Skip to content
This repository has been archived by the owner on Apr 16, 2021. It is now read-only.

Functional organs #73

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
106 commits
Select commit Hold shift + click to select a range
d26683c
added other organs, kidney(l/r), liver, stomach, intestines, spleen, …
Kyle2143 Jul 11, 2018
62faf00
more tedious copying drop interaction for new organs
Kyle2143 Jul 11, 2018
5b956e7
more tedious copying for add now, why am I still doing this at this h…
Kyle2143 Jul 11, 2018
3293d4d
added procs to damage, kidney/liver/lungs and procs to get amount of …
Kyle2143 Jul 16, 2018
2c4bc0a
remove unnecesary if
Kyle2143 Jul 16, 2018
5b0b79a
add method for damaging organs, and damages some in some places. just…
Kyle2143 Jul 17, 2018
6af0146
comment out this one dumb thing
Kyle2143 Jul 17, 2018
e3ba774
remove else from if block
Kyle2143 Jul 17, 2018
b11a577
fix compilation error
Kyle2143 Jul 17, 2018
9d6f84f
change admin tool drop organs to be able to drop 'new' organs
Kyle2143 Jul 18, 2018
f5481bf
testing logs for organs, add lung damage to smoking
Kyle2143 Jul 18, 2018
587e462
added viewing organ damage to scanprocs
Kyle2143 Jul 18, 2018
0d8b111
working proc to view organ health with analyzer upgrade, good enough …
Kyle2143 Jul 20, 2018
4477bcf
changes to how health decreates, comment for lungs later on, and remo…
Kyle2143 Jul 20, 2018
fcb1a70
ability to perform surgery and remove new organs. I haven't tested or…
Kyle2143 Jul 23, 2018
eff0b43
fix dumb compiler indentation error
Kyle2143 Jul 23, 2018
de453cd
fixes conditinal start end points
Kyle2143 Jul 23, 2018
6b51656
fixed some surgery nonsense, added adding organs to people if they ar…
Kyle2143 Jul 23, 2018
42e2ba8
fix some flavourtext
Kyle2143 Jul 23, 2018
ab59b12
add organ healing chems
Kyle2143 Jul 25, 2018
703a53c
add organ healing chems
Kyle2143 Jul 25, 2018
d7c0563
deleted parenthesis accidentally
Kyle2143 Jul 25, 2018
a59c4c9
add organ drugs to the medical vender
Kyle2143 Jul 25, 2018
95da329
add functions in handle_organs and handle_blood procs in human.dm
Kyle2143 Jul 25, 2018
82d3217
fix organ drugs so that they now work... forgot parent call
Kyle2143 Jul 25, 2018
ad383be
fix organ drug spawning in vendomat
Kyle2143 Jul 27, 2018
f931ec1
change the hp amount needed for complete organ failure from 10 to 0
Kyle2143 Jul 27, 2018
94301b3
lung amount stamina changing moved to drop/recieve organ instead of i…
Kyle2143 Jul 27, 2018
ed6c97f
move handling missing/broken lungs to method in organHolder. and have…
Kyle2143 Jul 27, 2018
bcbfcba
fix lung handling thing so that now it will only change stamina in th…
Kyle2143 Jul 27, 2018
e69552c
fix some stuff with the way that the lung stamina changes work
Kyle2143 Jul 28, 2018
db8d177
remove unnecessary uses of damage multiple organs, fix scanprocs line…
Kyle2143 Jul 29, 2018
84dd500
fix real dumb errors
Kyle2143 Jul 29, 2018
11ada6a
organ diseases, some are gonna be removed, I only want diseases for f…
Kyle2143 Jul 30, 2018
1431b14
add base for various organ failure diseases, lotta copy and pasting, …
Kyle2143 Jul 30, 2018
8820381
fix error with disease things. and start moving organ damage to organ…
Kyle2143 Aug 1, 2018
a450712
add declarations for basic cyber organs, no function added yet. also …
Kyle2143 Aug 1, 2018
82b56ec
Finally moved proc/take_organ_damage to organHolder.dm
Kyle2143 Aug 1, 2018
9253003
bit change, fixes a bunch of shit. This uses Haine's(i think) method …
Kyle2143 Aug 2, 2018
165c043
add lowerin depletion rates of chems if missing liver or both kidneys
Kyle2143 Aug 2, 2018
4fec5df
parenthesis
Kyle2143 Aug 2, 2018
b0ef42e
method call...
Kyle2143 Aug 2, 2018
63bc9c4
fix proc thing
Kyle2143 Aug 3, 2018
5b543b1
some function for cyber liver
Kyle2143 Aug 3, 2018
1524a60
add some resp failure flavour text and some curing disease if you rem…
Kyle2143 Aug 3, 2018
1bf7ca1
appendicitis event
Kyle2143 Aug 3, 2018
51f249e
fix issue with scanprocs not detecting missing lungs. issue with putt…
Kyle2143 Aug 3, 2018
641924a
fix surgery issue with kidneys and not cutting when going down a bad …
Kyle2143 Aug 3, 2018
a1b72df
fix disease cure with removal. fix kidney depletion rate for chems. f…
Kyle2143 Aug 3, 2018
ad53510
add cyberorgans to robo manufacturer
Kyle2143 Aug 3, 2018
8755a56
ejectibles
Kyle2143 Aug 3, 2018
768f253
remove useless stuff
Kyle2143 Aug 4, 2018
f883e16
remove zomment in carbon.dm
Kyle2143 Aug 4, 2018
c5c0d77
remove extraneous comments, lines. general cleanup
Kyle2143 Aug 8, 2018
77a675f
update surgery flavor text
Kyle2143 Aug 9, 2018
3613604
chance to damage internal organs if hit in the chest with >= 5 damage
Kyle2143 Aug 10, 2018
7daf670
change conditional form >=5 to <5
Kyle2143 Aug 14, 2018
107200d
timer so it takes disease a minimum amount of disease tics before it …
Kyle2143 Aug 14, 2018
aaff19a
fix disease counter thing I did before. Should be better now, not too…
Kyle2143 Aug 16, 2018
081db6e
override brain damage in humans. now all brain damage done to any hum…
Kyle2143 Aug 16, 2018
e26f240
partially convert heart to new system, All that is left really is rem…
Kyle2143 Aug 16, 2018
3b9a926
defib heals heart when successful
Kyle2143 Aug 16, 2018
8f99240
add new organs to QM commodity list and make organs take damage in de…
Kyle2143 Aug 16, 2018
84ef7e7
forgot cyber organ selling, is it really needed though?
Kyle2143 Aug 16, 2018
ba1b546
humans with regeneration and changelings are capable of regenerating …
Kyle2143 Aug 16, 2018
6218461
cryoxadone heals organs now. Like Omnizine they can heal organs even …
Kyle2143 Aug 27, 2018
5150b7a
Change to disease timer, now less prob to cure on first stage that wa…
Kyle2143 Aug 27, 2018
fc3e79b
add new surgical tool, scissors. item and manufacturing. Adding sprit…
Kyle2143 Aug 27, 2018
961b196
suture attack resets chest op-stage in suture's attack override. I do…
Kyle2143 Aug 27, 2018
5a7a1bd
adding new tool to surgery, removing intents next
Kyle2143 Aug 27, 2018
3b6ed01
sprite for in-hand and snips obj
Kyle2143 Aug 27, 2018
cc2a094
Basically all done now for real. Just need those cyber sprites. This …
Kyle2143 Aug 27, 2018
ec48537
add pathogens to burst appendix, start thing for checking if an organ…
Kyle2143 Sep 3, 2018
10e6b1f
organs can take damage when exposed to open air, snip surgery does le…
Kyle2143 Sep 4, 2018
af136c1
no, that air damaging stuff is dumb
Kyle2143 Sep 6, 2018
5d97d7c
scanprocs change so that now a var is needed to view organ data
Kyle2143 Sep 7, 2018
7607fce
new health scanner and health scanner upgrade for viewing organ data.
Kyle2143 Sep 7, 2018
b3fae26
fixes to organ failure diseases so that for resp and kidney failure, …
Kyle2143 Sep 7, 2018
7072761
sprites for cyber Organs courtesy of NaviOS, Sundance, and 2 shitty o…
Kyle2143 Sep 13, 2018
7aec4a1
fix some disease nonense, appendix rupturing gives pathogens to the p…
Kyle2143 Sep 13, 2018
cee3196
adds scanprocs organ damage. obfuscated amount for analyzers, numeric…
Kyle2143 Sep 13, 2018
b1ef308
Trent's Anatomy surgical textbook
Kyle2143 Sep 13, 2018
4ba3b6f
liver/kidney's effect on depletion rate. efficiency, has one less org…
Kyle2143 Sep 13, 2018
c6ee631
compiler error fix. copy-paste strikes again
Kyle2143 Sep 13, 2018
e265d2c
finishing touches to the 'forewArd'
Kyle2143 Sep 13, 2018
d528331
add to medical manufacturer's cause why not, doctors will be performi…
Kyle2143 Sep 13, 2018
bab7e98
lower manufacture time for cyber organs
Kyle2143 Sep 13, 2018
ab19a84
having a cyberappendix cures the appendicitis disease. I didn't think…
Kyle2143 Sep 13, 2018
73a8dee
if I fix the bug before anyone sees it, was there ever really a bug? …
Kyle2143 Dec 2, 2018
7870f12
Compatibility patch for BYOND 512.1453+
ZeWaka Oct 20, 2018
415ffba
moving breath composition outside handle_breath proc
Kyle2143 Dec 5, 2018
b459a60
fix lungs naming scheme, and making cyberlungs be able to breath in …
Kyle2143 Dec 9, 2018
92cd748
finally got around to making the handles of the scissors different co…
Kyle2143 Dec 10, 2018
63c4d8c
remove old scissor sprites
Kyle2143 Dec 10, 2018
69c6ee1
finally got around to making the handles of the scissors different co…
Kyle2143 Dec 10, 2018
7e50139
remove old scissor sprites
Kyle2143 Dec 10, 2018
ebc3190
cyberlungs need less oxygen to breathe and can breathe a higher amoun…
Kyle2143 Dec 29, 2018
c84f6c2
fix merge issue
Kyle2143 Dec 29, 2018
0227a9a
revert lung changes in files: oran and human.dm to before I started f…
Kyle2143 Dec 29, 2018
b8717a0
let cyberlungs need lower amounts of O2 when a guy has 2 cyberlungs. …
Kyle2143 Dec 29, 2018
2bea74d
make objects for cyber lungs right and left to fix naming schemes...
Kyle2143 Dec 29, 2018
5ef4645
medal check for all robotic organs.
Kyle2143 Jan 16, 2019
7d2af3f
fix ethanol OD cyberliver interaction conditional. Now You will exper…
Kyle2143 Jan 16, 2019
fbb23df
fix compiler error
Kyle2143 Jan 16, 2019
9799c7b
This proc call leftover from testing causes runtimes. Must have misse…
Kyle2143 Jan 18, 2019
78da32f
fix cyberkidney naming. Also right/left cyberkidneys have their own o…
Kyle2143 Feb 5, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
69 changes: 68 additions & 1 deletion code/admin/part_modifier.dm
@@ -1,7 +1,7 @@

/datum/admins/var/datum/partmod_holder/part_modifier = null

var/list/default_organ_paths = list("head" = /obj/item/organ/head, "skull" = /obj/item/skull, "brain" = /obj/item/organ/brain, "left_eye" = /obj/item/organ/eye, "right_eye" = /obj/item/organ/eye, "chest" = /obj/item/organ/chest, "heart" = /obj/item/organ/heart, "left_lung" = /obj/item/organ/lung, "right_lung" = /obj/item/organ/lung, "butt" = /obj/item/clothing/head/butt)
var/list/default_organ_paths = list("head" = /obj/item/organ/head, "skull" = /obj/item/skull, "brain" = /obj/item/organ/brain, "left_eye" = /obj/item/organ/eye, "right_eye" = /obj/item/organ/eye, "chest" = /obj/item/organ/chest, "heart" = /obj/item/organ/heart, "left_lung" = /obj/item/organ/lung, "right_lung" = /obj/item/organ/lung, "butt" = /obj/item/clothing/head/butt, "liver" = /obj/item/organ/liver, "stomach" = /obj/item/organ/stomach, "intestines" = /obj/item/organ/intestines, "pancreas" = /obj/item/organ/pancreas, "spleen" = /obj/item/organ/spleen, "appendix" = /obj/item/organ/appendix, "left_kidney" = /obj/item/organ/kidney, "right_kidney" = /obj/item/organ/kidney)
var/list/default_limb_paths = list("l_arm" = /obj/item/parts/human_parts/arm/left, "r_arm" = /obj/item/parts/human_parts/arm/right, "l_leg" = /obj/item/parts/human_parts/leg/left, "r_leg" = /obj/item/parts/human_parts/leg/right)

/client/proc/modify_parts(var/mob/living/carbon/human/target as mob)
Expand Down Expand Up @@ -331,6 +331,73 @@ var/list/default_limb_paths = list("l_arm" = /obj/item/parts/human_parts/arm/lef
<td><a href='byond://?src=\ref[src];action=replace_organ;target=\ref[organs];part=butt'>\[X\]</a></td>
[(see_vars) ? "[organs.butt ? "<td><a href='byond://?src=\ref[src];action=view_vars;target=\ref[organs.butt]'>\[X\]</a></td>" : "<td>None</td>"]" : null]
</tr>
---------------------------------
<tr>
<td>Left Kidney</td>
<td>[organs.left_kidney ? organs.left_kidney : "None"]</td>
<td>[organs.left_kidney ? organs.left_kidney.type : "None"]</td>
<td><a href='byond://?src=\ref[src];action=drop_organ;target=\ref[organs];part=left_kidney'>\[X\]</a></td>
<td><a href='byond://?src=\ref[src];action=replace_organ;target=\ref[organs];part=left_kidney'>\[X\]</a></td>
[(see_vars) ? "[organs.left_kidney ? "<td><a href='byond://?src=\ref[src];action=view_vars;target=\ref[organs.left_kidney]'>\[X\]</a></td>" : "<td>None</td>"]" : null]
</tr>
<tr>
<td>Right Kidney</td>
<td>[organs.right_kidney ? organs.right_kidney : "None"]</td>
<td>[organs.right_kidney ? organs.right_kidney.type : "None"]</td>
<td><a href='byond://?src=\ref[src];action=drop_organ;target=\ref[organs];part=right_kidney'>\[X\]</a></td>
<td><a href='byond://?src=\ref[src];action=replace_organ;target=\ref[organs];part=right_kidney'>\[X\]</a></td>
[(see_vars) ? "[organs.right_kidney ? "<td><a href='byond://?src=\ref[src];action=view_vars;target=\ref[organs.right_kidney]'>\[X\]</a></td>" : "<td>None</td>"]" : null]
</tr>
<tr>
<td>Liver</td>
<td>[organs.liver ? organs.liver : "None"]</td>
<td>[organs.liver ? organs.liver.type : "None"]</td>
<td><a href='byond://?src=\ref[src];action=drop_organ;target=\ref[organs];part=liver'>\[X\]</a></td>
<td><a href='byond://?src=\ref[src];action=replace_organ;target=\ref[organs];part=liver'>\[X\]</a></td>
[(see_vars) ? "[organs.liver ? "<td><a href='byond://?src=\ref[src];action=view_vars;target=\ref[organs.liver]'>\[X\]</a></td>" : "<td>None</td>"]" : null]
</tr>
<tr>
<td>Stomach</td>
<td>[organs.stomach ? organs.stomach : "None"]</td>
<td>[organs.stomach ? organs.stomach.type : "None"]</td>
<td><a href='byond://?src=\ref[src];action=drop_organ;target=\ref[organs];part=stomach'>\[X\]</a></td>
<td><a href='byond://?src=\ref[src];action=replace_organ;target=\ref[organs];part=stomach'>\[X\]</a></td>
[(see_vars) ? "[organs.stomach ? "<td><a href='byond://?src=\ref[src];action=view_vars;target=\ref[organs.stomach]'>\[X\]</a></td>" : "<td>None</td>"]" : null]
</tr>
<tr>
<td>Intestines</td>
<td>[organs.intestines ? organs.intestines : "None"]</td>
<td>[organs.intestines ? organs.intestines.type : "None"]</td>
<td><a href='byond://?src=\ref[src];action=drop_organ;target=\ref[organs];part=intestines'>\[X\]</a></td>
<td><a href='byond://?src=\ref[src];action=replace_organ;target=\ref[organs];part=intestines'>\[X\]</a></td>
[(see_vars) ? "[organs.intestines ? "<td><a href='byond://?src=\ref[src];action=view_vars;target=\ref[organs.intestines]'>\[X\]</a></td>" : "<td>None</td>"]" : null]
</tr>
<tr>
<td>Spleen</td>
<td>[organs.spleen ? organs.spleen : "None"]</td>
<td>[organs.spleen ? organs.spleen.type : "None"]</td>
<td><a href='byond://?src=\ref[src];action=drop_organ;target=\ref[organs];part=spleen'>\[X\]</a></td>
<td><a href='byond://?src=\ref[src];action=replace_organ;target=\ref[organs];part=spleen'>\[X\]</a></td>
[(see_vars) ? "[organs.spleen ? "<td><a href='byond://?src=\ref[src];action=view_vars;target=\ref[organs.spleen]'>\[X\]</a></td>" : "<td>None</td>"]" : null]
</tr>
<tr>
<td>Pancreas</td>
<td>[organs.pancreas ? organs.pancreas : "None"]</td>
<td>[organs.pancreas ? organs.pancreas.type : "None"]</td>
<td><a href='byond://?src=\ref[src];action=drop_organ;target=\ref[organs];part=pancreas'>\[X\]</a></td>
<td><a href='byond://?src=\ref[src];action=replace_organ;target=\ref[organs];part=pancreas'>\[X\]</a></td>
[(see_vars) ? "[organs.pancreas ? "<td><a href='byond://?src=\ref[src];action=view_vars;target=\ref[organs.pancreas]'>\[X\]</a></td>" : "<td>None</td>"]" : null]
</tr>
<tr>
<td>Appendix</td>
<td>[organs.appendix ? organs.appendix : "None"]</td>
<td>[organs.appendix ? organs.appendix.type : "None"]</td>
<td><a href='byond://?src=\ref[src];action=drop_organ;target=\ref[organs];part=appendix'>\[X\]</a></td>
<td><a href='byond://?src=\ref[src];action=replace_organ;target=\ref[organs];part=appendix'>\[X\]</a></td>
[(see_vars) ? "[organs.appendix ? "<td><a href='byond://?src=\ref[src];action=view_vars;target=\ref[organs.appendix]'>\[X\]</a></td>" : "<td>None</td>"]" : null]
</tr>

------------------------------------
<tr>
<td>All Organs</td>
<td><i>N/A</i></td>
Expand Down
2 changes: 1 addition & 1 deletion code/admin/randomverbs.dm
Expand Up @@ -1400,7 +1400,7 @@
return
//target = input(usr, "Target", "Target") as mob in world

boutput(usr, scan_health(target, 1, 255))
boutput(usr, scan_health(target, 1, 255, 1))
return

/client/proc/cmd_admin_check_reagents(var/atom/target as null|mob|obj|turf in world)
Expand Down
11 changes: 11 additions & 0 deletions code/datums/abilities/changeling/regeneration.dm
Expand Up @@ -51,6 +51,12 @@
C.reagents.clear_reagents()
C.lying = 0
C.canmove = 1

if (C.organHolder)
C.organHolder.heal_organs(1000, 1000, 1000, 100, list("liver", "left_kidney", "right_kidney", "stomach", "intestines","spleen", "left_lung", "right_lung","appendix", "pancreas", "heart", "brain", "left_eye", "right_eye"))
if (C.organHolder.is_missing_organs())
C.organHolder.create_organs()

boutput(C, "<span style=\"color:blue\">We have regenerated.</span>")
logTheThing("combat", C, null, "[C] finishes regenerative statis as a changeling [log_loc(C)].")
C.visible_message(__red("<B>[C] appears to wake from the dead, having healed all wounds.</span>"))
Expand Down Expand Up @@ -130,6 +136,11 @@
C.visible_message("<span style=\"color:red\"><B> [C]'s right leg grows back!</span>")
C.set_body_icon_dirty()

if (C.organHolder)
C.organHolder.heal_organs(5, 5, 5, 90, list("liver", "left_kidney", "right_kidney", "stomach", "intestines","spleen", "left_lung", "right_lung","appendix", "pancreas", "heart", "brain", "left_eye", "right_eye"))
if (C.organHolder.is_missing_organs())
C.organHolder.create_organs()

if (prob(25)) C.visible_message("<span style=\"color:red\"><B>[C]'s flesh is moving and sliding around oddly!</B></span>")

/datum/targetable/changeling/regeneration
Expand Down
6 changes: 6 additions & 0 deletions code/datums/chemistry/Chemistry-Reagents.dm
Expand Up @@ -142,6 +142,12 @@ datum
var/mob/living/carbon/human/H = M
if(H.traitHolder.hasTrait("slowmetabolism"))
deplRate /= 2
if (H.organHolder)
if (!H.organHolder.liver || H.organHolder.liver.get_damage() >= 100) //if no liver or liver is dead, deplete slower
deplRate /= 2
if (H.organHolder.get_working_kidney_amt() == 0) //same with kidneys
deplRate /= 2

holder.remove_reagent(src.id, deplRate) //By default it slowly disappears.

if(M && overdose > 0) check_overdose(M)
Expand Down
19 changes: 15 additions & 4 deletions code/datums/chemistry/Reagents-Base.dm
Expand Up @@ -147,7 +147,9 @@ datum
H.stuttering += rand(1,10)
if (H.canmove && isturf(H.loc) && prob(8))
step(H, pick(cardinal))
if (holder.get_reagent_amount(src.id) >= 275)

var/has_cyberliver = H.organHolder && H.organHolder.liver && H.organHolder.liver.robotic
if (holder.get_reagent_amount(src.id) >= 275 && !has_cyberliver)
if(prob(10))
H.emote(pick("hiccup", "fart", "mumble", "grumble"))
H.stuttering += 1
Expand All @@ -163,7 +165,7 @@ datum
new /obj/decal/cleanable/vomit(H.loc)
if(prob(15))
H.make_dizzy(5)
if (holder.get_reagent_amount(src.id) >= 300)
if (holder.get_reagent_amount(src.id) >= 300 && !has_cyberliver)
H.change_eye_blurry(10, 50)
if(prob(6)) H.drowsyness += 5
if(prob(5)) H.take_toxin_damage(rand(1,2))
Expand All @@ -172,8 +174,14 @@ datum

do_overdose(var/severity, var/mob/M)
var/mob/living/carbon/human/H = M
if (!istype(H) || !H.bioHolder.HasEffect("resist_alcohol"))
..()
if (istype(H) && !H.bioHolder.HasEffect("resist_alcohol"))
if (prob(25))
if (H.organHolder.liver)
if (!H.organHolder.liver.robotic)
H.organHolder.liver.take_damage(0, 0, rand(1,2))
else
H.organHolder.liver.heal_damage(0, 0, rand(1,2))
..()

hydrogen
name = "hydrogen"
Expand Down Expand Up @@ -489,6 +497,9 @@ datum
M.weakened += 4 * severity

if (prob(8))
var/mob/living/carbon/human/H = M
if (istype(H) && H.organHolder.pancreas)
H.organHolder.pancreas.take_damage(0, 0, rand(1,2))
M.take_toxin_damage(severity)
M.updatehealth()

Expand Down
95 changes: 95 additions & 0 deletions code/datums/chemistry/Reagents-Medical.dm
Expand Up @@ -399,6 +399,8 @@ datum
var/mob/living/carbon/human/H = M
if (H.bleeding && prob(33))
H.bleeding--
H.organHolder.heal_organs(2, 2, 2, 60, list("liver", "left_kidney", "right_kidney", "stomach", "intestines","spleen", "left_lung", "right_lung","appendix", "pancreas", "heart", "brain"))

M.updatehealth()
//M.UpdateDamageIcon()
..(M)
Expand Down Expand Up @@ -999,6 +1001,9 @@ datum
if(M.get_toxin_damage())
M.take_toxin_damage(-3)
M.HealDamage("All", 12, 12)
if (istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
H.organHolder.heal_organs(1, 1, 1, 60, list("liver", "left_kidney", "right_kidney", "stomach", "intestines","spleen", "left_lung", "right_lung","appendix", "pancreas", "heart", "brain"))

M.updatehealth()
if(prob(25)) M.UpdateDamageIcon() // gonna leave this one on for now, but only call it a quarter of the time
Expand Down Expand Up @@ -1176,3 +1181,93 @@ datum
M.updatehealth()
..(M)
return

//heals spleen/lungs
medical/organ_drug1
name = "organ drug Class 1"
id = "organ_drug1"
description = "A drug that targets spleen/lungs for healing."
reagent_state = LIQUID
fluid_r = 10
fluid_g = 180
fluid_b = 120
transparency = 255
depletion_rate = 0.2
value = 3

on_mob_life(var/mob/M)
if(!M) M = holder.my_atom

if (istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M

if (H.organHolder.spleen && H.organHolder.spleen.get_damage() < 90 && H.organHolder.spleen.get_damage() > 0)
H.organHolder.spleen.heal_damage(2, 2, 2, "spleen")

if (H.organHolder.left_lung && H.organHolder.left_lung.get_damage() < 90 && H.organHolder.left_lung.get_damage() > 0)
H.organHolder.spleen.heal_damage(2, 2, 2, "left_lung")

if (H.organHolder.right_lung && H.organHolder.right_lung.get_damage() < 90 && H.organHolder.right_lung.get_damage() > 0)
H.organHolder.spleen.heal_damage(2, 2, 2, "right_lung")
M.updatehealth()
..(M)

//heals liver/kidneys/stomach/intestines
medical/organ_drug2
name = "organ drug Class 2"
id = "organ_drug2"
description = "A drug that targets liver/kidneys/stomach/intestines for healing."
reagent_state = LIQUID
fluid_r = 10
fluid_g = 120
fluid_b = 180
transparency = 255
depletion_rate = 0.2
value = 3

on_mob_life(var/mob/M)
if(!M) M = holder.my_atom
if (istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M

if (H.organHolder.liver && H.organHolder.liver.get_damage() < 90 && H.organHolder.liver.get_damage() > 0)
H.organHolder.liver.heal_damage(2, 2, 2)

if (H.organHolder.left_kidney && H.organHolder.left_kidney.get_damage() < 90 && H.organHolder.left_kidney.get_damage() > 0)
H.organHolder.left_kidney.heal_damage(2, 2, 2)

if (H.organHolder.right_kidney && H.organHolder.right_kidney.get_damage() < 90 && H.organHolder.right_kidney.get_damage() > 0)
H.organHolder.right_kidney.heal_damage(2, 2, 2)

if (H.organHolder.stomach && H.organHolder.stomach.get_damage() < 90 && H.organHolder.stomach.get_damage() > 0)
H.organHolder.stomach.heal_damage(2, 2, 2)

if (H.organHolder.intestines && H.organHolder.intestines.get_damage() < 90 && H.organHolder.intestines.get_damage() > 0)
H.organHolder.intestines.heal_damage(2, 2, 2)
M.updatehealth()
..(M)

//heals appendix/pancreas
medical/organ_drug3
name = "organ drug Class 3"
id = "organ_drug3"
description = "A drug that targets appendix/pancreas for healing."
reagent_state = LIQUID
fluid_r = 80
fluid_g = 120
fluid_b = 120
transparency = 255
depletion_rate = 0.2
value = 3

on_mob_life(var/mob/M)
if(!M) M = holder.my_atom
if (istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M

if (H.organHolder.appendix && H.organHolder.appendix.get_damage() < 90 && H.organHolder.appendix.get_damage() > 0)
H.organHolder.appendix.heal_damage(2, 2, 2)
if (H.organHolder.pancreas && H.organHolder.pancreas.get_damage() < 90 && H.organHolder.pancreas.get_damage() > 0)
H.organHolder.pancreas.heal_damage(2, 2, 2)
M.updatehealth()
..(M)
31 changes: 31 additions & 0 deletions code/datums/chemistry/tools/bottles.dm
Expand Up @@ -244,6 +244,37 @@
..()
reagents.add_reagent("fluorosurfactant", 30)

//organ healing chems
/obj/item/reagent_containers/glass/bottle/organ_drug1
name = "organ_drug1 bottle"
desc = "A small bottle."
bottle_style = "1"
amount_per_transfer_from_this = 5

New()
..()
reagents.add_reagent("organ_drug1", 30)

/obj/item/reagent_containers/glass/bottle/organ_drug2
name = "organ_drug2 bottle"
desc = "A small bottle."
bottle_style = "1"
amount_per_transfer_from_this = 5

New()
..()
reagents.add_reagent("organ_drug2", 30)

/obj/item/reagent_containers/glass/bottle/organ_drug3
name = "organ_drug3 bottle"
desc = "A small bottle."
bottle_style = "1"
amount_per_transfer_from_this = 5

New()
..()
reagents.add_reagent("organ_drug3", 30)

/* ========================================================= */
/* -------------------- Chem Precursors -------------------- */
/* ========================================================= */
Expand Down