diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index 3f0be9ca684..6a7ed02f7bf 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -81,7 +81,7 @@ // /mob/living signals #define COMSIG_LIVING_STUN_EFFECT "stun_effect_act" //mob/living/proc/stun_effect_act() -#define COMSIG_CARBON_HAPPY "carbon_happy" //drugs or ethanol in blood +#define COMSIG_CARBON_HAPPY "carbon_happy" //drugs o ethanol in blood // /mob/living/carbon signals #define COMSIG_CARBON_ELECTROCTE "carbon_electrocute act" //mob/living/carbon/electrocute_act() diff --git a/code/datums/outfits/jobs/science.dm b/code/datums/outfits/jobs/science.dm index 56711c3c5a0..15569b74105 100644 --- a/code/datums/outfits/jobs/science.dm +++ b/code/datums/outfits/jobs/science.dm @@ -31,10 +31,11 @@ name = OUTFIT_JOB_NAME("Moebius Roboticist") uniform = /obj/item/clothing/under/rank/roboticist suit = /obj/item/clothing/suit/storage/robotech_jacket - belt = /obj/item/storage/belt/utility/roboticist + belt = /obj/item/storage/belt/utility/full pda_slot = slot_r_store id_type = /obj/item/card/id/dkgrey pda_type = /obj/item/modular_computer/pda/moebius/roboticist + l_hand = /obj/item/storage/toolbox/mechanical /decl/hierarchy/outfit/job/science/roboticist/New() ..() diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 762e704c7a9..e1cb24453e0 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -80,7 +80,7 @@ new /obj/item/tool/wirecutters(src) new /obj/item/stack/cable_coil/random(src) -/obj/item/storage/belt/utility/technomancer +/obj/item/storage/belt/utility/technomancer spawn_blacklisted = TRUE /obj/item/storage/belt/utility/technomancer/populate_contents() @@ -92,18 +92,6 @@ new /obj/item/tool/shovel/power(src) new /obj/item/stack/cable_coil/random(src) -/obj/item/storage/belt/utility/roboticist - spawn_blacklisted = TRUE - -/obj/item/storage/belt/utility/roboticist/populate_contents() - new /obj/item/tool/screwdriver(src) - new /obj/item/tool/wrench(src) - new /obj/item/tool/weldingtool(src) - new /obj/item/tool/crowbar(src) - new /obj/item/tool/wirecutters/pliers(src) - new /obj/item/stack/cable_coil/random(src) - new /obj/item/tool/multitool(src) - /obj/item/storage/belt/utility/neotheology name = "neotheology utility belt" desc = "Waist-held holy items." diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 639e5f002d4..bdb97628fc2 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -4,7 +4,6 @@ voice_name = "unknown" icon = 'icons/mob/human.dmi' icon_state = "body_m_s" - status_flags = REBUILDING_ORGANS //will protect from gibbing before organs are built. flag should be removed by set_species in initialize var/list/hud_list[10] var/embedded_flag //To check if we've need to roll for damage on movement while an item is imbedded in us. @@ -1021,10 +1020,6 @@ var/list/rank_prefix = list(\ for(var/obj/item/organ/internal/carrion/C in organs_to_readd) C.replaced(get_organ(C.parent_organ_base)) - for(var/obj/item/organ/internal/I in internal_organs) - I.status &= ~ORGAN_CUT_AWAY - I.handle_organ_eff() - status_flags &= ~REBUILDING_ORGANS species.organs_spawned(src) @@ -1353,32 +1348,21 @@ var/list/rank_prefix = list(\ reset_view(A) /mob/living/carbon/human/proc/resuscitate() - var/obj/item/organ/internal/vital/heart_organ = random_organ_by_process(OP_HEART) var/obj/item/organ/internal/vital/brain_organ = random_organ_by_process(BP_BRAIN) - if((!heart_organ || heart_organ.is_broken()) && (!brain_organ || brain_organ.is_broken())) - resuscitate_notify(1) - return 0 - - if(!heart_organ || heart_organ.is_broken()) - resuscitate_notify(2) - return 0 - - if(!brain_organ || brain_organ.is_broken()) - resuscitate_notify(3) + if(!is_asystole() && !(heart_organ && brain_organ) || (heart_organ.is_broken() || brain_organ.is_broken())) return 0 if(world.time >= (timeofdeath + NECROZTIME)) - resuscitate_notify(4) return 0 var/oxyLoss = getOxyLoss() if(oxyLoss > 20) setOxyLoss(20) - if(getBruteLoss() + getFireLoss() >= abs(HEALTH_THRESHOLD_DEAD)) - resuscitate_notify(5) + if(health <= (HEALTH_THRESHOLD_DEAD - oxyLoss)) + visible_message(SPAN_WARNING("\The [src] twitches a bit, but their body is too damaged to sustain life!")) timeofdeath = 0 return 0 @@ -1400,34 +1384,6 @@ var/list/rank_prefix = list(\ break return 1 -/mob/living/carbon/human/proc/resuscitate_notify(type) - if(prob(50)) - return - visible_message(SPAN_WARNING("\The [src] twitches and twists intensely")) - for(var/mob/O in viewers(world.view, src.loc)) - if(O == src) - continue - if(!Adjacent(O)) - continue - var/bio_stat = 0 - if(O.stats) - bio_stat = O.stats.getStat(STAT_BIO) - - if(bio_stat >= STAT_LEVEL_ADEPT) - switch(type) - if(1) //brain and heart fail - to_chat(O, "You can identify that [src]'s circulatory and central neural systems are failing, preventing them from resurrection.") - if(2) //heart fail - to_chat(O, "You can identify that [src]'s circulatory system is unable to restart in this state.") - if(3) //brain fail - to_chat(O, "You can identify that [src]'s central neural system is too damaged to be resurrected.") - if(4) //corpse is too old - to_chat(O, "You see that rotting process in [src]'s body already gone too far. This is nothing but a corpse now.") - if(5) //too much damage - to_chat(O, "[src]'s body is too damaged to sustain life.") - else - to_chat(O, "You're too unskilled to understand what's happening...") - /mob/living/carbon/human/proc/generate_dna() if(!b_type) b_type = pick(GLOB.blood_types) diff --git a/code/modules/organs/external/dismemberment.dm b/code/modules/organs/external/dismemberment.dm index 61741a08578..026406752d5 100644 --- a/code/modules/organs/external/dismemberment.dm +++ b/code/modules/organs/external/dismemberment.dm @@ -70,7 +70,6 @@ for(var/obj/item/organ/I in internal_organs) I.removed() I.forceMove(get_turf(src)) - I.status |= ORGAN_CUT_AWAY for(var/obj/item/I in src) if(I.w_class > ITEM_SIZE_SMALL) @@ -89,7 +88,6 @@ I.removed() I.forceMove(get_turf(src)) I.throw_at(get_edge_target_turf(src,pick(alldirs)),rand(1,3),30) - I.status |= ORGAN_CUT_AWAY for(var/mob/living/I in src) // check for mobs inside you... yeah if(istype(I, /mob/living/simple_animal/borer/)) diff --git a/code/modules/organs/internal/_internal.dm b/code/modules/organs/internal/_internal.dm index 0c703eb6026..159ab29d34f 100644 --- a/code/modules/organs/internal/_internal.dm +++ b/code/modules/organs/internal/_internal.dm @@ -7,7 +7,6 @@ min_bruised_damage = IORGAN_STANDARD_BRUISE min_broken_damage = IORGAN_STANDARD_BREAK desc = "A vital organ." - status = ORGAN_CUT_AWAY var/list/owner_verbs = list() var/list/initial_owner_verbs = list() var/list/organ_efficiency = list() //Efficency of an organ, should become the most important variable @@ -36,10 +35,6 @@ ..() handle_blood() -/obj/item/organ/internal/die() - handle_organ_eff() - ..() - /obj/item/organ/internal/Destroy() QDEL_LIST(item_upgrades) for(var/comp in GetComponents(/datum/component/internal_wound)) @@ -90,10 +85,7 @@ for(var/process in organ_efficiency) if(!islist(owner.internal_organs_by_efficiency[process])) owner.internal_organs_by_efficiency[process] = list() - if(is_usable()) - owner.internal_organs_by_efficiency[process] += src - else - owner.internal_organs_by_efficiency[process] -= src + owner.internal_organs_by_efficiency[process] += src for(var/proc_path in owner_verbs) verbs |= proc_path @@ -101,13 +93,6 @@ if(GetComponent(/datum/component/internal_wound/organic/parenchyma)) owner.mutation_index++ -/obj/item/organ/internal/proc/handle_organ_eff() - for(var/process in organ_efficiency) - if(is_usable()) - owner.internal_organs_by_efficiency[process] += src - else - owner.internal_organs_by_efficiency[process] -= src - /obj/item/organ/internal/proc/get_process_efficiency(process_define) var/organ_eff = organ_efficiency[process_define] return organ_eff - (organ_eff * (damage / max_damage)) diff --git a/code/modules/organs/internal/carrion.dm b/code/modules/organs/internal/carrion.dm index f35cff889dc..01177f80772 100644 --- a/code/modules/organs/internal/carrion.dm +++ b/code/modules/organs/internal/carrion.dm @@ -32,7 +32,6 @@ /obj/item/organ/internal/carrion max_damage = 15 //resilient scanner_hidden = TRUE //sneaky - status = 0 // Carrion organs are attached by default because they are only grown inside and not printed /obj/item/organ/internal/carrion/chemvessel name = "chemical vessel" diff --git a/code/modules/organs/internal/internal_wounds/_internal_wound.dm b/code/modules/organs/internal/internal_wounds/_internal_wound.dm index e323dedf459..d07f1323dfe 100644 --- a/code/modules/organs/internal/internal_wounds/_internal_wound.dm +++ b/code/modules/organs/internal/internal_wounds/_internal_wound.dm @@ -181,7 +181,7 @@ is_treated = TRUE else is_treated = S.use(charges_needed) - else if(istype(I)) // check for using items without stacks + if(istype(I)) // check for using items without stacks is_treated = TRUE qdel(I) if(is_treated) diff --git a/code/modules/organs/internal/internal_wounds/eyes.dm b/code/modules/organs/internal/internal_wounds/eyes.dm index 78da8a5633e..dea26b94b80 100644 --- a/code/modules/organs/internal/internal_wounds/eyes.dm +++ b/code/modules/organs/internal/internal_wounds/eyes.dm @@ -82,14 +82,12 @@ treatments_tool = list(QUALITY_RETRACTING = FAILCHANCE_HARD) scar = /datum/component/internal_wound/organic/eyes_deep_burn -/datum/component/internal_wound/organic/eyes_deep_burn/stage2 //stage 2 +/datum/component/internal_wound/organic/eyes_deep_burn //stage 2 name = "scorched deep tissue" + severity = 3 // starts with max damage as it is a second stage + severity_max = 3 treatments_item = list(/obj/item/stack/medical/advanced/ointment = 2) treatments_chem = list(CE_EYEHEAL = 1) - severity = 3 //starting at max damage because stage 2 - severity_max = 3 - hal_damage = IWOUND_HEAVY_DAMAGE - diagnosis_difficulty = STAT_LEVEL_EXPERT // Tox (toxins) /datum/component/internal_wound/organic/eyes_poisoning diff --git a/code/modules/organs/internal/internal_wounds/organic.dm b/code/modules/organs/internal/internal_wounds/organic.dm index d9189fc3376..8993c851293 100644 --- a/code/modules/organs/internal/internal_wounds/organic.dm +++ b/code/modules/organs/internal/internal_wounds/organic.dm @@ -138,7 +138,7 @@ treatments_tool = list(QUALITY_CUTTING = FAILCHANCE_NORMAL) treatments_chem = list(CE_ANTITOX = 2) severity = 0 - severity_max = 4 + severity_max = 3 hal_damage = IWOUND_LIGHT_DAMAGE /// Cheap hack, but prevents unbalanced toxins from killing someone immediately diff --git a/code/modules/reagents/reagents/other.dm b/code/modules/reagents/reagents/other.dm index 29d85b7072b..23bda10f1d2 100644 --- a/code/modules/reagents/reagents/other.dm +++ b/code/modules/reagents/reagents/other.dm @@ -492,17 +492,15 @@ /datum/reagent/resuscitator/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(ishuman(M)) var/mob/living/carbon/human/H = M - var/obj/item/organ/internal/vital/heart = H.random_organ_by_process(OP_HEART) - if(heart) //Check for existence of the heart BEFORE checking for robotic heart, otherwise function WILL return null - if(BP_IS_ROBOTIC(heart)) // neither it should work on robotic hearts, chemistry and stuff - return - heart.take_damage(64, TOX) + var/obj/item/organ/internal/vital/heart/heart = H.random_organ_by_process(OP_HEART) + if(BP_IS_ROBOTIC(heart)) // neither it should work on robotic hearts, chemistry and stuf + return + if(heart) + heart.damage += 0.5 if(prob(30)) to_chat(H, SPAN_DANGER("Your heart feels like it's going to tear itself out of you!")) - if(H.stat == DEAD) - H.resuscitate() - else - H.resuscitate() //it will fail and give explanations why + if(H.stat == DEAD) + H.resuscitate() /datum/reagent/resuscitator/overdose(mob/living/carbon/M, alien) . = ..() diff --git a/code/modules/surgery/organic.dm b/code/modules/surgery/organic.dm index 5053331eb04..d88108af39c 100644 --- a/code/modules/surgery/organic.dm +++ b/code/modules/surgery/organic.dm @@ -142,7 +142,7 @@ ) organ.status &= ~ORGAN_CUT_AWAY - organ.handle_organ_eff() //organ is attached. Refreshing eff. list + organ.replaced(organ.get_limb()) /datum/surgery_step/attach_organ/fail_step(mob/living/user, obj/item/organ/internal/organ, obj/item/stack/tool) user.visible_message( @@ -178,7 +178,6 @@ SPAN_NOTICE("You separate [organ.get_surgery_name()] with \the [tool].") ) organ.status |= ORGAN_CUT_AWAY - organ.handle_organ_eff() //detach of organ. Refreshing eff. list /datum/surgery_step/detach_organ/fail_step(mob/living/user, obj/item/organ/internal/organ, obj/item/stack/tool) user.visible_message( diff --git a/code/modules/surgery/robotic.dm b/code/modules/surgery/robotic.dm index 75d55353d23..1b81628f5ca 100644 --- a/code/modules/surgery/robotic.dm +++ b/code/modules/surgery/robotic.dm @@ -67,10 +67,8 @@ ) if(organ.status & ORGAN_CUT_AWAY) organ.status &= ~ORGAN_CUT_AWAY - organ.handle_organ_eff() else organ.status |= ORGAN_CUT_AWAY - organ.handle_organ_eff() /datum/surgery_step/robotic/connect_organ/fail_step(mob/living/user, obj/item/organ/internal/organ, obj/item/stack/tool) user.visible_message(