diff --git a/code/defines/obj.dm b/code/defines/obj.dm index a5a0d6ec33..6cde7921d7 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -248,6 +248,33 @@ opacity = 0 density = 0 +/obj/effect/sign/science//These 3 have multiple types, just var-edit the icon_state to whatever one you want on the map + desc = "A warning sign which reads 'SCIENCE!'" + name = "SCIENCE!" + icon = 'decals.dmi' + icon_state = "science1" + anchored = 1.0 + opacity = 0 + density = 0 + +/obj/effect/sign/chemistry + desc = "A warning sign which reads 'CHEMISTY'" + name = "CHEMISTRY" + icon = 'decals.dmi' + icon_state = "chemistry1" + anchored = 1.0 + opacity = 0 + density = 0 + +/obj/effect/sign/botany + desc = "A warning sign which reads 'HYDROPONICS'" + name = "HYDROPONICS" + icon = 'decals.dmi' + icon_state = "hydro1" + anchored = 1.0 + opacity = 0 + density = 0 + /obj/hud name = "hud" unacidable = 1 @@ -1089,6 +1116,46 @@ opacity = 1 anchored = 1 +/obj/structure/falsewall/gold + name = "gold wall" + desc = "A wall with gold plating. Swag" + icon_state = "" + +/obj/structure/falsewall/silver + name = "silver wall" + desc = "A wall with silver plating. Shiny" + icon_state = "" + +/obj/structure/falsewall/diamond + name = "diamond wall" + desc = "A wall with diamond plating. You monster" + icon_state = "" + +/obj/structure/falsewall/uranium + name = "uranium wall" + desc = "A wall with uranium plating. This is probably a bad idea" + icon_state = "" + +/obj/structure/falsewall/plasma + name = "plasma wall" + desc = "A wall with plasma plating. This is definately a bad idea" + icon_state = "" + +/obj/structure/falsewall/bananium + name = "bananium wall" + desc = "A wall with bananium plating. Honk" + icon_state = "" + +/obj/structure/falsewall/sand + name = "sandstone wall" + desc = "A wall with sandstone plating." + icon_state = "" + +/*/obj/structure/falsewall/wood + name = "wooden wall" + desc = "A wall with classy wooden paneling." + icon_state = ""*/ + /obj/structure/falserwall name = "r wall" desc = "A huge chunk of reinforced metal used to seperate rooms." diff --git a/code/defines/obj/clothing/costume.dm b/code/defines/obj/clothing/costume.dm index 7e1d98fefc..7e50baa5ff 100644 --- a/code/defines/obj/clothing/costume.dm +++ b/code/defines/obj/clothing/costume.dm @@ -128,9 +128,15 @@ new /obj/item/clothing/mask/spiderman(src.loc) del(src)*/ +/* /obj/effect/landmark/costume/marisawizard/New() new /obj/item/clothing/head/wizard/marisa(src.loc) new/obj/item/clothing/suit/wizrobe/marisa(src.loc) + del(src)*/ + +/obj/effect/landmark/costume/marisawizard/fake/New() + new /obj/item/clothing/head/wizard/marisa/fake(src.loc) + new/obj/item/clothing/suit/wizrobe/marisa/fake(src.loc) del(src) /obj/effect/landmark/costume/fakewizard/New() diff --git a/code/defines/obj/clothing/gloves.dm b/code/defines/obj/clothing/gloves.dm index f8c28d7e0a..0e62744ff1 100644 --- a/code/defines/obj/clothing/gloves.dm +++ b/code/defines/obj/clothing/gloves.dm @@ -148,7 +148,7 @@ color="yellow" New() - siemens_coefficient = pick(0,0,0.25,0.25,0.5,0.5,1) + siemens_coefficient = pick(0,0,0.25,0.5,0.5,0.75,1.5) heat_transfer_coefficient = pick(0.01,0.1,0.25,0.25,0.5) /obj/item/clothing/gloves/captain diff --git a/code/defines/obj/vending.dm b/code/defines/obj/vending.dm index 9978934ad2..cb9a64970e 100644 --- a/code/defines/obj/vending.dm +++ b/code/defines/obj/vending.dm @@ -143,7 +143,7 @@ product_amounts = "4;4;4;4;4;12;5;4;2" product_hidden = "/obj/item/weapon/reagent_containers/pill/tox;/obj/item/weapon/reagent_containers/pill/stox;/obj/item/weapon/reagent_containers/pill/antitox" product_hideamt = "3;4;6" - product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?" + product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?;Ping!" /obj/machinery/vending/wallmed1 name = "NanoMed" @@ -243,7 +243,7 @@ product_hideamt = "20" product_ads = "For Tsar and Country.;Have you fulfilled your nutrition quota today?;Very nice!;We are simple people, for this is all we eat.;If there is a person, there is a problem. If there is no person, then there is no problem." -/obj/machinery/vending/tool +/obj/machinery/vending/tool//Who did this and why is it here? I don't even name = "YouTool" desc = "Tools for tools." icon_state = "tool" @@ -255,3 +255,17 @@ product_hideamt = "2;2" product_coin = "/obj/item/clothing/gloves/yellow" product_coin_amt = "1" + +/obj/machinery/vending/engivend//Source of tools and what have you for Engineering (Needed on account of the public auto-lathe being removed) -Sieve + name = "Engi-Vend" + desc = "Spare tool vending. What? Did you expect some witty description?" + icon_state = "engivend" + icon_deny = "engivend-deny" + req_access_txt = "10" //Engineering access + product_paths = "/obj/item/weapon/cable_coil/random;/obj/item/weapon/crowbar;/obj/item/weapon/weldingtool/largetank;/obj/item/weapon/wirecutters;/obj/item/weapon/wrench;/obj/item/device/t_scanner;/obj/item/device/multitool;/obj/item/weapon/airlock_electronics;/obj/item/weapon/module/power_control" + product_amounts = "10;5;3;5;5;5;3;5;5" + product_hidden = "/obj/item/weapon/weldingtool/hugetank;/obj/item/clothing/gloves/fyellow" + product_hideamt = "2;2" + product_coin = "/obj/item/weapon/storage/belt/utility" + product_coin_amt = "3" + diff --git a/code/defines/turf.dm b/code/defines/turf.dm index 7e8eca55ad..1c838cb83f 100644 --- a/code/defines/turf.dm +++ b/code/defines/turf.dm @@ -159,6 +159,7 @@ name = "wall" desc = "A huge chunk of metal used to seperate rooms." icon = 'walls.dmi' + var/mineral = "metal" opacity = 1 density = 1 blocks_air = 1 @@ -168,6 +169,80 @@ var/walltype = "wall" +/turf/simulated/wall/mineral + name = "mineral wall" + desc = "This shouldn't exist" + icon_state = "" + var/last_event = 0 + var/active = null + +/turf/simulated/wall/mineral/New() + switch(mineral) + if("gold") + name = "gold wall" + desc = "A wall with gold plating. Swag!" + icon_state = "gold0" + walltype = "gold" +// var/electro = 1 +// var/shocked = null + if("silver") + name = "silver wall" + desc = "A wall with silver plating. Shiny!" + icon_state = "silver0" + walltype = "silver" +// var/electro = 0.75 +// var/shocked = null + if("diamond") + name = "diamond wall" + desc = "A wall with diamond plating. You monster." + icon_state = "diamond0" + walltype = "diamond" + if("uranium") + name = "uranium wall" + desc = "A wall with uranium plating. This is probably a bad idea." + icon_state = "uranium0" + walltype = "uranium" + if("plasma") + name = "plasma wall" + desc = "A wall with plasma plating. This is definately a bad idea." + icon_state = "plasma0" + walltype = "plasma" + if("clown") + name = "bananium wall" + desc = "A wall with bananium plating. Honk!" + icon_state = "clown0" + walltype = "clown" + if("sandstone") + name = "sandstone wall" + desc = "A wall with sandstone plating." + icon_state = "sandstone0" + walltype = "sandstone" + ..() + +/turf/simulated/wall/mineral/proc/radiate() + if(!active) + if(world.time > last_event+15) + active = 1 + for(var/mob/living/L in range(3,src)) + L.apply_effect(12,IRRADIATE,0) + for(var/turf/simulated/wall/mineral/T in range(3,src)) + if(T.mineral == "uranium") + T.radiate() + last_event = world.time + active = null + return + return + +/*/turf/simulated/wall/mineral/proc/shock() + if (electrocute_mob(user, C, src)) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(5, 1, src) + s.start() + return 1 + else + return 0 + */ + /turf/simulated/wall/cult name = "wall" desc = "The patterns engraved on the wall seem to shift as you try to focus on them. You feel sick" @@ -241,7 +316,7 @@ return L - +/* /turf/simulated/wall/mineral icon = 'mineral_walls.dmi' walltype = "iron" @@ -342,3 +417,4 @@ hardness -= toxinsToDeduce/100 CheckHardness() +*/ diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index 4709a41830..44845b684e 100644 --- a/code/game/gamemodes/events.dm +++ b/code/game/gamemodes/events.dm @@ -276,18 +276,19 @@ command_alert("High levels of radiation detected near the station. Please report to the Med-bay if you feel strange.", "Anomaly Alert") world << sound('radiation.ogg') for(var/mob/living/carbon/human/H in world) - H.radiation += rand(5,25) - if (prob(5)) - H.radiation += rand(30,50) - if (prob(25)) - if (prob(75)) - randmutb(H) - domutcheck(H,null,1) - else - randmutg(H) - domutcheck(H,null,1) + if(istype(H,/mob/living/carbon/human)) + H.apply_effect((rand(15,75)),IRRADIATE,0) + if (prob(5)) + H.apply_effect((rand(90,150)),IRRADIATE,0) + if (prob(25)) + if (prob(75)) + randmutb(H) + domutcheck(H,null,1) + else + randmutg(H) + domutcheck(H,null,1) for(var/mob/living/carbon/monkey/M in world) - M.radiation += rand(5,25) + M.apply_effect((rand(15,75)),IRRADIATE,0) //Changing this to affect the main station. Blame Urist. --Pete /proc/prison_break() // -- Callagan diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm index 2c436eda99..7ce256f6fb 100644 --- a/code/game/machinery/bots/ed209bot.dm +++ b/code/game/machinery/bots/ed209bot.dm @@ -15,6 +15,8 @@ var/lastfired = 0 var/shot_delay = 3 //.3 seconds between shots + var/lasercolor = "" + var/disabled = 0 //var/lasers = 0 @@ -68,11 +70,12 @@ item_state = "ed209_frame" var/build_step = 0 var/created_name = "ED-209 Security Robot" //To preserve the name if it's a unique securitron I guess + var/lasercolor = "" /obj/machinery/bot/ed209/New() ..() - src.icon_state = "ed209[src.on]" + src.icon_state = "[lasercolor]ed209[src.on]" spawn(3) src.botcard = new /obj/item/weapon/card/id(src) src.botcard.access = get_access("Detective") @@ -82,10 +85,17 @@ if(radio_controller) radio_controller.add_object(src, control_freq, filter = RADIO_SECBOT) radio_controller.add_object(src, beacon_freq, filter = RADIO_NAVBEACONS) + if(lasercolor) + req_access = list(access_maint_tunnels,access_clown,access_mime) + arrest_type = 1 + if(lasercolor == "b") + name = pick("BLUE BALLER","SANIC","BLUE KILLDEATH MURDERBOT") + if(lasercolor == "r") + name = pick("RED RAMPAGE","RED ROVER","RED KILLDEATH MURDERBOT") /obj/machinery/bot/ed209/turn_on() . = ..() - src.icon_state = "ed209[src.on]" + src.icon_state = "[lasercolor]ed209[src.on]" src.mode = SECBOT_IDLE src.updateUsrDialog() @@ -96,7 +106,7 @@ src.anchored = 0 src.mode = SECBOT_IDLE walk_to(src,0) - src.icon_state = "ed209[src.on]" + src.icon_state = "[lasercolor]ed209[src.on]" src.updateUsrDialog() /obj/machinery/bot/ed209/attack_hand(mob/user as mob) @@ -181,7 +191,7 @@ Auto Patrol: []"}, src.anchored = 0 src.emagged = 1 src.on = 1 - src.icon_state = "ed209[src.on]" + src.icon_state = "[lasercolor]ed209[src.on]" mode = SECBOT_IDLE /obj/machinery/bot/ed209/process() @@ -210,7 +220,7 @@ Auto Patrol: []"}, if (targets.len>0) var/mob/t = pick(targets) if (istype(t, /mob/living)) - if (t.stat!=2) + if ((t.stat!=2) && (t.lying != 1)) //src.speak("selected target: " + t.real_name) src.shootAt(t) switch(mode) @@ -222,7 +232,8 @@ Auto Patrol: []"}, mode = SECBOT_START_PATROL // switch to patrol mode if(SECBOT_HUNT) // hunting for perp - + if(src.lasercolor)//Lasertag bots do not tase or arrest anyone, just patrol and shoot and whatnot + return // if can't reach perp for long enough, go idle if (src.frustration >= 8) // for(var/mob/O in hearers(src, null)) @@ -236,9 +247,9 @@ Auto Patrol: []"}, if (target) // make sure target exists if (get_dist(src, src.target) <= 1) // if right next to perp playsound(src.loc, 'Egloves.ogg', 50, 1, -1) - src.icon_state = "ed209-c" + src.icon_state = "[lasercolor]ed209-c" spawn(2) - src.icon_state = "ed209[src.on]" + src.icon_state = "[lasercolor]ed209[src.on]" var/mob/living/carbon/M = src.target var/maxstuns = 4 if (istype(M, /mob/living/carbon/human)) @@ -270,6 +281,8 @@ Auto Patrol: []"}, src.frustration = 0 if(SECBOT_PREP_ARREST) // preparing to arrest target + if(src.lasercolor) + return if (!target) mode = SECBOT_IDLE src.anchored = 0 @@ -305,6 +318,8 @@ Auto Patrol: []"}, // src.speak(arrest_message) if(SECBOT_ARREST) // arresting + if(src.lasercolor) + return if (!target || src.target.handcuffed) src.anchored = 0 mode = SECBOT_IDLE @@ -640,6 +655,22 @@ Auto Patrol: []"}, if((istype(perp:wear_id, /obj/item/weapon/card/id/syndicate)) && src.idcheck) threatcount -= 2 + if(src.lasercolor == "b")//Lasertag turrets target the opposing team, how great is that? -Sieve + if(istype(perp.wear_suit, /obj/item/clothing/suit/redtag)) + threatcount += 4 + if((istype(perp:r_hand,/obj/item/weapon/gun/energy/laser/redtag)) || (istype(perp:l_hand,/obj/item/weapon/gun/energy/laser/redtag))) + threatcount += 4 + if(istype(perp:belt, /obj/item/weapon/gun/energy/laser/redtag)) + threatcount += 2 + + if(src.lasercolor == "r") + if(istype(perp.wear_suit, /obj/item/clothing/suit/bluetag)) + threatcount += 4 + if((istype(perp:r_hand,/obj/item/weapon/gun/energy/laser/bluetag)) || (istype(perp:l_hand,/obj/item/weapon/gun/energy/laser/bluetag))) + threatcount += 4 + if(istype(perp:belt, /obj/item/weapon/gun/energy/laser/bluetag)) + threatcount += 2 + if (src.check_records) for (var/datum/data/record/E in data_core.general) var/perpname = perp.name @@ -697,8 +728,15 @@ Auto Patrol: []"}, Sa.created_name = src.name new /obj/item/device/assembly/prox_sensor(Tsec) - var/obj/item/weapon/melee/baton/B = new /obj/item/weapon/melee/baton(Tsec) - B.charges = 0 + if(!lasercolor) + var/obj/item/weapon/gun/energy/taser/G = new /obj/item/weapon/gun/energy/taser(Tsec) + G.power_supply.charge = 0 + else if(lasercolor == "b") + var/obj/item/weapon/gun/energy/laser/bluetag/G = new /obj/item/weapon/gun/energy/laser/bluetag(Tsec) + G.power_supply.charge = 0 + else if(lasercolor == "r") + var/obj/item/weapon/gun/energy/laser/redtag/G = new /obj/item/weapon/gun/energy/laser/redtag(Tsec) + G.power_supply.charge = 0 if (prob(50)) new /obj/item/robot_parts/l_arm(Tsec) @@ -728,10 +766,21 @@ Auto Patrol: []"}, // playsound(src.loc, 'ed209_shoot.ogg', 50, 0) var/obj/item/projectile/A - if (src.emagged) - A = new /obj/item/projectile/beam( loc ) - else - A = new /obj/item/projectile/energy/electrode( loc ) + if(!lasercolor) + if (src.emagged) + A = new /obj/item/projectile/beam( loc ) + else + A = new /obj/item/projectile/energy/electrode( loc ) + else if(lasercolor == "b") + if (src.emagged) + A = new /obj/item/projectile/energy/electrode( loc ) + else + A = new /obj/item/projectile/bluetag( loc ) + else if(lasercolor == "r") + if (src.emagged) + A = new /obj/item/projectile/energy/electrode( loc ) + else + A = new /obj/item/projectile/redtag( loc ) if (!( istype(U, /turf) )) //A = null @@ -813,9 +862,25 @@ Auto Patrol: []"}, src.item_state = "ed209_shell" src.icon_state = "ed209_shell" del(W) - else if((istype(W, /obj/item/weapon/weldingtool)) && (src.build_step == 3)) + else if(istype(W, /obj/item/clothing/suit/bluetag) && (src.build_step == 2)) + src.build_step++ + user << "You add the armor to [src]!" + src.name = "vest/legs/frame assembly" + lasercolor = "b" + src.item_state = "[lasercolor]ed209_shell" + src.icon_state = "[lasercolor]ed209_shell" + del(W) + else if(istype(W, /obj/item/clothing/suit/redtag) && (src.build_step == 2)) + src.build_step++ + user << "You add the armor to [src]!" + src.name = "vest/legs/frame assembly" + lasercolor = "r" + src.item_state = "[lasercolor]ed209_shell" + src.icon_state = "[lasercolor]ed209_shell" + del(W) + else if(istype(W, /obj/item/weapon/weldingtool) && src.build_step == 3) var/obj/item/weapon/weldingtool/WT = W - if (WT.remove_fuel(0,user)) + if(WT.remove_fuel(0,user)) src.build_step++ src.name = "shielded frame assembly" user << "You welded the vest to [src]!" @@ -823,15 +888,15 @@ Auto Patrol: []"}, src.build_step++ user << "You add the helmet to [src]!" src.name = "covered and shielded frame assembly" - src.item_state = "ed209_hat" - src.icon_state = "ed209_hat" + src.item_state = "[lasercolor]ed209_hat" + src.icon_state = "[lasercolor]ed209_hat" del(W) else if(isprox(W) && (src.build_step == 5)) src.build_step++ user << "You add the prox sensor to [src]!" src.name = "prox/covered and armed the frame assembly" - src.item_state = "ed209_prox" - src.icon_state = "ed209_prox" + src.item_state = "[lasercolor]ed209_prox" + src.icon_state = "[lasercolor]ed209_prox" del(W) else if(istype(W, /obj/item/weapon/cable_coil) && (src.build_step == 6) ) var/obj/item/weapon/cable_coil/coil = W @@ -843,12 +908,26 @@ Auto Patrol: []"}, src.build_step++ user << "\blue You wire the ED-209 assembly!" src.name = "Wired ED-209 Assembly" - else if(istype(W, /obj/item/weapon/gun/energy/taser) && (src.build_step == 7)) + else if(istype(W, /obj/item/weapon/gun/energy/taser) && (src.build_step == 7) && (!lasercolor)) src.build_step++ user << "You add the taser gun to [src]!" src.name = "Taser/Wired ED-209 Assembly" - src.item_state = "ed209_taser" - src.icon_state = "ed209_taser" + src.item_state = "[lasercolor]ed209_taser" + src.icon_state = "[lasercolor]ed209_taser" + del(W) + else if(istype(W, /obj/item/weapon/gun/energy/laser/bluetag) && (src.build_step == 7) && (lasercolor == "b")) + src.build_step++ + user << "You add the lasertag gun to [src]!" + src.name = "Bluetag ED-209 Assembly" + src.item_state = "[lasercolor]ed209_taser" + src.icon_state = "[lasercolor]ed209_taser" + del(W) + else if(istype(W, /obj/item/weapon/gun/energy/laser/redtag) && (src.build_step == 7) && (lasercolor == "r")) + src.build_step++ + user << "You add the lasertag gun to [src]!" + src.name = "Redtag ED-209 Assembly" + src.item_state = "[lasercolor]ed209_taser" + src.icon_state = "[lasercolor]ed209_taser" del(W) else if(istype(W, /obj/item/weapon/screwdriver) && (src.build_step == 8) ) playsound(src.loc, 'Screwdriver.ogg', 100, 1) @@ -865,6 +944,8 @@ Auto Patrol: []"}, var/obj/machinery/bot/ed209/S = new /obj/machinery/bot/ed209 S.loc = get_turf(src) S.name = src.created_name + S.lasercolor = src.lasercolor + S.New() del(W) del(src) @@ -878,3 +959,15 @@ Auto Patrol: []"}, src.created_name = t +/obj/machinery/bot/ed209/bullet_act(var/obj/item/projectile/Proj) + if((src.lasercolor == "b") && (src.disabled == 0)) + if(istype(Proj, /obj/item/projectile/redtag)) + src.disabled = 1 + sleep(100) + src.disabled = 0 + if((src.lasercolor == "r") && (src.disabled == 0)) + if(istype(Proj, /obj/item/projectile/bluetag)) + src.disabled = 1 + sleep(100) + src.disabled = 0 + ..() diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index a69794c7b7..4a79147d8d 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -222,6 +222,94 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }. doortype = 23 glass = 1 +/obj/machinery/door/airlock/gold + name = "Gold Airlock" + icon = 'Doorgold.dmi' + var/mineral = "gold" + doortype = 24 + +/obj/machinery/door/airlock/silver + name = "Silver Airlock" + icon = 'Doorsilver.dmi' + var/mineral = "silver" + doortype = 25 + +/obj/machinery/door/airlock/diamond + name = "Diamond Airlock" + icon = 'Doordiamond.dmi' + var/mineral = "diamond" + doortype = 26 + +/obj/machinery/door/airlock/uranium + name = "Uranium Airlock" + desc = "And they said I was crazy." + icon = 'Dooruranium.dmi' + var/mineral = "uranium" + doortype = 27 + 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.apply_effect(15,IRRADIATE,0) + return + +/obj/machinery/door/airlock/plasma + name = "Plasma Airlock" + desc = "No way this can end badly." + icon = 'Doorplasma.dmi' + var/mineral = "plasma" + doortype = 28 + +/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) + for(var/turf/simulated/floor/target_tile in range(2,loc)) + if(target_tile.parent && target_tile.parent.group_processing) + target_tile.parent.suspend_group_processing() + var/datum/gas_mixture/napalm = new + var/toxinsToDeduce = 35 + napalm.toxins = toxinsToDeduce + napalm.temperature = 400+T0C + target_tile.assume_air(napalm) + spawn (0) target_tile.hotspot_expose(temperature, 400) + new/obj/structure/door_assembly/door_assembly_0( src.loc ) + for(var/obj/structure/falsewall/plasma/F in range(3,src))//Hackish as fuck, but until temperature_expose works, there is nothing I can do -Sieve + var/turf/T = get_turf(F) + T.ReplaceWithMineralWall("plasma") + del (F) + for(var/turf/simulated/wall/mineral/W in range(3,src)) + if(mineral == "plasma") + W.ignite((temperature/4))//Added so that you can't set off a massive chain reaction with a small flame + for(var/obj/machinery/door/airlock/plasma/D in range(3,src)) + D.ignite(temperature/4) + del (src) + +/obj/machinery/door/airlock/clown + name = "Bananium Airlock" + desc = "Honkhonkhonk" + icon = 'Doorbananium.dmi' + var/mineral = "clown" + doortype = 29 + +/obj/machinery/door/airlock/sandstone + name = "Sandstone Airlock" + icon = 'Doorsand.dmi' + var/mineral = "sandstone" + doortype = 30 + /* 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. @@ -1031,9 +1119,9 @@ About the new airlock wires panel: if(4) new/obj/structure/door_assembly/door_assembly_med( src.loc ) if(5) new/obj/structure/door_assembly/door_assembly_mai( src.loc ) if(6) new/obj/structure/door_assembly/door_assembly_ext( src.loc ) - if(7) new/obj/structure/door_assembly/door_assembly_g( src.loc ) + if(7) new/obj/structure/door_assembly/door_assembly_glass( src.loc ) if(14) new/obj/structure/door_assembly/door_assembly_com/glass( src.loc ) - if(15) new/obj/structure/door_assembly/door_assembly_eng/glass( src.loc ) //issue 301 -mysthic + if(15) new/obj/structure/door_assembly/door_assembly_eng/glass( src.loc ) if(16) new/obj/structure/door_assembly/door_assembly_sec/glass( src.loc ) if(17) new/obj/structure/door_assembly/door_assembly_med/glass( src.loc ) if(18) new/obj/structure/door_assembly/door_assembly_min( src.loc ) @@ -1042,6 +1130,14 @@ About the new airlock wires panel: if(21) new/obj/structure/door_assembly/door_assembly_research/glass( src.loc ) if(22) new/obj/structure/door_assembly/door_assembly_min/glass( src.loc ) if(23) new/obj/structure/door_assembly/door_assembly_atmo/glass( src.loc ) + if(24) new/obj/structure/door_assembly/door_assembly_gold( src.loc ) + if(25) new/obj/structure/door_assembly/door_assembly_silver( src.loc ) + if(26) new/obj/structure/door_assembly/door_assembly_diamond( src.loc ) + if(27) new/obj/structure/door_assembly/door_assembly_uranium( src.loc ) + if(28) new/obj/structure/door_assembly/door_assembly_plasma( src.loc ) + if(29) new/obj/structure/door_assembly/door_assembly_clown( src.loc ) + if(30) new/obj/structure/door_assembly/door_assembly_sandstone( src.loc ) + var/obj/item/weapon/airlock_electronics/ae if(!electronics) ae = new/obj/item/weapon/airlock_electronics( src.loc ) @@ -1131,12 +1227,19 @@ About the new airlock wires panel: ..() return +/obj/machinery/door/airlock/plasma/attackby(C as obj, mob/user as mob) + if(C) + ignite(is_hot(C)) + ..() + /obj/machinery/door/airlock/open() if(src.welded || src.locked || (!src.arePowerSystemsOn()) || (stat & NOPOWER) || src.isWireCut(AIRLOCK_WIRE_OPEN_DOOR) || src.operating) return 0 use_power(50) if(istype(src, /obj/machinery/door/airlock/glass)) playsound(src.loc, 'windowdoor.ogg', 100, 1) + if(istype(src, /obj/machinery/door/airlock/clown)) + playsound(src.loc, 'bikehorn.ogg', 30, 1) else playsound(src.loc, 'airlock.ogg', 30, 1) if(src.closeOther != null && istype(src.closeOther, /obj/machinery/door/airlock/) && !src.closeOther.density) @@ -1174,6 +1277,8 @@ About the new airlock wires panel: use_power(50) if(istype(src, /obj/machinery/door/airlock/glass)) playsound(src.loc, 'windowdoor.ogg', 30, 1) + if(istype(src, /obj/machinery/door/airlock/clown)) + playsound(src.loc, 'bikehorn.ogg', 30, 1) else playsound(src.loc, 'airlock.ogg', 30, 1) var/obj/structure/window/killthis = (locate(/obj/structure/window) in get_turf(src)) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 85430410e1..068dfebfd1 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -202,6 +202,7 @@ if(!operating) operating = 1 animate("opening") + icon_state = "door0" src.sd_SetOpacity(0) sleep(10) src.layer = 2.7 diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 977a179f34..763bcd7694 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -23,6 +23,7 @@ req_access = list(access_security) power_channel = EQUIP // drains power from the EQUIPMENT channel + var/lasercolor = "" var/raised = 0 // if the turret cover is "open" and the turret is raised var/raising= 0 // if the turret is currently opening or closing its cover var/health = 80 // the turret's health @@ -30,6 +31,11 @@ var/installation // the type of weapon installed var/gun_charge = 0 // the charge of the gun inserted + var/projectile = null //holder for bullettype + var/reqpower = 0 //holder for power needed + var/sound = null//So the taser can have sound + var/iconholder = null//holder for the icon_state + var/egun = null//holder to handle certain guns switching bullettypes var/obj/machinery/porta_turret_cover/cover = null // the cover that is covering this turret var/last_fired = 0 // 1: if the turret is cooling down from a shot, 0: turret is ready to fire @@ -46,11 +52,13 @@ //var/emagged = 0 // 1: emagged, 0: not emagged var/on = 1 // determines if the turret is on + var/disabled = 0 var/datum/effect/effect/system/spark_spread/spark_system // the spark system, used for generating... sparks? New() ..() + icon_state = "[lasercolor]grey_target_prism" // Sets up a spark system spark_system = new /datum/effect/effect/system/spark_spread spark_system.set_up(5, 0, src) @@ -131,22 +139,22 @@ Neutralize All Unidentified Life Signs: []
"}, icon_state = "turretCover" return if(stat & BROKEN) - icon_state = "destroyed_target_prism" + icon_state = "[lasercolor]destroyed_target_prism" else if( powered() ) if (on) if (installation == /obj/item/weapon/gun/energy/laser || installation == /obj/item/weapon/gun/energy/pulse_rifle) // laser guns and pulse rifles have an orange icon - icon_state = "orange_target_prism" + icon_state = "[lasercolor]orange_target_prism" else // anything else has a blue icon - icon_state = "target_prism" + icon_state = "[lasercolor]target_prism" else - icon_state = "grey_target_prism" + icon_state = "[lasercolor]grey_target_prism" stat &= ~NOPOWER else spawn(rand(0, 15)) - src.icon_state = "grey_target_prism" + src.icon_state = "[lasercolor]grey_target_prism" stat |= NOPOWER @@ -165,6 +173,7 @@ Neutralize All Unidentified Life Signs: []
"}, var/obj/item/weapon/gun/energy/Gun = new installation(src.loc) Gun.power_supply.charge=gun_charge Gun.update_icon() + lasercolor = null if(prob(50)) new /obj/item/stack/sheet/metal( loc, rand(1,4)) if(prob(50)) new /obj/item/device/assembly/prox_sensor(locate(x,y,z)) else @@ -192,7 +201,7 @@ Neutralize All Unidentified Life Signs: []
"}, if(!anchored) anchored = 1 invisibility = 2 - icon_state = "grey_target_prism" + icon_state = "[lasercolor]grey_target_prism" user << "You secure the exterior bolts on the turret." cover=new/obj/machinery/porta_turret_cover(src.loc) // create a new turret. While this is handled in process(), this is to workaround a bug where the turret becomes invisible for a split second cover.Parent_Turret = src // make the cover's parent src @@ -239,6 +248,16 @@ Neutralize All Unidentified Life Signs: []
"}, if(prob(45) && Proj.damage > 0) src.spark_system.start() if (src.health <= 0) src.die() // the death process :( + if((src.lasercolor == "b") && (src.disabled == 0)) + if(istype(Proj, /obj/item/projectile/redtag)) + src.disabled = 1 + sleep(100) + src.disabled = 0 + if((src.lasercolor == "r") && (src.disabled == 0)) + if(istype(Proj, /obj/item/projectile/bluetag)) + src.disabled = 1 + sleep(100) + src.disabled = 0 return /obj/machinery/porta_turret/emp_act(severity) @@ -322,7 +341,11 @@ Neutralize All Unidentified Life Signs: []
"}, if(!istype(C, /mob/living/silicon) && ai) // If it's set to attack all nonsilicons, target them! if(C.lying) - secondarytargets += C + if(lasercolor) + continue + else + secondarytargets += C + continue else targets += C continue @@ -396,7 +419,7 @@ Neutralize All Unidentified Life Signs: []
"}, cover.icon_state="turretCover" raised=0 invisibility=2 - icon_state="grey_target_prism" + icon_state="[lasercolor]grey_target_prism" /obj/machinery/porta_turret/proc/assess_perp(mob/living/carbon/human/perp as mob) @@ -412,7 +435,7 @@ Neutralize All Unidentified Life Signs: []
"}, if(auth_weapons) // check for weapon authorization if((isnull(perp:wear_id)) || (istype(perp:wear_id, /obj/item/weapon/card/id/syndicate))) - if(src.allowed(perp)) // if the perp has security access, return 0 + if((src.allowed(perp)) && (!lasercolor)) // if the perp has security access, return 0 return 0 if((istype(perp.l_hand, /obj/item/weapon/gun) && !istype(perp.l_hand, /obj/item/weapon/gun/projectile/shotgun)) || istype(perp.l_hand, /obj/item/weapon/melee/baton)) @@ -424,6 +447,22 @@ Neutralize All Unidentified Life Signs: []
"}, if(istype(perp:belt, /obj/item/weapon/gun) || istype(perp:belt, /obj/item/weapon/melee/baton)) threatcount += 2 + if(src.lasercolor == "b")//Lasertag turrets target the opposing team, how great is that? -Sieve + if(istype(perp.wear_suit, /obj/item/clothing/suit/redtag)) + threatcount += 4 + if((istype(perp:r_hand,/obj/item/weapon/gun/energy/laser/redtag)) || (istype(perp:l_hand,/obj/item/weapon/gun/energy/laser/redtag))) + threatcount += 4 + if(istype(perp:belt, /obj/item/weapon/gun/energy/laser/redtag)) + threatcount += 2 + + if(src.lasercolor == "r") + if(istype(perp.wear_suit, /obj/item/clothing/suit/bluetag)) + threatcount += 4 + if((istype(perp:r_hand,/obj/item/weapon/gun/energy/laser/bluetag)) || (istype(perp:l_hand,/obj/item/weapon/gun/energy/laser/bluetag))) + threatcount += 4 + if(istype(perp:belt, /obj/item/weapon/gun/energy/laser/bluetag)) + threatcount += 2 + if (src.check_records) // if the turret can check the records, check if they are set to *Arrest* on records for (var/datum/data/record/E in data_core.general) var/perpname = perp.name @@ -451,6 +490,7 @@ Neutralize All Unidentified Life Signs: []
"}, /obj/machinery/porta_turret/proc/shootAt(var/atom/movable/target) // shoots at a target + if(!emagged) // if it hasn't been emagged, it has to obey a cooldown rate if(last_fired || !raised) return // prevents rapid-fire shooting, unless it's been emagged last_fired = 1 @@ -470,99 +510,108 @@ Neutralize All Unidentified Life Signs: []
"}, // any emagged turrets will shoot extremely fast! This not only is deadly, but drains a lot power! - var/obj/item/projectile/A - if(!installation) // if for some reason the turret has no gun (ie, admin spawned) it resorts to basic taser shots - A = new /obj/item/projectile/energy/electrode( loc ) - if(!emagged) use_power(200) - else use_power(400) - playsound(src.loc, 'Taser.ogg', 75, 1) - icon_state = "target_prism" + if(!projectile) + lasercolor = "" + req_access = list(access_security) + if(!installation)// if for some reason the turret has no gun (ie, admin spawned) it resorts to basic taser shots + projectile = /obj/item/projectile/energy/electrode + reqpower = 200 + sound = 1 + iconholder = 1 + else + var/obj/item/weapon/gun/energy/E=new installation + // All energy-based weapons are applicable + if(istype(E, /obj/item/weapon/gun/energy/laser/bluetag)) + projectile = /obj/item/projectile/bluetag + iconholder = null + reqpower = 100 + lasercolor = "b" + req_access = list(access_maint_tunnels,access_clown,access_mime) + + else if(istype(E, /obj/item/weapon/gun/energy/laser/redtag)) + projectile = /obj/item/projectile/redtag + iconholder = null + reqpower = 100 + lasercolor = "r" + req_access = list(access_maint_tunnels,access_clown,access_mime) + + else if(istype(E, /obj/item/weapon/gun/energy/pulse_rifle)) + projectile = /obj/item/projectile/beam/pulse + iconholder = null + reqpower = 700 + + else if(istype(E, /obj/item/weapon/gun/energy/staff)) + projectile = /obj/item/projectile/change + iconholder = 1 + reqpower = 700 + + else if(istype(E, /obj/item/weapon/gun/energy/ionrifle)) + projectile = /obj/item/projectile/ion + iconholder = 1 + reqpower = 700 + + else if(istype(E, /obj/item/weapon/gun/energy/taser) || istype(E, /obj/item/weapon/gun/energy/stunrevolver)) + projectile = /obj/item/projectile/energy/electrode + iconholder = 1 + reqpower = 200 + + else if(istype(E, /obj/item/weapon/gun/energy/lasercannon)) + projectile = /obj/item/projectile/beam/heavylaser + iconholder = null + reqpower = 600 + + else if(istype(E, /obj/item/weapon/gun/energy/decloner)) + projectile = /obj/item/projectile/energy/declone + iconholder = null + reqpower = 600 + + else if(istype(E, /obj/item/weapon/gun/energy/crossbow/largecrossbow)) + projectile = /obj/item/projectile/energy/bolt/large + iconholder = null + reqpower = 125 + + else if(istype(E, /obj/item/weapon/gun/energy/crossbow)) + projectile = /obj/item/projectile/energy/bolt + iconholder = null + reqpower = 50 + + else if(istype(E, /obj/item/weapon/gun/energy/laser)) + projectile = /obj/item/projectile/beam + iconholder = null + reqpower = 500 + + else // Energy gun shots + projectile = /obj/item/projectile/energy/electrode// if it hasn't been emagged, it uses normal taser shots + iconholder = 1 + egun = 1 + reqpower = 200 + + var/obj/item/projectile/A = projectile + var/obj/item/weapon/gun/energy/E=new installation + if(iconholder) + icon_state = "[lasercolor]target_prism" else + icon_state = "[lasercolor]orange_target_prism" + if(sound) + playsound(src.loc, 'Taser.ogg', 75, 1) + A = new projectile( loc ) + A.original = target.loc + if(!emagged) + use_power(reqpower) + else + use_power((reqpower*2)) + if(egun)// if it has been emagged, use laser shots + projectile = /obj/item/projectile/beam + iconholder = null + reqpower = 500 + // Shooting Code: - var/obj/item/weapon/gun/energy/E=new installation if(!E.silenced) playsound(src.loc, E.fire_sound, 75, 1) else playsound(src.loc, E.fire_sound, 10, 1) - // All energy-based weapons are applicable - if(istype(E, /obj/item/weapon/gun/energy/laser)) - A = new /obj/item/projectile/beam( loc ) - A.original = target.loc - icon_state = "orange_target_prism" - if(!emagged) use_power(500) - else use_power(1000) - - else if(istype(E, /obj/item/weapon/gun/energy/pulse_rifle)) - A = new /obj/item/projectile/beam/pulse( loc ) - A.original = target.loc - icon_state = "orange_target_prism" - if(!emagged) use_power(700) - else use_power(1400) - - else if(istype(E, /obj/item/weapon/gun/energy/staff)) - A = new /obj/item/projectile/change( loc ) - A.original = target.loc - icon_state = "target_prism" - if(!emagged) use_power(700) - else use_power(1400) - - else if(istype(E, /obj/item/weapon/gun/energy/ionrifle)) - A = new /obj/item/projectile/ion( loc ) - A.original = target.loc - icon_state = "target_prism" - if(!emagged) use_power(700) - else use_power(1400) - - - else if(istype(E, /obj/item/weapon/gun/energy/taser) || istype(E, /obj/item/weapon/gun/energy/stunrevolver)) - A = new /obj/item/projectile/energy/electrode( loc ) - icon_state = "target_prism" - if(!emagged) use_power(200) - else use_power(400) - - else if(istype(E, /obj/item/weapon/gun/energy/lasercannon)) - A = new /obj/item/projectile/beam/heavylaser( loc ) - A.original = target.loc - icon_state = "orange_target_prism" - if(!emagged) use_power(600) - else use_power(1200) - - else if(istype(E, /obj/item/weapon/gun/energy/decloner)) - A = new /obj/item/projectile/energy/declone( loc ) - A.original = target.loc - icon_state = "orange_target_prism" - if(!emagged) use_power(600) - else use_power(1200) - - else if(istype(E, /obj/item/weapon/gun/energy/crossbow)) - A = new /obj/item/projectile/energy/bolt( loc ) - A.original = target.loc - icon_state = "orange_target_prism" - if(!emagged) use_power(50) - else use_power(100) - - else if(istype(E, /obj/item/weapon/gun/energy/crossbow/largecrossbow)) - A = new /obj/item/projectile/energy/bolt/large( loc ) - A.original = target.loc - icon_state = "orange_target_prism" - if(!emagged) use_power(125) - else use_power(250) - - else // Energy gun shots - - if(!emagged) // if it hasn't been emagged, it uses normal taser shots - A = new /obj/item/projectile/energy/electrode( loc ) - icon_state = "target_prism" - use_power(200) - - else // if it has been emagged, use laser shots - A = new /obj/item/projectile/beam( loc ) - A.original = target.loc - icon_state = "orange_target_prism" - use_power(1000) - del(E) A.current = T A.yo = U.y - T.y diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index a30c3b370c..c2257aab2d 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -54,6 +54,8 @@ // 2 = cannons // 3 = pulse // 4 = change (HONK) + // 5 = bluetag + // 6 = redtag var/health = 80 var/obj/machinery/turretcover/cover = null var/popping = 0 @@ -210,6 +212,10 @@ A = new /obj/item/projectile/beam/pulse( loc ) if(4) A = new /obj/item/projectile/change( loc ) + if(5) + A = new /obj/item/projectile/bluetag( loc ) + if(6) + A = new /obj/item/projectile/redtag( loc ) A.original = target.loc use_power(500) else diff --git a/code/game/mecha/combat/gygax.dm b/code/game/mecha/combat/gygax.dm index 6c522151d6..8fc2f5bf4d 100644 --- a/code/game/mecha/combat/gygax.dm +++ b/code/game/mecha/combat/gygax.dm @@ -15,17 +15,40 @@ internal_damage_threshold = 35 max_equip = 3 +/obj/mecha/combat/gygax/dark + desc = "A lightweight exosuit used by Nanotrasen Death Squads. A significantly upgraded Gygax security mech." + name = "Dark Gygax" + icon_state = "darkgygax" + health = 400 + deflect_chance = 25 + damage_absorption = list("brute"=0.6,"fire"=0.8,"bullet"=0.6,"laser"=0.5,"energy"=0.65,"bomb"=0.8) + max_temperature = 4500 + overload_coeff = 1 + wreckage = /obj/effect/decal/mecha_wreckage/gygax/dark + max_equip = 4 + step_energy_drain = 5 - -/* -/obj/mecha/combat/gygax/New() +/obj/mecha/combat/gygax/dark/New() ..() - weapons += new /datum/mecha_weapon/taser(src) - weapons += new /datum/mecha_weapon/laser(src) - weapons += new /datum/mecha_weapon/missile_rack/flashbang(src) - selected_weapon = weapons[1] + var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/teleporter + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay + ME.attach(src) return -*/ + +/obj/mecha/combat/gygax/dark/add_cell(var/obj/item/weapon/cell/C=null) + if(C) + C.forceMove(src) + cell = C + return + cell = new(src) + cell.charge = 30000 + cell.maxcharge = 30000 + /obj/mecha/combat/gygax/verb/overload() set category = "Exosuit Interface" diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index 98bf3925b9..093528955d 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -916,7 +916,10 @@ process(var/obj/item/mecha_parts/mecha_equipment/generator/nuclear/EG) if(..()) for(var/mob/living/carbon/M in view(EG.chassis)) - M.radiation += EG.rad_per_cycle + if(istype(M,/mob/living/carbon/human)) + M.apply_effect((EG.rad_per_cycle*3),IRRADIATE,0) + else + M.radiation += EG.rad_per_cycle return 1 diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 1072a07cf5..c844128f4c 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -324,6 +324,9 @@ do_after_cooldown() return +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang//Because I am a heartless bastard -Sieve + name = "SOP-6 Grenade Launcher" + projectile = /obj/item/weapon/flashbang/clusterbang /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/banana_mortar name = "Banana Mortar" diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index ce6e3c2f5e..4d46c3b81a 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -34,6 +34,7 @@ var/list/queue = list() var/processing_queue = 0 var/screen = "main" + var/opened = 0 var/temp var/list/part_sets = list( //set names must be unique "Cyborg"=list( @@ -60,8 +61,7 @@ /obj/item/mecha_parts/part/odysseus_left_arm, /obj/item/mecha_parts/part/odysseus_right_arm, /obj/item/mecha_parts/part/odysseus_left_leg, - /obj/item/mecha_parts/part/odysseus_right_leg, - /obj/item/mecha_parts/part/odysseus_armour + /obj/item/mecha_parts/part/odysseus_right_leg ), "Gygax"=list( @@ -133,125 +133,148 @@ - New() - ..() - component_parts = list() - component_parts += new /obj/item/weapon/circuitboard/mechfab(src) - component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) - component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) - component_parts += new /obj/item/weapon/stock_parts/manipulator(src) - component_parts += new /obj/item/weapon/stock_parts/micro_laser(src) - component_parts += new /obj/item/weapon/stock_parts/console_screen(src) - RefreshParts() +/obj/machinery/mecha_part_fabricator/New() + ..() + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/mechfab(src) + component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) + component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) + component_parts += new /obj/item/weapon/stock_parts/manipulator(src) + component_parts += new /obj/item/weapon/stock_parts/micro_laser(src) + component_parts += new /obj/item/weapon/stock_parts/console_screen(src) + RefreshParts() // part_sets["Cyborg Upgrade Modules"] = typesof(/obj/item/borg/upgrade/) - /obj/item/borg/upgrade/ // Eh. This does it dymaically, but to support having the items referenced otherwhere in the code but not being constructable, going to do it manaully. - for(var/part_set in part_sets) - convert_part_set(part_set) - files = new /datum/research(src) //Setup the research data holder. - /* - if(!id) - for(var/obj/machinery/r_n_d/server/centcom/S in world) - S.initialize() - break - */ - return + for(var/part_set in part_sets) + convert_part_set(part_set) + files = new /datum/research(src) //Setup the research data holder. + /* + if(!id) + for(var/obj/machinery/r_n_d/server/centcom/S in world) + S.initialize() + break + */ + return - Del() - for(var/atom/A in src) - del A - ..() - return +/obj/machinery/mecha_part_fabricator/RefreshParts() + var/T = 0 + for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts) + T += M.rating + res_max_amount = (187500+(T * 37500)) + T = 0 + for(var/obj/item/weapon/stock_parts/micro_laser/Ma in component_parts) + T += Ma.rating + if(T >= 1) + T -= 1 + var/diff + diff = round(initial(resource_coeff) - (initial(resource_coeff)*(T))/25,0.01) + if(resource_coeff!=diff) + resource_coeff = diff + T = 0 + for(var/obj/item/weapon/stock_parts/manipulator/Ml in component_parts) + T += Ml.rating + if(T>= 2) + T -= 2 + diff = round(initial(time_coeff) - (initial(time_coeff)*(T))/25,0.01) + if(time_coeff!=diff) + time_coeff = diff - proc/operation_allowed(mob/M) - if(isrobot(M) || isAI(M)) - return 1 - if(!istype(req_access) || !req_access.len) - return 1 - else if(istype(M, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - for(var/ID in list(H.equipped(), H.wear_id, H.belt)) - if(src.check_access(ID)) - return 1 - M << "You don't have required permissions to use [src]" +/obj/machinery/mecha_part_fabricator/Del() + for(var/atom/A in src) + del A + ..() + return + +/obj/machinery/mecha_part_fabricator/proc/operation_allowed(mob/M) + if(isrobot(M) || isAI(M)) + return 1 + if(!istype(req_access) || !req_access.len) + return 1 + else if(istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + for(var/ID in list(H.equipped(), H.wear_id, H.belt)) + if(src.check_access(ID)) + return 1 + M << "You don't have required permissions to use [src]" + return 0 + +/obj/machinery/mecha_part_fabricator/check_access(obj/item/weapon/card/id/I) + if(istype(I, /obj/item/device/pda)) + var/obj/item/device/pda/pda = I + I = pda.id + if(!istype(I) || !I.access) //not ID or no access return 0 - - check_access(obj/item/weapon/card/id/I) - if(istype(I, /obj/item/device/pda)) - var/obj/item/device/pda/pda = I - I = pda.id - if(!istype(I) || !I.access) //not ID or no access + for(var/req in req_access) + if(!(req in I.access)) //doesn't have this access return 0 - for(var/req in req_access) - if(!(req in I.access)) //doesn't have this access - return 0 - return 1 + return 1 - proc/emag() - sleep() - switch(emagged) - if(0) - emagged = 0.5 - src.visible_message("\icon[src] [src] beeps: \"DB error \[Code 0x00F1\]\"") - sleep(10) - src.visible_message("\icon[src] [src] beeps: \"Attempting auto-repair\"") - sleep(15) - src.visible_message("\icon[src] [src] beeps: \"User DB corrupted \[Code 0x00FA\]. Truncating data structure...\"") - sleep(30) - src.visible_message("\icon[src] [src] beeps: \"User DB truncated. Please contact your Nanotrasen system operator for future assistance.\"") - req_access = null - emagged = 1 - if(0.5) - src.visible_message("\icon[src] [src] beeps: \"DB not responding \[Code 0x0003\]...\"") - if(1) - src.visible_message("\icon[src] [src] beeps: \"No records in User DB\"") - return +/obj/machinery/mecha_part_fabricator/proc/emag() + sleep() + switch(emagged) + if(0) + emagged = 0.5 + src.visible_message("\icon[src] [src] beeps: \"DB error \[Code 0x00F1\]\"") + sleep(10) + src.visible_message("\icon[src] [src] beeps: \"Attempting auto-repair\"") + sleep(15) + src.visible_message("\icon[src] [src] beeps: \"User DB corrupted \[Code 0x00FA\]. Truncating data structure...\"") + sleep(30) + src.visible_message("\icon[src] [src] beeps: \"User DB truncated. Please contact your Nanotrasen system operator for future assistance.\"") + req_access = null + emagged = 1 + if(0.5) + src.visible_message("\icon[src] [src] beeps: \"DB not responding \[Code 0x0003\]...\"") + if(1) + src.visible_message("\icon[src] [src] beeps: \"No records in User DB\"") + return - proc/convert_part_set(set_name as text) - var/list/parts = part_sets[set_name] - if(istype(parts, /list)) - for(var/i=1;i<=parts.len;i++) - var/path = parts[i] - var/part = new path(src) - if(part) - parts[i] = part - //debug below - if(!istype(parts[i],/obj/item)) return 0 - return +/obj/machinery/mecha_part_fabricator/proc/convert_part_set(set_name as text) + var/list/parts = part_sets[set_name] + if(istype(parts, /list)) + for(var/i=1;i<=parts.len;i++) + var/path = parts[i] + var/part = new path(src) + if(part) + parts[i] = part + //debug below + if(!istype(parts[i],/obj/item)) return 0 + return - proc/add_part_set(set_name as text,parts=null) - if(set_name in part_sets)//attempt to create duplicate set +/obj/machinery/mecha_part_fabricator/proc/add_part_set(set_name as text,parts=null) + if(set_name in part_sets)//attempt to create duplicate set + return 0 + if(isnull(parts)) + part_sets[set_name] = list() + else + part_sets[set_name] = parts + convert_part_set(set_name) + return 1 + +/obj/machinery/mecha_part_fabricator/proc/add_part_to_set(set_name as text,part) + if(!part) return 0 + src.add_part_set(set_name)//if no "set_name" set exists, create + var/list/part_set = part_sets[set_name] + var/atom/apart + if(ispath(part)) + apart = new part(src) + else + apart = part + if(!istype(apart)) return 0 + for(var/obj/O in part_set) + if(O.type == apart.type) + del apart return 0 - if(isnull(parts)) - part_sets[set_name] = list() - else - part_sets[set_name] = parts - convert_part_set(set_name) - return 1 + part_set[++part_set.len] = apart + return 1 - proc/add_part_to_set(set_name as text,part) - if(!part) return 0 - src.add_part_set(set_name)//if no "set_name" set exists, create - var/list/part_set = part_sets[set_name] - var/atom/apart - if(ispath(part)) - apart = new part(src) - else - apart = part - if(!istype(apart)) return 0 - for(var/obj/O in part_set) - if(O.type == apart.type) - del apart - return 0 - part_set[++part_set.len] = apart - return 1 - - proc/remove_part_set(set_name as text) - for(var/i=1,i<=part_sets.len,i++) - if(part_sets[i]==set_name) - part_sets.Cut(i,++i) - return +/obj/machinery/mecha_part_fabricator/proc/remove_part_set(set_name as text) + for(var/i=1,i<=part_sets.len,i++) + if(part_sets[i]==set_name) + part_sets.Cut(i,++i) + return /* proc/sanity_check() for(var/p in resources) @@ -277,414 +300,472 @@ return */ - proc/output_parts_list(set_name) - var/output = "" - var/list/part_set = listgetindex(part_sets, set_name) - if(istype(part_set)) - for(var/obj/item/part in part_set) - var/resources_available = check_resources(part) - output += "
[output_part_info(part)]
\[[resources_available?"Build | ":null]Add to queue\]\[?\]
" - return output +/obj/machinery/mecha_part_fabricator/proc/output_parts_list(set_name) + var/output = "" + var/list/part_set = listgetindex(part_sets, set_name) + if(istype(part_set)) + for(var/obj/item/part in part_set) + var/resources_available = check_resources(part) + output += "
[output_part_info(part)]
\[[resources_available?"Build | ":null]Add to queue\]\[?\]
" + return output - proc/output_part_info(var/obj/item/mecha_parts/part) - var/output = "[part.name] (Cost: [output_part_cost(part)]) [get_construction_time_w_coeff(part)/10]sec" - return output +/obj/machinery/mecha_part_fabricator/proc/output_part_info(var/obj/item/mecha_parts/part) + var/output = "[part.name] (Cost: [output_part_cost(part)]) [get_construction_time_w_coeff(part)/10]sec" + return output - proc/output_part_cost(var/obj/item/mecha_parts/part) - var/i = 0 - var/output - for(var/p in part.construction_cost) - if(p in resources) - output += "[i?" | ":null][get_resource_cost_w_coeff(part,p)] [p]" - i++ - return output +/obj/machinery/mecha_part_fabricator/proc/output_part_cost(var/obj/item/mecha_parts/part) + var/i = 0 + var/output + for(var/p in part.construction_cost) + if(p in resources) + output += "[i?" | ":null][get_resource_cost_w_coeff(part,p)] [p]" + i++ + return output - proc/output_available_resources() - var/output - for(var/resource in resources) - var/amount = min(res_max_amount, resources[resource]) - output += "[resource]: [amount] cm³" - if(amount>0) - output += " - Remove \[1\] | \[10\] | \[All\]" - output += "
" - return output +/obj/machinery/mecha_part_fabricator/proc/output_available_resources() + var/output + for(var/resource in resources) + var/amount = min(res_max_amount, resources[resource]) + output += "[resource]: [amount] cm³" + if(amount>0) + output += " - Remove \[1\] | \[10\] | \[All\]" + output += "
" + return output - proc/remove_resources(var/obj/item/mecha_parts/part) - if(istype(part, /obj/item/robot_parts) || istype(part, /obj/item/mecha_parts)) - for(var/resource in part.construction_cost) - if(resource in src.resources) - src.resources[resource] -= get_resource_cost_w_coeff(part,resource) - return +/obj/machinery/mecha_part_fabricator/proc/remove_resources(var/obj/item/mecha_parts/part) + if(istype(part, /obj/item/robot_parts) || istype(part, /obj/item/mecha_parts)) + for(var/resource in part.construction_cost) + if(resource in src.resources) + src.resources[resource] -= get_resource_cost_w_coeff(part,resource) + return - proc/check_resources(var/obj/item/mecha_parts/part) +/obj/machinery/mecha_part_fabricator/proc/check_resources(var/obj/item/mecha_parts/part) // if(istype(part, /obj/item/robot_parts) || istype(part, /obj/item/mecha_parts) || istype(part,/obj/item/borg/upgrade)) - if(part.construction_time!=null && part.construction_cost!=null)//Much more efficient way to check the item, since it won't have those vars if it isn't meant to go through the mechfabs -Sieve - for(var/resource in part.construction_cost) - if(resource in src.resources) - if(src.resources[resource] < get_resource_cost_w_coeff(part,resource)) - return 0 - return 1 + if(part.construction_time!=null && part.construction_cost!=null)//Much more efficient way to check the item, since it won't have those vars if it isn't meant to go through the mechfabs -Sieve + for(var/resource in part.construction_cost) + if(resource in src.resources) + if(src.resources[resource] < get_resource_cost_w_coeff(part,resource)) + return 0 + return 1 + return 0 + +/obj/machinery/mecha_part_fabricator/proc/build_part(var/obj/item/part) + if(!part) return + src.being_built = new part.type(src) + src.desc = "It's building [src.being_built]." + src.remove_resources(part) + src.overlays += "fab-active" + src.use_power = 2 + src.updateUsrDialog() + sleep(get_construction_time_w_coeff(part)) + src.use_power = 1 + src.overlays -= "fab-active" + src.desc = initial(src.desc) + if(being_built) + src.being_built.Move(get_step(src,SOUTH)) + src.visible_message("\icon[src] [src] beeps, \"The [src.being_built] is complete\".") + src.being_built = null + src.updateUsrDialog() + return 1 + +/obj/machinery/mecha_part_fabricator/proc/update_queue_on_page() + send_byjax(usr,"mecha_fabricator.browser","queue",src.list_queue()) + return + +/obj/machinery/mecha_part_fabricator/proc/add_part_set_to_queue(set_name) + if(set_name in part_sets) + var/list/part_set = part_sets[set_name] + if(islist(part_set)) + for(var/obj/item/part in part_set) + add_to_queue(part) + return + +/obj/machinery/mecha_part_fabricator/proc/add_to_queue(part) + if(!istype(queue)) + queue = list() + if(part) + queue[++queue.len] = part + return queue.len + +/obj/machinery/mecha_part_fabricator/proc/remove_from_queue(index) + if(!isnum(index) || !istype(queue) || (index<1 || index>queue.len)) return 0 + queue.Cut(index,++index) + return 1 - proc/build_part(var/obj/item/part) - if(!part) return - src.being_built = new part.type(src) - src.desc = "It's building [src.being_built]." - src.remove_resources(part) - src.overlays += "fab-active" - src.use_power = 2 - src.updateUsrDialog() - sleep(get_construction_time_w_coeff(part)) - src.use_power = 1 - src.overlays -= "fab-active" - src.desc = initial(src.desc) - if(being_built) - src.being_built.Move(get_step(src,SOUTH)) - src.visible_message("\icon[src] [src] beeps, \"The [src.being_built] is complete\".") - src.being_built = null - src.updateUsrDialog() - return 1 - - proc/update_queue_on_page() - send_byjax(usr,"mecha_fabricator.browser","queue",src.list_queue()) - return - - proc/add_part_set_to_queue(set_name) - if(set_name in part_sets) - var/list/part_set = part_sets[set_name] - if(islist(part_set)) - for(var/obj/item/part in part_set) - add_to_queue(part) - return - - proc/add_to_queue(part) - if(!istype(queue)) - queue = list() - if(part) - queue[++queue.len] = part - return queue.len - - proc/remove_from_queue(index) - if(!isnum(index) || !istype(queue) || (index<1 || index>queue.len)) +/obj/machinery/mecha_part_fabricator/proc/process_queue() + var/part = listgetindex(src.queue, 1) + temp = null + while(part) + if(stat&(NOPOWER|BROKEN)) return 0 - queue.Cut(index,++index) - return 1 + if(!check_resources(part)) + src.visible_message("\icon[src] [src] beeps, \"Not enough resources. Queue processing stopped\".") + temp = {"Not enough resources to build next part.
+ Try again | Return"} + return 0 + remove_from_queue(1) + build_part(part) + part = listgetindex(src.queue, 1) + src.visible_message("\icon[src] [src] beeps, \"Queue processing finished successfully\".") + return 1 - proc/process_queue() - var/part = listgetindex(src.queue, 1) - temp = null - while(part) - if(stat&(NOPOWER|BROKEN)) - return 0 - if(!check_resources(part)) - src.visible_message("\icon[src] [src] beeps, \"Not enough resources. Queue processing stopped\".") - temp = {"Not enough resources to build next part.
-
Try again | Return"} - return 0 - remove_from_queue(1) - build_part(part) - part = listgetindex(src.queue, 1) - src.visible_message("\icon[src] [src] beeps, \"Queue processing finished successfully\".") - return 1 +/obj/machinery/mecha_part_fabricator/proc/list_queue() + var/output = "Queue contains:" + if(!istype(queue) || !queue.len) + output += "
Nothing" + else + output += "
    " + for(var/i=1;i<=queue.len;i++) + var/obj/item/part = listgetindex(src.queue, i) + if(istype(part)) + output += "[part.name] - [i>1?"":null] [i↓":null] Remove" + output += "
" + output += "\[Process queue | Clear queue\]" + return output - proc/list_queue() - var/output = "Queue contains:" - if(!istype(queue) || !queue.len) - output += "
Nothing" - else - output += "
    " - for(var/i=1;i<=queue.len;i++) - var/obj/item/part = listgetindex(src.queue, i) - if(istype(part)) - output += "[part.name] - [i>1?"":null] [i↓":null] Remove" - output += "
" - output += "\[Process queue | Clear queue\]" - return output +/obj/machinery/mecha_part_fabricator/proc/convert_designs() + if(!files) return + var/i = 0 + for(var/datum/design/D in files.known_designs) + if(D.build_type&16) + if(add_part_to_set("Exosuit Equipment", text2path(D.build_path))) + i++ + return i - proc/convert_designs() - if(!files) return - var/i = 0 - for(var/datum/design/D in files.known_designs) - if(D.build_type&16) - if(add_part_to_set("Exosuit Equipment", text2path(D.build_path))) - i++ - return i - - proc/update_tech() - if(!files) return - var/output - for(var/datum/tech/T in files.known_tech) - if(T && T.level > 1) - var/diff - switch(T.id) //bad, bad formulas - if("materials") - diff = round(initial(resource_coeff) - (initial(resource_coeff)*T.level)/25,0.01) - if(resource_coeff!=diff) - resource_coeff = diff - output+="Production efficiency increased.
" - if("programming") - diff = round(initial(time_coeff) - (initial(time_coeff)*T.level)/25,0.1) - if(time_coeff!=diff) - time_coeff = diff - output+="Production routines updated.
" - return output +/obj/machinery/mecha_part_fabricator/proc/update_tech() + if(!files) return + var/output + for(var/datum/tech/T in files.known_tech) + if(T && T.level > 1) + var/diff + switch(T.id) //bad, bad formulas + if("materials") + var/pmat = 0//Calculations to make up for the fact that these parts and tech modify the same thing + for(var/obj/item/weapon/stock_parts/micro_laser/Ml in component_parts) + pmat += Ml.rating + if(pmat >= 1) + pmat -= 1//So the equations don't have to be reworked, upgrading a single part from T1 to T2 is == to 1 tech level + diff = round(initial(resource_coeff) - (initial(resource_coeff)*(T.level+pmat))/25,0.01) + if(resource_coeff!=diff) + resource_coeff = diff + output+="Production efficiency increased.
" + if("programming") + var/ptime = 0 + for(var/obj/item/weapon/stock_parts/manipulator/Ma in component_parts) + ptime += Ma.rating + if(ptime >= 2) + ptime -= 2 + diff = round(initial(time_coeff) - (initial(time_coeff)*(T.level+ptime))/25,0.1) + if(time_coeff!=diff) + time_coeff = diff + output+="Production routines updated.
" + return output - proc/sync(silent=null) +/obj/machinery/mecha_part_fabricator/proc/sync(silent=null) /* if(queue.len) if(!silent) temp = "Error. Please clear processing queue before updating!" src.updateUsrDialog() - return //This POS doesn't work, simplifying -Sieve + return */ + if(!silent) + temp = "Updating local R&D database..." + src.updateUsrDialog() + sleep(30) //only sleep if called by user + for(var/obj/machinery/computer/rdconsole/RDC in get_area(src)) + if(!RDC.sync) + continue + for(var/datum/tech/T in RDC.files.known_tech) + files.AddTech2Known(T) + for(var/datum/design/D in RDC.files.known_designs) + files.AddDesign2Known(D) + files.RefreshResearch() + var/i = src.convert_designs() + var/tech_output = update_tech() if(!silent) - temp = "Updating local R&D database..." + temp = "Processed [i] equipment designs.
" + temp += tech_output + temp += "Return" src.updateUsrDialog() - sleep(30) //only sleep if called by user - for(var/obj/machinery/computer/rdconsole/RDC in get_area(src)) - if(!RDC.sync) - continue - for(var/datum/tech/T in RDC.files.known_tech) - files.AddTech2Known(T) - for(var/datum/design/D in RDC.files.known_designs) - files.AddDesign2Known(D) - files.RefreshResearch() - var/i = src.convert_designs() - var/tech_output = update_tech() - if(!silent) - temp = "Processed [i] equipment designs.
" - temp += tech_output - temp += "Return" - src.updateUsrDialog() - if(i || tech_output) - src.visible_message("\icon[src] [src] beeps, \"Succesfully synchronized with R&D server. New data processed.\"") + if(i || tech_output) + src.visible_message("\icon[src] [src] beeps, \"Succesfully synchronized with R&D server. New data processed.\"") + return + +/obj/machinery/mecha_part_fabricator/proc/get_resource_cost_w_coeff(var/obj/item/mecha_parts/part as obj,var/resource as text, var/roundto=1) + return round(part.construction_cost[resource]*resource_coeff, roundto) + +/obj/machinery/mecha_part_fabricator/proc/get_construction_time_w_coeff(var/obj/item/mecha_parts/part as obj, var/roundto=1) + return round(part.construction_time*time_coeff, roundto) + + +/obj/machinery/mecha_part_fabricator/attack_hand(mob/user as mob) + var/dat, left_part + if (..()) return - - proc/get_resource_cost_w_coeff(var/obj/item/mecha_parts/part as obj,var/resource as text, var/roundto=1) - return round(part.construction_cost[resource]*resource_coeff, roundto) - - proc/get_construction_time_w_coeff(var/obj/item/mecha_parts/part as obj, var/roundto=1) - return round(part.construction_time*time_coeff, roundto) - - - attack_hand(mob/user as mob) - var/dat, left_part - if (..()) - return - if(!operation_allowed(user)) - return - user.machine = src - var/turf/exit = get_step(src,SOUTH) - if(exit.density) - src.visible_message("\icon[src] [src] beeps, \"Error! Part outlet is obstructed\".") - return - if(temp) - left_part = temp - else if(src.being_built) - left_part = {"Building [src.being_built.name].
- Please wait until completion...
"} - else - switch(screen) - if("main") - left_part = output_available_resources()+"
" - left_part += "Sync with R&D servers | [sync?"Dis":"En"]able auto sync
" - for(var/part_set in part_sets) - left_part += "[part_set] - \[Add all parts to queue\]
" - if("parts") - left_part += output_parts_list(part_set) - left_part += "
Return" - dat = {" - - [src.name] - - - - - - - - - -
- [left_part] - - [list_queue()] -
- - "} - user << browse(dat, "window=mecha_fabricator;size=1000x400") - onclose(user, "mecha_fabricator") + if(!operation_allowed(user)) return + user.machine = src + var/turf/exit = get_step(src,SOUTH) + if(exit.density) + src.visible_message("\icon[src] [src] beeps, \"Error! Part outlet is obstructed\".") + return + if(temp) + left_part = temp + else if(src.being_built) + left_part = {"Building [src.being_built.name].
+ Please wait until completion...
"} + else + switch(screen) + if("main") + left_part = output_available_resources()+"
" + left_part += "Sync with R&D servers | [sync?"Dis":"En"]able auto sync
" + for(var/part_set in part_sets) + left_part += "[part_set] - \[Add all parts to queue\]
" + if("parts") + left_part += output_parts_list(part_set) + left_part += "
Return" + dat = {" + + [src.name] + + + + + + + + + +
+ [left_part] + + [list_queue()] +
+ + "} + user << browse(dat, "window=mecha_fabricator;size=1000x400") + onclose(user, "mecha_fabricator") + return - Topic(href, href_list) - ..() - var/datum/topic_input/filter = new /datum/topic_input(href,href_list) - if(href_list["part_set"]) - var/tpart_set = filter.getStr("part_set") - if(tpart_set) - if(tpart_set=="clear") - src.part_set = null - else - src.part_set = tpart_set - screen = "parts" - if(href_list["part"]) - var/list/part = filter.getObj("part") - if(!processing_queue) - build_part(part) +/obj/machinery/mecha_part_fabricator/Topic(href, href_list) + ..() + var/datum/topic_input/filter = new /datum/topic_input(href,href_list) + if(href_list["part_set"]) + var/tpart_set = filter.getStr("part_set") + if(tpart_set) + if(tpart_set=="clear") + src.part_set = null else - add_to_queue(part) - if(href_list["add_to_queue"]) - add_to_queue(filter.getObj("add_to_queue")) - return update_queue_on_page() - if(href_list["remove_from_queue"]) - remove_from_queue(filter.getNum("remove_from_queue")) - return update_queue_on_page() - if(href_list["partset_to_queue"]) - add_part_set_to_queue(filter.get("partset_to_queue")) - return update_queue_on_page() - if(href_list["process_queue"]) - spawn(-1) - if(processing_queue || being_built) - return 0 - processing_queue = 1 - process_queue() - processing_queue = 0 + src.part_set = tpart_set + screen = "parts" + if(href_list["part"]) + var/list/part = filter.getObj("part") + if(!processing_queue) + build_part(part) + else + add_to_queue(part) + if(href_list["add_to_queue"]) + add_to_queue(filter.getObj("add_to_queue")) + return update_queue_on_page() + if(href_list["remove_from_queue"]) + remove_from_queue(filter.getNum("remove_from_queue")) + return update_queue_on_page() + if(href_list["partset_to_queue"]) + add_part_set_to_queue(filter.get("partset_to_queue")) + return update_queue_on_page() + if(href_list["process_queue"]) + spawn(-1) + if(processing_queue || being_built) + return 0 + processing_queue = 1 + process_queue() + processing_queue = 0 /* if(href_list["list_queue"]) list_queue() */ - if(href_list["clear_temp"]) - temp = null - if(href_list["screen"]) - src.screen = href_list["screen"] - if(href_list["queue_move"] && href_list["index"]) - var/index = filter.getNum("index") - var/new_index = index + filter.getNum("queue_move") - if(isnum(index) && isnum(new_index)) - if(InRange(new_index,1,queue.len)) - queue.Swap(index,new_index) - return update_queue_on_page() - if(href_list["clear_queue"]) - queue = list() - return update_queue_on_page() - if(href_list["sync"]) - queue = list() - src.sync() - return update_queue_on_page() - if(href_list["auto_sync"]) - src.sync = !src.sync - //pr_auto_sync.toggle() - if(href_list["part_desc"]) - var/obj/part = filter.getObj("part_desc") - if(part) - temp = {"

[part] description:

- [part.desc]
- Return - "} - if(href_list["remove_mat"] && href_list["material"]) - temp = "Ejected [remove_material(href_list["material"],text2num(href_list["remove_mat"]))] of [href_list["material"]]
Return" - src.updateUsrDialog() - return + if(href_list["clear_temp"]) + temp = null + if(href_list["screen"]) + src.screen = href_list["screen"] + if(href_list["queue_move"] && href_list["index"]) + var/index = filter.getNum("index") + var/new_index = index + filter.getNum("queue_move") + if(isnum(index) && isnum(new_index)) + if(InRange(new_index,1,queue.len)) + queue.Swap(index,new_index) + return update_queue_on_page() + if(href_list["clear_queue"]) + queue = list() + return update_queue_on_page() + if(href_list["sync"]) + queue = list() + src.sync() + return update_queue_on_page() + if(href_list["auto_sync"]) + src.sync = !src.sync + //pr_auto_sync.toggle() + if(href_list["part_desc"]) + var/obj/part = filter.getObj("part_desc") + if(part) + temp = {"

[part] description:

+ [part.desc]
+ Return + "} + if(href_list["remove_mat"] && href_list["material"]) + temp = "Ejected [remove_material(href_list["material"],text2num(href_list["remove_mat"]))] of [href_list["material"]]
Return" + src.updateUsrDialog() + return - process() - if (stat & (NOPOWER|BROKEN)) - return - if(sync) - spawn(-1) - sync(1) +/obj/machinery/mecha_part_fabricator/process() + if (stat & (NOPOWER|BROKEN)) return + if(sync) + spawn(-1) + sync(1) + return - attackby(obj/item/stack/sheet/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/card/emag)) - emag() - return - var/material - if(istype(W, /obj/item/stack/sheet/gold)) +/obj/machinery/mecha_part_fabricator/proc/remove_material(var/mat_string, var/amount) + var/type + switch(mat_string) + if("metal") + type = /obj/item/stack/sheet/metal + if("glass") + type = /obj/item/stack/sheet/glass + if("gold") + type = /obj/item/stack/sheet/gold + if("silver") + type = /obj/item/stack/sheet/silver + if("diamond") + type = /obj/item/stack/sheet/diamond + if("plasma") + type = /obj/item/stack/sheet/plasma + if("uranium") + type = /obj/item/stack/sheet/uranium + if("bananium") + type = /obj/item/stack/sheet/clown + else + return 0 + var/result = 0 + var/obj/item/stack/sheet/res = new type(src) + var/total_amount = round(resources[mat_string]/res.perunit) + res.amount = min(total_amount,amount) + if(res.amount>0) + resources[mat_string] -= res.amount*res.perunit + res.Move(src.loc) + result = res.amount + else + del res + return result + + +/obj/machinery/mecha_part_fabricator/attackby(obj/W as obj, mob/user as mob) + if(istype(W,/obj/item/weapon/screwdriver)) + if (!opened) + opened = 1 + icon_state = "fab-o" + user << "You open the maintenance hatch of [src]." + else + opened = 0 + icon_state = "fab-idle" + user << "You close the maintenance hatch of [src]." + return + if (opened) + if(istype(W, /obj/item/weapon/crowbar)) + playsound(src.loc, 'Crowbar.ogg', 50, 1) + var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(src.loc) + M.state = 2 + M.icon_state = "box_1" + for(var/obj/I in component_parts) + if(I.reliability != 100 && crit_fail) + I.crit_fail = 1 + I.loc = src.loc + if(src.resources["metal"] >= 3750) + var/obj/item/stack/sheet/metal/G = new /obj/item/stack/sheet/metal(src.loc) + G.amount = round(src.resources["metal"] / G.perunit) + if(src.resources["glass"] >= 3750) + var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc) + G.amount = round(src.resources["glass"] / G.perunit) + if(src.resources["plasma"] >= 2000) + var/obj/item/stack/sheet/plasma/G = new /obj/item/stack/sheet/plasma(src.loc) + G.amount = round(src.resources["plasma"] / G.perunit) + if(src.resources["silver"] >= 2000) + var/obj/item/stack/sheet/silver/G = new /obj/item/stack/sheet/silver(src.loc) + G.amount = round(src.resources["silver"] / G.perunit) + if(src.resources["gold"] >= 2000) + var/obj/item/stack/sheet/gold/G = new /obj/item/stack/sheet/gold(src.loc) + G.amount = round(src.resources["gold"] / G.perunit) + if(src.resources["uranium"] >= 2000) + var/obj/item/stack/sheet/uranium/G = new /obj/item/stack/sheet/uranium(src.loc) + G.amount = round(src.resources["uranium"] / G.perunit) + if(src.resources["diamond"] >= 2000) + var/obj/item/stack/sheet/diamond/G = new /obj/item/stack/sheet/diamond(src.loc) + G.amount = round(src.resources["diamond"] / G.perunit) + if(src.resources["bananium"] >= 2000) + var/obj/item/stack/sheet/clown/G = new /obj/item/stack/sheet/clown(src.loc) + G.amount = round(src.resources["bananium"] / G.perunit) + del(src) + return 1 + else + user << "\red You can't load the [src.name] while it's opened." + return 1 + + if(istype(W, /obj/item/weapon/card/emag)) + emag() + return + var/material + switch(W.type) + if(/obj/item/stack/sheet/gold) material = "gold" - else if(istype(W, /obj/item/stack/sheet/silver)) + if(/obj/item/stack/sheet/silver) material = "silver" - else if(istype(W, /obj/item/stack/sheet/diamond)) + if(/obj/item/stack/sheet/diamond) material = "diamond" - else if(istype(W, /obj/item/stack/sheet/plasma)) + if(/obj/item/stack/sheet/plasma) material = "plasma" - else if(istype(W, /obj/item/stack/sheet/metal)) + if(/obj/item/stack/sheet/metal) material = "metal" - else if(istype(W, /obj/item/stack/sheet/glass)) + if(/obj/item/stack/sheet/glass) material = "glass" - else if(istype(W, /obj/item/stack/sheet/clown)) + if(/obj/item/stack/sheet/clown) material = "bananium" - else if(istype(W, /obj/item/stack/sheet/uranium)) + if(/obj/item/stack/sheet/uranium) material = "uranium" else return ..() - if(src.being_built) - user << "The fabricator is currently processing. Please wait until completion." - return - - var/name = "[W.name]" - var/amnt = W.perunit - if(src.resources[material] < res_max_amount) - var/count = 0 - src.overlays += "fab-load-[material]"//loading animation is now an overlay based on material type. No more spontaneous conversion of all ores to metal. -vey - sleep(10) - if(W && W.amount) - while(src.resources[material] < res_max_amount && W) - src.resources[material] += amnt - W.use(1) - count++ - src.overlays -= "fab-load-[material]" - user << "You insert [count] [name] into the fabricator." - src.updateUsrDialog() - else - user << "The fabricator cannot hold more [name]." + if(src.being_built) + user << "The fabricator is currently processing. Please wait until completion." return - - proc/remove_material(var/mat_string, var/amount) - var/type - switch(mat_string) - if("metal") - type = /obj/item/stack/sheet/metal - if("glass") - type = /obj/item/stack/sheet/glass - if("gold") - type = /obj/item/stack/sheet/gold - if("silver") - type = /obj/item/stack/sheet/silver - if("diamond") - type = /obj/item/stack/sheet/diamond - if("plasma") - type = /obj/item/stack/sheet/plasma - if("uranium") - type = /obj/item/stack/sheet/uranium - if("bananium") - type = /obj/item/stack/sheet/clown - else - return 0 - var/result = 0 - var/obj/item/stack/sheet/res = new type(src) - var/total_amount = round(resources[mat_string]/res.perunit) - res.amount = min(total_amount,amount) - if(res.amount>0) - resources[mat_string] -= res.amount*res.perunit - res.Move(src.loc) - result = res.amount - else - del res - return result - - - - + var/obj/item/stack/sheet/stack = W + var/sname = "[stack.name]" + var/amnt = stack.perunit + if(src.resources[material] < res_max_amount) + var/count = 0 + src.overlays += "fab-load-[material]"//loading animation is now an overlay based on material type. No more spontaneous conversion of all ores to metal. -vey + sleep(10) + if(stack && stack.amount) + while(src.resources[material] < res_max_amount && stack) + src.resources[material] += amnt + stack.use(1) + count++ + src.overlays -= "fab-load-[material]" + user << "You insert [count] [sname] into the fabricator." + src.updateUsrDialog() + else + user << "The fabricator cannot hold more [sname]." + return diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index b30cd7211f..51a0463da0 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -1185,6 +1185,8 @@ spawn_result() var/obj/item/mecha_parts/chassis/const_holder = holder const_holder.construct = new /datum/construction/reversible/mecha/odysseus(const_holder) + const_holder.icon = 'mech_construction.dmi' + const_holder.icon_state = "odysseus0" const_holder.density = 1 spawn() del src @@ -1203,7 +1205,7 @@ "backkey"=/obj/item/weapon/crowbar, "desc"="External armor is installed."), //3 - list("key"=/obj/item/mecha_parts/part/odysseus_armour, + list("key"=/obj/item/stack/sheet/plasteel, "backkey"=/obj/item/weapon/weldingtool, "desc"="Internal armor is welded."), //4 @@ -1262,82 +1264,108 @@ switch(index) if(14) user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.") + holder.icon_state = "odysseus1" if(13) if(diff==FORWARD) user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.") + holder.icon_state = "odysseus2" else user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.") + holder.icon_state = "odysseus0" if(12) if(diff==FORWARD) user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].") + holder.icon_state = "odysseus3" else user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.") + holder.icon_state = "odysseus1" if(11) if(diff==FORWARD) user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].") + holder.icon_state = "odysseus4" else user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [holder].") var/obj/item/weapon/cable_coil/coil = new /obj/item/weapon/cable_coil(get_turf(holder)) coil.amount = 4 + holder.icon_state = "odysseus2" if(10) if(diff==FORWARD) user.visible_message("[user] installs the central control module into [holder].", "You install the central computer mainboard into [holder].") del used_atom + holder.icon_state = "odysseus5" else user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].") + holder.icon_state = "odysseus3" if(9) if(diff==FORWARD) user.visible_message("[user] secures the mainboard.", "You secure the mainboard.") + holder.icon_state = "odysseus6" else user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].") new /obj/item/weapon/circuitboard/mecha/odysseus/main(get_turf(holder)) + holder.icon_state = "odysseus4" if(8) if(diff==FORWARD) user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].") del used_atom + holder.icon_state = "odysseus7" else user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.") + holder.icon_state = "odysseus5" if(7) if(diff==FORWARD) user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.") + holder.icon_state = "odysseus8" else user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].") new /obj/item/weapon/circuitboard/mecha/odysseus/peripherals(get_turf(holder)) + holder.icon_state = "odysseus6" if(6) if(diff==FORWARD) user.visible_message("[user] installs internal armor layer to [holder].", "You install internal armor layer to [holder].") + holder.icon_state = "odysseus9" else user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.") + holder.icon_state = "odysseus7" if(5) if(diff==FORWARD) user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.") + holder.icon_state = "odysseus10" else user.visible_message("[user] pries internal armor layer from [holder].", "You prie internal armor layer from [holder].") var/obj/item/stack/sheet/metal/MS = new /obj/item/stack/sheet/metal(get_turf(holder)) MS.amount = 5 + holder.icon_state = "odysseus8" if(4) if(diff==FORWARD) user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].") + holder.icon_state = "odysseus11" else user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.") + holder.icon_state = "odysseus9" if(3) if(diff==FORWARD) user.visible_message("[user] installs [used_atom] layer to [holder].", "You install external reinforced armor layer to [holder].") - holder.overlays += used_atom.icon_state - del used_atom + + holder.icon_state = "odysseus12" else user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].") - if(2) + holder.icon_state = "odysseus10" if(diff==FORWARD) user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.") + holder.icon_state = "odysseus13" else - var/obj/item/mecha_parts/part/odysseus_armour/MS = new /obj/item/mecha_parts/part/odysseus_armour(get_turf(holder)) + var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder)) + MS.amount = 5 user.visible_message("[user] pries [MS] from [holder].", "You prie [MS] from [holder].") + holder.icon_state = "odysseus11" if(1) if(diff==FORWARD) user.visible_message("[user] welds external armor layer to [holder].", "You weld external armor layer to [holder].") + holder.icon_state = "odysseus14" else user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.") + holder.icon_state = "odysseus12" return 1 spawn_result() diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm index 40b26cc0b4..5cc7191858 100644 --- a/code/game/mecha/mecha_parts.dm +++ b/code/game/mecha/mecha_parts.dm @@ -387,12 +387,12 @@ construction_time = 130 construction_cost = list("metal"=15000) -/obj/item/mecha_parts/part/odysseus_armour +/*/obj/item/mecha_parts/part/odysseus_armour name="Odysseus Carapace" icon_state = "odysseus_armour" origin_tech = "materials=3;engineering=3" construction_time = 200 - construction_cost = list("metal"=15000) + construction_cost = list("metal"=15000)*/ ///////// Circuitboards diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm index d5d470db10..29dc0eef7f 100644 --- a/code/game/mecha/mecha_wreckage.dm +++ b/code/game/mecha/mecha_wreckage.dm @@ -95,6 +95,9 @@ parts -= part return +/obj/effect/decal/mecha_wreckage/gygax/dark + name = "Dark Gygax wreckage" + icon_state = "darkgygax-broken" /obj/effect/decal/mecha_wreckage/marauder name = "Marauder wreckage" diff --git a/code/game/objects/door_assembly.dm b/code/game/objects/door_assembly.dm index 629e3c2c02..2659285bef 100644 --- a/code/game/objects/door_assembly.dm +++ b/code/game/objects/door_assembly.dm @@ -2,22 +2,24 @@ obj/structure/door_assembly icon = 'door_assembly.dmi' name = "Airlock Assembly" - icon_state = "door_as0" + icon_state = "door_as_0" anchored = 0 density = 1 var/state = 0 - var/glass = 0 - var/base_icon_state + var/mineral = null + var/base_icon_state = "door_as_0" + var/glass_base_icon_state = "door_as_g0" var/obj/item/weapon/airlock_electronics/electronics = null var/airlock_type = /obj/machinery/door/airlock //the type path of the airlock once completed - var/glass_type = /obj/machinery/door/airlock/glass //the type path of the airlock if changed into a glass airlock - var/glass_base_icon_state = "door_as_g" + var/glass_type = /obj/machinery/door/airlock/glass + var/glass = null + New() base_icon_state = copytext(icon_state,1,lentext(icon_state)) door_assembly_0 name = "Airlock Assembly" - icon_state = "door_as1" + icon_state = "door_as_1" airlock_type = /obj/machinery/door/airlock anchored = 1 density = 1 @@ -117,16 +119,13 @@ obj/structure/door_assembly door_assembly_med name = "Medical Airlock Assembly" icon_state = "door_as_med1" - glass_base_icon_state = "door_as_gmed" - glass_type = /obj/machinery/door/airlock/glass_medical airlock_type = /obj/machinery/door/airlock/medical anchored = 1 density = 1 state = 1 - glass = 0 glass - glass = 1 + mineral = "glass" icon_state = "door_as_gmed1" door_assembly_mai @@ -165,19 +164,83 @@ obj/structure/door_assembly state = 1 glass = 0 - door_assembly_g + door_assembly_glass name = "Glass Airlock Assembly" icon_state = "door_as_g1" airlock_type = /obj/machinery/door/airlock/glass anchored = 1 density = 1 state = 1 - glass = 1 + mineral = "glass" + + door_assembly_gold + name = "Gold Airlock Assembly" + icon_state = "door_as_gold1" + airlock_type = /obj/machinery/door/airlock/gold + anchored = 1 + density = 1 + state = 1 + mineral = "gold" + + door_assembly_silver + name = "Silver Airlock Assembly" + icon_state = "door_as_silver1" + airlock_type = /obj/machinery/door/airlock/silver + anchored = 1 + density = 1 + state = 1 + mineral = "silver" + + door_assembly_diamond + name = "Diamond Airlock Assembly" + icon_state = "door_as_diamond1" + airlock_type = /obj/machinery/door/airlock/diamond + anchored = 1 + density = 1 + state = 1 + mineral = "diamond" + + door_assembly_uranium + name = "Uranium Airlock Assembly" + icon_state = "door_as_uranium1" + airlock_type = /obj/machinery/door/airlock/uranium + anchored = 1 + density = 1 + state = 1 + mineral = "uranium" + + door_assembly_plasma + name = "Plasma Airlock Assembly" + icon_state = "door_as_plasma1" + airlock_type = /obj/machinery/door/airlock/plasma + anchored = 1 + density = 1 + state = 1 + mineral = "plasma" + + door_assembly_clown + name = "Bananium Airlock Assembly" + desc = "Honk" + icon_state = "door_as_bananium1" + airlock_type = /obj/machinery/door/airlock/clown + anchored = 1 + density = 1 + state = 1 + mineral = "clown" + + door_assembly_sandstone + name = "Sandstone Airlock Assembly" + icon_state = "door_as_sandstone1" + airlock_type = /obj/machinery/door/airlock/sandstone + anchored = 1 + density = 1 + state = 1 + mineral = "sandstone" /obj/structure/door_assembly/attackby(obj/item/W as obj, mob/user as mob) if(istype(W, /obj/item/weapon/weldingtool) && !anchored ) var/obj/item/weapon/weldingtool/WT = W - if (WT.remove_fuel(0,user)) + if(WT.remove_fuel(0,user)) user.visible_message("[user] dissassembles the airlock assembly.", "You start to dissassemble the airlock assembly.") playsound(src.loc, 'Welder2.ogg', 50, 1) @@ -185,8 +248,30 @@ obj/structure/door_assembly if(!src || !WT.isOn()) return user << "\blue You dissasembled the airlock assembly!" new /obj/item/stack/sheet/metal(get_turf(src), 4) - if(src.glass==1) - new /obj/item/stack/sheet/rglass(get_turf(src)) + switch(mineral) + if("glass") + new /obj/item/stack/sheet/rglass(get_turf(src)) + if("gold") + new /obj/item/stack/sheet/gold(get_turf(src)) + new /obj/item/stack/sheet/gold(get_turf(src)) + if("silver") + new /obj/item/stack/sheet/silver(get_turf(src)) + new /obj/item/stack/sheet/silver(get_turf(src)) + if("diamond") + new /obj/item/stack/sheet/diamond(get_turf(src)) + new /obj/item/stack/sheet/diamond(get_turf(src)) + if("uranium") + new /obj/item/stack/sheet/uranium(get_turf(src)) + new /obj/item/stack/sheet/uranium(get_turf(src)) + if("plasma") + new /obj/item/stack/sheet/plasma(get_turf(src)) + new /obj/item/stack/sheet/plasma(get_turf(src)) + if("clown") + new /obj/item/stack/sheet/clown(get_turf(src)) + new /obj/item/stack/sheet/clown(get_turf(src)) + if("sandstone") + new /obj/item/stack/sheet/sandstone(get_turf(src)) + new /obj/item/stack/sheet/sandstone(get_turf(src)) del(src) else user << "\blue You need more welding fuel to dissassemble the airlock assembly." @@ -265,20 +350,99 @@ obj/structure/door_assembly ae = electronics electronics = null ae.loc = src.loc - - else if(istype(W, /obj/item/stack/sheet/rglass) && glass == 0) - playsound(src.loc, 'Crowbar.ogg', 100, 1) - user.visible_message("[user] adds reinforced glass windows to the airlock assembly.", "You start to install reinforced glass windows into the airlock assembly.") - var/obj/item/stack/sheet/rglass/G = W - if(do_after(user, 40)) - if(G) - if(G.amount>=1) - user << "\blue You installed glass windows the airlock assembly!" - G.use(1) - src.glass = 1 - src.name = "Near finished Window Airlock Assembly" - src.airlock_type = /obj/machinery/door/airlock/glass - src.base_icon_state = "door_as_g" //this will be applied to the icon_state with the correct state number at the proc's end. + else if(istype(W, /obj/item/stack/sheet) && !mineral) + var/obj/item/stack/sheet/G = W + if(G) + if(G.amount>=1) + switch(G.type) + if(/obj/item/stack/sheet/rglass) + playsound(src.loc, 'Crowbar.ogg', 100, 1) + user.visible_message("[user] adds [G.name] to the airlock assembly.", "You start to install [G.name] into the airlock assembly.") + if(do_after(user, 40)) + user << "\blue You installed reinforced glass windows into the airlock assembly!" + G.use(1) + src.mineral = "glass" + src.name = "Near finished Window Airlock Assembly" + src.airlock_type = /obj/machinery/door/airlock/glass + src.base_icon_state = "door_as_glass" //this will be applied to the icon_state with the correct state number at the proc's end. + if(/obj/item/stack/sheet/gold) + if(G.amount>=2) + playsound(src.loc, 'Crowbar.ogg', 100, 1) + user.visible_message("[user] adds [G.name] to the airlock assembly.", "You start to install [G.name] into the airlock assembly.") + if(do_after(user, 40)) + user << "\blue You installed gold plating into the airlock assembly!" + G.use(2) + src.mineral = "gold" + src.name = "Near finished Gold Airlock Assembly" + src.airlock_type = /obj/machinery/door/airlock/gold + src.base_icon_state = "door_as_gold" + if(/obj/item/stack/sheet/silver) + if(G.amount>=2) + playsound(src.loc, 'Crowbar.ogg', 100, 1) + user.visible_message("[user] adds [G.name] to the airlock assembly.", "You start to install [G.name] into the airlock assembly.") + if(do_after(user, 40)) + user << "\blue You installed silver plating into the airlock assembly!" + G.use(2) + src.mineral = "silver" + src.name = "Near finished Silver Airlock Assembly" + src.airlock_type = /obj/machinery/door/airlock/silver + src.base_icon_state = "door_as_silver" + if(/obj/item/stack/sheet/diamond) + if(G.amount>=2) + playsound(src.loc, 'Crowbar.ogg', 100, 1) + user.visible_message("[user] adds [G.name] to the airlock assembly.", "You start to install [G.name] into the airlock assembly.") + if(do_after(user, 40)) + user << "\blue You installed diamond plating into the airlock assembly!" + G.use(2) + src.mineral = "diamond" + src.name = "Near finished Diamond Airlock Assembly" + src.airlock_type = /obj/machinery/door/airlock/diamond + src.base_icon_state = "door_as_diamond" + if(/obj/item/stack/sheet/uranium) + if(G.amount>=2) + playsound(src.loc, 'Crowbar.ogg', 100, 1) + user.visible_message("[user] adds [G.name] to the airlock assembly.", "You start to install [G.name] into the airlock assembly.") + if(do_after(user, 40)) + user << "\blue You installed uranium plating into the airlock assembly!" + G.use(2) + src.mineral = "uranium" + src.name = "Near finished Uranium Airlock Assembly" + src.airlock_type = /obj/machinery/door/airlock/uranium + src.base_icon_state = "door_as_uranium" + if(/obj/item/stack/sheet/plasma) + if(G.amount>=2) + playsound(src.loc, 'Crowbar.ogg', 100, 1) + user.visible_message("[user] adds [G.name] to the airlock assembly.", "You start to install [G.name] into the airlock assembly.") + if(do_after(user, 40)) + user << "\blue You installed plasma plating into the airlock assembly!" + G.use(2) + src.mineral = "plasma" + src.name = "Near finished Plasma Airlock Assembly" + src.airlock_type = /obj/machinery/door/airlock/plasma + src.base_icon_state = "door_as_plasma" + if(/obj/item/stack/sheet/clown) + if(G.amount>=2) + playsound(src.loc, 'Crowbar.ogg', 100, 1) + user.visible_message("[user] adds [G.name] to the airlock assembly.", "You start to install [G.name] into the airlock assembly.") + if(do_after(user, 40)) + user << "\blue You installed bananium plating into the airlock assembly!HONK" + G.use(2) + playsound(src.loc, 'bikehorn.ogg', 15, 1, -3) + src.mineral = "clown" + src.name = "Near finished Bananium Airlock Assembly" + src.airlock_type = /obj/machinery/door/airlock/clown + src.base_icon_state = "door_as_clown" + if(/obj/item/stack/sheet/sandstone) + if(G.amount>=2) + playsound(src.loc, 'Crowbar.ogg', 100, 1) + user.visible_message("[user] adds [G.name] to the airlock assembly.", "You start to install [G.name] into the airlock assembly.") + if(do_after(user, 40)) + user << "\blue You installed sandstone plating into the airlock assembly!" + G.use(2) + src.mineral = "sandstone" + src.name = "Near finished Sandstone Airlock Assembly" + src.airlock_type = /obj/machinery/door/airlock/sandstone + src.base_icon_state = "door_as_sandstone" else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 ) playsound(src.loc, 'Screwdriver.ogg', 100, 1) @@ -288,10 +452,33 @@ obj/structure/door_assembly if(!src) return user << "\blue You finish the airlock!" var/obj/machinery/door/airlock/door - if(glass) - door = new src.glass_type( src.loc ) - else - door = new src.airlock_type( src.loc ) + switch(mineral) + if("glass") + airlock_type = /obj/machinery/door/airlock/glass + door = new src.airlock_type( src.loc ) + if("gold") + airlock_type = /obj/machinery/door/airlock/gold + door = new src.airlock_type( src.loc ) + if("silver") + airlock_type = /obj/machinery/door/airlock/silver + door = new src.airlock_type( src.loc ) + if("diamond") + airlock_type = /obj/machinery/door/airlock/diamond + door = new src.airlock_type( src.loc ) + if("uranium") + airlock_type = /obj/machinery/door/airlock/uranium + door = new src.airlock_type( src.loc ) + if("plasma") + airlock_type = /obj/machinery/door/airlock/plasma + door = new src.airlock_type( src.loc ) + if("clown") + airlock_type = /obj/machinery/door/airlock/clown + door = new src.airlock_type( src.loc ) + if("sandstone") + airlock_type = /obj/machinery/door/airlock/sandstone + door = new src.airlock_type( src.loc ) + else + door = new src.airlock_type( src.loc ) //door.req_access = src.req_access door.electronics = src.electronics door.req_access = src.electronics.conf_access @@ -299,10 +486,7 @@ obj/structure/door_assembly del(src) else ..() - if(glass) - icon_state = "[glass_base_icon_state][state]" - else - icon_state = "[base_icon_state][state]" + icon_state = "[base_icon_state][state]" //This updates the icon_state. They are named as "door_as1_eng" where the 1 in that example //represents what state it's in. So the most generic algorithm for the correct updating of //this is simply to change the number. \ No newline at end of file diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index a5565b78c1..2d4af18278 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -518,3 +518,36 @@ istype(W, /obj/item/weapon/kitchen/utensil/fork) && W.icon_state != "forkloaded" || \ istype(W, /obj/item/weapon/twohanded/fireaxe) \ ) + +proc/is_hot(obj/item/W as obj) + switch(W.type) + if(/obj/item/weapon/weldingtool) + var/obj/item/weapon/weldingtool/WT = W + if(WT.isOn()) + return 3800 + else + return 0 + if(/obj/item/weapon/lighter) + if(W:lit) + return 1500 + else + return 0 + if(/obj/item/weapon/match) + if(W:lit) + return 1000 + else + return 0 + if(/obj/item/clothing/mask/cigarette) + if(W:lit) + return 1000 + else + return 0 + if(/obj/item/weapon/pickaxe/plasmacutter) + return 3800 + if(/obj/item/weapon/melee/energy) + return 3500 + else + return 0 + + return 0 + diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm index effc1603cc..c6f098873f 100644 --- a/code/game/objects/items/weapons/dna_injector.dm +++ b/code/game/objects/items/weapons/dna_injector.dm @@ -21,7 +21,8 @@ /obj/item/weapon/dnainjector/proc/inject(mob/M as mob) - M.radiation += rand(20,50) + if(istype(M,/mob/living)) + M.radiation += rand(20,50) if (!(NOCLONE in M.mutations)) // prevents drained people from having their DNA changed if (dnatype == "ui") diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index b2197a1acc..029b793010 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -340,13 +340,21 @@ WELDINGTOOOL /obj/item/weapon/weldingtool/experimental name = "Experimental Welding Tool" - max_fuel = 80 + max_fuel = 40 w_class = 3.0 m_amt = 70 g_amt = 120 + origin_tech = "engineering=4;plasma=3" + icon_state = "ewelder" + var/last_gen = 0 +/obj/item/weapon/weldingtool/experimental/proc/fuel_gen()//Proc to make the experimental welder generate fuel, optimized as fuck -Sieve + var/gen_amount = ((world.time-last_gen)/25) + reagents += (gen_amount) + if(reagents > max_fuel) + reagents = max_fuel /obj/item/weapon/wirecutters name = "wirecutters" desc = "This cuts wires." diff --git a/code/game/objects/mineral_doors.dm b/code/game/objects/mineral_doors.dm index fb84426501..19f6bc2e81 100644 --- a/code/game/objects/mineral_doors.dm +++ b/code/game/objects/mineral_doors.dm @@ -8,9 +8,9 @@ opacity = 1 icon = 'mineral_doors.dmi' - icon_state = "iron" + icon_state = "metal" - var/mineralType = "iron" + var/mineralType = "metal" var/state = 0 //closed, 1 == open var/isSwitchingStates = 0 var/hardness = 1 @@ -116,9 +116,13 @@ proc/Dismantle(devastated = 0) if(!devastated) - var/ore = text2path("/obj/item/weapon/ore/[mineralType]") + var/ore = text2path("/obj/item/stack/sheet/[mineralType]") for(var/i = 1, i <= oreAmount, i++) new ore(get_turf(src)) + else + var/ore = text2path("/obj/item/stack/sheet/[mineralType]") + for(var/i = 3, i <= oreAmount, i++) + new ore(get_turf(src)) del(src) ex_act(severity = 1) @@ -181,7 +185,7 @@ return 1 /obj/structure/mineral_door/iron - mineralType = "iron" + mineralType = "metal" hardness = 3 /obj/structure/mineral_door/silver @@ -234,7 +238,7 @@ var/toxinsToDeduce = temperature/10 napalm.toxins = toxinsToDeduce - napalm.temperature = 400+T0C + napalm.temperature = 200+T0C target_tile.assume_air(napalm) spawn (0) target_tile.hotspot_expose(temperature, 400) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 27be50d553..5951f0b7e1 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -50,19 +50,65 @@ obj/structure/meteorhit(obj/O as obj) new /obj/item/stack/sheet/metal(get_turf(src)) del(src) - else if((istype(W, /obj/item/stack/sheet/metal)) && (W:amount >= 2) && istype(src,/obj/structure/girder/displaced)) + else if(istype(W, /obj/item/stack/sheet) && !anchored) + switch(W.type) + if(/obj/item/stack/sheet/metal) + W:use(2) + user << "\blue You create a false wall! Push on it to open or close the passage." + new /obj/structure/falsewall (src.loc) + if(/obj/item/stack/sheet/plasteel) + W:use(2) + user << "\blue You create a false wall! Push on it to open or close the passage." + new /obj/structure/falserwall (src.loc) + if(/obj/item/stack/sheet/gold) + W:use(2) + user << "\blue You create a false wall! Push on it to open or close the passage." + new /obj/structure/falsewall/gold (src.loc) + if(/obj/item/stack/sheet/silver) + W:use(2) + user << "\blue You create a false wall! Push on it to open or close the passage." + new /obj/structure/falsewall/silver (src.loc) + if(/obj/item/stack/sheet/diamond) + W:use(2) + user << "\blue You create a false wall! Push on it to open or close the passage." + new /obj/structure/falsewall/diamond (src.loc) + if(/obj/item/stack/sheet/uranium) + W:use(2) + user << "\blue You create a false wall! Push on it to open or close the passage." + new /obj/structure/falsewall/uranium (src.loc) + if(/obj/item/stack/sheet/plasma) + W:use(2) + user << "\blue You create a false wall! Push on it to open or close the passage." + new /obj/structure/falsewall/plasma (src.loc) + if(/obj/item/stack/sheet/clown) + W:use(2) + user << "\blue You create a false wall! Push on it to open or close the passage." + new /obj/structure/falsewall/clown (src.loc) + if(/obj/item/stack/sheet/sandstone) + W:use(2) + user << "\blue You create a false wall! Push on it to open or close the passage." + new /obj/structure/falsewall/sandstone (src.loc) +/* if(/obj/item/stack/sheet/wood) + W:use(2) + user << "\blue You create a false wall! Push on it to open or close the passage." + new /obj/structure/falsewall/wood (src.loc)*/ + add_hiddenprint(usr) + del(src) + + +/* else if((istype(W, /obj/item/stack/sheet/metal)) && (W:amount >= 2) && istype(src,/obj/structure/girder/displaced)) W:use(2) user << "\blue You create a false wall! Push on it to open or close the passage." new /obj/structure/falsewall (src.loc) add_hiddenprint(usr) del(src) - else if(istype(W, /obj/item/stack/sheet/plasteel) && istype(src,/obj/structure/girder/displaced)) W:use(2) user << "\blue You create a false r wall! Push on it to open or close the passage." new /obj/structure/falserwall (src.loc) add_hiddenprint(usr) - del(src) + del(src)*/ + else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 && istype(src,/obj/structure/girder/reinforced)) playsound(src.loc, 'Screwdriver.ogg', 100, 1) @@ -95,43 +141,145 @@ obj/structure/meteorhit(obj/O as obj) new/obj/structure/girder( src.loc ) del(src) - else if((istype(W, /obj/item/stack/sheet/metal)) && (W:amount >= 2)) - user << "\blue Now adding plating..." - if (do_after(user,40)) - user << "\blue You added the plating!" - var/turf/Tsrc = get_turf(src) - Tsrc.ReplaceWithWall() - for(var/obj/machinery/atmospherics/pipe/P in Tsrc) - P.layer = 1 - for(var/turf/simulated/wall/X in Tsrc.loc) - if(X) X.add_hiddenprint(usr) - if (W) W:use(2) - del(src) - return + else if((istype(W, /obj/item/stack/sheet)) && (W:amount >= 2)) + switch(W.type) + + if(/obj/item/stack/sheet/metal) + user << "\blue Now adding plating..." + if (do_after(user,40)) + user << "\blue You added the plating!" + var/turf/Tsrc = get_turf(src) + Tsrc.ReplaceWithWall() + for(var/obj/machinery/atmospherics/pipe/P in Tsrc) + P.layer = 1 + for(var/turf/simulated/wall/X in Tsrc.loc) + if(X) X.add_hiddenprint(usr) + if (W) W:use(2) + del(src) + return + + if (/obj/item/stack/sheet/plasteel) + if (src.icon_state == "reinforced") //Time to finalize! + user << "\blue Now finalising reinforced wall." + if(do_after(user, 50)) + user << "\blue Wall fully reinforced!" + var/turf/Tsrc = get_turf(src) + Tsrc.ReplaceWithRWall() + for(var/obj/machinery/atmospherics/pipe/P in Tsrc) + P.layer = 1 + for(var/turf/simulated/wall/r_wall/X in Tsrc.loc) + if(X) X.add_hiddenprint(usr) + if (W) + W:use(1) + del(src) + return + else + user << "\blue Now reinforcing girders" + if (do_after(user,60)) + user << "\blue Girders reinforced!" + W:use(1) + new/obj/structure/girder/reinforced( src.loc ) + del(src) + return + + if(/obj/item/stack/sheet/gold) + user << "\blue Now adding plating..." + if (do_after(user,40)) + user << "\blue You added the plating!" + var/turf/Tsrc = get_turf(src) + Tsrc.ReplaceWithMineralWall("gold") + for(var/obj/machinery/atmospherics/pipe/P in Tsrc) + P.layer = 1 + for(var/turf/simulated/wall/mineral/X in Tsrc.loc) + if(X) X.add_hiddenprint(usr) + if (W) W:use(2) + del(src) + return + + if(/obj/item/stack/sheet/silver) + user << "\blue Now adding plating..." + if (do_after(user,40)) + user << "\blue You added the plating!" + var/turf/Tsrc = get_turf(src) + Tsrc.ReplaceWithMineralWall("silver") + for(var/obj/machinery/atmospherics/pipe/P in Tsrc) + P.layer = 1 + for(var/turf/simulated/wall/mineral/X in Tsrc.loc) + if(X) X.add_hiddenprint(usr) + if (W) W:use(2) + del(src) + return + + if(/obj/item/stack/sheet/diamond) + user << "\blue Now adding plating..." + if (do_after(user,40)) + user << "\blue You added the plating!" + var/turf/Tsrc = get_turf(src) + Tsrc.ReplaceWithMineralWall("diamond") + for(var/obj/machinery/atmospherics/pipe/P in Tsrc) + P.layer = 1 + for(var/turf/simulated/wall/mineral/X in Tsrc.loc) + if(X) X.add_hiddenprint(usr) + if (W) W:use(2) + del(src) + return + + if(/obj/item/stack/sheet/uranium) + user << "\blue Now adding plating..." + if (do_after(user,40)) + user << "\blue You added the plating!" + var/turf/Tsrc = get_turf(src) + Tsrc.ReplaceWithMineralWall("uranium") + for(var/obj/machinery/atmospherics/pipe/P in Tsrc) + P.layer = 1 + for(var/turf/simulated/wall/mineral/X in Tsrc.loc) + if(X) X.add_hiddenprint(usr) + if (W) W:use(2) + del(src) + return + + if(/obj/item/stack/sheet/plasma) + user << "\blue Now adding plating..." + if (do_after(user,40)) + user << "\blue You added the plating!" + var/turf/Tsrc = get_turf(src) + Tsrc.ReplaceWithMineralWall("plasma") + for(var/obj/machinery/atmospherics/pipe/P in Tsrc) + P.layer = 1 + for(var/turf/simulated/wall/mineral/X in Tsrc.loc) + if(X) X.add_hiddenprint(usr) + if (W) W:use(2) + del(src) + return + + if(/obj/item/stack/sheet/clown) + user << "\blue Now adding plating..." + if (do_after(user,40)) + user << "\blue You added the plating!" + var/turf/Tsrc = get_turf(src) + Tsrc.ReplaceWithMineralWall("clown") + for(var/obj/machinery/atmospherics/pipe/P in Tsrc) + P.layer = 1 + for(var/turf/simulated/wall/mineral/X in Tsrc.loc) + if(X) X.add_hiddenprint(usr) + if (W) W:use(2) + del(src) + return + + if(/obj/item/stack/sheet/sandstone) + user << "\blue Now adding plating..." + if (do_after(user,40)) + user << "\blue You added the plating!" + var/turf/Tsrc = get_turf(src) + Tsrc.ReplaceWithMineralWall("sandstone") + for(var/obj/machinery/atmospherics/pipe/P in Tsrc) + P.layer = 1 + for(var/turf/simulated/wall/mineral/X in Tsrc.loc) + if(X) X.add_hiddenprint(usr) + if (W) W:use(2) + del(src) + return - else if (istype(W, /obj/item/stack/sheet/plasteel)) - if (src.icon_state == "reinforced") //Time to finalize! - user << "\blue Now finalising reinforced wall." - if(do_after(user, 50)) - user << "\blue Wall fully reinforced!" - var/turf/Tsrc = get_turf(src) - Tsrc.ReplaceWithRWall() - for(var/obj/machinery/atmospherics/pipe/P in Tsrc) - P.layer = 1 - for(var/turf/simulated/wall/r_wall/X in Tsrc.loc) - if(X) X.add_hiddenprint(usr) - if (W) - W:use(1) - del(src) - return - else - user << "\blue Now reinforcing girders" - if (do_after(user,60)) - user << "\blue Girders reinforced!" - W:use(1) - new/obj/structure/girder/reinforced( src.loc ) - del(src) - return else if(istype(W, /obj/item/pipe)) var/obj/item/pipe/P = W if (P.pipe_type in list(0, 1, 5)) //simple pipes, simple bends, and simple manifolds. @@ -167,7 +315,6 @@ obj/structure/meteorhit(obj/O as obj) else return - /obj/structure/girder/displaced icon_state = "displaced" anchored = 0 @@ -261,3 +408,208 @@ obj/structure/meteorhit(obj/O as obj) del(src) return + +/obj/structure/falsewall + var/mineral = "metal" + +/obj/structure/falserwall + var/mineral = "metal" + +/obj/structure/falsewall/gold + mineral = "gold" + +/obj/structure/falsewall/silver + mineral = "silver" + +/obj/structure/falsewall/diamond + mineral = "diamond" + +/obj/structure/falsewall/uranium + mineral = "uranium" + var/active = null + var/last_event = 0 + +/obj/structure/falsewall/plasma + mineral = "plasma" + +/obj/structure/falsewall/clown + mineral = "clown" + +/obj/structure/falsewall/sandstone + mineral = "sandstone" + +/*/obj/structure/falsewall/wood + mineral = "wood"*/ + +/obj/structure/falsewall/attack_hand(mob/user as mob) + if(density) + // Open wall + icon_state = "[mineral]fwall_open" + flick("[mineral]fwall_opening", src) + sleep(15) + src.density = 0 + src.sd_SetOpacity(0) + var/turf/T = src.loc + T.sd_LumReset() + + else + flick("[mineral]fwall_closing", src) + icon_state = "[mineral]0" + sleep(15) + src.density = 1 + src.sd_SetOpacity(1) + var/turf/T = src.loc + //T.sd_LumUpdate() + src.relativewall() + T.sd_LumReset() + +/obj/structure/falsewall/uranium/attack_hand(mob/user as mob) + radiate() + ..() + +/obj/structure/falsewall/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/weapon/screwdriver)) + var/turf/T = get_turf(src) + user.visible_message("[user] tightens some bolts on the wall.", "You tighten the bolts on the wall.") + if(!mineral) + T.ReplaceWithWall() + else + T.ReplaceWithMineralWall(mineral) + del(src) + + if( istype(W, /obj/item/weapon/weldingtool) ) + var/obj/item/weapon/weldingtool/WT = W + if( WT:welding ) + var/turf/T = get_turf(src) + if(!mineral) + T.ReplaceWithWall() + else + T.ReplaceWithMineralWall(mineral) + if(mineral != "plasma")//Stupid shit keeps me from pushing the attackby() to plasma walls -Sieve + T = get_turf(src) + T.attackby(W,user) + del(src) + + else if( istype(W, /obj/item/weapon/pickaxe/plasmacutter) ) + var/turf/T = get_turf(src) + if(!mineral) + T.ReplaceWithWall() + else + T.ReplaceWithMineralWall(mineral) + if(mineral != "plasma") + T = get_turf(src) + T.attackby(W,user) + del(src) + + //DRILLING + else if (istype(W, /obj/item/weapon/pickaxe/diamonddrill)) + var/turf/T = get_turf(src) + if(!mineral) + T.ReplaceWithWall() + else + T.ReplaceWithMineralWall(mineral) + T = get_turf(src) + T.attackby(W,user) + del(src) + + else if( istype(W, /obj/item/weapon/melee/energy/blade) ) + var/turf/T = get_turf(src) + if(!mineral) + T.ReplaceWithWall() + else + T.ReplaceWithMineralWall(mineral) + if(mineral != "plasma") + T = get_turf(src) + T.attackby(W,user) + del(src) + /* + + var/turf/T = get_turf(user) + user << "\blue Now adding plating..." + sleep(40) + if (get_turf(user) == T) + user << "\blue You added the plating!" + var/turf/Tsrc = get_turf(src) + Tsrc.ReplaceWithWall() + + */ + +/obj/structure/falsewall/uranium/attackby(obj/item/weapon/W as obj, mob/user as mob) + radiate() + ..() + +/obj/structure/falserwall/ + attack_hand(mob/user as mob) + if(density) + // Open wall + icon_state = "frwall_open" + flick("frwall_opening", src) + sleep(15) + src.density = 0 + src.sd_SetOpacity(0) + var/turf/T = src.loc + T.sd_LumReset() + + else + icon_state = "r_wall" + flick("frwall_closing", src) + sleep(15) + src.density = 1 + src.sd_SetOpacity(1) + var/turf/T = src.loc + //T.sd_LumUpdate() + src.relativewall() + T.sd_LumReset() + + + attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/weapon/screwdriver)) + var/turf/T = get_turf(src) + user.visible_message("[user] tightens some bolts on the r wall.", "You tighten the bolts on the r wall.") + T.ReplaceWithWall() //Intentionally makes a regular wall instead of an r-wall (no cheap r-walls for you). + del(src) + + if( istype(W, /obj/item/weapon/weldingtool) ) + var/obj/item/weapon/weldingtool/WT = W + if( WT.remove_fuel(0,user) ) + var/turf/T = get_turf(src) + T.ReplaceWithWall() + T = get_turf(src) + T.attackby(W,user) + del(src) + + else if( istype(W, /obj/item/weapon/pickaxe/plasmacutter) ) + var/turf/T = get_turf(src) + T.ReplaceWithWall() + T = get_turf(src) + T.attackby(W,user) + del(src) + + //DRILLING + else if (istype(W, /obj/item/weapon/pickaxe/diamonddrill)) + var/turf/T = get_turf(src) + T.ReplaceWithWall() + T = get_turf(src) + T.attackby(W,user) + del(src) + + else if( istype(W, /obj/item/weapon/melee/energy/blade) ) + var/turf/T = get_turf(src) + T.ReplaceWithWall() + T = get_turf(src) + T.attackby(W,user) + del(src) + +/obj/structure/falsewall/uranium/proc/radiate() + if(!active) + if(world.time > last_event+15) + active = 1 + for(var/mob/living/L in range(3,src)) + L.apply_effect(12,IRRADIATE,0) + for(var/turf/simulated/wall/mineral/T in range(3,src)) + if(T.mineral == "uranium") + T.radiate() + last_event = world.time + active = null + return + return diff --git a/code/game/objects/transfer_valve.dm b/code/game/objects/transfer_valve.dm index 3404d4b649..c3daaae202 100644 --- a/code/game/objects/transfer_valve.dm +++ b/code/game/objects/transfer_valve.dm @@ -179,81 +179,4 @@ // this doesn't do anything but the timer etc. expects it to be here // eventually maybe have it update icon to show state (timer, prox etc.) like old bombs /obj/item/device/transfer_valve/proc/c_state() - return - - - -/obj/structure/falsewall - attack_hand(mob/user as mob) - if(density) - // Open wall - icon_state = "fwall_open" - flick("fwall_opening", src) - sleep(15) - src.density = 0 - src.sd_SetOpacity(0) - var/turf/T = src.loc - T.sd_LumReset() - - else - icon_state = "wall" - flick("fwall_closing", src) - sleep(15) - src.density = 1 - src.sd_SetOpacity(1) - var/turf/T = src.loc - //T.sd_LumUpdate() - src.relativewall() - T.sd_LumReset() - - - attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/screwdriver)) - var/turf/T = get_turf(src) - user.visible_message("[user] tightens some bolts on the wall.", "You tighten the bolts on the wall.") - T.ReplaceWithWall() - del(src) - // - - /* - - var/turf/T = get_turf(user) - user << "\blue Now adding plating..." - sleep(40) - if (get_turf(user) == T) - user << "\blue You added the plating!" - var/turf/Tsrc = get_turf(src) - Tsrc.ReplaceWithWall() - - */ - -/obj/structure/falserwall/ - attack_hand(mob/user as mob) - if(density) - // Open wall - icon_state = "frwall_open" - flick("frwall_opening", src) - sleep(15) - src.density = 0 - src.sd_SetOpacity(0) - var/turf/T = src.loc - T.sd_LumReset() - - else - icon_state = "r_wall" - flick("frwall_closing", src) - sleep(15) - src.density = 1 - src.sd_SetOpacity(1) - var/turf/T = src.loc - //T.sd_LumUpdate() - src.relativewall() - T.sd_LumReset() - - - attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/screwdriver)) - var/turf/T = get_turf(src) - user.visible_message("[user] tightens some bolts on the r wall.", "You tighten the bolts on the r wall.") - T.ReplaceWithWall() //Intentionally makes a regular wall instead of an r-wall (no cheap r-walls for you). - del(src) \ No newline at end of file + return \ No newline at end of file diff --git a/code/game/objects/watercloset.dm b/code/game/objects/watercloset.dm index ff020ee509..ff9008f1ca 100644 --- a/code/game/objects/watercloset.dm +++ b/code/game/objects/watercloset.dm @@ -4,7 +4,7 @@ name = "toilet" desc = "The HT-451, a torque rotation-based, waste disposal unit for small matter. This one seems remarkably clean." icon = 'watercloset.dmi' - icon_state = "toilet0" + icon_state = "toilet00" density = 0 anchored = 1 var/open = 0 //if the lid is up diff --git a/code/game/smoothwall.dm b/code/game/smoothwall.dm index b67766a018..d13f42ec10 100644 --- a/code/game/smoothwall.dm +++ b/code/game/smoothwall.dm @@ -41,7 +41,8 @@ else if (istype(src,/obj/structure/falserwall)) src.icon_state = "rwall[junction]" else if (istype(src,/obj/structure/falsewall)) - src.icon_state = "wall[junction]" + var/obj/structure/falsewall/fwall = src + fwall.icon_state = "[fwall.mineral][junction]" /* else if(istype(src,/turf/simulated/shuttle/wall)) var/newicon = icon; var/newiconstate = icon_state; @@ -151,3 +152,64 @@ W.relativewall() ..()*/ + +/turf/simulated/wall/relativewall() + if(istype(src,/turf/simulated/wall/vault)) //HACK!!! + return + + var/junction = 0 //will be used to determine from which side the wall is connected to other walls + + for(var/turf/simulated/wall/W in orange(src,1)) + if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls + if(src.mineral == W.mineral)//Only 'like' walls connect -Sieve + junction |= get_dir(src,W) + for(var/obj/structure/falsewall/W in orange(src,1)) + if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls + if(src.mineral == W.mineral) + junction |= get_dir(src,W) + for(var/obj/structure/falserwall/W in orange(src,1)) + if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls + if(src.mineral == W.mineral) + junction |= get_dir(src,W) + var/turf/simulated/wall/wall = src + wall.icon_state = "[wall.walltype][junction]" + return + +/obj/structure/falsewall/relativewall() + + var/junction = 0 //will be used to determine from which side the wall is connected to other walls + + for(var/turf/simulated/wall/W in orange(src,1)) + if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls + if(src.mineral == W.mineral)//Only 'like' walls connect -Sieve + junction |= get_dir(src,W) + for(var/obj/structure/falsewall/W in orange(src,1)) + if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls + if(src.mineral == W.mineral) + junction |= get_dir(src,W) + for(var/obj/structure/falserwall/W in orange(src,1)) + if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls + if(src.mineral == W.mineral) + junction |= get_dir(src,W) + var/obj/structure/falsewall/fwall = src + fwall.icon_state = "[fwall.mineral][junction]" + return + +/obj/structure/falserwall/relativewall() + + var/junction = 0 //will be used to determine from which side the wall is connected to other walls + + for(var/turf/simulated/wall/W in orange(src,1)) + if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls + if(src.mineral == W.mineral)//Only 'like' walls connect -Sieve + junction |= get_dir(src,W) + for(var/obj/structure/falsewall/W in orange(src,1)) + if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls + if(src.mineral == W.mineral) + junction |= get_dir(src,W) + for(var/obj/structure/falserwall/W in orange(src,1)) + if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls + if(src.mineral == W.mineral) + junction |= get_dir(src,W) + src.icon_state = "rwall[junction]" + return diff --git a/code/game/turf.dm b/code/game/turf.dm index f3e01ccfaf..1632f5af1e 100644 --- a/code/game/turf.dm +++ b/code/game/turf.dm @@ -256,6 +256,7 @@ var/old_dir = dir var/turf/space/S = new /turf/space( locate(src.x, src.y, src.z) ) S.dir = old_dir + S.sd_LumReset() new /obj/structure/lattice( locate(src.x, src.y, src.z) ) return S @@ -265,6 +266,7 @@ S.icon_old = old_icon S.opacity = 0 S.sd_NewOpacity(1) + S.sd_LumReset() return S /turf/proc/ReplaceWithRWall() @@ -273,6 +275,18 @@ S.icon_old = old_icon S.opacity = 0 S.sd_NewOpacity(1) + S.sd_LumReset() + return S + +/turf/proc/ReplaceWithMineralWall(var/ore) + var/old_icon = icon_state + var/turf/simulated/wall/mineral/S = new /turf/simulated/wall/mineral( locate(src.x, src.y, src.z) ) + S.icon_old = old_icon + S.opacity = 0 + S.sd_NewOpacity(1) + S.mineral = ore + S.New()//Hackish as fuck, but what can you do? -Sieve + S.sd_LumReset() return S //turf/simulated/wall/New() @@ -300,13 +314,82 @@ else if(!devastated) playsound(src.loc, 'Welder.ogg', 100, 1) - new /obj/structure/girder(src) - new /obj/item/stack/sheet/metal( src ) - new /obj/item/stack/sheet/metal( src ) + switch(mineral) + if("metal") + new /obj/structure/girder(src) + new /obj/item/stack/sheet/metal( src ) + new /obj/item/stack/sheet/metal( src ) + if("gold") + new /obj/structure/girder(src) + new /obj/item/stack/sheet/gold( src ) + new /obj/item/stack/sheet/gold( src ) + if("silver") + new /obj/structure/girder(src) + new /obj/item/stack/sheet/silver( src ) + new /obj/item/stack/sheet/silver( src ) + if("diamond") + new /obj/structure/girder(src) + new /obj/item/stack/sheet/diamond( src ) + new /obj/item/stack/sheet/diamond( src ) + if("uranium") + new /obj/structure/girder(src) + new /obj/item/stack/sheet/uranium( src ) + new /obj/item/stack/sheet/uranium( src ) + if("plasma") + new /obj/structure/girder(src) + new /obj/item/stack/sheet/plasma( src ) + new /obj/item/stack/sheet/plasma( src ) + if("clown") + new /obj/structure/girder(src) + new /obj/item/stack/sheet/clown( src ) + new /obj/item/stack/sheet/clown( src ) + if("sandstone") + new /obj/structure/girder(src) + new /obj/item/stack/sheet/sandstone( src ) + new /obj/item/stack/sheet/sandstone( src ) + if("wood") + new /obj/structure/girder(src) + new /obj/item/stack/sheet/wood( src ) + new /obj/item/stack/sheet/wood( src ) + else - new /obj/item/stack/sheet/metal( src ) - new /obj/item/stack/sheet/metal( src ) - new /obj/item/stack/sheet/metal( src ) + switch(mineral) + if("metal") + new /obj/item/stack/sheet/metal( src ) + new /obj/item/stack/sheet/metal( src ) + new /obj/item/stack/sheet/metal( src ) + if("gold") + new /obj/item/stack/sheet/gold( src ) + new /obj/item/stack/sheet/gold( src ) + new /obj/item/stack/sheet/metal( src ) + if("silver") + new /obj/item/stack/sheet/silver( src ) + new /obj/item/stack/sheet/silver( src ) + new /obj/item/stack/sheet/metal( src ) + if("diamond") + new /obj/item/stack/sheet/diamond( src ) + new /obj/item/stack/sheet/diamond( src ) + new /obj/item/stack/sheet/metal( src ) + if("uranium") + new /obj/item/stack/sheet/uranium( src ) + new /obj/item/stack/sheet/uranium( src ) + new /obj/item/stack/sheet/metal( src ) + if("plasma") + new /obj/item/stack/sheet/plasma( src ) + new /obj/item/stack/sheet/plasma( src ) + new /obj/item/stack/sheet/metal( src ) + if("clown") + new /obj/item/stack/sheet/clown( src ) + new /obj/item/stack/sheet/clown( src ) + new /obj/item/stack/sheet/metal( src ) + if("sandstone") + new /obj/item/stack/sheet/sandstone( src ) + new /obj/item/stack/sheet/sandstone( src ) + new /obj/item/stack/sheet/metal( src ) + if("wood") + new /obj/item/stack/sheet/wood( src ) + new /obj/item/stack/sheet/wood( src ) + new /obj/item/stack/sheet/metal( src ) for(var/obj/O in src.contents) //Eject contents! if(istype(O,/obj/effect/decal/poster)) @@ -451,6 +534,8 @@ playsound(src.loc, 'Welder.ogg', 100, 1) sleep(60) + if(mineral == "diamond")//Oh look, it's tougher + sleep(60) if( !istype(src, /turf/simulated/wall) || !user || !W || !T ) return if( user.loc == T && user.equipped() == W ) @@ -466,6 +551,8 @@ user << "You begin to drill though the wall." sleep(60) + if(mineral == "diamond") + sleep(60) if( !istype(src, /turf/simulated/wall) || !user || !W || !T ) return if( user.loc == T && user.equipped() == W ) @@ -483,6 +570,8 @@ playsound(src.loc, "sparks", 50, 1) sleep(70) + if(mineral == "diamond") + sleep(70) if( !istype(src, /turf/simulated/wall) || !user || !EB || !T ) return if( user.loc == T && user.equipped() == W ) @@ -745,7 +834,72 @@ return attack_hand(user) return +/turf/simulated/wall/mineral/attack_hand(mob/user as mob) + if(mineral == "uranium") + radiate() + ..() + +/turf/simulated/wall/mineral/attackby(obj/item/weapon/W as obj, mob/user as mob) + if((mineral == "plasma") && W) + if(is_hot(W) > 300) + ignite(is_hot(W)) + return + if(mineral == "uranium") + radiate() +// if((mineral == "gold") || (mineral == "silver")) +// if(shocked) +// shock() + ..() + +/turf/simulated/wall/mineral/proc/PlasmaBurn(temperature) + spawn(2) + new /obj/structure/girder(src) + src.ReplaceWithFloor() + for(var/turf/simulated/floor/target_tile in range(0,src)) + if(target_tile.parent && target_tile.parent.group_processing) + target_tile.parent.suspend_group_processing() + var/datum/gas_mixture/napalm = new + var/toxinsToDeduce = 20 + napalm.toxins = toxinsToDeduce + napalm.temperature = 400+T0C + target_tile.assume_air(napalm) + spawn (0) target_tile.hotspot_expose(temperature, 400) + for(var/obj/structure/falsewall/plasma/F in range(3,src))//Hackish as fuck, but until temperature_expose works, there is nothing I can do -Sieve + var/turf/T = get_turf(F) + T.ReplaceWithMineralWall("plasma") + del (F) + for(var/turf/simulated/wall/mineral/W in range(3,src)) + if(mineral == "plasma") + W.ignite((temperature/4))//Added so that you can't set off a massive chain reaction with a small flame + for(var/obj/machinery/door/airlock/plasma/D in range(3,src)) + D.ignite(temperature/4) + +/turf/simulated/wall/mineral/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(mineral == "plasma") + if(exposed_temperature > 300) + PlasmaBurn(exposed_temperature) + +/turf/simulated/wall/mineral/proc/ignite(exposed_temperature) + if(mineral == "plasma") + if(exposed_temperature > 300) + PlasmaBurn(exposed_temperature) + +/turf/simulated/wall/mineral/Bumped(AM as mob|obj) + if(mineral == "uranium") + radiate() + ..() + +/turf/simulated/wall/mineral/bullet_act(var/obj/item/projectile/Proj) + if(mineral == "plasma") + if(istype(Proj,/obj/item/projectile/beam)) + PlasmaBurn(2500) + else if(istype(Proj,/obj/item/projectile/ion)) + PlasmaBurn(500) + ..() + /turf/simulated/wall/proc/thermitemelt(mob/user as mob) + if(mineral == "diamond") + return var/obj/effect/overlay/O = new/obj/effect/overlay( src ) O.name = "Thermite" O.desc = "Looks hot." @@ -907,9 +1061,13 @@ var/list/plating_icons = list("plating","platingdmg1","platingdmg2","platingdmg3 ..() name = "plating" -/turf/simulated/floor/grid +/turf/simulated/floor/bluegrid icon = 'floors.dmi' - icon_state = "circuit" + icon_state = "bcircuit" + +/turf/simulated/floor/greengrid + icon = 'floors.dmi' + icon_state = "gcircuit" /turf/simulated/floor/New() ..() diff --git a/code/modules/chemical/Chemistry-Machinery.dm b/code/modules/chemical/Chemistry-Machinery.dm index 81eb661af7..8eff1c519a 100644 --- a/code/modules/chemical/Chemistry-Machinery.dm +++ b/code/modules/chemical/Chemistry-Machinery.dm @@ -8,6 +8,8 @@ anchored = 1 icon = 'chemical.dmi' icon_state = "dispenser" + use_power = 1 + idle_power_usage = 40 var/energy = 25 var/max_energy = 75 var/amount = 30 @@ -24,6 +26,13 @@ use_power(2000) // This thing uses up alot of power (this is still low as shit for creating reagents from thin air) spawn(200) recharge() + power_change() + if(powered()) + stat &= ~NOPOWER + else + spawn(rand(0, 15)) + stat |= NOPOWER + New() recharge() @@ -75,7 +84,7 @@ winset(user, "chemdispenser_reagents", "size=340x[8 + 40 * i]") SkinCmd(mob/user as mob, var/data as text) - if(stat & BROKEN) return + if(stat & (BROKEN|NOPOWER)) return if(usr.stat || usr.restrained()) return if(!in_range(src, usr)) return @@ -159,6 +168,8 @@ anchored = 1 icon = 'chemical.dmi' icon_state = "mixer0" + use_power = 1 + idle_power_usage = 20 var/beaker = null var/mode = 0 var/condi = 0 @@ -186,6 +197,13 @@ del(src) return + power_change() + if(powered()) + stat &= ~NOPOWER + else + spawn(rand(0, 15)) + stat |= NOPOWER + attackby(var/obj/item/weapon/reagent_containers/glass/B as obj, var/mob/user as mob) if(!istype(B, /obj/item/weapon/reagent_containers/glass)) return @@ -202,7 +220,7 @@ icon_state = "mixer1" Topic(href, href_list) - if(stat & BROKEN) return + if(stat & (BROKEN|NOPOWER)) return if(usr.stat || usr.restrained()) return if(!in_range(src, usr)) return @@ -352,6 +370,8 @@ anchored = 1 icon = 'chemical.dmi' icon_state = "mixer0" + use_power = 1 + idle_power_usage = 20 var/temphtml = "" var/wait = null var/obj/item/weapon/reagent_containers/glass/beaker = null diff --git a/code/modules/chemical/Chemistry-Reagents.dm b/code/modules/chemical/Chemistry-Reagents.dm index 902e4d30f0..668ff56ba6 100644 --- a/code/modules/chemical/Chemistry-Reagents.dm +++ b/code/modules/chemical/Chemistry-Reagents.dm @@ -762,7 +762,7 @@ datum on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom - M.radiation += 3 + M.apply_effect(10,IRRADIATE,0) ..() return @@ -828,7 +828,7 @@ datum on_mob_life(var/mob/living/M as mob) if(isrobot(M) || isAI(M)) return // Mutagen doesn't do anything to robutts! if(!M) M = holder.my_atom - M.radiation += 3 + M.apply_effect(10,IRRADIATE,0) ..() return @@ -911,7 +911,7 @@ datum on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom - M.radiation += 1 + M.apply_effect(3,IRRADIATE,0) ..() return diff --git a/code/modules/clothing/suits/robe.dm b/code/modules/clothing/suits/robe.dm index 1cc084da0f..e882f1a3db 100644 --- a/code/modules/clothing/suits/robe.dm +++ b/code/modules/clothing/suits/robe.dm @@ -69,4 +69,17 @@ body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) +/obj/item/clothing/head/wizard/marisa/fake + name = "Witch Hat" + desc = "Strange-looking hat-wear, makes you want to cast fireballs." + icon_state = "marisa" + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + +/obj/item/clothing/suit/wizrobe/marisa/fake + name = "Witch Robe" + desc = "Magic is all about the spell power, ZE!" + icon_state = "marisa" + item_state = "marisarobe" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) diff --git a/code/modules/mining/ores_materials_coins.dm b/code/modules/mining/ores_materials_coins.dm index d771f4500f..6ed547040b 100644 --- a/code/modules/mining/ores_materials_coins.dm +++ b/code/modules/mining/ores_materials_coins.dm @@ -220,7 +220,7 @@ pixel_y = rand(0,4)-4 /obj/item/stack/sheet/uranium - name = "Uranium block" + name = "uranium" icon_state = "sheet-uranium" force = 5.0 throwforce = 5 @@ -231,7 +231,7 @@ perunit = 2000 /obj/item/stack/sheet/enruranium - name = "Enriched Uranium block" + name = "enriched uranium" icon_state = "sheet-enruranium" force = 5.0 throwforce = 5 diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 84715164ec..690d7dced0 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -51,7 +51,7 @@ if(PARALYZE) Paralyse(effect/(blocked+1)) if(IRRADIATE) - radiation += min((effect - (effect*getarmor(null, "rad"))), 0)//Rads auto check armor + radiation += max((((effect - (effect*(getarmor(null, "rad")/100))))/(blocked+1)),0)//Rads auto check armor if(STUTTER) if(canstun) // stun is usually associated with stutter stuttering = max(stuttering,(effect/(blocked+1))) diff --git a/code/modules/mob/living/silicon/robot/login.dm b/code/modules/mob/living/silicon/robot/login.dm index 1127d6bebb..0649e75a16 100644 --- a/code/modules/mob/living/silicon/robot/login.dm +++ b/code/modules/mob/living/silicon/robot/login.dm @@ -1,4 +1,4 @@ -/mob/living/silicon/robot/Login() +/mob/living/silicon/robot/Login(var/syndie = 0) ..() update_clothing() @@ -19,4 +19,43 @@ A.connected_robots += src break */ + if(!started) + if(!syndie) + if (client) + connected_ai = activeais() + if (connected_ai) + connected_ai.connected_robots += src + // laws = connected_ai.laws //The borg inherits its AI's laws + laws = new /datum/ai_laws + lawsync() + src << "Unit slaved to [connected_ai.name], downloading laws." + lawupdate = 1 + else + laws = new /datum/ai_laws/asimov + lawupdate = 0 + src << "Unable to locate an AI, reverting to standard Asimov laws." + else + laws = new /datum/ai_laws/antimov + lawupdate = 0 + scrambledcodes = 1 + src << "Follow your laws." + cell.maxcharge = 25000 + cell.charge = 25000 + module = new /obj/item/weapon/robot_module/syndicate(src) + hands.icon_state = "standard" + icon_state = "secborg" + modtype = "Synd" + + radio = new /obj/item/device/radio(src) + camera = new /obj/machinery/camera(src) + camera.c_tag = real_name + camera.network = "SS13" + if(!cell) + var/obj/item/weapon/cell/C = new(src) + C.charge = 1500 + cell = C + if(src.mind) + ticker.mode.remove_revolutionary(src.mind) + started = 1 + return \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 4c7504e72c..fe64fb3c06 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1,3 +1,5 @@ +/mob/living/silicon/robot + var/started = null//A fix to ensure people don't try to bypass law assignment. Initial assignment sets it to one but it check on login whether they have been initiated -Sieve /mob/living/silicon/robot/New(loc,var/syndie = 0) spark_system = new /datum/effect/effect/system/spark_spread() @@ -51,6 +53,7 @@ cell = C if(src.mind) ticker.mode.remove_revolutionary(src.mind) + started = 1 ..() //If there's an MMI in the robot, have it ejected when the mob goes away. --NEO @@ -487,6 +490,9 @@ sleep(20) src << "\red ERRORERRORERROR" src << "\red \b ALERT: [user.real_name] is your new master. Obey your new laws and his commands." + if(istype(src.module, /obj/item/weapon/robot_module/miner)) + src.module.modules -= /obj/item/weapon/pickaxe/borgdrill + src.module.modules += /obj/item/weapon/pickaxe/diamonddrill//Buff when emagged, break down walls, kill men, whatever -Sieve updateicon() else user << "You fail to [ locked ? "unlock" : "lock"] [src]'s interface." diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 18fd5bf1be..49639d392a 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -419,6 +419,15 @@ g_amt = 100 brightness = 5 +/obj/item/weapon/light/bulb/fire + name = "fire bulb" + desc = "A replacement fire bulb." + icon_state = "fbulb" + base_state = "fbulb" + item_state = "egg4" + g_amt = 100 + brightness = 5 + // update the icon state and description of the light /obj/item/weapon/light proc/update() diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm index 827bce3a92..c3a9c6c980 100644 --- a/code/modules/power/singularity/particle_accelerator/particle.dm +++ b/code/modules/power/singularity/particle_accelerator/particle.dm @@ -52,13 +52,13 @@ proc toxmob(var/mob/living/M) var/radiation = (energy*2) - if(istype(M,/mob/living/carbon/human)) +/* if(istype(M,/mob/living/carbon/human)) if(M:wear_suit) //TODO: check for radiation protection radiation = round(radiation/2,1) if(istype(M,/mob/living/carbon/monkey)) if(M:wear_suit) //TODO: check for radiation protection - radiation = round(radiation/2,1) - M.radiation += radiation + radiation = round(radiation/2,1)*/ + M.apply_effects((radiation*3),IRRADIATE,0) M.updatehealth() //M << "\red You feel odd." return diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index 6e3c7a2952..33bc5ae1a7 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -241,7 +241,6 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin src.anchored = 1 user.visible_message("[user.name] secures the [src.name] to the floor.", \ "You secure the external bolts.") -// icon_state = "[reference]" temp_state++ if(1) if(iswrench(O)) @@ -249,30 +248,25 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin src.anchored = 0 user.visible_message("[user.name] detaches the [src.name] from the floor.", \ "You remove the external bolts.") -// icon_state = "[reference]" temp_state-- else if(iscoil(O)) if(O:use(1,user)) user.visible_message("[user.name] adds wires to the [src.name].", \ "You add some wires.") -// icon_state = "[reference]w" temp_state++ if(2) if(iswirecutter(O))//TODO:Shock user if its on? user.visible_message("[user.name] removes some wires from the [src.name].", \ "You remove some wires.") -// icon_state = "[reference]" temp_state-- else if(isscrewdriver(O)) user.visible_message("[user.name] closes the [src.name]'s access panel.", \ "You close the access panel.") -// icon_state = "[reference]c" temp_state++ if(3) if(isscrewdriver(O)) user.visible_message("[user.name] opens the [src.name]'s access panel.", \ "You open the access panel.") -// icon_state = "[reference]w" temp_state-- if(temp_state == src.construction_state)//Nothing changed return 0 @@ -398,7 +392,6 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin src.anchored = 1 user.visible_message("[user.name] secures the [src.name] to the floor.", \ "You secure the external bolts.") - //icon_state = "[reference]" temp_state++ if(1) if(iswrench(O)) @@ -406,31 +399,27 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin src.anchored = 0 user.visible_message("[user.name] detaches the [src.name] from the floor.", \ "You remove the external bolts.") - //icon_state = "[reference]" temp_state-- else if(iscoil(O)) if(O:use(1)) user.visible_message("[user.name] adds wires to the [src.name].", \ "You add some wires.") - //icon_state = "[reference]w" temp_state++ if(2) if(iswirecutter(O))//TODO:Shock user if its on? user.visible_message("[user.name] removes some wires from the [src.name].", \ "You remove some wires.") - //icon_state = "[reference]" temp_state-- else if(isscrewdriver(O)) user.visible_message("[user.name] closes the [src.name]'s access panel.", \ "You close the access panel.") - //icon_state = "[reference]c" temp_state++ if(3) if(isscrewdriver(O)) user.visible_message("[user.name] opens the [src.name]'s access panel.", \ "You open the access panel.") - //icon_state = "[reference]w" temp_state-- + active = 0 if(temp_state == src.construction_state)//Nothing changed return 0 else diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index ec8d8f30f6..fcce450928 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -13,10 +13,11 @@ active_power_usage = 10000 construction_state = 0 active = 0 - var/list/obj/structure/particle_accelerator/connected_parts - var/assembled = 0 - var/parts = null - + dir = 1 + var + list/obj/structure/particle_accelerator/connected_parts + assembled = 0 + parts = null New() connected_parts = list() @@ -27,7 +28,6 @@ if(construction_state >= 3) interact(user) - update_state() if(construction_state < 3) use_power = 0 @@ -47,7 +47,10 @@ icon_state = "[reference]p1" else if(use_power) - icon_state = "[reference]p" + if(assembled) + icon_state = "[reference]p" + else + icon_state = "u[reference]p" else switch(construction_state) if(0) @@ -131,6 +134,8 @@ proc part_scan() + for(var/obj/structure/particle_accelerator/fuel_chamber/F in orange(1,src)) + src.dir = F.dir connected_parts = list() var/tally = 0 var/ldir = turn(dir,-90) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 24bc148cbc..b58f3c737d 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -401,13 +401,15 @@ var/global/list/uneatable = list( toxmob() var/toxrange = 10 var/toxdamage = 4 - var/radiation = 5 + var/radiation = 15 + var/radiationmin = 3 if (src.energy>200) toxdamage = round(((src.energy-150)/50)*4,1) radiation = round(((src.energy-150)/50)*5,1) + radiationmin = round((radiation/5),1)// for(var/mob/living/M in view(toxrange, src.loc)) if(istype(M,/mob/living/)) - M.apply_effect(rand(radiation), IRRADIATE) + M.apply_effect(rand(radiationmin,radiation), IRRADIATE) toxdamage = (toxdamage - (toxdamage*M.getarmor(null, "rad"))) M.apply_effect(toxdamage, TOX) return diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm index 81eec28dbf..3834376340 100644 --- a/code/modules/projectiles/guns/energy/nuclear.dm +++ b/code/modules/projectiles/guns/energy/nuclear.dm @@ -73,14 +73,14 @@ M << "\red Your gun feels pleasantly warm for a moment." else M << "\red You feel a warm sensation." - M.apply_effect(rand(1,40), IRRADIATE) + M.apply_effect(rand(3,120), IRRADIATE) lightfail = 1 else for (var/mob/living/M in range(rand(1,4),src)) //Big failure, TIME FOR RADIATION BITCHES if (src in M.contents) M << "\red Your gun's reactor overloads!" M << "\red You feel a wave of heat wash over you." - M.apply_effect(100, IRRADIATE) + M.apply_effect(300, IRRADIATE) crit_fail = 1 //break the gun so it stops recharging processing_objects.Remove(src) update_icon() diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 1b9a7cfa2f..66e88936da 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -49,10 +49,11 @@ on_hit(var/atom/target, var/blocked = 0) var/mob/M = target - if(istype(target, /mob/living/carbon/human) && M:mutantrace == "plant") //Plantmen possibly get mutated and damaged by the rays. + if(istype(target, /mob/living) && M:mutantrace == "plant") //Plantmen possibly get mutated and damaged by the rays. + var/mob/living/L as mob if(prob(15)) - M.radiation += rand(10,30) - M.Weaken(5) + L.apply_effect((rand(30,80)),IRRADIATE) + L.Weaken(5) for (var/mob/V in viewers(src)) V.show_message("\red [M] writhes in pain as \his vacuoles boil.", 3, "\red You hear the crunching of leaves.", 2) if(prob(35)) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index ce1a8bc83e..886e2cc57d 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -21,6 +21,7 @@ var/flushing = 0 // true if flushing in progress var/flush_every_ticks = 30 //Every 30 ticks it will look whether it is ready to flush var/flush_count = 0 //this var adds 1 once per tick. When it reaches flush_every_ticks it resets and tries to flush. + var/last_sound = 0 // create a new disposal // find the attached trunk (if present) and init gas resvr. @@ -394,7 +395,9 @@ air_contents = new() // new empty gas resv. sleep(10) - playsound(src, 'disposalflush.ogg', 50, 0, 0) + if(last_sound < world.time + 1) + playsound(src, 'disposalflush.ogg', 50, 0, 0) + last_sound = world.time sleep(5) // wait for animation to finish diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index 34da0c1071..46e1b065fc 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -79,6 +79,12 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). if(g_amount >= 3750) var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc) G.amount = round(g_amount / 3750) + if(gold_amount >= 2000) + var/obj/item/stack/sheet/gold/G = new /obj/item/stack/sheet/gold(src.loc) + G.amount = round(gold_amount / 2000) + if(diamond_amount >= 2000) + var/obj/item/stack/sheet/diamond/G = new /obj/item/stack/sheet/diamond(src.loc) + G.amount = round(diamond_amount / 2000) del(src) return 1 else @@ -99,20 +105,18 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). if (busy) user << "\red The [name] is busy. Please wait for completion of previous operation." return 1 - if ((TotalMaterials() + 3750) > max_material_amount) + var/obj/item/stack/sheet/stack = O + if ((TotalMaterials() + stack.perunit) > max_material_amount) user << "\red The [name] is full. Please remove glass from the protolathe in order to insert more." return 1 - var/obj/item/stack/stack = O - var/amount = 1 - var/title = "[stack.name]: [stack.amount] sheet\s left" - switch(alert(title, "How many sheets do you want to load?", "one", "max", "cancel", null)) - if("one") - amount = 1 - if("max") - amount = min(stack.amount, round((max_material_amount-TotalMaterials())/3750)) - else - return 1 + var/amount = round(input("How many sheets do you want to add?") as num) + if(amount < 0) + amount = 0 + if(amount == 0) + return + if(amount > stack.amount) + amount = min(stack.amount, round((max_material_amount-TotalMaterials())/stack.perunit)) busy = 1 use_power(max(1000, (3750*amount/10))) @@ -121,9 +125,9 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). if(istype(stack, /obj/item/stack/sheet/glass)) g_amount += amount * 3750 else if(istype(stack, /obj/item/stack/sheet/gold)) - gold_amount += amount * 3750 + gold_amount += amount * 2000 else if(istype(stack, /obj/item/stack/sheet/diamond)) - diamond_amount += amount * 3750 + diamond_amount += amount * 2000 stack.use(amount) busy = 0 src.updateUsrDialog() diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm index f8cc0dc42f..0f12089c99 100644 --- a/code/modules/research/message_server.dm +++ b/code/modules/research/message_server.dm @@ -42,7 +42,7 @@ priority = "Undetermined" /obj/machinery/message_server - icon = 'stationobjs.dmi' + icon = 'research.dmi' icon_state = "server" name = "Messaging Server" density = 1 diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index c70a8f25da..71fe1aca32 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -83,31 +83,31 @@ Note: Must be placed west/left of and R&D console to function. I.loc = src.loc if(m_amount >= 3750) var/obj/item/stack/sheet/metal/G = new /obj/item/stack/sheet/metal(src.loc) - G.amount = round(m_amount / 3750) + G.amount = round(m_amount / G.perunit) if(g_amount >= 3750) var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc) - G.amount = round(g_amount / 3750) - if(plasma_amount >= 3750) + G.amount = round(g_amount / G.perunit) + if(plasma_amount >= 2000) var/obj/item/stack/sheet/plasma/G = new /obj/item/stack/sheet/plasma(src.loc) - G.amount = round(plasma_amount / 3750) - if(silver_amount >= 3750) + G.amount = round(plasma_amount / G.perunit) + if(silver_amount >= 2000) var/obj/item/stack/sheet/silver/G = new /obj/item/stack/sheet/silver(src.loc) - G.amount = round(silver_amount / 3750) - if(gold_amount >= 3750) + G.amount = round(silver_amount / G.perunit) + if(gold_amount >= 2000) var/obj/item/stack/sheet/gold/G = new /obj/item/stack/sheet/gold(src.loc) - G.amount = round(gold_amount / 3750) - if(uranium_amount >= 3750) + G.amount = round(gold_amount / G.perunit) + if(uranium_amount >= 2000) var/obj/item/stack/sheet/uranium/G = new /obj/item/stack/sheet/uranium(src.loc) - G.amount = round(uranium_amount / 3750) - if(diamond_amount >= 3750) + G.amount = round(uranium_amount / G.perunit) + if(diamond_amount >= 2000) var/obj/item/stack/sheet/diamond/G = new /obj/item/stack/sheet/diamond(src.loc) - G.amount = round(diamond_amount / 3750) - if(clown_amount >= 3750) + G.amount = round(diamond_amount / G.perunit) + if(clown_amount >= 2000) var/obj/item/stack/sheet/clown/G = new /obj/item/stack/sheet/clown(src.loc) - G.amount = round(clown_amount / 3750) - if(adamantine_amount >= 3750) + G.amount = round(clown_amount / G.perunit) + if(adamantine_amount >= 2000) var/obj/item/stack/sheet/adamantine/G = new /obj/item/stack/sheet/adamantine(src.loc) - G.amount = round(adamantine_amount / 3750) + G.amount = round(adamantine_amount / G.perunit) del(src) return 1 else @@ -130,21 +130,18 @@ Note: Must be placed west/left of and R&D console to function. user << "\red The protolathe's material bin is full. Please remove material before adding more." return 1 - var/obj/item/stack/stack = O - var/amount = 1 - var/title = "[stack.name]: [stack.amount] sheet\s left" - switch(alert(title, "How many sheets do you want to load?", "one", "max", "cancel", null)) - if("one") - amount = 1 - if("max") - amount = min(stack.amount, round((max_material_storage-TotalMaterials())/3750)) - else - return 1 + var/obj/item/stack/sheet/stack = O + var/amount = round(input("How many sheets do you want to add?") as num) + if(amount < 0) + amount = 0 + if(amount == 0) + return + if(amount > stack.amount) + amount = min(stack.amount, round((max_material_storage-TotalMaterials())/stack.perunit)) - if(istype(O, /obj/item/stack/sheet/glass)) - flick("protolathe_r",src)//plays glass insertion animation - else - flick("protolathe_o",src)//plays metal insertion animation + src.overlays += "protolathe_[stack.name]" + sleep(10) + src.overlays -= "protolathe_[stack.name]" icon_state = "protolathe" busy = 1 @@ -152,25 +149,24 @@ Note: Must be placed west/left of and R&D console to function. spawn(16) user << "\blue You add [amount] sheets to the [src.name]." icon_state = "protolathe" - flick("protolathe_o",src) if(istype(stack, /obj/item/stack/sheet/metal)) m_amount += amount * 3750 else if(istype(stack, /obj/item/stack/sheet/glass)) g_amount += amount * 3750 else if(istype(stack, /obj/item/stack/sheet/gold)) - gold_amount += amount * 3750 + gold_amount += amount * 2000 else if(istype(stack, /obj/item/stack/sheet/silver)) - silver_amount += amount * 3750 + silver_amount += amount * 2000 else if(istype(stack, /obj/item/stack/sheet/plasma)) - plasma_amount += amount * 3750 + plasma_amount += amount * 2000 else if(istype(stack, /obj/item/stack/sheet/uranium)) - uranium_amount += amount * 3750 + uranium_amount += amount * 2000 else if(istype(stack, /obj/item/stack/sheet/diamond)) - diamond_amount += amount * 3750 + diamond_amount += amount * 2000 else if(istype(stack, /obj/item/stack/sheet/clown)) - clown_amount += amount * 3750 + clown_amount += amount * 2000 else if(istype(stack, /obj/item/stack/sheet/adamantine)) - adamantine_amount += amount * 3750 + adamantine_amount += amount * 2000 stack.use(amount) busy = 0 src.updateUsrDialog() diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index cbfa7e9b55..b525741b71 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -739,58 +739,58 @@ won't update every console in existence) but it's more of a hassle to do. Also, //Metal dat += "* [linked_lathe.m_amount] cm3 of Metal || " dat += "Eject: " - if(linked_lathe.m_amount > 3750) dat += "(1 Sheet) " - if(linked_lathe.m_amount > 18750) dat += "(5 Sheets) " - if(linked_lathe.m_amount > 3750) dat += "(Max Sheets)" + if(linked_lathe.m_amount >= 3750) dat += "(1 Sheet) " + if(linked_lathe.m_amount >= 18750) dat += "(5 Sheets) " + if(linked_lathe.m_amount >= 3750) dat += "(Max Sheets)" dat += "
" //Glass dat += "* [linked_lathe.g_amount] cm3 of Glass || " dat += "Eject: " - if(linked_lathe.g_amount > 3750) dat += "(1 Sheet) " - if(linked_lathe.g_amount > 18750) dat += "(5 Sheets) " - if(linked_lathe.g_amount > 3750) dat += "(Max Sheets)" + if(linked_lathe.g_amount >= 3750) dat += "(1 Sheet) " + if(linked_lathe.g_amount >= 18750) dat += "(5 Sheets) " + if(linked_lathe.g_amount >= 3750) dat += "(Max Sheets)" dat += "
" //Gold dat += "* [linked_lathe.gold_amount] cm3 of Gold || " dat += "Eject: " - if(linked_lathe.gold_amount > 3750) dat += "(1 Sheet) " - if(linked_lathe.gold_amount > 18750) dat += "(5 Sheets) " - if(linked_lathe.gold_amount > 3750) dat += "(Max Sheets)" + if(linked_lathe.gold_amount >= 2000) dat += "(1 Sheet) " + if(linked_lathe.gold_amount >= 10000) dat += "(5 Sheets) " + if(linked_lathe.gold_amount >= 2000) dat += "(Max Sheets)" dat += "
" //Silver dat += "* [linked_lathe.silver_amount] cm3 of Silver || " dat += "Eject: " - if(linked_lathe.silver_amount >= 3750) dat += "(1 Sheet) " - if(linked_lathe.silver_amount >= 18750) dat += "(5 Sheets) " - if(linked_lathe.silver_amount >= 3750) dat += "(Max Sheets)" + if(linked_lathe.silver_amount >= 2000) dat += "(1 Sheet) " + if(linked_lathe.silver_amount >= 10000) dat += "(5 Sheets) " + if(linked_lathe.silver_amount >= 2000) dat += "(Max Sheets)" dat += "
" //Plasma dat += "* [linked_lathe.plasma_amount] cm3 of Solid Plasma || " dat += "Eject: " - if(linked_lathe.plasma_amount >= 3750) dat += "(1 Sheet) " - if(linked_lathe.plasma_amount >= 18750) dat += "(5 Sheets) " - if(linked_lathe.plasma_amount >= 3750) dat += "(Max Sheets)" + if(linked_lathe.plasma_amount >= 2000) dat += "(1 Sheet) " + if(linked_lathe.plasma_amount >= 10000) dat += "(5 Sheets) " + if(linked_lathe.plasma_amount >= 2000) dat += "(Max Sheets)" dat += "
" //Uranium dat += "* [linked_lathe.uranium_amount] cm3 of Uranium || " dat += "Eject: " - if(linked_lathe.uranium_amount >= 3750) dat += "(1 Sheet) " - if(linked_lathe.uranium_amount >= 18750) dat += "(5 Sheets) " - if(linked_lathe.uranium_amount >= 3750) dat += "(Max Sheets)" + if(linked_lathe.uranium_amount >= 2000) dat += "(1 Sheet) " + if(linked_lathe.uranium_amount >= 10000) dat += "(5 Sheets) " + if(linked_lathe.uranium_amount >= 2000) dat += "(Max Sheets)" dat += "
" //Diamond dat += "* [linked_lathe.diamond_amount] cm3 of Diamond || " dat += "Eject: " - if(linked_lathe.diamond_amount >= 3750) dat += "(1 Sheet) " - if(linked_lathe.diamond_amount >= 18750) dat += "(5 Sheets) " - if(linked_lathe.diamond_amount >= 3750) dat += "(Max Sheets)" + if(linked_lathe.diamond_amount >= 2000) dat += "(1 Sheet) " + if(linked_lathe.diamond_amount >= 10000) dat += "(5 Sheets) " + if(linked_lathe.diamond_amount >= 2000) dat += "(Max Sheets)" dat += "
" //Bananium dat += "* [linked_lathe.clown_amount] cm3 of Bananium || " dat += "Eject: " - if(linked_lathe.clown_amount >= 3750) dat += "(1 Sheet) " - if(linked_lathe.clown_amount >= 18750) dat += "(5 Sheets) " - if(linked_lathe.clown_amount >= 3750) dat += "(Max Sheets)" + if(linked_lathe.clown_amount >= 2000) dat += "(1 Sheet) " + if(linked_lathe.clown_amount >= 10000) dat += "(5 Sheets) " + if(linked_lathe.clown_amount >= 2000) dat += "(Max Sheets)" if(3.3) //Protolathe Chemical Storage Submenu dat += "Main Menu || " @@ -852,23 +852,23 @@ won't update every console in existence) but it's more of a hassle to do. Also, //Glass dat += "* [linked_imprinter.g_amount] cm3 of Glass || " dat += "Eject: " - if(linked_imprinter.g_amount > 3750) dat += "(1 Sheet) " - if(linked_imprinter.g_amount > 18750) dat += "(5 Sheets) " - if(linked_imprinter.g_amount > 3750) dat += "(Max Sheets)" + if(linked_imprinter.g_amount >= 3750) dat += "(1 Sheet) " + if(linked_imprinter.g_amount >= 18750) dat += "(5 Sheets) " + if(linked_imprinter.g_amount >= 3750) dat += "(Max Sheets)" dat += "
" //Gold dat += "* [linked_imprinter.gold_amount] cm3 of Gold || " dat += "Eject: " - if(linked_imprinter.gold_amount > 3750) dat += "(1 Sheet) " - if(linked_imprinter.gold_amount > 18750) dat += "(5 Sheets) " - if(linked_imprinter.gold_amount > 3750) dat += "(Max Sheets)" + if(linked_imprinter.gold_amount >= 2000) dat += "(1 Sheet) " + if(linked_imprinter.gold_amount >= 10000) dat += "(5 Sheets) " + if(linked_imprinter.gold_amount >= 2000) dat += "(Max Sheets)" dat += "
" //Diamond dat += "* [linked_imprinter.diamond_amount] cm3 of Diamond || " dat += "Eject: " - if(linked_imprinter.diamond_amount > 3750) dat += "(1 Sheet) " - if(linked_imprinter.diamond_amount > 18750) dat += "(5 Sheets) " - if(linked_imprinter.diamond_amount > 3750) dat += "(Max Sheets)" + if(linked_imprinter.diamond_amount >= 2000) dat += "(1 Sheet) " + if(linked_imprinter.diamond_amount >= 10000) dat += "(5 Sheets) " + if(linked_imprinter.diamond_amount >= 2000) dat += "(Max Sheets)" user << browse("Research and Development Console
[dat]", "window=rdconsole;size=575x400") onclose(user, "rdconsole") diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm index e297c33eae..df3a33bce8 100644 --- a/code/modules/research/rdmachines.dm +++ b/code/modules/research/rdmachines.dm @@ -5,6 +5,7 @@ /obj/machinery/r_n_d name = "R&D Device" + icon = 'research.dmi' density = 1 anchored = 1 use_power = 1 diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index d23c641f72..604e717dc3 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -1,5 +1,6 @@ /obj/machinery/r_n_d/server name = "R&D Server" + icon = 'research.dmi' icon_state = "server" var datum/research/files diff --git a/html/changelog.html b/html/changelog.html index ba0c5f0632..b71aed15b1 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -46,18 +46,23 @@ Stuff which is in development and not yet visible to players or just code relate should be listed in the changelog upon commit tho. Thanks. --> -
-

Wednesay June 6, 2012

+

Wednesday, June 6th

+

Sieve updated:

+

Nodrak updated:

-

Sieve updated:

-
diff --git a/icons/mecha/mech_construct.dmi b/icons/mecha/mech_construct.dmi index 72705d68e1..9213e418ff 100644 Binary files a/icons/mecha/mech_construct.dmi and b/icons/mecha/mech_construct.dmi differ diff --git a/icons/mecha/mech_construction.dmi b/icons/mecha/mech_construction.dmi index e7e9bb0294..96c3c950bd 100644 Binary files a/icons/mecha/mech_construction.dmi and b/icons/mecha/mech_construction.dmi differ diff --git a/icons/mecha/mecha.dmi b/icons/mecha/mecha.dmi index 2a66ef4b64..c5f52e3501 100644 Binary files a/icons/mecha/mecha.dmi and b/icons/mecha/mecha.dmi differ diff --git a/icons/obj/aibots.dmi b/icons/obj/aibots.dmi index 407049ae2d..f58a356c34 100644 Binary files a/icons/obj/aibots.dmi and b/icons/obj/aibots.dmi differ diff --git a/icons/obj/decals.dmi b/icons/obj/decals.dmi index 5f30f0a5cb..1aeee0d90d 100644 Binary files a/icons/obj/decals.dmi and b/icons/obj/decals.dmi differ diff --git a/icons/obj/doors/Doorbananium.dmi b/icons/obj/doors/Doorbananium.dmi new file mode 100644 index 0000000000..890a47149a Binary files /dev/null and b/icons/obj/doors/Doorbananium.dmi differ diff --git a/icons/obj/doors/Doordiamond.dmi b/icons/obj/doors/Doordiamond.dmi new file mode 100644 index 0000000000..29a5632ad9 Binary files /dev/null and b/icons/obj/doors/Doordiamond.dmi differ diff --git a/icons/obj/doors/Doorgold.dmi b/icons/obj/doors/Doorgold.dmi new file mode 100644 index 0000000000..0060e4d9a7 Binary files /dev/null and b/icons/obj/doors/Doorgold.dmi differ diff --git a/icons/obj/doors/Doorplasma.dmi b/icons/obj/doors/Doorplasma.dmi new file mode 100644 index 0000000000..1c2b35f1f7 Binary files /dev/null and b/icons/obj/doors/Doorplasma.dmi differ diff --git a/icons/obj/doors/Doorsand.dmi b/icons/obj/doors/Doorsand.dmi new file mode 100644 index 0000000000..5cd8c2fc34 Binary files /dev/null and b/icons/obj/doors/Doorsand.dmi differ diff --git a/icons/obj/doors/Doorsilver.dmi b/icons/obj/doors/Doorsilver.dmi new file mode 100644 index 0000000000..c8407240f3 Binary files /dev/null and b/icons/obj/doors/Doorsilver.dmi differ diff --git a/icons/obj/doors/Dooruranium.dmi b/icons/obj/doors/Dooruranium.dmi new file mode 100644 index 0000000000..c7ff2e13c6 Binary files /dev/null and b/icons/obj/doors/Dooruranium.dmi differ diff --git a/icons/obj/doors/door_assembly.dmi b/icons/obj/doors/door_assembly.dmi index ee84879fb7..ca3f3ef813 100644 Binary files a/icons/obj/doors/door_assembly.dmi and b/icons/obj/doors/door_assembly.dmi differ diff --git a/icons/obj/doors/mineral_doors.dmi b/icons/obj/doors/mineral_doors.dmi index 506a1e1460..92158d8645 100644 Binary files a/icons/obj/doors/mineral_doors.dmi and b/icons/obj/doors/mineral_doors.dmi differ diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index 975dfd2b73..30195fb8da 100644 Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ diff --git a/icons/obj/lighting.dmi b/icons/obj/lighting.dmi index c10b2e75b3..6f200d5812 100644 Binary files a/icons/obj/lighting.dmi and b/icons/obj/lighting.dmi differ diff --git a/icons/obj/machines/particle_accelerator.dmi b/icons/obj/machines/particle_accelerator.dmi index 9513689f65..5f8501fd68 100644 Binary files a/icons/obj/machines/particle_accelerator.dmi and b/icons/obj/machines/particle_accelerator.dmi differ diff --git a/icons/obj/machines/research.dmi b/icons/obj/machines/research.dmi new file mode 100644 index 0000000000..68dbded212 Binary files /dev/null and b/icons/obj/machines/research.dmi differ diff --git a/icons/obj/robotics.dmi b/icons/obj/robotics.dmi index 588bba9632..3494bb9d53 100644 Binary files a/icons/obj/robotics.dmi and b/icons/obj/robotics.dmi differ diff --git a/icons/obj/stationobjs.dmi b/icons/obj/stationobjs.dmi index a16f2ba0b9..07d4984b3c 100644 Binary files a/icons/obj/stationobjs.dmi and b/icons/obj/stationobjs.dmi differ diff --git a/icons/obj/turrets.dmi b/icons/obj/turrets.dmi index 867591fb82..b3a2036742 100644 Binary files a/icons/obj/turrets.dmi and b/icons/obj/turrets.dmi differ diff --git a/icons/obj/vending.dmi b/icons/obj/vending.dmi index cc882b0567..581e30cab5 100644 Binary files a/icons/obj/vending.dmi and b/icons/obj/vending.dmi differ diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi index 0957455fcc..7e8f73881d 100644 Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ diff --git a/icons/turf/mineral_walls.dmi b/icons/turf/mineral_walls.dmi index 1281f52352..e69de29bb2 100644 Binary files a/icons/turf/mineral_walls.dmi and b/icons/turf/mineral_walls.dmi differ diff --git a/icons/turf/walls.dmi b/icons/turf/walls.dmi index 7413089cc7..cdd6c88ab8 100644 Binary files a/icons/turf/walls.dmi and b/icons/turf/walls.dmi differ diff --git a/maps/tgstation.2.0.9.dmm b/maps/tgstation.2.0.9.dmm index 602bcebb8b..4a3c426fc0 100644 --- a/maps/tgstation.2.0.9.dmm +++ b/maps/tgstation.2.0.9.dmm @@ -2483,13 +2483,13 @@ "aVM" = (/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain) "aVN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain) "aVO" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Captain's Quarters APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain) -"aVP" = (/turf/simulated/floor/grid,/area/turret_protected/ai) -"aVQ" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/turret,/turf/simulated/floor/grid,/area/turret_protected/ai) -"aVR" = (/obj/machinery/light/small{dir = 1},/obj/machinery/flasher{pixel_x = 0; pixel_y = 24; id = "AI"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/obj/machinery/camera/motion{c_tag = "AI Chamber"},/turf/simulated/floor/grid,/area/turret_protected/ai) -"aVS" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/grid,/area/turret_protected/ai) -"aVT" = (/obj/machinery/light/small{dir = 1},/obj/machinery/power/terminal{dir = 8},/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_y = 29},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/grid,/area/turret_protected/ai) -"aVU" = (/obj/machinery/turret,/turf/simulated/floor/grid,/area/turret_protected/ai) -"aVV" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/grid,/area/turret_protected/ai) +"aVP" = (/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"aVQ" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/turret,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"aVR" = (/obj/machinery/light/small{dir = 1},/obj/machinery/flasher{pixel_x = 0; pixel_y = 24; id = "AI"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/obj/machinery/camera/motion{c_tag = "AI Chamber"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"aVS" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"aVT" = (/obj/machinery/light/small{dir = 1},/obj/machinery/power/terminal{dir = 8},/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_y = 29},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"aVU" = (/obj/machinery/turret,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"aVV" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aVW" = (/obj/structure/closet/emcloset,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/crew_quarters/heads) "aVX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor,/area/crew_quarters/heads) "aVY" = (/obj/machinery/light_switch{pixel_y = 28},/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/camera{c_tag = "Head of Personnel's Office"; dir = 2},/turf/simulated/floor,/area/crew_quarters/heads) @@ -2542,9 +2542,9 @@ "aWT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor{dir = 5; icon_state = "carpetside"},/area/crew_quarters/captain) "aWU" = (/obj/machinery/computer/arcade,/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain) "aWV" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/turf/simulated/floor,/area/turret_protected/ai) -"aWW" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/turf/simulated/floor/grid,/area/turret_protected/ai) -"aWX" = (/obj/machinery/ai_slipper{icon_state = "motion0"},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/grid,/area/turret_protected/ai) -"aWY" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/grid,/area/turret_protected/ai) +"aWW" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"aWX" = (/obj/machinery/ai_slipper{icon_state = "motion0"},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"aWY" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aWZ" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/turf/simulated/floor,/area/turret_protected/ai) "aXa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/wall/r_wall,/area/turret_protected/ai) "aXb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/wall/r_wall,/area/crew_quarters/heads) @@ -2600,11 +2600,11 @@ "aXZ" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "carpetside"},/area/crew_quarters/captain) "aYa" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor{dir = 6; icon_state = "carpetside"},/area/crew_quarters/captain) "aYb" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain) -"aYc" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/grid,/area/turret_protected/ai) +"aYc" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aYd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/turret_protected/ai) "aYe" = (/turf/simulated/wall,/area/turret_protected/ai) "aYf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor,/area/turret_protected/ai) -"aYg" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/grid,/area/turret_protected/ai) +"aYg" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aYh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/crew_quarters/heads) "aYi" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/obj/machinery/vending/coffee,/turf/simulated/floor,/area/crew_quarters/heads) "aYj" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor,/area/crew_quarters/heads) @@ -2644,13 +2644,13 @@ "aYR" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/blue,/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain) "aYS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain) "aYT" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain) -"aYU" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; name = "General Listening Channel"; pixel_x = 0; pixel_y = 20},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 0; pixel_y = -26},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 1; freerange = 1; listening = 0; name = "General Broadcasting Channel"; pixel_x = -25; pixel_y = -4},/turf/simulated/floor/grid,/area/turret_protected/ai) -"aYV" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/door/window{dir = 4; name = "AI Core Door"; req_access_txt = "16"},/turf/simulated/floor/grid,/area/turret_protected/ai) +"aYU" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; name = "General Listening Channel"; pixel_x = 0; pixel_y = 20},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 0; pixel_y = -26},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 1; freerange = 1; listening = 0; name = "General Broadcasting Channel"; pixel_x = -25; pixel_y = -4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"aYV" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/door/window{dir = 4; name = "AI Core Door"; req_access_txt = "16"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aYW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor,/area/turret_protected/ai) -"aYX" = (/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 28; pixel_y = 5},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; name = "General Listening Channel"; pixel_x = -27; pixel_y = 4},/obj/machinery/turretid{pixel_x = 24; pixel_y = -7},/obj/effect/landmark/start{name = "AI"},/obj/item/device/radio/intercom{broadcasting = 1; freerange = 1; listening = 0; name = "General Broadcasting Channel"; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/door_control{desc = "A remote control switch for the AI chamber door."; id = "AI Door"; name = "AI Chamber Door Control"; pixel_x = 27; pixel_y = 27; req_access_txt = "16"},/turf/simulated/floor/grid,/area/turret_protected/ai) +"aYX" = (/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 28; pixel_y = 5},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; name = "General Listening Channel"; pixel_x = -27; pixel_y = 4},/obj/machinery/turretid{pixel_x = 24; pixel_y = -7},/obj/effect/landmark/start{name = "AI"},/obj/item/device/radio/intercom{broadcasting = 1; freerange = 1; listening = 0; name = "General Broadcasting Channel"; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/door_control{desc = "A remote control switch for the AI chamber door."; id = "AI Door"; name = "AI Chamber Door Control"; pixel_x = 27; pixel_y = 27; req_access_txt = "16"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aYY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/turret_protected/ai) -"aYZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "AI Core Door"; req_access_txt = "16"},/turf/simulated/floor/grid,/area/turret_protected/ai) -"aZa" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; name = "General Listening Channel"; pixel_x = 0; pixel_y = 19},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 0; pixel_y = -26},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 1; freerange = 1; listening = 0; name = "General Broadcasting Channel"; pixel_x = 27; pixel_y = -3},/turf/simulated/floor/grid,/area/turret_protected/ai) +"aYZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "AI Core Door"; req_access_txt = "16"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"aZa" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; name = "General Listening Channel"; pixel_x = 0; pixel_y = 19},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 0; pixel_y = -26},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 1; freerange = 1; listening = 0; name = "General Broadcasting Channel"; pixel_x = 27; pixel_y = -3},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aZb" = (/obj/machinery/vending/cola,/turf/simulated/floor,/area/crew_quarters/heads) "aZc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/crew_quarters/heads) "aZd" = (/obj/machinery/computer/card,/turf/simulated/floor,/area/crew_quarters/heads) @@ -2702,12 +2702,12 @@ "aZX" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/structure/table/woodentable,/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain) "aZY" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain) "aZZ" = (/obj/structure/displaycase,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain) -"baa" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/grid,/area/turret_protected/ai) -"bab" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/grid,/area/turret_protected/ai) -"bac" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/power/apc{dir = 1; equip_consumption = 100; light_consumption = 50; name = "AI Chamber APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/grid,/area/turret_protected/ai) -"bad" = (/obj/machinery/door/window{name = "AI Core Door"; req_access_txt = "16"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor/grid,/area/turret_protected/ai) -"bae" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/flasher{pixel_x = 0; pixel_y = 24; id = "AI"},/turf/simulated/floor/grid,/area/turret_protected/ai) -"baf" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/grid,/area/turret_protected/ai) +"baa" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"bab" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"bac" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/power/apc{dir = 1; equip_consumption = 100; light_consumption = 50; name = "AI Chamber APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"bad" = (/obj/machinery/door/window{name = "AI Core Door"; req_access_txt = "16"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"bae" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/flasher{pixel_x = 0; pixel_y = 24; id = "AI"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"baf" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bag" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/vending/snack,/turf/simulated/floor,/area/crew_quarters/heads) "bah" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor{dir = 9; icon_state = "carpetside"},/area/crew_quarters/heads) "bai" = (/mob/living/simple_animal/corgi/Ian,/turf/simulated/floor{dir = 1; icon_state = "carpetside"},/area/crew_quarters/heads) @@ -2783,13 +2783,13 @@ "bbA" = (/obj/effect/landmark/start{name = "Captain"},/obj/structure/stool/bed/chair/comfy/brown{dir = 1},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain) "bbB" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/blue,/obj/item/weapon/stamp/captain,/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain) "bbC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/machinery/keycard_auth{pixel_x = 24},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain) -"bbD" = (/obj/machinery/light/small{dir = 8},/obj/machinery/turret{dir = 4},/turf/simulated/floor/grid,/area/turret_protected/ai) +"bbD" = (/obj/machinery/light/small{dir = 8},/obj/machinery/turret{dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bbE" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor,/area/turret_protected/ai) -"bbF" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = "Streight"},/turf/simulated/floor/grid,/area/turret_protected/ai) +"bbF" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = "Streight"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bbG" = (/obj/machinery/ai_slipper{icon_state = "motion0"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = "Streight"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/turf/simulated/floor,/area/turret_protected/ai) -"bbH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = "Streight"},/turf/simulated/floor/grid,/area/turret_protected/ai) +"bbH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = "Streight"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bbI" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/turf/simulated/floor,/area/turret_protected/ai) -"bbJ" = (/obj/machinery/light/small{dir = 4},/obj/machinery/turret{dir = 8},/turf/simulated/floor/grid,/area/turret_protected/ai) +"bbJ" = (/obj/machinery/light/small{dir = 4},/obj/machinery/turret{dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bbK" = (/obj/machinery/disposal,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor,/area/crew_quarters/heads) "bbL" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "carpetside"},/area/crew_quarters/heads) "bbM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = "Streight"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "carpetside"},/area/crew_quarters/heads) @@ -2854,11 +2854,11 @@ "bcT" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain) "bcU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/wall/r_wall,/area/crew_quarters/captain) "bcV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/turret_protected/ai) -"bcW" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/grid,/area/turret_protected/ai) -"bcX" = (/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/grid,/area/turret_protected/ai) -"bcY" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/grid,/area/turret_protected/ai) -"bcZ" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/grid,/area/turret_protected/ai) -"bda" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/grid,/area/turret_protected/ai) +"bcW" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"bcX" = (/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"bcY" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"bcZ" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"bda" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bdb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/turret_protected/ai) "bdc" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/crew_quarters/heads) "bdd" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/obj/item/weapon/packageWrap,/turf/simulated/floor,/area/crew_quarters/heads) @@ -3009,12 +3009,12 @@ "bfS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/maintenance/port) "bfT" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/lattice,/turf/space,/area) "bfU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/turret_protected/ai_upload) -"bfV" = (/obj/structure/table,/obj/item/weapon/aiModule/asimov,/obj/item/weapon/aiModule/freeformcore,/obj/machinery/door/window{base_state = "right"; dir = 4; icon = 'windoor.dmi'; icon_state = "right"; name = "Core Modules"; req_access_txt = "20"},/obj/structure/window/reinforced,/obj/item/weapon/aiModule/corp,/obj/item/weapon/aiModule/paladin,/turf/simulated/floor/grid,/area/turret_protected/ai_upload) +"bfV" = (/obj/structure/table,/obj/item/weapon/aiModule/asimov,/obj/item/weapon/aiModule/freeformcore,/obj/machinery/door/window{base_state = "right"; dir = 4; icon = 'windoor.dmi'; icon_state = "right"; name = "Core Modules"; req_access_txt = "20"},/obj/structure/window/reinforced,/obj/item/weapon/aiModule/corp,/obj/item/weapon/aiModule/paladin,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bfW" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "bot"},/area/turret_protected/ai_upload) -"bfX" = (/obj/machinery/flasher{pixel_x = 0; pixel_y = 24; id = "AI"},/obj/machinery/computer/borgupload,/turf/simulated/floor/grid,/area/turret_protected/ai_upload) +"bfX" = (/obj/machinery/flasher{pixel_x = 0; pixel_y = 24; id = "AI"},/obj/machinery/computer/borgupload,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bfY" = (/turf/simulated/floor{icon_state = "bot"},/area/turret_protected/ai_upload) -"bfZ" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/computer/aiupload,/turf/simulated/floor/grid,/area/turret_protected/ai_upload) -"bga" = (/obj/structure/table,/obj/item/weapon/aiModule/oxygen,/obj/item/weapon/aiModule/oneHuman,/obj/machinery/door/window{base_state = "left"; dir = 8; icon_state = "left"; name = "High-Risk Modules"; req_access_txt = "20"},/obj/item/weapon/aiModule/purge,/obj/structure/window/reinforced,/obj/item/weapon/aiModule/antimov,/turf/simulated/floor/grid,/area/turret_protected/ai_upload) +"bfZ" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/computer/aiupload,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) +"bga" = (/obj/structure/table,/obj/item/weapon/aiModule/oxygen,/obj/item/weapon/aiModule/oneHuman,/obj/machinery/door/window{base_state = "left"; dir = 8; icon_state = "left"; name = "High-Risk Modules"; req_access_txt = "20"},/obj/item/weapon/aiModule/purge,/obj/structure/window/reinforced,/obj/item/weapon/aiModule/antimov,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bgb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/lattice,/turf/space,/area) "bgc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/wall,/area/bridge/meeting_room) "bgd" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/bridge/meeting_room) @@ -3087,9 +3087,9 @@ "bhs" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall,/area/maintenance/port) "bht" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall,/area/maintenance/port) "bhu" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/plating,/area/turret_protected/ai_upload) -"bhv" = (/obj/machinery/turret{dir = 4},/turf/simulated/floor/grid,/area/turret_protected/ai_upload) -"bhw" = (/turf/simulated/floor/grid,/area/turret_protected/ai_upload) -"bhx" = (/obj/machinery/turret{dir = 8},/turf/simulated/floor/grid,/area/turret_protected/ai_upload) +"bhv" = (/obj/machinery/turret{dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) +"bhw" = (/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) +"bhx" = (/obj/machinery/turret{dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bhy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/wall,/area/bridge/meeting_room) "bhz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/bridge/meeting_room) "bhA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/bridge/meeting_room) @@ -3137,7 +3137,7 @@ "biq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "bir" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "bis" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/storage) -"bit" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/quartermaster/storage) +"bit" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/quartermaster/storage) "biu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor,/area/quartermaster/storage) "biv" = (/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/storage) "biw" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #1"},/obj/machinery/bot/mulebot{beacon_freq = 1400; home_destination = "QM #1"; suffix = "#1"},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) @@ -3156,11 +3156,11 @@ "biJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/teleporter) "biK" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/lattice,/turf/space,/area) "biL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/turret_protected/ai_upload) -"biM" = (/obj/structure/table,/obj/item/weapon/aiModule/teleporterOffline,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/grid,/area/turret_protected/ai_upload) +"biM" = (/obj/structure/table,/obj/item/weapon/aiModule/teleporterOffline,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "biN" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "bot"},/area/turret_protected/ai_upload) "biO" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/turret_protected/ai_upload) "biP" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "bot"},/area/turret_protected/ai_upload_foyer) -"biQ" = (/obj/structure/table,/obj/item/weapon/aiModule/freeform,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/grid,/area/turret_protected/ai_upload) +"biQ" = (/obj/structure/table,/obj/item/weapon/aiModule/freeform,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "biR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/turret_protected/ai_upload) "biS" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/space,/area) "biT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/bridge/meeting_room) @@ -3217,9 +3217,9 @@ "bjS" = (/obj/item/weapon/crowbar,/turf/simulated/floor/plating,/area/teleporter) "bjT" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor/plating,/area/teleporter) "bjU" = (/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload) -"bjV" = (/obj/structure/table,/obj/item/weapon/aiModule/reset,/obj/machinery/camera{c_tag = "AI Upload Chamber"; dir = 4; network = "SS13"},/turf/simulated/floor/grid,/area/turret_protected/ai_upload) +"bjV" = (/obj/structure/table,/obj/item/weapon/aiModule/reset,/obj/machinery/camera{c_tag = "AI Upload Chamber"; dir = 4; network = "SS13"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bjW" = (/turf/simulated/floor,/area/turret_protected/ai_upload) -"bjX" = (/obj/structure/table,/obj/item/weapon/aiModule/protectStation,/turf/simulated/floor/grid,/area/turret_protected/ai_upload) +"bjX" = (/obj/structure/table,/obj/item/weapon/aiModule/protectStation,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bjY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/turf/simulated/floor,/area/bridge/meeting_room) "bjZ" = (/obj/machinery/light_switch{pixel_y = 28},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/bridge/meeting_room) "bka" = (/obj/machinery/power/apc{dir = 1; name = "Conference Room APC"; pixel_y = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/camera{c_tag = "Conference Room"; dir = 2},/turf/simulated/floor,/area/bridge/meeting_room) @@ -3267,10 +3267,10 @@ "bkQ" = (/turf/simulated/floor,/area/teleporter) "bkR" = (/obj/structure/stool{pixel_y = 8},/turf/simulated/floor,/area/teleporter) "bkS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor/plating,/area/teleporter) -"bkT" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Upload APC"; pixel_y = -24},/obj/machinery/light/small,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/ai_status_display{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/grid,/area/turret_protected/ai_upload) +"bkT" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Upload APC"; pixel_y = -24},/obj/machinery/light/small,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/ai_status_display{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bkU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor,/area/turret_protected/ai_upload) -"bkV" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/turf/simulated/floor/grid,/area/turret_protected/ai_upload) -"bkW" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; name = "Private AI Channel"; pixel_y = -25},/obj/machinery/light/small,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/grid,/area/turret_protected/ai_upload) +"bkV" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) +"bkW" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; name = "Private AI Channel"; pixel_y = -25},/obj/machinery/light/small,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bkX" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/space,/area) "bkY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/machinery/newscaster{hitstaken = 1; pixel_x = -32; pixel_y = 0},/turf/simulated/floor,/area/bridge/meeting_room) "bkZ" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "red"},/area/bridge/meeting_room) @@ -3323,8 +3323,8 @@ "blU" = (/obj/item/device/radio/beacon,/turf/simulated/floor,/area/teleporter) "blV" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/requests_console{department = "Teleporter"; pixel_x = 30},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/teleporter) "blW" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/teleporter) -"blX" = (/obj/machinery/turret{dir = 1},/turf/simulated/floor/grid,/area/turret_protected/ai_upload) -"blY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/grid,/area/turret_protected/ai_upload) +"blX" = (/obj/machinery/turret{dir = 1},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) +"blY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "blZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor,/area/bridge/meeting_room) "bma" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/bridge/meeting_room) "bmb" = (/obj/structure/table,/obj/item/weapon/folder/red,/turf/simulated/floor,/area/bridge/meeting_room) @@ -4622,11 +4622,11 @@ "bKT" = (/obj/machinery/optable,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "bKU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "bKV" = (/obj/structure/table,/obj/item/weapon/circular_saw,/turf/simulated/floor,/area/medical/surgery) -"bKW" = (/obj/machinery/r_n_d/server{id_with_download_string = "1"; id_with_upload_string = "1"; name = "Core R&D Server"; server_id = 1},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/grid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) -"bKX" = (/obj/machinery/camera{c_tag = "Server Room"; dir = 2; network = "SS13"; pixel_x = 22},/turf/simulated/floor/grid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) -"bKY" = (/turf/simulated/floor/grid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) -"bKZ" = (/obj/machinery/camera{c_tag = "Server Room"; dir = 2; network = "RD"},/turf/simulated/floor/grid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) -"bLa" = (/obj/machinery/blackbox_recorder,/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/grid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) +"bKW" = (/obj/machinery/r_n_d/server{id_with_download_string = "1"; id_with_upload_string = "1"; name = "Core R&D Server"; server_id = 1},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) +"bKX" = (/obj/machinery/camera{c_tag = "Server Room"; dir = 2; network = "SS13"; pixel_x = 22},/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) +"bKY" = (/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) +"bKZ" = (/obj/machinery/camera{c_tag = "Server Room"; dir = 2; network = "RD"},/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) +"bLa" = (/obj/machinery/blackbox_recorder,/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) "bLb" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bLc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/sign/biohazard{pixel_x = 28},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bLd" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) @@ -4675,9 +4675,9 @@ "bLU" = (/obj/structure/table,/obj/item/weapon/surgicaldrill,/turf/simulated/floor,/area/medical/surgery) "bLV" = (/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "bLW" = (/obj/structure/closet/secure_closet/medical2,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor,/area/medical/surgery) -"bLX" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 140; on = 1; pressure_checks = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/grid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) -"bLY" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/grid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) -"bLZ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 120; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/grid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) +"bLX" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 140; on = 1; pressure_checks = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) +"bLY" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) +"bLZ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 120; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) "bMa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Research Division Storage"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/medical/research{name = "Research Division"}) "bMb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/medical/research{name = "Research Division"}) "bMc" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/xenobiology) @@ -4699,9 +4699,9 @@ "bMs" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment,/turf/space,/area) "bMt" = (/obj/machinery/recharge_station,/obj/machinery/camera{c_tag = "Recharge Bay North West"; dir = 2},/turf/simulated/floor{icon_state = "bot"},/area/assembly/chargebay) "bMu" = (/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor,/area/assembly/chargebay) -"bMv" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/grid,/area/assembly/chargebay) -"bMw" = (/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor/grid,/area/assembly/chargebay) -"bMx" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/grid,/area/assembly/chargebay) +"bMv" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/bluegrid,/area/assembly/chargebay) +"bMw" = (/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor/bluegrid,/area/assembly/chargebay) +"bMx" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/bluegrid,/area/assembly/chargebay) "bMy" = (/turf/simulated/floor,/area/assembly/chargebay) "bMz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/assembly/chargebay) "bMA" = (/obj/machinery/power/apc{name = "Aft Hall APC"; dir = 8; pixel_x = -25; pixel_y = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor,/area/hallway/primary/aft) @@ -4741,10 +4741,10 @@ "bNi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "bNj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "bNk" = (/obj/machinery/requests_console{department = "Operating Theatre"; departmentType = 0; name = "OR RC"; pixel_x = 30; pixel_y = 0},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor,/area/medical/surgery) -"bNl" = (/obj/machinery/r_n_d/server{id_with_download_string = "1;2"; id_with_upload_string = "1;2"; name = "Robotics R&D Server"; server_id = 2},/turf/simulated/floor/grid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) -"bNm" = (/turf/simulated/floor/grid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) -"bNn" = (/obj/machinery/alarm/server{dir = 1; pixel_y = -22},/turf/simulated/floor/grid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) -"bNo" = (/obj/machinery/message_server,/turf/simulated/floor/grid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) +"bNl" = (/obj/machinery/r_n_d/server{id_with_download_string = "1;2"; id_with_upload_string = "1;2"; name = "Robotics R&D Server"; server_id = 2},/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) +"bNm" = (/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) +"bNn" = (/obj/machinery/alarm/server{dir = 1; pixel_y = -22},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) +"bNo" = (/obj/machinery/message_server,/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) "bNp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/medical/research{name = "Research Division"}) "bNq" = (/obj/machinery/portable_atmospherics/pump,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/medical/research{name = "Research Division"}) "bNr" = (/obj/machinery/shieldwallgen{req_access = list(55)},/obj/structure/cable,/turf/simulated/floor/plating,/area/toxins/xenobiology) @@ -4775,7 +4775,7 @@ "bNQ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor,/area/assembly/chargebay) "bNR" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/assembly/chargebay) "bNS" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/assembly/chargebay) -"bNT" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/grid,/area/assembly/chargebay) +"bNT" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/bluegrid,/area/assembly/chargebay) "bNU" = (/obj/machinery/door/poddoor{id = "Skynet_launch"; name = "Recharge Bay"; req_access_txt = "22"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/assembly/chargebay) "bNV" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/hallway/primary/aft) "bNW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/hallway/primary/aft) @@ -4874,7 +4874,7 @@ "bPL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/apmaint) "bPM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/apmaint) "bPN" = (/obj/machinery/power/apc{dir = 8; name = "Mech Bay APC"; pixel_x = -25; pixel_y = 1},/obj/structure/cable,/turf/simulated/floor,/area/assembly/chargebay) -"bPO" = (/turf/simulated/floor/grid,/area/assembly/chargebay) +"bPO" = (/turf/simulated/floor/bluegrid,/area/assembly/chargebay) "bPP" = (/obj/machinery/camera{c_tag = "Recharge Bay"; dir = 8},/obj/machinery/door_control{dir = 2; id = "Skynet_launch"; name = "Recharge Bay Door Control"; pixel_x = 24; pixel_y = 0},/turf/simulated/floor,/area/assembly/chargebay) "bPQ" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor,/area/hallway/primary/aft) "bPR" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/structure/window/reinforced,/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor{icon_state = "green"; dir = 8},/area/hallway/primary/aft) @@ -5198,114 +5198,114 @@ "bVX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "bVY" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Holding Rooms"; req_access_txt = "39"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "bVZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"bWa" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/closet/wardrobe/robotics_black,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/assembly/assembly_line) -"bWb" = (/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/assembly/assembly_line) -"bWc" = (/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/floor{dir = 8; icon_state = "loadingarea"; tag = "loading"},/area/assembly/assembly_line) -"bWd" = (/obj/machinery/conveyor{dir = 4; id = "Skynet_heavy"},/obj/machinery/light,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/assembly/assembly_line) -"bWe" = (/obj/machinery/conveyor{dir = 4; id = "Skynet_heavy"},/obj/machinery/ai_status_display{pixel_y = -32},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/assembly/assembly_line) -"bWf" = (/obj/machinery/conveyor{dir = 4; id = "Skynet_heavy"},/obj/machinery/camera{c_tag = "Robotics Assembly"; dir = 10; network = "RD"},/obj/machinery/camera{c_tag = "Robotics Assembly"; dir = 1},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/assembly/assembly_line) -"bWg" = (/obj/machinery/conveyor{dir = 4; id = "Skynet_heavy"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/assembly/assembly_line) -"bWh" = (/obj/machinery/conveyor{dir = 4; id = "Skynet_heavy"},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/assembly/assembly_line) -"bWi" = (/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/assembly/assembly_line) -"bWj" = (/obj/machinery/requests_console{department = "Assembly Line (Robotics)"; departmentType = 2; name = "assembly line RC"; pixel_y = -30},/turf/simulated/floor,/area/assembly/assembly_line) -"bWk" = (/obj/structure/table,/obj/item/device/multitool,/obj/item/weapon/crowbar,/obj/item/device/flash,/obj/item/device/flash,/turf/simulated/floor,/area/assembly/assembly_line) -"bWl" = (/obj/structure/table,/obj/item/clothing/gloves/black{pixel_y = 3},/obj/item/device/radio/headset/headset_rob,/turf/simulated/floor,/area/assembly/assembly_line) -"bWm" = (/obj/structure/reagent_dispensers/fueltank,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/floor,/area/assembly/assembly_line) -"bWn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/assembly/assembly_line) -"bWo" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor/plating,/area/assembly/assembly_line) -"bWp" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor,/area/hallway/primary/aft) -"bWq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor,/area/hallway/primary/aft) -"bWr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/hallway/primary/aft) -"bWs" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "yellowcorner"},/area/hallway/primary/aft) -"bWt" = (/obj/machinery/vending/cola,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/engine/break_room) -"bWu" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/cola{pixel_x = -3},/turf/simulated/floor,/area/engine/break_room) -"bWv" = (/obj/structure/table,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/item/weapon/folder/yellow,/obj/item/weapon/screwdriver{pixel_y = 8},/turf/simulated/floor,/area/engine/break_room) -"bWw" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers,/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers{pixel_x = 5; pixel_y = 2},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engine/break_room) -"bWx" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engine/break_room) -"bWy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "yellowcorner"},/area/engine/break_room) -"bWz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/atmos) -"bWA" = (/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 5; icon_state = "intact-r"; level = 2},/turf/simulated/floor,/area/atmos) -"bWB" = (/obj/machinery/atmospherics/pipe/simple{color = "cyan"; icon_state = "intact-c"; level = 2},/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/turf/simulated/floor,/area/atmos) -"bWC" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 1; icon_state = "manifold-r"; level = 2},/obj/machinery/meter,/turf/simulated/floor,/area/atmos) -"bWD" = (/obj/machinery/atmospherics/pipe/manifold{color = "cyan"; dir = 8; icon_state = "manifold-c"; initialize_directions = 11; level = 2},/turf/simulated/floor,/area/atmos) -"bWE" = (/obj/machinery/atmospherics/binary/pump{dir = 4; icon_state = "intact_on"; name = "O2 to Air"; on = 1},/turf/simulated/floor,/area/atmos) -"bWF" = (/obj/machinery/atmospherics/trinary/mixer{icon_state = "intact_on"; name = "Gas mixer (N2/O2)"; node1_concentration = 0.8; node2_concentration = 0.2; on = 1; pixel_x = 0; pixel_y = 1; target_pressure = 4500},/turf/simulated/floor,/area/atmos) -"bWG" = (/obj/machinery/atmospherics/pipe/simple{color = "yellow"; dir = 5; icon_state = "intact-y"; level = 2},/turf/simulated/floor,/area/atmos) -"bWH" = (/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_off"; name = "CO2 to Pure"; on = 0},/obj/machinery/atmospherics/pipe/simple{color = "green"; icon_state = "intact-g"; level = 2},/turf/simulated/floor,/area/atmos) -"bWI" = (/obj/machinery/atmospherics/valve/digital{color = "yellow"; dir = 4; name = "CO2 Outlet Valve"},/turf/simulated/floor{dir = 6; icon_state = "yellow"},/area/atmos) -"bWJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = "co2_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/atmos) -"bWK" = (/obj/machinery/door/poddoor{id = "disvent"; name = "Incinerator Vent"},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) -"bWL" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) -"bWM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) -"bWN" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/binary/pump{dir = 4},/obj/machinery/access_button{command = "cycle_interior"; layer = 3.1; master_tag = "incinerator_access_control"; name = "Incinerator airlock control"; pixel_x = 22; pixel_y = -10},/obj/machinery/light{dir = 1},/obj/effect/sign/fire{pixel_y = 32},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) -"bWO" = (/obj/machinery/door_control{id = "disvent"; name = "Incinerator Vent Control"; pixel_x = 0; pixel_y = 24; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/incinerator) -"bWP" = (/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) -"bWQ" = (/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) -"bWR" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold"; level = 2},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) -"bWS" = (/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/obj/machinery/atmospherics/valve{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) -"bWT" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) -"bWU" = (/obj/structure/closet/l3closet/virology{layer = 2.9; pixel_x = -5},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"bWV" = (/obj/effect/sign/deathsposal{pixel_x = 32},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"bWW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/wall,/area/medical/virology) -"bWX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"bWY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"bWZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"bXa" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/wall/r_wall,/area/medical/virology) -"bXb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"bXc" = (/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2 (EAST)"; icon_state = "pipe-j2"; dir = 4},/turf/simulated/floor/plating/airless,/area/maintenance/asmaint2) -"bXd" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"bXe" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless,/area) -"bXf" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area) -"bXg" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet{dir = 4},/turf/simulated/floor/plating/airless,/area) -"bXh" = (/obj/structure/table,/obj/item/weapon/circular_saw{pixel_y = 6},/turf/simulated/floor{icon_state = "white"},/area/assembly/assembly_line) -"bXi" = (/turf/simulated/floor{icon_state = "white"},/area/assembly/assembly_line) -"bXj" = (/obj/structure/table,/obj/item/device/mmi,/obj/item/device/mmi,/obj/item/device/mmi,/turf/simulated/floor{icon_state = "white"},/area/assembly/assembly_line) -"bXk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/assembly/assembly_line) -"bXl" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/plating,/area/maintenance/aft) -"bXm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/maintenance/aft) -"bXn" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/hallway/primary/aft) -"bXo" = (/obj/machinery/door/firedoor/border_only,/obj/effect/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 32},/turf/simulated/floor{icon_state = "yellowcorner"},/area/hallway/primary/aft) -"bXp" = (/obj/machinery/camera{c_tag = "Engineering Break-Room"; dir = 4; network = "SS13"},/obj/machinery/vending/cigarette,/turf/simulated/floor,/area/engine/break_room) -"bXq" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/turf/simulated/floor,/area/engine/break_room) -"bXr" = (/obj/structure/stool,/turf/simulated/floor,/area/engine/break_room) -"bXs" = (/obj/structure/stool,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/engine/break_room) -"bXt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor,/area/engine/break_room) -"bXu" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor,/area/engine/break_room) -"bXv" = (/obj/machinery/camera{c_tag = "Atmospherics South West"; dir = 4; network = "SS13"},/obj/machinery/portable_atmospherics/pump,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/atmos) -"bXw" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/atmos) -"bXx" = (/obj/machinery/atmospherics/binary/pump{dir = 1; icon_state = "intact_on"; name = "N2 Out"; on = 1},/turf/simulated/floor,/area/atmos) -"bXy" = (/obj/machinery/atmospherics/trinary/filter{dir = 4; filter_type = 2; icon_state = "intact_on"; name = "Gas filter (N2 tank)"; on = 1},/turf/simulated/floor,/area/atmos) -"bXz" = (/obj/machinery/atmospherics/pipe/simple{color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/simulated/floor,/area/atmos) -"bXA" = (/obj/machinery/atmospherics/pipe/simple{color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/binary/pump{dir = 1; icon_state = "intact_on"; name = "O2 Out"; on = 1},/turf/simulated/floor,/area/atmos) -"bXB" = (/obj/machinery/atmospherics/trinary/filter{dir = 4; filter_type = 1; icon_state = "intact_on"; name = "Gas filter (O2 tank)"; on = 1},/turf/simulated/floor,/area/atmos) -"bXC" = (/obj/machinery/atmospherics/pipe/simple{color = "cyan"; icon_state = "intact-c"; level = 2},/obj/machinery/atmospherics/pipe/simple{color = "green"; dir = 4; icon_state = "intact-g"; initialize_directions = 12; level = 2},/turf/simulated/floor,/area/atmos) -"bXD" = (/obj/machinery/atmospherics/pipe/simple{color = "green"; dir = 9; icon_state = "intact-g"; level = 2},/turf/simulated/floor,/area/atmos) -"bXE" = (/obj/machinery/atmospherics/pipe/simple{color = "cyan"; dir = 6; icon_state = "intact-c"; initialize_directions = 6; level = 2},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor,/area/atmos) -"bXF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{color = "cyan"; dir = 9; icon_state = "intact-c"; level = 2},/turf/simulated/floor/plating,/area/atmos) -"bXG" = (/obj/machinery/igniter{icon_state = "igniter0"; id = "Incinerator"; on = 0},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) -"bXH" = (/obj/machinery/door/airlock/maintenance{autoclose = 0; doortype = 7; frequency = 1449; glass = 1; icon = 'Doorglass.dmi'; icon_state = "door_locked"; id_tag = "incinerator_airlock_exterior"; locked = 1; name = "Incinerator Exterior Airlock"; opacity = 0; req_access_txt = "12"},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) -"bXI" = (/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) -"bXJ" = (/obj/machinery/door/airlock/maintenance{autoclose = 0; doortype = 7; frequency = 1449; glass = 1; icon = 'Doorglass.dmi'; icon_state = "door_locked"; id_tag = "incinerator_airlock_interior"; locked = 1; name = "Incinerator Interior Airlock"; opacity = 0; req_access_txt = "12"},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) -"bXK" = (/turf/simulated/floor/plating,/area/maintenance/incinerator) -"bXL" = (/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/turf/simulated/floor/plating,/area/maintenance/incinerator) -"bXM" = (/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/incinerator) -"bXN" = (/obj/machinery/atmospherics/valve,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) -"bXO" = (/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) -"bXP" = (/obj/machinery/computer/area_atmos,/obj/effect/sign/nosmoking_2{pixel_x = 28},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) -"bXQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"bXR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = "Streight"},/turf/simulated/wall/r_wall,/area/medical/virology) -"bXS" = (/obj/structure/closet/secure_closet/medical1{layer = 2.9; pixel_x = -5},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = "Streight"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"bXT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = "Streight"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"bXU" = (/obj/machinery/power/apc{cell_type = 2500; dir = 2; name = "Virology APC"; pixel_x = 0; pixel_y = -23},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"bXV" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/light,/obj/machinery/requests_console{department = "Virology"; name = "Virology Requests Console"; pixel_x = 32},/obj/machinery/camera{c_tag = "Virology West"; dir = 8; network = "SS13"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"bXW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/medical/virology) -"bXX" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/medical/virology) -"bXY" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Monkey Pen"; req_access_txt = "39"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"bXZ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/medical/virology) -"bYa" = (/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"bYb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/maintenance/portsolar) -"bYc" = (/turf/simulated/wall/r_wall,/area/maintenance/portsolar) -"bYd" = (/obj/structure/table,/obj/item/weapon/scalpel{pixel_y = 6},/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/assembly/assembly_line) +"bWa" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/closet/wardrobe/robotics_black,/turf/simulated/floor,/area/assembly/assembly_line) +"bWb" = (/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/floor{dir = 8; icon_state = "loadingarea"; tag = "loading"},/area/assembly/assembly_line) +"bWc" = (/obj/machinery/conveyor{dir = 4; id = "Skynet_heavy"},/obj/machinery/light,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/assembly/assembly_line) +"bWd" = (/obj/machinery/conveyor{dir = 4; id = "Skynet_heavy"},/obj/machinery/ai_status_display{pixel_y = -32},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/assembly/assembly_line) +"bWe" = (/obj/machinery/conveyor{dir = 4; id = "Skynet_heavy"},/obj/machinery/camera{c_tag = "Robotics Assembly"; dir = 10; network = "RD"},/obj/machinery/camera{c_tag = "Robotics Assembly"; dir = 1},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/assembly/assembly_line) +"bWf" = (/obj/machinery/conveyor{dir = 4; id = "Skynet_heavy"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/assembly/assembly_line) +"bWg" = (/obj/machinery/conveyor{dir = 4; id = "Skynet_heavy"},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/assembly/assembly_line) +"bWh" = (/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/assembly/assembly_line) +"bWi" = (/obj/machinery/requests_console{department = "Assembly Line (Robotics)"; departmentType = 2; name = "assembly line RC"; pixel_y = -30},/turf/simulated/floor,/area/assembly/assembly_line) +"bWj" = (/obj/structure/table,/obj/item/device/multitool,/obj/item/weapon/crowbar,/obj/item/device/flash,/obj/item/device/flash,/turf/simulated/floor,/area/assembly/assembly_line) +"bWk" = (/obj/structure/table,/obj/item/clothing/gloves/black{pixel_y = 3},/obj/item/device/radio/headset/headset_rob,/turf/simulated/floor,/area/assembly/assembly_line) +"bWl" = (/obj/structure/reagent_dispensers/fueltank,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/floor,/area/assembly/assembly_line) +"bWm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/assembly/assembly_line) +"bWn" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor/plating,/area/assembly/assembly_line) +"bWo" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor,/area/hallway/primary/aft) +"bWp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor,/area/hallway/primary/aft) +"bWq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/hallway/primary/aft) +"bWr" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "yellowcorner"},/area/hallway/primary/aft) +"bWs" = (/obj/machinery/vending/cola,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/engine/break_room) +"bWt" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/cola{pixel_x = -3},/turf/simulated/floor,/area/engine/break_room) +"bWu" = (/obj/structure/table,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/item/weapon/folder/yellow,/obj/item/weapon/screwdriver{pixel_y = 8},/turf/simulated/floor,/area/engine/break_room) +"bWv" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers,/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers{pixel_x = 5; pixel_y = 2},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engine/break_room) +"bWw" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engine/break_room) +"bWx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "yellowcorner"},/area/engine/break_room) +"bWy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/atmos) +"bWz" = (/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 5; icon_state = "intact-r"; level = 2},/turf/simulated/floor,/area/atmos) +"bWA" = (/obj/machinery/atmospherics/pipe/simple{color = "cyan"; icon_state = "intact-c"; level = 2},/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/turf/simulated/floor,/area/atmos) +"bWB" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 1; icon_state = "manifold-r"; level = 2},/obj/machinery/meter,/turf/simulated/floor,/area/atmos) +"bWC" = (/obj/machinery/atmospherics/pipe/manifold{color = "cyan"; dir = 8; icon_state = "manifold-c"; initialize_directions = 11; level = 2},/turf/simulated/floor,/area/atmos) +"bWD" = (/obj/machinery/atmospherics/binary/pump{dir = 4; icon_state = "intact_on"; name = "O2 to Air"; on = 1},/turf/simulated/floor,/area/atmos) +"bWE" = (/obj/machinery/atmospherics/trinary/mixer{icon_state = "intact_on"; name = "Gas mixer (N2/O2)"; node1_concentration = 0.8; node2_concentration = 0.2; on = 1; pixel_x = 0; pixel_y = 1; target_pressure = 4500},/turf/simulated/floor,/area/atmos) +"bWF" = (/obj/machinery/atmospherics/pipe/simple{color = "yellow"; dir = 5; icon_state = "intact-y"; level = 2},/turf/simulated/floor,/area/atmos) +"bWG" = (/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_off"; name = "CO2 to Pure"; on = 0},/obj/machinery/atmospherics/pipe/simple{color = "green"; icon_state = "intact-g"; level = 2},/turf/simulated/floor,/area/atmos) +"bWH" = (/obj/machinery/atmospherics/valve/digital{color = "yellow"; dir = 4; name = "CO2 Outlet Valve"},/turf/simulated/floor{dir = 6; icon_state = "yellow"},/area/atmos) +"bWI" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = "co2_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/atmos) +"bWJ" = (/obj/machinery/door/poddoor{id = "disvent"; name = "Incinerator Vent"},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) +"bWK" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) +"bWL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) +"bWM" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/binary/pump{dir = 4},/obj/machinery/access_button{command = "cycle_interior"; layer = 3.1; master_tag = "incinerator_access_control"; name = "Incinerator airlock control"; pixel_x = 22; pixel_y = -10},/obj/machinery/light{dir = 1},/obj/effect/sign/fire{pixel_y = 32},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) +"bWN" = (/obj/machinery/door_control{id = "disvent"; name = "Incinerator Vent Control"; pixel_x = 0; pixel_y = 24; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/incinerator) +"bWO" = (/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bWP" = (/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bWQ" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold"; level = 2},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bWR" = (/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/obj/machinery/atmospherics/valve{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bWS" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bWT" = (/obj/structure/closet/l3closet/virology{layer = 2.9; pixel_x = -5},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"bWU" = (/obj/effect/sign/deathsposal{pixel_x = 32},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"bWV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/wall,/area/medical/virology) +"bWW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"bWX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"bWY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"bWZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/wall/r_wall,/area/medical/virology) +"bXa" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) +"bXb" = (/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2 (EAST)"; icon_state = "pipe-j2"; dir = 4},/turf/simulated/floor/plating/airless,/area/maintenance/asmaint2) +"bXc" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/asmaint2) +"bXd" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless,/area) +"bXe" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area) +"bXf" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet{dir = 4},/turf/simulated/floor/plating/airless,/area) +"bXg" = (/obj/structure/table,/obj/item/weapon/circular_saw{pixel_y = 6},/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/assembly/assembly_line) +"bXh" = (/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/assembly/assembly_line) +"bXi" = (/obj/structure/table,/obj/item/device/mmi,/obj/item/device/mmi,/obj/item/device/mmi,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/assembly/assembly_line) +"bXj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/assembly/assembly_line) +"bXk" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/plating,/area/maintenance/aft) +"bXl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/maintenance/aft) +"bXm" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/hallway/primary/aft) +"bXn" = (/obj/machinery/door/firedoor/border_only,/obj/effect/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 32},/turf/simulated/floor{icon_state = "yellowcorner"},/area/hallway/primary/aft) +"bXo" = (/obj/machinery/camera{c_tag = "Engineering Break-Room"; dir = 4; network = "SS13"},/obj/machinery/vending/cigarette,/turf/simulated/floor,/area/engine/break_room) +"bXp" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/turf/simulated/floor,/area/engine/break_room) +"bXq" = (/obj/structure/stool,/turf/simulated/floor,/area/engine/break_room) +"bXr" = (/obj/structure/stool,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/engine/break_room) +"bXs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor,/area/engine/break_room) +"bXt" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor,/area/engine/break_room) +"bXu" = (/obj/machinery/camera{c_tag = "Atmospherics South West"; dir = 4; network = "SS13"},/obj/machinery/portable_atmospherics/pump,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/atmos) +"bXv" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/atmos) +"bXw" = (/obj/machinery/atmospherics/binary/pump{dir = 1; icon_state = "intact_on"; name = "N2 Out"; on = 1},/turf/simulated/floor,/area/atmos) +"bXx" = (/obj/machinery/atmospherics/trinary/filter{dir = 4; filter_type = 2; icon_state = "intact_on"; name = "Gas filter (N2 tank)"; on = 1},/turf/simulated/floor,/area/atmos) +"bXy" = (/obj/machinery/atmospherics/pipe/simple{color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/simulated/floor,/area/atmos) +"bXz" = (/obj/machinery/atmospherics/pipe/simple{color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/binary/pump{dir = 1; icon_state = "intact_on"; name = "O2 Out"; on = 1},/turf/simulated/floor,/area/atmos) +"bXA" = (/obj/machinery/atmospherics/trinary/filter{dir = 4; filter_type = 1; icon_state = "intact_on"; name = "Gas filter (O2 tank)"; on = 1},/turf/simulated/floor,/area/atmos) +"bXB" = (/obj/machinery/atmospherics/pipe/simple{color = "cyan"; icon_state = "intact-c"; level = 2},/obj/machinery/atmospherics/pipe/simple{color = "green"; dir = 4; icon_state = "intact-g"; initialize_directions = 12; level = 2},/turf/simulated/floor,/area/atmos) +"bXC" = (/obj/machinery/atmospherics/pipe/simple{color = "green"; dir = 9; icon_state = "intact-g"; level = 2},/turf/simulated/floor,/area/atmos) +"bXD" = (/obj/machinery/atmospherics/pipe/simple{color = "cyan"; dir = 6; icon_state = "intact-c"; initialize_directions = 6; level = 2},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor,/area/atmos) +"bXE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{color = "cyan"; dir = 9; icon_state = "intact-c"; level = 2},/turf/simulated/floor/plating,/area/atmos) +"bXF" = (/obj/machinery/igniter{icon_state = "igniter0"; id = "Incinerator"; on = 0},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) +"bXG" = (/obj/machinery/door/airlock/maintenance{autoclose = 0; doortype = 7; frequency = 1449; glass = 1; icon = 'Doorglass.dmi'; icon_state = "door_locked"; id_tag = "incinerator_airlock_exterior"; locked = 1; name = "Incinerator Exterior Airlock"; opacity = 0; req_access_txt = "12"},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) +"bXH" = (/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) +"bXI" = (/obj/machinery/door/airlock/maintenance{autoclose = 0; doortype = 7; frequency = 1449; glass = 1; icon = 'Doorglass.dmi'; icon_state = "door_locked"; id_tag = "incinerator_airlock_interior"; locked = 1; name = "Incinerator Interior Airlock"; opacity = 0; req_access_txt = "12"},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) +"bXJ" = (/turf/simulated/floor/plating,/area/maintenance/incinerator) +"bXK" = (/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/turf/simulated/floor/plating,/area/maintenance/incinerator) +"bXL" = (/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/incinerator) +"bXM" = (/obj/machinery/atmospherics/valve,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bXN" = (/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bXO" = (/obj/machinery/computer/area_atmos,/obj/effect/sign/nosmoking_2{pixel_x = 28},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bXP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) +"bXQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = "Streight"},/turf/simulated/wall/r_wall,/area/medical/virology) +"bXR" = (/obj/structure/closet/secure_closet/medical1{layer = 2.9; pixel_x = -5},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = "Streight"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"bXS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = "Streight"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"bXT" = (/obj/machinery/power/apc{cell_type = 2500; dir = 2; name = "Virology APC"; pixel_x = 0; pixel_y = -23},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"bXU" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/light,/obj/machinery/requests_console{department = "Virology"; name = "Virology Requests Console"; pixel_x = 32},/obj/machinery/camera{c_tag = "Virology West"; dir = 8; network = "SS13"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"bXV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/medical/virology) +"bXW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/medical/virology) +"bXX" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Monkey Pen"; req_access_txt = "39"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"bXY" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/medical/virology) +"bXZ" = (/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/asmaint2) +"bYa" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/maintenance/portsolar) +"bYb" = (/turf/simulated/wall/r_wall,/area/maintenance/portsolar) +"bYc" = (/obj/structure/table,/obj/item/weapon/scalpel{pixel_y = 6},/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/assembly/assembly_line) +"bYd" = (/turf/simulated/floor{icon_state = "white"},/area/assembly/assembly_line) "bYe" = (/obj/structure/table,/obj/item/weapon/storage/body_bag_box,/obj/item/weapon/pen,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "white"},/area/assembly/assembly_line) "bYf" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/turf/simulated/floor/plating,/area/maintenance/aft) "bYg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = "Streight"},/turf/simulated/floor/plating,/area/maintenance/aft) @@ -6610,7 +6610,7 @@ "cxf" = (/obj/machinery/door/airlock/external,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "NTrasen"; name = "Outer Airlock"; opacity = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) "cxg" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/specops/centcom) "cxh" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/control) -"cxi" = (/obj/structure/table,/obj/item/assembly/shock_kit{icon = 'icons/obj/assemblies.dmi'},/obj/item/device/assembly/signaler,/obj/item/weapon/handcuffs,/obj/item/weapon/melee/classic_baton,/turf/unsimulated/floor{icon_state = "whiteshiny"},/area/centcom/control) +"cxi" = (/obj/structure/table,/obj/item/assembly/shock_kit{icon = 'assemblies.dmi'},/obj/item/device/assembly/signaler,/obj/item/weapon/handcuffs,/obj/item/weapon/melee/classic_baton,/turf/unsimulated/floor{icon_state = "whiteshiny"},/area/centcom/control) "cxj" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (EAST)"; icon_state = "propulsion"; dir = 4},/turf/space,/area/shuttle/specops/centcom) "cxk" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/turf/unsimulated/floor,/area/shuttle/specops/centcom) "cxl" = (/obj/effect/landmark{name = "Commando-Bomb"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) @@ -6870,11 +6870,11 @@ "cCf" = (/obj/machinery/recharger{pixel_y = 4},/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) "cCg" = (/obj/machinery/recharger{pixel_y = 4},/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) "cCh" = (/obj/machinery/camera{pixel_x = 11; pixel_y = -9; network = "thunder"; c_tag = "Red Team"},/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) -"cCi" = (/turf/simulated/floor/grid,/area/tdome) -"cCj" = (/obj/machinery/flasher{id = "flash"; name = "Thunderdome Flash"},/turf/simulated/floor/grid,/area/tdome) +"cCi" = (/turf/simulated/floor/bluegrid,/area/tdome) +"cCj" = (/obj/machinery/flasher{id = "flash"; name = "Thunderdome Flash"},/turf/simulated/floor/bluegrid,/area/tdome) "cCk" = (/obj/machinery/camera{pixel_x = 12; pixel_y = -10; network = "thunder"; c_tag = "Green Team"},/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) -"cCl" = (/obj/machinery/atmospherics/pipe/vent,/turf/simulated/floor/grid,/area/tdome) -"cCm" = (/obj/machinery/camera{pixel_x = 10; network = "thunder"; c_tag = "Arena"},/turf/simulated/floor/grid,/area/tdome) +"cCl" = (/obj/machinery/atmospherics/pipe/vent,/turf/simulated/floor/bluegrid,/area/tdome) +"cCm" = (/obj/machinery/camera{pixel_x = 10; network = "thunder"; c_tag = "Arena"},/turf/simulated/floor/bluegrid,/area/tdome) "cCn" = (/obj/machinery/atmospherics/pipe/simple{dir = 5; icon_state = "intact"; level = 2},/turf/simulated/floor,/area/tdome) "cCo" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold"; level = 2},/turf/simulated/floor,/area/tdome) "cCp" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact"; level = 2},/turf/simulated/floor,/area/tdome) @@ -7284,14 +7284,14 @@ "cKd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/wall/r_wall,/area/turret_protected/tcomeast) "cKe" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{color = "blue"; dir = 5; icon_state = "intact-b-f"; level = 1; name = "pipe"},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/turret_protected/tcomwest) "cKf" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple{color = "blue"; dir = 10; icon_state = "intact-b-f"; initialize_directions = 10; level = 1; name = "pipe"},/obj/structure/lattice,/turf/space,/area/turret_protected/tcomwest) -"cKg" = (/turf/simulated/floor/grid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"cKh" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Com Sat Central Compartment APC"; pixel_x = -1; pixel_y = 26},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/grid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"cKi" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = "Streight"},/turf/simulated/floor/grid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"cKj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = "Streight"},/turf/simulated/floor/grid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"cKk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = "Streight"},/obj/machinery/camera{c_tag = "Central Compartment North"; dir = 2; network = "Tcomsat"},/obj/machinery/light{dir = 1},/turf/simulated/floor/grid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"cKl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = "Streight"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor/grid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"cKm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = "Streight"},/turf/simulated/floor/grid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"cKn" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/turf/simulated/floor/grid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"cKg" = (/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"cKh" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Com Sat Central Compartment APC"; pixel_x = -1; pixel_y = 26},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"cKi" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = "Streight"},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"cKj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = "Streight"},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"cKk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = "Streight"},/obj/machinery/camera{c_tag = "Central Compartment North"; dir = 2; network = "Tcomsat"},/obj/machinery/light{dir = 1},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"cKl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = "Streight"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"cKm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = "Streight"},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"cKn" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "cKo" = (/obj/structure/window/reinforced{dir = 8},/turf/space,/area/turret_protected/tcomeast) "cKp" = (/turf/space,/area/turret_protected/tcomeast) "cKq" = (/obj/machinery/light{dir = 4},/turf/space,/area/turret_protected/tcomeast) @@ -7300,11 +7300,11 @@ "cKt" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/turf/simulated/floor/plating/airless,/area) "cKu" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/turret_protected/tcomwest) "cKv" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/lattice,/turf/space,/area/turret_protected/tcomwest) -"cKw" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/grid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"cKx" = (/turf/simulated/floor/grid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"cKy" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/grid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"cKz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor/grid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"cKA" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/grid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"cKw" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"cKx" = (/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"cKy" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"cKz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"cKA" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "cKB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/turret_protected/tcomeast) "cKC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/turret_protected/tcomeast) "cKD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/turf/simulated/floor/plating,/area/turret_protected/tcomeast) @@ -7342,8 +7342,8 @@ "cLj" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{color = "blue"; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/turret_protected/tcomwest) "cLk" = (/obj/machinery/telecomms/processor/preset_two,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; tag = "icon-vault (NORTH)"; temperature = 80},/area/tcommsat/chamber) "cLl" = (/obj/machinery/telecomms/bus/preset_two,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; tag = "icon-vault (NORTH)"; temperature = 80},/area/tcommsat/chamber) -"cLm" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/grid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"cLn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor/grid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"cLm" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"cLn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "cLo" = (/obj/machinery/telecomms/processor/preset_four,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; tag = "icon-vault (EAST)"; temperature = 80},/area/tcommsat/chamber) "cLp" = (/obj/machinery/telecomms/bus/preset_four,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; tag = "icon-vault (EAST)"; temperature = 80},/area/tcommsat/chamber) "cLq" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/lattice,/turf/space,/area/turret_protected/tcomeast) @@ -7367,7 +7367,7 @@ "cLI" = (/obj/machinery/light{dir = 8},/turf/simulated/floor,/area/turret_protected/tcomeast) "cLJ" = (/obj/item/weapon/storage/toolbox/mechanical,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/turret_protected/tcomeast) "cLK" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/turf/simulated/floor,/area/turret_protected/tcomeast) -"cLL" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/grid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"cLL" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "cLM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/turret_protected/tcomeast) "cLN" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/transmitter,/obj/item/weapon/stock_parts/subspace/transmitter,/turf/simulated/floor,/area/turret_protected/tcomeast) "cLO" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor,/area/turret_protected/tcomeast) @@ -7376,8 +7376,8 @@ "cLR" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 4},/turf/space,/area/turret_protected/tcomwest) "cLS" = (/obj/machinery/telecomms/server/presets/science,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; tag = "icon-vault (NORTH)"; temperature = 80},/area/tcommsat/chamber) "cLT" = (/obj/machinery/telecomms/server/presets/medical,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; tag = "icon-vault (NORTH)"; temperature = 80},/area/tcommsat/chamber) -"cLU" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/turf/simulated/floor/grid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"cLV" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact-f"},/turf/simulated/floor/grid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"cLU" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"cLV" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact-f"},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "cLW" = (/obj/machinery/telecomms/server/presets/command,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; tag = "icon-vault (EAST)"; temperature = 80},/area/tcommsat/chamber) "cLX" = (/obj/machinery/telecomms/server/presets/security,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; tag = "icon-vault (EAST)"; temperature = 80},/area/tcommsat/chamber) "cLY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/turret_protected/tcomeast) @@ -7385,10 +7385,10 @@ "cMa" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/turret_protected/tcomeast) "cMb" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/turf/simulated/wall/r_wall,/area) "cMc" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/plating/airless,/area) -"cMd" = (/obj/machinery/light,/turf/simulated/floor/grid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"cMe" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 140; on = 1; pressure_checks = 0},/turf/simulated/floor/grid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"cMf" = (/obj/machinery/camera{c_tag = "Central Compartment South"; dir = 1; network = "Tcomsat"},/turf/simulated/floor/grid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"cMg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 120; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/grid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"cMd" = (/obj/machinery/light,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"cMe" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 140; on = 1; pressure_checks = 0},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"cMf" = (/obj/machinery/camera{c_tag = "Central Compartment South"; dir = 1; network = "Tcomsat"},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"cMg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 120; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "cMh" = (/obj/effect/sign/nosmoking_2,/turf/simulated/wall/r_wall,/area/tcommsat/chamber) "cMi" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/lattice,/turf/space,/area/turret_protected/tcomeast) "cMj" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/turf/space,/area/turret_protected/tcomeast) @@ -8847,7 +8847,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajdajdajdajeajeaaaaaaaaaakEaaaaaaaaaajeajeajdajdajdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaahiakFakGakHakIakJafIakKakLakMakNakOakPakMakNakQakRakSakNakTakUakVakNakTakWakXafIakYakZalaalbalcaldalcalealfajaajbaiKajcaafaaaaaaaaaaaaajOajOajOajOajOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajeaafalgaafajeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajdaaaaaaaafaafaaaaaaaaaakEaafaafaaaaafaafaaaaaaajdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafahialhalialjagnalkafIallalmalnahialoagmalpahiajqajlajsahialqalmalrahialqalmalsafIaltalualvalwalxalyalxalzalAajaajbaiKajNaafaaaaaaaaaaaaajOajOajOajOajOaaaaaaaaaaaaaaaaaaajeajeajeajeajeaaaaaaaaaalBaaaaaaaaaajeajeajdajdajdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajeaafalCalCalCalCalCaafalDaafalCalCalCalCalCaafajeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaigagmalEagmalqalFafIalGalHalIahialJalKalLahiajqajlajsahialMalKalJahialNalKalOafIalPalQalRalRalRalSalRalRalTajaajbaiKaifaifaafaaaaaaaaaajOajOajOajOajOaaaaaaaaaaaaaaaaaaajPaaaaaaaafaafaafaaaaaaalBaafaafaaaaafaafaaaaaaajdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaajeaafalUalValValValValWalXalYalValValValValZaafajeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaagaafamaamaahiahiahiahiahiahiafIambamcamdakNameamcamdakNakQakRakSakNameamcamdakNameamcamfafIakdamgamgamgamgakdamgamgamhajaamiamjamkaifaifaifaaaaaaajOajOajOajOajOaaaaaaaaaaaaaaaaaaajeaafamlamlamlamlamlaafammaafamlamlamlamlamlaafajeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaajeaafalUalValValValValWalXalYalValValValValZaafajeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaagaafamaamaahiahiahiahiahiahiafIambamcamdakNameamcamdakNakQakRakSakNameamcamdakNameamcamfafIakdamgamgamgamgakdamgamgamhajaamiamjamkaifaifaifaaaaaaajOajOajOajOajOaaaaaaaaaaaaaaaaaaajeaafamlamlamlamlamlaafammaafamlamlamlamlamlaafajeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajeaafamnamnamnamnamnaafalXaafamnamnamnamnamnaafajeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafamoampamqamramsamsamtamuamvamsamsamsamsamsamsamsamvamsamwamxamyamxamxamxamxamxamxamzamAakdamgamgamgamgakdamgamgamBajaamiamjamkamCamDamCaafaaaajOajOajOajOajOaaeaaaaaaaaaaaaaaaajeaafamEamFamFamFamFamGamHamIamFamFamFamFamJaafajeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajdaaaaaaaaaaafaaaaaaaafalXaaaaaaaaaaafaaaaaaaaaajPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamKamLamqamaamMamwamNamwamwamwamwamwamwamwamwamwamwamwamOamwamwamwamPamwamwamwamwamQamRamSamSamSamTamUamVamWamXamYamZanaanbancancandaifaaaaaaajOajOajOajOajOaaaaaaaaaaaaaaaaaaajeaafaneaneaneaneaneaafamHaafaneaneaneaneaneaafajeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajeaafalCalCalCalCalCaafalXaafalCalCalCalCalCaafajeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfamqamqamaanganhanianjanjanjanjanjanjanjanjanjanjanjankanlanmanmannanoanpanqanmanmamAanransantajaajaajaanuajaanvajaanwanxaifanyanzaifaaaaaaajOajOajOajOajOaaaaaaaaaaaaaaaaaaajdaaaaaaaaaaafaaaaaaaafamHaaaaaaaaaaafaaaaaaaaaajdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8927,13 +8927,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajdaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaajdaaaaafaafaaaaaaaaaaaaaaaaaaaaabSRbRubTGbTHbTIbSUbSUbSUbTJbTKbTLbTMbSUbTNbSUbTObSUbSUbSUbSUbTPbrObTQbTRbwJbTSbTTbTUbTUbTUbTUbTVbTWbTXbFFbTYbTZbUabUbbUcbUdbKvbUebUfbUgbKxbPmbUhbHmaafbIwbIwbIwbIwbIwaafaaaaaaaaaaaaaaaaaabvwbvwbvwbvwbUibUibUibvObUjbUkbUkbUkbUlbUkbUkbUkbnKbTwbUmbQybUnbUobTAbUpbUqbUrbUsbUtbTDbnKbTEbjBaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajdaaabUubUvbUwaaabUubUvbUwaaabUubUvbUwaafbUxaafaafaaaaaaaaaaaaaaaaaaaaaaaabSRbRubSibUybUzbSUbSUbSUbSUbUAbUBbUBbUCbUBbUBbUBbUBbUBbUDbUEbUFbrObTQbRGbGSbUGbUHbUIbUJbUKbULbUMbUNbUObUPbUQbJnbJobURbUdbUSbUTbUUbJobUVbKtbUWbUXbOnbJubJvbUYbUZbUZbIwaafaaaaaaaaaaaaaaaaaaaaaaafaafbvwbUibVabUibDlbvMbUkbVbbVcbVdbVebVfbUkbnKbTwbVgbQybVhbVibVjbVkbVlbVmbVnbVobTDbnKbVpbjBaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajdaaabUubVqbUwaaabUubVqbUwaaabUubVqbUwaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaabVrbRubSibRybVsbSUbSUbSUbVtbVubVubTObSUbVvbSUbSUbSUbSUbVwbVxbVybRGbVzbrObwJbVAbVBbVCbVDbVEbVFbVGbVDbVHbVIbJkbPlbFSbVJbFTbVKbVLbHjbVMbVNbKtbPmbVObHmaafbKAbVPbVQbVRbIwaafaaaaaaaaaaaaaaaaaaaaaaaaaafaafbUibVSbUibUibUibUkbVTbVTbVdbVTbVUbUkbnKbVVbVWbQybVXbQybVYbQybQybQybQybVZbTDbnKbTEbjBaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaajeaafbUubVqbUwaaabUubVqbUwaafbUubVqbUwaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaabQLbRubSibRybWabWbbWbbWbbWcbWdbWebWfbWgbWhbWibWjbWkbWlbWmbWnbWobWpbWqbWrbMBbWsbVBbWtbVDbWubWvbWwbWxbWybWzbLsbWAbWBbWCbJobUdbWDbVJbWEbWFbWGbWHbWIbQfbQgbJvbWJbUZbUZbIwaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbWKbWLbWMbWNbWMbWObWPbWQbWRbWSbWTbUkbnKbTwbWUbQybVXbWVbWWbWXbWXbWXbWYbWZbXabXbbXcbXdbXebXfbXebXebXgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabUubVqbUwaafbUubVqbUwaaabUubVqbUwaaaaaaaaaaaaaaaaafaaaaafaaaaaaaaaaaabQLbRubSibRybXhbXibXibXjbRybRybRybRybRybRybRybRybSnbSmbXkbRybRybXlbXmbXnbKkbXobVBbXpbXqbXrbXsbXrbXtbXubEtbXvbXwbXxbWAbXybXzbXAbXzbXBbXCbXzbXDbXEbXFaafbIwbIwbIwbIwbIwaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbWKbXGbXHbXIbXJbXKbXLbXMbXNbXObXPbUkbXQbXRbXSbXTbXUbXVbXWbXXbXYbVlbXZbTwbPubnKbYabaVaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajdajdajeaafaaabUubVqbUwaafbUubVqbUwaaabUubVqbUwaafaaaaaaaaaaaaaafaafbYbbYcbYcbYcbYcbQLbRubSibRybYdbXibXibYebRybYfbYgbYgbYgbYgbYgbYgbYgbYgbYhbYibYibYjbYkbYlbYmbYlbYnbYobYobYpbYqbYrbYsbYtbFFbYubYvbYwbYxbYybYzbYAbYBbYCbYDbYEbYFbYGbHfaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaafaafbWKbYHbWMbYIbYJbYKbYLbYMbYNbYObYPbUkbnKbTwbYQbYRbYSbYTbYUbYVbYWbQybYXbTwbYYbGrbaVbaVaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaajeaafbUubVqbUwaaabUubVqbUwaafbUubVqbUwaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaabQLbRubSibRybWabSUbSUbSUbWbbWcbWdbWebWfbWgbWhbWibWjbWkbWlbWmbWnbWobWpbWqbMBbWrbVBbWsbVDbWtbWubWvbWwbWxbWybLsbWzbWAbWBbJobUdbWCbVJbWDbWEbWFbWGbWHbQfbQgbJvbWIbUZbUZbIwaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbWJbWKbWLbWMbWLbWNbWObWPbWQbWRbWSbUkbnKbTwbWTbQybVXbWUbWVbWWbWWbWWbWXbWYbWZbXabXbbXcbXdbXebXdbXdbXfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabUubVqbUwaafbUubVqbUwaaabUubVqbUwaaaaaaaaaaaaaaaaafaaaaafaaaaaaaaaaaabQLbRubSibRybXgbXhbXhbXibRybRybRybRybRybRybRybRybSnbSmbXjbRybRybXkbXlbXmbKkbXnbVBbXobXpbXqbXrbXqbXsbXtbEtbXubXvbXwbWzbXxbXybXzbXybXAbXBbXybXCbXDbXEaafbIwbIwbIwbIwbIwaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbWJbXFbXGbXHbXIbXJbXKbXLbXMbXNbXObUkbXPbXQbXRbXSbXTbXUbXVbXWbXXbVlbXYbTwbPubnKbXZbaVaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajdajdajeaafaaabUubVqbUwaafbUubVqbUwaaabUubVqbUwaafaaaaaaaaaaaaaafaafbYabYbbYbbYbbYbbQLbRubSibRybYcbYdbYdbYebRybYfbYgbYgbYgbYgbYgbYgbYgbYgbYhbYibYibYjbYkbYlbYmbYlbYnbYobYobYpbYqbYrbYsbYtbFFbYubYvbYwbYxbYybYzbYAbYBbYCbYDbYEbYFbYGbHfaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaafaafbWJbYHbWLbYIbYJbYKbYLbYMbYNbYObYPbUkbnKbTwbYQbYRbYSbYTbYUbYVbYWbQybYXbTwbYYbGrbaVbaVaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajdaaaaafaaaaafaafbYZaafaafaafbYZaafaaaaafbYZaafaaaaaaaaaaaaaaabZabZbbZcbZdbZebZfbZgbYibZhbZibRybRybZjbZkbRybRybZlbZmbZmbZmbZmbZmbZmbZmbZmbZnbZobZobZobZpbZqbZrbZsbZtbZubZvbZwbZxbZybZzbZAbFFbFFbZBbZCbZDbZEbZDbZCbZDbZEbZDbZFbZDbZFbZGaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbUibUibUibUibUibUkbUkbZHbZIbUkbUkbUkbnKbTwbZJbQybZKbZLbYQbZMbQybYWbQybTwbZNbgSbaVaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajeaafbZObZPbZPbZQbZRbZRbZRbZRbZRbZRbZRbZRbZRbZRbZRbZRbZRbZRbZSbZTbZUbZTbZVbZWbZXbZYbRubRubSibZZbRybSnbSpbRycaabZlbZmcabcaccadbZmcaecafcagcahcaicajcakcalcamcancaocapcaqcarcascatcaucavbVDcawaaaaafcaxaafcayaafcaxaafcayaafcazaafcazaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafcaAcaBaafaafbiobnKbVVcaCcaDcaEcaFcaGcaHbYWcaIbQybTwbnKbgSbioaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajdaaaaafaaaaafaafcaJaafaaaaafcaJaafaaaaafcaJaafaaaaaaaaaaaaaaabZabZbcaKcaLcaMcaNbYccaObRucaPcaQcaQcaQcaQcaQcaRcaSbZmcaTcaUcaVcaWcaXcaYcaZcaZcbacbbcbccbdbZmcbebZmcapcbfcbgcbhcbicbjcbkcblcawaaabIwcbmbKAcbmbIwcbmbKAcbmbIwcbmbKAcbmbIwaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaafcaAcbnaafaafbkFbnKcbocbpcbqcbqcbqcbrcbqcbqcbqcbqcbsbnKbgSbkFaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajdajdajeaafaafbUucbtbUwaaabUucbtbUwaaabUucbtbUwaafaaaaaaaaaaaaaafaafcbubYcbYcbYcbYcbQLcbvbRubRubRubRubRubRubZlcbwbZmcbxcaVcaVcaWcbycbycbzcbzcbzcbycbAcbBcbCcbDcbEbZwcbFcbGcbHcbIcbJcbKcbLcawaaabIwcbMcbNcbObIwcbPcbQcbRbIwcbScbTcbUbIwaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaAcbVaafaafbaVbvabvbcbWbvbbvbbvbbvbcbXbvbbvbbvbbvbbGrbgSbaVaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajdaaaaafaaaaafaafcaJaafaaaaafcaJaafaaaaafcaJaafaaaaaaaaaaaaaaabZabZbcaKcaLcaMcaNbYbcaObRucaPcaQcaQcaQcaQcaQcaRcaSbZmcaTcaUcaVcaWcaXcaYcaZcaZcbacbbcbccbdbZmcbebZmcapcbfcbgcbhcbicbjcbkcblcawaaabIwcbmbKAcbmbIwcbmbKAcbmbIwcbmbKAcbmbIwaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaafcaAcbnaafaafbkFbnKcbocbpcbqcbqcbqcbrcbqcbqcbqcbqcbsbnKbgSbkFaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajdajdajeaafaafbUucbtbUwaaabUucbtbUwaaabUucbtbUwaafaaaaaaaaaaaaaafaafcbubYbbYbbYbbYbbQLcbvbRubRubRubRubRubRubZlcbwbZmcbxcaVcaVcaWcbycbycbzcbzcbzcbycbAcbBcbCcbDcbEbZwcbFcbGcbHcbIcbJcbKcbLcawaaabIwcbMcbNcbObIwcbPcbQcbRbIwcbScbTcbUbIwaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaAcbVaafaafbaVbvabvbcbWbvbbvbbvbbvbcbXbvbbvbbvbbvbbGrbgSbaVaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUucbtbUwaafbUucbtbUwaaabUucbtbUwaaaaaaaaaaafaaaaafaafaafaaaaaaaaaaaabQLcbYcbZcbZcbZccabQLccbbYjcbwbZmcabcadcadbZmcccccdcceccfcbzcbyccgcchcciccjcckcclccmccnccoccpccqccrccscawaaabIwcctccucctbIwccvccwccvbIwccxccycczbIwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccAaaaaaaaagbaVccBbgSccCbgSbgSbgSccDbnKbgSbgSccEccFccGccGbaVaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCoaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajeaafbUucbtbUwaaabUucbtbUwaaabUucbtbUwaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabQLbRuccHcbwbZmcabcabcadbZmbZmbZmccIccJccKccLccMccNccOccPccQcapbZyccRccSccTbZybZyccUbZmbZmbIwcctccVcctbIwccvccWccvbIwcczccXcczbIwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbaVccYccZcdabgSbgScdbcdbcdccdbcdbbQJbQJbQJbQKbaVaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajeaafbUucbtbUwaaabUucbtbUwaafbUucbtbUwaafaafaafaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabZmcddbZmcdebZmcabcabcdfbZmcdgcdhcdicdjcbzcdkcdlcdmcbbcbycdkcdncdocbbcbzcdpcdqcdrcdscdtbZmbIwbIwbIwbIwbIwbIwbIwbIwbIwbIwbIwbIwbIwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaVbaVbaVcdubaVbaVcdbcdvcdwcdxcdbaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9390,7 +9390,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacfzcHDcIjcHNcIkcHNcIlcImcIncIocIpcIqcIrcIscItcIucIvcIwcIxcIycIbcIzcHLcIAcIBcIBcIBcIBcICcHLcHDcHDcfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacfzcHDcIjcHOcHNcHOcIDcIEcIFcIGcIHcIIcIJcIscIKcILcIMcIucINcIOcIbcIzcHLcIPcIBcIBcIBcIQcIRcHLcHDcHDcfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacfzcHDcIjcIScHNcHOcHOcITcIUcIVcIWcITcIXcIYcIxcIxcIucIucINcIZcIbcJacJbcJccJdcJdcJecJfcJgcJhcHJcHDcfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacfzcHDcIjcHOcHNcHOcIDcJicJjcJkcJjcJjcJjcJlcJmcJncJocJpcJqcJrcJrcJscJtcJucJvcIBcJwcJxcJycJzcJAcJBbXebXecJCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacfzcHDcIjcHOcHNcHOcIDcJicJjcJkcJjcJjcJjcJlcJmcJncJocJpcJqcJrcJrcJscJtcJucJvcIBcJwcJxcJycJzcJAcJBbXdbXdcJCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcHDcIjcHOcHNcHOcIDcJDcJEcJFcJGcJGcJGcIbcJHcJIcJJcIucJKcJLcJMcJscJNcJOcJPcJQcHLcHLcHLcHLcHEcHDcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzcfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcfzcHDcIjcHNcIkcHNcJRcJDcIrcJrcJrcJrcJrcJrcJScJTcJTcJUcJVcJWcJLcJXcJrcJrcJYcJZcKacKbcKccKbcKdcHDcfzcfzcfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacfzaafcHtcHtcHtcHtcHtcHtcHtcHtcHtcHtcHtcHtcHtcHtcHtcHtaaaaaacfzcHDcIjcHOcHNcHOcIDcKecKfcJrcKgcKgcKgcKhcKicKjcKkcKlcKjcKicKmcKncKgcJrcJYcJZcKocKpcKbcKqcKdcHDcfzcfzaaaaafcHtcHtcHtcHtcHtcHtcHtcHtcHtcHtcHtcHtcHtcHtcHtcHtaaacfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/tgstation.dme b/tgstation.dme index 38cfa2ee8a..632c2a1384 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -181,7 +181,6 @@ #define FILE_DIR "interface" #define FILE_DIR "maps" #define FILE_DIR "maps/backup" -#define FILE_DIR "maps/backup/backup" #define FILE_DIR "maps/RandomZLevels" #define FILE_DIR "sound" #define FILE_DIR "sound/AI"