diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm
index 1a22131d55f..0f76efb6d55 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.species.bodyflags & HAS_ALT_HEADS)
+ if(head_organ.alt_head && head_organ.dna.species2.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
@@ -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(head_organ.species.name == "Slime People")
+ if(istype(head_organ.dna.species2, /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.species.bodyflags & HAS_HEAD_ACCESSORY)
+ if(head_organ.dna.species2.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(head_organ.species.name == "Slime People")
+ if(istype(head_organ.dna.species2, /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)
diff --git a/code/game/dna/dna2.dm b/code/game/dna/dna2.dm
index f21c2948b01..2d3fee8d4e9 100644
--- a/code/game/dna/dna2.dm
+++ b/code/game/dna/dna2.dm
@@ -99,8 +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,
- // New stuff
- var/species = "Human"
+ var/datum/species/species2 = 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!
@@ -110,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.species=species
+ new_dna.species2 = new species2.type
for(var/b=1;b<=DNA_SE_LENGTH;b++)
new_dna.SE[b]=SE[b]
if(b<=DNA_UI_LENGTH)
@@ -421,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"] = species // This works because `species` is a string, not a datum
+ data["species"] = species2.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
@@ -434,10 +433,10 @@ var/global/list/bad_blocks[0]
UI = data["UI"]
UpdateUI()
UpdateSE()
- species = data["species"]
+ species2 = 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 species
+ return species2.name
diff --git a/code/game/dna/genes/vg_powers.dm b/code/game/dna/genes/vg_powers.dm
index 3e709560a45..afb918fe72b 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.species.bodyflags & HAS_ALT_HEADS)
+ if(head_organ.dna.species2.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.species.bodyflags & HAS_HEAD_ACCESSORY)
+ if(head_organ.dna.species2.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)
diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm
index 329408bffce..bab5594b572 100644
--- a/code/game/gamemodes/changeling/changeling.dm
+++ b/code/game/gamemodes/changeling/changeling.dm
@@ -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.species == D.species)
+ if(tDNA.unique_enzymes == D.unique_enzymes && tDNA.uni_identity == D.uni_identity && tDNA.species2.type == D.species2.type)
return D
return null
diff --git a/code/game/gamemodes/changeling/powers/humanform.dm b/code/game/gamemodes/changeling/powers/humanform.dm
index fb3012cd274..429954ce539 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.species)
+ user.set_species(chosen_dna.species2)
domutcheck(user,null,MUTCHK_FORCED)
user.flavor_text = ""
user.dna.UpdateSE()
diff --git a/code/game/gamemodes/changeling/powers/tiny_prick.dm b/code/game/gamemodes/changeling/powers/tiny_prick.dm
index c344897c624..cbbac28dbcb 100644
--- a/code/game/gamemodes/changeling/powers/tiny_prick.dm
+++ b/code/game/gamemodes/changeling/powers/tiny_prick.dm
@@ -80,8 +80,7 @@
selected_dna = changeling.select_dna("Select the target DNA: ", "Target DNA")
if(!selected_dna)
return
- var/datum/species/newspecies = all_species[selected_dna.species]
- if((NOTRANSSTING in newspecies.species_traits) || newspecies.is_small)
+ if((NOTRANSSTING in selected_dna.species2.species_traits) || selected_dna.species2.is_small)
to_chat(user, "The selected DNA is incompatible with our sting.")
return
..()
diff --git a/code/game/gamemodes/changeling/powers/transform.dm b/code/game/gamemodes/changeling/powers/transform.dm
index b7c8abefd1d..7e89a08c690 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.species)
+ user.set_species(chosen_dna.species2)
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/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm
index feffadcf9ab..b745e822993 100644
--- a/code/game/gamemodes/nuclear/nuclear.dm
+++ b/code/game/gamemodes/nuclear/nuclear.dm
@@ -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.species.name)
- head_organ.f_style = random_facial_hair_style(M.gender, head_organ.species.name)
+ 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)
M.body_accessory = null
M.regenerate_icons()
M.update_body()
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 881136dbd58..60d280cf32f 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.species)
+ H.set_species(R.dna.species2)
occupant = H
if(!R.dna.real_name) //to prevent null names
diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm
index 95aee7cb9fe..64beeb17513 100644
--- a/code/game/machinery/computer/cloning.dm
+++ b/code/game/machinery/computer/cloning.dm
@@ -363,8 +363,7 @@
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))
- var/datum/species/S = all_species[Brn.dna.species] // stepladder code wooooo
- if(NO_SCAN in S.species_traits)
+ if(NO_SCAN in Brn.dna.species2.species_traits)
scantemp = "Error: Subject's brain is incompatible."
SSnanoui.update_uis(src)
return
@@ -402,10 +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()
- var/datum/species/S = all_species[R.dna.species]
- if(NO_SCAN in S.species_traits)
+ if(NO_SCAN in R.dna.species2.species_traits)
extra_info = "Proper genetic interface not found, defaulting to genetic data of the body."
- R.dna.species = subject.species.name
+ R.dna.species2 = new subject.dna.species2.type
R.id= copytext(md5(B.dna.real_name), 2, 6)
R.name=B.dna.real_name
else
diff --git a/code/game/machinery/transformer.dm b/code/game/machinery/transformer.dm
index 09385fa3a3e..b68076f5c35 100644
--- a/code/game/machinery/transformer.dm
+++ b/code/game/machinery/transformer.dm
@@ -336,7 +336,7 @@
to_chat(H, "No genetic template configured!")
return
var/prev_ue = H.dna.unique_enzymes
- H.set_species(template.species)
+ H.set_species(template.species2)
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/items/weapons/cosmetics.dm b/code/game/objects/items/weapons/cosmetics.dm
index ec8a2a5e325..76d61f5ea44 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.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'...
+ 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'...
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.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'...
+ 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'...
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/scissors.dm b/code/game/objects/items/weapons/scissors.dm
index 6ff1fbe95b0..b5d616a9a51 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.species)
+ if(C.dna.species2)
for(var/i in facial_hair_styles_list)
var/datum/sprite_accessory/facial_hair/tmp_facial = facial_hair_styles_list[i]
- if(C.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.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(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(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.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(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(!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.species)
+ if(C.dna.species2)
for(var/i in hair_styles_public_list)
var/datum/sprite_accessory/hair/tmp_hair = hair_styles_public_list[i]
- if(C.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.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(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(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.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(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(!robohead.is_monitor)
if("Human" in tmp_hair.species_allowed)
species_hair += i
diff --git a/code/game/response_team.dm b/code/game/response_team.dm
index c59dd7bd78f..1e866e22faf 100644
--- a/code/game/response_team.dm
+++ b/code/game/response_team.dm
@@ -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.species.name)
- head_organ.f_style = random_facial_hair_style(M.gender, head_organ.species.name)
+ 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)
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/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm
index 152262b69ea..de8cb28eb47 100644
--- a/code/modules/mob/living/carbon/human/appearance.dm
+++ b/code/modules/mob/living/carbon/human/appearance.dm
@@ -350,16 +350,16 @@
continue
if((H.gender == MALE && S.gender == FEMALE) || (H.gender == FEMALE && S.gender == MALE))
continue
- if(H.species.bodyflags & ALL_RPARTS) //If the user is a species who can have a robotic head...
+ if(H.dna.species2.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.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.
+ 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.
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.species.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.species2.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.species.bodyflags & ALL_RPARTS) //If the user is a species who can have a robotic head...
+ if(H.dna.species2.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.species.name in S.species_allowed) //If this is a facial hair style native to the user's species...
- if((H.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.
+ 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.
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.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.
+ 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.
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.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.
+ 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.
continue
valid_head_accessories += head_accessory
@@ -432,7 +432,7 @@
continue
if(location == "head")
var/datum/sprite_accessory/body_markings/head/M = marking_styles_list[S.name]
- if(H.species.bodyflags & ALL_RPARTS)//If the user is a species that can have a robotic head...
+ if(H.dna.species2.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
@@ -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.species.name in head.species_allowed))
+ if(!(H.dna.species2.name in head.species_allowed))
continue
valid_alt_heads += alternate_head
diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index be46cc9fa7d..3df5a6843d1 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -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(L.dna.species in list("Slime People"))
+ if(istype(L.dna.species2, /datum/species/slime))
on_CD = handle_emote_CD()
found_slime_bodypart = 1
break
@@ -910,7 +910,7 @@
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(L.dna.species in list("Slime People"))
+ if(istype(L.dna.species2, /datum/species/slime))
emotelist += "\nSlime people body part specific emotes :- squish(es)-(none)/mob"
break
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index dbc788cd0bb..88e3d854658 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -1297,9 +1297,9 @@
new_species = "Human"
else
if(!new_species)
- new_species = dna.species
+ new_species = dna.species2
else
- dna.species = new_species
+ dna.species2 = new_species
if(species)
if(species.name && species.name == new_species)
@@ -1380,7 +1380,7 @@
if(!dna)
dna = new /datum/dna(null)
- dna.species = species.name
+ dna.species2 = species.name
dna.real_name = real_name
species.handle_post_spawn(src)
@@ -1497,7 +1497,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.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.
+ 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.
hair += i
var/new_style = input(src, "Select a monitor display", "Monitor Display", head_organ.h_style) as null|anything in hair
@@ -1964,7 +1964,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.species)
+ set_species(dna.species2)
age = data["age"]
undershirt = data["ushirt"]
underwear = data["uwear"]
diff --git a/code/modules/mob/living/carbon/human/species/station.dm b/code/modules/mob/living/carbon/human/species/station.dm
index 6b692601226..c93d11d9a2b 100644
--- a/code/modules/mob/living/carbon/human/species/station.dm
+++ b/code/modules/mob/living/carbon/human/species/station.dm
@@ -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.species == "Slime People")
+ if(istype(E) && E.dna && istype(E.dna.species2, /datum/species/slime))
E.sync_colour_to_human(H)
H.update_hair(0)
H.update_body()
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index 3a1ac4d3a83..4f84cf1f821 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -249,7 +249,7 @@ var/global/list/damage_icon_parts = list()
icon_key += "1"
if(part)
- icon_key += "[part.species.race_key]"
+ icon_key += "[part.dna.species2.race_key]"
icon_key += "[part.dna.GetUIState(DNA_UI_GENDER)]"
icon_key += "[part.dna.GetUIValue(DNA_UI_SKIN_TONE)]"
if(part.s_col)
@@ -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.species.name in head_marking_style.species_allowed))
+ if(head_marking_style && head_marking_style.species_allowed && (head_organ.dna.species2.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.species.bodyflags & HAS_HEAD_ACCESSORY))
+ if(head_organ.ha_style && (head_organ.dna.species2.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.species.name in head_accessory_style.species_allowed)
+ if(head_organ.dna.species2.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.species.name in hair_style.species_allowed) || (head_organ.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...
+ 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...
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
- if(head_organ.species.name == "Slime People") // I am el worstos
+ if(istype(head_organ.dna.species2, /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.species.name in facial_hair_style.species_allowed) || (head_organ.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...
+ 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...
var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s")
- if(head_organ.species.name == "Slime People") // I am el worstos
+ if(istype(head_organ.dna.species2, /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)
@@ -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.species.name])
- new_glasses = image("icon" = glasses.sprite_sheets[head_organ.species.name], "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
new_glasses = image("icon" = 'icons/mob/eyes.dmi', "icon_state" = "[glasses.icon_state]")
diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm
index d57c46e513c..86abdffd48b 100644
--- a/code/modules/mob/new_player/preferences_setup.dm
+++ b/code/modules/mob/new_player/preferences_setup.dm
@@ -227,7 +227,7 @@
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.
var/obj/item/organ/external/chest/C = H.get_organ("chest")
- icobase = C.icobase ? C.icobase : C.species.icobase
+ icobase = C.icobase ? C.icobase : C.dna.species2.icobase
if(H.species.bodyflags & HAS_TAIL)
coloured_tail = H.tail ? H.tail : H.species.tail
diff --git a/code/modules/nano/modules/human_appearance.dm b/code/modules/nano/modules/human_appearance.dm
index ad7a8f5cff6..dc41b75e733 100644
--- a/code/modules/nano/modules/human_appearance.dm
+++ b/code/modules/nano/modules/human_appearance.dm
@@ -292,7 +292,7 @@
if(!head_organ)
log_runtime(EXCEPTION("Missing head!"), owner)
return 0
- return owner && (flags & APPEARANCE_HEAD_ACCESSORY) && (head_organ.species.bodyflags & HAS_HEAD_ACCESSORY)
+ return owner && (flags & APPEARANCE_HEAD_ACCESSORY) && (head_organ.dna.species2.bodyflags & HAS_HEAD_ACCESSORY)
/datum/nano_module/appearance_changer/proc/can_change_markings(var/location = "body")
var/marking_flag = HAS_BODY_MARKINGS
@@ -301,7 +301,7 @@
if(!head_organ)
log_debug("Missing head!")
return 0
- body_flags = head_organ.species.bodyflags
+ body_flags = head_organ.dna.species2.bodyflags
marking_flag = HAS_HEAD_MARKINGS
if(location == "body")
marking_flag = HAS_BODY_MARKINGS
@@ -317,7 +317,7 @@
if(!head_organ)
log_debug("Missing head!")
return 0
- return owner && (flags & APPEARANCE_ALT_HEAD) && (head_organ.species.bodyflags & HAS_ALT_HEADS)
+ return owner && (flags & APPEARANCE_ALT_HEAD) && (head_organ.dna.species2.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/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm
index a67fcd0f751..7e6ffaead46 100644
--- a/code/modules/reagents/chemistry/reagents/misc.dm
+++ b/code/modules/reagents/chemistry/reagents/misc.dm
@@ -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.species.name)
- head_organ.f_style = random_facial_hair_style(H.gender, head_organ.species.name)
+ 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)
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.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.
+ 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.
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.species.name)
- if(head_organ.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.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.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.species.name)
+ head_organ.f_style = random_facial_hair_style(H.gender, head_organ.dna.species2.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/surgery/organs/augments_eyes.dm b/code/modules/surgery/organs/augments_eyes.dm
index 305bbb2c603..fb02fd83a78 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.species.eyes)
+ var/icon/cybereyes_icon = new /icon('icons/mob/human_face.dmi', H.dna.species2.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/lungs.dm b/code/modules/surgery/organs/lungs.dm
index 99bc996dce2..187e2cd44ca 100644
--- a/code/modules/surgery/organs/lungs.dm
+++ b/code/modules/surgery/organs/lungs.dm
@@ -315,7 +315,6 @@
name = "plasma filter"
desc = "A spongy rib-shaped mass for filtering plasma from the air."
icon_state = "lungs-plasma"
- species = "Plasmaman"
safe_oxygen_min = 0 //We don't breath this
safe_toxins_min = 16 //We breathe THIS!
@@ -324,7 +323,6 @@
/obj/item/organ/internal/lungs/vox
name = "Vox lungs"
desc = "They're filled with dust....wow."
- species = "Vox"
safe_oxygen_min = 0 //We don't breathe this
safe_oxygen_max = 1 //This is toxic to us
@@ -333,7 +331,6 @@
/obj/item/organ/internal/lungs/drask
icon = 'icons/obj/surgery_drask.dmi'
- species = "Drask"
cold_message = "an invigorating coldness"
cold_level_3_threshold = 60
diff --git a/code/modules/surgery/organs/organ.dm b/code/modules/surgery/organs/organ.dm
index c2487503bfa..5f159390460 100644
--- a/code/modules/surgery/organs/organ.dm
+++ b/code/modules/surgery/organs/organ.dm
@@ -19,7 +19,6 @@
// links chemical IDs to number of ticks for which they'll stay in the blood
germ_level = 0
var/datum/dna/dna
- var/datum/species/species = "Human"
// Stuff for tracking if this is on a tile with an open freezer or not
var/last_freezer_update_time = 0
@@ -44,15 +43,13 @@
/obj/item/organ/proc/update_health()
return
-/obj/item/organ/New(var/mob/living/carbon/holder)
+/obj/item/organ/New(mob/living/carbon/holder)
..(holder)
if(!max_damage)
max_damage = min_broken_damage * 2
if(istype(holder))
- species = all_species["Human"]
if(holder.dna)
dna = holder.dna.Clone()
- species = all_species[dna.species]
else
log_runtime(EXCEPTION("[holder] spawned without a proper DNA."), holder)
var/mob/living/carbon/human/H = holder
@@ -62,8 +59,7 @@
blood_DNA = list()
blood_DNA[dna.unique_enzymes] = dna.b_type
else
- if(istext(species))
- species = all_species[species]
+ dna = new /datum/dna(null)
/obj/item/organ/proc/set_dna(var/datum/dna/new_dna)
if(new_dna)
diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm
index bd064a7d062..44e1f3dedb6 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 = species.icobase
- deform = species.deform
+ icobase = dna.species2.icobase
+ deform = dna.species2.deform
if(istype(H))
replaced(H)
sync_colour_to_human(H)
diff --git a/code/modules/surgery/organs/organ_icon.dm b/code/modules/surgery/organs/organ_icon.dm
index d1c1070b19d..344c1d1f0c4 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(species && owner.species && species.name != owner.species.name)
+ if(dna.species2 && owner.dna.species2 && dna.species2.name != owner.dna.species2.name)
return
if(dna.unique_enzymes != owner.dna.unique_enzymes) // This isn't MY arm
return
@@ -25,9 +25,9 @@ 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() && !(species && species.name == "Machine")) //machine people get skin color
+ if(is_robotic() && !istype(dna.species2, /datum/species/machine)) //machine people get skin color
return
- if(species && H.species && species.name != H.species.name)
+ if(dna.species2 && H.dna.species2 && dna.species2.name != H.dna.species2.name)
return
if(dna.unique_enzymes != H.dna.unique_enzymes) // This isn't MY arm
if(!(H.species.bodyflags & HAS_ICON_SKIN_TONE))
@@ -46,10 +46,10 @@ var/global/list/limb_icon_cache = list()
/obj/item/organ/external/proc/sync_colour_to_dna()
if(is_robotic())
return
- if(!isnull(dna.GetUIValue(DNA_UI_SKIN_TONE)) && ((species.bodyflags & HAS_SKIN_TONE) || (species.bodyflags & HAS_ICON_SKIN_TONE)))
+ if(!isnull(dna.GetUIValue(DNA_UI_SKIN_TONE)) && ((dna.species2.bodyflags & HAS_SKIN_TONE) || (dna.species2.bodyflags & HAS_ICON_SKIN_TONE)))
s_col = null
s_tone = dna.GetUIValue(DNA_UI_SKIN_TONE)
- if(species.bodyflags & HAS_SKIN_COLOR)
+ if(dna.species2.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))
@@ -64,11 +64,9 @@ var/global/list/limb_icon_cache = list()
/obj/item/organ/external/proc/get_icon(skeletal, fat)
// Kasparrov, you monster
- if(istext(species))
- species = all_species[species]
if(force_icon)
mob_icon = new /icon(force_icon, "[icon_name]")
- if(species && species.name == "Machine") //snowflake for IPC's, sorry.
+ if(istype(dna.species2, /datum/species/machine)) //snowflake for IPC's, sorry.
if(s_col)
mob_icon.Blend(s_col, ICON_ADD)
else
@@ -101,13 +99,13 @@ var/global/list/limb_icon_cache = list()
if(!owner)
return
- if(species.has_organ["eyes"])
+ if(dna.species2.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 species.species_traits))
+ if(owner.lip_style && (LIPS in dna.species2.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)
@@ -115,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 && (species.name in head_marking_style.species_allowed) && head_marking_style.marking_location == "head")
+ if(head_marking_style && head_marking_style.species_allowed && (dna.species2.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)
@@ -123,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 && (species.name in head_accessory_style.species_allowed))
+ if(head_accessory_style && head_accessory_style.species_allowed && (dna.species2.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)
@@ -131,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 && (species.name in facial_hair_style.species_allowed)) || (src.species.bodyflags & ALL_RPARTS)))
+ if(facial_hair_style && ((facial_hair_style.species_allowed && (dna.species2.name in facial_hair_style.species_allowed)) || (dna.species2.bodyflags & ALL_RPARTS)))
var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s")
- if(species.name == "Slime People") // I am el worstos
+ if(istype(dna.species2, /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)
@@ -141,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 && ((species.name in hair_style.species_allowed) || (src.species.bodyflags & ALL_RPARTS)))
+ if(hair_style && ((dna.species2.name in hair_style.species_allowed) || (dna.species2.bodyflags & ALL_RPARTS)))
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
- if(species.name == "Slime People") // I am el worstos
+ if(istype(dna.species2, /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)
@@ -184,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 species.species_traits))
+ if(fat && !skeletal && !is_robotic() && (CAN_BE_FAT in dna.species2.species_traits))
result[2] += "_fat"
return result
diff --git a/code/modules/surgery/organs/subtypes/abductor.dm b/code/modules/surgery/organs/subtypes/abductor.dm
index 6fd234bc501..58efd0094ed 100644
--- a/code/modules/surgery/organs/subtypes/abductor.dm
+++ b/code/modules/surgery/organs/subtypes/abductor.dm
@@ -1,4 +1,3 @@
/obj/item/organ/internal/eyes/abductor
name = "abductor eyeballs"
- dark_view = 3
- species = "Abductor"
+ dark_view = 3
\ No newline at end of file
diff --git a/code/modules/surgery/organs/subtypes/diona.dm b/code/modules/surgery/organs/subtypes/diona.dm
index 951ca862317..173e3fd7977 100644
--- a/code/modules/surgery/organs/subtypes/diona.dm
+++ b/code/modules/surgery/organs/subtypes/diona.dm
@@ -6,7 +6,6 @@
amputation_point = "trunk"
encased = null
gendered_icon = 0
- species = "Diona"
/obj/item/organ/external/groin/diona
name = "fork"
@@ -14,7 +13,6 @@
cannot_break = 1
amputation_point = "lower trunk"
gendered_icon = 0
- species = "Diona"
/obj/item/organ/external/arm/diona
name = "left upper tendril"
@@ -22,7 +20,6 @@
min_broken_damage = 20
cannot_break = 1
amputation_point = "upper left trunk"
- species = "Diona"
/obj/item/organ/external/arm/right/diona
name = "right upper tendril"
@@ -30,7 +27,6 @@
min_broken_damage = 20
cannot_break = 1
amputation_point = "upper right trunk"
- species = "Diona"
/obj/item/organ/external/leg/diona
name = "left lower tendril"
@@ -38,7 +34,6 @@
min_broken_damage = 20
cannot_break = 1
amputation_point = "lower left fork"
- species = "Diona"
/obj/item/organ/external/leg/right/diona
name = "right lower tendril"
@@ -46,7 +41,6 @@
min_broken_damage = 20
cannot_break = 1
amputation_point = "lower right fork"
- species = "Diona"
/obj/item/organ/external/foot/diona
name = "left foot"
@@ -54,7 +48,6 @@
min_broken_damage = 10
cannot_break = 1
amputation_point = "branch"
- species = "Diona"
/obj/item/organ/external/foot/right/diona
name = "right foot"
@@ -62,19 +55,16 @@
min_broken_damage = 10
cannot_break = 1
amputation_point = "branch"
- species = "Diona"
/obj/item/organ/external/hand/diona
name = "left grasper"
cannot_break = 1
amputation_point = "branch"
- species = "Diona"
/obj/item/organ/external/hand/right/diona
name = "right grasper"
cannot_break = 1
amputation_point = "branch"
- species = "Diona"
/obj/item/organ/external/head/diona
max_damage = 50
@@ -83,7 +73,6 @@
encased = null
amputation_point = "upper trunk"
gendered_icon = 0
- species = "Diona"
//DIONA ORGANS.
/* /obj/item/organ/external/diona/removed()
@@ -101,31 +90,26 @@
name = "neural strata"
icon = 'icons/obj/objects.dmi'
icon_state = "nymph"
- species = "Diona"
/obj/item/organ/internal/brain/diona // Turns into a nymph instantly, no transplanting possible.
name = "gas bladder"
icon = 'icons/obj/objects.dmi'
icon_state = "nymph"
- species = "Diona"
/obj/item/organ/internal/kidneys/diona // Turns into a nymph instantly, no transplanting possible.
name = "polyp segment"
icon = 'icons/obj/objects.dmi'
icon_state = "nymph"
- species = "Diona"
/obj/item/organ/internal/appendix/diona // Turns into a nymph instantly, no transplanting possible.
name = "anchoring ligament"
icon = 'icons/obj/objects.dmi'
icon_state = "nymph"
- species = "Diona"
/obj/item/organ/internal/eyes/diona // Turns into a nymph instantly, no transplanting possible.
name = "receptor node"
icon = 'icons/mob/alien.dmi'
icon_state = "claw"
- species = "Diona"
//TODO:Make absorb rads on insert
@@ -133,15 +117,4 @@
name = "nutrient vessel"
icon = 'icons/mob/alien.dmi'
icon_state = "claw"
- alcohol_intensity = 0.5
- species = "Diona"
-
-//TODO:Make absorb light on insert.
-
-/*/obj/item/organ/diona/removed(var/mob/living/user)
- var/mob/living/carbon/human/H = owner
- ..()
- if(!istype(H) || !H.bodyparts || !H.bodyparts.len)
- H.death()
- if(prob(50) && spawn_diona_nymph_from_organ(src))
- qdel(src) */
+ alcohol_intensity = 0.5
\ No newline at end of file
diff --git a/code/modules/surgery/organs/subtypes/drask.dm b/code/modules/surgery/organs/subtypes/drask.dm
index 8560d2408ec..6e11cf2993e 100644
--- a/code/modules/surgery/organs/subtypes/drask.dm
+++ b/code/modules/surgery/organs/subtypes/drask.dm
@@ -4,31 +4,26 @@
icon = 'icons/obj/surgery_drask.dmi'
icon_state = "innards"
desc = "A greenish, slightly translucent organ. It is extremely cold."
- species = "Drask"
/obj/item/organ/internal/heart/drask
name = "drask heart"
icon = 'icons/obj/surgery_drask.dmi'
parent_organ = "head"
- species = "Drask"
/obj/item/organ/internal/liver/drask
name = "metabolic strainer"
icon = 'icons/obj/surgery_drask.dmi'
icon_state = "kidneys"
alcohol_intensity = 0.8
- species = "Drask"
/obj/item/organ/internal/brain/drask
icon = 'icons/obj/surgery_drask.dmi'
icon_state = "brain2"
mmi_icon = 'icons/obj/surgery_drask.dmi'
mmi_icon_state = "mmi_full"
- species = "Drask"
/obj/item/organ/internal/eyes/drask
name = "drask eyeballs"
icon = 'icons/obj/surgery_drask.dmi'
desc = "Drask eyes. They look even stranger disembodied"
- dark_view = 5
- species = "Drask"
+ dark_view = 5
\ No newline at end of file
diff --git a/code/modules/surgery/organs/subtypes/grey.dm b/code/modules/surgery/organs/subtypes/grey.dm
index 6c06da373b7..177e4ae5be1 100644
--- a/code/modules/surgery/organs/subtypes/grey.dm
+++ b/code/modules/surgery/organs/subtypes/grey.dm
@@ -1,11 +1,9 @@
/obj/item/organ/internal/liver/grey
alcohol_intensity = 1.6
- species = "Grey"
/obj/item/organ/internal/brain/grey
icon_state = "brain-x"
mmi_icon_state = "mmi_alien"
- species = "Grey"
/obj/item/organ/internal/brain/grey/insert(var/mob/living/carbon/M, var/special = 0)
..()
@@ -17,5 +15,4 @@
/obj/item/organ/internal/eyes/grey
name = "grey eyeballs"
- dark_view = 5
- species = "Grey"
+ dark_view = 5
\ No newline at end of file
diff --git a/code/modules/surgery/organs/subtypes/kidan.dm b/code/modules/surgery/organs/subtypes/kidan.dm
index 37fd74a6d2a..d8fc67cc542 100644
--- a/code/modules/surgery/organs/subtypes/kidan.dm
+++ b/code/modules/surgery/organs/subtypes/kidan.dm
@@ -1,6 +1,5 @@
/obj/item/organ/internal/liver/kidan
alcohol_intensity = 0.5
- species = "Kidan"
#define KIDAN_LANTERN_HUNGERCOST 0.5
#define KIDAN_LANTERN_MINHUNGER 150
diff --git a/code/modules/surgery/organs/subtypes/machine.dm b/code/modules/surgery/organs/subtypes/machine.dm
index 589ade0e7de..e51d443bc72 100644
--- a/code/modules/surgery/organs/subtypes/machine.dm
+++ b/code/modules/surgery/organs/subtypes/machine.dm
@@ -5,7 +5,6 @@
min_broken_damage = 30
encased = null
status = ORGAN_ROBOT
- species = "Machine"
/obj/item/organ/external/head/ipc/New()
robotize("Morpheus Cyberkinetics")
@@ -14,7 +13,6 @@
/obj/item/organ/external/chest/ipc
encased = null
status = ORGAN_ROBOT
- species = "Machine"
/obj/item/organ/external/chest/ipc/New()
robotize("Morpheus Cyberkinetics")
@@ -23,7 +21,6 @@
/obj/item/organ/external/groin/ipc
encased = null
status = ORGAN_ROBOT
- species = "Machine"
/obj/item/organ/external/groin/ipc/New()
robotize("Morpheus Cyberkinetics")
@@ -32,7 +29,6 @@
/obj/item/organ/external/arm/ipc
encased = null
status = ORGAN_ROBOT
- species = "Machine"
/obj/item/organ/external/arm/ipc/New()
robotize("Morpheus Cyberkinetics")
@@ -41,7 +37,6 @@
/obj/item/organ/external/arm/right/ipc
encased = null
status = ORGAN_ROBOT
- species = "Machine"
/obj/item/organ/external/arm/right/ipc/New()
robotize("Morpheus Cyberkinetics")
@@ -49,7 +44,6 @@
/obj/item/organ/external/leg/ipc
encased = null
status = ORGAN_ROBOT
- species = "Machine"
/obj/item/organ/external/leg/ipc/New()
robotize("Morpheus Cyberkinetics")
@@ -58,7 +52,6 @@
/obj/item/organ/external/leg/right/ipc
encased = null
status = ORGAN_ROBOT
- species = "Machine"
/obj/item/organ/external/leg/right/ipc/New()
robotize("Morpheus Cyberkinetics")
@@ -67,7 +60,6 @@
/obj/item/organ/external/foot/ipc
encased = null
status = ORGAN_ROBOT
- species = "Machine"
/obj/item/organ/external/foot/ipc/New()
robotize("Morpheus Cyberkinetics")
@@ -76,7 +68,6 @@
/obj/item/organ/external/foot/right/ipc
encased = null
status = ORGAN_ROBOT
- species = "Machine"
/obj/item/organ/external/foot/right/ipc/New()
robotize("Morpheus Cyberkinetics")
@@ -85,7 +76,6 @@
/obj/item/organ/external/hand/ipc
encased = null
status = ORGAN_ROBOT
- species = "Machine"
/obj/item/organ/external/hand/ipc/New()
robotize("Morpheus Cyberkinetics")
@@ -94,7 +84,6 @@
/obj/item/organ/external/hand/right/ipc
encased = null
status = ORGAN_ROBOT
- species = "Machine"
/obj/item/organ/external/hand/right/ipc/New()
robotize("Morpheus Cyberkinetics")
@@ -110,7 +99,6 @@
slot = "heart"
vital = TRUE
status = ORGAN_ROBOT
- species = "Machine"
/obj/item/organ/internal/cell/New()
robotize()
@@ -121,7 +109,6 @@
icon = 'icons/obj/robot_component.dmi'
icon_state = "camera"
status = ORGAN_ROBOT
- species = "Machine"
// dead_icon = "camera_broken"
weld_proof = 1
diff --git a/code/modules/surgery/organs/subtypes/nucleation.dm b/code/modules/surgery/organs/subtypes/nucleation.dm
index 4223834501d..3be564fc800 100644
--- a/code/modules/surgery/organs/subtypes/nucleation.dm
+++ b/code/modules/surgery/organs/subtypes/nucleation.dm
@@ -3,7 +3,6 @@
name = "nucleation organ"
icon = 'icons/obj/surgery.dmi'
desc = "A crystalized human organ. /red It has a strangely iridescent glow."
- species = "Nucleation"
/obj/item/organ/internal/nucleation/resonant_crystal
name = "resonant crystal"
@@ -11,7 +10,6 @@
organ_tag = "resonant crystal"
parent_organ = "head"
slot = "res_crystal"
- species = "Nucleation"
/obj/item/organ/internal/nucleation/strange_crystal
name = "strange crystal"
@@ -19,14 +17,12 @@
organ_tag = "strange crystal"
parent_organ = "chest"
slot = "heart"
- species = "Nucleation"
/obj/item/organ/internal/eyes/luminescent_crystal
name = "luminescent eyes"
icon_state = "crystal-eyes"
organ_tag = "luminescent eyes"
light_color = "#1C1C00"
- species = "Nucleation"
/obj/item/organ/internal/eyes/luminescent_crystal/New()
set_light(2)
@@ -35,5 +31,4 @@
/obj/item/organ/internal/brain/crystal
name = "crystallized brain"
icon_state = "crystal-brain"
- organ_tag = "crystallized brain"
- species = "Nucleation"
+ organ_tag = "crystallized brain"
\ No newline at end of file
diff --git a/code/modules/surgery/organs/subtypes/shadow.dm b/code/modules/surgery/organs/subtypes/shadow.dm
index f81fc54bfb1..26a0bc50577 100644
--- a/code/modules/surgery/organs/subtypes/shadow.dm
+++ b/code/modules/surgery/organs/subtypes/shadow.dm
@@ -1,4 +1,3 @@
/obj/item/organ/internal/eyes/shadow
name = "dark orbs"
- dark_view = 8
- species = "Shadow"
+ dark_view = 8
\ No newline at end of file
diff --git a/code/modules/surgery/organs/subtypes/skrell.dm b/code/modules/surgery/organs/subtypes/skrell.dm
index cb87d1c11c1..fd8a02f18d3 100644
--- a/code/modules/surgery/organs/subtypes/skrell.dm
+++ b/code/modules/surgery/organs/subtypes/skrell.dm
@@ -1,6 +1,5 @@
/obj/item/organ/internal/liver/skrell
alcohol_intensity = 4
- species = "Skrell"
/obj/item/organ/internal/headpocket
name = "headpocket"
@@ -10,7 +9,6 @@
w_class = WEIGHT_CLASS_TINY
parent_organ = "head"
slot = "headpocket"
- species = "Skrell"
actions_types = list(/datum/action/item_action/organ_action/toggle)
var/obj/item/storage/internal/pocket
diff --git a/code/modules/surgery/organs/subtypes/tajaran.dm b/code/modules/surgery/organs/subtypes/tajaran.dm
index a1313934037..1857fc5e45a 100644
--- a/code/modules/surgery/organs/subtypes/tajaran.dm
+++ b/code/modules/surgery/organs/subtypes/tajaran.dm
@@ -1,17 +1,14 @@
/obj/item/organ/internal/liver/tajaran
alcohol_intensity = 1.4
- species = "Tajaran"
/obj/item/organ/internal/eyes/tajaran
name = "tajaran eyeballs"
- species = "Tajaran"
colourblind_matrix = MATRIX_TAJ_CBLIND //The colour matrix and darksight parameters that the mob will recieve when they get the disability.
replace_colours = LIST_TAJ_REPLACE
dark_view = 8
/obj/item/organ/internal/eyes/tajaran/farwa //Being the lesser form of Tajara, Farwas have an utterly incurable version of their colourblindness.
name = "farwa eyeballs"
- species = "Farwa"
colourmatrix = MATRIX_TAJ_CBLIND
dark_view = 8
replace_colours = LIST_TAJ_REPLACE
diff --git a/code/modules/surgery/organs/subtypes/unathi.dm b/code/modules/surgery/organs/subtypes/unathi.dm
index 0fb45319ce5..219ef0447e6 100644
--- a/code/modules/surgery/organs/subtypes/unathi.dm
+++ b/code/modules/surgery/organs/subtypes/unathi.dm
@@ -1,8 +1,6 @@
/obj/item/organ/internal/liver/unathi
alcohol_intensity = 0.8
- species = "Unathi"
/obj/item/organ/internal/eyes/unathi
name = "unathi eyeballs"
- dark_view = 3
- species = "Unathi"
+ dark_view = 3
\ No newline at end of file
diff --git a/code/modules/surgery/organs/subtypes/vox.dm b/code/modules/surgery/organs/subtypes/vox.dm
index f5b4b4edc07..7028d6f1fc2 100644
--- a/code/modules/surgery/organs/subtypes/vox.dm
+++ b/code/modules/surgery/organs/subtypes/vox.dm
@@ -1,6 +1,5 @@
/obj/item/organ/internal/liver/vox
alcohol_intensity = 1.6
- species = "Vox"
/obj/item/organ/internal/stack
diff --git a/code/modules/surgery/organs/subtypes/vulpkanin.dm b/code/modules/surgery/organs/subtypes/vulpkanin.dm
index be851c43486..959fbcc926c 100644
--- a/code/modules/surgery/organs/subtypes/vulpkanin.dm
+++ b/code/modules/surgery/organs/subtypes/vulpkanin.dm
@@ -1,18 +1,14 @@
/obj/item/organ/internal/liver/vulpkanin
alcohol_intensity = 1.4
- species = "Vulpkanin"
-
/obj/item/organ/internal/eyes/vulpkanin
name = "vulpkanin eyeballs"
- species = "Vulpkanin"
colourblind_matrix = MATRIX_VULP_CBLIND //The colour matrix and darksight parameters that the mob will recieve when they get the disability.
replace_colours = LIST_VULP_REPLACE
dark_view = 8
/obj/item/organ/internal/eyes/vulpkanin/wolpin //Being the lesser form of Vulpkanin, Wolpins have an utterly incurable version of their colourblindness.
name = "wolpin eyeballs"
- species = "Wolpin"
colourmatrix = MATRIX_VULP_CBLIND
dark_view = 8
- replace_colours = LIST_VULP_REPLACE
+ replace_colours = LIST_VULP_REPLACE
\ No newline at end of file
diff --git a/code/modules/surgery/organs/subtypes/wryn.dm b/code/modules/surgery/organs/subtypes/wryn.dm
index ee1a12fd1ab..ab30c16f61f 100644
--- a/code/modules/surgery/organs/subtypes/wryn.dm
+++ b/code/modules/surgery/organs/subtypes/wryn.dm
@@ -6,8 +6,6 @@
icon_state = "antennae"
parent_organ = "head"
slot = "hivenode"
- species = "Wryn"
/obj/item/organ/internal/eyes/wryn
- dark_view = 3
- species = "Wryn"
+ dark_view = 3
\ No newline at end of file