Re-adds appendicitis (#10000)

Time to piss off 99 med mains.
This commit is contained in:
Alberyk
2020-10-06 13:37:56 -03:00
committed by GitHub
parent 666c56a844
commit ecb35a2319
13 changed files with 105 additions and 53 deletions

View File

@@ -211,40 +211,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
var/ind = 0
for(var/name in pref.organ_data)
var/status = pref.organ_data[name]
var/organ_name = null
switch(name)
if(BP_L_ARM)
organ_name = "left arm"
if(BP_R_ARM)
organ_name = "right arm"
if(BP_L_LEG)
organ_name = "left leg"
if(BP_R_LEG)
organ_name = "right leg"
if(BP_L_FOOT)
organ_name = "left foot"
if(BP_R_FOOT)
organ_name = "right foot"
if(BP_L_HAND)
organ_name = "left hand"
if(BP_R_HAND)
organ_name = "right hand"
if(BP_GROIN)
organ_name = "lower body"
if(BP_CHEST)
organ_name = "upper body"
if(BP_HEAD)
organ_name = "head"
if(BP_HEART)
organ_name = "heart"
if(BP_EYES)
organ_name = "eyes"
if(BP_LUNGS)
organ_name = "lungs"
if(BP_LIVER)
organ_name = "liver"
if(BP_KIDNEYS)
organ_name = "kidneys"
var/organ_name = name
if(status == "cyborg")
++ind
@@ -279,6 +246,11 @@ 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")
++ind
if(ind > 1)
out += ", "
out += "\tRemoved [organ_name]"
if(!ind)
out += "\[...\]<br><br>"
else
@@ -628,32 +600,34 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
return TOPIC_REFRESH_UPDATE_PREVIEW
else if(href_list["organs"])
var/organ_name = input(user, "Which internal function do you want to change?") as null|anything in list("Heart", "Eyes", "Lungs", "Liver", "Kidneys")
if(!organ_name) return
if(!mob_species.alterable_internal_organs.len)
return
var/organ_name = input(user, "Which internal function do you want to change?") as null|anything in mob_species.alterable_internal_organs
if(!organ_name)
return
var/organ = null
switch(organ_name)
if("Heart")
organ = BP_HEART
if("Eyes")
organ = BP_EYES
if("Lungs")
organ = BP_LUNGS
if("Liver")
organ = BP_LIVER
if("Kidneys")
organ = BP_KIDNEYS
var/organ_type = mob_species.has_organ[organ_name]
var/obj/item/organ/internal/altered_organ = new organ_type(null)
if(!altered_organ)
return
var/new_state = input(user, "What state do you wish the organ to be in?") as null|anything in altered_organ.possible_modifications
qdel(altered_organ)
var/new_state = input(user, "What state do you wish the organ to be in?") as null|anything in list("Normal","Assisted","Mechanical")
if(!new_state) return
switch(new_state)
if("Normal")
pref.organ_data[organ] = null
pref.organ_data[organ_name] = null
if("Assisted")
pref.organ_data[organ] = "assisted"
pref.organ_data[organ_name] = "assisted"
if("Mechanical")
pref.organ_data[organ] = "mechanical"
pref.organ_data[organ_name] = "mechanical"
if("Removed")
pref.organ_data[organ_name] = "removed"
return TOPIC_REFRESH_UPDATE_PREVIEW
else if(href_list["reset_organs"])

View File

@@ -128,6 +128,7 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT
available_events = list(
// Severity level, event name, even type, base weight, role weights, one shot, min weight, max weight. Last two only used if set and non-zero
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Nothing", /datum/event/nothing, 120),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 25)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "APC Damage", /datum/event/apc_damage, 20, list(ASSIGNMENT_ENGINEER = 15)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Brand Intelligence", /datum/event/brand_intelligence, 15, list(ASSIGNMENT_JANITOR = 20), 1),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Camera Damage", /datum/event/camera_damage, 20, list(ASSIGNMENT_ENGINEER = 10)),

View File

@@ -79,6 +79,7 @@ var/list/event_last_fired = list()
if(active_with_role["Medical"] > 0)
possibleEvents[/datum/event/radiation_storm] = active_with_role["Medical"] * 10
possibleEvents[/datum/event/spontaneous_appendicitis] = active_with_role["Medical"] * 10
possibleEvents[/datum/event/prison_break] = active_with_role["Security"] * 50
if(active_with_role["Security"] > 0)

View File

@@ -0,0 +1,12 @@
/datum/event/spontaneous_appendicitis
no_fake = 1
/datum/event/spontaneous_appendicitis/start()
for(var/mob/living/carbon/human/H in shuffle(living_mob_list))
if((H.client && H.stat != DEAD) && (!player_is_antag(H.mind)))
var/obj/item/organ/internal/appendix/A = H.internal_organs_by_name[BP_APPENDIX]
if(!istype(A) || (A && A.inflamed))
continue
A.inflamed = 1
A.update_icon()
break

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

@@ -246,6 +246,8 @@
var/have_vision_cone = TRUE //Vision cone.
var/list/alterable_internal_organs = list(BP_HEART, BP_EYES, BP_LUNGS, BP_LIVER, BP_KIDNEYS, BP_STOMACH, BP_APPENDIX) //what internal organs can be changed in character setup
/datum/species/proc/get_eyes(var/mob/living/carbon/human/H)
return

View File

@@ -126,6 +126,8 @@
have_vision_cone = FALSE
alterable_internal_organs = list()
/datum/species/diona/handle_sprint_cost(var/mob/living/carbon/H, var/cost)
var/datum/dionastats/DS = H.get_dionastats()

View File

@@ -118,6 +118,8 @@
allowed_accents = list(ACCENT_CETI, ACCENT_GIBSON, ACCENT_SOL, ACCENT_COC, ACCENT_ERIDANI, ACCENT_ERIDANIDREG, ACCENT_ELYRA, ACCENT_KONYAN, ACCENT_JUPITER, ACCENT_MARTIAN, ACCENT_LUNA,
ACCENT_HIMEO, ACCENT_VENUS, ACCENT_VENUSJIN, ACCENT_PHONG, ACCENT_TTS, ACCENT_EUROPA, ACCENT_EARTH)
alterable_internal_organs = list()
// Special snowflake machine vars.
var/sprint_temperature_factor = 1.15
var/sprint_charge_factor = 0.65

View File

@@ -130,6 +130,8 @@
default_accent = ACCENT_TTS
allowed_accents = list(ACCENT_TTS, ACCENT_ZORA, ACCENT_KLAX, ACCENT_CTHUR)
alterable_internal_organs = list()
/datum/species/bug/before_equip(var/mob/living/carbon/human/H)
. = ..()
H.gender = NEUTER

View File

@@ -8,6 +8,7 @@
var/toxin_type = "undefined"
var/relative_size = 25 //Used for size calcs
var/on_mob_icon
var/list/possible_modifications = list("Normal","Assisted","Mechanical") //this is used in the character setup
min_broken_damage = 10 //Internal organs are frail, man.

View File

@@ -2,4 +2,49 @@
name = "appendix"
icon_state = "appendix"
parent_organ = BP_GROIN
organ_tag = BP_APPENDIX
organ_tag = BP_APPENDIX
possible_modifications = list ("Normal","Removed")
var/inflamed = 0
/obj/item/organ/internal/appendix/update_icon()
..()
if(inflamed)
icon_state = "[icon_state]inflamed"
name = "inflamed [name]"
/obj/item/organ/internal/appendix/process()
..()
if(inflamed && owner)
inflamed++
if(prob(5))
if(owner.can_feel_pain())
owner.custom_pain("You feel a stinging pain in your abdomen!")
owner.visible_message("<B>\The [owner]</B> winces slightly.")
var/obj/item/organ/external/O = owner.get_organ(parent_organ)
if(O)
O.add_pain(10)
if(inflamed > 200)
if(prob(3))
take_internal_damage(0.1)
if(owner.can_feel_pain())
owner.visible_message("<B>\The [owner]</B> winces painfully.")
var/obj/item/organ/external/O = owner.get_organ(parent_organ)
if(O)
O.add_pain(25)
owner.adjustToxLoss(1)
if(inflamed > 400)
if(prob(1))
germ_level += rand(2,6)
owner.vomit()
if(inflamed > 600)
if(prob(1))
if(owner.can_feel_pain())
owner.custom_pain("You feel a stinging pain in your abdomen!")
owner.Weaken(10)
var/obj/item/organ/external/E = owner.get_organ(parent_organ)
E.sever_artery()
E.germ_level = max(INFECTION_LEVEL_TWO, E.germ_level)
owner.adjustToxLoss(25)
removed()
qdel(src)