From c2cdf9d237b8614f1c3b1b7c8410c15e464e4c64 Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Fri, 21 Aug 2015 06:28:44 +0100 Subject: [PATCH 1/6] add round duration to status reply --- code/world.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/world.dm b/code/world.dm index 34b9107699..fdb9026760 100644 --- a/code/world.dm +++ b/code/world.dm @@ -116,6 +116,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. s["players"] = 0 s["stationtime"] = worldtime2text() + s["roundduration"] = round_duration() if(input["status"] == "2") var/list/players = list() From 742dde5c25af0365765df4f75153aad462a74065 Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Fri, 21 Aug 2015 14:01:29 +0200 Subject: [PATCH 2/6] Gives the medical equipment access a name. Requires for guest passes to list the entry. Fixes #10780. --- code/game/jobs/access.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index 7a9fc51329..4474dcd2fb 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -333,6 +333,8 @@ return "Gateway" if(access_sec_doors) return "Security" + if(access_medical_equip) + return "Medical Equipment" /proc/get_centcom_access_desc(A) switch(A) From 870120578316be1a15fa5b53480b6c852260d17b Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 15 Aug 2015 18:51:12 -0700 Subject: [PATCH 3/6] Pariah nerfs. Conflicts: code/modules/mob/living/carbon/human/species/outsider/vox.dm code/modules/organs/organ_alien.dm --- code/game/objects/structures/mirror.dm | 1 - .../mob/living/carbon/brain/brain_item.dm | 11 +++- .../mob/living/carbon/human/human_powers.dm | 16 ++--- .../carbon/human/species/outsider/vox.dm | 58 +++++++++++++++++-- .../living/carbon/human/species/species.dm | 3 + code/modules/mob/new_player/new_player.dm | 7 ++- 6 files changed, 78 insertions(+), 18 deletions(-) diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index 8141dcf5a3..2f4e457c80 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -81,7 +81,6 @@ var/mob/living/carbon/human/vox/vox = new(get_turf(src),"Vox") vox.gender = user.gender raiders.equip(vox) - new /obj/item/organ/stack/vox(vox) if(user.mind) user.mind.transfer_to(vox) spawn(1) diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm index 31c85d770b..9a9ea3dc9a 100644 --- a/code/modules/mob/living/carbon/brain/brain_item.dm +++ b/code/modules/mob/living/carbon/brain/brain_item.dm @@ -15,6 +15,15 @@ attack_verb = list("attacked", "slapped", "whacked") 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 name = "thinkpan" desc = "It looks kind of like an enormous wad of purple bubblegum." @@ -93,4 +102,4 @@ desc = "A tightly furled roll of paper, covered with indecipherable runes." robotic = 2 icon = 'icons/obj/wizard.dmi' - icon_state = "scroll" \ No newline at end of file + icon_state = "scroll" diff --git a/code/modules/mob/living/carbon/human/human_powers.dm b/code/modules/mob/living/carbon/human/human_powers.dm index 27a8f93753..50f46b4bb4 100644 --- a/code/modules/mob/living/carbon/human/human_powers.dm +++ b/code/modules/mob/living/carbon/human/human_powers.dm @@ -71,7 +71,7 @@ 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) return @@ -83,8 +83,8 @@ last_special = world.time + 75 status_flags |= LEAPING - src.visible_message("\The [src] leaps at [T]!") - src.throw_at(get_step(get_turf(T),get_turf(src)), 5, 1, src) + src.visible_message("\The [src] leaps at [T]!") + src.throw_at(get_step(get_turf(T),get_turf(src)), 4, 1, src) playsound(src.loc, 'sound/voice/shriek1.ogg', 50, 1) sleep(5) @@ -92,13 +92,13 @@ if(status_flags & LEAPING) status_flags &= ~LEAPING if(!src.Adjacent(T)) - src << "\red You miss!" + src << "You miss!" return - T.Weaken(5) + T.Weaken(3) - //Only official cool kids get the grab and no self-prone. - if(!(src.mind && src.mind.special_role)) + // Pariahs are not good at leaping. This is snowflakey, pls fix. + if(species.name == "Vox Pariah") src.Weaken(5) return @@ -118,7 +118,7 @@ else r_hand = G - G.state = GRAB_AGGRESSIVE + G.state = GRAB_PASSIVE G.icon_state = "grabbed1" G.synch() 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 926781abe1..70fc9fcf3c 100644 --- a/code/modules/mob/living/carbon/human/species/outsider/vox.dm +++ b/code/modules/mob/living/carbon/human/species/outsider/vox.dm @@ -6,7 +6,7 @@ default_language = "Vox-pidgin" language = "Galactic Common" 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 \ 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 \ @@ -47,7 +47,8 @@ "liver" = /obj/item/organ/liver, "kidneys" = /obj/item/organ/kidneys, "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) @@ -67,7 +68,52 @@ H.internals.icon_state = "internal1" -/datum/species/vox/can_shred(var/mob/living/carbon/human/H, var/ignore_intent) - if(!H.mind || !H.mind.special_role) // Pariah check. - return 0 - return ..() \ No newline at end of file +/datum/species/vox/get_station_variant() + return "Vox Pariah" + +// 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(src,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 << "A terrible stench emanates from \the [H]." \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 3ec44eca6d..b562d4d95c 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -146,6 +146,9 @@ for(var/u_type in unarmed_types) unarmed_attacks += new u_type() +/datum/species/proc/get_station_variant() + 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/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index f69af80601..38a6a143b4 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -416,13 +416,16 @@ var/mob/living/carbon/human/new_character + var/use_species_name var/datum/species/chosen_species if(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. 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) new_character = new(loc) From bb82f80885e53254989c170d9459ae382b073fa2 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 15 Aug 2015 19:29:29 -0700 Subject: [PATCH 4/6] Added get_bodytype() species proc as groundwork for subspecies. Conflicts: code/modules/mob/living/carbon/human/update_icons.dm code/modules/organs/organ_icon.dm --- code/game/antagonist/outsider/raider.dm | 2 +- code/game/objects/items/paintkit.dm | 4 +- code/game/objects/structures/mirror.dm | 4 +- code/modules/admin/admin_verbs.dm | 2 +- code/modules/clothing/clothing.dm | 8 ++-- code/modules/clothing/spacesuits/rig/rig.dm | 4 +- .../mob/living/carbon/human/appearance.dm | 4 +- .../carbon/human/species/outsider/vox.dm | 7 ++- .../living/carbon/human/species/species.dm | 3 ++ .../mob/living/carbon/human/update_icons.dm | 46 +++++++++---------- code/modules/organs/organ_icon.dm | 4 +- code/modules/projectiles/guns/alien.dm | 2 +- code/modules/surgery/surgery.dm | 4 +- code/modules/virus2/admin.dm | 8 ++-- code/modules/virus2/helpers.dm | 4 +- 15 files changed, 56 insertions(+), 50 deletions(-) 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 From eb0f48d412b24b5883207b3684f8336a929de23b Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 15 Aug 2015 20:26:03 -0700 Subject: [PATCH 5/6] Xenos use bodytype for species_restricted, Vox can wear softsuits. Conflicts: code/modules/clothing/clothing.dm --- code/modules/clothing/clothing.dm | 1 + .../living/carbon/human/species/xenomorphs/alien_species.dm | 3 +++ 2 files changed, 4 insertions(+) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 8ca6acc718..3d49c9f652 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -75,6 +75,7 @@ species_restricted = list("exclude","Unathi","Tajara","Diona","Vox", "Xenomorph", "Xenomorph Drone", "Xenomorph Hunter", "Xenomorph Sentinel", "Xenomorph Queen") if("Human") species_restricted = list("exclude","Skrell","Unathi","Tajara","Diona","Vox", "Xenomorph", "Xenomorph Drone", "Xenomorph Hunter", "Xenomorph Sentinel", "Xenomorph Queen") + else species_restricted = list(target_species) diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm index 52410c5fc6..f67e1030e2 100644 --- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm +++ b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm @@ -61,6 +61,9 @@ var/weeds_heal_rate = 1 // Health 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() return "alien [caste_name] ([alien_number])" From f752813132dbdf94e29f579819b8fcad6c07c57c Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 22 Aug 2015 02:57:13 +0930 Subject: [PATCH 6/6] Changelog. --- html/changelogs/zuhayr-pariahs.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/zuhayr-pariahs.yml diff --git a/html/changelogs/zuhayr-pariahs.yml b/html/changelogs/zuhayr-pariahs.yml new file mode 100644 index 0000000000..b35a440e85 --- /dev/null +++ b/html/changelogs/zuhayr-pariahs.yml @@ -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." \ No newline at end of file