mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-13 11:43:31 +00:00
Medical Hoopery
Added eyes as an internal organ, removed the eye-stat var on mobs and changed it to properly direct it to eye damage. Altered all reference. Updated the sleeper to allow for ejection of the beakers and occupants in panel. Updated the body scanner to check for prosthetics/mechanized organs, and inform the individual of the blind disability. Laid the groundwork for mechanical and assisted internal organs. Groundwork for chemical: Peridaxon, a chemical that allows for the slow regeneration from organ damage.
This commit is contained in:
@@ -118,12 +118,12 @@ obj/var/contaminated = 0
|
|||||||
/mob/living/carbon/human/proc/burn_eyes()
|
/mob/living/carbon/human/proc/burn_eyes()
|
||||||
//The proc that handles eye burning.
|
//The proc that handles eye burning.
|
||||||
if(prob(20)) src << "\red Your eyes burn!"
|
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)
|
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!"
|
src << "\red You are blinded!"
|
||||||
eye_blind += 20
|
eye_blind += 20
|
||||||
eye_stat = 0
|
|
||||||
|
|
||||||
/mob/living/carbon/human/proc/pl_head_protected()
|
/mob/living/carbon/human/proc/pl_head_protected()
|
||||||
//Checks if the head is adequately sealed.
|
//Checks if the head is adequately sealed.
|
||||||
|
|||||||
@@ -11,6 +11,13 @@
|
|||||||
density = 1
|
density = 1
|
||||||
var/orient = "LEFT" // "RIGHT" changes the dir suffix to "-r"
|
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)
|
/obj/machinery/sleep_console/ex_act(severity)
|
||||||
switch(severity)
|
switch(severity)
|
||||||
if(1.0)
|
if(1.0)
|
||||||
@@ -71,10 +78,11 @@
|
|||||||
if(occupant.reagents)
|
if(occupant.reagents)
|
||||||
for(var/chemical in connected.available_chemicals)
|
for(var/chemical in connected.available_chemicals)
|
||||||
dat += "[connected.available_chemicals[chemical]]: [occupant.reagents.get_reagent_amount(chemical)] units<br>"
|
dat += "[connected.available_chemicals[chemical]]: [occupant.reagents.get_reagent_amount(chemical)] units<br>"
|
||||||
dat += "<HR><A href='?src=\ref[src];refresh=1'>Refresh meter readings each second</A><BR>"
|
dat += "<A href='?src=\ref[src];refresh=1'>Refresh Meter Readings</A><BR>"
|
||||||
if(src.connected.beaker)
|
if(src.connected.beaker)
|
||||||
|
dat += "<HR><A href='?src=\ref[src];removebeaker=1'>Remove Beaker</A><BR>"
|
||||||
if(src.connected.filtering)
|
if(src.connected.filtering)
|
||||||
dat += "<HR><A href='?src=\ref[src];togglefilter=1'>Stop Dialysis</A><BR>"
|
dat += "<A href='?src=\ref[src];togglefilter=1'>Stop Dialysis</A><BR>"
|
||||||
dat += text("Output Beaker has [] units of free space remaining<BR><HR>", src.connected.beaker.reagents.maximum_volume - src.connected.beaker.reagents.total_volume)
|
dat += text("Output Beaker has [] units of free space remaining<BR><HR>", src.connected.beaker.reagents.maximum_volume - src.connected.beaker.reagents.total_volume)
|
||||||
else
|
else
|
||||||
dat += "<HR><A href='?src=\ref[src];togglefilter=1'>Start Dialysis</A><BR>"
|
dat += "<HR><A href='?src=\ref[src];togglefilter=1'>Start Dialysis</A><BR>"
|
||||||
@@ -85,8 +93,10 @@
|
|||||||
for(var/chemical in connected.available_chemicals)
|
for(var/chemical in connected.available_chemicals)
|
||||||
dat += "Inject [connected.available_chemicals[chemical]]: "
|
dat += "Inject [connected.available_chemicals[chemical]]: "
|
||||||
for(var/amount in connected.amounts)
|
for(var/amount in connected.amounts)
|
||||||
dat += "<a href ='?src=\ref[src];chemical=[chemical];amount=[amount]'>[amount] units</a> "
|
dat += "<a href ='?src=\ref[src];chemical=[chemical];amount=[amount]'>[amount] units</a><br> "
|
||||||
dat += "<br>"
|
|
||||||
|
|
||||||
|
dat += "<HR><A href='?src=\ref[src];ejectify=1'>Eject Patient</A>"
|
||||||
else
|
else
|
||||||
dat += "The sleeper is empty."
|
dat += "The sleeper is empty."
|
||||||
dat += text("<BR><BR><A href='?src=\ref[];mach_close=sleeper'>Close</A>", user)
|
dat += text("<BR><BR><A href='?src=\ref[];mach_close=sleeper'>Close</A>", user)
|
||||||
@@ -108,19 +118,21 @@
|
|||||||
src.connected.inject_chemical(usr,href_list["chemical"],text2num(href_list["amount"]))
|
src.connected.inject_chemical(usr,href_list["chemical"],text2num(href_list["amount"]))
|
||||||
else
|
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!"
|
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"])
|
if (href_list["refresh"])
|
||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
|
if (href_list["removebeaker"])
|
||||||
|
src.connected.remove_beaker()
|
||||||
|
src.updateUsrDialog()
|
||||||
if (href_list["togglefilter"])
|
if (href_list["togglefilter"])
|
||||||
src.connected.toggle_filter()
|
src.connected.toggle_filter()
|
||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
|
if (href_list["ejectify"])
|
||||||
|
src.connected.eject()
|
||||||
|
src.updateUsrDialog()
|
||||||
src.add_fingerprint(usr)
|
src.add_fingerprint(usr)
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/machinery/sleep_console/process()
|
|
||||||
if(stat & (NOPOWER|BROKEN))
|
|
||||||
return
|
|
||||||
src.updateUsrDialog()
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/sleep_console/power_change()
|
/obj/machinery/sleep_console/power_change()
|
||||||
return
|
return
|
||||||
@@ -144,7 +156,7 @@
|
|||||||
anchored = 1
|
anchored = 1
|
||||||
var/orient = "LEFT" // "RIGHT" changes the dir suffix to "-r"
|
var/orient = "LEFT" // "RIGHT" changes the dir suffix to "-r"
|
||||||
var/mob/living/carbon/human/occupant = null
|
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/amounts = list(5, 10)
|
||||||
var/obj/item/weapon/reagent_containers/glass/beaker = null
|
var/obj/item/weapon/reagent_containers/glass/beaker = null
|
||||||
var/filtering = 0
|
var/filtering = 0
|
||||||
@@ -169,10 +181,10 @@
|
|||||||
if(beaker.reagents.total_volume < beaker.reagents.maximum_volume)
|
if(beaker.reagents.total_volume < beaker.reagents.maximum_volume)
|
||||||
src.occupant.vessel.trans_to(beaker, 1)
|
src.occupant.vessel.trans_to(beaker, 1)
|
||||||
for(var/datum/reagent/x in src.occupant.reagents.reagent_list)
|
for(var/datum/reagent/x in src.occupant.reagents.reagent_list)
|
||||||
if(x.volume > 20)
|
// world << "FILTERING CHEMS"
|
||||||
src.occupant.reagents.trans_id_to(beaker, x.id, 2)
|
src.occupant.reagents.trans_to(beaker, 3)
|
||||||
src.occupant.vessel.trans_to(beaker, 1)
|
src.occupant.vessel.trans_to(beaker, 1)
|
||||||
src.updateDialog()
|
src.updateUsrDialog()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
@@ -191,6 +203,7 @@
|
|||||||
user.drop_item()
|
user.drop_item()
|
||||||
G.loc = src
|
G.loc = src
|
||||||
user.visible_message("[user] adds \a [G] to \the [src]!", "You add \a [G] to \the [src]!")
|
user.visible_message("[user] adds \a [G] to \the [src]!", "You add \a [G] to \the [src]!")
|
||||||
|
src.updateUsrDialog()
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
user << "\red The sleeper has a beaker already."
|
user << "\red The sleeper has a beaker already."
|
||||||
|
|||||||
@@ -281,6 +281,7 @@
|
|||||||
var/infected = ""
|
var/infected = ""
|
||||||
var/imp = ""
|
var/imp = ""
|
||||||
var/bled = ""
|
var/bled = ""
|
||||||
|
var/robot = ""
|
||||||
var/splint = ""
|
var/splint = ""
|
||||||
var/internal_bleeding = ""
|
var/internal_bleeding = ""
|
||||||
var/lung_ruptured = ""
|
var/lung_ruptured = ""
|
||||||
@@ -295,6 +296,8 @@
|
|||||||
bled = "Bleeding:"
|
bled = "Bleeding:"
|
||||||
if(e.status & ORGAN_BROKEN)
|
if(e.status & ORGAN_BROKEN)
|
||||||
AN = "[e.broken_description]:"
|
AN = "[e.broken_description]:"
|
||||||
|
if(e.status & ORGAN_ROBOT)
|
||||||
|
robot = "Prosthetic:"
|
||||||
if(e.open)
|
if(e.open)
|
||||||
open = "Open:"
|
open = "Open:"
|
||||||
var/unknown_body = 0
|
var/unknown_body = 0
|
||||||
@@ -308,16 +311,25 @@
|
|||||||
if(!AN && !open && !infected & !imp)
|
if(!AN && !open && !infected & !imp)
|
||||||
AN = "None:"
|
AN = "None:"
|
||||||
if(!(e.status & ORGAN_DESTROYED))
|
if(!(e.status & ORGAN_DESTROYED))
|
||||||
dat += "<td>[e.display_name]</td><td>[e.burn_dam]</td><td>[e.brute_dam]</td><td>[bled][AN][splint][open][infected][imp][internal_bleeding][lung_ruptured]</td>"
|
dat += "<td>[e.display_name]</td><td>[e.burn_dam]</td><td>[e.brute_dam]</td><td>[robot][bled][AN][splint][open][infected][imp][internal_bleeding][lung_ruptured]</td>"
|
||||||
else
|
else
|
||||||
dat += "<td>[e.display_name]</td><td>-</td><td>-</td><td>Not Found</td>"
|
dat += "<td>[e.display_name]</td><td>-</td><td>-</td><td>Not Found</td>"
|
||||||
dat += "</tr>"
|
dat += "</tr>"
|
||||||
for(var/organ_name in occupant.internal_organs)
|
for(var/organ_name in occupant.internal_organs)
|
||||||
var/datum/organ/internal/i = occupant.internal_organs[organ_name]
|
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 += "<tr>"
|
dat += "<tr>"
|
||||||
dat += "<td>[i.name]</td><td>N/A</td><td>[i.damage]</td><td>None:</td>"
|
dat += "<td>[i.name]</td><td>N/A</td><td>[i.damage]</td><td>None:[mech]</td><td></td>"
|
||||||
dat += "</tr>"
|
dat += "</tr>"
|
||||||
dat += "</table>"
|
dat += "</table>"
|
||||||
|
if(occupant.sdisabilities & BLIND)
|
||||||
|
dat += text("<font color='red'>Cataracts detected.</font><BR>")
|
||||||
|
if(occupant.sdisabilities & NEARSIGHTED)
|
||||||
|
dat += text("<font color='red'>Retinal misalignment detected.</font><BR>")
|
||||||
else
|
else
|
||||||
dat += "\The [src] is empty."
|
dat += "\The [src] is empty."
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -79,13 +79,15 @@
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
O.Weaken(strength)
|
O.Weaken(strength)
|
||||||
if ((O.eye_stat > 15 && prob(O.eye_stat + 50)))
|
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)
|
flick("e_flash", O:flash)
|
||||||
O.eye_stat += rand(1, 2)
|
E.damage += rand(1, 5)
|
||||||
else
|
else
|
||||||
if(!O.blinded)
|
if(!O.blinded)
|
||||||
flick("flash", O:flash)
|
flick("flash", O:flash)
|
||||||
O.eye_stat += rand(0, 2)
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/flasher/emp_act(severity)
|
/obj/machinery/flasher/emp_act(severity)
|
||||||
|
|||||||
@@ -522,17 +522,11 @@
|
|||||||
"\red You stab yourself in the eyes with [src]!" \
|
"\red You stab yourself in the eyes with [src]!" \
|
||||||
)
|
)
|
||||||
if(istype(M, /mob/living/carbon/human))
|
if(istype(M, /mob/living/carbon/human))
|
||||||
var/datum/organ/external/affecting = M:get_organ("head")
|
var/datum/organ/internal/eyes/eyes = H.internal_organs["eyes"]
|
||||||
if(affecting.take_damage(7))
|
eyes.damage += rand(3,4)
|
||||||
M:UpdateDamageIcon()
|
if(eyes.damage >= eyes.min_bruised_damage)
|
||||||
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)
|
if(M.stat != 2)
|
||||||
|
if(eyes.robotic <= 1) //robot eyes bleeding might be a bit silly
|
||||||
M << "\red Your eyes start to bleed profusely!"
|
M << "\red Your eyes start to bleed profusely!"
|
||||||
if(prob(50))
|
if(prob(50))
|
||||||
if(M.stat != 2)
|
if(M.stat != 2)
|
||||||
@@ -541,10 +535,15 @@
|
|||||||
M.eye_blurry += 10
|
M.eye_blurry += 10
|
||||||
M.Paralyse(1)
|
M.Paralyse(1)
|
||||||
M.Weaken(4)
|
M.Weaken(4)
|
||||||
if (prob(M.eye_stat - 10 + 1))
|
if (eyes.damage >= eyes.min_broken_damage)
|
||||||
if(M.stat != 2)
|
if(M.stat != 2)
|
||||||
M << "\red You go blind!"
|
M << "\red You go blind!"
|
||||||
M.sdisabilities |= 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)
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/clean_blood()
|
/obj/item/clean_blood()
|
||||||
|
|||||||
@@ -78,6 +78,7 @@
|
|||||||
if(M.stat == DEAD || M.sdisabilities & BLIND) //mob is dead or fully blind
|
if(M.stat == DEAD || M.sdisabilities & BLIND) //mob is dead or fully blind
|
||||||
user << "<span class='notice'>[M] pupils does not react to the light!</span>"
|
user << "<span class='notice'>[M] pupils does not react to the light!</span>"
|
||||||
else if(XRAY in M.mutations) //mob has X-RAY vision
|
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 << "<span class='notice'>[M] pupils give an eerie glow!</span>"
|
user << "<span class='notice'>[M] pupils give an eerie glow!</span>"
|
||||||
else //they're okay!
|
else //they're okay!
|
||||||
if(!M.blinded)
|
if(!M.blinded)
|
||||||
|
|||||||
@@ -48,7 +48,6 @@
|
|||||||
//Flashing everyone
|
//Flashing everyone
|
||||||
if(eye_safety < 1)
|
if(eye_safety < 1)
|
||||||
flick("e_flash", M.flash)
|
flick("e_flash", M.flash)
|
||||||
M.eye_stat += rand(1, 3)
|
|
||||||
M.Stun(2)
|
M.Stun(2)
|
||||||
M.Weaken(10)
|
M.Weaken(10)
|
||||||
|
|
||||||
@@ -80,13 +79,14 @@
|
|||||||
M.ear_deaf = max(M.ear_deaf,5)
|
M.ear_deaf = max(M.ear_deaf,5)
|
||||||
|
|
||||||
//This really should be in mob not every check
|
//This really should be in mob not every check
|
||||||
if (M.eye_stat >= 20)
|
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!"
|
M << "\red Your eyes start to burn badly!"
|
||||||
M.disabilities |= NEARSIGHTED
|
|
||||||
if(!banglet && !(istype(src , /obj/item/weapon/grenade/flashbang/clusterbang)))
|
if(!banglet && !(istype(src , /obj/item/weapon/grenade/flashbang/clusterbang)))
|
||||||
if (prob(M.eye_stat - 20 + 1))
|
if (E.damage >= E.min_broken_damage)
|
||||||
M << "\red You can't see anything!"
|
M << "\red You can't see anything!"
|
||||||
M.sdisabilities |= BLIND
|
|
||||||
if (M.ear_damage >= 15)
|
if (M.ear_damage >= 15)
|
||||||
M << "\red Your ears start to ring badly!"
|
M << "\red Your ears start to ring badly!"
|
||||||
if(!banglet && !(istype(src , /obj/item/weapon/grenade/flashbang/clusterbang)))
|
if(!banglet && !(istype(src , /obj/item/weapon/grenade/flashbang/clusterbang)))
|
||||||
|
|||||||
@@ -354,27 +354,29 @@
|
|||||||
/obj/item/weapon/weldingtool/proc/eyecheck(mob/user as mob)
|
/obj/item/weapon/weldingtool/proc/eyecheck(mob/user as mob)
|
||||||
if(!iscarbon(user)) return 1
|
if(!iscarbon(user)) return 1
|
||||||
var/safety = user:eyecheck()
|
var/safety = user:eyecheck()
|
||||||
|
var/mob/living/carbon/human/H = user
|
||||||
|
var/datum/organ/internal/eyes/E = H.internal_organs["eyes"]
|
||||||
switch(safety)
|
switch(safety)
|
||||||
if(1)
|
if(1)
|
||||||
usr << "\red Your eyes sting a little."
|
usr << "\red Your eyes sting a little."
|
||||||
user.eye_stat += rand(1, 2)
|
E.damage += rand(1, 2)
|
||||||
if(user.eye_stat > 12)
|
if(E.damage > 12)
|
||||||
user.eye_blurry += rand(3,6)
|
user.eye_blurry += rand(3,6)
|
||||||
if(0)
|
if(0)
|
||||||
usr << "\red Your eyes burn."
|
usr << "\red Your eyes burn."
|
||||||
user.eye_stat += rand(2, 4)
|
E.damage += rand(2, 4)
|
||||||
if(user.eye_stat > 10)
|
if(E.damage > 10)
|
||||||
user.eye_blurry += rand(4,10)
|
E.damage += rand(4,10)
|
||||||
if(-1)
|
if(-1)
|
||||||
usr << "\red Your thermals intensify the welder's glow. Your eyes itch and burn severely."
|
usr << "\red Your thermals intensify the welder's glow. Your eyes itch and burn severely."
|
||||||
user.eye_blurry += rand(12,20)
|
user.eye_blurry += rand(12,20)
|
||||||
user.eye_stat += rand(12, 16)
|
E.damage += rand(12, 16)
|
||||||
if(user.eye_stat > 10 && safety < 2)
|
if(E.damage > 10 && safety < 2)
|
||||||
user << "\red Your eyes are really starting to hurt. This can't be good for you!"
|
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 << "\red You go blind!"
|
||||||
user.sdisabilities |= 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 << "\red You go blind!"
|
||||||
user.eye_blind = 5
|
user.eye_blind = 5
|
||||||
user.eye_blurry = 5
|
user.eye_blurry = 5
|
||||||
|
|||||||
@@ -159,6 +159,9 @@ emp_act
|
|||||||
for(var/datum/organ/external/O in organs)
|
for(var/datum/organ/external/O in organs)
|
||||||
if(O.status & ORGAN_DESTROYED) continue
|
if(O.status & ORGAN_DESTROYED) continue
|
||||||
O.emp_act(severity)
|
O.emp_act(severity)
|
||||||
|
for(var/datum/organ/internal/O in internal_organs)
|
||||||
|
if(O.robotic == 0) continue
|
||||||
|
O.emp_act(severity)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
var/lip_style = null //no lipstick by default- arguably misleading, as it could be used for general makeup
|
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/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/underwear = 1 //Which underwear the player wants
|
||||||
var/backbag = 2 //Which backpack type the player has chosen. Nothing, Satchel or Backpack.
|
var/backbag = 2 //Which backpack type the player has chosen. Nothing, Satchel or Backpack.
|
||||||
|
|||||||
@@ -1335,10 +1335,6 @@
|
|||||||
if(!O.up && tinted_weldhelh)
|
if(!O.up && tinted_weldhelh)
|
||||||
client.screen += global_hud.darkMask
|
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)
|
||||||
if(!machine.check_eye(src)) reset_view(null)
|
if(!machine.check_eye(src)) reset_view(null)
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -280,7 +280,6 @@
|
|||||||
blinded = 0
|
blinded = 0
|
||||||
eye_blind = 0
|
eye_blind = 0
|
||||||
eye_blurry = 0
|
eye_blurry = 0
|
||||||
eye_stat = 0
|
|
||||||
ear_deaf = 0
|
ear_deaf = 0
|
||||||
ear_damage = 0
|
ear_damage = 0
|
||||||
heal_overall_damage(getBruteLoss(), getFireLoss())
|
heal_overall_damage(getBruteLoss(), getFireLoss())
|
||||||
|
|||||||
@@ -81,7 +81,6 @@
|
|||||||
var/lying = 0
|
var/lying = 0
|
||||||
var/lying_prev = 0
|
var/lying_prev = 0
|
||||||
var/canmove = 1
|
var/canmove = 1
|
||||||
var/eye_stat = null//Living, potentially Carbon
|
|
||||||
var/lastpuke = 0
|
var/lastpuke = 0
|
||||||
var/unacidable = 0
|
var/unacidable = 0
|
||||||
var/small = 0
|
var/small = 0
|
||||||
|
|||||||
@@ -55,12 +55,12 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
|
|||||||
// being pumped properly anymore.
|
// being pumped properly anymore.
|
||||||
var/datum/organ/internal/heart/heart = internal_organs["heart"]
|
var/datum/organ/internal/heart/heart = internal_organs["heart"]
|
||||||
switch(heart.damage)
|
switch(heart.damage)
|
||||||
if(5 to 10)
|
if(1 to heart.min_bruised_damage)
|
||||||
blood_volume *= 0.8
|
blood_volume *= 0.8
|
||||||
if(11 to 20)
|
if(heart.min_bruised_damage to heart.min_broken_damage)
|
||||||
blood_volume *= 0.5
|
blood_volume *= 0.6
|
||||||
if(21 to INFINITY)
|
if(heart.min_broken_damage to INFINITY)
|
||||||
blood_volume *= 0.3
|
blood_volume *= 0.4
|
||||||
|
|
||||||
//Effects of bloodloss
|
//Effects of bloodloss
|
||||||
switch(blood_volume)
|
switch(blood_volume)
|
||||||
@@ -93,7 +93,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
|
|||||||
src << "\red You feel extremely [word]"
|
src << "\red You feel extremely [word]"
|
||||||
if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_BAD)
|
if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_BAD)
|
||||||
oxyloss += 5
|
oxyloss += 5
|
||||||
toxloss += 5
|
toxloss += 1
|
||||||
if(prob(15))
|
if(prob(15))
|
||||||
var/word = pick("dizzy","woosey","faint")
|
var/word = pick("dizzy","woosey","faint")
|
||||||
src << "\red You feel extremely [word]"
|
src << "\red You feel extremely [word]"
|
||||||
|
|||||||
@@ -56,6 +56,7 @@
|
|||||||
new/datum/organ/internal/liver(src)
|
new/datum/organ/internal/liver(src)
|
||||||
new/datum/organ/internal/kidney(src)
|
new/datum/organ/internal/kidney(src)
|
||||||
new/datum/organ/internal/brain(src)
|
new/datum/organ/internal/brain(src)
|
||||||
|
new/datum/organ/internal/eyes(src)
|
||||||
|
|
||||||
for(var/name in organs_by_name)
|
for(var/name in organs_by_name)
|
||||||
organs += organs_by_name[name]
|
organs += organs_by_name[name]
|
||||||
|
|||||||
@@ -5,11 +5,11 @@
|
|||||||
/mob/living/carbon/human/var/list/internal_organs = list()
|
/mob/living/carbon/human/var/list/internal_organs = list()
|
||||||
|
|
||||||
/datum/organ/internal
|
/datum/organ/internal
|
||||||
// amount of damage to the organ
|
var/damage = 0 // amount of damage to the organ
|
||||||
var/damage = 0
|
|
||||||
var/min_bruised_damage = 10
|
var/min_bruised_damage = 10
|
||||||
var/min_broken_damage = 30
|
var/min_broken_damage = 30
|
||||||
var/parent_organ = "chest"
|
var/parent_organ = "chest"
|
||||||
|
var/robotic = 0 //For being a robot
|
||||||
|
|
||||||
/datum/organ/internal/proc/rejuvenate()
|
/datum/organ/internal/proc/rejuvenate()
|
||||||
damage=0
|
damage=0
|
||||||
@@ -31,12 +31,33 @@
|
|||||||
src.owner = H
|
src.owner = H
|
||||||
|
|
||||||
/datum/organ/internal/proc/take_damage(amount, var/silent=0)
|
/datum/organ/internal/proc/take_damage(amount, var/silent=0)
|
||||||
|
if(src.robotic == 2)
|
||||||
|
src.damage += amount * 0.8
|
||||||
src.damage += amount
|
src.damage += amount
|
||||||
|
|
||||||
var/datum/organ/external/parent = owner.get_organ(parent_organ)
|
var/datum/organ/external/parent = owner.get_organ(parent_organ)
|
||||||
if (!silent)
|
if (!silent)
|
||||||
owner.custom_pain("Something inside your [parent.display_name] hurts a lot.", 1)
|
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
|
INTERNAL ORGANS DEFINES
|
||||||
****************************************************/
|
****************************************************/
|
||||||
@@ -103,3 +124,15 @@
|
|||||||
/datum/organ/internal/brain
|
/datum/organ/internal/brain
|
||||||
name = "brain"
|
name = "brain"
|
||||||
parent_organ = "head"
|
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
|
||||||
|
|||||||
@@ -1069,7 +1069,6 @@ datum
|
|||||||
M.sdisabilities = 0
|
M.sdisabilities = 0
|
||||||
M.eye_blurry = 0
|
M.eye_blurry = 0
|
||||||
M.eye_blind = 0
|
M.eye_blind = 0
|
||||||
M.eye_stat = 0
|
|
||||||
M.SetWeakened(0)
|
M.SetWeakened(0)
|
||||||
M.SetStunned(0)
|
M.SetStunned(0)
|
||||||
M.SetParalysis(0)
|
M.SetParalysis(0)
|
||||||
@@ -1189,12 +1188,33 @@ datum
|
|||||||
if(!M) M = holder.my_atom
|
if(!M) M = holder.my_atom
|
||||||
M.eye_blurry = max(M.eye_blurry-5 , 0)
|
M.eye_blurry = max(M.eye_blurry-5 , 0)
|
||||||
M.eye_blind = max(M.eye_blind-5 , 0)
|
M.eye_blind = max(M.eye_blind-5 , 0)
|
||||||
M.disabilities &= ~NEARSIGHTED
|
if(ishuman(M))
|
||||||
M.eye_stat = max(M.eye_stat-5, 0)
|
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
|
// M.sdisabilities &= ~1 Replaced by eye surgery
|
||||||
..()
|
..()
|
||||||
return
|
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
|
bicaridine
|
||||||
name = "Bicaridine"
|
name = "Bicaridine"
|
||||||
id = "bicaridine"
|
id = "bicaridine"
|
||||||
@@ -1661,7 +1681,7 @@ datum
|
|||||||
if(15 to 25)
|
if(15 to 25)
|
||||||
M.drowsyness = max(M.drowsyness, 20)
|
M.drowsyness = max(M.drowsyness, 20)
|
||||||
if(25 to INFINITY)
|
if(25 to INFINITY)
|
||||||
M.Paralyse(20)
|
M.Weaken(20)
|
||||||
M.drowsyness = max(M.drowsyness, 30)
|
M.drowsyness = max(M.drowsyness, 30)
|
||||||
data++
|
data++
|
||||||
..()
|
..()
|
||||||
@@ -3054,29 +3074,29 @@ datum
|
|||||||
switch(data)
|
switch(data)
|
||||||
if(1 to 25)
|
if(1 to 25)
|
||||||
if (!M.stuttering) M.stuttering = 1
|
if (!M.stuttering) M.stuttering = 1
|
||||||
M.make_dizzy(10)
|
M.make_dizzy(1)
|
||||||
M.hallucination = max(M.hallucination, 3)
|
M.hallucination = max(M.hallucination, 3)
|
||||||
if(prob(1)) M.emote(pick("twitch","giggle"))
|
if(prob(1)) M.emote(pick("twitch","giggle"))
|
||||||
if(25 to 75)
|
if(25 to 75)
|
||||||
if (!M.stuttering) M.stuttering = 1
|
if (!M.stuttering) M.stuttering = 1
|
||||||
M.hallucination = max(M.hallucination, 10)
|
M.hallucination = max(M.hallucination, 10)
|
||||||
M.make_jittery(20)
|
M.make_jittery(2)
|
||||||
M.make_dizzy(20)
|
M.make_dizzy(2)
|
||||||
M.druggy = max(M.druggy, 45)
|
M.druggy = max(M.druggy, 45)
|
||||||
if(prob(5)) M.emote(pick("twitch","giggle"))
|
if(prob(5)) M.emote(pick("twitch","giggle"))
|
||||||
if (75 to 150)
|
if (75 to 150)
|
||||||
if (!M.stuttering) M.stuttering = 1
|
if (!M.stuttering) M.stuttering = 1
|
||||||
M.hallucination = max(M.hallucination, 60)
|
M.hallucination = max(M.hallucination, 60)
|
||||||
M.make_jittery(40)
|
M.make_jittery(4)
|
||||||
M.make_dizzy(40)
|
M.make_dizzy(4)
|
||||||
M.druggy = max(M.druggy, 60)
|
M.druggy = max(M.druggy, 60)
|
||||||
if(prob(10)) M.emote(pick("twitch","giggle"))
|
if(prob(10)) M.emote(pick("twitch","giggle"))
|
||||||
if(prob(30)) M.adjustToxLoss(2)
|
if(prob(30)) M.adjustToxLoss(2)
|
||||||
if (150 to 300)
|
if (150 to 300)
|
||||||
if (!M.stuttering) M.stuttering = 1
|
if (!M.stuttering) M.stuttering = 1
|
||||||
M.hallucination = max(M.hallucination, 60)
|
M.hallucination = max(M.hallucination, 60)
|
||||||
M.make_jittery(40)
|
M.make_jittery(4)
|
||||||
M.make_dizzy(40)
|
M.make_dizzy(4)
|
||||||
M.druggy = max(M.druggy, 60)
|
M.druggy = max(M.druggy, 60)
|
||||||
if(prob(10)) M.emote(pick("twitch","giggle"))
|
if(prob(10)) M.emote(pick("twitch","giggle"))
|
||||||
if(prob(30)) M.adjustToxLoss(2)
|
if(prob(30)) M.adjustToxLoss(2)
|
||||||
|
|||||||
@@ -189,6 +189,14 @@ datum
|
|||||||
required_reagents = list("silicon" = 1, "carbon" = 1)
|
required_reagents = list("silicon" = 1, "carbon" = 1)
|
||||||
result_amount = 2
|
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
|
virus_food
|
||||||
name = "Virus Food"
|
name = "Virus Food"
|
||||||
id = "virusfood"
|
id = "virusfood"
|
||||||
|
|||||||
@@ -36,12 +36,15 @@
|
|||||||
user.visible_message("\blue [user] has separated the corneas on [target]'s eyes with \the [tool]." , \
|
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].",)
|
"\blue You have separated the corneas on [target]'s eyes with \the [tool].",)
|
||||||
target.op_stage.eyes = 1
|
target.op_stage.eyes = 1
|
||||||
|
target.blinded += 1.5
|
||||||
|
|
||||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
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)
|
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]!" , \
|
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]!" )
|
"\red Your hand slips, slicing [target]'s eyes wth \the [tool]!" )
|
||||||
affected.createwound(CUT, 10)
|
affected.createwound(CUT, 10)
|
||||||
|
eyes.take_damage(5, 1)
|
||||||
|
|
||||||
/datum/surgery_step/eye/lift_eyes
|
/datum/surgery_step/eye/lift_eyes
|
||||||
allowed_tools = list(
|
allowed_tools = list(
|
||||||
@@ -66,10 +69,12 @@
|
|||||||
target.op_stage.eyes = 2
|
target.op_stage.eyes = 2
|
||||||
|
|
||||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
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)
|
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]!", \
|
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]!")
|
"\red Your hand slips, damaging [target]'s eyes with \the [tool]!")
|
||||||
target.apply_damage(10, BRUTE, affected)
|
target.apply_damage(10, BRUTE, affected)
|
||||||
|
eyes.take_damage(5, 1)
|
||||||
|
|
||||||
/datum/surgery_step/eye/mend_eyes
|
/datum/surgery_step/eye/mend_eyes
|
||||||
allowed_tools = list(
|
allowed_tools = list(
|
||||||
@@ -95,10 +100,12 @@
|
|||||||
target.op_stage.eyes = 3
|
target.op_stage.eyes = 3
|
||||||
|
|
||||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
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)
|
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!", \
|
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!")
|
"\red Your hand slips, stabbing \the [tool] into [target]'s eye!")
|
||||||
target.apply_damage(10, BRUTE, affected)
|
target.apply_damage(10, BRUTE, affected)
|
||||||
|
eyes.take_damage(5, 1)
|
||||||
|
|
||||||
/datum/surgery_step/eye/cauterize
|
/datum/surgery_step/eye/cauterize
|
||||||
allowed_tools = list(
|
allowed_tools = list(
|
||||||
@@ -119,16 +126,19 @@
|
|||||||
"You are beginning to cauterize the incision around [target]'s eyes with \the [tool].")
|
"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)
|
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].", \
|
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].")
|
"\blue You cauterize the incision around [target]'s eyes with \the [tool].")
|
||||||
if (target.op_stage.eyes == 3)
|
if (target.op_stage.eyes == 3)
|
||||||
|
target.disabilities &= ~NEARSIGHTED
|
||||||
target.sdisabilities &= ~BLIND
|
target.sdisabilities &= ~BLIND
|
||||||
target.eye_stat = 0
|
eyes.damage -= 15
|
||||||
target.op_stage.eyes = 0
|
target.op_stage.eyes = 0
|
||||||
|
|
||||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
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)
|
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]!", \
|
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]!")
|
"\red Your hand slips, searing [target]'s eyes with \the [tool]!")
|
||||||
target.apply_damage(5, BURN, affected)
|
target.apply_damage(5, BURN, affected)
|
||||||
target.eye_stat += 5
|
eyes.take_damage(5, 1)
|
||||||
@@ -214,8 +214,12 @@
|
|||||||
user.visible_message("[user] starts mending the rupture in [target]'s lungs with \the [tool].", \
|
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]." )
|
"You start mending the rupture in [target]'s lungs with \the [tool]." )
|
||||||
if(heart.damage > 0)
|
if(heart.damage > 0)
|
||||||
|
if(heart.robotic < 2)
|
||||||
user.visible_message("[user] starts mending the bruises on [target]'s heart with \the [tool].", \
|
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]." )
|
"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)
|
if(liver.damage > 0)
|
||||||
user.visible_message("[user] starts mending the bruises on [target]'s liver with \the [tool].", \
|
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]." )
|
"You start mending the bruises on [target]'s liver with \the [tool]." )
|
||||||
@@ -237,6 +241,10 @@
|
|||||||
lungs.damage = 0
|
lungs.damage = 0
|
||||||
|
|
||||||
if(heart.damage > 0)
|
if(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].", \
|
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]." )
|
"\blue You treat the bruises on [target]'s heart with \the [tool]." )
|
||||||
heart.damage = 0
|
heart.damage = 0
|
||||||
@@ -256,3 +264,50 @@
|
|||||||
user.visible_message("\red [user]'s hand slips, slicing an artery inside [target]'s chest with \the [tool]!", \
|
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]!")
|
"\red Your hand slips, slicing an artery inside [target]'s chest with \the [tool]!")
|
||||||
affected.createwound(CUT, 20)
|
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 //
|
||||||
|
//////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user