Merge pull request #10789 from Zuhayr/dev-freeze

Dev freeze
This commit is contained in:
Zuhayr
2015-08-22 03:16:05 +09:30
21 changed files with 141 additions and 65 deletions

View File

@@ -193,7 +193,7 @@ var/datum/antagonist/raider/raiders
if(!..()) if(!..())
return 0 return 0
if(player.species && player.species.name == "Vox") if(player.species && player.species.get_bodytype() == "Vox")
equip_vox(player) equip_vox(player)
else else
var/new_shoes = pick(raider_shoes) var/new_shoes = pick(raider_shoes)

View File

@@ -43,7 +43,7 @@
user << "You set about modifying the helmet into [src]." user << "You set about modifying the helmet into [src]."
var/mob/living/carbon/human/H = user var/mob/living/carbon/human/H = user
if(istype(H)) if(istype(H))
species_restricted = list(H.species.name) species_restricted = list(H.species.get_bodytype())
kit.use(1,user) kit.use(1,user)
return 1 return 1
return ..() return ..()
@@ -62,7 +62,7 @@
user << "You set about modifying the suit into [src]." user << "You set about modifying the suit into [src]."
var/mob/living/carbon/human/H = user var/mob/living/carbon/human/H = user
if(istype(H)) if(istype(H))
species_restricted = list(H.species.name) species_restricted = list(H.species.get_bodytype())
kit.use(1,user) kit.use(1,user)
return 1 return 1
return ..() return ..()

View File

@@ -75,13 +75,12 @@
/obj/structure/mirror/raider/attack_hand(var/mob/living/carbon/human/user) /obj/structure/mirror/raider/attack_hand(var/mob/living/carbon/human/user)
if(istype(get_area(src),/area/syndicate_mothership)) 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")) 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 Vox? This is not reversible.") as null|anything in list("No","Yes") 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") if(choice && choice == "Yes")
var/mob/living/carbon/human/vox/vox = new(get_turf(src),"Vox") var/mob/living/carbon/human/vox/vox = new(get_turf(src),"Vox")
vox.gender = user.gender vox.gender = user.gender
raiders.equip(vox) raiders.equip(vox)
new /obj/item/organ/stack/vox(vox)
if(user.mind) if(user.mind)
user.mind.transfer_to(vox) user.mind.transfer_to(vox)
spawn(1) spawn(1)

View File

@@ -620,7 +620,7 @@ var/list/admin_verbs_mentor = list(
if(istype(T,/mob/living/carbon/human)) if(istype(T,/mob/living/carbon/human))
var/mob/living/carbon/human/H = T var/mob/living/carbon/human/H = T
if (H.species) if (H.species)
D.affected_species = list(H.species.name) D.affected_species = list(H.species.get_bodytype())
if(H.species.primitive_form) if(H.species.primitive_form)
D.affected_species |= H.species.primitive_form D.affected_species |= H.species.primitive_form
if(H.species.greater_form) if(H.species.greater_form)

View File

@@ -32,10 +32,10 @@
if(H.species) if(H.species)
if(exclusive) if(exclusive)
if(!(H.species.name in species_restricted)) if(!(H.species.get_bodytype() in species_restricted))
wearable = 1 wearable = 1
else else
if(H.species.name in species_restricted) if(H.species.get_bodytype() in species_restricted)
wearable = 1 wearable = 1
if(!wearable && !(slot in list(slot_l_store, slot_r_store, slot_s_store))) if(!wearable && !(slot in list(slot_l_store, slot_r_store, slot_s_store)))
@@ -75,6 +75,7 @@
species_restricted = list("exclude","Unathi","Tajara","Diona","Vox", "Xenomorph", "Xenomorph Drone", "Xenomorph Hunter", "Xenomorph Sentinel", "Xenomorph Queen") species_restricted = list("exclude","Unathi","Tajara","Diona","Vox", "Xenomorph", "Xenomorph Drone", "Xenomorph Hunter", "Xenomorph Sentinel", "Xenomorph Queen")
if("Human") if("Human")
species_restricted = list("exclude","Skrell","Unathi","Tajara","Diona","Vox", "Xenomorph", "Xenomorph Drone", "Xenomorph Hunter", "Xenomorph Sentinel", "Xenomorph Queen") species_restricted = list("exclude","Skrell","Unathi","Tajara","Diona","Vox", "Xenomorph", "Xenomorph Drone", "Xenomorph Hunter", "Xenomorph Sentinel", "Xenomorph Queen")
else else
species_restricted = list(target_species) species_restricted = list(target_species)
@@ -408,8 +409,8 @@ BLIND // can't see anything
var/icon/under_icon var/icon/under_icon
if(icon_override) if(icon_override)
under_icon = icon_override under_icon = icon_override
else if(H && sprite_sheets && sprite_sheets[H.species.name]) else if(H && sprite_sheets && sprite_sheets[H.species.get_bodytype()])
under_icon = sprite_sheets[H.species.name] under_icon = sprite_sheets[H.species.get_bodytype()]
else if(item_icons && item_icons[slot_w_uniform_str]) else if(item_icons && item_icons[slot_w_uniform_str])
under_icon = item_icons[slot_w_uniform_str] under_icon = item_icons[slot_w_uniform_str]
else else

View File

@@ -467,8 +467,8 @@
var/species_icon = 'icons/mob/rig_back.dmi' var/species_icon = 'icons/mob/rig_back.dmi'
// Since setting mob_icon will override the species checks in // Since setting mob_icon will override the species checks in
// update_inv_wear_suit(), handle species checks here. // update_inv_wear_suit(), handle species checks here.
if(wearer && sprite_sheets && sprite_sheets[wearer.species.name]) if(wearer && sprite_sheets && sprite_sheets[wearer.species.get_bodytype()])
species_icon = sprite_sheets[wearer.species.name] species_icon = sprite_sheets[wearer.species.get_bodytype()]
mob_icon = image("icon" = species_icon, "icon_state" = "[icon_state]") mob_icon = image("icon" = species_icon, "icon_state" = "[icon_state]")
if(installed_modules.len) if(installed_modules.len)

View File

@@ -15,6 +15,15 @@
attack_verb = list("attacked", "slapped", "whacked") attack_verb = list("attacked", "slapped", "whacked")
var/mob/living/carbon/brain/brainmob = null var/mob/living/carbon/brain/brainmob = null
/obj/item/organ/pariah_brain
name = "brain remnants"
desc = "Did someone tread on this? It looks useless for cloning or cyborgification."
organ_tag = "brain"
parent_organ = "head"
icon = 'icons/mob/alien.dmi'
icon_state = "chitin"
vital = 1
/obj/item/organ/brain/xeno /obj/item/organ/brain/xeno
name = "thinkpan" name = "thinkpan"
desc = "It looks kind of like an enormous wad of purple bubblegum." desc = "It looks kind of like an enormous wad of purple bubblegum."

View File

@@ -163,7 +163,7 @@
continue continue
if(check_gender && gender == FEMALE && S.gender == MALE) if(check_gender && gender == FEMALE && S.gender == MALE)
continue continue
if(!(species.name in S.species_allowed)) if(!(species.get_bodytype() in S.species_allowed))
continue continue
valid_hairstyles += hairstyle valid_hairstyles += hairstyle
@@ -178,7 +178,7 @@
continue continue
if(gender == FEMALE && S.gender == MALE) if(gender == FEMALE && S.gender == MALE)
continue continue
if(!(species.name in S.species_allowed)) if(!(species.get_bodytype() in S.species_allowed))
continue continue
valid_facial_hairstyles += facialhairstyle valid_facial_hairstyles += facialhairstyle

View File

@@ -71,7 +71,7 @@
if(!T || !src || src.stat) return if(!T || !src || src.stat) return
if(get_dist(get_turf(T), get_turf(src)) > 6) return if(get_dist(get_turf(T), get_turf(src)) > 4) return
if(last_special > world.time) if(last_special > world.time)
return return
@@ -83,8 +83,8 @@
last_special = world.time + 75 last_special = world.time + 75
status_flags |= LEAPING status_flags |= LEAPING
src.visible_message("<span class='warning'><b>\The [src]</b> leaps at [T]!</span>") src.visible_message("<span class='danger'>\The [src] leaps at [T]!</span>")
src.throw_at(get_step(get_turf(T),get_turf(src)), 5, 1, src) src.throw_at(get_step(get_turf(T),get_turf(src)), 4, 1, src)
playsound(src.loc, 'sound/voice/shriek1.ogg', 50, 1) playsound(src.loc, 'sound/voice/shriek1.ogg', 50, 1)
sleep(5) sleep(5)
@@ -92,13 +92,13 @@
if(status_flags & LEAPING) status_flags &= ~LEAPING if(status_flags & LEAPING) status_flags &= ~LEAPING
if(!src.Adjacent(T)) if(!src.Adjacent(T))
src << "\red You miss!" src << "<span class='warning'>You miss!</span>"
return return
T.Weaken(5) T.Weaken(3)
//Only official cool kids get the grab and no self-prone. // Pariahs are not good at leaping. This is snowflakey, pls fix.
if(!(src.mind && src.mind.special_role)) if(species.name == "Vox Pariah")
src.Weaken(5) src.Weaken(5)
return return
@@ -118,7 +118,7 @@
else else
r_hand = G r_hand = G
G.state = GRAB_AGGRESSIVE G.state = GRAB_PASSIVE
G.icon_state = "grabbed1" G.icon_state = "grabbed1"
G.synch() G.synch()

View File

@@ -6,7 +6,7 @@
default_language = "Vox-pidgin" default_language = "Vox-pidgin"
language = "Galactic Common" language = "Galactic Common"
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/strong, /datum/unarmed_attack/bite/strong) unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/strong, /datum/unarmed_attack/bite/strong)
rarity_value = 2 rarity_value = 4
blurb = "The Vox are the broken remnants of a once-proud race, now reduced to little more than \ blurb = "The Vox are the broken remnants of a once-proud race, now reduced to little more than \
scavenging vermin who prey on isolated stations, ships or planets to keep their own ancient arkships \ scavenging vermin who prey on isolated stations, ships or planets to keep their own ancient arkships \
alive. They are four to five feet tall, reptillian, beaked, tailed and quilled; human crews often \ alive. They are four to five feet tall, reptillian, beaked, tailed and quilled; human crews often \
@@ -47,7 +47,8 @@
"liver" = /obj/item/organ/liver, "liver" = /obj/item/organ/liver,
"kidneys" = /obj/item/organ/kidneys, "kidneys" = /obj/item/organ/kidneys,
"brain" = /obj/item/organ/brain, "brain" = /obj/item/organ/brain,
"eyes" = /obj/item/organ/eyes "eyes" = /obj/item/organ/eyes,
"stack" = /obj/item/organ/stack/vox
) )
/datum/species/vox/get_random_name(var/gender) /datum/species/vox/get_random_name(var/gender)
@@ -67,7 +68,55 @@
H.internals.icon_state = "internal1" H.internals.icon_state = "internal1"
/datum/species/vox/can_shred(var/mob/living/carbon/human/H, var/ignore_intent) /datum/species/vox/get_station_variant()
if(!H.mind || !H.mind.special_role) // Pariah check. return "Vox Pariah"
return 0
return ..() // Joining as a station vox will give you this template, hence IS_RESTRICTED flag.
/datum/species/vox/pariah
name = "Vox Pariah"
rarity_value = 0.1
speech_chance = 60 // No volume control.
siemens_coefficient = 0.5 // Ragged scaleless patches.
warning_low_pressure = (WARNING_LOW_PRESSURE-20)
hazard_low_pressure = (HAZARD_LOW_PRESSURE-10)
total_health = 80
cold_level_1 = 130
cold_level_2 = 100
cold_level_3 = 60
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite)
// Pariahs have no stack.
has_organ = list(
"heart" = /obj/item/organ/heart,
"lungs" = /obj/item/organ/lungs,
"liver" = /obj/item/organ/liver,
"kidneys" = /obj/item/organ/kidneys,
"brain" = /obj/item/organ/pariah_brain,
"eyes" = /obj/item/organ/eyes
)
flags = IS_RESTRICTED | NO_SCAN | HAS_EYE_COLOR
// No combat skills for you.
/datum/species/vox/pariah/can_shred(var/mob/living/carbon/human/H, var/ignore_intent)
return 0
// Pariahs are really gross.
/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(H,stink_range))
if(M.stat || M == H)
continue
var/mob/living/carbon/human/target = M
if(istype(target))
if(target.head && (target.head.flags & HEADCOVERSMOUTH) && (target.head.flags & AIRTIGHT))
continue
if(target.wear_mask && (target.wear_mask.flags & MASKCOVERSMOUTH) && (target.wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT))
continue
M << "<span class='danger'>A terrible stench emanates from \the [H].</span>"
/datum/species/vox/pariah/get_bodytype()
return "Vox"

View File

@@ -152,6 +152,12 @@
for(var/u_type in unarmed_types) for(var/u_type in unarmed_types)
unarmed_attacks += new u_type() unarmed_attacks += new u_type()
/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) /datum/species/proc/get_environment_discomfort(var/mob/living/carbon/human/H, var/msg_type)
if(!prob(5)) if(!prob(5))

View File

@@ -61,6 +61,9 @@
var/weeds_heal_rate = 1 // Health regen on weeds. var/weeds_heal_rate = 1 // Health regen on weeds.
var/weeds_plasma_rate = 5 // Plasma regen on weeds. var/weeds_plasma_rate = 5 // Plasma regen on weeds.
/datum/species/xenos/get_bodytype()
return "Xenomorph"
/datum/species/xenos/get_random_name() /datum/species/xenos/get_random_name()
return "alien [caste_name] ([alien_number])" return "alien [caste_name] ([alien_number])"

View File

@@ -357,7 +357,7 @@ var/global/list/damage_icon_parts = list()
if(f_style) if(f_style)
var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[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") 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) if(facial_hair_style.do_colouration)
facial_s.Blend(rgb(r_facial, g_facial, b_facial), ICON_ADD) facial_s.Blend(rgb(r_facial, g_facial, b_facial), ICON_ADD)
@@ -366,7 +366,7 @@ var/global/list/damage_icon_parts = list()
if(h_style && !(head && (head.flags & BLOCKHEADHAIR))) if(h_style && !(head && (head.flags & BLOCKHEADHAIR)))
var/datum/sprite_accessory/hair_style = hair_styles_list[h_style] 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") var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
if(hair_style.do_colouration) if(hair_style.do_colouration)
hair_s.Blend(rgb(r_hair, g_hair, b_hair), ICON_ADD) hair_s.Blend(rgb(r_hair, g_hair, b_hair), ICON_ADD)
@@ -475,8 +475,8 @@ var/global/list/damage_icon_parts = list()
var/icon/under_icon var/icon/under_icon
if(w_uniform.icon_override) if(w_uniform.icon_override)
under_icon = w_uniform.icon_override under_icon = w_uniform.icon_override
else if(w_uniform.sprite_sheets && 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.name] under_icon = w_uniform.sprite_sheets[species.get_bodytype()]
else if(w_uniform.item_icons && w_uniform.item_icons[slot_w_uniform_str]) else if(w_uniform.item_icons && w_uniform.item_icons[slot_w_uniform_str])
under_icon = w_uniform.item_icons[slot_w_uniform_str] under_icon = w_uniform.item_icons[slot_w_uniform_str]
else else
@@ -536,8 +536,8 @@ var/global/list/damage_icon_parts = list()
var/image/standing var/image/standing
if(gloves.icon_override) if(gloves.icon_override)
standing = image("icon" = gloves.icon_override, "icon_state" = "[t_state]") standing = image("icon" = gloves.icon_override, "icon_state" = "[t_state]")
else if(gloves.sprite_sheets && gloves.sprite_sheets[species.name]) else if(gloves.sprite_sheets && gloves.sprite_sheets[species.get_bodytype()])
standing = image("icon" = gloves.sprite_sheets[species.name], "icon_state" = "[t_state]") standing = image("icon" = gloves.sprite_sheets[species.get_bodytype()], "icon_state" = "[t_state]")
else else
standing = image("icon" = 'icons/mob/hands.dmi', "icon_state" = "[t_state]") standing = image("icon" = 'icons/mob/hands.dmi', "icon_state" = "[t_state]")
@@ -562,8 +562,8 @@ var/global/list/damage_icon_parts = list()
if(glasses.icon_override) if(glasses.icon_override)
overlays_standing[GLASSES_LAYER] = image("icon" = glasses.icon_override, "icon_state" = "[glasses.icon_state]") overlays_standing[GLASSES_LAYER] = image("icon" = glasses.icon_override, "icon_state" = "[glasses.icon_state]")
else if(glasses.sprite_sheets && glasses.sprite_sheets[species.name]) else if(glasses.sprite_sheets && glasses.sprite_sheets[species.get_bodytype()])
overlays_standing[GLASSES_LAYER]= image("icon" = glasses.sprite_sheets[species.name], "icon_state" = "[glasses.icon_state]") overlays_standing[GLASSES_LAYER]= image("icon" = glasses.sprite_sheets[species.get_bodytype()], "icon_state" = "[glasses.icon_state]")
else else
overlays_standing[GLASSES_LAYER]= image("icon" = 'icons/mob/eyes.dmi', "icon_state" = "[glasses.icon_state]") overlays_standing[GLASSES_LAYER]= image("icon" = 'icons/mob/eyes.dmi', "icon_state" = "[glasses.icon_state]")
@@ -584,9 +584,9 @@ var/global/list/damage_icon_parts = list()
if(l_ear.icon_override) if(l_ear.icon_override)
t_type = "[t_type]_l" t_type = "[t_type]_l"
overlays_standing[EARS_LAYER] = image("icon" = l_ear.icon_override, "icon_state" = "[t_type]") 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" 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 else
overlays_standing[EARS_LAYER] = image("icon" = 'icons/mob/ears.dmi', "icon_state" = "[t_type]") overlays_standing[EARS_LAYER] = image("icon" = 'icons/mob/ears.dmi', "icon_state" = "[t_type]")
@@ -596,9 +596,9 @@ var/global/list/damage_icon_parts = list()
if(r_ear.icon_override) if(r_ear.icon_override)
t_type = "[t_type]_r" t_type = "[t_type]_r"
overlays_standing[EARS_LAYER] = image("icon" = r_ear.icon_override, "icon_state" = "[t_type]") 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" 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 else
overlays_standing[EARS_LAYER] = image("icon" = 'icons/mob/ears.dmi', "icon_state" = "[t_type]") overlays_standing[EARS_LAYER] = image("icon" = 'icons/mob/ears.dmi', "icon_state" = "[t_type]")
@@ -612,8 +612,8 @@ var/global/list/damage_icon_parts = list()
var/image/standing var/image/standing
if(shoes.icon_override) if(shoes.icon_override)
standing = image("icon" = shoes.icon_override, "icon_state" = "[shoes.icon_state]") standing = image("icon" = shoes.icon_override, "icon_state" = "[shoes.icon_state]")
else if(shoes.sprite_sheets && shoes.sprite_sheets[species.name]) else if(shoes.sprite_sheets && shoes.sprite_sheets[species.get_bodytype()])
standing = image("icon" = shoes.sprite_sheets[species.name], "icon_state" = "[shoes.icon_state]") standing = image("icon" = shoes.sprite_sheets[species.get_bodytype()], "icon_state" = "[shoes.icon_state]")
else else
standing = image("icon" = 'icons/mob/feet.dmi', "icon_state" = "[shoes.icon_state]") standing = image("icon" = 'icons/mob/feet.dmi', "icon_state" = "[shoes.icon_state]")
@@ -650,8 +650,8 @@ var/global/list/damage_icon_parts = list()
var/t_icon var/t_icon
if(head.icon_override) if(head.icon_override)
t_icon = head.icon_override t_icon = head.icon_override
else if(head.sprite_sheets && head.sprite_sheets[species.name]) else if(head.sprite_sheets && head.sprite_sheets[species.get_bodytype()])
t_icon = head.sprite_sheets[species.name] t_icon = head.sprite_sheets[species.get_bodytype()]
else if(head.item_icons && (slot_head_str in head.item_icons)) else if(head.item_icons && (slot_head_str in head.item_icons))
t_icon = head.item_icons[slot_head_str] t_icon = head.item_icons[slot_head_str]
@@ -700,8 +700,8 @@ var/global/list/damage_icon_parts = list()
if(belt.icon_override) if(belt.icon_override)
standing.icon = belt.icon_override standing.icon = belt.icon_override
else if(belt.sprite_sheets && belt.sprite_sheets[species.name]) else if(belt.sprite_sheets && belt.sprite_sheets[species.get_bodytype()])
standing.icon = belt.sprite_sheets[species.name] standing.icon = belt.sprite_sheets[species.get_bodytype()]
else else
standing.icon = 'icons/mob/belt.dmi' standing.icon = 'icons/mob/belt.dmi'
@@ -727,7 +727,7 @@ var/global/list/damage_icon_parts = list()
var/t_icon = INV_SUIT_DEF_ICON var/t_icon = INV_SUIT_DEF_ICON
if(wear_suit.icon_override) if(wear_suit.icon_override)
t_icon = wear_suit.icon_override t_icon = wear_suit.icon_override
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()])
t_icon = wear_suit.sprite_sheets[species.name] t_icon = wear_suit.sprite_sheets[species.name]
else if(wear_suit.item_icons && wear_suit.item_icons[slot_wear_suit_str]) else if(wear_suit.item_icons && wear_suit.item_icons[slot_wear_suit_str])
t_icon = wear_suit.item_icons[slot_wear_suit_str] t_icon = wear_suit.item_icons[slot_wear_suit_str]
@@ -770,8 +770,8 @@ var/global/list/damage_icon_parts = list()
var/image/standing var/image/standing
if(wear_mask.icon_override) if(wear_mask.icon_override)
standing = image("icon" = wear_mask.icon_override, "icon_state" = "[wear_mask.icon_state]") 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]) else if(wear_mask.sprite_sheets && wear_mask.sprite_sheets[species.get_bodytype()])
standing = image("icon" = wear_mask.sprite_sheets[species.name], "icon_state" = "[wear_mask.icon_state]") standing = image("icon" = wear_mask.sprite_sheets[species.get_bodytype()], "icon_state" = "[wear_mask.icon_state]")
else else
standing = image("icon" = 'icons/mob/mask.dmi', "icon_state" = "[wear_mask.icon_state]") standing = image("icon" = 'icons/mob/mask.dmi', "icon_state" = "[wear_mask.icon_state]")
@@ -797,8 +797,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. //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 var/obj/item/weapon/rig/rig = back
overlay_icon = rig.mob_icon overlay_icon = rig.mob_icon
else if(back.sprite_sheets && back.sprite_sheets[species.name]) else if(back.sprite_sheets && back.sprite_sheets[species.get_bodytype()])
overlay_icon = back.sprite_sheets[species.name] overlay_icon = back.sprite_sheets[species.get_bodytype()]
else if(back.item_icons && (slot_back_str in back.item_icons)) else if(back.item_icons && (slot_back_str in back.item_icons))
overlay_icon = back.item_icons[slot_back_str] overlay_icon = back.item_icons[slot_back_str]
else else

View File

@@ -416,13 +416,16 @@
var/mob/living/carbon/human/new_character var/mob/living/carbon/human/new_character
var/use_species_name
var/datum/species/chosen_species var/datum/species/chosen_species
if(client.prefs.species) if(client.prefs.species)
chosen_species = all_species[client.prefs.species] chosen_species = all_species[client.prefs.species]
if(chosen_species) use_species_name = all_species[chosen_species.get_station_variant()] //Only used by pariahs atm.
if(chosen_species && use_species_name)
// Have to recheck admin due to no usr at roundstart. Latejoins are fine though. // Have to recheck admin due to no usr at roundstart. Latejoins are fine though.
if(is_species_whitelisted(chosen_species) || has_admin_rights()) if(is_species_whitelisted(chosen_species) || has_admin_rights())
new_character = new(loc, client.prefs.species) new_character = new(loc, use_species_name)
if(!new_character) if(!new_character)
new_character = new(loc) new_character = new(loc)

View File

@@ -67,7 +67,7 @@ var/global/list/limb_icon_cache = list()
if(owner.f_style) if(owner.f_style)
var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[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 && (species.name in facial_hair_style.species_allowed)) if(facial_hair_style && facial_hair_style.species_allowed && (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") 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) if(facial_hair_style.do_colouration)
facial_s.Blend(rgb(owner.r_facial, owner.g_facial, owner.b_facial), ICON_ADD) facial_s.Blend(rgb(owner.r_facial, owner.g_facial, owner.b_facial), ICON_ADD)
@@ -75,7 +75,7 @@ var/global/list/limb_icon_cache = list()
if(owner.h_style && !(owner.head && (owner.head.flags & BLOCKHEADHAIR))) if(owner.h_style && !(owner.head && (owner.head.flags & BLOCKHEADHAIR)))
var/datum/sprite_accessory/hair_style = hair_styles_list[owner.h_style] var/datum/sprite_accessory/hair_style = hair_styles_list[owner.h_style]
if(hair_style && (species.name in hair_style.species_allowed)) if(hair_style && (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") var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
if(hair_style.do_colouration) if(hair_style.do_colouration)
hair_s.Blend(rgb(owner.r_hair, owner.g_hair, owner.b_hair), ICON_ADD) hair_s.Blend(rgb(owner.r_hair, owner.g_hair, owner.b_hair), ICON_ADD)

View File

@@ -40,7 +40,7 @@
/obj/item/weapon/gun/launcher/spikethrower/special_check(user) /obj/item/weapon/gun/launcher/spikethrower/special_check(user)
if(istype(user,/mob/living/carbon/human)) if(istype(user,/mob/living/carbon/human))
var/mob/living/carbon/human/H = user var/mob/living/carbon/human/H = user
if(H.species && H.species.name != "Vox") if(H.species && H.species.get_bodytype() != "Vox")
user << "<span class='warning'>\The [src] does not respond to you!</span>" user << "<span class='warning'>\The [src] does not respond to you!</span>"
return 0 return 0
return ..() return ..()

View File

@@ -32,12 +32,12 @@
if(allowed_species) if(allowed_species)
for(var/species in allowed_species) for(var/species in allowed_species)
if(target.species.name == species) if(target.species.get_bodytype() == species)
return 1 return 1
if(disallowed_species) if(disallowed_species)
for(var/species in disallowed_species) for(var/species in disallowed_species)
if(target.species.name == species) if(target.species.get_bodytype() == species)
return 0 return 0
return 1 return 1

View File

@@ -132,7 +132,7 @@
else if(href_list["reset"]) else if(href_list["reset"])
species = list() species = list()
if(infectee) if(infectee)
if(!infectee.species || !(infectee.species.name in species)) if(!infectee.species || !(infectee.species.get_bodytype() in species))
infectee = null infectee = null
if("ichance") if("ichance")
var/I = input("Input infection chance", "Infection Chance", infectionchance) as null|num var/I = input("Input infection chance", "Infection Chance", infectionchance) as null|num
@@ -160,16 +160,16 @@
var/list/candidates = list() var/list/candidates = list()
for(var/mob/living/carbon/G in living_mob_list) for(var/mob/living/carbon/G in living_mob_list)
if(G.stat != DEAD && G.species) 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 candidates["[G.name][G.client ? "" : " (no client)"]"] = G
else 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!" if(!candidates.len) usr << "No possible candidates found!"
var/I = input("Choose initial infectee", "Infectee", infectee) as null|anything in candidates var/I = input("Choose initial infectee", "Infectee", infectee) as null|anything in candidates
if(!I || !candidates[I]) return if(!I || !candidates[I]) return
infectee = candidates[I] infectee = candidates[I]
species |= infectee.species.name species |= infectee.species.get_bodytype()
if("go") if("go")
if(!antigens.len) if(!antigens.len)
var/a = alert("This disease has no antigens; it will be impossible to permanently immunise anyone without them.\ var/a = alert("This disease has no antigens; it will be impossible to permanently immunise anyone without them.\

View File

@@ -87,9 +87,9 @@ proc/airborne_can_reach(turf/source, turf/target)
if(!disease.affected_species.len) if(!disease.affected_species.len)
return return
if (!(M.species.name in disease.affected_species)) if (!(M.species.get_bodytype() in disease.affected_species))
if (forced) if (forced)
disease.affected_species[1] = M.species.name disease.affected_species[1] = M.species.get_bodytype()
else else
return //not compatible with this species return //not compatible with this species

View File

@@ -141,6 +141,7 @@ var/world_topic_spam_protect_time = world.timeofday
// This is dumb, but spacestation13.com's banners break if player count isn't the 8th field of the reply, so... this has to go here. // This is dumb, but spacestation13.com's banners break if player count isn't the 8th field of the reply, so... this has to go here.
s["players"] = 0 s["players"] = 0
s["stationtime"] = worldtime2text() s["stationtime"] = worldtime2text()
s["roundduration"] = round_duration()
if(input["status"] == "2") if(input["status"] == "2")
var/list/players = list() var/list/players = list()

View File

@@ -0,0 +1,5 @@
author: Zuhayr
delete-after: True
changes:
- rscadd: "Pariahs are now a subspecies of Vox with less atmos/cold protection, a useless brain, and lower health."
- rscadd: "Leap now only gives a passive grab and has a shorter range. It also stuns Pariahs longer than it does their target."