From c487e783391b42feb4ab716384c410e49062b34f Mon Sep 17 00:00:00 2001 From: CHOMPStation2StaffMirrorBot <94713762+CHOMPStation2StaffMirrorBot@users.noreply.github.com> Date: Wed, 4 Jun 2025 10:30:24 -0700 Subject: [PATCH] [MIRROR] Spooky/Horror modifier & various tweaks/fixes (#11004) Co-authored-by: Cameron Lennox Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com> --- code/game/area/Space Station 13 areas.dm | 2 +- code/game/gamemodes/cult/runes.dm | 2 +- code/game/machinery/adv_med.dm | 6 +- code/game/objects/effects/spiders.dm | 18 +- code/modules/food/food/snacks/meat.dm | 31 +- code/modules/mob/_modifiers/horror.dm | 318 ++++++++++++++++++ code/modules/mob/_modifiers/medical.dm | 4 + code/modules/mob/_modifiers/modifiers.dm | 4 +- code/modules/mob/_modifiers/modifiers_vr.dm | 8 - code/modules/mob/language/language.dm | 2 - .../carbon/human/species/shadekin/shadekin.dm | 1 + .../living/carbon/human/species/species.dm | 7 +- .../carbon/human/species/station/station.dm | 63 ++-- code/modules/organs/internal/eyes.dm | 3 +- code/modules/organs/internal/horror.dm | 248 ++++++++++++++ code/modules/organs/organ.dm | 2 - code/modules/reagents/reagents/toxins.dm | 8 +- code/modules/surgery/organ_ripper.dm | 12 +- code/modules/surgery/organs_internal.dm | 41 ++- icons/effects/effects.dmi | Bin 459646 -> 457269 bytes icons/mob/modifier_effects.dmi | Bin 26024 -> 26845 bytes vorestation.dme | 2 + 22 files changed, 682 insertions(+), 100 deletions(-) create mode 100644 code/modules/mob/_modifiers/horror.dm create mode 100644 code/modules/organs/internal/horror.dm diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 538477b73d..1bd72d94e3 100755 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -1254,7 +1254,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/crew_quarters/gym_private name = "\improper Gym Sideroom" - icon_state = "pool" + icon_state = "pool" /area/crew_quarters/sauna name = "\improper Sauna" diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 26dcd1a9d0..e0c239797f 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -881,7 +881,7 @@ var/list/sacrificed = list() var/datum/gender/TU = GLOB.gender_datums[cultist.get_visible_gender()] to_chat(user, span_warning("You cannot summon \the [cultist], for [TU.his] shackles of blood are strong.")) return fizzle() - cultist.loc = src.loc + cultist.forceMove(src.loc) cultist.lying = 1 cultist.regenerate_icons() diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 33c1f06908..bb88a32d27 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -137,7 +137,7 @@ switch(severity) if(1.0) for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc + A.forceMove(src.loc) ex_act(severity) //Foreach goto(35) //SN src = null @@ -146,7 +146,7 @@ if(2.0) if (prob(50)) for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc + A.forceMove(src.loc) ex_act(severity) //Foreach goto(108) //SN src = null @@ -155,7 +155,7 @@ if(3.0) if (prob(25)) for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc + A.forceMove(src.loc) ex_act(severity) //Foreach goto(181) //SN src = null diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index ebd610e3fb..13a9cb5ba4 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -207,7 +207,6 @@ entry_vent = null else if(entry_vent) if(get_dist(src, entry_vent) <= 1) - //VOREStation Edit Start var/obj/machinery/atmospherics/unary/vent_pump/exit_vent = get_safe_ventcrawl_target(entry_vent) if(!exit_vent) return @@ -235,8 +234,6 @@ var/area/new_area = get_area(loc) if(new_area) new_area.Entered(src) - //VOREStation Edit End - //================= if(isturf(loc)) skitter() @@ -325,3 +322,18 @@ for(var/atom/movable/A in contents) A.loc = src.loc return ..() + +/obj/effect/spider/spiderling/non_growing/horror + icon_state = "tendrils" + +/obj/effect/spider/spiderling/non_growing/horror/die() + visible_message(span_cult("[src] stops squirming.")) + var/obj/effect/decal/cleanable/tendril_remains/remains = new /obj/effect/decal/cleanable/tendril_remains(src.loc) + remains.color = color + qdel(src) + +/obj/effect/decal/cleanable/tendril_remains + name = "tendril remains" + desc = "A disgusting pile of unmoving fleshy tendrils." + icon = 'icons/effects/effects.dmi' + icon_state = "tendril_dead" diff --git a/code/modules/food/food/snacks/meat.dm b/code/modules/food/food/snacks/meat.dm index 33f1419307..5cfa50a6e2 100644 --- a/code/modules/food/food/snacks/meat.dm +++ b/code/modules/food/food/snacks/meat.dm @@ -165,6 +165,22 @@ reagents.add_reagent(REAGENT_ID_SHOCKCHEM, 6) bitesize = 6 +var/static/list/worm_meat_spawns = list ( + /obj/random/junk = 30, + /obj/random/trash = 30, + /obj/random/maintenance/clean = 15, + /obj/random/tool = 15, + /obj/random/medical = 3, + /obj/random/bomb_supply = 7, + /obj/random/contraband = 3, + /obj/random/unidentified_medicine/old_medicine = 7, + /obj/item/strangerock = 3, + /obj/item/ore/phoron = 7, + /obj/random/handgun = 1, + /obj/random/toolbox = 4, + /obj/random/drinkbottle = 5 +) + /obj/item/reagent_containers/food/snacks/meat/worm name = "weird meat" desc = "A chunk of pulsating meat." @@ -183,20 +199,7 @@ /obj/item/reagent_containers/food/snacks/meat/worm/attackby(obj/item/W as obj, mob/user as mob) if(istype(W,/obj/item/material/knife)) - var/to_spawn = pickweight(/obj/random/junk = 30, - /obj/random/trash = 30, - /obj/random/maintenance/clean = 15, - /obj/random/tool = 15, - /obj/random/medical = 3, - /obj/random/bomb_supply = 7, - /obj/random/contraband = 3, - /obj/random/unidentified_medicine/old_medicine = 7, - /obj/item/strangerock = 3, - /obj/item/ore/phoron = 7, - /obj/random/handgun = 1, - /obj/random/toolbox = 4, - /obj/random/drinkbottle = 5 - ) + var/to_spawn = pickweight(worm_meat_spawns) new to_spawn(get_turf(src)) diff --git a/code/modules/mob/_modifiers/horror.dm b/code/modules/mob/_modifiers/horror.dm new file mode 100644 index 0000000000..8735af39f9 --- /dev/null +++ b/code/modules/mob/_modifiers/horror.dm @@ -0,0 +1,318 @@ +// These are modifiers used for various spooky areas that are meant to be SCARY and THREATENING. +// Outside of extreme circumstances, these should not be used. +// For the primary effect, if someone is not in one of the below 'redspace_areas' Then they can not have the modifier +// applied to them. This acts as a failsafe from it from accidentally being used outside of events. +// If you DO want to use this for an event, make the event area a child of /redgate or add it to the below areas list. +// These have some extremely spooky effects and players should know about it beforehand. + + +// REDSPACE AREAS +// This list needs expansion... Currently, we have very few proper redspace areas. +// Tossing /area/redgate in here as well. Entering one of these areas (unless coded to do such) doesn't apply +// the modifier, but if you're in one of these areas, you'll keep the modifier until you leave. +var/static/list/redspace_areas = list ( + /area/redspace_abduction, + /area/redgate +) + +/datum/modifier/redspace_drain + name = "redspace warp" + desc = "Your body is being slowly sapped of it's lifeforce, being used to fuel this hellish nightmare of a place." + + on_created_text = span_cult("You feel your body slowly being drained and warped") + on_expired_text = span_notice("Your body feels more normal.") + + stacks = MODIFIER_STACK_EXTEND + + //mob_overlay_state = "redspace_aura" //Let's be secretive~ + var/mob/living/carbon/human/unfortunate_soul //The human target of our modifier. + +/datum/modifier/redspace_drain/can_apply(mob/living/L, suppress_output = TRUE) + if(ishuman(L) && !L.isSynthetic() && L.lastarea && is_type_in_list(L.lastarea, redspace_areas)) + return TRUE + return FALSE + +/datum/modifier/redspace_drain/on_applied() + unfortunate_soul = holder + to_chat(unfortunate_soul, span_cult("You feel as if your lifeforce is slowly being rended from your body.")) + return + +/datum/modifier/redspace_drain/on_expire() + if(QDELETED(holder)) + unfortunate_soul = null + return //Don't do anything if we got QDEL'd, such as if we were gibbed + if(unfortunate_soul.stat == DEAD) //Only care if we're dead. + handle_corpse() + var/obj/effect/landmark/drop_point + drop_point = pick(GLOB.latejoin) //Can be changed to whatever exit list you want. By default, uses GLOB.latejoin + if(drop_point) + unfortunate_soul.forceMove(get_turf(drop_point)) + unfortunate_soul.maxHealth = max(50, unfortunate_soul.maxHealth) //If they died, send them back with 50 maxHealth or their current maxHealth. Whatever's higher. We're evil, but not mean. + else + message_admins("Redspace Drain expired, but no drop point was found, leaving [unfortunate_soul] in limbo. This is a bug. Please report it with this info: redspace_drain/on_expire") + unfortunate_soul = null + +/datum/modifier/redspace_drain/proc/handle_corpse() + return //Specialty stuff to do to a corpse other than teleport them. + +/datum/modifier/redspace_drain/check_if_valid() //We don't call parent. This doesn't wear off without set conditions. + if(holder.stat == DEAD) + expire(silent = TRUE) + else if(holder.lastarea && !is_type_in_list(holder.lastarea, redspace_areas)) + expire(silent = TRUE) + +/datum/modifier/redspace_drain/tick() + if(isbelly(holder.loc)) //If you're eaten, let's hold off on doing anything spooky. + return + + //The dangerous health effects. + unfortunate_soul.nutrition = max(0, unfortunate_soul.nutrition - 5) //Your nutrition is being sapped faster than usual. + if(unfortunate_soul.life_tick % 100 == 0)// Once every 100 ticks, we mutate some organs. + choose_organs() + become_drippy() + to_chat(unfortunate_soul, span_cult("You feel as if your organs are crawling around within your body.")) + + if(unfortunate_soul.life_tick % 5 == 0) //Once every 5 ticks, we chip away at them. + unfortunate_soul.drip(1) //Blood trail. + unfortunate_soul.take_overall_damage(1) //Small bit of damage + if(unfortunate_soul.bloodstr.get_reagent_amount(REAGENT_ID_NUMBENZYME) < 2) //We lose all feeling in our body. We can't tell how injured we are. + unfortunate_soul.bloodstr.add_reagent(REAGENT_ID_NUMBENZYME,1) + if(unfortunate_soul.life_tick % 10 == 0) //Once every 10 ticks, we permanetly cripple them. + unfortunate_soul.maxHealth = max(10, unfortunate_soul.maxHealth - 1) //Max health is reduced by 1, but never below 10. This is PERMANENT for the rest of the round or until resleeving. + + + //The mental effects. + unfortunate_soul.fear = min(100, unfortunate_soul.fear + 2) //Fear is increased by 1, but never above 100. You're in a scary place. + if(unfortunate_soul.life_tick % 20 == 0) + var/obj/item/organ/O = pick(unfortunate_soul.internal_organs) + if(!O) //If you don't have any internal organs, you know what? No spooky messages for you, freak. + var/spooky_message = pick("Join us...", "Stay with us...", "Stay forever...", "Don't leave us...", \ + "Don't go...", "We can be as one...", "Become one with us...", \ + "You can feel your [O] squirming inside of you, trying to get out...", "Your [O] is trying to escape...", \ + "Your [O] itches.", "Your [O] is crawling around inside of you.") + to_chat(unfortunate_soul, span_cult(spooky_message)) + unfortunate_soul.make_dizzy(20) + unfortunate_soul.stuttering = min(100, unfortunate_soul.stuttering + 10) //Stuttering is increased by 1, but never above 100. You're in a scary place. + return + +/datum/modifier/redspace_drain/proc/choose_organs() + var/organs_to_replace = rand(2,3) + for(var/i = 0 to organs_to_replace) + var/organ_choice = pick("eyes", "heart", "lungs", "liver", "kidneys", "appendix", "voicebox", "spleen", "stomach", "intestine") + switch(organ_choice) + if("eyes") + var/obj/item/organ/internal/eyes/E = unfortunate_soul.internal_organs_by_name[O_EYES] + if(E) + replace_eyes(E) + if("heart") + var/obj/item/organ/internal/heart/H = unfortunate_soul.internal_organs_by_name[O_HEART] + if(H) + replace_heart(H) + if("lungs") + var/obj/item/organ/internal/lungs/L = unfortunate_soul.internal_organs_by_name[O_LUNGS] + if(L) + replace_lungs(L) + if("liver") + var/obj/item/organ/internal/liver/L = unfortunate_soul.internal_organs_by_name[O_LIVER] + if(L) + replace_liver(L) + if("kidneys") + var/obj/item/organ/internal/kidneys/K = unfortunate_soul.internal_organs_by_name[O_KIDNEYS] + if(K) + replace_kidneys(K) + if("appendix") + var/obj/item/organ/internal/appendix/A = unfortunate_soul.internal_organs_by_name[O_APPENDIX] + if(A) + replace_appendix(A) + if("voicebox") + var/obj/item/organ/internal/voicebox/V = unfortunate_soul.internal_organs_by_name[O_VOICE] + if(V) + replace_voicebox(V) + if("spleen") + var/obj/item/organ/internal/spleen/S = unfortunate_soul.internal_organs_by_name[O_SPLEEN] + if(S) + replace_spleen(S) + if("stomach") + var/obj/item/organ/internal/stomach/S = unfortunate_soul.internal_organs_by_name[O_STOMACH] + if(S) + replace_stomach(S) + if("intestine") + var/obj/item/organ/internal/intestine/E = unfortunate_soul.internal_organs_by_name[O_INTESTINE] + if(E) + replace_intestine(E) + +/datum/modifier/redspace_drain/proc/replace_eyes(obj/item/organ/internal/O) + if(istype(O, /obj/item/organ/internal/eyes/horror)) + return + var/organ_spot = O.parent_organ + var/obj/item/organ/internal/eyes/new_organ = new /obj/item/organ/internal/eyes/horror() + O.removed(unfortunate_soul) + qdel(O) + new_organ.replaced(unfortunate_soul,unfortunate_soul.get_organ(organ_spot)) + var/random_name = pick("pulsating", "quivering", "throbbing", "crawling", "oozing", "melting", "gushing", "dripping", "twitching", "slimy", "gooey") + new_organ.name = "[random_name] [initial(new_organ.name)]" + +/datum/modifier/redspace_drain/proc/replace_heart(obj/item/organ/internal/O) + if(istype(O, /obj/item/organ/internal/heart/horror)) + return + var/organ_spot = O.parent_organ + var/obj/item/organ/internal/heart/new_organ = new /obj/item/organ/internal/heart/horror() + O.removed(unfortunate_soul) + qdel(O) + new_organ.replaced(unfortunate_soul,unfortunate_soul.get_organ(organ_spot)) + var/random_name = pick("pulsating", "quivering", "throbbing", "crawling", "oozing", "melting", "gushing", "dripping", "twitching", "slimy", "gooey") + new_organ.name = "[random_name] [initial(new_organ.name)]" + +/datum/modifier/redspace_drain/proc/replace_lungs(obj/item/organ/internal/O) + if(istype(O, /obj/item/organ/internal/lungs/horror)) + return + var/organ_spot = O.parent_organ + var/obj/item/organ/internal/lungs/new_organ = new /obj/item/organ/internal/lungs/horror() + O.removed(unfortunate_soul) + qdel(O) + new_organ.replaced(unfortunate_soul,unfortunate_soul.get_organ(organ_spot)) + var/random_name = pick("pulsating", "quivering", "throbbing", "crawling", "oozing", "melting", "gushing", "dripping", "twitching", "slimy", "gooey") + new_organ.name = "[random_name] [initial(new_organ.name)]" + +/datum/modifier/redspace_drain/proc/replace_liver(obj/item/organ/internal/O) + if(istype(O, /obj/item/organ/internal/liver/horror)) + return + var/organ_spot = O.parent_organ + var/obj/item/organ/internal/liver/new_organ = new /obj/item/organ/internal/liver/horror() + O.removed(unfortunate_soul) + qdel(O) + new_organ.replaced(unfortunate_soul,unfortunate_soul.get_organ(organ_spot)) + var/random_name = pick("pulsating", "quivering", "throbbing", "crawling", "oozing", "melting", "gushing", "dripping", "twitching", "slimy", "gooey") + new_organ.name = "[random_name] [initial(new_organ.name)]" + +/datum/modifier/redspace_drain/proc/replace_kidneys(obj/item/organ/internal/O) + if(istype(O, /obj/item/organ/internal/kidneys/horror)) + return + var/organ_spot = O.parent_organ + var/obj/item/organ/internal/kidneys/new_organ = new /obj/item/organ/internal/kidneys/horror() + O.removed(unfortunate_soul) + qdel(O) + new_organ.replaced(unfortunate_soul,unfortunate_soul.get_organ(organ_spot)) + var/random_name = pick("pulsating", "quivering", "throbbing", "crawling", "oozing", "melting", "gushing", "dripping", "twitching", "slimy", "gooey") + new_organ.name = "[random_name] [initial(new_organ.name)]" + +/datum/modifier/redspace_drain/proc/replace_appendix(obj/item/organ/internal/O) + if(istype(O, /obj/item/organ/internal/appendix/horror)) + return + var/organ_spot = O.parent_organ + var/obj/item/organ/internal/appendix/new_organ = new /obj/item/organ/internal/appendix/horror() + O.removed(unfortunate_soul) + qdel(O) + new_organ.replaced(unfortunate_soul,unfortunate_soul.get_organ(organ_spot)) + var/random_name = pick("pulsating", "quivering", "throbbing", "crawling", "oozing", "melting", "gushing", "dripping", "twitching", "slimy", "gooey") + new_organ.name = "[random_name] [initial(new_organ.name)]" + +/datum/modifier/redspace_drain/proc/replace_voicebox(obj/item/organ/internal/O) + if(istype(O, /obj/item/organ/internal/voicebox/horror)) + return + var/organ_spot = O.parent_organ + var/obj/item/organ/internal/voicebox/new_organ = new /obj/item/organ/internal/voicebox/horror() + O.removed(unfortunate_soul) + qdel(O) + new_organ.replaced(unfortunate_soul,unfortunate_soul.get_organ(organ_spot)) + var/random_name = pick("pulsating", "quivering", "throbbing", "crawling", "oozing", "melting", "gushing", "dripping", "twitching", "slimy", "gooey") + new_organ.name = "[random_name] [initial(new_organ.name)]" + +/datum/modifier/redspace_drain/proc/replace_spleen(obj/item/organ/internal/O) + if(istype(O, /obj/item/organ/internal/spleen/horror)) + return + var/organ_spot = O.parent_organ + var/obj/item/organ/internal/spleen/new_organ = new /obj/item/organ/internal/spleen/horror() + O.removed(unfortunate_soul) + qdel(O) + new_organ.replaced(unfortunate_soul,unfortunate_soul.get_organ(organ_spot)) + var/random_name = pick("pulsating", "quivering", "throbbing", "crawling", "oozing", "melting", "gushing", "dripping", "twitching", "slimy", "gooey") + new_organ.name = "[random_name] [initial(new_organ.name)]" + +/datum/modifier/redspace_drain/proc/replace_stomach(obj/item/organ/internal/O) + if(istype(O, /obj/item/organ/internal/stomach/horror)) + return + var/organ_spot = O.parent_organ + var/obj/item/organ/internal/stomach/new_organ = new /obj/item/organ/internal/stomach/horror() + O.removed(unfortunate_soul) + qdel(O) + new_organ.replaced(unfortunate_soul,unfortunate_soul.get_organ(organ_spot)) + var/random_name = pick("pulsating", "quivering", "throbbing", "crawling", "oozing", "melting", "gushing", "dripping", "twitching", "slimy", "gooey") + new_organ.name = "[random_name] [initial(new_organ.name)]" + +/datum/modifier/redspace_drain/proc/replace_intestine(obj/item/organ/internal/O) + if(istype(O, /obj/item/organ/internal/intestine/horror)) + return + var/organ_spot = O.parent_organ + var/obj/item/organ/internal/intestine/new_organ = new /obj/item/organ/internal/intestine/horror() + O.removed(unfortunate_soul) + qdel(O) + new_organ.replaced(unfortunate_soul,unfortunate_soul.get_organ(organ_spot)) + var/random_name = pick("pulsating", "quivering", "throbbing", "crawling", "oozing", "melting", "gushing", "dripping", "twitching", "slimy", "gooey") + new_organ.name = "[random_name] [initial(new_organ.name)]" + +/* +/datum/modifier/redspace_drain/proc/replace_organ() //Old version of doing this WITHOUT the custom organs. Preserved as an alternative version / reference + var/obj/item/organ/O = pick(unfortunate_soul.internal_organs) + if(O) + var/random_name = pick("pulsating", "quivering", "throbbing", "crawling", "oozing", "melting", "gushing", "dripping", "twitching", "slimy", "gooey") + O.name = "[random_name] [initial(O.name)]" + O.desc = "A twisted, warped version of a [initial(O.name)] covered in thick, red, pulsating tendrils." + O.take_damage(3) + O.color = "#760b0b" + O.add_autopsy_data("ANOMALOUS FLESH GROWTH", 3) + O.decays = FALSE + O.meat_type = /obj/item/reagent_containers/food/snacks/meat/worm //It turns into 'weird meat' with the desc of 'A chunk of pulsating meat' + O.can_reject = FALSE +*/ + +/datum/modifier/redspace_drain/proc/become_drippy() + if(!(unfortunate_soul.species.flags & NO_DNA)) //Doing it as such in case drippy is ever made NOT a trait gene. + var/datum/gene/trait/drippy_trait = get_gene_from_trait(/datum/trait/neutral/drippy) + unfortunate_soul.dna.SetSEState(drippy_trait.block, TRUE) + domutcheck(unfortunate_soul, null, GENE_ALWAYS_ACTIVATE) + unfortunate_soul.UpdateAppearance() + +/datum/modifier/redsight + name = "redsight" + desc = "You can see into the unknown." + client_color = "#ce6161" + + on_created_text = span_alien("You feel as though you can see the horrors of reality!") + on_expired_text = span_notice("Your sight returns to what it once was.") + stacks = MODIFIER_STACK_EXTEND + +/datum/modifier/redsight/on_applied() + holder.see_invisible = 60 + holder.see_invisible_default = 60 + holder.vis_enabled += VIS_GHOSTS + holder.recalculate_vis() + +/datum/modifier/redsight/on_expire() + holder.see_invisible_default = initial(holder.see_invisible_default) + holder.see_invisible = holder.see_invisible_default + holder.vis_enabled -= VIS_GHOSTS + holder.recalculate_vis() + +/datum/modifier/redsight/can_apply(var/mob/living/L) + if(L.stat) + to_chat(L, span_warning("You can't be unconscious or dead to see the unknown.")) + return FALSE + var/obj/item/organ/internal/eyes/E = L.internal_organs_by_name[O_EYES] + if(E && istype(E, /obj/item/organ/internal/eyes/horror)) + return ..() + return FALSE + +/datum/modifier/redsight/check_if_valid() //We don't call parent. This doesn't wear off without set conditions. + //Dead? + if(holder.stat == DEAD) + expire(silent = TRUE) + //We got eyes and they're special eyes? + var/obj/item/organ/internal/eyes/E = holder.internal_organs_by_name[O_EYES] + if(!E) + expire(silent = TRUE) + else if(!istype(E, /obj/item/organ/internal/eyes/horror)) + expire(silent = TRUE) + +/datum/modifier/redsight/tick() + ..() diff --git a/code/modules/mob/_modifiers/medical.dm b/code/modules/mob/_modifiers/medical.dm index cfa4193fd6..61501fa2af 100644 --- a/code/modules/mob/_modifiers/medical.dm +++ b/code/modules/mob/_modifiers/medical.dm @@ -48,6 +48,10 @@ if(holder.stat != DEAD) src.expire() +/datum/modifier/bloodpump_corpse/expire(silent) + human_being_pumped = null + ..() + //This INTENTIONALLY only happens on DEAD people. Alive people are metabolizing already (and can be healed quicker through things like brute packs) meaning they don't need this extra assistance! //Why does it not make you bleed out? Because we'll let medical have a few benefits that don't come with innate downsides. It takes 2 seconds to resleeve someone. It takes a good amount of time to repair a corpse. Let's make the latter more appealing. /datum/modifier/bloodpump_corpse/tick() diff --git a/code/modules/mob/_modifiers/modifiers.dm b/code/modules/mob/_modifiers/modifiers.dm index 3f3908820d..9ab9048102 100644 --- a/code/modules/mob/_modifiers/modifiers.dm +++ b/code/modules/mob/_modifiers/modifiers.dm @@ -7,7 +7,7 @@ var/desc = null // Ditto. var/icon_state = null // See above. var/mob/living/holder = null // The mob that this datum is affecting. - var/datum/weakref/origin = null // A weak reference to whatever caused the modifier to appear. THIS NEEDS TO BE A MOB/LIVING. It's a weakref to not interfere with qdel(). + var/datum/weakref/origin = null // A weak reference to whatever caused the modifier to appear. THIS NEEDS TO BE A MOB/LIVING. It's a weakref to not interfere with qdel(). var/expire_at = null // world.time when holder's Life() will remove the datum. If null, it lasts forever or until it gets deleted by something else. var/on_created_text = null // Text to show to holder upon being created. var/on_expired_text = null // Text to show to holder when it expires. @@ -20,7 +20,7 @@ var/light_intensity = null // Ditto. Not implemented yet. var/mob_overlay_state = null // Icon_state for an overlay to apply to a (human) mob while this exists. This is actually implemented. var/client_color = null // If set, the client will have the world be shown in this color, from their perspective. - var/wire_colors_replace = null // If set, the client will have wires replaced by the given replacement list. For colorblindness. //VOREStation Add + var/wire_colors_replace = null // If set, the client will have wires replaced by the given replacement list. For colorblindness. var/list/filter_parameters = null // If set, will add a filter to the holder with the parameters in this var. Must be a list. var/filter_priority = 1 // Used to make filters be applied in a specific order, if that is important. var/filter_instance = null // Instance of a filter created with the `filter_parameters` list. This exists to make `animate()` calls easier. Don't set manually. diff --git a/code/modules/mob/_modifiers/modifiers_vr.dm b/code/modules/mob/_modifiers/modifiers_vr.dm index 6dab50a53f..bd6361225f 100644 --- a/code/modules/mob/_modifiers/modifiers_vr.dm +++ b/code/modules/mob/_modifiers/modifiers_vr.dm @@ -84,14 +84,6 @@ else expire(silent = FALSE) - - - - - - - - /datum/modifier/shield_projection name = "Shield Projection" desc = "You are currently protected by a shield, rendering nigh impossible to hit you through conventional means." diff --git a/code/modules/mob/language/language.dm b/code/modules/mob/language/language.dm index cdd87a3a8f..c65f23d09f 100644 --- a/code/modules/mob/language/language.dm +++ b/code/modules/mob/language/language.dm @@ -205,10 +205,8 @@ return 0 languages.Add(new_language) - //VOREStation Addition Start if(new_language.flags & HIVEMIND) add_verb(src, /mob/proc/adjust_hive_range) - //VOREStation Addition End return 1 diff --git a/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm b/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm index 75eadd4c98..9f568db941 100644 --- a/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm +++ b/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm @@ -84,6 +84,7 @@ O_VOICE = /obj/item/organ/internal/voicebox, O_LIVER = /obj/item/organ/internal/liver, O_KIDNEYS = /obj/item/organ/internal/kidneys, + O_SPLEEN = /obj/item/organ/internal/spleen, O_BRAIN = /obj/item/organ/internal/brain/shadekin, O_EYES = /obj/item/organ/internal/eyes, O_STOMACH = /obj/item/organ/internal/stomach, diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 95a323000b..77e5f3f7ed 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -267,10 +267,11 @@ O_LUNGS = /obj/item/organ/internal/lungs, O_VOICE = /obj/item/organ/internal/voicebox, O_LIVER = /obj/item/organ/internal/liver, - O_KIDNEYS = /obj/item/organ/internal/kidneys, + O_KIDNEYS = /obj/item/organ/internal/kidneys, O_BRAIN = /obj/item/organ/internal/brain, - O_APPENDIX = /obj/item/organ/internal/appendix, - O_EYES = /obj/item/organ/internal/eyes, + O_APPENDIX = /obj/item/organ/internal/appendix, + O_SPLEEN = /obj/item/organ/internal/spleen, + O_EYES = /obj/item/organ/internal/eyes, O_STOMACH = /obj/item/organ/internal/stomach, O_INTESTINE = /obj/item/organ/internal/intestine ) diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index c3b91e3df1..284aa3e156 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -40,6 +40,7 @@ O_KIDNEYS = /obj/item/organ/internal/kidneys, O_BRAIN = /obj/item/organ/internal/brain, O_APPENDIX = /obj/item/organ/internal/appendix, + O_SPLEEN = /obj/item/organ/internal/spleen, O_SPLEEN = /obj/item/organ/internal/spleen, O_EYES = /obj/item/organ/internal/eyes, O_STOMACH = /obj/item/organ/internal/stomach, @@ -160,11 +161,12 @@ //No kidneys or appendix has_organ = list( - O_HEART = /obj/item/organ/internal/heart/unathi, - O_LUNGS = /obj/item/organ/internal/lungs/unathi, - O_LIVER = /obj/item/organ/internal/liver/unathi, - O_BRAIN = /obj/item/organ/internal/brain/unathi, - O_EYES = /obj/item/organ/internal/eyes/unathi, + O_HEART = /obj/item/organ/internal/heart/unathi, + O_LUNGS = /obj/item/organ/internal/lungs/unathi, + O_LIVER = /obj/item/organ/internal/liver/unathi, + O_SPLEEN = /obj/item/organ/internal/spleen, + O_BRAIN = /obj/item/organ/internal/brain/unathi, + O_EYES = /obj/item/organ/internal/eyes/unathi, O_STOMACH = /obj/item/organ/internal/stomach/unathi, O_INTESTINE = /obj/item/organ/internal/intestine/unathi ) @@ -291,13 +293,14 @@ cold_discomfort_level = 215 has_organ = list( //No appendix. - O_HEART = /obj/item/organ/internal/heart/tajaran, - O_LUNGS = /obj/item/organ/internal/lungs/tajaran, - O_VOICE = /obj/item/organ/internal/voicebox, - O_LIVER = /obj/item/organ/internal/liver/tajaran, - O_KIDNEYS = /obj/item/organ/internal/kidneys, - O_BRAIN = /obj/item/organ/internal/brain, - O_EYES = /obj/item/organ/internal/eyes/tajaran, + O_HEART = /obj/item/organ/internal/heart/tajaran, + O_LUNGS = /obj/item/organ/internal/lungs/tajaran, + O_VOICE = /obj/item/organ/internal/voicebox, + O_LIVER = /obj/item/organ/internal/liver/tajaran, + O_KIDNEYS = /obj/item/organ/internal/kidneys, + O_SPLEEN = /obj/item/organ/internal/spleen, + O_BRAIN = /obj/item/organ/internal/brain, + O_EYES = /obj/item/organ/internal/eyes/tajaran, O_STOMACH = /obj/item/organ/internal/stomach/tajaran, O_INTESTINE = /obj/item/organ/internal/intestine ) @@ -505,15 +508,16 @@ ) has_organ = list( //No appendix. - O_HEART = /obj/item/organ/internal/heart, - O_LUNGS = /obj/item/organ/internal/lungs, - O_VOICE = /obj/item/organ/internal/voicebox, - O_LIVER = /obj/item/organ/internal/liver, - O_KIDNEYS = /obj/item/organ/internal/kidneys, - O_BRAIN = /obj/item/organ/internal/brain, - O_EYES = /obj/item/organ/internal/eyes, - O_STOMACH = /obj/item/organ/internal/stomach, - O_INTESTINE =/obj/item/organ/internal/intestine + O_HEART = /obj/item/organ/internal/heart, + O_LUNGS = /obj/item/organ/internal/lungs, + O_VOICE = /obj/item/organ/internal/voicebox, + O_LIVER = /obj/item/organ/internal/liver, + O_KIDNEYS = /obj/item/organ/internal/kidneys, + O_SPLEEN = /obj/item/organ/internal/spleen, + O_BRAIN = /obj/item/organ/internal/brain, + O_EYES = /obj/item/organ/internal/eyes, + O_STOMACH = /obj/item/organ/internal/stomach, + O_INTESTINE = /obj/item/organ/internal/intestine ) @@ -1176,13 +1180,14 @@ ) has_organ = list( - O_HEART = /obj/item/organ/internal/heart, - O_LUNGS = /obj/item/organ/internal/lungs, - O_VOICE = /obj/item/organ/internal/voicebox, - O_LIVER = /obj/item/organ/internal/liver, - O_KIDNEYS = /obj/item/organ/internal/kidneys, - O_BRAIN = /obj/item/organ/internal/brain, - O_EYES = /obj/item/organ/internal/eyes, + O_HEART = /obj/item/organ/internal/heart, + O_LUNGS = /obj/item/organ/internal/lungs, + O_VOICE = /obj/item/organ/internal/voicebox, + O_LIVER = /obj/item/organ/internal/liver, + O_KIDNEYS = /obj/item/organ/internal/kidneys, + O_SPLEEN = /obj/item/organ/internal/spleen, + O_BRAIN = /obj/item/organ/internal/brain, + O_EYES = /obj/item/organ/internal/eyes, O_STOMACH = /obj/item/organ/internal/stomach, O_INTESTINE = /obj/item/organ/internal/intestine ) @@ -1345,6 +1350,7 @@ O_VOICE = /obj/item/organ/internal/voicebox, O_LIVER = /obj/item/organ/internal/liver, O_KIDNEYS = /obj/item/organ/internal/kidneys, + O_SPLEEN = /obj/item/organ/internal/spleen, O_BRAIN = /obj/item/organ/internal/brain, O_EYES = /obj/item/organ/internal/eyes, O_STOMACH = /obj/item/organ/internal/stomach, @@ -1703,6 +1709,7 @@ O_VOICE = /obj/item/organ/internal/voicebox, O_LIVER = /obj/item/organ/internal/liver, O_KIDNEYS = /obj/item/organ/internal/kidneys, + O_SPLEEN = /obj/item/organ/internal/spleen, O_BRAIN = /obj/item/organ/internal/brain, O_EYES = /obj/item/organ/internal/eyes, O_STOMACH = /obj/item/organ/internal/stomach, diff --git a/code/modules/organs/internal/eyes.dm b/code/modules/organs/internal/eyes.dm index 37a38a8736..1e3bc1a0ce 100644 --- a/code/modules/organs/internal/eyes.dm +++ b/code/modules/organs/internal/eyes.dm @@ -5,6 +5,7 @@ organ_tag = O_EYES parent_organ = BP_HEAD var/list/eye_colour = list(0,0,0) + var/innate_flash_protection = FLASH_PROTECTION_NONE /obj/item/organ/internal/eyes/robotize() ..() @@ -100,7 +101,7 @@ owner.eye_blurry += 10 /obj/item/organ/internal/eyes/proc/get_total_protection(var/flash_protection = FLASH_PROTECTION_NONE) - return (flash_protection) + return (flash_protection + innate_flash_protection) /obj/item/organ/internal/eyes/proc/additional_flash_effects(var/intensity) return -1 diff --git a/code/modules/organs/internal/horror.dm b/code/modules/organs/internal/horror.dm new file mode 100644 index 0000000000..0d479ac7ba --- /dev/null +++ b/code/modules/organs/internal/horror.dm @@ -0,0 +1,248 @@ +/obj/item/organ/internal/appendix/horror + name = "mass" + color = "#660000" + desc = "A twisted, warped version of a appendix covered in thick, red, pulsating tendrils." + decays = FALSE + can_reject = FALSE + meat_type = /obj/item/reagent_containers/food/snacks/meat/worm +/obj/item/organ/internal/appendix/horror/Initialize(mapload) + . = ..() + adjust_scale(1.5,1.5) + +/obj/item/organ/internal/appendix/horror/process() + ..() + if(!owner) return + if(is_bruised()) //They heal theirselves. + damage -= 1 + if(owner.life_tick % 60 == 0 && prob(10)) + to_chat(owner, span_cult("You hear a whispering coming from your torso... " + pick("'You should come back'", "'Come back'", "'We're so empty without you'", "'You could stay forever'", "'Become one with us'"))) + +/obj/item/organ/internal/eyes/horror + name = "orbits" + color = "#660000" + desc = "A twisted, warped version of eyes covered in thick, red, pulsating tendrils." + innate_flash_protection = FLASH_PROTECTION_VULNERABLE //It's VERY good at seeing things...And it doesn't like light. + decays = FALSE + can_reject = FALSE + meat_type = /obj/item/reagent_containers/food/snacks/meat/worm + +/obj/item/organ/internal/eyes/horror/process() + ..() + if(!owner) + return + if(is_bruised()) //They heal theirselves. + damage -= 1 + //Get our spooky vision + if(!owner.has_modifier_of_type(/datum/modifier/redsight)) + owner.add_modifier(/datum/modifier/redsight) + if(owner.life_tick % 60 == 0 && prob(5)) + owner.drip(1) + to_chat(owner, span_cult("Your eyes tear up and blood drips down your face.")) + owner.automatic_custom_emote(VISIBLE_MESSAGE, "blinks, a drop of blood trailing from their eye!", check_stat = FALSE) + + +/obj/item/organ/internal/heart/horror + name = "mass" + color = "#660000" + desc = "A twisted, warped version of a heart covered in thick, red, pulsating tendrils." + standard_pulse_level = PULSE_NONE //It's just quivering and pushing blood through in some strange method. + decays = FALSE + can_reject = FALSE + meat_type = /obj/item/reagent_containers/food/snacks/meat/worm + +/obj/item/organ/internal/heart/horror/process() + ..() + if(!owner) + return + if(is_bruised()) //They heal theirselves. + damage -= 1 + if(owner.life_tick % 20 == 0 && prob(5)) + owner.reagents.add_reagent(REAGENT_ID_NUMBENZYME, 0.2) //Lasts for 20 ticks. Their health hud will randomly go '?' + if(owner.life_tick % 60 == 0) + owner.reagents.add_reagent(REAGENT_ID_SPACEACILLIN, 1) //Keeping its host alive. 1u = 20 ticks + +/obj/item/organ/internal/intestine/horror + name = "mass" + color = "#660000" + desc = "A twisted, warped version of intestines covered in thick, red, pulsating tendrils." + decays = FALSE + can_reject = FALSE + meat_type = /obj/item/reagent_containers/food/snacks/meat/worm + var/escaping = FALSE + var/escaping_attempts = 0 + var/entering_vent = FALSE + var/obj/machinery/atmospherics/unary/vent_pump/entry_vent + +/obj/item/organ/internal/intestine/horror/process() + ..() + if(!owner && !escaping) return + if(is_bruised()) //They heal theirselves. + damage -= 1 + if(escaping && entry_vent) + if(get_dist(src, entry_vent) <= 1 && !entering_vent) + audible_message("[src] slithers into the [entry_vent.name]!", "You hear a wet, squelching sound.") + entering_vent = TRUE + mouse_opacity = 0 //No clicky + fade_towards(entry_vent,45) + QDEL_IN(src, 45) + else if(!entering_vent) + escaping_attempts += 1 + if(escaping_attempts >= 5) + entry_vent = null + escaping = FALSE //We tried and failed... + escaping_attempts = 0 + audible_message("[src] stops squirming around.") + + +/obj/item/organ/internal/intestine/horror/Destroy() + entry_vent = null + . = ..() + +/obj/item/organ/internal/intestine/horror/handle_organ_mod_special(var/removed = FALSE) + ..() + if(removed) + for(var/obj/machinery/atmospherics/unary/vent_pump/v in view(7,src)) + if(!v.welded) + entry_vent = v + audible_message("[src] tries to slither away!") + walk_to(src, entry_vent, 1, 5) + escaping = TRUE + break + +/obj/item/organ/internal/kidneys/horror + name = "mass" + color = "#660000" + desc = "A twisted, warped version of kidneys covered in thick, red, pulsating tendrils." + decays = FALSE + can_reject = FALSE + meat_type = /obj/item/reagent_containers/food/snacks/meat/worm + +/obj/item/organ/internal/kidneys/horror/process() + ..() + if(!owner) return + if(is_bruised()) //They heal theirselves. + damage -= 1 + + var/datum/reagent/coffee = locate(/datum/reagent/drink/coffee) in owner.reagents.reagent_list + if(coffee && owner.ingested) + for(var/datum/reagent/drink/coffee/R in owner.ingested.reagent_list) + R.holder.remove_reagent(REAGENT_ID_COFFEE, REM) + owner.bloodstr.add_reagent(REAGENT_ID_HYPERZINE, REM) + + +/obj/item/organ/internal/liver/horror + name = "mass" + color = "#660000" + desc = "A twisted, warped version of a liver covered in thick, red, pulsating tendrils." + decays = FALSE + can_reject = FALSE + meat_type = /obj/item/reagent_containers/food/snacks/meat/worm + +/obj/item/organ/internal/liver/horror/process() + ..() + if(!owner) + return + if(is_bruised()) //They heal theirselves. + damage -= 1 + var/datum/reagent/toxin/toxins = locate(/datum/reagent/toxin) in owner.reagents.reagent_list + if(toxins) + for(var/datum/reagent/toxin/R in owner.bloodstr.reagent_list) + R.holder.remove_reagent(R.id, REM) + owner.bloodstr.add_reagent(REAGENT_ID_NECROXADONE, REM*5) //5 multiplier of toxins to biomass + owner.bloodstr.add_reagent(REAGENT_ID_MORTIFERIN, REM*3) //3x multiplier + +/obj/item/organ/internal/lungs/horror + name = "mass" + color = "#660000" + desc = "A twisted, warped version of lungs covered in thick, red, pulsating tendrils." + decays = FALSE + can_reject = FALSE + meat_type = /obj/item/reagent_containers/food/snacks/meat/worm + +/obj/item/organ/internal/lungs/horror/process() + ..() + if(!owner) + return + if(is_bruised()) //They heal theirselves. + damage -= 1 + if(owner.life_tick % 60 == 0 && prob(10)) + to_chat(owner, span_cult("You feel something quivering in your chest, making breathing impossible!")) + owner.AdjustLosebreath(10) + owner.automatic_custom_emote(VISIBLE_MESSAGE, "gasps for air!", check_stat = TRUE) + +/obj/item/organ/internal/spleen/horror + name = "mass" + color = "#660000" + desc = "A twisted, warped version of a spleen covered in thick, red, pulsating tendrils." + decays = FALSE + can_reject = FALSE + meat_type = /obj/item/reagent_containers/food/snacks/meat/worm + spleen_efficiency = 5 + +/obj/item/organ/internal/spleen/horror/process() + ..() + if(!owner) + return + if(is_bruised()) //They heal theirselves. + damage -= 1 + if(owner.vessel.total_volume < owner.vessel.maximum_volume) //Bloodloss + owner.bloodstr.add_reagent(REAGENT_ID_SYNTHBLOOD, REM) //Get a little bit of blood added into your blood stream (that then metabolizes into actual blood) + +/obj/item/organ/internal/stomach/horror + name = "mass" + color = "#660000" + desc = "A twisted, warped version of a stomach covered in thick, red, pulsating tendrils." + decays = FALSE + can_reject = FALSE + meat_type = /obj/item/reagent_containers/food/snacks/meat/worm + var/spider_chance = 10 //for admemes + +/obj/item/organ/internal/stomach/horror/process() + ..() + if(!owner) + return + if(is_bruised()) //They heal theirselves. + damage -= 1 + if(owner.life_tick % 60 == 0 && prob(spider_chance)) + var/turf/T = get_turf(owner) + if(T) + to_chat(owner, span_cult("You feel something quivering in your chest!")) + owner.vomit(10, TRUE) + var/spiders_to_spawn = rand(3,5) + for(var/i = 0 to spiders_to_spawn) + var/obj/effect/spider/spiderling/non_growing/horror/spider = new /obj/effect/spider/spiderling/non_growing/horror(T) + spider.faction = owner.faction + spider.color = "[owner.species.blood_color]" + spider.name = "writhing tendril mass" + spider.desc = "A small, writhing mass of flesh and tendrils." + +/obj/item/organ/internal/voicebox/horror + name = "mass" + color = "#660000" + desc = "A twisted, warped version of a voicebox covered in thick, red, pulsating tendrils." + decays = FALSE + can_reject = FALSE + meat_type = /obj/item/reagent_containers/food/snacks/meat/worm + will_assist_languages = list(LANGUAGE_DAEMON) + var/speak_chance = 25 //25% chance to speak Daemon every 10 ticks + var/datum/language/daemon //Storage for demon language so we don't have to constantly set it. + +/obj/item/organ/internal/voicebox/horror/Initialize(mapload) + . = ..() + daemon = GLOB.all_languages[LANGUAGE_DAEMON] + +/obj/item/organ/internal/voicebox/horror/replaced(var/mob/living/carbon/human/target,var/obj/item/organ/external/affected) + ..() + target.add_language(LANGUAGE_DAEMON) //Learn Daemon + target.default_language = daemon //Begin speaking Daemon. + +/obj/item/organ/internal/voicebox/horror/process() + ..() + if(!owner) + return + if(is_bruised()) //They heal theirselves. + damage -= 1 + if(owner.life_tick % 10 == 0 && prob(speak_chance)) + owner.default_language = daemon //Swap back to Daemon. + if(prob(5)) //1/20 on a 1/4 chance. 1/80 chance every 10 ticks. + owner.say(pick("Join us", "Become one with us", "Join the Flesh", "Come to us", "[owner.real_name] is just a vessel.", "You can be just like us.")) diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index 69f3cd1245..d4fcc7570c 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -421,11 +421,9 @@ var/list/organ_cache = list() if(!istype(target)) return - // VOREstation edit begin - Posibrains don't have blood reagents, so they crash this var/datum/reagent/blood/transplant_blood = null if(reagents) transplant_blood = locate(/datum/reagent/blood) in reagents.reagent_list - // VOREstation edit end transplant_data = list() if(!transplant_blood) transplant_data["species"] = target?.species.name diff --git a/code/modules/reagents/reagents/toxins.dm b/code/modules/reagents/reagents/toxins.dm index 5b8e7f890b..fe30cbf0e4 100644 --- a/code/modules/reagents/reagents/toxins.dm +++ b/code/modules/reagents/reagents/toxins.dm @@ -269,10 +269,10 @@ /datum/reagent/toxin/stimm/overdose(var/mob/living/carbon/M, var/alient, var/removed) ..() if(prob(10)) // 1 in 10. This thing's made with welder fuel and fertilizer, what do you expect? - var/mob/living/carbon/human/H = M - var/obj/item/organ/internal/heart/ht = H.internal_organs_by_name[O_HEART] - ht?.take_damage(1) - to_chat(M, span_warning("Huh... Is this what a heart attack feels like?")) + var/obj/item/organ/internal/heart/ht = M.internal_organs_by_name[O_HEART] + if(ht) + ht.take_damage(1) + to_chat(M, span_warning("Huh... Is this what a heart attack feels like?")) /datum/reagent/toxin/potassium_chloride name = REAGENT_POTASSIUMCHLORIDE diff --git a/code/modules/surgery/organ_ripper.dm b/code/modules/surgery/organ_ripper.dm index 6dfda37132..270dd2d53e 100644 --- a/code/modules/surgery/organ_ripper.dm +++ b/code/modules/surgery/organ_ripper.dm @@ -185,7 +185,7 @@ for(var/organ in target.internal_organs_by_name) var/obj/item/organ/internal/I = target.internal_organs_by_name[organ] if(istype(I) && I.parent_organ == target_zone) - removable_organs |= organ + removable_organs[I.name] = organ if(!removable_organs.len) return 0 @@ -198,16 +198,16 @@ for(var/organ in target.internal_organs_by_name) var/obj/item/organ/internal/I = target.internal_organs_by_name[organ] if(istype(I) && I.parent_organ == target_zone) - removable_organs |= organ + removable_organs[I.name] = organ var/organ_to_remove = tgui_input_list(user, "Which organ do you want to tear out?", "Organ Choice", removable_organs) if(!organ_to_remove) //They decided to cancel. Let's slowly pull the tool back... to_chat(user, span_warning("You decide against ripping out any organs.")) - user.visible_message("[user] starts pulling their [tool] out from [target]'s [affected.name] with \the [tool].", \ - "You start pulling your \the [tool] out of [target]'s [affected.name].") - target.custom_pain("Someone's moving something around in your [affected.name]!", 100) + user.visible_message("[user] starts pulling their [tool] out from [target]'s [affected] with \the [tool].", \ + "You start pulling your \the [tool] out of [target]'s [affected].") + target.custom_pain("Someone's moving something around in your [affected]!", 100) else if(organ_to_remove) - target.op_stage.current_organ = organ_to_remove + target.op_stage.current_organ = removable_organs[organ_to_remove] user.visible_message("[user] starts ripping [target]'s [target.op_stage.current_organ] out with \the [tool].", \ "You start ripping [target]'s [target.op_stage.current_organ] out with \the [tool].") target.custom_pain("Someone's ripping out your [target.op_stage.current_organ]!", 100) diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm index 71ed33837d..e9779eeeab 100644 --- a/code/modules/surgery/organs_internal.dm +++ b/code/modules/surgery/organs_internal.dm @@ -27,8 +27,8 @@ /obj/item/stack/medical/bruise_pack = 20 ) - min_duration = 60 //CHOMPedit - max_duration = 60 //CHOMPedit + min_duration = 60 + max_duration = 60 /datum/surgery_step/internal/fix_organ/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) if (!hasorgans(target)) @@ -129,8 +129,8 @@ /obj/item/storage/toolbox = 10 //Percussive Maintenance ) - min_duration = 60 //CHOMPedit - max_duration = 60 //CHOMPedit + min_duration = 60 + max_duration = 60 /datum/surgery_step/fix_organic_organ_robotic/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) if (!hasorgans(target)) @@ -206,8 +206,8 @@ /obj/item/material/shard = 50, \ ) - min_duration = 60 //CHOMPedit - max_duration = 60 //CHOMPedit + min_duration = 60 + max_duration = 60 /datum/surgery_step/internal/detatch_organ/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) if (!..()) @@ -227,15 +227,17 @@ for(var/organ in target.internal_organs_by_name) var/obj/item/organ/I = target.internal_organs_by_name[organ] if(I && !(I.status & ORGAN_CUT_AWAY) && I.parent_organ == target_zone) - attached_organs |= organ + attached_organs[I.name] = organ var/organ_to_remove = tgui_input_list(user, "Which organ do you want to prepare for removal?", "Organ Choice", attached_organs) if(!organ_to_remove) return 0 + if(!attached_organs[organ_to_remove]) + return 0 - target.op_stage.current_organ = organ_to_remove + target.op_stage.current_organ = attached_organs[organ_to_remove] - return ..() && organ_to_remove + return ..() && attached_organs[organ_to_remove] /datum/surgery_step/internal/detatch_organ/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/obj/item/organ/external/affected = target.get_organ(target_zone) @@ -277,7 +279,7 @@ allowed_procs = list(IS_WIRECUTTER = 100) //FBP code also uses this, so let's be nice. Roboticists won't know to use hemostats. min_duration = 60 - max_duration = 60 //CHOMPedit + max_duration = 60 /datum/surgery_step/internal/remove_organ/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) if (!..()) @@ -303,7 +305,7 @@ for(var/organ in target.internal_organs_by_name) var/obj/item/organ/internal/I = target.internal_organs_by_name[organ] if(istype(I) && (I.status & ORGAN_CUT_AWAY) && I.parent_organ == target_zone) - removable_organs |= organ + removable_organs[I.name] = organ var/organ_to_remove = tgui_input_list(user, "Which organ do you want to remove?", "Organ Choice", removable_organs) if(!organ_to_remove) //They chose cancel! @@ -311,9 +313,10 @@ user.visible_message(span_filter_notice("[user] starts pulling \the [tool] from [target]'s [affected]."), \ span_filter_notice("You start pulling \the [tool] from [target]'s [affected].")) user.balloon_alert_visible("starts pulling \the [tool] from [target]'s [affected]", "pulling \the [tool] from \the [affected]") + if(!removable_organs[organ_to_remove]) return - target.op_stage.current_organ = organ_to_remove + target.op_stage.current_organ = removable_organs[organ_to_remove] user.visible_message(span_filter_notice("[user] starts removing [target]'s [target.op_stage.current_organ] with \the [tool]."), \ span_filter_notice("You start removing [target]'s [target.op_stage.current_organ] with \the [tool].")) @@ -355,8 +358,8 @@ /obj/item/organ = 100 ) - min_duration = 40 //CHOMPedit - max_duration = 40 //CHOMPedit + min_duration = 40 + max_duration = 40 /datum/surgery_step/internal/replace_organ/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/obj/item/organ/internal/O = tool @@ -380,15 +383,9 @@ to_chat(user, span_danger("You have no idea what species this person is. Report this on the bug tracker.")) return SURGERY_FAILURE - //var/o_is = (O.gender == PLURAL) ? "are" : "is" var/o_a = (O.gender == PLURAL) ? "" : "a " var/o_do = (O.gender == PLURAL) ? "don't" : "doesn't" -/* CHOMPedit begin, allow rotten/damaged organs to be inserted again to allow for organ repair in the case of worst-case-scenerio gib situation. Also to make a funny if lets say, a doctor didnt examine a damaged organ and inserted it anyway. - if(O.damage > (O.max_damage * 0.75)) - to_chat(user, span_warning("\The [O.organ_tag] [o_is] in no state to be transplanted.")) - return SURGERY_FAILURE -*/ if(!target.internal_organs_by_name[O.organ_tag]) organ_missing = 1 else @@ -471,13 +468,13 @@ for(var/organ in target.internal_organs_by_name) var/obj/item/organ/I = target.internal_organs_by_name[organ] if(istype(I) && (I.status & ORGAN_CUT_AWAY) && !(I.robotic >= ORGAN_ROBOT) && I.parent_organ == target_zone) - removable_organs |= organ + removable_organs[I.name] = organ var/organ_to_replace = tgui_input_list(user, "Which organ do you want to reattach?", "Organ Choice", removable_organs) if(!organ_to_replace) return 0 - target.op_stage.current_organ = organ_to_replace + target.op_stage.current_organ = removable_organs[organ_to_replace] return ..() /datum/surgery_step/internal/attach_organ/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 62cd57f9cbefd8d349a3466e2bfacf18430c86fb..aac10a8ed7dd538d4084a6922836088eb6503e83 100644 GIT binary patch delta 284870 zcmZs?1zc2J*FHRiG)kw^0#ZXsh?Jz#f`X_F4U&>7b&!${X;4u@xl=A6CPUh7)dwe~uwpzD7UgpqFOBwk@~Oe#7mt+rWcIMLQ(IT%I4iGMw-WJK#n#?C zx8L&a9WvveQlX5?if4M(cJ3Wj-AeYa@x`RfXA;7QIH2yU<9CifE#9-4vU+E?Ia@(c zRwga3LWny(%JS*mz$$ydqi^EFZ16ocxP#4<@eT1udQP#9dm3AXH;iuNS;|dLyB_aX zzm3m$T(Cqv`&y`xZe6ljhoWXN*|(^;fA3-2t7Qk>FYD)!yrGuM=8LTm_N&a!X0SN> zA1=mCuWM@fi5*j-Do*M2Zs8{#-rA&-rfd50L;L+$g+RelTB|L*QmGJixtvT^FWc2m zY3Msxq%@oVP;+N zfWnT%*Cta2%4TL;|KY^#Wy!+L_h8yez=CcuvV{ikXHMRI4qrFsf#Uv_Vr~9Ix!*2Y z4_5X_7E_}4lP$h62A(XPJy+K{_fr*Am}M<`#k)509^IjErzZZD+||}yd&~P+I!&Vk zDFGv)_Z=95an1*$OlU&}b7e9Oqb38tmg=zL=Lu(sYCxH}_9&~gWL&|kKl9%eU>mjK zWVRE9t3RM7Qs4jTTb+O0SJs)~cY{GtWijOYSkwy4_JMW-WbjBbA5}SLbbL z_D0#T@Rz&SypFyicXQJ~}&lK&VgQ??N$_%y{XAWHQcHReJlO6LfrXx=8aAh~JW9Dwe&*n6>nZ>?OHL*OW>5;-0$Qtpk z@TpIbL8%9(z5Ka>bFuL4ng2tUC;2x8%cARJnOg_Mpq_K{CTI7CuSPyr#SA9a~EkW{^|A@DH6 zb>Uh~xB?`zGD5}i7VCvzr+w4YsG9S2+wwLT**5ljp$GRLL7ikD9~)LEzhb_!hCif> z8%-iSgkQj}(QZR=p#F*|<2WM@$BRYko8emIae>Nk$$RU>$K-uD_7D5zE~JAL69uKo z42N+JEuDSp>afJ}Wqw2%(Pwy$IJsnQMPy5)G}Grm3|q#WHLsawh`OJ?&NXbGp~^KZ zf1K7JSDSevP4dO)fx1=RHdL!~MPdn0my4tqK1FFuQv0N_Gwyng=C7IwSsk4!Lz^(t zMxR#-t7DhOw;7_%v*xst^j#!q7+d+s6b0#NiuWC{?6paSIKpzvukuiRFqTD@8T4+n zP%o%mxgXl$HodfU>Dd%9V8xT!Uhl|h*kW!gwf81{#ZX$b&}>mVfzZM%`-V-cTt$n; z)t`alKV&UWK3tw0e!yTX3Looj@m*Z>3u*thEAQH_V0~-5g1wjvov(b)JD)z6YD&2N z)XbKTQs?G-Wx5Qy5_OBfJDQ#bbruJ2tM%(vM}7i@aBTbY#m>_x3h-096*$bne`d%F`PN@xs)z z9_9{Rp|rgEra3dWq*xi|$mUqI0NdcLb-cB=)a4j0?xabBa#WI;SiHV46gACz;f>eu zeV?42z>kF>{dcKF1GsTc`t=M1or!Ye&dJ|_{MY+{-}tL*N*@TDdnjM_tuGN`!{r{>P3{k5m4=)%)8l%$?4xd##>k9mR2R z{I&JIUTXscH0;Kjv=ycX>e+06#}I08Zz>(Mx

t0Mh#*D= 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%0AMWsNY{2aHA^;XyQ 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