Fixes #5451 by stealing JimTheCactus' and VampyrBytes' work - thanks dudes.

This commit is contained in:
Zuhayr
2014-09-25 20:07:11 +09:30
parent cddbce688d
commit c232b4e921
3 changed files with 26 additions and 34 deletions

View File

@@ -5,25 +5,25 @@
var/list/datum/autopsy_data/autopsy_data = list()
var/list/trace_chemicals = list() // traces of chemicals in the organ,
// links chemical IDs to number of ticks for which they'll stay in the blood
var/germ_level = 0 // INTERNAL germs inside the organ, this is BAD if it's greater than INFECTION_LEVEL_ONE
proc/process()
return 0
proc/receive_chem(chemical as obj)
return 0
/datum/organ/proc/get_icon()
/datum/organ/proc/get_icon(var/icon/race_icon, var/icon/deform_icon)
return icon('icons/mob/human.dmi',"blank")
//Germs
/datum/organ/proc/handle_antibiotics()
var/antibiotics = owner.reagents.get_reagent_amount("spaceacillin")
if (!germ_level || antibiotics < 5)
return
if (germ_level < INFECTION_LEVEL_ONE)
germ_level = 0 //cure instantly
else if (germ_level < INFECTION_LEVEL_TWO)
@@ -67,14 +67,14 @@
bad_external_organs.Cut()
for(var/datum/organ/external/Ex in organs)
bad_external_organs += Ex
//processing internal organs is pretty cheap, do that first.
for(var/datum/organ/internal/I in internal_organs)
I.process()
if(!force_process && !bad_external_organs.len)
return
for(var/datum/organ/external/E in bad_external_organs)
if(!E)
continue
@@ -91,7 +91,7 @@
var/datum/organ/internal/I = pick(E.internal_organs)
custom_pain("You feel broken bones moving in your [E.display_name]!", 1)
I.take_damage(rand(3,5))
//Moving makes open wounds get infected much faster
if (E.wounds.len)
for(var/datum/wound/W in E.wounds)
@@ -101,14 +101,14 @@
if(E.name in list("l_leg","l_foot","r_leg","r_foot") && !lying)
if (!E.is_usable() || E.is_malfunctioning() || (E.is_broken() && !(E.status & ORGAN_SPLINTED)))
leg_tally-- // let it fail even if just foot&leg
// standing is poor
if(leg_tally <= 0 && !paralysis && !(lying || resting) && prob(5))
if(species && species.flags & NO_PAIN)
emote("scream")
emote("collapse")
paralysis = 10
//Check arms and legs for existence
can_stand = 2 //can stand on both legs
var/datum/organ/external/E = organs_by_name["l_foot"]

View File

@@ -793,14 +793,14 @@ Note that amputating the affected organ does in fact remove the infection from t
return 1
return 0
/datum/organ/external/get_icon(gender="")
/datum/organ/external/get_icon(var/icon/race_icon, var/icon/deform_icon,gender="")
if (status & ORGAN_ROBOT && !(owner.species && owner.species.flags & IS_SYNTHETIC))
return new /icon('icons/mob/human_races/robotic.dmi', "[icon_name][gender ? "_[gender]" : ""]")
if (status & ORGAN_MUTATED)
return new /icon(owner.deform_icon, "[icon_name][gender ? "_[gender]" : ""]")
return new /icon(deform_icon, "[icon_name][gender ? "_[gender]" : ""]")
return new /icon(owner.race_icon, "[icon_name][gender ? "_[gender]" : ""]")
return new /icon(race_icon, "[icon_name][gender ? "_[gender]" : ""]")
/datum/organ/external/proc/is_usable()
@@ -959,15 +959,15 @@ Note that amputating the affected organ does in fact remove the infection from t
var/disfigured = 0
vital = 1
/datum/organ/external/head/get_icon()
/datum/organ/external/head/get_icon(var/icon/race_icon, var/icon/deform_icon)
if (!owner)
return ..()
var/g = "m"
if(owner.gender == FEMALE) g = "f"
if (status & ORGAN_MUTATED)
. = new /icon(owner.deform_icon, "[icon_name]_[g]")
. = new /icon(deform_icon, "[icon_name]_[g]")
else
. = new /icon(owner.race_icon, "[icon_name]_[g]")
. = new /icon(race_icon, "[icon_name]_[g]")
/datum/organ/external/head/take_damage(brute, burn, sharp, edge, used_weapon = null, list/forbidden_limbs = list())
..(brute, burn, sharp, edge, used_weapon, forbidden_limbs)