From 5e7f9edc8126e645022eda5702d673ef05d8bb59 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Sun, 24 Jun 2012 01:05:16 +0100 Subject: [PATCH 01/10] Fixes pAI's not hearing silicon speak (since they can use it anyway). --- code/defines/mob/living/silicon/pai.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/defines/mob/living/silicon/pai.dm b/code/defines/mob/living/silicon/pai.dm index 6837ba99b77..ddc38fb6298 100644 --- a/code/defines/mob/living/silicon/pai.dm +++ b/code/defines/mob/living/silicon/pai.dm @@ -3,7 +3,7 @@ icon = 'mob.dmi'// icon_state = "shadow" - robot_talk_understand = 0 + robot_talk_understand = 1 //pAI's can now use binary var/network = "SS13" var/obj/machinery/camera/current = null From 3882ac24e7d55b51a13d5c0b11d161fc5867aa9e Mon Sep 17 00:00:00 2001 From: Erthilo Date: Sun, 24 Jun 2012 01:06:11 +0100 Subject: [PATCH 02/10] Fixes Syndicate's not spawning with explosive implants properly. --- code/game/gamemodes/nuclear/nuclear.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 758ff767b76..7cebf6ff6b9 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -237,7 +237,7 @@ synd_mob.equip_if_possible(new /obj/item/weapon/reagent_containers/pill/cyanide(synd_mob), synd_mob.slot_in_backpack) synd_mob.equip_if_possible(new /obj/item/weapon/gun/projectile/automatic/c20r(synd_mob), synd_mob.slot_belt) synd_mob.equip_if_possible(new /obj/item/weapon/storage/box/engineer(synd_mob.back), synd_mob.slot_in_backpack) - var/datum/organ/external/O = pick(synd_mob.organs) + var/datum/organ/external/O = synd_mob.organs[pick(synd_mob.organs)] var/obj/item/weapon/implant/dexplosive/E = new/obj/item/weapon/implant/dexplosive(O) O.implant += E E.imp_in = synd_mob From f137b4a880658a2e799395842b2cf51993bc600d Mon Sep 17 00:00:00 2001 From: Erthilo Date: Sun, 24 Jun 2012 01:10:32 +0100 Subject: [PATCH 03/10] Should fix some weird issues with electropacks and screwdrivers. --- code/game/objects/radio/electropack.dm | 53 +++++++++++++------------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/code/game/objects/radio/electropack.dm b/code/game/objects/radio/electropack.dm index dd5462fbff5..d19ff24fde2 100644 --- a/code/game/objects/radio/electropack.dm +++ b/code/game/objects/radio/electropack.dm @@ -36,8 +36,6 @@ return /obj/item/device/radio/electropack/attackby(obj/item/weapon/W as obj, mob/user as mob) - ..() - if (istype(W, /obj/item/weapon/screwdriver)) src.e_pads = !( src.e_pads ) if (src.e_pads) @@ -46,32 +44,33 @@ user.show_message("\blue The electric pads have been reinserted!") src.add_fingerprint(user) return + else if (istype(W, /obj/item/clothing/head/helmet)) + var/obj/item/assembly/shock_kit/A = new /obj/item/assembly/shock_kit( user ) + A.icon = 'assemblies.dmi' + W.loc = A + A.part1 = W + W.layer = initial(W.layer) + if (user.client) + user.client.screen -= W + if (user.r_hand == W) + user.u_equip(W) + user.r_hand = A + else + user.u_equip(W) + user.l_hand = A + W.master = A + src.master = A + src.layer = initial(src.layer) + user.u_equip(src) + if (user.client) + user.client.screen -= src + src.loc = A + A.part2 = src + A.layer = 20 + src.add_fingerprint(user) + A.add_fingerprint(user) else - if (istype(W, /obj/item/clothing/head/helmet)) - var/obj/item/assembly/shock_kit/A = new /obj/item/assembly/shock_kit( user ) - A.icon = 'assemblies.dmi' - W.loc = A - A.part1 = W - W.layer = initial(W.layer) - if (user.client) - user.client.screen -= W - if (user.r_hand == W) - user.u_equip(W) - user.r_hand = A - else - user.u_equip(W) - user.l_hand = A - W.master = A - src.master = A - src.layer = initial(src.layer) - user.u_equip(src) - if (user.client) - user.client.screen -= src - src.loc = A - A.part2 = src - A.layer = 20 - src.add_fingerprint(user) - A.add_fingerprint(user) + ..() return /obj/item/device/radio/electropack/Topic(href, href_list) From a5adf9377f63a3686d36e782e8821b01f2238734 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Sun, 24 Jun 2012 01:11:31 +0100 Subject: [PATCH 04/10] Fixes changing hairstyles if you pick the same species. --- code/modules/mob/new_player/preferences.dm | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/new_player/preferences.dm b/code/modules/mob/new_player/preferences.dm index 9fd3422db22..61cae03a498 100644 --- a/code/modules/mob/new_player/preferences.dm +++ b/code/modules/mob/new_player/preferences.dm @@ -759,6 +759,7 @@ datum/preferences switch(link_tags["species"]) if("input") var/list/new_species = list("Human") + var/prev_species = species if(config.usealienwhitelist) //If we're using the whitelist, make sure to check it! if(is_alien_whitelisted(user, "Soghun")) //Check for Soghun and admins new_species += "Soghun" @@ -771,16 +772,17 @@ datum/preferences new_species += "Soghun" new_species += "Skrell" species = input("Please select a species", "Character Generation", null) in new_species - h_style = "Bald" //Try not to carry face/head hair over. - f_style = "Shaved" - s_tone = 0 //Don't carry over skintone either. - hair_style = new/datum/sprite_accessory/hair/bald - facial_hair_style = new/datum/sprite_accessory/facial_hair/shaved - if(species == "Skrell") - if(gender == FEMALE) - hair_style = new/datum/sprite_accessory/hair/alien/skrell/female/tentacle - else - hair_style = new/datum/sprite_accessory/hair/alien/skrell/male/tentacle + if(prev_species != species) + h_style = "Bald" //Try not to carry face/head hair over. + f_style = "Shaved" + s_tone = 0 //Don't carry over skintone either. + hair_style = new/datum/sprite_accessory/hair/bald + facial_hair_style = new/datum/sprite_accessory/facial_hair/shaved + if(species == "Skrell") + if(gender == FEMALE) + hair_style = new/datum/sprite_accessory/hair/alien/skrell/female/tentacle + else + hair_style = new/datum/sprite_accessory/hair/alien/skrell/male/tentacle if(link_tags["hair"]) switch(link_tags["hair"]) From 85f75e639cf095d00f6fce5e4e565985fcf09c11 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Sun, 24 Jun 2012 01:12:16 +0100 Subject: [PATCH 05/10] Fixes morph and appearance editing not updating sprites. --- code/game/response_team.dm | 1 + code/modules/admin/admin_verbs.dm | 1 + code/modules/mob/living/carbon/human/human.dm | 3 ++- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/code/game/response_team.dm b/code/game/response_team.dm index 22809ece5af..46612817ea6 100644 --- a/code/game/response_team.dm +++ b/code/game/response_team.dm @@ -171,6 +171,7 @@ proc/trigger_armed_response_team(var/force = 0) else M.gender = FEMALE M.rebuild_appearance() + M.update_body() M.real_name = commando_name M.name = commando_name diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index c5c899958c1..292fffc6672 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -1013,6 +1013,7 @@ else M.gender = FEMALE M.rebuild_appearance() + M.update_body() M.check_dna(M) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 31f7e391cfa..393f6fa0b94 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -2719,10 +2719,11 @@ It can still be worn/put on as normal. else gender = FEMALE rebuild_appearance() + update_body() check_dna() for(var/mob/M in view()) - M.show_message("[src.name] just morphed!") + M.show_message("\blue \The [src.name] morphs and changes [get_gender_form("its")] appearance!") /mob/living/carbon/human/proc/remotesay() set name = "Project mind" From 527110e8b0433cd9a5537a538a55417a3adb0bf9 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Sun, 24 Jun 2012 01:23:29 +0100 Subject: [PATCH 06/10] Fixes being able to use PDA's that are on other people. --- code/game/objects/devices/PDA/PDA.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/objects/devices/PDA/PDA.dm b/code/game/objects/devices/PDA/PDA.dm index 6e6bce5da89..65827342fbc 100755 --- a/code/game/objects/devices/PDA/PDA.dm +++ b/code/game/objects/devices/PDA/PDA.dm @@ -416,7 +416,7 @@ //if ((src in U.contents) || ( istype(loc, /turf) && in_range(src, U) ) ) if(can_use()) //Why reinvent the wheel? There's a proc that does exactly that. - if ( !(U.stat || U.restrained()) ) + if ( !(U.stat || U.restrained()) && (src in U.contents)) add_fingerprint(U) U.machine = src @@ -587,7 +587,7 @@ // Give every ghost the ability to see all messages for (var/mob/dead/observer/G in world) G.show_message("PDA message from [src.owner] to [P:owner]: [t]") - + if (prob(15)) //Give the AI a chance of intercepting the message var/who = src.owner if(prob(50)) @@ -681,7 +681,7 @@ if("Toggle Door") if(!isnull(cartridge) && cartridge.access_remote_door) - for(var/obj/machinery/door/poddoor/M in machines) + for(var/obj/machinery/door/poddoor/M in world) //world is probably a bad idea, but at least it works? if(M.id == cartridge.remote_door_id) if(M.density) spawn(0) From f88f0977775172666be9f61a22a9b7a1211fdb90 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Sun, 24 Jun 2012 01:23:43 +0100 Subject: [PATCH 07/10] Fixes ghost with ghost ears off hearing whispers. --- code/modules/mob/living/carbon/human/whisper.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/whisper.dm b/code/modules/mob/living/carbon/human/whisper.dm index c8c291131a2..3fe605ceec2 100644 --- a/code/modules/mob/living/carbon/human/whisper.dm +++ b/code/modules/mob/living/carbon/human/whisper.dm @@ -165,5 +165,5 @@ for (var/mob/M in world) if (istype(M, /mob/new_player)) continue - if (M.stat > 1 && !(M in heard_a)) + if (M.stat > 1 && !(M in heard_a) && M.client.ghost_ears) M.show_message(rendered, 2) From 163c269cc37c7cc72661e246e88a43baceb39288 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Sun, 24 Jun 2012 01:52:44 +0100 Subject: [PATCH 08/10] Fixes disarm not working due to armour. --- code/modules/mob/living/damage_procs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 4d1670873bf..dd38ee299fb 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -47,7 +47,7 @@ if(STUN) Stun((effect - (min(effect*getarmor(null, "laser"), effect*(0.75 + (blocked*0.05)))))) if(WEAKEN) - Weaken((effect - (min(effect*getarmor(null, "laser"), effect*(0.75 + (blocked*0.05)))))) + Weaken(effect/(blocked+1)) if(PARALYZE) Paralyse(effect/(blocked+1)) if(IRRADIATE) From b3285fd7169e242fdf55a811d0628b4476a269e0 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Sun, 24 Jun 2012 01:54:48 +0100 Subject: [PATCH 09/10] Updated use of gender proc. --- code/modules/mob/living/carbon/human/human.dm | 59 +++++++++++-------- 1 file changed, 33 insertions(+), 26 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index d0df98659d1..b19dc70545a 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -57,6 +57,7 @@ var/mutantrace = null + var/bloodloss = 0 var/datum/reagents/vessel var/pale = 0 var/examine_text = "" @@ -284,7 +285,7 @@ for(var/organ in list("l_leg","l_foot","r_leg","r_foot")) var/datum/organ/external/o = organs["[organ]"] - if(o.status & BROKEN) + if(o.broken) tally += 6 if(wear_suit) @@ -777,7 +778,7 @@ M.show_message(text("\red [] has been hit by []", src, O), 1) if (health > 0) var/datum/organ/external/affecting = get_organ(pick("chest", "chest", "chest", "head")) - if(!affecting || affecting.status & DESTROYED) return + if(!affecting || affecting.destroyed) return if (istype(O, /obj/effect/immovablerod)) affecting.take_damage(101, 0) else @@ -947,29 +948,29 @@ // Gloves var/datum/organ/external/lo = organs["l_hand"] var/datum/organ/external/ro = organs["r_hand"] - if (!(lo.status & DESTROYED && ro.status & DESTROYED)) + if (!lo.destroyed || !ro.destroyed) if (gloves) var/t1 = gloves.item_state if (!t1) t1 = gloves.icon_state var/icon/gloves_icon = new /icon("icon" = 'hands.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2"))) - if(lo.status & DESTROYED) + if(lo.destroyed) gloves_icon.Blend(new /icon('limb_mask.dmi', "right_[lying?"l":"s"]"), ICON_MULTIPLY) - if(ro.status & DESTROYED) + if(ro.destroyed) gloves_icon.Blend(new /icon('limb_mask.dmi', "left_[lying?"l":"s"]"), ICON_MULTIPLY) clothing_overlays += image(gloves_icon, "layer" = GLOVES_LAYER) if (gloves.blood_DNA) var/icon/stain_icon = icon('blood.dmi', "bloodyhands[!lying ? "" : "2"]") - if(lo.status & DESTROYED) + if(lo.destroyed) stain_icon.Blend(new /icon('limb_mask.dmi', "right_[lying?"l":"s"]"), ICON_MULTIPLY) - else if(ro.status & DESTROYED) + else if(ro.destroyed) stain_icon.Blend(new /icon('limb_mask.dmi', "left_[lying?"l":"s"]"), ICON_MULTIPLY) clothing_overlays += image("icon" = stain_icon, "layer" = B_GLOVES_LAYER) else if (blood_DNA) var/icon/stain_icon = icon('blood.dmi', "bloodyhands[!lying ? "" : "2"]") - if(lo.status & DESTROYED) + if(lo.destroyed) stain_icon.Blend(new /icon('limb_mask.dmi', "right_[lying?"l":"s"]"), ICON_MULTIPLY) - else if(ro.status & DESTROYED) + else if(ro.destroyed) stain_icon.Blend(new /icon('limb_mask.dmi', "left_[lying?"l":"s"]"), ICON_MULTIPLY) clothing_overlays += image("icon" = stain_icon, "layer" = B_GLOVES_LAYER) @@ -989,19 +990,19 @@ // Shoes lo = organs["l_foot"] ro = organs["r_foot"] - if (!(lo.status & DESTROYED && ro.status & DESTROYED) && shoes) + if ((!lo.destroyed || !ro.destroyed) && shoes) var/t1 = shoes.icon_state var/icon/shoes_icon = new /icon("icon" = 'feet.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2"))) - if(lo.status & DESTROYED && !lying) + if(lo.destroyed && !lying) shoes_icon.Blend(new /icon('limb_mask.dmi', "right[lying?"_l":""]"), ICON_MULTIPLY) - else if(ro.status & DESTROYED && !lying) + else if(ro.destroyed && !lying) shoes_icon.Blend(new /icon('limb_mask.dmi', "left[lying?"_l":""]"), ICON_MULTIPLY) clothing_overlays += image(shoes_icon, "layer" = SHOES_LAYER) if (shoes.blood_DNA) var/icon/stain_icon = icon('blood.dmi', "shoeblood[!lying ? "" : "2"]") - if(lo.status & DESTROYED) + if(lo.destroyed) stain_icon.Blend(new /icon('limb_mask.dmi', "right_[lying?"l":"s"]"), ICON_MULTIPLY) - else if(ro.status & DESTROYED) + else if(ro.destroyed) stain_icon.Blend(new /icon('limb_mask.dmi', "left_[lying?"l":"s"]"), ICON_MULTIPLY) clothing_overlays += image("icon" = stain_icon, "layer" = B_SHOES_LAYER) // Radio @@ -1388,7 +1389,7 @@ lying_icon.Blend(new /icon('human.dmi', "chest_[g]_l"), ICON_OVERLAY) var/datum/organ/external/head = organs["head"] - if(!(head.status & DESTROYED)) + if(!head.destroyed) stand_icon.Blend(new /icon('human.dmi', "head_[g]_s"), ICON_OVERLAY) lying_icon.Blend(new /icon('human.dmi', "head_[g]_l"), ICON_OVERLAY) @@ -1397,12 +1398,12 @@ if(!istype(part, /datum/organ/external/groin) \ && !istype(part, /datum/organ/external/chest) \ && !istype(part, /datum/organ/external/head) \ - && !(part.status & DESTROYED)) + && !part.destroyed) var/icon/temp = new /icon('human.dmi', "[part.icon_name]_s") - if(part.status & ROBOT) temp.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0)) + if(part.robot) temp.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0)) stand_icon.Blend(temp, ICON_OVERLAY) temp = new /icon('human.dmi', "[part.icon_name]_l") - if(part.status & ROBOT) temp.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0)) + if(part.robot) temp.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0)) lying_icon.Blend(temp , ICON_OVERLAY) stand_icon.Blend(new /icon('human.dmi', "groin_[g]_s"), ICON_OVERLAY) @@ -1442,7 +1443,7 @@ if(!istype(part, /datum/organ/external/groin) \ && !istype(part, /datum/organ/external/chest) \ && !istype(part, /datum/organ/external/head) \ - && (part.status & DESTROYED)) + && part.destroyed) husk_s.Blend(new /icon('dam_mask.dmi', "[part.icon_name]"), ICON_SUBTRACT) husk_l.Blend(new /icon('dam_mask.dmi', "[part.icon_name]2"), ICON_SUBTRACT) @@ -1472,7 +1473,7 @@ if(organs) var/datum/organ/external/head = organs["head"] if(head) - if(head.status & DESTROYED) + if(head.destroyed) del(face_standing) del(face_lying) return @@ -2597,7 +2598,7 @@ It can still be worn/put on as normal. var/amount = 0.0 for(var/name in organs) var/datum/organ/external/O = organs[name] - if(!(O.status & ROBOT)) amount+= O.brute_dam + if(!O.robot) amount+= O.brute_dam return amount /mob/living/carbon/human/adjustBruteLoss(var/amount, var/used_weapon = null) @@ -2610,7 +2611,7 @@ It can still be worn/put on as normal. var/amount = 0.0 for(var/name in organs) var/datum/organ/external/O = organs[name] - if(!(O.status & ROBOT)) amount+= O.burn_dam + if(!O.robot) amount+= O.burn_dam return amount /mob/living/carbon/human/adjustFireLoss(var/amount,var/used_weapon = null) @@ -2722,7 +2723,7 @@ It can still be worn/put on as normal. check_dna() for(var/mob/M in view()) - M.show_message("\blue \The [src.name] morphs and changes [get_gender_form("its")] appearance!") + user.visible_message("\blue \The [src] morphs and changes [user.get_gender_form() == MALE ? "his" : user.get_gender_form() == FEMALE ? "her" : "their"] appearance!", "\blue You change your appearance!", "\red Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!") /mob/living/carbon/human/proc/remotesay() set name = "Project mind" @@ -2783,6 +2784,12 @@ It can still be worn/put on as normal. src.tkdisable = 0 /mob/living/carbon/human/get_visible_gender() - if(wear_suit && wear_suit.flags_inv & HIDEJUMPSUIT && ((head && head.flags_inv & HIDEMASK) || wear_mask)) - return NEUTER - return gender + var/skip_gender = (wear_suit && wear_suit.flags_inv & HIDEJUMPSUIT && ((head && head.flags_inv & HIDEMASK) || wear_mask)) + + if( !skip_gender ) //big suits/masks make it hard to tell their gender + switch(gender) + if(MALE) + return list("It" = "He", "its" = "his", "it" = "he", "has" = "has", "is" = "is", "itself" = "himself") + if(FEMALE) + return list("It" = "She", "its" = "her", "it" = "she", "has" = "has", "is" = "is", "itself" = "herself") + return list("It" = "They", "its" = "their", "it" = "them", "has" = "have", "is" = "are", "itself" = "themselves") From ce6cd204f23311226e47812899ca2c4f1bcdfa12 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Sun, 24 Jun 2012 01:57:12 +0100 Subject: [PATCH 10/10] Accidentaly reverted a file. --- code/modules/mob/living/carbon/human/human.dm | 57 ++++++++----------- 1 file changed, 25 insertions(+), 32 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index b19dc70545a..94ba2c3ebbb 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -57,7 +57,6 @@ var/mutantrace = null - var/bloodloss = 0 var/datum/reagents/vessel var/pale = 0 var/examine_text = "" @@ -285,7 +284,7 @@ for(var/organ in list("l_leg","l_foot","r_leg","r_foot")) var/datum/organ/external/o = organs["[organ]"] - if(o.broken) + if(o.status & BROKEN) tally += 6 if(wear_suit) @@ -778,7 +777,7 @@ M.show_message(text("\red [] has been hit by []", src, O), 1) if (health > 0) var/datum/organ/external/affecting = get_organ(pick("chest", "chest", "chest", "head")) - if(!affecting || affecting.destroyed) return + if(!affecting || affecting.status & DESTROYED) return if (istype(O, /obj/effect/immovablerod)) affecting.take_damage(101, 0) else @@ -948,29 +947,29 @@ // Gloves var/datum/organ/external/lo = organs["l_hand"] var/datum/organ/external/ro = organs["r_hand"] - if (!lo.destroyed || !ro.destroyed) + if (!(lo.status & DESTROYED && ro.status & DESTROYED)) if (gloves) var/t1 = gloves.item_state if (!t1) t1 = gloves.icon_state var/icon/gloves_icon = new /icon("icon" = 'hands.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2"))) - if(lo.destroyed) + if(lo.status & DESTROYED) gloves_icon.Blend(new /icon('limb_mask.dmi', "right_[lying?"l":"s"]"), ICON_MULTIPLY) - if(ro.destroyed) + if(ro.status & DESTROYED) gloves_icon.Blend(new /icon('limb_mask.dmi', "left_[lying?"l":"s"]"), ICON_MULTIPLY) clothing_overlays += image(gloves_icon, "layer" = GLOVES_LAYER) if (gloves.blood_DNA) var/icon/stain_icon = icon('blood.dmi', "bloodyhands[!lying ? "" : "2"]") - if(lo.destroyed) + if(lo.status & DESTROYED) stain_icon.Blend(new /icon('limb_mask.dmi', "right_[lying?"l":"s"]"), ICON_MULTIPLY) - else if(ro.destroyed) + else if(ro.status & DESTROYED) stain_icon.Blend(new /icon('limb_mask.dmi', "left_[lying?"l":"s"]"), ICON_MULTIPLY) clothing_overlays += image("icon" = stain_icon, "layer" = B_GLOVES_LAYER) else if (blood_DNA) var/icon/stain_icon = icon('blood.dmi', "bloodyhands[!lying ? "" : "2"]") - if(lo.destroyed) + if(lo.status & DESTROYED) stain_icon.Blend(new /icon('limb_mask.dmi', "right_[lying?"l":"s"]"), ICON_MULTIPLY) - else if(ro.destroyed) + else if(ro.status & DESTROYED) stain_icon.Blend(new /icon('limb_mask.dmi', "left_[lying?"l":"s"]"), ICON_MULTIPLY) clothing_overlays += image("icon" = stain_icon, "layer" = B_GLOVES_LAYER) @@ -990,19 +989,19 @@ // Shoes lo = organs["l_foot"] ro = organs["r_foot"] - if ((!lo.destroyed || !ro.destroyed) && shoes) + if (!(lo.status & DESTROYED && ro.status & DESTROYED) && shoes) var/t1 = shoes.icon_state var/icon/shoes_icon = new /icon("icon" = 'feet.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2"))) - if(lo.destroyed && !lying) + if(lo.status & DESTROYED && !lying) shoes_icon.Blend(new /icon('limb_mask.dmi', "right[lying?"_l":""]"), ICON_MULTIPLY) - else if(ro.destroyed && !lying) + else if(ro.status & DESTROYED && !lying) shoes_icon.Blend(new /icon('limb_mask.dmi', "left[lying?"_l":""]"), ICON_MULTIPLY) clothing_overlays += image(shoes_icon, "layer" = SHOES_LAYER) if (shoes.blood_DNA) var/icon/stain_icon = icon('blood.dmi', "shoeblood[!lying ? "" : "2"]") - if(lo.destroyed) + if(lo.status & DESTROYED) stain_icon.Blend(new /icon('limb_mask.dmi', "right_[lying?"l":"s"]"), ICON_MULTIPLY) - else if(ro.destroyed) + else if(ro.status & DESTROYED) stain_icon.Blend(new /icon('limb_mask.dmi', "left_[lying?"l":"s"]"), ICON_MULTIPLY) clothing_overlays += image("icon" = stain_icon, "layer" = B_SHOES_LAYER) // Radio @@ -1389,7 +1388,7 @@ lying_icon.Blend(new /icon('human.dmi', "chest_[g]_l"), ICON_OVERLAY) var/datum/organ/external/head = organs["head"] - if(!head.destroyed) + if(!(head.status & DESTROYED)) stand_icon.Blend(new /icon('human.dmi', "head_[g]_s"), ICON_OVERLAY) lying_icon.Blend(new /icon('human.dmi', "head_[g]_l"), ICON_OVERLAY) @@ -1398,12 +1397,12 @@ if(!istype(part, /datum/organ/external/groin) \ && !istype(part, /datum/organ/external/chest) \ && !istype(part, /datum/organ/external/head) \ - && !part.destroyed) + && !(part.status & DESTROYED)) var/icon/temp = new /icon('human.dmi', "[part.icon_name]_s") - if(part.robot) temp.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0)) + if(part.status & ROBOT) temp.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0)) stand_icon.Blend(temp, ICON_OVERLAY) temp = new /icon('human.dmi', "[part.icon_name]_l") - if(part.robot) temp.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0)) + if(part.status & ROBOT) temp.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0)) lying_icon.Blend(temp , ICON_OVERLAY) stand_icon.Blend(new /icon('human.dmi', "groin_[g]_s"), ICON_OVERLAY) @@ -1443,7 +1442,7 @@ if(!istype(part, /datum/organ/external/groin) \ && !istype(part, /datum/organ/external/chest) \ && !istype(part, /datum/organ/external/head) \ - && part.destroyed) + && (part.status & DESTROYED)) husk_s.Blend(new /icon('dam_mask.dmi', "[part.icon_name]"), ICON_SUBTRACT) husk_l.Blend(new /icon('dam_mask.dmi', "[part.icon_name]2"), ICON_SUBTRACT) @@ -1473,7 +1472,7 @@ if(organs) var/datum/organ/external/head = organs["head"] if(head) - if(head.destroyed) + if(head.status & DESTROYED) del(face_standing) del(face_lying) return @@ -2598,7 +2597,7 @@ It can still be worn/put on as normal. var/amount = 0.0 for(var/name in organs) var/datum/organ/external/O = organs[name] - if(!O.robot) amount+= O.brute_dam + if(!(O.status & ROBOT)) amount+= O.brute_dam return amount /mob/living/carbon/human/adjustBruteLoss(var/amount, var/used_weapon = null) @@ -2611,7 +2610,7 @@ It can still be worn/put on as normal. var/amount = 0.0 for(var/name in organs) var/datum/organ/external/O = organs[name] - if(!O.robot) amount+= O.burn_dam + if(!(O.status & ROBOT)) amount+= O.burn_dam return amount /mob/living/carbon/human/adjustFireLoss(var/amount,var/used_weapon = null) @@ -2784,12 +2783,6 @@ It can still be worn/put on as normal. src.tkdisable = 0 /mob/living/carbon/human/get_visible_gender() - var/skip_gender = (wear_suit && wear_suit.flags_inv & HIDEJUMPSUIT && ((head && head.flags_inv & HIDEMASK) || wear_mask)) - - if( !skip_gender ) //big suits/masks make it hard to tell their gender - switch(gender) - if(MALE) - return list("It" = "He", "its" = "his", "it" = "he", "has" = "has", "is" = "is", "itself" = "himself") - if(FEMALE) - return list("It" = "She", "its" = "her", "it" = "she", "has" = "has", "is" = "is", "itself" = "herself") - return list("It" = "They", "its" = "their", "it" = "them", "has" = "have", "is" = "are", "itself" = "themselves") + if(wear_suit && wear_suit.flags_inv & HIDEJUMPSUIT && ((head && head.flags_inv & HIDEMASK) || wear_mask)) + return NEUTER + return gender