diff --git a/code/controllers/communications.dm b/code/controllers/communications.dm
index 9b056472bde..177e670d6c9 100644
--- a/code/controllers/communications.dm
+++ b/code/controllers/communications.dm
@@ -351,7 +351,7 @@ var/global/datum/controller/radio/radio_controller
/datum/signal/proc/get_race(mob/M)
if(ishuman(M))
var/mob/living/carbon/human/H = M
- . = H.species.name
+ . = H.dna.species.name
else if(isbrain(M))
var/mob/living/carbon/brain/B = M
. = B.get_race()
diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm
index 0f76efb6d55..ebacefbcc49 100644
--- a/code/datums/datacore.dm
+++ b/code/datums/datacore.dm
@@ -357,7 +357,7 @@ var/record_id_num = 1001
temp = new /icon(icobase, "groin_[g]")
preview_icon.Blend(temp, ICON_OVERLAY)
var/head = "head"
- if(head_organ.alt_head && head_organ.dna.species2.bodyflags & HAS_ALT_HEADS)
+ if(head_organ.alt_head && head_organ.dna.species.bodyflags & HAS_ALT_HEADS)
var/datum/sprite_accessory/alt_heads/alternate_head = alt_heads_list[head_organ.alt_head]
if(alternate_head.icon_state)
head = alternate_head.icon_state
@@ -368,7 +368,7 @@ var/record_id_num = 1001
if(H.body_accessory && istype(H.body_accessory, /datum/body_accessory/tail))
temp = new/icon("icon" = H.body_accessory.icon, "icon_state" = H.body_accessory.icon_state)
preview_icon.Blend(temp, ICON_OVERLAY)
- else if(H.tail && H.species.bodyflags & HAS_TAIL)
+ else if(H.tail && H.dna.species.bodyflags & HAS_TAIL)
temp = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[H.tail]_s")
preview_icon.Blend(temp, ICON_OVERLAY)
@@ -376,19 +376,19 @@ var/record_id_num = 1001
preview_icon.Blend(E.get_icon(), ICON_OVERLAY)
// Skin tone
- if(H.species.bodyflags & HAS_SKIN_TONE)
+ if(H.dna.species.bodyflags & HAS_SKIN_TONE)
if(H.s_tone >= 0)
preview_icon.Blend(rgb(H.s_tone, H.s_tone, H.s_tone), ICON_ADD)
else
preview_icon.Blend(rgb(-H.s_tone, -H.s_tone, -H.s_tone), ICON_SUBTRACT)
// Proper Skin color - Fix, you can't have HAS_SKIN_TONE *and* HAS_SKIN_COLOR
- if(H.species.bodyflags & HAS_SKIN_COLOR)
+ if(H.dna.species.bodyflags & HAS_SKIN_COLOR)
preview_icon.Blend(H.skin_colour, ICON_ADD)
//Tail Markings
var/icon/t_marking_s
- if(H.species.bodyflags & HAS_TAIL_MARKINGS)
+ if(H.dna.species.bodyflags & HAS_TAIL_MARKINGS)
var/tail_marking = H.m_styles["tail"]
var/datum/sprite_accessory/tail_marking_style = marking_styles_list[tail_marking]
if(tail_marking_style && tail_marking_style.species_allowed)
@@ -398,8 +398,8 @@ var/record_id_num = 1001
preview_icon.Blend(t_marking_s, ICON_OVERLAY)
var/icon/face_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = "bald_s")
- if(!(H.species.bodyflags & NO_EYES))
- var/icon/eyes_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = H.species ? H.species.eyes : "eyes_s")
+ if(!(H.dna.species.bodyflags & NO_EYES))
+ var/icon/eyes_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = H.dna.species ? H.dna.species.eyes : "eyes_s")
if(!eyes_organ)
return
eyes_s.Blend(eyes_organ.eye_colour, ICON_ADD)
@@ -410,7 +410,7 @@ var/record_id_num = 1001
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
// I'll want to make a species-specific proc for this sooner or later
// But this'll do for now
- if(istype(head_organ.dna.species2, /datum/species/slime))
+ if(istype(head_organ.dna.species, /datum/species/slime))
hair_s.Blend("[H.skin_colour]A0", ICON_AND) //A0 = 160 alpha.
else
hair_s.Blend(head_organ.hair_colour, ICON_ADD)
@@ -424,7 +424,7 @@ var/record_id_num = 1001
face_s.Blend(hair_s, ICON_OVERLAY)
//Head Accessory
- if(head_organ.dna.species2.bodyflags & HAS_HEAD_ACCESSORY)
+ if(head_organ.dna.species.bodyflags & HAS_HEAD_ACCESSORY)
var/datum/sprite_accessory/head_accessory_style = head_accessory_styles_list[head_organ.ha_style]
if(head_accessory_style && head_accessory_style.species_allowed)
var/icon/head_accessory_s = new/icon("icon" = head_accessory_style.icon, "icon_state" = "[head_accessory_style.icon_state]_s")
@@ -434,7 +434,7 @@ var/record_id_num = 1001
var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[head_organ.f_style]
if(facial_hair_style && facial_hair_style.species_allowed)
var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s")
- if(istype(head_organ.dna.species2, /datum/species/slime))
+ if(istype(head_organ.dna.species, /datum/species/slime))
facial_s.Blend("[H.skin_colour]A0", ICON_ADD) //A0 = 160 alpha.
else
facial_s.Blend(head_organ.facial_colour, ICON_ADD)
@@ -448,15 +448,15 @@ var/record_id_num = 1001
face_s.Blend(facial_s, ICON_OVERLAY)
//Markings
- if((H.species.bodyflags & HAS_HEAD_MARKINGS) || (H.species.bodyflags & HAS_BODY_MARKINGS))
- if(H.species.bodyflags & HAS_BODY_MARKINGS) //Body markings.
+ if((H.dna.species.bodyflags & HAS_HEAD_MARKINGS) || (H.dna.species.bodyflags & HAS_BODY_MARKINGS))
+ if(H.dna.species.bodyflags & HAS_BODY_MARKINGS) //Body markings.
var/body_marking = H.m_styles["body"]
var/datum/sprite_accessory/body_marking_style = marking_styles_list[body_marking]
if(body_marking_style && body_marking_style.species_allowed)
var/icon/b_marking_s = new/icon("icon" = body_marking_style.icon, "icon_state" = "[body_marking_style.icon_state]_s")
b_marking_s.Blend(H.m_colours["body"], ICON_ADD)
face_s.Blend(b_marking_s, ICON_OVERLAY)
- if(H.species.bodyflags & HAS_HEAD_MARKINGS) //Head markings.
+ if(H.dna.species.bodyflags & HAS_HEAD_MARKINGS) //Head markings.
var/head_marking = H.m_styles["head"]
var/datum/sprite_accessory/head_marking_style = marking_styles_list[head_marking]
if(head_marking_style && head_marking_style.species_allowed)
@@ -615,7 +615,7 @@ var/record_id_num = 1001
temp.Shift(EAST, H.body_accessory.pixel_x_offset)
if(H.body_accessory.pixel_y_offset)
temp.Shift(NORTH, H.body_accessory.pixel_y_offset)
- if(H.species.bodyflags & HAS_SKIN_COLOR)
+ if(H.dna.species.bodyflags & HAS_SKIN_COLOR)
temp.Blend(H.skin_colour, H.body_accessory.blend_mode)
if(t_marking_s)
temp.Blend(t_marking_s, ICON_OVERLAY)
diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm
index 9526a3e671a..bbb9b1b1768 100644
--- a/code/datums/datumvars.dm
+++ b/code/datums/datumvars.dm
@@ -992,8 +992,8 @@
to_chat(usr, "Mob doesn't exist anymore")
return
- if(H.set_species(new_species))
- to_chat(usr, "Set species of [H] to [H.species].")
+ if(H.set_species(all_species[new_species]))
+ to_chat(usr, "Set species of [H] to [H.dna.species].")
H.regenerate_icons()
message_admins("[key_name_admin(usr)] has changed the species of [key_name_admin(H)] to [new_species]")
log_admin("[key_name(usr)] has changed the species of [key_name(H)] to [new_species]")
diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm
index e39a592bc3b..1bbba44f78b 100644
--- a/code/datums/diseases/_MobProcs.dm
+++ b/code/datums/diseases/_MobProcs.dm
@@ -134,7 +134,7 @@
/mob/living/carbon/human/CanContractDisease(datum/disease/D)
- if((VIRUSIMMUNE in species.species_traits) && !D.bypasses_immunity)
+ if((VIRUSIMMUNE in dna.species.species_traits) && !D.bypasses_immunity)
return 0
for(var/thing in D.required_organs)
if(!((locate(thing) in bodyparts) || (locate(thing) in internal_organs)))
diff --git a/code/datums/diseases/advance/symptoms/voice_change.dm b/code/datums/diseases/advance/symptoms/voice_change.dm
index 8a90b848f22..8ba3ed64008 100644
--- a/code/datums/diseases/advance/symptoms/voice_change.dm
+++ b/code/datums/diseases/advance/symptoms/voice_change.dm
@@ -36,7 +36,7 @@ Bonus
else
if(ishuman(M))
var/mob/living/carbon/human/H = M
- H.SetSpecialVoice(H.species.get_random_name(H.gender))
+ H.SetSpecialVoice(H.dna.species.get_random_name(H.gender))
return
diff --git a/code/datums/diseases/kingstons.dm b/code/datums/diseases/kingstons.dm
index abad7dcf720..e65f5da3355 100644
--- a/code/datums/diseases/kingstons.dm
+++ b/code/datums/diseases/kingstons.dm
@@ -43,7 +43,7 @@
affected_mob.visible_message("[affected_mob]'s form contorts into something more feline!", \
"YOU TURN INTO A TAJARAN!")
var/mob/living/carbon/human/catface = affected_mob
- catface.set_species("Tajaran")
+ catface.set_species(/datum/species/tajaran)
/datum/disease/kingstons/advanced
@@ -57,7 +57,7 @@
permeability_mod = 0.75
desc = "If left untreated the subject will mutate to a different species."
severity = BIOHAZARD
- var/list/virspecies = list("Human", "Tajaran", "Unathi", "Skrell", "Vulpkanin")//no karma races sorrys.
+ var/list/virspecies = list(/datum/species/human, /datum/species/tajaran, /datum/species/unathi,/datum/species/skrell, /datum/species/vulpkanin) //no karma races sorrys.
var/list/virsuffix = list("pox", "rot", "flu", "cough", "-gitis", "cold", "rash", "itch", "decay")
var/chosentype
var/chosensuff
diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm
index 5546efe537e..8ffbcba22c9 100644
--- a/code/datums/diseases/transformation.dm
+++ b/code/datums/diseases/transformation.dm
@@ -194,13 +194,13 @@
if(1)
if(ishuman(affected_mob))
var/mob/living/carbon/human/H = affected_mob
- if(H.species.name == "Slime People")
+ if(H.dna.species.name == "Slime People")
stage = 5
if(3)
if(ishuman(affected_mob))
var/mob/living/carbon/human/human = affected_mob
- if(human.species.name != "Slime People")
- human.set_species("Slime People")
+ if(human.dna.species.name != "Slime People")
+ human.set_species(/datum/species/slime)
/datum/disease/transformation/corgi
name = "The Barkening"
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 3f62c8ffaed..667ad44e027 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -1424,7 +1424,7 @@
var/mob/living/carbon/human/H = current
- H.set_species("Abductor")
+ H.set_species(/datum/species/abductor)
switch(role)
if("Agent")
diff --git a/code/datums/spells/lichdom.dm b/code/datums/spells/lichdom.dm
index 84c3a552c03..f1744e22550 100644
--- a/code/datums/spells/lichdom.dm
+++ b/code/datums/spells/lichdom.dm
@@ -68,7 +68,7 @@
lich.real_name = M.mind.name
M.mind.transfer_to(lich)
- lich.set_species("Skeleton")
+ lich.set_species(/datum/species/skeleton)
to_chat(lich, "Your bones clatter and shutter as they're pulled back into this world!")
charge_max += 600
var/mob/old_body = current_body
@@ -122,7 +122,7 @@
current_body = M.mind.current
if(ishuman(M))
var/mob/living/carbon/human/H = M
- H.set_species("Skeleton")
+ H.set_species(/datum/species/skeleton)
H.unEquip(H.wear_suit)
H.unEquip(H.head)
H.unEquip(H.shoes)
diff --git a/code/datums/weather/weather_types/radiation_storm.dm b/code/datums/weather/weather_types/radiation_storm.dm
index acd155e7560..a1c6a83da61 100644
--- a/code/datums/weather/weather_types/radiation_storm.dm
+++ b/code/datums/weather/weather_types/radiation_storm.dm
@@ -34,7 +34,7 @@
if(prob(40))
if(ishuman(L))
var/mob/living/carbon/human/H = L
- if(!(RADIMMUNE in H.species.species_traits))
+ if(!(RADIMMUNE in H.dna.species.species_traits))
if(prob(max(0, 100 - resist)))
randmuti(H) // Applies bad mutation
if(prob(50))
diff --git a/code/game/dna/dna2.dm b/code/game/dna/dna2.dm
index 2d3fee8d4e9..cf335b5f7d6 100644
--- a/code/game/dna/dna2.dm
+++ b/code/game/dna/dna2.dm
@@ -99,7 +99,7 @@ var/global/list/bad_blocks[0]
var/b_type = "A+" // Should probably change to an integer => string map but I'm lazy.
var/real_name // Stores the real name of the person who originally got this dna datum. Used primarily for changelings,
- var/datum/species/species2 = new /datum/species/human //The type of mutant race the player is if applicable (i.e. potato-man)
+ var/datum/species/species = new /datum/species/human //The type of mutant race the player is if applicable (i.e. potato-man)
// Make a copy of this strand.
// USE THIS WHEN COPYING STUFF OR YOU'LL GET CORRUPTION!
@@ -109,7 +109,7 @@ var/global/list/bad_blocks[0]
new_dna.struc_enzymes_original=struc_enzymes_original // will make clone's SE the same as the original, do we want this?
new_dna.b_type=b_type
new_dna.real_name=real_name
- new_dna.species2 = new species2.type
+ new_dna.species = new species.type
for(var/b=1;b<=DNA_SE_LENGTH;b++)
new_dna.SE[b]=SE[b]
if(b<=DNA_UI_LENGTH)
@@ -140,7 +140,7 @@ var/global/list/bad_blocks[0]
// FIXME: Species-specific defaults pls
var/obj/item/organ/external/head/H = character.get_organ("head")
var/obj/item/organ/internal/eyes/eyes_organ = character.get_int_organ(/obj/item/organ/internal/eyes)
- var/datum/species/S = character.species
+ var/datum/species/S = character.dna.species
/*// Body Accessory
if(!character.body_accessory)
@@ -420,7 +420,7 @@ var/global/list/bad_blocks[0]
data["UE"] = unique_enzymes
data["SE"] = SE.Copy() // This is probably too lazy for my own good
data["UI"] = UI.Copy()
- data["species"] = species2.type // This works because `species` is a string, not a datum
+ data["species"] = species.type // This works because `species` is a string, not a datum
// Because old DNA coders were insane or something
data["b_type"] = b_type
data["real_name"] = real_name
@@ -433,10 +433,10 @@ var/global/list/bad_blocks[0]
UI = data["UI"]
UpdateUI()
UpdateSE()
- species2 = new data["species"]
+ species = new data["species"]
b_type = data["b_type"]
real_name = data["real_name"]
// a nice hook for if/when we refactor species on dna
/datum/dna/proc/get_species_name()
- return species2.name
+ return species.name
\ No newline at end of file
diff --git a/code/game/dna/dna2_domutcheck.dm b/code/game/dna/dna2_domutcheck.dm
index f2ad2b2fe03..07979f40b7c 100644
--- a/code/game/dna/dna2_domutcheck.dm
+++ b/code/game/dna/dna2_domutcheck.dm
@@ -16,7 +16,7 @@
/proc/genemutcheck(var/mob/living/M, var/block, var/connected=null, var/flags=0)
if(ishuman(M)) // Would've done this via species instead of type, but the basic mob doesn't have a species, go figure.
var/mob/living/carbon/human/H = M
- if(NO_DNA in H.species.species_traits)
+ if(NO_DNA in H.dna.species.species_traits)
return
if(!M)
return
@@ -42,7 +42,7 @@
var/defaultgenes // Do not mutate inherent species abilities
if(ishuman(M))
var/mob/living/carbon/human/H = M
- defaultgenes = H.species.default_genes
+ defaultgenes = H.dna.species.default_genes
if((gene in defaultgenes) && gene_active)
return
diff --git a/code/game/dna/dna2_helpers.dm b/code/game/dna/dna2_helpers.dm
index 6c05dfd6f2b..d392ab303ca 100644
--- a/code/game/dna/dna2_helpers.dm
+++ b/code/game/dna/dna2_helpers.dm
@@ -133,7 +133,7 @@
var/mob/living/carbon/human/H = src
var/obj/item/organ/external/head/head_organ = H.get_organ("head")
var/obj/item/organ/internal/eyes/eye_organ = H.get_int_organ(/obj/item/organ/internal/eyes)
- var/datum/species/S = H.species
+ var/datum/species/S = H.dna.species
if(istype(head_organ))
dna.write_head_attributes(head_organ)
if(istype(eye_organ))
diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm
index 93d9977b5e8..354536561c1 100644
--- a/code/game/dna/dna_modifier.dm
+++ b/code/game/dna/dna_modifier.dm
@@ -327,7 +327,7 @@
if(ishuman(occupant))
var/mob/living/carbon/human/H = occupant
- if(NO_DNA in H.species.species_traits)
+ if(NO_DNA in H.dna.species.species_traits)
return 1
var/radiation_protection = occupant.run_armor_check(null, "rad", "Your clothes feel warm.", "Your clothes feel warm.")
diff --git a/code/game/dna/genes/goon_disabilities.dm b/code/game/dna/genes/goon_disabilities.dm
index e59dd3fc558..b39b31a1c5a 100644
--- a/code/game/dna/genes/goon_disabilities.dm
+++ b/code/game/dna/genes/goon_disabilities.dm
@@ -44,7 +44,7 @@
return 0
if(ishuman(M))
var/mob/living/carbon/human/H = M
- if((RADIMMUNE in H.species.species_traits) && !(flags & MUTCHK_FORCED))
+ if((RADIMMUNE in H.dna.species.species_traits) && !(flags & MUTCHK_FORCED))
return 0
return 1
diff --git a/code/game/dna/genes/monkey.dm b/code/game/dna/genes/monkey.dm
index 666cb057635..c79e4168490 100644
--- a/code/game/dna/genes/monkey.dm
+++ b/code/game/dna/genes/monkey.dm
@@ -31,18 +31,18 @@
H.SetStunned(0)
H.invisibility = initial(H.invisibility)
- if(!H.species.primitive_form) //If the creature in question has no primitive set, this is going to be messy.
+ if(!H.dna.species.primitive_form) //If the creature in question has no primitive set, this is going to be messy.
H.gib()
return
- H.set_species(H.species.primitive_form)
+ H.set_species(H.dna.species.primitive_form)
QDEL_NULL(H.hud_used)
if(H.client)
H.hud_used = new /datum/hud/monkey(H, ui_style2icon(H.client.prefs.UI_style), H.client.prefs.UI_style_color, H.client.prefs.UI_style_alpha)
- to_chat(H, "You are now a [H.species.name].")
+ to_chat(H, "You are now a [H.dna.species.name].")
return H
@@ -69,11 +69,11 @@
H.SetStunned(0)
H.invisibility = initial(H.invisibility)
- if(!H.species.greater_form) //If the creature in question has no primitive set, this is going to be messy.
+ if(!H.dna.species.greater_form) //If the creature in question has no primitive set, this is going to be messy.
H.gib()
return
- H.set_species(H.species.greater_form)
+ H.set_species(H.dna.species.greater_form)
H.real_name = H.dna.real_name
H.name = H.real_name
@@ -82,6 +82,6 @@
if(H.client)
H.hud_used = new /datum/hud/human(H, ui_style2icon(H.client.prefs.UI_style), H.client.prefs.UI_style_color, H.client.prefs.UI_style_alpha)
- to_chat(H, "You are now a [H.species.name].")
+ to_chat(H, "You are now a [H.dna.species.name].")
return H
diff --git a/code/game/dna/genes/powers.dm b/code/game/dna/genes/powers.dm
index e9d69c2b904..1e5e6b66842 100644
--- a/code/game/dna/genes/powers.dm
+++ b/code/game/dna/genes/powers.dm
@@ -39,7 +39,7 @@
return 0
if(ishuman(M))
var/mob/living/carbon/human/H = M
- if(H.species && H.species.slowdown && !(flags & MUTCHK_FORCED))
+ if(H.dna.species && H.dna.species.slowdown && !(flags & MUTCHK_FORCED))
return 0
return 1
diff --git a/code/game/dna/genes/vg_powers.dm b/code/game/dna/genes/vg_powers.dm
index afb918fe72b..f9e8620bef1 100644
--- a/code/game/dna/genes/vg_powers.dm
+++ b/code/game/dna/genes/vg_powers.dm
@@ -50,7 +50,7 @@
M.change_eye_color(new_eyes)
//Alt heads.
- if(head_organ.dna.species2.bodyflags & HAS_ALT_HEADS)
+ if(head_organ.dna.species.bodyflags & HAS_ALT_HEADS)
var/list/valid_alt_heads = M.generate_valid_alt_heads()
var/new_alt_head = input("Please select alternate head", "Character Generation", head_organ.alt_head) as null|anything in valid_alt_heads
if(new_alt_head)
@@ -92,7 +92,7 @@
M.change_facial_hair_color(new_facial, 1)
//Head accessory.
- if(head_organ.dna.species2.bodyflags & HAS_HEAD_ACCESSORY)
+ if(head_organ.dna.species.bodyflags & HAS_HEAD_ACCESSORY)
var/list/valid_head_accessories = M.generate_valid_head_accessories()
var/new_head_accessory = input("Please select head accessory style", "Character Generation", head_organ.ha_style) as null|anything in valid_head_accessories
if(new_head_accessory)
@@ -103,7 +103,7 @@
M.change_head_accessory_color(new_head_accessory_colour)
//Body accessory.
- if(M.species.tail && M.species.bodyflags & HAS_TAIL)
+ if(M.dna.species.tail && M.dna.species.bodyflags & HAS_TAIL)
var/list/valid_body_accessories = M.generate_valid_body_accessories()
if(valid_body_accessories.len > 1) //By default valid_body_accessories will always have at the very least a 'none' entry populating the list, even if the user's species is not present in any of the list items.
var/new_body_accessory = input("Please select body accessory style", "Character Generation", M.body_accessory) as null|anything in valid_body_accessories
@@ -111,7 +111,7 @@
M.change_body_accessory(new_body_accessory)
//Head markings.
- if(M.species.bodyflags & HAS_HEAD_MARKINGS)
+ if(M.dna.species.bodyflags & HAS_HEAD_MARKINGS)
var/list/valid_head_markings = M.generate_valid_markings("head")
var/new_marking = input("Please select head marking style", "Character Generation", M.m_styles["head"]) as null|anything in valid_head_markings
if(new_marking)
@@ -121,7 +121,7 @@
if(new_marking_colour)
M.change_marking_color(new_marking_colour, "head")
//Body markings.
- if(M.species.bodyflags & HAS_BODY_MARKINGS)
+ if(M.dna.species.bodyflags & HAS_BODY_MARKINGS)
var/list/valid_body_markings = M.generate_valid_markings("body")
var/new_marking = input("Please select body marking style", "Character Generation", M.m_styles["body"]) as null|anything in valid_body_markings
if(new_marking)
@@ -131,7 +131,7 @@
if(new_marking_colour)
M.change_marking_color(new_marking_colour, "body")
//Tail markings.
- if(M.species.bodyflags & HAS_TAIL_MARKINGS)
+ if(M.dna.species.bodyflags & HAS_TAIL_MARKINGS)
var/list/valid_tail_markings = M.generate_valid_markings("tail")
var/new_marking = input("Please select tail marking style", "Character Generation", M.m_styles["tail"]) as null|anything in valid_tail_markings
if(new_marking)
@@ -142,7 +142,7 @@
M.change_marking_color(new_marking_colour, "tail")
//Skin tone.
- if(M.species.bodyflags & HAS_SKIN_TONE)
+ if(M.dna.species.bodyflags & HAS_SKIN_TONE)
var/new_tone = input("Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation", M.s_tone) as null|text
if(!new_tone)
new_tone = 35
@@ -150,11 +150,11 @@
new_tone = 35 - max(min(round(text2num(new_tone)), 220), 1)
M.change_skin_tone(new_tone)
- if(M.species.bodyflags & HAS_ICON_SKIN_TONE)
- var/prompt = "Please select skin tone: 1-[M.species.icon_skin_tones.len] ("
- for(var/i = 1 to M.species.icon_skin_tones.len)
- prompt += "[i] = [M.species.icon_skin_tones[i]]"
- if(i != M.species.icon_skin_tones.len)
+ if(M.dna.species.bodyflags & HAS_ICON_SKIN_TONE)
+ var/prompt = "Please select skin tone: 1-[M.dna.species.icon_skin_tones.len] ("
+ for(var/i = 1 to M.dna.species.icon_skin_tones.len)
+ prompt += "[i] = [M.dna.species.icon_skin_tones[i]]"
+ if(i != M.dna.species.icon_skin_tones.len)
prompt += ", "
prompt += ")"
@@ -162,11 +162,11 @@
if(!new_tone)
new_tone = 0
else
- new_tone = max(min(round(text2num(new_tone)), M.species.icon_skin_tones.len), 1)
+ new_tone = max(min(round(text2num(new_tone)), M.dna.species.icon_skin_tones.len), 1)
M.change_skin_tone(new_tone)
//Skin colour.
- if(M.species.bodyflags & HAS_SKIN_COLOR)
+ if(M.dna.species.bodyflags & HAS_SKIN_COLOR)
var/new_body_colour = input("Please select body colour.", "Character Generation", M.skin_colour) as null|color
if(new_body_colour)
M.change_skin_color(new_body_colour)
diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm
index bab5594b572..477a0de2573 100644
--- a/code/game/gamemodes/changeling/changeling.dm
+++ b/code/game/gamemodes/changeling/changeling.dm
@@ -112,7 +112,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon"
if(identity_theft.target && identity_theft.target.current)
identity_theft.target_real_name = kill_objective.target.current.real_name //Whoops, forgot this.
var/mob/living/carbon/human/H = identity_theft.target.current
- if(can_absorb_species(H.species)) // For species that can't be absorbed - should default to an escape objective
+ if(can_absorb_species(H.dna.species)) // For species that can't be absorbed - should default to an escape objective
identity_theft.explanation_text = "Escape on the shuttle or an escape pod with the identity of [identity_theft.target_real_name], the [identity_theft.target.assigned_role] while wearing [identity_theft.target.p_their()] identification card."
changeling.objectives += identity_theft
else
@@ -273,7 +273,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon"
/datum/changeling/proc/find_dna(datum/dna/tDNA)
for(var/datum/dna/D in (absorbed_dna + protected_dna))
- if(tDNA.unique_enzymes == D.unique_enzymes && tDNA.uni_identity == D.uni_identity && tDNA.species2.type == D.species2.type)
+ if(tDNA.unique_enzymes == D.unique_enzymes && tDNA.uni_identity == D.uni_identity && tDNA.species.type == D.species.type)
return D
return null
@@ -316,7 +316,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon"
to_chat(user, "DNA of [target] is ruined beyond usability!")
return
- if(NO_DNA in T.species.species_traits)
+ if(NO_DNA in T.dna.species.species_traits)
to_chat(user, "This creature does not have DNA!")
return
diff --git a/code/game/gamemodes/changeling/powers/humanform.dm b/code/game/gamemodes/changeling/powers/humanform.dm
index 429954ce539..fb3012cd274 100644
--- a/code/game/gamemodes/changeling/powers/humanform.dm
+++ b/code/game/gamemodes/changeling/powers/humanform.dm
@@ -29,7 +29,7 @@
user.dna = chosen_dna.Clone()
user.real_name = chosen_dna.real_name
if(istype(user))
- user.set_species(chosen_dna.species2)
+ user.set_species(chosen_dna.species)
domutcheck(user,null,MUTCHK_FORCED)
user.flavor_text = ""
user.dna.UpdateSE()
diff --git a/code/game/gamemodes/changeling/powers/lesserform.dm b/code/game/gamemodes/changeling/powers/lesserform.dm
index 3d3b7f2bc07..d6b4870c50a 100644
--- a/code/game/gamemodes/changeling/powers/lesserform.dm
+++ b/code/game/gamemodes/changeling/powers/lesserform.dm
@@ -17,7 +17,7 @@
var/mob/living/carbon/human/H = user
- if(!istype(H) || !H.species.primitive_form)
+ if(!istype(H) || !H.dna.species.primitive_form)
to_chat(H, "We cannot perform this ability in this form!")
return
diff --git a/code/game/gamemodes/changeling/powers/revive.dm b/code/game/gamemodes/changeling/powers/revive.dm
index b3881ee54fb..3e03d49dc49 100644
--- a/code/game/gamemodes/changeling/powers/revive.dm
+++ b/code/game/gamemodes/changeling/powers/revive.dm
@@ -31,7 +31,7 @@
H.traumatic_shock = 0
H.shock_stage = 0
H.next_pain_time = 0
- H.species.create_organs(H)
+ H.dna.species.create_organs(H)
// Now that recreating all organs is necessary, the rest of this organ stuff probably
// isn't, but I don't want to remove it, just in case.
for(var/organ_name in H.bodyparts_by_name)
diff --git a/code/game/gamemodes/changeling/powers/swap_form.dm b/code/game/gamemodes/changeling/powers/swap_form.dm
index 9015677c70e..c40a33284a1 100644
--- a/code/game/gamemodes/changeling/powers/swap_form.dm
+++ b/code/game/gamemodes/changeling/powers/swap_form.dm
@@ -17,7 +17,7 @@
if((NOCLONE || SKELETON || HUSK) in target.mutations)
to_chat(user, "DNA of [target] is ruined beyond usability!")
return
- if(!istype(target) || issmall(target) || NO_DNA in target.species.species_traits)
+ if(!istype(target) || issmall(target) || NO_DNA in target.dna.species.species_traits)
to_chat(user, "[target] is not compatible with this ability.")
return
return 1
diff --git a/code/game/gamemodes/changeling/powers/tiny_prick.dm b/code/game/gamemodes/changeling/powers/tiny_prick.dm
index cbbac28dbcb..082ec9bbe54 100644
--- a/code/game/gamemodes/changeling/powers/tiny_prick.dm
+++ b/code/game/gamemodes/changeling/powers/tiny_prick.dm
@@ -80,7 +80,7 @@
selected_dna = changeling.select_dna("Select the target DNA: ", "Target DNA")
if(!selected_dna)
return
- if((NOTRANSSTING in selected_dna.species2.species_traits) || selected_dna.species2.is_small)
+ if((NOTRANSSTING in selected_dna.species.species_traits) || selected_dna.species.is_small)
to_chat(user, "The selected DNA is incompatible with our sting.")
return
..()
@@ -93,7 +93,7 @@
return FALSE
if(ishuman(target))
var/mob/living/carbon/human/H = target
- if(NO_DNA in H.species.species_traits)
+ if(NO_DNA in H.dna.species.species_traits)
to_chat(user, "This won't work on a creature without DNA.")
return FALSE
return TRUE
@@ -115,7 +115,7 @@
target.real_name = NewDNA.real_name
var/mob/living/carbon/human/H = target
if(istype(H))
- H.set_species()
+ H.set_species(NewDNA.species)
target.UpdateAppearance()
domutcheck(target, null)
feedback_add_details("changeling_powers","TS")
diff --git a/code/game/gamemodes/changeling/powers/transform.dm b/code/game/gamemodes/changeling/powers/transform.dm
index 7e89a08c690..b7c8abefd1d 100644
--- a/code/game/gamemodes/changeling/powers/transform.dm
+++ b/code/game/gamemodes/changeling/powers/transform.dm
@@ -17,7 +17,7 @@
user.dna = chosen_dna.Clone()
user.real_name = chosen_dna.real_name
if(ishuman(user))
- user.set_species(chosen_dna.species2)
+ user.set_species(chosen_dna.species)
domutcheck(user, null, MUTCHK_FORCED) //Ensures species that get powers by the species proc handle_dna keep them
user.flavor_text = ""
user.dna.UpdateSE()
diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm
index 2edbfca609f..a223f2e5125 100644
--- a/code/game/gamemodes/cult/cult_items.dm
+++ b/code/game/gamemodes/cult/cult_items.dm
@@ -50,7 +50,7 @@
..()
if(ishuman(target))
var/mob/living/carbon/human/H = target
- if((H.stat != DEAD) && !(NO_BLOOD in H.species.species_traits))
+ if((H.stat != DEAD) && !(NO_BLOOD in H.dna.species.species_traits))
H.bleed(50)
/obj/item/restraints/legcuffs/bola/cult
diff --git a/code/game/gamemodes/heist/heist.dm b/code/game/gamemodes/heist/heist.dm
index 3b908952de7..4cbe909ef84 100644
--- a/code/game/gamemodes/heist/heist.dm
+++ b/code/game/gamemodes/heist/heist.dm
@@ -101,7 +101,7 @@ var/global/list/obj/cortical_stacks = list() //Stacks for 'leave nobody behind'
vox.name = vox.real_name
newraider.name = vox.name
vox.age = rand(12,20)
- vox.set_species("Vox")
+ vox.set_species(/datum/species/vox)
vox.s_tone = rand(1, 6)
vox.languages = list() // Removing language from chargen.
vox.flavor_text = ""
diff --git a/code/game/gamemodes/miniantags/abduction/abduction.dm b/code/game/gamemodes/miniantags/abduction/abduction.dm
index 1c6dc7d3022..d94ea557744 100644
--- a/code/game/gamemodes/miniantags/abduction/abduction.dm
+++ b/code/game/gamemodes/miniantags/abduction/abduction.dm
@@ -112,7 +112,7 @@
L = agent_landmarks[team_number]
H.forceMove(get_turf(L))
H.body_accessory = null
- H.set_species("Abductor")
+ H.set_species(/datum/species/abductor)
H.mind.abductor.agent = 1
H.mind.abductor.team = team_number
H.real_name = team_name + " Agent"
@@ -128,7 +128,7 @@
L = scientist_landmarks[team_number]
H.forceMove(get_turf(L))
H.body_accessory = null
- H.set_species("Abductor")
+ H.set_species(/datum/species/abductor)
H.mind.abductor.scientist = 1
H.mind.abductor.team = team_number
H.real_name = team_name + " Scientist"
@@ -165,7 +165,7 @@
L = agent_landmarks[team_number]
H.forceMove(get_turf(L))
H.body_accessory = null
- H.set_species("Abductor")
+ H.set_species(/datum/species/abductor)
H.mind.abductor.agent = 1
H.mind.abductor.team = team_number
H.real_name = team_name + " Agent"
@@ -179,7 +179,7 @@
L = scientist_landmarks[team_number]
H.forceMove(get_turf(L))
H.body_accessory = null
- H.set_species("Abductor")
+ H.set_species(/datum/species/abductor)
H.mind.abductor.scientist = 1
H.mind.abductor.team = team_number
H.real_name = team_name + " Scientist"
diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
index 9a43df56926..99e93288645 100644
--- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
+++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
@@ -432,7 +432,7 @@ Congratulations! You are now trained for invasive xenobiology research!"}
if(ishuman(L))
var/mob/living/carbon/human/H = L
- species = "[H.species.name]"
+ species = "[H.dna.species.name]"
if(L.mind && L.mind.changeling)
species = "Changeling lifeform"
var/obj/item/organ/internal/heart/gland/temp = locate() in H.internal_organs
diff --git a/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm b/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm
index d07381b7cce..3ecb33466c8 100644
--- a/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm
+++ b/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm
@@ -37,7 +37,7 @@
/datum/surgery_step/internal/extract_organ/end_step(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
var/mob/living/carbon/human/AB = target
- if(NO_INTORGANS in AB.species.species_traits)
+ if(NO_INTORGANS in AB.dna.species.species_traits)
user.visible_message("[user] prepares [target]'s [target_zone] for further dissection!", "You prepare [target]'s [target_zone] for further dissection.")
return TRUE
if(IC)
diff --git a/code/game/gamemodes/miniantags/abduction/gland.dm b/code/game/gamemodes/miniantags/abduction/gland.dm
index 8e7219e401a..9b03311d88c 100644
--- a/code/game/gamemodes/miniantags/abduction/gland.dm
+++ b/code/game/gamemodes/miniantags/abduction/gland.dm
@@ -108,7 +108,7 @@
/obj/item/organ/internal/heart/gland/pop/activate()
to_chat(owner, "You feel unlike yourself.")
- var/species = pick("Unathi","Skrell","Diona","Tajaran","Vulpkanin","Kidan","Grey","Diona")
+ var/species = pick(/datum/species/unathi, /datum/species/skrell, /datum/species/diona, /datum/species/tajaran, /datum/species/vulpkanin, /datum/species/kidan, /datum/species/grey)
owner.set_species(species)
/obj/item/organ/internal/heart/gland/ventcrawling
@@ -218,7 +218,7 @@
var/datum/dna/owner_dna = H.dna
clone.rename_character(clone.name, owner_dna.real_name)
clone.dna = owner_dna.Clone()
- clone.set_species(H.species.name)
+ clone.set_species(H.dna.species)
clone.body_accessory = H.body_accessory
domutcheck(clone)
diff --git a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm
index 8682b50fc05..3b339ad7c40 100644
--- a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm
+++ b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm
@@ -47,9 +47,9 @@
/obj/machinery/abductor/experiment/proc/dissection_icon(mob/living/carbon/human/H)
var/icon/I = icon(H.stand_icon)
- var/icon/splat = icon(H.species.damage_overlays, "30")
- splat.Blend(icon(H.species.damage_mask, "torso"), ICON_MULTIPLY)
- splat.Blend(H.species.blood_color, ICON_MULTIPLY)
+ var/icon/splat = icon(H.dna.species.damage_overlays, "30")
+ splat.Blend(icon(H.dna.species.damage_mask, "torso"), ICON_MULTIPLY)
+ splat.Blend(H.dna.species.blood_color, ICON_MULTIPLY)
I.Blend(splat, ICON_OVERLAY)
return I
diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm
index b745e822993..57c511c65ad 100644
--- a/code/game/gamemodes/nuclear/nuclear.dm
+++ b/code/game/gamemodes/nuclear/nuclear.dm
@@ -145,7 +145,7 @@ proc/issyndicate(mob/living/M as mob)
var/mob/living/carbon/human/M = synd_mind.current
var/obj/item/organ/external/head/head_organ = M.get_organ("head")
- M.set_species("Human",1)
+ M.set_species(/datum/species/human, TRUE)
M.dna.ready_dna(M) // Quadriplegic Nuke Ops won't be participating in the paralympics
M.reagents.add_reagent("mutadone", 1) //No fat/blind/colourblind/epileptic/whatever ops.
M.overeatduration = 0
@@ -159,8 +159,8 @@ proc/issyndicate(mob/living/M as mob)
head_organ.sec_hair_colour = hair_c
M.change_eye_color(eye_c)
M.s_tone = skin_tone
- head_organ.h_style = random_hair_style(M.gender, head_organ.dna.species2.name)
- head_organ.f_style = random_facial_hair_style(M.gender, head_organ.dna.species2.name)
+ head_organ.h_style = random_hair_style(M.gender, head_organ.dna.species.name)
+ head_organ.f_style = random_facial_hair_style(M.gender, head_organ.dna.species.name)
M.body_accessory = null
M.regenerate_icons()
M.update_body()
@@ -253,7 +253,7 @@ proc/issyndicate(mob/living/M as mob)
U.hidden_uplink.uses = 20
synd_mob.equip_to_slot_or_del(U, slot_in_backpack)
- if(synd_mob.species)
+ if(synd_mob.dna.species)
/*
Incase anyone ever gets the burning desire to have nukeops with randomized apperances. -- Dave
@@ -262,7 +262,7 @@ proc/issyndicate(mob/living/M as mob)
A.randomize_appearance_for(synd_mob)
*/
- var/race = synd_mob.species.name
+ var/race = synd_mob.dna.species.name
switch(race)
if("Vox" || "Vox Armalis")
diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm
index 07395aa0578..b7364970351 100644
--- a/code/game/gamemodes/objective.dm
+++ b/code/game/gamemodes/objective.dm
@@ -281,7 +281,7 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu
for(var/datum/mind/possible_target in ticker.minds)
if(possible_target != owner && ishuman(possible_target.current) && (possible_target.current.stat != DEAD) && possible_target.current.client)
var/mob/living/carbon/human/H = possible_target.current
- if(!(NO_DNA in H.species.species_traits))
+ if(!(NO_DNA in H.dna.species.species_traits))
possible_targets += possible_target
if(possible_targets.len > 0)
target = pick(possible_targets)
@@ -445,7 +445,7 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu
n_p++
else if(ticker.current_state == GAME_STATE_PLAYING)
for(var/mob/living/carbon/human/P in player_list)
- if(NO_DNA in P.species.species_traits)
+ if(NO_DNA in P.dna.species.species_traits)
continue
if(P.client && !(P.mind in ticker.mode.changelings) && P.mind!=owner)
n_p++
diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm
index 89aee290422..3cb08739a7c 100644
--- a/code/game/gamemodes/shadowling/shadowling_abilities.dm
+++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm
@@ -371,7 +371,7 @@
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/shadowling(H), slot_gloves)
H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/shadowling(H), slot_wear_mask)
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/shadowling(H), slot_glasses)
- H.set_species("Shadowling")
+ H.set_species(/datum/species/shadow/ling)
/obj/effect/proc_holder/spell/targeted/collective_mind //Lets a shadowling bring together their thralls' strength, granting new abilities and a headcount
name = "Collective Hivemind"
@@ -644,7 +644,7 @@
thrallToRevive.visible_message("[thrallToRevive] slowly rises, no longer recognizable as human.", \
"You feel new power flow into you. You have been gifted by your masters. You now closely resemble them. You are empowered in \
darkness but wither slowly in light. In addition, you now have glare and true shadow walk.")
- thrallToRevive.set_species("Lesser Shadowling")
+ thrallToRevive.set_species(/datum/species/shadow/ling/lesser)
thrallToRevive.mind.RemoveSpell(/obj/effect/proc_holder/spell/targeted/lesser_shadow_walk)
thrallToRevive.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/glare(null))
thrallToRevive.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/shadow_walk(null))
diff --git a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm
index 4239b5db327..03780f7a47e 100644
--- a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm
+++ b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm
@@ -91,7 +91,7 @@ var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "N
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/shadowling(user), slot_gloves)
H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/shadowling(user), slot_wear_mask)
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/shadowling(user), slot_glasses)
- H.set_species("Shadowling") //can't be a shadowling without being a shadowling
+ H.set_species(/datum/species/shadow/ling) //can't be a shadowling without being a shadowling
H.mind.RemoveSpell(src)
diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm
index c9dad5c510d..6d82f6c48e1 100644
--- a/code/game/gamemodes/vampire/vampire_powers.dm
+++ b/code/game/gamemodes/vampire/vampire_powers.dm
@@ -239,7 +239,7 @@
if(ishuman(user))
var/mob/living/carbon/human/H = user
scramble(1, H, 100)
- H.real_name = random_name(H.gender, H.species.name) //Give them a name that makes sense for their species.
+ H.real_name = random_name(H.gender, H.dna.species.name) //Give them a name that makes sense for their species.
H.sync_organ_dna(assimilate = 1)
H.update_body(0)
H.reset_hair() //No more winding up with hairstyles you're not supposed to have, and blowing your cover.
diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm
index 7c1a3526002..91c36356fd9 100644
--- a/code/game/gamemodes/wizard/artefact.dm
+++ b/code/game/gamemodes/wizard/artefact.dm
@@ -321,11 +321,11 @@ var/global/list/multiverse = list()
to_chat(M, "You are an alternate version of [user.real_name] from another universe! Help [user.p_them()] accomplish [user.p_their()] goals at all costs.")
M.faction = list("[user.real_name]")
if(duplicate_self)
- M.set_species(user.get_species()) //duplicate the sword user's species.
+ M.set_species(user.dna.species) //duplicate the sword user's species.
else
if(prob(50))
- var/list/all_species = list("Human","Unathi","Skrell","Tajaran","Kidan","Golem","Diona","Machine","Slime People","Grey","Vulpkanin")
- M.set_species(pick(all_species))
+ var/list/list_all_species = list(/datum/species/human, /datum/species/unathi, /datum/species/skrell, /datum/species/tajaran, /datum/species/kidan, /datum/species/golem, /datum/species/diona, /datum/species/machine, /datum/species/slime, /datum/species/grey, /datum/species/vulpkanin)
+ M.set_species(pick(list_all_species))
M.real_name = user.real_name //this is clear down here in case the user happens to become a golem; that way they have the proper name.
M.name = user.real_name
if(duplicate_self)
@@ -585,9 +585,9 @@ var/global/list/multiverse = list()
M.equip_to_slot_or_del(W, slot_wear_id)
if(M.get_species() == "Vox")
- M.species.after_equip_job(null, M) //Voxygen(tm)
+ M.dna.species.after_equip_job(null, M) //Voxygen(tm)
if(M.get_species() == "Plasmaman")
- M.species.after_equip_job(null, M) //No fireballs from other dimensions.
+ M.dna.species.after_equip_job(null, M) //No fireballs from other dimensions.
M.update_icons()
@@ -646,7 +646,7 @@ var/global/list/multiverse = list()
if(heresy)
spawnheresy(M)//oh god why
else
- M.set_species("Skeleton")
+ M.set_species(/datum/species/skeleton)
M.visible_message(" A massive amount of flesh sloughs off [M] and a skeleton rises up!")
M.revive()
equip_skeleton(M)
@@ -713,7 +713,7 @@ var/global/list/multiverse = list()
H.equip_to_slot_or_del(new /obj/item/twohanded/spear(H), slot_back)
/obj/item/necromantic_stone/proc/spawnheresy(mob/living/carbon/human/H as mob)
- H.set_species("Human")
+ H.set_species(/datum/species/human)
if(H.gender == MALE)
H.change_gender(FEMALE)
diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm
index b5e798b95c7..eee87148118 100644
--- a/code/game/gamemodes/wizard/wizard.dm
+++ b/code/game/gamemodes/wizard/wizard.dm
@@ -153,7 +153,7 @@
wizard_mob.faction = list("wizard")
- wizard_mob.species.after_equip_job(null, wizard_mob)
+ wizard_mob.dna.species.after_equip_job(null, wizard_mob)
to_chat(wizard_mob, "You will find a list of available spells in your spell book. Choose your magic arsenal carefully.")
to_chat(wizard_mob, "The spellbook is bound to you, and others cannot use it.")
diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm
index ffcb288c1c5..418539b5bed 100644
--- a/code/game/jobs/job/job.dm
+++ b/code/game/jobs/job/job.dm
@@ -74,12 +74,12 @@
if(!H)
return 0
- H.species.before_equip_job(src, H, visualsOnly)
+ H.dna.species.before_equip_job(src, H, visualsOnly)
if(outfit)
H.equipOutfit(outfit, visualsOnly)
- H.species.after_equip_job(src, H, visualsOnly)
+ H.dna.species.after_equip_job(src, H, visualsOnly)
if(!visualsOnly && announce)
announce(H)
@@ -183,7 +183,7 @@
else
permitted = TRUE
- if(G.whitelisted && (G.whitelisted != H.species.name || !is_alien_whitelisted(H, G.whitelisted)))
+ if(G.whitelisted && (G.whitelisted != H.dna.species.name || !is_alien_whitelisted(H, G.whitelisted)))
permitted = FALSE
if(!permitted)
diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index 934e925ce62..44ef4ee26da 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -92,7 +92,7 @@
if(filtering > 0)
if(beaker)
// To prevent runtimes from drawing blood from runtime, and to prevent getting IPC blood.
- if(!istype(occupant) || !occupant.dna || (NO_BLOOD in occupant.species.species_traits))
+ if(!istype(occupant) || !occupant.dna || (NO_BLOOD in occupant.dna.species.species_traits))
filtering = 0
return
@@ -167,10 +167,10 @@
occupantData["maxTemp"] = 1000 // If you get a burning vox armalis into the sleeper, congratulations
// Because we can put simple_animals in here, we need to do something tricky to get things working nice
occupantData["temperatureSuitability"] = 0 // 0 is the baseline
- if(ishuman(occupant) && occupant.species)
+ if(ishuman(occupant) && occupant.dna.species)
// I wanna do something where the bar gets bluer as the temperature gets lower
// For now, I'll just use the standard format for the temperature status
- var/datum/species/sp = occupant.species
+ var/datum/species/sp = occupant.dna.species
if(occupant.bodytemperature < sp.cold_level_3)
occupantData["temperatureSuitability"] = -3
else if(occupant.bodytemperature < sp.cold_level_2)
@@ -197,7 +197,7 @@
crisis = (occupant.health < min_health)
// I'm not sure WHY you'd want to put a simple_animal in a sleeper, but precedent is precedent
// Runtime is aptly named, isn't she?
- if(ishuman(occupant) && !(NO_BLOOD in occupant.species.species_traits))
+ if(ishuman(occupant) && !(NO_BLOOD in occupant.dna.species.species_traits))
occupantData["pulse"] = occupant.get_pulse(GETPULSE_TOOL)
occupantData["hasBlood"] = 1
occupantData["bloodLevel"] = round(occupant.blood_volume)
diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm
index 1d70b389a94..2566cc0f410 100644
--- a/code/game/machinery/adv_med.dm
+++ b/code/game/machinery/adv_med.dm
@@ -387,7 +387,7 @@
var/bloodData[0]
bloodData["hasBlood"] = 0
- if(ishuman(H) && !(NO_BLOOD in H.species.species_traits))
+ if(ishuman(H) && !(NO_BLOOD in H.dna.species.species_traits))
bloodData["hasBlood"] = 1
bloodData["volume"] = H.blood_volume
bloodData["percent"] = round(((H.blood_volume / BLOOD_VOLUME_NORMAL)*100))
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 60d280cf32f..881136dbd58 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -231,7 +231,7 @@
R.dna = new /datum/dna()
var/mob/living/carbon/human/H = new /mob/living/carbon/human(src)
- H.set_species(R.dna.species2)
+ H.set_species(R.dna.species)
occupant = H
if(!R.dna.real_name) //to prevent null names
diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm
index 42061760d92..00bd309b21e 100644
--- a/code/game/machinery/computer/Operating.dm
+++ b/code/game/machinery/computer/Operating.dm
@@ -123,8 +123,8 @@
occupantData["maxTemp"] = 1000 // If you get a burning vox armalis into the sleeper, congratulations
// Because we can put simple_animals in here, we need to do something tricky to get things working nice
occupantData["temperatureSuitability"] = 0 // 0 is the baseline
- if(ishuman(occupant) && occupant.species)
- var/datum/species/sp = occupant.species
+ if(ishuman(occupant) && occupant.dna.species)
+ var/datum/species/sp = occupant.dna.species
if(occupant.bodytemperature < sp.cold_level_3)
occupantData["temperatureSuitability"] = -3
else if(occupant.bodytemperature < sp.cold_level_2)
@@ -147,7 +147,7 @@
occupantData["btCelsius"] = occupant.bodytemperature - T0C
occupantData["btFaren"] = ((occupant.bodytemperature - T0C) * (9.0/5.0))+ 32
- if(ishuman(occupant) && !(NO_BLOOD in occupant.species.species_traits))
+ if(ishuman(occupant) && !(NO_BLOOD in occupant.dna.species.species_traits))
occupantData["pulse"] = occupant.get_pulse(GETPULSE_TOOL)
occupantData["hasBlood"] = 1
occupantData["bloodLevel"] = round(occupant.blood_volume)
diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm
index 64beeb17513..c134747cd41 100644
--- a/code/game/machinery/computer/cloning.dm
+++ b/code/game/machinery/computer/cloning.dm
@@ -356,14 +356,14 @@
return
if(scan_brain && !can_brainscan())
return
- if((isnull(subject)) || (!(ishuman(subject))) || (!subject.dna) || (NO_SCAN in subject.species.species_traits))
+ if((isnull(subject)) || (!(ishuman(subject))) || (!subject.dna) || (NO_SCAN in subject.dna.species.species_traits))
scantemp = "Error: Unable to locate valid genetic data."
SSnanoui.update_uis(src)
return
if(subject.get_int_organ(/obj/item/organ/internal/brain))
var/obj/item/organ/internal/brain/Brn = subject.get_int_organ(/obj/item/organ/internal/brain)
if(istype(Brn))
- if(NO_SCAN in Brn.dna.species2.species_traits)
+ if(NO_SCAN in Brn.dna.species.species_traits)
scantemp = "Error: Subject's brain is incompatible."
SSnanoui.update_uis(src)
return
@@ -401,9 +401,9 @@
var/obj/item/organ/B = subject.get_int_organ(/obj/item/organ/internal/brain)
B.dna.check_integrity()
R.dna=B.dna.Clone()
- if(NO_SCAN in R.dna.species2.species_traits)
+ if(NO_SCAN in R.dna.species.species_traits)
extra_info = "Proper genetic interface not found, defaulting to genetic data of the body."
- R.dna.species2 = new subject.dna.species2.type
+ R.dna.species = new subject.dna.species.type
R.id= copytext(md5(B.dna.real_name), 2, 6)
R.name=B.dna.real_name
else
diff --git a/code/game/machinery/dye_generator.dm b/code/game/machinery/dye_generator.dm
index 89974f9b337..b141990fb6f 100644
--- a/code/game/machinery/dye_generator.dm
+++ b/code/game/machinery/dye_generator.dm
@@ -102,7 +102,7 @@
dye_list += "facial hair"
dye_list += "alt. facial hair theme"
- if(H && (H.species.bodyflags & HAS_SKIN_COLOR))
+ if(H && (H.dna.species.bodyflags & HAS_SKIN_COLOR))
dye_list += "body"
var/what_to_dye = input(user, "Choose an area to apply the dye", "Dye Application") in dye_list
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index a29dcb9e274..e846ba591e2 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -562,7 +562,7 @@ Class Procs:
if(istype(perp.belt, /obj/item/gun) || istype(perp.belt, /obj/item/melee))
threatcount += 2
- if(perp.species.name != "Human") //beepsky so racist.
+ if(perp.dna.species.name != "Human") //beepsky so racist.
threatcount += 2
if(check_records || check_arrest)
diff --git a/code/game/machinery/poolcontroller.dm b/code/game/machinery/poolcontroller.dm
index 39f67a72add..b134b53bd86 100644
--- a/code/game/machinery/poolcontroller.dm
+++ b/code/game/machinery/poolcontroller.dm
@@ -90,7 +90,7 @@
if(drownee && (drownee.lying || deep_water)) //Mob lying down or water is deep (determined by controller)
if(drownee.internal)
return //Has internals, no drowning
- if((NO_BREATHE in drownee.species.species_traits) || (BREATHLESS in drownee.mutations))
+ if((NO_BREATHE in drownee.dna.species.species_traits) || (BREATHLESS in drownee.mutations))
return //doesn't breathe, no drowning
if(drownee.get_species() == "Skrell" || drownee.get_species() == "Neara")
return //fish things don't drown
diff --git a/code/game/machinery/transformer.dm b/code/game/machinery/transformer.dm
index b68076f5c35..e5dc8f7db00 100644
--- a/code/game/machinery/transformer.dm
+++ b/code/game/machinery/transformer.dm
@@ -289,18 +289,18 @@
qdel(I)
H.equipOutfit(selected_outfit)
- H.species.after_equip_job(null, H)
+ H.dna.species.after_equip_job(null, H)
/obj/machinery/transformer/transmogrifier
name = "species transmogrifier"
desc = "As promoted in Calvin & Hobbes!"
- var/target_species = "Human"
+ var/datum/species/target_species = /datum/species/human
/obj/machinery/transformer/transmogrifier/do_transform(mob/living/carbon/human/H)
if(!istype(H))
return
- if(!(target_species in all_species))
+ if(!istype(target_species))
to_chat(H, "'[target_species]' is not a valid species!")
return
H.set_species(target_species)
@@ -336,7 +336,7 @@
to_chat(H, "No genetic template configured!")
return
var/prev_ue = H.dna.unique_enzymes
- H.set_species(template.species2)
+ H.set_species(template.species)
H.dna = template.Clone()
H.real_name = template.real_name
H.sync_organ_dna(assimilate = 0, old_ue = prev_ue)
diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm
index a11236df0e5..18506a5c882 100644
--- a/code/game/objects/effects/mines.dm
+++ b/code/game/objects/effects/mines.dm
@@ -60,7 +60,7 @@
victim.apply_effect(radiation_amount, IRRADIATE, 0)
if(ishuman(victim))
var/mob/living/carbon/human/V = victim
- if(NO_DNA in V.species.species_traits)
+ if(NO_DNA in V.dna.species.species_traits)
return
randmutb(victim)
domutcheck(victim ,null)
diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm
index c8ab2e1fc4f..32b548c38aa 100644
--- a/code/game/objects/items/devices/laserpointer.dm
+++ b/code/game/objects/items/devices/laserpointer.dm
@@ -81,7 +81,7 @@
return
if(ishuman(user))
var/mob/living/carbon/human/H = user
- if((HULK in H.mutations) || (NOGUNS in H.species.species_traits))
+ if((HULK in H.mutations) || (NOGUNS in H.dna.species.species_traits))
user << "Your fingers can't press the button!"
return
diff --git a/code/game/objects/items/weapons/cosmetics.dm b/code/game/objects/items/weapons/cosmetics.dm
index 76d61f5ea44..d9c7eb5ef83 100644
--- a/code/game/objects/items/weapons/cosmetics.dm
+++ b/code/game/objects/items/weapons/cosmetics.dm
@@ -99,7 +99,7 @@
if(!get_location_accessible(H, "mouth"))
to_chat(user, "The mask is in the way.")
return
- if((C.dna.species2.bodyflags & ALL_RPARTS) && robohead.is_monitor) //If the target is of a species that can have prosthetic heads, but the head doesn't support human hair 'wigs'...
+ if((C.dna.species.bodyflags & ALL_RPARTS) && robohead.is_monitor) //If the target is of a species that can have prosthetic heads, but the head doesn't support human hair 'wigs'...
to_chat(user, "You find yourself disappointed at the appalling lack of facial hair.")
return
if(C.f_style == "Shaved")
@@ -130,7 +130,7 @@
if(!get_location_accessible(H, "head"))
to_chat(user, "The headgear is in the way.")
return
- if((C.dna.species2.bodyflags & ALL_RPARTS) && robohead.is_monitor) //If the target is of a species that can have prosthetic heads, but the head doesn't support human hair 'wigs'...
+ if((C.dna.species.bodyflags & ALL_RPARTS) && robohead.is_monitor) //If the target is of a species that can have prosthetic heads, but the head doesn't support human hair 'wigs'...
to_chat(user, "You find yourself disappointed at the appalling lack of hair.")
return
if(C.h_style == "Bald" || C.h_style == "Balding Hair" || C.h_style == "Skinhead")
diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm
index 3a8bf12b143..3a7e203101d 100644
--- a/code/game/objects/items/weapons/dna_injector.dm
+++ b/code/game/objects/items/weapons/dna_injector.dm
@@ -74,7 +74,7 @@
H = M
spawn(0) //Some mutations have sleeps in them, like monkey
- if(!(NOCLONE in M.mutations) && !(H && (NO_DNA in H.species.species_traits))) // prevents drained people from having their DNA changed
+ if(!(NOCLONE in M.mutations) && !(H && (NO_DNA in H.dna.species.species_traits))) // prevents drained people from having their DNA changed
var/prev_ue = M.dna.unique_enzymes
var/mutflags = 0
// UI in syringe.
@@ -113,7 +113,7 @@
if(ishuman(M)) // Would've done this via species instead of type, but the basic mob doesn't have a species, go figure.
var/mob/living/carbon/human/H = M
- if(NO_DNA in H.species.species_traits)
+ if(NO_DNA in H.dna.species.species_traits)
return 0
if(!user.IsAdvancedToolUser())
diff --git a/code/game/objects/items/weapons/dnascrambler.dm b/code/game/objects/items/weapons/dnascrambler.dm
index 2866e8d06ec..fc13fa69f79 100644
--- a/code/game/objects/items/weapons/dnascrambler.dm
+++ b/code/game/objects/items/weapons/dnascrambler.dm
@@ -24,7 +24,7 @@
if(ishuman(M))
var/mob/living/carbon/human/H = M
- if(NO_DNA in H.species.species_traits)
+ if(NO_DNA in H.dna.species.species_traits)
to_chat(user, "You failed to inject [M], as [M.p_they()] [M.p_have()] no DNA to scramble, nor flesh to inject.")
return
@@ -43,7 +43,7 @@
if(istype(target))
var/mob/living/carbon/human/H = target
scramble(1, H, 100)
- H.real_name = random_name(H.gender, H.species.name) //Give them a name that makes sense for their species.
+ H.real_name = random_name(H.gender, H.dna.species.name) //Give them a name that makes sense for their species.
H.sync_organ_dna(assimilate = 1)
H.update_body(0)
H.reset_hair() //No more winding up with hairstyles you're not supposed to have, and blowing your cover.
diff --git a/code/game/objects/items/weapons/scissors.dm b/code/game/objects/items/weapons/scissors.dm
index b5d616a9a51..857e9a0af8c 100644
--- a/code/game/objects/items/weapons/scissors.dm
+++ b/code/game/objects/items/weapons/scissors.dm
@@ -34,18 +34,18 @@
var/obj/item/organ/external/head/C = H.get_organ("head")
var/datum/robolimb/robohead = all_robolimbs[C.model]
if(H.gender == MALE || H.get_species() == "Vulpkanin")
- if(C.dna.species2)
+ if(C.dna.species)
for(var/i in facial_hair_styles_list)
var/datum/sprite_accessory/facial_hair/tmp_facial = facial_hair_styles_list[i]
- if(C.dna.species2.name in tmp_facial.species_allowed) //If the species is allowed to have the style, add the style to the list. Or, if the character has a prosthetic head, give them the human hair styles.
- if(C.dna.species2.bodyflags & ALL_RPARTS) //If the character is of a species that can have full body prosthetics and their head doesn't suport human hair 'wigs', don't add the style to the list.
+ if(C.dna.species.name in tmp_facial.species_allowed) //If the species is allowed to have the style, add the style to the list. Or, if the character has a prosthetic head, give them the human hair styles.
+ if(C.dna.species.bodyflags & ALL_RPARTS) //If the character is of a species that can have full body prosthetics and their head doesn't suport human hair 'wigs', don't add the style to the list.
if(robohead.is_monitor)
to_chat(user, "You are unable to find anything on [H]'s face worth cutting. How disappointing.")
return
continue //If the head DOES support human hair wigs, make sure they don't get monitor-oriented styles.
species_facial_hair += i
else
- if(C.dna.species2.bodyflags & ALL_RPARTS) //If the target is of a species that can have prosthetic heads, and the head supports human hair 'wigs' AND the hair-style is human-suitable, add it to the list.
+ if(C.dna.species.bodyflags & ALL_RPARTS) //If the target is of a species that can have prosthetic heads, and the head supports human hair 'wigs' AND the hair-style is human-suitable, add it to the list.
if(!robohead.is_monitor)
if("Human" in tmp_facial.species_allowed)
species_facial_hair += i
@@ -57,18 +57,18 @@
var/f_new_style = input(user, "Select a facial hair style", "Grooming") as null|anything in species_facial_hair
//handle normal hair
var/list/species_hair = list()
- if(C.dna.species2)
+ if(C.dna.species)
for(var/i in hair_styles_public_list)
var/datum/sprite_accessory/hair/tmp_hair = hair_styles_public_list[i]
- if(C.dna.species2.name in tmp_hair.species_allowed) //If the species is allowed to have the style, add the style to the list. Or, if the character has a prosthetic head, give them the human facial hair styles.
- if(C.dna.species2.bodyflags & ALL_RPARTS) //If the character is of a species that can have full body prosthetics and their head doesn't suport human hair 'wigs', don't add the style to the list.
+ if(C.dna.species.name in tmp_hair.species_allowed) //If the species is allowed to have the style, add the style to the list. Or, if the character has a prosthetic head, give them the human facial hair styles.
+ if(C.dna.species.bodyflags & ALL_RPARTS) //If the character is of a species that can have full body prosthetics and their head doesn't suport human hair 'wigs', don't add the style to the list.
if(robohead.is_monitor)
to_chat(user, "You are unable to find anything on [H]'s head worth cutting. How disappointing.")
return
continue //If the head DOES support human hair wigs, make sure they don't get monitor-oriented styles.
species_hair += i
else
- if(C.dna.species2.bodyflags & ALL_RPARTS) //If the target is of a species that can have prosthetic heads, and the head supports human hair 'wigs' AND the hair-style is human-suitable, add it to the list.
+ if(C.dna.species.bodyflags & ALL_RPARTS) //If the target is of a species that can have prosthetic heads, and the head supports human hair 'wigs' AND the hair-style is human-suitable, add it to the list.
if(!robohead.is_monitor)
if("Human" in tmp_hair.species_allowed)
species_hair += i
diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm
index abe546d25b1..3e7f3eaffe3 100644
--- a/code/game/objects/items/weapons/twohanded.dm
+++ b/code/game/objects/items/weapons/twohanded.dm
@@ -58,7 +58,7 @@
return
if(ishuman(user))
var/mob/living/carbon/human/H = user
- if(H.species.is_small)
+ if(H.dna.species.is_small)
to_chat(user, "It's too heavy for you to wield fully.")
return
if(user.get_inactive_hand())
diff --git a/code/game/objects/items/weapons/whetstone.dm b/code/game/objects/items/weapons/whetstone.dm
index 6cbc2e0e972..5d17e66d976 100644
--- a/code/game/objects/items/weapons/whetstone.dm
+++ b/code/game/objects/items/weapons/whetstone.dm
@@ -52,7 +52,7 @@
/obj/item/whetstone/attack_self(mob/user as mob) //This is just fluff for now. Species datums are global and not newly created instances, so we can't adjust unarmed damage on a per mob basis.
if(ishuman(user))
var/mob/living/carbon/human/H = user
- var/datum/unarmed_attack/attack = H.species.unarmed
+ var/datum/unarmed_attack/attack = H.dna.species.unarmed
if(istype(attack, /datum/unarmed_attack/claws))
H.visible_message("[H] sharpens [H.p_their()] claws on the [src]!", "You sharpen your claws on the [src].")
playsound(get_turf(H), usesound, 50, 1)
diff --git a/code/game/objects/structures/dresser.dm b/code/game/objects/structures/dresser.dm
index 348c92a5335..a7233bf6a82 100644
--- a/code/game/objects/structures/dresser.dm
+++ b/code/game/objects/structures/dresser.dm
@@ -23,7 +23,7 @@
var/list/valid_underwear = list()
for(var/underwear in underwear_list)
var/datum/sprite_accessory/S = underwear_list[underwear]
- if(!(H.species.name in S.species_allowed))
+ if(!(H.dna.species.name in S.species_allowed))
continue
valid_underwear[underwear] = underwear_list[underwear]
var/new_underwear = input(user, "Choose your underwear:", "Changing") as null|anything in valid_underwear
@@ -34,7 +34,7 @@
var/list/valid_undershirts = list()
for(var/undershirt in undershirt_list)
var/datum/sprite_accessory/S = undershirt_list[undershirt]
- if(!(H.species.name in S.species_allowed))
+ if(!(H.dna.species.name in S.species_allowed))
continue
valid_undershirts[undershirt] = undershirt_list[undershirt]
var/new_undershirt = input(user, "Choose your undershirt:", "Changing") as null|anything in valid_undershirts
@@ -45,7 +45,7 @@
var/list/valid_sockstyles = list()
for(var/sockstyle in socks_list)
var/datum/sprite_accessory/S = socks_list[sockstyle]
- if(!(H.species.name in S.species_allowed))
+ if(!(H.dna.species.name in S.species_allowed))
continue
valid_sockstyles[sockstyle] = socks_list[sockstyle]
var/new_socks = input(user, "Choose your socks:", "Changing") as null|anything in valid_sockstyles
diff --git a/code/game/objects/structures/plasticflaps.dm b/code/game/objects/structures/plasticflaps.dm
index 8d22732e5dd..3911d366ad6 100644
--- a/code/game/objects/structures/plasticflaps.dm
+++ b/code/game/objects/structures/plasticflaps.dm
@@ -86,7 +86,7 @@
return ..()
if(istype(A, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
- if(H.species.is_small)
+ if(H.dna.species.is_small)
return ..()
return 0
diff --git a/code/game/response_team.dm b/code/game/response_team.dm
index 1e866e22faf..646adfa2038 100644
--- a/code/game/response_team.dm
+++ b/code/game/response_team.dm
@@ -143,7 +143,7 @@ var/ert_request_answered = 0
else
M.change_gender(FEMALE)
- M.set_species("Human",1)
+ M.set_species(/datum/species/human, TRUE)
M.dna.ready_dna(M)
M.reagents.add_reagent("mutadone", 1) //No fat/blind/colourblind/epileptic/whatever ERT.
M.overeatduration = 0
@@ -158,8 +158,8 @@ var/ert_request_answered = 0
head_organ.sec_hair_colour = hair_c
M.change_eye_color(eye_c)
M.s_tone = skin_tone
- head_organ.h_style = random_hair_style(M.gender, head_organ.dna.species2.name)
- head_organ.f_style = random_facial_hair_style(M.gender, head_organ.dna.species2.name)
+ head_organ.h_style = random_hair_style(M.gender, head_organ.dna.species.name)
+ head_organ.f_style = random_facial_hair_style(M.gender, head_organ.dna.species.name)
M.rename_character(null, "[pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant First Class", "Master Sergeant", "Sergeant Major")] [pick(last_names)]")
M.age = rand(23,35)
diff --git a/code/game/verbs/suicide.dm b/code/game/verbs/suicide.dm
index 32d5824c4d5..da843d8e53c 100644
--- a/code/game/verbs/suicide.dm
+++ b/code/game/verbs/suicide.dm
@@ -37,7 +37,7 @@
// Failing that...
if(!(damagetype & BRUTELOSS) && !(damagetype & FIRELOSS) && !(damagetype & TOXLOSS) && !(damagetype & OXYLOSS))
- if(NO_BREATHE in species.species_traits)
+ if(NO_BREATHE in dna.species.species_traits)
// the ultimate fallback
take_overall_damage(max(dmgamt - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0), 0)
else
@@ -84,7 +84,7 @@
do_suicide(damagetype, held_item)
return
- to_chat(viewers(src), "[src] [replacetext(pick(species.suicide_messages), "their", p_their())] It looks like [p_theyre()] trying to commit suicide.")
+ to_chat(viewers(src), "[src] [replacetext(pick(dna.species.suicide_messages), "their", p_their())] It looks like [p_theyre()] trying to commit suicide.")
do_suicide(0)
updatehealth()
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index abfc807f9df..798185188ff 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -337,7 +337,7 @@
if("queen") M.change_mob_type( /mob/living/carbon/alien/humanoid/queen/large , null, null, delmob, 1 )
if("sentinel") M.change_mob_type( /mob/living/carbon/alien/humanoid/sentinel , null, null, delmob, 1 )
if("larva") M.change_mob_type( /mob/living/carbon/alien/larva , null, null, delmob, 1 )
- if("human") M.change_mob_type( /mob/living/carbon/human/human , null, null, delmob, 1 )
+ if("human") M.change_mob_type( /mob/living/carbon/human, null, null, delmob, 1 )
if("slime") M.change_mob_type( /mob/living/carbon/slime , null, null, delmob, 1 )
if("monkey") M.change_mob_type( /mob/living/carbon/human/monkey , null, null, delmob, 1 )
if("robot") M.change_mob_type( /mob/living/silicon/robot , null, null, delmob, 1 )
diff --git a/code/modules/admin/verbs/onlyone.dm b/code/modules/admin/verbs/onlyone.dm
index 3d524e863cd..816f7d24a67 100644
--- a/code/modules/admin/verbs/onlyone.dm
+++ b/code/modules/admin/verbs/onlyone.dm
@@ -9,8 +9,8 @@
continue
if(is_special_character(H))
continue
- if(H.species.name in incompatible_species)
- H.set_species("Human")
+ if(H.dna.species.name in incompatible_species)
+ H.set_species(/datum/species/human)
var/datum/preferences/A = new() // Randomize appearance
A.copy_to(H)
@@ -49,7 +49,7 @@
W.assignment = "Highlander"
W.registered_name = H.real_name
H.equip_to_slot_or_del(W, slot_wear_id)
- H.species.after_equip_job(null, H)
+ H.dna.species.after_equip_job(null, H)
H.regenerate_icons()
message_admins("[key_name_admin(usr)] used THERE CAN BE ONLY ONE! -NO ATTACK LOGS WILL BE SENT TO ADMINS FROM THIS POINT FORTH-", 1)
diff --git a/code/modules/admin/verbs/onlyoneteam.dm b/code/modules/admin/verbs/onlyoneteam.dm
index 12567cec70b..16c06ab0424 100644
--- a/code/modules/admin/verbs/onlyoneteam.dm
+++ b/code/modules/admin/verbs/onlyoneteam.dm
@@ -10,8 +10,8 @@
continue
if(is_special_character(H))
continue
- if(H.species.name in incompatible_species)
- H.set_species("Human")
+ if(H.dna.species.name in incompatible_species)
+ H.set_species(/datum/species/human)
var/datum/preferences/A = new() // Randomize appearance
A.copy_to(H)
@@ -55,7 +55,7 @@
H.equip_to_slot_or_del(W, slot_wear_id)
team_toggle = !team_toggle
- H.species.after_equip_job(null, H)
+ H.dna.species.after_equip_job(null, H)
H.regenerate_icons()
message_admins("[key_name_admin(usr)] used DODGEBAWWWWWWWL! -NO ATTACK LOGS WILL BE SENT TO ADMINS FROM THIS POINT FORTH-", 1)
diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm
index 94e0ea2acce..627cde823fa 100644
--- a/code/modules/awaymissions/corpse.dm
+++ b/code/modules/awaymissions/corpse.dm
@@ -37,7 +37,7 @@
createCorpse()
/obj/effect/landmark/corpse/proc/createCorpse() //Creates a mob and checks for gear in each slot before attempting to equip it.
- var/mob/living/carbon/human/human/M = new /mob/living/carbon/human/human (src.loc)
+ var/mob/living/carbon/human/M = new /mob/living/carbon/human(src.loc)
M.real_name = src.name
M.death(1) //Kills the new mob
M.adjustOxyLoss(oxy_damage)
@@ -293,6 +293,6 @@
/obj/effect/landmark/corpse/abductor //Connected to ruins, for some reason?
name = "abductor"
mobname = "???"
- mob_species = "abductor"
+ mob_species = /datum/species/abductor
corpseuniform = /obj/item/clothing/under/color/grey
corpseshoes = /obj/item/clothing/shoes/combat
diff --git a/code/modules/awaymissions/mission_code/wildwest.dm b/code/modules/awaymissions/mission_code/wildwest.dm
index d159ed70eb2..9bfc00ca7c6 100644
--- a/code/modules/awaymissions/mission_code/wildwest.dm
+++ b/code/modules/awaymissions/mission_code/wildwest.dm
@@ -82,12 +82,12 @@
user.mutations.Add(XRAY)
if(ishuman(user))
var/mob/living/carbon/human/human = user
- if(human.species.name != "Shadow")
+ if(human.dna.species.name != "Shadow")
to_chat(user, "Your flesh rapidly mutates!")
to_chat(user, "You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.")
to_chat(user, "Your body reacts violently to light. However, it naturally heals in darkness.")
to_chat(user, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.")
- human.set_species("Shadow")
+ human.set_species(/datum/species/shadow)
user.regenerate_icons()
if("Wealth")
to_chat(user, "Your wish is granted, but at a terrible cost...")
@@ -95,12 +95,12 @@
new /obj/structure/closet/syndicate/resources/everything(loc)
if(ishuman(user))
var/mob/living/carbon/human/human = user
- if(human.species.name != "Shadow")
+ if(human.dna.species.name != "Shadow")
to_chat(user, "Your flesh rapidly mutates!")
to_chat(user, "You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.")
to_chat(user, "Your body reacts violently to light. However, it naturally heals in darkness.")
to_chat(user, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.")
- human.set_species("Shadow")
+ human.set_species(/datum/species/shadow)
user.regenerate_icons()
if("Immortality")
to_chat(user, "Your wish is granted, but at a terrible cost...")
@@ -108,12 +108,12 @@
user.verbs += /mob/living/carbon/proc/immortality
if(ishuman(user))
var/mob/living/carbon/human/human = user
- if(human.species.name != "Shadow")
+ if(human.dna.species.name != "Shadow")
to_chat(user, "Your flesh rapidly mutates!")
to_chat(user, "You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.")
to_chat(user, "Your body reacts violently to light. However, it naturally heals in darkness.")
to_chat(user, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.")
- human.set_species("Shadow")
+ human.set_species(/datum/species/shadow)
user.regenerate_icons()
if("To Kill")
to_chat(user, "Your wish is granted, but at a terrible cost...")
@@ -130,12 +130,12 @@
obj_count++
if(ishuman(user))
var/mob/living/carbon/human/human = user
- if(human.species.name != "Shadow")
+ if(human.dna.species.name != "Shadow")
to_chat(user, "Your flesh rapidly mutates!")
to_chat(user, "You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.")
to_chat(user, "Your body reacts violently to light. However, it naturally heals in darkness.")
to_chat(user, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.")
- human.set_species("Shadow")
+ human.set_species(/datum/species/shadow)
user.regenerate_icons()
if("Peace")
to_chat(user, "Whatever alien sentience that the Wish Granter possesses is satisfied with your wish. There is a distant wailing as the last of the Faithless begin to die, then silence.")
diff --git a/code/modules/client/preference/preferences.dm b/code/modules/client/preference/preferences.dm
index 0582b92be67..497db00daf3 100644
--- a/code/modules/client/preference/preferences.dm
+++ b/code/modules/client/preference/preferences.dm
@@ -2084,7 +2084,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
/datum/preferences/proc/copy_to(mob/living/carbon/human/character)
var/datum/species/S = all_species[species]
- character.change_species(species) // Yell at me if this causes everything to melt
+ character.change_species(S) // Yell at me if this causes everything to melt
if(be_random_name)
real_name = random_name(gender,species)
@@ -2170,10 +2170,10 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
character.undershirt = undershirt
character.socks = socks
- if(character.species.bodyflags & HAS_HEAD_ACCESSORY)
+ if(character.dna.species.bodyflags & HAS_HEAD_ACCESSORY)
H.headacc_colour = hacc_colour
H.ha_style = ha_style
- if(character.species.bodyflags & HAS_MARKINGS)
+ if(character.dna.species.bodyflags & HAS_MARKINGS)
character.m_colours = m_colours
character.m_styles = m_styles
@@ -2190,7 +2190,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
character.change_eye_color(e_colour)
- if(disabilities & DISABILITY_FLAG_FAT && (CAN_BE_FAT in character.species.species_traits))
+ if(disabilities & DISABILITY_FLAG_FAT && (CAN_BE_FAT in character.dna.species.species_traits))
character.dna.SetSEState(FATBLOCK,1,1)
character.overeatduration = 600
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 060e53df5b7..a5b4e614551 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -49,12 +49,12 @@
if("exclude" in species_restricted)
exclusive = 1
- if(H.species)
+ if(H.dna.species)
if(exclusive)
- if(!(H.species.name in species_restricted))
+ if(!(H.dna.species.name in species_restricted))
wearable = 1
else
- if(H.species.name in species_restricted)
+ if(H.dna.species.name in species_restricted)
wearable = 1
if(!wearable)
@@ -504,7 +504,7 @@ BLIND // can't see anything
/obj/item/clothing/suit/equipped(var/mob/living/carbon/human/user, var/slot) //Handle tail-hiding on a by-species basis.
..()
if(ishuman(user) && hide_tail_by_species && slot == slot_wear_suit)
- if(user.species.name in hide_tail_by_species)
+ if(user.dna.species.name in hide_tail_by_species)
if(!(flags_inv & HIDETAIL)) //Hide the tail if the user's species is in the hide_tail_by_species list and the tail isn't already hidden.
flags_inv |= HIDETAIL
else
diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm
index 8ee357b1ffb..dd2861cc3a4 100644
--- a/code/modules/clothing/spacesuits/miscellaneous.dm
+++ b/code/modules/clothing/spacesuits/miscellaneous.dm
@@ -16,7 +16,7 @@
/obj/item/clothing/head/helmet/space/capspace/equipped(mob/living/carbon/human/user, slot)
if(ishuman(user) && slot == slot_head)
- if(user.species.name == "Vox")
+ if(user.dna.species.name == "Vox")
if(flags & BLOCKHAIR)
flags &= ~BLOCKHAIR
else
diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm
index aac34032dfb..764ee71583a 100644
--- a/code/modules/clothing/under/accessories/accessory.dm
+++ b/code/modules/clothing/under/accessories/accessory.dm
@@ -136,7 +136,7 @@
user.visible_message("[user] places \the [src] against [M]'s chest and listens attentively.", "You place \the [src] against [M]'s chest...")
var/obj/item/organ/internal/H = M.get_int_organ(/obj/item/organ/internal/heart)
var/obj/item/organ/internal/L = M.get_int_organ(/obj/item/organ/internal/lungs)
- if((H && M.pulse) || (L && !(BREATHLESS in M.mutations) && !(NO_BREATHE in M.species.species_traits)))
+ if((H && M.pulse) || (L && !(BREATHLESS in M.mutations) && !(NO_BREATHE in M.dna.species.species_traits)))
var/color = "notice"
if(H)
var/heart_sound
diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm
index ce3e9df0655..ee27b827ff0 100644
--- a/code/modules/customitems/item_defines.dm
+++ b/code/modules/customitems/item_defines.dm
@@ -45,7 +45,7 @@
var/mob/living/carbon/human/target = M
- if(istype(target.species, /datum/species/machine))
+ if(istype(target.dna.species, /datum/species/machine))
to_chat(user, "[target] has no skin, how do you expect to tattoo [target.p_them()]?")
return
@@ -54,7 +54,7 @@
return
var/datum/sprite_accessory/body_markings/tattoo/temp_tatt = marking_styles_list[tattoo_icon]
- if(!(target.species.name in temp_tatt.species_allowed))
+ if(!(target.dna.species.name in temp_tatt.species_allowed))
to_chat(user, "You can't think of a way to make the [tattoo_name] design work on [target == user ? "your" : "[target]'s"] body type.")
return
diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm
index cf2e3621498..87836f217b8 100644
--- a/code/modules/events/disease_outbreak.dm
+++ b/code/modules/events/disease_outbreak.dm
@@ -18,7 +18,7 @@
continue
if(!H.client)
continue
- if(VIRUSIMMUNE in H.species.species_traits) //don't let virus immune things get diseases they're not supposed to get.
+ if(VIRUSIMMUNE in H.dna.species.species_traits) //don't let virus immune things get diseases they're not supposed to get.
continue
var/turf/T = get_turf(H)
if(!T)
diff --git a/code/modules/events/mass_hallucination.dm b/code/modules/events/mass_hallucination.dm
index cc59ec78128..321a8135150 100644
--- a/code/modules/events/mass_hallucination.dm
+++ b/code/modules/events/mass_hallucination.dm
@@ -4,7 +4,7 @@
/datum/event/mass_hallucination/start()
for(var/mob/living/carbon/human/H in living_mob_list)
var/armor = H.getarmor(type = "rad")
- if((RADIMMUNE in H.species.species_traits) || armor >= 75) // Leave radiation-immune species/rad armored players completely unaffected
+ if((RADIMMUNE in H.dna.species.species_traits) || armor >= 75) // Leave radiation-immune species/rad armored players completely unaffected
continue
H.AdjustHallucinate(rand(50, 100))
diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm
index 3a730c3868d..2105ae712d0 100644
--- a/code/modules/food_and_drinks/food/snacks.dm
+++ b/code/modules/food_and_drinks/food/snacks.dm
@@ -1279,19 +1279,19 @@
/obj/item/reagent_containers/food/snacks/monkeycube/farwacube
name = "farwa cube"
- monkey_type = "Farwa"
+ monkey_type = /datum/species/monkey/tajaran
/obj/item/reagent_containers/food/snacks/monkeycube/wolpincube
name = "wolpin cube"
- monkey_type = "Wolpin"
+ monkey_type = /datum/species/monkey/vulpkanin
/obj/item/reagent_containers/food/snacks/monkeycube/stokcube
name = "stok cube"
- monkey_type = "Stok"
+ monkey_type = /datum/species/monkey/unathi
/obj/item/reagent_containers/food/snacks/monkeycube/neaeracube
name = "neaera cube"
- monkey_type = "Neara"
+ monkey_type = /datum/species/monkey/skrell
/obj/item/reagent_containers/food/snacks/spellburger
diff --git a/code/modules/martial_arts/brawling.dm b/code/modules/martial_arts/brawling.dm
index a40a52b86be..b326e9f8b33 100644
--- a/code/modules/martial_arts/brawling.dm
+++ b/code/modules/martial_arts/brawling.dm
@@ -15,7 +15,7 @@
var/atk_verb = pick("left hook","right hook","straight punch")
- var/damage = rand(5, 8) + A.species.punchdamagelow
+ var/damage = rand(5, 8) + A.dna.species.punchdamagelow
if(!damage)
playsound(D.loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
D.visible_message("[A] has attempted to hit [D] with a [atk_verb]!")
diff --git a/code/modules/martial_arts/martial.dm b/code/modules/martial_arts/martial.dm
index f42b7963104..bff0cf0d2e4 100644
--- a/code/modules/martial_arts/martial.dm
+++ b/code/modules/martial_arts/martial.dm
@@ -33,8 +33,8 @@
/datum/martial_art/proc/basic_hit(var/mob/living/carbon/human/A,var/mob/living/carbon/human/D)
- var/damage = rand(A.species.punchdamagelow, A.species.punchdamagehigh)
- var/datum/unarmed_attack/attack = A.species.unarmed
+ var/damage = rand(A.dna.species.punchdamagelow, A.dna.species.punchdamagehigh)
+ var/datum/unarmed_attack/attack = A.dna.species.unarmed
var/atk_verb = "[pick(attack.attack_verb)]"
if(D.lying)
@@ -62,7 +62,7 @@
add_attack_logs(A, D, "Melee attacked with martial-art [src]", (damage > 0) ? null : ATKLOG_ALL)
- if((D.stat != DEAD) && damage >= A.species.punchstunthreshold)
+ if((D.stat != DEAD) && damage >= A.dna.species.punchstunthreshold)
D.visible_message("[A] has weakened [D]!!", \
"[A] has weakened [D]!")
D.apply_effect(4, WEAKEN, armor_block)
diff --git a/code/modules/martial_arts/mimejutsu.dm b/code/modules/martial_arts/mimejutsu.dm
index 38605c3538d..e8aa7a53d03 100644
--- a/code/modules/martial_arts/mimejutsu.dm
+++ b/code/modules/martial_arts/mimejutsu.dm
@@ -23,7 +23,7 @@
/datum/martial_art/mimejutsu/proc/mimeChuck(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
if(!D.stat && !D.stunned && !D.weakened)
- var/damage = rand(5, 8) + A.species.punchdamagelow
+ var/damage = rand(5, 8) + A.dna.species.punchdamagelow
if(!damage)
playsound(D.loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
D.visible_message("[A] swings invisible nunchcuks at [D]..and misses?")
diff --git a/code/modules/mining/lavaland/loot/ashdragon_loot.dm b/code/modules/mining/lavaland/loot/ashdragon_loot.dm
index ff0db975895..d88ec709dce 100644
--- a/code/modules/mining/lavaland/loot/ashdragon_loot.dm
+++ b/code/modules/mining/lavaland/loot/ashdragon_loot.dm
@@ -116,7 +116,7 @@
switch(random)
if(1)
to_chat(user, "Your flesh begins to melt! Miraculously, you seem fine otherwise.")
- H.set_species("Skeleton")
+ H.set_species(/datum/species/skeleton)
if(2)
to_chat(user, "Power courses through you! You can now shift your form at will.")
if(user.mind)
diff --git a/code/modules/mining/lavaland/loot/colossus_loot.dm b/code/modules/mining/lavaland/loot/colossus_loot.dm
index ddf1255cca0..59d3a715f32 100644
--- a/code/modules/mining/lavaland/loot/colossus_loot.dm
+++ b/code/modules/mining/lavaland/loot/colossus_loot.dm
@@ -289,7 +289,7 @@
if(ishuman(i))
var/mob/living/carbon/human/H = i
if(H.stat == DEAD)
- H.set_species("Shadow")
+ H.set_species(/datum/species/shadow)
H.revive()
H.disabilities |= NOCLONE //Free revives, but significantly limits your options for reviving except via the crystal
H.grab_ghost(force = TRUE)
diff --git a/code/modules/mining/lavaland/loot/tendril_loot.dm b/code/modules/mining/lavaland/loot/tendril_loot.dm
index e1c6c7f28a9..7ffa47586a4 100644
--- a/code/modules/mining/lavaland/loot/tendril_loot.dm
+++ b/code/modules/mining/lavaland/loot/tendril_loot.dm
@@ -111,7 +111,7 @@
return ..()
to_chat(H, "A terrible pain travels down your back as wings burst out!")
- H.set_species("Angel")
+ H.set_species(/datum/species/angel)
playsound(H.loc, 'sound/items/poster_ripped.ogg', 50, 1, -1)
H.adjustBruteLoss(20)
H.emote("scream")
diff --git a/code/modules/mob/living/autohiss.dm b/code/modules/mob/living/autohiss.dm
index da19b6a35b2..df1bde34306 100644
--- a/code/modules/mob/living/autohiss.dm
+++ b/code/modules/mob/living/autohiss.dm
@@ -4,7 +4,7 @@
/mob/living/carbon/human/handle_autohiss(message, datum/language/L)
if(!client || client.prefs.autohiss_mode == AUTOHISS_OFF) // no need to process if there's no client or they have autohiss off
return message
- return species.handle_autohiss(message, L, client.prefs.autohiss_mode)
+ return dna.species.handle_autohiss(message, L, client.prefs.autohiss_mode)
/client/verb/toggle_autohiss()
set name = "Toggle Auto-Accent"
diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm
index e3069f4d5d3..9d50d8bf2ea 100644
--- a/code/modules/mob/living/carbon/brain/MMI.dm
+++ b/code/modules/mob/living/carbon/brain/MMI.dm
@@ -121,10 +121,10 @@
brainmob.dna = H.dna.Clone()
brainmob.container = src
- if(!istype(H.species) || isnull(H.species.return_organ("brain"))) // Diona/buggy people
+ if(!istype(H.dna.species) || isnull(H.dna.species.return_organ("brain"))) // Diona/buggy people
held_brain = new(src)
else // We have a species, and it has a brain
- var/brain_path = H.species.return_organ("brain")
+ var/brain_path = H.dna.species.return_organ("brain")
if(!ispath(brain_path, /obj/item/organ/internal/brain))
brain_path = /obj/item/organ/internal/brain
held_brain = new brain_path(src) // Slime people will keep their slimy brains this way
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 604dfc36f32..4b00bf832c8 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -382,7 +382,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
if(!ventcrawler)
if(ishuman(src))
var/mob/living/carbon/human/H = src
- ventcrawlerlocal = H.species.ventcrawler
+ ventcrawlerlocal = H.dna.species.ventcrawler
if(!ventcrawlerlocal) return
diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm
index de8cb28eb47..07fc623952c 100644
--- a/code/modules/mob/living/carbon/human/appearance.dm
+++ b/code/modules/mob/living/carbon/human/appearance.dm
@@ -3,20 +3,20 @@
AC.flags = flags
AC.ui_interact(user, state = state)
-/mob/living/carbon/human/proc/change_species(var/new_species)
- if(!new_species || species == new_species || !(new_species in all_species))
- return
+/mob/living/carbon/human/proc/change_species(datum/species/new_species)
+ if(!new_species || dna.species.type == new_species || !(initial(new_species.name) in all_species))
+ return FALSE
- set_species(new_species, null, 1)
+ set_species(new_species, null, TRUE)
reset_hair()
- if(species.bodyflags & HAS_MARKINGS)
+ if(dna.species.bodyflags & HAS_MARKINGS)
reset_markings()
- return 1
+ return TRUE
/mob/living/carbon/human/proc/change_gender(var/new_gender, var/update_dna = 1)
var/obj/item/organ/external/head/H = bodyparts_by_name["head"]
- if(gender == new_gender || (gender == PLURAL && species.has_gender))
+ if(gender == new_gender || (gender == PLURAL && dna.species.has_gender))
return
gender = new_gender
@@ -129,7 +129,7 @@
/mob/living/carbon/human/proc/change_alt_head(var/alternate_head)
var/obj/item/organ/external/head/H = get_organ("head")
- if(!H || H.alt_head == alternate_head || H.is_robotic() || (!(species.bodyflags & HAS_ALT_HEADS) && alternate_head != "None") || !(alternate_head in alt_heads_list))
+ if(!H || H.alt_head == alternate_head || H.is_robotic() || (!(dna.species.bodyflags & HAS_ALT_HEADS) && alternate_head != "None") || !(alternate_head in alt_heads_list))
return
H.alt_head = alternate_head
@@ -296,7 +296,7 @@
/mob/living/carbon/human/proc/change_skin_color(var/colour = "#000000")
- if(colour == skin_colour || !(species.bodyflags & HAS_SKIN_COLOR))
+ if(colour == skin_colour || !(dna.species.bodyflags & HAS_SKIN_COLOR))
return
skin_colour = colour
@@ -306,7 +306,7 @@
return 1
/mob/living/carbon/human/proc/change_skin_tone(var/tone)
- if(s_tone == tone || !((species.bodyflags & HAS_SKIN_TONE) || (species.bodyflags & HAS_ICON_SKIN_TONE)))
+ if(s_tone == tone || !((dna.species.bodyflags & HAS_SKIN_TONE) || (dna.species.bodyflags & HAS_ICON_SKIN_TONE)))
return
s_tone = tone
@@ -350,16 +350,16 @@
continue
if((H.gender == MALE && S.gender == FEMALE) || (H.gender == FEMALE && S.gender == MALE))
continue
- if(H.dna.species2.bodyflags & ALL_RPARTS) //If the user is a species who can have a robotic head...
+ if(H.dna.species.bodyflags & ALL_RPARTS) //If the user is a species who can have a robotic head...
var/datum/robolimb/robohead = all_robolimbs[H.model]
- if((H.dna.species2.name in S.species_allowed) && robohead.is_monitor && ((S.models_allowed && (robohead.company in S.models_allowed)) || !S.models_allowed)) //If this is a hair style native to the user's species, check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list.
+ if((H.dna.species.name in S.species_allowed) && robohead.is_monitor && ((S.models_allowed && (robohead.company in S.models_allowed)) || !S.models_allowed)) //If this is a hair style native to the user's species, check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list.
valid_hairstyles += hairstyle //Give them their hairstyles if they do.
else
if(!robohead.is_monitor && ("Human" in S.species_allowed)) /*If the hairstyle is not native to the user's species and they're using a head with an ipc-style screen, don't let them access it.
But if the user has a robotic humanoid head and the hairstyle can fit humans, let them use it as a wig. */
valid_hairstyles += hairstyle
else //If the user is not a species who can have robotic heads, use the default handling.
- if(H.dna.species2.name in S.species_allowed) //If the user's head is of a species the hairstyle allows, add it to the list.
+ if(H.dna.species.name in S.species_allowed) //If the user's head is of a species the hairstyle allows, add it to the list.
valid_hairstyles += hairstyle
return valid_hairstyles
@@ -378,17 +378,17 @@
continue
if((H.gender == MALE && S.gender == FEMALE) || (H.gender == FEMALE && S.gender == MALE))
continue
- if(H.dna.species2.bodyflags & ALL_RPARTS) //If the user is a species who can have a robotic head...
+ if(H.dna.species.bodyflags & ALL_RPARTS) //If the user is a species who can have a robotic head...
var/datum/robolimb/robohead = all_robolimbs[H.model]
- if(H.dna.species2.name in S.species_allowed) //If this is a facial hair style native to the user's species...
- if((H.dna.species2.name in S.species_allowed) && robohead.is_monitor && ((S.models_allowed && (robohead.company in S.models_allowed)) || !S.models_allowed)) //If this is a facial hair style native to the user's species, check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list.
+ if(H.dna.species.name in S.species_allowed) //If this is a facial hair style native to the user's species...
+ if((H.dna.species.name in S.species_allowed) && robohead.is_monitor && ((S.models_allowed && (robohead.company in S.models_allowed)) || !S.models_allowed)) //If this is a facial hair style native to the user's species, check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list.
valid_facial_hairstyles += facialhairstyle //Give them their facial hairstyles if they do.
else
if(!robohead.is_monitor && ("Human" in S.species_allowed)) /*If the facial hairstyle is not native to the user's species and they're using a head with an ipc-style screen, don't let them access it.
But if the user has a robotic humanoid head and the facial hairstyle can fit humans, let them use it as a wig. */
valid_facial_hairstyles += facialhairstyle
else //If the user is not a species who can have robotic heads, use the default handling.
- if(H.dna.species2.name in S.species_allowed) //If the user's head is of a species the facial hair style allows, add it to the list.
+ if(H.dna.species.name in S.species_allowed) //If the user's head is of a species the facial hair style allows, add it to the list.
valid_facial_hairstyles += facialhairstyle
return valid_facial_hairstyles
@@ -402,7 +402,7 @@
for(var/head_accessory in head_accessory_styles_list)
var/datum/sprite_accessory/S = head_accessory_styles_list[head_accessory]
- if(!(H.dna.species2.name in S.species_allowed)) //If the user's head is not of a species the head accessory style allows, skip it. Otherwise, add it to the list.
+ if(!(H.dna.species.name in S.species_allowed)) //If the user's head is not of a species the head accessory style allows, skip it. Otherwise, add it to the list.
continue
valid_head_accessories += head_accessory
@@ -421,7 +421,7 @@
continue
if(S.marking_location != location) //If the marking isn't for the location we desire, skip.
continue
- if(!(species.name in S.species_allowed)) //If the user is not of a species the marking style allows, skip it. Otherwise, add it to the list.
+ if(!(dna.species.name in S.species_allowed)) //If the user is not of a species the marking style allows, skip it. Otherwise, add it to the list.
continue
if(location == "tail")
if(!body_accessory)
@@ -432,7 +432,7 @@
continue
if(location == "head")
var/datum/sprite_accessory/body_markings/head/M = marking_styles_list[S.name]
- if(H.dna.species2.bodyflags & ALL_RPARTS) //If the user is a species that can have a robotic head...
+ if(H.dna.species.bodyflags & ALL_RPARTS) //If the user is a species that can have a robotic head...
var/datum/robolimb/robohead = all_robolimbs[H.model]
if(!(S.models_allowed && (robohead.company in S.models_allowed))) //Make sure they don't get markings incompatible with their head.
continue
@@ -456,7 +456,7 @@
if(!istype(A))
valid_body_accessories["None"] = "None" //The only null entry should be the "None" option.
continue
- if(species.name in A.allowed_species) //If the user is not of a species the body accessory style allows, skip it. Otherwise, add it to the list.
+ if(dna.species.name in A.allowed_species) //If the user is not of a species the body accessory style allows, skip it. Otherwise, add it to the list.
valid_body_accessories += B
return valid_body_accessories
@@ -469,7 +469,7 @@
valid_alt_heads["None"] = alt_heads_list["None"] //The only null entry should be the "None" option, and there should always be a "None" option.
for(var/alternate_head in alt_heads_list)
var/datum/sprite_accessory/alt_heads/head = alt_heads_list[alternate_head]
- if(!(H.dna.species2.name in head.species_allowed))
+ if(!(H.dna.species.name in head.species_allowed))
continue
valid_alt_heads += alternate_head
diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm
index 37749c0dd76..bdca496d256 100644
--- a/code/modules/mob/living/carbon/human/death.dm
+++ b/code/modules/mob/living/carbon/human/death.dm
@@ -62,7 +62,7 @@
animation.master = src
flick("dust-h", animation)
- new species.remains_type(get_turf(src))
+ new dna.species.remains_type(get_turf(src))
spawn(15)
if(animation) qdel(animation)
@@ -103,8 +103,8 @@
set_heartattack(FALSE)
//Handle species-specific deaths.
- if(species)
- species.handle_death(src)
+ if(dna.species)
+ dna.species.handle_death(src)
callHook("death", list(src, gibbed))
diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index 3df5a6843d1..9cb1a981999 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -29,7 +29,7 @@
switch(act)
//Cooldown-inducing emotes
if("ping", "pings", "buzz", "buzzes", "beep", "beeps", "yes", "no", "buzz2")
- if(species.name == "Machine") //Only Machines can beep, ping, and buzz, yes, no, and make a silly sad trombone noise.
+ if(dna.species.name == "Machine") //Only Machines can beep, ping, and buzz, yes, no, and make a silly sad trombone noise.
on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm
else //Everyone else fails, skip the emote attempt
return
@@ -56,7 +56,7 @@
found_slime_bodypart = 1
else
for(var/obj/item/organ/external/L in bodyparts) // if your limbs are squishy you can squish too!
- if(istype(L.dna.species2, /datum/species/slime))
+ if(istype(L.dna.species, /datum/species/slime))
on_CD = handle_emote_CD()
found_slime_bodypart = 1
break
@@ -225,7 +225,7 @@
message = "[src] starts wagging [p_their()] tail."
start_tail_wagging(1)
- else if(species.bodyflags & TAIL_WAGGING)
+ else if(dna.species.bodyflags & TAIL_WAGGING)
if(!wear_suit || !(wear_suit.flags_inv & HIDETAIL) && !istype(wear_suit, /obj/item/clothing/suit/space))
message = "[src] starts wagging [p_their()] tail."
start_tail_wagging(1)
@@ -236,7 +236,7 @@
m_type = 1
if("swag", "swags")
- if(species.bodyflags & TAIL_WAGGING || body_accessory)
+ if(dna.species.bodyflags & TAIL_WAGGING || body_accessory)
message = "[src] stops wagging [p_their()] tail."
stop_tail_wagging(1)
else
@@ -431,11 +431,11 @@
message = "[src] coughs!"
m_type = 2
if(gender == FEMALE)
- if(species.female_cough_sounds)
- playsound(src, pick(species.female_cough_sounds), 120)
+ if(dna.species.female_cough_sounds)
+ playsound(src, pick(dna.species.female_cough_sounds), 120)
else
- if(species.male_cough_sounds)
- playsound(src, pick(species.male_cough_sounds), 120)
+ if(dna.species.male_cough_sounds)
+ playsound(src, pick(dna.species.male_cough_sounds), 120)
else
message = "[src] makes a strong noise."
m_type = 2
@@ -479,7 +479,7 @@
m_type = 2
if("deathgasp", "deathgasps")
- message = "[src] [replacetext(species.death_message, "their", p_their())]"
+ message = "[src] [replacetext(dna.species.death_message, "their", p_their())]"
m_type = 1
if("giggle", "giggles")
@@ -676,9 +676,9 @@
if(!muzzled)
message = "[src] sneezes."
if(gender == FEMALE)
- playsound(src, species.female_sneeze_sound, 70)
+ playsound(src, dna.species.female_sneeze_sound, 70)
else
- playsound(src, species.male_sneeze_sound, 70)
+ playsound(src, dna.species.male_sneeze_sound, 70)
m_type = 2
else
message = "[src] makes a strange noise."
@@ -784,12 +784,12 @@
m_type = 1
else
if(!muzzled)
- message = "[src] [species.scream_verb][M ? " at [M]" : ""]!"
+ message = "[src] [dna.species.scream_verb][M ? " at [M]" : ""]!"
m_type = 2
if(gender == FEMALE)
- playsound(loc, "[species.female_scream_sound]", 80, 1, frequency = get_age_pitch())
+ playsound(loc, "[dna.species.female_scream_sound]", 80, 1, frequency = get_age_pitch())
else
- playsound(loc, "[species.male_scream_sound]", 80, 1, frequency = get_age_pitch()) //default to male screams if no gender is present.
+ playsound(loc, "[dna.species.male_scream_sound]", 80, 1, frequency = get_age_pitch()) //default to male screams if no gender is present.
else
message = "[src] makes a very loud noise[M ? " at [M]" : ""]."
@@ -890,7 +890,7 @@
+ " shiver(s), shrug(s), sigh(s), signal(s)-#1-10,slap(s)-(none)/mob, smile(s),snap(s), sneeze(s), sniff(s), snore(s), stare(s)-(none)/mob, swag(s), tremble(s), twitch(es), twitch(es)_s," \
+ " wag(s), wave(s), whimper(s), wink(s), yawn(s), quill(s)"
- switch(species.name)
+ switch(dna.species.name)
if("Machine")
emotelist += "\nMachine specific emotes :- beep(s)-(none)/mob, buzz(es)-none/mob, no-(none)/mob, ping(s)-(none)/mob, yes-(none)/mob, buzz2-(none)/mob"
if("Drask")
@@ -906,11 +906,11 @@
if("Diona")
emotelist += "\nDiona specific emotes :- creak(s)"
- if (species.name == "Slime People")
+ if (dna.species.name == "Slime People")
emotelist += "\nSlime people specific emotes :- squish(es)-(none)/mob"
else
for(var/obj/item/organ/external/L in bodyparts) // if your limbs are squishy you can squish too!
- if(istype(L.dna.species2, /datum/species/slime))
+ if(istype(L.dna.species, /datum/species/slime))
emotelist += "\nSlime people body part specific emotes :- squish(es)-(none)/mob"
break
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index e382796cd09..ce0930f229f 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -199,9 +199,9 @@
var/list/wound_flavor_text = list()
var/list/is_destroyed = list()
- for(var/organ_tag in species.has_limbs)
+ for(var/organ_tag in dna.species.has_limbs)
- var/list/organ_data = species.has_limbs[organ_tag]
+ var/list/organ_data = dna.species.has_limbs[organ_tag]
var/organ_descriptor = organ_data["descriptor"]
is_destroyed["[organ_data["descriptor"]]"] = 1
@@ -324,7 +324,7 @@
var/dodebug = auto.doing2string(auto.doing)
var/interestdebug = auto.interest2string(auto.interest)
msg += "[p_they(TRUE)] [p_are()] appears to be [interestdebug] and [dodebug].\n"
- else if(species.show_ssd)
+ else if(dna.species.show_ssd)
if(!key)
msg += "[p_they(TRUE)] [p_are()] totally catatonic. The stresses of life in deep-space must have been too much for [p_them()]. Any recovery is unlikely.\n"
else if(!client)
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 88e3d854658..06750815abf 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -4,10 +4,6 @@
voice_name = "unknown"
icon = 'icons/mob/human.dmi'
icon_state = "body_m_s"
-
- //why are these here and not in human_defines.dm
- //var/list/hud_list[10]
- var/datum/species/species //Contains icon generation and language information, set during New().
var/obj/item/rig/wearing_rig // This is very not good, but it's much much better than calling get_rig() every update_canmove() call.
/mob/living/carbon/human/New(loc)
@@ -15,21 +11,17 @@
log_runtime(EXCEPTION("human/New called with more than 1 argument (REPORT THIS ENTIRE RUNTIME TO A CODER)"))
. = ..()
-/mob/living/carbon/human/Initialize(mapload, new_species = null)
+/mob/living/carbon/human/Initialize(mapload, datum/species/new_species = /datum/species/human)
if(!dna)
dna = new /datum/dna(null)
// Species name is handled by set_species()
- if(!species)
- if(new_species)
- set_species(new_species, 1, delay_icon_update = 1)
- else
- set_species(delay_icon_update = 1)
+ set_species(new_species, 1, delay_icon_update = 1)
..()
- if(species)
- real_name = species.get_random_name(gender)
+ if(dna.species)
+ real_name = dna.species.get_random_name(gender)
name = real_name
if(mind)
mind.name = real_name
@@ -74,49 +66,46 @@
status_flags = GODMODE|CANPUSH
/mob/living/carbon/human/skrell/Initialize(mapload)
- ..(mapload, "Skrell")
+ ..(mapload, /datum/species/skrell)
/mob/living/carbon/human/tajaran/Initialize(mapload)
- ..(mapload, "Tajaran")
+ ..(mapload, /datum/species/tajaran)
/mob/living/carbon/human/vulpkanin/Initialize(mapload)
- ..(mapload, "Vulpkanin")
+ ..(mapload, /datum/species/vulpkanin)
/mob/living/carbon/human/unathi/Initialize(mapload)
- ..(mapload, "Unathi")
+ ..(mapload, /datum/species/unathi)
/mob/living/carbon/human/vox/Initialize(mapload)
- ..(mapload, "Vox")
+ ..(mapload, /datum/species/vox)
/mob/living/carbon/human/voxarmalis/Initialize(mapload)
- ..(mapload, "Vox Armalis")
+ ..(mapload, /datum/species/vox/armalis)
/mob/living/carbon/human/skeleton/Initialize(mapload)
- ..(mapload, "Skeleton")
+ ..(mapload, /datum/species/skeleton)
/mob/living/carbon/human/kidan/Initialize(mapload)
- ..(mapload, "Kidan")
+ ..(mapload, /datum/species/kidan)
/mob/living/carbon/human/plasma/Initialize(mapload)
- ..(mapload, "Plasmaman")
+ ..(mapload, /datum/species/plasmaman)
/mob/living/carbon/human/slime/Initialize(mapload)
- ..(mapload, "Slime People")
+ ..(mapload, /datum/species/slime)
/mob/living/carbon/human/grey/Initialize(mapload)
- ..(mapload, "Grey")
+ ..(mapload, /datum/species/grey)
/mob/living/carbon/human/abductor/Initialize(mapload)
- ..(mapload, "Abductor")
-
-/mob/living/carbon/human/human/Initialize(mapload)
- ..(mapload, "Human")
+ ..(mapload, /datum/species/abductor)
/mob/living/carbon/human/diona/Initialize(mapload)
- ..(mapload, "Diona")
+ ..(mapload, /datum/species/diona)
/mob/living/carbon/human/machine/Initialize(mapload)
- ..(mapload, "Machine")
+ ..(mapload, /datum/species/machine)
/mob/living/carbon/human/machine/created
name = "Integrated Robotic Chassis"
@@ -133,34 +122,34 @@
qdel(O)
/mob/living/carbon/human/shadow/Initialize(mapload)
- ..(mapload, "Shadow")
+ ..(mapload, /datum/species/shadow)
/mob/living/carbon/human/golem/Initialize(mapload)
- ..(mapload, "Golem")
+ ..(mapload, /datum/species/golem)
/mob/living/carbon/human/wryn/Initialize(mapload)
- ..(mapload, "Wryn")
+ ..(mapload, /datum/species/wryn)
/mob/living/carbon/human/nucleation/Initialize(mapload)
- ..(mapload, "Nucleation")
+ ..(mapload, /datum/species/nucleation)
/mob/living/carbon/human/drask/Initialize(mapload)
- ..(mapload, "Drask")
+ ..(mapload, /datum/species/drask)
/mob/living/carbon/human/monkey/Initialize(mapload)
- ..(mapload, "Monkey")
+ ..(mapload, /datum/species/monkey)
/mob/living/carbon/human/farwa/Initialize(mapload)
- ..(mapload, "Farwa")
+ ..(mapload, /datum/species/monkey/tajaran)
/mob/living/carbon/human/wolpin/Initialize(mapload)
- ..(mapload, "Wolpin")
+ ..(mapload, /datum/species/monkey/vulpkanin)
/mob/living/carbon/human/neara/Initialize(mapload)
- ..(mapload, "Neara")
+ ..(mapload, /datum/species/monkey/skrell)
/mob/living/carbon/human/stok/Initialize(mapload)
- ..(mapload, "Stok")
+ ..(mapload, /datum/species/monkey/unathi)
/mob/living/carbon/human/Stat()
..()
@@ -564,7 +553,7 @@
grant_death_vision()
return
- species.update_sight(src)
+ dna.species.update_sight(src)
//Removed the horrible safety parameter. It was only being used by ninja code anyways.
//Now checks siemens_coefficient of the affected area by default
@@ -594,8 +583,8 @@
if(gloves)
var/obj/item/clothing/gloves/G = gloves
gloves_siemens_coeff = G.siemens_coefficient
- if(species)
- species_siemens_coeff = species.siemens_coeff
+ if(dna.species)
+ species_siemens_coeff = dna.species.siemens_coeff
siemens_coeff = gloves_siemens_coeff * species_siemens_coeff
if(undergoing_cardiac_arrest())
if(shock_damage * siemens_coeff >= 1 && prob(25))
@@ -1049,11 +1038,7 @@
return
/mob/living/carbon/human/get_species()
-
- if(!species)
- set_species()
-
- return species.name
+ return dna.species.name
/mob/living/carbon/human/proc/play_xylophone()
if(!src.xylophone)
@@ -1154,9 +1139,9 @@
//Replacing lost limbs with the species default.
var/mob/living/carbon/human/temp_holder
- for(var/limb_type in H.species.has_limbs)
+ for(var/limb_type in H.dna.species.has_limbs)
if(!(limb_type in H.bodyparts_by_name))
- var/list/organ_data = H.species.has_limbs[limb_type]
+ var/list/organ_data = H.dna.species.has_limbs[limb_type]
var/limb_path = organ_data["path"]
var/obj/item/organ/external/O = new limb_path(temp_holder)
if(H.get_limb_by_name(O.name)) //Check to see if the user already has an limb with the same name as the 'missing limb'. If they do, skip regrowth.
@@ -1169,8 +1154,8 @@
//Replacing lost organs with the species default.
temp_holder = new /mob/living/carbon/human()
- for(var/index in H.species.has_organ)
- var/organ = H.species.has_organ[index]
+ for(var/index in H.dna.species.has_organ)
+ var/organ = H.dna.species.has_organ[index]
if(!(organ in types_of_int_organs)) //If the mob is missing this particular organ...
var/obj/item/organ/internal/I = new organ(temp_holder) //Create the organ inside our holder so we can check it before implantation.
if(H.get_organ_slot(I.slot)) //Check to see if the user already has an organ in the slot the 'missing organ' belongs to. If they do, skip implantation.
@@ -1187,7 +1172,7 @@
surgeries.Cut() //End all surgeries.
update_revive()
- if(species.name != "Skeleton" && (SKELETON in mutations))
+ if(dna.species.name != "Skeleton" && (SKELETON in mutations))
mutations.Remove(SKELETON)
if(NOCLONE in mutations)
mutations.Remove(NOCLONE)
@@ -1250,7 +1235,7 @@
..()
/mob/living/carbon/human/generate_name()
- name = species.makeName(gender,src)
+ name = dna.species.makeName(gender,src)
real_name = name
if(dna)
dna.real_name = name
@@ -1289,88 +1274,79 @@
else
to_chat(usr, "[self ? "Your" : "[src]'s"] pulse is [src.get_pulse(GETPULSE_HAND)].")
-/mob/living/carbon/human/proc/set_species(var/new_species, var/default_colour, var/delay_icon_update = 0)
- var/datum/species/oldspecies = species
- var/datum/species/NS = all_species[new_species]
- if(!dna)
- if(!new_species)
- new_species = "Human"
- else
- if(!new_species)
- new_species = dna.species2
- else
- dna.species2 = new_species
+/mob/living/carbon/human/proc/set_species(datum/species/new_species, default_colour, delay_icon_update = FALSE)
+ if(new_species == dna.species.type)
+ return
- if(species)
- if(species.name && species.name == new_species)
- return
-
- if(species.language)
- remove_language(species.language)
-
- if(species.default_language)
- remove_language(species.default_language)
-
- if(gender == PLURAL && NS.has_gender)
- change_gender(pick(MALE,FEMALE))
- species.handle_pre_change(src)
-
- species = all_species[new_species]
+ var/datum/species/oldspecies = dna.species
if(oldspecies)
+ if(oldspecies.language)
+ remove_language(oldspecies.language)
+
+ if(oldspecies.default_language)
+ remove_language(oldspecies.default_language)
+
+ if(gender == PLURAL && oldspecies.has_gender)
+ change_gender(pick(MALE, FEMALE))
+
if(oldspecies.default_genes.len)
- oldspecies.handle_dna(src,1) // Remove any genes that belong to the old species
+ oldspecies.handle_dna(src, TRUE) // Remove any genes that belong to the old species
- tail = species.tail
+ oldspecies.handle_pre_change(src)
- maxHealth = species.total_health
+ dna.species = new new_species.type
- if(species.language)
- add_language(species.language)
+ tail = dna.species.tail
- if(species.default_language)
- add_language(species.default_language)
+ maxHealth = dna.species.total_health
- hunger_drain = species.hunger_drain
- digestion_ratio = species.digestion_ratio
+ if(dna.species.language)
+ add_language(dna.species.language)
- if(species.base_color && default_colour)
+ if(dna.species.default_language)
+ add_language(dna.species.default_language)
+
+ hunger_drain = dna.species.hunger_drain
+ digestion_ratio = dna.species.digestion_ratio
+
+ if(dna.species.base_color && default_colour)
//Apply colour.
- skin_colour = species.base_color
+ skin_colour = dna.species.base_color
else
skin_colour = "#000000"
- if(!(species.bodyflags & HAS_SKIN_TONE))
+ if(!(dna.species.bodyflags & HAS_SKIN_TONE))
s_tone = 0
- species.create_organs(src)
+ dna.species.create_organs(src)
//Handle default hair/head accessories for created mobs.
var/obj/item/organ/external/head/H = get_organ("head")
- if(species.default_hair)
- H.h_style = species.default_hair
+ if(dna.species.default_hair)
+ H.h_style = dna.species.default_hair
else
H.h_style = "Bald"
- if(species.default_fhair)
- H.f_style = species.default_fhair
+ if(dna.species.default_fhair)
+ H.f_style = dna.species.default_fhair
else
H.f_style = "Shaved"
- if(species.default_headacc)
- H.ha_style = species.default_headacc
+ if(dna.species.default_headacc)
+ H.ha_style = dna.species.default_headacc
else
H.ha_style = "None"
- if(species.default_hair_colour)
+ if(dna.species.default_hair_colour)
//Apply colour.
- H.hair_colour = species.default_hair_colour
+ H.hair_colour = dna.species.default_hair_colour
else
H.hair_colour = "#000000"
- if(species.default_fhair_colour)
- H.facial_colour = species.default_fhair_colour
+ if(dna.species.default_fhair_colour)
+ H.facial_colour = dna.species.default_fhair_colour
else
H.facial_colour = "#000000"
- if(species.default_headacc_colour)
- H.headacc_colour = species.default_headacc_colour
+ if(dna.species.default_headacc_colour)
+ H.headacc_colour = dna.species.default_headacc_colour
else
H.headacc_colour = "#000000"
@@ -1378,20 +1354,17 @@
m_colours = DEFAULT_MARKING_COLOURS //Defaults colour to #00000 for all markings.
body_accessory = null
- if(!dna)
- dna = new /datum/dna(null)
- dna.species2 = species.name
- dna.real_name = real_name
+ dna.real_name = real_name
- species.handle_post_spawn(src)
+ dna.species.handle_post_spawn(src)
- see_in_dark = species.get_resultant_darksight(src)
+ see_in_dark = dna.species.get_resultant_darksight(src)
if(see_in_dark > 2)
see_invisible = SEE_INVISIBLE_LEVEL_ONE
else
see_invisible = SEE_INVISIBLE_LIVING
- species.handle_dna(src) //Give them whatever special dna business they got.
+ dna.species.handle_dna(src) //Give them whatever special dna business they got.
update_client_colour(0)
@@ -1403,18 +1376,18 @@
if(!delay_icon_update)
UpdateAppearance()
- if(species)
- return 1
+ if(dna.species)
+ return TRUE
else
- return 0
+ return FALSE
/mob/living/carbon/human/get_default_language()
if(default_language)
return default_language
- if(!species)
+ if(!dna.species)
return null
- return species.default_language ? all_languages[species.default_language] : null
+ return dna.species.default_language ? all_languages[dna.species.default_language] : null
/mob/living/carbon/human/proc/bloody_doodle()
set category = "IC"
@@ -1481,7 +1454,7 @@
to_chat(src, "Where's your head at? Can't change your monitor/display without one.")
return
- if(species.bodyflags & ALL_RPARTS) //If they can have a fully cybernetic body...
+ if(dna.species.bodyflags & ALL_RPARTS) //If they can have a fully cybernetic body...
var/datum/robolimb/robohead = all_robolimbs[head_organ.model]
if(!head_organ)
return
@@ -1497,7 +1470,7 @@
var/list/hair = list()
for(var/i in hair_styles_public_list)
var/datum/sprite_accessory/hair/tmp_hair = hair_styles_public_list[i]
- if((head_organ.dna.species2.name in tmp_hair.species_allowed) && (robohead.company in tmp_hair.models_allowed)) //Populate the list of available monitor styles only with styles that the monitor-head is allowed to use.
+ if((head_organ.dna.species.name in tmp_hair.species_allowed) && (robohead.company in tmp_hair.models_allowed)) //Populate the list of available monitor styles only with styles that the monitor-head is allowed to use.
hair += i
var/new_style = input(src, "Select a monitor display", "Monitor Display", head_organ.h_style) as null|anything in hair
@@ -1585,8 +1558,8 @@
/mob/living/carbon/human/proc/get_eyecon()
var/obj/item/organ/internal/eyes/eyes = get_int_organ(/obj/item/organ/internal/eyes)
var/obj/item/organ/internal/cyberimp/eyes/eye_implant = get_int_organ(/obj/item/organ/internal/cyberimp/eyes)
- if(istype(species) && species.eyes)
- var/icon/eyes_icon = new/icon('icons/mob/human_face.dmi', species.eyes)
+ if(istype(dna.species) && dna.species.eyes)
+ var/icon/eyes_icon = new/icon('icons/mob/human_face.dmi', dna.species.eyes)
if(eye_implant) //Eye implants override native DNA eye colo(u)r
eyes_icon = eye_implant.generate_icon()
else if(eyes)
@@ -1792,7 +1765,7 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
/mob/living/carbon/human/IsAdvancedToolUser()
- if(species.has_fine_manipulation)
+ if(dna.species.has_fine_manipulation)
return 1
return 0
@@ -1827,7 +1800,7 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
return 1
/mob/living/carbon/human/can_eat(flags = 255)
- return species && (species.dietflags & flags)
+ return dna.species && (dna.species.dietflags & flags)
/mob/living/carbon/human/selfFeed(var/obj/item/reagent_containers/food/toEat, fullness)
if(!check_has_mouth())
@@ -1888,7 +1861,7 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
. |= A.GetAccess()
/mob/living/carbon/human/is_mechanical()
- return ..() || (species.bodyflags & ALL_RPARTS) != 0
+ return ..() || (dna.species.bodyflags & ALL_RPARTS) != 0
/mob/living/carbon/human/can_use_guns(var/obj/item/gun/G)
. = ..()
@@ -1897,7 +1870,7 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
if(HULK in mutations)
to_chat(src, "Your meaty finger is much too large for the trigger guard!")
return 0
- if(NOGUNS in species.species_traits)
+ if(NOGUNS in dna.species.species_traits)
to_chat(src, "Your fingers don't fit in the trigger guard!")
return 0
@@ -1964,7 +1937,7 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
dna.deserialize(data["dna"])
real_name = dna.real_name
name = real_name
- set_species(dna.species2)
+ set_species(dna.species)
age = data["age"]
undershirt = data["ushirt"]
underwear = data["uwear"]
@@ -2026,8 +1999,8 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
. += "---"
/mob/living/carbon/human/get_taste_sensitivity()
- if(species)
- return species.taste_sensitivity
+ if(dna.species)
+ return dna.species.taste_sensitivity
else
return 1
diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm
index c2c16382995..80c128ee07f 100644
--- a/code/modules/mob/living/carbon/human/human_damage.dm
+++ b/code/modules/mob/living/carbon/human/human_damage.dm
@@ -17,7 +17,7 @@
//TODO: fix husking
if(((maxHealth - total_burn) < config.health_threshold_dead) && stat == DEAD)
ChangeToHusk()
- if(species.can_revive_by_healing)
+ if(dna.species.can_revive_by_healing)
var/obj/item/organ/internal/brain/B = get_int_organ(/obj/item/organ/internal/brain)
if(B)
if((health >= (config.health_threshold_dead + config.health_threshold_crit) * 0.5) && stat == DEAD && getBrainLoss()<120)
@@ -32,11 +32,11 @@
if(status_flags & GODMODE)
return 0 //godmode
- if(species && species.has_organ["brain"])
+ if(dna.species && dna.species.has_organ["brain"])
var/obj/item/organ/internal/brain/sponge = get_int_organ(/obj/item/organ/internal/brain)
if(sponge)
- if(species)
- amount = amount * species.brain_mod
+ if(dna.species)
+ amount = amount * dna.species.brain_mod
sponge.receive_damage(amount, 1)
brainloss = sponge.damage
else
@@ -48,11 +48,11 @@
if(status_flags & GODMODE)
return 0 //godmode
- if(species && species.has_organ["brain"])
+ if(dna.species && dna.species.has_organ["brain"])
var/obj/item/organ/internal/brain/sponge = get_int_organ(/obj/item/organ/internal/brain)
if(sponge)
- if(species)
- amount = amount * species.brain_mod
+ if(dna.species)
+ amount = amount * dna.species.brain_mod
sponge.damage = min(max(amount, 0), (maxHealth*2))
brainloss = sponge.damage
else
@@ -64,7 +64,7 @@
if(status_flags & GODMODE)
return 0 //godmode
- if(species && species.has_organ["brain"])
+ if(dna.species && dna.species.has_organ["brain"])
var/obj/item/organ/internal/brain/sponge = get_int_organ(/obj/item/organ/internal/brain)
if(sponge)
brainloss = min(sponge.damage,maxHealth*2)
@@ -89,24 +89,24 @@
/mob/living/carbon/human/adjustBruteLoss(amount, damage_source)
- if(species)
- amount = amount * species.brute_mod
+ if(dna.species)
+ amount = amount * dna.species.brute_mod
if(amount > 0)
take_overall_damage(amount, 0, used_weapon = damage_source)
else
heal_overall_damage(-amount, 0)
/mob/living/carbon/human/adjustFireLoss(amount, damage_source)
- if(species)
- amount = amount * species.burn_mod
+ if(dna.species)
+ amount = amount * dna.species.burn_mod
if(amount > 0)
take_overall_damage(0, amount, used_weapon = damage_source)
else
heal_overall_damage(0, -amount)
/mob/living/carbon/human/proc/adjustBruteLossByPart(amount, organ_name, obj/damage_source = null)
- if(species)
- amount = amount * species.brute_mod
+ if(dna.species)
+ amount = amount * dna.species.brute_mod
if(organ_name in bodyparts_by_name)
var/obj/item/organ/external/O = get_organ(organ_name)
@@ -119,8 +119,8 @@
/mob/living/carbon/human/proc/adjustFireLossByPart(amount, organ_name, obj/damage_source = null)
- if(species)
- amount = amount * species.burn_mod
+ if(dna.species)
+ amount = amount * dna.species.burn_mod
if(organ_name in bodyparts_by_name)
var/obj/item/organ/external/O = get_organ(organ_name)
@@ -139,8 +139,8 @@
..()
/mob/living/carbon/human/adjustCloneLoss(amount)
- if(species)
- amount = amount * species.clone_mod
+ if(dna.species)
+ amount = amount * dna.species.clone_mod
..()
var/heal_prob = max(0, 80 - getCloneLoss())
@@ -179,23 +179,23 @@
// Defined here solely to take species flags into account without having to recast at mob/living level.
/mob/living/carbon/human/adjustOxyLoss(amount)
- if(species)
- amount = amount * species.oxy_mod
+ if(dna.species)
+ amount = amount * dna.species.oxy_mod
..()
/mob/living/carbon/human/setOxyLoss(amount)
- if(species)
- amount = amount * species.oxy_mod
+ if(dna.species)
+ amount = amount * dna.species.oxy_mod
..()
/mob/living/carbon/human/adjustToxLoss(amount)
- if(species)
- amount = amount * species.tox_mod
+ if(dna.species)
+ amount = amount * dna.species.tox_mod
..()
/mob/living/carbon/human/setToxLoss(amount)
- if(species)
- amount = amount * species.tox_mod
+ if(dna.species)
+ amount = amount * dna.species.tox_mod
..()
////////////////////////////////////////////
@@ -352,8 +352,8 @@ This function restores all organs.
switch(damagetype)
if(BRUTE)
damageoverlaytemp = 20
- if(species)
- damage = damage * species.brute_mod
+ if(dna.species)
+ damage = damage * dna.species.brute_mod
if(organ.receive_damage(damage, 0, sharp, used_weapon))
UpdateDamageIcon()
@@ -376,8 +376,8 @@ This function restores all organs.
if(BURN)
damageoverlaytemp = 20
- if(species)
- damage = damage * species.burn_mod
+ if(dna.species)
+ damage = damage * dna.species.burn_mod
if(organ.receive_damage(0, damage, sharp, used_weapon))
UpdateDamageIcon()
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 2991e0a7111..6c2bb844155 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -354,7 +354,7 @@ emp_act
if(check_shields(user, 15, "the [hulk_verb]ing"))
return
..(user, TRUE)
- playsound(loc, user.species.unarmed.attack_sound, 25, 1, -1)
+ playsound(loc, user.dna.species.unarmed.attack_sound, 25, 1, -1)
var/message = "[user] has [hulk_verb]ed [src]!"
visible_message("[message]", "[message]")
adjustBruteLoss(15)
@@ -365,7 +365,7 @@ emp_act
return
if(ishuman(user))
var/mob/living/carbon/human/H = user
- species.spec_attack_hand(H, src)
+ dna.species.spec_attack_hand(H, src)
/mob/living/carbon/human/attack_larva(mob/living/carbon/alien/larva/L)
if(..()) //successful larva bite.
@@ -494,7 +494,7 @@ emp_act
/mob/living/carbon/human/water_act(volume, temperature, source)
..()
- species.water_act(src,volume,temperature,source)
+ dna.species.water_act(src,volume,temperature,source)
/mob/living/carbon/human/is_eyes_covered(check_glasses = TRUE, check_head = TRUE, check_mask = TRUE)
if(check_glasses && glasses && (glasses.flags_cover & GLASSESCOVERSEYES))
diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm
index a835133f4d0..71a5f0396a1 100644
--- a/code/modules/mob/living/carbon/human/human_movement.dm
+++ b/code/modules/mob/living/carbon/human/human_movement.dm
@@ -2,7 +2,7 @@
. = 0
. += ..()
. += config.human_delay
- . += species.movement_delay(src)
+ . += dna.species.movement_delay(src)
/mob/living/carbon/human/Process_Spacemove(movement_dir = 0)
@@ -39,12 +39,12 @@
if(!lying && !buckled && !throwing)
for(var/obj/item/organ/external/splinted in splinted_limbs)
splinted.update_splints()
-
+
if(!has_gravity(loc))
return
-
+
var/obj/item/clothing/shoes/S = shoes
-
+
//Bloody footprints
var/turf/T = get_turf(src)
var/obj/item/organ/external/l_foot = get_organ("l_foot")
@@ -119,7 +119,7 @@
if(step_count % 3) //this basically says, every three moves make a noise
return 0 //1st - none, 1%3==1, 2nd - none, 2%3==2, 3rd - noise, 3%3==0
- if(species.silent_steps)
+ if(dna.species.silent_steps)
return 0 //species is silent
playsound(T, S, volume, 1, range)
diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm
index 3f478e65d40..5dcae16b87a 100644
--- a/code/modules/mob/living/carbon/human/human_organs.dm
+++ b/code/modules/mob/living/carbon/human/human_organs.dm
@@ -62,7 +62,7 @@
// standing is poor
if(stance_damage >= 8)
if(!(lying || resting))
- if(!(NO_PAIN in species.species_traits))
+ if(!(NO_PAIN in dna.species.species_traits))
emote("scream")
custom_emote(1, "collapses!")
Weaken(5) //can't emote while weakened, apparently.
@@ -90,7 +90,7 @@
continue
var/emote_scream = pick("screams in pain and ", "lets out a sharp cry and ", "cries out and ")
- custom_emote(1, "[(NO_PAIN in species.species_traits) ? "" : emote_scream ]drops what [p_they()] [p_were()] holding in [p_their()] [E.name]!")
+ custom_emote(1, "[(NO_PAIN in dna.species.species_traits) ? "" : emote_scream ]drops what [p_they()] [p_were()] holding in [p_their()] [E.name]!")
else if(E.is_malfunctioning())
diff --git a/code/modules/mob/living/carbon/human/interactive/interactive.dm b/code/modules/mob/living/carbon/human/interactive/interactive.dm
index a93fd9e8635..e88def0ebad 100644
--- a/code/modules/mob/living/carbon/human/interactive/interactive.dm
+++ b/code/modules/mob/living/carbon/human/interactive/interactive.dm
@@ -128,7 +128,7 @@
//this is here because this has no client/prefs/brain whatever.
age = rand(AGE_MIN, AGE_MAX)
change_gender(pick("male", "female"))
- rename_character(real_name, species.get_random_name(gender))
+ rename_character(real_name, dna.species.get_random_name(gender))
//job handling
myjob = new default_job()
job = myjob.title
@@ -208,9 +208,9 @@
var/datum/dna/toDoppel = chosen.dna
T.real_name = toDoppel.real_name
- T.set_species(chosen.species.name)
- T.body_accessory = chosen.body_accessory
T.dna = toDoppel.Clone()
+ T.set_species(chosen.dna.species)
+ T.body_accessory = chosen.body_accessory
T.UpdateAppearance()
domutcheck(T)
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index 882501c49f2..50848851646 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -419,7 +419,7 @@
..(what, who, where, silent = is_silent)
/mob/living/carbon/human/can_equip(obj/item/I, slot, disable_warning = 0)
- switch(species.handle_can_equip(I, slot, disable_warning, src))
+ switch(dna.species.handle_can_equip(I, slot, disable_warning, src))
if(1) return 1
if(2) return 0 //if it returns 2, it wants no normal handling
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 2e9e9b88656..d577a02e2c4 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -15,10 +15,10 @@
handle_heartbeat()
handle_heartattack()
handle_drunk()
- species.handle_life(src)
+ dna.species.handle_life(src)
if(!client)
- species.handle_npc(src)
+ dna.species.handle_npc(src)
if(stat != DEAD)
//Stuff jammed in your limbs hurts
@@ -178,7 +178,7 @@
if(gene_stability < GENETIC_DAMAGE_STAGE_3)
gib()
- if(!(RADIMMUNE in species.species_traits))
+ if(!(RADIMMUNE in dna.species.species_traits))
if(radiation)
radiation = Clamp(radiation, 0, 200)
@@ -238,7 +238,7 @@
chest.add_autopsy_data("Radiation Poisoning", autopsy_damage)
/mob/living/carbon/human/breathe()
- if(!species.breathe(src))
+ if(!dna.species.breathe(src))
..()
/mob/living/carbon/human/check_breath(datum/gas_mixture/breath)
@@ -253,8 +253,8 @@
failed_last_breath = TRUE
- if(species)
- var/datum/species/S = species
+ if(dna.species)
+ var/datum/species/S = dna.species
if(S.breathid == "o2")
throw_alert("not_enough_oxy", /obj/screen/alert/not_enough_oxy)
@@ -332,39 +332,39 @@
bodytemperature += min((1-thermal_protection) * ((loc_temp - bodytemperature) / BODYTEMP_HEAT_DIVISOR), BODYTEMP_HEATING_MAX)
// +/- 50 degrees from 310.15K is the 'safe' zone, where no damage is dealt.
- if(bodytemperature > species.heat_level_1)
+ if(bodytemperature > dna.species.heat_level_1)
//Body temperature is too hot.
if(status_flags & GODMODE) return 1 //godmode
- var/mult = species.heatmod
+ var/mult = dna.species.heatmod
- if(bodytemperature >= species.heat_level_1 && bodytemperature <= species.heat_level_2)
+ if(bodytemperature >= dna.species.heat_level_1 && bodytemperature <= dna.species.heat_level_2)
throw_alert("temp", /obj/screen/alert/hot, 1)
take_overall_damage(burn=mult*HEAT_DAMAGE_LEVEL_1, used_weapon = "High Body Temperature")
- if(bodytemperature > species.heat_level_2 && bodytemperature <= species.heat_level_3)
+ if(bodytemperature > dna.species.heat_level_2 && bodytemperature <= dna.species.heat_level_3)
throw_alert("temp", /obj/screen/alert/hot, 2)
take_overall_damage(burn=mult*HEAT_DAMAGE_LEVEL_2, used_weapon = "High Body Temperature")
- if(bodytemperature > species.heat_level_3 && bodytemperature < INFINITY)
+ if(bodytemperature > dna.species.heat_level_3 && bodytemperature < INFINITY)
throw_alert("temp", /obj/screen/alert/hot, 3)
if(on_fire)
take_overall_damage(burn=mult*HEAT_DAMAGE_LEVEL_3, used_weapon = "Fire")
else
take_overall_damage(burn=mult*HEAT_DAMAGE_LEVEL_2, used_weapon = "High Body Temperature")
- else if(bodytemperature < species.cold_level_1)
+ else if(bodytemperature < dna.species.cold_level_1)
if(status_flags & GODMODE)
return 1
if(stat == DEAD)
return 1
if(!istype(loc, /obj/machinery/atmospherics/unary/cryo_cell))
- var/mult = species.coldmod
- if(bodytemperature >= species.cold_level_2 && bodytemperature <= species.cold_level_1)
+ var/mult = dna.species.coldmod
+ if(bodytemperature >= dna.species.cold_level_2 && bodytemperature <= dna.species.cold_level_1)
throw_alert("temp", /obj/screen/alert/cold, 1)
take_overall_damage(burn=mult*COLD_DAMAGE_LEVEL_1, used_weapon = "Low Body Temperature")
- if(bodytemperature >= species.cold_level_3 && bodytemperature < species.cold_level_2)
+ if(bodytemperature >= dna.species.cold_level_3 && bodytemperature < dna.species.cold_level_2)
throw_alert("temp", /obj/screen/alert/cold, 2)
take_overall_damage(burn=mult*COLD_DAMAGE_LEVEL_2, used_weapon = "Low Body Temperature")
- if(bodytemperature > -INFINITY && bodytemperature < species.cold_level_3)
+ if(bodytemperature > -INFINITY && bodytemperature < dna.species.cold_level_3)
throw_alert("temp", /obj/screen/alert/cold, 3)
take_overall_damage(burn=mult*COLD_DAMAGE_LEVEL_3, used_weapon = "Low Body Temperature")
else
@@ -379,18 +379,18 @@
var/adjusted_pressure = calculate_affecting_pressure(pressure) //Returns how much pressure actually affects the mob.
if(status_flags & GODMODE) return 1 //godmode
- if(adjusted_pressure >= species.hazard_high_pressure)
+ if(adjusted_pressure >= dna.species.hazard_high_pressure)
if(!(HEATRES in mutations))
- var/pressure_damage = min( ( (adjusted_pressure / species.hazard_high_pressure) -1 )*PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE)
+ var/pressure_damage = min( ( (adjusted_pressure / dna.species.hazard_high_pressure) -1 )*PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE)
take_overall_damage(brute=pressure_damage, used_weapon = "High Pressure")
throw_alert("pressure", /obj/screen/alert/highpressure, 2)
else
clear_alert("pressure")
- else if(adjusted_pressure >= species.warning_high_pressure)
+ else if(adjusted_pressure >= dna.species.warning_high_pressure)
throw_alert("pressure", /obj/screen/alert/highpressure, 1)
- else if(adjusted_pressure >= species.warning_low_pressure)
+ else if(adjusted_pressure >= dna.species.warning_low_pressure)
clear_alert("pressure")
- else if(adjusted_pressure >= species.hazard_low_pressure)
+ else if(adjusted_pressure >= dna.species.hazard_low_pressure)
throw_alert("pressure", /obj/screen/alert/lowpressure, 1)
else
if(COLDRES in mutations)
@@ -430,13 +430,13 @@
//END FIRE CODE
/mob/living/carbon/human/proc/stabilize_temperature_from_calories()
- var/body_temperature_difference = species.body_temperature - bodytemperature
+ var/body_temperature_difference = dna.species.body_temperature - bodytemperature
- if(bodytemperature <= species.cold_level_1) //260.15 is 310.15 - 50, the temperature where you start to feel effects.
+ if(bodytemperature <= dna.species.cold_level_1) //260.15 is 310.15 - 50, the temperature where you start to feel effects.
bodytemperature += max((body_temperature_difference * metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR), BODYTEMP_AUTORECOVERY_MINIMUM)
- if(bodytemperature >= species.cold_level_1 && bodytemperature <= species.heat_level_1)
+ if(bodytemperature >= dna.species.cold_level_1 && bodytemperature <= dna.species.heat_level_1)
bodytemperature += body_temperature_difference * metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR
- if(bodytemperature >= species.heat_level_1) //360.15 is 310.15 + 50, the temperature where you start to feel effects.
+ if(bodytemperature >= dna.species.heat_level_1) //360.15 is 310.15 + 50, the temperature where you start to feel effects.
//We totally need a sweat system cause it totally makes sense...~
bodytemperature += min((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), -BODYTEMP_AUTORECOVERY_MINIMUM) //We're dealing with negative numbers
@@ -588,7 +588,7 @@
return 0 //godmode
//The fucking FAT mutation is the greatest shit ever. It makes everyone so hot and bothered.
- if(CAN_BE_FAT in species.species_traits)
+ if(CAN_BE_FAT in dna.species.species_traits)
if(FAT in mutations)
if(overeatduration < 100)
becomeSlim()
@@ -652,7 +652,7 @@
AdjustDizzy(-3)
AdjustJitter(-3)
- if(NO_INTORGANS in species.species_traits)
+ if(NO_INTORGANS in dna.species.species_traits)
return
handle_trace_chems()
@@ -766,10 +766,10 @@
//Vision //god knows why this is here
var/obj/item/organ/vision
- if(species.vision_organ)
- vision = get_int_organ(species.vision_organ)
+ if(dna.species.vision_organ)
+ vision = get_int_organ(dna.species.vision_organ)
- if(!species.vision_organ) // Presumably if a species has no vision organs, they see via some other means.
+ if(!dna.species.vision_organ) // Presumably if a species has no vision organs, they see via some other means.
SetEyeBlind(0)
blinded = 0
SetEyeBlurry(0)
@@ -860,10 +860,10 @@
remoteview_target = null
reset_perspective(null)
- species.handle_vision(src)
+ dna.species.handle_vision(src)
/mob/living/carbon/human/handle_hud_icons()
- species.handle_hud_icons(src)
+ dna.species.handle_hud_icons(src)
/mob/living/carbon/human/handle_random_events()
// Puke if toxloss is too high
@@ -907,7 +907,7 @@
if(times_fired % 5 == 1)
return pulse //update pulse every 5 life ticks (~1 tick/sec, depending on server load)
- if(NO_BLOOD in species.species_traits)
+ if(NO_BLOOD in dna.species.species_traits)
return PULSE_NONE //No blood, no pulse.
if(stat == DEAD)
@@ -977,7 +977,7 @@
var/obj/item/clothing/mask/M = H.wear_mask
if(M && (M.flags_cover & MASKCOVERSMOUTH))
return
- if(NO_BREATHE in H.species.species_traits)
+ if(NO_BREATHE in H.dna.species.species_traits)
return //no puking if you can't smell!
// Humans can lack a mind datum, y'know
if(H.mind && (H.mind.assigned_role == "Detective" || H.mind.assigned_role == "Coroner"))
@@ -1054,9 +1054,9 @@
/mob/living/carbon/human/proc/can_heartattack()
- if(NO_BLOOD in species.species_traits)
+ if(NO_BLOOD in dna.species.species_traits)
return FALSE
- if(NO_INTORGANS in species.species_traits)
+ if(NO_INTORGANS in dna.species.species_traits)
return FALSE
return TRUE
diff --git a/code/modules/mob/living/carbon/human/login.dm b/code/modules/mob/living/carbon/human/login.dm
index d4b160509ea..e16c67a56d0 100644
--- a/code/modules/mob/living/carbon/human/login.dm
+++ b/code/modules/mob/living/carbon/human/login.dm
@@ -1,7 +1,7 @@
/mob/living/carbon/human/Login()
..()
- if(species && species.ventcrawler)
+ if(dna.species && dna.species.ventcrawler)
to_chat(src, "You can ventcrawl! Use alt+click on vents to quickly travel about the station.")
update_pipe_vision()
return
diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm
index 7657a3be3be..7d408ce9199 100644
--- a/code/modules/mob/living/carbon/human/say.dm
+++ b/code/modules/mob/living/carbon/human/say.dm
@@ -42,7 +42,7 @@
if(has_brain_worms()) //Brain worms translate everything. Even mice and alien speak.
return 1
- if(species.can_understand(other))
+ if(dna.species.can_understand(other))
return 1
//These only pertain to common. Languages are handled by mob/say_understands()
@@ -87,7 +87,7 @@
/mob/living/carbon/human/IsVocal()
// how do species that don't breathe talk? magic, that's what.
- var/breathes = (!(NO_BREATHE in species.species_traits))
+ var/breathes = (!(NO_BREATHE in dna.species.species_traits))
var/obj/item/organ/internal/L = get_organ_slot("lungs")
if((breathes && !L) || breathes && L && (L.status & ORGAN_DEAD))
return FALSE
@@ -219,8 +219,8 @@
/mob/living/carbon/human/handle_speech_sound()
var/list/returns[2]
- if(species.speech_sounds && prob(species.speech_chance))
- returns[1] = sound(pick(species.speech_sounds))
+ if(dna.species.speech_sounds && prob(dna.species.speech_chance))
+ returns[1] = sound(pick(dna.species.speech_sounds))
returns[2] = 50
return returns
diff --git a/code/modules/mob/living/carbon/human/shock.dm b/code/modules/mob/living/carbon/human/shock.dm
index d8dc9356de7..e2d5dd79cec 100644
--- a/code/modules/mob/living/carbon/human/shock.dm
+++ b/code/modules/mob/living/carbon/human/shock.dm
@@ -23,7 +23,7 @@
/mob/living/carbon/human/proc/handle_shock()
if(status_flags & GODMODE) //godmode
return
- if(NO_PAIN in species.species_traits)
+ if(NO_PAIN in dna.species.species_traits)
return
updateshock()
diff --git a/code/modules/mob/living/carbon/human/species/monkey.dm b/code/modules/mob/living/carbon/human/species/monkey.dm
index c5003b21330..d3ca4f68b3a 100644
--- a/code/modules/mob/living/carbon/human/species/monkey.dm
+++ b/code/modules/mob/living/carbon/human/species/monkey.dm
@@ -11,7 +11,7 @@
path = /mob/living/carbon/human/monkey
language = null
default_language = "Chimpanzee"
- greater_form = "Human"
+ greater_form = /datum/species/human
is_small = 1
has_fine_manipulation = 0
ventcrawler = 1
@@ -99,7 +99,7 @@
icobase = 'icons/mob/human_races/monkeys/r_farwa.dmi'
deform = 'icons/mob/human_races/monkeys/r_farwa.dmi'
- greater_form = "Tajaran"
+ greater_form = /datum/species/tajaran
default_language = "Farwa"
flesh_color = "#AFA59E"
base_color = "#000000"
@@ -123,7 +123,7 @@
icobase = 'icons/mob/human_races/monkeys/r_wolpin.dmi'
deform = 'icons/mob/human_races/monkeys/r_wolpin.dmi'
- greater_form = "Vulpkanin"
+ greater_form = /datum/species/vulpkanin
default_language = "Wolpin"
flesh_color = "#966464"
base_color = "#000000"
@@ -147,7 +147,7 @@
icobase = 'icons/mob/human_races/monkeys/r_neara.dmi'
deform = 'icons/mob/human_races/monkeys/r_neara.dmi'
- greater_form = "Skrell"
+ greater_form = /datum/species/skrell
default_language = "Neara"
flesh_color = "#8CD7A3"
blood_color = "#1D2CBF"
@@ -162,7 +162,7 @@
deform = 'icons/mob/human_races/monkeys/r_stok.dmi'
tail = "stoktail"
- greater_form = "Unathi"
+ greater_form = /datum/species/unathi
default_language = "Stok"
flesh_color = "#34AF10"
base_color = "#000000"
diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm
index 139f2f7c9bb..aa59b83b2c4 100644
--- a/code/modules/mob/living/carbon/human/species/species.dm
+++ b/code/modules/mob/living/carbon/human/species/species.dm
@@ -334,7 +334,7 @@
/datum/species/proc/harm(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style)
//Vampire code
if(user.mind && user.mind.vampire && (user.mind in ticker.mode.vampires) && !user.mind.vampire.draining && user.zone_sel && user.zone_sel.selecting == "head" && target != user)
- if((NO_BLOOD in target.species.species_traits) || target.species.exotic_blood || !target.blood_volume)
+ if((NO_BLOOD in target.dna.species.species_traits) || target.dna.species.exotic_blood || !target.blood_volume)
to_chat(user, "They have no blood!")
return
if(target.mind && target.mind.vampire && (target.mind in ticker.mode.vampires))
@@ -354,7 +354,7 @@
if(attacker_style && attacker_style.harm_act(user, target))
return 1
else
- var/datum/unarmed_attack/attack = user.species.unarmed
+ var/datum/unarmed_attack/attack = user.dna.species.unarmed
user.do_attack_animation(target, attack.animation_type)
add_attack_logs(user, target, "Melee attacked with fists", target.ckey ? null : ATKLOG_ALL)
@@ -364,7 +364,7 @@
else
target.LAssailant = user
- var/damage = rand(user.species.punchdamagelow, user.species.punchdamagehigh)
+ var/damage = rand(user.dna.species.punchdamagelow, user.dna.species.punchdamagehigh)
damage += attack.damage
if(!damage)
playsound(target.loc, attack.miss_sound, 25, 1, -1)
@@ -380,7 +380,7 @@
target.visible_message("[user] [pick(attack.attack_verb)]ed [target]!")
target.apply_damage(damage, BRUTE, affecting, armor_block, sharp = attack.sharp) //moving this back here means Armalis are going to knock you down 70% of the time, but they're pure adminbus anyway.
- if((target.stat != DEAD) && damage >= user.species.punchstunthreshold)
+ if((target.stat != DEAD) && damage >= user.dna.species.punchstunthreshold)
target.visible_message("[user] has weakened [target]!", \
"[user] has weakened [target]!")
target.apply_effect(4, WEAKEN, armor_block)
diff --git a/code/modules/mob/living/carbon/human/species/station.dm b/code/modules/mob/living/carbon/human/species/station.dm
index c93d11d9a2b..ae17fcb0367 100644
--- a/code/modules/mob/living/carbon/human/species/station.dm
+++ b/code/modules/mob/living/carbon/human/species/station.dm
@@ -3,8 +3,8 @@
name_plural = "Humans"
icobase = 'icons/mob/human_races/r_human.dmi'
deform = 'icons/mob/human_races/r_def_human.dmi'
- primitive_form = "Monkey"
- path = /mob/living/carbon/human/human
+ primitive_form = /datum/species/monkey
+ path = /mob/living/carbon/human
language = "Sol Common"
species_traits = list(LIPS, CAN_BE_FAT)
clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS
@@ -29,7 +29,7 @@
language = "Sinta'unathi"
tail = "sogtail"
unarmed_type = /datum/unarmed_attack/claws
- primitive_form = "Stok"
+ primitive_form = /datum/species/monkey/unathi
blurb = "A heavily reptillian species, Unathi (or 'Sinta as they call themselves) hail from the \
Uuosa-Eso system, which roughly translates to 'burning mother'.
Coming from a harsh, radioactive \
@@ -138,7 +138,7 @@
heat_level_2 = 380
heat_level_3 = 440
- primitive_form = "Farwa"
+ primitive_form = /datum/species/monkey/tajaran
species_traits = list(LIPS, CAN_BE_FAT)
clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS
@@ -181,7 +181,7 @@
path = /mob/living/carbon/human/vulpkanin
default_language = "Galactic Common"
language = "Canilunzt"
- primitive_form = "Wolpin"
+ primitive_form = /datum/species/monkey/vulpkanin
tail = "vulptail"
unarmed_type = /datum/unarmed_attack/claws
@@ -235,7 +235,7 @@
path = /mob/living/carbon/human/skrell
default_language = "Galactic Common"
language = "Skrellian"
- primitive_form = "Neara"
+ primitive_form = /datum/species/monkey/skrell
blurb = "An amphibious species, Skrell come from the star system known as Qerr'Vallis, which translates to 'Star of \
the royals' or 'Light of the Crown'.
Skrell are a highly advanced and logical race who live under the rule \
@@ -393,7 +393,7 @@
..()
/datum/species/vox/updatespeciescolor(var/mob/living/carbon/human/H, var/owner_sensitive = 1) //Handling species-specific skin-tones for the Vox race.
- if(H.species.bodyflags & HAS_ICON_SKIN_TONE) //Making sure we don't break Armalis.
+ if(H.dna.species.bodyflags & HAS_ICON_SKIN_TONE) //Making sure we don't break Armalis.
var/new_icobase = 'icons/mob/human_races/vox/r_vox.dmi' //Default Green Vox.
var/new_deform = 'icons/mob/human_races/vox/r_def_vox.dmi' //Default Green Vox.
switch(H.s_tone)
@@ -617,7 +617,7 @@
if(world.time % SLIMEPERSON_ICON_UPDATE_PERIOD > SLIMEPERSON_ICON_UPDATE_PERIOD - 20) // The 20 is because this gets called every 2 seconds, from the mob controller
for(var/organname in H.bodyparts_by_name)
var/obj/item/organ/external/E = H.bodyparts_by_name[organname]
- if(istype(E) && E.dna && istype(E.dna.species2, /datum/species/slime))
+ if(istype(E) && E.dna && istype(E.dna.species, /datum/species/slime))
E.sync_colour_to_human(H)
H.update_hair(0)
H.update_body()
@@ -672,7 +672,7 @@
for(var/l in bodyparts_by_name)
var/obj/item/organ/external/E = bodyparts_by_name[l]
if(!istype(E))
- var/list/limblist = species.has_limbs[l]
+ var/list/limblist = dna.species.has_limbs[l]
var/obj/item/organ/external/limb = limblist["path"]
var/parent_organ = initial(limb.parent_organ)
var/obj/item/organ/external/parentLimb = bodyparts_by_name[parent_organ]
@@ -708,7 +708,7 @@
stored_burn = doomedStump.burn_dam
qdel(O)
- var/limb_list = species.has_limbs[chosen_limb]
+ var/limb_list = dna.species.has_limbs[chosen_limb]
var/obj/item/organ/external/limb_path = limb_list["path"]
// Parent check
var/obj/item/organ/external/potential_parent = bodyparts_by_name[initial(limb_path.parent_organ)]
diff --git a/code/modules/mob/living/carbon/human/status_procs.dm b/code/modules/mob/living/carbon/human/status_procs.dm
index 5f74f202603..e7a65129017 100644
--- a/code/modules/mob/living/carbon/human/status_procs.dm
+++ b/code/modules/mob/living/carbon/human/status_procs.dm
@@ -1,19 +1,19 @@
/mob/living/carbon/human/SetStunned(amount, updating = 1, force = 0)
- if(species)
- amount = amount * species.stun_mod
+ if(dna.species)
+ amount = amount * dna.species.stun_mod
..()
/mob/living/carbon/human/SetWeakened(amount, updating = 1, force = 0)
- if(species)
- amount = amount * species.stun_mod
+ if(dna.species)
+ amount = amount * dna.species.stun_mod
..()
/mob/living/carbon/human/SetParalysis(amount, updating = 1, force = 0)
- if(species)
- amount = amount * species.stun_mod
+ if(dna.species)
+ amount = amount * dna.species.stun_mod
..()
/mob/living/carbon/human/SetSleeping(amount, updating = 1, no_alert = FALSE)
- if(species)
- amount = amount * species.stun_mod
+ if(dna.species)
+ amount = amount * dna.species.stun_mod
..()
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index 4f84cf1f821..3729e9aa85e 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -185,7 +185,7 @@ var/global/list/damage_icon_parts = list()
previous_damage_appearance = damage_appearance
- var/icon/standing = new /icon(species.damage_overlays, "00")
+ var/icon/standing = new /icon(dna.species.damage_overlays, "00")
var/image/standing_image = new /image("icon" = standing)
@@ -194,12 +194,12 @@ var/global/list/damage_icon_parts = list()
O.update_icon()
if(O.damage_state == "00") continue
var/icon/DI
- var/cache_index = "[O.damage_state]/[O.icon_name]/[species.blood_color]/[species.name]"
+ var/cache_index = "[O.damage_state]/[O.icon_name]/[dna.species.blood_color]/[dna.species.name]"
if(damage_icon_parts[cache_index] == null)
- DI = new /icon(species.damage_overlays, O.damage_state) // the damage icon for whole human
- DI.Blend(new /icon(species.damage_mask, O.icon_name), ICON_MULTIPLY) // mask with this organ's pixels
- DI.Blend(species.blood_color, ICON_MULTIPLY)
+ DI = new /icon(dna.species.damage_overlays, O.damage_state) // the damage icon for whole human
+ DI.Blend(new /icon(dna.species.damage_mask, O.icon_name), ICON_MULTIPLY) // mask with this organ's pixels
+ DI.Blend(dna.species.blood_color, ICON_MULTIPLY)
damage_icon_parts[cache_index] = DI
else
DI = damage_icon_parts[cache_index]
@@ -220,15 +220,15 @@ var/global/list/damage_icon_parts = list()
var/hulk = (HULK in mutations)
var/skeleton = (SKELETON in mutations)
- if(species && species.bodyflags & HAS_ICON_SKIN_TONE)
- species.updatespeciescolor(src)
+ if(dna.species && dna.species.bodyflags & HAS_ICON_SKIN_TONE)
+ dna.species.updatespeciescolor(src)
//CACHING: Generate an index key from visible bodyparts.
//0 = destroyed, 1 = normal, 2 = robotic, 3 = necrotic.
//Create a new, blank icon for our mob to use.
if(stand_icon)
qdel(stand_icon)
- stand_icon = new(species.icon_template ? species.icon_template : 'icons/mob/human.dmi',"blank")
+ stand_icon = new(dna.species.icon_template ? dna.species.icon_template : 'icons/mob/human.dmi',"blank")
var/icon_key = ""
var/obj/item/organ/internal/eyes/eyes = get_int_organ(/obj/item/organ/internal/eyes)
@@ -237,7 +237,7 @@ var/global/list/damage_icon_parts = list()
else
icon_key += "#000000"
- for(var/organ_tag in species.has_limbs)
+ for(var/organ_tag in dna.species.has_limbs)
var/obj/item/organ/external/part = bodyparts_by_name[organ_tag]
if(isnull(part))
icon_key += "0"
@@ -249,7 +249,7 @@ var/global/list/damage_icon_parts = list()
icon_key += "1"
if(part)
- icon_key += "[part.dna.species2.race_key]"
+ icon_key += "[part.dna.species.race_key]"
icon_key += "[part.dna.GetUIState(DNA_UI_GENDER)]"
icon_key += "[part.dna.GetUIValue(DNA_UI_SKIN_TONE)]"
if(part.s_col)
@@ -307,7 +307,7 @@ var/global/list/damage_icon_parts = list()
//END CACHED ICON GENERATION.
stand_icon.Blend(base_icon,ICON_OVERLAY)
- if((!body_accessory || istype(body_accessory, /datum/body_accessory/tail)) && species.bodyflags & TAIL_OVERLAPPED) // If the user's species is flagged to have a tail that needs to be overlapped by limbs... (having a non-tail body accessory like the snake body will override this)
+ if((!body_accessory || istype(body_accessory, /datum/body_accessory/tail)) && dna.species.bodyflags & TAIL_OVERLAPPED) // If the user's species is flagged to have a tail that needs to be overlapped by limbs... (having a non-tail body accessory like the snake body will override this)
overlays_standing[LIMBS_LAYER] = image(stand_icon) // Diverts limbs to their own layer so they can overlay things (i.e. tails).
else
overlays_standing[LIMBS_LAYER] = null // So we don't get the old species' sprite splatted on top of the new one's
@@ -316,18 +316,18 @@ var/global/list/damage_icon_parts = list()
overlays_standing[UNDERWEAR_LAYER] = null
var/icon/underwear_standing = new/icon('icons/mob/underwear.dmi',"nude")
- if(underwear && species.clothing_flags & HAS_UNDERWEAR)
+ if(underwear && dna.species.clothing_flags & HAS_UNDERWEAR)
var/datum/sprite_accessory/underwear/U = underwear_list[underwear]
if(U)
underwear_standing.Blend(new /icon(U.icon, "uw_[U.icon_state]_s"), ICON_OVERLAY)
- if(undershirt && species.clothing_flags & HAS_UNDERSHIRT)
+ if(undershirt && dna.species.clothing_flags & HAS_UNDERSHIRT)
var/datum/sprite_accessory/undershirt/U2 = undershirt_list[undershirt]
if(U2)
underwear_standing.Blend(new /icon(U2.icon, "us_[U2.icon_state]_s"), ICON_OVERLAY)
- if(socks && species.clothing_flags & HAS_SOCKS)
+ if(socks && dna.species.clothing_flags & HAS_SOCKS)
var/datum/sprite_accessory/socks/U3 = socks_list[socks]
if(U3)
underwear_standing.Blend(new /icon(U3.icon, "sk_[U3.icon_state]_s"), ICON_OVERLAY)
@@ -339,7 +339,7 @@ var/global/list/damage_icon_parts = list()
if(update_icons)
update_icons()
- if(lip_style && (LIPS in species.species_traits))
+ if(lip_style && (LIPS in dna.species.species_traits))
var/icon/lips = icon("icon"='icons/mob/human_face.dmi', "icon_state"="lips_[lip_style]_s")
lips.Blend(lip_color, ICON_ADD)
@@ -369,7 +369,7 @@ var/global/list/damage_icon_parts = list()
if(chest_organ && m_styles["body"])
var/body_marking = m_styles["body"]
var/datum/sprite_accessory/body_marking_style = marking_styles_list[body_marking]
- if(body_marking_style && body_marking_style.species_allowed && (species.name in body_marking_style.species_allowed))
+ if(body_marking_style && body_marking_style.species_allowed && (dna.species.name in body_marking_style.species_allowed))
var/icon/b_marking_s = new/icon("icon" = body_marking_style.icon, "icon_state" = "[body_marking_style.icon_state]_s")
if(body_marking_style.do_colouration)
b_marking_s.Blend(m_colours["body"], ICON_ADD)
@@ -379,7 +379,7 @@ var/global/list/damage_icon_parts = list()
if(head_organ && m_styles["head"]) //If the head is destroyed, forget the head markings. This prevents floating optical markings on decapitated IPCs, for example.
var/head_marking = m_styles["head"]
var/datum/sprite_accessory/head_marking_style = marking_styles_list[head_marking]
- if(head_marking_style && head_marking_style.species_allowed && (head_organ.dna.species2.name in head_marking_style.species_allowed))
+ if(head_marking_style && head_marking_style.species_allowed && (head_organ.dna.species.name in head_marking_style.species_allowed))
var/icon/h_marking_s = new/icon("icon" = head_marking_style.icon, "icon_state" = "[head_marking_style.icon_state]_s")
if(head_marking_style.do_colouration)
h_marking_s.Blend(m_colours["head"], ICON_ADD)
@@ -407,10 +407,10 @@ var/global/list/damage_icon_parts = list()
//base icons
var/icon/head_accessory_standing = new /icon('icons/mob/body_accessory.dmi',"accessory_none_s")
- if(head_organ.ha_style && (head_organ.dna.species2.bodyflags & HAS_HEAD_ACCESSORY))
+ if(head_organ.ha_style && (head_organ.dna.species.bodyflags & HAS_HEAD_ACCESSORY))
var/datum/sprite_accessory/head_accessory/head_accessory_style = head_accessory_styles_list[head_organ.ha_style]
if(head_accessory_style && head_accessory_style.species_allowed)
- if(head_organ.dna.species2.name in head_accessory_style.species_allowed)
+ if(head_organ.dna.species.name in head_accessory_style.species_allowed)
var/icon/head_accessory_s = new/icon("icon" = head_accessory_style.icon, "icon_state" = "[head_accessory_style.icon_state]_s")
if(head_accessory_style.do_colouration)
head_accessory_s.Blend(head_organ.headacc_colour, ICON_ADD)
@@ -451,9 +451,9 @@ var/global/list/damage_icon_parts = list()
//if(!src.get_int_organ(/obj/item/organ/internal/brain) && src.get_species() != "Machine" )//make it obvious we have NO BRAIN
// hair_standing.Blend(debrained_s, ICON_OVERLAY)
if(hair_style && hair_style.species_allowed)
- if((head_organ.dna.species2.name in hair_style.species_allowed) || (head_organ.dna.species2.bodyflags & ALL_RPARTS)) //If the head's species is in the list of allowed species for the hairstyle, or the head's species is one flagged to have bodies comprised wholly of cybernetics...
+ if((head_organ.dna.species.name in hair_style.species_allowed) || (head_organ.dna.species.bodyflags & ALL_RPARTS)) //If the head's species is in the list of allowed species for the hairstyle, or the head's species is one flagged to have bodies comprised wholly of cybernetics...
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
- if(istype(head_organ.dna.species2, /datum/species/slime)) // I am el worstos
+ if(istype(head_organ.dna.species, /datum/species/slime)) // I am el worstos
hair_s.Blend("[skin_colour]A0", ICON_AND)
else if(hair_style.do_colouration)
hair_s.Blend(head_organ.hair_colour, ICON_ADD)
@@ -497,9 +497,9 @@ var/global/list/damage_icon_parts = list()
if(head_organ.f_style)
var/datum/sprite_accessory/facial_hair/facial_hair_style = facial_hair_styles_list[head_organ.f_style]
if(facial_hair_style && facial_hair_style.species_allowed)
- if((head_organ.dna.species2.name in facial_hair_style.species_allowed) || (head_organ.dna.species2.bodyflags & ALL_RPARTS)) //If the head's species is in the list of allowed species for the hairstyle, or the head's species is one flagged to have bodies comprised wholly of cybernetics...
+ if((head_organ.dna.species.name in facial_hair_style.species_allowed) || (head_organ.dna.species.bodyflags & ALL_RPARTS)) //If the head's species is in the list of allowed species for the hairstyle, or the head's species is one flagged to have bodies comprised wholly of cybernetics...
var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s")
- if(istype(head_organ.dna.species2, /datum/species/slime)) // I am el worstos
+ if(istype(head_organ.dna.species, /datum/species/slime)) // I am el worstos
facial_s.Blend("[skin_colour]A0", ICON_AND)
else if(facial_hair_style.do_colouration)
facial_s.Blend(head_organ.facial_colour, ICON_ADD)
@@ -644,11 +644,11 @@ var/global/list/damage_icon_parts = list()
if(w_uniform.icon_override)
standing.icon = w_uniform.icon_override
- else if(w_uniform.sprite_sheets && w_uniform.sprite_sheets[species.name])
- standing.icon = w_uniform.sprite_sheets[species.name]
+ else if(w_uniform.sprite_sheets && w_uniform.sprite_sheets[dna.species.name])
+ standing.icon = w_uniform.sprite_sheets[dna.species.name]
if(w_uniform.blood_DNA)
- var/image/bloodsies = image("icon" = species.blood_mask, "icon_state" = "uniformblood")
+ var/image/bloodsies = image("icon" = dna.species.blood_mask, "icon_state" = "uniformblood")
bloodsies.color = w_uniform.blood_color
standing.overlays += bloodsies
@@ -658,8 +658,8 @@ var/global/list/damage_icon_parts = list()
if(!tie_color) tie_color = A.icon_state
if(A.icon_override)
standing.overlays += image("icon" = A.icon_override, "icon_state" = "[A.icon_state]")
- else if(A.sprite_sheets && A.sprite_sheets[species.name])
- standing.overlays += image("icon" = A.sprite_sheets[species.name], "icon_state" = "[A.icon_state]")
+ else if(A.sprite_sheets && A.sprite_sheets[dna.species.name])
+ standing.overlays += image("icon" = A.sprite_sheets[dna.species.name], "icon_state" = "[A.icon_state]")
else
standing.overlays += image("icon" = 'icons/mob/ties.dmi', "icon_state" = "[tie_color]")
@@ -720,19 +720,19 @@ var/global/list/damage_icon_parts = list()
var/image/standing
if(gloves.icon_override)
standing = image("icon" = gloves.icon_override, "icon_state" = "[t_state]")
- else if(gloves.sprite_sheets && gloves.sprite_sheets[species.name])
- standing = image("icon" = gloves.sprite_sheets[species.name], "icon_state" = "[t_state]")
+ else if(gloves.sprite_sheets && gloves.sprite_sheets[dna.species.name])
+ standing = image("icon" = gloves.sprite_sheets[dna.species.name], "icon_state" = "[t_state]")
else
standing = image("icon" = 'icons/mob/hands.dmi', "icon_state" = "[t_state]")
if(gloves.blood_DNA)
- var/image/bloodsies = image("icon" = species.blood_mask, "icon_state" = "bloodyhands")
+ var/image/bloodsies = image("icon" = dna.species.blood_mask, "icon_state" = "bloodyhands")
bloodsies.color = gloves.blood_color
standing.overlays += bloodsies
overlays_standing[GLOVES_LAYER] = standing
else
if(blood_DNA)
- var/image/bloodsies = image("icon" = species.blood_mask, "icon_state" = "bloodyhands")
+ var/image/bloodsies = image("icon" = dna.species.blood_mask, "icon_state" = "bloodyhands")
bloodsies.color = hand_blood_color
overlays_standing[GLOVES_LAYER] = bloodsies
else
@@ -759,8 +759,8 @@ var/global/list/damage_icon_parts = list()
if(glasses.icon_override)
new_glasses = image("icon" = glasses.icon_override, "icon_state" = "[glasses.icon_state]")
- else if(glasses.sprite_sheets && glasses.sprite_sheets[head_organ.dna.species2.name])
- new_glasses = image("icon" = glasses.sprite_sheets[head_organ.dna.species2.name], "icon_state" = "[glasses.icon_state]")
+ else if(glasses.sprite_sheets && glasses.sprite_sheets[head_organ.dna.species.name])
+ new_glasses = image("icon" = glasses.sprite_sheets[head_organ.dna.species.name], "icon_state" = "[glasses.icon_state]")
else
new_glasses = image("icon" = 'icons/mob/eyes.dmi', "icon_state" = "[glasses.icon_state]")
@@ -795,9 +795,9 @@ var/global/list/damage_icon_parts = list()
if(l_ear.icon_override)
t_type = "[t_type]_l"
overlays_standing[EARS_LAYER] = image("icon" = l_ear.icon_override, "icon_state" = "[t_type]")
- else if(l_ear.sprite_sheets && l_ear.sprite_sheets[species.name])
+ else if(l_ear.sprite_sheets && l_ear.sprite_sheets[dna.species.name])
t_type = "[t_type]_l"
- overlays_standing[EARS_LAYER] = image("icon" = l_ear.sprite_sheets[species.name], "icon_state" = "[t_type]")
+ overlays_standing[EARS_LAYER] = image("icon" = l_ear.sprite_sheets[dna.species.name], "icon_state" = "[t_type]")
else
overlays_standing[EARS_LAYER] = image("icon" = 'icons/mob/ears.dmi', "icon_state" = "[t_type]")
@@ -811,9 +811,9 @@ var/global/list/damage_icon_parts = list()
if(r_ear.icon_override)
t_type = "[t_type]_r"
overlays_standing[EARS_LAYER] = image("icon" = r_ear.icon_override, "icon_state" = "[t_type]")
- else if(r_ear.sprite_sheets && r_ear.sprite_sheets[species.name])
+ else if(r_ear.sprite_sheets && r_ear.sprite_sheets[dna.species.name])
t_type = "[t_type]_r"
- overlays_standing[EARS_LAYER] = image("icon" = r_ear.sprite_sheets[species.name], "icon_state" = "[t_type]")
+ overlays_standing[EARS_LAYER] = image("icon" = r_ear.sprite_sheets[dna.species.name], "icon_state" = "[t_type]")
else
overlays_standing[EARS_LAYER] = image("icon" = 'icons/mob/ears.dmi', "icon_state" = "[t_type]")
@@ -837,20 +837,20 @@ var/global/list/damage_icon_parts = list()
var/image/standing
if(shoes.icon_override)
standing = image("icon" = shoes.icon_override, "icon_state" = "[shoes.icon_state]")
- else if(shoes.sprite_sheets && shoes.sprite_sheets[species.name])
- standing = image("icon" = shoes.sprite_sheets[species.name], "icon_state" = "[shoes.icon_state]")
+ else if(shoes.sprite_sheets && shoes.sprite_sheets[dna.species.name])
+ standing = image("icon" = shoes.sprite_sheets[dna.species.name], "icon_state" = "[shoes.icon_state]")
else
standing = image("icon" = 'icons/mob/feet.dmi', "icon_state" = "[shoes.icon_state]")
if(shoes.blood_DNA)
- var/image/bloodsies = image("icon" = species.blood_mask, "icon_state" = "shoeblood")
+ var/image/bloodsies = image("icon" = dna.species.blood_mask, "icon_state" = "shoeblood")
bloodsies.color = shoes.blood_color
standing.overlays += bloodsies
overlays_standing[SHOES_LAYER] = standing
else
if(feet_blood_DNA)
- var/image/bloodsies = image("icon" = species.blood_mask, "icon_state" = "shoeblood")
+ var/image/bloodsies = image("icon" = dna.species.blood_mask, "icon_state" = "shoeblood")
bloodsies.color = feet_blood_color
overlays_standing[SHOES_LAYER] = bloodsies
else
@@ -891,13 +891,13 @@ var/global/list/damage_icon_parts = list()
var/image/standing
if(head.icon_override)
standing = image("icon" = head.icon_override, "icon_state" = "[head.icon_state]")
- else if(head.sprite_sheets && head.sprite_sheets[species.name])
- standing = image("icon" = head.sprite_sheets[species.name], "icon_state" = "[head.icon_state]")
+ else if(head.sprite_sheets && head.sprite_sheets[dna.species.name])
+ standing = image("icon" = head.sprite_sheets[dna.species.name], "icon_state" = "[head.icon_state]")
else
standing = image("icon" = 'icons/mob/head.dmi', "icon_state" = "[head.icon_state]")
if(head.blood_DNA)
- var/image/bloodsies = image("icon" = species.blood_mask, "icon_state" = "helmetblood")
+ var/image/bloodsies = image("icon" = dna.species.blood_mask, "icon_state" = "helmetblood")
bloodsies.color = head.blood_color
standing.overlays += bloodsies
overlays_standing[HEAD_LAYER] = standing
@@ -925,8 +925,8 @@ var/global/list/damage_icon_parts = list()
if(belt.icon_override)
t_state = "[t_state]_be"
overlays_standing[BELT_LAYER] = image("icon" = belt.icon_override, "icon_state" = "[t_state]")
- else if(belt.sprite_sheets && belt.sprite_sheets[species.name])
- overlays_standing[BELT_LAYER] = image("icon" = belt.sprite_sheets[species.name], "icon_state" = "[t_state]")
+ else if(belt.sprite_sheets && belt.sprite_sheets[dna.species.name])
+ overlays_standing[BELT_LAYER] = image("icon" = belt.sprite_sheets[dna.species.name], "icon_state" = "[t_state]")
else
overlays_standing[BELT_LAYER] = image("icon" = 'icons/mob/belt.dmi', "icon_state" = "[t_state]")
else
@@ -949,8 +949,8 @@ var/global/list/damage_icon_parts = list()
var/image/standing
if(wear_suit.icon_override)
standing = image("icon" = wear_suit.icon_override, "icon_state" = "[wear_suit.icon_state]")
- else if(wear_suit.sprite_sheets && wear_suit.sprite_sheets[species.name])
- standing = image("icon" = wear_suit.sprite_sheets[species.name], "icon_state" = "[wear_suit.icon_state]")
+ else if(wear_suit.sprite_sheets && wear_suit.sprite_sheets[dna.species.name])
+ standing = image("icon" = wear_suit.sprite_sheets[dna.species.name], "icon_state" = "[wear_suit.icon_state]")
else if(FAT in mutations)
if(wear_suit.flags_size & ONESIZEFITSALL)
standing = image("icon" = 'icons/mob/suit_fat.dmi', "icon_state" = "[wear_suit.icon_state]")
@@ -969,7 +969,7 @@ var/global/list/damage_icon_parts = list()
if(wear_suit.blood_DNA)
var/obj/item/clothing/suit/S = wear_suit
- var/image/bloodsies = image("icon" = species.blood_mask, "icon_state" = "[S.blood_overlay_type]blood")
+ var/image/bloodsies = image("icon" = dna.species.blood_mask, "icon_state" = "[S.blood_overlay_type]blood")
bloodsies.color = wear_suit.blood_color
standing.overlays += bloodsies
@@ -1035,14 +1035,14 @@ var/global/list/damage_icon_parts = list()
if(wear_mask.icon_override)
mask_icon = new(wear_mask.icon_override)
standing = image("icon" = wear_mask.icon_override, "icon_state" = "[wear_mask.icon_state][(alternate_head && ("[wear_mask.icon_state]_[alternate_head.suffix]" in mask_icon.IconStates())) ? "_[alternate_head.suffix]" : ""]")
- else if(wear_mask.sprite_sheets && wear_mask.sprite_sheets[species.name])
- mask_icon = new(wear_mask.sprite_sheets[species.name])
- standing = image("icon" = wear_mask.sprite_sheets[species.name], "icon_state" = "[wear_mask.icon_state][(alternate_head && ("[wear_mask.icon_state]_[alternate_head.suffix]" in mask_icon.IconStates())) ? "_[alternate_head.suffix]" : ""]")
+ else if(wear_mask.sprite_sheets && wear_mask.sprite_sheets[dna.species.name])
+ mask_icon = new(wear_mask.sprite_sheets[dna.species.name])
+ standing = image("icon" = wear_mask.sprite_sheets[dna.species.name], "icon_state" = "[wear_mask.icon_state][(alternate_head && ("[wear_mask.icon_state]_[alternate_head.suffix]" in mask_icon.IconStates())) ? "_[alternate_head.suffix]" : ""]")
else
standing = image("icon" = 'icons/mob/mask.dmi', "icon_state" = "[wear_mask.icon_state][(alternate_head && ("[wear_mask.icon_state]_[alternate_head.suffix]" in mask_icon.IconStates())) ? "_[alternate_head.suffix]" : ""]")
if(!istype(wear_mask, /obj/item/clothing/mask/cigarette) && wear_mask.blood_DNA)
- var/image/bloodsies = image("icon" = species.blood_mask, "icon_state" = "maskblood")
+ var/image/bloodsies = image("icon" = dna.species.blood_mask, "icon_state" = "maskblood")
bloodsies.color = wear_mask.blood_color
standing.overlays += bloodsies
overlays_standing[FACEMASK_LAYER] = standing
@@ -1062,8 +1062,8 @@ var/global/list/damage_icon_parts = list()
//If this is a rig and a mob_icon is set, it will take species into account in the rig update_icon() proc.
var/obj/item/rig/rig = back
standing = rig.mob_icon
- else if(back.sprite_sheets && back.sprite_sheets[species.name])
- standing = image("icon" = back.sprite_sheets[species.name], "icon_state" = "[back.icon_state]")
+ else if(back.sprite_sheets && back.sprite_sheets[dna.species.name])
+ standing = image("icon" = back.sprite_sheets[dna.species.name], "icon_state" = "[back.icon_state]")
else
standing = image("icon" = 'icons/mob/back.dmi', "icon_state" = "[back.icon_state]")
@@ -1163,7 +1163,7 @@ var/global/list/damage_icon_parts = list()
var/icon/tail_marking_icon
var/datum/sprite_accessory/body_markings/tail/tail_marking_style
- if(m_styles["tail"] != "None" && (species.bodyflags & HAS_TAIL_MARKINGS))
+ if(m_styles["tail"] != "None" && (dna.species.bodyflags & HAS_TAIL_MARKINGS))
var/tail_marking = m_styles["tail"]
tail_marking_style = marking_styles_list[tail_marking]
tail_marking_icon = new/icon("icon" = tail_marking_style.icon, "icon_state" = "[tail_marking_style.icon_state]_s")
@@ -1172,11 +1172,11 @@ var/global/list/damage_icon_parts = list()
if(body_accessory)
if(body_accessory.try_restrictions(src))
var/icon/accessory_s = new/icon("icon" = body_accessory.icon, "icon_state" = body_accessory.icon_state)
- if(species.bodyflags & HAS_SKIN_COLOR)
+ if(dna.species.bodyflags & HAS_SKIN_COLOR)
accessory_s.Blend(skin_colour, body_accessory.blend_mode)
if(tail_marking_icon && (body_accessory.name in tail_marking_style.tails_allowed))
accessory_s.Blend(tail_marking_icon, ICON_OVERLAY)
- if((!body_accessory || istype(body_accessory, /datum/body_accessory/tail)) && species.bodyflags & TAIL_OVERLAPPED) // If the player has a species whose tail is overlapped by limbs... (having a non-tail body accessory like the snake body will override this)
+ if((!body_accessory || istype(body_accessory, /datum/body_accessory/tail)) && dna.species.bodyflags & TAIL_OVERLAPPED) // If the player has a species whose tail is overlapped by limbs... (having a non-tail body accessory like the snake body will override this)
// Gives the underlimbs layer SEW direction icons since it's overlayed by limbs and just about everything else anyway.
var/icon/under = new/icon("icon" = 'icons/mob/body_accessory.dmi', "icon_state" = "accessory_none_s")
under.Insert(new/icon(accessory_s, dir=SOUTH), dir=SOUTH)
@@ -1194,14 +1194,14 @@ var/global/list/damage_icon_parts = list()
else // Otherwise, since the user's tail isn't overlapped by limbs, go ahead and use default icon generation.
overlays_standing[TAIL_LAYER] = image(accessory_s, "pixel_x" = body_accessory.pixel_x_offset, "pixel_y" = body_accessory.pixel_y_offset)
- else if(tail && species.bodyflags & HAS_TAIL) //no tailless tajaran
+ else if(tail && dna.species.bodyflags & HAS_TAIL) //no tailless tajaran
if(!wear_suit || !(wear_suit.flags_inv & HIDETAIL) && !istype(wear_suit, /obj/item/clothing/suit/space))
var/icon/tail_s = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[tail]_s")
- if(species.bodyflags & HAS_SKIN_COLOR)
+ if(dna.species.bodyflags & HAS_SKIN_COLOR)
tail_s.Blend(skin_colour, ICON_ADD)
if(tail_marking_icon && !tail_marking_style.tails_allowed)
tail_s.Blend(tail_marking_icon, ICON_OVERLAY)
- if((!body_accessory || istype(body_accessory, /datum/body_accessory/tail)) && species.bodyflags & TAIL_OVERLAPPED) // If the player has a species whose tail is overlapped by limbs... (having a non-tail body accessory like the snake body will override this)
+ if((!body_accessory || istype(body_accessory, /datum/body_accessory/tail)) && dna.species.bodyflags & TAIL_OVERLAPPED) // If the player has a species whose tail is overlapped by limbs... (having a non-tail body accessory like the snake body will override this)
// Gives the underlimbs layer SEW direction icons since it's overlayed by limbs and just about everything else anyway.
var/icon/under = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "blank")
under.Insert(new/icon(tail_s, dir=SOUTH), dir=SOUTH)
@@ -1230,7 +1230,7 @@ var/global/list/damage_icon_parts = list()
var/icon/tail_marking_icon
var/datum/sprite_accessory/body_markings/tail/tail_marking_style
- if(m_styles["tail"] != "None" && (species.bodyflags & HAS_TAIL_MARKINGS))
+ if(m_styles["tail"] != "None" && (dna.species.bodyflags & HAS_TAIL_MARKINGS))
var/tail_marking = m_styles["tail"]
tail_marking_style = marking_styles_list[tail_marking]
tail_marking_icon = new/icon("icon" = tail_marking_style.icon, "icon_state" = "[tail_marking_style.icon_state]w_s")
@@ -1238,15 +1238,15 @@ var/global/list/damage_icon_parts = list()
if(body_accessory)
var/icon/accessory_s = new/icon("icon" = body_accessory.get_animated_icon(), "icon_state" = body_accessory.get_animated_icon_state())
- if(species.bodyflags & HAS_SKIN_COLOR)
+ if(dna.species.bodyflags & HAS_SKIN_COLOR)
accessory_s.Blend(skin_colour, body_accessory.blend_mode)
if(tail_marking_icon && (body_accessory.name in tail_marking_style.tails_allowed))
accessory_s.Blend(tail_marking_icon, ICON_OVERLAY)
- if((!body_accessory || istype(body_accessory, /datum/body_accessory/tail)) && species.bodyflags & TAIL_OVERLAPPED) // If the player has a species whose tail is overlapped by limbs... (having a non-tail body accessory like the snake body will override this)
+ if((!body_accessory || istype(body_accessory, /datum/body_accessory/tail)) && dna.species.bodyflags & TAIL_OVERLAPPED) // If the player has a species whose tail is overlapped by limbs... (having a non-tail body accessory like the snake body will override this)
// Gives the underlimbs layer SEW direction icons since it's overlayed by limbs and just about everything else anyway.
var/icon/under = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "Vulpkanin_tail_delay")
- if(body_accessory.allowed_species && (species.name in body_accessory.allowed_species))
- under = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.name]_tail_delay")
+ if(body_accessory.allowed_species && (dna.species.name in body_accessory.allowed_species))
+ under = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[dna.species.name]_tail_delay")
under.Insert(new/icon(accessory_s, dir=SOUTH), dir=SOUTH)
under.Insert(new/icon(accessory_s, dir=EAST), dir=EAST)
under.Insert(new/icon(accessory_s, dir=WEST), dir=WEST)
@@ -1255,23 +1255,23 @@ var/global/list/damage_icon_parts = list()
// Creates a blank icon, and copies accessory_s' north direction sprite into it before passing that to the tail layer that overlays uniforms and such.
var/icon/over = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "Vulpkanin_tail_delay")
- if(body_accessory.allowed_species && (species.name in body_accessory.allowed_species)) // If the user's species is in the list of allowed species for the currently selected body accessory, use the appropriate animation timing blank
- over = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.name]_tail_delay")
+ if(body_accessory.allowed_species && (dna.species.name in body_accessory.allowed_species)) // If the user's species is in the list of allowed species for the currently selected body accessory, use the appropriate animation timing blank
+ over = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[dna.species.name]_tail_delay")
over.Insert(new/icon(accessory_s, dir=NORTH), dir=NORTH)
overlays_standing[TAIL_LAYER] = image(over, "pixel_x" = body_accessory.pixel_x_offset, "pixel_y" = body_accessory.pixel_y_offset)
else // Otherwise, since the user's tail isn't overlapped by limbs, go ahead and use default icon generation.
overlays_standing[TAIL_LAYER] = image(accessory_s, "pixel_x" = body_accessory.pixel_x_offset, "pixel_y" = body_accessory.pixel_y_offset)
- else if(tail && species.bodyflags & HAS_TAIL)
+ else if(tail && dna.species.bodyflags & HAS_TAIL)
var/icon/tailw_s = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[tail]w_s")
- if(species.bodyflags & HAS_SKIN_COLOR)
+ if(dna.species.bodyflags & HAS_SKIN_COLOR)
tailw_s.Blend(skin_colour, ICON_ADD)
if(tail_marking_icon && !tail_marking_style.tails_allowed)
tailw_s.Blend(tail_marking_icon, ICON_OVERLAY)
- if((!body_accessory || istype(body_accessory, /datum/body_accessory/tail)) && species.bodyflags & TAIL_OVERLAPPED) // If the player has a species whose tail is overlapped by limbs... (having a non-tail body accessory like the snake body will override this)
+ if((!body_accessory || istype(body_accessory, /datum/body_accessory/tail)) && dna.species.bodyflags & TAIL_OVERLAPPED) // If the player has a species whose tail is overlapped by limbs... (having a non-tail body accessory like the snake body will override this)
// Gives the underlimbs layer SEW direction icons since it's overlayed by limbs and just about everything else anyway.
- var/icon/under = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.name]_tail_delay")
+ var/icon/under = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[dna.species.name]_tail_delay")
under.Insert(new/icon(tailw_s, dir=SOUTH), dir=SOUTH)
under.Insert(new/icon(tailw_s, dir=EAST), dir=EAST)
under.Insert(new/icon(tailw_s, dir=WEST), dir=WEST)
@@ -1279,7 +1279,7 @@ var/global/list/damage_icon_parts = list()
overlays_standing[TAIL_UNDERLIMBS_LAYER] = image(under)
// Creates a blank icon, and copies accessory_s' north direction sprite into it before passing that to the tail layer that overlays uniforms and such.
- var/icon/over = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.name]_tail_delay")
+ var/icon/over = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[dna.species.name]_tail_delay")
over.Insert(new/icon(tailw_s, dir=NORTH), dir=NORTH)
overlays_standing[TAIL_LAYER] = image(over)
@@ -1314,8 +1314,8 @@ var/global/list/damage_icon_parts = list()
var/icon/icon_file = new(icon_path)
if(wear_suit.icon_state in icon_file.IconStates())
standing = image("icon" = icon_file, "icon_state" = "[wear_suit.icon_state]")
- else if(wear_suit.sprite_sheets && wear_suit.sprite_sheets[species.name])
- var/icon_path = "[wear_suit.sprite_sheets[species.name]]"
+ else if(wear_suit.sprite_sheets && wear_suit.sprite_sheets[dna.species.name])
+ var/icon_path = "[wear_suit.sprite_sheets[dna.species.name]]"
icon_path = "[copytext(icon_path, 1, findtext(icon_path, "/suit.dmi"))]/collar.dmi" //If this file doesn't exist, the end result is that COLLAR_LAYER will be unchanged (empty).
if(fexists(icon_path)) //Just ensuring the nonexistance of a file with the above path won't cause a runtime.
var/icon/icon_file = new(icon_path)
diff --git a/code/modules/mob/living/carbon/slime/life.dm b/code/modules/mob/living/carbon/slime/life.dm
index 80ed9fdbffd..2d68747a742 100644
--- a/code/modules/mob/living/carbon/slime/life.dm
+++ b/code/modules/mob/living/carbon/slime/life.dm
@@ -337,7 +337,7 @@
if(istype(L, /mob/living/carbon/human)) //Ignore slime(wo)men
var/mob/living/carbon/human/H = L
- if(H.species.name == "Slime People")
+ if(H.dna.species.name == "Slime People")
continue
if(!L.canmove) // Only one slime can latch on at a time.
diff --git a/code/modules/mob/living/carbon/superheroes.dm b/code/modules/mob/living/carbon/superheroes.dm
index d9c7a9f12ef..50b22a2c8ed 100644
--- a/code/modules/mob/living/carbon/superheroes.dm
+++ b/code/modules/mob/living/carbon/superheroes.dm
@@ -217,7 +217,7 @@
to_chat(target, "You must follow the orders of [user], and help [user.p_them()] succeed in [user.p_their()] dastardly schemes.")
to_chat(target, "You may not harm other Greyshirt or [user]. However, you do not need to obey other Greyshirts.")
ticker.mode.greyshirts += target.mind
- target.set_species("Human")
+ target.set_species(/datum/species/human)
head_organ.h_style = "Bald"
head_organ.f_style = "Shaved"
target.s_tone = 35
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index bff49e7c527..ee23633f4b6 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -660,14 +660,14 @@
TH.transfer_mob_blood_dna(src)
if(ishuman(src))
var/mob/living/carbon/human/H = src
- if(H.species.blood_color)
- TH.color = H.species.blood_color
+ if(H.dna.species.blood_color)
+ TH.color = H.dna.species.blood_color
else
TH.color = "#A10808"
/mob/living/carbon/human/makeTrail(turf/T)
- if((NO_BLOOD in species.species_traits) || species.exotic_blood || !bleed_rate || bleedsuppress)
+ if((NO_BLOOD in dna.species.species_traits) || dna.species.exotic_blood || !bleed_rate || bleedsuppress)
return
..()
diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm
index 6cdffd48f16..a60dfc344ca 100644
--- a/code/modules/mob/living/simple_animal/bot/medbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/medbot.dm
@@ -373,7 +373,7 @@
// is secretly a silicon
if(ishuman(C))
var/mob/living/carbon/human/H = C
- if(H.species && H.species.reagent_tag == PROCESS_SYN)
+ if(H.dna.species && H.dna.species.reagent_tag == PROCESS_SYN)
return 0
if(emagged == 2) //Everyone needs our medicine. (Our medicine is toxins)
diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm
index 3243061273f..0efaefcce07 100644
--- a/code/modules/mob/living/simple_animal/bot/mulebot.dm
+++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm
@@ -715,7 +715,7 @@
var/list/blood_dna = H.get_blood_dna_list()
if(blood_dna)
transfer_blood_dna(blood_dna)
- currentBloodColor = H.species.blood_color
+ currentBloodColor = H.dna.species.blood_color
return
/mob/living/simple_animal/bot/mulebot/bot_control_message(command, mob/user, user_turf)
diff --git a/code/modules/mob/living/simple_animal/friendly/diona.dm b/code/modules/mob/living/simple_animal/friendly/diona.dm
index 64fe7d05b9b..2396d08a1df 100644
--- a/code/modules/mob/living/simple_animal/friendly/diona.dm
+++ b/code/modules/mob/living/simple_animal/friendly/diona.dm
@@ -54,7 +54,7 @@
/mob/living/simple_animal/diona/attack_hand(mob/living/carbon/human/M)
//Let people pick the little buggers up.
if(M.a_intent == INTENT_HELP)
- if(M.species && M.species.name == "Diona")
+ if(M.dna.species && M.dna.species.name == "Diona")
to_chat(M, "You feel your being twine with that of [src] as it merges with your biomass.")
to_chat(src, "You feel your being twine with that of [M] as you merge with its biomass.")
verbs += /mob/living/simple_animal/diona/proc/split
@@ -82,7 +82,7 @@
if(ishuman(C))
var/mob/living/carbon/human/D = C
- if(D.species && D.species.name == "Diona")
+ if(D.dna.species && D.dna.species.name == "Diona")
choices += C
var/mob/living/M = input(src,"Who do you wish to merge with?") in null|choices
@@ -142,7 +142,7 @@
visible_message("[src] begins to shift and quiver, and erupts in a shower of shed bark as it splits into a tangle of nearly a dozen new dionaea.","You begin to shift and quiver, feeling your awareness splinter. All at once, we consume our stored nutrients to surge with growth, splitting into a tangle of at least a dozen new dionaea. We have attained our gestalt form.")
var/mob/living/carbon/human/diona/adult = new(get_turf(loc))
- adult.set_species("Diona")
+ adult.set_species(/datum/species/diona)
if(istype(loc, /obj/item/holder/diona))
var/obj/item/holder/diona/L = loc
@@ -178,7 +178,7 @@
if(!M || !src)
return
- if(NO_BLOOD in M.species.species_traits)
+ if(NO_BLOOD in M.dna.species.species_traits)
to_chat(src, "That donor has no blood to take.")
return
diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm
index 283936acb44..f3e31925228 100644
--- a/code/modules/mob/living/simple_animal/hostile/hostile.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm
@@ -178,7 +178,7 @@
if(ishuman(the_target))
var/mob/living/carbon/human/H = the_target
- if(is_type_in_list(src, H.species.ignored_by))
+ if(is_type_in_list(src, H.dna.species.ignored_by))
return 0
if(istype(the_target, /obj/mecha))
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm
index 235a161c595..693ca724ac6 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm
@@ -196,7 +196,7 @@ var/global/list/ts_spiderling_list = list()
var/can_poison = 1
if(ishuman(G))
var/mob/living/carbon/human/H = G
- if(!(H.species.reagent_tag & PROCESS_ORG) || (!H.species.tox_mod))
+ if(!(H.dna.species.reagent_tag & PROCESS_ORG) || (!H.dna.species.tox_mod))
can_poison = 0
spider_specialattack(G,can_poison)
else
diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm
index fb62ad3a629..2d024ec786e 100644
--- a/code/modules/mob/login.dm
+++ b/code/modules/mob/login.dm
@@ -58,8 +58,8 @@
if(istype(src,/mob/living/carbon/human))
var/mob/living/carbon/human/H = src
- if(H.species && H.species.abilities)
- client.verbs |= H.species.abilities
+ if(H.dna.species && H.dna.species.abilities)
+ client.verbs |= H.dna.species.abilities
client.screen += client.void
diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm
index 458138b9db0..93941d6e7d2 100644
--- a/code/modules/mob/mob_grab.dm
+++ b/code/modules/mob/mob_grab.dm
@@ -410,7 +410,7 @@
return 1
var/mob/living/carbon/human/H = attacker
- if(ishuman(H) && is_type_in_list(prey, H.species.allowed_consumed_mobs)) //species eating of other mobs
+ if(ishuman(H) && is_type_in_list(prey, H.dna.species.allowed_consumed_mobs)) //species eating of other mobs
return 1
return 0
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index d06028625b8..2f51ec9417b 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -1,7 +1,7 @@
/proc/issmall(A)
if(A && istype(A, /mob/living/carbon/human))
var/mob/living/carbon/human/H = A
- if(H.species && H.species.is_small)
+ if(H.dna.species && H.dna.species.is_small)
return 1
return 0
diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm
index 274c1602e04..d7e8a531867 100644
--- a/code/modules/mob/new_player/new_player.dm
+++ b/code/modules/mob/new_player/new_player.dm
@@ -395,7 +395,7 @@
var/arrivalmessage = announcer.arrivalmsg
arrivalmessage = replacetext(arrivalmessage,"$name",character.real_name)
arrivalmessage = replacetext(arrivalmessage,"$rank",rank ? "[rank]" : "visitor")
- arrivalmessage = replacetext(arrivalmessage,"$species",character.species.name)
+ arrivalmessage = replacetext(arrivalmessage,"$species",character.dna.species.name)
arrivalmessage = replacetext(arrivalmessage,"$age",num2text(character.age))
arrivalmessage = replacetext(arrivalmessage,"$gender",character.gender == FEMALE ? "Female" : "Male")
announcer.say(";[arrivalmessage]")
@@ -537,7 +537,7 @@
else if(mind.assigned_role == "Mime")
new_character.real_name = pick(mime_names)
new_character.rename_self("mime")
- else if(new_character.species == "Diona")
+ else if(new_character.dna.species == "Diona")
new_character.real_name = pick(diona_names) //I hate this being here of all places but unfortunately dna is based on real_name!
new_character.rename_self("diona")
mind.original = new_character
diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm
index 86abdffd48b..511816124f7 100644
--- a/code/modules/mob/new_player/preferences_setup.dm
+++ b/code/modules/mob/new_player/preferences_setup.dm
@@ -223,13 +223,13 @@
if(current_species)
if(current_species.bodyflags & HAS_ICON_SKIN_TONE) //Handling species-specific icon-based skin tones by flagged race.
var/mob/living/carbon/human/H = new
- H.species = current_species
+ H.dna.species = current_species
H.s_tone = s_tone
- H.species.updatespeciescolor(H, 0) //The mob's species wasn't set, so it's almost certainly different than the character's species at the moment. Thus, we need to be owner-insensitive.
+ H.dna.species.updatespeciescolor(H, 0) //The mob's species wasn't set, so it's almost certainly different than the character's species at the moment. Thus, we need to be owner-insensitive.
var/obj/item/organ/external/chest/C = H.get_organ("chest")
- icobase = C.icobase ? C.icobase : C.dna.species2.icobase
- if(H.species.bodyflags & HAS_TAIL)
- coloured_tail = H.tail ? H.tail : H.species.tail
+ icobase = C.icobase ? C.icobase : C.dna.species.icobase
+ if(H.dna.species.bodyflags & HAS_TAIL)
+ coloured_tail = H.tail ? H.tail : H.dna.species.tail
qdel(H)
else
diff --git a/code/modules/nano/modules/human_appearance.dm b/code/modules/nano/modules/human_appearance.dm
index dc41b75e733..dea188e1eb7 100644
--- a/code/modules/nano/modules/human_appearance.dm
+++ b/code/modules/nano/modules/human_appearance.dm
@@ -44,24 +44,24 @@
if(href_list["skin_tone"])
if(can_change_skin_tone())
var/new_s_tone = null
- if(owner.species.bodyflags & HAS_SKIN_TONE)
+ if(owner.dna.species.bodyflags & HAS_SKIN_TONE)
new_s_tone = input(usr, "Choose your character's skin tone:\n(Light 1 - 220 Dark)", "Skin Tone", owner.s_tone) as num|null
if(isnum(new_s_tone) && can_still_topic(state))
new_s_tone = 35 - max(min(round(new_s_tone), 220),1)
- else if(owner.species.bodyflags & HAS_ICON_SKIN_TONE)
+ else if(owner.dna.species.bodyflags & HAS_ICON_SKIN_TONE)
var/const/MAX_LINE_ENTRIES = 4
- var/prompt = "Choose your character's skin tone: 1-[owner.species.icon_skin_tones.len]\n("
- for(var/i = 1 to owner.species.icon_skin_tones.len)
+ var/prompt = "Choose your character's skin tone: 1-[owner.dna.species.icon_skin_tones.len]\n("
+ for(var/i = 1 to owner.dna.species.icon_skin_tones.len)
if(i > MAX_LINE_ENTRIES && !((i - 1) % MAX_LINE_ENTRIES))
prompt += "\n"
- prompt += "[i] = [owner.species.icon_skin_tones[i]]"
- if(i != owner.species.icon_skin_tones.len)
+ prompt += "[i] = [owner.dna.species.icon_skin_tones[i]]"
+ if(i != owner.dna.species.icon_skin_tones.len)
prompt += ", "
prompt += ")"
new_s_tone = input(usr, prompt, "Skin Tone", owner.s_tone) as num|null
if(isnum(new_s_tone) && can_still_topic(state))
- new_s_tone = max(min(round(new_s_tone), owner.species.icon_skin_tones.len), 1)
+ new_s_tone = max(min(round(new_s_tone), owner.dna.species.icon_skin_tones.len), 1)
if(new_s_tone)
return owner.change_skin_tone(new_s_tone)
@@ -183,9 +183,9 @@
generate_data(check_whitelist, whitelist, blacklist)
var/data[0]
- data["specimen"] = owner.species.name
+ data["specimen"] = owner.dna.species.name
data["gender"] = owner.gender
- data["has_gender"] = owner.species.has_gender
+ data["has_gender"] = owner.dna.species.has_gender
data["change_race"] = can_change(APPEARANCE_RACE)
if(data["change_race"])
var/species[0]
@@ -283,25 +283,25 @@
return owner && (flags & flag)
/datum/nano_module/appearance_changer/proc/can_change_skin_tone()
- return owner && (flags & APPEARANCE_SKIN) && ((owner.species.bodyflags & HAS_SKIN_TONE) || (owner.species.bodyflags & HAS_ICON_SKIN_TONE))
+ return owner && (flags & APPEARANCE_SKIN) && ((owner.dna.species.bodyflags & HAS_SKIN_TONE) || (owner.dna.species.bodyflags & HAS_ICON_SKIN_TONE))
/datum/nano_module/appearance_changer/proc/can_change_skin_color()
- return owner && (flags & APPEARANCE_SKIN) && (owner.species.bodyflags & HAS_SKIN_COLOR)
+ return owner && (flags & APPEARANCE_SKIN) && (owner.dna.species.bodyflags & HAS_SKIN_COLOR)
/datum/nano_module/appearance_changer/proc/can_change_head_accessory()
if(!head_organ)
log_runtime(EXCEPTION("Missing head!"), owner)
return 0
- return owner && (flags & APPEARANCE_HEAD_ACCESSORY) && (head_organ.dna.species2.bodyflags & HAS_HEAD_ACCESSORY)
+ return owner && (flags & APPEARANCE_HEAD_ACCESSORY) && (head_organ.dna.species.bodyflags & HAS_HEAD_ACCESSORY)
/datum/nano_module/appearance_changer/proc/can_change_markings(var/location = "body")
var/marking_flag = HAS_BODY_MARKINGS
- var/body_flags = owner.species.bodyflags
+ var/body_flags = owner.dna.species.bodyflags
if(location == "head")
if(!head_organ)
log_debug("Missing head!")
return 0
- body_flags = head_organ.dna.species2.bodyflags
+ body_flags = head_organ.dna.species.bodyflags
marking_flag = HAS_HEAD_MARKINGS
if(location == "body")
marking_flag = HAS_BODY_MARKINGS
@@ -311,13 +311,13 @@
return owner && (flags & APPEARANCE_MARKINGS) && (body_flags & marking_flag)
/datum/nano_module/appearance_changer/proc/can_change_body_accessory()
- return owner && (flags & APPEARANCE_BODY_ACCESSORY) && (owner.species.bodyflags & HAS_TAIL)
+ return owner && (flags & APPEARANCE_BODY_ACCESSORY) && (owner.dna.species.bodyflags & HAS_TAIL)
/datum/nano_module/appearance_changer/proc/can_change_alt_head()
if(!head_organ)
log_debug("Missing head!")
return 0
- return owner && (flags & APPEARANCE_ALT_HEAD) && (head_organ.dna.species2.bodyflags & HAS_ALT_HEADS)
+ return owner && (flags & APPEARANCE_ALT_HEAD) && (head_organ.dna.species.bodyflags & HAS_ALT_HEADS)
/datum/nano_module/appearance_changer/proc/cut_and_generate_data()
// Making the assumption that the available species remain constant
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index 41799958c4f..ed5b7c1cfd4 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -260,7 +260,7 @@
emag_cooldown = world.time + EMAG_DELAY
if(ishuman(ass)) //Suit checks are in check_ass
var/mob/living/carbon/human/H = ass
- temp_img = icon('icons/obj/butts.dmi', H.species.butt_sprite)
+ temp_img = icon('icons/obj/butts.dmi', H.dna.species.butt_sprite)
else if(istype(ass,/mob/living/silicon/robot/drone))
temp_img = icon('icons/obj/butts.dmi', "drone")
else if(istype(ass,/mob/living/simple_animal/diona))
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index e38a42ff88f..e19cd1165b5 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -83,7 +83,7 @@
var/blood_color = "#C80000"
if(ishuman(target))
H = target
- blood_color = H.species.blood_color
+ blood_color = H.dna.species.blood_color
new /obj/effect/temp_visual/dir_setting/bloodsplatter(target_loca, splatter_dir, blood_color)
if(prob(33))
var/list/shift = list("x" = 0, "y" = 0)
diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm
index 3fe2277ed3b..faf0ce94c6a 100644
--- a/code/modules/projectiles/projectile/magic.dm
+++ b/code/modules/projectiles/projectile/magic.dm
@@ -225,20 +225,17 @@ proc/wabbajack(mob/living/M)
else new_mob = new /mob/living/simple_animal/chick(M.loc)
new_mob.universal_speak = 1
if("human")
- new_mob = new /mob/living/carbon/human/human(M.loc)
+ new_mob = new /mob/living/carbon/human(M.loc)
// Include standard, whitelisted, and monkey species...
- var/list/new_species = list("Human","Tajaran","Skrell","Unathi","Diona","Vulpkanin")
- new_species |= whitelisted_species
- for(var/SN in all_species)
- var/datum/species/S = all_species[SN]
- if(S.greater_form) // Monkeys
- new_species |= SN
- new_species -= "Vox Armalis" // ... but not Armalis. They're not really designed to be playable
- new_species |= "Golem" // Also, golems, sure, why not
- var/picked_species = pick(new_species)
+ var/list/new_species = list()
+ for(var/datum/species/S in subtypesof(/datum/species))
+ if(istype(S, /datum/species/vox/armalis))
+ continue
+ new_species.Add(S)
var/mob/living/carbon/human/H = new_mob
- H.set_species(picked_species)
- randomize = picked_species
+ var/datum/species/S = pick(new_species)
+ H.set_species(S)
+ randomize = initial(S.name)
var/datum/preferences/A = new() //Randomize appearance for the human
A.copy_to(new_mob)
else
diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm
index 2c774b7f3dd..2003e78b780 100644
--- a/code/modules/projectiles/projectile/special.dm
+++ b/code/modules/projectiles/projectile/special.dm
@@ -133,7 +133,7 @@
var/mob/living/M = target
if(ishuman(target))
var/mob/living/carbon/human/H = M
- if(IS_PLANT in H.species.species_traits)
+ if(IS_PLANT in H.dna.species.species_traits)
if(prob(15))
M.apply_effect((rand(30,80)),IRRADIATE)
M.Weaken(5)
@@ -166,7 +166,7 @@
var/mob/M = target
if(ishuman(target)) //These rays make plantmen fat.
var/mob/living/carbon/human/H = M
- if(IS_PLANT in H.species.species_traits)
+ if(IS_PLANT in H.dna.species.species_traits)
H.nutrition = min(H.nutrition+30, NUTRITION_LEVEL_FULL)
else if(iscarbon(target))
M.show_message("The radiation beam dissipates harmlessly through your body.")
diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm
index 83a000fa693..73a591f9ddb 100644
--- a/code/modules/reagents/chemistry/holder.dm
+++ b/code/modules/reagents/chemistry/holder.dm
@@ -209,17 +209,17 @@ var/const/INGEST = 2
//Check if this mob's species is set and can process this type of reagent
var/can_process = 0
//If we somehow avoided getting a species or reagent_tag set, we'll assume we aren't meant to process ANY reagents (CODERS: SET YOUR SPECIES AND TAG!)
- if(H.species && H.species.reagent_tag)
- if((R.process_flags & SYNTHETIC) && (H.species.reagent_tag & PROCESS_SYN)) //SYNTHETIC-oriented reagents require PROCESS_SYN
+ if(H.dna.species && H.dna.species.reagent_tag)
+ if((R.process_flags & SYNTHETIC) && (H.dna.species.reagent_tag & PROCESS_SYN)) //SYNTHETIC-oriented reagents require PROCESS_SYN
can_process = 1
- if((R.process_flags & ORGANIC) && (H.species.reagent_tag & PROCESS_ORG)) //ORGANIC-oriented reagents require PROCESS_ORG
+ if((R.process_flags & ORGANIC) && (H.dna.species.reagent_tag & PROCESS_ORG)) //ORGANIC-oriented reagents require PROCESS_ORG
can_process = 1
//Species with PROCESS_DUO are only affected by reagents that affect both organics and synthetics, like acid and hellwater
- if((R.process_flags & ORGANIC) && (R.process_flags & SYNTHETIC) && (H.species.reagent_tag & PROCESS_DUO))
+ if((R.process_flags & ORGANIC) && (R.process_flags & SYNTHETIC) && (H.dna.species.reagent_tag & PROCESS_DUO))
can_process = 1
//If handle_reagents returns 0, it's doing the reagent removal on its own
- var/species_handled = !(H.species.handle_reagents(H, R))
+ var/species_handled = !(H.dna.species.handle_reagents(H, R))
can_process = can_process && !species_handled
//If the mob can't process it, remove the reagent at it's normal rate without doing any addictions, overdoses, or on_mob_life() for the reagent
if(can_process == 0)
@@ -481,13 +481,13 @@ var/const/INGEST = 2
if(ishuman(M))
var/mob/living/carbon/human/H = M
//Check if this mob's species is set and can process this type of reagent
- if(H.species && H.species.reagent_tag)
- if((R.process_flags & SYNTHETIC) && (H.species.reagent_tag & PROCESS_SYN)) //SYNTHETIC-oriented reagents require PROCESS_SYN
+ if(H.dna.species && H.dna.species.reagent_tag)
+ if((R.process_flags & SYNTHETIC) && (H.dna.species.reagent_tag & PROCESS_SYN)) //SYNTHETIC-oriented reagents require PROCESS_SYN
can_process = 1
- if((R.process_flags & ORGANIC) && (H.species.reagent_tag & PROCESS_ORG)) //ORGANIC-oriented reagents require PROCESS_ORG
+ if((R.process_flags & ORGANIC) && (H.dna.species.reagent_tag & PROCESS_ORG)) //ORGANIC-oriented reagents require PROCESS_ORG
can_process = 1
//Species with PROCESS_DUO are only affected by reagents that affect both organics and synthetics, like acid and hellwater
- if((R.process_flags & ORGANIC) && (R.process_flags & SYNTHETIC) && (H.species.reagent_tag & PROCESS_DUO))
+ if((R.process_flags & ORGANIC) && (R.process_flags & SYNTHETIC) && (H.dna.species.reagent_tag & PROCESS_DUO))
can_process = 1
//We'll assume that non-human mobs lack the ability to process synthetic-oriented reagents (adjust this if we need to change that assumption)
else
diff --git a/code/modules/reagents/chemistry/reagents/food.dm b/code/modules/reagents/chemistry/reagents/food.dm
index bdabfd21956..7426844e292 100644
--- a/code/modules/reagents/chemistry/reagents/food.dm
+++ b/code/modules/reagents/chemistry/reagents/food.dm
@@ -31,7 +31,7 @@
if(H.can_eat(diet_flags)) //Make sure the species has it's dietflag set, otherwise it can't digest any nutrients
if(prob(50))
M.adjustBruteLoss(-1)
- if(!(NO_BLOOD in H.species.species_traits))//do not restore blood on things with no blood by nature.
+ if(!(NO_BLOOD in H.dna.species.species_traits))//do not restore blood on things with no blood by nature.
if(H.blood_volume < BLOOD_VOLUME_NORMAL)
H.blood_volume += 0.4
..()
@@ -66,7 +66,7 @@
M.satiety += 30
if(ishuman(M))
var/mob/living/carbon/human/H = M
- if(!(NO_BLOOD in H.species.species_traits))//do not restore blood on things with no blood by nature.
+ if(!(NO_BLOOD in H.dna.species.species_traits))//do not restore blood on things with no blood by nature.
if(H.blood_volume < BLOOD_VOLUME_NORMAL)
H.blood_volume += 0.5
..()
diff --git a/code/modules/reagents/chemistry/reagents/medicine.dm b/code/modules/reagents/chemistry/reagents/medicine.dm
index c9f89743e7c..f603d5eb0d1 100644
--- a/code/modules/reagents/chemistry/reagents/medicine.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine.dm
@@ -221,7 +221,7 @@
M.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
if(ishuman(M) && prob(33))
var/mob/living/carbon/human/H = M
- if(!(NO_BLOOD in H.species.species_traits))//do not restore blood on things with no blood by nature.
+ if(!(NO_BLOOD in H.dna.species.species_traits))//do not restore blood on things with no blood by nature.
if(H.blood_volume < BLOOD_VOLUME_NORMAL)
H.blood_volume += 1
..()
diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm
index 7e6ffaead46..fdddea44bd2 100644
--- a/code/modules/reagents/chemistry/reagents/misc.dm
+++ b/code/modules/reagents/chemistry/reagents/misc.dm
@@ -155,7 +155,7 @@
/datum/reagent/iron/on_mob_life(mob/living/M)
if(ishuman(M))
var/mob/living/carbon/human/H = M
- if(!H.species.exotic_blood && !(NO_BLOOD in H.species.species_traits))
+ if(!H.dna.species.exotic_blood && !(NO_BLOOD in H.dna.species.species_traits))
if(H.blood_volume < BLOOD_VOLUME_NORMAL)
H.blood_volume += 0.8
..()
@@ -313,8 +313,8 @@
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/head/head_organ = H.get_organ("head")
- head_organ.h_style = random_hair_style(H.gender, head_organ.dna.species2.name)
- head_organ.f_style = random_facial_hair_style(H.gender, head_organ.dna.species2.name)
+ head_organ.h_style = random_hair_style(H.gender, head_organ.dna.species.name)
+ head_organ.f_style = random_facial_hair_style(H.gender, head_organ.dna.species.name)
H.update_hair()
H.update_fhair()
..()
@@ -335,14 +335,14 @@
var/datum/sprite_accessory/tmp_hair_style = hair_styles_full_list["Very Long Hair"]
var/datum/sprite_accessory/tmp_facial_hair_style = facial_hair_styles_list["Very Long Beard"]
- if(head_organ.dna.species2.name in tmp_hair_style.species_allowed) //If 'Very Long Hair' is a style the person's species can have, give it to them.
+ if(head_organ.dna.species.name in tmp_hair_style.species_allowed) //If 'Very Long Hair' is a style the person's species can have, give it to them.
head_organ.h_style = "Very Long Hair"
else //Otherwise, give them a random hair style.
- head_organ.h_style = random_hair_style(H.gender, head_organ.dna.species2.name)
- if(head_organ.dna.species2.name in tmp_facial_hair_style.species_allowed) //If 'Very Long Beard' is a style the person's species can have, give it to them.
+ head_organ.h_style = random_hair_style(H.gender, head_organ.dna.species.name)
+ if(head_organ.dna.species.name in tmp_facial_hair_style.species_allowed) //If 'Very Long Beard' is a style the person's species can have, give it to them.
head_organ.f_style = "Very Long Beard"
else //Otherwise, give them a random facial hair style.
- head_organ.f_style = random_facial_hair_style(H.gender, head_organ.dna.species2.name)
+ head_organ.f_style = random_facial_hair_style(H.gender, head_organ.dna.species.name)
H.update_hair()
H.update_fhair()
if(!H.wear_mask || H.wear_mask && !istype(H.wear_mask, /obj/item/clothing/mask/fakemoustache))
diff --git a/code/modules/reagents/chemistry/reagents/toxins.dm b/code/modules/reagents/chemistry/reagents/toxins.dm
index 7bff61218c6..3da4df4d558 100644
--- a/code/modules/reagents/chemistry/reagents/toxins.dm
+++ b/code/modules/reagents/chemistry/reagents/toxins.dm
@@ -61,12 +61,12 @@
/datum/reagent/slimetoxin/on_mob_life(mob/living/M)
if(ishuman(M))
var/mob/living/carbon/human/human = M
- if(human.species.name != "Shadow")
+ if(human.dna.species.name != "Shadow")
to_chat(M, "Your flesh rapidly mutates!")
to_chat(M, "You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.")
to_chat(M, "Your body reacts violently to light. However, it naturally heals in darkness.")
to_chat(M, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.")
- human.set_species("Shadow")
+ human.set_species(/datum/species/shadow)
..()
/datum/reagent/aslimetoxin
@@ -961,7 +961,7 @@
C.adjustToxLoss(lethality)
if(ishuman(M))
var/mob/living/carbon/human/H = M
- if(IS_PLANT in H.species.species_traits) //plantmen take a LOT of damage
+ if(IS_PLANT in H.dna.species.species_traits) //plantmen take a LOT of damage
H.adjustToxLoss(50)
..()
else if(istype(M, /mob/living/simple_animal/diona)) //plantmen monkeys (diona) take EVEN MORE damage
diff --git a/code/modules/surgery/helpers.dm b/code/modules/surgery/helpers.dm
index 715f3e9837b..1ae29143496 100644
--- a/code/modules/surgery/helpers.dm
+++ b/code/modules/surgery/helpers.dm
@@ -84,7 +84,7 @@
/proc/get_pain_modifier(mob/living/carbon/human/M) //returns modfier to make surgery harder if patient is conscious and feels pain
if(M.stat) //stat=0 if CONSCIOUS, 1=UNCONSCIOUS and 2=DEAD. Operating on dead people is easy, too. Just sleeping won't work, though.
return 1
- if(NO_PAIN in M.species.species_traits)//if you don't feel pain, you can hold still
+ if(NO_PAIN in M.dna.species.species_traits)//if you don't feel pain, you can hold still
return 1
if(M.reagents.has_reagent("hydrocodone"))//really good pain killer
return 0.99
diff --git a/code/modules/surgery/limb_reattach.dm b/code/modules/surgery/limb_reattach.dm
index 2e8a3b85300..979e80ddf29 100644
--- a/code/modules/surgery/limb_reattach.dm
+++ b/code/modules/surgery/limb_reattach.dm
@@ -76,7 +76,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
if(affected)
return 0
- var/list/organ_data = target.species.has_limbs["[target_zone]"]
+ var/list/organ_data = target.dna.species.has_limbs["[target_zone]"]
return !isnull(organ_data)
/datum/surgery_step/limb/attach
@@ -233,7 +233,7 @@
for(var/part_name in L.part)
if(!isnull(target.get_organ(part_name)))
continue
- var/list/organ_data = target.species.has_limbs["[part_name]"]
+ var/list/organ_data = target.dna.species.has_limbs["[part_name]"]
if(!organ_data)
continue
// This will break if there's more than one stump ever
diff --git a/code/modules/surgery/organs/augments_eyes.dm b/code/modules/surgery/organs/augments_eyes.dm
index fb02fd83a78..fe1adce42fb 100644
--- a/code/modules/surgery/organs/augments_eyes.dm
+++ b/code/modules/surgery/organs/augments_eyes.dm
@@ -33,7 +33,7 @@
var/mob/living/carbon/human/H = HA
if(!istype(H))
H = owner
- var/icon/cybereyes_icon = new /icon('icons/mob/human_face.dmi', H.dna.species2.eyes)
+ var/icon/cybereyes_icon = new /icon('icons/mob/human_face.dmi', H.dna.species.eyes)
cybereyes_icon.Blend(eye_colour, ICON_ADD) // Eye implants override native DNA eye color
return cybereyes_icon
diff --git a/code/modules/surgery/organs/blood.dm b/code/modules/surgery/organs/blood.dm
index fecbdb05287..2a7057516f9 100644
--- a/code/modules/surgery/organs/blood.dm
+++ b/code/modules/surgery/organs/blood.dm
@@ -18,7 +18,7 @@
/mob/living/carbon/human/handle_blood()
var/list/blood_data = get_blood_data(get_blood_id())//PROCCEPTION
- if(NO_BLOOD in species.species_traits)
+ if(NO_BLOOD in dna.species.species_traits)
bleed_rate = 0
return
@@ -43,14 +43,14 @@
if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE)
if(prob(5))
to_chat(src, "You feel [word].")
- apply_damage_type(round((BLOOD_VOLUME_NORMAL - blood_volume) * 0.01, 1), species.blood_damage_type)
+ apply_damage_type(round((BLOOD_VOLUME_NORMAL - blood_volume) * 0.01, 1), dna.species.blood_damage_type)
if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_OKAY)
- apply_damage_type(round((BLOOD_VOLUME_NORMAL - blood_volume) * 0.02, 1), species.blood_damage_type)
+ apply_damage_type(round((BLOOD_VOLUME_NORMAL - blood_volume) * 0.02, 1), dna.species.blood_damage_type)
if(prob(5))
EyeBlurry(6)
to_chat(src, "You feel very [word].")
if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_BAD)
- apply_damage_type(5, species.blood_damage_type)
+ apply_damage_type(5, dna.species.blood_damage_type)
if(prob(15))
Paralyse(rand(1,3))
to_chat(src, "You feel extremely [word].")
@@ -99,9 +99,9 @@
add_splatter_floor(loc, 1)
/mob/living/carbon/human/bleed(amt)
- if(!(NO_BLOOD in species.species_traits))
+ if(!(NO_BLOOD in dna.species.species_traits))
..()
- if(species.exotic_blood)
+ if(dna.species.exotic_blood)
var/datum/reagent/R = chemical_reagents_list[get_blood_id()]
if(istype(R) && isturf(loc))
R.reaction_turf(get_turf(src), amt)
@@ -186,7 +186,7 @@
blood_data["blood_type"] = copytext(src.dna.b_type,1,0)
blood_data["gender"] = gender
blood_data["real_name"] = real_name
- blood_data["blood_color"] = species.blood_color
+ blood_data["blood_color"] = dna.species.blood_color
blood_data["factions"] = faction
return blood_data
@@ -199,9 +199,9 @@
return "blood"
/mob/living/carbon/human/get_blood_id()
- if(species.exotic_blood)//some races may bleed water..or kethcup..
- return species.exotic_blood
- else if((NO_BLOOD in species.species_traits) || (NOCLONE in mutations))
+ if(dna.species.exotic_blood)//some races may bleed water..or kethcup..
+ return dna.species.exotic_blood
+ else if((NO_BLOOD in dna.species.species_traits) || (NOCLONE in mutations))
return
return "blood"
@@ -279,7 +279,7 @@
B.layer = BELOW_MOB_LAYER //So the blood lands ontop of things like posters, windows, etc.
/mob/living/carbon/human/add_splatter_floor(turf/T, small_drip, shift_x, shift_y)
- if(!(NO_BLOOD in species.species_traits))
+ if(!(NO_BLOOD in dna.species.species_traits))
..()
/mob/living/carbon/alien/add_splatter_floor(turf/T, small_drip, shift_x, shift_y)
diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm
index bce0f0f8046..51d73fc9873 100644
--- a/code/modules/surgery/organs/eyes.dm
+++ b/code/modules/surgery/organs/eyes.dm
@@ -20,7 +20,7 @@
var/mob/living/carbon/human/H = HA
if(!istype(H))
H = owner
- var/icon/eyes_icon = new /icon('icons/mob/human_face.dmi', H.species.eyes)
+ var/icon/eyes_icon = new /icon('icons/mob/human_face.dmi', H.dna.species.eyes)
eyes_icon.Blend(eye_colour, ICON_ADD)
return eyes_icon
diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm
index 59643723d78..bd7cca63779 100644
--- a/code/modules/surgery/organs/heart.dm
+++ b/code/modules/surgery/organs/heart.dm
@@ -85,7 +85,7 @@
/obj/item/organ/internal/heart/cursed/attack(mob/living/carbon/human/H, mob/living/carbon/human/user, obj/target)
if(H == user && istype(H))
- if(NO_BLOOD in H.species.species_traits)
+ if(NO_BLOOD in H.dna.species.species_traits)
to_chat(H, "\The [src] is not compatible with your form!")
return
playsound(user,'sound/effects/singlebeat.ogg', 40, 1)
@@ -98,7 +98,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(!(NO_BLOOD in H.species.species_traits))
+ if(!(NO_BLOOD in H.dna.species.species_traits))
H.blood_volume = max(H.blood_volume - blood_loss, 0)
to_chat(H, "You have to keep pumping your blood!")
if(H.client)
@@ -131,7 +131,7 @@
var/mob/living/carbon/human/H = owner
if(istype(H))
- if(!(NO_BLOOD in H.species.species_traits))
+ if(!(NO_BLOOD in H.dna.species.species_traits))
H.blood_volume = min(H.blood_volume + cursed_heart.blood_loss*0.5, BLOOD_VOLUME_NORMAL)
if(owner.client)
owner.client.color = ""
diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm
index 187e2cd44ca..1d730632212 100644
--- a/code/modules/surgery/organs/lungs.dm
+++ b/code/modules/surgery/organs/lungs.dm
@@ -271,11 +271,11 @@
var/breath_temperature = breath.temperature
var/species_traits = list()
- if(H && H.species && H.species.species_traits)
- species_traits = H.species.species_traits
+ if(H && H.dna.species && H.dna.species.species_traits)
+ species_traits = H.dna.species.species_traits
if(!(COLDRES in H.mutations) && !(RESISTCOLD in species_traits)) // COLD DAMAGE
- var/CM = abs(H.species.coldmod)
+ var/CM = abs(H.dna.species.coldmod)
var/TC = 0
if(breath_temperature < cold_level_3_threshold)
TC = cold_level_3_damage
@@ -291,7 +291,7 @@
to_chat(H, "You feel [cold_message] in your [name]!")
if(!(HEATRES in H.mutations) && !(RESISTHOT in species_traits)) // HEAT DAMAGE
- var/HM = abs(H.species.heatmod)
+ var/HM = abs(H.dna.species.heatmod)
var/TH = 0
if(breath_temperature > heat_level_1_threshold && breath_temperature < heat_level_2_threshold)
TH = heat_level_1_damage
diff --git a/code/modules/surgery/organs/organ.dm b/code/modules/surgery/organs/organ.dm
index 5f159390460..53c0447589c 100644
--- a/code/modules/surgery/organs/organ.dm
+++ b/code/modules/surgery/organs/organ.dm
@@ -89,7 +89,7 @@
return
//Process infections
- if(is_robotic() || sterile || (owner && (IS_PLANT in owner.species.species_traits)))
+ if(is_robotic() || sterile || (owner && (IS_PLANT in owner.dna.species.species_traits)))
germ_level = 0
return
@@ -151,7 +151,7 @@
germ_level++
if(germ_level >= INFECTION_LEVEL_ONE)
- var/fever_temperature = (owner.species.heat_level_1 - owner.species.body_temperature - 5)* min(germ_level/INFECTION_LEVEL_TWO, 1) + owner.species.body_temperature
+ var/fever_temperature = (owner.dna.species.heat_level_1 - owner.dna.species.body_temperature - 5)* min(germ_level/INFECTION_LEVEL_TWO, 1) + owner.dna.species.body_temperature
owner.bodytemperature += between(0, (fever_temperature - T20C)/BODYTEMP_COLD_DIVISOR + 1, fever_temperature - owner.bodytemperature)
if(germ_level >= INFECTION_LEVEL_TWO)
diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm
index 44e1f3dedb6..18a5e4ee04f 100644
--- a/code/modules/surgery/organs/organ_external.dm
+++ b/code/modules/surgery/organs/organ_external.dm
@@ -105,8 +105,8 @@
/obj/item/organ/external/New(var/mob/living/carbon/holder)
..()
var/mob/living/carbon/human/H = holder
- icobase = dna.species2.icobase
- deform = dna.species2.deform
+ icobase = dna.species.icobase
+ deform = dna.species.deform
if(istype(H))
replaced(H)
sync_colour_to_human(H)
@@ -328,7 +328,7 @@ Note that amputating the affected organ does in fact remove the infection from t
*/
/obj/item/organ/external/proc/update_germs()
- if(is_robotic() || (IS_PLANT in owner.species.species_traits)) //Robotic limbs shouldn't be infected, nor should nonexistant limbs.
+ if(is_robotic() || (IS_PLANT in owner.dna.species.species_traits)) //Robotic limbs shouldn't be infected, nor should nonexistant limbs.
germ_level = 0
return
@@ -400,7 +400,7 @@ Note that amputating the affected organ does in fact remove the infection from t
fracture()
/obj/item/organ/external/proc/check_for_internal_bleeding(damage)
- if(NO_BLOOD in owner.species.species_traits)
+ if(NO_BLOOD in owner.dna.species.species_traits)
return
var/local_damage = brute_dam + damage
if(damage > 15 && local_damage > 30 && prob(damage) && !is_robotic())
@@ -503,7 +503,7 @@ Note that amputating the affected organ does in fact remove the infection from t
switch(disintegrate)
if(DROPLIMB_SHARP)
compile_icon()
- add_blood(victim.blood_DNA, victim.species.blood_color)
+ add_blood(victim.blood_DNA, victim.dna.species.blood_color)
var/matrix/M = matrix()
M.Turn(rand(180))
src.transform = M
@@ -606,7 +606,7 @@ Note that amputating the affected organ does in fact remove the infection from t
"You hear a loud cracking sound coming from \the [owner].",\
"Something feels like it shattered in your [name]!",\
"You hear a sickening crack.")
- if(owner.species && !(NO_PAIN in owner.species.species_traits))
+ if(owner.dna.species && !(NO_PAIN in owner.dna.species.species_traits))
owner.emote("scream")
status |= ORGAN_BROKEN
diff --git a/code/modules/surgery/organs/organ_icon.dm b/code/modules/surgery/organs/organ_icon.dm
index 344c1d1f0c4..43d699c0408 100644
--- a/code/modules/surgery/organs/organ_icon.dm
+++ b/code/modules/surgery/organs/organ_icon.dm
@@ -16,7 +16,7 @@ var/global/list/limb_icon_cache = list()
/obj/item/organ/external/proc/change_organ_icobase(var/new_icobase, var/new_deform, var/owner_sensitive) //Change the icobase/deform of this organ. If owner_sensitive is set, that means the proc won't mess with frankenstein limbs.
if(owner_sensitive) //This and the below statements mean that the icobase/deform will only get updated if the limb is the same species as and is owned by the mob it's attached to.
- if(dna.species2 && owner.dna.species2 && dna.species2.name != owner.dna.species2.name)
+ if(dna.species && owner.dna.species && dna.species.name != owner.dna.species.name)
return
if(dna.unique_enzymes != owner.dna.unique_enzymes) // This isn't MY arm
return
@@ -25,31 +25,31 @@ var/global/list/limb_icon_cache = list()
deform = new_deform ? new_deform : deform
/obj/item/organ/external/proc/sync_colour_to_human(var/mob/living/carbon/human/H)
- if(is_robotic() && !istype(dna.species2, /datum/species/machine)) //machine people get skin color
+ if(is_robotic() && !istype(dna.species, /datum/species/machine)) //machine people get skin color
return
- if(dna.species2 && H.dna.species2 && dna.species2.name != H.dna.species2.name)
+ if(dna.species && H.dna.species && dna.species.name != H.dna.species.name)
return
if(dna.unique_enzymes != H.dna.unique_enzymes) // This isn't MY arm
- if(!(H.species.bodyflags & HAS_ICON_SKIN_TONE))
+ if(!(H.dna.species.bodyflags & HAS_ICON_SKIN_TONE))
sync_colour_to_dna()
return
- if(!isnull(H.s_tone) && ((H.species.bodyflags & HAS_SKIN_TONE) || (H.species.bodyflags & HAS_ICON_SKIN_TONE)))
+ if(!isnull(H.s_tone) && ((H.dna.species.bodyflags & HAS_SKIN_TONE) || (H.dna.species.bodyflags & HAS_ICON_SKIN_TONE)))
s_col = null
s_tone = H.s_tone
- if(H.species.bodyflags & HAS_SKIN_COLOR)
+ if(H.dna.species.bodyflags & HAS_SKIN_COLOR)
s_tone = null
s_col = H.skin_colour
- if(H.species.bodyflags & HAS_ICON_SKIN_TONE)
+ if(H.dna.species.bodyflags & HAS_ICON_SKIN_TONE)
var/obj/item/organ/external/chest/C = H.get_organ("chest")
change_organ_icobase(C.icobase, C.deform)
/obj/item/organ/external/proc/sync_colour_to_dna()
if(is_robotic())
return
- if(!isnull(dna.GetUIValue(DNA_UI_SKIN_TONE)) && ((dna.species2.bodyflags & HAS_SKIN_TONE) || (dna.species2.bodyflags & HAS_ICON_SKIN_TONE)))
+ if(!isnull(dna.GetUIValue(DNA_UI_SKIN_TONE)) && ((dna.species.bodyflags & HAS_SKIN_TONE) || (dna.species.bodyflags & HAS_ICON_SKIN_TONE)))
s_col = null
s_tone = dna.GetUIValue(DNA_UI_SKIN_TONE)
- if(dna.species2.bodyflags & HAS_SKIN_COLOR)
+ if(dna.species.bodyflags & HAS_SKIN_COLOR)
s_tone = null
s_col = rgb(dna.GetUIValue(DNA_UI_SKIN_R), dna.GetUIValue(DNA_UI_SKIN_G), dna.GetUIValue(DNA_UI_SKIN_B))
@@ -66,7 +66,7 @@ var/global/list/limb_icon_cache = list()
// Kasparrov, you monster
if(force_icon)
mob_icon = new /icon(force_icon, "[icon_name]")
- if(istype(dna.species2, /datum/species/machine)) //snowflake for IPC's, sorry.
+ if(istype(dna.species, /datum/species/machine)) //snowflake for IPC's, sorry.
if(s_col)
mob_icon.Blend(s_col, ICON_ADD)
else
@@ -99,13 +99,13 @@ var/global/list/limb_icon_cache = list()
if(!owner)
return
- if(dna.species2.has_organ["eyes"])
+ if(dna.species.has_organ["eyes"])
var/icon/eyes_icon = owner.get_eyecon()
if(eyes_icon)
mob_icon.Blend(eyes_icon, ICON_OVERLAY)
overlays |= eyes_icon
- if(owner.lip_style && (LIPS in dna.species2.species_traits))
+ if(owner.lip_style && (LIPS in dna.species.species_traits))
var/icon/lip_icon = new/icon('icons/mob/human_face.dmi', "lips_[owner.lip_style]_s")
overlays |= lip_icon
mob_icon.Blend(lip_icon, ICON_OVERLAY)
@@ -113,7 +113,7 @@ var/global/list/limb_icon_cache = list()
var/head_marking = owner.m_styles["head"]
if(head_marking && head_marking != "None")
var/datum/sprite_accessory/head_marking_style = marking_styles_list[head_marking]
- if(head_marking_style && head_marking_style.species_allowed && (dna.species2.name in head_marking_style.species_allowed) && head_marking_style.marking_location == "head")
+ if(head_marking_style && head_marking_style.species_allowed && (dna.species.name in head_marking_style.species_allowed) && head_marking_style.marking_location == "head")
var/icon/h_marking_s = new/icon("icon" = head_marking_style.icon, "icon_state" = "[head_marking_style.icon_state]_s")
if(head_marking_style.do_colouration)
h_marking_s.Blend(owner.m_colours["head"], ICON_ADD)
@@ -121,7 +121,7 @@ var/global/list/limb_icon_cache = list()
if(ha_style)
var/datum/sprite_accessory/head_accessory_style = head_accessory_styles_list[ha_style]
- if(head_accessory_style && head_accessory_style.species_allowed && (dna.species2.name in head_accessory_style.species_allowed))
+ if(head_accessory_style && head_accessory_style.species_allowed && (dna.species.name in head_accessory_style.species_allowed))
var/icon/head_accessory_s = new/icon("icon" = head_accessory_style.icon, "icon_state" = "[head_accessory_style.icon_state]_s")
if(head_accessory_style.do_colouration)
head_accessory_s.Blend(headacc_colour, ICON_ADD)
@@ -129,9 +129,9 @@ var/global/list/limb_icon_cache = list()
if(f_style)
var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[f_style]
- if(facial_hair_style && ((facial_hair_style.species_allowed && (dna.species2.name in facial_hair_style.species_allowed)) || (dna.species2.bodyflags & ALL_RPARTS)))
+ if(facial_hair_style && ((facial_hair_style.species_allowed && (dna.species.name in facial_hair_style.species_allowed)) || (dna.species.bodyflags & ALL_RPARTS)))
var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s")
- if(istype(dna.species2, /datum/species/slime)) // I am el worstos
+ if(istype(dna.species, /datum/species/slime)) // I am el worstos
facial_s.Blend("[owner.skin_colour]A0", ICON_AND) //A0 = 160 alpha.
else if(facial_hair_style.do_colouration)
facial_s.Blend(facial_colour, ICON_ADD)
@@ -139,9 +139,9 @@ var/global/list/limb_icon_cache = list()
if(h_style && !(owner.head && (owner.head.flags & BLOCKHEADHAIR)))
var/datum/sprite_accessory/hair_style = hair_styles_full_list[h_style]
- if(hair_style && ((dna.species2.name in hair_style.species_allowed) || (dna.species2.bodyflags & ALL_RPARTS)))
+ if(hair_style && ((dna.species.name in hair_style.species_allowed) || (dna.species.bodyflags & ALL_RPARTS)))
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
- if(istype(dna.species2, /datum/species/slime)) // I am el worstos
+ if(istype(dna.species, /datum/species/slime)) // I am el worstos
hair_s.Blend("[owner.skin_colour]A0", ICON_AND) //A0 = 160 alpha.
else if(hair_style.do_colouration)
hair_s.Blend(hair_colour, ICON_ADD)
@@ -182,7 +182,7 @@ var/global/list/limb_icon_cache = list()
/obj/item/organ/external/chest/get_icon_state(skeletal)
var/result = ..()
- if(fat && !skeletal && !is_robotic() && (CAN_BE_FAT in dna.species2.species_traits))
+ if(fat && !skeletal && !is_robotic() && (CAN_BE_FAT in dna.species.species_traits))
result[2] += "_fat"
return result
diff --git a/code/modules/surgery/organs/pain.dm b/code/modules/surgery/organs/pain.dm
index e3386aef1b3..4863bd63901 100644
--- a/code/modules/surgery/organs/pain.dm
+++ b/code/modules/surgery/organs/pain.dm
@@ -34,7 +34,7 @@ mob/living/carbon/human/proc/custom_pain(message)
if(stat >= UNCONSCIOUS)
return
- if(NO_PAIN in species.species_traits)
+ if(NO_PAIN in dna.species.species_traits)
return
if(reagents.has_reagent("morphine"))
return
@@ -54,7 +54,7 @@ mob/living/carbon/human/proc/handle_pain()
if(stat >= UNCONSCIOUS)
return
- if(NO_PAIN in species.species_traits)
+ if(NO_PAIN in dna.species.species_traits)
return
if(reagents.has_reagent("morphine"))
return
diff --git a/code/modules/surgery/robotics.dm b/code/modules/surgery/robotics.dm
index 3de2d350ee0..762c4e6040b 100644
--- a/code/modules/surgery/robotics.dm
+++ b/code/modules/surgery/robotics.dm
@@ -347,12 +347,12 @@
to_chat(user, "You cannot install a computer brain into a meat enclosure.")
return -1
- if(!target.species)
+ if(!target.dna.species)
to_chat(user, "You have no idea what species this person is. Report this on the bug tracker.")
return -1
- if(!target.species.has_organ["brain"])
- to_chat(user, "You're pretty sure [target.species.name_plural] don't normally have a brain.")
+ if(!target.dna.species.has_organ["brain"])
+ to_chat(user, "You're pretty sure [target.dna.species.name_plural] don't normally have a brain.")
return -1
if(target.get_int_organ(/obj/item/organ/internal/brain/))
diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm
index 8007c40749b..c64c53c8baa 100644
--- a/code/modules/surgery/surgery.dm
+++ b/code/modules/surgery/surgery.dm
@@ -206,7 +206,7 @@
for(var/mob/living/carbon/human/H in view(2, E.loc))//germs from people
if(AStar(E.loc, H.loc, /turf/proc/Distance, 2, simulated_only = 0))
- if((!(BREATHLESS in H.mutations) || !(NO_BREATHE in H.species.species_traits)) && !H.wear_mask) //wearing a mask helps preventing people from breathing cooties into open incisions
+ if((!(BREATHLESS in H.mutations) || !(NO_BREATHE in H.dna.species.species_traits)) && !H.wear_mask) //wearing a mask helps preventing people from breathing cooties into open incisions
germs += H.germ_level * 0.25
for(var/obj/effect/decal/cleanable/M in view(2, E.loc))//germs from messes
diff --git a/code/modules/vr/vr_controller.dm b/code/modules/vr/vr_controller.dm
index 45bf2a6cc74..c0fc61be587 100644
--- a/code/modules/vr/vr_controller.dm
+++ b/code/modules/vr/vr_controller.dm
@@ -31,13 +31,13 @@ proc/build_virtual_avatar(mob/living/carbon/human/H, location, datum/map_templat
var/mob/living/carbon/human/virtual_reality/vr_avatar
location = get_turf(location)
vr_avatar = new /mob/living/carbon/human/virtual_reality(location)
- vr_avatar.set_species(H.species.name)
if(istype(H, /mob/living/carbon/human/virtual_reality))
var/mob/living/carbon/human/virtual_reality/V = H
vr_avatar.real_me = V.real_me
else
vr_avatar.real_me = H
vr_avatar.dna = H.dna.Clone()
+ vr_avatar.set_species(H.dna.species)
vr_avatar.name = H.name
vr_avatar.real_name = H.real_name
vr_avatar.undershirt = H.undershirt