From a49dcb2470eeb5d09e3bc1954aca8fe70ae05c81 Mon Sep 17 00:00:00 2001 From: Neerti Date: Fri, 6 Mar 2015 23:40:50 -0500 Subject: [PATCH 01/43] Adds help text and some antag text to common weapons. Makes chameleon gun change proc play nice with multiple definitions. Rest of chameleon stuff will be changed later when I get around to it. --- baystation12.dme | 1 + code/modules/clothing/under/chameleon.dm | 631 +++++++++---------- code/modules/examine/descriptions/weapons.dm | 91 +++ 3 files changed, 407 insertions(+), 316 deletions(-) create mode 100644 code/modules/examine/descriptions/weapons.dm diff --git a/baystation12.dme b/baystation12.dme index d9ced5fefc..bf45a077a4 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -968,6 +968,7 @@ #include "code\modules\examine\descriptions\stacks.dm" #include "code\modules\examine\descriptions\structures.dm" #include "code\modules\examine\descriptions\turfs.dm" +#include "code\modules\examine\descriptions\weapons.dm" #include "code\modules\ext_scripts\irc.dm" #include "code\modules\ext_scripts\python.dm" #include "code\modules\flufftext\Dreaming.dm" diff --git a/code/modules/clothing/under/chameleon.dm b/code/modules/clothing/under/chameleon.dm index 0fc9b5447a..01bea29b2e 100644 --- a/code/modules/clothing/under/chameleon.dm +++ b/code/modules/clothing/under/chameleon.dm @@ -12,43 +12,43 @@ origin_tech = "syndicate=3" var/list/clothing_choices = list() - New() - ..() - var/blocked = list(/obj/item/clothing/under/chameleon, /obj/item/clothing/under/cloud, /obj/item/clothing/under/gimmick)//Prevent infinite loops and bad jumpsuits. - for(var/U in typesof(/obj/item/clothing/under)-blocked) - var/obj/item/clothing/under/V = new U - src.clothing_choices[V.name] = U +/obj/item/clothing/under/chameleon/New() + ..() + var/blocked = list(/obj/item/clothing/under/chameleon, /obj/item/clothing/under/cloud, /obj/item/clothing/under/gimmick)//Prevent infinite loops and bad jumpsuits. + for(var/U in typesof(/obj/item/clothing/under)-blocked) + var/obj/item/clothing/under/V = new U + src.clothing_choices[V.name] = U + return + +/obj/item/clothing/under/chameleon/emp_act(severity) + name = "psychedelic" + desc = "Groovy!" + icon_state = "psyche" + item_color = "psyche" + update_icon() + update_clothing_icon() + +/obj/item/clothing/under/chameleon/verb/change() + set name = "Change Jumpsuit Appearance" + set category = "Object" + set src in usr + + var/picked = input("Select jumpsuit to change it to", "Chameleon Jumpsuit")as null|anything in clothing_choices + if(!picked || !clothing_choices[picked]) return + var/newtype = clothing_choices[picked] + var/obj/item/clothing/A = new newtype - emp_act(severity) - name = "psychedelic" - desc = "Groovy!" - icon_state = "psyche" - item_color = "psyche" - update_icon() - update_clothing_icon() + desc = null + permeability_coefficient = 0.90 - verb/change() - set name = "Change Jumpsuit Appearance" - set category = "Object" - set src in usr - - var/picked = input("Select jumpsuit to change it to", "Chameleon Jumpsuit")as null|anything in clothing_choices - if(!picked || !clothing_choices[picked]) - return - var/newtype = clothing_choices[picked] - var/obj/item/clothing/A = new newtype - - desc = null - permeability_coefficient = 0.90 - - desc = A.desc - name = A.name - icon_state = A.icon_state - item_state = A.item_state - item_color = A.item_color - body_parts_covered = A.body_parts_covered - update_clothing_icon() //so our overlays update. + desc = A.desc + name = A.name + icon_state = A.icon_state + item_state = A.item_state + item_color = A.item_color + body_parts_covered = A.body_parts_covered + update_clothing_icon() //so our overlays update. //***************** //**Chameleon Hat** @@ -64,44 +64,44 @@ body_parts_covered = 0 var/list/clothing_choices = list() - New() - ..() - var/blocked = list(/obj/item/clothing/head/chameleon,/obj/item/clothing/head/justice,)//Prevent infinite loops and bad hats. - for(var/U in typesof(/obj/item/clothing/head)-blocked) - var/obj/item/clothing/head/V = new U - src.clothing_choices[V.name] = U +/obj/item/clothing/head/chameleon/New() + ..() + var/blocked = list(/obj/item/clothing/head/chameleon,/obj/item/clothing/head/justice,)//Prevent infinite loops and bad hats. + for(var/U in typesof(/obj/item/clothing/head)-blocked) + var/obj/item/clothing/head/V = new U + src.clothing_choices[V.name] = U + return + +/obj/item/clothing/head/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. + name = "grey cap" + desc = "It's a baseball hat in a tasteful grey colour." + icon_state = "greysoft" + item_color = "grey" + update_icon() + update_clothing_icon() + +/obj/item/clothing/head/chameleon/verb/change() + set name = "Change Hat/Helmet Appearance" + set category = "Object" + set src in usr + + var/picked = input("Select headwear to change it to", "Chameleon Hat")as null|anything in clothing_choices + if(!picked || !clothing_choices[picked]) return + var/newtype = clothing_choices[picked] + var/obj/item/clothing/A = new newtype - emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. - name = "grey cap" - desc = "It's a baseball hat in a tasteful grey colour." - icon_state = "greysoft" - item_color = "grey" - update_icon() - update_clothing_icon() + desc = null + permeability_coefficient = 0.90 - verb/change() - set name = "Change Hat/Helmet Appearance" - set category = "Object" - set src in usr - - var/picked = input("Select headwear to change it to", "Chameleon Hat")as null|anything in clothing_choices - if(!picked || !clothing_choices[picked]) - return - var/newtype = clothing_choices[picked] - var/obj/item/clothing/A = new newtype - - desc = null - permeability_coefficient = 0.90 - - desc = A.desc - name = A.name - icon_state = A.icon_state - item_state = A.item_state - item_color = A.item_color - flags_inv = A.flags_inv - body_parts_covered = A.body_parts_covered - update_clothing_icon() //so our overlays update. + desc = A.desc + name = A.name + icon_state = A.icon_state + item_state = A.item_state + item_color = A.item_color + flags_inv = A.flags_inv + body_parts_covered = A.body_parts_covered + update_clothing_icon() //so our overlays update. //****************** //**Chameleon Suit** @@ -115,45 +115,45 @@ origin_tech = "syndicate=3" var/list/clothing_choices = list() - New() - ..() - var/blocked = list(/obj/item/clothing/suit/chameleon, /obj/item/clothing/suit/cyborg_suit, /obj/item/clothing/suit/justice, - /obj/item/clothing/suit/greatcoat)//Prevent infinite loops and bad suits. - for(var/U in typesof(/obj/item/clothing/suit)-blocked) - var/obj/item/clothing/suit/V = new U - src.clothing_choices[V.name] = U +/obj/item/clothing/suit/chameleon/New() + ..() + var/blocked = list(/obj/item/clothing/suit/chameleon, /obj/item/clothing/suit/cyborg_suit, /obj/item/clothing/suit/justice, + /obj/item/clothing/suit/greatcoat)//Prevent infinite loops and bad suits. + for(var/U in typesof(/obj/item/clothing/suit)-blocked) + var/obj/item/clothing/suit/V = new U + src.clothing_choices[V.name] = U + return + +/obj/item/clothing/suit/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. + name = "armor" + desc = "An armored vest that protects against some damage." + icon_state = "armor" + item_color = "armor" + update_icon() + update_clothing_icon() + +/obj/item/clothing/suit/chameleon/verb/change() + set name = "Change Exosuit Appearance" + set category = "Object" + set src in usr + + var/picked = input("Select exosuit to change it to", "Chameleon Exosuit")as null|anything in clothing_choices + if(!picked || !clothing_choices[picked]) return + var/newtype = clothing_choices[picked] + var/obj/item/clothing/A = new newtype - emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. - name = "armor" - desc = "An armored vest that protects against some damage." - icon_state = "armor" - item_color = "armor" - update_icon() - update_clothing_icon() + desc = null + permeability_coefficient = 0.90 - verb/change() - set name = "Change Exosuit Appearance" - set category = "Object" - set src in usr - - var/picked = input("Select exosuit to change it to", "Chameleon Exosuit")as null|anything in clothing_choices - if(!picked || !clothing_choices[picked]) - return - var/newtype = clothing_choices[picked] - var/obj/item/clothing/A = new newtype - - desc = null - permeability_coefficient = 0.90 - - desc = A.desc - name = A.name - icon_state = A.icon_state - item_state = A.item_state - item_color = A.item_color - flags_inv = A.flags_inv - body_parts_covered = A.body_parts_covered - update_clothing_icon() //so our overlays update. + desc = A.desc + name = A.name + icon_state = A.icon_state + item_state = A.item_state + item_color = A.item_color + flags_inv = A.flags_inv + body_parts_covered = A.body_parts_covered + update_clothing_icon() //so our overlays update. //******************* //**Chameleon Shoes** @@ -167,43 +167,43 @@ origin_tech = "syndicate=3" var/list/clothing_choices = list() - New() - ..() - var/blocked = list(/obj/item/clothing/shoes/chameleon, /obj/item/clothing/shoes/syndigaloshes, /obj/item/clothing/shoes/cyborg)//prevent infinite loops and bad shoes. - for(var/U in typesof(/obj/item/clothing/shoes)-blocked) - var/obj/item/clothing/shoes/V = new U - src.clothing_choices[V.name] = U +/obj/item/clothing/shoes/chameleon/New() + ..() + var/blocked = list(/obj/item/clothing/shoes/chameleon, /obj/item/clothing/shoes/syndigaloshes, /obj/item/clothing/shoes/cyborg)//prevent infinite loops and bad shoes. + for(var/U in typesof(/obj/item/clothing/shoes)-blocked) + var/obj/item/clothing/shoes/V = new U + src.clothing_choices[V.name] = U + return + +/obj/item/clothing/shoes/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. + name = "black shoes" + desc = "A pair of black shoes." + icon_state = "black" + item_state = "black" + item_color = "black" + update_icon() + update_clothing_icon() + +/obj/item/clothing/shoes/chameleon/verb/change() + set name = "Change Footwear Appearance" + set category = "Object" + set src in usr + + var/picked = input("Select shoes to change it to", "Chameleon Shoes")as null|anything in clothing_choices + if(!picked || !clothing_choices[picked]) return + var/newtype = clothing_choices[picked] + var/obj/item/clothing/A = new newtype - emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. - name = "black shoes" - desc = "A pair of black shoes." - icon_state = "black" - item_state = "black" - item_color = "black" - update_icon() - update_clothing_icon() + desc = null + permeability_coefficient = 0.90 - verb/change() - set name = "Change Footwear Appearance" - set category = "Object" - set src in usr - - var/picked = input("Select shoes to change it to", "Chameleon Shoes")as null|anything in clothing_choices - if(!picked || !clothing_choices[picked]) - return - var/newtype = clothing_choices[picked] - var/obj/item/clothing/A = new newtype - - desc = null - permeability_coefficient = 0.90 - - desc = A.desc - name = A.name - icon_state = A.icon_state - item_state = A.item_state - item_color = A.item_color - update_clothing_icon() //so our overlays update. + desc = A.desc + name = A.name + icon_state = A.icon_state + item_state = A.item_state + item_color = A.item_color + update_clothing_icon() //so our overlays update. //********************** //**Chameleon Backpack** @@ -216,48 +216,48 @@ origin_tech = "syndicate=3" var/list/clothing_choices = list() - New() - ..() - var/blocked = list(/obj/item/weapon/storage/backpack/chameleon, /obj/item/weapon/storage/backpack/satchel/withwallet) - for(var/U in typesof(/obj/item/weapon/storage/backpack)-blocked)//Prevent infinite loops and bad backpacks. - var/obj/item/weapon/storage/backpack/V = new U - src.clothing_choices[V.name] = U +/obj/item/weapon/storage/backpack/chameleon/New() + ..() + var/blocked = list(/obj/item/weapon/storage/backpack/chameleon, /obj/item/weapon/storage/backpack/satchel/withwallet) + for(var/U in typesof(/obj/item/weapon/storage/backpack)-blocked)//Prevent infinite loops and bad backpacks. + var/obj/item/weapon/storage/backpack/V = new U + src.clothing_choices[V.name] = U + return + +/obj/item/weapon/storage/backpack/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. + name = "backpack" + desc = "You wear this on your back and put items into it." + icon_state = "backpack" + item_state = "backpack" + update_icon() + if (ismob(src.loc)) + var/mob/M = src.loc + M.update_inv_back() + +/obj/item/weapon/storage/backpack/chameleon/verb/change() + set name = "Change Backpack Appearance" + set category = "Object" + set src in usr + + var/picked = input("Select backpack to change it to", "Chameleon Backpack")as null|anything in clothing_choices + if(!picked || !clothing_choices[picked]) return + var/newtype = clothing_choices[picked] + var/obj/item/weapon/storage/backpack/A = new newtype - emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. - name = "backpack" - desc = "You wear this on your back and put items into it." - icon_state = "backpack" - item_state = "backpack" - update_icon() - if (ismob(src.loc)) - var/mob/M = src.loc - M.update_inv_back() + desc = null + permeability_coefficient = 0.90 - verb/change() - set name = "Change Backpack Appearance" - set category = "Object" - set src in usr + desc = A.desc + name = A.name + icon_state = A.icon_state + item_state = A.item_state + item_color = A.item_color - var/picked = input("Select backpack to change it to", "Chameleon Backpack")as null|anything in clothing_choices - if(!picked || !clothing_choices[picked]) - return - var/newtype = clothing_choices[picked] - var/obj/item/weapon/storage/backpack/A = new newtype - - desc = null - permeability_coefficient = 0.90 - - desc = A.desc - name = A.name - icon_state = A.icon_state - item_state = A.item_state - item_color = A.item_color - - //so our overlays update. - if (ismob(src.loc)) - var/mob/M = src.loc - M.update_inv_back() + //so our overlays update. + if (ismob(src.loc)) + var/mob/M = src.loc + M.update_inv_back() //******************** //**Chameleon Gloves** @@ -272,43 +272,43 @@ origin_tech = "syndicate=3" var/list/clothing_choices = list() - New() - ..() - var/blocked = list(/obj/item/clothing/gloves/chameleon)//Prevent infinite loops and bad hats. - for(var/U in typesof(/obj/item/clothing/gloves)-blocked) - var/obj/item/clothing/gloves/V = new U - src.clothing_choices[V.name] = U +/obj/item/clothing/gloves/chameleon/New() + ..() + var/blocked = list(/obj/item/clothing/gloves/chameleon)//Prevent infinite loops and bad hats. + for(var/U in typesof(/obj/item/clothing/gloves)-blocked) + var/obj/item/clothing/gloves/V = new U + src.clothing_choices[V.name] = U + return + +/obj/item/clothing/gloves/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. + name = "black gloves" + desc = "It looks like a pair of gloves, but it seems to have a small dial inside." + icon_state = "black" + item_color = "brown" + update_icon() + update_clothing_icon() + +/obj/item/clothing/gloves/chameleon/verb/change() + set name = "Change Gloves Appearance" + set category = "Object" + set src in usr + + var/picked = input("Select gloves to change it to", "Chameleon Gloves")as null|anything in clothing_choices + if(!picked || !clothing_choices[picked]) return + var/newtype = clothing_choices[picked] + var/obj/item/clothing/A = new newtype - emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. - name = "black gloves" - desc = "It looks like a pair of gloves, but it seems to have a small dial inside." - icon_state = "black" - item_color = "brown" - update_icon() - update_clothing_icon() + desc = null + permeability_coefficient = 0.90 - verb/change() - set name = "Change Gloves Appearance" - set category = "Object" - set src in usr - - var/picked = input("Select gloves to change it to", "Chameleon Gloves")as null|anything in clothing_choices - if(!picked || !clothing_choices[picked]) - return - var/newtype = clothing_choices[picked] - var/obj/item/clothing/A = new newtype - - desc = null - permeability_coefficient = 0.90 - - desc = A.desc - name = A.name - icon_state = A.icon_state - item_state = A.item_state - item_color = A.item_color - flags_inv = A.flags_inv - update_clothing_icon() //so our overlays update. + desc = A.desc + name = A.name + icon_state = A.icon_state + item_state = A.item_state + item_color = A.item_color + flags_inv = A.flags_inv + update_clothing_icon() //so our overlays update. //****************** //**Chameleon Mask** @@ -322,43 +322,43 @@ origin_tech = "syndicate=3" var/list/clothing_choices = list() - New() - ..() - var/blocked = list(/obj/item/clothing/mask/chameleon)//Prevent infinite loops and bad hats. - for(var/U in typesof(/obj/item/clothing/mask)-blocked) - var/obj/item/clothing/mask/V = new U - if(V) - src.clothing_choices[V.name] = U +/obj/item/clothing/mask/chameleon/New() + ..() + var/blocked = list(/obj/item/clothing/mask/chameleon)//Prevent infinite loops and bad hats. + for(var/U in typesof(/obj/item/clothing/mask)-blocked) + var/obj/item/clothing/mask/V = new U + if(V) + src.clothing_choices[V.name] = U + return + +/obj/item/clothing/mask/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. + name = "gas mask" + desc = "It's a gas mask." + icon_state = "gas_alt" + update_icon() + update_clothing_icon() + +/obj/item/clothing/mask/chameleon/verb/change() + set name = "Change Mask Appearance" + set category = "Object" + set src in usr + + var/picked = input("Select mask to change it to", "Chameleon Mask")as null|anything in clothing_choices + if(!picked || !clothing_choices[picked]) return + var/newtype = clothing_choices[picked] + var/obj/item/clothing/A = new newtype - emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. - name = "gas mask" - desc = "It's a gas mask." - icon_state = "gas_alt" - update_icon() - update_clothing_icon() + desc = null + permeability_coefficient = 0.90 - verb/change() - set name = "Change Mask Appearance" - set category = "Object" - set src in usr - - var/picked = input("Select mask to change it to", "Chameleon Mask")as null|anything in clothing_choices - if(!picked || !clothing_choices[picked]) - return - var/newtype = clothing_choices[picked] - var/obj/item/clothing/A = new newtype - - desc = null - permeability_coefficient = 0.90 - - desc = A.desc - name = A.name - icon_state = A.icon_state - item_state = A.item_state - flags_inv = A.flags_inv - body_parts_covered = A.body_parts_covered - update_clothing_icon() //so our overlays update. + desc = A.desc + name = A.name + icon_state = A.icon_state + item_state = A.item_state + flags_inv = A.flags_inv + body_parts_covered = A.body_parts_covered + update_clothing_icon() //so our overlays update. //********************* //**Chameleon Glasses** @@ -372,41 +372,41 @@ origin_tech = "syndicate=3" var/list/clothing_choices = list() - New() - ..() - var/blocked = list(/obj/item/clothing/glasses/chameleon)//Prevent infinite loops and bad hats. - for(var/U in typesof(/obj/item/clothing/glasses)-blocked) - var/obj/item/clothing/glasses/V = new U - src.clothing_choices[V.name] = U +/obj/item/clothing/glasses/chameleon/New() + ..() + var/blocked = list(/obj/item/clothing/glasses/chameleon)//Prevent infinite loops and bad hats. + for(var/U in typesof(/obj/item/clothing/glasses)-blocked) + var/obj/item/clothing/glasses/V = new U + src.clothing_choices[V.name] = U + return + +/obj/item/clothing/glasses/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. + name = "Optical Meson Scanner" + desc = "It's a set of mesons." + icon_state = "meson" + update_icon() + update_clothing_icon() + +/obj/item/clothing/glasses/chameleon/verb/change() + set name = "Change Glasses Appearance" + set category = "Object" + set src in usr + + var/picked = input("Select glasses to change it to", "Chameleon Glasses")as null|anything in clothing_choices + if(!picked || !clothing_choices[picked]) return + var/newtype = clothing_choices[picked] + var/obj/item/clothing/A = new newtype - emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. - name = "Optical Meson Scanner" - desc = "It's a set of mesons." - icon_state = "meson" - update_icon() - update_clothing_icon() + desc = null + permeability_coefficient = 0.90 - verb/change() - set name = "Change Glasses Appearance" - set category = "Object" - set src in usr - - var/picked = input("Select glasses to change it to", "Chameleon Glasses")as null|anything in clothing_choices - if(!picked || !clothing_choices[picked]) - return - var/newtype = clothing_choices[picked] - var/obj/item/clothing/A = new newtype - - desc = null - permeability_coefficient = 0.90 - - desc = A.desc - name = A.name - icon_state = A.icon_state - item_state = A.item_state - flags_inv = A.flags_inv - update_clothing_icon() //so our overlays update. + desc = A.desc + name = A.name + icon_state = A.icon_state + item_state = A.item_state + flags_inv = A.flags_inv + update_clothing_icon() //so our overlays update. //***************** //**Chameleon Gun** @@ -423,46 +423,45 @@ matter = list() var/list/gun_choices = list() - New() - ..() - var/blocked = list(/obj/item/weapon/gun/projectile/chameleon) - for(var/U in typesof(/obj/item/weapon/gun/)-blocked) - var/obj/item/weapon/gun/V = new U - src.gun_choices[V.name] = U +/obj/item/weapon/gun/projectile/chameleon/New() + ..() + var/blocked = list(/obj/item/weapon/gun/projectile/chameleon) + for(var/U in typesof(/obj/item/weapon/gun/)-blocked) + var/obj/item/weapon/gun/V = new U + src.gun_choices[V.name] = U + return + +/obj/item/weapon/gun/projectile/chameleon/emp_act(severity) + name = "desert eagle" + desc = "It's a desert eagle." + icon_state = "deagle" + update_icon() + if (ismob(src.loc)) + var/mob/M = src.loc + M.update_inv_r_hand() + M.update_inv_l_hand() + +/obj/item/weapon/gun/projectile/chameleon/verb/change(picked in gun_choices) + set name = "Change Gun Appearance" + set category = "Object" + set src in usr + + if(!picked || !gun_choices[picked]) return + var/newtype = gun_choices[picked] + var/obj/item/weapon/gun/A = new newtype - emp_act(severity) - name = "desert eagle" - desc = "It's a desert eagle." - icon_state = "deagle" - update_icon() - if (ismob(src.loc)) - var/mob/M = src.loc - M.update_inv_r_hand() - M.update_inv_l_hand() + desc = null + permeability_coefficient = 0.90 - verb/change() - set name = "Change Gun Appearance" - set category = "Object" - set src in usr + desc = A.desc + name = A.name + icon_state = A.icon_state + item_state = A.item_state + flags_inv = A.flags_inv - var/picked = input("Select gun to change it to", "Chameleon Gun")as null|anything in gun_choices - if(!picked || !gun_choices[picked]) - return - var/newtype = gun_choices[picked] - var/obj/item/weapon/gun/A = new newtype - - desc = null - permeability_coefficient = 0.90 - - desc = A.desc - name = A.name - icon_state = A.icon_state - item_state = A.item_state - flags_inv = A.flags_inv - - //so our overlays update. - if (ismob(src.loc)) - var/mob/M = src.loc - M.update_inv_r_hand() - M.update_inv_l_hand() + //so our overlays update. + if (ismob(src.loc)) + var/mob/M = src.loc + M.update_inv_r_hand() + M.update_inv_l_hand() diff --git a/code/modules/examine/descriptions/weapons.dm b/code/modules/examine/descriptions/weapons.dm new file mode 100644 index 0000000000..0ae44c1dcb --- /dev/null +++ b/code/modules/examine/descriptions/weapons.dm @@ -0,0 +1,91 @@ +/* + Note: This file is meant for actual weapons (guns, swords, etc), and not the stupid 'every obj is a weapon, except when it's not' thing. +*/ + +//****** +//*Guns* +//****** + +//This contains a lot of copypasta but I'm told it's better then a lot of New()s appending the var. +/obj/item/weapon/gun + description_info = "This is a gun. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire." + +/obj/item/weapon/gun/energy + description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire. Most energy weapons can fire through windows harmlessly. To recharge this weapon, use a weapon recharger." + +/obj/item/weapon/gun/energy/crossbow + description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire." + description_antag = "This is a stealthy weapon which fires poisoned bolts at your target. When it hits someone, they will suffer a stun effect, in \ + addition to toxins. The energy crossbow recharges itself slowly, and can be concealed in your pocket or bag." + +/obj/item/weapon/gun/energy/gun + description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire. Most energy weapons can fire through windows harmlessly. To switch between stun and lethal, click the weapon \ + in your hand. To recharge this weapon, use a weapon recharger." + +/obj/item/weapon/gun/energy/gun/taser + description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire. Most energy weapons can fire through windows harmlessly. To recharge this weapon, use a weapon recharger." + +/obj/item/weapon/gun/energy/gun/stunrevolver + description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire. Most energy weapons can fire through windows harmlessly. To recharge this weapon, use a weapon recharger." + +/obj/item/weapon/gun/energy/gun/nuclear + description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire. Most energy weapons can fire through windows harmlessly. To switch between stun and lethal, click the weapon \ + in your hand. Unlike most weapons, this weapon recharges itself." + +/obj/item/weapon/gun/energy/captain + description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire. Most energy weapons can fire through windows harmlessly. Unlike most weapons, this weapon recharges itself." + +/obj/item/weapon/gun/energy/sniperrifle + description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire. Most energy weapons can fire through windows harmlessly. To recharge this weapon, use a weapon recharger. \ + To use the scope, use the appropriate verb in the object tab." + +/obj/item/weapon/gun/projectile + description_info = "This is a ballistic weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire. To reload, click the weapon in your hand to unload (if needed), then add the appropiate ammo. The description \ + will tell you what caliber you need." + +/obj/item/weapon/gun/projectile/chameleon + description_info = null //The chameleon gun adopts the description_info of the weapon it is impersonating as, to make meta-ing harder. + description_antag = "This gun can alter its appearance to mimick other weapons. To change the appearance, use the appropriate verb in the object tab. \ + The ammo loaded by default makes the gun useless for actual combat." + +/obj/item/weapon/gun/projectile/chameleon/change(picked in gun_choices) //Making the gun change its help text to match the weapon's help text. + ..(picked) + var/obj/O = gun_choices[picked] + description_info = initial(O.description_info) + +/obj/item/weapon/gun/projectile/shotgun/pump + description_info = "This is a ballistic weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire. After firing, you will need to pump the gun, by clicking on the gun in your hand. To reload, load more shotgun \ + shells into the gun." + +/obj/item/weapon/gun/projectile/heavysniper + description_info = "This is a ballistic weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire. The gun's chamber can be opened or closed by using it in your hand. To reload, open the chamber, add a new bullet \ + then close it. To use the scope, use the appropriate verb in the object tab." + +//******* +//*Melee* +//******* + +/obj/item/weapon/melee/baton + description_info = "The baton needs to be turned on to apply the stunning effect. Use it in your hand to toggle it on or off. If your intent is \ + set to 'harm', you will inflict damage when using it, regardless if it is on or not. Each stun reduces the baton's charge, which can be replenished by \ + putting it inside a weapon recharger." + +/obj/item/weapon/melee/energy/sword + description_antag = "The energy sword is a very strong melee weapon, capable of severing limbs easily, if they are targeted. It can also has a chance \ + to block projectiles and melee attacks while it is on and being held. The sword can be toggled on or off by using it in your hand. While it is off, \ + it can be concealed in your pocket or bag." + +/obj/item/weapon/melee/cultblade + description_antag = "This sword is a powerful weapon, capable of severing limbs easily, if they are targeted. Nonbelivers are unable to use this weapon." From 9888120b054072a86f7d8cd21d9c526a7d534e34 Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Sun, 8 Mar 2015 11:21:38 +0000 Subject: [PATCH 02/43] Fix simple-animal grabbing --- code/modules/mob/living/simple_animal/simple_animal.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 74f6c85eb9..26a9d062ff 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -239,7 +239,7 @@ if (!(status_flags & CANPUSH)) return - var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M, M, src ) + var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src) M.put_in_active_hand(G) @@ -375,4 +375,4 @@ /mob/living/simple_animal/put_in_hands(var/obj/item/W) // No hands. W.loc = get_turf(src) - return 1 \ No newline at end of file + return 1 From d290ee4c6892a2d008bc6f2b74df9639d34d094e Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 8 Mar 2015 13:22:45 +0100 Subject: [PATCH 03/43] Fixes #8398. Cryopods/cells that contains mobs will now drop them to the ground on deletion. --- code/game/machinery/cryo.dm | 5 +++++ code/game/machinery/cryopod.dm | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 32543822b9..ecf868f260 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -24,6 +24,11 @@ ..() initialize_directions = dir +/obj/machinery/atmospherics/unary/cryo_cell/Del() + if(occupant) + occupant.loc = loc + ..() + /obj/machinery/atmospherics/unary/cryo_cell/initialize() if(node) return var/node_connect = dir diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 381a9790fb..5915aef5ac 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -234,6 +234,12 @@ ..() +/obj/machinery/cryopod/Del() + if(occupant) + occupant.loc = loc + occupant.resting = 1 + ..() + /obj/machinery/cryopod/initialize() ..() From cfbba5c153fd975e3d24afdfc4a084ade05fa7d4 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 8 Mar 2015 17:58:48 +0100 Subject: [PATCH 04/43] Station alert monitor should now only react to major alarms. --- code/game/machinery/computer/station_alert.dm | 2 +- code/modules/nano/modules/alarm_monitor.dm | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm index 84ce5cc0d1..197d65065a 100644 --- a/code/game/machinery/computer/station_alert.dm +++ b/code/game/machinery/computer/station_alert.dm @@ -38,7 +38,7 @@ if(stat & (BROKEN|NOPOWER)) return - var/list/alarms = alarm_monitor.active_alarms() + var/list/alarms = alarm_monitor.major_alarms() if(alarms.len) icon_state = "alert:2" else diff --git a/code/modules/nano/modules/alarm_monitor.dm b/code/modules/nano/modules/alarm_monitor.dm index e4de543498..9047023bf1 100644 --- a/code/modules/nano/modules/alarm_monitor.dm +++ b/code/modules/nano/modules/alarm_monitor.dm @@ -30,11 +30,24 @@ for(var/datum/alarm_handler/AH in alarm_handlers) AH.unregister(object) -/obj/nano_module/alarm_monitor/proc/active_alarms() +/obj/nano_module/alarm_monitor/proc/all_alarms() var/list/all_alarms = new() for(var/datum/alarm_handler/AH in alarm_handlers) - var/list/alarms = AH.alarms - all_alarms += alarms + all_alarms += AH.alarms + + return all_alarms + +/obj/nano_module/alarm_monitor/proc/major_alarms() + var/list/all_alarms = new() + for(var/datum/alarm_handler/AH in alarm_handlers) + all_alarms += AH.major_alarms() + + return all_alarms + +/obj/nano_module/alarm_monitor/proc/minor_alarms() + var/list/all_alarms = new() + for(var/datum/alarm_handler/AH in alarm_handlers) + all_alarms += AH.minor_alarms() return all_alarms From a1dbd153bd9317d2e669e5b3947920349b96ba84 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 8 Mar 2015 18:00:18 +0100 Subject: [PATCH 05/43] Fixes minor alerts not listing properly in the atmos alert console. --- nano/templates/atmos_alert.tmpl | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/nano/templates/atmos_alert.tmpl b/nano/templates/atmos_alert.tmpl index dc6f3b9da8..92946e8d31 100644 --- a/nano/templates/atmos_alert.tmpl +++ b/nano/templates/atmos_alert.tmpl @@ -1,17 +1,18 @@

Priority Alerts

{{for data.priority_alarms}}
- {{:value.name}} {{:helper.link('Reset', null, {'clear_alarm' : value.ref})}} + {{:value.name}} {{:helper.link('Reset', null, {'clear_alarm' : value.ref})}}
{{empty}} No priority alerts detected. {{/for}}

Minor Alerts

-
- {{for data.minor_alarms}} - {{:value.name}} {{:helper.link('Reset', null, {'clear_alarm' : value.ref})}} - {{empty}} - No minor alerts detected. - {{/for}} -
+{{for data.minor_alarms}} +
+ {{:value.name}} {{:helper.link('Reset', null, {'clear_alarm' : value.ref})}} +
+{{empty}} + No minor alerts detected. +{{/for}} + From e05e024cc5ce9c8f3d09cd07a12bf5bbb9023aae Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 8 Mar 2015 18:31:59 +0100 Subject: [PATCH 06/43] Fixes issues with remote air alarm access. --- code/game/machinery/computer/atmos_control.dm | 2 +- nano/templates/air_alarm.tmpl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm index a6eb8765f1..d63259bc4c 100644 --- a/code/game/machinery/computer/atmos_control.dm +++ b/code/game/machinery/computer/atmos_control.dm @@ -93,6 +93,6 @@ /datum/topic_state/air_alarm/href_list(var/mob/user) var/list/extra_href = list() extra_href["remote_connection"] = 1 - extra_href["remote_access"] = user && (atmos_control.allowed(user) || atmos_control.emagged || air_alarm.rcon_setting == RCON_YES || (air_alarm.alarm_area.atmosalm && air_alarm.rcon_setting == RCON_AUTO)) + extra_href["remote_access"] = user && (user.isAI() || atmos_control.allowed(user) || atmos_control.emagged || air_alarm.rcon_setting == RCON_YES || (air_alarm.alarm_area.atmosalm && air_alarm.rcon_setting == RCON_AUTO)) return extra_href diff --git a/nano/templates/air_alarm.tmpl b/nano/templates/air_alarm.tmpl index 6ba6b14057..edfe41cda7 100644 --- a/nano/templates/air_alarm.tmpl +++ b/nano/templates/air_alarm.tmpl @@ -74,7 +74,7 @@ Used In File(s): \code\game\machinery\alarm.dm
-{{if data.locked || (data.remote_connection && ! data.remote_access)}} +{{if (data.locked && !data.remote_connection) || (data.remote_connection && ! data.remote_access)}} {{if data.remote_connection}} (Current remote control settings and alarm status restricts access.) {{else}} From 27d5b0d3dfd2414f395a4903c9519dbdaa0f16c1 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 8 Mar 2015 21:50:55 +0100 Subject: [PATCH 07/43] Xenoflora piping issues. Fixes an issue where the yellow siphon line was merging with the hydrophonic tray piping/connectors, unintentionally. Also makes sure that the related space vent is actually powered. --- maps/exodus-1.dmm | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index e19eaf628a..e458bd56cd 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -5675,7 +5675,7 @@ "cfg" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = 32},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "cfh" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/hydroponics{closed_system = 1; name = "isolation tray"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology/xenoflora) "cfi" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Xenobiology Research"; req_access_txt = "47"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) -"cfj" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/light_switch{pixel_x = -6; pixel_y = 26},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/hydroponics{closed_system = 1; name = "isolation tray"},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) +"cfj" = (/obj/machinery/seed_storage/xenobotany,/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 10},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "cfk" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "cfl" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/table,/obj/item/weapon/storage/box/botanydisk,/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "cfm" = (/obj/machinery/botany/editor,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology/xenoflora) @@ -5686,14 +5686,14 @@ "cfr" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/research_starboard) "cfs" = (/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Aft Starboard Solar Access"; dir = 1},/obj/effect/decal/cleanable/generic,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/research_starboard) "cft" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/rnd/test_area) -"cfu" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/hydroponics{closed_system = 1; name = "isolation tray"},/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology/xenoflora) +"cfu" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/hydroponics{closed_system = 1; name = "isolation tray"},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology/xenoflora) "cfv" = (/obj/machinery/light/small,/turf/simulated/floor/plating/airless,/area/rnd/test_area) "cfw" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plating,/area/construction) "cfx" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/plating,/area/construction) "cfy" = (/obj/structure/table,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/random/tech_supply,/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/construction) "cfz" = (/obj/structure/table,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/construction) "cfA" = (/obj/structure/table,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/construction) -"cfB" = (/obj/machinery/seed_storage/xenobotany,/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) +"cfB" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/light_switch{pixel_x = -6; pixel_y = 26},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/hydroponics{closed_system = 1; name = "isolation tray"},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "cfC" = (/obj/item/clothing/mask/smokable/cigarette,/turf/simulated/floor/plating/airless,/area/rnd/test_area) "cfD" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/atmos_control) "cfE" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) @@ -5746,7 +5746,7 @@ "cgz" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora_storage) "cgA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/rnd/xenobiology) "cgB" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) -"cgC" = (/obj/machinery/atmospherics/pipe/manifold/visible,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) +"cgC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{tag = "icon-intact (WEST)"; icon_state = "intact"; dir = 8},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "cgD" = (/obj/item/weapon/stool,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "cgE" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "cgF" = (/obj/structure/grille,/turf/simulated/wall/r_wall,/area/engineering/atmos) @@ -5790,12 +5790,12 @@ "chr" = (/obj/structure/table,/obj/item/weapon/storage/box/gloves{pixel_x = 4; pixel_y = 4},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/item/weapon/storage/box/masks,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/medical/surgeryprep) "chs" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/medical/surgeryprep) "cht" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 4; icon_state = "blue"},/area/medical/surgeryprep) -"chu" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) +"chu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 6; icon_state = "intact"; tag = "icon-intact-f (SOUTHEAST)"},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "chv" = (/obj/structure/table,/obj/item/weapon/tape_roll,/obj/item/device/analyzer/plant_analyzer,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "chw" = (/obj/structure/sign/biohazard,/turf/simulated/wall,/area/medical/virologyaccess) "chx" = (/obj/structure/disposaloutlet,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating/airless,/area/medical/virology) "chy" = (/obj/structure/bedsheetbin,/obj/structure/table,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) -"chz" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) +"chz" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "chA" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/research_port) "chB" = (/turf/simulated/floor/plating,/area/maintenance/research_port) "chC" = (/obj/machinery/door/airlock/medical{autoclose = 0; icon_state = "door_open"; id_tag = "cubicle1"; name = "Cubicle 1"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/patient_wing) @@ -5846,7 +5846,7 @@ "civ" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/purple,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "ciw" = (/obj/machinery/atmospherics/pipe/manifold/hidden/purple{dir = 1},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "cix" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 10},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) -"ciy" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) +"ciy" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "ciz" = (/obj/structure/table/rack{dir = 1},/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor/plating,/area/maintenance/engineering) "ciA" = (/turf/simulated/wall,/area/maintenance/substation/engineering) "ciB" = (/obj/structure/table/rack{dir = 1},/obj/item/weapon/extinguisher,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/medbay) @@ -6150,7 +6150,7 @@ "con" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = 8; pixel_y = -28; req_access_txt = "55"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "warnwhite"},/area/rnd/xenobiology) "coo" = (/obj/structure/closet/l3closet/scientist,/turf/simulated/floor{dir = 6; icon_state = "warnwhite"},/area/rnd/xenobiology) "cop" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) -"coq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; pressure_checks = 1; pressure_checks_default = 1; use_power = 1},/turf/simulated/floor/plating/airless,/area/space) +"coq" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "cor" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio2"; name = "Containment Blast Doors"; opacity = 0},/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access_txt = "55"},/turf/simulated/floor/engine,/area/rnd/xenobiology) "cos" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cot" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_xeno_outer"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) @@ -7280,6 +7280,7 @@ "cJZ" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/space,/area/space) "cKa" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 5},/obj/structure/lattice,/turf/space,/area/space) "cKb" = (/obj/effect/landmark{name = "carpspawn"},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/lattice,/turf/space,/area/space) +"cKc" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; pressure_checks = 1; pressure_checks_default = 1; use_power = 1},/turf/simulated/floor/plating/airless,/area/rnd/xenobiology/xenoflora) "cKf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/maintenance/portsolar) "cKg" = (/turf/simulated/wall,/area/maintenance/engi_engine) "cKh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/engi_engine) @@ -7453,14 +7454,14 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaambZSaamaamaamaamaamaaaaaaaaaaaaaaaaaaaafaafaaabZfbZgbZgbZgbZHbZgbZgbZUbZTbYIbZYbZZbYIbZVcabbZWcadbZXcafcaccaacagcaecaicahcajbWRbYQcakcalbYRcambSZcaqcaqcaqcaqcaqcarbNSbDtcascatcaocancawcaxcaycazbTJcapcaBcaCcaDcaEcaFcaGcaHcaIbZxbWQcaubZycaKcaLbZAcaMcaNcaObZAbXXbYfbPObIwbXYbYabXZbXYbXYbIwbIwbIwcaRcaScaTcaUcaVbwwbwwcaWbwwbwwcaXcaYcavcaJcaAcbbcaZcbacbccbdcbecbfcbgcbhbUnbUnbUnaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKsbKtbUubUsbUsbLTbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcbicbkcbjcbmcblcbocbncbqcbpbYIcbrcbsbYIbYIcbtcbucbvcbwcbxcbzcbybXAbXzbYjcbAcbBbWRbWRcbCcbDbWRcbEbSZcbFcbGcaqcbHcaqbTFcbIcbIcbIcbIcbIcbIcbIbTJcbJcbKbTJcbLcbMcbNcbOcaEcbPcbQcbRcaIbZxbWQcbUbZycbScbTbZAcbWcbVccqbZAccsbYfbYbbYdbYcbYiccAccBbYcchBbYkbYlcktbZDbZwbZFcktccrbZGccDccCccFccEccQccPccRcctccucctcctcctcctcctccvccwccxccycczbUnbUnbUnbUnaaaaafaaaaaaaaaaahaahaahaafaaaaaaaafaaaaaaaafaaaaaabOPbKtbNdbKtbKtbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafccSccScbjccUccTcboccVccXccWbYIccGccHccIccJccKccLccMccNccOccZccYcdbcdacdycdecdFcdBceecdQcelcekcencemcdccddaJEcdfcaqbTFcbIcdgcdhcdicdjcdkcdlcdmcdncdocdpcdqcdrcdscdtcaEcducdvcdwcaIbZxbWQceobZycdxcepbZAcdzcdAceqbZAcaPbYfbYfcaQbYccbYcbXcbZbYcchBccacjfcdLcdLbyFbBucdLcdOcdPcercdRcdOcdSbBpbyecescdScdScdScdSbAebyebydcdScdSbXjcdXcdYcdZceacebcecbxTbycbycbycbycbycbycbycbycbycbycbycbycbycbycbycbyccefcegcegcehbKtbKtbLTbLTceibLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacejcejcejcejcejcejcejceucetbYIbYIbYIbYIbYIbYJcewcevcevcevceycexbXAbXzbYjceEbYxceSceUceTceXceWceYbSZcezaJFcfaaJFcaqbTFcbIceDcfccfccfcceFceGbTJceHceIbTJcbLcbNceJcbOcaEceKceLceMcaIbZxbWQceNbZyceOcePbZAbZAbZAbZAbZAccbceRbYfcaQbYcccdcccbYcbYcchBccecjfcdLceZcfbcfbcfecdOcfdcficffcdOcfgcfhcfhcfucfjcfBcfkcflcfmcfncfocfpcdScfqcfrcfsbUnbUnbUnbUnaaaaafaaaaaaaaaaahaahaahaafaaaaaaaafaaaaaaaafaafaafcftcfCcfvbNebKsbKtbKtbLTbLUbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcejcfwcfxcfycfzcfAcejcfEcfDcfGcfFcfIcfHcfJcfJcfLcfKcfKcfMcfNcbybXAbXzbYjcfOcajcfPcfRcfQcggcfUcgibSZaJFaJFcaqceBcaqbTFcbIcfVcfWcfWcfWcfXcbIcfYcfZcgacfYcgbcgccgdcgecaEcgfceLcgocaIcghccfcgjbZycgkcglbZycgmbLvbVicgnccgcchbYfccjcciccicckcclcclcclcclccmcdLcgpcgycgycgzcgActscgtcgrcgxcgucgGcgGcgCcgBcgIcgIcgJcgDcgLcgEcgMcdScgNcgOcgPcgNaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcgQbKqbKqbKrbKsbKsbKtbKtbKtbKtbKuaafaafaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFaaaaaacgScgTcgTcgTcgUcgVcejcgKcgHcgWcgRcgYcgXchacgZchcchbchechdchgchfchichhchkchjbSZbSZbSZbSZbSZbSZbSZbSZbEZbGDcaqbDfcaqbTFcbIcbIctpctqctrcbIcbIchrchschtcfYcaEcaEcaEcaEcaEcaIchlchmcaIchwccnchwbZychychnbZychAchBbVichCbVichDbYfccobYfbYfccpcdCcdCcdCcdDbYfcdLchIchJchJchKchochMchpchOchqchQckLckLchuckLchzchvckLckLckLchEchFcdSchZciachGcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgFchHchLchHcgFchNchPchNcgFchRchSchRcgFaaaaaaciicgTcgTcgUcgUcijcejchUchTchWchVchYchXcidciccifcieciecigciecbybXAcihbYjcikcimcilciocinciocipcirciqciqciAciAciAciAbTFciGciHciIciIciJciKciLciMciXciOciPciQciRciSciSciTciUcaIcaIcaIciVcdEckqbZybZybZybZychBchBbViciYbViciZbYfccobYfaaaaaaaaaaaaaaaaaaaaacdLcjgcisciucitcjjcjkcivcjmcjncjociwcjociycixcjrcjscgIcjtcgIciWcjucdScjacjwcjxcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacejcejcejcejcejcejcejceucetbYIbYIbYIbYIbYIbYJcewcevcevcevceycexbXAbXzbYjceEbYxceSceUceTceXceWceYbSZcezaJFcfaaJFcaqbTFcbIceDcfccfccfcceFceGbTJceHceIbTJcbLcbNceJcbOcaEceKceLceMcaIbZxbWQceNbZyceOcePbZAbZAbZAbZAbZAccbceRbYfcaQbYcccdcccbYcbYcchBccecjfcdLceZcfbcfbcfecdOcfdcficffcdOcfgcfhcfhcfucfBcfjcfkcflcfmcfncfocfpcdScfqcfrcfsbUnbUnbUnbUnaaaaafaaaaaaaaaaahaahaahaafaaaaaaaafaaaaaaaafaafaafcftcfCcfvbNebKsbKtbKtbLTbLUbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcejcfwcfxcfycfzcfAcejcfEcfDcfGcfFcfIcfHcfJcfJcfLcfKcfKcfMcfNcbybXAbXzbYjcfOcajcfPcfRcfQcggcfUcgibSZaJFaJFcaqceBcaqbTFcbIcfVcfWcfWcfWcfXcbIcfYcfZcgacfYcgbcgccgdcgecaEcgfceLcgocaIcghccfcgjbZycgkcglbZycgmbLvbVicgnccgcchbYfccjcciccicckcclcclcclcclccmcdLcgpcgycgycgzcgActscgtcgrcgxcgucgGcgGcgGcgBciycgIcgJcgDcgLcgEcgMcdScgNcgOcgPcgNaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcgQbKqbKqbKrbKsbKsbKtbKtbKtbKtbKuaafaafaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFaaaaaacgScgTcgTcgTcgUcgVcejcgKcgHcgWcgRcgYcgXchacgZchcchbchechdchgchfchichhchkchjbSZbSZbSZbSZbSZbSZbSZbSZbEZbGDcaqbDfcaqbTFcbIcbIctpctqctrcbIcbIchrchschtcfYcaEcaEcaEcaEcaEcaIchlchmcaIchwccnchwbZychychnbZychAchBbVichCbVichDbYfccobYfbYfccpcdCcdCcdCcdDbYfcdLchIchJchJchKchochMchpchOchqchQckLckLchucgCchzchvckLckLckLchEchFcdSchZciachGcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgFchHchLchHcgFchNchPchNcgFchRchSchRcgFaaaaaaciicgTcgTcgUcgUcijcejchUchTchWchVchYchXcidciccifcieciecigciecbybXAcihbYjcikcimcilciocinciocipcirciqciqciAciAciAciAbTFciGciHciIciIciJciKciLciMciXciOciPciQciRciSciSciTciUcaIcaIcaIciVcdEckqbZybZybZybZychBchBbViciYbViciZbYfccobYfaaaaaaaaaaaaaaaaaaaaacdLcjgcisciucitcjjcjkcivcjmcjncjociwcjocoqcixcjrcjscgIcjtcgIciWcjucdScjacjwcjxcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgFchHcjbchHcgFchNcjcchNcgFchRcjdchRcgFaaaaaaciicgTcgUcgUcgUcjBcjCcjhcjechWcjicjpcjlcjvcjqcjzcjycjDcjAcjEcbybXAcjFchkcjGcjIcjHcjJcjJcjJcjKcjMcjLcjNceCcjOceAciAbTFciGckaciIckbckcckdcubckfckgckhctQckjckkcklciSckmciUcknckockpcjQcjPcdHcdGcdIcdIcdJcdIcdKbVibVibVibVibYfccobYfaaaaaaaaaaaaaaaaaaaaacdLckCcjRcjTcjSckEcdOckFcdOckGckHcjXcjUcjZcjYcgIcgIckecjUcjUckickOcdSckPckQckRcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgFckrckuckscgFckzckBckAcgFckDckJckIcgFaaaaafciiclbcgTcgUcgUcgUcejckMckKchWchWckNchWchWchWchWckTcieckWckYcbyclackZcldclcclgcleclhclhclhclicljcljclkciAcllcgqclwclxciGclyciIclzclAclBclCclDclEclFclGclHclIclJciSclKciUclLclMclNclnclmclQclNclRclSclTbYfceQcdIcdIcdIcdIcdIcltbYfaaaaaaaaaaaaaaaaaaaaacdLcmacmbcmccmdcdOcmecmfcmgcdScmhcmicmiclOclvcmkcmlclPcmicmicmicmncdScmocmpcmqcmraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafaafcgFclXcmmcmjcgFcmscmmcmtcgFcmscmmcmtcgFaaaaafcmzcgTcgTcgUcgUcmAcejcmvcmucmxcmwcmBcmycmCcmCcmEcmDcmCcmFcmGcbycmIcmHcmKcmJcimcmLcmLcmMcljcmNcmPcmOcmOciAcibceVcmQcqgciGcnbciIcnccndcmRciGcmSciNcmWcfYcmXcnicnjciScnkciUclLclMclNcnlcnecnlclNaaaaaaaaabYfbYfbYfcnnclSclSclTbYfbYfaaaaaaaaaaaacdOcdOcdOcdOcdOcdOcdOcdOcdOcnocnpcnqcdScdScnrcnscnfcdScdScdScdScnucnscntcdScdScnvcnwcnvaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaafaafaafaaaaafcnxaafcnxaafcKBaafcKAaafcKBaafcKAaafaafaaacejcnAcnBcgUcgUcnCcnDcnhcngcnycnmcnEcnzcnzcnFcnzcnGcnIcnHcnGcnJcnLcnKcnNcnMcnOcnOcnOcnOcnQcnPcnRcnRcnRcgscgscgscgscnSciGcnTcnUcnccnVcnWciGcmSciNcnXciUcnYcnZcnjcoacobciUclLclMclNcoccodcoeclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacdOcofcogcohcwlcojcokcolcomconcopcoocdObqpaafaafcoqaafaaaaaaaaaaaaaaaaaaaaaaafcoscotcosaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaafaafaafaaaaafcnxaafcnxaafcKBaafcKAaafcKBaafcKAaafaafaaacejcnAcnBcgUcgUcnCcnDcnhcngcnycnmcnEcnzcnzcnFcnzcnGcnIcnHcnGcnJcnLcnKcnNcnMcnOcnOcnOcnOcnQcnPcnRcnRcnRcgscgscgscgscnSciGcnTcnUcnccnVcnWciGcmSciNcnXciUcnYcnZcnjcoacobciUclLclMclNcoccodcoeclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacdOcofcogcohcwlcojcokcolcomconcopcoocdOaaLaafaafcKcaafaaaaaaaaaaaaaaaaaaaaaaafcoscotcosaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafcoucowcovcoxcovcowcoycoxcoAcoBcoycoDcoCcoFcoEcnycnycnycnycnycnycnycnycoHcoGcoJcoIcoLcoKcoNcoMcoOcnGcoQcoPcoRcnGcoTcoScoUcnOcoWcoVcoYcoXcpacoZcpjcpbcpbcpkcpncpncpjbTFciGciGcpccpdciGciGciGcpeciNcpfciUciUciUcpgcphciUciUclLcpiclNcvmcpscvmclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafcdOcplcpmcplcvlcpocppcpqcomcomcprcomcdOcdOaaaaaaaaaaafaafaaaaacaaaaaaaaaaaaaafaaacvtaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaaaaaaaafcptcpvcpucpxcpwcpvcpycpAcpzcpCcpBcpFcpDcpJcpHcpMcpLcpOcpNcpTcpQcpVcpUcpXcpWcpZcpYcqbcqacqdcqccqfcqecqzcqtcqJcqIcoTcqKcqMcnOcpacpacpacpacpacqPcpjcqQcqQcqQcpncpncpjbTFcrYciGcqhcqicqjcqkciGcqlciNcqmciUcqncqocqpcqqciUcqrclLcpiclNcqscqRcquclNaaaaaaaaaaaaaaaaaacqvcqwcqxcqycqvaafaaaaaaaaaaaacdOcplcplcplcoicqAcqBcqCcqDcqEcqFcqGcqHcdOaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaacmZaaaaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafcqScpHcqUcqWcqVcpHcqXcpHcqYcqZcqXcpHcqYcqZcpHcpHcpHcpHcpHcracpHcpHcpHcqbcrbcpYcrccqXcqacrecrdcrgcrfcricrhcrkcrjcoTcqKcrlcnOcrmcpacpacrncpacrocpjcrpcrJcrIcrJcrKcpjbTFcrqciGcrrcrscrtcrucrvcrwcrxcrycrzcrAcrBcrCcrDciUcrEcrFcrGcrHcqvcrLcqvcrHaaaaaaaafaaaaaaaaacqvcrQcrScrRcqvaafaafaaaaaaaaacdOcomcomcomcomcrMcppcrNcrNcrNcnpcrNcrOcdOaaaaaaaaaaaaaaacrPcrPcrPbZSaafaafaafaafcnaaafaafaafaafaafaaqcrPcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 6cca0b6169a11d9ad089ad29a6a636b7bea19092 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 8 Mar 2015 23:02:29 +0100 Subject: [PATCH 08/43] Station Alert Runtime Fix Fixes an issue where station alert consoles could potentially runtime due to alarm_monitor not yet being initialized. --- code/game/machinery/computer/station_alert.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm index 84ce5cc0d1..279f5fe1a2 100644 --- a/code/game/machinery/computer/station_alert.dm +++ b/code/game/machinery/computer/station_alert.dm @@ -8,9 +8,9 @@ var/obj/nano_module/alarm_monitor/engineering/alarm_monitor /obj/machinery/computer/station_alert/New() - ..() alarm_monitor = new(src) alarm_monitor.register(src, /obj/machinery/computer/station_alert/update_icon) + ..() /obj/machinery/computer/station_alert/Del() alarm_monitor.unregister(src) From e5a9b686aa1c3a7558affeed8c97aa2634c7deca Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 02:02:10 -0400 Subject: [PATCH 09/43] Fixes human examine Fixes issues introduced with the examine tab system by decoupling the examine() proc from the code that updates a mob's description holders. Puts a few things in more logical places. --- code/modules/examine/examine.dm | 56 ++++++++----------- .../mob/living/carbon/human/examine.dm | 1 - code/modules/mob/mob.dm | 3 + 3 files changed, 27 insertions(+), 33 deletions(-) diff --git a/code/modules/examine/examine.dm b/code/modules/examine/examine.dm index 392f897c68..6f797f5cb9 100644 --- a/code/modules/examine/examine.dm +++ b/code/modules/examine/examine.dm @@ -11,26 +11,7 @@ var/description_fluff = null //Green text about the atom's fluff, if any exists. var/description_antag = null //Malicious red text, for the antags. -/atom/examine(mob/user, var/distance = -1, var/infix = "", var/suffix = "") - . = ..() - user.description_holders["info"] = get_description_info() - user.description_holders["fluff"] = get_description_fluff() - if(user.mind && user.mind.special_role || isobserver(user)) //Runtime prevention, as ghosts don't have minds. - user.description_holders["antag"] = get_description_antag() - - if(name) //This shouldn't be needed but I'm paranoid. - user.description_holders["name"] = "[src.name]" //\icon[src] - - user.description_holders["icon"] = "\icon[src]" - - if(desc) - user << desc - user.description_holders["desc"] = src.desc - else - user.description_holders["desc"] = null //This is needed, or else if you examine one thing with a desc, then another without, the panel will retain the first examined's desc. - //Override these if you need special behaviour for a specific type. - /atom/proc/get_description_info() if(description_info) return description_info @@ -46,10 +27,30 @@ return description_antag return -/mob/ - var/description_holders[0] +/mob/living/get_description_fluff() + if(flavor_text) //Get flavor text for the green text. + return flavor_text + else //No flavor text? Try for hardcoded fluff instead. + return ..() -/mob/Stat() +/mob/living/carbon/human/get_description_fluff() + return print_flavor_text(0) + +/* The examine panel itself */ + +/client/var/description_holders[0] + +/client/proc/update_description_holders(atom/A) + description_holders["info"] = A.get_description_info() + description_holders["fluff"] = A.get_description_fluff() + if(mob.mind && mob.mind.special_role || isobserver(src)) //ghosts don't have minds. + description_holders["antag"] = A.get_description_antag() + + description_holders["name"] = "[A.name]" + description_holders["icon"] = "\icon[A]" + description_holders["desc"] = A.desc + +/client/Stat() ..() if(statpanel("Examine")) stat(null,"[description_holders["icon"]] [description_holders["name"]]") //The name, written in big letters. @@ -59,13 +60,4 @@ if(description_holders["fluff"]) stat(null,"[description_holders["fluff"]]") //Yellow, fluff-related text. if(description_holders["antag"]) - stat(null,"[description_holders["antag"]]") //Red, malicious antag-related text - -/mob/living/get_description_fluff() - if(flavor_text) //Get flavor text for the green text. - return flavor_text - else //No flavor text? Try for hardcoded fluff instead. - return ..() - -/mob/living/carbon/human/get_description_fluff() - return print_flavor_text(0) + stat(null,"[description_holders["antag"]]") //Red, malicious antag-related text \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 277f88c809..3630d609a3 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -451,7 +451,6 @@ msg += "\n[t_He] is [pose]" user << msg - ..() //Helper procedure. Called by /mob/living/carbon/human/examine() and /mob/living/carbon/human/Topic() to determine HUD access to security and medical records. /proc/hasHUD(mob/M as mob, hudtype) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 61959ab49c..c3e5fbf90b 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -232,6 +232,9 @@ var/list/slot_equipment_priority = list( \ face_atom(A) A.examine(src) + + if(client) + client.update_description_holders(A) /mob/verb/pointed(atom/A as mob|obj|turf in view()) set name = "Point To" From 0b5575897dfb10673e6f6e525359f6de6e7ba2d4 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 02:34:21 -0400 Subject: [PATCH 10/43] Updates maint drone helptext --- code/modules/examine/descriptions/mobs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/examine/descriptions/mobs.dm b/code/modules/examine/descriptions/mobs.dm index 8197e6f3d1..8961b9f367 100644 --- a/code/modules/examine/descriptions/mobs.dm +++ b/code/modules/examine/descriptions/mobs.dm @@ -3,6 +3,6 @@ interact with anyone else, except for other drones. They hold a wide array of tools to build, repair, maintain, and clean. \ They fuction similarly to other synthetics, in that they require recharging regularly, have laws, and are resilient to many hazards, \ such as fire, radiation, vacuum, and more. Ghosts can join the round as a maintenance drone by using the appropriate verb in the 'ghost' tab. \ - An inactive drone can be rebooted by swiping an ID card on it with engineering or robotics access." + An inactive drone can be rebooted by swiping an ID card on it with engineering or robotics access, and an active drone can be shut down in the same manner." description_antag = "An Electromagnetic Sequencer can be used to subvert the drone to your cause." \ No newline at end of file From 5abf0248fc4c30a1e9328d52ceba23d95273d5b9 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 03:14:26 -0400 Subject: [PATCH 11/43] Firing the Z8 grenade launch automatically switches back to regular firing. --- code/modules/projectiles/guns/projectile/automatic.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 8575d63754..3a0cca54e3 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -128,6 +128,8 @@ /obj/item/weapon/gun/projectile/automatic/z8/Fire(atom/target, mob/living/user, params, pointblank=0, reflex=0) if(use_launcher) launcher.Fire(target, user, params, pointblank, reflex) + if(!launcher.chambered) + use_launcher = 0 //switch back automatically else ..() From 4c7138db14988ec5bc89458e06fa1038382849f0 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 03:15:45 -0400 Subject: [PATCH 12/43] Adds four mercenary vests to the merc base, tweaks --- code/modules/clothing/suits/armor.dm | 100 +++++++++++++-------------- maps/exodus-2.dmm | 13 ++-- 2 files changed, 57 insertions(+), 56 deletions(-) diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 0b0791a918..6ff7b25f47 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -22,7 +22,7 @@ /obj/item/clothing/suit/armor/vest/security name = "security armor" - desc = "An armored vest that protects against some damage. This one has NanoTrasen corporate badge." + desc = "An armored vest that protects against some damage. This one has a NanoTrasen corporate badge." icon_state = "armorsec" item_state = "armor" @@ -139,53 +139,6 @@ src.item_state = "reactiveoff" ..() - -//All of the armor below is mostly unused - - -/obj/item/clothing/suit/armor/centcomm - name = "Cent. Com. armor" - desc = "A suit that protects against some damage." - icon_state = "centcom" - item_state = "centcom" - w_class = 4//bulky item - body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS - allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS - min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE - siemens_coefficient = 0 - -/obj/item/clothing/suit/armor/heavy - name = "heavy armor" - desc = "A heavily armored suit that protects against moderate damage." - icon_state = "heavy" - item_state = "swat_suit" - w_class = 4//bulky item - gas_transfer_coefficient = 0.90 - body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS - slowdown = 3 - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - siemens_coefficient = 0 - -/obj/item/clothing/suit/armor/tdome - body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - -/obj/item/clothing/suit/armor/tdome/red - name = "Thunderdome suit (red)" - desc = "Reddish armor." - icon_state = "tdred" - item_state = "tdred" - siemens_coefficient = 1 - -/obj/item/clothing/suit/armor/tdome/green - name = "Thunderdome suit (green)" - desc = "Pukish armor." - icon_state = "tdgreen" - item_state = "tdgreen" - siemens_coefficient = 1 - /obj/item/clothing/suit/armor/tactical name = "tactical armor" desc = "A suit of armor most often used by Special Weapons and Tactics squads. Includes padded vest with pockets along with shoulder and kneeguards." @@ -228,6 +181,7 @@ desc = "A set of armor worn by members of the NanoTrasen Emergency Response Team." icon_state = "ertarmor_cmd" item_state = "armor" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 20, bio = 0, rad = 0) //Commander @@ -342,11 +296,57 @@ icon_badge = "pcrcwebvest_badge" icon_nobadge = "pcrcwebvest_nobadge" +//Provides the protection of a merc voidsuit, but only covers the chest/groin, and also takes up a suit slot. In exchange it has no slowdown and provides storage. /obj/item/clothing/suit/storage/vest/heavy/merc - name = "comfortable heavy armor vest" - desc = "A heavy kevlar plate carrier in a fetching tan. Fits pretty well." + name = "heavy armor vest" + desc = "A high-quality heavy kevlar plate carrier in a fetching tan. The vest is surprisingly flexible, and possibly made of an advanced material." icon_state = "mercwebvest" item_state = "mercwebvest" armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0) slowdown = 0 +//All of the armor below is mostly unused + + +/obj/item/clothing/suit/armor/centcomm + name = "Cent. Com. armor" + desc = "A suit that protects against some damage." + icon_state = "centcom" + item_state = "centcom" + w_class = 4//bulky item + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS + allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT + cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS + min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE + siemens_coefficient = 0 + +/obj/item/clothing/suit/armor/heavy + name = "heavy armor" + desc = "A heavily armored suit that protects against moderate damage." + icon_state = "heavy" + item_state = "swat_suit" + w_class = 4//bulky item + gas_transfer_coefficient = 0.90 + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS + slowdown = 3 + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT + siemens_coefficient = 0 + +/obj/item/clothing/suit/armor/tdome + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT + +/obj/item/clothing/suit/armor/tdome/red + name = "Thunderdome suit (red)" + desc = "Reddish armor." + icon_state = "tdred" + item_state = "tdred" + siemens_coefficient = 1 + +/obj/item/clothing/suit/armor/tdome/green + name = "Thunderdome suit (green)" + desc = "Pukish armor." + icon_state = "tdgreen" + item_state = "tdgreen" + siemens_coefficient = 1 diff --git a/maps/exodus-2.dmm b/maps/exodus-2.dmm index 5abdbb4154..b70ca1a11c 100644 --- a/maps/exodus-2.dmm +++ b/maps/exodus-2.dmm @@ -1972,6 +1972,7 @@ "LV" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area/space) "LW" = (/obj/structure/table/rack,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/maneuvering_jets,/obj/item/rig_module/maneuvering_jets,/obj/item/rig_module/grenade_launcher,/obj/item/rig_module/device/drill,/obj/item/rig_module/device/drill,/obj/item/rig_module/device/healthscanner,/obj/item/rig_module/device/healthscanner,/obj/item/rig_module/device/plasmacutter,/obj/item/rig_module/device/plasmacutter,/obj/item/rig_module/device/rcd,/obj/item/rig_module/device/rcd,/obj/item/rig_module/chem_dispenser/injector,/obj/item/rig_module/chem_dispenser/injector,/obj/item/rig_module/chem_dispenser/combat,/obj/item/rig_module/chem_dispenser/combat,/obj/item/rig_module/mounted/egun,/obj/item/rig_module/mounted/egun,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "LX" = (/obj/structure/table/reinforced,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) +"LY" = (/obj/structure/table/rack,/obj/item/clothing/suit/storage/vest/heavy/merc{pixel_x = 2; pixel_y = 2},/obj/item/clothing/suit/storage/vest/heavy/merc{pixel_x = -2; pixel_y = -2},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "MA" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns12,/area/space) "MO" = (/obj/machinery/vending/cigarette{contraband = newlist(); premium = newlist(); prices = list(/obj/item/weapon/storage/fancy/cigarettes = 15, /obj/item/weapon/storage/box/matches = 1, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 20); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "MP" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) @@ -2139,12 +2140,12 @@ aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMmumumumumuaMaMaMaMaMaMmumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMihmWmWmWihmumumumumumumumumumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMmumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmZnananbihihncihihihihihihihmumumumumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMmumumumumumuaMaMaMaMaMaMaMaMaMaMnvrPrIrIrIrBnzaMaMndnenfngnenenerlihninjnknlihmumumumumumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMmumumumumuaMaMaMaMaMaMaMaMaMnvnHnInJnKnLnMnHnzaMndnenmnmnenenenennnonononpihmumumumumumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMmumumumuaMaMaMaMaMaMaMaMaMnHnQnRnRnSnRnRnLnHaMndnqnrnsntneneneihnonononuihihihihihmumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMmumuaMaMaMaMaMaMaMaMaMaMnHnZnRnRnRnRoanLnHaMndnenAnAnenenepaihnCnonDnEihbLkQbOihmumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHofnRnRognRnRohnHaMndneneneneneneriihihihihihihbPkQbTihmumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMomnHonnHnHnHnHnHooaMnTnananUihkdkdkdihkTkTnVnWihcikQmkihmumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHoGoyoaounFnHaMaMaMaMaMaMobkdkdkdoclalaododihcikQnGihmumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMmumumumumuaMaMaMaMaMaMaMaMaMnvnHnInJnKnLnMnHnzaMndnenmnmnenenenennnonononpihihihihihmumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMmumumumuaMaMaMaMaMaMaMaMaMnHnQnRnRnSnRnRnLnHaMndnqnrnsntneneneihnonononuihbOkQbTihmumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMmumuaMaMaMaMaMaMaMaMaMaMnHnZnRnRnRnRoanLnHaMndnenAnAnenenepaihnCnonDnEihbLkQmkihmumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHofnRnRognRnRohnHaMndneneneneneneriihihihihihihbPkQnGihmumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMomnHonnHnHnHnHnHooaMnTnananUihkdkdkdihkTkTnVnWihcikQLYihmumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHoGoyoaounFnHaMaMaMaMaMaMobkdkdkdoclalaododihcikQLYihmumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHoBoAoanRornHaMaMaMaMaMaMoikdkdkdihojlaihihihokolokihihihihmumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnvnHoBoyoanRornHnzaMaMmPmKoFihkdkdkdihihihihnOnOkQkQkQnPnPpKihihmumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnvnHnHnHnHvLoyoanRornHnHnHnHnzototihkdkdkdkdihnYnXkQkQkQkQkQkQkQkQqKihmumumumumumu From 17780e196a0b1ed19120aa7b36c05501d0efe24c Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 03:18:38 -0400 Subject: [PATCH 13/43] Fixes medical record cabinet runtime --- code/modules/paperwork/filingcabinet.dm | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index 5bb1dde195..67eb5c9aeb 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -147,16 +147,18 @@ if((R.fields["name"] == G.fields["name"] || R.fields["id"] == G.fields["id"])) M = R break - var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(src) - P.info = "
Medical Record

" - P.info += "Name: [G.fields["name"]] ID: [G.fields["id"]]
\nSex: [G.fields["sex"]]
\nAge: [G.fields["age"]]
\nFingerprint: [G.fields["fingerprint"]]
\nPhysical Status: [G.fields["p_stat"]]
\nMental Status: [G.fields["m_stat"]]
" - P.info += "
\n
Medical Data

\nBlood Type: [M.fields["b_type"]]
\nDNA: [M.fields["b_dna"]]
\n
\nMinor Disabilities: [M.fields["mi_dis"]]
\nDetails: [M.fields["mi_dis_d"]]
\n
\nMajor Disabilities: [M.fields["ma_dis"]]
\nDetails: [M.fields["ma_dis_d"]]
\n
\nAllergies: [M.fields["alg"]]
\nDetails: [M.fields["alg_d"]]
\n
\nCurrent Diseases: [M.fields["cdi"]] (per disease info placed in log/comment section)
\nDetails: [M.fields["cdi_d"]]
\n
\nImportant Notes:
\n\t[M.fields["notes"]]
\n
\n
Comments/Log

" - var/counter = 1 - while(M.fields["com_[counter]"]) - P.info += "[M.fields["com_[counter]"]]
" - counter++ - P.info += "" - P.name = "Medical Record ([G.fields["name"]])" + if(M) + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(src) + P.info = "
Medical Record

" + P.info += "Name: [G.fields["name"]] ID: [G.fields["id"]]
\nSex: [G.fields["sex"]]
\nAge: [G.fields["age"]]
\nFingerprint: [G.fields["fingerprint"]]
\nPhysical Status: [G.fields["p_stat"]]
\nMental Status: [G.fields["m_stat"]]
" + + P.info += "
\n
Medical Data

\nBlood Type: [M.fields["b_type"]]
\nDNA: [M.fields["b_dna"]]
\n
\nMinor Disabilities: [M.fields["mi_dis"]]
\nDetails: [M.fields["mi_dis_d"]]
\n
\nMajor Disabilities: [M.fields["ma_dis"]]
\nDetails: [M.fields["ma_dis_d"]]
\n
\nAllergies: [M.fields["alg"]]
\nDetails: [M.fields["alg_d"]]
\n
\nCurrent Diseases: [M.fields["cdi"]] (per disease info placed in log/comment section)
\nDetails: [M.fields["cdi_d"]]
\n
\nImportant Notes:
\n\t[M.fields["notes"]]
\n
\n
Comments/Log

" + var/counter = 1 + while(M.fields["com_[counter]"]) + P.info += "[M.fields["com_[counter]"]]
" + counter++ + P.info += "" + P.name = "Medical Record ([G.fields["name"]])" virgin = 0 //tabbing here is correct- it's possible for people to try and use it //before the records have been generated, so we do this inside the loop. ..() From a28378f81957290995ee7ec3df53883833f27f7b Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 03:28:37 -0400 Subject: [PATCH 14/43] Fixes space movement runtime --- code/modules/mob/mob_movement.dm | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index cdfde01107..efd2c52740 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -453,23 +453,18 @@ if(istype(turf,/turf/space)) continue - if(istype(src,/mob/living/carbon/human/)) // Only humans can wear magboots, so we give them a chance to. - var/mob/living/carbon/human/H = src - if((istype(turf,/turf/simulated/floor)) && (src.lastarea.has_gravity == 0) && !(istype(H.shoes, /obj/item/clothing/shoes/magboots) && (H.shoes.flags & NOSLIP))) - continue - - - else - if((istype(turf,/turf/simulated/floor)) && (src.lastarea.has_gravity == 0)) // No one else gets a chance. - continue - - - - /* - if(istype(turf,/turf/simulated/floor) && (src.flags & NOGRAV)) - continue - */ - + if(istype(turf,/turf/simulated/floor)) // Floors don't count if they don't have gravity + var/area/A = turf.loc + if(istype(A) && A.has_gravity == 0) + var/can_walk = 0 + + if(ishuman(src)) // Only humans can wear magboots, so we give them a chance to. + var/mob/living/carbon/human/H = src + if(istype(H.shoes, /obj/item/clothing/shoes/magboots) && (H.shoes.flags & NOSLIP)) + can_walk = 1 + + if(!can_walk) + continue dense_object++ break From d37b5a896f1d10306bd5f2d5690d1545d2240083 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 03:43:56 -0400 Subject: [PATCH 15/43] Gives the mercs two bloodpacks, which they seem to have been missing due to an oversight --- maps/exodus-2.dmm | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/maps/exodus-2.dmm b/maps/exodus-2.dmm index b70ca1a11c..fa74e7fc1e 100644 --- a/maps/exodus-2.dmm +++ b/maps/exodus-2.dmm @@ -884,7 +884,7 @@ "qZ" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "ra" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "rb" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 4; start_pressure = 740.5},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"rc" = (/obj/structure/table,/obj/item/roller{pixel_y = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"rc" = (/obj/structure/table/rack,/obj/item/clothing/suit/storage/vest/heavy/merc{pixel_x = 2; pixel_y = 2},/obj/item/clothing/suit/storage/vest/heavy/merc{pixel_x = -2; pixel_y = -2},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "rd" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "synd_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "re" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "rf" = (/obj/structure/table,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/signaler{pixel_y = 2},/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) @@ -951,7 +951,7 @@ "so" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/meter,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "sp" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/obj/item/weapon/bonesetter,/obj/item/weapon/bonegel,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "sq" = (/obj/machinery/door/window{dir = 1; name = "Surgery"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"sr" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"sr" = (/obj/structure/table,/obj/item/roller{pixel_y = 8},/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "ss" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/storage/firstaid/toxin{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/adv{pixel_x = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "st" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/fire{pixel_x = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "su" = (/obj/item/weapon/weldingtool,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) @@ -967,7 +967,7 @@ "sE" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/shuttle/floor,/area/supply/dock) "sF" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "supply_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/plating,/area/supply/dock) "sG" = (/obj/structure/table,/obj/item/weapon/scalpel,/obj/item/weapon/circular_saw{pixel_y = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"sH" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"sH" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/iv_drip,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "sI" = (/obj/machinery/door_control{id = "syndieshutters_telebay"; name = "remote shutter control"; pixel_x = 0; pixel_y = -25; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "sJ" = (/obj/effect/landmark{name = "Nuclear-Bomb"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "sK" = (/obj/item/weapon/crowbar,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) @@ -1944,7 +1944,7 @@ "Lt" = (/obj/item/weapon/spacecash/c200,/obj/item/weapon/spacecash/c50,/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) "Lu" = (/turf/unsimulated/floor{tag = "icon-ironsand7"; icon_state = "ironsand7"},/turf/unsimulated/floor{tag = "icon-asteroid7"; name = "plating"; icon_state = "asteroid7"},/area/wizard_station) "Lv" = (/turf/unsimulated/floor{tag = "icon-ironsand12"; icon_state = "ironsand12"},/turf/unsimulated/floor{tag = "icon-asteroid2"; name = "plating"; icon_state = "asteroid2"},/area/wizard_station) -"Lw" = (/obj/structure/closet/secure_closet/medical_wall{pixel_y = 0; req_access = null; req_access_txt = "150"},/obj/item/weapon/surgicaldrill,/obj/item/clothing/gloves/latex,/obj/item/clothing/mask/surgical,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/syringe,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start) +"Lw" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/syringe,/obj/item/clothing/mask/surgical,/obj/item/clothing/gloves/latex,/obj/item/weapon/surgicaldrill,/obj/structure/closet/secure_closet/medical_wall{pixel_x = 32; pixel_y = 0; req_access = null; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "Lx" = (/obj/structure/sign/nosmoking_2{pixel_x = 32},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "Ly" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/handcuffs,/obj/item/clothing/glasses/sunglasses/sechud{pixel_y = 3},/obj/item/clothing/glasses/sunglasses/sechud{pixel_y = 3},/obj/item/clothing/glasses/sunglasses/sechud{pixel_y = 3},/obj/item/clothing/glasses/sunglasses/sechud{pixel_y = 3},/obj/item/clothing/glasses/night{pixel_x = -1; pixel_y = -3},/obj/item/clothing/glasses/night{pixel_x = -1; pixel_y = -3},/obj/item/clothing/glasses/night{pixel_x = -1; pixel_y = -3},/obj/item/clothing/glasses/night,/obj/item/weapon/storage/box/handcuffs,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "Lz" = (/turf/simulated/floor/holofloor{icon_state = "carpet7-3"; dir = 4},/area/holodeck/source_theatre) @@ -1972,7 +1972,6 @@ "LV" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area/space) "LW" = (/obj/structure/table/rack,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/maneuvering_jets,/obj/item/rig_module/maneuvering_jets,/obj/item/rig_module/grenade_launcher,/obj/item/rig_module/device/drill,/obj/item/rig_module/device/drill,/obj/item/rig_module/device/healthscanner,/obj/item/rig_module/device/healthscanner,/obj/item/rig_module/device/plasmacutter,/obj/item/rig_module/device/plasmacutter,/obj/item/rig_module/device/rcd,/obj/item/rig_module/device/rcd,/obj/item/rig_module/chem_dispenser/injector,/obj/item/rig_module/chem_dispenser/injector,/obj/item/rig_module/chem_dispenser/combat,/obj/item/rig_module/chem_dispenser/combat,/obj/item/rig_module/mounted/egun,/obj/item/rig_module/mounted/egun,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "LX" = (/obj/structure/table/reinforced,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) -"LY" = (/obj/structure/table/rack,/obj/item/clothing/suit/storage/vest/heavy/merc{pixel_x = 2; pixel_y = 2},/obj/item/clothing/suit/storage/vest/heavy/merc{pixel_x = -2; pixel_y = -2},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "MA" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns12,/area/space) "MO" = (/obj/machinery/vending/cigarette{contraband = newlist(); premium = newlist(); prices = list(/obj/item/weapon/storage/fancy/cigarettes = 15, /obj/item/weapon/storage/box/matches = 1, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 20); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "MP" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) @@ -2144,8 +2143,8 @@ aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMmumumumuaMaMaMaMaMaMaMaMaMnHnQnRnRnSnRnRnLnHaMndnqnrnsntneneneihnonononuihbOkQbTihmumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMmumuaMaMaMaMaMaMaMaMaMaMnHnZnRnRnRnRoanLnHaMndnenAnAnenenepaihnCnonDnEihbLkQmkihmumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHofnRnRognRnRohnHaMndneneneneneneriihihihihihihbPkQnGihmumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMomnHonnHnHnHnHnHooaMnTnananUihkdkdkdihkTkTnVnWihcikQLYihmumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHoGoyoaounFnHaMaMaMaMaMaMobkdkdkdoclalaododihcikQLYihmumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMomnHonnHnHnHnHnHooaMnTnananUihkdkdkdihkTkTnVnWihcikQrcihmumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHoGoyoaounFnHaMaMaMaMaMaMobkdkdkdoclalaododihcikQrcihmumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHoBoAoanRornHaMaMaMaMaMaMoikdkdkdihojlaihihihokolokihihihihmumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnvnHoBoyoanRornHnzaMaMmPmKoFihkdkdkdihihihihnOnOkQkQkQnPnPpKihihmumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnvnHnHnHnHvLoyoanRornHnHnHnHnzototihkdkdkdkdihnYnXkQkQkQkQkQkQkQkQqKihmumumumumumu @@ -2156,13 +2155,13 @@ aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUoVoVoVpdpepepepepfpfpepepepepgoVoVoVoVoNaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMmumumumuaMaMaMaMnHqanRnRnRqbnRnRnRqcnRnRnRqdnHmKmKmKmKaMaMaMaMmumumuihoEkQoEihmumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUoVoVpdpppqprpspeptpupepvpwpepepepgoVoVoNaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMmumumumumuaMaMaMaMnHqCnRnRnRqDnRnRnRqEnRnRnRqFnHaMaMaMaMaMaMaMaMaMmumuihoEkQoEihmumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUoVpdpepBpBpBpBpepCpCpepBpBpDpEpepepgoVpFpFpFpFpFaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMmumumumuaMaMaMaMnvnHnHnHnHnHnHnRnRnRnHnHnHnHnHnHnzaMaMaMaMaMmAaMmBmumuihoEkQoEihmumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUpdpepepMpNpOpPpepBpBpQpBpBpBpBpRpSpeoVpFpTpUpVpFpFpFpFpFpWpXpXpYpFpFaMaMaMaMaMaMaMaMpZpZpZpZpZpZpZpZpZpZpZaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMmumumumuaMaMaMaMnHqZrasercsvnHrenRnRnHrfrfrfrgrgnHaMaMaMaMaMmAmBmumumuihoEkQoEihmumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUpdpepepMpNpOpPpepBpBpQpBpBpBpBpRpSpeoVpFpTpUpVpFpFpFpFpFpWpXpXpYpFpFaMaMaMaMaMaMaMaMpZpZpZpZpZpZpZpZpZpZpZaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMmumumumuaMaMaMaMnHqZrasesrsvnHrenRnRnHrfrfrfrgrgnHaMaMaMaMaMmAmBmumumuihoEkQoEihmumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUqeqfqgpBqhqhqhpepBpBpeqiqjqkqlqmqnpeoVpFqopUpUqpqqqrqsqtquqsqvqwqxpFpFpFpFpFpFpFpFpFpFqyqzqzqzqzqzqzqzqAqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMmumumuaMaMaMaMaMnxrjrjrjrjrjnHnRnRnRnHrenRnRnRrknwaMaMaMaMaMmPaMmumumuihihyxihihmumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUqGqfpBpBpBpBpBpQpBpBpepepepepepepeqHqIpFpFpFpFpFqqqvqsqJOaqsqvqvqvqLqMqMqMqMqMqMqMqMqNqyqOqPqPqPqPqPqQqAqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMmumuaMaMaMaMaMaMnhrCrDrjrjrjrEnRnRnRrFnRnRnRrGrHmiaMaMaMaMaMmAmBmBmumumuihihihmumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUqRpeqSpBqSpBqSpepBpBpBqTqUoVoVoVoVoVqVqWqMqMqMqLqvqvqvqvqvqvqvqvqvqLqMqMqMqMqMqMqMqMqNqyqXqYqYqYqYqYqXqAqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnyrjrjrjrjrjrQnRnRnRrRnRnRnRnRrSnBaMaMaMaMaMmAaMaMmBmumumumumumumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUoVpepepepepepepepBpBrhpBqUoVoVoVoVoVqVqWqMqMqMqLqvqvqvqvqvqvqvqqqqpFpFpFpFpFpFpFpFpFpZqyqXqYqYqYqYqYqXpZqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHsbrjrjrjscnHpzsdpznHoKoKsInRsfnHaMaMaMaMaMaMaMaMaMmumumumumumumumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUpdpermrnrormrppepBpBpBrqqUoVoVoVoVoVoVpFpFpFpFpFqvqvqsqJquqsqvrrrspFrtrururvpFrwrxrypZqzqXqYqYqYqYrzrApZqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHspsqsrssstnHsunRvUnHyCnHnHnNnHnHaMaMaMaMaMaMaMmAaMmBmumumumumumumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUqeqfrJrJrJrJrJpQpBpBpepepepepepepepgoVpFpTpUpVpFqvqvqsqJrKqsqvqqqqpFrLrLrLrLpFrMrxrNpZqzqXqYqYqYqYqYrOpZqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHsGrjsHLwnHnHnRsJsKnHnHnHnRnRLxnHaMaMaMaMaMaMaMmAmBmBmumumumumumumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUpdpermrnrormrppepBpBpBrqqUoVoVoVoVoVoVpFpFpFpFpFqvqvqsqJquqsqvrrrspFrtrururvpFrwrxrypZqzqXqYqYqYqYrzrApZqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHspsqsHssstnHsunRvUnHyCnHnHnNnHnHaMaMaMaMaMaMaMmAaMmBmumumumumumumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUqeqfrJrJrJrJrJpQpBpBpepepepepepepepgoVpFpTpUpVpFqvqvqsqJrKqsqvqqqqpFrLrLrLrLpFrMrxrNpZqzqXqYqYqYqYqYrOpZqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHsGrjLwnHnHnHnRsJsKnHnHnHnRnRLxnHaMaMaMaMaMaMaMmAmBmBmumumumumumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUqGqfrUrJrJrJrJpepBpBpBpBpBpepBrVrWpeoVpFqopUpUqpqvqvqvqvqvqvqvqvqvpFrLrXrYrYpFpFrZpFpZqzqXqYqYqYqYsaqXpZqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHsWsXsYnHaMnHsZsZsZnHaMnHnLtatbnHaMaMaMaMaMaMaMmAaMmBaMmumumumumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUqRpepesgshshshpepBpNsipNpBpQpBsjskpeoVpFpFpFpFpFpFpFslpFpFpFqvqvqvsmrLsnsnrLrLrLrLrYpZqzqXqYqYqYqYqYrOpZqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHsZsZsZnHaMomtmtntoooaMnHsZsZsZnHaMaMaMaMaMaMaMmAmBmBmBmBmBmumumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUoVqRperJrJrJrJpepBsipNsipBpeqSpepeqHoVpFsxsyszpFsAsBsBsBsCpFqvqvqvqvrLrLrLrLsDrLrLrYpZqzqXqYqYqYqYsEsFpZqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMmumuaMaMaMomtmtntoooaMaMaMaMaMaMaMomtmtntoooaMaMaMaMaMaMaMmAaMmBaMmBaMaMmumumumumumumumumumumu From bbae1a49e5f479343098fc3fd9316ff81c06656a Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Mon, 9 Mar 2015 09:04:22 +0000 Subject: [PATCH 16/43] Fixes vines spreading through doors --- code/modules/hydroponics/spreading/spreading_growth.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/hydroponics/spreading/spreading_growth.dm b/code/modules/hydroponics/spreading/spreading_growth.dm index 804ec8f08a..257d2219ba 100644 --- a/code/modules/hydroponics/spreading/spreading_growth.dm +++ b/code/modules/hydroponics/spreading/spreading_growth.dm @@ -20,7 +20,7 @@ if(!isnull(seed.chems["pacid"])) spawn(rand(5,25)) floor.ex_act(3) continue - if(!Adjacent(floor)) + if(!Adjacent(floor) || !floor.Enter(src)) continue neighbors |= floor // Update all of our friends. From c03535f03dd31bfae2c7404763309095f2928d81 Mon Sep 17 00:00:00 2001 From: Neerti Date: Mon, 9 Mar 2015 11:07:21 -0400 Subject: [PATCH 17/43] Makes the width of the nanoUI for air alarms smaller. --- code/game/machinery/alarm.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 0f2af7485f..32847060d2 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -488,7 +488,7 @@ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if(!ui) - ui = new(user, src, ui_key, "air_alarm.tmpl", src.name, 625, 625, master_ui = master_ui, custom_state = custom_state) + ui = new(user, src, ui_key, "air_alarm.tmpl", src.name, 325, 625, master_ui = master_ui, custom_state = custom_state) ui.set_initial_data(data) ui.open() ui.set_auto_update(1) From 721bdac9046200843f1662adbc4ad428330e04d2 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 11:41:27 -0400 Subject: [PATCH 18/43] Fixes atmos space vent pump Fixes atmos space vent pump not being on and shifts it closer so that it is visible from inside atmos. --- maps/exodus-1.dmm | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index e19eaf628a..8b680f0f3a 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -6216,7 +6216,7 @@ "cpB" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{icon_state = "red"; dir = 9},/area/engineering/atmos) "cpC" = (/obj/machinery/atmospherics/binary/pump,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engineering/atmos) "cpD" = (/obj/machinery/atmospherics/valve/digital/open{name = "Nitrogen Outlet Valve"},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/engineering/atmos) -"cpE" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/space,/area/space) +"cpE" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; pressure_checks = 1; pressure_checks_default = 1; use_power = 1},/turf/simulated/floor/plating/airless,/area/engineering/atmos) "cpF" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "n2_in"; name = "Nitrogen Supply Control"; output_tag = "n2_out"; sensors = list("n2_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/engineering/atmos) "cpG" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/space,/area/space) "cpH" = (/turf/simulated/floor,/area/engineering/atmos) @@ -6853,7 +6853,7 @@ "cBO" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/turf/simulated/floor/plating/airless,/area/medical/virology) "cBP" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor/plating/airless,/area/medical/virology) "cBQ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; pressure_checks = 1; pressure_checks_default = 1; use_power = 1},/turf/simulated/floor/plating/airless,/area/medical/virology) -"cBR" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; pressure_checks = 1; pressure_checks_default = 1},/turf/simulated/floor/plating/airless,/area/engineering/atmos) +"cBR" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/structure/lattice,/turf/space,/area/space) "cBS" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating,/area/engineering/atmos) "cBT" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos) "cBU" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos) @@ -7472,17 +7472,17 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacptcpHcpHcpHcpHcpHcwUcpHcpHcpHcwUcpHcpHcpHcpHcpHcqYcpHcpHcwVcqWcwXcwWcwWcwXcwYcwXcxacwZcxbcwWcxdcxccxocxlcxpcvYcoTcxqcoTcxrcxscpacpacxtcpacxucpjcxvcxvcxwcwucwtcpjbPxcvMcvNcxKcxLcxMcxNcxOcxNcxPcvNcxQcxRcrGaaaaaaaaaaaaaaaaaacqvcxScxTcxUcxVcxWcxXcxYcxZcuTcyacuScxAcuTcxBcqvcqvcqvcqvaaaaaacdOcplcpmcplctbcpocppcrNcrNcyecyfcrNcygcomcomcomcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaafcrPaaaaaaaaaaaaaaaaaaaaaaaacyhaaaaaaaaacyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacptcpHcsbcsacsacxDcxCcsacxDcsacxEcxDcsacsacsacsacxFcsacxGcxIcxHcvKcpHcpHcxJcyccybcyjcyicykcpHcymcylcyncyncyqcyocoTcxqcyrcnOcyscpacytcpacyvcyucpjcpjcpjcpjcpjcpjcpjbPxcvMcvNcyMcyNcxLcyOcxLcxNcyPcvNcyQcyRcrGaaaaaaaaaaaaaaaaaacqvcuVcySctFctFcyTcywcyVcyWctMctDctNcyxctMcuRcyYcqvaaaaaaaaaaaacdOcplcplcplckXcyZczacrNcrNcrNcyfcrNczbcrNczccrNczdaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacptcpHcqXcpHcpHcpHcwUcpHcpHcpHcwUcpHcpHcpHcpHcpHcqYcpHcybcpHcyycvKcpHcpHcyzcwYcyAcyBcvXcyCcvXcvXcylcyEcyDcyFcyocoTcxqcoTcnOcyHcyGcyJcyIcyKcpacnOcyLczJczJcyUczLczMczNczOcvNcxNczPczQcxNczRczSczTcvNczUczVcrGaaaaaaaaaaaaaaaaaacqvczWcuMczXcuVczYczZcAactFcAbcAccsPcyxczWcyXcAecqvaaaaaaaaaaaackEcdOcAfcAgcAgczecAicAjcAkcAlcAmcAncAocApcAqcokcAraaaaaacrPaafcwjcwjcwjcwjcwjaaackxaafcwjcwjcwjcwjcwjaaacrPaaacyhaaaaaacyhaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhaaaaaacyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaczfcpHcqXcpHczgcrVcrUcrVczhcrVcrUcrVczhcrVcrVcrVczjczkczjcrZczlcyAczmczocznczqczpczrcvXcztczscvXcvXcvXcvXcvXczucnLczvcnLcnOcnOcnOcnOcnOcnOcnOcnOczwczJczJczxcANcAObPxcAPcvNcAQcARczycATcAUcAVcAWcvNcAXcAYcrGaaaaaaaaaaaaaaaaaacqvcuQcAZcAectFcBacBbcBcctFcBdcBeczAczzczBcBeczDcqvaafaafaaaaaaaaaaaabquaaacdOcBlcBmcBncBocBpcBmcBqcBrcBpcBmcBscdOaaaaaabZSaaaaafaaaaafaaaaafaaackxaaaaafaaaaafaafaafaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaaaaaaaaaaaaaamaaaaaaaaaczEcpHcqXcpHcybcyccqXcpHcybcyccqXcpHcybcyccpHcpHcxJcpHcybcycczFczHczGczKczIcAhcAdcAtcvXcAvcAucAxcAwcAycujcAAcAzcujcABcujcACculcADcAFcAEcAEcAHcAIcBVcBWcBWcBXcBYcAObPxcBZcvNcvNcCacCbcCccCbcCacCdcvNcrGcCecrGaaaaaaaaaaaaaaaaaacqvctFcCfcuVctFcCgcChcCictFcCjcCkcqycgvcAJcCncCocrHaaaaaaaaaaaaaaaaaacgwaafcdOcCqcluclUcomclsclpclqcomcloclVclWcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaafaafaamaafaafaafczEcALcAKcAScAMcBgcBfcBicBhcBkcBjcBucBtcBgcpHcALcBvcBycBxcBkcBzcnycnycnycnycnycnycnycnycBBcBAczucBCcBDcoTcBEcoTcoTcxqcoTcoTcBFcoTcBDcBGcBIcBHcBJciCcCNcCOcCPcCQcAObPwcCRcCScCTcCacAGcAVcBwcCacBLcBKcBMcCYcCXaaaaaaaaaaaaaaaaaacqvcBNctDcuQcDacDbcuQcDccDdcDeaafaaachxcBPcBOcBQaaaaaaaaaaacaaaaaaaaaaaaaaacdOcDhcplcplcomcDicplcplcomcDicplcplcdOaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcBRaaaaaaaaaaamaaaaaaaaacBScBUcBTcCrcCpcCtcCscCucCpcCtcCscCucCpcCtcCvcCvcCwcCucCpcCtcCxcnyaaacCzcCycCBcCAcCDcCCcCFcCEcCGcCGcCIcCHcCKcCJcCMcCLcCJcCMcCKcCUcCWcCVcCUczuczucAOcDNcDOcDPcDQcAObNUcDRcDScDTcCacCbcDUcCbcCacDgcCZcDfaafaaaaaaaaaaaaaaaaaaaaacqvcBNcDVcDjcDXcDXcDjcsPcDYcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcDZcplcplcomcEacplcplcomcEacplcplcdOaaaaaacrPaafcwjcwjcwjcwjcwjaaackxaaacwjcwjcwjcwjcwjaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcClcqLcqLcqLcpEcpIcpIcpIcqLcpIcpPcpIcpGcpIcpPcpIcpGcpIcpPcpIcpGcpIcqLcpIcpRcpIcpGcpIcqNaafaaacDlcDkcDncDmcDpcDocCFcDqcCGcDrcDtcDscDvcDucDxcDwcDzcDycDvcDAcDCcDBcCUaaaaafcAOcEBcECcEDaafaaabNUbPxbPxbSkcCaclZcEFclYcCaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcDDcuXcDEcEJcEJcDEcuQcEKcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcplcplcplcomcELcplcplcomcELcplcplcdOaacaaacrPaaaaaaaafaafaafaaaaaacmTaafaaaaaaaafaafaaaaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaabgaaaaaaaaaaaaaaacrPaafaafaaaaaaaaqaaaaaaaaaaafcgFcmscmmcDFcgFcmscmmcDFcgFcmscmmcDGcgFaaacgFcDHcmmcDGcgFaaaaafaaacDlcDIcDKcDJcDMcDLcEbcDWcCGcEccEecEdcDvcEfcEhcEgcEjcEicDvcEkcEmcElcCUaaaaaacAOcFgcFhcFiaaaaaabNUbPxbPxbNUcCacmUcmUcmUcCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcEncFncuQcuQcuQcuQcuQcFocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackEcdOcdOcdOcdOcdOcdOcdOcdOcmYcmYcmYckEaaaaaacrPcrPcrPcrPcrPaaaaaaaaacmZaaaaaaaaacrPcrPcrPbZScrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaafaaaaamaaaaaaaaaaafcgFcEocEqcEpcgFcErcEtcEscgFcEucEwcEvcgFaafcgFcExcEzcEycgFaaaaafaaacDlcEAcDncDMcDMcEEcEHcEGcEMcEIcEOcENcEQcEPcEScERcEUcETcEWcEVcEYcEXcCUaafaaacFJcDNcFKcAOcFLaaabNUcFMbPxcFNcFOaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrHcqvcqvcFPcFQcDEcDEcDEcFRcFPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqpbqpbqpaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafcfTaafcrPaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaamaaaaaaaafaafcgFcEZcFacEZcgFcFbcFccFbcgFcFdcFecFdcgFaaacgFcFdcFdcFfcgFaaaaafaaacDlcCycFjcDJcDMcDocFkcDqcCGcFlcFpcFmcDvcFqcFscFrcFscFtcDvcFucFwcFvcCUaaLcGgcGgcGgcGgcGgcGgcGgbNUciEciDcGjaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGlcEJcEJcEJcEJcEJcGlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaaacrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaafaamaaaaafaafaaacgFcEZcFxcEZcgFcFbcFycFbcgFcFdcFzcFdcgFaafcgFcFdcFdcFdcgFaafaafaafcFBcFAcFDcFCcFFcFEcFGcDqcCGcFHcFScFIcDvcFTcFVcFUcFXcFWcDvcFYcGacFZcCUaaacGgcGgcGgcGgcGgcGgcGgcGFcGGcGHbNUaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcCmcqxcqxcqxcCocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcrPcrPcrPcrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbZSaaaaaacgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFaaacGbcgFcgFcgFcgFaaaaaaaaaaaacBAcBAcBAcBAcBAcGdcGccGccGccGccGecGccGfcGicGhcGicGkcGccGccGmcGccGccGccGgcGgcGgcGgcGgcGgcGgaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhabgaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcrPaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaafaaacGQcGRcGRcGRcGScGncGpcGocGrcGqcGtcGscGvcGucGxcGwcGzcGycGBcGAcGDcGCcGIcGEcGKcGJcGEcGccGgcGgcGgcGgcGgcGgcGgaafaaacGQcGLcGQcGLcGQcGLaafcGMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaIaaaaaaczfcpHcqXcpHczgcrVcrUcrVczhcrVcrUcrVczhcrVcrVcrVczjczkczjcrZczlcyAczmczocznczqczpczrcvXcztczscvXcvXcvXcvXcvXczucnLczvcnLcnOcnOcnOcnOcnOcnOcnOcnOczwczJczJczxcANcAObPxcAPcvNcAQcARczycATcAUcAVcAWcvNcAXcAYcrGaaaaaaaaaaaaaaaaaacqvcuQcAZcAectFcBacBbcBcctFcBdcBeczAczzczBcBeczDcqvaafaafaaaaaaaaaaaabquaaacdOcBlcBmcBncBocBpcBmcBqcBrcBpcBmcBscdOaaaaaabZSaaaaafaaaaafaaaaafaaackxaaaaafaaaaafaafaafaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaaaaaaaaaaaIaaaaaaczEcpHcqXcpHcybcyccqXcpHcybcyccqXcpHcybcyccpHcpHcxJcpHcybcycczFczHczGczKczIcAhcAdcAtcvXcAvcAucAxcAwcAycujcAAcAzcujcABcujcACculcADcAFcAEcAEcAHcAIcBVcBWcBWcBXcBYcAObPxcBZcvNcvNcCacCbcCccCbcCacCdcvNcrGcCecrGaaaaaaaaaaaaaaaaaacqvctFcCfcuVctFcCgcChcCictFcCjcCkcqycgvcAJcCncCocrHaaaaaaaaaaaaaaaaaacgwaafcdOcCqcluclUcomclsclpclqcomcloclVclWcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaafaaIaafaafczEcALcAKcAScAMcBgcBfcBicBhcBkcBjcBucBtcBgcpHcALcBvcBycBxcBkcBzcnycnycnycnycnycnycnycnycBBcBAczucBCcBDcoTcBEcoTcoTcxqcoTcoTcBFcoTcBDcBGcBIcBHcBJciCcCNcCOcCPcCQcAObPwcCRcCScCTcCacAGcAVcBwcCacBLcBKcBMcCYcCXaaaaaaaaaaaaaaaaaacqvcBNctDcuQcDacDbcuQcDccDdcDeaafaaachxcBPcBOcBQaaaaaaaaaaacaaaaaaaaaaaaaaacdOcDhcplcplcomcDicplcplcomcDicplcplcdOaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcpEaaaaaaaaIaaaaaacBScBUcBTcCrcCpcCtcCscCucCpcCtcCscCucCpcCtcCvcCvcCwcCucCpcCtcCxcnyaaacCzcCycCBcCAcCDcCCcCFcCEcCGcCGcCIcCHcCKcCJcCMcCLcCJcCMcCKcCUcCWcCVcCUczuczucAOcDNcDOcDPcDQcAObNUcDRcDScDTcCacCbcDUcCbcCacDgcCZcDfaafaaaaaaaaaaaaaaaaaaaaacqvcBNcDVcDjcDXcDXcDjcsPcDYcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcDZcplcplcomcEacplcplcomcEacplcplcdOaaaaaacrPaafcwjcwjcwjcwjcwjaaackxaaacwjcwjcwjcwjcwjaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcClcqLcpIcBRcpIcpIcqLcpIcpPcpIcpGcpIcpPcpIcpGcpIcpPcpIcpGcpIcqLcpIcpRcpIcpGcpIcqNaafaaacDlcDkcDncDmcDpcDocCFcDqcCGcDrcDtcDscDvcDucDxcDwcDzcDycDvcDAcDCcDBcCUaaaaafcAOcEBcECcEDaafaaabNUbPxbPxbSkcCaclZcEFclYcCaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcDDcuXcDEcEJcEJcDEcuQcEKcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcplcplcplcomcELcplcplcomcELcplcplcdOaacaaacrPaaaaaaaafaafaafaaaaaacmTaafaaaaaaaafaafaaaaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaabgaaaaaaaaaaaaaaaaaaaaacrPaafaafaaaaaqaaaaaaaafcgFcmscmmcDFcgFcmscmmcDFcgFcmscmmcDGcgFaaacgFcDHcmmcDGcgFaaaaafaaacDlcDIcDKcDJcDMcDLcEbcDWcCGcEccEecEdcDvcEfcEhcEgcEjcEicDvcEkcEmcElcCUaaaaaacAOcFgcFhcFiaaaaaabNUbPxbPxbNUcCacmUcmUcmUcCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcEncFncuQcuQcuQcuQcuQcFocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackEcdOcdOcdOcdOcdOcdOcdOcdOcmYcmYcmYckEaaaaaacrPcrPcrPcrPcrPaaaaaaaaacmZaaaaaaaaacrPcrPcrPbZScrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaafaaIaaaaaaaafcgFcEocEqcEpcgFcErcEtcEscgFcEucEwcEvcgFaafcgFcExcEzcEycgFaaaaafaaacDlcEAcDncDMcDMcEEcEHcEGcEMcEIcEOcENcEQcEPcEScERcEUcETcEWcEVcEYcEXcCUaafaaacFJcDNcFKcAOcFLaaabNUcFMbPxcFNcFOaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrHcqvcqvcFPcFQcDEcDEcDEcFRcFPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqpbqpbqpaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafcfTaafcrPaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaIaaaaafaafcgFcEZcFacEZcgFcFbcFccFbcgFcFdcFecFdcgFaaacgFcFdcFdcFfcgFaaaaafaaacDlcCycFjcDJcDMcDocFkcDqcCGcFlcFpcFmcDvcFqcFscFrcFscFtcDvcFucFwcFvcCUaaLcGgcGgcGgcGgcGgcGgcGgbNUciEciDcGjaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGlcEJcEJcEJcEJcEJcGlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaaacrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaIaafaafaaacgFcEZcFxcEZcgFcFbcFycFbcgFcFdcFzcFdcgFaafcgFcFdcFdcFdcgFaafaafaafcFBcFAcFDcFCcFFcFEcFGcDqcCGcFHcFScFIcDvcFTcFVcFUcFXcFWcDvcFYcGacFZcCUaaacGgcGgcGgcGgcGgcGgcGgcGFcGGcGHbNUaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcCmcqxcqxcqxcCocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcrPcrPcrPcrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaaaaaacgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFaaacGbcgFcgFcgFcgFaaaaaaaaaaaacBAcBAcBAcBAcBAcGdcGccGccGccGccGecGccGfcGicGhcGicGkcGccGccGmcGccGccGccGgcGgcGgcGgcGgcGgcGgaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhabgaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaafaaacGQcGRcGRcGRcGScGncGpcGocGrcGqcGtcGscGvcGucGxcGwcGzcGycGBcGAcGDcGCcGIcGEcGKcGJcGEcGccGgcGgcGgcGgcGgcGgcGgaafaaacGQcGLcGQcGLcGQcGLaafcGMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafcHncjVcHpaaacHncjVcHpaaacHncjVcHpaafaafaaaaafaafaafaafaafcHqcGRcGRcGRcGScGncGOcGNcGTcGPcGVcGUcGXcGWcGZcGYcHbcHacHdcHccHdcHdcHdcHecHdcHfcHgcGccGgcGgcGgcGgcGgcGgcGgaafaafcHhcHhcHhcHhcHhcHhaafcGMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaacHncjWcHpaaacHncjWcHpaaacHncjWcHpaafaafaaaaafaaaaaacHKaafcGQcGRcGRcGRcGScGncGOcHicHkcHjcHlcGUcHocHmcHrcGKcGKcGKcHtcHscHucGKcGKcHmcHwcHvcHxcGccGccGccHyaaaaaaaaaaaacHzaaacHAcHAcHAcHAcHAcHAaafcGMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncjWcHpaaacHncjWcHpaafcHncjWcHpaafaaaaaaaafaafcIcaaaaafcHqcGRcGRcGRcGScGncHCcHBcHEcHDcHGcHFcHIcHHcHLcHJcHJcHJcHNcHMcHOcHJcHJcHPcHRcHQcHTcHScHVcHUcHXcHWcHWcHWcHWcHWcHWcHYcHZcHYcHZcHYcHhaafcGMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 6bfa4ef3d54d6f2f2512f6397d5264af735b8821 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 11:59:02 -0400 Subject: [PATCH 19/43] Fixes AI freelook runtime --- code/modules/mob/living/silicon/ai/freelook/chunk.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/ai/freelook/chunk.dm b/code/modules/mob/living/silicon/ai/freelook/chunk.dm index 11c8715979..90147f5b26 100644 --- a/code/modules/mob/living/silicon/ai/freelook/chunk.dm +++ b/code/modules/mob/living/silicon/ai/freelook/chunk.dm @@ -75,8 +75,9 @@ for(var/camera in cameras) var/obj/machinery/camera/c = camera - if(!c) + if(!istype(c)) cameras -= c + continue if(!c.can_use()) continue From 26cb0fe2c6d0b589485a751fe7fa7301471485db Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 12:04:04 -0400 Subject: [PATCH 20/43] Fixes medical records laptop runtime --- code/game/machinery/computer3/computers/medical.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/game/machinery/computer3/computers/medical.dm b/code/game/machinery/computer3/computers/medical.dm index fa75c69ac6..42fcb9e5e7 100644 --- a/code/game/machinery/computer3/computers/medical.dm +++ b/code/game/machinery/computer3/computers/medical.dm @@ -86,12 +86,13 @@ if(3.0) dat += text("Records Maintenance
\nBackup To Disk
\nUpload From disk
\nDelete All Records
\n
\nBack", src, src, src, src) if(4.0) - var/icon/front = active1.fields["photo_front"] - var/icon/side = active1.fields["photo_side"] - usr << browse_rsc(front, "front.png") - usr << browse_rsc(side, "side.png") dat += "
Medical Record

" if ((istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1))) + var/icon/front = active1.fields["photo_front"] + var/icon/side = active1.fields["photo_side"] + usr << browse_rsc(front, "front.png") + usr << browse_rsc(side, "side.png") + dat += "
Name: [active1.fields["name"]] \ ID: [active1.fields["id"]]
\n \ Sex: [active1.fields["sex"]]
\n \ From 385ff4f2fa93973cbf3c40df302d38b4529b663c Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 11:51:41 -0400 Subject: [PATCH 21/43] Examine tab modularity Also fixes antag info text sticking around if antag/observer status is lost --- code/game/atoms.dm | 1 + code/modules/examine/examine.dm | 18 +++++++++++++----- code/modules/mob/mob.dm | 5 +---- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 6900a2e030..63c309bb0b 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -201,6 +201,7 @@ its easier to just keep the beam vertical. f_name += "oil-stained [name][infix]." user << "\icon[src] That's [f_name] [suffix]" + user << desc return distance == -1 || (get_dist(src, user) <= distance) diff --git a/code/modules/examine/examine.dm b/code/modules/examine/examine.dm index 6f797f5cb9..3f15fa22d4 100644 --- a/code/modules/examine/examine.dm +++ b/code/modules/examine/examine.dm @@ -40,18 +40,17 @@ /client/var/description_holders[0] -/client/proc/update_description_holders(atom/A) +/client/proc/update_description_holders(atom/A, update_antag_info=0) description_holders["info"] = A.get_description_info() description_holders["fluff"] = A.get_description_fluff() - if(mob.mind && mob.mind.special_role || isobserver(src)) //ghosts don't have minds. - description_holders["antag"] = A.get_description_antag() + description_holders["antag"] = (update_antag_info)? A.get_description_antag() : "" description_holders["name"] = "[A.name]" description_holders["icon"] = "\icon[A]" description_holders["desc"] = A.desc /client/Stat() - ..() + . = ..() if(statpanel("Examine")) stat(null,"[description_holders["icon"]] [description_holders["name"]]") //The name, written in big letters. stat(null,"[description_holders["desc"]]") //the default examine text. @@ -60,4 +59,13 @@ if(description_holders["fluff"]) stat(null,"[description_holders["fluff"]]") //Yellow, fluff-related text. if(description_holders["antag"]) - stat(null,"[description_holders["antag"]]") //Red, malicious antag-related text \ No newline at end of file + stat(null,"[description_holders["antag"]]") //Red, malicious antag-related text + +//override examinate verb to update description holders when things are examined +/mob/examinate(atom/A as mob|obj|turf in view()) + if(..()) + return 1 + + var/is_antag = ((mind && mind.special_role) || isobserver(src)) //ghosts don't have minds + if(client) + client.update_description_holders(A, is_antag) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index c3e5fbf90b..16ff11ea9b 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -228,13 +228,10 @@ var/list/slot_equipment_priority = list( \ if((is_blind(src) || usr.stat) && !isobserver(src)) src << "Something is there but you can't see it." - return + return 1 face_atom(A) A.examine(src) - - if(client) - client.update_description_holders(A) /mob/verb/pointed(atom/A as mob|obj|turf in view()) set name = "Point To" From e840ba2d2554baac1f71024d3c3552d664c4d4ae Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 12:12:31 -0400 Subject: [PATCH 22/43] Fixes photocopier runtime --- code/modules/paperwork/paper.dm | 6 +++--- code/modules/paperwork/photocopier.dm | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 3608386f9a..73d7005eb9 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -23,9 +23,9 @@ var/stamps //The (text for the) stamps on the paper. var/fields //Amount of user created fields var/list/stamped - var/ico[0] //Icons and - var/offset_x[0] //offsets stored for later - var/offset_y[0] //usage by the photocopier + var/list/ico[0] //Icons and + var/list/offset_x[0] //offsets stored for later + var/list/offset_y[0] //usage by the photocopier var/rigged = 0 var/spam_flag = 0 diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 83b27b7a2b..7f0ed21c78 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -175,7 +175,7 @@ c.offset_y = copy.offset_y var/list/temp_overlays = copy.overlays //Iterates through stamps var/image/img //and puts a matching - for (var/j = 1, j <= temp_overlays.len, j++) //gray overlay onto the copy + for (var/j = 1, j <= min(temp_overlays.len, copy.ico.len), j++) //gray overlay onto the copy if (findtext(copy.ico[j], "cap") || findtext(copy.ico[j], "cent")) img = image('icons/obj/bureaucracy.dmi', "paper_stamp-circle") else if (findtext(copy.ico[j], "deny")) From 188c4491c75e00f50b8a520cdb4eca491a6b1569 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 12:20:08 -0400 Subject: [PATCH 23/43] Fixes xenoarch runtime --- code/modules/research/xenoarchaeology/finds/finds.dm | 8 ++------ .../research/xenoarchaeology/finds/finds_talkingitem.dm | 6 +++++- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/code/modules/research/xenoarchaeology/finds/finds.dm b/code/modules/research/xenoarchaeology/finds/finds.dm index 518b2ddc40..39b01f0580 100644 --- a/code/modules/research/xenoarchaeology/finds/finds.dm +++ b/code/modules/research/xenoarchaeology/finds/finds.dm @@ -545,13 +545,9 @@ new_item.desc = src.desc if(talkative) - new_item.talking_atom = new() - talking_atom.holder_atom = new_item - talking_atom.init() + new_item.talking_atom = new(new_item) del(src) else if(talkative) - src.talking_atom = new() - talking_atom.holder_atom = src - talking_atom.init() + src.talking_atom = new(src) diff --git a/code/modules/research/xenoarchaeology/finds/finds_talkingitem.dm b/code/modules/research/xenoarchaeology/finds/finds_talkingitem.dm index 65a2e24ca0..58cfdbb031 100644 --- a/code/modules/research/xenoarchaeology/finds/finds_talkingitem.dm +++ b/code/modules/research/xenoarchaeology/finds/finds_talkingitem.dm @@ -14,6 +14,10 @@ var/talk_interval = 50 var/talk_chance = 10 +/datum/talking_atom/New(atom/holder) + holder_atom = holder + init() + /datum/talking_atom/proc/init() if(holder_atom) processing_objects.Add(src) @@ -55,7 +59,7 @@ if(prob(30)) var/list/options = list("[holder_atom] seems to be listening intently to [source]...",\ - "[holder_atom] seems to be focussing on [source]...",\ + "[holder_atom] seems to be focusing on [source]...",\ "[holder_atom] seems to turn it's attention to [source]...") holder_atom.loc.visible_message("\blue \icon[holder_atom] [pick(options)]") From b60a045d702df225914076003c254b29e597b63c Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 12:43:10 -0400 Subject: [PATCH 24/43] Fixes door runtime, removes user = null hack --- code/game/machinery/doors/door.dm | 12 +++++------- code/game/machinery/doors/windowdoor.dm | 3 --- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 32d2b314dc..19b5b907a8 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -126,9 +126,6 @@ if(user.last_airflow > world.time - vsc.airflow_delay) //Fakkit return src.add_fingerprint(user) - if(!src.requiresID()) - user = null - if(density) if(allowed(user)) open() else flick("door_deny", src) @@ -193,10 +190,6 @@ return if(src.operating > 0 || isrobot(user)) return //borgs can't attack doors open because it conflicts with their AI-like interaction with them. src.add_fingerprint(user) - if(!Adjacent(user)) - user = null - if(!src.requiresID()) - user = null if(istype(I, /obj/item/stack/sheet/metal)) if(stat & BROKEN) @@ -423,6 +416,11 @@ /obj/machinery/door/proc/requiresID() return 1 +/obj/machinery/door/allowed(mob/M) + if(!requiresID()) + return ..(null) //don't care who they are or what they have, act as if they're NOTHING + return ..(M) + /obj/machinery/door/update_nearby_tiles(need_rebuild) if(!air_master) return 0 diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index eefe844e47..362753cac8 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -234,9 +234,6 @@ src.add_fingerprint(user) - if (!src.requiresID()) - //don't care who they are or what they have, act as if they're NOTHING - user = null if (src.allowed(user)) if (src.density) From 57c059128385d405911dc9eb484ff9e3ed841f94 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Mon, 9 Mar 2015 19:22:07 +0100 Subject: [PATCH 25/43] Fixes ninja spawn logic. Fixes the logic I re-made after a PR comment without double-checking it. Changes ninjastart to use the actual landmarks instead of locs for consistency. --- code/game/gamemodes/ninja/ninja.dm | 12 ++++++------ code/game/objects/effects/landmarks.dm | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/code/game/gamemodes/ninja/ninja.dm b/code/game/gamemodes/ninja/ninja.dm index b4c0c5f555..f136d63e45 100644 --- a/code/game/gamemodes/ninja/ninja.dm +++ b/code/game/gamemodes/ninja/ninja.dm @@ -32,15 +32,15 @@ if(L.name == "carpspawn") ninjastart.Add(L) - if(ninjastart.len == 0 && latejoin.len > 0) - ninja.current << "\red No spawneable locations could be found. Defaulting to latejoin." + if(ninjastart.len) return 1 - else - ninja.current << "\red No spawneable locations could be found. Aborting." - return 0 - + if(ninjastart.len == 0 && latejoin.len > 0) + ninja.current << "\red No spawn locations could be found. Defaulting to late-join locations." return 1 + ninja.current << "\red No spawn locations could be found. Aborting." + return 0 + /datum/game_mode/ninja/pre_setup() for(var/datum/mind/ninja in ninjas) ninja.current << browse(null, "window=playersetup") diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index b9facb09b8..8df98464e6 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -117,7 +117,7 @@ /obj/effect/landmark/start/ninja/New() ..() - ninjastart += loc + ninjastart += src //Costume spawner landmarks From 91d7dd70493eb9161bcf3c1bb0a301a40e0ea420 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 15:39:24 -0400 Subject: [PATCH 26/43] Adjusts item_state placeholders Tries to switch the current placeholders for something less awkward looking. As well, the WT550 will no longer be mistaken for a pistol. --- code/modules/projectiles/guns/projectile/automatic.dm | 7 ++++--- code/modules/projectiles/guns/projectile/sniper.dm | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 3a0cca54e3..5778b3febe 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -51,7 +51,7 @@ name = "\improper STS-35 automatic rifle" desc = "A durable, rugged looking automatic weapon of a make popular on the frontier worlds. Uses 7.62mm rounds. It is unmarked." icon_state = "arifle" - item_state = "shotgun" + item_state = "l6closednomag" //placeholder w_class = 4 force = 10 caliber = "a762" @@ -68,7 +68,8 @@ name = "\improper W-T 550 Saber" desc = "A cheap, mass produced Ward-Takahashi PDW. Uses 9mm rounds." icon_state = "wt550" - w_class = 3.0 + item_state = "c20r" //placeholder + w_class = 3 caliber = "9mm" origin_tech = "combat=5;materials=2" slot_flags = SLOT_BELT @@ -89,7 +90,7 @@ name = "\improper Z8 Bulldog" desc = "An older model bullpup carbine, made by the now defunct Zendai Foundries. Uses armor piercing 5.56mm rounds. Makes you feel like a space marine when you hold it." icon_state = "carbine" - item_state = "shotgun" + item_state = "l6closednomag" //placeholder w_class = 4 force = 10 caliber = "a556" diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index 6c3be17c68..29250cc6fe 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -2,7 +2,7 @@ name = "\improper PTRS-7 rifle" desc = "A portable anti-armour rifle fitted with a scope. Originally designed to used against armoured exosuits, it is capable of punching through windows and non-reinforced walls with ease. Fires armor piercing 14.5mm shells." icon_state = "heavysniper" - item_state = "shotgun" + item_state = "l6closednomag" //placeholder w_class = 4 force = 10 slot_flags = SLOT_BACK From b9d2517d835e7531be388ac034da1745d7a45645 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 15:47:25 -0400 Subject: [PATCH 27/43] Tweaks random gun spawners and supply packs laser carbines and laser pistols spawn in the armoury with equal probability. Stunshells are now rare like they should be. Shotgun crates now have two combat shotguns, as they are less likely to spawn in the armoury anyways. Weapons crate comes with laser pistols, energy weapons crate comes with laser carbines. Seemed more consistent that way. --- code/datums/supplypacks.dm | 13 +++++++------ code/game/objects/random/random.dm | 22 +++++++++++----------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 9beb08adc2..35ff79cac1 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -696,15 +696,15 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee name = "Weapons crate" contains = list(/obj/item/weapon/melee/baton, /obj/item/weapon/melee/baton, - /obj/item/weapon/gun/energy/laser, - /obj/item/weapon/gun/energy/laser, + /obj/item/weapon/gun/energy/gun, + /obj/item/weapon/gun/energy/gun, /obj/item/weapon/gun/energy/taser, /obj/item/weapon/gun/energy/taser, /obj/item/weapon/gun/projectile/sec, /obj/item/weapon/gun/projectile/sec, /obj/item/weapon/storage/box/flashbangs, /obj/item/weapon/storage/box/flashbangs) - cost = 30 + cost = 40 containertype = /obj/structure/closet/crate/secure/weapon containername = "Weapons crate" access = access_security @@ -777,7 +777,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee name = "Energy weapons crate" contains = list(/obj/item/weapon/gun/energy/laser, /obj/item/weapon/gun/energy/laser, - /obj/item/weapon/gun/energy/gun) + /obj/item/weapon/gun/energy/laser) cost = 50 containertype = /obj/structure/closet/crate/secure containername = "energy weapons crate" @@ -789,9 +789,10 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee contains = list(/obj/item/clothing/suit/armor/bulletproof, /obj/item/clothing/suit/armor/bulletproof, /obj/item/weapon/storage/box/shotgunammo, - /obj/item/weapon/gun/projectile/shotgun/pump, + /obj/item/weapon/storage/box/shotgunshells, + /obj/item/weapon/gun/projectile/shotgun/pump/combat, /obj/item/weapon/gun/projectile/shotgun/pump/combat) - cost = 50 + cost = 65 containertype = /obj/structure/closet/crate/secure containername = "Shotgun crate" access = access_armory diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm index d9a12efa6c..7508d34a94 100644 --- a/code/game/objects/random/random.dm +++ b/code/game/objects/random/random.dm @@ -177,8 +177,8 @@ icon_state = "energykill100" item_to_spawn() return pick(prob(2);/obj/item/weapon/gun/energy/laser,\ - prob(1);/obj/item/weapon/gun/energy/gun,\ - prob(2);/obj/item/weapon/gun/energy/stunrevolver) + prob(2);/obj/item/weapon/gun/energy/gun,\ + prob(1);/obj/item/weapon/gun/energy/stunrevolver) /obj/random/projectile name = "Random Projectile Weapon" @@ -206,15 +206,15 @@ icon = 'icons/obj/ammo.dmi' icon_state = "45-10" item_to_spawn() - return pick(prob(3);/obj/item/weapon/storage/box/beanbags,\ - prob(1);/obj/item/weapon/storage/box/shotgunammo,\ - prob(2);/obj/item/weapon/storage/box/shotgunshells,\ - prob(2);/obj/item/weapon/storage/box/stunshells,\ - prob(1);/obj/item/ammo_magazine/c45m,\ - prob(2);/obj/item/ammo_magazine/c45m/rubber,\ - prob(2);/obj/item/ammo_magazine/c45m/flash,\ - prob(1);/obj/item/ammo_magazine/mc9mmt,\ - prob(3);/obj/item/ammo_magazine/mc9mmt/rubber) + return pick(prob(6);/obj/item/weapon/storage/box/beanbags,\ + prob(2);/obj/item/weapon/storage/box/shotgunammo,\ + prob(4);/obj/item/weapon/storage/box/shotgunshells,\ + prob(1);/obj/item/weapon/storage/box/stunshells,\ + prob(2);/obj/item/ammo_magazine/c45m,\ + prob(4);/obj/item/ammo_magazine/c45m/rubber,\ + prob(4);/obj/item/ammo_magazine/c45m/flash,\ + prob(2);/obj/item/ammo_magazine/mc9mmt,\ + prob(6);/obj/item/ammo_magazine/mc9mmt/rubber) /obj/random/action_figure From baed39c2633eb9d910b7267959f21cf5b9e60c3a Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Mon, 9 Mar 2015 20:55:05 +0100 Subject: [PATCH 28/43] Attempts to fix persistent station alarms. Makes wardrobes solid. --- code/game/area/areas.dm | 10 +++++----- code/game/objects/structures/under_wardrobe.dm | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index ae11b5aa48..0778f50174 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -38,6 +38,11 @@ return cameras /area/proc/atmosalert(danger_level, var/alarm_source) + if (danger_level == 0) + atmosphere_alarm.clearAlarm(master, alarm_source) + else + atmosphere_alarm.triggerAlarm(master, alarm_source, severity = danger_level) + //Check all the alarms before lowering atmosalm. Raising is perfectly fine. for (var/area/RA in related) for (var/obj/machinery/alarm/AA in RA) @@ -51,11 +56,6 @@ else if (danger_level >= 2 && atmosalm < 2) air_doors_close() - if (danger_level == 0) - atmosphere_alarm.clearAlarm(master, alarm_source) - else - atmosphere_alarm.triggerAlarm(master, alarm_source, severity = danger_level) - atmosalm = danger_level for(var/area/RA in related) for (var/obj/machinery/alarm/AA in RA) diff --git a/code/game/objects/structures/under_wardrobe.dm b/code/game/objects/structures/under_wardrobe.dm index fbb9470aa6..d053849496 100644 --- a/code/game/objects/structures/under_wardrobe.dm +++ b/code/game/objects/structures/under_wardrobe.dm @@ -3,7 +3,7 @@ desc = "Holds item of clothing you shouldn't be showing off in the hallways." icon = 'icons/obj/closet.dmi' icon_state = "cabinet_closed" - + density = 1 /obj/structure/undies_wardrobe/attack_hand(mob/user as mob) src.add_fingerprint(user) From 645910947b423e025506d054db9a04adb72b75e7 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 16:00:49 -0400 Subject: [PATCH 29/43] Adds orderable flaregun crate Mainly to make double-barrelled shotguns orderable. --- code/datums/supplypacks.dm | 11 +++++++++++ code/modules/projectiles/guns/projectile/shotgun.dm | 5 +++++ 2 files changed, 16 insertions(+) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 35ff79cac1..59926a6e0b 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -710,6 +710,17 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee access = access_security group = "Security" +/datum/supply_packs/flareguns + name = "Flare guns crate" + contains = list(/obj/item/weapon/gun/projectile/sec/flash, + /obj/item/ammo_magazine/c45m/flash, + /obj/item/weapon/gun/projectile/shotgun/doublebarrel/flare, + /obj/item/weapon/storage/box/flashshells) + cost = 25 + containertype = /obj/structure/closet/crate/secure/weapon + containername = "Flare gun crate" + access = access_security + group = "Security" /datum/supply_packs/eweapons name = "Experimental weapons crate" diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index f7f4fbdbe0..fd85bc28be 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -65,6 +65,11 @@ origin_tech = "combat=3;materials=1" ammo_type = /obj/item/ammo_casing/shotgun/beanbag +/obj/item/weapon/gun/projectile/shotgun/doublebarrel/flare + name = "signal shotgun" + desc = "A double-barreled shotgun meant to fire signal flash shells." + ammo_type = /obj/item/ammo_casing/shotgun/flash + //this is largely hacky and bad :( -Pete /obj/item/weapon/gun/projectile/shotgun/doublebarrel/attackby(var/obj/item/A as obj, mob/user as mob) if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/melee/energy) || istype(A, /obj/item/weapon/pickaxe/plasmacutter)) From 2fa6bb9ab2286df0d556d3900c7591ada197e6a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Baldomir?= Date: Mon, 9 Mar 2015 21:54:38 +0100 Subject: [PATCH 30/43] Fixes mass driver not being registered on machines. --- code/game/machinery/mass_driver.dm | 47 ++++++++++++++++-------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/code/game/machinery/mass_driver.dm b/code/game/machinery/mass_driver.dm index 036edb8730..2a3589db2d 100644 --- a/code/game/machinery/mass_driver.dm +++ b/code/game/machinery/mass_driver.dm @@ -16,27 +16,30 @@ var/drive_range = 50 //this is mostly irrelevant since current mass drivers throw into space, but you could make a lower-range mass driver for interstation transport or something I guess. - proc/drive(amount) - if(stat & (BROKEN|NOPOWER)) - return - use_power(500) - var/O_limit - var/atom/target = get_edge_target_turf(src, dir) - for(var/atom/movable/O in loc) - if(!O.anchored||istype(O, /obj/mecha))//Mechs need their launch platforms. - O_limit++ - if(O_limit >= 20) - for(var/mob/M in hearers(src, null)) - M << "\blue The mass driver lets out a screech, it mustn't be able to handle any more items." - break - use_power(500) - spawn( 0 ) - O.throw_at(target, drive_range * power, power) - flick("mass_driver1", src) +/obj/machinery/mass_driver/proc/drive(amount) + if(stat & (BROKEN|NOPOWER)) return + use_power(500) + var/O_limit + var/atom/target = get_edge_target_turf(src, dir) + for(var/atom/movable/O in loc) + if(!O.anchored||istype(O, /obj/mecha))//Mechs need their launch platforms. + O_limit++ + if(O_limit >= 20) + for(var/mob/M in hearers(src, null)) + M << "\blue The mass driver lets out a screech, it mustn't be able to handle any more items." + break + use_power(500) + spawn( 0 ) + O.throw_at(target, drive_range * power, power) + flick("mass_driver1", src) + return - emp_act(severity) - if(stat & (BROKEN|NOPOWER)) - return - drive() - ..(severity) \ No newline at end of file +/obj/machinery/mass_driver/emp_act(severity) + if(stat & (BROKEN|NOPOWER)) + return + drive() + ..(severity) + +/obj/machinery/mass_driver/process() + return \ No newline at end of file From 1150902c9fd103efa2b5ce75175b0894f6f48a42 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 16:57:10 -0400 Subject: [PATCH 31/43] Adds custom item for Von2531 Blue blazer loadout item --- code/modules/client/preferences_gear.dm | 6 ++++++ code/modules/clothing/under/miscellaneous.dm | 7 +++++++ icons/mob/items_lefthand.dmi | Bin 155467 -> 155760 bytes icons/mob/items_righthand.dmi | Bin 158839 -> 159077 bytes icons/mob/uniform.dmi | Bin 257089 -> 258025 bytes icons/obj/clothing/uniforms.dmi | Bin 58938 -> 59187 bytes 6 files changed, 13 insertions(+) diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm index 905eb9b886..5ac54a0498 100644 --- a/code/modules/client/preferences_gear.dm +++ b/code/modules/client/preferences_gear.dm @@ -282,6 +282,12 @@ var/global/list/gear_datums = list() slot = slot_w_uniform cost = 2 +/datum/gear/blazer_blue + display_name = "blazer, blue" + path = /obj/item/clothing/under/blazer + slot = slot_w_uniform + cost = 2 + /datum/gear/kilt display_name = "kilt" path = /obj/item/clothing/under/kilt diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index bc4d37c672..9c73fe90b9 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -490,3 +490,10 @@ item_state = "mai_yang" item_color = "mai_yang" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS + +/obj/item/clothing/under/blazer + name = "blue blazer" + desc = "A bold but yet conservative outfit, red corduroys, navy blazer and a tie." + icon_state = "blue_blazer" + item_state = "blue_blazer" + item_color = "blue_blazer" \ No newline at end of file diff --git a/icons/mob/items_lefthand.dmi b/icons/mob/items_lefthand.dmi index 9f1f22c1a31e9063afd95304becd35d5185d168d..d200726c6a91fb75135c2ee90cc00fd6b19a206a 100644 GIT binary patch delta 17261 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 g*)ac=t64-cq;iO#Qt=m^iMX-jUt{QbP|)@4Y5~ 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 E2d+0?R{#J2 diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index 11e62da896d10b0ee4284c9165b12e7992353630..a5c9905b54903df435531fdbd2524b5bb35066e8 100644 GIT binary patch delta 17293 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 B%;o?9 delta 16350 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 diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index a1189267e9d2713dc7a118843f67a33d1f92716c..32e720754f5993cee1773bf6f48e10e4e434ec99 100644 GIT binary patch delta 3830 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 Date: Mon, 9 Mar 2015 23:19:15 -0400 Subject: [PATCH 32/43] Adds sabiram's help text to the game. --- baystation12.dme | 1 + code/modules/examine/descriptions/medical.dm | 42 +++++++++++++++++++ .../examine/descriptions/structures.dm | 6 +++ 3 files changed, 49 insertions(+) create mode 100644 code/modules/examine/descriptions/medical.dm diff --git a/baystation12.dme b/baystation12.dme index bf45a077a4..f6683c342f 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -964,6 +964,7 @@ #include "code\modules\examine\examine.dm" #include "code\modules\examine\descriptions\atmospherics.dm" #include "code\modules\examine\descriptions\engineering.dm" +#include "code\modules\examine\descriptions\medical.dm" #include "code\modules\examine\descriptions\mobs.dm" #include "code\modules\examine\descriptions\stacks.dm" #include "code\modules\examine\descriptions\structures.dm" diff --git a/code/modules/examine/descriptions/medical.dm b/code/modules/examine/descriptions/medical.dm new file mode 100644 index 0000000000..7b55c7b9ce --- /dev/null +++ b/code/modules/examine/descriptions/medical.dm @@ -0,0 +1,42 @@ +/obj/machinery/bodyscanner + description_info = "The advanced scanner detects and reports internal injuries such as bone fractures, internal bleeding, and organ damage. \ + This is useful if you are about to perform surgery.
\ +
\ + Click your target with Grab intent, then click on the scanner to place them in it. Click the red terminal to operate. \ + Right-click the scanner and click 'Eject Occupant' to remove them. You can enter the scanner yourself in a similar way, using the 'Enter Body Scanner' \ + verb." + +/obj/machinery/atmospherics/unary/cryo_cell + description_info = "The cryogenic chamber, or 'cryo', treats most damage types, most notably genetic damage. It also stabilizes patients \ + in critical condition by placing them in stasis, so they can be treated at a later time.
\ +
\ + In order for it to work, it must be loaded with chemicals, and the temperature of the solution must reach a certain point. Additionally, it \ + requires a supply of pure oxygen, provided by canisters that are attached. The most commonly used chemicals in the chambers are Cryoaxadone and \ + Clonexadone. Clonexadone is more effective in treating Genetic damage, but is otherwise functionally identical.
\ +
\ + Activating the freezer nearby, and setting it to a temperature setting below 50, is required before operation! Further, any clothing the patient \ + is wearing that act as an insulator will reduce its effectiveness, and should be removed.
\ +
\ + Clicking the tube with a beaker full of chemicals in hand will place it in its storage to distribute when it is activated.
\ +
\ + Click your target with Grab intent, then click on the tube, with an empty hand, to place them it. Click the tube again to open the menu. \ + Press the button on the menu to activate it. Once they have reached 100 health, right-click the cell and click 'Eject Occupant' to remove them. \ + Remember to turn it off, once you've finished, to save power and chemicals!" + +/obj/machinery/optable + description_info = "Click your target with Grab intent, then click on the table with an empty hand, to place them on it." + +/obj/machinery/computer/operating + description_info = "This console gives information on the status of the patient on the adjacent operating table, notably their consciousness." + +/obj/machinery/sleeper + description_info = "The sleeper allows you to clean the blood by means of dialysis, and to administer medication in controlled environment.
\ +
\ + Click your target with Grab intent, then click on the sleeper to place them in it. Click the green console, with an empty hand, to open the menu. \ + Click 'Start Dialysis' to begin filtering unwanted chemicals from the occupant's blood. The beaker contained will begin to fill with their \ + contaminated blood, and will need to be emptied when full.
\ +
\ + You can also inject common medicines directly into their bloodstream.\ +
\ + Right-click the cell and click 'Eject Occupant' to remove them. You can enter the cell yourself by right clicking and selecting 'Enter Sleeper'. \ + Note that you cannot control the sleeper while inside of it." \ No newline at end of file diff --git a/code/modules/examine/descriptions/structures.dm b/code/modules/examine/descriptions/structures.dm index fa46c1501f..858653b094 100644 --- a/code/modules/examine/descriptions/structures.dm +++ b/code/modules/examine/descriptions/structures.dm @@ -13,3 +13,9 @@ /obj/structure/lattice description_info = "Add a metal floor tile to build a floor on top of the lattice.
\ Lattices can be made by applying metal rods to a space tile." + +/obj/structure/bed + description_info = "Click and drag yourself (or anyone) to this to buckle in. Click on this with an empty hand to undo the buckles.
\ +
\ + Anyone with restraints, such as handcuffs, will not be able to unbuckle themselves. They must use the Resist button, or verb, to break free of \ + the buckles, instead." \ No newline at end of file From 3de6374b4acd26ce8c32bf59a5de65fc0721c710 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Tue, 10 Mar 2015 02:47:54 -0400 Subject: [PATCH 33/43] Allows unconscious/dead exosuit pilots to be removed if maintenance protocols are enabled. Enable maintenance protocols -> wrench -> crowbar -> multitool. --- code/game/mecha/mecha.dm | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index e57b4da227..b2bdadfdbe 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -760,6 +760,18 @@ user << "You screw the cell in place" return + else if(istype(W, /obj/item/device/multitool)) + if(state>=3 && src.occupant) + user << "You attempt to eject the pilot using the maintenance controls." + if(src.occupant.stat) + src.go_out() + src.log_message("[src.occupant] was ejected using the maintenance controls.") + else + user << "Your attempt is rejected." + src.occupant_message("An attempt to eject you was made using the maintenance controls.") + src.log_message("Eject attempt made using maintenance controls - rejected.") + return + else if(istype(W, /obj/item/weapon/cell)) if(state==4) if(!src.cell) From 65a34943cd8f1b22f87b825187ce472e3227cab3 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Tue, 10 Mar 2015 03:00:24 -0400 Subject: [PATCH 34/43] Penetrating bullets are now more likely to go through glass doors --- code/modules/projectiles/projectile/bullets.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 627785343f..1e4ddf7c5e 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -47,6 +47,7 @@ else if(istype(A, /obj/machinery/door)) var/obj/machinery/door/D = A chance = round(damage/D.maxhealth*180) + if(D.glass) chance *= 2 else if(istype(A, /obj/structure/girder) || istype(A, /obj/structure/cultgirder)) chance = 100 else if(istype(A, /obj/machinery) || istype(A, /obj/structure)) From a86c16b3e325e08209e1e60c71fcc0d4d170b302 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Tue, 10 Mar 2015 08:16:20 +0100 Subject: [PATCH 35/43] Fixes hydroponics update_icon() runtime. Rounding could cause plant maturation to have a value of 0. --- code/modules/hydroponics/trays/tray_update_icons.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/hydroponics/trays/tray_update_icons.dm b/code/modules/hydroponics/trays/tray_update_icons.dm index ea8fb669cd..61e19632ea 100644 --- a/code/modules/hydroponics/trays/tray_update_icons.dm +++ b/code/modules/hydroponics/trays/tray_update_icons.dm @@ -36,7 +36,8 @@ if(age >= seed.get_trait(TRAIT_MATURATION)) overlay_stage = seed.growth_stages else - overlay_stage = max(1,round(age/round(seed.get_trait(TRAIT_MATURATION)/seed.growth_stages))) + var/maturation = round(seed.get_trait(TRAIT_MATURATION)/seed.growth_stages) + overlay_stage = maturation ? max(1,round(age/maturation)) : 1 var/ikey = "[seed.get_trait(TRAIT_PLANT_ICON)]-[overlay_stage]" var/image/plant_overlay = plant_controller.plant_icon_cache["[ikey]-[seed.get_trait(TRAIT_PLANT_COLOUR)]"] if(!plant_overlay) From 9fdd3ccbdfdc11296af15da6b7262cb11b38d93e Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Tue, 10 Mar 2015 09:08:52 +0100 Subject: [PATCH 36/43] Can now destroy/delete the suit cycler. --- code/game/machinery/suit_storage_unit.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 4bf1c07abc..d0ac55780d 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -618,6 +618,7 @@ /obj/machinery/suit_cycler/Del() del(wires) // qdel wires = null + ..() /obj/machinery/suit_cycler/engineering name = "Engineering suit cycler" From 533ccef0ab7ad324e81bc049999a4012c9bcd2da Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Tue, 10 Mar 2015 13:37:20 +0100 Subject: [PATCH 37/43] Robot code clean up and fixes. Fixes runtime when a borg is reset. Fixes issue where /proc/select_active_ai_with_fewest_borgs() would not always return the intended AI. Fixes issues with new borgs spamming the master AI with creation messages under some circumstances. --- code/__HELPERS/unsorted.dm | 2 +- code/datums/wires/robot.dm | 11 ++--- code/game/machinery/transformer.dm | 1 - code/game/objects/items/robot/robot_parts.dm | 1 - .../objects/items/robot/robot_upgrades.dm | 6 +-- .../mob/living/silicon/robot/drone/drone.dm | 2 - code/modules/mob/living/silicon/robot/life.dm | 4 +- .../modules/mob/living/silicon/robot/robot.dm | 45 ++++++++++++------- code/modules/mob/transform_procs.dm | 1 - code/modules/projectiles/projectile/change.dm | 1 - code/setup.dm | 6 +++ 11 files changed, 43 insertions(+), 37 deletions(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index ad8c771366..89da585924 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -374,7 +374,7 @@ Turf and target are seperate in case you want to teleport some distance from a t var/mob/living/silicon/ai/selected var/list/active = active_ais() for(var/mob/living/silicon/ai/A in active) - if(!selected || (selected.connected_robots > A.connected_robots)) + if(!selected || (selected.connected_robots.len > A.connected_robots.len)) selected = A return selected diff --git a/code/datums/wires/robot.dm b/code/datums/wires/robot.dm index 73555f3889..da20f1bd05 100644 --- a/code/datums/wires/robot.dm +++ b/code/datums/wires/robot.dm @@ -34,8 +34,7 @@ var/const/BORG_WIRE_CAMERA = 16 if (BORG_WIRE_AI_CONTROL) //Cut the AI wire to reset AI control if(!mended) - if (R.connected_ai) - R.connected_ai = null + R.disconnect_from_ai() if (BORG_WIRE_CAMERA) if(!isnull(R.camera) && !R.scrambledcodes) @@ -56,12 +55,8 @@ var/const/BORG_WIRE_CAMERA = 16 if (BORG_WIRE_AI_CONTROL) //pulse the AI wire to make the borg reselect an AI if(!R.emagged) var/mob/living/silicon/ai/new_ai = select_active_ai(R) - if(new_ai && (new_ai != R.connected_ai)) - R.connected_ai.connected_robots -= src - R.connected_ai = new_ai - new_ai.connected_robots += src - R.notify_ai(1) - R.sync() + R.connect_to_ai(new_ai) + if (BORG_WIRE_CAMERA) if(!isnull(R.camera) && R.camera.can_use() && !R.scrambledcodes) R.camera.kick_viewers() // Kick anyone watching the Cyborg's camera diff --git a/code/game/machinery/transformer.dm b/code/game/machinery/transformer.dm index 7885a8b8e2..c9c8ba20ae 100644 --- a/code/game/machinery/transformer.dm +++ b/code/game/machinery/transformer.dm @@ -38,7 +38,6 @@ playsound(src.loc, 'sound/machines/ping.ogg', 50, 0) if(robot) robot.SetLockDown(0) - robot.notify_ai(1) /obj/machinery/transformer/conveyor/New() ..() diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index 25461eae37..a0138b4dc6 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -226,7 +226,6 @@ feedback_inc("cyborg_birth",1) callHook("borgify", list(O)) - O.notify_ai(1) O.Namepick() del(src) diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index a9b040f647..3f11eb4bbe 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -36,12 +36,12 @@ icon = 'icons/mob/custom-synthetic.dmi' R.icon_state = "[R.ckey]-Standard" del(R.module) + R.notify_ai(ROBOT_NOTIFICATION_MODULE_RESET, R.module.name) R.module = null R.camera.remove_networks(list("Engineering","Medical","MINE")) R.updatename("Default") R.status_flags |= CANPUSH R.updateicon() - R.notify_ai(2) return 1 @@ -57,7 +57,7 @@ /obj/item/borg/upgrade/rename/action(var/mob/living/silicon/robot/R) if(..()) return 0 - R.notify_ai(3, R.name, heldname) + R.notify_ai(ROBOT_NOTIFICATION_NEW_NAME, R.name, heldname) R.name = heldname R.custom_name = heldname R.real_name = heldname @@ -84,7 +84,7 @@ R.stat = CONSCIOUS dead_mob_list -= R living_mob_list |= R - R.notify_ai(1) + R.notify_ai(ROBOT_NOTIFICATION_NEW_UNIT) return 1 diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index c1bfd9e009..9d2af7af56 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -54,8 +54,6 @@ /mob/living/silicon/robot/drone/init() laws = new /datum/ai_laws/drone() - connected_ai = null - aiCamera = new/obj/item/device/camera/siliconcam/drone_camera(src) playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 0) diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index c5d74c54dd..c1d624f5b0 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -226,9 +226,7 @@ if(tra.current) var/I = image('icons/mob/mob.dmi', loc = tra.current, icon_state = "traitor") src.client.images += I - if(src.connected_ai) - src.connected_ai.connected_robots -= src - src.connected_ai = null + src.disconnect_from_ai() if(src.mind) if(!src.mind.special_role) src.mind.special_role = "traitor" diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 3539e683af..3647352aab 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -164,11 +164,10 @@ var/list/robot_verbs_default = list( aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src) laws = new /datum/ai_laws/nanotrasen() additional_law_channels += "Binary" - connected_ai = select_active_ai_with_fewest_borgs() - if(connected_ai) - connected_ai.connected_robots += src + var/new_ai = select_active_ai_with_fewest_borgs() + if(new_ai) lawupdate = 1 - sync() + connect_to_ai(new_ai) else lawupdate = 0 @@ -365,7 +364,7 @@ var/list/robot_verbs_default = list( choose_icon(6,module_sprites) radio.config(module.channels) - notify_ai(2) + notify_ai(ROBOT_NOTIFICATION_NEW_MODULE, module.name) /mob/living/silicon/robot/proc/updatename(var/prefix as text) if(prefix) @@ -385,7 +384,7 @@ var/list/robot_verbs_default = list( else changed_name = "[modtype] [braintype]-[num2text(ident)]" - notify_ai(3, real_name, changed_name) + notify_ai(ROBOT_NOTIFICATION_NEW_NAME, real_name, changed_name) real_name = changed_name name = real_name @@ -802,7 +801,7 @@ var/list/robot_verbs_default = list( if(prob(50)) emagged = 1 lawupdate = 0 - connected_ai = null + disconnect_from_ai() user << "You emag [src]'s interface." message_admins("[key_name_admin(user)] emagged cyborg [key_name_admin(src)]. Laws overridden.") log_game("[key_name(user)] emagged cyborg [key_name(src)]. Laws overridden.") @@ -1134,8 +1133,7 @@ var/list/robot_verbs_default = list( return /mob/living/silicon/robot/proc/UnlinkSelf() - if (src.connected_ai) - src.connected_ai = null + disconnect_from_ai() lawupdate = 0 lockcharge = 0 canmove = 1 @@ -1245,14 +1243,29 @@ var/list/robot_verbs_default = list( return 1 return 0 -/mob/living/silicon/robot/proc/notify_ai(var/notifytype, var/oldname, var/newname) +/mob/living/silicon/robot/proc/notify_ai(var/notifytype, var/first_arg, var/second_arg) if(!connected_ai) return switch(notifytype) - if(1) //New Robot + if(ROBOT_NOTIFICATION_NEW_UNIT) //New Robot connected_ai << "

NOTICE - New [lowertext(braintype)] connection detected:
[name]
" - if(2) //New Module - connected_ai << "

NOTICE - [braintype] module change detected: [name] has loaded the [module.name].
" - if(3) //New Name - if(oldname != newname) - connected_ai << "

NOTICE - [braintype] reclassification detected: [oldname] is now designated as [newname].
" + if(ROBOT_NOTIFICATION_NEW_MODULE) //New Module + connected_ai << "

NOTICE - [braintype] module change detected: [name] has loaded the [first_arg].
" + if(ROBOT_NOTIFICATION_MODULE_RESET) + connected_ai << "

NOTICE - [braintype] module reset detected: [name] has unladed the [first_arg].
" + if(ROBOT_NOTIFICATION_NEW_NAME) //New Name + if(first_arg != second_arg) + connected_ai << "

NOTICE - [braintype] reclassification detected: [first_arg] is now designated as [second_arg].
" + +/mob/living/silicon/robot/proc/disconnect_from_ai() + if(connected_ai) + connected_ai.connected_robots -= src + connected_ai = null + +/mob/living/silicon/robot/proc/connect_to_ai(var/mob/living/silicon/ai/AI) + if(AI && AI != connected_ai) + disconnect_from_ai() + connected_ai = AI + connected_ai.connected_robots |= src + notify_ai(ROBOT_NOTIFICATION_NEW_UNIT) + sync() diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index d6181f5ec7..227329e915 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -168,7 +168,6 @@ O.mmi.transfer_identity(src) callHook("borgify", list(O)) - O.notify_ai(1) O.Namepick() spawn(0)//To prevent the proc from returning null. diff --git a/code/modules/projectiles/projectile/change.dm b/code/modules/projectiles/projectile/change.dm index 24e2d4b6ef..f48a2d4a61 100644 --- a/code/modules/projectiles/projectile/change.dm +++ b/code/modules/projectiles/projectile/change.dm @@ -24,7 +24,6 @@ if(istype(M, /mob/living/silicon/robot)) var/mob/living/silicon/robot/Robot = M if(Robot.mmi) del(Robot.mmi) - Robot.notify_ai(1) else for(var/obj/item/W in M) if(istype(W, /obj/item/weapon/implant)) //TODO: Carn. give implants a dropped() or something diff --git a/code/setup.dm b/code/setup.dm index f47566d1eb..0a09af0cd4 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -762,3 +762,9 @@ var/list/be_special_flags = list( //General-purpose life speed define for plants. #define HYDRO_SPEED_MULTIPLIER 1 #define NANO_IGNORE_DISTANCE 1 + +// Robot AI notifications +#define ROBOT_NOTIFICATION_NEW_UNIT 1 +#define ROBOT_NOTIFICATION_NEW_NAME 2 +#define ROBOT_NOTIFICATION_NEW_MODULE 3 +#define ROBOT_NOTIFICATION_MODULE_RESET 4 From 373921fa448aebbb94c3da3887b73c04c444c92d Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Tue, 10 Mar 2015 14:06:05 +0100 Subject: [PATCH 38/43] Fixes #8264. updateUsrDialog() doesn't play well with nanoUI, forcing it to re-open and reposition on each cal. --- code/game/machinery/cryo.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index c4c5899f9f..0f511d1944 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -42,7 +42,6 @@ if(!node) return if(!on) - updateUsrDialog() return if(occupant) @@ -57,7 +56,6 @@ if(abs(temperature_archived-air_contents.temperature) > 1) network.update = 1 - updateUsrDialog() return 1 @@ -193,7 +191,6 @@ var/mob/M = G:affecting if(put_mob(M)) del(G) - updateUsrDialog() return /obj/machinery/atmospherics/unary/cryo_cell/update_icon() From e07f06d7f4469f678d4214f89475a493da5dc9be Mon Sep 17 00:00:00 2001 From: Neerti Date: Tue, 10 Mar 2015 10:55:14 -0400 Subject: [PATCH 39/43] I shouldn't proofread when sleep deprived. --- code/modules/examine/descriptions/medical.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/modules/examine/descriptions/medical.dm b/code/modules/examine/descriptions/medical.dm index 7b55c7b9ce..b3b01e9afb 100644 --- a/code/modules/examine/descriptions/medical.dm +++ b/code/modules/examine/descriptions/medical.dm @@ -11,15 +11,15 @@ in critical condition by placing them in stasis, so they can be treated at a later time.
\
\ In order for it to work, it must be loaded with chemicals, and the temperature of the solution must reach a certain point. Additionally, it \ - requires a supply of pure oxygen, provided by canisters that are attached. The most commonly used chemicals in the chambers are Cryoaxadone and \ - Clonexadone. Clonexadone is more effective in treating Genetic damage, but is otherwise functionally identical.
\ + requires a supply of pure oxygen, provided by canisters that are attached. The most commonly used chemicals in the chambers are Cryoxadone and \ + Clonexadone. Clonexadone is more effective in treating all damage, including Genetic damage, but is otherwise functionally identical.
\
\ - Activating the freezer nearby, and setting it to a temperature setting below 50, is required before operation! Further, any clothing the patient \ + Activating the freezer nearby, and setting it to a temperature setting below 150, is recommended before operation! Further, any clothing the patient \ is wearing that act as an insulator will reduce its effectiveness, and should be removed.
\
\ Clicking the tube with a beaker full of chemicals in hand will place it in its storage to distribute when it is activated.
\
\ - Click your target with Grab intent, then click on the tube, with an empty hand, to place them it. Click the tube again to open the menu. \ + Click your target with Grab intent, then click on the tube, with an empty hand, to place them in it. Click the tube again to open the menu. \ Press the button on the menu to activate it. Once they have reached 100 health, right-click the cell and click 'Eject Occupant' to remove them. \ Remember to turn it off, once you've finished, to save power and chemicals!" @@ -30,7 +30,7 @@ description_info = "This console gives information on the status of the patient on the adjacent operating table, notably their consciousness." /obj/machinery/sleeper - description_info = "The sleeper allows you to clean the blood by means of dialysis, and to administer medication in controlled environment.
\ + description_info = "The sleeper allows you to clean the blood by means of dialysis, and to administer medication in a controlled environment.
\
\ Click your target with Grab intent, then click on the sleeper to place them in it. Click the green console, with an empty hand, to open the menu. \ Click 'Start Dialysis' to begin filtering unwanted chemicals from the occupant's blood. The beaker contained will begin to fill with their \ From b00138aa42a953ccf36d801584840406ee464ae9 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Tue, 10 Mar 2015 18:01:27 +0100 Subject: [PATCH 40/43] Fixes #5787. The pull icon is now immediately displayed/hidden when one starts/stops pulling an objects. Not stolen from https://github.com/tgstation/-tg-station/pull/8279. --- code/modules/mob/living/carbon/alien/life.dm | 3 --- code/modules/mob/living/carbon/brain/life.dm | 1 - code/modules/mob/living/carbon/human/life.dm | 3 --- code/modules/mob/living/carbon/monkey/life.dm | 3 --- code/modules/mob/living/silicon/robot/life.dm | 2 -- code/modules/mob/mob.dm | 5 +++++ 6 files changed, 5 insertions(+), 12 deletions(-) diff --git a/code/modules/mob/living/carbon/alien/life.dm b/code/modules/mob/living/carbon/alien/life.dm index 68831c2446..13bc1a4686 100644 --- a/code/modules/mob/living/carbon/alien/life.dm +++ b/code/modules/mob/living/carbon/alien/life.dm @@ -149,9 +149,6 @@ else healths.icon_state = "health7" - if(pullin) - pullin.icon_state = "pull[pulling ? 1 : 0]" - if (client) client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired) diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm index 89cf9faa97..8e8a26d883 100644 --- a/code/modules/mob/living/carbon/brain/life.dm +++ b/code/modules/mob/living/carbon/brain/life.dm @@ -225,7 +225,6 @@ else healths.icon_state = "health7" - if(pullin) pullin.icon_state = "pull[pulling ? 1 : 0]" if (client) client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 8657ef06a2..8aa3ad8200 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1313,9 +1313,6 @@ if(pressure) pressure.icon_state = "pressure[pressure_alert]" - if(pullin) - if(pulling) pullin.icon_state = "pull1" - else pullin.icon_state = "pull0" // if(rest) //Not used with new UI // if(resting || lying || sleeping) rest.icon_state = "rest1" // else rest.icon_state = "rest0" diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 20b80c9c89..d6e1ea2d00 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -562,9 +562,6 @@ if(pressure) pressure.icon_state = "pressure[pressure_alert]" - if(pullin) pullin.icon_state = "pull[pulling ? 1 : 0]" - - if (toxin) toxin.icon_state = "tox[phoron_alert ? 1 : 0]" if (oxygen) oxygen.icon_state = "oxy[oxygen_alert ? 1 : 0]" if (fire) fire.icon_state = "fire[fire_alert ? 2 : 0]" diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index 8295687de9..2e5bdf1586 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -263,8 +263,6 @@ else src.bodytemp.icon_state = "temp-2" - - if(src.pullin) src.pullin.icon_state = "pull[src.pulling ? 1 : 0]" //Oxygen and fire does nothing yet!! // if (src.oxygen) src.oxygen.icon_state = "oxy[src.oxygen_alert ? 1 : 0]" // if (src.fire) src.fire.icon_state = "fire[src.fire_alert ? 1 : 0]" diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 54987ff01d..48d711c7dd 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -616,6 +616,8 @@ var/list/slot_equipment_priority = list( \ if(pulling) pulling.pulledby = null pulling = null + if(pullin) + pullin.icon_state = "pull1" /mob/proc/start_pulling(var/atom/movable/AM) if ( !AM || !usr || src==AM || !isturf(src.loc) ) //if there's no person pulling OR the person is pulling themself OR the object being pulled is inside something: abort! @@ -642,6 +644,9 @@ var/list/slot_equipment_priority = list( \ src.pulling = AM AM.pulledby = src + if(pullin) + pullin.icon_state = "pull0" + if(ishuman(AM)) var/mob/living/carbon/human/H = AM if(H.pull_damage()) From d96e46bf10436104a11dd9342872e309a14ab35f Mon Sep 17 00:00:00 2001 From: Mloc Date: Wed, 11 Mar 2015 11:39:02 +0000 Subject: [PATCH 41/43] fix sanitize_simple(), broken in #8008 fixes OOC newlines and IRC bot crashing. Signed-off-by: Mloc --- code/__HELPERS/text.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index 27f5f98aa4..346ffc7c47 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -36,7 +36,7 @@ //Removes a few problematic characters /proc/sanitize_simple(var/t,var/list/repl_chars = list("\n"="#","\t"="#")) for(var/char in repl_chars) - replacetext(t, char, repl_chars[char]) + t = replacetext(t, char, repl_chars[char]) return t /proc/readd_quotes(var/t) From 09fd6fb22b382c49b2e1be27b45524c8aa13b51c Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Thu, 12 Mar 2015 16:37:38 +0100 Subject: [PATCH 42/43] Fixes #8447. Restores AI blast door and other access restrictions. --- maps/exodus-1.dmm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index 74d0eb4937..77e7dcf8b3 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -1917,7 +1917,7 @@ "aKS" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central_two) "aKT" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main) "aKU" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "E.V.A."; req_access_txt = "0"; req_one_access_txt = "1;11;18;24"},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central_one) -"aKV" = (/obj/machinery/camera{c_tag = "Dormitory Toilets"; dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) +"aKV" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aKW" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aKX" = (/obj/machinery/door/airlock{name = "Bar Backroom"; req_access_txt = "25"},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/crew_quarters/bar) "aKY" = (/obj/machinery/door/airlock/maintenance{name = "Bar Maintenance"; req_access_txt = "0"; req_one_access_txt = "12;25;28"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/crew_quarters/bar) @@ -3134,7 +3134,7 @@ "bin" = (/obj/structure/closet/coffin,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "chapel"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "bio" = (/obj/item/weapon/hand_labeler,/obj/item/device/assembly/timer,/obj/item/device/eftpos{eftpos_name = "Bridge EFTPOS scanner"},/obj/structure/table/woodentable,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/bridge/meeting_room) "bip" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/bridge/meeting_room) -"biq" = (/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 28; pixel_y = 5},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = -27; pixel_y = 4},/obj/effect/landmark/start{name = "AI"},/obj/item/device/radio/intercom{broadcasting = 1; freerange = 1; listening = 1; name = "Common Channel"; pixel_y = 25},/obj/machinery/newscaster/security_unit{pixel_x = 32; pixel_y = 32},/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_x = -32; pixel_y = 32},/obj/structure/cable/cyan{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"biq" = (/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 28; pixel_y = 5},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = -27; pixel_y = 4},/obj/effect/landmark/start{name = "AI"},/obj/item/device/radio/intercom{broadcasting = 1; freerange = 1; listening = 1; name = "Common Channel"; pixel_y = 25},/obj/machinery/newscaster/security_unit{pixel_x = 32; pixel_y = 32},/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_x = -32; pixel_y = 32},/obj/structure/cable/cyan{d2 = 2; icon_state = "0-2"},/obj/machinery/door_control{desc = "A remote control-switch for the AI core maintenance door."; id = "AICore"; name = "AI Maintenance Hatch"; pixel_x = 17; pixel_y = 25; req_access_txt = "109"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bir" = (/obj/item/weapon/folder/red,/obj/structure/table/woodentable,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/bridge/meeting_room) "bis" = (/obj/item/weapon/book/manual/security_space_law,/obj/structure/table/woodentable,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/bridge/meeting_room) "bit" = (/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "AI Core Door"; req_access_txt = "16"},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) @@ -3147,7 +3147,7 @@ "biA" = (/obj/machinery/vending/coffee,/turf/simulated/floor/wood,/area/crew_quarters/captain) "biB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/crew_quarters/captain) "biC" = (/turf/simulated/floor/wood,/area/crew_quarters/captain) -"biD" = (/obj/machinery/door/window{dir = 2; name = "AI Core Door"; req_access_txt = "16"},/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/flasher{id = "AI"; pixel_x = 22; pixel_y = 24},/obj/machinery/turretid/stun{check_synth = 1; name = "AI Chamber turret control"; pixel_x = 36; pixel_y = 24},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"biD" = (/obj/machinery/door/window{dir = 2; name = "AI Core Door"; req_access_txt = "109"},/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/flasher{id = "AI"; pixel_x = 22; pixel_y = 24},/obj/machinery/turretid/stun{check_synth = 1; name = "AI Chamber turret control"; pixel_x = 36; pixel_y = 24},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "biE" = (/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/crew_quarters/captain) "biF" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "biG" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/crew_quarters/captain) @@ -3466,7 +3466,7 @@ "boH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/central_two) "boI" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/rnd/research) "boJ" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) -"boK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/vault/bolted{req_access_txt = "16"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"boK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "AICore"; layer = 3.3; name = "AI Maintenance Hatch"},/obj/machinery/door/airlock/vault/bolted{name = "AI Core"; req_access_txt = "109"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "boL" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "boM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "boN" = (/obj/structure/bed,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/exam_room) @@ -5666,7 +5666,7 @@ "ceX" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) "ceY" = (/obj/structure/noticeboard{pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) "ceZ" = (/obj/structure/table,/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/weapon/hand_labeler,/turf/simulated/floor{tag = "icon-whitegreen (NORTHWEST)"; icon_state = "whitegreen"; dir = 9},/area/rnd/xenobiology/xenoflora_storage) -"cfa" = (/obj/machinery/camera{c_tag = "Engineering Washroom"; dir = 1; network = list("SS13")},/obj/machinery/light,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) +"cfa" = (/obj/machinery/light,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) "cfb" = (/obj/structure/closet/secure_closet/hydroponics{req_access = list(47)},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora_storage) "cfc" = (/obj/structure/bed/chair,/turf/simulated/floor,/area/medical/surgeryobs) "cfd" = (/obj/structure/sign/biohazard,/turf/simulated/wall,/area/rnd/xenobiology) From 41a01516f5a579cd29d19ddd9cec31b27f70f750 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 12 Mar 2015 12:47:20 -0400 Subject: [PATCH 43/43] Fixes missing _s for blue blazer icon --- icons/mob/uniform.dmi | Bin 258025 -> 258025 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index a5c9905b54903df435531fdbd2524b5bb35066e8..bd98dff120e33d01b6e2b6f70af3acd8a4ba8048 100644 GIT binary patch delta 707 zcmV;!0zCcc-w)~E50FQHvD58gFLPP6SoF}og270P#Y7TaQjW)c`aRg0W(H{SH*yN_ z6HQb666N>Zzn}m6@~!*y^~>SP=AyNG>OTJY*WqE7*i!e@{r%zakXVM))<52;are}{ zJLZXde|LC@V%|M<9}f>Fqr%=jb&qeb2!Mr5wc;Qm(-@@??wBcmTwo57I45a{5myef zB1Z|7caVtGP!yyPX$$A9GY%p$>H9<|hR7Qy8#A&s8;HovGNc9zzNZoCYE%bA@CHIw zkcv3`C>8VfEJJF8F(Yw)2g9<#r1XQyU0n?pD-c4w0C21Sv$C z2jLnRE!9n*r8-`)2d>;CI4b`&54l$2BHnC4AMs`Z@{FsPW*y*1yyme@bu8*O5Nf~3 zB9zlM5ONm|n4TMmpl7Pm)OL`dUz|`3OJO!ZZ6eu#HHzPV3kG3tE8y!2_`Ye0rlVE~ zNcy^`p+;URBRjrw&@o4k+Aw8bQ21DcnD*stlGGZs6*Qt}u9F&9mjEV-BlSKBqJ(FZ zjNCXhxk5eoj2zMQbdmshLEzegBH^;7N6k>sWUQAwYpNCLG&0Q#TaWJQhJ#()O*Yg^ zj=qHSOYon6!$aguOZU`0{_*Pf#_v6;H6)~td14qIjJd+Jaoi($f#E2|0V_P)=>Urq z#gBSvjVgxl-MGAtsUWK9bx6~*B zd-fU-7lD%dt;BqQ+AnEP8vF@7{ZKVSa+`n~)7?d##n=AyNG>OTGX;qWj^Y^i(d{`z=$NGwBY>mP5_xO?i} z9rMJ!zdJlcG4GzbPltz-QDN_%y2m$I1i(V3T5%AOX^c_`cgz%jE-;5koRc)fh${zK zk)s64J4i%oC<;=Dw1sol83z%W^kX6vL*$KS{W}c35F3OMzl>iE9|5R=B4T>5=RL zZrckA+ZZbVFDR;iFDCXzLK&9EMuOP)MuMKZpco>L>mU``sSSiOcPr{Jhe%91f)pan zgK!Oumg=U@QXMbY16OVm9F_l?hg>Uh5pTAjk9e~HdB#;tvkvehUh~+dIu>;s2(@2i z5z1*B2)PRfOwSEO&@)wOYCA~KFHR_ir7#eRT!*SHp&?>L(|E`A#Eu%IjJJS?IEe=K@5RMF@hSaA_c)*ufkCJTWXYm zJ$ns^i$KZ!R$@Lv?Uytt4gLZi|F^a6DSszkNOY2LqBUqYBXlPlJsGhm8dRhm8dSw~Yk@T