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(