Replaces "specflags" with "species_traits" (#21851)

* Replaces "specflags" with "species_traits"

* this will do
This commit is contained in:
Joan Lung
2016-12-01 21:16:33 +13:00
committed by oranges
parent d3fe2d6974
commit a5ae025549
41 changed files with 167 additions and 167 deletions
-27
View File
@@ -49,33 +49,6 @@
#define PASSMOB 16
#define LETPASSTHROW 32
//flags for species
#define MUTCOLORS 1
#define HAIR 2
#define FACEHAIR 3
#define EYECOLOR 4
#define LIPS 5
#define RESISTHOT 6
#define RESISTCOLD 7
#define RESISTPRESSURE 8
#define RADIMMUNE 9
#define NOBREATH 10
#define NOGUNS 11
#define NOBLOOD 12
#define NOFIRE 13
#define VIRUSIMMUNE 14
#define PIERCEIMMUNE 15
#define NOTRANSSTING 16
#define MUTCOLORS_PARTSONLY 17 //Used if we want the mutant colour to be only used by mutant bodyparts. Don't combine this with MUTCOLORS, or it will be useless.
#define NODISMEMBER 18
#define NOHUNGER 19
#define NOCRITDAMAGE 20
#define NOZOMBIE 21
#define EASYDISMEMBER 22
#define EASYLIMBATTACHMENT 23
#define TOXINLOVER 24
#define DIGITIGRADE 25 //Uses weird leg sprites. Optional for Lizards, required for ashwalkers. Don't give it to other races unless you make sprites for this (see human_parts_greyscale.dmi)
//Movement Types
#define IMMOBILE 0
+27
View File
@@ -111,3 +111,30 @@
#define BLOOD_VOLUME_OKAY 336
#define BLOOD_VOLUME_BAD 224
#define BLOOD_VOLUME_SURVIVE 122
//species traits for mutantraces
#define MUTCOLORS 1
#define HAIR 2
#define FACEHAIR 3
#define EYECOLOR 4
#define LIPS 5
#define RESISTHOT 6
#define RESISTCOLD 7
#define RESISTPRESSURE 8
#define RADIMMUNE 9
#define NOBREATH 10
#define NOGUNS 11
#define NOBLOOD 12
#define NOFIRE 13
#define VIRUSIMMUNE 14
#define PIERCEIMMUNE 15
#define NOTRANSSTING 16
#define MUTCOLORS_PARTSONLY 17 //Used if we want the mutant colour to be only used by mutant bodyparts. Don't combine this with MUTCOLORS, or it will be useless.
#define NODISMEMBER 18
#define NOHUNGER 19
#define NOCRITDAMAGE 20
#define NOZOMBIE 21
#define EASYDISMEMBER 22
#define EASYLIMBATTACHMENT 23
#define TOXINLOVER 24
#define DIGITIGRADE 25 //Uses weird leg sprites. Optional for Lizards, required for ashwalkers. Don't give it to other races unless you make sprites for this (see human_parts_greyscale.dmi)
+1 -1
View File
@@ -147,6 +147,6 @@
/mob/living/carbon/human/CanContractDisease(datum/disease/D)
if(dna && (VIRUSIMMUNE in dna.species.specflags))
if(dna && (VIRUSIMMUNE in dna.species.species_traits))
return 0
return ..()
+1 -1
View File
@@ -18,7 +18,7 @@
..()
if(!affected_mob.dna)
cure()
if(NOTRANSSTING in affected_mob.dna.species.specflags) //Only species that can be spread by transformation sting can be spread by the retrovirus
if(NOTRANSSTING in affected_mob.dna.species.species_traits) //Only species that can be spread by transformation sting can be spread by the retrovirus
cure()
if(!strain_data["dna"])
+1 -1
View File
@@ -148,7 +148,7 @@
if(ishuman(L))
var/mob/living/carbon/human/H = L
if(H.dna && H.dna.species)
if(!(RADIMMUNE in H.dna.species.specflags))
if(!(RADIMMUNE in H.dna.species.species_traits))
if(prob(max(0,100-resist)))
H.randmuti()
if(prob(50))
@@ -74,7 +74,7 @@
selected_dna = changeling.select_dna("Select the target DNA: ", "Target DNA")
if(!selected_dna)
return
if(NOTRANSSTING in selected_dna.dna.species.specflags)
if(NOTRANSSTING in selected_dna.dna.species.species_traits)
user << "<span class = 'notice'>That DNA is not compatible with changeling retrovirus!"
return
..()
@@ -47,19 +47,19 @@
photo.Blend("#[H.dna.features["mcolor"]]", ICON_MULTIPLY)
var/icon/eyes_s
if(EYECOLOR in H.dna.species.specflags)
if(EYECOLOR in H.dna.species.species_traits)
eyes_s = icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = "[H.dna.species.eyes]_s")
eyes_s.Blend("#[H.eye_color]", ICON_MULTIPLY)
var/datum/sprite_accessory/S
S = hair_styles_list[H.hair_style]
if(S && (HAIR in H.dna.species.specflags))
if(S && (HAIR in H.dna.species.species_traits))
var/icon/hair_s = icon("icon" = S.icon, "icon_state" = "[S.icon_state]_s")
hair_s.Blend("#[H.hair_color]", ICON_MULTIPLY)
eyes_s.Blend(hair_s, ICON_OVERLAY)
S = facial_hair_styles_list[H.facial_hair_style]
if(S && (FACEHAIR in H.dna.species.specflags))
if(S && (FACEHAIR in H.dna.species.species_traits))
var/icon/facial_s = icon("icon" = S.icon, "icon_state" = "[S.icon_state]_s")
facial_s.Blend("#[H.facial_hair_color]", ICON_MULTIPLY)
eyes_s.Blend(facial_s, ICON_OVERLAY)
@@ -71,7 +71,7 @@
return
if(ishuman(user))
var/mob/living/carbon/human/H = user
if(H.dna.check_mutation(HULK) || (NOGUNS in H.dna.species.specflags))
if(H.dna.check_mutation(HULK) || (NOGUNS in H.dna.species.species_traits))
user << "<span class='warning'>Your fingers can't press the button!</span>"
return
@@ -320,7 +320,7 @@
var/hit_hand = ((user.active_hand_index % 2 == 0) ? "r_" : "l_") + "arm"
if(ishuman(user))
var/mob/living/carbon/human/H = user
if(!H.gloves && !(PIERCEIMMUNE in H.dna.species.specflags)) // golems, etc
if(!H.gloves && !(PIERCEIMMUNE in H.dna.species.species_traits)) // golems, etc
H << "<span class='warning'>[src] cuts into your hand!</span>"
H.apply_damage(force*0.5, BRUTE, hit_hand)
else if(ismonkey(user))
@@ -350,7 +350,7 @@
playsound(loc, 'sound/effects/glass_step.ogg', 50, 1)
if(ishuman(AM))
var/mob/living/carbon/human/H = AM
if(PIERCEIMMUNE in H.dna.species.specflags)
if(PIERCEIMMUNE in H.dna.species.species_traits)
return
var/picked_def_zone = pick("l_leg", "r_leg")
var/obj/item/bodypart/O = H.get_bodypart(picked_def_zone)
+2 -2
View File
@@ -124,7 +124,7 @@
var/mob/living/carbon/human/H = M
var/location = user.zone_selected
if(location == "mouth")
if(!(FACEHAIR in H.dna.species.specflags))
if(!(FACEHAIR in H.dna.species.species_traits))
user << "<span class='warning'>There is no facial hair to shave!</span>"
return
if(!get_location_accessible(H, location))
@@ -152,7 +152,7 @@
shave(H, location)
else if(location == "head")
if(!(HAIR in H.dna.species.specflags))
if(!(HAIR in H.dna.species.species_traits))
user << "<span class='warning'>There is no hair to shave!</span>"
return
if(!get_location_accessible(H, location))
+2 -2
View File
@@ -176,7 +176,7 @@
/obj/item/weapon/dice/d4/Crossed(mob/living/carbon/human/H)
if(istype(H) && !H.shoes)
if(PIERCEIMMUNE in H.dna.species.specflags)
if(PIERCEIMMUNE in H.dna.species.species_traits)
return 0
H << "<span class='userdanger'>You step on the D4!</span>"
H.apply_damage(4,BRUTE,(pick("l_leg", "r_leg")))
@@ -185,7 +185,7 @@
/obj/item/weapon/dice/update_icon()
cut_overlays()
add_overlay("[src.icon_state][src.result]")
/obj/item/weapon/dice/microwave_act(obj/machinery/microwave/M)
if(can_be_rigged)
rigged = result
+1 -1
View File
@@ -41,7 +41,7 @@
I.rad_act(amount)
/mob/living/carbon/rad_act(amount, silent = 0)
if(dna && (RADIMMUNE in dna.species.specflags))
if(dna && (RADIMMUNE in dna.species.species_traits))
silent = TRUE
..()
+1 -1
View File
@@ -151,7 +151,7 @@
H.skin_tone = new_s_tone
H.dna.update_ui_block(DNA_SKIN_TONE_BLOCK)
if(MUTCOLORS in H.dna.species.specflags)
if(MUTCOLORS in H.dna.species.species_traits)
var/new_mutantcolor = input(user, "Choose your skin color:", "Race change") as color|null
if(new_mutantcolor)
var/temp_hsv = RGBtoHSV(new_mutantcolor)
@@ -120,7 +120,7 @@
var/swapdamage = FALSE
if(L.has_dna()) //if has_dna() is true they're at least carbon
var/mob/living/carbon/C = L
if(TOXINLOVER in C.dna.species.specflags)
if(TOXINLOVER in C.dna.species.species_traits)
swapdamage = TRUE
if(isanimal(L))
var/mob/living/simple_animal/A = L
+1 -1
View File
@@ -23,7 +23,7 @@ var/highlander = FALSE
/mob/living/carbon/human/proc/make_scottish()
ticker.mode.traitors += mind
mind.special_role = "highlander"
dna.species.specflags |= NOGUNS //nice try jackass
dna.species.species_traits |= NOGUNS //nice try jackass
var/datum/objective/steal/steal_objective = new
steal_objective.owner = mind
+1 -1
View File
@@ -43,7 +43,7 @@
var/obj/item/bodypart/affecting = null
if(ishuman(target))
var/mob/living/carbon/human/H = target
if(PIERCEIMMUNE in H.dna.species.specflags)
if(PIERCEIMMUNE in H.dna.species.species_traits)
playsound(src.loc, 'sound/effects/snap.ogg', 50, 1)
armed = 0
update_icon()
+5 -5
View File
@@ -207,7 +207,7 @@ var/list/preferences_datums = list()
dat += "</td>"
if(HAIR in pref_species.specflags)
if(HAIR in pref_species.species_traits)
dat += "<td valign='top' width='21%'>"
@@ -228,7 +228,7 @@ var/list/preferences_datums = list()
dat += "</td>"
if(EYECOLOR in pref_species.specflags)
if(EYECOLOR in pref_species.species_traits)
dat += "<td valign='top' width='21%'>"
@@ -240,7 +240,7 @@ var/list/preferences_datums = list()
if(config.mutant_races) //We don't allow mutant bodyparts for humans either unless this is true.
if((MUTCOLORS in pref_species.specflags) || (MUTCOLORS_PARTSONLY in pref_species.specflags))
if((MUTCOLORS in pref_species.species_traits) || (MUTCOLORS_PARTSONLY in pref_species.species_traits))
dat += "<td valign='top' width='14%'>"
@@ -934,7 +934,7 @@ var/list/preferences_datums = list()
pref_species = new newtype()
//Now that we changed our species, we must verify that the mutant colour is still allowed.
var/temp_hsv = RGBtoHSV(features["mcolor"])
if(features["mcolor"] == "#000" || (!(MUTCOLORS_PARTSONLY in pref_species.specflags) && ReadHSV(temp_hsv)[3] < ReadHSV("#7F7F7F")[3]))
if(features["mcolor"] == "#000" || (!(MUTCOLORS_PARTSONLY in pref_species.species_traits) && ReadHSV(temp_hsv)[3] < ReadHSV("#7F7F7F")[3]))
features["mcolor"] = pref_species.default_color
if("mutant_color")
var/new_mutantcolor = input(user, "Choose your character's alien/mutant color:", "Character Preference") as color|null
@@ -942,7 +942,7 @@ var/list/preferences_datums = list()
var/temp_hsv = RGBtoHSV(new_mutantcolor)
if(new_mutantcolor == "#000000")
features["mcolor"] = pref_species.default_color
else if((MUTCOLORS_PARTSONLY in pref_species.specflags) || ReadHSV(temp_hsv)[3] >= ReadHSV("#7F7F7F")[3]) // mutantcolors must be bright, but only if they affect the skin
else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#7F7F7F")[3]) // mutantcolors must be bright, but only if they affect the skin
features["mcolor"] = sanitize_hexcolor(new_mutantcolor)
else
user << "<span class='danger'>Invalid color. Your color is not bright enough.</span>"
+1 -1
View File
@@ -513,7 +513,7 @@ BLIND // can't see anything
if(mutantrace_variation && ishuman(user))
var/mob/living/carbon/human/H = user
if(DIGITIGRADE in H.dna.species.specflags)
if(DIGITIGRADE in H.dna.species.species_traits)
adjusted = DIGITIGRADE_STYLE
H.update_inv_w_uniform()
+1 -1
View File
@@ -143,7 +143,7 @@
if(!H.shoes && !H.lying) //ouch, my feet.
var/picked_def_zone = pick("l_leg", "r_leg")
var/obj/item/bodypart/O = H.get_bodypart(picked_def_zone)
if(!istype(O) || (PIERCEIMMUNE in H.dna.species.specflags))
if(!istype(O) || (PIERCEIMMUNE in H.dna.species.species_traits))
return
H.apply_damage(rand(3, 6), BRUTE, picked_def_zone)
H.Weaken(2)
+4 -4
View File
@@ -90,10 +90,10 @@ var/list/image/ghost_images_simple = list() //this is a list of all ghost images
mind = body.mind //we don't transfer the mind but we keep a reference to it.
if(ishuman(body))
var/mob/living/carbon/human/body_human = body
if(HAIR in body_human.dna.species.specflags)
if(HAIR in body_human.dna.species.species_traits)
hair_style = body_human.hair_style
hair_color = brighten_color(body_human.hair_color)
if(FACEHAIR in body_human.dna.species.specflags)
if(FACEHAIR in body_human.dna.species.species_traits)
facial_hair_style = body_human.facial_hair_style
facial_hair_color = brighten_color(body_human.facial_hair_color)
@@ -662,10 +662,10 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
if(client.prefs.be_random_body)
client.prefs.random_character(gender)
if(HAIR in client.prefs.pref_species.specflags)
if(HAIR in client.prefs.pref_species.species_traits)
hair_style = client.prefs.hair_style
hair_color = brighten_color(client.prefs.hair_color)
if(FACEHAIR in client.prefs.pref_species.specflags)
if(FACEHAIR in client.prefs.pref_species.species_traits)
facial_hair_style = client.prefs.facial_hair_style
facial_hair_color = brighten_color(client.prefs.facial_hair_color)
+4 -4
View File
@@ -22,7 +22,7 @@
// Takes care blood loss and regeneration
/mob/living/carbon/human/handle_blood()
if(NOBLOOD in dna.species.specflags)
if(NOBLOOD in dna.species.species_traits)
bleed_rate = 0
return
@@ -86,7 +86,7 @@
add_splatter_floor(src.loc, 1)
/mob/living/carbon/human/bleed(amt)
if(!(NOBLOOD in dna.species.specflags))
if(!(NOBLOOD in dna.species.species_traits))
..()
@@ -188,7 +188,7 @@
/mob/living/carbon/human/get_blood_id()
if(dna.species.exotic_blood)
return dna.species.exotic_blood
else if((NOBLOOD in dna.species.specflags) || (disabilities & NOCLONE))
else if((NOBLOOD in dna.species.species_traits) || (disabilities & NOCLONE))
return
return "blood"
@@ -252,7 +252,7 @@
B.blood_DNA |= temp_blood_DNA
/mob/living/carbon/human/add_splatter_floor(turf/T, small_drip)
if(!(NOBLOOD in dna.species.specflags))
if(!(NOBLOOD in dna.species.species_traits))
..()
/mob/living/carbon/alien/add_splatter_floor(turf/T, small_drip)
+1 -1
View File
@@ -449,7 +449,7 @@
return ..()
/mob/living/carbon/proc/vomit(var/lost_nutrition = 10, var/blood = 0, var/stun = 1, var/distance = 0, var/message = 1, var/toxic = 0)
if(dna && dna.species && NOHUNGER in dna.species.specflags)
if(dna && dna.species && NOHUNGER in dna.species.species_traits)
return 1
if(nutrition < 100 && !blood)
@@ -55,7 +55,7 @@ var/const/SLIDE_ICE = 8
/mob/living/carbon/Move(NewLoc, direct)
. = ..()
if(.)
if(dna && dna.species && (NOHUNGER in dna.species.specflags))
if(dna && dna.species && (NOHUNGER in dna.species.species_traits))
nutrition = NUTRITION_LEVEL_FED - 1 //just less than feeling vigorous
else if(nutrition && stat != DEAD)
nutrition -= HUNGER_FACTOR/10
@@ -73,7 +73,7 @@
/mob/living/carbon/adjustToxLoss(amount, updating_health=1)
if(has_dna() && TOXINLOVER in dna.species.specflags) //damage becomes healing and healing becomes damage
if(has_dna() && TOXINLOVER in dna.species.species_traits) //damage becomes healing and healing becomes damage
amount = -amount
if(amount > 0)
blood_volume -= 5*amount
@@ -38,14 +38,14 @@
..()
/mob/living/carbon/human/create_internal_organs()
if(!(NOHUNGER in dna.species.specflags))
if(!(NOHUNGER in dna.species.species_traits))
internal_organs += new /obj/item/organ/appendix
if(!(NOBREATH in dna.species.specflags))
if(!(NOBREATH in dna.species.species_traits))
if(dna.species.mutantlungs)
internal_organs += new dna.species.mutantlungs()
else
internal_organs += new /obj/item/organ/lungs()
if(!(NOBLOOD in dna.species.specflags))
if(!(NOBLOOD in dna.species.species_traits))
internal_organs += new /obj/item/organ/heart
internal_organs += new /obj/item/organ/brain
..()
@@ -497,7 +497,7 @@
. = 1 // Default to returning true.
if(user && !target_zone)
target_zone = user.zone_selected
if(dna && (PIERCEIMMUNE in dna.species.specflags))
if(dna && (PIERCEIMMUNE in dna.species.species_traits))
. = 0
// If targeting the head, see if the head item is thin enough.
// If targeting anything else, see if the wear suit is thin enough.
@@ -653,7 +653,7 @@
src << "<span class='warning'>You fail to perform CPR on [C]!</span>"
return 0
var/they_breathe = (!(NOBREATH in C.dna.species.specflags))
var/they_breathe = (!(NOBREATH in C.dna.species.species_traits))
var/they_lung = C.getorganslot("lungs")
if(C.health > HEALTH_THRESHOLD_CRIT)
@@ -831,11 +831,11 @@
if(admin_revive)
regenerate_limbs()
if(!(NOBREATH in dna.species.specflags) && !getorganslot("lungs"))
if(!(NOBREATH in dna.species.species_traits) && !getorganslot("lungs"))
var/obj/item/organ/lungs/L = new()
L.Insert(src)
if(!(NOBLOOD in dna.species.specflags) && !getorganslot("heart"))
if(!(NOBLOOD in dna.species.species_traits) && !getorganslot("heart"))
var/obj/item/organ/heart/H = new()
H.Insert(src)
@@ -903,7 +903,7 @@
..()
/mob/living/carbon/human/vomit(lost_nutrition = 10, blood = 0, stun = 1, distance = 0, message = 1, toxic = 0)
if(blood && (NOBLOOD in dna.species.specflags))
if(blood && (NOBLOOD in dna.species.species_traits))
if(message)
visible_message("<span class='warning'>[src] dry heaves!</span>", \
"<span class='userdanger'>You try to throw up, but there's nothing in your stomach!</span>")
@@ -146,7 +146,7 @@
else if(I)
if(I.throw_speed >= EMBED_THROWSPEED_THRESHOLD)
if(can_embed(I))
if(prob(I.embed_chance) && !(dna && (PIERCEIMMUNE in dna.species.specflags)))
if(prob(I.embed_chance) && !(dna && (PIERCEIMMUNE in dna.species.species_traits)))
throw_alert("embeddedobject", /obj/screen/alert/embeddedobject)
var/obj/item/bodypart/L = pick(bodyparts)
L.embedded_objects |= I
@@ -141,7 +141,7 @@
if(src.dna.check_mutation(HULK))
src << "<span class='warning'>Your meaty finger is much too large for the trigger guard!</span>"
return 0
if(NOGUNS in src.dna.species.specflags)
if(NOGUNS in src.dna.species.species_traits)
src << "<span class='warning'>Your fingers don't fit in the trigger guard!</span>"
return 0
+5 -5
View File
@@ -100,7 +100,7 @@
if(!L)
if(health >= HEALTH_THRESHOLD_CRIT)
adjustOxyLoss(HUMAN_MAX_OXYLOSS + 1)
else if(!(NOCRITDAMAGE in dna.species.specflags))
else if(!(NOCRITDAMAGE in dna.species.species_traits))
adjustOxyLoss(HUMAN_CRIT_MAX_OXYLOSS)
failed_last_breath = 1
@@ -307,7 +307,7 @@
if(dna.check_mutation(COLDRES))
return 1 //Fully protected from the cold.
if(dna && (RESISTCOLD in dna.species.specflags))
if(dna && (RESISTCOLD in dna.species.species_traits))
return 1
temperature = max(temperature, 2.7) //There is an occasional bug where the temperature is miscalculated in ares with a small amount of gas on them, so this is necessary to ensure that that bug does not affect this calculation. Space's temperature is 2.7K and most suits that are intended to protect against any cold, protect down to 2.0K.
@@ -367,7 +367,7 @@
if(head)
if(head.flags & BLOCK_GAS_SMOKE_EFFECT)
. = 1
if(NOBREATH in dna.species.specflags)
if(NOBREATH in dna.species.species_traits)
. = 1
return .
@@ -391,8 +391,8 @@
/mob/living/carbon/human/proc/handle_heart()
CHECK_DNA_AND_SPECIES(src)
var/needs_heart = (!(NOBLOOD in dna.species.specflags))
var/we_breath = (!(NOBREATH in dna.species.specflags))
var/needs_heart = (!(NOBLOOD in dna.species.species_traits))
var/we_breath = (!(NOBREATH in dna.species.species_traits))
if(heart_attack)
if(!needs_heart)
+1 -1
View File
@@ -51,7 +51,7 @@
CHECK_DNA_AND_SPECIES(src)
// how do species that don't breathe talk? magic, that's what.
if(!(NOBREATH in dna.species.specflags) && !getorganslot("lungs"))
if(!(NOBREATH in dna.species.species_traits) && !getorganslot("lungs"))
return 0
if(mind)
return !mind.miming
+36 -36
View File
@@ -51,7 +51,7 @@
var/darksight = 2
// species flags. these can be found in flags.dm
var/list/specflags = list()
var/list/species_traits = list()
var/attack_verb = "punch" // punch-specific attack verb
var/sound/attack_sound = 'sound/weapons/punch1.ogg'
@@ -112,10 +112,10 @@
var/obj/item/organ/lungs/lungs = C.getorganslot("lungs")
var/obj/item/organ/appendix/appendix = C.getorganslot("appendix")
if((NOBLOOD in specflags) && heart)
if((NOBLOOD in species_traits) && heart)
heart.Remove(C)
qdel(heart)
else if((!(NOBLOOD in specflags)) && (!heart))
else if((!(NOBLOOD in species_traits)) && (!heart))
heart = new()
heart.Insert(C)
@@ -123,17 +123,17 @@
lungs.Remove(C)
qdel(lungs)
lungs = null
if((!(NOBREATH in specflags)) && !lungs)
if((!(NOBREATH in species_traits)) && !lungs)
if(mutantlungs)
lungs = new mutantlungs()
else
lungs = new()
lungs.Insert(C)
if((NOHUNGER in specflags) && appendix)
if((NOHUNGER in species_traits) && appendix)
appendix.Remove(C)
qdel(appendix)
else if((!(NOHUNGER in specflags)) && (!appendix))
else if((!(NOHUNGER in species_traits)) && (!appendix))
appendix = new()
appendix.Insert(C)
@@ -144,14 +144,14 @@
if(exotic_bloodtype && C.dna.blood_type != exotic_bloodtype)
C.dna.blood_type = exotic_bloodtype
if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Digitigrade Legs")
specflags += DIGITIGRADE
if(DIGITIGRADE in specflags)
species_traits += DIGITIGRADE
if(DIGITIGRADE in species_traits)
C.Digitigrade_Leg_Swap(FALSE)
/datum/species/proc/on_species_loss(mob/living/carbon/C)
if(C.dna.species.exotic_bloodtype)
C.dna.blood_type = random_blood_type()
if(DIGITIGRADE in specflags)
if(DIGITIGRADE in species_traits)
C.Digitigrade_Leg_Swap(TRUE)
/datum/species/proc/handle_hair(mob/living/carbon/human/H, forced_colour)
@@ -177,7 +177,7 @@
if(M.flags_inv & HIDEFACIALHAIR)
facialhair_hidden = 1
if(H.facial_hair_style && (FACEHAIR in specflags) && !facialhair_hidden)
if(H.facial_hair_style && (FACEHAIR in species_traits) && !facialhair_hidden)
S = facial_hair_styles_list[H.facial_hair_style]
if(S)
var/image/img_facial_s = image("icon" = S.icon, "icon_state" = "[S.icon_state]_s", "layer" = -HAIR_LAYER)
@@ -208,10 +208,10 @@
hair_hidden = 1
if(!hair_hidden)
if(!H.getorgan(/obj/item/organ/brain)) //Applies the debrained overlay if there is no brain
if(!(NOBLOOD in specflags))
if(!(NOBLOOD in species_traits))
standing += image("icon"='icons/mob/human_face.dmi', "icon_state" = "debrained_s", "layer" = -HAIR_LAYER)
else if(H.hair_style && (HAIR in specflags))
else if(H.hair_style && (HAIR in species_traits))
S = hair_styles_list[H.hair_style]
if(S)
var/image/img_hair_s = image("icon" = S.icon, "icon_state" = "[S.icon_state]_s", "layer" = -HAIR_LAYER)
@@ -246,13 +246,13 @@
if(!(H.disabilities & HUSK))
// lipstick
if(H.lip_style && (LIPS in specflags) && HD)
if(H.lip_style && (LIPS in species_traits) && HD)
var/image/lips = image("icon"='icons/mob/human_face.dmi', "icon_state"="lips_[H.lip_style]_s", "layer" = -BODY_LAYER)
lips.color = H.lip_color
standing += lips
// eyes
if((EYECOLOR in specflags) && HD)
if((EYECOLOR in species_traits) && HD)
var/image/img_eyes_s = image("icon" = 'icons/mob/human_face.dmi', "icon_state" = "[eyes]_s", "layer" = -BODY_LAYER)
img_eyes_s.color = "#" + H.eye_color
standing += img_eyes_s
@@ -271,7 +271,7 @@
else
standing += image("icon"=U2.icon, "icon_state"="[U2.icon_state]_s", "layer"=-BODY_LAYER)
if(H.socks && H.get_num_legs() >= 2 && !(DIGITIGRADE in specflags))
if(H.socks && H.get_num_legs() >= 2 && !(DIGITIGRADE in species_traits))
var/datum/sprite_accessory/socks/U3 = socks_list[H.socks]
if(U3)
standing += image("icon"=U3.icon, "icon_state"="[U3.icon_state]_s", "layer"=-BODY_LAYER)
@@ -361,8 +361,8 @@
if(!O.use_digitigrade)
continue
not_digitigrade = FALSE
if(!(DIGITIGRADE in specflags)) //Someone cut off a digitigrade leg and tacked it on
specflags += DIGITIGRADE
if(!(DIGITIGRADE in species_traits)) //Someone cut off a digitigrade leg and tacked it on
species_traits += DIGITIGRADE
var/should_be_squished = FALSE
if(H.wear_suit && ((H.wear_suit.flags_inv & HIDEJUMPSUIT) || (H.wear_suit.body_parts_covered & LEGS)) || (H.w_uniform && (H.w_uniform.body_parts_covered & LEGS)))
should_be_squished = TRUE
@@ -374,8 +374,8 @@
update_needed = TRUE
if(update_needed)
H.update_body_parts()
if(not_digitigrade && (DIGITIGRADE in specflags)) //Curse is lifted
specflags -= DIGITIGRADE
if(not_digitigrade && (DIGITIGRADE in species_traits)) //Curse is lifted
species_traits -= DIGITIGRADE
if(!bodyparts_to_add)
return
@@ -496,11 +496,11 @@
/datum/species/proc/spec_life(mob/living/carbon/human/H)
if(NOBREATH in specflags)
if(NOBREATH in species_traits)
H.setOxyLoss(0)
H.losebreath = 0
var/takes_crit_damage = (!(NOCRITDAMAGE in specflags))
var/takes_crit_damage = (!(NOCRITDAMAGE in species_traits))
if((H.health < HEALTH_THRESHOLD_CRIT) && takes_crit_damage)
H.adjustBruteLoss(1)
@@ -565,7 +565,7 @@
return 0
if(num_legs < 2)
return 0
if(DIGITIGRADE in specflags)
if(DIGITIGRADE in species_traits)
if(!disable_warning)
H << "<span class='warning'>The footwear around here isn't compatible with your feet!</span>"
return 0
@@ -736,7 +736,7 @@
// nutrition decrease and satiety
if (H.nutrition > 0 && H.stat != DEAD && \
H.dna && H.dna.species && (!(NOHUNGER in H.dna.species.specflags)))
H.dna && H.dna.species && (!(NOHUNGER in H.dna.species.species_traits)))
// THEY HUNGER
var/hunger_rate = HUNGER_FACTOR
if(H.satiety > 0)
@@ -760,7 +760,7 @@
if(H.nutrition > NUTRITION_LEVEL_FAT)
H.metabolism_efficiency = 1
else if(H.nutrition > NUTRITION_LEVEL_FED && H.satiety > 80)
if(H.metabolism_efficiency != 1.25 && (H.dna && H.dna.species && !(NOHUNGER in H.dna.species.specflags)))
if(H.metabolism_efficiency != 1.25 && (H.dna && H.dna.species && !(NOHUNGER in H.dna.species.species_traits)))
H << "<span class='notice'>You feel vigorous.</span>"
H.metabolism_efficiency = 1.25
else if(H.nutrition < NUTRITION_LEVEL_STARVING + 50)
@@ -823,7 +823,7 @@
/datum/species/proc/handle_mutations_and_radiation(mob/living/carbon/human/H)
if(!(RADIMMUNE in specflags))
if(!(RADIMMUNE in species_traits))
if(H.radiation)
if (H.radiation > 100)
if(!H.weakened)
@@ -839,7 +839,7 @@
H << "<span class='danger'>You feel weak.</span>"
if(prob(15))
if(!( H.hair_style == "Shaved") || !(H.hair_style == "Bald") || (HAIR in specflags))
if(!( H.hair_style == "Shaved") || !(H.hair_style == "Bald") || (HAIR in species_traits))
H << "<span class='danger'>Your hair starts to \
fall out in clumps...<span>"
addtimer(src, "go_bald", 50, TIMER_UNIQUE, H)
@@ -880,10 +880,10 @@
if(H.status_flags & GOTTAGOREALLYFAST)
. -= 2
. += speedmod
if(H.status_flags & IGNORESLOWDOWN)
ignoreslow = 1
if(H.has_gravity())
gravity = 1
@@ -945,7 +945,7 @@
add_logs(user, target, "shaked")
return 1
else
var/we_breathe = (!(NOBREATH in user.dna.species.specflags))
var/we_breathe = (!(NOBREATH in user.dna.species.species_traits))
var/we_lung = user.getorganslot("lungs")
if(we_breathe && we_lung)
@@ -1128,7 +1128,7 @@
//dismemberment
var/probability = I.get_dismemberment_chance(affecting)
if(prob(probability) || ((EASYDISMEMBER in specflags) && prob(2*probability)))
if(prob(probability) || ((EASYDISMEMBER in species_traits) && prob(2*probability)))
if(affecting.dismember(I.damtype))
I.add_mob_blood(H)
playsound(get_turf(H), I.get_dismember_sound(), 80, 1)
@@ -1245,7 +1245,7 @@
/////////////
/datum/species/proc/breathe(mob/living/carbon/human/H)
if(NOBREATH in specflags)
if(NOBREATH in species_traits)
return TRUE
/datum/species/proc/handle_environment(datum/gas_mixture/environment, mob/living/carbon/human/H)
@@ -1274,7 +1274,7 @@
H.bodytemperature += min((1-thermal_protection) * ((loc_temp - H.bodytemperature) / BODYTEMP_HEAT_DIVISOR), BODYTEMP_HEATING_MAX)
// +/- 50 degrees from 310.15K is the 'safe' zone, where no damage is dealt.
if(H.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT && !(RESISTHOT in specflags))
if(H.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT && !(RESISTHOT in species_traits))
//Body temperature is too hot.
switch(H.bodytemperature)
if(360 to 400)
@@ -1313,7 +1313,7 @@
var/adjusted_pressure = H.calculate_affecting_pressure(pressure) //Returns how much pressure actually affects the mob.
switch(adjusted_pressure)
if(HAZARD_HIGH_PRESSURE to INFINITY)
if(!(RESISTPRESSURE in specflags))
if(!(RESISTPRESSURE in species_traits))
H.adjustBruteLoss( min( ( (adjusted_pressure / HAZARD_HIGH_PRESSURE) -1 )*PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE) )
H.throw_alert("pressure", /obj/screen/alert/highpressure, 2)
else
@@ -1325,7 +1325,7 @@
if(HAZARD_LOW_PRESSURE to WARNING_LOW_PRESSURE)
H.throw_alert("pressure", /obj/screen/alert/lowpressure, 1)
else
if(H.dna.check_mutation(COLDRES) || (RESISTPRESSURE in specflags))
if(H.dna.check_mutation(COLDRES) || (RESISTPRESSURE in species_traits))
H.clear_alert("pressure")
else
H.adjustBruteLoss( LOW_PRESSURE_DAMAGE )
@@ -1336,11 +1336,11 @@
//////////
/datum/species/proc/handle_fire(mob/living/carbon/human/H)
if(NOFIRE in specflags)
if(NOFIRE in species_traits)
return 1
/datum/species/proc/CanIgniteMob(mob/living/carbon/human/H)
if(NOFIRE in specflags)
if(NOFIRE in species_traits)
return FALSE
return TRUE
@@ -6,7 +6,7 @@
name = "Human"
id = "human"
default_color = "FFFFFF"
specflags = list(EYECOLOR,HAIR,FACEHAIR,LIPS)
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS)
mutant_bodyparts = list("tail_human", "ears", "wings")
default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "None")
use_skintones = 1
@@ -37,7 +37,7 @@
id = "lizard"
say_mod = "hisses"
default_color = "00FF00"
specflags = list(MUTCOLORS,EYECOLOR,LIPS)
species_traits = list(MUTCOLORS,EYECOLOR,LIPS)
mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs")
mutant_organs = list(/obj/item/organ/tongue/lizard)
default_features = list("mcolor" = "0F0", "tail" = "Smooth", "snout" = "Round", "horns" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None", "legs" = "Normal Legs")
@@ -71,7 +71,7 @@
name = "Ash Walker"
id = "ashlizard"
limbs_id = "lizard"
specflags = list(MUTCOLORS,EYECOLOR,LIPS,NOBREATH,NOGUNS,DIGITIGRADE)
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,NOBREATH,NOGUNS,DIGITIGRADE)
/*
PODPEOPLE
*/
@@ -81,7 +81,7 @@
name = "Podperson"
id = "pod"
default_color = "59CE00"
specflags = list(MUTCOLORS,EYECOLOR)
species_traits = list(MUTCOLORS,EYECOLOR)
attack_verb = "slash"
attack_sound = 'sound/weapons/slice.ogg'
miss_sound = 'sound/weapons/slashmiss.ogg'
@@ -155,7 +155,7 @@
blacklisted = 1
ignored_by = list(/mob/living/simple_animal/hostile/faithless)
meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/shadow
specflags = list(NOBREATH,NOBLOOD,RADIMMUNE,VIRUSIMMUNE)
species_traits = list(NOBREATH,NOBLOOD,RADIMMUNE,VIRUSIMMUNE)
dangerous_existence = 1
var/datum/action/innate/shadow/darkvision/vision_toggle
@@ -208,7 +208,7 @@
default_color = "00FF90"
say_mod = "chirps"
eyes = "jelleyes"
specflags = list(MUTCOLORS,EYECOLOR,NOBLOOD,VIRUSIMMUNE,TOXINLOVER)
species_traits = list(MUTCOLORS,EYECOLOR,NOBLOOD,VIRUSIMMUNE,TOXINLOVER)
meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/slime
exotic_blood = "slimejelly"
var/datum/action/innate/regenerate_limbs/regenerate_limbs
@@ -305,7 +305,7 @@
id = "slime"
default_color = "00FFFF"
darksight = 3
specflags = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD,VIRUSIMMUNE, TOXINLOVER)
species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD,VIRUSIMMUNE, TOXINLOVER)
say_mod = "says"
eyes = "eyes"
hair_color = "mutcolor"
@@ -543,7 +543,7 @@
// Animated beings of stone. They have increased defenses, and do not need to breathe. They're also slow as fuuuck.
name = "Golem"
id = "iron"
specflags = list(NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS)
species_traits = list(NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS)
speedmod = 2
armor = 55
siemens_coeff = 0
@@ -590,7 +590,7 @@
fixed_mut_color = "a3d"
meat = /obj/item/weapon/ore/plasma
//Can burn and takes damage from heat
specflags = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS)
species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS)
info_text = "As a <span class='danger'>Plasma Golem</span>, you explode on death!."
burnmod = 1.5
@@ -703,7 +703,7 @@
fixed_mut_color = "49311c"
meat = /obj/item/stack/sheet/mineral/wood
//Can burn and take damage from heat
specflags = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS)
species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS)
armor = 30
burnmod = 1.25
heatmod = 1.5
@@ -1035,7 +1035,7 @@
blacklisted = 1
sexes = 0
meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton
specflags = list(NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NOHUNGER,EASYDISMEMBER,EASYLIMBATTACHMENT)
species_traits = list(NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NOHUNGER,EASYDISMEMBER,EASYLIMBATTACHMENT)
mutant_organs = list(/obj/item/organ/tongue/bone)
damage_overlay_type = ""//let's not show bloody wounds or burns over bones.
@@ -1051,7 +1051,7 @@
sexes = 0
blacklisted = 1
meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/zombie
specflags = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOBLOOD,RADIMMUNE,NOZOMBIE,EASYDISMEMBER,EASYLIMBATTACHMENT,TOXINLOVER)
species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOBLOOD,RADIMMUNE,NOZOMBIE,EASYDISMEMBER,EASYLIMBATTACHMENT,TOXINLOVER)
mutant_organs = list(/obj/item/organ/tongue/zombie)
/datum/species/zombie/infectious
@@ -1106,7 +1106,7 @@
darksight = 3
say_mod = "gibbers"
sexes = 0
specflags = list(NOBLOOD,NOBREATH,VIRUSIMMUNE,NOGUNS)
species_traits = list(NOBLOOD,NOBREATH,VIRUSIMMUNE,NOGUNS)
mutant_organs = list(/obj/item/organ/tongue/abductor)
var/scientist = 0 // vars to not pollute spieces list with castes
var/agent = 0
@@ -1120,7 +1120,7 @@ var/global/image/plasmaman_on_fire = image("icon"='icons/mob/OnFire.dmi', "icon_
say_mod = "rattles"
sexes = 0
meat = /obj/item/stack/sheet/mineral/plasma
specflags = list(NOBLOOD,RESISTCOLD,RADIMMUNE,NOTRANSSTING,VIRUSIMMUNE,NOHUNGER)
species_traits = list(NOBLOOD,RESISTCOLD,RADIMMUNE,NOTRANSSTING,VIRUSIMMUNE,NOHUNGER)
mutantlungs = /obj/item/organ/lungs/plasmaman
dangerous_existence = 1 //So so much
blacklisted = 1 //See above
@@ -1179,13 +1179,13 @@ var/global/image/plasmaman_on_fire = image("icon"='icons/mob/OnFire.dmi', "icon_
id = "synth"
say_mod = "beep boops" //inherited from a user's real species
sexes = 0
specflags = list(NOTRANSSTING,NOBREATH,VIRUSIMMUNE,NODISMEMBER,NOHUNGER) //all of these + whatever we inherit from the real species
species_traits = list(NOTRANSSTING,NOBREATH,VIRUSIMMUNE,NODISMEMBER,NOHUNGER) //all of these + whatever we inherit from the real species
dangerous_existence = 1
blacklisted = 1
meat = null
damage_overlay_type = "synth"
limbs_id = "synth"
var/list/initial_specflags = list(NOTRANSSTING,NOBREATH,VIRUSIMMUNE,NODISMEMBER,NOHUNGER) //for getting these values back for assume_disguise()
var/list/initial_species_traits = list(NOTRANSSTING,NOBREATH,VIRUSIMMUNE,NODISMEMBER,NOHUNGER) //for getting these values back for assume_disguise()
var/disguise_fail_health = 75 //When their health gets to this level their synthflesh partially falls off
var/datum/species/fake_species = null //a species to do most of our work for us, unless we're damaged
@@ -1216,8 +1216,8 @@ var/global/image/plasmaman_on_fire = image("icon"='icons/mob/OnFire.dmi', "icon_
name = S.name
say_mod = S.say_mod
sexes = S.sexes
specflags = initial_specflags.Copy()
specflags.Add(S.specflags)
species_traits = initial_species_traits.Copy()
species_traits.Add(S.species_traits)
attack_verb = S.attack_verb
attack_sound = S.attack_sound
miss_sound = S.miss_sound
@@ -1235,7 +1235,7 @@ var/global/image/plasmaman_on_fire = image("icon"='icons/mob/OnFire.dmi', "icon_
else
name = initial(name)
say_mod = initial(say_mod)
specflags = initial_specflags.Copy()
species_traits = initial_species_traits.Copy()
attack_verb = initial(attack_verb)
attack_sound = initial(attack_sound)
miss_sound = initial(miss_sound)
@@ -1297,7 +1297,7 @@ var/global/image/plasmaman_on_fire = image("icon"='icons/mob/OnFire.dmi', "icon_
name = "Android"
id = "android"
say_mod = "states"
specflags = list(NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOBLOOD,VIRUSIMMUNE,PIERCEIMMUNE,NOHUNGER,EASYLIMBATTACHMENT)
species_traits = list(NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOBLOOD,VIRUSIMMUNE,PIERCEIMMUNE,NOHUNGER,EASYLIMBATTACHMENT)
meat = null
damage_overlay_type = "synth"
limbs_id = "synth"
@@ -1336,14 +1336,14 @@ SYNDICATE BLACK OPS
attack_sound = "sound/weapons/resonator_blast.ogg"
blacklisted = 1
use_skintones = 0
specflags = list(RADIMMUNE,VIRUSIMMUNE,NOBLOOD,PIERCEIMMUNE,EYECOLOR,NODISMEMBER,NOHUNGER)
species_traits = list(RADIMMUNE,VIRUSIMMUNE,NOBLOOD,PIERCEIMMUNE,EYECOLOR,NODISMEMBER,NOHUNGER)
sexes = 0
/datum/species/angel
name = "Angel"
id = "angel"
default_color = "FFFFFF"
specflags = list(EYECOLOR,HAIR,FACEHAIR,LIPS)
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS)
mutant_bodyparts = list("tail_human", "ears", "wings")
default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "Angel")
use_skintones = 1
+1 -1
View File
@@ -485,7 +485,7 @@
TH.transfer_mob_blood_dna(src)
/mob/living/carbon/human/makeTrail(turf/T)
if((NOBLOOD in dna.species.specflags) || !bleed_rate || bleedsuppress)
if((NOBLOOD in dna.species.species_traits) || !bleed_rate || bleedsuppress)
return
..()
@@ -275,7 +275,7 @@
/datum/reagent/medicine/salglu_solution/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message = 1)
if(ishuman(M) && method == INJECT)
var/mob/living/carbon/human/H = M
if(H.dna && !(NOBLOOD in H.dna.species.specflags))
if(H.dna && !(NOBLOOD in H.dna.species.species_traits))
var/efficiency = (BLOOD_VOLUME_NORMAL-H.blood_volume)/700 + 0.2//The lower the blood of the patient, the better it is as a blood substitute.
efficiency = min(0.75,efficiency)
//As it's designed for an IV drip, make large injections not as effective as repeated small injections.
@@ -300,7 +300,7 @@
if ("albino")
N.skin_tone = "caucasian1"
if(MUTCOLORS in N.dna.species.specflags) //take current alien color and darken it slightly
if(MUTCOLORS in N.dna.species.species_traits) //take current alien color and darken it slightly
var/newcolor = ""
var/len = length(N.dna.features["mcolor"])
for(var/i=1, i<=len, i+=1)
@@ -343,7 +343,7 @@
N.skin_tone = "orange"
N.hair_style = "Spiky"
N.hair_color = "000"
if(MUTCOLORS in N.dna.species.specflags) //Aliens with custom colors simply get turned orange
if(MUTCOLORS in N.dna.species.species_traits) //Aliens with custom colors simply get turned orange
N.dna.features["mcolor"] = "f80"
N.regenerate_icons()
if(prob(7))
@@ -1000,7 +1000,7 @@
description = "A potent oxidizer used as fuel in rockets and as an anaesthetic during surgery."
reagent_state = LIQUID
color = "#808080"
/datum/reagent/nitrous_oxide/reaction_obj(obj/O, reac_volume)
if((!O) || (!reac_volume))
return 0
@@ -94,7 +94,7 @@
if(iscarbon(M))
C = M
CHECK_DNA_AND_SPECIES(C)
if(NOBREATH in C.dna.species.specflags)
if(NOBREATH in C.dna.species.species_traits)
. = FALSE
if(.)
+2 -2
View File
@@ -261,10 +261,10 @@ var/list/non_simple_animals = typecacheof(list(/mob/living/carbon/monkey,/mob/li
var/obj/item/organ/lungs/L = H.internal_organs_slot["lungs"]
L.tox_breath_dam_min = 0
L.tox_breath_dam_max = 0
S.specflags |= VIRUSIMMUNE
S.species_traits |= VIRUSIMMUNE
if(VAULT_NOBREATH)
H << "<span class='notice'>Your lungs feel great.</span>"
S.specflags |= NOBREATH
S.species_traits |= NOBREATH
if(VAULT_FIREPROOF)
H << "<span class='notice'>Your feel fireproof.</span>"
S.burnmod = 0.5
+3 -3
View File
@@ -59,7 +59,7 @@
/obj/item/bodypart/attack(mob/living/carbon/C, mob/user)
if(ishuman(C))
var/mob/living/carbon/human/H = C
if(EASYLIMBATTACHMENT in H.dna.species.specflags)
if(EASYLIMBATTACHMENT in H.dna.species.species_traits)
if(!H.get_bodypart(body_zone) && !animal_origin)
if(H == user)
H.visible_message("<span class='warning'>[H] jams [src] into \his empty socket!</span>",\
@@ -220,7 +220,7 @@
var/datum/species/S = H.dna.species
species_id = S.limbs_id
species_flags_list = H.dna.species.specflags
species_flags_list = H.dna.species.species_traits
if(S.use_skintones)
skin_tone = H.skin_tone
@@ -231,7 +231,7 @@
body_gender = H.gender
should_draw_gender = S.sexes
if(MUTCOLORS in S.specflags)
if(MUTCOLORS in S.species_traits)
if(S.fixed_mut_color)
species_color = S.fixed_mut_color
else
@@ -12,7 +12,7 @@
return 0
if(ishuman(C))
var/mob/living/carbon/human/H = C
if(NODISMEMBER in H.dna.species.specflags) // species don't allow dismemberment
if(NODISMEMBER in H.dna.species.species_traits) // species don't allow dismemberment
return 0
var/obj/item/bodypart/affecting = C.get_bodypart("chest")
@@ -48,7 +48,7 @@
return 0
if(ishuman(C))
var/mob/living/carbon/human/H = C
if(NODISMEMBER in H.dna.species.specflags) // species don't allow dismemberment
if(NODISMEMBER in H.dna.species.species_traits) // species don't allow dismemberment
return 0
var/organ_spilled = 0
+4 -4
View File
@@ -70,7 +70,7 @@
var/datum/species/S = H.dna.species
//Facial hair
if(H.facial_hair_style && (FACEHAIR in S.specflags))
if(H.facial_hair_style && (FACEHAIR in S.species_traits))
facial_hair_style = H.facial_hair_style
if(S.hair_color)
if(S.hair_color == "mutcolor")
@@ -85,7 +85,7 @@
facial_hair_color = "000"
hair_alpha = 255
//Hair
if(H.hair_style && (HAIR in S.specflags))
if(H.hair_style && (HAIR in S.species_traits))
hair_style = H.hair_style
if(S.hair_color)
if(S.hair_color == "mutcolor")
@@ -100,14 +100,14 @@
hair_color = "000"
hair_alpha = initial(hair_alpha)
// lipstick
if(H.lip_style && (LIPS in S.specflags))
if(H.lip_style && (LIPS in S.species_traits))
lip_style = H.lip_style
lip_color = H.lip_color
else
lip_style = null
lip_color = "white"
// eyes
if(EYECOLOR in S.specflags)
if(EYECOLOR in S.species_traits)
eyes = S.eyes
eye_color = H.eye_color
else
+11 -11
View File
@@ -192,7 +192,7 @@
if(world.time > (last_pump + pump_delay))
if(ishuman(owner) && owner.client) //While this entire item exists to make people suffer, they can't control disconnects.
var/mob/living/carbon/human/H = owner
if(H.dna && !(NOBLOOD in H.dna.species.specflags))
if(H.dna && !(NOBLOOD in H.dna.species.species_traits))
H.blood_volume = max(H.blood_volume - blood_loss, 0)
H << "<span class = 'userdanger'>You have to keep pumping your blood!</span>"
if(add_colour)
@@ -225,7 +225,7 @@
var/mob/living/carbon/human/H = owner
if(istype(H))
if(H.dna && !(NOBLOOD in H.dna.species.specflags))
if(H.dna && !(NOBLOOD in H.dna.species.species_traits))
H.blood_volume = min(H.blood_volume + cursed_heart.blood_loss*0.5, BLOOD_VOLUME_MAXIMUM)
H.remove_client_colour(/datum/client_colour/cursed_heart_blood)
cursed_heart.add_colour = TRUE
@@ -283,16 +283,16 @@
if((H.status_flags & GODMODE))
return
var/specflags = list()
if(H && H.dna && H.dna.species && H.dna.species.specflags)
specflags = H.dna.species.specflags
var/species_traits = list()
if(H && H.dna && H.dna.species && H.dna.species.species_traits)
species_traits = H.dna.species.species_traits
if(!breath || (breath.total_moles() == 0))
if(H.reagents.has_reagent("epinephrine"))
return
if(H.health >= HEALTH_THRESHOLD_CRIT)
H.adjustOxyLoss(HUMAN_MAX_OXYLOSS)
else if(!(NOCRITDAMAGE in specflags))
else if(!(NOCRITDAMAGE in species_traits))
H.adjustOxyLoss(HUMAN_CRIT_MAX_OXYLOSS)
H.failed_last_breath = 1
@@ -462,11 +462,11 @@
/obj/item/organ/lungs/proc/handle_breath_temperature(datum/gas_mixture/breath, mob/living/carbon/human/H) // called by human/life, handles temperatures
if(abs(310.15 - breath.temperature) > 50)
var/specflags = list()
if(H && H.dna && H.dna.species && H.dna.species.specflags)
specflags = H.dna.species.specflags
var/species_traits = list()
if(H && H.dna && H.dna.species && H.dna.species.species_traits)
species_traits = H.dna.species.species_traits
if(!(mutations_list[COLDRES] in H.dna.mutations) && !(RESISTCOLD in specflags)) // COLD DAMAGE
if(!(mutations_list[COLDRES] in H.dna.mutations) && !(RESISTCOLD in species_traits)) // COLD DAMAGE
switch(breath.temperature)
if(-INFINITY to 120)
H.apply_damage(COLD_GAS_DAMAGE_LEVEL_3, BURN, "head")
@@ -475,7 +475,7 @@
if(200 to 260)
H.apply_damage(COLD_GAS_DAMAGE_LEVEL_1, BURN, "head")
if(!(RESISTHOT in specflags)) // HEAT DAMAGE
if(!(RESISTHOT in species_traits)) // HEAT DAMAGE
switch(breath.temperature)
if(360 to 400)
H.apply_damage(HEAT_GAS_DAMAGE_LEVEL_1, BURN, "head")
+1 -1
View File
@@ -40,7 +40,7 @@
/obj/item/zombie_hand/proc/check_infection(mob/living/carbon/human/target, mob/user)
CHECK_DNA_AND_SPECIES(target)
if(NOZOMBIE in target.dna.species.specflags)
if(NOZOMBIE in target.dna.species.species_traits)
// cannot infect any NOZOMBIE subspecies (such as high functioning
// zombies)
return