diff --git a/code/ZAS/Plasma.dm b/code/ZAS/Plasma.dm
index 9f0e95f661..716ea21640 100644
--- a/code/ZAS/Plasma.dm
+++ b/code/ZAS/Plasma.dm
@@ -118,12 +118,12 @@ obj/var/contaminated = 0
/mob/living/carbon/human/proc/burn_eyes()
//The proc that handles eye burning.
if(prob(20)) src << "\red Your eyes burn!"
- eye_stat += 2.5
+ var/datum/organ/internal/eyes/E = internal_organs["eyes"]
+ E.damage += 2.5
eye_blurry = min(eye_blurry+1.5,50)
- if (prob(max(0,eye_stat - 20) + 1) &&!eye_blind)
+ if (prob(max(0,E.damage - 15) + 1) &&!eye_blind)
src << "\red You are blinded!"
eye_blind += 20
- eye_stat = 0
/mob/living/carbon/human/proc/pl_head_protected()
//Checks if the head is adequately sealed.
diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index fc7202bd17..c71dd409c1 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -11,6 +11,13 @@
density = 1
var/orient = "LEFT" // "RIGHT" changes the dir suffix to "-r"
+
+/obj/machinery/sleep_console/process()
+ if(stat & (NOPOWER|BROKEN))
+ return
+ src.updateUsrDialog()
+ return
+
/obj/machinery/sleep_console/ex_act(severity)
switch(severity)
if(1.0)
@@ -71,10 +78,11 @@
if(occupant.reagents)
for(var/chemical in connected.available_chemicals)
dat += "[connected.available_chemicals[chemical]]: [occupant.reagents.get_reagent_amount(chemical)] units
"
- dat += "
Refresh meter readings each second
"
+ dat += "Refresh Meter Readings
"
if(src.connected.beaker)
+ dat += "
Remove Beaker
"
if(src.connected.filtering)
- dat += "
Stop Dialysis
"
+ dat += "Stop Dialysis
"
dat += text("Output Beaker has [] units of free space remaining
", src.connected.beaker.reagents.maximum_volume - src.connected.beaker.reagents.total_volume)
else
dat += "
Start Dialysis
"
@@ -85,8 +93,10 @@
for(var/chemical in connected.available_chemicals)
dat += "Inject [connected.available_chemicals[chemical]]: "
for(var/amount in connected.amounts)
- dat += "[amount] units "
- dat += "
"
+ dat += "[amount] units
"
+
+
+ dat += "
Eject Patient"
else
dat += "The sleeper is empty."
dat += text("
Close", user)
@@ -108,19 +118,21 @@
src.connected.inject_chemical(usr,href_list["chemical"],text2num(href_list["amount"]))
else
usr << "\red \b This person is not in good enough condition for sleepers to be effective! Use another means of treatment, such as cryogenics!"
+ src.updateUsrDialog()
if (href_list["refresh"])
src.updateUsrDialog()
+ if (href_list["removebeaker"])
+ src.connected.remove_beaker()
+ src.updateUsrDialog()
if (href_list["togglefilter"])
src.connected.toggle_filter()
src.updateUsrDialog()
+ if (href_list["ejectify"])
+ src.connected.eject()
+ src.updateUsrDialog()
src.add_fingerprint(usr)
return
-/obj/machinery/sleep_console/process()
- if(stat & (NOPOWER|BROKEN))
- return
- src.updateUsrDialog()
- return
/obj/machinery/sleep_console/power_change()
return
@@ -144,7 +156,7 @@
anchored = 1
var/orient = "LEFT" // "RIGHT" changes the dir suffix to "-r"
var/mob/living/carbon/human/occupant = null
- var/available_chemicals = list("inaprovaline" = "Inaprovaline", "stoxin" = "Soporific", "dermaline" = "Dermaline", "bicaridine" = "Bicaridine", "dexalin" = "Dexalin")
+ var/available_chemicals = list("inaprovaline" = "Inaprovaline", "stoxin" = "Soporific", "anti_toxin" = "Dylovene", "dexalin" = "Dexalin")
var/amounts = list(5, 10)
var/obj/item/weapon/reagent_containers/glass/beaker = null
var/filtering = 0
@@ -169,10 +181,10 @@
if(beaker.reagents.total_volume < beaker.reagents.maximum_volume)
src.occupant.vessel.trans_to(beaker, 1)
for(var/datum/reagent/x in src.occupant.reagents.reagent_list)
- if(x.volume > 20)
- src.occupant.reagents.trans_id_to(beaker, x.id, 2)
- src.occupant.vessel.trans_to(beaker, 1)
- src.updateDialog()
+// world << "FILTERING CHEMS"
+ src.occupant.reagents.trans_to(beaker, 3)
+ src.occupant.vessel.trans_to(beaker, 1)
+ src.updateUsrDialog()
return
@@ -191,6 +203,7 @@
user.drop_item()
G.loc = src
user.visible_message("[user] adds \a [G] to \the [src]!", "You add \a [G] to \the [src]!")
+ src.updateUsrDialog()
return
else
user << "\red The sleeper has a beaker already."
diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm
index 3f17fe7299..4b2fb50c54 100644
--- a/code/game/machinery/adv_med.dm
+++ b/code/game/machinery/adv_med.dm
@@ -281,6 +281,7 @@
var/infected = ""
var/imp = ""
var/bled = ""
+ var/robot = ""
var/splint = ""
var/internal_bleeding = ""
var/lung_ruptured = ""
@@ -295,6 +296,8 @@
bled = "Bleeding:"
if(e.status & ORGAN_BROKEN)
AN = "[e.broken_description]:"
+ if(e.status & ORGAN_ROBOT)
+ robot = "Prosthetic:"
if(e.open)
open = "Open:"
var/unknown_body = 0
@@ -308,16 +311,25 @@
if(!AN && !open && !infected & !imp)
AN = "None:"
if(!(e.status & ORGAN_DESTROYED))
- dat += "[e.display_name] | [e.burn_dam] | [e.brute_dam] | [bled][AN][splint][open][infected][imp][internal_bleeding][lung_ruptured] | "
+ dat += "[e.display_name] | [e.burn_dam] | [e.brute_dam] | [robot][bled][AN][splint][open][infected][imp][internal_bleeding][lung_ruptured] | "
else
dat += "[e.display_name] | - | - | Not Found | "
dat += ""
for(var/organ_name in occupant.internal_organs)
var/datum/organ/internal/i = occupant.internal_organs[organ_name]
+ var/mech = ""
+ if(i.robotic == 1)
+ mech = "Assisted:"
+ if(i.robotic == 2)
+ mech = "Mechanical:"
dat += ""
- dat += "| [i.name] | N/A | [i.damage] | None: | "
+ dat += "[i.name] | N/A | [i.damage] | None:[mech] | | "
dat += "
"
dat += ""
+ if(occupant.sdisabilities & BLIND)
+ dat += text("Cataracts detected.
")
+ if(occupant.sdisabilities & NEARSIGHTED)
+ dat += text("Retinal misalignment detected.
")
else
dat += "\The [src] is empty."
else
diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm
index 9de6b2c6aa..303e814ef1 100644
--- a/code/game/machinery/flasher.dm
+++ b/code/game/machinery/flasher.dm
@@ -79,13 +79,15 @@
continue
O.Weaken(strength)
- if ((O.eye_stat > 15 && prob(O.eye_stat + 50)))
- flick("e_flash", O:flash)
- O.eye_stat += rand(1, 2)
+ if (istype(O, /mob/living/carbon/human))
+ var/mob/living/carbon/human/H = O
+ var/datum/organ/internal/eyes/E = H.internal_organs["eyes"]
+ if ((E.damage > E.min_bruised_damage && prob(E.damage + 50)))
+ flick("e_flash", O:flash)
+ E.damage += rand(1, 5)
else
if(!O.blinded)
flick("flash", O:flash)
- O.eye_stat += rand(0, 2)
/obj/machinery/flasher/emp_act(severity)
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index dd445337b7..6c38442fec 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -522,29 +522,28 @@
"\red You stab yourself in the eyes with [src]!" \
)
if(istype(M, /mob/living/carbon/human))
+ var/datum/organ/internal/eyes/eyes = H.internal_organs["eyes"]
+ eyes.damage += rand(3,4)
+ if(eyes.damage >= eyes.min_bruised_damage)
+ if(M.stat != 2)
+ if(eyes.robotic <= 1) //robot eyes bleeding might be a bit silly
+ M << "\red Your eyes start to bleed profusely!"
+ if(prob(50))
+ if(M.stat != 2)
+ M << "\red You drop what you're holding and clutch at your eyes!"
+ M.drop_item()
+ M.eye_blurry += 10
+ M.Paralyse(1)
+ M.Weaken(4)
+ if (eyes.damage >= eyes.min_broken_damage)
+ if(M.stat != 2)
+ M << "\red You go blind!"
var/datum/organ/external/affecting = M:get_organ("head")
if(affecting.take_damage(7))
M:UpdateDamageIcon()
else
M.take_organ_damage(7)
M.eye_blurry += rand(3,4)
- M.eye_stat += rand(2,4)
- if (M.eye_stat >= 10)
- M.eye_blurry += 15+(0.1*M.eye_blurry)
- M.disabilities |= NEARSIGHTED
- if(M.stat != 2)
- M << "\red Your eyes start to bleed profusely!"
- if(prob(50))
- if(M.stat != 2)
- M << "\red You drop what you're holding and clutch at your eyes!"
- M.drop_item()
- M.eye_blurry += 10
- M.Paralyse(1)
- M.Weaken(4)
- if (prob(M.eye_stat - 10 + 1))
- if(M.stat != 2)
- M << "\red You go blind!"
- M.sdisabilities |= BLIND
return
/obj/item/clean_blood()
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index c1ccb4aa6c..a89a4573ea 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -78,6 +78,7 @@
if(M.stat == DEAD || M.sdisabilities & BLIND) //mob is dead or fully blind
user << "[M] pupils does not react to the light!"
else if(XRAY in M.mutations) //mob has X-RAY vision
+ flick("flash", M.flash) //Yes, you can still get flashed wit X-Ray.
user << "[M] pupils give an eerie glow!"
else //they're okay!
if(!M.blinded)
diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm
index 1a50e9ad05..4024e5275e 100644
--- a/code/game/objects/items/weapons/grenades/flashbang.dm
+++ b/code/game/objects/items/weapons/grenades/flashbang.dm
@@ -48,7 +48,6 @@
//Flashing everyone
if(eye_safety < 1)
flick("e_flash", M.flash)
- M.eye_stat += rand(1, 3)
M.Stun(2)
M.Weaken(10)
@@ -80,13 +79,14 @@
M.ear_deaf = max(M.ear_deaf,5)
//This really should be in mob not every check
- if (M.eye_stat >= 20)
- M << "\red Your eyes start to burn badly!"
- M.disabilities |= NEARSIGHTED
- if(!banglet && !(istype(src , /obj/item/weapon/grenade/flashbang/clusterbang)))
- if (prob(M.eye_stat - 20 + 1))
- M << "\red You can't see anything!"
- M.sdisabilities |= BLIND
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ var/datum/organ/internal/eyes/E = H.internal_organs["eyes"]
+ if (E.damage >= E.min_bruised_damage)
+ M << "\red Your eyes start to burn badly!"
+ if(!banglet && !(istype(src , /obj/item/weapon/grenade/flashbang/clusterbang)))
+ if (E.damage >= E.min_broken_damage)
+ M << "\red You can't see anything!"
if (M.ear_damage >= 15)
M << "\red Your ears start to ring badly!"
if(!banglet && !(istype(src , /obj/item/weapon/grenade/flashbang/clusterbang)))
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index 25f86aed47..6a1767bd0a 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -354,27 +354,29 @@
/obj/item/weapon/weldingtool/proc/eyecheck(mob/user as mob)
if(!iscarbon(user)) return 1
var/safety = user:eyecheck()
+ var/mob/living/carbon/human/H = user
+ var/datum/organ/internal/eyes/E = H.internal_organs["eyes"]
switch(safety)
if(1)
usr << "\red Your eyes sting a little."
- user.eye_stat += rand(1, 2)
- if(user.eye_stat > 12)
+ E.damage += rand(1, 2)
+ if(E.damage > 12)
user.eye_blurry += rand(3,6)
if(0)
usr << "\red Your eyes burn."
- user.eye_stat += rand(2, 4)
- if(user.eye_stat > 10)
- user.eye_blurry += rand(4,10)
+ E.damage += rand(2, 4)
+ if(E.damage > 10)
+ E.damage += rand(4,10)
if(-1)
usr << "\red Your thermals intensify the welder's glow. Your eyes itch and burn severely."
user.eye_blurry += rand(12,20)
- user.eye_stat += rand(12, 16)
- if(user.eye_stat > 10 && safety < 2)
+ E.damage += rand(12, 16)
+ if(E.damage > 10 && safety < 2)
user << "\red Your eyes are really starting to hurt. This can't be good for you!"
- if (prob(user.eye_stat - 25 + 1))
+ if (E.damage >= E.min_broken_damage)
user << "\red You go blind!"
user.sdisabilities |= BLIND
- else if (prob(user.eye_stat - 15 + 1))
+ else if (E.damage >= E.min_bruised_damage)
user << "\red You go blind!"
user.eye_blind = 5
user.eye_blurry = 5
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 4044c0aae1..82ccf01492 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -159,6 +159,9 @@ emp_act
for(var/datum/organ/external/O in organs)
if(O.status & ORGAN_DESTROYED) continue
O.emp_act(severity)
+ for(var/datum/organ/internal/O in internal_organs)
+ if(O.robotic == 0) continue
+ O.emp_act(severity)
..()
diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm
index 315b3f4091..104e60fff8 100644
--- a/code/modules/mob/living/carbon/human/human_defines.dm
+++ b/code/modules/mob/living/carbon/human/human_defines.dm
@@ -21,7 +21,7 @@
var/lip_style = null //no lipstick by default- arguably misleading, as it could be used for general makeup
var/age = 30 //Player's age (pure fluff)
- var/b_type = "A+" //Player's bloodtype (Not currently used, just character fluff)
+ var/b_type = "A+" //Player's bloodtype
var/underwear = 1 //Which underwear the player wants
var/backbag = 2 //Which backpack type the player has chosen. Nothing, Satchel or Backpack.
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 0c822a4fa3..4510d0c1a6 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -1335,10 +1335,6 @@
if(!O.up && tinted_weldhelh)
client.screen += global_hud.darkMask
- if(eye_stat > 20)
- if(eye_stat > 30) client.screen += global_hud.darkMask
- else client.screen += global_hud.vimpaired
-
if(machine)
if(!machine.check_eye(src)) reset_view(null)
else
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index ddfd7d1606..baceaa2073 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -280,7 +280,6 @@
blinded = 0
eye_blind = 0
eye_blurry = 0
- eye_stat = 0
ear_deaf = 0
ear_damage = 0
heal_overall_damage(getBruteLoss(), getFireLoss())
diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm
index 5f7c707635..dc984663dd 100644
--- a/code/modules/mob/mob_defines.dm
+++ b/code/modules/mob/mob_defines.dm
@@ -81,7 +81,6 @@
var/lying = 0
var/lying_prev = 0
var/canmove = 1
- var/eye_stat = null//Living, potentially Carbon
var/lastpuke = 0
var/unacidable = 0
var/small = 0
diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm
index dd31d28ac7..6be181da08 100644
--- a/code/modules/organs/blood.dm
+++ b/code/modules/organs/blood.dm
@@ -55,12 +55,12 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
// being pumped properly anymore.
var/datum/organ/internal/heart/heart = internal_organs["heart"]
switch(heart.damage)
- if(5 to 10)
+ if(1 to heart.min_bruised_damage)
blood_volume *= 0.8
- if(11 to 20)
- blood_volume *= 0.5
- if(21 to INFINITY)
- blood_volume *= 0.3
+ if(heart.min_bruised_damage to heart.min_broken_damage)
+ blood_volume *= 0.6
+ if(heart.min_broken_damage to INFINITY)
+ blood_volume *= 0.4
//Effects of bloodloss
switch(blood_volume)
@@ -93,7 +93,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
src << "\red You feel extremely [word]"
if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_BAD)
oxyloss += 5
- toxloss += 5
+ toxloss += 1
if(prob(15))
var/word = pick("dizzy","woosey","faint")
src << "\red You feel extremely [word]"
diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm
index 33ce1131c5..15ca30f2ce 100644
--- a/code/modules/organs/organ.dm
+++ b/code/modules/organs/organ.dm
@@ -56,6 +56,7 @@
new/datum/organ/internal/liver(src)
new/datum/organ/internal/kidney(src)
new/datum/organ/internal/brain(src)
+ new/datum/organ/internal/eyes(src)
for(var/name in organs_by_name)
organs += organs_by_name[name]
diff --git a/code/modules/organs/organ_internal.dm b/code/modules/organs/organ_internal.dm
index 43d0a180d8..03a4f96da4 100644
--- a/code/modules/organs/organ_internal.dm
+++ b/code/modules/organs/organ_internal.dm
@@ -5,15 +5,15 @@
/mob/living/carbon/human/var/list/internal_organs = list()
/datum/organ/internal
- // amount of damage to the organ
- var/damage = 0
+ var/damage = 0 // amount of damage to the organ
var/min_bruised_damage = 10
var/min_broken_damage = 30
var/parent_organ = "chest"
+ var/robotic = 0 //For being a robot
/datum/organ/internal/proc/rejuvenate()
damage=0
-
+
/datum/organ/internal/proc/is_bruised()
return damage >= min_bruised_damage
@@ -31,12 +31,33 @@
src.owner = H
/datum/organ/internal/proc/take_damage(amount, var/silent=0)
+ if(src.robotic == 2)
+ src.damage += amount * 0.8
src.damage += amount
var/datum/organ/external/parent = owner.get_organ(parent_organ)
if (!silent)
owner.custom_pain("Something inside your [parent.display_name] hurts a lot.", 1)
+
+/datum/organ/internal/proc/emp_act(severity)
+ if(src.robotic == 1)
+ take_damage(15, 0)
+ if(severity == 2)
+ take_damage(5, 0)
+ if(src.robotic == 2)
+ take_damage(30, 0)
+ if(severity == 2)
+ take_damage(15, 0)
+
+/datum/organ/internal/proc/mechanize() //Being used to make robutt hearts, etc
+ robotic = 2
+
+/datum/organ/internal/proc/mechassist() //Used to add things like pacemakers, etc
+ robotic = 1
+ min_bruised_damage = 15
+ min_broken_damage = 35
+
/****************************************************
INTERNAL ORGANS DEFINES
****************************************************/
@@ -102,4 +123,16 @@
/datum/organ/internal/brain
name = "brain"
- parent_organ = "head"
\ No newline at end of file
+ parent_organ = "head"
+
+/datum/organ/internal/eyes
+ name = "eyes"
+ parent_organ = "head"
+
+ process() //Eye damage replaces the old eye_stat var.
+ if(damage > min_bruised_damage)
+ if(damage > min_broken_damage)
+ owner.client.screen += global_hud.darkMask
+ owner.eye_blind = 20
+ else
+ owner.client.screen += global_hud.vimpaired
diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm
index 363908c548..314a820aa6 100644
--- a/code/modules/reagents/Chemistry-Reagents.dm
+++ b/code/modules/reagents/Chemistry-Reagents.dm
@@ -1069,7 +1069,6 @@ datum
M.sdisabilities = 0
M.eye_blurry = 0
M.eye_blind = 0
- M.eye_stat = 0
M.SetWeakened(0)
M.SetStunned(0)
M.SetParalysis(0)
@@ -1189,12 +1188,33 @@ datum
if(!M) M = holder.my_atom
M.eye_blurry = max(M.eye_blurry-5 , 0)
M.eye_blind = max(M.eye_blind-5 , 0)
- M.disabilities &= ~NEARSIGHTED
- M.eye_stat = max(M.eye_stat-5, 0)
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ var/datum/organ/internal/eyes/E = H.internal_organs["eyes"]
+ if(istype(E))
+ E.damage = max(E.damage-5 , 0)
// M.sdisabilities &= ~1 Replaced by eye surgery
..()
return
+ peridaxon
+ name = "Peridaxon"
+ id = "peridaxon"
+ description = "Used to encourage recovery of internal organs and nervous systems. Medicate cautiously."
+ reagent_state = LIQUID
+ color = "#C8A5DC" // rgb: 200, 165, 220
+ overdose = 10
+
+ on_mob_life(var/mob/living/M as mob)
+ if(!M) M = holder.my_atom
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ var/datum/organ/internal/I = H.internal_organs
+ if(I.parent_organ == "chest")
+ I.damage = max(I.damage -1 , 0)
+ ..()
+ return
+
bicaridine
name = "Bicaridine"
id = "bicaridine"
@@ -1661,7 +1681,7 @@ datum
if(15 to 25)
M.drowsyness = max(M.drowsyness, 20)
if(25 to INFINITY)
- M.Paralyse(20)
+ M.Weaken(20)
M.drowsyness = max(M.drowsyness, 30)
data++
..()
@@ -2347,7 +2367,7 @@ datum
id = "grapejuice"
description = "It's grrrrrape!"
color = "#863333" // rgb: 134, 51, 51
-
+
drink/grapesoda
name = "Grape Soda"
id = "grapesoda"
@@ -3054,29 +3074,29 @@ datum
switch(data)
if(1 to 25)
if (!M.stuttering) M.stuttering = 1
- M.make_dizzy(10)
+ M.make_dizzy(1)
M.hallucination = max(M.hallucination, 3)
if(prob(1)) M.emote(pick("twitch","giggle"))
if(25 to 75)
if (!M.stuttering) M.stuttering = 1
M.hallucination = max(M.hallucination, 10)
- M.make_jittery(20)
- M.make_dizzy(20)
+ M.make_jittery(2)
+ M.make_dizzy(2)
M.druggy = max(M.druggy, 45)
if(prob(5)) M.emote(pick("twitch","giggle"))
if (75 to 150)
if (!M.stuttering) M.stuttering = 1
M.hallucination = max(M.hallucination, 60)
- M.make_jittery(40)
- M.make_dizzy(40)
+ M.make_jittery(4)
+ M.make_dizzy(4)
M.druggy = max(M.druggy, 60)
if(prob(10)) M.emote(pick("twitch","giggle"))
if(prob(30)) M.adjustToxLoss(2)
if (150 to 300)
if (!M.stuttering) M.stuttering = 1
M.hallucination = max(M.hallucination, 60)
- M.make_jittery(40)
- M.make_dizzy(40)
+ M.make_jittery(4)
+ M.make_dizzy(4)
M.druggy = max(M.druggy, 60)
if(prob(10)) M.emote(pick("twitch","giggle"))
if(prob(30)) M.adjustToxLoss(2)
diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm
index 3d97068901..c2673b9b45 100644
--- a/code/modules/reagents/Chemistry-Recipes.dm
+++ b/code/modules/reagents/Chemistry-Recipes.dm
@@ -189,6 +189,14 @@ datum
required_reagents = list("silicon" = 1, "carbon" = 1)
result_amount = 2
+ peridaxon
+ name = "Peridaxon"
+ id = "peridaxon"
+ result = "peridaxon"
+ required_reagents = list("bicaridine" = 2, "clonexadone" = 2)
+ required_catalysts = list("plasma" = 5)
+ result_amount = 2
+
virus_food
name = "Virus Food"
id = "virusfood"
@@ -1790,7 +1798,7 @@ datum
result = "barefoot"
required_reagents = list("berryjuice" = 1, "cream" = 1, "vermouth" = 1)
result_amount = 3
-
+
grapesoda //Allows Grape Soda to be made
name = "Grape Soda"
id = "grapesoda"
diff --git a/code/modules/surgery/eye.dm b/code/modules/surgery/eye.dm
index 9f11b48c78..ebaf436a5c 100644
--- a/code/modules/surgery/eye.dm
+++ b/code/modules/surgery/eye.dm
@@ -36,12 +36,15 @@
user.visible_message("\blue [user] has separated the corneas on [target]'s eyes with \the [tool]." , \
"\blue You have separated the corneas on [target]'s eyes with \the [tool].",)
target.op_stage.eyes = 1
+ target.blinded += 1.5
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
+ var/datum/organ/internal/eyes/eyes = target.internal_organs["eyes"]
var/datum/organ/external/affected = target.get_organ(target_zone)
user.visible_message("\red [user]'s hand slips, slicing [target]'s eyes wth \the [tool]!" , \
"\red Your hand slips, slicing [target]'s eyes wth \the [tool]!" )
affected.createwound(CUT, 10)
+ eyes.take_damage(5, 1)
/datum/surgery_step/eye/lift_eyes
allowed_tools = list(
@@ -66,10 +69,12 @@
target.op_stage.eyes = 2
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
+ var/datum/organ/internal/eyes/eyes = target.internal_organs["eyes"]
var/datum/organ/external/affected = target.get_organ(target_zone)
user.visible_message("\red [user]'s hand slips, damaging [target]'s eyes with \the [tool]!", \
"\red Your hand slips, damaging [target]'s eyes with \the [tool]!")
target.apply_damage(10, BRUTE, affected)
+ eyes.take_damage(5, 1)
/datum/surgery_step/eye/mend_eyes
allowed_tools = list(
@@ -95,10 +100,12 @@
target.op_stage.eyes = 3
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
+ var/datum/organ/internal/eyes/eyes = target.internal_organs["eyes"]
var/datum/organ/external/affected = target.get_organ(target_zone)
user.visible_message("\red [user]'s hand slips, stabbing \the [tool] into [target]'s eye!", \
"\red Your hand slips, stabbing \the [tool] into [target]'s eye!")
target.apply_damage(10, BRUTE, affected)
+ eyes.take_damage(5, 1)
/datum/surgery_step/eye/cauterize
allowed_tools = list(
@@ -119,16 +126,19 @@
"You are beginning to cauterize the incision around [target]'s eyes with \the [tool].")
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
+ var/datum/organ/internal/eyes/eyes = target.internal_organs["eyes"]
user.visible_message("\blue [user] cauterizes the incision around [target]'s eyes with \the [tool].", \
"\blue You cauterize the incision around [target]'s eyes with \the [tool].")
if (target.op_stage.eyes == 3)
+ target.disabilities &= ~NEARSIGHTED
target.sdisabilities &= ~BLIND
- target.eye_stat = 0
+ eyes.damage -= 15
target.op_stage.eyes = 0
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
+ var/datum/organ/internal/eyes/eyes = target.internal_organs["eyes"]
var/datum/organ/external/affected = target.get_organ(target_zone)
user.visible_message("\red [user]'s hand slips, searing [target]'s eyes with \the [tool]!", \
"\red Your hand slips, searing [target]'s eyes with \the [tool]!")
target.apply_damage(5, BURN, affected)
- target.eye_stat += 5
\ No newline at end of file
+ eyes.take_damage(5, 1)
\ No newline at end of file
diff --git a/code/modules/surgery/ribcage.dm b/code/modules/surgery/ribcage.dm
index 747d8a4363..b4f6762a3d 100644
--- a/code/modules/surgery/ribcage.dm
+++ b/code/modules/surgery/ribcage.dm
@@ -214,8 +214,12 @@
user.visible_message("[user] starts mending the rupture in [target]'s lungs with \the [tool].", \
"You start mending the rupture in [target]'s lungs with \the [tool]." )
if(heart.damage > 0)
- user.visible_message("[user] starts mending the bruises on [target]'s heart with \the [tool].", \
- "You start mending the bruises on [target]'s heart with \the [tool]." )
+ if(heart.robotic < 2)
+ user.visible_message("[user] starts mending the bruises on [target]'s heart with \the [tool].", \
+ "You start mending the bruises on [target]'s heart with \the [tool]." )
+ if(heart.robotic == 2)
+ user.visible_message("\blue [user] attempts to repair [target]'s mechanical heart with \the [tool]...", \
+ "\blue You attempt to repair [target]'s heart with \the [tool]...")
if(liver.damage > 0)
user.visible_message("[user] starts mending the bruises on [target]'s liver with \the [tool].", \
"You start mending the bruises on [target]'s liver with \the [tool]." )
@@ -237,9 +241,13 @@
lungs.damage = 0
if(heart.damage > 0)
- user.visible_message("\blue [user] treats the bruises on [target]'s heart with \the [tool].", \
- "\blue You treat the bruises on [target]'s heart with \the [tool]." )
- heart.damage = 0
+ if(heart.robotic == 2)
+ user.visible_message("\blue [user] pokes [target]'s mechanical heart with \the [tool].", \
+ "\red [target]'s heart is not organic, you cannot operate on it with \the [tool]!")
+ else
+ user.visible_message("\blue [user] treats the bruises on [target]'s heart with \the [tool].", \
+ "\blue You treat the bruises on [target]'s heart with \the [tool]." )
+ heart.damage = 0
if(liver.damage > 0)
user.visible_message("\blue [user] treats the bruises on [target]'s liver with \the [tool].", \
@@ -256,3 +264,50 @@
user.visible_message("\red [user]'s hand slips, slicing an artery inside [target]'s chest with \the [tool]!", \
"\red Your hand slips, slicing an artery inside [target]'s chest with \the [tool]!")
affected.createwound(CUT, 20)
+
+/datum/surgery_step/ribcage/fix_chest_internal_robot //For artificial organs
+ allowed_tools = list(
+ /obj/item/stack/nanopaste = 100, \
+ /obj/item/weapon/bonegel = 60, \
+ /obj/item/weapon/screwdriver = 30, \
+ )
+
+ min_duration = 70
+ max_duration = 90
+
+ can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
+ var/is_chest_organ_damaged = 0
+ var/datum/organ/external/chest/chest = target.get_organ("chest")
+ for(var/datum/organ/internal/I in chest.internal_organs) if(I.damage > 0)
+ is_chest_organ_damaged = 1
+ break
+ return ..() && is_chest_organ_damaged && target.op_stage.ribcage == 2
+
+ begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
+ var/datum/organ/internal/heart/heart = target.internal_organs["heart"]
+
+ if(heart.damage > 0)
+ if(heart.robotic == 2)
+ user.visible_message("[user] starts mending the mechanisms on [target]'s heart with \the [tool].", \
+ "You start mending the mechanisms on [target]'s heart with \the [tool]." )
+ target.custom_pain("The pain in your chest is living hell!",1)
+ ..()
+
+ end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
+ var/datum/organ/internal/heart/heart = target.internal_organs["heart"]
+ if(heart.damage > 0)
+ user.visible_message("\blue [user] repairs [target]'s heart with \the [tool].", \
+ "\blue You repair [target]'s heart with \the [tool]." )
+ heart.damage = 0
+
+ fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
+ var/datum/organ/internal/heart/heart = target.internal_organs["heart"]
+ user.visible_message("\red [user]'s hand slips, smearing [tool] in the incision in [target]'s heart, gumming it up!!" , \
+ "\red Your hand slips, smearing [tool] in the incision in [target]'s heart, gumming it up!")
+ heart.take_damage(5, 0)
+ target.adjustToxLoss(5)
+
+//////////////////////////////////////////////////////////////////
+// HEART SURGERY //
+//////////////////////////////////////////////////////////////////
+