diff --git a/code/game/antagonist/outsider/raider.dm b/code/game/antagonist/outsider/raider.dm
index 5f8cbd8368..f47d9ef3f7 100644
--- a/code/game/antagonist/outsider/raider.dm
+++ b/code/game/antagonist/outsider/raider.dm
@@ -193,7 +193,7 @@ var/datum/antagonist/raider/raiders
if(!..())
return 0
- if(player.species && player.species.name == "Vox")
+ if(player.species && player.species.get_bodytype() == "Vox")
equip_vox(player)
else
var/new_shoes = pick(raider_shoes)
diff --git a/code/game/objects/items/paintkit.dm b/code/game/objects/items/paintkit.dm
index 34802577d6..78e42f71a8 100644
--- a/code/game/objects/items/paintkit.dm
+++ b/code/game/objects/items/paintkit.dm
@@ -43,7 +43,7 @@
user << "You set about modifying the helmet into [src]."
var/mob/living/carbon/human/H = user
if(istype(H))
- species_restricted = list(H.species.name)
+ species_restricted = list(H.species.get_bodytype())
kit.use(1,user)
return 1
return ..()
@@ -62,7 +62,7 @@
user << "You set about modifying the suit into [src]."
var/mob/living/carbon/human/H = user
if(istype(H))
- species_restricted = list(H.species.name)
+ species_restricted = list(H.species.get_bodytype())
kit.use(1,user)
return 1
return ..()
diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm
index 2f4e457c80..7e146faf36 100644
--- a/code/game/objects/structures/mirror.dm
+++ b/code/game/objects/structures/mirror.dm
@@ -75,8 +75,8 @@
/obj/structure/mirror/raider/attack_hand(var/mob/living/carbon/human/user)
if(istype(get_area(src),/area/syndicate_mothership))
- if(istype(user) && user.mind && user.mind.special_role == "Raider" && user.species != "Vox" && is_alien_whitelisted(user, "Vox"))
- var/choice = input("Do you wish to become a Vox? This is not reversible.") as null|anything in list("No","Yes")
+ if(istype(user) && user.mind && user.mind.special_role == "Raider" && user.species.name != "Vox" && is_alien_whitelisted(user, "Vox"))
+ var/choice = input("Do you wish to become a true Vox of the Shoal? This is not reversible.") as null|anything in list("No","Yes")
if(choice && choice == "Yes")
var/mob/living/carbon/human/vox/vox = new(get_turf(src),"Vox")
vox.gender = user.gender
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 6f5524ef25..e486f3d10d 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -617,7 +617,7 @@ var/list/admin_verbs_mentor = list(
if(istype(T,/mob/living/carbon/human))
var/mob/living/carbon/human/H = T
if (H.species)
- D.affected_species = list(H.species.name)
+ D.affected_species = list(H.species.get_bodytype())
if(H.species.primitive_form)
D.affected_species |= H.species.primitive_form
if(H.species.greater_form)
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 15577a308b..8ca6acc718 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -32,10 +32,10 @@
if(H.species)
if(exclusive)
- if(!(H.species.name in species_restricted))
+ if(!(H.species.get_bodytype() in species_restricted))
wearable = 1
else
- if(H.species.name in species_restricted)
+ if(H.species.get_bodytype() in species_restricted)
wearable = 1
if(!wearable && !(slot in list(slot_l_store, slot_r_store, slot_s_store)))
@@ -405,8 +405,8 @@ BLIND // can't see anything
var/icon/under_icon
if(icon_override)
under_icon = icon_override
- else if(H && sprite_sheets && sprite_sheets[H.species.name])
- under_icon = sprite_sheets[H.species.name]
+ else if(H && sprite_sheets && sprite_sheets[H.species.get_bodytype()])
+ under_icon = sprite_sheets[H.species.get_bodytype()]
else if(item_icons && item_icons[slot_w_uniform_str])
under_icon = item_icons[slot_w_uniform_str]
else
diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm
index 785e22d3c7..c09f7d382d 100644
--- a/code/modules/clothing/spacesuits/rig/rig.dm
+++ b/code/modules/clothing/spacesuits/rig/rig.dm
@@ -467,8 +467,8 @@
var/species_icon = 'icons/mob/rig_back.dmi'
// Since setting mob_icon will override the species checks in
// update_inv_wear_suit(), handle species checks here.
- if(wearer && sprite_sheets && sprite_sheets[wearer.species.name])
- species_icon = sprite_sheets[wearer.species.name]
+ if(wearer && sprite_sheets && sprite_sheets[wearer.species.get_bodytype()])
+ species_icon = sprite_sheets[wearer.species.get_bodytype()]
mob_icon = image("icon" = species_icon, "icon_state" = "[icon_state]")
if(installed_modules.len)
diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm
index 41c3797006..13eaffc2c3 100644
--- a/code/modules/mob/living/carbon/human/appearance.dm
+++ b/code/modules/mob/living/carbon/human/appearance.dm
@@ -161,7 +161,7 @@
continue
if(check_gender && gender == FEMALE && S.gender == MALE)
continue
- if(!(species.name in S.species_allowed))
+ if(!(species.get_bodytype() in S.species_allowed))
continue
valid_hairstyles += hairstyle
@@ -176,7 +176,7 @@
continue
if(gender == FEMALE && S.gender == MALE)
continue
- if(!(species.name in S.species_allowed))
+ if(!(species.get_bodytype() in S.species_allowed))
continue
valid_facial_hairstyles += facialhairstyle
diff --git a/code/modules/mob/living/carbon/human/species/outsider/vox.dm b/code/modules/mob/living/carbon/human/species/outsider/vox.dm
index 70fc9fcf3c..2269c14a53 100644
--- a/code/modules/mob/living/carbon/human/species/outsider/vox.dm
+++ b/code/modules/mob/living/carbon/human/species/outsider/vox.dm
@@ -107,7 +107,7 @@
/datum/species/vox/pariah/handle_environment_special(var/mob/living/carbon/human/H)
if(prob(5))
var/stink_range = rand(3,5)
- for(var/mob/living/M in range(src,stink_range))
+ for(var/mob/living/M in range(H,stink_range))
if(M.stat || M == H)
continue
var/mob/living/carbon/human/target = M
@@ -116,4 +116,7 @@
continue
if(target.wear_mask && (target.wear_mask.flags & MASKCOVERSMOUTH) && (target.wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT))
continue
- M << "A terrible stench emanates from \the [H]."
\ No newline at end of file
+ M << "A terrible stench emanates from \the [H]."
+
+/datum/species/vox/pariah/get_bodytype()
+ return "Vox"
diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm
index b562d4d95c..b1d523dd8d 100644
--- a/code/modules/mob/living/carbon/human/species/species.dm
+++ b/code/modules/mob/living/carbon/human/species/species.dm
@@ -149,6 +149,9 @@
/datum/species/proc/get_station_variant()
return name
+/datum/species/proc/get_bodytype()
+ return name
+
/datum/species/proc/get_environment_discomfort(var/mob/living/carbon/human/H, var/msg_type)
if(!prob(5))
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index a88bb65c24..281a9a97e4 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -350,7 +350,7 @@ var/global/list/damage_icon_parts = 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 && (src.species.name in facial_hair_style.species_allowed))
+ if(facial_hair_style && facial_hair_style.species_allowed && (src.species.get_bodytype() in 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(facial_hair_style.do_colouration)
facial_s.Blend(rgb(r_facial, g_facial, b_facial), ICON_ADD)
@@ -359,7 +359,7 @@ var/global/list/damage_icon_parts = list()
if(h_style && !(head && (head.flags & BLOCKHEADHAIR)))
var/datum/sprite_accessory/hair_style = hair_styles_list[h_style]
- if(hair_style && src.species.name in hair_style.species_allowed)
+ if(hair_style && (src.species.get_bodytype() in hair_style.species_allowed))
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
if(hair_style.do_colouration)
hair_s.Blend(rgb(r_hair, g_hair, b_hair), ICON_ADD)
@@ -468,8 +468,8 @@ var/global/list/damage_icon_parts = list()
var/icon/under_icon
if(w_uniform.icon_override)
under_icon = w_uniform.icon_override
- else if(w_uniform.sprite_sheets && w_uniform.sprite_sheets[species.name])
- under_icon = w_uniform.sprite_sheets[species.name]
+ else if(w_uniform.sprite_sheets && w_uniform.sprite_sheets[species.get_bodytype()])
+ under_icon = w_uniform.sprite_sheets[species.get_bodytype()]
else if(w_uniform.item_icons && w_uniform.item_icons[slot_w_uniform_str])
under_icon = w_uniform.item_icons[slot_w_uniform_str]
else
@@ -529,8 +529,8 @@ 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[species.get_bodytype()])
+ standing = image("icon" = gloves.sprite_sheets[species.get_bodytype()], "icon_state" = "[t_state]")
else
standing = image("icon" = 'icons/mob/hands.dmi', "icon_state" = "[t_state]")
@@ -555,8 +555,8 @@ var/global/list/damage_icon_parts = list()
if(glasses.icon_override)
overlays_standing[GLASSES_LAYER] = image("icon" = glasses.icon_override, "icon_state" = "[glasses.icon_state]")
- else if(glasses.sprite_sheets && glasses.sprite_sheets[species.name])
- overlays_standing[GLASSES_LAYER]= image("icon" = glasses.sprite_sheets[species.name], "icon_state" = "[glasses.icon_state]")
+ else if(glasses.sprite_sheets && glasses.sprite_sheets[species.get_bodytype()])
+ overlays_standing[GLASSES_LAYER]= image("icon" = glasses.sprite_sheets[species.get_bodytype()], "icon_state" = "[glasses.icon_state]")
else
overlays_standing[GLASSES_LAYER]= image("icon" = 'icons/mob/eyes.dmi', "icon_state" = "[glasses.icon_state]")
@@ -577,9 +577,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[species.get_bodytype()])
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[species.get_bodytype()], "icon_state" = "[t_type]")
else
overlays_standing[EARS_LAYER] = image("icon" = 'icons/mob/ears.dmi', "icon_state" = "[t_type]")
@@ -589,9 +589,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[species.get_bodytype()])
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[species.get_bodytype()], "icon_state" = "[t_type]")
else
overlays_standing[EARS_LAYER] = image("icon" = 'icons/mob/ears.dmi', "icon_state" = "[t_type]")
@@ -605,8 +605,8 @@ 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[species.get_bodytype()])
+ standing = image("icon" = shoes.sprite_sheets[species.get_bodytype()], "icon_state" = "[shoes.icon_state]")
else
standing = image("icon" = 'icons/mob/feet.dmi', "icon_state" = "[shoes.icon_state]")
@@ -643,8 +643,8 @@ var/global/list/damage_icon_parts = list()
var/t_icon = INV_HEAD_DEF_ICON
if(head.icon_override)
t_icon = head.icon_override
- else if(head.sprite_sheets && head.sprite_sheets[species.name])
- t_icon = head.sprite_sheets[species.name]
+ else if(head.sprite_sheets && head.sprite_sheets[species.get_bodytype()])
+ t_icon = head.sprite_sheets[species.get_bodytype()]
else if(head.item_icons && (icon_head in head.item_icons))
t_icon = head.item_icons[icon_head]
@@ -683,8 +683,8 @@ var/global/list/damage_icon_parts = list()
if(belt.icon_override)
standing.icon = belt.icon_override
- else if(belt.sprite_sheets && belt.sprite_sheets[species.name])
- standing.icon = belt.sprite_sheets[species.name]
+ else if(belt.sprite_sheets && belt.sprite_sheets[species.get_bodytype()])
+ standing.icon = belt.sprite_sheets[species.get_bodytype()]
else
standing.icon = 'icons/mob/belt.dmi'
@@ -709,7 +709,7 @@ var/global/list/damage_icon_parts = list()
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])
+ else if(wear_suit.sprite_sheets && wear_suit.sprite_sheets[species.get_bodytype()])
standing = image("icon" = wear_suit.sprite_sheets[species.name], "icon_state" = "[wear_suit.icon_state]")
else
standing = image("icon" = 'icons/mob/suit.dmi', "icon_state" = "[wear_suit.icon_state]")
@@ -750,8 +750,8 @@ var/global/list/damage_icon_parts = list()
var/image/standing
if(wear_mask.icon_override)
standing = image("icon" = wear_mask.icon_override, "icon_state" = "[wear_mask.icon_state]")
- else if(wear_mask.sprite_sheets && wear_mask.sprite_sheets[species.name])
- standing = image("icon" = wear_mask.sprite_sheets[species.name], "icon_state" = "[wear_mask.icon_state]")
+ else if(wear_mask.sprite_sheets && wear_mask.sprite_sheets[species.get_bodytype()])
+ standing = image("icon" = wear_mask.sprite_sheets[species.get_bodytype()], "icon_state" = "[wear_mask.icon_state]")
else
standing = image("icon" = 'icons/mob/mask.dmi', "icon_state" = "[wear_mask.icon_state]")
@@ -777,8 +777,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/weapon/rig/rig = back
overlay_icon = rig.mob_icon
- else if(back.sprite_sheets && back.sprite_sheets[species.name])
- overlay_icon = back.sprite_sheets[species.name]
+ else if(back.sprite_sheets && back.sprite_sheets[species.get_bodytype()])
+ overlay_icon = back.sprite_sheets[species.get_bodytype()]
else if(back.item_icons && (slot_back_str in back.item_icons))
overlay_icon = back.item_icons[slot_back_str]
else
diff --git a/code/modules/organs/organ_icon.dm b/code/modules/organs/organ_icon.dm
index 7a5c561f6f..8812748b69 100644
--- a/code/modules/organs/organ_icon.dm
+++ b/code/modules/organs/organ_icon.dm
@@ -55,7 +55,7 @@ var/global/list/limb_icon_cache = list()
if(owner.f_style)
var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[owner.f_style]
- if(facial_hair_style && facial_hair_style.species_allowed && (owner.species.name in facial_hair_style.species_allowed))
+ if(facial_hair_style && facial_hair_style.species_allowed && (owner.species.get_bodytype() in 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(facial_hair_style.do_colouration)
facial_s.Blend(rgb(owner.r_facial, owner.g_facial, owner.b_facial), ICON_ADD)
@@ -63,7 +63,7 @@ var/global/list/limb_icon_cache = list()
if(owner.h_style && !(owner.head && (owner.head.flags & BLOCKHEADHAIR)))
var/datum/sprite_accessory/hair_style = hair_styles_list[owner.h_style]
- if(hair_style && (owner.species.name in hair_style.species_allowed))
+ if(hair_style && (owner.species.get_bodytype() in hair_style.species_allowed))
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
if(hair_style.do_colouration)
hair_s.Blend(rgb(owner.r_hair, owner.g_hair, owner.b_hair), ICON_ADD)
diff --git a/code/modules/projectiles/guns/alien.dm b/code/modules/projectiles/guns/alien.dm
index ff9edcabfc..2a9b44f926 100644
--- a/code/modules/projectiles/guns/alien.dm
+++ b/code/modules/projectiles/guns/alien.dm
@@ -40,7 +40,7 @@
/obj/item/weapon/gun/launcher/spikethrower/special_check(user)
if(istype(user,/mob/living/carbon/human))
var/mob/living/carbon/human/H = user
- if(H.species && H.species.name != "Vox")
+ if(H.species && H.species.get_bodytype() != "Vox")
user << "\The [src] does not respond to you!"
return 0
return ..()
diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm
index 2fdf26e04e..6e57a4f37b 100644
--- a/code/modules/surgery/surgery.dm
+++ b/code/modules/surgery/surgery.dm
@@ -32,12 +32,12 @@
if(allowed_species)
for(var/species in allowed_species)
- if(target.species.name == species)
+ if(target.species.get_bodytype() == species)
return 1
if(disallowed_species)
for(var/species in disallowed_species)
- if(target.species.name == species)
+ if(target.species.get_bodytype() == species)
return 0
return 1
diff --git a/code/modules/virus2/admin.dm b/code/modules/virus2/admin.dm
index 88876da9ed..3cd24061d5 100644
--- a/code/modules/virus2/admin.dm
+++ b/code/modules/virus2/admin.dm
@@ -131,7 +131,7 @@
else if(href_list["reset"])
species = list()
if(infectee)
- if(!infectee.species || !(infectee.species.name in species))
+ if(!infectee.species || !(infectee.species.get_bodytype() in species))
infectee = null
if("ichance")
var/I = input("Input infection chance", "Infection Chance", infectionchance) as null|num
@@ -159,16 +159,16 @@
var/list/candidates = list()
for(var/mob/living/carbon/G in living_mob_list)
if(G.stat != DEAD && G.species)
- if(G.species.name in species)
+ if(G.species.get_bodytype() in species)
candidates["[G.name][G.client ? "" : " (no client)"]"] = G
else
- candidates["[G.name] ([G.species.name])[G.client ? "" : " (no client)"]"] = G
+ candidates["[G.name] ([G.species.get_bodytype()])[G.client ? "" : " (no client)"]"] = G
if(!candidates.len) usr << "No possible candidates found!"
var/I = input("Choose initial infectee", "Infectee", infectee) as null|anything in candidates
if(!I || !candidates[I]) return
infectee = candidates[I]
- species |= infectee.species.name
+ species |= infectee.species.get_bodytype()
if("go")
if(!antigens.len)
var/a = alert("This disease has no antigens; it will be impossible to permanently immunise anyone without them.\
diff --git a/code/modules/virus2/helpers.dm b/code/modules/virus2/helpers.dm
index d35037dc13..80b6918992 100644
--- a/code/modules/virus2/helpers.dm
+++ b/code/modules/virus2/helpers.dm
@@ -86,9 +86,9 @@ proc/airborne_can_reach(turf/source, turf/target)
if(!disease.affected_species.len)
return
- if (!(M.species.name in disease.affected_species))
+ if (!(M.species.get_bodytype() in disease.affected_species))
if (forced)
- disease.affected_species[1] = M.species.name
+ disease.affected_species[1] = M.species.get_bodytype()
else
return //not compatible with this species