mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-26 10:02:28 +00:00
@@ -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"])
|
||||
|
||||
@@ -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)),
|
||||
|
||||
@@ -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)
|
||||
|
||||
12
code/modules/events/spontaneous_appendicitis.dm
Normal file
12
code/modules/events/spontaneous_appendicitis.dm
Normal 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
|
||||
@@ -110,6 +110,8 @@
|
||||
I.mechassist()
|
||||
if ("mechanical")
|
||||
I.robotize()
|
||||
if ("removed")
|
||||
qdel(I)
|
||||
|
||||
if (apply_markings)
|
||||
for(var/N in organs_by_name)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user