IPC bleeding v2

This commit is contained in:
Aurorablade
2018-04-22 00:21:48 -04:00
parent 1aa28c5d71
commit 72a3c66cf5
9 changed files with 31 additions and 11 deletions
+6
View File
@@ -397,6 +397,11 @@
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/S = H.bodyparts_by_name[user.zone_sel.selecting]
if(H.bleed_rate > 1 && H.isSynthetic())
if(get_fuel() >= 1)
H.bleed_rate = 0
user.visible_message("<span class='alert'>\The [user] welds a leak on \the [M] with \the [src].</span>")
if(!S)
return
@@ -417,6 +422,7 @@
playsound(src.loc, usesound, 50, 1)
S.heal_damage(15,0,0,1)
user.visible_message("<span class='alert'>\The [user] patches some dents on \the [M]'s [S.name] with \the [src].</span>")
else if(S.open != 2)
to_chat(user, "<span class='warning'>Need more welding fuel!</span>")
return 1
@@ -324,16 +324,17 @@
else
msg += "[t_He] [t_is] quite chubby.\n"
if(blood_volume < BLOOD_VOLUME_SAFE)
if(!isSynthetic() && blood_volume < BLOOD_VOLUME_SAFE)
msg += "[t_He] [t_has] pale skin.\n"
if(bleedsuppress)
msg += "[t_He] [t_is] bandaged with something.\n"
else if(bleed_rate)
var/bleed_message = !isSynthetic() ? "bleeding" : "leaking"
if(reagents.has_reagent("heparin"))
msg += "<B>[t_He] [t_is] bleeding uncontrollably!</B>\n"
msg += "<B>[t_He] [t_is] [bleed_message] uncontrollably!</B>\n"
else
msg += "<B>[t_He] [t_is] bleeding!</B>\n"
msg += "<B>[t_He] [t_is] [bleed_message]!</B>\n"
if(reagents.has_reagent("teslium"))
msg += "[t_He] is emitting a gentle blue glow!\n"
+1 -1
View File
@@ -248,7 +248,7 @@
if(!L || L && (L.status & ORGAN_DEAD))
if(health >= config.health_threshold_crit)
adjustOxyLoss(HUMAN_MAX_OXYLOSS + 1)
else
else if(!(NOCRITDAMAGE in species.species_traits))
adjustOxyLoss(HUMAN_CRIT_MAX_OXYLOSS)
failed_last_breath = TRUE
@@ -304,6 +304,10 @@
H.setOxyLoss(0)
H.SetLoseBreath(0)
var/takes_crit_damage = (!(NOCRITDAMAGE in species_traits))
if((H.health <= config.health_threshold_crit) && takes_crit_damage)
H.adjustBruteLoss(1)
/datum/species/proc/handle_dna(var/mob/living/carbon/C, var/remove) //Handles DNA mutations, as that doesn't work at init. Make sure you call genemutcheck on any blocks changed here
return
@@ -935,20 +935,21 @@
remains_type = /obj/effect/decal/remains/robot
eyes = "blank_eyes"
brute_mod = 2.5 // 100% * 2.5 * 0.6 (robolimbs) ~= 150%
burn_mod = 2.5 // So they take 50% extra damage from brute/burn overall.
brute_mod = 2.28 // 100% * 2.28 * 0.6 (robolimbs) ~= 150%
burn_mod = 2.28 // So they take 50% extra damage from brute/burn overall.
tox_mod = 0
clone_mod = 0
oxy_mod = 0
death_message = "gives one shrill beep before falling limp, their monitor flashing blue before completely shutting off..."
species_traits = list(IS_WHITELISTED, NO_BREATHE, NO_SCAN, NO_BLOOD, NO_PAIN, NO_DNA, RADIMMUNE, VIRUSIMMUNE, NOTRANSSTING)
species_traits = list(IS_WHITELISTED, NO_BREATHE, NO_SCAN, NO_INTORGANS, NO_PAIN, NO_DNA, RADIMMUNE, VIRUSIMMUNE, NOTRANSSTING)
clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS
bodyflags = HAS_SKIN_COLOR | HAS_HEAD_MARKINGS | HAS_HEAD_ACCESSORY | ALL_RPARTS
dietflags = 0 //IPCs can't eat, so no diet
taste_sensitivity = TASTE_SENSITIVITY_NO_TASTE
blood_color = "#030303"
blood_color = "#3C3C3C"
exotic_blood = "oil"
blood_damage_type = BURN
//Default styles for created mobs.
@@ -194,6 +194,11 @@
reagent_state = LIQUID
color = "#3C3C3C"
taste_message = "motor oil"
process_flags = ORGANIC | SYNTHETIC
/datum/reagent/oil/reaction_turf(turf/T, volume)
if(volume >= 3 && !isspaceturf(T) && !locate(/obj/effect/decal/cleanable/blood/oil) in T)
new /obj/effect/decal/cleanable/blood/oil(T)
/datum/reagent/iodine
name = "Iodine"
+2 -2
View File
@@ -1,4 +1,4 @@
/****************************************************
F/****************************************************
BLOOD SYSTEM
****************************************************/
@@ -64,7 +64,7 @@
var/obj/item/organ/external/BP = X
var/brutedamage = BP.brute_dam
if(BP.status & ORGAN_ROBOT)
if((BP.status & ORGAN_ROBOT) && !isSynthetic())
continue
//We want an accurate reading of .len
+1 -1
View File
@@ -83,7 +83,7 @@
if(!breath || (breath.total_moles() == 0))
if(H.health >= config.health_threshold_crit)
H.adjustOxyLoss(HUMAN_MAX_OXYLOSS)
else
else if(!(NOCRITDAMAGE in H.species.species_traits))
H.adjustOxyLoss(HUMAN_CRIT_MAX_OXYLOSS)
H.failed_last_breath = TRUE
+3
View File
@@ -205,6 +205,9 @@
if(!affected)
return -1
if(target.bleed_rate > 1)//heal bleeding if it exists while we are here.
target.bleed_rate = 0
if(implement_type in implements_heal_burn)
current_type = "burn"
var/obj/item/stack/cable_coil/C = tool