From 01eab8bd72c28b63d89a7696af92363438af015e Mon Sep 17 00:00:00 2001 From: Cameron Lennox Date: Mon, 2 Jun 2025 17:03:34 -0400 Subject: [PATCH] Spooky/Horror modifier & various tweaks/fixes (#17775) * spooky Adds horror organs and reworks the redspace effect Proper organ names & tweaks - Lowers time of the internal organ surgery steps. Min&max is the same - When going to remove an organ, it now shows you the name of the organ instead of 'what it is' - Removes the inability to put dead organs in bodies...Even if it's dead, you can still physically put it back in. Fixes everyone that was missing spleens Fixes worm meat not runtime when cut Stumbled across these...Fix them to forcemove * LINT * fine you win DM * Secret~ --- 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/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 | 40 ++- icons/effects/effects.dmi | Bin 459646 -> 457269 bytes icons/mob/modifier_effects.dmi | Bin 26024 -> 26845 bytes vorestation.dme | 2 + 21 files changed, 680 insertions(+), 98 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 48e1f172083..21f55597055 100755 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -1241,7 +1241,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 a508ebfaf91..f66f2b21da8 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 a1b33e80b2c..6a52ae4fea5 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 d04045a272e..b6327bddd57 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 33f1419307f..5cfa50a6e2f 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 00000000000..8735af39f95 --- /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 cfa4193fd63..61501fa2afe 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 3f3908820da..9ab90481021 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 cd7a748d55a..907d6b9d7a8 100644 --- a/code/modules/mob/_modifiers/modifiers_vr.dm +++ b/code/modules/mob/_modifiers/modifiers_vr.dm @@ -80,14 +80,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 a41f45ef356..4f13554f7ac 100644 --- a/code/modules/mob/language/language.dm +++ b/code/modules/mob/language/language.dm @@ -203,10 +203,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 d26e6deb46e..30cb28fee6d 100644 --- a/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm +++ b/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm @@ -80,6 +80,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 66f38480bef..565066ce26c 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 bc586a5d8ce..7facdc2c995 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 ) @@ -502,15 +505,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 ) @@ -1173,13 +1177,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 ) @@ -1342,6 +1347,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, @@ -1698,6 +1704,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/horror.dm b/code/modules/organs/internal/horror.dm new file mode 100644 index 00000000000..0d479ac7ba1 --- /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 4ed396ebb91..b91123cb0d8 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 4645bd80725..5376c6041f2 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 463f9ad4865..ba20ad03433 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 c6b94d19fba..bb83865b7c1 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 = 70 - max_duration = 90 + 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 = 70 - max_duration = 90 + 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 = 90 - max_duration = 110 + 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 = 80 + 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 = 60 - max_duration = 80 + 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,14 +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" - 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 @@ -458,13 +456,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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