From d94808f10948e44fa531c75f53751a3a803f37d5 Mon Sep 17 00:00:00 2001 From: Liam Date: Wed, 1 Jul 2015 13:57:22 -0400 Subject: [PATCH 001/104] Changes it to Announcement and keeps it ... open ended to clearly define that there is no "X wins by this point". Also had to fix 214 because 'bad name'.... I'm not sure why, Based Byond strikes again. --- code/game/gamemodes/malfunction/malfunction.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/game/gamemodes/malfunction/malfunction.dm b/code/game/gamemodes/malfunction/malfunction.dm index 6d0feda4a1e..40bc7104518 100644 --- a/code/game/gamemodes/malfunction/malfunction.dm +++ b/code/game/gamemodes/malfunction/malfunction.dm @@ -117,8 +117,7 @@ /datum/game_mode/malfunction/proc/capture_the_station() - world << "The AI has accessed the station's Core Files!" - world << "It has fully taken control of all of [station_name()]'s systems." + minor_announce("The Intelligence Unit has accessed the core files!", null, 'sound/AI/aimalf.ogg', "Priority") to_nuke_or_not_to_nuke = 1 for(var/datum/mind/AI_mind in malf_ai) @@ -212,7 +211,7 @@ /datum/game_mode/malfunction/proc/ai_win() set category = "Malfunction" set name = "Explode" - set desc = "Activates the self-destruct device on [world.name]." + set desc = "Activates the self-destruct device on the station." if (!ticker.mode:to_nuke_or_not_to_nuke) return ticker.mode:to_nuke_or_not_to_nuke = 0 From 5d6cd1b235e14b9f13384fe52f3a504df18405d0 Mon Sep 17 00:00:00 2001 From: Liam Date: Thu, 23 Jul 2015 12:30:36 -0400 Subject: [PATCH 002/104] Revert "Changes it to Announcement and keeps it ..." This reverts commit 786ceee2e4f7dc703f06f63786975d430a77b203. --- code/game/gamemodes/malfunction/malfunction.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/malfunction/malfunction.dm b/code/game/gamemodes/malfunction/malfunction.dm index 40bc7104518..6d0feda4a1e 100644 --- a/code/game/gamemodes/malfunction/malfunction.dm +++ b/code/game/gamemodes/malfunction/malfunction.dm @@ -117,7 +117,8 @@ /datum/game_mode/malfunction/proc/capture_the_station() - minor_announce("The Intelligence Unit has accessed the core files!", null, 'sound/AI/aimalf.ogg', "Priority") + world << "The AI has accessed the station's Core Files!" + world << "It has fully taken control of all of [station_name()]'s systems." to_nuke_or_not_to_nuke = 1 for(var/datum/mind/AI_mind in malf_ai) @@ -211,7 +212,7 @@ /datum/game_mode/malfunction/proc/ai_win() set category = "Malfunction" set name = "Explode" - set desc = "Activates the self-destruct device on the station." + set desc = "Activates the self-destruct device on [world.name]." if (!ticker.mode:to_nuke_or_not_to_nuke) return ticker.mode:to_nuke_or_not_to_nuke = 0 From fa686dbfef5b6577e603ffbea585907f386b566b Mon Sep 17 00:00:00 2001 From: xxalpha Date: Fri, 24 Jul 2015 10:15:00 +0100 Subject: [PATCH 003/104] Made it possible to emag a cyborg more than once. --- code/modules/mob/living/silicon/robot/robot.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index b0e916f11a9..f8dec28231e 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -569,7 +569,6 @@ user << "The cover is already unlocked!" return if(opened)//Cover is open - if(emagged) return//Prevents the X has hit Y with Z message also you cant emag them twice if(wiresexposed) user << "You must close the cover first!" return From 2bf89ef4beff6af6caa595acb1d3d3e8acc3e3de Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Sun, 26 Jul 2015 13:49:50 -0500 Subject: [PATCH 004/104] Chameleon Eyewear --- code/game/gamemodes/gang/gang.dm | 9 ++++- code/game/gamemodes/revolution/revolution.dm | 7 ++++ code/modules/clothing/glasses/glasses.dm | 32 +++++++++++++++-- code/modules/clothing/glasses/hud.dm | 9 +++++ html/changelogs/KOR-PR-CHAMELEON.yml | 37 ++++++++++++++++++++ 5 files changed, 90 insertions(+), 4 deletions(-) create mode 100644 html/changelogs/KOR-PR-CHAMELEON.yml diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm index b9ee7887e88..d0ea6e9996c 100644 --- a/code/game/gamemodes/gang/gang.dm +++ b/code/game/gamemodes/gang/gang.dm @@ -106,6 +106,7 @@ var/list/gang_colors_pool = list("red","orange","yellow","green","blue","purple" var/obj/item/device/gangtool/gangtool = new(mob) var/obj/item/weapon/pen/gang/T = new(mob) var/obj/item/toy/crayon/spraycan/gang/SC = new(mob,gang) + var/obj/item/clothing/glasses/hud/security/chameleon/C = new(mob,gang) var/list/slots = list ( "backpack" = slot_in_backpack, @@ -139,8 +140,14 @@ var/list/gang_colors_pool = list("red","orange","yellow","green","blue","purple" . += 1 else mob << "The territory spraycan in your [where3] can be used to claim areas of the station for your gang. The more territory your gang controls, the more influence you get. All gangsters can use these, so distribute them to grow your influence faster." - mob.update_icons() + var/where4 = mob.equip_in_one_of_slots(C, slots) + if (!where4) + mob << "Your Syndicate benefactors were unfortunately unable to get you a chameleon security HUD." + . += 1 + else + mob << "The chameleon security HUD in your [where4] will help you keep track of who is loyalty-implanted, and unable to be recruited." + mob.update_icons() return . diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index c198a583328..3a3f84d4d02 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -128,6 +128,7 @@ var/obj/item/device/flash/T = new(mob) var/obj/item/toy/crayon/spraycan/R = new(mob) + var/obj/item/clothing/glasses/hud/security/chameleon/C = new(mob) var/list/slots = list ( "backpack" = slot_in_backpack, @@ -137,10 +138,16 @@ "right hand" = slot_r_hand, ) var/where = mob.equip_in_one_of_slots(T, slots) + var/where2 = mob.equip_in_one_of_slots(C, slots) mob.equip_in_one_of_slots(R,slots) mob.update_icons() + if (!where2) + mob << "The Syndicate were unfortunately unable to get you chameleon security HUD." + else + mob << "The chameleon security HUD in your [where] will help you keep track of who is loyalty-implanted, and unable to be recruited." + if (!where) mob << "The Syndicate were unfortunately unable to get you a flash." else diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 48735b7a688..d9048033175 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -188,12 +188,14 @@ ..() /obj/item/clothing/glasses/thermal/syndi //These are now a traitor item, concealed as mesons. -Pete - name = "Optical Meson Scanner" - desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition." - icon_state = "meson" + name = "Chameleon Thermals" + desc = "A pair of thermal optic goggles with an onboard chameleon generator. Toggle to disguise." origin_tech = "magnets=3;syndicate=4" flash_protect = -1 +/obj/item/clothing/glasses/thermal/syndi/attack_self(mob/user) + chameleon(user) + /obj/item/clothing/glasses/thermal/monocle name = "Thermoncle" desc = "A monocle thermal." @@ -230,3 +232,27 @@ icon_state = "redglasses" item_state = "redglasses" + +/obj/item/clothing/glasses/proc/chameleon(var/mob/user) + var/list/glasses_types = typesof(/obj/item/clothing/glasses) - src.type - /obj/item/clothing/glasses/hud - /obj/item/clothing/glasses/night/shadowling - /obj/item/clothing/glasses/hud/toggle - /obj/item/clothing/glasses + var/list/glasses = list() + + // Generate them into a list + for(var/glasses_type in glasses_types) + var/obj/item/clothing/glasses/S = new glasses_type + glasses[capitalize(S.name)] = S + + var/list/show_glasses = list("EXIT" = null) + sortList(glasses) // the list that will be shown to the user to pick from + + var/input_glasses = input(user, "Choose a piece of eyewear to disguise as.", "Choose glasses style.") in show_glasses + + if(user && src in user.contents) + + var/obj/item/clothing/glasses/chosen_glasses = glasses[capitalize(input_glasses)] + + if(chosen_glasses) + name = chosen_glasses.name + icon_state = chosen_glasses.icon_state + item_state = chosen_glasses.item_state + desc = chosen_glasses.desc + diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 0f7365a3417..c6ac3201107 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -46,6 +46,15 @@ icon_state = "securityhud" hud_type = DATA_HUD_SECURITY_ADVANCED +/obj/item/clothing/glasses/hud/security/chameleon + name = "Chamleon Security HUD" + desc = "A stolen security HUD integrated with Syndicate chameleon technology. Toggle to disguise the HUD. Provides flash protection." + flash_protect = 1 + +/obj/item/clothing/glasses/hud/security/chameleon/attack_self(mob/user) + chameleon(user) + + /obj/item/clothing/glasses/hud/security/sunglasses/eyepatch name = "Eyepatch HUD" desc = "A heads-up display that connects directly to the optical nerve of the user, replacing the need for that useless eyeball." diff --git a/html/changelogs/KOR-PR-CHAMELEON.yml b/html/changelogs/KOR-PR-CHAMELEON.yml new file mode 100644 index 00000000000..01af414b942 --- /dev/null +++ b/html/changelogs/KOR-PR-CHAMELEON.yml @@ -0,0 +1,37 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# spellcheck (typo fixes) +# experiment +# tgs (TG-ported fixes?) +################################# + +# Your name. +author: Kor + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Revheads and Gang leaders now spawn with chameleon security HUDs, for keeping track of loyalty implanted crew." + - rscadd: "Syndicate thermals now have a chameleon function as well, allowing you to disguise the goggles to match your job." From 488ecf1a51c5a6b313fb24bc712d637f1c425146 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Sun, 26 Jul 2015 13:58:05 -0500 Subject: [PATCH 005/104] Typo --- code/game/gamemodes/revolution/revolution.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 3a3f84d4d02..3877c24af26 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -146,7 +146,7 @@ if (!where2) mob << "The Syndicate were unfortunately unable to get you chameleon security HUD." else - mob << "The chameleon security HUD in your [where] will help you keep track of who is loyalty-implanted, and unable to be recruited." + mob << "The chameleon security HUD in your [where2] will help you keep track of who is loyalty-implanted, and unable to be recruited." if (!where) mob << "The Syndicate were unfortunately unable to get you a flash." From 485203efc53c589e8527b412dcc7f4b06820099c Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Sun, 26 Jul 2015 16:14:56 -0500 Subject: [PATCH 006/104] typo --- code/game/gamemodes/revolution/revolution.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 3877c24af26..81434d27969 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -144,7 +144,7 @@ mob.update_icons() if (!where2) - mob << "The Syndicate were unfortunately unable to get you chameleon security HUD." + mob << "The Syndicate were unfortunately unable to get you a chameleon security HUD." else mob << "The chameleon security HUD in your [where2] will help you keep track of who is loyalty-implanted, and unable to be recruited." From ccbb9c1e5207c3547268d15f0b6b0fff55d4c5a8 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Sun, 26 Jul 2015 16:38:00 -0500 Subject: [PATCH 007/104] Redid chameleon proc --- code/modules/clothing/glasses/glasses.dm | 68 +++++++++++++++++------- 1 file changed, 48 insertions(+), 20 deletions(-) diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index d9048033175..92645f50a67 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -234,25 +234,53 @@ /obj/item/clothing/glasses/proc/chameleon(var/mob/user) - var/list/glasses_types = typesof(/obj/item/clothing/glasses) - src.type - /obj/item/clothing/glasses/hud - /obj/item/clothing/glasses/night/shadowling - /obj/item/clothing/glasses/hud/toggle - /obj/item/clothing/glasses - var/list/glasses = list() - - // Generate them into a list - for(var/glasses_type in glasses_types) - var/obj/item/clothing/glasses/S = new glasses_type - glasses[capitalize(S.name)] = S - - var/list/show_glasses = list("EXIT" = null) + sortList(glasses) // the list that will be shown to the user to pick from - - var/input_glasses = input(user, "Choose a piece of eyewear to disguise as.", "Choose glasses style.") in show_glasses + var/input_glasses = input(user, "Choose a piece of eyewear to disguise as.", "Choose glasses style.") as null|anything in list("Sunglasses", "Medical HUD", "Mesons", "Science Goggles", "Glasses", "Security Sunglasses","Eyepatch","Welding","Gar") if(user && src in user.contents) - - var/obj/item/clothing/glasses/chosen_glasses = glasses[capitalize(input_glasses)] - - if(chosen_glasses) - name = chosen_glasses.name - icon_state = chosen_glasses.icon_state - item_state = chosen_glasses.item_state - desc = chosen_glasses.desc - + switch(input_glasses) + if("Sunglasses") + desc = "Strangely ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks many flashes." + name = "sunglasses" + icon_state = "sun" + item_state = "sunglasses" + if("Medical HUD") + name = "Health Scanner HUD" + desc = "A heads-up display that scans the humans in view and provides accurate data about their health status." + icon_state = "healthhud" + item_state = "healthhud" + if("Mesons") + name = "Optical Meson Scanner" + desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition." + icon_state = "meson" + item_state = "meson" + if("Science Goggles") + name = "Science Goggles" + desc = "A pair of snazzy goggles used to protect against chemical spills." + icon_state = "purple" + item_state = "glasses" + if("Glasses") + name = "Prescription Glasses" + desc = "Made by Nerd. Co." + icon_state = "glasses" + item_state = "glasses" + if("Security Sunglasses") + name = "HUDSunglasses" + desc = "Sunglasses with a HUD." + icon_state = "sunhud" + item_state = "sunglasses" + if("Eyepatch") + name = "eyepatch" + desc = "Yarr." + icon_state = "eyepatch" + item_state = "eyepatch" + if("Welding") + name = "welding goggles" + desc = "Protects the eyes from welders; approved by the mad scientist association." + icon_state = "welding-g" + item_state = "welding-g" + if("Gar") + desc = "Just who the hell do you think I am?!" + name = "gar glasses" + icon_state = "gar" + item_state = "gar" + From 3dca22808842c8e7024c08acbcf4eff2b32a67eb Mon Sep 17 00:00:00 2001 From: Miauw Date: Wed, 29 Jul 2015 18:02:13 +0200 Subject: [PATCH 008/104] i ded pls nerf --- code/datums/spells/touch_attacks.dm | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/code/datums/spells/touch_attacks.dm b/code/datums/spells/touch_attacks.dm index cd83738c1f7..dc66755da1b 100644 --- a/code/datums/spells/touch_attacks.dm +++ b/code/datums/spells/touch_attacks.dm @@ -1,6 +1,7 @@ -/obj/effect/proc_holder/spell/targeted/touch/ +/obj/effect/proc_holder/spell/targeted/touch var/hand_path = "/obj/item/weapon/melee/touch_attack" var/obj/item/weapon/melee/touch_attack/attached_hand = null + var/refund_coeff = 1 //how much of their charge they get back. invocation_type = "none" //you scream on connecting, not summoning include_user = 1 range = -1 @@ -8,7 +9,7 @@ /obj/effect/proc_holder/spell/targeted/touch/Click(mob/user = usr) if(attached_hand) qdel(attached_hand) - charge_counter = charge_max + charge_counter = round(charge_max * refund_coeff, 1) attached_hand = null user << "You draw the power out of your hand." return 0 @@ -48,6 +49,7 @@ name = "Disintegrate" desc = "This spell charges your hand with vile energy that can be used to violently explode victims." hand_path = "/obj/item/weapon/melee/touch_attack/disintegrate" + refund_coeff = .66 school = "evocation" charge_max = 600 @@ -56,6 +58,15 @@ action_icon_state = "gib" +/obj/effect/proc_holder/spell/targeted/touch/disintegrate/cast(list/targets) + for(var/mob/living/carbon/user in targets) + visible_message("[user] starts gathering destructive energy...", "You start gathering destructive energy...") + playsound(user.loc, 'sound/magic/Ethereal_Exit.ogg', 50, 1) + if(!do_after(user, 15)) + return 0 + visible_message("[user] channels a large amount of destructive energy to his hand!", "You channel a large amount of destructive energy to his hand!") + ..() + /obj/effect/proc_holder/spell/targeted/touch/flesh_to_stone name = "Flesh to Stone" desc = "This spell charges your hand with the power to turn victims into inert statues for a long period of time." From 8403681d5eaab39cf53040520884d08e51b30ada Mon Sep 17 00:00:00 2001 From: Miauw Date: Wed, 29 Jul 2015 18:20:39 +0200 Subject: [PATCH 009/104] >tfw i cant even make functional nerfs --- code/datums/spells/touch_attacks.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/spells/touch_attacks.dm b/code/datums/spells/touch_attacks.dm index dc66755da1b..9f69c3bd2a4 100644 --- a/code/datums/spells/touch_attacks.dm +++ b/code/datums/spells/touch_attacks.dm @@ -49,7 +49,7 @@ name = "Disintegrate" desc = "This spell charges your hand with vile energy that can be used to violently explode victims." hand_path = "/obj/item/weapon/melee/touch_attack/disintegrate" - refund_coeff = .66 + refund_coeff = 0.66 school = "evocation" charge_max = 600 From f6abc54eb877ee6f5331d6763d2d4901718b963c Mon Sep 17 00:00:00 2001 From: PatchouliKnowledge Date: Fri, 7 Aug 2015 03:28:00 +0300 Subject: [PATCH 010/104] Lockers dump their contents if molten by alien acid --- code/game/objects/effects/aliens.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm index 1c00feff64c..0965a45e74c 100644 --- a/code/game/objects/effects/aliens.dm +++ b/code/game/objects/effects/aliens.dm @@ -476,6 +476,11 @@ if(ticks >= target_strength) target.visible_message("[target] collapses under its own weight into a puddle of goop and undigested debris!") + if(istype(target, /obj/structure/closet)) + var/obj/structure/closet/T = target + T.dump_contents() + qdel(target) + if(istype(target, /turf/simulated/wall)) var/turf/simulated/wall/W = target W.dismantle_wall(1) From 32294be39cf0cdb4ee8f88e977c810bf8a86f380 Mon Sep 17 00:00:00 2001 From: GunHog Date: Wed, 12 Aug 2015 10:26:09 -0500 Subject: [PATCH 011/104] E.X.P.E.R.I-MENTOR fixes - Removes usage of "busy" var. - Changed message to specify that the machine is already loaded. - Added a check for trying to update tech levels on an item that was deleted. --- code/modules/research/experimentor.dm | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index e57a3762319..28d9d8532b3 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -127,7 +127,9 @@ if(exchange_parts(user, O)) return - default_deconstruction_crowbar(O) + if(panel_open && istype(O, /obj/item/weapon/crowbar)) + default_deconstruction_crowbar(O) + return if(!checkCircumstances(O)) user << "The [O] is not yet valid for the [src] and must be completed!" @@ -138,10 +140,10 @@ if (!linked_console) user << "The [src] must be linked to an R&D console first!" return - if (busy) - user << "The [src] is busy right now." + if (loaded_item) + user << "The [src] is already loaded." return - if (istype(O, /obj/item) && !loaded_item) + if (istype(O, /obj/item)) if(!O.origin_tech) user << "This doesn't seem to have a tech origin!" return @@ -154,7 +156,6 @@ return if(!user.drop_item()) return - busy = 1 loaded_item = O O.loc = src user << "You add the [O.name] to the machine." @@ -544,7 +545,6 @@ spawn(resetTime) icon_state = "h_lathe" - busy = 0 recentlyExperimented = 0 /obj/machinery/r_n_d/experimentor/Topic(href, href_list) @@ -562,7 +562,6 @@ if(D) linked_console = D else if(scantype == "eject") - busy = 0 ejectItem() else if(scantype == "refresh") src.updateUsrDialog() @@ -578,7 +577,7 @@ experiment(dotype,process) use_power(750) if(dotype != FAIL) - if(process.origin_tech) + if(process && process.origin_tech) var/list/temp_tech = ConvertReqString2List(process.origin_tech) for(var/T in temp_tech) linked_console.files.UpdateTech(T, temp_tech[T]) From f598eb63dcebc6ba333a3df081faa42508becb96 Mon Sep 17 00:00:00 2001 From: Dorsisdwarf Date: Thu, 13 Aug 2015 08:59:31 +0100 Subject: [PATCH 012/104] Makes lings undetectable to the AI when using digital camo --- .../gamemodes/changeling/evolution_menu.dm | 1 + .../changeling/powers/digitalcamo.dm | 9 ++-- code/modules/mob/living/life.dm | 49 ++++++++++++------- code/modules/mob/living/living.dm | 5 +- code/modules/mob/mob_defines.dm | 3 ++ html/changelogs/example - Copy.yml | 36 ++++++++++++++ 6 files changed, 79 insertions(+), 24 deletions(-) create mode 100644 html/changelogs/example - Copy.yml diff --git a/code/game/gamemodes/changeling/evolution_menu.dm b/code/game/gamemodes/changeling/evolution_menu.dm index 9269dc71be1..33de046d3ab 100644 --- a/code/game/gamemodes/changeling/evolution_menu.dm +++ b/code/game/gamemodes/changeling/evolution_menu.dm @@ -388,6 +388,7 @@ var/list/sting_paths if(ishuman(src) || ismonkey(src)) if(mind && mind.changeling) digitalcamo = 0 + digitalinvis = 0 mind.changeling.changeling_speak = 0 mind.changeling.reset() for(var/obj/effect/proc_holder/changeling/p in mind.changeling.purchasedpowers) diff --git a/code/game/gamemodes/changeling/powers/digitalcamo.dm b/code/game/gamemodes/changeling/powers/digitalcamo.dm index 2404041ae17..13bf62bdbc4 100644 --- a/code/game/gamemodes/changeling/powers/digitalcamo.dm +++ b/code/game/gamemodes/changeling/powers/digitalcamo.dm @@ -1,7 +1,7 @@ /obj/effect/proc_holder/changeling/digitalcamo name = "Digital Camouflage" desc = "By evolving the ability to distort our form and proprotions, we defeat common altgorithms used to detect lifeforms on cameras." - helptext = "We cannot be tracked by camera while using this skill. However, humans looking at us will find us... uncanny." + helptext = "We cannot be tracked by camera or seen by AI units while using this skill. However, humans looking at us will find us... uncanny." dna_cost = 1 //Prevents AIs tracking you but makes you easily detectable to the human-eye. @@ -9,9 +9,12 @@ if(user.digitalcamo) user << "We return to normal." + user.digitalinvis = 0 else - user << "We distort our form to prevent AI-tracking." - user.digitalcamo = !user.digitalcamo + user << "We distort our form to hide from the AI" + user.digitalcamo = 1 + user.digitalinvis = !user.digitalcamo + feedback_add_details("changeling_powers","CAM") return 1 diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 4d32293c25b..0d5b4cd0444 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -2,6 +2,9 @@ set invisibility = 0 set background = BACKGROUND_ENABLED + if(digitalinvis) + handle_diginvis() //AI becomes unable to see mob + if (notransform) return if(!loc) @@ -66,6 +69,14 @@ /mob/living/proc/handle_chemicals_in_body() return +/mob/living/proc/handle_diginvis() + if(!digitaldisguise) + src.digitaldisguise = image(loc = src) + src.digitaldisguise.override = 1 + for(var/mob/living/silicon/ai/AI in player_list) + AI.client.images |= src.digitaldisguise + + /mob/living/proc/handle_blood() return @@ -138,27 +149,27 @@ if(A.CheckRemoval(src)) A.Remove(src) for(var/obj/item/I in src) - if(I.action_button_name) - if(!I.action) - if(I.action_button_is_hands_free) - I.action = new/datum/action/item_action/hands_free - else - I.action = new/datum/action/item_action - I.action.name = I.action_button_name - I.action.target = I - I.action.Grant(src) - for(var/obj/item/T in I) - if(T.action_button_name && T.action_button_internal) - if(!T.action) - if(T.action_button_is_hands_free) - T.action = new/datum/action/item_action/hands_free - else - T.action = new/datum/action/item_action - T.action.name = T.action_button_name - T.action.target = T - T.action.Grant(src) + give_action_button(I, 1) return +/mob/living/proc/give_action_button(var/obj/item/I, recursive = 0) + if(I.action_button_name) + if(!I.action) + if(istype(I, /obj/item/organ/internal)) + I.action = new/datum/action/organ_action + else if(I.action_button_is_hands_free) + I.action = new/datum/action/item_action/hands_free + else + I.action = new/datum/action/item_action + I.action.name = I.action_button_name + I.action.target = I + I.action.Grant(src) + + if(recursive) + for(var/obj/item/T in I) + give_action_button(I, recursive - 1) + + //this handles hud updates. Calls update_vision() and handle_hud_icons() /mob/living/proc/handle_regular_hud_updates() if(!client) return 0 diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 01c4478415b..1df166830e1 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -570,7 +570,8 @@ Sorry Giacom. Please don't be mad :( else stop_pulling() . = ..() - if ((s_active && !( s_active in contents ) )) + if (s_active && !(s_active in contents) && !(s_active.loc in contents)) + // It's ugly. But everything related to inventory/storage is. -- c0 s_active.close(src) for(var/mob/living/simple_animal/slime/M in oview(1,src)) @@ -879,7 +880,7 @@ Sorry Giacom. Please don't be mad :( return 0 if(invisibility || alpha == 0)//cloaked return 0 - if(digitalcamo) + if(digitalcamo || digitalinvis) return 0 // Now, are they viewable by a camera? (This is last because it's the most intensive check) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 265a428ba71..a7b680630fd 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -139,6 +139,9 @@ var/area/lastarea = null var/digitalcamo = 0 // Can they be tracked by the AI? + var/digitalinvis = 0 //Are they ivisible to the AI? + var/image/digitaldisguise = null //what does the AI see instead of them? + var/weakeyes = 0 //Are they vulnerable to flashes? var/has_unlimited_silicon_privilege = 0 // Can they interact with station electronics diff --git a/html/changelogs/example - Copy.yml b/html/changelogs/example - Copy.yml new file mode 100644 index 00000000000..e689f73183f --- /dev/null +++ b/html/changelogs/example - Copy.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# spellcheck (typo fixes) +# experiment +# tgs (TG-ported fixes?) +################################# + +# Your name. +author: Dorsidwarf + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - tweak: "Changelings' Digital Camoflague ability now renders them totally invisible to the AI" From 98561a60c1d1354576730eef47e7837f5883dd01 Mon Sep 17 00:00:00 2001 From: Liam Date: Sat, 15 Aug 2015 19:05:05 -0400 Subject: [PATCH 013/104] Moves Cloning Machines/Comps to Medical Section --- .../research/designs/comp_board_designs.dm | 29 ---------- .../research/designs/machine_designs.dm | 30 ++++++++++ tgstation.dme | 58 +++++++++++++++++++ 3 files changed, 88 insertions(+), 29 deletions(-) diff --git a/code/modules/research/designs/comp_board_designs.dm b/code/modules/research/designs/comp_board_designs.dm index 0f657da38b0..5b99724b022 100644 --- a/code/modules/research/designs/comp_board_designs.dm +++ b/code/modules/research/designs/comp_board_designs.dm @@ -160,35 +160,6 @@ build_path = /obj/item/weapon/circuitboard/robotics category = list("Computer Boards") -/datum/design/clonecontrol - name = "Computer Design (Cloning Machine Console)" - desc = "Allows for the construction of circuit boards used to build a new Cloning Machine console." - id = "clonecontrol" - req_tech = list("programming" = 3, "biotech" = 3) - build_type = IMPRINTER - materials = list(MAT_GLASS = 1000, "sacid" = 20) - build_path = /obj/item/weapon/circuitboard/cloning - category = list("Computer Boards") - -/datum/design/clonepod - name = "Machine Design (Clone Pod)" - desc = "Allows for the construction of circuit boards used to build a Cloning Pod." - id = "clonepod" - req_tech = list("programming" = 3, "biotech" = 3) - build_type = IMPRINTER - materials = list(MAT_GLASS = 1000, "sacid" = 20) - build_path = /obj/item/weapon/circuitboard/clonepod - category = list("Computer Boards") - -/datum/design/clonescanner - name = "Machine Design (Cloning Scanner)" - desc = "Allows for the construction of circuit boards used to build a Cloning Scanner." - id = "clonescanner" - req_tech = list("programming" = 3, "biotech" = 3) - build_type = IMPRINTER - materials = list(MAT_GLASS = 1000, "sacid" = 20) - build_path = /obj/item/weapon/circuitboard/clonescanner - category = list("Computer Boards") /datum/design/arcadebattle name = "Computer Design (Battle Arcade Machine)" diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 75202c87387..c62281d10d7 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -142,6 +142,36 @@ build_path = /obj/item/weapon/circuitboard/chem_heater category = list ("Medical Machinery") +/datum/design/clonecontrol + name = "Computer Design (Cloning Machine Console)" + desc = "Allows for the construction of circuit boards used to build a new Cloning Machine console." + id = "clonecontrol" + req_tech = list("programming" = 3, "biotech" = 3) + build_type = IMPRINTER + materials = list(MAT_GLASS = 1000, "sacid" = 20) + build_path = /obj/item/weapon/circuitboard/cloning + category = list("Medical Machinery") + +/datum/design/clonepod + name = "Machine Design (Clone Pod)" + desc = "Allows for the construction of circuit boards used to build a Cloning Pod." + id = "clonepod" + req_tech = list("programming" = 3, "biotech" = 3) + build_type = IMPRINTER + materials = list(MAT_GLASS = 1000, "sacid" = 20) + build_path = /obj/item/weapon/circuitboard/clonepod + category = list("Medical Machinery") + +/datum/design/clonescanner + name = "Machine Design (Cloning Scanner)" + desc = "Allows for the construction of circuit boards used to build a Cloning Scanner." + id = "clonescanner" + req_tech = list("programming" = 3, "biotech" = 3) + build_type = IMPRINTER + materials = list(MAT_GLASS = 1000, "sacid" = 20) + build_path = /obj/item/weapon/circuitboard/clonescanner + category = list("Medical Machinery") + /datum/design/biogenerator name = "Machine Design (Biogenerator Board)" desc = "The circuit board for a biogenerator." diff --git a/tgstation.dme b/tgstation.dme index 7677d19fc8f..52812a0252d 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6,6 +6,64 @@ // BEGIN_FILE_DIR #define FILE_DIR . +#define FILE_DIR "code" +#define FILE_DIR "code/modules" +#define FILE_DIR "code/modules/games" +#define FILE_DIR "code/modules/html_interface" +#define FILE_DIR "code/modules/html_interface/cards" +#define FILE_DIR "code/modules/html_interface/nanotrasen" +#define FILE_DIR "html" +#define FILE_DIR "icons" +#define FILE_DIR "icons/ass" +#define FILE_DIR "icons/effects" +#define FILE_DIR "icons/mecha" +#define FILE_DIR "icons/misc" +#define FILE_DIR "icons/mob" +#define FILE_DIR "icons/mob/inhands" +#define FILE_DIR "icons/obj" +#define FILE_DIR "icons/obj/assemblies" +#define FILE_DIR "icons/obj/atmospherics" +#define FILE_DIR "icons/obj/atmospherics/components" +#define FILE_DIR "icons/obj/atmospherics/pipes" +#define FILE_DIR "icons/obj/clothing" +#define FILE_DIR "icons/obj/doors" +#define FILE_DIR "icons/obj/flora" +#define FILE_DIR "icons/obj/food" +#define FILE_DIR "icons/obj/guns" +#define FILE_DIR "icons/obj/hydroponics" +#define FILE_DIR "icons/obj/machines" +#define FILE_DIR "icons/obj/power_cond" +#define FILE_DIR "icons/obj/smooth_structures" +#define FILE_DIR "icons/obj/smooth_structures/alien" +#define FILE_DIR "icons/pda_icons" +#define FILE_DIR "icons/spideros_icons" +#define FILE_DIR "icons/stamp_icons" +#define FILE_DIR "icons/Testing" +#define FILE_DIR "icons/turf" +#define FILE_DIR "icons/turf/floors" +#define FILE_DIR "icons/turf/walls" +#define FILE_DIR "icons/vending_icons" +#define FILE_DIR "nano" +#define FILE_DIR "nano/images" +#define FILE_DIR "sound" +#define FILE_DIR "sound/AI" +#define FILE_DIR "sound/ambience" +#define FILE_DIR "sound/arcade" +#define FILE_DIR "sound/effects" +#define FILE_DIR "sound/guitar" +#define FILE_DIR "sound/hallucinations" +#define FILE_DIR "sound/items" +#define FILE_DIR "sound/machines" +#define FILE_DIR "sound/magic" +#define FILE_DIR "sound/mecha" +#define FILE_DIR "sound/misc" +#define FILE_DIR "sound/piano" +#define FILE_DIR "sound/spookoween" +#define FILE_DIR "sound/violin" +#define FILE_DIR "sound/voice" +#define FILE_DIR "sound/voice/complionator" +#define FILE_DIR "sound/vox_fem" +#define FILE_DIR "sound/weapons" // END_FILE_DIR // BEGIN_PREFERENCES From 1ee8f0ce10535834429b0007b7c5df0e758b913e Mon Sep 17 00:00:00 2001 From: Liam Date: Sat, 15 Aug 2015 19:05:53 -0400 Subject: [PATCH 014/104] Adds Health Analyzer to Protolathe --- code/modules/research/designs/medical_designs.dm | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 1501167a730..d0568f1b491 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -2,6 +2,17 @@ ////////////Medical Tools//////////////// ///////////////////////////////////////// +/datum/design/healthanalyzer + name = "Health Analyzer" + desc = "A hand-held body scanner able to distinguish vital signs of the subject." + id = "healthanalyzer" + req_tech = list("biotech" = 2, "magnets" = 1, "power" = 1) + build_type = PROTOLATHE + materials = list(MAT_METAL = 25, MAT_GLASS = 20) + reliability = 76 + build_path = /obj/item/device/healthanalyzer + category = list("Medical Designs") + /datum/design/mass_spectrometer name = "Mass-Spectrometer" desc = "A device for analyzing chemicals in the blood." From 6d6fcddc67ce59e0208eb986a95ce65d5a959ca9 Mon Sep 17 00:00:00 2001 From: Liam Date: Sat, 15 Aug 2015 19:15:32 -0400 Subject: [PATCH 015/104] Edits Required Tech --- code/modules/research/designs/medical_designs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index d0568f1b491..fdad0d5102d 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -6,7 +6,7 @@ name = "Health Analyzer" desc = "A hand-held body scanner able to distinguish vital signs of the subject." id = "healthanalyzer" - req_tech = list("biotech" = 2, "magnets" = 1, "power" = 1) + req_tech = list("biotech" = 1, "magnets" = 1) build_type = PROTOLATHE materials = list(MAT_METAL = 25, MAT_GLASS = 20) reliability = 76 From efb5226784967bbc5d64bb12d75398abc216c6cb Mon Sep 17 00:00:00 2001 From: Miauw Date: Sun, 16 Aug 2015 11:45:32 +0200 Subject: [PATCH 016/104] ayy lmao i forgot that pens overwrite attack() --- code/modules/paperwork/pen.dm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index d62a13018ed..9ba8bec513b 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -48,13 +48,16 @@ if(!istype(M)) return - if(M.can_inject(user, 1)) + if(M.can_inject(user, 1) && force == initial(force)) user << "You stab [M] with the pen." if(!stealth) M << "You feel a tiny prick!" . = 1 - add_logs(user, M, "stabbed", src) + add_logs(user, M, "stabbed", src) + + else + ..() /* * Sleepypens @@ -84,6 +87,7 @@ */ /obj/item/weapon/pen/edagger origin_tech = "combat=3;syndicate=5" + attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") //these wont show up if the pen is off var/on = 0 /obj/item/weapon/pen/edagger/attack_self(mob/living/user) @@ -99,7 +103,7 @@ user << "[src] can now be concealed." else on = 1 - force = 15 + force = 20 w_class = 3 name = "energy dagger" hitsound = 'sound/weapons/blade1.ogg' From f64f1e296729dd67d82086205121700b222009d3 Mon Sep 17 00:00:00 2001 From: Miauw Date: Sun, 16 Aug 2015 12:55:09 +0200 Subject: [PATCH 017/104] Reverts the revert properly instead of unreverting it unproperly. --- code/datums/uplink_item.dm | 6 ++++++ code/modules/paperwork/pen.dm | 24 +++++++++++++----------- html/changelogs/Miauw-edaggers.yml | 7 +++++++ 3 files changed, 26 insertions(+), 11 deletions(-) create mode 100644 html/changelogs/Miauw-edaggers.yml diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index bf1edc9c372..802ce9a2c2e 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -353,6 +353,12 @@ var/list/uplink_items = list() cost = 6 excludefrom = list(/datum/game_mode/nuclear) +/datum/uplink_item/stealthy_weapons/edagger + name = "Energy Dagger" + desc = "A dagger made of energy that looks and functions as a pen when off." + item = /obj/item/weapon/pen/edagger + cost = 2 + /datum/uplink_item/stealthy_weapons/foampistol name = "Toy Gun (with Stun Darts)" desc = "An innocent-looking toy pistol designed to fire foam darts. Comes loaded with riot-grade darts, to incapacitate a target." diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index e1e38fc0ecf..219449f1228 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -3,6 +3,7 @@ * Pens * Sleepy Pens * Parapens + * Edaggers */ @@ -48,16 +49,17 @@ if(!istype(M)) return - if(M.can_inject(user, 1) && force == initial(force)) - user << "You stab [M] with the pen." - if(!stealth) - M << "You feel a tiny prick!" - . = 1 + if(!force) + if(M.can_inject(user, 1)) + user << "You stab [M] with the pen." + if(!stealth) + M << "You feel a tiny prick!" + . = 1 add_logs(user, M, "stabbed", src) - + else - ..() + . = ..() /* * Sleepypens @@ -99,17 +101,17 @@ hitsound = initial(hitsound) embed_chance = initial(embed_chance) throwforce = initial(throwforce) - playsound(user, 'sound/weapons/saberoff.ogg', 10, 1) + playsound(user, 'sound/weapons/saberoff.ogg', 5, 1) user << "[src] can now be concealed." else on = 1 - force = 20 + force = 18 w_class = 3 name = "energy dagger" hitsound = 'sound/weapons/blade1.ogg' - embed_chance = 90 //rule of cool + embed_chance = 100 //rule of cool throwforce = 35 - playsound(user, 'sound/weapons/saberon.ogg', 10, 1) + playsound(user, 'sound/weapons/saberon.ogg', 5, 1) user << "[src] is now active." update_icon() diff --git a/html/changelogs/Miauw-edaggers.yml b/html/changelogs/Miauw-edaggers.yml new file mode 100644 index 00000000000..2de9a6f5b65 --- /dev/null +++ b/html/changelogs/Miauw-edaggers.yml @@ -0,0 +1,7 @@ +#working traitor items are power creep +author: Miauw + +delete-after: True + +changes: + - tweak: "Edaggers actually work now and have been buffed to 18 brute and 2 TC." From 93f61378c33d870a7b078380066803dfa3ddf9e8 Mon Sep 17 00:00:00 2001 From: xxalpha Date: Mon, 17 Aug 2015 04:22:00 +0100 Subject: [PATCH 018/104] Made an overlay system for airlock icons. --- code/game/machinery/doors/airlock.dm | 198 ++++++++++++------ icons/obj/doors/airlocks/centcom/centcom.dmi | Bin 0 -> 4220 bytes icons/obj/doors/airlocks/centcom/overlays.dmi | Bin 0 -> 4028 bytes .../obj/doors/airlocks/external/external.dmi | Bin 0 -> 6166 bytes .../obj/doors/airlocks/external/overlays.dmi | Bin 0 -> 3121 bytes icons/obj/doors/airlocks/hatch/centcom.dmi | Bin 0 -> 4216 bytes .../obj/doors/airlocks/hatch/maintenance.dmi | Bin 0 -> 4647 bytes icons/obj/doors/airlocks/hatch/overlays.dmi | Bin 0 -> 4287 bytes icons/obj/doors/airlocks/highsec/highsec.dmi | Bin 0 -> 4885 bytes icons/obj/doors/airlocks/highsec/overlays.dmi | Bin 0 -> 4531 bytes icons/obj/doors/airlocks/shuttle/overlays.dmi | Bin 0 -> 4023 bytes icons/obj/doors/airlocks/shuttle/shuttle.dmi | Bin 0 -> 5292 bytes icons/obj/doors/airlocks/station/atmos.dmi | Bin 0 -> 4721 bytes icons/obj/doors/airlocks/station/bananium.dmi | Bin 0 -> 3997 bytes icons/obj/doors/airlocks/station/command.dmi | Bin 0 -> 4312 bytes icons/obj/doors/airlocks/station/diamond.dmi | Bin 0 -> 3960 bytes .../doors/airlocks/station/engineering.dmi | Bin 0 -> 4775 bytes icons/obj/doors/airlocks/station/freezer.dmi | Bin 0 -> 3199 bytes icons/obj/doors/airlocks/station/gold.dmi | Bin 0 -> 4007 bytes .../doors/airlocks/station/maintenance.dmi | Bin 0 -> 4690 bytes icons/obj/doors/airlocks/station/medical.dmi | Bin 0 -> 4593 bytes icons/obj/doors/airlocks/station/mining.dmi | Bin 0 -> 4968 bytes icons/obj/doors/airlocks/station/overlays.dmi | Bin 0 -> 6170 bytes icons/obj/doors/airlocks/station/plasma.dmi | Bin 0 -> 4494 bytes icons/obj/doors/airlocks/station/public.dmi | Bin 0 -> 2273 bytes icons/obj/doors/airlocks/station/research.dmi | Bin 0 -> 4636 bytes .../obj/doors/airlocks/station/sandstone.dmi | Bin 0 -> 4046 bytes icons/obj/doors/airlocks/station/science.dmi | Bin 0 -> 4521 bytes icons/obj/doors/airlocks/station/security.dmi | Bin 0 -> 4740 bytes icons/obj/doors/airlocks/station/silver.dmi | Bin 0 -> 3923 bytes icons/obj/doors/airlocks/station/uranium.dmi | Bin 0 -> 4030 bytes icons/obj/doors/airlocks/station/virology.dmi | Bin 0 -> 4710 bytes icons/obj/doors/airlocks/station/wood.dmi | Bin 0 -> 3884 bytes icons/obj/doors/airlocks/station2/glass.dmi | Bin 0 -> 3576 bytes .../obj/doors/airlocks/station2/overlays.dmi | Bin 0 -> 8196 bytes icons/obj/doors/airlocks/vault/overlays.dmi | Bin 0 -> 3356 bytes icons/obj/doors/airlocks/vault/vault.dmi | Bin 0 -> 3709 bytes 37 files changed, 138 insertions(+), 60 deletions(-) create mode 100644 icons/obj/doors/airlocks/centcom/centcom.dmi create mode 100644 icons/obj/doors/airlocks/centcom/overlays.dmi create mode 100644 icons/obj/doors/airlocks/external/external.dmi create mode 100644 icons/obj/doors/airlocks/external/overlays.dmi create mode 100644 icons/obj/doors/airlocks/hatch/centcom.dmi create mode 100644 icons/obj/doors/airlocks/hatch/maintenance.dmi create mode 100644 icons/obj/doors/airlocks/hatch/overlays.dmi create mode 100644 icons/obj/doors/airlocks/highsec/highsec.dmi create mode 100644 icons/obj/doors/airlocks/highsec/overlays.dmi create mode 100644 icons/obj/doors/airlocks/shuttle/overlays.dmi create mode 100644 icons/obj/doors/airlocks/shuttle/shuttle.dmi create mode 100644 icons/obj/doors/airlocks/station/atmos.dmi create mode 100644 icons/obj/doors/airlocks/station/bananium.dmi create mode 100644 icons/obj/doors/airlocks/station/command.dmi create mode 100644 icons/obj/doors/airlocks/station/diamond.dmi create mode 100644 icons/obj/doors/airlocks/station/engineering.dmi create mode 100644 icons/obj/doors/airlocks/station/freezer.dmi create mode 100644 icons/obj/doors/airlocks/station/gold.dmi create mode 100644 icons/obj/doors/airlocks/station/maintenance.dmi create mode 100644 icons/obj/doors/airlocks/station/medical.dmi create mode 100644 icons/obj/doors/airlocks/station/mining.dmi create mode 100644 icons/obj/doors/airlocks/station/overlays.dmi create mode 100644 icons/obj/doors/airlocks/station/plasma.dmi create mode 100644 icons/obj/doors/airlocks/station/public.dmi create mode 100644 icons/obj/doors/airlocks/station/research.dmi create mode 100644 icons/obj/doors/airlocks/station/sandstone.dmi create mode 100644 icons/obj/doors/airlocks/station/science.dmi create mode 100644 icons/obj/doors/airlocks/station/security.dmi create mode 100644 icons/obj/doors/airlocks/station/silver.dmi create mode 100644 icons/obj/doors/airlocks/station/uranium.dmi create mode 100644 icons/obj/doors/airlocks/station/virology.dmi create mode 100644 icons/obj/doors/airlocks/station/wood.dmi create mode 100644 icons/obj/doors/airlocks/station2/glass.dmi create mode 100644 icons/obj/doors/airlocks/station2/overlays.dmi create mode 100644 icons/obj/doors/airlocks/vault/overlays.dmi create mode 100644 icons/obj/doors/airlocks/vault/vault.dmi diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index e023131b2f6..1232533800a 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -17,11 +17,15 @@ // Wires for the airlock are located in the datum folder, inside the wires datum folder. +#define AIRLOCK_CLOSED 1 +#define AIRLOCK_CLOSING 2 +#define AIRLOCK_OPEN 3 +#define AIRLOCK_OPENING 4 /obj/machinery/door/airlock name = "airlock" - icon = 'icons/obj/doors/Doorint.dmi' - icon_state = "door_closed" + icon = 'icons/obj/doors/airlocks/station/public.dmi' + icon_state = "closed" var/aiControlDisabled = 0 //If 1, AI control is disabled until the AI hacks back in and disables the lock. If 2, the AI has bypassed the lock. If -1, the control is enabled but the AI had bypassed it earlier, so if it is disabled again the AI would have no trouble getting back in. var/hackProof = 0 // if 1, this door can't be hacked by the AI @@ -48,49 +52,69 @@ var/obj/item/device/doorCharge/charge = null //If applied, causes an explosion upon opening the door var/detonated = 0 + var/airlock_material = null //material of inner filling; if its an airlock with glass, this should be set to "glass" + var/overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi' + var/list/airlock_overlays = list() + explosion_block = 1 +/obj/machinery/door/airlock/New() + ..() + wires = new(src) + if(src.closeOtherId != null) + spawn (5) + for (var/obj/machinery/door/airlock/A in world) + if(A.closeOtherId == src.closeOtherId && A != src) + src.closeOther = A + break + update_icon() + /obj/machinery/door/airlock/command - icon = 'icons/obj/doors/Doorcom.dmi' + icon = 'icons/obj/doors/airlocks/station/command.dmi' doortype = /obj/structure/door_assembly/door_assembly_com /obj/machinery/door/airlock/security - icon = 'icons/obj/doors/Doorsec.dmi' + icon = 'icons/obj/doors/airlocks/station/security.dmi' doortype = /obj/structure/door_assembly/door_assembly_sec /obj/machinery/door/airlock/engineering - icon = 'icons/obj/doors/Dooreng.dmi' + icon = 'icons/obj/doors/airlocks/station/engineering.dmi' doortype = /obj/structure/door_assembly/door_assembly_eng /obj/machinery/door/airlock/medical - icon = 'icons/obj/doors/Doormed.dmi' + icon = 'icons/obj/doors/airlocks/station/medical.dmi' doortype = /obj/structure/door_assembly/door_assembly_med /obj/machinery/door/airlock/maintenance name = "maintenance access" - icon = 'icons/obj/doors/Doormaint.dmi' + icon = 'icons/obj/doors/airlocks/station/maintenance.dmi' doortype = /obj/structure/door_assembly/door_assembly_mai /obj/machinery/door/airlock/external name = "external airlock" - icon = 'icons/obj/doors/Doorext.dmi' + icon = 'icons/obj/doors/airlocks/external/external.dmi' + overlays_file = 'icons/obj/doors/airlocks/external/overlays.dmi' doortype = /obj/structure/door_assembly/door_assembly_ext /obj/machinery/door/airlock/glass name = "glass airlock" - icon = 'icons/obj/doors/Doorglass.dmi' + icon = 'icons/obj/doors/airlocks/station2/glass.dmi' + overlays_file = 'icons/obj/doors/airlocks/station2/overlays.dmi' opacity = 0 doortype = /obj/structure/door_assembly/door_assembly_glass glass = 1 + airlock_material = "glass" /obj/machinery/door/airlock/centcom - icon = 'icons/obj/doors/Doorele.dmi' + icon = 'icons/obj/doors/airlocks/centcom/centcom.dmi' + overlays_file = 'icons/obj/doors/airlocks/centcom/overlays.dmi' opacity = 1 doortype = null //(centcom) there's no door assembly sprites for this one. /obj/machinery/door/airlock/vault name = "vault door" - icon = 'icons/obj/doors/vault.dmi' + icon = 'icons/obj/doors/airlocks/vault/vault.dmi' + overlays_file = 'icons/obj/doors/airlocks/vault/overlays.dmi' opacity = 1 doortype = /obj/structure/door_assembly/door_assembly_vault explosion_block = 2 @@ -105,19 +129,21 @@ /obj/machinery/door/airlock/freezer name = "freezer airlock" - icon = 'icons/obj/doors/Doorfreezer.dmi' + icon = 'icons/obj/doors/airlocks/station/freezer.dmi' opacity = 1 doortype = /obj/structure/door_assembly/door_assembly_fre /obj/machinery/door/airlock/hatch name = "airtight hatch" - icon = 'icons/obj/doors/Doorhatchele.dmi' + icon = 'icons/obj/doors/airlocks/hatch/centcom.dmi' + overlays_file = 'icons/obj/doors/airlocks/hatch/overlays.dmi' opacity = 1 doortype = /obj/structure/door_assembly/door_assembly_hatch /obj/machinery/door/airlock/maintenance_hatch name = "maintenance hatch" - icon = 'icons/obj/doors/Doorhatchmaint2.dmi' + icon = 'icons/obj/doors/airlocks/hatch/maintenance.dmi' + overlays_file = 'icons/obj/doors/airlocks/hatch/overlays.dmi' opacity = 1 doortype = /obj/structure/door_assembly/door_assembly_mhatch @@ -437,47 +463,110 @@ About the new airlock wires panel: else return 0 +/obj/machinery/door/airlock/update_icon(state=0) + switch(state) + if(0) + if(density) + state = AIRLOCK_CLOSED + icon_state = "closed" + else + state = AIRLOCK_OPEN + icon_state = "open" + if(AIRLOCK_CLOSED) + icon_state = "closed" + if(AIRLOCK_OPEN) + icon_state = "open" + if(AIRLOCK_CLOSING) + icon_state = "" + if(AIRLOCK_OPENING) + icon_state = "" + set_airlock_overlays(state) -/obj/machinery/door/airlock/update_icon() - if(overlays) overlays.Cut() - if(density) - if(locked && lights) - icon_state = "door_locked" - else - icon_state = "door_closed" - if(p_open || welded || emergency) - overlays = list() +/obj/machinery/door/airlock/proc/set_airlock_overlays(state) + var/image/frame_overlay + var/image/filling_overlay + var/image/lights_overlay + var/image/panel_overlay + var/image/weld_overlay + + switch(state) + if(AIRLOCK_CLOSED) + world << "AIRLOCK_CLOSED" + if(airlock_material) + filling_overlay = get_airlock_overlay("[airlock_material]_closed") + else + filling_overlay = get_airlock_overlay("fill_closed", icon) if(p_open) - overlays += image(icon, "panel_open") + panel_overlay = get_airlock_overlay("panel_closed") if(welded) - overlays += image(icon, "welded") - if(emergency && !locked) - overlays += image(icon, "elights") - else - icon_state = "door_open" + weld_overlay = get_airlock_overlay("welded") + if(lights) + if(locked) + lights_overlay = get_airlock_overlay("lights_bolted") + else if(emergency) + lights_overlay = get_airlock_overlay("lights_emergency") - return + if(AIRLOCK_CLOSING) + frame_overlay = get_airlock_overlay("closing", icon) + if(airlock_material) + filling_overlay = get_airlock_overlay("[airlock_material]_closing") + else + filling_overlay = get_airlock_overlay("fill_closing", icon) + if(lights) + lights_overlay = get_airlock_overlay("lights_closing") + if(p_open) + panel_overlay = get_airlock_overlay("panel_closing") + + if(AIRLOCK_OPEN) + world << "AIRLOCK OPEN" + if(airlock_material) + filling_overlay = get_airlock_overlay("[airlock_material]_open") + else + filling_overlay = get_airlock_overlay("fill_open", icon) + if(p_open) + panel_overlay = get_airlock_overlay("panel_open") + + if(AIRLOCK_OPENING) + world << "AIRLOCK_OPENING" + frame_overlay = get_airlock_overlay("opening", icon) + + if(airlock_material) + filling_overlay = get_airlock_overlay("[airlock_material]_opening") + else + filling_overlay = get_airlock_overlay("fill_opening", icon) + if(lights) + lights_overlay = get_airlock_overlay("lights_opening") + if(p_open) + panel_overlay = get_airlock_overlay("panel_opening") + + overlays.Cut() + if(frame_overlay) + overlays += frame_overlay + frame_overlay.icon_state = frame_overlay.icon_state + if(filling_overlay) + overlays += filling_overlay + filling_overlay.icon_state = filling_overlay.icon_state + if(lights_overlay) + overlays += lights_overlay + lights_overlay.icon_state = lights_overlay.icon_state + if(panel_overlay) + overlays += panel_overlay + panel_overlay.icon_state = panel_overlay.icon_state + if(weld_overlay) + overlays += weld_overlay + +/obj/machinery/door/airlock/proc/get_airlock_overlay(key, icon_file=overlays_file) + if(src.airlock_overlays[key]) + return src.airlock_overlays[key] + src.airlock_overlays[key] = image(icon_file, key) + return src.airlock_overlays[key] /obj/machinery/door/airlock/do_animate(animation) switch(animation) if("opening") - if(overlays) overlays.Cut() - if(p_open) - spawn(2) // The only work around that works. Downside is that the door will be gone for a millisecond. - flick("o_door_opening", src) //can not use flick due to BYOND bug updating overlays right before flicking - else - flick("door_opening", src) + update_icon(AIRLOCK_OPENING) if("closing") - if(overlays) overlays.Cut() - if(p_open) - flick("o_door_closing", src) - else - flick("door_closing", src) - if("spark") - flick("door_spark", src) - if("deny") - flick("door_deny", src) - return + update_icon(AIRLOCK_CLOSING) /obj/machinery/door/airlock/examine(mob/user) ..() @@ -1067,7 +1156,7 @@ About the new airlock wires panel: return 0 if(charge && !detonated) p_open = 1 - update_icon() + update_icon(AIRLOCK_OPENING) visible_message("[src]'s panel is blown off in a spray of deadly shrapnel!") charge.ex_act(1) detonated = 1 @@ -1135,7 +1224,7 @@ About the new airlock wires panel: if(density) return 1 operating = 1 - do_animate("closing") + update_icon(AIRLOCK_CLOSING) src.layer = 3.1 sleep(5) src.density = 1 @@ -1153,17 +1242,6 @@ About the new airlock wires panel: open() return 1 -/obj/machinery/door/airlock/New() - ..() - wires = new(src) - if(src.closeOtherId != null) - spawn (5) - for (var/obj/machinery/door/airlock/A in world) - if(A.closeOtherId == src.closeOtherId && A != src) - src.closeOther = A - break - - /obj/machinery/door/airlock/proc/prison_open() if(emagged) return src.locked = 0 @@ -1265,4 +1343,4 @@ About the new airlock wires panel: /obj/machinery/door/airlock/HasProximity(atom/movable/AM as mob|obj) for (var/obj/A in contents) A.HasProximity(AM) - return \ No newline at end of file + return diff --git a/icons/obj/doors/airlocks/centcom/centcom.dmi b/icons/obj/doors/airlocks/centcom/centcom.dmi new file mode 100644 index 0000000000000000000000000000000000000000..010cb237ebdb26525b06451cf46b1ad2c8216477 GIT binary patch literal 4220 zcmYjVc{o&W`#)nQg|S7GC25g0O9mm!kSSvu+gK(BSq9nT8)9r_jf!j;O$-KQq--H; z_DZ%ii9(376T*0p@9+0s*Zapg&vl*WIrq6g%l$m}brMWXu5z*qu>%0WiP6_H2gk^R z>j*1&Z_{$>1&5qaOPfGF*PG4(9)5uyzCHjDOwLWwVQ*F7*BjZU34AGwxAMw;0! zu-#Hy>cTNg+T5YfRTjJgJd(Kpz)i;J=~xDn7wqkCoV|+BG#9ePUpjl~%!Nywixs?I z^d6j6z04B&7%isoOQP*g)Nb0I@D5b>2_lwlOG-dRAT?aUMYJ^)W?W?Ud*L*G5*{NP z1$V7SKDdib^6SVPD!b^u?7i2g1GII5mt0qAtn zU8zR~u0y|qfXG?z=FM;bB@nx-OruG-{@IwNM37wXooF7bzhwx#sIJ!Hvn;cMqK@wm znB%f<`Yt(Pn2g26n0HH=#qE%y7GG~~79i|fXZ=!R(%)p^;&S?`!-*%kPQj!U`KH~Y z3)gCv%YB>Bv_S|Ewzn}-($vLpIj*YGDgfk<$czbm;k>`=uzB6> z%{>`JSQXwld`*rN8aq8gXm?aV@xaKIhnmQgwtXj{Z?t)JRZ+Cpij_y%!OkvHorL>P z3x7&&XN#uUM1;7CZ{f>g4GLSEMDKTM;N)?cikxJn*qc+V<6c%P#{0J`M|~xeR1(k$ z-(a+ijIuK0^O?Q1{DiMdo3pGQDmh2mcnpW7BfO6~4F~{!wk69-dI{)wa4kI}pbFnU zoy0iZSUcv^7Gz&b=K#W3?b(rR02ep+1p&B%0DPkJu* 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 hXg~8tm00wQMN7r?X{tssx1knHh literal 0 HcmV?d00001 diff --git a/icons/obj/doors/airlocks/centcom/overlays.dmi b/icons/obj/doors/airlocks/centcom/overlays.dmi new file mode 100644 index 0000000000000000000000000000000000000000..4732a22a6244f2ef54ec2187aa2405258d2ce93c GIT binary patch literal 4028 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 DN2qgC literal 0 HcmV?d00001 diff --git a/icons/obj/doors/airlocks/external/overlays.dmi b/icons/obj/doors/airlocks/external/overlays.dmi new file mode 100644 index 0000000000000000000000000000000000000000..8ba24cc636e6e04bb0c4417d6949ba8e1cc5c685 GIT binary patch literal 3121 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 literal 0 HcmV?d00001 diff --git a/icons/obj/doors/airlocks/hatch/centcom.dmi b/icons/obj/doors/airlocks/hatch/centcom.dmi new file mode 100644 index 0000000000000000000000000000000000000000..ffd09d372ae474be5eb5bdc97f7bf0ad41e7af94 GIT binary patch literal 4216 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 bw-t=0YFCQIGc5&#EV7n>TZfQ0`5>3#$k literal 0 HcmV?d00001 diff --git a/icons/obj/doors/airlocks/hatch/maintenance.dmi b/icons/obj/doors/airlocks/hatch/maintenance.dmi new file mode 100644 index 0000000000000000000000000000000000000000..9220d499e59196b3510350f2e4ca30cc05680525 GIT binary patch literal 4647 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 Qe|`WRO?{2h+ty+K10j~^r2qf` literal 0 HcmV?d00001 diff --git a/icons/obj/doors/airlocks/hatch/overlays.dmi b/icons/obj/doors/airlocks/hatch/overlays.dmi new file mode 100644 index 0000000000000000000000000000000000000000..8cc720dee58c9d24589699f213f7b728cc351749 GIT binary patch literal 4287 zcmbVQXHZjXw@wJ1gCOBZF9ISS5J7qiMF;_JkP9m@3r?@v(dKJ=DggZ+yDT8 z*8*m0&$NrotAmrBxk|(Y5}9WGiQ`SU>AeuIV82Ijzrcq8KzM!`W;n4+g&#FC;P3}k z^lql|LNI1<>l|5pL$Qk9$amiV_J?TJ zVUnKtnr!P@t+4nPKeLGIu(Quv6zQpuarg#jc_;4pkA`Nyv*lu6fe!J-1~#`R`b(aQ z2k7LWkVG0Rcj2OqLHQ&zGigcUQ*(#sT-Lv5)f!}SKQNsm;q1O#sE+Y|qwKEe+7;hMbMym!j9L0Df56o>fg?&1pBM;_6MlPw^>u+!FejHbn2z+1&S~MnS_vun3 z&WB{KL3su=1L^kh-B!a|>6S?~ekz`{OG9IpVqWrciy{AvQJGU=3Mj5M&IqP8^HLnz zC#hPdM&OeA$}s3jW;kq4ZtferIVawDSTKv7=n=IQUJFllomsnMHmtFz3BgkO{c9SUIxP>#+LgIqiV#mZcrp(W=wLQ#& zQ;kRKGM*7Klo9eFg|oi10@ji%FB^0Y!z-*^y0SADHHi%5k+KFr-U0br#5ud*|3Ku; zjpNdG^~m9nd_a`%mFrRc?D`@(_OP^59MlwH+co!yjg{tQbUr{oATC_aTen36;dNTY zSM$Zm`4*kU9QAOrZ;0gDq2)KZZJ!6GnNL50dbw%-wLg)jqa2{{^@<#!X9RxJ1VkXDyI8#{`6%Gt#cj8=_` zScgfi)*4g_{CTQN82T1WE4etyUPM!<7?Hor?ax2(_`JdAGp@kfYHntFB@4-o7DJ+= zRPO$af>AJt^}N{8+kI@~H_)vKRP1M?-65gRKkl)u|79cT_^z9%FdfXEmB9WRTDh#$ z$`aZnG4c>1;EIlXr7gntr?B{_m9Wd1k#g@Qur7g50q=^whUn*20Cwt5nQh7$0mzvfZL6ZsS+16y{Hr<>X>s? zU1DEOKxgYIM7Se9R;2@4_wxayW5va`vDB**V{_iEYhdo~9e>>%Tm#NqBTB0vwZ5q+ zgZecp_XP}QP+eA3h>M%5=S0UQ2|6lCz>BZI1glSV9ja&>C5+r`=j(^3rw>~Q@@+(D zeWK0;e}^2I%g$;H_g&danDWuj%@dqw6d#bzY($TdqVwPgbw32h6AcVuM?3wz_9(Bp z{9T*+;{(Hw9oMsuYH5)U8_|lmf>e4c~(BW^k>{YKB|e3g`A?!L_wP&SoNSox)!cTQ?xqJp#*YUmNqu6lH6uR zOj^;joNJ3#wz5f(zSyX&aCVrL7xr(R-HecK%%#-T3;3hXC8a)d*)%a}HXw+IHrsw& zQI>m&XNaVsI_>01&;l0~b$IdWEeEN2@ejdiTcrh>l`5nZI$H;Vaex24mVbwL^@z8? z<84=SDVxDeV7ksvN8cK;8nNz!1LGpbO0bYXia1D&h_bql9hU3z!&(}Cx7^|pNZ~hN z?>>mM>;29MXw)Ea<$l=#g0|&a^h4)x)AZ=L@%{BL zT$7B4`y%*BX8oU7Kc7

-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 Z8)hV}T{CD3{O1B$oX4IkI_vuIzW_4g=(7L- literal 0 HcmV?d00001 diff --git a/icons/obj/doors/airlocks/highsec/overlays.dmi b/icons/obj/doors/airlocks/highsec/overlays.dmi new file mode 100644 index 0000000000000000000000000000000000000000..d0101bfd7d599ffa97a444b872011a6fc8ae957d GIT binary patch literal 4531 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 H>&^cH7*dbU literal 0 HcmV?d00001 diff --git a/icons/obj/doors/airlocks/shuttle/overlays.dmi b/icons/obj/doors/airlocks/shuttle/overlays.dmi new file mode 100644 index 0000000000000000000000000000000000000000..6308aab1a78d6239a28ccfe38fac807e48a085b6 GIT binary patch literal 4023 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 literal 0 HcmV?d00001 diff --git a/icons/obj/doors/airlocks/station/atmos.dmi b/icons/obj/doors/airlocks/station/atmos.dmi new file mode 100644 index 0000000000000000000000000000000000000000..85e5f3c1094c5d227ca0cfb7492af6effc133081 GIT binary patch literal 4721 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 G>Hh(LhG!rE literal 0 HcmV?d00001 diff --git a/icons/obj/doors/airlocks/station/bananium.dmi b/icons/obj/doors/airlocks/station/bananium.dmi new file mode 100644 index 0000000000000000000000000000000000000000..2183a376f60859bf6ee6328b10da5d8639d55120 GIT binary patch literal 3997 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 udxJSP`Z1%d&cwDO1zg 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 a2huf}e`34;TR!Jk8Zbhb>Q`QIj{Fboxyb+k literal 0 HcmV?d00001 diff --git a/icons/obj/doors/airlocks/station/engineering.dmi b/icons/obj/doors/airlocks/station/engineering.dmi new file mode 100644 index 0000000000000000000000000000000000000000..1f77793bce0580cf9e240e139016a29d595bfa2c GIT binary patch literal 4775 zcmZWtXH*kiw;qaMkPb?dqJmTjN)<2^K}1SGdPfDM2v{KW5L6JPsdOZSCJ?HWAdp}v zQlu(Gs-a3J6se)!@P6;Q>wfG0m~-};*=J^#XYc*2i83`R%@|Gc9abpXlm)B<^1B&bGN5HZr)x1;Ga?Yu8E;phB2bA$K*9hBF6-`eVMPa zWryKW3GqT10wa@-&3V^?+PpWiz@tGv8QVzR(ZJ=ZsSwX7JL@GZE=} ztd|@dqSWW^?d|972Xlc3Ws(u^gRzPeYu| z7qew0H*#IN7DF7rSB)HA*7eG-LM427^{guuDe2QMU*+X1a6$fB< zSZrSUwj`}@-ek3JXO+k|S~8$#ORR;YFGl=~nQ5gqhaGps6$6M}s7po20c>k$E6bax z95jnw!|MdN&=nXWn~zau>w{cfdqllrDgb}-&3&JL@OaoCM6r%y1pX+1Z+!n@n&KVl zjLejj6y2HmpNt$9mf*`iGke4MP&})FJvjNr{H~7`fOv&X0S+5#?gV_QC{qxUwPm2GSz&wNN@ke3ag7pm4l%AL5D&Q9T9pz@D!L!KqwYpuuT2M#mM$S zLnLALuQA-B(8UyNjy7%P_=vv^9pXJ`!4OFuu(FKz-4;9mE$5s{ydN zN?)FGeos~X3SXjUhN?~5=qe0qvKnoYrgY1sy)Sps?^*k@NSW6~!5q1OhCC`EGb^uQ zwgq_l4Q>4rVd*YVVmBW!dLp3G@uy!zz^dMw`4W0!Lz z>)TPZwd{^AUb@xs$uBR%i#*{4?VU+L{mE=jB+C8c#A3xALquAgh|28)MW3_RFBS2h z?}${3N;j=9k|&vdET^47Jm^A>kfRk(=pARDy&%;5Ce^mnd`A%7rnjZ8zy%C;xp`m( z!bK^y^;0KRv_k`pR#w`?F|)gFD8s07IjTtX+F=E&EAZ&PpFVq#NIZ=p*|O^}b5S2NoP02mn= z9bH||Ch48T{f?6mo8~IzX^&pydj#hmBjL=Jwo;vIW1s`vTT3Tj>Onyoi zZbfl|y#y1bq@)__{h%b70em)%MO%45S!%!@uK=;4e&hRZV?@Y=?nwl5u=3ZxCkAA} zK{!v@k^feb&9*21EK?YZS|8^I)GnrMkv^V_t-c}{CwV7fC_02m2IN@roa;0GL5P&$ z@9^@sZc@!5kl7GsRS-~@baL`%T3dB|JT7YL0nli%Ry&r1r^|X9TJc=6GG9>DUTdLk zOJ)50{0nPqI*S|a8}aif9i2BP0hygYvotcbYtD-ti|sKnCy+!| zvZ}=(T5f*>(RzrI*(2IsGMNyYRC4kA&O_m`Wy$+uoH8;ph_Em!rz)$1>2@X$omp2S zFvb2&_x)J9SS&basXl7y_G_1m;2rr!@*_7Xh}?4B^z`kjROO*qdWYKZAS(UC4P}92 zGtUu94aD%5sSPQImLyxeVdgKwzQKA7NoQ~qO_0{MjjzCjUEjgDd%rWqr%|>3Nj9=i zY&Gn)mj3Rsmh$|H4xt@B{#euIebco@wX+^7xCIxF_#oUSsBPlJciAVmM*OyHOfnMa z^^6af$XNKYQo{m0w7@2@9K6luKVA>ing|)VduYyB>rg&De<#@I_`sQW2n-$;=UiI;g5tb9V?|jYls|- zU23u8*1KwNU((d15ffWZXmyg*51L^A!ne^(4lv?V_nc>8W~Q!fC@1F& zQX1sx!J|;NbYomzbn7(9@N=8Oa5}e~3 z5F9xeGu=wh()!bM@B|; zdDZlAV(IYHI_7JCBSxt@bS$5u!f)p2ps6YC)a$}I^0|9igDE7DUVq-SbhK${KoJ>K z!liTP^^ntUOO^S-*7bfel~em~{gb-Ks87V>mvgj}zb^9giy%>r^#!Eb>hu*j;g`EZ z`JI6YdJJS^hf7sd-L&Tw_EL{tDj6iDZf5{{rIEnl(@9) zeN@3P2Y=W`a)ZY^{`LoYmvJ*vS8z1qxHa`Y)Zh*6S7?7U%&E!ijvgxq=+gLX&+`yA zX^fUlyhD)uy9@1W=VstXh&uzPF={c=w!<>{oyeC2paf>P8YQp7en zQaun_3o6E;OzM>P#V(OSs%zBWd1JXvi|uAz^}(m#6sy4tRxWRLt+PABUlOtfy-N*= zwQ*m~wyk6p9Fi4ypHZ4go&IUCO)0@XDF{{ius_|JQXG=TEOqbi^k6qo`{983WdB%) zX|`WG0Mzf4u<2YiGAfTKp~S==nQPp~qK<|(9EmS)Vuws_sfF<{xdZAJDAeP+y9NmW z9pJM~4oHqB$blSxq({)o-D3lP!cX?0(=q^XglG^5+1>PX%#Hh?8@OY3QmIm!>5vIZ`pC(ol*SpaP3U_=wi-NH9f{oB5D2G z+}e);%vHkvg9h4~3dk!OXz$GW#JxtEX}JI#w`&D(GP-zqsanw^$f@0I%NhwgxQvtY zpealmFGEIH=56q~R%EDjkniq)TgY^;k&RunT2m(3bGZcD3C;V-#byoIZC1b3bL{oOona$HETjIESsF!7WW@xP~h`ye8HSk}q z6JFQaQJo4as$3akYw?dNs;j~BqwkR(Du6by&sLR;J6ugJNX$TKru-m6WrkRjs?m`- za?1T`u6ah`Ui=baL*@O5vCSorX?ywh0pOw(amj~T*lmG2JVm(Gn^k9l_HMs}9s^kS z?SxRA5h%;1$KTz6N9Uut@=J7#+IpXLqB04GnQSTJ`V;=;IM@;@G40oUN8_#XQuQd7 zOJasam0GKGpx5LaWF-*Zr9FsZ!DhznA%hR5*vpRUc1&nX31lkFhD{oU*qrlUs@6ew z*^6;Lov2S*qtG33=F^PV+=w0zr7>+?YiEJ;;0J0(Tfm}4)6hO}z~i)udEDpvm2gd} zfq{Xqm?`bR>>m_Tl_lWZM`dZZv#BDwP98vsp_!oB;+sPoNX-H{Y$~-Vz79o zG92vW^U{3bkTGea0227(h5Wt6xS=@v-D^w>n9Yxv9(DvjD2Gx9F;!m|_H59P#-l8O zV2^@!w9PWSX7?N8$4}(#L*|s-4(Y6==Hu9{3L32JU~Q9=LTzmp zOE23t*v&Z#eUB;Rpu0Q7fEOQ@EN67mDR{*Tx#QwH!qfV21IAv09+;)*CHTV4FQwmr z(_Fi->_7XQ=h^Zp6vxN9qyg_NOR3BM41La#bMg6Anv~Q4j-ClcUh9 zLygoX^(bB7)nF>EjBD(vKp_53wt_+mJ(GM_h}J26E5-M3#eO0v5I)BP5_*qSFk*VJ zFPe2vU)lBp20AjxzIU|U@(2wNeQNINHergeLThx>QBs_ywOdI36%tUrA`tMD<(m1Y zvF7vwO|_lInItO`G1z3I(jpMK%&PKrCV{R!$h}=f0fm529dLx zaV+ZbAq>KmSFwWjNW*Y1Zb7)p_5fF$k!$*uf6^s%vp_(1gDTZT$n$RJAuUDx;h+81 zVVSlz*u?=uf^Vnyl0n0yn?+&;Lf YPWkfv3-|mff1UtcZ9}axO~;r21Csh}%K!iX literal 0 HcmV?d00001 diff --git a/icons/obj/doors/airlocks/station/freezer.dmi b/icons/obj/doors/airlocks/station/freezer.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5aacef29f717435c308397658cd130e2a3e22852 GIT binary patch literal 3199 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 literal 0 HcmV?d00001 diff --git a/icons/obj/doors/airlocks/station/medical.dmi b/icons/obj/doors/airlocks/station/medical.dmi new file mode 100644 index 0000000000000000000000000000000000000000..cb10aca0763303be2b7270a0fb8988dcc85115e1 GIT binary patch literal 4593 zcmaKwdpuNYxX0H}Ze=5CM2xmv(nc{+Xhcb5Ttdn%x!+0dVU&oFHkIobqCpspL9Rn? zmAf$}w_HZVVA2?uVayr(>~lWne9q@{{#a|h>s`+|!8@c{t9 zZ*cSaZT7X5edO_QvCr1>PIl}|W4OiL!0RrLoB}-j13mnF0U$J|{8by@r}IbS2KvmO zttz}TZ=(Mxj&0xMb1IuUQQYTVIydoHROC>bh`qg?fTlZj4V~DM*%G8&t^9hE zc68|9e5!_8$E951gj1vK&tdMbGx+10@0{e(>o4e#jvu0jG_MJf^(M~5uWV#DMw^ar z_`SZnG8cWmw?2hvbVohj^2?nezG^`a$ZwI#Dfw@Qds;qv-*p}{yjm;l-Xm3V zUDu;JIa|*oZ*Aq;B{EWT>-*)!$w&QE^w!psVdsT~2s~bMv6rdp)*@FILjBGKSSTE~ zZ3-0v{3)Y~z}14G=(7R!ry3d?LBNlIlQq`-z^|#0X%KJ%45sa`y1BXaC2)$0ihc&Q zu1z(v77-CWZxw-`%V05uECPX0KjWmIBKby*vW3NBQ*Wx5q!>4-WEnJtwlWg$SCB5K zsBi$6f|f;cL+5zCscSbLbiZ8a>QVQdS@_BaV{VuyB_+*tBnV#$`+WwO*I0w;F%51%^8F6IdUiXKJ;A)MJD9u zVE&C}`|e-A&Ihkej#ag>M;gB807S*bz4(eNo0^gcMJ5HdN>1+XJWftd#wkG5fU2r$ z9_GHK>M~CrS*8Tz0ns>!n;tH)ySeHWwtnmVv4)0*EPMq94p*USp+ zY9z!>NBzvJ)4-$#4?=Iq_YO&w5W6*JtUW?(Pz)ep>{M5suIZR*6JdCQ7f}qjhgf`9 zjPgWHFV!drM0=4i7xmr!{3?Wm(c=%FBr^!b2Jb1>1Yzwm45rIhK6fjnzpYINaNmVm z)RsGFwwc8ENUcGa!fVa&FI|5L-+owh{h#O>V5#ox=vMrx`?Tq*WW6hpO|xoa8zl{V z>uWcH&lg`X@pNEQ#^A+S=@K*sOeKqlZ~_d*=FBQ>>e7kf&-Fii_b?R#5X6p45Ba`w zh3;N6s-@-1#{f_$lTH$6GMRndiwg^;@*;y^cM8RY9#V4VdKkKxHHmFNd)hs;H~J~N ze&N!k4AuM+N+(VG;VxeNns`EZlQ4T|Ms_wQu(7d`hsQ&#D(s1#J%>f;*`r2topHW$ z5G5$N>F$-)yEZoMR`(-gm2+F7A943P`uOyrZI^GFGd zhOgaTF#NpSZ{(9ZpZWd?K|l*iDDT7gD~r6&!K~e%<)%d823xJ3y{#T>BLJ1O&7i<&{HiIZcTb1tr#2Ibh)igNTgb5qj#j$j_Bq&!tflI1k}9 zJS%Dh^7tqsa_zGBIPPq~#AHg;oVVIfH^0p6IG+zu$0ZTVR{3e|bIU5TGKT-=q%~Lc z7I`&aoB_cHF5RXrx=k|$o!s_?#&{PN76u7~nA}`R?}^&-uyx_T_HC!Y*|#&PqV%Rr&JE2uW@s+z&G0to!G zX_g~1Tl4*=6MJXUb;9mnM~^Rd z7Ghos5VAhlXX!_$OYV4hb0TxC#x|4X9v4mo=!sFRhM;3{ymmx2ANQ~BHIWdh7sdk= z-|Q2^ckv0qf#a3yjLb>A!MfLvFwaM|lmU%C>Y+ql-3N=YX2t!Z!am$`H_ZCE;MbUH z7d68kmS?N=EeJWVg`=RL0MMYGdiX@;(xrH5{g*dg$nk11UwHO|ZTqW*3xY)^ zzXDsge2+oQ^z|&^cFNyJMl5c@QbKj!eM+6<2`)7DF)}i8h={PQmrpCq-#?RO(3~-9 zNf$cWg*C_kSJ*1m1#(pBygog2Q*^(ZJPwTB-wUYE$vdTLN}?jn0-*)3=#JJ_MEzeO z!dVLTziX_^$9SJTnL!GzXPgHIEq1U%C#R0D&m}%{HXJrZ9P5*3Yw{>@{eiW4=dFH7 zihTtM1gQIsXQG-TcNzNMJ(Bf{iV?JhzOPvZar~Tfv##o`Xrkx6KaOxv-wV4 zap)HUo{RJpVdTsevu7?fU~2vIz(`=?V#qK=BO)V^m2EA2 z)r!X4nwGOeweId*6Ue_)I?Lt=@2xl8@9&%%fjx_|-b7U0#VyEufM?s!jdMjaceg4K zf6OSPA$gw%u(mcgQx|B7Hu)SRif|~9i z2|fN6UB(VjTWL!>2!`KAc}7011-*i%U3u}bEZ8Os3oE8GO;=d*w(~Ue3X?%KU~S~o zHk7jaKza7tZ`}qM&~8dN1?+VSS`Xt`)${K!1K8Xh6L{7p;%(DBs9`S*L}vgajFDaK z9(%1;Z`sEpX7^Uvpolc3m{SqaN~mcZ*s^ah(ZNRI^jfJ0Mz%n2CvSA?S{1A0_l{4f z+0e$*u>`e88tnmMK3-q9*^kKKEW9bSS~mIxS{tP;`uazBBu9nME!jt=3pDPB%`lJv z5O?&&MZONkA$7zfe%AQo+2`J-PZEqaUn zeN`_gl7pHlF@3j(J#yt#U#+Vg}1mI%D!B@e0j_ksn?zOa$#gdMBxpeXHC{y^cTiS>i~Ay zA~9X>StG{oji$HX8qv(_Z6-;vyNgK_QAx?S4KuvqLqoRq_FYSaA~U7*3s7ibnFn^? zvFfuvpqo{v(~c#;f8e@n>?%lAe$y>)`~5!MvK5cj1(C_*jEs!)A4+Mzk+h)3Q2TL!(S&kssFiu!On|``8 zCK}+jcq8%X?`KmNxTeB^-434UX{d4!Ww5mC+NejwYje|!8L<~}+Zj3uy; zq>3Ouk>h6NsXdr1en{t7`X8DkBXg#aiWWlhagXqmoK0>>gkWp9@ow|h_rz{gIBvZT zzgHi&FXhWGc_kcI#rjcFyLnwn6JXO?aYHE{lb)t8*;!4E`e{M9!2~KRD+hfS@|*J| zsn=~uR0(<9bTCKi4_wbY7V2y`-D+I(r8b0i} zruF;kV@KapXxD3e@Czo=3eBX#^x`wlUl}pqwDe7OceH0(_V<4Nl#lL5wxS48^Pm47 z9D9WwyQJ$C7>ElyB)HV9VQ+Df>2Y*~{`^6Ku=lfmW&eA4ISu<7Yk1Br0uEHe^2f0=|C1wKt4S&I4iVVYAg6PbIa4sEW~=>FK#^Mj1+`2_Gicw0xuA@=8h z0maRIeNXxImz+)G`jw{v^^+<*siA)p4~=Rf>TS7#m`4@E^62LfPYW-vA_K+_vtfFf zCpG+Uq6qT-nd|1G1B0oLw`ZS=1O7Dh-riQ>`V3IXrltiaLMy!4{`m*?216`PH-%MW z*&=XR68Uy=W#z9L?zq!2dokzZ@}F@7X&#}#`OLV3hV|2`Jz5bQ@j{eT3!gHEVeaF< z=P^27-_E{Q6n4n}ByyGXE@|aE&%@ayyWap@f2O~?5Y)oupu#Tz$P#`XDC{HPV@~Cp zw+W6~2FV_O0LYUm8i$HbG!C!M$9$1hEV`M=sIk^IBQN(#r?9Ak|l%!KC+RGwG)KD+0*eOMOE>i4%3OC6Z_rj zYyB4cFajTn<3eT^r@QLX1Wv+jR{5{LoD~o#4;gh$P0AU4n4$Fc#~v!@$KfQ}r#fAa zS#!46gK+ zuc8h7A7fmZ$<-RzHBmHM4Zend*#m&#>VNzh)ZQvZmvQZIKVYkgVjTRXQOj&vUlH5^+}RFHa*ygWBco@WFzouq zM!GFd;2wXPy*$*i`PW&&|B+0gKw&hre87QlB-T|xJ8|Gg3ijXoA=exKI#o1<%){SOB)&@;Y{(RFzGA5r})3;+NC literal 0 HcmV?d00001 diff --git a/icons/obj/doors/airlocks/station/mining.dmi b/icons/obj/doors/airlocks/station/mining.dmi new file mode 100644 index 0000000000000000000000000000000000000000..a46286135683dfc33a78558d5cad5390cbc979bb GIT binary patch literal 4968 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 E00Sh#fB*mh literal 0 HcmV?d00001 diff --git a/icons/obj/doors/airlocks/station/overlays.dmi b/icons/obj/doors/airlocks/station/overlays.dmi new file mode 100644 index 0000000000000000000000000000000000000000..0e0b09a6e3ed9230dd5907d55961b673a753b2a3 GIT binary patch literal 6170 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 JrOH+>{|i`{zd`^2 literal 0 HcmV?d00001 diff --git a/icons/obj/doors/airlocks/station/plasma.dmi b/icons/obj/doors/airlocks/station/plasma.dmi new file mode 100644 index 0000000000000000000000000000000000000000..20c6a665914d9f71fed6200e664c4405ee63d721 GIT binary patch literal 4494 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 J*0}%re*m#@-QNHJ literal 0 HcmV?d00001 diff --git a/icons/obj/doors/airlocks/station/public.dmi b/icons/obj/doors/airlocks/station/public.dmi new file mode 100644 index 0000000000000000000000000000000000000000..309663224e4ffe4f067374b084b7f6346dda09e2 GIT binary patch literal 2273 zcmYjTdpy%^8{g?QMC7d4W|32-nw-Km%pqr++7q(q@F<7n%rmn^ABRfIAwBOy4cFN_UG8w&67%Nlz{k_RV0078jvZbXZ0)f!i*EcpcrcfwmW@a%lG0cpNqN1V$ zfq~)S;Q^kW9(a6WVq!#aFo8gz#5rYFhO+Nd2>UG1Xte4XMYUUs7!2kp1X2x$2ZR$I zw2&yW7T|jBG^CL!39d)tBjO@y36ZfeAW%vvX&)^vQMgQ^@dXoRUKVCO zFMCOiK|5YyN5{7JdYirg#hpFZYKslT_F?y;O2-O13dksush#m-+ug+6GgzbBwK^u$ z=beA%Y(;Mm~;;$$Rvp4A9=injw-9;FC5;@ot+-S5tmE2n0{}bS02e zO6P;;(uPb_jq;t}WQ7iS_Qmu)lE&8?Ca~`5+fkZ}{FW-UdtL%NAr;WpnwsqPkNl>w zl@wbC2gjgd(oKOgU)R>n2cuDqP%^~S*Nuo{1;Xj+X`Y~^#4L-C8@91XX_B|!)& zYG0hb(x1ud=-e&HezK-ep;-4&4{^!|1&B2CDleU@owy*2>90kv-8j#Q_|R`-U2Z8~ z14V&XxwMF-Nez;QI)T0Ua? z<__7#&0yX+!sqI`!)SkDzQ9WPDv`GN?sz=gJ%HSOJxKrQ37%-sE=f|X#Tr3&9xGQR z23Ry45DX2Se^);v-~>kmiQP#FF$c$|>z|{!dxH78mxx5|yg(H>wUUd#AN!XtTaQXo zoU+Ho4v?dCxuXHEet<~a>M#8!2n)qi&%RS|)jort1IzbEsdDV*LZsg$ZTXo4C{+=) z^8dwi$Ssrn-$IeE!;U)E?nM`(C3_r@aLuPuN8#wnYHcKm>)^uz-`>WIg|J&!z;YNGidN%{GIZh+i9r90{c!Mg} z=1{#0(4!*AfUl@Dk3g@8E|bITa|n!D>7K?6nlw^lM!NAcGJzeE9@aMaDAjTo8#%k~ znRy*tgsia6qy4nsmw{eO^#^biJJukYJCA&yp#+kQuq2t$>-#s(I7=WX2{p)G$;=bW|GcScbKg?DfxcvJ784$cvGM*t-gI$zV-C1(^UQ*oP*030m z(QC7F{qbNFN`7d+(J1sg5`9A{)d>9R5p6SzYu^FGUOo+@GRmculFT<JVBo_hzc_kBl2?p{!cvdc+3LA^ua>y#o z3g{L&Lk(~5LVce@zO_uMoVyDVR^UJP#~X5df62b*8gJ>Mgg1w&cs zIMlV)ziqIHGG4Y2N`~}Fm_&ucTdk~7Jvow9hJ6mU5y4@m;zqB)5AOJR>nuWN0sekr z(`*glgi@mzYzj7DoP^A*54hu{^IHki=$L^g%da{$1xKZ;a78QX?inhjiX+en2m6s; zV%o~K1^CW$j|B%j><}tEct?^V-`oJigUc9UJA$LD%?Y8~Ajzv$u1EoP0iM;y=&xLo zR12Y)$f+8ovR^QN$Nviq__-4Nk3INOTRtQWJu)o}4U6(VZ2_BlFw-mKnuyJUCF z#b`-koERx+n{OV9Sr=)_7)>Csy`oxCY$MklKJ2{3?Tq6cN|m$}Iyl*{46s3zdUH>2 zn%kS)EzD#{TtOKyAxFKF!CXNW8E*3k{j3GinMamO;6}L$J+<~Hp^LLfgQ^ElT<&4> z=l_kV<}fa-D4Zwu+S*3n*FZjS6Adbq*C;vVU=cyK?7ba-{+iV+jqW$~$LQgQ@a^pT x0~WBw*|5WVSl#LrvGL?AZZ>%+x+QT)dM~6aQCxG1EBix$Jc+)p_0H5&{{^D0I>!J2 literal 0 HcmV?d00001 diff --git a/icons/obj/doors/airlocks/station/research.dmi b/icons/obj/doors/airlocks/station/research.dmi new file mode 100644 index 0000000000000000000000000000000000000000..d58e46187a8226bd364df55f7e6a42e6961ec2ce GIT binary patch literal 4636 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 SkPOxb9WXbsF>W;Ux%VG^H~JX> literal 0 HcmV?d00001 diff --git a/icons/obj/doors/airlocks/station/science.dmi b/icons/obj/doors/airlocks/station/science.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5afc2c6838bda1fca72312b3ad62c27db17e6049 GIT binary patch literal 4521 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 literal 0 HcmV?d00001 diff --git a/icons/obj/doors/airlocks/station/silver.dmi b/icons/obj/doors/airlocks/station/silver.dmi new file mode 100644 index 0000000000000000000000000000000000000000..c77dc3f220e26228be3df76234bbbf0279492586 GIT binary patch literal 3923 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 NGh+**N<-&|{{t{-$DjZJ literal 0 HcmV?d00001 diff --git a/icons/obj/doors/airlocks/station/uranium.dmi b/icons/obj/doors/airlocks/station/uranium.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5aeb68f4144bf748bc1620cf29b25c943413d90f GIT binary patch literal 4030 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 literal 0 HcmV?d00001 diff --git a/icons/obj/doors/airlocks/station/virology.dmi b/icons/obj/doors/airlocks/station/virology.dmi new file mode 100644 index 0000000000000000000000000000000000000000..2c510419ed8cfda83eabff77969c101cbf832e04 GIT binary patch literal 4710 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 literal 0 HcmV?d00001 diff --git a/icons/obj/doors/airlocks/station/wood.dmi b/icons/obj/doors/airlocks/station/wood.dmi new file mode 100644 index 0000000000000000000000000000000000000000..46ea9ad74087b73348b23434b1c9a55dd37cc1b6 GIT binary patch literal 3884 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 fS#hzhMMl%1F7w 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 Soy&Xf08l1Y#+63bBmV{0xgi_? literal 0 HcmV?d00001 diff --git a/icons/obj/doors/airlocks/vault/vault.dmi b/icons/obj/doors/airlocks/vault/vault.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5dcc824e690066dc490089398908292f80165ef0 GIT binary patch literal 3709 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 literal 0 HcmV?d00001 From d3f4d7d06e8bc1547a4c80becc801baac42a9ef7 Mon Sep 17 00:00:00 2001 From: xxalpha Date: Mon, 17 Aug 2015 11:24:34 +0100 Subject: [PATCH 019/104] Access denied lights Emag lights --- code/game/machinery/doors/airlock.dm | 64 +++++++++++------- code/game/machinery/doors/door.dm | 23 ++----- icons/obj/doors/airlocks/station/overlays.dmi | Bin 6170 -> 7637 bytes 3 files changed, 45 insertions(+), 42 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 74a07078dfd..5c15063072e 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -21,6 +21,9 @@ #define AIRLOCK_CLOSING 2 #define AIRLOCK_OPEN 3 #define AIRLOCK_OPENING 4 +#define AIRLOCK_DENY 5 +#define AIRLOCK_EMAG 6 +var/list/airlock_overlays = list() /obj/machinery/door/airlock name = "airlock" @@ -54,7 +57,6 @@ var/airlock_material = null //material of inner filling; if its an airlock with glass, this should be set to "glass" var/overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi' - var/list/airlock_overlays = list() explosion_block = 1 @@ -476,9 +478,7 @@ About the new airlock wires panel: icon_state = "closed" if(AIRLOCK_OPEN) icon_state = "open" - if(AIRLOCK_CLOSING) - icon_state = "" - if(AIRLOCK_OPENING) + if(AIRLOCK_CLOSING, AIRLOCK_OPENING) icon_state = "" set_airlock_overlays(state) @@ -488,10 +488,10 @@ About the new airlock wires panel: var/image/lights_overlay var/image/panel_overlay var/image/weld_overlay + var/image/sparks_overlay switch(state) - if(AIRLOCK_CLOSED) - world << "AIRLOCK_CLOSED" + if(AIRLOCK_CLOSED, AIRLOCK_DENY, AIRLOCK_EMAG) if(airlock_material) filling_overlay = get_airlock_overlay("[airlock_material]_closed") else @@ -500,11 +500,18 @@ About the new airlock wires panel: panel_overlay = get_airlock_overlay("panel_closed") if(welded) weld_overlay = get_airlock_overlay("welded") - if(lights) - if(locked) - lights_overlay = get_airlock_overlay("lights_bolted") - else if(emergency) - lights_overlay = get_airlock_overlay("lights_emergency") + if(state == AIRLOCK_EMAG) + sparks_overlay = get_airlock_overlay("sparks") + else + if(lights) + if(locked) + lights_overlay = get_airlock_overlay("lights_bolted") + else if(emergency) + lights_overlay = get_airlock_overlay("lights_emergency") + else if(state == AIRLOCK_DENY) + lights_overlay = get_airlock_overlay("lights_denied") + spawn(4) + overlays -= lights_overlay if(AIRLOCK_CLOSING) frame_overlay = get_airlock_overlay("closing", icon) @@ -518,7 +525,6 @@ About the new airlock wires panel: panel_overlay = get_airlock_overlay("panel_closing") if(AIRLOCK_OPEN) - world << "AIRLOCK OPEN" if(airlock_material) filling_overlay = get_airlock_overlay("[airlock_material]_open") else @@ -527,9 +533,7 @@ About the new airlock wires panel: panel_overlay = get_airlock_overlay("panel_open") if(AIRLOCK_OPENING) - world << "AIRLOCK_OPENING" frame_overlay = get_airlock_overlay("opening", icon) - if(airlock_material) filling_overlay = get_airlock_overlay("[airlock_material]_opening") else @@ -542,24 +546,24 @@ About the new airlock wires panel: overlays.Cut() if(frame_overlay) overlays += frame_overlay - frame_overlay.icon_state = frame_overlay.icon_state if(filling_overlay) overlays += filling_overlay - filling_overlay.icon_state = filling_overlay.icon_state if(lights_overlay) overlays += lights_overlay - lights_overlay.icon_state = lights_overlay.icon_state if(panel_overlay) overlays += panel_overlay - panel_overlay.icon_state = panel_overlay.icon_state if(weld_overlay) overlays += weld_overlay + if(sparks_overlay) + overlays += sparks_overlay -/obj/machinery/door/airlock/proc/get_airlock_overlay(key, icon_file=overlays_file) - if(src.airlock_overlays[key]) - return src.airlock_overlays[key] - src.airlock_overlays[key] = image(icon_file, key) - return src.airlock_overlays[key] +/obj/machinery/door/airlock/proc/get_airlock_overlay(iconstate, icon_file=overlays_file) + var/iconkey = "[iconstate][icon_file]" + if(airlock_overlays[iconkey]) + return airlock_overlays[iconkey] + world << "CREATING: [iconkey]" + airlock_overlays[iconkey] = image(icon_file, iconstate) + return airlock_overlays[iconkey] /obj/machinery/door/airlock/do_animate(animation) switch(animation) @@ -567,6 +571,8 @@ About the new airlock wires panel: update_icon(AIRLOCK_OPENING) if("closing") update_icon(AIRLOCK_CLOSING) + if("deny") + update_icon(AIRLOCK_DENY) /obj/machinery/door/airlock/examine(mob/user) ..() @@ -1347,3 +1353,15 @@ About the new airlock wires panel: for (var/obj/A in contents) A.HasProximity(AM) return + +/obj/machinery/door/airlock/emag_act(mob/user) + if(density && hasPower() && !emagged) + update_icon(AIRLOCK_EMAG) + sleep(6) + open() + emagged = 1 + desc = "Its access panel is smoking slightly." + lights = 0 + locked = 1 + loseMainPower() + loseBackupPower() \ No newline at end of file diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 129d03039b9..47bf8b3cec9 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -66,7 +66,7 @@ if(mecha.occupant && (src.allowed(mecha.occupant) || src.check_access_list(mecha.operation_req_access) || emergency == 1)) open() else - flick("door_deny", src) + do_animate("deny") return return @@ -98,7 +98,7 @@ if(allowed(user) || src.emergency == 1) open() else - flick("door_deny", src) + do_animate("deny") return @@ -136,24 +136,9 @@ close() return if(src.density) - flick("door_deny", src) + do_animate("deny") return -/obj/machinery/door/emag_act(mob/user) - if(density && hasPower() && !emagged) - flick("door_spark", src) - sleep(6) - open() - emagged = 1 - desc = "Its access panel is smoking slightly." - if(istype(src, /obj/machinery/door/airlock)) - var/obj/machinery/door/airlock/A = src - A.lights = 0 - A.locked = 1 - A.loseMainPower() - A.loseBackupPower() - A.update_icon() - /obj/machinery/door/blob_act() if(prob(40)) qdel(src) @@ -219,7 +204,7 @@ src.SetOpacity(0) sleep(5) src.density = 0 - sleep(5) + sleep(8) src.layer = 2.7 update_icon() SetOpacity(0) diff --git a/icons/obj/doors/airlocks/station/overlays.dmi b/icons/obj/doors/airlocks/station/overlays.dmi index 0e0b09a6e3ed9230dd5907d55961b673a753b2a3..beacbfe75857c0f9abe2049e16fbaf0dd477a1d6 100644 GIT binary patch literal 7637 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 b#0U795B{WullLD3;7?Ui16K0jS>S&G;5)@# literal 6170 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 JrOH+>{|i`{zd`^2 From 8b07203a87385418a6528f7c75f008aaceb3671e Mon Sep 17 00:00:00 2001 From: GunHog Date: Mon, 17 Aug 2015 11:03:53 -0500 Subject: [PATCH 020/104] Buffs RCD disable Malf power - Halfed cost to 25 processing power - Can now be used multiple times - No longer disables Cyborg RCDs - Fixes the feedback message not showing - Fixed mech RCDs not being affected by the power --- code/_globalvars/lists/objects.dm | 1 + .../gamemodes/malfunction/Malf_Modules.dm | 22 +++++++++---------- code/game/mecha/equipment/tools/work_tools.dm | 15 +++++++++---- code/game/objects/items/weapons/RCD.dm | 2 ++ html/changelogs/GunHogMalfRCDPowah.yml | 7 ++++++ 5 files changed, 32 insertions(+), 15 deletions(-) create mode 100644 html/changelogs/GunHogMalfRCDPowah.yml diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index fcb84606da3..aa1082cdf82 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -13,4 +13,5 @@ var/global/list/chemical_reactions_list //list of all /datum/chemical_reactio var/global/list/chemical_reagents_list //list of all /datum/reagent datums indexed by reagent id. Used by chemistry stuff var/global/list/surgeries_list = list() //list of all surgeries by name, associated with their path. var/global/list/table_recipes = list() //list of all table craft recipes +var/global/list/rcd_list = list() //list of Rapid Construction Devices. var/global/list/apcs_list = list() //list of all Area Power Controller machines, seperate from machines for powernet speeeeeeed. \ No newline at end of file diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 8f90c400ae9..439e3a3f746 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -123,27 +123,27 @@ /datum/AI_Module/large/disable_rcd module_name = "RCD disable" mod_pick_name = "rcd" - description = "Send a specialised pulse to break all RCD devices on the station." - cost = 50 + description = "Send a specialised pulse to break all hand-held and exosuit Rapid Cconstruction Devices on the station." + cost = 25 + one_time = 1 power_type = /mob/living/silicon/ai/proc/disable_rcd /mob/living/silicon/ai/proc/disable_rcd() set category = "Malfunction" set name = "Disable RCDs" + set desc = "Disable all RCD devices on the station, while sparing onboard cyborg RCDs." if(!canUseTopic()) return - for(var/datum/AI_Module/large/disable_rcd/rcdmod in current_modules) - if(rcdmod.uses > 0) - rcdmod.uses -- - for(var/obj/item/weapon/rcd/rcd in world) - rcd.disabled = 1 - for(var/obj/item/mecha_parts/mecha_equipment/rcd/rcd in world) - rcd.disabled = 1 - src << "Out of uses." + for(var/obj/item/weapon/rcd/RCD in rcd_list) + if(!istype(/obj/item/weapon/rcd/borg, RCD)) //Ensures that cyborg RCDs are spared. + RCD.disabled = 1 + for(var/obj/item/mecha_parts/mecha_equipment/rcd/MRCD in rcd_list) + MRCD.disabled = 1 + + src << "RCD-disabling pulse emitted." /datum/AI_Module/large/mecha_domination module_name = "Viral Mech Domination" diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index 6c7b8006e47..245e0a2536b 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -197,11 +197,18 @@ var/mode = 0 //0 - deconstruct, 1 - wall or floor, 2 - airlock. var/disabled = 0 //malf +/obj/item/mecha_parts/mecha_equipment/rcd/New() + rcd_list += src + ..() + +/obj/item/mecha_parts/mecha_equipment/rcd/Destroy() + rcd_list -= src + ..() + /obj/item/mecha_parts/mecha_equipment/rcd/action(atom/target) - if(istype(target,/area/shuttle)||istype(target, /turf/space/transit))//>implying these are ever made -Sieve - disabled = 1 - else - disabled = 0 + if(istype(target, /turf/space/transit))//>implying these are ever made -Sieve + return + if(!istype(target, /turf) && !istype(target, /obj/machinery/door/airlock)) target = get_turf(target) if(!action_checks(target) || disabled || get_dist(chassis, target)>3) diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index b5ffd7faa7a..fea4a8e83ff 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -230,12 +230,14 @@ RCD src.spark_system = new /datum/effect/effect/system/spark_spread spark_system.set_up(5, 0, src) spark_system.attach(src) + rcd_list += src return /obj/item/weapon/rcd/Destroy() qdel(spark_system) spark_system = null + rcd_list -= src return ..() /obj/item/weapon/rcd/attackby(obj/item/weapon/W, mob/user, params) diff --git a/html/changelogs/GunHogMalfRCDPowah.yml b/html/changelogs/GunHogMalfRCDPowah.yml new file mode 100644 index 00000000000..a35092d3c2c --- /dev/null +++ b/html/changelogs/GunHogMalfRCDPowah.yml @@ -0,0 +1,7 @@ +author: Gun Hog + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +changes: + - tweak: "The Disable RCD Malfunction power now costs 25 CPU (down from 50), can be used multiple times, and no longer affects cyborgs." From 182ffef3f0b359d23fc193d7617b994b884e0a65 Mon Sep 17 00:00:00 2001 From: Robustin Date: Tue, 18 Aug 2015 14:01:03 -0400 Subject: [PATCH 021/104] Increases Folder Exchange Trigger The number of traitors required to trigger a folder exchange objective is increased from 5 to 8. The purpose of antagonists is to antagonize. These objectives provide 0 interactivity with the crew and completely dis-incentivize any antagonistic act against the station. Within 5 minutes either two traitors have greentext and the only way they can lose it is by actually conducting antagonistic acts, or one traitor shoots another traitor in the face and spaces the body to secure their own greentext, in which case they still have 0 interactivity with the rest of the crew. With the current minimum of 5 traitors, you see a folder exchange in almost every traitor round and unless these traitors willfully risk their greentext by going off-objective then you've got 40% of traitors neutralized at roundstart, leaving just 3 traitors to be the driving force behind a round. One of those traitors will be AFK at roundstart and won't even know they're a traitor, the other will be the RD who has to "steal" a hand teleporter... you can see where I'm going with this. Exchanges are too often a proximate cause for traitor rounds where absolutely nothing happens. This change preserves the exchange and the hard work someone put into it, but ensures the objective only appears when there's a sufficient number of traitors to antagonize the station if the two folderbuddies decide to peacefully greentext. --- code/game/gamemodes/traitor/traitor.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index e45a673a364..7d2d552ebd3 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -108,7 +108,7 @@ var/is_hijacker = prob(10) var/martyr_chance = prob(20) var/objective_count = is_hijacker //Hijacking counts towards number of objectives - if(!exchange_blue && traitors.len >= 5) //Set up an exchange if there are enough traitors + if(!exchange_blue && traitors.len >= 8) //Set up an exchange if there are enough traitors if(!exchange_red) exchange_red = traitor else From 01bf5472ebde5735d0d609169c68b626dd96da8c Mon Sep 17 00:00:00 2001 From: ExcessiveUseOfCobblestone Date: Tue, 18 Aug 2015 15:45:51 -0400 Subject: [PATCH 022/104] Revert "Moves Cloning Machines/Comps to Medical Section" This reverts commit 98561a60c1d1354576730eef47e7837f5883dd01. --- .../research/designs/comp_board_designs.dm | 29 ++++++++++ .../research/designs/machine_designs.dm | 30 ---------- tgstation.dme | 58 ------------------- 3 files changed, 29 insertions(+), 88 deletions(-) diff --git a/code/modules/research/designs/comp_board_designs.dm b/code/modules/research/designs/comp_board_designs.dm index 5b99724b022..0f657da38b0 100644 --- a/code/modules/research/designs/comp_board_designs.dm +++ b/code/modules/research/designs/comp_board_designs.dm @@ -160,6 +160,35 @@ build_path = /obj/item/weapon/circuitboard/robotics category = list("Computer Boards") +/datum/design/clonecontrol + name = "Computer Design (Cloning Machine Console)" + desc = "Allows for the construction of circuit boards used to build a new Cloning Machine console." + id = "clonecontrol" + req_tech = list("programming" = 3, "biotech" = 3) + build_type = IMPRINTER + materials = list(MAT_GLASS = 1000, "sacid" = 20) + build_path = /obj/item/weapon/circuitboard/cloning + category = list("Computer Boards") + +/datum/design/clonepod + name = "Machine Design (Clone Pod)" + desc = "Allows for the construction of circuit boards used to build a Cloning Pod." + id = "clonepod" + req_tech = list("programming" = 3, "biotech" = 3) + build_type = IMPRINTER + materials = list(MAT_GLASS = 1000, "sacid" = 20) + build_path = /obj/item/weapon/circuitboard/clonepod + category = list("Computer Boards") + +/datum/design/clonescanner + name = "Machine Design (Cloning Scanner)" + desc = "Allows for the construction of circuit boards used to build a Cloning Scanner." + id = "clonescanner" + req_tech = list("programming" = 3, "biotech" = 3) + build_type = IMPRINTER + materials = list(MAT_GLASS = 1000, "sacid" = 20) + build_path = /obj/item/weapon/circuitboard/clonescanner + category = list("Computer Boards") /datum/design/arcadebattle name = "Computer Design (Battle Arcade Machine)" diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index c62281d10d7..75202c87387 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -142,36 +142,6 @@ build_path = /obj/item/weapon/circuitboard/chem_heater category = list ("Medical Machinery") -/datum/design/clonecontrol - name = "Computer Design (Cloning Machine Console)" - desc = "Allows for the construction of circuit boards used to build a new Cloning Machine console." - id = "clonecontrol" - req_tech = list("programming" = 3, "biotech" = 3) - build_type = IMPRINTER - materials = list(MAT_GLASS = 1000, "sacid" = 20) - build_path = /obj/item/weapon/circuitboard/cloning - category = list("Medical Machinery") - -/datum/design/clonepod - name = "Machine Design (Clone Pod)" - desc = "Allows for the construction of circuit boards used to build a Cloning Pod." - id = "clonepod" - req_tech = list("programming" = 3, "biotech" = 3) - build_type = IMPRINTER - materials = list(MAT_GLASS = 1000, "sacid" = 20) - build_path = /obj/item/weapon/circuitboard/clonepod - category = list("Medical Machinery") - -/datum/design/clonescanner - name = "Machine Design (Cloning Scanner)" - desc = "Allows for the construction of circuit boards used to build a Cloning Scanner." - id = "clonescanner" - req_tech = list("programming" = 3, "biotech" = 3) - build_type = IMPRINTER - materials = list(MAT_GLASS = 1000, "sacid" = 20) - build_path = /obj/item/weapon/circuitboard/clonescanner - category = list("Medical Machinery") - /datum/design/biogenerator name = "Machine Design (Biogenerator Board)" desc = "The circuit board for a biogenerator." diff --git a/tgstation.dme b/tgstation.dme index ae825e3bf2e..a212ac871cd 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6,64 +6,6 @@ // BEGIN_FILE_DIR #define FILE_DIR . -#define FILE_DIR "code" -#define FILE_DIR "code/modules" -#define FILE_DIR "code/modules/games" -#define FILE_DIR "code/modules/html_interface" -#define FILE_DIR "code/modules/html_interface/cards" -#define FILE_DIR "code/modules/html_interface/nanotrasen" -#define FILE_DIR "html" -#define FILE_DIR "icons" -#define FILE_DIR "icons/ass" -#define FILE_DIR "icons/effects" -#define FILE_DIR "icons/mecha" -#define FILE_DIR "icons/misc" -#define FILE_DIR "icons/mob" -#define FILE_DIR "icons/mob/inhands" -#define FILE_DIR "icons/obj" -#define FILE_DIR "icons/obj/assemblies" -#define FILE_DIR "icons/obj/atmospherics" -#define FILE_DIR "icons/obj/atmospherics/components" -#define FILE_DIR "icons/obj/atmospherics/pipes" -#define FILE_DIR "icons/obj/clothing" -#define FILE_DIR "icons/obj/doors" -#define FILE_DIR "icons/obj/flora" -#define FILE_DIR "icons/obj/food" -#define FILE_DIR "icons/obj/guns" -#define FILE_DIR "icons/obj/hydroponics" -#define FILE_DIR "icons/obj/machines" -#define FILE_DIR "icons/obj/power_cond" -#define FILE_DIR "icons/obj/smooth_structures" -#define FILE_DIR "icons/obj/smooth_structures/alien" -#define FILE_DIR "icons/pda_icons" -#define FILE_DIR "icons/spideros_icons" -#define FILE_DIR "icons/stamp_icons" -#define FILE_DIR "icons/Testing" -#define FILE_DIR "icons/turf" -#define FILE_DIR "icons/turf/floors" -#define FILE_DIR "icons/turf/walls" -#define FILE_DIR "icons/vending_icons" -#define FILE_DIR "nano" -#define FILE_DIR "nano/images" -#define FILE_DIR "sound" -#define FILE_DIR "sound/AI" -#define FILE_DIR "sound/ambience" -#define FILE_DIR "sound/arcade" -#define FILE_DIR "sound/effects" -#define FILE_DIR "sound/guitar" -#define FILE_DIR "sound/hallucinations" -#define FILE_DIR "sound/items" -#define FILE_DIR "sound/machines" -#define FILE_DIR "sound/magic" -#define FILE_DIR "sound/mecha" -#define FILE_DIR "sound/misc" -#define FILE_DIR "sound/piano" -#define FILE_DIR "sound/spookoween" -#define FILE_DIR "sound/violin" -#define FILE_DIR "sound/voice" -#define FILE_DIR "sound/voice/complionator" -#define FILE_DIR "sound/vox_fem" -#define FILE_DIR "sound/weapons" // END_FILE_DIR // BEGIN_PREFERENCES From e800add01bab401f0878eedc17de725ff6529934 Mon Sep 17 00:00:00 2001 From: ExcessiveUseOfCobblestone Date: Tue, 18 Aug 2015 15:50:09 -0400 Subject: [PATCH 023/104] OK WE FIXED IT BOYS fuck the DME amirite --- .../research/designs/comp_board_designs.dm | 30 ------------------- .../research/designs/machine_designs.dm | 30 +++++++++++++++++++ 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/code/modules/research/designs/comp_board_designs.dm b/code/modules/research/designs/comp_board_designs.dm index 0f657da38b0..be4b869c5d2 100644 --- a/code/modules/research/designs/comp_board_designs.dm +++ b/code/modules/research/designs/comp_board_designs.dm @@ -160,36 +160,6 @@ build_path = /obj/item/weapon/circuitboard/robotics category = list("Computer Boards") -/datum/design/clonecontrol - name = "Computer Design (Cloning Machine Console)" - desc = "Allows for the construction of circuit boards used to build a new Cloning Machine console." - id = "clonecontrol" - req_tech = list("programming" = 3, "biotech" = 3) - build_type = IMPRINTER - materials = list(MAT_GLASS = 1000, "sacid" = 20) - build_path = /obj/item/weapon/circuitboard/cloning - category = list("Computer Boards") - -/datum/design/clonepod - name = "Machine Design (Clone Pod)" - desc = "Allows for the construction of circuit boards used to build a Cloning Pod." - id = "clonepod" - req_tech = list("programming" = 3, "biotech" = 3) - build_type = IMPRINTER - materials = list(MAT_GLASS = 1000, "sacid" = 20) - build_path = /obj/item/weapon/circuitboard/clonepod - category = list("Computer Boards") - -/datum/design/clonescanner - name = "Machine Design (Cloning Scanner)" - desc = "Allows for the construction of circuit boards used to build a Cloning Scanner." - id = "clonescanner" - req_tech = list("programming" = 3, "biotech" = 3) - build_type = IMPRINTER - materials = list(MAT_GLASS = 1000, "sacid" = 20) - build_path = /obj/item/weapon/circuitboard/clonescanner - category = list("Computer Boards") - /datum/design/arcadebattle name = "Computer Design (Battle Arcade Machine)" desc = "Allows for the construction of circuit boards used to build a new arcade machine." diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 75202c87387..881c62217e2 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -142,6 +142,36 @@ build_path = /obj/item/weapon/circuitboard/chem_heater category = list ("Medical Machinery") + /datum/design/clonecontrol + name = "Computer Design (Cloning Machine Console)" + desc = "Allows for the construction of circuit boards used to build a new Cloning Machine console." + id = "clonecontrol" + req_tech = list("programming" = 3, "biotech" = 3) + build_type = IMPRINTER + materials = list(MAT_GLASS = 1000, "sacid" = 20) + build_path = /obj/item/weapon/circuitboard/cloning + category = list("Medical Machinery") + +/datum/design/clonepod + name = "Machine Design (Clone Pod)" + desc = "Allows for the construction of circuit boards used to build a Cloning Pod." + id = "clonepod" + req_tech = list("programming" = 3, "biotech" = 3) + build_type = IMPRINTER + materials = list(MAT_GLASS = 1000, "sacid" = 20) + build_path = /obj/item/weapon/circuitboard/clonepod + category = list("Medical Machinery") + +/datum/design/clonescanner + name = "Machine Design (Cloning Scanner)" + desc = "Allows for the construction of circuit boards used to build a Cloning Scanner." + id = "clonescanner" + req_tech = list("programming" = 3, "biotech" = 3) + build_type = IMPRINTER + materials = list(MAT_GLASS = 1000, "sacid" = 20) + build_path = /obj/item/weapon/circuitboard/clonescanner + category = list("Medical Machinery") + /datum/design/biogenerator name = "Machine Design (Biogenerator Board)" desc = "The circuit board for a biogenerator." From 928d7e874d78a696d1dcf5319aaffe28b6d95ab1 Mon Sep 17 00:00:00 2001 From: ExcessiveUseOfCobblestone Date: Tue, 18 Aug 2015 19:28:40 -0400 Subject: [PATCH 024/104] For you Scones [Telesci stuff moved to Tele Sec.] but I still have a crush on pap sooo >.> --- .../research/designs/comp_board_designs.dm | 19 ------------------ .../research/designs/machine_designs.dm | 20 +++++++++++++++++++ 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/code/modules/research/designs/comp_board_designs.dm b/code/modules/research/designs/comp_board_designs.dm index be4b869c5d2..9748ab6ffbe 100644 --- a/code/modules/research/designs/comp_board_designs.dm +++ b/code/modules/research/designs/comp_board_designs.dm @@ -110,15 +110,6 @@ build_path = /obj/item/weapon/circuitboard/crew category = list("Computer Boards") -/datum/design/teleconsole - name = "Computer Design (Teleporter Console)" - desc = "Allows for the construction of circuit boards used to build a teleporter control console." - id = "teleconsole" - req_tech = list("programming" = 3, "bluespace" = 2) - build_type = IMPRINTER - materials = list(MAT_GLASS = 1000, "sacid" = 20) - build_path = /obj/item/weapon/circuitboard/teleporter - category = list("Computer Boards") /datum/design/secdata name = "Computer Design (Security Records Console)" @@ -320,16 +311,6 @@ build_path = /obj/item/weapon/circuitboard/comm_traffic category = list("Computer Boards") -/datum/design/telesci_console - name = "Computer Design (Telepad Control Console Board)" - desc = "Allows for the construction of circuit boards used to build a telescience console." - id = "telesci_console" - req_tech = list("programming" = 3, "bluespace" = 2) - build_type = IMPRINTER - materials = list(MAT_GLASS = 1000, "sacid" = 20) - build_path = /obj/item/weapon/circuitboard/telesci_console - category = list("Computer Boards") - /datum/design/aifixer name = "Computer Design (AI Integrity Restorer)" desc = "Allows for the construction of circuit boards used to build an AI Integrity Restorer." diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 881c62217e2..8b60ab13056 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -92,6 +92,26 @@ build_path = /obj/item/weapon/circuitboard/telesci_pad category = list ("Teleportation Machinery") +/datum/design/teleconsole + name = "Computer Design (Teleporter Console)" + desc = "Allows for the construction of circuit boards used to build a teleporter control console." + id = "teleconsole" + req_tech = list("programming" = 3, "bluespace" = 2) + build_type = IMPRINTER + materials = list(MAT_GLASS = 1000, "sacid" = 20) + build_path = /obj/item/weapon/circuitboard/teleporter + category = list("Teleportation Machinery") + +/datum/design/telesci_console + name = "Computer Design (Telepad Control Console Board)" + desc = "Allows for the construction of circuit boards used to build a telescience console." + id = "telesci_console" + req_tech = list("programming" = 3, "bluespace" = 2) + build_type = IMPRINTER + materials = list(MAT_GLASS = 1000, "sacid" = 20) + build_path = /obj/item/weapon/circuitboard/telesci_console + category = list("Teleportation Machinery") + /datum/design/sleeper name = "Machine Design (Sleeper Board)" desc = "The circuit board for a sleeper." From 489be2d3e10c540187a7414c0b28c4f9705a58b5 Mon Sep 17 00:00:00 2001 From: GunHog Date: Wed, 19 Aug 2015 09:47:20 -0500 Subject: [PATCH 025/104] RCDs now EXPLODE! - Made RCDs explode instead of simply disabled! - Minor explosion power. - Adds a five second warning to get rid of the RCD before it blows. - Added a small cooldown. --- .../gamemodes/malfunction/Malf_Modules.dm | 29 +++++++++++-------- code/game/mecha/equipment/tools/work_tools.dm | 6 +--- code/game/objects/items/weapons/RCD.dm | 3 -- 3 files changed, 18 insertions(+), 20 deletions(-) diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 439e3a3f746..79de293a31e 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -120,10 +120,10 @@ minor_announce("Automatic system reboot complete. Have a secure day.","Network reset:") -/datum/AI_Module/large/disable_rcd - module_name = "RCD disable" +/datum/AI_Module/large/destroy_rcd + module_name = "Destroy RCDs" mod_pick_name = "rcd" - description = "Send a specialised pulse to break all hand-held and exosuit Rapid Cconstruction Devices on the station." + description = "Send a specialised pulse to detonate all hand-held and exosuit Rapid Cconstruction Devices on the station." cost = 25 one_time = 1 @@ -131,19 +131,24 @@ /mob/living/silicon/ai/proc/disable_rcd() set category = "Malfunction" - set name = "Disable RCDs" - set desc = "Disable all RCD devices on the station, while sparing onboard cyborg RCDs." + set name = "Destroy RCDs" + set desc = "Detonate all RCDs on the station, while sparing onboard cyborg RCDs." - if(!canUseTopic()) + if(!canUseTopic() || malf_cooldown) return - for(var/obj/item/weapon/rcd/RCD in rcd_list) - if(!istype(/obj/item/weapon/rcd/borg, RCD)) //Ensures that cyborg RCDs are spared. - RCD.disabled = 1 - for(var/obj/item/mecha_parts/mecha_equipment/rcd/MRCD in rcd_list) - MRCD.disabled = 1 + for(var/obj/item/RCD in rcd_list) + if(!istype(RCD, /obj/item/weapon/rcd/borg)) //Ensures that cyborg RCDs are spared. + RCD.audible_message("[RCD] begins to vibrate and buzz loudly!","[RCD] begins vibrating violently!") + spawn(50) //5 seconds to get rid of it! + if(RCD) //Make sure it still exists (In case of chain-reaction) + explosion(RCD, 0, 0, 3, 1, flame_range = 1) + qdel(RCD) - src << "RCD-disabling pulse emitted." + src << "RCD detonation pulse emitted." + malf_cooldown = 1 + spawn(100) + malf_cooldown = 0 /datum/AI_Module/large/mecha_domination module_name = "Viral Mech Domination" diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index 245e0a2536b..052b5a08353 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -195,7 +195,6 @@ energy_drain = 250 range = MELEE|RANGED var/mode = 0 //0 - deconstruct, 1 - wall or floor, 2 - airlock. - var/disabled = 0 //malf /obj/item/mecha_parts/mecha_equipment/rcd/New() rcd_list += src @@ -211,7 +210,7 @@ if(!istype(target, /turf) && !istype(target, /obj/machinery/door/airlock)) target = get_turf(target) - if(!action_checks(target) || disabled || get_dist(chassis, target)>3) + if(!action_checks(target) || get_dist(chassis, target)>3) return playsound(chassis, 'sound/machines/click.ogg', 50, 1) @@ -249,7 +248,6 @@ var/turf/simulated/floor/F = target occupant_message("Building Wall...") if(do_after_cooldown(F)) - if(disabled) return F.ChangeTurf(/turf/simulated/wall) playsound(F, 'sound/items/Deconstruct.ogg', 50, 1) chassis.spark_system.start() @@ -267,8 +265,6 @@ /obj/item/mecha_parts/mecha_equipment/rcd/do_after_cooldown(var/atom/target) . = ..() - if(disabled) - return 0 /obj/item/mecha_parts/mecha_equipment/rcd/Topic(href,href_list) ..() diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index fea4a8e83ff..3eecda5909c 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -27,7 +27,6 @@ RCD var/working = 0 var/mode = 1 var/canRturf = 0 - var/disabled = 0 var/airlock_type = /obj/machinery/door/airlock var/advanced_airlock_setting = 1 //Set to 1 if you want more paintjobs available var/sheetmultiplier = 4 //Controls the amount of matter added for each glass/metal sheet, triple for plasteel @@ -312,8 +311,6 @@ RCD /obj/item/weapon/rcd/afterattack(atom/A, mob/user, proximity) if(!proximity) return 0 - if(disabled && !isrobot(user)) - return 0 if(istype(A,/area/shuttle)||istype(A,/turf/space/transit)) return 0 if(!(istype(A, /turf) || istype(A, /obj/machinery/door/airlock) || istype(A, /obj/structure/grille) || istype(A, /obj/structure/window))) From 1de60aa6292cf0d7d21bdb0fedda9f300da35e44 Mon Sep 17 00:00:00 2001 From: GunHog Date: Wed, 19 Aug 2015 10:03:42 -0500 Subject: [PATCH 026/104] Updates blood sacrifice to Dark Lord Jordie Updated changelog to reflect that the power now explodes RCDs. --- html/changelogs/GunHogMalfRCDPowah.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html/changelogs/GunHogMalfRCDPowah.yml b/html/changelogs/GunHogMalfRCDPowah.yml index a35092d3c2c..2e4bfb6ebda 100644 --- a/html/changelogs/GunHogMalfRCDPowah.yml +++ b/html/changelogs/GunHogMalfRCDPowah.yml @@ -4,4 +4,4 @@ author: Gun Hog delete-after: True changes: - - tweak: "The Disable RCD Malfunction power now costs 25 CPU (down from 50), can be used multiple times, and no longer affects cyborgs." + - tweak: "The Disable RCD Malfunction power is now Destroy RCDs! It costs 25 CPU (down from 50), causes RCDs to explode, can be used multiple times, and no longer affects cyborgs." From 458db2011debcd96683d8717922a70304ded7ae0 Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 19 Aug 2015 15:39:31 -0400 Subject: [PATCH 027/104] Fixes the apostrophe issue Maybe... Doubtfully... But I wanted to give it a try since I'm tired of my glorious pronouncements garbled in &39 If I actually fixed it then I should get a medal for best coding by someone who can't code. My logic was that WHISPER works just fine with apostrophes and ampersands but shuttle call reasons, announcements, etc. would get that garbled text when using apostrophes and ampersands. With whispers trim is on the "inside", with stripped_input that is used for these announcements trim is on the "outside". It makes intuitive sense to me that whoever wrote that stripped_input comment might have gotten things flipped since if trim is on the inside, and it allows single symbols to pass through, then there's nothing to filter html_encode from spewing that garbage out. If this isn't the correct fix then at least I should be close enough that someone can point me in the right direction. --- code/__HELPERS/text.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index 264f8cc73f1..27f8526c2e1 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -76,7 +76,7 @@ // Used to get a properly sanitized input, of max_length /proc/stripped_input(mob/user, message = "", title = "", default = "", max_length=MAX_MESSAGE_LEN) var/name = input(user, message, title, default) as text|null - return html_encode(trim(name, max_length)) //trim is "inside" because html_encode can expand single symbols into multiple symbols (such as turning < into <) + return trim(html_encode(name), max_length) //trim is "outside" because html_encode can expand single symbols into multiple symbols (such as turning < into <) // Used to get a properly sanitized multiline input, of max_length /proc/stripped_multiline_input(mob/user, message = "", title = "", default = "", max_length=MAX_MESSAGE_LEN) @@ -411,4 +411,4 @@ var/list/binary = list("0","1") t = replacetext(t, "\[list\]", "

") - return t \ No newline at end of file + return t From 61b7c347a1e44263e7288c8bb27fea5da0350064 Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 19 Aug 2015 15:43:01 -0400 Subject: [PATCH 028/104] Fixes Announcements Garbling Maybe... Doubtfully... But I wanted to give it a try since I'm tired of my glorious pronouncements garbled in &39 If I actually fixed it then I should get a medal for best coding by someone who can't code. My logic was that WHISPER works just fine with apostrophes and ampersands but shuttle call reasons, announcements, etc. would get that garbled text when using apostrophes and ampersands. With whispers trim is on the "inside", with stripped_input that is used for these announcements trim is on the "outside". It makes intuitive sense to me that whoever wrote that stripped_input comment might have gotten things flipped since if trim is on the inside, and it allows single symbols to pass through, then there's nothing to filter html_encode from spewing that garbage out. If this isn't the correct fix then at least I should be close enough that someone can point me in the right direction. --- code/controllers/subsystem/shuttles.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/controllers/subsystem/shuttles.dm b/code/controllers/subsystem/shuttles.dm index 71ed49b0394..edeb8493cdb 100644 --- a/code/controllers/subsystem/shuttles.dm +++ b/code/controllers/subsystem/shuttles.dm @@ -112,7 +112,7 @@ var/datum/subsystem/shuttle/SSshuttle user << "The emergency shuttle has been disabled by Centcom." return - call_reason = html_encode(trim(call_reason)) + call_reason = trim(html_encode(call_reason)) if(length(call_reason) < CALL_SHUTTLE_REASON_LENGTH) user << "You must provide a reason." From 2c36fb28cddb32d5b1e77dcdc731a3c2ab0f3d50 Mon Sep 17 00:00:00 2001 From: xxalpha Date: Tue, 18 Aug 2015 23:17:13 +0100 Subject: [PATCH 029/104] MADNESS CONFIRMED MADNESS --- code/game/machinery/doors/airlock.dm | 52 +++++++++++++--------------- code/game/machinery/doors/door.dm | 2 +- 2 files changed, 25 insertions(+), 29 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 5c15063072e..6d5501b74b4 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -470,16 +470,13 @@ About the new airlock wires panel: if(0) if(density) state = AIRLOCK_CLOSED - icon_state = "closed" else state = AIRLOCK_OPEN - icon_state = "open" - if(AIRLOCK_CLOSED) - icon_state = "closed" - if(AIRLOCK_OPEN) - icon_state = "open" - if(AIRLOCK_CLOSING, AIRLOCK_OPENING) icon_state = "" + if(AIRLOCK_OPENING, AIRLOCK_OPEN, AIRLOCK_CLOSED) + icon_state = "" + if(AIRLOCK_DENY, AIRLOCK_CLOSING) + icon_state = "nonexistenticonstate" //MADNESS set_airlock_overlays(state) /obj/machinery/door/airlock/proc/set_airlock_overlays(state) @@ -491,7 +488,8 @@ About the new airlock wires panel: var/image/sparks_overlay switch(state) - if(AIRLOCK_CLOSED, AIRLOCK_DENY, AIRLOCK_EMAG) + if(AIRLOCK_CLOSED) + frame_overlay = get_airlock_overlay("closed", icon) if(airlock_material) filling_overlay = get_airlock_overlay("[airlock_material]_closed") else @@ -500,18 +498,20 @@ About the new airlock wires panel: panel_overlay = get_airlock_overlay("panel_closed") if(welded) weld_overlay = get_airlock_overlay("welded") - if(state == AIRLOCK_EMAG) - sparks_overlay = get_airlock_overlay("sparks") else if(lights) if(locked) lights_overlay = get_airlock_overlay("lights_bolted") else if(emergency) lights_overlay = get_airlock_overlay("lights_emergency") - else if(state == AIRLOCK_DENY) - lights_overlay = get_airlock_overlay("lights_denied") - spawn(4) - overlays -= lights_overlay + if(AIRLOCK_DENY) + overlays += get_airlock_overlay("lights_denied") + sleep(4) + update_icon(AIRLOCK_CLOSED) + return + if(AIRLOCK_EMAG) + overlays += get_airlock_overlay("sparks") + return if(AIRLOCK_CLOSING) frame_overlay = get_airlock_overlay("closing", icon) @@ -525,6 +525,7 @@ About the new airlock wires panel: panel_overlay = get_airlock_overlay("panel_closing") if(AIRLOCK_OPEN) + frame_overlay = get_airlock_overlay("open", icon) if(airlock_material) filling_overlay = get_airlock_overlay("[airlock_material]_open") else @@ -544,18 +545,12 @@ About the new airlock wires panel: panel_overlay = get_airlock_overlay("panel_opening") overlays.Cut() - if(frame_overlay) - overlays += frame_overlay - if(filling_overlay) - overlays += filling_overlay - if(lights_overlay) - overlays += lights_overlay - if(panel_overlay) - overlays += panel_overlay - if(weld_overlay) - overlays += weld_overlay - if(sparks_overlay) - overlays += sparks_overlay + overlays += frame_overlay + overlays += filling_overlay + overlays += lights_overlay + overlays += panel_overlay + overlays += weld_overlay + overlays += sparks_overlay /obj/machinery/door/airlock/proc/get_airlock_overlay(iconstate, icon_file=overlays_file) var/iconkey = "[iconstate][icon_file]" @@ -573,6 +568,7 @@ About the new airlock wires panel: update_icon(AIRLOCK_CLOSING) if("deny") update_icon(AIRLOCK_DENY) + icon_state = "closed" /obj/machinery/door/airlock/examine(mob/user) ..() @@ -1190,7 +1186,7 @@ About the new airlock wires panel: else playsound(src.loc, 'sound/machines/airlockforced.ogg', 30, 1) - if(autoclose && normalspeed) + if(autoclose && normalspeed) spawn(150) autoclose() else if(autoclose && !normalspeed) @@ -1239,7 +1235,7 @@ About the new airlock wires panel: src.density = 1 if(!safe) crush() - sleep(5) + sleep(7) update_icon() if(visible && !glass) SetOpacity(1) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 47bf8b3cec9..7eca5ebc4cc 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -204,7 +204,7 @@ src.SetOpacity(0) sleep(5) src.density = 0 - sleep(8) + sleep(5) src.layer = 2.7 update_icon() SetOpacity(0) From 29a3d18cfa3dc341cb878a279b0df4b758ba7bbd Mon Sep 17 00:00:00 2001 From: xxalpha Date: Wed, 19 Aug 2015 23:57:34 +0100 Subject: [PATCH 030/104] Airlock open proc independent --- code/game/machinery/doors/airlock.dm | 21 ++++++++++++++++-- icons/obj/doors/airlocks/station/overlays.dmi | Bin 7637 -> 8285 bytes 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 6d5501b74b4..da3e36d3e1b 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1193,7 +1193,24 @@ About the new airlock wires panel: spawn(11) autoclose() - return ..() + if(!density) + return 1 + if(!ticker) + return 0 + operating = 1 + + do_animate("opening") + src.SetOpacity(0) + sleep(5) + src.density = 0 + sleep(9) + src.layer = 2.7 + update_icon() + SetOpacity(0) + operating = 0 + air_update_turf(1) + update_freelook_sight() + return 1 /obj/machinery/door/airlock/close(forced=0) @@ -1235,7 +1252,7 @@ About the new airlock wires panel: src.density = 1 if(!safe) crush() - sleep(7) + sleep(9) update_icon() if(visible && !glass) SetOpacity(1) diff --git a/icons/obj/doors/airlocks/station/overlays.dmi b/icons/obj/doors/airlocks/station/overlays.dmi index beacbfe75857c0f9abe2049e16fbaf0dd477a1d6..782cb0dfd4072f4070616986065dedaaa0b50966 100644 GIT binary patch literal 8285 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 literal 7637 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 b#0U795B{WullLD3;7?Ui16K0jS>S&G;5)@# From 59e75bd625dee3a8c253b50d8638fddb4d47178e Mon Sep 17 00:00:00 2001 From: xxalpha Date: Fri, 21 Aug 2015 00:07:10 +0100 Subject: [PATCH 031/104] Moved airlock types to separate file, implemented airlock types. --- code/game/machinery/doors/airlock.dm | 270 +--------------- code/game/machinery/doors/airlock_types.dm | 299 ++++++++++++++++++ icons/obj/doors/airlocks/centcom/centcom.dmi | Bin 4220 -> 4228 bytes icons/obj/doors/airlocks/centcom/overlays.dmi | Bin 4028 -> 4034 bytes .../obj/doors/airlocks/external/external.dmi | Bin 6166 -> 6174 bytes .../obj/doors/airlocks/external/overlays.dmi | Bin 3121 -> 3131 bytes icons/obj/doors/airlocks/hatch/centcom.dmi | Bin 4216 -> 4224 bytes .../obj/doors/airlocks/hatch/maintenance.dmi | Bin 4647 -> 4655 bytes icons/obj/doors/airlocks/hatch/overlays.dmi | Bin 4287 -> 4295 bytes icons/obj/doors/airlocks/highsec/highsec.dmi | Bin 4885 -> 4892 bytes icons/obj/doors/airlocks/highsec/overlays.dmi | Bin 4531 -> 4537 bytes icons/obj/doors/airlocks/shuttle/overlays.dmi | Bin 4023 -> 4029 bytes icons/obj/doors/airlocks/shuttle/shuttle.dmi | Bin 5292 -> 5300 bytes icons/obj/doors/airlocks/station/overlays.dmi | Bin 8285 -> 8287 bytes icons/obj/doors/airlocks/station/plasma.dmi | Bin 4494 -> 4501 bytes icons/obj/doors/airlocks/station/public.dmi | Bin 2273 -> 2281 bytes icons/obj/doors/airlocks/station/research.dmi | Bin 4636 -> 4643 bytes .../obj/doors/airlocks/station/sandstone.dmi | Bin 4046 -> 4053 bytes icons/obj/doors/airlocks/station/science.dmi | Bin 4521 -> 4528 bytes icons/obj/doors/airlocks/station/security.dmi | Bin 4740 -> 4747 bytes icons/obj/doors/airlocks/station/silver.dmi | Bin 3923 -> 3930 bytes icons/obj/doors/airlocks/station/uranium.dmi | Bin 4030 -> 4037 bytes icons/obj/doors/airlocks/station/virology.dmi | Bin 4710 -> 4717 bytes icons/obj/doors/airlocks/station/wood.dmi | Bin 3884 -> 3891 bytes icons/obj/doors/airlocks/station2/glass.dmi | Bin 3576 -> 3584 bytes .../obj/doors/airlocks/station2/overlays.dmi | Bin 8196 -> 8203 bytes icons/obj/doors/airlocks/vault/overlays.dmi | Bin 3356 -> 3362 bytes icons/obj/doors/airlocks/vault/vault.dmi | Bin 3709 -> 3717 bytes tgstation.dme | 1 + 29 files changed, 309 insertions(+), 261 deletions(-) create mode 100644 code/game/machinery/doors/airlock_types.dm diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index da3e36d3e1b..e6f5d1f9fda 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -69,261 +69,10 @@ var/list/airlock_overlays = list() if(A.closeOtherId == src.closeOtherId && A != src) src.closeOther = A break + if(glass) + airlock_material = "glass" update_icon() -/obj/machinery/door/airlock/command - icon = 'icons/obj/doors/airlocks/station/command.dmi' - doortype = /obj/structure/door_assembly/door_assembly_com - -/obj/machinery/door/airlock/security - icon = 'icons/obj/doors/airlocks/station/security.dmi' - doortype = /obj/structure/door_assembly/door_assembly_sec - -/obj/machinery/door/airlock/engineering - icon = 'icons/obj/doors/airlocks/station/engineering.dmi' - doortype = /obj/structure/door_assembly/door_assembly_eng - -/obj/machinery/door/airlock/medical - icon = 'icons/obj/doors/airlocks/station/medical.dmi' - doortype = /obj/structure/door_assembly/door_assembly_med - -/obj/machinery/door/airlock/maintenance - name = "maintenance access" - icon = 'icons/obj/doors/airlocks/station/maintenance.dmi' - doortype = /obj/structure/door_assembly/door_assembly_mai - -/obj/machinery/door/airlock/external - name = "external airlock" - icon = 'icons/obj/doors/airlocks/external/external.dmi' - overlays_file = 'icons/obj/doors/airlocks/external/overlays.dmi' - doortype = /obj/structure/door_assembly/door_assembly_ext - -/obj/machinery/door/airlock/glass - name = "glass airlock" - icon = 'icons/obj/doors/airlocks/station2/glass.dmi' - overlays_file = 'icons/obj/doors/airlocks/station2/overlays.dmi' - opacity = 0 - doortype = /obj/structure/door_assembly/door_assembly_glass - glass = 1 - airlock_material = "glass" - -/obj/machinery/door/airlock/centcom - icon = 'icons/obj/doors/airlocks/centcom/centcom.dmi' - overlays_file = 'icons/obj/doors/airlocks/centcom/overlays.dmi' - opacity = 1 - doortype = /obj/structure/door_assembly/door_assembly_centcom - -/obj/machinery/door/airlock/vault - name = "vault door" - icon = 'icons/obj/doors/airlocks/vault/vault.dmi' - overlays_file = 'icons/obj/doors/airlocks/vault/overlays.dmi' - opacity = 1 - doortype = /obj/structure/door_assembly/door_assembly_vault - explosion_block = 2 - -/obj/machinery/door/airlock/glass_large - name = "glass airlock" - icon = 'icons/obj/doors/Door2x1glassfull.dmi' - opacity = 0 - doortype = null //(double glass door) there's no door assembly sprites for this one. - glass = 1 - bound_width = 64 // 2x1 - -/obj/machinery/door/airlock/freezer - name = "freezer airlock" - icon = 'icons/obj/doors/airlocks/station/freezer.dmi' - opacity = 1 - doortype = /obj/structure/door_assembly/door_assembly_fre - -/obj/machinery/door/airlock/hatch - name = "airtight hatch" - icon = 'icons/obj/doors/airlocks/hatch/centcom.dmi' - overlays_file = 'icons/obj/doors/airlocks/hatch/overlays.dmi' - opacity = 1 - doortype = /obj/structure/door_assembly/door_assembly_hatch - -/obj/machinery/door/airlock/maintenance_hatch - name = "maintenance hatch" - icon = 'icons/obj/doors/airlocks/hatch/maintenance.dmi' - overlays_file = 'icons/obj/doors/airlocks/hatch/overlays.dmi' - opacity = 1 - doortype = /obj/structure/door_assembly/door_assembly_mhatch - -/obj/machinery/door/airlock/glass_command - name = "maintenance hatch" - icon = 'icons/obj/doors/Doorcomglass.dmi' - opacity = 0 - doortype = /obj/structure/door_assembly/door_assembly_com/glass - glass = 1 - -/obj/machinery/door/airlock/glass_engineering - name = "maintenance hatch" - icon = 'icons/obj/doors/Doorengglass.dmi' - opacity = 0 - doortype = /obj/structure/door_assembly/door_assembly_eng/glass - glass = 1 - -/obj/machinery/door/airlock/glass_security - name = "maintenance hatch" - icon = 'icons/obj/doors/Doorsecglass.dmi' - opacity = 0 - doortype = /obj/structure/door_assembly/door_assembly_sec/glass - glass = 1 - -/obj/machinery/door/airlock/glass_medical - name = "maintenance hatch" - icon = 'icons/obj/doors/Doormedglass.dmi' - opacity = 0 - doortype = /obj/structure/door_assembly/door_assembly_med/glass - glass = 1 - -/obj/machinery/door/airlock/mining - name = "mining airlock" - icon = 'icons/obj/doors/Doormining.dmi' - doortype = /obj/structure/door_assembly/door_assembly_min - -/obj/machinery/door/airlock/atmos - name = "atmospherics airlock" - icon = 'icons/obj/doors/Dooratmo.dmi' - doortype = /obj/structure/door_assembly/door_assembly_atmo - -/obj/machinery/door/airlock/research - icon = 'icons/obj/doors/Doorresearch.dmi' - doortype = /obj/structure/door_assembly/door_assembly_research - -/obj/machinery/door/airlock/glass_research - name = "maintenance hatch" - icon = 'icons/obj/doors/Doorresearchglass.dmi' - opacity = 0 - doortype = /obj/structure/door_assembly/door_assembly_research/glass - glass = 1 - -/obj/machinery/door/airlock/glass_mining - name = "maintenance hatch" - icon = 'icons/obj/doors/Doorminingglass.dmi' - opacity = 0 - doortype = /obj/structure/door_assembly/door_assembly_min/glass - glass = 1 - -/obj/machinery/door/airlock/glass_atmos - name = "maintenance hatch" - icon = 'icons/obj/doors/Dooratmoglass.dmi' - opacity = 0 - doortype = /obj/structure/door_assembly/door_assembly_atmo/glass - glass = 1 - -/obj/machinery/door/airlock/gold - name = "gold airlock" - icon = 'icons/obj/doors/Doorgold.dmi' - var/mineral = "gold" - doortype = /obj/structure/door_assembly/door_assembly_gold - -/obj/machinery/door/airlock/silver - name = "silver airlock" - icon = 'icons/obj/doors/Doorsilver.dmi' - var/mineral = "silver" - doortype = /obj/structure/door_assembly/door_assembly_silver - -/obj/machinery/door/airlock/diamond - name = "diamond airlock" - icon = 'icons/obj/doors/Doordiamond.dmi' - var/mineral = "diamond" - doortype = /obj/structure/door_assembly/door_assembly_diamond - -/obj/machinery/door/airlock/uranium - name = "uranium airlock" - desc = "And they said I was crazy." - icon = 'icons/obj/doors/Dooruranium.dmi' - var/mineral = "uranium" - doortype = /obj/structure/door_assembly/door_assembly_uranium - var/last_event = 0 - -/obj/machinery/door/airlock/uranium/process() - if(world.time > last_event+20) - if(prob(50)) - radiate() - last_event = world.time - ..() - -/obj/machinery/door/airlock/uranium/proc/radiate() - for(var/mob/living/L in range (3,src)) - L.irradiate(15) - return - -/obj/machinery/door/airlock/plasma - name = "plasma airlock" - desc = "No way this can end badly." - icon = 'icons/obj/doors/Doorplasma.dmi' - var/mineral = "plasma" - doortype = /obj/structure/door_assembly/door_assembly_plasma - -/obj/machinery/door/airlock/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) - if(exposed_temperature > 300) - PlasmaBurn(exposed_temperature) - -/obj/machinery/door/airlock/plasma/proc/ignite(exposed_temperature) - if(exposed_temperature > 300) - PlasmaBurn(exposed_temperature) - -/obj/machinery/door/airlock/plasma/proc/PlasmaBurn(temperature) - atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 500) - new/obj/structure/door_assembly/door_assembly_0( src.loc ) - qdel(src) - -/obj/machinery/door/airlock/plasma/BlockSuperconductivity() //we don't stop the heat~ - return 0 - -/obj/machinery/door/airlock/clown - name = "bananium airlock" - desc = "Honkhonkhonk" - icon = 'icons/obj/doors/Doorbananium.dmi' - var/mineral = "bananium" - doortype = /obj/structure/door_assembly/door_assembly_clown - -/obj/machinery/door/airlock/sandstone - name = "sandstone airlock" - icon = 'icons/obj/doors/Doorsand.dmi' - var/mineral = "sandstone" - doortype = /obj/structure/door_assembly/door_assembly_sandstone - -/obj/machinery/door/airlock/science - icon = 'icons/obj/doors/Doorsci.dmi' - doortype = /obj/structure/door_assembly/door_assembly_science - -/obj/machinery/door/airlock/glass_science - name = "glass airlock" - icon = 'icons/obj/doors/Doorsciglass.dmi' - opacity = 0 - doortype = /obj/structure/door_assembly/door_assembly_science/glass - glass = 1 - -/obj/machinery/door/airlock/highsecurity - name = "high tech security airlock" - icon = 'icons/obj/doors/hightechsecurity.dmi' - doortype = /obj/structure/door_assembly/door_assembly_highsecurity - explosion_block = 2 - -/obj/machinery/door/airlock/shuttle - name = "shuttle airlock" - icon = 'icons/obj/doors/doorshuttle.dmi' - doortype = /obj/structure/door_assembly/door_assembly_shuttle - -/obj/machinery/door/airlock/wood - name = "wooden airlock" - icon = 'icons/obj/doors/Doorwood.dmi' - var/mineral = "wood" - doortype = /obj/structure/door_assembly/door_assembly_wood - -/obj/machinery/door/airlock/virology - icon = 'icons/obj/doors/Doorviro.dmi' - doortype = /obj/structure/door_assembly/door_assembly_viro - -/obj/machinery/door/airlock/glass_virology - icon = 'icons/obj/doors/Doorviroglass.dmi' - opacity = 0 - doortype = /obj/structure/door_assembly/door_assembly_viro/glass - glass = 1 - /* About the new airlock wires panel: * An airlock wire dialog can be accessed by the normal way or by using wirecutters or a multitool on the door while the wire-panel is open. This would show the following wires, which you can either wirecut/mend or send a multitool pulse through. There are 9 wires. @@ -473,9 +222,9 @@ About the new airlock wires panel: else state = AIRLOCK_OPEN icon_state = "" - if(AIRLOCK_OPENING, AIRLOCK_OPEN, AIRLOCK_CLOSED) + if(AIRLOCK_OPEN, AIRLOCK_CLOSED) icon_state = "" - if(AIRLOCK_DENY, AIRLOCK_CLOSING) + if(AIRLOCK_DENY, AIRLOCK_OPENING, AIRLOCK_CLOSING) icon_state = "nonexistenticonstate" //MADNESS set_airlock_overlays(state) @@ -498,12 +247,11 @@ About the new airlock wires panel: panel_overlay = get_airlock_overlay("panel_closed") if(welded) weld_overlay = get_airlock_overlay("welded") - else - if(lights) - if(locked) - lights_overlay = get_airlock_overlay("lights_bolted") - else if(emergency) - lights_overlay = get_airlock_overlay("lights_emergency") + if(lights) + if(locked) + lights_overlay = get_airlock_overlay("lights_bolts") + else if(emergency) + lights_overlay = get_airlock_overlay("lights_emergency") if(AIRLOCK_DENY) overlays += get_airlock_overlay("lights_denied") sleep(4) diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm new file mode 100644 index 00000000000..de140976d87 --- /dev/null +++ b/code/game/machinery/doors/airlock_types.dm @@ -0,0 +1,299 @@ +/* + Station Airlocks Regular +*/ +/obj/machinery/door/airlock/command + icon = 'icons/obj/doors/airlocks/station/command.dmi' + doortype = /obj/structure/door_assembly/door_assembly_com + +/obj/machinery/door/airlock/security + icon = 'icons/obj/doors/airlocks/station/security.dmi' + doortype = /obj/structure/door_assembly/door_assembly_sec + +/obj/machinery/door/airlock/engineering + icon = 'icons/obj/doors/airlocks/station/engineering.dmi' + doortype = /obj/structure/door_assembly/door_assembly_eng + +/obj/machinery/door/airlock/medical + icon = 'icons/obj/doors/airlocks/station/medical.dmi' + doortype = /obj/structure/door_assembly/door_assembly_med + +/obj/machinery/door/airlock/maintenance + name = "maintenance access" + icon = 'icons/obj/doors/airlocks/station/maintenance.dmi' + doortype = /obj/structure/door_assembly/door_assembly_mai + +/obj/machinery/door/airlock/mining + name = "mining airlock" + icon = 'icons/obj/doors/Doormining.dmi' + doortype = /obj/structure/door_assembly/door_assembly_min + +/obj/machinery/door/airlock/atmos + name = "atmospherics airlock" + icon = 'icons/obj/doors/airlocks/station/atmos.dmi' + doortype = /obj/structure/door_assembly/door_assembly_atmo + +/obj/machinery/door/airlock/research + icon = 'icons/obj/doors/airlocks/station/research.dmi' + doortype = /obj/structure/door_assembly/door_assembly_research + +/obj/machinery/door/airlock/freezer + name = "freezer airlock" + icon = 'icons/obj/doors/airlocks/station/freezer.dmi' + doortype = /obj/structure/door_assembly/door_assembly_fre + +/obj/machinery/door/airlock/science + icon = 'icons/obj/doors/airlocks/station/science.dmi' + doortype = /obj/structure/door_assembly/door_assembly_science + +/obj/machinery/door/airlock/virology + icon = 'icons/obj/doors/airlocks/station/virology.dmi' + doortype = /obj/structure/door_assembly/door_assembly_viro + +////////////////////////////////// +/* + Station Airlocks Glass +*/ + +/obj/machinery/door/airlock/glass_command + icon = 'icons/obj/doors/airlocks/station/command.dmi' + opacity = 0 + doortype = /obj/structure/door_assembly/door_assembly_com/glass + glass = 1 + +/obj/machinery/door/airlock/glass_engineering + icon = 'icons/obj/doors/airlocks/station/engineering.dmi' + opacity = 0 + doortype = /obj/structure/door_assembly/door_assembly_eng/glass + glass = 1 + +/obj/machinery/door/airlock/glass_security + icon = 'icons/obj/doors/airlocks/station/security.dmi' + opacity = 0 + doortype = /obj/structure/door_assembly/door_assembly_sec/glass + glass = 1 + +/obj/machinery/door/airlock/glass_medical + icon = 'icons/obj/doors/airlocks/station/medical.dmi' + opacity = 0 + doortype = /obj/structure/door_assembly/door_assembly_med/glass + glass = 1 + +/obj/machinery/door/airlock/glass_research + icon = 'icons/obj/doors/airlocks/station/research.dmi' + opacity = 0 + doortype = /obj/structure/door_assembly/door_assembly_research/glass + glass = 1 + +/obj/machinery/door/airlock/glass_mining + icon = 'icons/obj/doors/airlocks/station/mining.dmi' + opacity = 0 + doortype = /obj/structure/door_assembly/door_assembly_min/glass + glass = 1 + +/obj/machinery/door/airlock/glass_atmos + icon = 'icons/obj/doors/airlocks/station/atmos.dmi' + opacity = 0 + doortype = /obj/structure/door_assembly/door_assembly_atmo/glass + glass = 1 + +/obj/machinery/door/airlock/glass_science + icon = 'icons/obj/doors/airlocks/station/science.dmi' + opacity = 0 + doortype = /obj/structure/door_assembly/door_assembly_science/glass + glass = 1 + +/obj/machinery/door/airlock/glass_virology + icon = 'icons/obj/doors/airlocks/station/virology.dmi' + opacity = 0 + doortype = /obj/structure/door_assembly/door_assembly_viro/glass + glass = 1 + +////////////////////////////////// +/* + Station Airlocks Mineral +*/ + +/obj/machinery/door/airlock/gold + name = "gold airlock" + icon = 'icons/obj/doors/airlocks/station/gold.dmi' + var/mineral = "gold" + doortype = /obj/structure/door_assembly/door_assembly_gold + +/obj/machinery/door/airlock/silver + name = "silver airlock" + icon = 'icons/obj/doors/airlocks/station/silver.dmi' + var/mineral = "silver" + doortype = /obj/structure/door_assembly/door_assembly_silver + +/obj/machinery/door/airlock/diamond + name = "diamond airlock" + icon = 'icons/obj/doors/airlocks/station/diamond.dmi' + var/mineral = "diamond" + doortype = /obj/structure/door_assembly/door_assembly_diamond + +/obj/machinery/door/airlock/uranium + name = "uranium airlock" + desc = "And they said I was crazy." + icon = 'icons/obj/doors/airlocks/station/uranium.dmi' + var/mineral = "uranium" + doortype = /obj/structure/door_assembly/door_assembly_uranium + var/last_event = 0 + +/obj/machinery/door/airlock/uranium/process() + if(world.time > last_event+20) + if(prob(50)) + radiate() + last_event = world.time + ..() + +/obj/machinery/door/airlock/uranium/proc/radiate() + for(var/mob/living/L in range (3,src)) + L.irradiate(15) + return + +/obj/machinery/door/airlock/plasma + name = "plasma airlock" + desc = "No way this can end badly." + icon = 'icons/obj/doors/airlocks/station/plasma.dmi' + var/mineral = "plasma" + doortype = /obj/structure/door_assembly/door_assembly_plasma + +/obj/machinery/door/airlock/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(exposed_temperature > 300) + PlasmaBurn(exposed_temperature) + +/obj/machinery/door/airlock/plasma/proc/ignite(exposed_temperature) + if(exposed_temperature > 300) + PlasmaBurn(exposed_temperature) + +/obj/machinery/door/airlock/plasma/proc/PlasmaBurn(temperature) + atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 500) + new/obj/structure/door_assembly/door_assembly_0( src.loc ) + qdel(src) + +/obj/machinery/door/airlock/plasma/BlockSuperconductivity() //we don't stop the heat~ + return 0 + +/obj/machinery/door/airlock/clown + name = "bananium airlock" + desc = "Honkhonkhonk" + icon = 'icons/obj/doors/airlocks/station/bananium.dmi' + var/mineral = "bananium" + doortype = /obj/structure/door_assembly/door_assembly_clown + +/obj/machinery/door/airlock/sandstone + name = "sandstone airlock" + icon = 'icons/obj/doors/airlocks/station/sandstone.dmi' + var/mineral = "sandstone" + doortype = /obj/structure/door_assembly/door_assembly_sandstone + + +/obj/machinery/door/airlock/wood + name = "wooden airlock" + icon = 'icons/obj/doors/airlocks/station/wood.dmi' + var/mineral = "wood" + doortype = /obj/structure/door_assembly/door_assembly_wood + +////////////////////////////////// +/* + Station2 Airlocks +*/ + +/obj/machinery/door/airlock/glass + name = "glass airlock" + icon = 'icons/obj/doors/airlocks/station2/glass.dmi' + overlays_file = 'icons/obj/doors/airlocks/station2/overlays.dmi' + opacity = 0 + doortype = /obj/structure/door_assembly/door_assembly_glass + glass = 1 + +////////////////////////////////// +/* + External Airlocks +*/ + +/obj/machinery/door/airlock/external + name = "external airlock" + icon = 'icons/obj/doors/airlocks/external/external.dmi' + overlays_file = 'icons/obj/doors/airlocks/external/overlays.dmi' + doortype = /obj/structure/door_assembly/door_assembly_ext + +////////////////////////////////// +/* + Centcom Airlocks +*/ + +/obj/machinery/door/airlock/centcom + icon = 'icons/obj/doors/airlocks/centcom/centcom.dmi' + overlays_file = 'icons/obj/doors/airlocks/centcom/overlays.dmi' + opacity = 1 + doortype = /obj/structure/door_assembly/door_assembly_centcom + +////////////////////////////////// +/* + Vault Airlocks +*/ + +/obj/machinery/door/airlock/vault + name = "vault door" + icon = 'icons/obj/doors/airlocks/vault/vault.dmi' + overlays_file = 'icons/obj/doors/airlocks/vault/overlays.dmi' + opacity = 1 + doortype = /obj/structure/door_assembly/door_assembly_vault + explosion_block = 2 + +////////////////////////////////// +/* + Hatch Airlocks +*/ + +/obj/machinery/door/airlock/hatch + name = "airtight hatch" + icon = 'icons/obj/doors/airlocks/hatch/centcom.dmi' + overlays_file = 'icons/obj/doors/airlocks/hatch/overlays.dmi' + opacity = 1 + doortype = /obj/structure/door_assembly/door_assembly_hatch + +/obj/machinery/door/airlock/maintenance_hatch + name = "maintenance hatch" + icon = 'icons/obj/doors/airlocks/hatch/maintenance.dmi' + overlays_file = 'icons/obj/doors/airlocks/hatch/overlays.dmi' + opacity = 1 + doortype = /obj/structure/door_assembly/door_assembly_mhatch + +////////////////////////////////// +/* + High Security Airlocks +*/ + +/obj/machinery/door/airlock/highsecurity + name = "high tech security airlock" + icon = 'icons/obj/doors/airlocks/highsec/highsec.dmi' + overlays_file = 'icons/obj/doors/airlocks/highsec/overlays.dmi' + doortype = /obj/structure/door_assembly/door_assembly_highsecurity + explosion_block = 2 + +////////////////////////////////// +/* + Shuttle Airlocks +*/ + +/obj/machinery/door/airlock/shuttle + name = "shuttle airlock" + icon = 'icons/obj/doors/airlocks/shuttle/shuttle.dmi' + overlays_file = 'icons/obj/doors/airlocks/shuttle/overlays.dmi' + doortype = /obj/structure/door_assembly/door_assembly_shuttle + + +////////////////////////////////// +/* + Misc Airlocks +*/ + +/obj/machinery/door/airlock/glass_large + name = "glass airlock" + icon = 'icons/obj/doors/Door2x1glassfull.dmi' + opacity = 0 + doortype = null //(double glass door) there's no door assembly sprites for this one. + glass = 1 + bound_width = 64 // 2x1 diff --git a/icons/obj/doors/airlocks/centcom/centcom.dmi b/icons/obj/doors/airlocks/centcom/centcom.dmi index 010cb237ebdb26525b06451cf46b1ad2c8216477..41669fe34d4847fe41c4660f5a7361098307f1ed 100644 GIT binary patch delta 184 zcmV;p07w7)AcP^1B!8oNR9JLGWpiV4X>fFDZ*Bkpc$}?{K?=e!6hzngrx@C;NUh>7 z8)=a)+B=ly+XiBONuuKIT@(s}f(x0=3_Ko_<5ZuU4prOGokO(Zp>fz2q#o9!2^#y7 z)Wmk2(lTP|6GI~#oJ2MmDPu!~#*Wk_^jBW`ipk9WC&>EoGc9){W!UvkXq1~Zq@2k7 mt{I%fe`v(V6mCPZ^7VR-x~ovN4ZQ$XaaadT{?|^i$g~e14q6ic delta 176 zcmV;h08jsfA^aeaB!8QFR9JLGWpiV4X>fFDZ*Bkpc$}S%K?=e!6hzngrx@C;h*oiz zjig8x?Hxk%Z2~osBr4wCMWG-lh|FdN-oUGIY)`s}>NMRsWgi11_UjFahquK+V%Lyx z>_=DTk&7t|iE5Z)W?PZ4K4nO3Nt~0p@Z1+HUOD^(`7nOw4kaWkPv!}UX0_y9fFDZ*Bkpc$}?~!HU8#5QfjmQw(|y%O+jC z<+4N*Y)MnP%#BT!_2#`FSLmXgA3h^GwU*e2FclPHh+60(6HdlqBkedpv0{> z^D!pSAYW{)k2IZa8-1Z+*DGu>IJCobbx)Q;3OSTX$>iNg+T!WG7`0r7!9C^QC^9-j09s9G2@E>Q%$f Rf7kQ?XKxL;0J9tcpbp41hROf{ delta 267 zcmV+m0rdXDAG{xsB!BLDR9JLGWpiV4X>fFDZ*Bkpc$}q?!HU8#5QfjmQw(|yV$#K1 zE>e*m^c5uA%(lUpluS^3dk-#asV(cSO* diff --git a/icons/obj/doors/airlocks/external/external.dmi b/icons/obj/doors/airlocks/external/external.dmi index 7a7fe8e507c9d27fe13e70a5d25c775727aea9ae..1130408c810b75d220cf3d9a98285efcefe91b7d 100644 GIT binary patch delta 184 zcmV;p07w6pFrF}wB!8oNR9JLGWpiV4X>fFDZ*Bkpc$}?{K?=e!6hzngrx@C;NUh>7 z8)=a)+B=ly+XiBONuuKIT@(s}f(x0=3_Ko_<5ZuU4prOGokO(Zp>fz2q#o9!2^#y7 z)Wmk2(lTP|6GI~#oJ2MmDPu!~#*Wk_^jBW`ipk9WC&>EoGc9){W!UvkXq1~Zq@2k7 mt{I%fe`v(V6mCPZ^7VR-x~ovN4ZQ$XaaadT{?|^i$W9mia#@G~ delta 176 zcmV;h08js(FqSZoB!8QFR9JLGWpiV4X>fFDZ*Bkpc$}S%K?=e!6hzngrx@C;h*oiz zjig8x?Hxk%Z2~osBr4wCMWG-lh|FdN-oUGIY)`s}>NMRsWgi11_UjFahquK+V%Lyx z>_=DTk&7t|iE5Z)W?PZ4K4nO3Nt~0p@Z1+HUOD^(`7nOw4kaWkPv!}UX0_y9fFDZ*Bkpc$}?}!H&Wp6h+tY6)(CaW}s$v zY)s9h3;hMdls7FAfdJ9?_bxO}ZAzvl6E={XcX;@u zbnZbyB`E39bbY=*QdSv3!or%a&*|U;I^((pCECOU5;!G4QGcEAejnql_2~`#+uNMx z!Wx}HJxy1XXte4I5;)_GQ)0ajubLE8JQjZY9L=+$<*^K&Fm~wL>$Fb{e1h>ouR%Gq zht~R3%EHI659r=Ni~SEm3idoxA%BQC^3R+npD!ggOny=&+V#|`DO R_zP@u000XHNwXLM84J$zf2;ri delta 267 zcmV+m0rdX67_k_TB!A|5R9JLGWpiV4X>fFDZ*Bkpc$}q>!3x4K5Jb<(S1k1!#H8Xa z7pX`O^%o>IYa5J7NrK|vdr+j57AvxsEWDYW%mTK%eR+VQD(MYFG~R)P^>RhY-RRVU zgj`V4qG{UnT4GWOK|*Ft)24Xz9XjKhj1p}^1PPpyb5K`&y?=*zZGHR!KY5$tTv($s zsK@D?5{*_pKmuo+^~AAL;WBY!Gf=UC_I((y7#ei-W86jbTm<924m;)09&794RBk?m zeTVJ`bh7K-*97~_ShRmF_{_Mqm<#4#!8=+#UFiaLhXRVKq)&IP+s16b7@+_F3kFF< RK~#90?cMKh6SFJ<4-1=Qev1GA diff --git a/icons/obj/doors/airlocks/hatch/centcom.dmi b/icons/obj/doors/airlocks/hatch/centcom.dmi index ffd09d372ae474be5eb5bdc97f7bf0ad41e7af94..b83f0e29a6d03c0c0c6650412b1e7135e86269f6 100644 GIT binary patch delta 184 zcmV;p07w7$Ab=r|B!8oNR9JLGWpiV4X>fFDZ*Bkpc$}?{K?=e!6hzngrx@C;NUh>7 z8)=a)+B=ly+XiBONuuKIT@(s}f(x0=3_Ko_<5ZuU4prOGokO(Zp>fz2q#o9!2^#y7 z)Wmk2(lTP|6GI~#oJ2MmDPu!~#*Wk_^jBW`ipk9WC&>EoGc9){W!UvkXq1~Zq@2k7 mt{I%fe`v(V6mCPZ^7VR-x~ovN4ZQ$XaaadT{?|^i$gmF?PFe>5 delta 176 zcmV;h08jsbA^0GWB!8QFR9JLGWpiV4X>fFDZ*Bkpc$}S%K?=e!6hzngrx@C;h*oiz zjig8x?Hxk%Z2~osBr4wCMWG-lh|FdN-oUGIY)`s}>NMRsWgi11_UjFahquK+V%Lyx z>_=DTk&7t|iE5Z)W?PZ4K4nO3Nt~0p@Z1+HUOD^(`7nOw4kaWkPv!}UX0_y9fFDZ*Bkpc$}?{K?=e!6hzngrx@C;NUh>7 z8)=a)+B=ly+XiBONuuKIT@(s}f(x0=3_Ko_<5ZuU4prOGokO(Zp>fz2q#o9!2^#y7 z)Wmk2(lTP|6GI~#oJ2MmDPu!~#*Wk_^jBW`ipk9WC&>EoGc9){W!UvkXq1~Zq@2k7 mt{I%fe`v(V6mCPZ^7VR-x~ovN4ZQ$XaaadT{?|^i$X^iz+gY6e delta 176 zcmV;h08js~B&Q^hB!8QFR9JLGWpiV4X>fFDZ*Bkpc$}S%K?=e!6hzngrx@C;h*oiz zjig8x?Hxk%Z2~osBr4wCMWG-lh|FdN-oUGIY)`s}>NMRsWgi11_UjFahquK+V%Lyx z>_=DTk&7t|iE5Z)W?PZ4K4nO3Nt~0p@Z1+HUOD^(`7nOw4kaWkPv!}UX0_y9fFDZ*Bkpc$}?~&uRiO5QopnQw(|y#bk@O zT*`{`QX1W`UNyvnXZ{I_qF1lMSEOQ$8_AZ!69& z&XyiDREo16UDubNhKeZ&8W!GleW6247+mNUoLQF%G)T@qvwt}wfrd3_7QMNG1|@!r zGaq9D4f4U(`bhKHECz>mTvpv=Qb-~H&>W*LG;SHdluSNNVC%au@hlS0m^%#Zb=;>0 zJ|*PfE6D`(ht@}$T3p`4F=6-zI>UQzLk2gOOuo26t6l}Gr{D#>oj&stHv1atUBkZt RH^B4&RqzKv0J9nar4KeOcz6H+ delta 267 zcmV+m0rdXIA-^GzB!BFBR9JLGWpiV4X>fFDZ*Bkpc$}q?&5FV>5P;9gQw;SQWRou5 za*@i?LwyCwHnVLoCM6RT-`>N*TC_!7nbW{G-~26Lz4@xQP&G9_Vj>pm$AEuoxWLX+?QeNFjy1EB=l?({$|!rop8B47R#yA*LJQ0aJ&eJx^QI$fATCZ8?~L ze%Ja)b4$uwI1U(IK>z)K>uABfr;tyM+p1^5@*#LaZ|6_CfX%jos;T(}gKFg-*pH%m R000k;NklfFDZ*Bkpc$}?|u?oU46h-H}ueh|UNUaVo zS)@fewEs|=XB&ulC5eiE?@$m53J!9Yd*N{4<~Y^orbE>>bmtJQcxW891*wNMX@bVS zBsH-er?iZi`oz%41}BkCM#|U_p|K-%3H_Cq{>Efx{}W{W_$`?`k}~Z2Cp5~fFDZ*Bkpc$}qPT9u*iT!#*;^A#^kk~aO z9Q)CgdE{aWL!ug{nAuh&tWOydTN3AFEfFDZ*Bkpc$}?~!D<3A5QfjmQw(|y#bitA zB^OyKd(c;qbTjS-V-hl<;@f+$pw(Tfu*_-T%lFS@=CE9SH5;hc4gbMRE(Xx>{fG*nDM&@l6^>kDmT!r($T zIP)$a-t&cRV@jLoL!@ft@VsL1O>FSy;g%olqlak5%k+hGy_hQuYI}9E$cNp5! zuut9il#n;qNhYA*wm#C>F7h6Z3BwEML?^lqI;~JXxk{^^1*?C-BYHdj-E&xNYN*!@ TKLZzV_V}x85dkB!9RZdQj=P0$ delta 267 zcmV+m0rdX4BeNrrB!BRFR9JLGWpiV4X>fFDZ*Bkpc$}?~L2AP=5JlJ0DTZV#LM4Zi zjW)rdc#&KosMgdLktL%M4Y_?6EyQ(flG31+;QjY!q$O;3Z`A?HeZ@a9k&6K|tXD6b zot@1sXebnCExM-7-xtazBWPH7*R+|AvB%&-v*66SM4&-(_J5H~hXfinoLThd0veR~ zb#6ShkMs=Bd-R#6E%FAo7#!MZy0~^qA;lm}y-BB;j@MC2jIuw)*kNig)R$?C8d#K& zgDra#&>w3bX>M*ghGUQ659q%>;X2+kH1ff*YxO8t+y&3*?fla&VRtB@+*kYye$wa` RCknOX000nvNwX*ckr1o2e;5D& diff --git a/icons/obj/doors/airlocks/shuttle/overlays.dmi b/icons/obj/doors/airlocks/shuttle/overlays.dmi index 6308aab1a78d6239a28ccfe38fac807e48a085b6..4758186ea99e38794afedc5e8eee75134fe83d6b 100644 GIT binary patch delta 267 zcmV+m0rdX2AH5%tB!BdJR9JLGWpiV4X>fFDZ*Bkpc$}?~!HU8#5QfjmQw(|y%O+jC z<+4N*Y)MnP%#BT!_2#`FSLmXgA3h^GwU*e2FclPHh+60(6HdlqBkedpv0{> z^D!pSAYW{)k2IZa8-1Z+*DGu>IJCobbx)Q;3OSTX$>iNg+T!WG7`0r7!9C^QC^9-j09s9G2@E>Q%$f Rf7kQ?XKxL;0J9tcn-0CkhPwa& delta 267 zcmV+m0rdX8AGaTnB!BLDR9JLGWpiV4X>fFDZ*Bkpc$}q?!HU8#5QfjmQw(|yV$#K1 zE>e*m^c5uA%(lUpluS^3dk-#asV(cSfFDZ*Bkpc$}?{K?=e!6hzngrx@C;NUh>7 z8)=a)+B=ly+XiBONuuKIT@(s}f(x0=3_Ko_<5ZuU4prOGokO(Zp>fz2q#o9!2^#y7 z)Wmk2(lTP|6GI~#oJ2MmDPu!~#*Wk_^jBW`ipk9WC&>EoGc9){W!UvkXq1~Zq@2k7 mt{I%fe`v(V6mCPZ^7VR-x~ovN4ZQ$XaaadT{?|^i$mA0gDOxxH delta 176 zcmV;h08jt4DXb}wB!8QFR9JLGWpiV4X>fFDZ*Bkpc$}S%K?=e!6hzngrx@C;h*oiz zjig8x?Hxk%Z2~osBr4wCMWG-lh|FdN-oUGIY)`s}>NMRsWgi11_UjFahquK+V%Lyx z>_=DTk&7t|iE5Z)W?PZ4K4nO3Nt~0p@Z1+HUOD^(`7nOw4kaWkPv!}UX0_y9 ze9Ko$xWj1BH>Y7=dF3k$ag|P|Ji1Ne0^OTP{Deb?{uikA=D#8JO-?5hnIkl1F1Q#4 zkLYy9nvGLLxtW~dtW0`zf;IL{PA3bVQrtJmhVfy(pOtB^${%fWSgtFmRyF?wIS_UY W==J@~0018YNkl05AWJBb6hNB!9blR9JLGWpiV4X>fFDZ*Bkpc$}?}!3x4K42I9mQ-tj*qEo!} zA{(;9_6lRH-4>|LXshDedl(c1!5&5~34Hwg`EtBgx4Ol$so|-eC$=c@ygz_=kqR?P zJQW~jP179K!-qa-l$Z^My;d0rMb4wdBZ$%UcfIZr<3-yfh(+x5o4bHe+VpRfSnT3} zFwDz$%wX7W5yRF8_ZR~4|LP+d(fFDZ*Bkpc$}q>!3x4K42I9mQ-tj*qEo!} zA{(;9_6lRH*%qj+v{mu#Jq!whV438Sz?bm-$?;rW>K4nUh6g#%)}X}Wb_e3gD$FSH zP=J_;r#UQx4}Bn%m<`%`QW*%v&ZERVh|%>|TKb6D8<`}C%|7&EWd&D17jU`)0JpWOzxyb>*|SUml?U6-CQbkV delta 79 zcmV-V0I>h*5#bS#lmV}im3clx5=3<@Z7s;pD=sN2O)dcjAwln^W#;6>6B&MBwL}FX lTqR9C3U@mlY#|~{l@(n5T)^oU01CCcL(8#_eX~>nl?Sr29x(s_ diff --git a/icons/obj/doors/airlocks/station/research.dmi b/icons/obj/doors/airlocks/station/research.dmi index d58e46187a8226bd364df55f7e6a42e6961ec2ce..ba483f8d3cf6325cdf47ef1dbde81fd48bae0ce0 100644 GIT binary patch delta 208 zcmV;>05AWXB%>sdB!9blR9JLGWpiV4X>fFDZ*Bkpc$}?}!3x4K42I9mQ-tj*qEo!} zA{(;9_6lRH-4>|LXshDedl(c1!5&5~34Hwg`EtBgx4Ol$so|-eC$=c@ygz_=kqR?P zJQW~jP179K!-qa-l$Z^My;d0rMb4wdBZ$%UcfIZr<3-yfh(+x5o4bHe+VpRfSnT3} zFwDz$%wX7W5yRF8_ZR~4|LP+d(`D delta 201 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 delta 201 zcmV;)05<>aB<3WLB!9GeR9JLGWpiV4X>fFDZ*Bkpc$}q>!3x4K42I9mQ-tj*qEo!} zA{(;9_6lRH*%qj+v{mu#Jq!whV438Sz?bm-$?;rW>K4nUh6g#%)}X}Wb_e3gD$FSH zP=J_;r#UQx4}Bn%m<`%`QW*%v&ZERVh|%>|TKb6D8<`}C%|7&n DhzVqv diff --git a/icons/obj/doors/airlocks/station/wood.dmi b/icons/obj/doors/airlocks/station/wood.dmi index 46ea9ad74087b73348b23434b1c9a55dd37cc1b6..ae34e82743c36a9f628547afdffbf2fb00d547fa 100644 GIT binary patch delta 208 zcmV;>05AWn9fFDZ*Bkpc$}?}!3x4K42I9mQ-tj*qEo!} zA{(;9_6lRH-4>|LXshDedl(c1!5&5~34Hwg`EtBgx4Ol$so|-eC$=c@ygz_=kqR?P zJQW~jP179K!-qa-l$Z^My;d0rMb4wdBZ$%UcfIZr<3-yfh(+x5o4bHe+VpRfSnT3} zFwDz$%wX7W5yRF8_ZR~4|LP+d(fFDZ*Bkpc$}q>!3x4K42I9mQ-tj*qEo!} zA{(;9_6lRH*%qj+v{mu#Jq!whV438Sz?bm-$?;rW>K4nUh6g#%)}X}Wb_e3gD$FSH zP=J_;r#UQx4}Bn%m<`%`QW*%v&ZERVh|%>|TKb6D8<`}C%|7&fFDZ*Bkpc$}?{K?=e!6hzngrx@C;NUh>7 z8)=a)+B=ly+XiBONuuKIT@(s}f(x0=3_Ko_<5ZuU4prOGokO(Zp>fz2q#o9!2^#y7 z)Wmk2(lTP|6GI~#oJ2MmDPu!~#*Wk_^jBW`ipk9WC&>EoGc9){W!UvkXq1~Zq@2k7 mt{I%fe`v(V6mCPZ^7VR-x~ovN4ZQ$XaaadT{?|^i$S@5NFj;#5 delta 176 zcmV;h08jsb9QYfMB!8QFR9JLGWpiV4X>fFDZ*Bkpc$}S%K?=e!6hzngrx@C;h*oiz zjig8x?Hxk%Z2~osBr4wCMWG-lh|FdN-oUGIY)`s}>NMRsWgi11_UjFahquK+V%Lyx z>_=DTk&7t|iE5Z)W?PZ4K4nO3Nt~0p@Z1+HUOD^(`7nOw4kaWkPv!}UX0_y9fFDZ*Bkpc$}?~O=`n15JuP1DTZWgN@bVq zv?&h7i{uJHwWhL&A_A4{ZLjJLBh&eGh{l1h~9d$;!N8_AVF~Uk$=<)2_$Sd)9BO%B-GXK zfFDZ*Bkpc$}q?L2kn!5JlJK6r*HoRmHBd zV^cY*yhyGPQJC5&1T2Om%I&*IRa=g&(papJ-n{vI*6_alsP|CqYIeau#yb%3_VUWI ztI@Fq0cF9m7ERN}`-P&62m)5tG;O4V@6Z|7tXQT^AP~S=_J0-R2?+#jSfSQ?1?AVN^^3m+iVmx7J(5c(Br5IR> zoDW{vNr(2Jtf#r$d<^>z-9ON$KcJ7cRKXMDsv;FE{{*jSbwZ_$l|-ri-{GYGd-Un@ m`e;iP-cbx^6%>u14Zeo$zJh93vu}cEH7+7rMpd&t0nQ#!9hQLr diff --git a/icons/obj/doors/airlocks/vault/overlays.dmi b/icons/obj/doors/airlocks/vault/overlays.dmi index 747c25760ae35b3289059b3c9dc133f95d22f7f0..559c1e12dfcb50a09ae4d3b294381cd8a1b8a055 100644 GIT binary patch delta 266 zcmV+l0rmcz8loDIB!BdJR9JLGWpiV4X>fFDZ*Bkpc$}?~!HU8#5QfjmQw(|y%O+jC z<+4N*Y)MnP%#BT!_2#`FSLmXgA3h^GwU*e2FclPHh+60(6HdlqBkedpv0{> z^D!pSAYW{)k2IZa8-1Z+*DGu>IJCobbx)Q;3OSTX$>iNg+T!WG7`0r7!9C^QC^9-j09s9G2@E>Q%$f Qf7kQ?XKxL;0HYiM4DfFDZ*Bkpc$}q?!HU8#5QfjmQw(|yV$#K1 zE>e*m^c5uA%(lUpluS^3dk-#asV(cSfFDZ*Bkpc$}?{K?=e!6hzngrx@C;NUh>7 z8)=a)+B=ly+XiBONuuKIT@(s}f(x0=3_Ko_<5ZuU4prOGokO(Zp>fz2q#o9!2^#y7 z)Wmk2(lTP|6GI~#oJ2MmDPu!~#*Wk_^jBW`ipk9WC&>EoGc9){W!UvkXq1~Zq@2k7 mt{I%fe`v(V6mCPZ^7VR-x~ovN4ZQ$XaaadT{?|^i$h8d`%vuZp delta 176 zcmV;h08jsg9sL}TB!8QFR9JLGWpiV4X>fFDZ*Bkpc$}S%K?=e!6hzngrx@C;h*oiz zjig8x?Hxk%Z2~osBr4wCMWG-lh|FdN-oUGIY)`s}>NMRsWgi11_UjFahquK+V%Lyx z>_=DTk&7t|iE5Z)W?PZ4K4nO3Nt~0p@Z1+HUOD^(`7nOw4kaWkPv!}UX0_y9 Date: Fri, 21 Aug 2015 08:16:01 -0500 Subject: [PATCH 032/104] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5437433fc0c..8f2d270db37 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,9 @@ **Website:** http://www.tgstation13.org
**Code:** https://github.com/tgstation/-tg-station
-**Wiki** http://tgstation13.org/wiki/Main_Page
-**IRC:** irc://irc.rizon.net/coderbus
+**Wiki** http://tgstation13.org/wiki/Main_Page
+**IRC:** irc://irc.rizon.net/coderbus or if you dont have an IRC client, you can click [here](https://kiwiirc.com/client/irc.rizon.net:6667/?&theme=cli#coderbus).
+ ##DOWNLOADING From 2a518c65f91de6346a842a790d6cbcadb31dc899 Mon Sep 17 00:00:00 2001 From: kingofkosmos Date: Sat, 22 Aug 2015 09:35:01 +0300 Subject: [PATCH 033/104] Made cyborg cover unlock upon death. Made AI unanchor upon death. Added checks-if-dead to all AI verbs. Removed "You can't do that because you're dead!" -messages from AI verbs. --- code/game/objects/items/devices/PDA/PDA.dm | 15 ++++-------- code/modules/mob/living/silicon/ai/ai.dm | 23 +++++++++++-------- code/modules/mob/living/silicon/ai/death.dm | 1 + .../mob/living/silicon/ai/freelook/eye.dm | 2 ++ code/modules/mob/living/silicon/ai/laws.dm | 2 ++ code/modules/mob/living/silicon/ai/say.dm | 2 ++ .../modules/mob/living/silicon/robot/death.dm | 1 + 7 files changed, 26 insertions(+), 20 deletions(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 0b0080eadcf..da453f2fcc6 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -1083,8 +1083,7 @@ var/global/list/obj/item/device/pda/PDAs = list() var/list/plist = list() var/list/namecounts = list() - if(user.stat == 2) - user << "You can't send PDA messages because you are dead!" + if(user.stat == 2) //won't work if dead return if(src.aiPDA.toff) @@ -1125,8 +1124,7 @@ var/global/list/obj/item/device/pda/PDAs = list() /mob/living/silicon/ai/verb/cmd_toggle_pda_receiver() set category = "AI Commands" set name = "PDA - Toggle Sender/Receiver" - if(usr.stat == 2) - usr << "You can't do that because you are dead!" + if(usr.stat == 2) //won't work if dead return if(!isnull(aiPDA)) aiPDA.toff = !aiPDA.toff @@ -1137,8 +1135,7 @@ var/global/list/obj/item/device/pda/PDAs = list() /mob/living/silicon/ai/verb/cmd_toggle_pda_silent() set category = "AI Commands" set name = "PDA - Toggle Ringer" - if(usr.stat == 2) - usr << "You can't do that because you are dead!" + if(usr.stat == 2) //won't work if dead return if(!isnull(aiPDA)) //0 @@ -1150,8 +1147,7 @@ var/global/list/obj/item/device/pda/PDAs = list() /mob/living/silicon/ai/verb/cmd_use_chatroom() set category = "AI Commands" set name = "PDA - Chatrooms" - if(usr.stat == 2) - usr << "You can't do that because you are dead!" + if(usr.stat == 2) //won't work if dead return if(!isnull(aiPDA)) aiPDA.mode = 5 @@ -1160,8 +1156,7 @@ var/global/list/obj/item/device/pda/PDAs = list() usr << "You do not have a PDA. You should make an issue report about this." /mob/living/silicon/ai/proc/cmd_show_message_log(mob/user) - if(user.stat == 2) - user << "You can't do that because you are dead!" + if(user.stat == 2) //won't work if dead return if(!isnull(aiPDA)) var/HTML = "AI PDA Message Log[aiPDA.tnote]" diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 0bc233bc351..be735a48b08 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -300,8 +300,7 @@ var/list/ai_list = list() onclose(src, "airoster") /mob/living/silicon/ai/proc/ai_call_shuttle() - if(src.stat == DEAD) - src << "You can't call the shuttle because you are dead!" + if(stat == 2) //won't work if dead return if(istype(usr,/mob/living/silicon/ai)) var/mob/living/silicon/ai/AI = src @@ -330,6 +329,8 @@ var/list/ai_list = list() set name = "Toggle Floor Bolts" if(!isturf(loc)) // if their location isn't a turf return // stop + if(stat == 2) //won't work if dead + return anchored = !anchored // Toggles the anchor src << "[anchored ? "You are now anchored." : "You are now unanchored."]" @@ -340,8 +341,7 @@ var/list/ai_list = list() /mob/living/silicon/ai/proc/ai_cancel_call() set category = "Malfunction" - if(src.stat == 2) - src << "You can't send the shuttle back because you are dead!" + if(stat == 2) //won't work if dead return if(istype(usr,/mob/living/silicon/ai)) var/mob/living/silicon/ai/AI = src @@ -506,8 +506,7 @@ var/list/ai_list = list() set category = "AI Commands" set name = "Access Robot Control" set desc = "Wirelessly control various automatic robots." - if(stat == 2) - src << "Critical error. System offline." + if(stat == 2) //won't work if dead return if(control_disabled) @@ -623,8 +622,7 @@ var/list/ai_list = list() cameraFollow = null var/cameralist[0] - if(usr.stat == 2) - usr << "You can't change your camera network because you are dead!" + if(stat == 2) //won't work if dead return var/mob/living/silicon/ai/U = usr @@ -668,8 +666,7 @@ var/list/ai_list = list() set category = "AI Commands" set name = "AI Status" - if(usr.stat == 2) - usr <<"You cannot change your emotional status because you are dead!" + if(stat == 2) //won't work if dead return var/list/ai_emotions = list("Very Happy", "Happy", "Neutral", "Unsure", "Confused", "Sad", "BSOD", "Blank", "Problems?", "Awesome", "Facepalm", "Friend Computer", "Dorfy", "Blue Glow", "Red Glow") var/emote = input("Please, select a status!", "AI Status", null, null) in ai_emotions @@ -693,6 +690,8 @@ var/list/ai_list = list() set desc = "Change the default hologram available to AI to something else." set category = "AI Commands" + if(stat == 2) //won't work if dead + return var/input if(alert("Would you like to select a hologram based on a crew member or switch to unique avatar?",,"Crew Member","Unique")=="Crew Member") @@ -788,6 +787,8 @@ var/list/ai_list = list() set desc = "Allows you to change settings of your radio." set category = "AI Commands" + if(stat == 2) //won't work if dead + return src << "Accessing Subspace Transceiver control..." if (radio) radio.interact(src) @@ -801,6 +802,8 @@ var/list/ai_list = list() set desc = "Modify the default radio setting for your automatic announcements." set category = "AI Commands" + if(stat == 2) //won't work if dead + return set_autosay() /mob/living/silicon/ai/attack_slime(mob/living/simple_animal/slime/user) diff --git a/code/modules/mob/living/silicon/ai/death.dm b/code/modules/mob/living/silicon/ai/death.dm index 25b8bd2b310..2bdbcd8c805 100644 --- a/code/modules/mob/living/silicon/ai/death.dm +++ b/code/modules/mob/living/silicon/ai/death.dm @@ -8,6 +8,7 @@ else icon_state = "ai_dead" + anchored = 0 //unbolt floorbolts update_canmove() if(src.eyeobj) src.eyeobj.setLoc(get_turf(src)) diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index 30918bbcec3..3dbce30f749 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -100,5 +100,7 @@ set category = "AI Commands" set name = "Toggle Camera Acceleration" + if(usr.stat == 2) //won't work if dead + return acceleration = !acceleration usr << "Camera acceleration has been toggled [acceleration ? "on" : "off"]." diff --git a/code/modules/mob/living/silicon/ai/laws.dm b/code/modules/mob/living/silicon/ai/laws.dm index 8371f6e3021..c4d87cf87c1 100644 --- a/code/modules/mob/living/silicon/ai/laws.dm +++ b/code/modules/mob/living/silicon/ai/laws.dm @@ -2,6 +2,8 @@ /mob/living/silicon/ai/proc/show_laws_verb() set category = "AI Commands" set name = "Show Laws" + if(usr.stat == 2) //won't work if dead + return src.show_laws() /mob/living/silicon/ai/show_laws(everyone = 0) diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm index 86158b3c4f0..053d235fb4d 100644 --- a/code/modules/mob/living/silicon/ai/say.dm +++ b/code/modules/mob/living/silicon/ai/say.dm @@ -69,6 +69,8 @@ var/const/VOX_DELAY = 600 set desc = "Display a list of vocal words to announce to the crew." set category = "AI Commands" + if(usr.stat == 2) //won't work if dead + return var/dat = "Here is a list of words you can type into the 'Announcement' button to create sentences to vocally announce to everyone on the same level at you.
\