Adds Skeletons for background use

This commit is contained in:
Anewbe
2017-10-06 20:40:12 -05:00
parent ccd90031fa
commit 1f9a14ffd7
9 changed files with 95 additions and 14 deletions
@@ -112,5 +112,5 @@
mutations.Add(SKELETON)
status_flags |= DISFIGURED
update_body(0)
update_body(1)
return
@@ -0,0 +1,53 @@
/datum/species/skeleton
name = "Skeleton"
name_plural = "Skeletons"
icobase = 'icons/mob/human_races/r_skeleton.dmi'
primitive_form = "Monkey"
language = "Sol Common"
unarmed_types = list(/datum/unarmed_attack/claws/strong, /datum/unarmed_attack/bite/sharp) //Bones are pointy, fight me.
blurb = "Spooky Scary Skeletons!"
name_language = null // Use the first-name last-name generator rather than a language scrambler
min_age = 17
max_age = 110
health_hud_intensity = 1.5
flags = NO_SCAN | NO_PAIN | NO_SLIP | NO_POISON | NO_MINOR_CUT | NO_BLOOD | UNDEAD
spawn_flags = SPECIES_IS_RESTRICTED
appearance_flags = null
show_ssd = null
blood_volume = null
taste_sensitivity = TASTE_DULL
hunger_factor = 0
metabolic_rate = 0
virus_immune = 1
brute_mod = 1
burn_mod = 0
oxy_mod = 0
toxins_mod = 0
radiation_mod = 0
flash_mod = 0
chemOD_mod = 0
siemens_coefficient = 0
death_message = "falls over and stops moving!"
knockout_message = "falls over and stops moving!"
has_organ = list()
warning_low_pressure = 50
hazard_low_pressure = -1
cold_level_1 = 50
cold_level_2 = -1
cold_level_3 = -1
heat_level_1 = 2000
heat_level_2 = 3000
heat_level_3 = 4000
body_temperature = T20C
+27 -8
View File
@@ -695,9 +695,21 @@ default behaviour is:
if(A.has_gravity)
//this is the gay blood on floor shit -- Added back -- Skie
if (M.lying && (prob(M.getBruteLoss() / 6)))
var/turf/location = M.loc
if (istype(location, /turf/simulated))
location.add_blood(M)
var/bloodtrail = 1 //Checks if it's possible to even spill blood
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.species.flags & NO_BLOOD)
bloodtrail = 0
else
var/blood_volume = round((H.vessel.get_reagent_amount("blood")/H.species.blood_volume)*100)
if(blood_volume < BLOOD_VOLUME_SURVIVE)
bloodtrail = 0 //Most of it's gone already, just leave it be
else
H.vessel.remove_reagent("blood", 1)
if(bloodtrail)
var/turf/location = M.loc
if(istype(location, /turf/simulated))
location.add_blood(M)
//pull damage with injured people
if(prob(25))
M.adjustBruteLoss(1)
@@ -708,13 +720,20 @@ default behaviour is:
visible_message("<span class='danger'>\The [M]'s [M.isSynthetic() ? "state" : "wounds"] worsen terribly from being dragged!</span>")
var/turf/location = M.loc
if (istype(location, /turf/simulated))
location.add_blood(M)
var/bloodtrail = 1 //Checks if it's possible to even spill blood
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/blood_volume = round(H.vessel.get_reagent_amount("blood"))
if(blood_volume > 0)
H.vessel.remove_reagent("blood", 1)
if(H.species.flags & NO_BLOOD)
bloodtrail = 0
else
var/blood_volume = round((H.vessel.get_reagent_amount("blood")/H.species.blood_volume)*100)
if(blood_volume < BLOOD_VOLUME_SURVIVE)
bloodtrail = 0 //Most of it's gone already, just leave it be
else
H.vessel.remove_reagent("blood", 1)
if(bloodtrail)
if(istype(location, /turf/simulated))
location.add_blood(M)
step(pulling, get_dir(pulling.loc, T))
if(t)
+3
View File
@@ -17,6 +17,9 @@ var/const/CE_STABLE_THRESHOLD = 0.5
if(vessel)
return
if(species.flags & NO_BLOOD)
return
vessel = new/datum/reagents(species.blood_volume)
vessel.my_atom = src
+4 -4
View File
@@ -485,13 +485,13 @@ This function completely restores a damaged organ to perfect condition.
//moved this before the open_wound check so that having many small wounds for example doesn't somehow protect you from taking internal damage (because of the return)
//Possibly trigger an internal wound, too.
var/local_damage = brute_dam + burn_dam + damage
if((damage > 15) && (type != BURN) && (local_damage > 30) && prob(damage) && (robotic < ORGAN_ROBOT))
if((damage > 15) && (type != BURN) && (local_damage > 30) && prob(damage) && (robotic < ORGAN_ROBOT) && !(species.flags & NO_BLOOD))
var/datum/wound/internal_bleeding/I = new (min(damage - 15, 15))
wounds += I
owner.custom_pain("You feel something rip in your [name]!", 50)
//Burn damage can cause fluid loss due to blistering and cook-off
if((damage > 5 || damage + burn_dam >= 15) && type == BURN && (robotic < ORGAN_ROBOT))
if((damage > 5 || damage + burn_dam >= 15) && type == BURN && (robotic < ORGAN_ROBOT) && !(species.flags & NO_BLOOD))
var/fluid_loss = 0.75 * (damage/(owner.getMaxHealth() - config.health_threshold_dead)) * owner.species.blood_volume*(1 - BLOOD_VOLUME_SURVIVE/100)
owner.remove_blood(fluid_loss)
@@ -679,7 +679,7 @@ Note that amputating the affected organ does in fact remove the infection from t
//Updating wounds. Handles wound natural I had some free spachealing, internal bleedings and infections
/obj/item/organ/external/proc/update_wounds()
if((robotic >= ORGAN_ROBOT)) //Robotic limbs don't heal or get worse.
if((robotic >= ORGAN_ROBOT) || (species.flags & UNDEAD)) //Robotic and dead limbs don't heal or get worse.
for(var/datum/wound/W in wounds) //Repaired wounds disappear though
if(W.damage <= 0) //and they disappear right away
wounds -= W //TODO: robot wounds for robot limbs
@@ -754,7 +754,7 @@ Note that amputating the affected organ does in fact remove the infection from t
else
brute_dam += W.damage
if(!(robotic >= ORGAN_ROBOT) && W.bleeding() && (H && H.should_have_organ(O_HEART)))
if(!(robotic >= ORGAN_ROBOT) && W.bleeding() && (H && H.should_have_organ(O_HEART)) && !(H.species.flags & NO_BLOOD))
W.bleed_timer--
status |= ORGAN_BLEEDING