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