Shamelessly steals HarpyEagle's code

This commit is contained in:
Yoshax
2016-08-08 20:35:14 +01:00
parent adb74bfe78
commit daa49ced44
5 changed files with 24 additions and 7 deletions

View File

@@ -24,6 +24,11 @@
breath = get_breath_from_internal() //First, check for air from internals breath = get_breath_from_internal() //First, check for air from internals
if(!breath) if(!breath)
breath = get_breath_from_environment() //No breath from internals so let's try to get air from our location breath = get_breath_from_environment() //No breath from internals so let's try to get air from our location
if(!breath)
var/static/datum/gas_mixture/vacuum //avoid having to create a new gas mixture for each breath in space
if(!vacuum) vacuum = new
breath = vacuum //still nothing? must be vacuum
handle_breath(breath) handle_breath(breath)
handle_post_breath(breath) handle_post_breath(breath)

View File

@@ -928,9 +928,8 @@
/mob/living/carbon/human/proc/rupture_lung() /mob/living/carbon/human/proc/rupture_lung()
var/obj/item/organ/internal/lungs/L = internal_organs_by_name[O_LUNGS] var/obj/item/organ/internal/lungs/L = internal_organs_by_name[O_LUNGS]
if(L && !L.is_bruised()) if(L)
src.custom_pain("You feel a stabbing pain in your chest!", 1) L.rupture()
L.damage = L.min_bruised_damage
/* /*
/mob/living/carbon/human/verb/simulate() /mob/living/carbon/human/verb/simulate()

View File

@@ -332,6 +332,12 @@
adjustOxyLoss(-5) adjustOxyLoss(-5)
return return
if(should_have_organ(O_LUNGS))
var/obj/item/organ/internal/lungs/L = internal_organs_by_name[O_LUNGS]
if(breath.total_moles < BREATH_MOLES / 5 || breath.total_moles > BREATH_MOLES * 5)
if(!L.is_bruised() && prob(5))
rupture_lung()
if(!breath || (breath.total_moles == 0) || suiciding) if(!breath || (breath.total_moles == 0) || suiciding)
failed_last_breath = 1 failed_last_breath = 1
if(suiciding) if(suiciding)
@@ -343,9 +349,6 @@
else else
adjustOxyLoss(HUMAN_CRIT_MAX_OXYLOSS) adjustOxyLoss(HUMAN_CRIT_MAX_OXYLOSS)
if(prob(5))
rupture_lung()
oxygen_alert = max(oxygen_alert, 1) oxygen_alert = max(oxygen_alert, 1)
return 0 return 0

View File

@@ -23,4 +23,11 @@
owner.drip(10) owner.drip(10)
if(prob(4)) if(prob(4))
spawn owner.emote("me", 1, "gasps for air!") spawn owner.emote("me", 1, "gasps for air!")
owner.losebreath += 15 owner.losebreath += 15
/obj/item/organ/internal/lungs/proc/rupture()
var/obj/item/organ/external/parent = owner.get_organ(parent_organ)
if(istype(parent))
owner.custom_pain("You feel a stabbing pain in your [parent.name]!", 1)
parent.bruise()

View File

@@ -247,6 +247,9 @@ var/list/organ_cache = list()
if(parent && !silent) if(parent && !silent)
owner.custom_pain("Something inside your [parent.name] hurts a lot.", 1) owner.custom_pain("Something inside your [parent.name] hurts a lot.", 1)
/obj/item/organ/proc/bruise()
damage = max(damage, min_bruised_damage)
/obj/item/organ/proc/robotize() //Being used to make robutt hearts, etc /obj/item/organ/proc/robotize() //Being used to make robutt hearts, etc
robotic = ORGAN_ROBOT robotic = ORGAN_ROBOT
src.status &= ~ORGAN_BROKEN src.status &= ~ORGAN_BROKEN