Le Kidney Beans (#7672)

rscadd: "Adds the ability to remove appendix and other organs in character setup."
    rscadd: "Adds two kidneys! Splits the work up between the two organs."

Also adds the ability for a mechanical liver and kidneys,appendix
This commit is contained in:
Lady Fowl
2019-12-17 07:22:08 -08:00
committed by Erki
parent 609cccbf09
commit fce3617857
16 changed files with 121 additions and 23 deletions

View File

@@ -74,7 +74,8 @@
#define BP_LUNGS "lungs"
#define BP_BRAIN "brain"
#define BP_LIVER "liver"
#define BP_KIDNEYS "kidneys"
#define BP_LKIDNEY "left kidney"
#define BP_RKIDNEY "right kidney"
#define BP_STOMACH "stomach"
#define BP_APPENDIX "appendix"

View File

@@ -18,7 +18,7 @@
var/list/products = list(
BP_HEART = list(/obj/item/organ/internal/heart, 50),
BP_LUNGS = list(/obj/item/organ/internal/lungs, 40),
BP_KIDNEYS = list(/obj/item/organ/internal/kidneys,20),
BP_LKIDNEY = list(/obj/item/organ/internal/kidneys,20),
BP_EYES = list(/obj/item/organ/internal/eyes, 30),
BP_LIVER = list(/obj/item/organ/internal/liver, 50)
)

View File

@@ -14,7 +14,7 @@
if(!user.is_wizard())
if(istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/H = user
var/obj/item/organ/O = H.internal_organs_by_name[pick(BP_EYES,"appendix",BP_KIDNEYS,BP_LIVER, BP_HEART, BP_LUNGS, BP_BRAIN)]
var/obj/item/organ/O = H.internal_organs_by_name[pick(BP_EYES,BP_APPENDIX,BP_LKIDNEY,BP_RKIDNEY,BP_LIVER, BP_HEART, BP_LUNGS, BP_BRAIN)]
if(O == null)
to_chat(user, span("notice", "You can't make any sense of the arcane glyphs. . . maybe you should try again."))
else

View File

@@ -236,6 +236,14 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
organ_name = "heart"
if(BP_EYES)
organ_name = "eyes"
if(BP_APPENDIX)
organ_name = "appendix"
if(BP_LKIDNEY)
organ_name = "left kidneys"
if(BP_RKIDNEY)
organ_name = "right kidneys"
if(BP_LIVER)
organ_name = "liver"
if(status == "cyborg")
++ind
@@ -270,6 +278,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
out += "\tRetinal overlayed [organ_name]"
else
out += "\tMechanically assisted [organ_name]"
else if(status == "removed")
out += "\tRemoved [organ_name]"
out += "<br>"
if(!ind)
out += "\[...\]<br><br>"
else
@@ -617,7 +628,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
return TOPIC_REFRESH
else if(href_list["organs"])
var/organ_name = input(user, "Which internal function do you want to change?") as null|anything in list(BP_HEART, BP_EYES)
var/organ_name = input(user, "Which internal function do you want to change?") as null|anything in list(BP_HEART, BP_EYES, BP_APPENDIX, BP_LKIDNEY, BP_LIVER, BP_RKIDNEY)
if(!organ_name) return
var/organ = null
@@ -626,8 +637,16 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
organ = BP_HEART
if(BP_EYES)
organ = BP_EYES
if(BP_APPENDIX)
organ = BP_APPENDIX
if(BP_LKIDNEY)
organ = BP_LKIDNEY
if(BP_RKIDNEY)
organ = BP_RKIDNEY
if(BP_LIVER)
organ = BP_LIVER
var/new_state = input(user, "What state do you wish the organ to be in?") as null|anything in list("Normal","Assisted","Mechanical")
var/new_state = input(user, "What state do you wish the organ to be in?") as null|anything in list("Normal","Assisted","Mechanical", "Removed")
if(!new_state) return
switch(new_state)
@@ -637,6 +656,11 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
pref.organ_data[organ] = "assisted"
if("Mechanical")
pref.organ_data[organ] = "mechanical"
if("Removed")
if((organ in list(BP_HEART, BP_LIVER)) || (organ == BP_LKIDNEY && pref.organ_data[BP_RKIDNEY] == "removed") || (organ == BP_RKIDNEY && pref.organ_data[BP_LKIDNEY]))
to_chat(user, "<span class='notice'>You cannot start without a [organ].</span>")
return
pref.organ_data[organ] = "removed"
return TOPIC_REFRESH
else if(href_list["reset_organs"])

View File

@@ -204,7 +204,7 @@
var/list/pick_organs = shuffle(internal_organs.Copy())
// Prioritize damaging our filtration organs first.
var/obj/item/organ/internal/kidneys/kidneys = internal_organs_by_name[BP_KIDNEYS]
var/obj/item/organ/internal/kidneys/kidneys = internal_organs_by_name[pick(BP_LKIDNEY,BP_RKIDNEY)]
if(kidneys)
pick_organs -= kidneys
pick_organs.Insert(1, kidneys)

View File

@@ -110,6 +110,8 @@
I.mechassist()
if ("mechanical")
I.robotize()
if ("removed")
qdel(I)
if (apply_markings)
for(var/N in organs_by_name)

View File

@@ -60,7 +60,7 @@
BP_HEART = /obj/item/organ/internal/heart/vox,
BP_LUNGS = /obj/item/organ/internal/lungs/vox,
BP_LIVER = /obj/item/organ/internal/liver/vox,
BP_KIDNEYS = /obj/item/organ/internal/kidneys/vox,
BP_LKIDNEY = /obj/item/organ/internal/kidneys/vox,
BP_STOMACH = /obj/item/organ/internal/stomach,
BP_BRAIN = /obj/item/organ/internal/brain,
BP_EYES = /obj/item/organ/internal/eyes,

View File

@@ -176,7 +176,8 @@
BP_HEART = /obj/item/organ/internal/heart,
BP_LUNGS = /obj/item/organ/internal/lungs,
BP_LIVER = /obj/item/organ/internal/liver,
BP_KIDNEYS = /obj/item/organ/internal/kidneys,
BP_LKIDNEY = /obj/item/organ/internal/kidneys/left,
BP_RKIDNEY = /obj/item/organ/internal/kidneys/right,
BP_STOMACH = /obj/item/organ/internal/stomach,
BP_BRAIN = /obj/item/organ/internal/brain,
BP_APPENDIX = /obj/item/organ/internal/appendix,

View File

@@ -34,7 +34,7 @@
BP_HEART = /obj/item/organ/internal/heart/skrell,
BP_LUNGS = /obj/item/organ/internal/lungs/skrell,
BP_LIVER = /obj/item/organ/internal/liver/skrell,
BP_KIDNEYS = /obj/item/organ/internal/kidneys/skrell,
BP_LKIDNEY = /obj/item/organ/internal/kidneys/skrell,
BP_BRAIN = /obj/item/organ/internal/brain/skrell,
BP_STOMACH = /obj/item/organ/internal/stomach,
BP_APPENDIX = /obj/item/organ/internal/appendix,

View File

@@ -64,7 +64,7 @@
BP_HEART = /obj/item/organ/internal/heart,
BP_LUNGS = /obj/item/organ/internal/lungs,
BP_LIVER = /obj/item/organ/internal/liver,
BP_KIDNEYS = /obj/item/organ/internal/kidneys/autakh,
BP_LKIDNEY = /obj/item/organ/internal/kidneys/autakh,
BP_STOMACH = /obj/item/organ/internal/stomach,
BP_BRAIN = /obj/item/organ/internal/brain,
BP_EYES = /obj/item/organ/internal/eyes/autakh,

View File

@@ -92,7 +92,7 @@
BP_HEART = /obj/item/organ/internal/heart/vaurca,
"phoron reserve tank" = /obj/item/organ/vaurca/preserve,
BP_LIVER = /obj/item/organ/internal/liver/vaurca,
BP_KIDNEYS = /obj/item/organ/internal/kidneys/vaurca,
BP_LKIDNEY = /obj/item/organ/internal/kidneys/vaurca,
BP_STOMACH = /obj/item/organ/internal/stomach,
BP_BRAIN = /obj/item/organ/internal/brain/vaurca,
BP_EYES = /obj/item/organ/internal/eyes/vaurca

View File

@@ -1,8 +1,8 @@
/obj/item/organ/internal/kidneys
name = "kidneys"
name = "kidney"
icon_state = "kidneys"
gender = PLURAL
organ_tag = BP_KIDNEYS
organ_tag = BP_LKIDNEY
parent_organ = BP_GROIN
robotic_name = "prosthetic kidneys"
robotic_sprite = "kidneys-prosthetic"
@@ -25,21 +25,42 @@
var/datum/reagent/coffee = locate(/datum/reagent/drink/coffee) in owner.reagents.reagent_list
if(coffee)
if(is_bruised())
owner.adjustToxLoss(0.1 * PROCESS_ACCURACY)
owner.adjustToxLoss(0.1 * PROCESS_ACCURACY / 2)
else if(is_broken())
owner.adjustToxLoss(0.3 * PROCESS_ACCURACY)
owner.adjustToxLoss(0.3 * PROCESS_ACCURACY / 2)
if(is_bruised())
if(prob(5) && reagents.get_reagent_amount("potassium") < 5)
reagents.add_reagent("potassium", REM*5)
reagents.add_reagent("potassium", REM*5 / 2)
if(is_broken())
if(owner.reagents.get_reagent_amount("potassium") < 15)
owner.reagents.add_reagent("potassium", REM*2)
owner.reagents.add_reagent("potassium", REM*2 / 2)
//If your kidneys aren't working, your body's going to have a hard time cleaning your blood.
if(!owner.chem_effects[CE_ANTITOXIN])
if(prob(33))
if(is_broken())
owner.adjustToxLoss(0.5)
owner.adjustToxLoss(0.3)
if(status & ORGAN_DEAD)
owner.adjustToxLoss(1)
owner.adjustToxLoss(0.5)
/obj/item/organ/internal/kidneys/attackby(var/obj/item/I, var/mob/user)
..()
if(istype(I, /obj/item/hemostat))
if(src.organ_tag == BP_LKIDNEY)
to_chat(usr, "You prepare the kidney for placement on the right side.")
organ_tag = BP_RKIDNEY
name = "right kidney"
else if(organ_tag == BP_RKIDNEY)
organ_tag = BP_LKIDNEY
to_chat(usr, "You prepare the kidney for placement on the left side.")
name = "left kidney"
/obj/item/organ/internal/kidneys/left
name = "left kidney"
organ_tag = BP_LKIDNEY
robotic_name = "prosthetic left kidneys"
/obj/item/organ/internal/kidneys/right
name = "right kidney"
robotic_name = "prosthetic right kidney"
organ_tag = BP_RKIDNEY

View File

@@ -7,6 +7,8 @@
/obj/item/organ/internal/kidneys/skrell
icon_state = "kidney_skrell"
/obj/item/organ/internal/kidneys/skrell/right
icon_state = "kidney_skrell"
/obj/item/organ/internal/eyes/skrell
icon_state = "eyes_skrell"

View File

@@ -284,7 +284,7 @@ obj/item/gun/energy/staff/focus/attack_self(mob/living/user as mob)
if(!user.is_wizard())
if(istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/H = user
var/obj/item/organ/O = H.internal_organs_by_name[pick(H.species.vision_organ || BP_EYES,"appendix",BP_KIDNEYS,BP_LIVER, BP_HEART, BP_LUNGS, BP_BRAIN)]
var/obj/item/organ/O = H.internal_organs_by_name[pick(H.species.vision_organ || BP_EYES,BP_APPENDIX,BP_LKIDNEY,BP_RKIDNEY,BP_LIVER, BP_HEART, BP_LUNGS, BP_BRAIN)]
if(O == null)
to_chat(user, "<span class='notice'>You can't make any sense of the arcane glyphs... maybe you should try again.</span>")
else

View File

@@ -19,10 +19,15 @@
id = "robotic_lungs"
build_path = /obj/item/organ/internal/lungs
/datum/design/item/mechfab/prosthetic/internal/kidneys
name = "Prosthetic Kidneys"
/datum/design/item/mechfab/prosthetic/internal/lkidney
name = "Prosthetic Left Kidney"
id = "robotic_kidneys"
build_path = /obj/item/organ/internal/kidneys
build_path = /obj/item/organ/internal/kidneys/left
/datum/design/item/mechfab/prosthetic/internal/rkidney
name = "Prosthetic Right Kidney"
id = "robotic_rkidneys"
build_path = /obj/item/organ/internal/kidneys/right
/datum/design/item/mechfab/prosthetic/internal/eyes
name = "Prosthetic Eyes"