diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm new file mode 100644 index 0000000000..d6bb476f32 --- /dev/null +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm @@ -0,0 +1,990 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"c" = ( +/obj/item/clockwork/alloy_shards/small, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"d" = ( +/obj/structure/destructible/clockwork/wall_gear, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"e" = ( +/obj/item/stack/tile/brass, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"f" = ( +/turf/closed/mineral/volcanic, +/area/lavaland/surface/outdoors/unexplored) +"g" = ( +/obj/item/clockwork/alloy_shards/medium/gear_bit, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"h" = ( +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"i" = ( +/obj/structure/grille/ratvar/broken, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"j" = ( +/turf/closed/wall/clockwork, +/area/lavaland/surface/outdoors/unexplored) +"k" = ( +/obj/item/clockwork/alloy_shards/small, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"l" = ( +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"m" = ( +/obj/item/clockwork/alloy_shards/medium, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"n" = ( +/obj/item/clockwork/component/belligerent_eye/blind_eye, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"o" = ( +/obj/item/clockwork/alloy_shards/large, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"p" = ( +/obj/item/clockwork/alloy_shards/medium, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"q" = ( +/obj/structure/lattice/catwalk/clockwork, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"r" = ( +/obj/structure/lattice/clockwork, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"s" = ( +/obj/item/clockwork/alloy_shards/large, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"t" = ( +/obj/item/stack/tile/brass, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"u" = ( +/obj/structure/grille/ratvar, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"v" = ( +/obj/item/clockwork/alloy_shards/medium, +/obj/structure/lattice/clockwork, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"w" = ( +/obj/structure/grille/ratvar/broken, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"x" = ( +/obj/structure/destructible/clockwork/wall_gear, +/obj/item/stack/tile/brass, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"y" = ( +/obj/item/clockwork/component/geis_capacitor/fallen_armor, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"z" = ( +/obj/structure/destructible/clockwork/wall_gear, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"A" = ( +/obj/item/clockwork/alloy_shards/clockgolem_remains, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"B" = ( +/obj/item/clockwork/weapon/ratvarian_spear, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"C" = ( +/obj/item/clockwork/alloy_shards/medium/gear_bit, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"D" = ( +/obj/structure/grille/ratvar, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"E" = ( +/obj/item/clockwork/alloy_shards/clockgolem_remains, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"F" = ( +/obj/structure/dead_ratvar, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"G" = ( +/obj/item/stack/tile/brass/fifty, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +b +s +h +b +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +a +a +a +o +b +a +h +b +r +c +j +x +b +b +g +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +a +a +a +f +b +l +b +v +b +p +w +j +j +c +l +b +b +a +a +a +a +"} +(4,1,1) = {" +a +a +a +a +a +a +f +l +l +r +b +b +l +j +j +j +p +l +b +h +c +r +a +a +"} +(5,1,1) = {" +a +a +a +a +a +b +l +l +p +h +c +l +l +l +j +l +b +l +l +D +h +r +a +a +"} +(6,1,1) = {" +a +a +a +h +c +h +m +l +l +c +l +l +l +l +w +l +l +l +m +c +h +f +a +a +"} +(7,1,1) = {" +a +a +b +b +b +l +l +l +l +h +b +l +l +l +l +l +l +l +l +c +f +f +b +a +"} +(8,1,1) = {" +a +h +h +g +c +b +l +l +l +l +n +h +r +l +l +b +l +l +l +l +f +b +a +a +"} +(9,1,1) = {" +a +b +c +b +b +l +l +l +l +t +h +b +h +w +p +b +g +l +l +b +b +b +b +a +"} +(10,1,1) = {" +b +h +l +l +l +l +l +l +b +b +p +r +F +b +h +A +b +l +l +l +m +l +l +a +"} +(11,1,1) = {" +c +i +j +j +l +l +l +l +l +b +h +k +h +h +h +r +l +l +l +l +l +l +b +a +"} +(12,1,1) = {" +d +j +j +j +h +l +l +b +l +q +r +h +h +h +c +q +l +b +l +l +b +h +o +a +"} +(13,1,1) = {" +e +k +b +l +l +l +b +p +s +r +h +h +h +h +h +h +h +l +l +l +l +b +b +a +"} +(14,1,1) = {" +b +b +b +m +l +l +l +b +h +h +k +h +h +h +h +h +c +b +l +l +b +b +h +b +"} +(15,1,1) = {" +b +b +b +l +l +l +l +h +h +h +h +h +h +h +k +B +h +l +l +l +l +b +b +a +"} +(16,1,1) = {" +f +l +l +l +l +l +l +q +b +h +h +h +h +h +h +s +b +l +l +l +l +f +f +a +"} +(17,1,1) = {" +b +b +b +l +l +l +b +l +q +r +h +h +h +h +h +b +s +r +l +r +l +l +b +a +"} +(18,1,1) = {" +b +h +l +l +l +b +b +h +b +h +h +h +h +h +r +k +b +C +r +h +b +b +m +b +"} +(19,1,1) = {" +b +b +l +l +l +l +h +b +h +h +h +h +h +h +h +r +j +h +c +h +r +h +b +b +"} +(20,1,1) = {" +b +l +l +l +l +b +b +p +h +c +h +k +h +h +o +b +l +l +l +b +E +r +G +o +"} +(21,1,1) = {" +g +b +l +l +l +l +l +r +h +r +h +h +h +h +y +l +l +l +l +l +l +j +j +r +"} +(22,1,1) = {" +c +c +b +l +l +b +h +h +t +b +h +h +h +h +h +m +b +l +l +l +h +j +j +j +"} +(23,1,1) = {" +b +h +m +n +b +h +l +o +j +u +r +p +h +r +h +b +l +l +l +b +b +w +r +b +"} +(24,1,1) = {" +a +a +b +b +l +l +l +j +j +q +p +h +m +e +z +j +j +l +l +c +l +l +b +a +"} +(25,1,1) = {" +a +a +a +l +l +l +l +j +l +l +b +h +r +x +h +l +l +l +l +l +l +a +a +a +"} +(26,1,1) = {" +a +a +a +c +b +l +l +l +l +l +l +g +q +b +h +l +l +l +c +m +b +a +a +a +"} +(27,1,1) = {" +a +a +a +b +h +b +l +l +l +l +l +l +l +l +l +l +l +l +l +b +a +a +a +a +"} +(28,1,1) = {" +a +a +a +a +c +b +l +b +l +l +l +l +l +l +l +l +b +l +f +a +a +a +a +a +"} +(29,1,1) = {" +a +a +a +a +b +b +f +c +b +l +c +l +l +l +l +c +o +l +b +a +a +a +a +a +"} +(30,1,1) = {" +a +a +a +a +a +g +c +b +l +l +b +m +l +b +l +f +b +a +a +a +a +a +a +a +"} +(31,1,1) = {" +a +a +a +a +a +a +a +b +l +b +a +b +l +c +f +f +a +a +a +a +a +a +a +a +"} +(32,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +c +a +a +a +a +a +a +a +a +a +"} diff --git a/_maps/_basemap.dm b/_maps/_basemap.dm index da795b6933..6a7e1d3636 100644 --- a/_maps/_basemap.dm +++ b/_maps/_basemap.dm @@ -5,7 +5,6 @@ #ifndef LOWMEMORYMODE #ifdef ALL_MAPS #include "map_files\Mining\Lavaland.dmm" - #include "map_files\generic\City_of_Cogs.dmm" #include "map_files\debug\runtimestation.dmm" #include "map_files\Deltastation\DeltaStation2.dmm" #include "map_files\MetaStation\MetaStation.dmm" diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index d6e6a6b3ee..1290ddf469 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aaa" = ( /turf/open/space/basic, /area/space) @@ -107,6 +107,20 @@ dir = 1 }, /area/security/prison) +"aaq" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, +/obj/machinery/hydroponics/soil, +/obj/item/plant_analyzer, +/obj/machinery/camera{ + c_tag = "Prison Common Room"; + network = list("ss13","prison") + }, +/turf/open/floor/plasteel/green/side{ + dir = 5 + }, +/area/security/prison) "aar" = ( /obj/machinery/hydroponics/soil, /obj/item/seeds/glowshroom, @@ -190,6 +204,12 @@ dir = 2 }, /area/security/prison) +"aaG" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/prison) "aaH" = ( /turf/open/floor/plating/airless, /area/space/nearstation) @@ -246,6 +266,13 @@ }, /turf/open/floor/plasteel/barber, /area/security/prison) +"aaR" = ( +/obj/structure/lattice, +/obj/structure/sign/warning/securearea{ + pixel_y = -32 + }, +/turf/open/space, +/area/space/nearstation) "aaS" = ( /obj/structure/grille, /obj/structure/lattice, @@ -359,6 +386,26 @@ /obj/machinery/vending/security, /turf/open/floor/plasteel/showroomfloor, /area/security/main) +"abm" = ( +/obj/structure/table, +/obj/item/storage/box/firingpins, +/obj/item/storage/box/firingpins, +/obj/item/key/security, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) +"abn" = ( +/obj/structure/rack, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/item/gun/energy/e_gun/dragnet, +/obj/item/gun/energy/e_gun/dragnet, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) "abo" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -470,15 +517,166 @@ "abF" = ( /turf/open/floor/plasteel/freezer, /area/security/prison) +"abG" = ( +/obj/machinery/door/window/westleft{ + base_state = "right"; + dir = 8; + icon_state = "right"; + name = "Unisex Showers" + }, +/turf/open/floor/plasteel/freezer, +/area/security/prison) +"abH" = ( +/obj/structure/table, +/obj/item/storage/box/chemimp{ + pixel_x = 6 + }, +/obj/item/storage/box/trackimp{ + pixel_x = -3 + }, +/obj/item/storage/lockbox/loyalty, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) +"abI" = ( +/obj/structure/rack, +/obj/item/clothing/suit/armor/riot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/suit/armor/riot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/clothing/head/helmet/riot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/shield/riot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/shield/riot, +/obj/item/shield/riot{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) +"abJ" = ( +/obj/structure/rack, +/obj/item/clothing/suit/armor/bulletproof{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/suit/armor/bulletproof{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/clothing/head/helmet/alt{ + layer = 3.00001; + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/head/helmet/alt{ + layer = 3.00001 + }, +/obj/item/clothing/head/helmet/alt{ + layer = 3.00001; + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/camera/motion{ + c_tag = "Armory Motion Sensor"; + dir = 2 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) +"abK" = ( +/obj/structure/chair/stool, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "permabolt3"; + name = "Cell Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/floorgrime, +/area/security/prison) +"abL" = ( +/obj/structure/chair/stool, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "permabolt2"; + name = "Cell Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/prison) "abM" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) +"abN" = ( +/obj/structure/closet/secure_closet/lethalshots, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "abO" = ( /turf/open/floor/plasteel/showroomfloor, /area/security/main) +"abP" = ( +/obj/structure/closet/secure_closet/security/sec, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"abQ" = ( +/obj/structure/rack, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/item/gun/energy/ionrifle, +/obj/item/gun/energy/temperature/security, +/obj/item/clothing/suit/armor/laserproof, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) +"abR" = ( +/obj/structure/closet/secure_closet/security/sec, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) "abS" = ( /obj/machinery/computer/secure_data, /turf/open/floor/carpet, @@ -608,6 +806,16 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plasteel/floorgrime, /area/security/prison) +"ach" = ( +/obj/machinery/door/airlock{ + name = "Unisex Restroom" + }, +/turf/open/floor/plasteel/freezer, +/area/security/prison) +"aci" = ( +/obj/vehicle/ridden/secway, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "acj" = ( /obj/machinery/light{ dir = 4 @@ -615,6 +823,33 @@ /obj/machinery/suit_storage_unit/hos, /turf/open/floor/carpet, /area/crew_quarters/heads/hos) +"ack" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"acl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"acm" = ( +/obj/machinery/power/apc/highcap/five_k{ + dir = 4; + areastring = "/area/ai_monitored/security/armory"; + name = "Armory APC"; + pixel_x = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) "acn" = ( /obj/item/storage/secure/safe/HoS{ pixel_x = 35 @@ -630,6 +865,15 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/showroomfloor, /area/security/main) +"acq" = ( +/obj/effect/landmark/secequipment, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"acr" = ( +/obj/structure/chair/comfy/black, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) "acs" = ( /obj/machinery/newscaster/security_unit{ pixel_x = -30 @@ -651,6 +895,10 @@ "acu" = ( /turf/open/floor/carpet, /area/crew_quarters/heads/hos) +"acv" = ( +/obj/structure/closet/secure_closet/contraband/armory, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "acw" = ( /obj/structure/sign/warning/securearea{ pixel_y = -32 @@ -707,6 +955,21 @@ }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) +"acD" = ( +/obj/structure/chair/stool, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "permabolt1"; + name = "Cell Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/floorgrime, +/area/security/prison) "acE" = ( /obj/structure/bed, /obj/machinery/camera{ @@ -744,6 +1007,22 @@ }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) +"acI" = ( +/obj/machinery/door/poddoor/preopen{ + id = "executionfireblast"; + name = "blast door" + }, +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/westright{ + dir = 1; + name = "Transfer Room"; + req_access_txt = "2" + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/security/execution/transfer) "acJ" = ( /obj/structure/cable{ icon_state = "1-2" @@ -768,10 +1047,41 @@ }, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) +"acM" = ( +/obj/structure/rack, +/obj/item/gun/energy/e_gun{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/energy/e_gun, +/obj/item/gun/energy/e_gun{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/turf/open/floor/plasteel{ + dir = 2 + }, +/area/ai_monitored/security/armory) "acN" = ( /obj/structure/chair/stool/bar, /turf/open/floor/plasteel/bar, /area/crew_quarters/bar) +"acO" = ( +/obj/structure/closet/l3closet/security, +/obj/machinery/camera{ + c_tag = "Brig Equipment Room"; + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) "acP" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/showroomfloor, @@ -835,6 +1145,16 @@ /obj/structure/lattice/catwalk, /turf/open/space, /area/solar/port/fore) +"acX" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/poddoor/preopen{ + id = "executionfireblast"; + name = "blast door" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/security/execution/transfer) "acY" = ( /obj/structure/table, /obj/item/paper, @@ -842,6 +1162,15 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/floorgrime, /area/security/prison) +"acZ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "executionfireblast"; + name = "blast door" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/security/execution/transfer) "ada" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/machinery/flasher{ @@ -889,11 +1218,48 @@ }, /turf/open/floor/plasteel/freezer, /area/security/prison) +"adg" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) "adh" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, /turf/open/floor/carpet, /area/crew_quarters/heads/hos) +"adi" = ( +/obj/machinery/flasher/portable, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) +"adj" = ( +/obj/structure/rack, +/obj/item/gun/energy/e_gun/advtaser{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/energy/e_gun/advtaser, +/obj/item/gun/energy/e_gun/advtaser{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 2 + }, +/area/ai_monitored/security/armory) "adk" = ( /obj/structure/rack, /obj/item/gun/ballistic/shotgun/riot{ @@ -1183,6 +1549,12 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/carpet, /area/crew_quarters/heads/hos) +"adQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) "adR" = ( /turf/closed/wall/r_wall, /area/security/main) @@ -1468,12 +1840,26 @@ dir = 5 }, /area/security/prison) +"aes" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/suit_storage_unit/security, +/turf/open/floor/plasteel/red/side, +/area/ai_monitored/security/armory) "aet" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 }, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) +"aeu" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/suit_storage_unit/security, +/turf/open/floor/plasteel/red/side, +/area/ai_monitored/security/armory) "aev" = ( /obj/machinery/light{ dir = 4 @@ -1608,6 +1994,21 @@ dir = 8 }, /area/security/prison) +"aeN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + aiControlDisabled = 1; + name = "Prisoner Transfer Centre"; + req_access_txt = "2" + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) "aeO" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -1685,6 +2086,68 @@ }, /turf/open/floor/plasteel, /area/security/prison) +"aeW" = ( +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + pixel_x = -30 + }, +/obj/machinery/camera{ + c_tag = "Brig Control Room"; + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/rack, +/obj/item/clothing/mask/gas/sechailer{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/mask/gas/sechailer, +/obj/item/clothing/mask/gas/sechailer{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"aeX" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/ai_monitored/security/armory) +"aeY" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/window/southleft{ + name = "Armory"; + req_access_txt = "3" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"aeZ" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/ai_monitored/security/armory) "afa" = ( /obj/docking_port/stationary{ dir = 4; @@ -1706,6 +2169,17 @@ /obj/machinery/recharger, /turf/open/floor/plasteel/showroomfloor, /area/security/main) +"afd" = ( +/obj/item/radio/intercom{ + freerange = 0; + frequency = 1459; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/vending/wardrobe/sec_wardrobe, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) "afe" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/showroomfloor, @@ -1927,6 +2401,13 @@ }, /turf/open/floor/plasteel/red/side, /area/security/prison) +"afK" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Evidence Storage"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) "afL" = ( /obj/structure/closet{ name = "Evidence Closet" @@ -1957,6 +2438,13 @@ }, /turf/open/floor/plasteel/dark, /area/ai_monitored/storage/eva) +"afQ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/warning/securearea{ + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/security/main) "afR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/spawner/structure/window/reinforced, @@ -1990,6 +2478,14 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/security/main) +"afX" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/landmark/start/head_of_security, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/main) "afY" = ( /obj/effect/landmark/start/security_officer, /obj/structure/chair{ @@ -2005,6 +2501,15 @@ }, /turf/open/floor/plasteel, /area/security/main) +"aga" = ( +/obj/structure/sign/warning/pods{ + pixel_x = 32 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/security/main) "agb" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/red/side{ @@ -2086,6 +2591,13 @@ dir = 9 }, /area/security/prison) +"agl" = ( +/obj/machinery/door/airlock/security{ + name = "Interrogation"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel/dark, +/area/security/prison) "agm" = ( /obj/machinery/light{ dir = 8 @@ -2099,6 +2611,45 @@ "agn" = ( /turf/closed/wall/r_wall, /area/security/warden) +"ago" = ( +/obj/machinery/computer/security, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"agp" = ( +/obj/machinery/computer/prisoner, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"agq" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/window/southleft{ + base_state = "right"; + icon_state = "right"; + name = "Armory"; + req_access_txt = "3" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"agr" = ( +/obj/machinery/computer/secure_data, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "ags" = ( /obj/structure/chair{ dir = 4 @@ -2188,6 +2739,22 @@ /obj/item/pen, /turf/open/floor/plasteel, /area/security/main) +"agF" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/sign/warning/securearea{ + pixel_x = -32 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Prison Gate"; + name = "prison blast door" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/security/brig) "agG" = ( /obj/machinery/airalarm{ dir = 8; @@ -2287,6 +2854,12 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) +"agT" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "agU" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -2438,6 +3011,16 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/security/main) +"ahm" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/iv_drip, +/obj/item/reagent_containers/blood, +/turf/open/floor/plasteel/whitered/side{ + dir = 5 + }, +/area/security/brig) "ahn" = ( /turf/closed/wall, /area/maintenance/fore/secondary) @@ -2503,6 +3086,30 @@ dir = 10 }, /area/security/brig) +"ahv" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Brig Control APC"; + areastring = "/area/security/warden"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ahx" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "ahy" = ( /obj/structure/cable{ icon_state = "4-8" @@ -2510,6 +3117,15 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) +"ahz" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "ahA" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -2543,6 +3159,17 @@ /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, /turf/open/floor/plasteel, /area/security/main) +"ahD" = ( +/obj/machinery/door/window/westleft{ + base_state = "left"; + dir = 4; + icon_state = "left"; + name = "Brig Infirmary" + }, +/turf/open/floor/plasteel/whitered/side{ + dir = 4 + }, +/area/security/brig) "ahE" = ( /obj/machinery/door/airlock/security/glass{ name = "Brig Control"; @@ -2689,6 +3316,41 @@ "ahP" = ( /turf/open/floor/plasteel/white, /area/security/brig) +"ahQ" = ( +/obj/structure/closet/secure_closet/warden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ahR" = ( +/obj/structure/chair/office/dark, +/obj/effect/landmark/start/warden, +/obj/machinery/button/door{ + id = "Prison Gate"; + name = "Prison Wing Lockdown"; + pixel_x = -27; + pixel_y = 8; + req_access_txt = "2" + }, +/obj/machinery/button/door{ + id = "Secure Gate"; + name = "Cell Shutters"; + pixel_x = -27; + pixel_y = -2 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ahS" = ( +/obj/structure/table, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "ahT" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -2716,6 +3378,23 @@ }, /turf/open/floor/plasteel/dark, /area/security/brig) +"ahX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/computer/crew{ + dir = 8 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ahY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/red/side{ + dir = 5 + }, +/area/security/brig) "ahZ" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -2770,6 +3449,17 @@ dir = 10 }, /area/security/brig) +"aie" = ( +/obj/structure/table, +/obj/item/folder/red, +/obj/item/pen, +/obj/item/hand_labeler, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/item/book/manual/wiki/security_space_law, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "aif" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -2924,6 +3614,17 @@ }, /turf/open/floor/plasteel/red/side, /area/security/main) +"aiw" = ( +/obj/machinery/door/window/westleft{ + base_state = "right"; + dir = 4; + icon_state = "right"; + name = "Brig Infirmary" + }, +/turf/open/floor/plasteel/whitered/side{ + dir = 4 + }, +/area/security/brig) "aix" = ( /obj/structure/cable{ icon_state = "4-8" @@ -2994,6 +3695,84 @@ dir = 5 }, /area/security/brig) +"aiH" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/security/brig) +"aiI" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/sign/warning/electricshock{ + pixel_x = -32 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/warden) +"aiJ" = ( +/obj/structure/table/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/door/window/brigdoor{ + dir = 1; + name = "Armory Desk"; + req_access_txt = "3" + }, +/obj/machinery/door/window/southleft{ + name = "Reception Desk"; + req_access_txt = "63" + }, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"aiK" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/warden) +"aiL" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/warden) +"aiM" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Brig Control"; + req_access_txt = "3" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"aiN" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/warden) "aiO" = ( /obj/structure/window/reinforced{ dir = 4 @@ -3016,6 +3795,12 @@ dir = 1 }, /area/security/brig) +"aiR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/security/brig) "aiS" = ( /obj/item/stack/rods, /turf/open/space, @@ -3030,6 +3815,14 @@ "aiV" = ( /turf/closed/wall/r_wall, /area/security/processing) +"aiW" = ( +/obj/machinery/door/airlock/security{ + name = "Interrogation"; + req_access_txt = "63" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/security/prison) "aiX" = ( /turf/closed/wall/r_wall, /area/security/brig) @@ -3069,6 +3862,24 @@ dir = 1 }, /area/security/brig) +"ajd" = ( +/obj/structure/sign/plaques/golden{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/security/brig) +"aje" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/security/brig) "ajf" = ( /obj/structure/cable{ icon_state = "1-2" @@ -3078,6 +3889,25 @@ dir = 1 }, /area/security/brig) +"ajg" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/brig) +"ajh" = ( +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/obj/structure/closet/secure_closet/courtroom, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/sign/warning/securearea{ + pixel_x = -32 + }, +/obj/item/gavelhammer, +/turf/open/floor/plasteel, +/area/security/courtroom) "aji" = ( /obj/structure/chair{ name = "Judge" @@ -3148,6 +3978,20 @@ /obj/machinery/gulag_teleporter, /turf/open/floor/plasteel, /area/security/processing) +"ajt" = ( +/obj/structure/sign/warning/securearea{ + pixel_x = 32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/table, +/obj/item/storage/box/prisoner, +/obj/machinery/camera{ + c_tag = "Labor Shuttle Dock North" + }, +/turf/open/floor/plasteel, +/area/security/processing) "aju" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 @@ -3222,6 +4066,17 @@ dir = 1 }, /area/security/brig) +"ajB" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/brig) +"ajC" = ( +/obj/item/storage/toolbox/drone, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) "ajD" = ( /obj/structure/cable{ icon_state = "4-8" @@ -3237,6 +4092,24 @@ dir = 5 }, /area/security/courtroom) +"ajF" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel/red/corner{ + dir = 2 + }, +/area/security/brig) +"ajG" = ( +/obj/machinery/light, +/obj/machinery/door_timer{ + id = "Cell 1"; + name = "Cell 1"; + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) "ajH" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -3251,6 +4124,13 @@ }, /turf/open/floor/plasteel, /area/security/brig) +"ajJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) "ajK" = ( /obj/structure/cable{ icon_state = "1-2" @@ -3275,6 +4155,17 @@ }, /turf/open/floor/plasteel, /area/security/courtroom) +"ajN" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + name = "Brig"; + req_access_txt = "63; 42" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) "ajO" = ( /obj/structure/table/wood, /obj/item/radio/intercom{ @@ -3401,6 +4292,20 @@ dir = 8 }, /area/security/brig) +"akf" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + name = "Labor Shuttle"; + req_access_txt = "2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) "akg" = ( /obj/structure/cable{ icon_state = "4-8" @@ -3426,6 +4331,21 @@ }, /turf/open/floor/plasteel, /area/security/brig) +"aki" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/red/corner{ + dir = 8 + }, +/area/security/brig) "akj" = ( /obj/structure/cable{ icon_state = "4-8" @@ -3435,6 +4355,20 @@ }, /turf/open/floor/plasteel/red/side, /area/security/brig) +"akk" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 2 + }, +/area/security/brig) +"akl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) "akm" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -3452,6 +4386,73 @@ dir = 4 }, /area/security/courtroom) +"ako" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door_timer{ + id = "Cell 2"; + name = "Cell 2"; + pixel_y = -32 + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) +"akp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) +"akq" = ( +/obj/machinery/camera{ + c_tag = "Brig Central"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door_timer{ + id = "Cell 3"; + name = "Cell 3"; + pixel_y = -32 + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) +"akr" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/red/side{ + dir = 9 + }, +/area/security/brig) +"aks" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/red/corner{ + dir = 8 + }, +/area/security/brig) +"akt" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door_timer{ + id = "Cell 4"; + name = "Cell 4"; + pixel_y = -32 + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) +"aku" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/red/side{ + dir = 4 + }, +/area/security/brig) "akv" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -3480,6 +4481,10 @@ dir = 8 }, /area/security/courtroom) +"akz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) "akA" = ( /obj/structure/chair{ dir = 8; @@ -3495,6 +4500,13 @@ }, /turf/open/floor/plating, /area/maintenance/solars/port/fore) +"akG" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = 32 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/processing) "akH" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 @@ -3531,12 +4543,87 @@ /obj/machinery/meter, /turf/open/floor/plating, /area/maintenance/fore) +"akM" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"akN" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"akO" = ( +/obj/machinery/door/window/brigdoor/security/cell{ + id = "Cell 1"; + name = "Cell 1" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) +"akP" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) "akQ" = ( /obj/structure/cable{ icon_state = "4-8" }, /turf/closed/wall, /area/security/brig) +"akR" = ( +/obj/machinery/door/window/brigdoor/security/cell{ + id = "Cell 2"; + name = "Cell 2" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) +"akS" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"akT" = ( +/obj/machinery/door/window/brigdoor/security/cell{ + id = "Cell 3"; + name = "Cell 3" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) "akU" = ( /obj/machinery/door/airlock/security/glass{ name = "Brig Desk"; @@ -3560,6 +4647,75 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/security/brig) +"akW" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/security/glass{ + id_tag = "innerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/red/side{ + dir = 5 + }, +/area/security/brig) +"akX" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/security/glass{ + id_tag = "innerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/red/side{ + dir = 9 + }, +/area/security/brig) +"akY" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"akZ" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"ala" = ( +/obj/machinery/door/window/brigdoor/security/cell{ + id = "Cell 4"; + name = "Cell 4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/red/side, +/area/security/brig) +"alb" = ( +/obj/structure/chair{ + dir = 4; + name = "Prosecution" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/red/side{ + dir = 9 + }, +/area/security/courtroom) "alc" = ( /obj/structure/table/wood, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -3579,6 +4735,12 @@ dir = 6 }, /area/security/courtroom) +"alf" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) "alg" = ( /obj/structure/cable{ icon_state = "0-2" @@ -3609,6 +4771,17 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) +"aln" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Labor Camp Shuttle Airlock"; + req_access_txt = "2"; + shuttledocked = 1 + }, +/turf/open/floor/plating, +/area/security/processing) "alp" = ( /turf/open/floor/plating, /area/security/processing) @@ -3640,6 +4813,35 @@ dir = 8 }, /area/ai_monitored/nuke_storage) +"alv" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/item/radio/intercom{ + desc = "Talk through this. It looks like it has been modified to not broadcast."; + dir = 2; + name = "Prison Intercom (General)"; + pixel_x = -25; + pixel_y = -2; + prison_radio = 1 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) +"alw" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) +"alx" = ( +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) "aly" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 @@ -3654,6 +4856,23 @@ }, /turf/open/floor/plasteel/floorgrime, /area/security/brig) +"alz" = ( +/obj/machinery/button/door{ + id = "briggate"; + name = "Desk Shutters"; + pixel_x = -26; + pixel_y = 6 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/button/flasher{ + id = "brigentry"; + pixel_x = -28; + pixel_y = -8 + }, +/turf/open/floor/plasteel/dark, +/area/security/brig) "alA" = ( /obj/structure/table/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -3685,6 +4904,19 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/security/courtroom) +"alE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/flasher{ + id = "Cell 4"; + pixel_x = 28 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) "alF" = ( /obj/machinery/atmospherics/components/unary/tank/air{ dir = 2 @@ -3826,6 +5058,18 @@ }, /turf/open/floor/plasteel, /area/security/processing) +"amf" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/flasher{ + id = "Cell 1"; + pixel_x = -28 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) "amg" = ( /obj/structure/closet/secure_closet/brig{ id = "Cell 1"; @@ -3833,6 +5077,15 @@ }, /turf/open/floor/plasteel/floorgrime, /area/security/brig) +"amh" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/obj/machinery/flasher{ + id = "Cell 2"; + pixel_x = -28 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) "ami" = ( /obj/structure/closet/secure_closet/brig{ id = "Cell 2"; @@ -3840,6 +5093,15 @@ }, /turf/open/floor/plasteel/floorgrime, /area/security/brig) +"amj" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/obj/machinery/flasher{ + id = "Cell 3"; + pixel_x = -28 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) "amk" = ( /obj/structure/closet/secure_closet/brig{ id = "Cell 3"; @@ -3894,6 +5156,15 @@ }, /turf/open/floor/plasteel/dark, /area/security/brig) +"amo" = ( +/obj/machinery/flasher{ + id = "brigentry"; + pixel_x = 28 + }, +/turf/open/floor/plasteel/red/side{ + dir = 5 + }, +/area/security/brig) "amp" = ( /obj/structure/closet/secure_closet/brig{ id = "Cell 4"; @@ -3901,6 +5172,19 @@ }, /turf/open/floor/plasteel/floorgrime, /area/security/brig) +"amq" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/obj/item/radio/intercom{ + desc = "Talk through this. It looks like it has been modified to not broadcast."; + dir = 2; + name = "Prison Intercom (General)"; + pixel_x = 25; + pixel_y = -2; + prison_radio = 1 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) "amr" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -4012,6 +5296,10 @@ /obj/item/trash/plate, /turf/open/floor/plating, /area/maintenance/port/fore) +"amK" = ( +/obj/structure/sign/warning/docking, +/turf/closed/wall, +/area/security/processing) "amL" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/spawner/structure/window/reinforced, @@ -4048,12 +5336,112 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) +"amQ" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "brig shutters" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"amR" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "brig shutters" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) "amS" = ( /obj/structure/cable{ icon_state = "4-8" }, /turf/closed/wall/r_wall, /area/security/brig) +"amT" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "briggate"; + name = "security shutters" + }, +/obj/machinery/door/window/southleft{ + name = "Brig Desk"; + req_access_txt = "1" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/dark, +/area/security/brig) +"amU" = ( +/obj/machinery/door/poddoor/preopen{ + id = "briggate"; + name = "security blast door" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"amV" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "briggate"; + name = "security shutters" + }, +/obj/machinery/door/window/southleft{ + base_state = "right"; + icon_state = "right"; + name = "Brig Desk"; + req_access_txt = "1" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/security/brig) +"amW" = ( +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/security/glass{ + id_tag = "outerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel/red/side{ + dir = 5 + }, +/area/security/brig) +"amX" = ( +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/security/glass{ + id_tag = "outerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel/red/side{ + dir = 9 + }, +/area/security/brig) "amY" = ( /obj/structure/chair{ dir = 1 @@ -4199,6 +5587,22 @@ }, /turf/open/floor/plasteel, /area/security/processing) +"anu" = ( +/obj/machinery/button/door{ + desc = "A remote control switch for the exit."; + id = "laborexit"; + name = "exit button"; + normaldoorcontrol = 1; + pixel_x = 26; + pixel_y = -6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/red/side{ + dir = 5 + }, +/area/security/processing) "anv" = ( /obj/structure/cable{ icon_state = "1-2" @@ -4216,6 +5620,25 @@ dir = 1 }, /area/hallway/primary/fore) +"anx" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 1 + }, +/area/hallway/primary/fore) +"any" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 1 + }, +/area/hallway/primary/fore) "anz" = ( /turf/open/floor/plasteel, /area/hallway/primary/fore) @@ -4224,6 +5647,21 @@ dir = 4 }, /area/hallway/primary/fore) +"anB" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/sign/warning/securearea{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 4 + }, +/area/hallway/primary/fore) +"anC" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/security/courtroom) "anD" = ( /obj/structure/cable{ icon_state = "1-2" @@ -4279,6 +5717,16 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/fore) +"anN" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Labor Camp Shuttle Airlock"; + shuttledocked = 1 + }, +/turf/open/floor/plating, +/area/security/processing) "anO" = ( /obj/docking_port/stationary{ dir = 8; @@ -4291,10 +5739,43 @@ }, /turf/open/space/basic, /area/space) +"anP" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + id_tag = "laborexit"; + name = "Labor Shuttle"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel, +/area/security/processing) +"anQ" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"anR" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) "anS" = ( /obj/machinery/holopad, /turf/open/floor/plasteel, /area/hallway/primary/fore) +"anT" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"anU" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Courtroom" + }, +/turf/open/floor/plasteel/dark, +/area/security/courtroom) "anV" = ( /obj/machinery/light/small, /turf/open/floor/plasteel/dark, @@ -4435,6 +5916,13 @@ /obj/item/circuitboard/machine/monkey_recycler, /turf/open/floor/plating, /area/maintenance/port/fore) +"aoq" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = -32 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/processing) "aor" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 @@ -4496,11 +5984,68 @@ dir = 8 }, /area/hallway/primary/fore) +"aoy" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=EVA"; + location = "Security" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) "aoz" = ( /turf/open/floor/plasteel/red/corner{ dir = 2 }, /area/hallway/primary/fore) +"aoA" = ( +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/red/corner{ + dir = 2 + }, +/area/hallway/primary/fore) +"aoB" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 2 + }, +/area/hallway/primary/fore) +"aoC" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/plasteel/red/corner{ + dir = 2 + }, +/area/hallway/primary/fore) +"aoD" = ( +/obj/machinery/camera{ + c_tag = "Fore Primary Hallway East"; + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = -32 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 2 + }, +/area/hallway/primary/fore) +"aoE" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/plasteel/red/corner{ + dir = 2 + }, +/area/hallway/primary/fore) +"aoF" = ( +/obj/machinery/vending/snack/random, +/turf/open/floor/plasteel/red/corner{ + dir = 2 + }, +/area/hallway/primary/fore) "aoG" = ( /obj/structure/table, /obj/machinery/firealarm{ @@ -4718,6 +6263,12 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/closed/wall, /area/maintenance/fore/secondary) +"apo" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/closed/wall, +/area/maintenance/fore/secondary) "app" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -5343,6 +6894,10 @@ /obj/item/pen/red, /turf/open/floor/wood, /area/lawoffice) +"arc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) "ard" = ( /obj/machinery/door/poddoor/preopen{ id = "lawyer_blast"; @@ -7438,6 +8993,18 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"awN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "awO" = ( /obj/structure/cable{ icon_state = "4-8" @@ -9521,6 +11088,10 @@ }, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) +"aCd" = ( +/obj/machinery/cryopod, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "aCe" = ( /obj/effect/landmark/xeno_spawn, /obj/item/bikehorn/rubberducky, @@ -10135,6 +11706,16 @@ /obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/ai_monitored/storage/eva) +"aDK" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm1"; + name = "Cryogenics" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "aDL" = ( /obj/structure/sink{ dir = 8; @@ -10632,12 +12213,61 @@ /obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/ai_monitored/storage/eva) +"aFd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/crew_quarters/dorms) +"aFe" = ( +/obj/machinery/camera{ + c_tag = "Dormitory South"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 8 + }, +/area/crew_quarters/dorms) +"aFf" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) "aFg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/closed/wall, /area/crew_quarters/toilet) +"aFh" = ( +/obj/machinery/door/airlock{ + name = "Unisex Restrooms" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aFi" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Dormitory Bathrooms APC"; + areastring = "/area/crew_quarters/toilet"; + pixel_x = 26 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) "aFj" = ( /turf/open/floor/plasteel/redblue/redside, /area/crew_quarters/theatre) @@ -11524,6 +13154,16 @@ dir = 4 }, /area/chapel/main) +"aHp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "aHq" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -12033,6 +13673,11 @@ /obj/structure/table/glass, /turf/open/floor/plasteel/chapel, /area/chapel/main) +"aIF" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/security/warden) "aIH" = ( /obj/structure/table, /obj/item/storage/box/lights/mixed, @@ -15030,10 +16675,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/locker) "aQX" = ( -/obj/machinery/firealarm{ - dir = 2; - pixel_y = 24 - }, +/obj/machinery/vending/kink, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aQY" = ( @@ -21243,7 +22885,7 @@ /obj/structure/table/reinforced, /obj/machinery/door/window/southright{ name = "Research and Development Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/poddoor/shutters/preopen{ id = "rnd"; @@ -22418,6 +24060,10 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) +"bkA" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) "bkB" = ( /obj/machinery/button/door{ id = "Disposal Exit"; @@ -23032,6 +24678,13 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) +"blT" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) "blU" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/wood, @@ -34333,10 +35986,7 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "bMu" = ( -/obj/machinery/door/poddoor{ - id = "mixvent"; - name = "Mixer Room Vent" - }, +/obj/machinery/door/poddoor/incinerator_toxmix, /turf/open/floor/engine/vacuum, /area/science/mixing) "bMv" = ( @@ -34346,9 +35996,8 @@ /turf/closed/wall/r_wall, /area/science/mixing) "bMw" = ( -/obj/machinery/sparker{ +/obj/machinery/sparker/toxmix{ dir = 2; - id = "mixingsparker"; pixel_x = 25 }, /obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output{ @@ -34357,9 +36006,7 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "bMx" = ( -/obj/machinery/airlock_sensor{ - id_tag = "tox_airlock_sensor"; - master_tag = "tox_airlock_control"; +/obj/machinery/airlock_sensor/incinerator_toxmix{ pixel_y = 24 }, /obj/machinery/atmospherics/components/binary/pump/on{ @@ -34384,14 +36031,8 @@ dir = 4 }, /obj/machinery/meter, -/obj/machinery/embedded_controller/radio/airlock_controller{ - airpump_tag = "tox_airlock_pump"; - exterior_door_tag = "tox_airlock_exterior"; - id_tag = "tox_airlock_control"; - interior_door_tag = "tox_airlock_interior"; - pixel_x = -24; - sanitize_external = 1; - sensor_tag = "tox_airlock_sensor" +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix{ + pixel_x = -24 }, /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -34721,33 +36362,17 @@ /area/science/mixing) "bNu" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/research/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "tox_airlock_exterior"; - name = "Mixing Room Exterior Airlock"; - req_access_txt = "8" - }, +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior, /turf/open/floor/engine, /area/science/mixing) "bNv" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/research/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "tox_airlock_interior"; - name = "Mixing Room Interior Airlock"; - req_access_txt = "8" - }, +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior, /turf/open/floor/engine, /area/science/mixing) "bNw" = ( -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ - dir = 2; - frequency = 1449; - id = "tox_airlock_pump" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix{ + dir = 2 }, /turf/open/floor/engine, /area/science/mixing) @@ -35124,7 +36749,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/droneDispenser, /turf/open/floor/plasteel, /area/science/misc_lab) "bOx" = ( @@ -35178,9 +36802,8 @@ /turf/open/floor/plasteel, /area/tcommsat/computer) "bOE" = ( -/obj/machinery/sparker{ +/obj/machinery/sparker/toxmix{ dir = 2; - id = "mixingsparker"; pixel_x = 25 }, /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input{ @@ -35215,15 +36838,11 @@ dir = 4 }, /obj/machinery/meter, -/obj/machinery/button/door{ - id = "mixvent"; - name = "Mixing Room Vent Control"; +/obj/machinery/button/door/incinerator_vent_toxmix{ pixel_x = -25; - pixel_y = 5; - req_access_txt = "7" + pixel_y = 5 }, -/obj/machinery/button/ignition{ - id = "mixingsparker"; +/obj/machinery/button/ignition/incinerator/toxmix{ pixel_x = -25; pixel_y = -5 }, @@ -35802,11 +37421,8 @@ }, /turf/open/floor/plasteel, /area/tcommsat/computer) -"bPS" = ( -/turf/open/floor/wood, -/area/maintenance/port/aft) -"bPW" = ( -/obj/effect/decal/cleanable/oil, +"bPU" = ( +/obj/effect/spawner/lootdrop/keg, /turf/open/floor/plating, /area/maintenance/port/aft) "bPX" = ( @@ -36709,6 +38325,13 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/tcommsat/computer) +"bSu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/maintenance/bar) "bSv" = ( /obj/machinery/camera{ c_tag = "Construction Area"; @@ -37159,13 +38782,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"bTx" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/plating, -/area/maintenance/port/aft) "bTz" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -37529,6 +39145,34 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"bUt" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bUu" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bUv" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/port/aft) "bUx" = ( /obj/structure/disposalpipe/junction/yjunction{ dir = 1 @@ -37976,6 +39620,12 @@ /obj/machinery/atmospherics/components/unary/portables_connector/visible, /turf/open/floor/plating, /area/maintenance/port/aft) +"bVG" = ( +/obj/structure/sign/warning/nosmoking{ + pixel_x = -28 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) "bVI" = ( /turf/closed/wall/r_wall, /area/tcommsat/server) @@ -39776,6 +41426,10 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"car" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/closed/wall, +/area/maintenance/bar) "cas" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -40299,16 +41953,13 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "cbw" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/structure/cable{ icon_state = "2-8" }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 +/obj/structure/cable{ + icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plating, /area/maintenance/port/aft) "cbx" = ( @@ -43978,19 +45629,13 @@ /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "cli" = ( -/obj/machinery/button/door{ - id = "auxincineratorvent"; - name = "Auxiliary Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_aux{ pixel_x = 6; - pixel_y = -24; - req_access_txt = "32" + pixel_y = -24 }, -/obj/machinery/button/door{ - id = "turbinevent"; - name = "Turbine Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_main{ pixel_x = -6; - pixel_y = -24; - req_access_txt = "32" + pixel_y = -24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 @@ -44230,6 +45875,11 @@ dir = 1 }, /area/engine/engineering) +"clS" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/rnd/production/techfab/department/security, +/turf/open/floor/plasteel/red/side, +/area/security/main) "clT" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, /turf/open/floor/engine/n2, @@ -44276,14 +45926,7 @@ /area/maintenance/disposal/incinerator) "cmf" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_interior"; - name = "Turbine Interior Airlock"; - req_access_txt = "32" - }, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -44291,17 +45934,9 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, -/obj/machinery/embedded_controller/radio/airlock_controller{ - airpump_tag = "incinerator_airlock_pump"; - exterior_door_tag = "incinerator_airlock_exterior"; - id_tag = "incinerator_airlock_control"; - interior_door_tag = "incinerator_airlock_interior"; - name = "Incinerator Access Console"; +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{ pixel_x = 38; - pixel_y = 6; - req_access_txt = "12"; - sanitize_external = 1; - sensor_tag = "incinerator_airlock_sensor" + pixel_y = 6 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) @@ -44538,9 +46173,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/airlock_sensor{ - id_tag = "incinerator_airlock_sensor"; - master_tag = "incinerator_airlock_control"; +/obj/machinery/airlock_sensor/incinerator_atmos{ pixel_x = 8; pixel_y = 24 }, @@ -44565,10 +46198,8 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ - dir = 8; - frequency = 1449; - id = "incinerator_airlock_pump" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos{ + dir = 8 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) @@ -44762,14 +46393,7 @@ /area/construction) "cnC" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_exterior"; - name = "Turbine Exterior Airlock"; - req_access_txt = "32" - }, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -45033,10 +46657,7 @@ /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cos" = ( -/obj/machinery/door/poddoor{ - id = "auxincineratorvent"; - name = "Auxiliary Incinerator Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_aux, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cot" = ( @@ -45262,6 +46883,19 @@ }, /turf/open/space, /area/space/nearstation) +"cpg" = ( +/obj/item/grenade/barrier{ + pixel_x = 4 + }, +/obj/item/grenade/barrier, +/obj/item/grenade/barrier{ + pixel_x = -4 + }, +/obj/structure/table, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) "cph" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/simple/green/visible, @@ -45398,6 +47032,15 @@ }, /turf/open/floor/engine, /area/engine/engineering) +"cpA" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) "cpC" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /obj/effect/landmark/event_spawn, @@ -45696,10 +47339,7 @@ /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "cqt" = ( -/obj/machinery/door/poddoor{ - id = "turbinevent"; - name = "Turbine Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_main, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cqu" = ( @@ -45789,6 +47429,31 @@ /obj/machinery/atmospherics/pipe/simple/green/visible, /turf/closed/wall/r_wall, /area/engine/supermatter) +"cqG" = ( +/obj/structure/rack, +/obj/item/storage/box/rubbershot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/item/storage/box/rubbershot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/storage/box/rubbershot, +/obj/item/storage/box/rubbershot, +/obj/item/storage/box/rubbershot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/storage/box/rubbershot{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) "cqJ" = ( /obj/structure/cable, /obj/structure/lattice/catwalk, @@ -46148,15 +47813,6 @@ }, /turf/open/floor/plating, /area/engine/engineering) -"crS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green/corner{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/cryopod) "crT" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ @@ -48033,6 +49689,21 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"cwM" = ( +/obj/structure/rack, +/obj/item/storage/box/teargas{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/storage/box/handcuffs, +/obj/item/storage/box/flashbangs{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) "cwT" = ( /obj/machinery/camera{ c_tag = "Arrivals Escape Pod 2"; @@ -48090,6 +49761,16 @@ }, /turf/open/floor/plating, /area/security/main) +"cxJ" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "Labor Camp Shuttle Airlock"; + req_access_txt = "2" + }, +/turf/open/floor/plating, +/area/security/processing) "cxN" = ( /obj/structure/cable{ icon_state = "1-2" @@ -48103,6 +49784,15 @@ }, /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) +"cxP" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "Labor Camp Shuttle Airlock" + }, +/turf/open/floor/plating, +/area/security/processing) "cxW" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/door/airlock/external{ @@ -49191,6 +50881,18 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"cBV" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + name = "Security Office"; + req_access_txt = "1" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/main) "cBZ" = ( /obj/structure/table/wood, /obj/item/clothing/under/burial, @@ -50814,13 +52516,6 @@ }, /turf/open/floor/plating, /area/hallway/secondary/entry) -"cIV" = ( -/obj/machinery/door/airlock{ - name = "Unisex Restroom"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel/freezer, -/area/security/prison) "cMm" = ( /obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plating, @@ -51038,17 +52733,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"cQs" = ( -/obj/machinery/door/window/brigdoor/security/cell{ - id = "Cell 4"; - name = "Cell 4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) "cQw" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -51328,21 +53012,6 @@ dir = 1 }, /area/engine/engineering) -"cTu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel/red/corner{ - dir = 8 - }, -/area/security/brig) "cTD" = ( /obj/structure/cable{ icon_state = "1-2" @@ -51466,23 +53135,6 @@ "cVb" = ( /turf/closed/wall, /area/hallway/secondary/service) -"dcW" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "briggate"; - name = "security shutters" - }, -/obj/machinery/door/window/southleft{ - base_state = "right"; - icon_state = "right"; - name = "Brig Desk"; - req_access_txt = "1" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel/dark, -/area/security/brig) "dfh" = ( /obj/machinery/power/apc{ areastring = "/area/science/circuit"; @@ -51497,20 +53149,23 @@ }, /turf/open/floor/plasteel, /area/science/circuit) -"dhD" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 +"dkC" = ( +/obj/machinery/door/airlock/wood{ + name = "Maintenance Bar" }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/ai_monitored/security/armory) +/turf/open/floor/wood, +/area/maintenance/bar) "dqu" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) +"dqT" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port/aft) "dvO" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -51530,38 +53185,6 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"eet" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/hallway/primary/fore) -"efg" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/turf/closed/wall, -/area/maintenance/fore/secondary) -"esl" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, -/area/maintenance/bar) -"ete" = ( -/turf/closed/wall, -/area/maintenance/bar) -"evS" = ( -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) "eyM" = ( /obj/machinery/mineral/ore_redemption{ input_dir = 2; @@ -51570,58 +53193,25 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel, /area/quartermaster/miningdock) -"eAL" = ( -/obj/structure/rack, -/obj/item/gun/energy/e_gun/advtaser{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/energy/e_gun/advtaser, -/obj/item/gun/energy/e_gun/advtaser{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel{ - dir = 2 - }, -/area/ai_monitored/security/armory) -"eEc" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/security/warden) +"ezO" = ( +/obj/structure/mineral_door/wood, +/turf/open/floor/wood, +/area/maintenance/bar) "eHI" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) +"eKN" = ( +/obj/machinery/vending/clothing, +/turf/open/floor/wood, +/area/maintenance/bar) "eRz" = ( /obj/structure/lattice, /obj/structure/grille, /turf/open/space/basic, /area/space/nearstation) -"eTp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/wood, -/area/maintenance/bar) "eVL" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/light_switch{ @@ -51632,30 +53222,18 @@ }, /turf/open/floor/plasteel, /area/quartermaster/miningdock) -"faB" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/power/apc{ - areastring = "/area/security/warden"; - dir = 1; - name = "Brig Control APC"; - pixel_y = 24 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) +"eYI" = ( +/obj/item/restraints/legcuffs, +/obj/item/restraints/handcuffs/fake, +/obj/structure/bed/dogbed, +/turf/open/floor/plating, +/area/maintenance/bar) "fcG" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, /turf/closed/wall/r_wall, /area/science/mixing) -"fhC" = ( -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/decal/cleanable/blood/old, -/obj/item/assembly/signaler, -/turf/open/floor/plating, -/area/maintenance/bar) "flc" = ( /obj/machinery/bookbinder, /turf/open/floor/plasteel/white, @@ -51673,46 +53251,10 @@ }, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"fpJ" = ( -/obj/structure/table, -/obj/item/storage/lockbox/loyalty, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"fqD" = ( -/obj/machinery/door/window/brigdoor/security/cell{ - id = "Cell 1"; - name = "Cell 1" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) "fsQ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"fuL" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/turf/open/floor/plasteel/red/corner{ - dir = 8 - }, -/area/security/brig) -"fDN" = ( -/obj/structure/sign/poster/random{ - pixel_y = -32 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"fEF" = ( -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 4 - }, -/obj/structure/bed, -/obj/item/bedsheet, -/turf/open/floor/wood, -/area/maintenance/port/aft) "fGf" = ( /obj/machinery/smartfridge/disks, /turf/open/floor/plasteel/hydrofloor, @@ -51722,28 +53264,11 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel, /area/science/circuit) -"fKO" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/armory) -"fLS" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, +"fWI" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/shaker, /turf/open/floor/wood, -/area/maintenance/port/aft) -"fYm" = ( -/obj/structure/closet/secure_closet/security/sec, -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) +/area/maintenance/bar) "gbq" = ( /obj/structure/cable{ icon_state = "4-8" @@ -51775,31 +53300,9 @@ }, /turf/open/floor/plasteel, /area/science/circuit) -"gwo" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) -"gEX" = ( -/obj/structure/table/wood/poker, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, +"gxS" = ( /turf/open/floor/wood, /area/maintenance/bar) -"gKP" = ( -/obj/machinery/door/airlock{ - name = "Unisex Restrooms" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) "gLH" = ( /obj/machinery/door/airlock/external{ name = "External Access"; @@ -51810,20 +53313,8 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) -"gPJ" = ( -/obj/structure/rack, -/obj/item/gun/energy/ionrifle, -/obj/item/gun/energy/temperature/security, -/obj/item/clothing/suit/armor/laserproof, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/red/side, -/area/ai_monitored/security/armory) -"gPL" = ( -/obj/structure/table/wood, -/obj/item/storage/box/drinkingglasses, +"gRV" = ( +/obj/machinery/vending/autodrobe, /turf/open/floor/wood, /area/maintenance/bar) "gWd" = ( @@ -51843,10 +53334,6 @@ dir = 8 }, /area/medical/sleeper) -"gZR" = ( -/obj/structure/closet/secure_closet/personal, -/turf/open/floor/wood, -/area/maintenance/port/aft) "hcE" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment, @@ -51864,14 +53351,6 @@ }, /turf/open/floor/plating, /area/maintenance/port) -"hDJ" = ( -/obj/machinery/door/airlock/security{ - name = "Interrogation"; - req_access = null; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/dark, -/area/security/prison) "hRa" = ( /obj/structure/table/reinforced, /obj/machinery/light{ @@ -51884,28 +53363,10 @@ /obj/item/stock_parts/cell/super, /turf/open/floor/plasteel/white, /area/science/circuit) -"hYC" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) -"ihC" = ( -/obj/structure/sign/poster/random{ - pixel_y = -32 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"ihS" = ( +"idZ" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 }, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/wood, /area/maintenance/bar) "ijc" = ( @@ -51914,64 +53375,19 @@ /turf/open/floor/plasteel/dark, /area/engine/engineering) "ipA" = ( -/obj/machinery/droneDispenser, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) -"iqw" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/port/aft) -"irr" = ( -/obj/structure/chair/stool, -/turf/open/floor/wood, -/area/maintenance/bar) "itG" = ( /obj/structure/table/reinforced, /obj/item/paper_bin, /obj/item/pen, /turf/open/floor/plasteel/white, /area/science/circuit) -"iuz" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "briggate"; - name = "security shutters" - }, -/obj/machinery/door/window/eastright{ - name = "Brig Desk"; - req_access_txt = "2" - }, -/turf/open/floor/plasteel/dark, -/area/security/brig) -"ixw" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/computer/security{ - dir = 4 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"iyF" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) +"iEy" = ( +/obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears, +/obj/item/assembly/signaler, +/turf/open/floor/plating, +/area/maintenance/bar) "iEJ" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod One" @@ -51981,6 +53397,10 @@ }, /turf/open/floor/plating, /area/hallway/secondary/entry) +"iGw" = ( +/obj/structure/chair/stool/bar, +/turf/open/floor/wood, +/area/maintenance/bar) "iNn" = ( /obj/machinery/camera{ c_tag = "Kitchen Cold Room" @@ -51989,33 +53409,6 @@ /obj/structure/reagent_dispensers/cooking_oil, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) -"iTV" = ( -/obj/structure/bed, -/obj/item/clothing/suit/straight_jacket, -/obj/item/clothing/mask/muzzle, -/turf/open/floor/plasteel, -/area/security/execution/transfer) -"iYT" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 1; - id_tag = "lobbyairlock"; - name = "Security Lobby"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"iZV" = ( -/obj/structure/sign/poster/random{ - pixel_x = -32 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) "jbf" = ( /obj/structure/cable{ icon_state = "0-2" @@ -52028,14 +53421,6 @@ }, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"jdX" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) "jgm" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -52054,11 +53439,6 @@ /obj/machinery/rnd/production/techfab/department/cargo, /turf/open/floor/plasteel, /area/quartermaster/office) -"jnM" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/maintenance/bar) "jrE" = ( /obj/machinery/rnd/production/protolathe/department/science, /obj/structure/sign/poster/official/random{ @@ -52066,10 +53446,10 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"jss" = ( -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/maintenance/bar) +"jtl" = ( +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) "jAD" = ( /obj/structure/grille, /turf/open/floor/plating/airless, @@ -52086,17 +53466,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"jDQ" = ( -/obj/item/radio/intercom{ - freerange = 0; - frequency = 1459; - name = "Station Intercom (General)"; - pixel_x = -30 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, -/area/maintenance/bar) "jHt" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/disposalpipe/segment{ @@ -52110,20 +53479,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"jHE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"jJa" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/obj/structure/table/wood, -/obj/machinery/light/small{ - dir = 2 - }, -/turf/open/floor/wood, -/area/maintenance/port/aft) "jMF" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 @@ -52139,12 +53494,6 @@ /obj/item/stack/cable_coil, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"jNv" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) "jSO" = ( /obj/machinery/light{ dir = 4 @@ -52163,22 +53512,12 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"jXE" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"kcq" = ( -/obj/machinery/atmospherics/pipe/simple/general/hidden{ +"kds" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/closet/secure_closet/personal, /turf/open/floor/wood, -/area/maintenance/port/aft) +/area/maintenance/bar) "khb" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 @@ -52208,6 +53547,11 @@ }, /turf/open/floor/plasteel, /area/engine/gravity_generator) +"knR" = ( +/obj/structure/table/wood, +/obj/item/weaponcrafting/receiver, +/turf/open/floor/wood, +/area/maintenance/bar) "kob" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/disposalpipe/segment, @@ -52216,27 +53560,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"ksu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 2; - id_tag = "innerbrig"; - name = "Brig"; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/red/side{ - dir = 9 - }, -/area/security/brig) -"kuo" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/wood, -/area/maintenance/bar) "kzT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 @@ -52254,15 +53577,6 @@ }, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"kPE" = ( -/obj/machinery/light, -/obj/machinery/cryopod{ - tag = "icon-cryopod-open (EAST)"; - icon_state = "cryopod-open"; - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/cryopod) "kQk" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance{ @@ -52271,17 +53585,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) -"kQp" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/security/brig) "kQq" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ @@ -52293,66 +53596,10 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/quartermaster/miningdock) -"kXo" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/hallway/primary/fore) -"lgR" = ( -/obj/machinery/door/poddoor/preopen{ - id = "executionfireblast"; - layer = 2.9; - name = "blast door" - }, -/obj/machinery/atmospherics/pipe/simple/general/hidden, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/westright{ - dir = 1; - name = "Transfer Room"; - req_access_txt = "2" - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/security/execution/transfer) -"lla" = ( -/obj/structure/closet/secure_closet/contraband/armory, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"loR" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel/red/side{ - dir = 10 - }, -/area/security/brig) -"lsi" = ( -/obj/machinery/power/apc/highcap/five_k{ - dir = 4; - areastring = "/area/ai_monitored/security/armory"; - name = "Armory APC"; - pixel_x = 24 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) "lAB" = ( /obj/structure/sign/nanotrasen, /turf/closed/wall, /area/science/circuit) -"lIk" = ( -/obj/effect/spawner/lootdrop/keg, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) "lMg" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -52363,63 +53610,14 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/science/circuit) -"lTe" = ( -/obj/structure/table, -/obj/item/storage/toolbox/drone, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"lVH" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/table, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"lYQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/bar) "mjr" = ( /obj/machinery/vending/wardrobe/bar_wardrobe, /turf/open/floor/wood, /area/crew_quarters/bar) -"mlG" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"mqQ" = ( -/obj/machinery/door/window/brigdoor/security/cell{ - id = "Cell 2"; - name = "Cell 2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"muL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 2; - id_tag = "innerbrig"; - name = "Brig"; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/red/side{ - dir = 10 - }, -/area/security/brig) +"mtJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/maintenance/bar) "mBv" = ( /obj/structure/cable{ icon_state = "1-2" @@ -52431,115 +53629,25 @@ }, /turf/open/floor/engine, /area/engine/engineering) -"mCA" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/maintenance/bar) -"mKs" = ( -/obj/item/restraints/handcuffs/fake, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears, -/turf/open/floor/plating, -/area/maintenance/bar) "mNi" = ( /obj/machinery/light_switch{ pixel_x = -20 }, /turf/open/floor/plasteel/white, /area/science/circuit) -"mQI" = ( -/obj/machinery/door/window/brigdoor/security/cell{ - dir = 4; - id = "Secure Cell"; - name = "Secure Cell" - }, -/obj/machinery/door/window/brigdoor/security/cell{ - dir = 8; - id = "Secure Cell"; - name = "Secure Cell" - }, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 8 - }, -/obj/machinery/light/small, -/turf/open/floor/plasteel/dark/side{ - dir = 8 - }, -/area/security/execution/transfer) "mRe" = ( /obj/machinery/light{ dir = 8 }, /turf/open/floor/plasteel/white, /area/science/circuit) -"mTf" = ( -/obj/structure/rack, -/obj/item/clothing/suit/armor/riot{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/suit/armor/riot, -/obj/item/clothing/suit/armor/riot{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/clothing/head/helmet/riot{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/head/helmet/riot, -/obj/item/clothing/head/helmet/riot{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/shield/riot{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/shield/riot, -/obj/item/shield/riot{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/security/armory) -"nbc" = ( -/obj/machinery/hydroponics/soil, -/obj/item/plant_analyzer, -/obj/machinery/camera{ - c_tag = "Prison Common Room"; - network = list("ss13","prison") - }, -/turf/open/floor/plasteel/green/side{ - dir = 5 - }, -/area/security/prison) "noK" = ( /obj/structure/girder, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"npy" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel, -/area/security/armory) -"nuw" = ( -/obj/structure/chair/stool, -/obj/item/radio/intercom{ - name = "Station Intercom (General)"; - pixel_y = -35 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"nuB" = ( +"nwX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/vending/games, /turf/open/floor/wood, /area/maintenance/bar) "nxv" = ( @@ -52557,18 +53665,12 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"nCJ" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security{ - name = "Brig"; - req_access = null; - req_access_txt = "63; 42" - }, +"nEe" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 + dir = 5 }, -/turf/open/floor/plasteel, -/area/security/brig) +/turf/closed/wall, +/area/maintenance/bar) "nGt" = ( /obj/structure/cable{ icon_state = "1-2" @@ -52580,13 +53682,15 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"nMU" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) +"nKB" = ( +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks/beer, +/turf/open/floor/wood, +/area/maintenance/bar) +"nRn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/maintenance/bar) "nRG" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 @@ -52599,56 +53703,41 @@ }, /turf/open/floor/plasteel/white, /area/science/mixing) -"orD" = ( +"ooS" = ( /obj/structure/table/wood/poker, -/obj/item/coin/iron, +/obj/effect/spawner/lootdrop/gambling, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/maintenance/bar) +"oqQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks, /turf/open/floor/wood, /area/maintenance/bar) -"oux" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel/neutral/side{ - dir = 8 - }, -/area/crew_quarters/dorms) -"oxm" = ( -/obj/machinery/door_timer{ - id = "Cell 3"; - name = "Cell 3"; - pixel_y = -32 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +"ouu" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, -/turf/open/floor/plasteel/red/corner, -/area/security/brig) +/turf/open/floor/wood, +/area/maintenance/bar) "oDF" = ( /obj/machinery/light, /turf/open/floor/plating, /area/engine/engineering) -"oEE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) "oHU" = ( /obj/structure/cable{ icon_state = "1-2" }, /turf/open/floor/plasteel, /area/science/circuit) -"oKT" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "0-8" +"oPA" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/security/brig) +/turf/open/floor/wood, +/area/maintenance/bar) "oUh" = ( /obj/structure/disposalpipe/trunk{ dir = 1 @@ -52656,27 +53745,10 @@ /obj/machinery/disposal/bin, /turf/open/floor/plasteel/white, /area/science/circuit) -"piy" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/security/brig) -"poo" = ( -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space/nearstation) -"pDm" = ( -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 5 - }, -/obj/structure/table/wood, -/obj/machinery/light/small{ - dir = 2 - }, -/turf/open/floor/wood, -/area/maintenance/port/aft) +"pDq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/maintenance/bar) "pHl" = ( /obj/structure/table, /obj/item/storage/box/beakers{ @@ -52716,23 +53788,28 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/floorgrime, /area/science/misc_lab) +"qbA" = ( +/obj/structure/table/wood/poker, +/obj/item/toy/cards/deck/syndicate, +/turf/open/floor/wood, +/area/maintenance/bar) +"qdB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar) "qeQ" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/plasteel, /area/science/circuit) -"qiF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 +"qit" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken" }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) -"qla" = ( -/obj/machinery/flasher/portable, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/security/armory) +/area/maintenance/bar) "qpv" = ( /obj/machinery/light{ dir = 4 @@ -52745,101 +53822,51 @@ /obj/structure/grille/broken, /turf/open/space/basic, /area/space/nearstation) -"qDl" = ( +"qBv" = ( +/obj/item/clothing/mask/breath/medical, +/obj/item/tank/internals/anesthetic, +/turf/open/floor/plating, +/area/maintenance/bar) +"qBQ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/chair/stool/bar, +/turf/open/floor/wood, +/area/maintenance/bar) +"qKd" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/maintenance/bar) +"qSC" = ( +/obj/machinery/vending/boozeomat, /turf/open/floor/wood, /area/maintenance/bar) -"qQU" = ( -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/maintenance/port/aft) -"qVv" = ( -/obj/structure/chair/comfy/black, -/obj/effect/landmark/start/head_of_security, -/turf/open/floor/carpet, -/area/crew_quarters/heads/hos) -"qZT" = ( -/obj/machinery/vending/snack/random, -/obj/machinery/flasher{ - id = "brigentry"; - pixel_x = 28 - }, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/brig) -"rax" = ( -/obj/structure/closet/secure_closet/security/sec, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) "rcD" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/closed/wall/r_wall, /area/science/circuit) +"ref" = ( +/turf/closed/wall, +/area/maintenance/bar) "rfW" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) -"rmO" = ( -/obj/machinery/flasher{ - id = "Cell 3"; - pixel_x = -28 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) +"rgN" = ( +/obj/structure/reagent_dispensers/keg/aphro/strong, +/obj/item/reagent_containers/glass/beaker, +/turf/open/floor/plating, +/area/maintenance/bar) "rmX" = ( /obj/structure/table, /obj/item/reagent_containers/food/drinks/beer, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"rpN" = ( -/obj/machinery/button/door{ - desc = "A remote control switch for the exit."; - id = "laborexit"; - name = "exit button"; - normaldoorcontrol = 1; - pixel_x = 26; - pixel_y = -6; - req_access_txt = "0" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel/red/side{ - dir = 5 - }, -/area/security/processing) -"rtk" = ( -/turf/open/floor/plasteel/dark, -/area/security/processing) -"ryv" = ( -/obj/machinery/flasher{ - id = "Cell 2"; - pixel_x = -28 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) -"rAZ" = ( -/turf/closed/wall, -/area/crew_quarters/cryopod) -"rHF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/airlock/maintenance/abandoned{ - req_access_txt = "0" - }, -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, +"rrl" = ( +/obj/effect/spawner/lootdrop/costume, +/obj/item/electropack/shockcollar, +/turf/open/floor/plating, /area/maintenance/bar) "rKP" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -52847,27 +53874,6 @@ }, /turf/open/floor/plating, /area/construction) -"rPG" = ( -/obj/machinery/door/window/westleft{ - base_state = "right"; - dir = 8; - icon_state = "right"; - name = "Unisex Showers"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel/freezer, -/area/security/prison) -"rTI" = ( -/obj/machinery/door/window/brigdoor/security/cell{ - id = "Cell 3"; - name = "Cell 3" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) "saK" = ( /obj/structure/closet/crate, /obj/item/target/alien, @@ -52880,21 +53886,16 @@ /obj/item/gun/energy/laser/practice, /turf/open/floor/plasteel/white, /area/science/circuit) -"sfv" = ( -/obj/effect/spawner/structure/window, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "seclobby"; - name = "security shutters" +"shL" = ( +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"sjc" = ( +/obj/machinery/cryopod{ + dir = 4; + tag = "0" }, -/turf/open/floor/plating, -/area/security/brig) -"sgY" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "slk" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -52907,38 +53908,21 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) -"ssv" = ( -/obj/structure/rack, -/obj/item/gun/energy/e_gun/dragnet, -/obj/item/gun/energy/e_gun/dragnet, -/obj/effect/turf_decal/bot_white, -/obj/item/gun/energy/pumpaction/blaster, -/obj/item/gun/energy/pumpaction/blaster, -/turf/open/floor/plasteel/dark, -/area/security/armory) +"stg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/maintenance/bar) "sxs" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/table, /obj/item/shovel/spade, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"sCj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/brig) -"sGR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/wood, -/area/maintenance/bar) "sLv" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance, @@ -52958,11 +53942,6 @@ /obj/structure/chair/office/light, /turf/open/floor/plasteel/white, /area/science/circuit) -"sVi" = ( -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/security/brig) "sWR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -52986,84 +53965,36 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/hallway/secondary/service) -"tfB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 +"tmK" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken6" }, -/obj/structure/tank_dispenser/oxygen, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"tra" = ( -/obj/machinery/computer/prisoner{ - dir = 4 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"tsC" = ( -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 4 - }, -/obj/structure/bed, -/obj/item/bedsheet, -/obj/item/bedsheet, -/turf/open/floor/wood, -/area/maintenance/port/aft) -"tvf" = ( +/area/maintenance/bar) +"tqe" = ( /obj/structure/table/wood/poker, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/item/storage/pill_bottle/dice, +/obj/effect/spawner/lootdrop/gambling, /turf/open/floor/wood, /area/maintenance/bar) -"txT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/plasteel/red/side{ - dir = 9 - }, -/area/security/brig) -"tIp" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/window/southleft{ - base_state = "right"; - icon_state = "right"; - name = "Armory"; - req_access_txt = "3" - }, +"trb" = ( /obj/machinery/light{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"tLw" = ( -/obj/structure/table/wood, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/area/security/courtroom) +"tEz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood{ + icon_state = "wood-broken4" }, -/turf/open/floor/wood, /area/maintenance/bar) "tMl" = ( /obj/effect/turf_decal/loading_area, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) +"tOc" = ( +/obj/item/weaponcrafting/stock, +/turf/open/floor/wood, +/area/maintenance/bar) "tOq" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -53071,16 +54002,6 @@ }, /turf/open/floor/plasteel/white, /area/science/mixing) -"tTl" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "executionfireblast"; - layer = 2.9; - name = "blast door" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/security/execution/transfer) "tXL" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 @@ -53113,34 +54034,15 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"uzg" = ( -/obj/structure/chair, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, -/area/security/brig) -"uFV" = ( +"uAK" = ( +/obj/structure/falsewall, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"uBG" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/brig) -"uGh" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) -"uMu" = ( -/obj/effect/turf_decal/tile/green/corner, -/turf/open/floor/plasteel, -/area/crew_quarters/cryopod) +/obj/structure/chair/stool/bar, +/turf/open/floor/wood, +/area/maintenance/bar) "uNu" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -53151,12 +54053,6 @@ }, /turf/open/floor/plasteel, /area/science/circuit) -"uOE" = ( -/obj/structure/chair/stool, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) "uPT" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 2 @@ -53166,10 +54062,6 @@ }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) -"uQt" = ( -/obj/structure/sign/poster/official/no_erp, -/turf/closed/wall, -/area/maintenance/bar) "uVS" = ( /obj/structure/cable{ icon_state = "4-8" @@ -53182,14 +54074,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"uZB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/side{ - dir = 10 - }, -/area/security/brig) "vbD" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command/glass{ @@ -53201,47 +54085,11 @@ }, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) -"vdY" = ( -/obj/structure/falsewall, -/obj/effect/turf_decal/delivery/white, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"vmd" = ( -/obj/structure/rack, -/obj/item/clothing/suit/armor/bulletproof{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/suit/armor/bulletproof{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001; - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001 - }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001; - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/security/armory) -"vml" = ( -/obj/machinery/vending/cigarette, -/turf/open/floor/plasteel/red/side{ +"vhC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/area/security/brig) -"vnP" = ( -/obj/machinery/vending/autodrobe, -/turf/open/floor/wood, +/turf/closed/wall, /area/maintenance/bar) "vxh" = ( /obj/structure/table, @@ -53267,61 +54115,22 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/white, /area/science/circuit) -"vCy" = ( -/obj/structure/window/reinforced, -/obj/machinery/door/window/eastleft{ - name = "Cyborg Docking Port" - }, -/obj/machinery/recharge_station, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) -"vGV" = ( -/obj/machinery/power/apc{ - dir = 4; - name = "Dormitory Bathrooms APC"; - areastring = "/area/crew_quarters/toilet"; - pixel_x = 26 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) -"vJv" = ( -/obj/machinery/camera{ - c_tag = "Fore Primary Hallway East"; - dir = 1 - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 5; - pixel_y = -32 - }, -/obj/machinery/light, -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) +"vJu" = ( +/obj/structure/table/wood/poker, +/obj/item/storage/pill_bottle/dice, +/turf/open/floor/wood, +/area/maintenance/bar) "vJW" = ( -/obj/machinery/camera{ - c_tag = "Brig Central"; - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/turf/open/floor/wood, +/area/maintenance/bar) +"vNv" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken7" }, -/obj/machinery/door_timer{ - id = "Cell 4"; - name = "Cell 4"; - pixel_y = -32 - }, -/turf/open/floor/plasteel/red/corner, -/area/security/brig) +/area/maintenance/bar) "vPE" = ( /obj/machinery/light{ dir = 4 @@ -53329,71 +54138,10 @@ /obj/machinery/libraryscanner, /turf/open/floor/plasteel/white, /area/science/circuit) -"vVq" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"vYy" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, -/area/security/brig) -"vYR" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security{ - name = "Labor Shuttle"; - req_access = null; - req_access_txt = "2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/security/brig) -"vZp" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "seclobby"; - name = "security shutters" - }, -/turf/open/floor/plasteel, -/area/security/brig) -"wdF" = ( -/obj/structure/table/wood, -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, +"vSH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, /area/maintenance/bar) -"wkw" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) "wkN" = ( /turf/closed/wall, /area/science/circuit) @@ -53428,6 +54176,10 @@ /obj/item/stack/sheet/metal/fifty, /turf/open/floor/plasteel/white, /area/science/circuit) +"wzn" = ( +/obj/structure/falsewall, +/turf/open/floor/plating, +/area/maintenance/bar) "wBd" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 @@ -53440,44 +54192,27 @@ }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) -"wOx" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/poddoor/preopen{ - id = "executionfireblast"; - layer = 2.9; - name = "blast door" - }, -/obj/machinery/door/firedoor, +"wPS" = ( +/obj/machinery/vending/kink, /turf/open/floor/plating, -/area/security/execution/transfer) +/area/maintenance/bar) +"wSH" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/maintenance/bar) "wUY" = ( /obj/structure/table, /obj/item/reagent_containers/glass/bucket, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"wZF" = ( -/obj/effect/landmark/secequipment, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) -"xbq" = ( -/obj/machinery/computer/secure_data{ - dir = 1 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"xgi" = ( -/obj/machinery/firealarm{ - pixel_y = 24 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) +"xfy" = ( +/obj/machinery/computer/cryopod, +/turf/closed/wall, +/area/crew_quarters/dorms) "xhV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -53487,13 +54222,6 @@ }, /turf/open/floor/plating, /area/construction) -"xic" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/security/armory) "xiw" = ( /obj/machinery/door/airlock{ name = "Service Hall"; @@ -53505,29 +54233,6 @@ }, /turf/open/floor/plating, /area/hallway/secondary/service) -"xpa" = ( -/obj/structure/chair/stool, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/button/door{ - id = "permabolt3"; - name = "Cell Bolt Control"; - normaldoorcontrol = 1; - pixel_y = 25; - req_access_txt = "0"; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel/floorgrime, -/area/security/prison) -"xDn" = ( -/obj/machinery/flasher{ - id = "Cell 4"; - pixel_x = -28 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) "xEu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 @@ -53539,1681 +54244,21 @@ /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"xJF" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security{ - id_tag = "laborexit"; - name = "Labor Shuttle"; - req_access = null; - req_access_txt = "63" - }, -/turf/open/floor/plasteel, -/area/security/processing) -"xVn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"ybU" = ( -/obj/machinery/vending/kink, +"xPY" = ( +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/maintenance/starboard/fore) +/area/maintenance/bar) "ycu" = ( /obj/structure/cable{ icon_state = "2-4" }, /turf/open/floor/plasteel, /area/science/circuit) -"ykv" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/cryopod{ - tag = "icon-cryopod-open (EAST)"; - icon_state = "cryopod-open"; - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/cryopod) -"yLl" = ( -/obj/machinery/suit_storage_unit/security, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"yOg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/table, -/obj/item/storage/box/prisoner, -/obj/machinery/camera{ - c_tag = "Labor Shuttle Dock North" - }, -/turf/open/floor/plasteel, -/area/security/processing) -"zaC" = ( -/obj/structure/rack, -/obj/item/storage/box/rubbershot{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/storage/box/rubbershot{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/storage/box/rubbershot, -/obj/item/storage/box/rubbershot, -/obj/item/storage/box/rubbershot{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/storage/box/rubbershot{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"zcn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"zft" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/security/main) -"zmg" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plasteel, -/area/security/brig) -"znN" = ( -/obj/structure/chair/stool, -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, -/area/maintenance/bar) -"zxh" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/neutral/side{ - dir = 4 - }, -/area/crew_quarters/dorms) -"zGy" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/camera/motion{ - c_tag = "Armory Motion Sensor"; - dir = 2; - name = "motion-sensitive security camera" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"zRm" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "seclobby"; - name = "security shutters" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/security/brig) -"zSX" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/green/corner, -/turf/open/floor/plasteel, -/area/crew_quarters/cryopod) -"AgS" = ( -/obj/machinery/vending/games{ - name = "\improper Good 'Clean' Fun" - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"ATB" = ( -/obj/structure/closet/secure_closet/lethalshots, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"AWY" = ( -/obj/machinery/flasher{ - id = "Cell 1"; - pixel_x = -28 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) -"BdE" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"BlT" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/window/southleft{ - base_state = "right"; - dir = 1; - icon_state = "right"; - name = "Armory"; - req_access_txt = "3" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"BSi" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/security/main) -"CaS" = ( -/obj/structure/table, -/obj/item/folder/red, -/obj/item/pen, -/obj/item/hand_labeler, -/obj/item/book/manual/wiki/security_space_law, -/obj/machinery/light, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"Clf" = ( -/obj/machinery/button/door{ - id = "briggate"; - name = "Desk Shutters"; - pixel_x = -26; - pixel_y = 6; - req_access_txt = "0" - }, -/obj/machinery/button/flasher{ - id = "brigentry"; - pixel_x = -28; - pixel_y = -8 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/dark, -/area/security/brig) -"CpD" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/turf/open/floor/plasteel/red/side{ - dir = 10 - }, -/area/security/brig) -"CxU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"CJg" = ( -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"CQC" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"CQO" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/ai_monitored/security/armory) -"CUx" = ( -/obj/structure/chair/stool/bar, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"Dhx" = ( -/obj/machinery/camera/motion{ - c_tag = "Non-Lethal Armory Motion Sensor"; - dir = 4 - }, -/obj/effect/turf_decal/stripes/end{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/armory) -"DHH" = ( -/obj/machinery/button/door{ - id = "Maintdorm1"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 - }, -/turf/open/floor/wood, -/area/maintenance/port/aft) -"DHO" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/red/side{ - dir = 5 - }, -/area/security/brig) -"DJw" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 5 - }, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"DRh" = ( -/obj/structure/table, -/obj/item/grenade/barrier{ - pixel_x = 4 - }, -/obj/item/grenade/barrier, -/obj/item/grenade/barrier{ - pixel_x = -4 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/security/armory) -"DVb" = ( -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/closet/secure_closet/brig{ - id = "Secure Cell"; - name = "Secure Cell Locker" - }, -/obj/effect/turf_decal/stripes/white/end{ - dir = 4 - }, -/obj/effect/turf_decal/delivery/white, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"EbP" = ( -/obj/machinery/suit_storage_unit/security, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"Ecg" = ( -/obj/machinery/light{ - dir = 4 - }, +"ygH" = ( /obj/structure/table/wood, /obj/item/reagent_containers/spray/cleaner, -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, -/area/maintenance/bar) -"Eew" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=EVA"; - location = "Security" - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"Eko" = ( -/obj/machinery/power/apc{ - areastring = "/area/maintenance/bar"; - dir = 2; - name = "Maintenance Bar APC"; - pixel_x = 1; - pixel_y = -24 - }, -/obj/structure/cable, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"Emp" = ( -/obj/structure/grille, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"Evc" = ( -/obj/machinery/door/airlock/security{ - name = "Interrogation"; - req_access = null; - req_access_txt = "63" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/dark, -/area/security/prison) -"EOh" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"EXC" = ( -/obj/structure/closet/l3closet/security, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) -"Fdq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security{ - aiControlDisabled = 0; - id_tag = null; - locked = 0; - name = "Prisoner Transfer Centre"; - req_access = null; - req_access_txt = "2" - }, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"Fwc" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/armory) -"FJK" = ( -/obj/structure/chair/stool/bar, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"FQA" = ( -/obj/machinery/button/door{ - id = "seclobby"; - name = "Security Lobby Lockdown"; - pixel_x = -26; - pixel_y = 8; - req_access_txt = "2" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/button/door{ - desc = "A remote control switch for the medbay foyer."; - id = "lobbyairlock"; - name = "Security Lobby Doors Control"; - normaldoorcontrol = 1; - pixel_x = -26; - pixel_y = -2; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/dark, -/area/security/brig) -"FRl" = ( -/obj/structure/falsewall, -/turf/open/floor/plating, -/area/maintenance/bar) -"FZW" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/white/corner, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"Gbr" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/rack, -/obj/item/clothing/mask/gas/sechailer{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/mask/gas/sechailer, -/obj/item/clothing/mask/gas/sechailer{ - pixel_x = 3; - pixel_y = -3 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"GcW" = ( -/turf/closed/wall/r_wall, -/area/security/armory) -"GlY" = ( -/obj/machinery/door/window/westleft{ - base_state = "right"; - dir = 4; - icon_state = "right"; - name = "Brig Infirmary"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel/whitered/side{ - dir = 4 - }, -/area/security/brig) -"Gmd" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/security/brig) -"Gnk" = ( -/obj/structure/chair/stool, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, /turf/open/floor/wood, /area/maintenance/bar) -"GpD" = ( -/obj/machinery/flasher{ - id = "brigentry"; - pixel_y = -28 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"Gwy" = ( -/obj/machinery/door/airlock/maintenance/abandoned{ - id_tag = "Maintdorm2"; - req_access_txt = "0" - }, -/turf/open/floor/wood, -/area/maintenance/port/aft) -"Hig" = ( -/obj/machinery/camera{ - c_tag = "Dormitory South"; - c_tag_order = 999; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel/neutral/side{ - dir = 8 - }, -/area/crew_quarters/dorms) -"HJB" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, -/area/maintenance/bar) -"HWl" = ( -/obj/structure/table/wood, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/newscaster{ - pixel_x = 30 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"HXb" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/poddoor/preopen{ - id = "Prison Gate"; - name = "prison blast door" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/security/brig) -"IcK" = ( -/obj/effect/turf_decal/stripes/white/line, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 1 - }, -/obj/machinery/door_timer{ - id = "Secure Cell"; - name = "Secure Cell"; - pixel_y = -32 - }, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"Iiq" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - name = "Labor Camp Shuttle Airlock"; - req_access_txt = "2" - }, -/obj/machinery/button/door{ - id = "prison release"; - name = "Labor Camp Shuttle Lockdown"; - pixel_y = -25; - req_access_txt = "2" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/security/processing) -"IqS" = ( -/obj/structure/window/reinforced, -/obj/vehicle/ridden/secway, -/obj/item/key/security, -/obj/machinery/door/window/eastleft{ - name = "Secway Docking Port" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) -"IwC" = ( -/obj/effect/spawner/lootdrop/keg, -/turf/open/floor/wood, -/area/maintenance/bar) -"IEd" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"IOq" = ( -/obj/structure/rack, -/obj/item/storage/box/chemimp{ - pixel_x = 6 - }, -/obj/item/storage/box/trackimp{ - pixel_x = -3 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"IPJ" = ( -/turf/open/floor/plasteel/red/corner{ - dir = 4 - }, -/area/security/brig) -"JbH" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"Jcn" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) -"Jcy" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/item/radio/intercom{ - name = "Station Intercom (General)"; - pixel_y = -29 - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"Jfm" = ( -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/brig) -"Jgm" = ( -/obj/effect/turf_decal/loading_area/white, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/white/corner, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"Jnv" = ( -/obj/structure/chair/office/dark{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"JAr" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green/corner, -/turf/open/floor/plasteel, -/area/crew_quarters/cryopod) -"JOT" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"Knt" = ( -/turf/open/floor/plasteel/red/side{ - dir = 6 - }, -/area/security/brig) -"Kpp" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/cryopod{ - tag = "icon-cryopod-open (WEST)"; - icon_state = "cryopod-open"; - dir = 8 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/prison) -"KrE" = ( -/obj/structure/rack, -/obj/item/soap/nanotrasen, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/port/aft) -"KvX" = ( -/obj/structure/chair/office/dark, -/obj/effect/landmark/start/warden, -/obj/machinery/button/door{ - id = "Prison Gate"; - name = "Prison Wing Lockdown"; - pixel_x = -27; - pixel_y = 8; - req_access_txt = "2" - }, -/obj/machinery/button/door{ - id = "seclobby"; - name = "Security Lobby Lockdown"; - pixel_x = -27; - pixel_y = -2; - req_access_txt = "2" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"KHo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 4 - }, -/area/security/brig) -"KNi" = ( -/obj/machinery/door/window/southleft{ - name = "Armory"; - req_access_txt = "3" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"LcH" = ( -/obj/structure/table/wood, -/obj/machinery/chem_dispenser/drinks, -/turf/open/floor/wood, -/area/maintenance/bar) -"Lru" = ( -/obj/structure/chair/stool, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/button/door{ - id = "permabolt2"; - name = "Cell Bolt Control"; - normaldoorcontrol = 1; - pixel_y = 25; - req_access_txt = "0"; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/prison) -"LAP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"LZL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/maintenance/fore/secondary) -"Moa" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"MxR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/light, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"Mzd" = ( -/obj/machinery/door/poddoor/shutters{ - id = "lowsecarmory"; - name = "Non-Lethal Armoury Shutter" - }, -/obj/machinery/button/door{ - id = "lowsecarmory"; - name = "Non-Lethal Armory Shutters"; - pixel_y = 26; - req_access_txt = "3" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/security/main) -"MIE" = ( -/obj/item/shard, -/obj/item/wirecutters, -/obj/item/wallframe/camera, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/bar) -"MJI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/maintenance/bar) -"MLq" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"MRu" = ( -/obj/machinery/light_switch{ - pixel_y = 28 - }, -/obj/structure/closet/secure_closet/courtroom, -/obj/effect/decal/cleanable/cobweb, -/obj/item/gavelhammer, -/turf/open/floor/plasteel, -/area/security/courtroom) -"MRP" = ( -/obj/machinery/door/airlock/maintenance/abandoned{ - name = "Incinerator Access"; - req_access_txt = "12" - }, -/obj/structure/barricade/wooden{ - name = "wooden barricade (CLOSED)" - }, -/turf/open/floor/plating, -/area/maintenance/bar) -"MWg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/armory) -"Nau" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/reagent_dispensers/water_cooler, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"NkF" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"Nmb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/red/side{ - dir = 6 - }, -/area/security/brig) -"Nql" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/security/brig) -"Nrx" = ( -/obj/item/radio/intercom{ - desc = "Talk through this. It looks like it has been modified to not broadcast."; - dir = 2; - name = "Prison Intercom (General)"; - pixel_x = -25; - pixel_y = -2; - prison_radio = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) -"NzL" = ( -/obj/machinery/door/window/westleft{ - base_state = "left"; - dir = 4; - icon_state = "left"; - name = "Brig Infirmary"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel/whitered/side{ - dir = 4 - }, -/area/security/brig) -"NQr" = ( -/obj/machinery/requests_console{ - department = "Security"; - departmentType = 5; - pixel_x = -30 - }, -/obj/machinery/camera{ - c_tag = "Brig Control Room"; - dir = 4 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/closet/secure_closet/warden, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"NSC" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"Oly" = ( -/obj/machinery/chem_dispenser/drinks/beer, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/maintenance/bar) -"Osi" = ( -/obj/machinery/door/poddoor/shutters{ - id = "armory"; - name = "Armoury Shutter" - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"OtF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/maintenance/bar) -"Ozq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, -/area/maintenance/bar) -"OBq" = ( -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = -31 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"OSr" = ( -/obj/machinery/door/airlock/maintenance/abandoned{ - id_tag = "Maintdorm1"; - req_access_txt = "0" - }, -/turf/open/floor/wood, -/area/maintenance/port/aft) -"PcH" = ( -/obj/structure/table/wood/poker, -/turf/open/floor/wood, -/area/maintenance/bar) -"Pem" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/maintenance/bar) -"Pez" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"PlJ" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "seclobby"; - name = "security shutters" - }, -/turf/open/floor/plating, -/area/security/brig) -"PzP" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"PBc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"PEg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/security/brig) -"PJW" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/brig) -"PYb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/security/brig) -"Qcw" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 1; - id_tag = "outerbrig"; - name = "Brig"; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/red/side{ - dir = 5 - }, -/area/security/brig) -"Qge" = ( -/obj/machinery/button/door{ - id = "Maintdorm2"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 - }, -/turf/open/floor/wood, -/area/maintenance/port/aft) -"Qru" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 1; - id_tag = "lobbyairlock"; - name = "Security Lobby"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, -/area/security/brig) -"Qvz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"QDB" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/armory) -"QFx" = ( -/obj/machinery/door/airlock/external{ - name = "Labor Camp Shuttle Airlock"; - req_access_txt = "2" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/security/processing) -"ReY" = ( -/obj/machinery/door/airlock/maintenance/abandoned{ - req_access_txt = "0" - }, -/turf/open/floor/plating, -/area/maintenance/bar) -"Rwb" = ( -/obj/machinery/computer/crew{ - dir = 1 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"RyJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"RRt" = ( -/obj/item/lighter/greyscale, -/obj/effect/decal/cleanable/semen{ - desc = "Blech."; - name = "dried semen" - }, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/bar) -"RWl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/side{ - dir = 6 - }, -/area/security/brig) -"SbB" = ( -/obj/machinery/camera{ - c_tag = "Brig Equipment Room"; - dir = 4 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) -"Sfp" = ( -/obj/machinery/door/airlock/security/glass{ - id_tag = null; - name = "Evidence Storage"; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"SjU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"Sly" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, -/area/maintenance/bar) -"STm" = ( -/obj/machinery/vending/clothing, -/turf/open/floor/wood, -/area/maintenance/bar) -"SUw" = ( -/obj/structure/rack, -/obj/item/storage/box/teargas{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/storage/box/handcuffs, -/obj/item/storage/box/flashbangs{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/red/side, -/area/ai_monitored/security/armory) -"SWq" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security{ - name = "Security Office"; - req_access = null; - req_access_txt = "1" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/security/main) -"Tqy" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 1; - id_tag = "outerbrig"; - name = "Brig"; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/red/side{ - dir = 9 - }, -/area/security/brig) -"TIM" = ( -/obj/machinery/door_timer{ - id = "Cell 2"; - name = "Cell 2"; - pixel_y = -32 - }, -/obj/machinery/light, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel/red/corner, -/area/security/brig) -"TZk" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/brig) -"UmK" = ( -/obj/machinery/door/airlock/maintenance/abandoned{ - req_access_txt = "0" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, -/area/maintenance/bar) -"UnJ" = ( -/obj/machinery/vending/kink, -/turf/open/floor/wood, -/area/maintenance/bar) -"UqV" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel/dark, -/area/security/brig) -"Uua" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"Uuv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"UvC" = ( -/obj/item/twohanded/required/kirbyplants/random, -/turf/open/floor/plasteel/red/side{ - dir = 9 - }, -/area/security/brig) -"USL" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plasteel/red/side{ - dir = 5 - }, -/area/security/brig) -"UYY" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/power/apc{ - areastring = "/area/crew_quarters/cryopod"; - dir = 4; - name = "Cryogenics APC"; - pixel_x = 24 - }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) -"Vup" = ( -/obj/structure/chair/stool, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/button/door{ - id = "permabolt1"; - name = "Cell Bolt Control"; - normaldoorcontrol = 1; - pixel_y = 25; - req_access_txt = "0"; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel/floorgrime, -/area/security/prison) -"VLP" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/brig) -"VTn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance/abandoned{ - req_access_txt = "0" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/bar) -"VZe" = ( -/obj/machinery/door/poddoor/shutters{ - id = "armory"; - name = "Armoury Shutter" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"Wgg" = ( -/obj/structure/bed, -/obj/item/bedsheet/grey, -/obj/effect/decal/cleanable/semen{ - desc = "Blech."; - name = "dried semen" - }, -/obj/effect/spawner/lootdrop/costume, -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/maintenance/bar) -"WwY" = ( -/obj/structure/chair/stool/bar, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"WDU" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Brig Control"; - req_access_txt = "3" - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/brig) -"WMt" = ( -/obj/machinery/vending/coffee, -/turf/open/floor/plasteel/red/side{ - dir = 5 - }, -/area/security/brig) -"WQm" = ( -/obj/structure/chair{ - dir = 4; - name = "Prosecution" - }, -/turf/open/floor/plasteel/red/side{ - dir = 9 - }, -/area/security/courtroom) -"WRc" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "seclobby"; - name = "security shutters" - }, -/obj/machinery/door/airlock/public/glass{ - name = "Courtroom" - }, -/turf/open/floor/plasteel/dark, -/area/security/brig) -"WSZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/maintenance/bar) -"WWX" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/brigdoor{ - dir = 1; - name = "Armory Desk"; - req_access_txt = "3" - }, -/obj/machinery/door/window/southleft{ - name = "Reception Desk"; - req_access_txt = "63" - }, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/brig) -"WXW" = ( -/obj/structure/chair/stool/bar, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood, -/area/maintenance/bar) -"Xfx" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, -/area/security/brig) -"Xiv" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) -"XjL" = ( -/obj/structure/rack, -/obj/item/gun/energy/e_gun{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/energy/e_gun, -/obj/item/gun/energy/e_gun{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel{ - dir = 2 - }, -/area/ai_monitored/security/armory) -"XmQ" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/iv_drip, -/turf/open/floor/plasteel/whitered/side{ - dir = 5 - }, -/area/security/brig) -"XqB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/bar) -"XwE" = ( -/turf/open/floor/plasteel/red/side{ - dir = 10 - }, -/area/security/brig) -"XBE" = ( -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, -/obj/item/crowbar, -/obj/item/electropack/shockcollar, -/turf/open/floor/plating, -/area/maintenance/bar) -"XLV" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/corner, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"XMB" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/rnd/production/protolathe/department/security, -/turf/open/floor/plasteel/red/side, -/area/security/main) -"XPp" = ( -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen, -/obj/machinery/newscaster{ - pixel_x = 30 - }, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/maintenance/bar) -"XRe" = ( -/obj/structure/table, -/obj/machinery/chem_dispenser/drinks, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/bar, -/area/security/brig) -"XSH" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/security/brig) -"YcJ" = ( -/turf/open/floor/plasteel, -/area/security/execution/transfer) -"YjW" = ( -/obj/item/radio/intercom{ - freerange = 0; - frequency = 1459; - name = "Station Intercom (General)"; - pixel_x = 29 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/closet/wardrobe/red, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) -"YpE" = ( -/obj/structure/chair/stool, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"YNq" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"YNF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/firealarm{ - dir = 2; - pixel_y = 24 - }, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, -/area/security/brig) -"YRL" = ( -/obj/structure/table, -/obj/item/storage/box/firingpins, -/obj/item/storage/box/firingpins, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"YUq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/machinery/computer/cryopod{ - pixel_y = 25 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/green/corner{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/cryopod) -"ZbZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 8 - }, -/area/security/brig) -"Zhd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/closed/wall, -/area/maintenance/bar) -"Zvf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/security/brig) -"ZAl" = ( -/obj/machinery/computer/cryopod{ - pixel_y = 25 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/prison) -"ZEU" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/brig) -"ZHV" = ( -/obj/machinery/door_timer{ - id = "Cell 1"; - name = "Cell 1"; - pixel_y = -32 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 2 - }, -/area/security/brig) (1,1,1) = {" aaa @@ -71049,6 +70094,8 @@ aaa aaa aaa aaa +aaa +aaa aag aaa aaa @@ -71056,8 +70103,6 @@ aaa aaa aaa aaa -aaa -aaa aaf aaS aaa @@ -71306,6 +70351,8 @@ aaa aaa aaa aaa +aaa +aaa aag aaa aaa @@ -71313,8 +70360,6 @@ aaa aaa aaa aaa -aaa -aaa aaf aaS aaf @@ -71563,6 +70608,8 @@ aaa aaa aaa aaa +aaa +aaa aag aaa aaa @@ -71570,8 +70617,6 @@ aaa aaa aaa aaa -aaa -aaa aaf aaS aaa @@ -71820,6 +70865,8 @@ aaa aaa aaa aaa +aaa +aaa aag aaa aaa @@ -71827,8 +70874,6 @@ aaa aaa aaa aaa -aaa -aaa aaf aaS acy @@ -72077,6 +71122,8 @@ aaa aaa aaa aaa +aaa +aaa aag aaa aaa @@ -72084,8 +71131,6 @@ aaa aaa aaa aaa -aaa -aaa aaf aba aaa @@ -72334,6 +71379,8 @@ aaa aaa aaa aaa +aaa +aaa aag aaa aaa @@ -72341,8 +71388,6 @@ aaa aaa aaa aaa -aaa -aaa aaf aaS aaf @@ -72591,10 +71636,10 @@ aaa aaa aaa aaa +aaa +aaa aag aaa -aaa -aaa aoV bZm aoV @@ -72848,10 +71893,10 @@ aaa aaa aaa aaa +aaa +aaa aag aaa -aaa -aaa aoV bVz aaf @@ -73105,10 +72150,10 @@ aaa aaa aaa aaa +aaa +aaa aag aaa -aaa -aaa aag bVz aag @@ -73362,10 +72407,10 @@ aaa aaa aaa aaa -aag -gXs aaa aaa +aag +aaa aaf bVz aoV @@ -73618,10 +72663,10 @@ aaa aaa aaa aaa -gXs +aaa +aaa +aaa aag -gXs -gXs aaa aaf bVz @@ -73876,10 +72921,10 @@ aaa aaf aaf aaf +gXs +gXs aag -gXs -gXs -gXs +aaa bVx caf aoV @@ -74132,12 +73177,12 @@ aaa aaa aaa aaa -bCq -bLv -bCq -bCq -bCq -bCq +aaa +aaa +aaa +jtl +aaa +aoV cbj aoV aag @@ -74389,11 +73434,11 @@ aaa aaa aaa aaa -bCq -KrE -bCq -bPS -gZR +aaa +aaa +aaa +jtl +aaa bCq cbj bLv @@ -74646,11 +73691,11 @@ aaa aaa aaa aaa -bCq -bHE -bCq -fLS -pDm +aaa +aaa +aaa +jtl +aaa bCq cbk bLv @@ -74865,7 +73910,7 @@ aLJ aLE aOl aPA -aQW +aQN aQW aTD aQW @@ -74903,11 +73948,11 @@ aaa aaa aaa aaa -bLv -bHE -Gwy -Qge -tsC +aaa +aaa +aaa +jtl +aaa bCq bVy bLv @@ -75160,11 +74205,11 @@ aaa aaa aaa aaa -bCq -bHE -bCq -bCq -qQU +aaa +aaa +aaa +jtl +aaa bCq bVB bHE @@ -75417,11 +74462,11 @@ aaa aaa aaa aaa -bLv -bHE -bCq -bPS -kcq +aaa +aaa +aaa +jtl +aaa bCq bVA bWw @@ -75675,10 +74720,10 @@ aaa aaa aaa bCq -bHE bCq -fLS -jJa +bCq +bCq +bCq bCq bVD bWy @@ -75932,10 +74977,10 @@ bGi aoV aoV bCq +bPU bHE -OSr -DHH -fEF +bPU +bPU bCq bVC bWx @@ -76189,10 +75234,10 @@ bGi aoV aoV bCq -bPW +bCq +uAK bCq bCq -qQU bCq bVF bWA @@ -76448,8 +75493,8 @@ aoV bCq bHE bHE -bSq -bTx +bHE +bHE bCq bVE bWz @@ -76706,20 +75751,20 @@ bCq bPY cOw bCq -ete -ete -ete -ete -ete -MRP -ete -ete -ete -ete -ete -ete -ete -ete +bCq +bCq +bCq +bCq +bCq +bYy +ref +ref +xPY +ref +ref +ref +ref +ref bUs bLv aaa @@ -76963,20 +76008,20 @@ bCq bPX bRg bRg -ete -nuB -OBq -sGR -jDQ -nuB -IwC -ete -nuB -iZV -OBq -nuB -lIk -ete +bCq +bHE +bVG +bHE +bHE +bHE +dkC +tmK +gxS +gxS +qit +iGw +iGw +ref bUs bLv aaa @@ -77220,20 +76265,20 @@ bLv bQa bHE bHE -ete -Qvz -jHE -esl -Ozq -WSZ -Ozq -UmK -Ozq -Ozq -eTp -jnM -fDN -ete +bCq +bHE +ref +ref +ref +ref +ref +gxS +vNv +gxS +iGw +qbA +tqe +ref bUs bLv aaf @@ -77477,20 +76522,20 @@ bLv bPZ bHE bHE -ReY -CxU -WwY -WXW -FJK -CUx -qDl -rHF -qDl -Sly -Gnk -irr -nuB -ete +cTF +bHE +ref +wPS +rrl +eYI +ref +gxS +gxS +gxS +iGw +vJu +ooS +ref bUs bLv aaa @@ -77734,20 +76779,20 @@ bLv bHE bHE bSs -ete -MJI -tLw -wdF -jss -tLw -nuB -uQt -HJB -irr -gEX -PcH -znN -ete +bCq +bHE +ref +rgN +iEy +qBv +ref +iGw +iGw +vNv +ouu +iGw +iGw +ref bUs bLv aaa @@ -77991,20 +77036,20 @@ bCq bHE bRh bLu -ete -SjU -HWl -PzP -jdX -ihS -Eko -ete -nuB -uOE -gEX -PcH -nuw -ete +bCq +bHE +ref +ref +wzn +ref +ref +qKd +qKd +iGw +kds +gxS +gxS +ref bUs bLv aaf @@ -78169,10 +77214,10 @@ abc abc afu abc -abc -abc -abc -abc +aaa +aaa +aaa +aaa aaa aaa aaa @@ -78248,21 +77293,21 @@ bCq bOK bCq bCq -ete -VTn -Pem -Oly -LcH -gPL -ete -ete -nuB -irr -tvf -orD -irr -ete -bUs +bCq +bHE +ref +fWI +gxS +vNv +nKB +gxS +bSu +uBG +stg +vSH +tEz +pDq +dqT bLv aaa cjJ @@ -78425,20 +77470,20 @@ abc aea aeH aft -vdY -Jgm -jXE -DJw abc -gXs +aaa +aaa +aaa +aaa +aaa aaa aaa aiU -QFx +aln aiU aaa aiU -QFx +anN aiU aaa aaa @@ -78506,20 +77551,20 @@ bHE bLv aaa bLv -lYQ -Pem -ete -ete -ete -ete -nuB -nuB -nuB -YpE -irr -ihC -ete -bUs +bHE +ref +knR +vJW +nRn +oqQ +qdB +wSH +qBQ +oPA +nRn +nwX +nEe +bUz bLv aaa cjJ @@ -78684,18 +77729,18 @@ aeJ afw abc abc -FZW -IcK -abc -aaf aaf aaa +aaf +aaf +aaf +aaf aiU -rtk +alp aiU aaa aiU -rtk +alp aiU aaf aaf @@ -78763,20 +77808,20 @@ bHE bLv aaf bLv -lYQ -Pem -mKs -XBE -RRt -FRl -nuB -HJB -jnM -kuo -nuB -nuB -ete -bUs +bUt +ref +ygH +idZ +tmK +qSC +gxS +qKd +iGw +gxS +qit +eKN +vhC +bUz bLv aaf cjJ @@ -78934,26 +77979,26 @@ abb abt aca acz -wOx +acX adC aeb aeI afv agf abc -DVb -mQI -abc +aaf +aaa +aaa aiT aiT aiV +akG +cxJ aiU -Iiq -aiU -aiT -aiU -Iiq +amK aiU +cxP +aoq aiV aiT aiT @@ -79020,20 +78065,20 @@ bLv bCq aaa bLv -lYQ -Pem -MIE -Wgg -fhC -ete -STm -vnP -XPp -Ecg -AgS -UnJ -ete bUs +ref +tOc +vNv +gxS +ezO +gxS +gxS +gxS +gxS +gxS +gRV +vhC +bUz bCq aaa aaf @@ -79191,17 +78236,17 @@ abe abw acc acB -tTl +acZ adE aee aeL afy agh abc -YcJ -YcJ -YcJ -aiV +aaf +aaa +aaf +aiT ajs akb akI @@ -79277,20 +78322,20 @@ bLv aaa aaa bTB -XqB -mCA -OtF -OtF -OtF -OtF -OtF -OtF -OtF -OtF -OtF -OtF -Zhd -bUs +bUv +mtJ +mtJ +mtJ +mtJ +mtJ +mtJ +mtJ +mtJ +mtJ +mtJ +mtJ +car +bUz bCq bCq bCq @@ -79448,17 +78493,17 @@ abd abv acb acA -lgR +acI adD aed aeK afx agg abc -YcJ -iTV -YcJ -aiV +aaf +aaa +aaa +aiU ajr aka akH @@ -79534,7 +78579,7 @@ bLv bLv bLv bTA -iqw +bUu bLw bLw bLw @@ -79708,14 +78753,14 @@ aby aby aby aeg -Fdq +aeN afA afA afA -YcJ -YcJ -YcJ -aiV +aaf +aaa +aaa +aiU aju akd akK @@ -79973,13 +79018,13 @@ aai aai aai aai -yOg +ajt akc akJ alr amd amL -rpN +anu alq aot apc @@ -80231,13 +79276,13 @@ agK aiB aai ajw -vYR +akf aiX aiX aiX aiX aiV -xJF +anP aiT cCi cCi @@ -80475,13 +79520,13 @@ aat abh aat acd -xpa +abK acY adG aeh aeO afI -hDJ +agl agH ags ags @@ -80726,7 +79771,7 @@ aak aap aay aaD -aau +aat aat aat aat @@ -80746,7 +79791,7 @@ aho acd ajy akh -Sfp +afK ajc afM afN @@ -81257,7 +80302,7 @@ agK agK ail aiE -Evc +aiW ajA akj agj @@ -81265,7 +80310,7 @@ agj agj aiX aiX -mlG +anQ aov cCi apU @@ -81494,7 +80539,7 @@ aaa aag aaf aaj -nbc +aaq aay aaE aaJ @@ -81503,7 +80548,7 @@ aaV aat aat acd -Lru +abL adb acd ael @@ -81516,13 +80561,13 @@ agj agj agj ajz -cTu -PEg -aly -AWY -Jcn -aiX +aki +akM +alv +amf +amQ anw +anz aov cCi arT @@ -81773,13 +80818,13 @@ ahW aiD agj auj -ZEU -fqD -hYC -qiF -amg -aiX +akl +akO +alx +alx +amR anw +anz aox cCi cCi @@ -82030,13 +81075,13 @@ ain aid agj aiZ -ZHV -akQ -agj -agj -agj -aiX -kXo +akk +akN +alw +amg +amR +anw +anR aow apg aqZ @@ -82286,14 +81331,14 @@ ahP ahP aiF agj -ajD -akm -PYb -aly -ryv -Jcn -aiX -anw +aja +ajG +akQ +agj +agj +amS +anx +anz aov aph aph @@ -82522,35 +81567,35 @@ aaa aag aaf aai -ZAl +aau aaA -Kpp +aaG aaK aaP aaX aat aat acd -Vup +acD acY adG aeq aeV acd agj -XmQ -NzL -GlY +ahm +ahD +aiw aiO agj -aja -ZEU -mqQ -hYC -qiF -ami -aiX +ajD +akm +akP +aly +amh +amR anw +anz aov aph aob @@ -82786,7 +81831,7 @@ aai aai aai abj -rPG +abG acd acd acd @@ -82794,20 +81839,20 @@ acd aeP afC agk -HXb +agF agP agP agP agP aiz -zmg -TIM -akQ -agj -agj -agj -aiX +ajg +akl +akR +alx +alx +amR anw +anz aov aph aoc @@ -83039,12 +82084,12 @@ aaa aaa aaf aaf -Emp +aaa aaf aai abi abF -cIV +ach acK adf acd @@ -83058,13 +82103,13 @@ agO agO aiy ajb -fuL -kQp -Nrx -rmO -Jcn -aiX +ajF +akN +alw +ami +amR anw +anz aov api ata @@ -83296,8 +82341,8 @@ aaf aaf aaf aaf -aaS aaf +aaR aaZ aaZ aaZ @@ -83312,16 +82357,16 @@ agn agR agn agR -eEc -aiX -VLP -akv -rTI -uGh -aww -amk -aiX -eet +agn +ajc +ajI +ako +akQ +agj +agj +amS +any +anz aov aph aqb @@ -83553,32 +82598,32 @@ aaa aaa aaa aaf -Emp +aaa +aaf +aaf +aaT aaf -GcW -qla -Dhx -EbP aaZ -fpJ -ATB -lla -YRL +abm +cpg +acv +adi +adi aaZ -NQr -Gbr -tra -ixw -lVH -piy -ajI -oxm -akQ -agj -agj -agj -aiX +aeW +agQ +ahv +ahQ +aiI +aiH +ajB +akm +akP +aly +amj +amR anw +anz aov aph aph @@ -83810,32 +82855,32 @@ aaa aaa aaa aaf -Emp +aaa aaf -GcW -qla -QDB -EbP +aaf +aaT +aaa aaZ -MLq -cxA +abH +acl +ajC acL -lTe +adi aaZ -faB -Uua -CQC -NSC -KvX -WWX -VLP -akm -oKT -aly -xDn -Jcn -aiX +agp +agT +ahx +ahS +aiK +ajc +ajI +akl +akT +aww +alx +amR anw +anz aov apk anw @@ -84067,41 +83112,41 @@ aaa aaa aaa aaf -Emp +aaa aaf -GcW -qla -fKO -tfB +aaf +abY +aaa aaZ -xgi +abn +ack adk adK -zaC -dhD -agt +cqG +aeX +ago agS agQ -agt -Rwb -akV +ahR +aiJ +ajc ajI -ZEU -cQs -hYC -qiF -amp -aiX +akk +akS +alw +amk +amR +anw anS -Eew -JbH -oEE -oEE -oEE -oEE -oEE -oEE -JOT +aoy +apj +anz +anz +anz +anz +anz +anz +awk axB anz anz @@ -84324,32 +83369,32 @@ aaa aaa aaa aaf -Emp +aaa aaf -GcW -qla -QDB -yLl +aaf +aaT +aaa aaZ -zGy -XjL -Pez -IOq -CQO -PBc +abJ +ack +acM +adQ +cwM +aeZ +agr agU ahy -LAP -xbq -Gmd -KHo -vJW +ahX +aiL +ajc +ajI +akq akQ agj agj -agj -aiX -anA +amS +anx +anz aoz apm aqd @@ -84581,33 +83626,33 @@ aaa aaa aaa aaf -Emp +aaa aaf -GcW -DRh -xic -yLl +aaf +aaT +aaa aaZ -YNq +abI +ack coS aet cxA -KNi +aeY agt agt -vVq -zcn -agt -WDU -vYy -xVn +ahz +aie +aiN +ajc +ajI +akp akU -Clf +alz aml -FQA -aiX -Qru -iYT +amT +anw +anz +aoz apl aqc aqc @@ -84838,33 +83883,33 @@ aaa aaa aaa aaf -Emp +aaa aaf -GcW -ssv -Fwc -XLV -BlT -wkw -eAL -sgY -Moa -tIp +aaf +abY +aaa +aaZ +abQ +ack +adj +arc +blT +agq cml agV cxk aig -CaS -aiX -Zvf -ZbZ -Nql +aiM +ajc +ajI +akp +akV alB amn -UqV -dcW -aiG -Knt +amV +anw +anz +aoz aod aqf ahT @@ -84878,9 +83923,9 @@ anF anF anF anF -UYY -Xiv -gwo +anF +anF +anF aoa aJu aKF @@ -85095,33 +84140,33 @@ aaa aaa aaa aaf -Emp +aaa aaf -GcW -vmd -MWg -IEd -VZe -EOh +aaf +abY +aaa +aaZ +abN +ack +bkA acF -acF -gPJ +aes avB amN agt -ahB -Uuv -agn -aiX -ksu -muL -amS +awN +aHp +aIF +ajc +ajI +akp +akQ alA -iuz amm -zRm -vZp -vZp +amU +anw +anT +aoA apn aqe arf @@ -85133,12 +84178,12 @@ arf arf arf arf -rAZ -rAZ -rAZ -rAZ -jNv -ahn +arf +arf +arf +arf +aoa +arf aJn aJn aJq @@ -85352,33 +84397,33 @@ aaa aaa aaa aaf -Emp +aaa aaf -GcW -mTf -npy -BdE -Osi -lsi -Jnv -RyJ -SUw +aaf +aaT +aaf +aaZ +aci +acm +cpA +adg +aeu alt agu agX ahB aij agn -UvC -sCj -uZB -PlJ -UvC -Jfm -Jfm -Jfm -Jfm -CpD +aje +ajJ +akr +akX +alC +alC +amX +anz +anz +aoB aod aqe arf @@ -85390,12 +84435,12 @@ atf arf aqa atf -rAZ -ykv -kPE -rAZ -jNv -ahn +arf +sjc +sjc +sjc +sjc +arf aaa aJn aJq @@ -85609,12 +84654,12 @@ aaa aaa aaf aaf +aaf +aaf +aaa adR -adR -adR -adR -Mzd -avB +abo +aaZ aaZ aaZ acT @@ -85626,18 +84671,18 @@ agW ahE aii agn -Xfx -ajb -NkF -PlJ -ajc -alC -Jfm -Jfm -loR -GpD -LZL -nMU +ajd +ajI +ahY +akW +aiG +amo +amW +anz +anz +aoz +aod +aqe arf apY ate @@ -85647,12 +84692,12 @@ ath arf apY ath -rAZ -YUq -zSX -rAZ -jNv -ahn +xfy +shL +ath +shL +shL +arf aaa aJn aLY @@ -85866,33 +84911,33 @@ aaa aaa aaa aaa +aaf +aaf +aaa abp -IqS -IqS -vCy -abO -abO -SbB -abO +abP +aco +acO +abl abO abO afc -abo +afQ agw agY ahA ahZ adR aiQ -VLP -txT -Tqy -sVi -ajc -Knt -aiG -CJg -vJv +ajI +akt +akQ +agj +agj +aiX +anB +anz +aoD aod aqe arf @@ -85904,12 +84949,12 @@ ath arf ayV ath -rAZ -crS -uMu -rAZ -jNv -ahn +arf +aCd +ath +aCd +aCd +arf aJw aJw aMh @@ -86123,6 +85168,9 @@ aaa aaa aaa aaa +aaa +aaf +aaa abo abO abO @@ -86130,26 +85178,23 @@ abO abO abO abO -abO -abO -abO afb abo afg ahb ahG aik -SWq +cBV ajf ajK -DHO -Qcw -IPJ -ajc -XwE -alC -CJg -Jcy +aks +akY +alx +amp +aiX +anA +anz +aoC aod aqe arf @@ -86161,12 +85206,12 @@ awo arf asd aAb -rAZ -crS -JAr -rAZ -evS -ahn +arf +asd +aDK +arf +arf +arf aJv aKG aMg @@ -86380,15 +85425,15 @@ aaa aaa aaa aaa +aaa +aaf +aaa abp abO -abO -wZF -wZF -wZF -wZF -wZF -abO +acq +acq +acq +acq aew afe afS @@ -86397,17 +85442,17 @@ aha ahC aia aiP -YNF -XSH -MxR +aiR +ajB +akv +ala +akz +alf aiX -uzg -USL -uFV -uFV -Nmb -Nau -efg +anA +anz +aoF +apo aqh arh asg @@ -86421,8 +85466,8 @@ atj aAX azc atj -Hig -oux +aFe +aul aHT aJy aJy @@ -86637,17 +85682,17 @@ aaa aaa aaa aaf +aaf +aaf +aaf abo abO -abO -abO -abO acp acP acP acP aev -YjW +afd afR agx agZ @@ -86656,14 +85701,14 @@ aim adR aiG ajL -RWl +aku +akZ +alE +amq aiX -WMt -qZT -vml -PJW -TZk -XRe +anA +anz +aoE aod aqg aun @@ -86678,7 +85723,7 @@ azT auk auk aDG -zxh +aFd auk aHH aJg @@ -86894,15 +85939,15 @@ aaa aaa aaa aaa +aaa +aaa +aaf abp -aco -EXC -rax -fYm -rax -rax -rax -abl +abR +abP +abP +abP +abP abp abp abp @@ -86912,15 +85957,15 @@ ahF aip adR aiX -nCJ +ajN akx aiX aiX aiX aiX -sfv -WRc -sfv +anC +anU +anC cSA aqe arf @@ -86935,7 +85980,7 @@ azV aAh aAh aFg -gKP +aFh aAh aAh aAh @@ -87151,9 +86196,9 @@ aaa aaa aaf aaf -abp -abp -abp +aaf +aaf +aaf abq abq abq @@ -87168,10 +86213,10 @@ ahb ahF clI abp -MRu +ajh ajM akw -WQm +alb alG amr amY @@ -87192,7 +86237,7 @@ aAd aAh aCm aDL -iyF +aFf aGk aHU aJz @@ -87423,7 +86468,7 @@ afV agB ahd ahI -XMB +clS abp ajj ajP @@ -87449,7 +86494,7 @@ aAg aAh aDO aDQ -vGV +aFi aGl aBy aBy @@ -87670,7 +86715,7 @@ aaf aaf abr abS -qVv +acr acQ adn adM @@ -87933,7 +86978,7 @@ adp adP aey afj -BSi +afX agC ahf ahK @@ -88970,7 +88015,7 @@ abp ajp ajU ajn -ajn +trb ajn amr ajp @@ -89218,7 +88263,7 @@ aaf abo aeA afl -zft +aga abp ahj abp @@ -89981,8 +89026,8 @@ aaf aag aag aag -poo -poo +aaa +aaa aag abp abp @@ -101566,8 +100611,8 @@ aaf aaf aaf aaf -alP -ybU +aaf +aaf alP anf alP @@ -101823,8 +100868,8 @@ aaa aaa aaa aaa -alP -alP +aaa +aaf alP anf alP diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index e22386b9f8..8d5467fbe5 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -15401,9 +15401,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/airlock_sensor{ - id_tag = "incinerator_airlock_sensor"; - master_tag = "incinerator_airlock_control"; +/obj/machinery/airlock_sensor/incinerator_atmos{ pixel_y = 24 }, /turf/open/floor/engine, @@ -15960,10 +15958,7 @@ }, /area/security/execution/education) "aNO" = ( -/obj/machinery/door/poddoor{ - id = "turbinevent"; - name = "Turbine Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_main, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "aNP" = ( @@ -15997,9 +15992,7 @@ /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "aNR" = ( -/obj/machinery/igniter{ - id = "Incinerator" - }, +/obj/machinery/igniter/incinerator_atmos, /obj/structure/cable{ icon_state = "4-8" }, @@ -16011,14 +16004,7 @@ /area/maintenance/disposal/incinerator) "aNS" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_exterior"; - name = "Incinerator Exterior Airlock"; - req_access_txt = "12" - }, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior, /obj/structure/cable{ icon_state = "4-8" }, @@ -16033,23 +16019,14 @@ icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ - dir = 2; - frequency = 1449; - id = "incinerator_airlock_pump" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos{ + dir = 2 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "aNU" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_interior"; - name = "Incinerator Interior Airlock"; - req_access_txt = "12" - }, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, /obj/structure/cable{ icon_state = "4-8" }, @@ -16057,16 +16034,8 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, -/obj/machinery/embedded_controller/radio/airlock_controller{ - airpump_tag = "incinerator_airlock_pump"; - exterior_door_tag = "incinerator_airlock_exterior"; - id_tag = "incinerator_airlock_control"; - interior_door_tag = "incinerator_airlock_interior"; - name = "Incinerator Access Console"; - pixel_y = 27; - req_access_txt = "12"; - sanitize_external = 1; - sensor_tag = "incinerator_airlock_sensor" +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{ + pixel_y = 27 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) @@ -16735,24 +16704,17 @@ /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "aPA" = ( -/obj/machinery/button/ignition{ - id = "Incinerator"; +/obj/machinery/button/ignition/incinerator/atmos{ pixel_x = 8; pixel_y = -36 }, -/obj/machinery/button/door{ - id = "turbinevent"; - name = "Turbine Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_main{ pixel_x = -8; - pixel_y = -36; - req_access_txt = "12" + pixel_y = -36 }, -/obj/machinery/button/door{ - id = "auxincineratorvent"; - name = "Auxiliary Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_aux{ pixel_x = -8; - pixel_y = -24; - req_access_txt = "12" + pixel_y = -24 }, /obj/machinery/computer/turbine_computer{ dir = 1; @@ -17622,10 +17584,7 @@ /turf/open/floor/plating/airless, /area/maintenance/disposal/incinerator) "aRo" = ( -/obj/machinery/door/poddoor{ - id = "auxincineratorvent"; - name = "Incineration Chamber Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_aux, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "aRp" = ( @@ -72556,7 +72515,7 @@ /obj/item/pen, /obj/machinery/door/window/southleft{ name = "Research Lab Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/poddoor/shutters/preopen{ id = "rndlab1"; @@ -76089,7 +76048,7 @@ /obj/machinery/door/window/southleft{ dir = 4; name = "Research Lab Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/window/westleft, /obj/effect/turf_decal/delivery, @@ -76754,7 +76713,7 @@ /obj/machinery/door/window/southleft{ dir = 8; name = "Research Lab Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/poddoor/shutters/preopen{ id = "rndlab2"; @@ -82923,7 +82882,6 @@ /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 4 }, -/obj/structure/window/spawner/north, /obj/effect/turf_decal/stripes/line{ dir = 5 }, @@ -83693,6 +83651,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/portable_atmospherics/pump{ + name = "Lil Pump" + }, /turf/open/floor/plasteel, /area/science/mixing) "dxQ" = ( @@ -84469,7 +84430,6 @@ dir = 4 }, /obj/machinery/portable_atmospherics/canister, -/obj/structure/window/spawner, /obj/effect/turf_decal/stripes/line{ dir = 6 }, @@ -84989,7 +84949,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/obj/structure/window/spawner, /turf/open/floor/plasteel, /area/science/mixing) "dAD" = ( @@ -85787,6 +85746,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 5 }, +/obj/item/radio/intercom{ + pixel_x = -26 + }, /turf/open/floor/plasteel, /area/science/mixing) "dCb" = ( @@ -86384,7 +86346,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 9 }, -/obj/structure/window/spawner/north, /turf/open/floor/plasteel, /area/science/mixing) "dDt" = ( @@ -86891,6 +86852,7 @@ /obj/structure/sign/poster/official/science{ pixel_x = 32 }, +/obj/machinery/portable_atmospherics/scrubber, /turf/open/floor/plasteel, /area/science/mixing) "dEv" = ( @@ -87473,6 +87435,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/portable_atmospherics/pump, /turf/open/floor/plasteel, /area/science/mixing) "dFM" = ( @@ -92690,12 +92653,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) -"dQF" = ( -/obj/machinery/droneDispenser, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/maintenance/port/aft) "dQG" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, @@ -99679,14 +99636,7 @@ }, /area/science/mixing) "fpQ" = ( -/obj/machinery/door/airlock/research/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "tox_airlock_interior"; - name = "Mixing Room Interior Airlock"; - req_access_txt = "8" - }, +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior, /obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/engine, /area/science/mixing) @@ -99714,9 +99664,7 @@ /obj/machinery/atmospherics/components/binary/pump/on{ dir = 1 }, -/obj/machinery/airlock_sensor{ - id_tag = "tox_airlock_sensor"; - master_tag = "tox_airlock_control"; +/obj/machinery/airlock_sensor/incinerator_toxmix{ pixel_x = -24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -99951,17 +99899,13 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/button/ignition{ - id = "herrington_memorial_toxigniter"; +/obj/machinery/button/ignition/incinerator/toxmix{ pixel_x = -6; pixel_y = 30 }, -/obj/machinery/button/door{ - id = "mixvent"; +/obj/machinery/button/door/incinerator_vent_toxmix{ pixel_x = 8; - pixel_y = 30; - req_one_access = null; - req_one_access_txt = "8" + pixel_y = 30 }, /obj/effect/decal/cleanable/dirt, /obj/machinery/camera{ @@ -100048,7 +99992,7 @@ /obj/machinery/autolathe, /obj/machinery/door/window/southleft{ name = "Research Lab Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/firedoor, /obj/machinery/door/poddoor/shutters/preopen{ @@ -100066,10 +100010,8 @@ }, /area/science/mixing) "lyU" = ( -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ - dir = 8; - frequency = 1449; - id = "tox_airlock_pump" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix{ + dir = 8 }, /turf/open/floor/engine, /area/science/mixing) @@ -100144,14 +100086,8 @@ /area/science/circuit) "mkm" = ( /obj/machinery/atmospherics/components/binary/valve, -/obj/machinery/embedded_controller/radio/airlock_controller{ - airpump_tag = "tox_airlock_pump"; - exterior_door_tag = "tox_airlock_exterior"; - id_tag = "tox_airlock_control"; - interior_door_tag = "tox_airlock_interior"; - pixel_y = 26; - sanitize_external = 1; - sensor_tag = "tox_airlock_sensor" +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix{ + pixel_y = 26 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ @@ -100207,15 +100143,7 @@ }, /area/science/mixing) "oIE" = ( -/obj/machinery/door/airlock/research/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "tox_airlock_exterior"; - name = "Mixing Room Exterior Airlock"; - req_one_access = "8"; - req_one_access_txt = "0" - }, +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior, /obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/engine, /area/science/mixing) @@ -100255,9 +100183,7 @@ }, /area/science/research) "oYI" = ( -/obj/machinery/igniter{ - id = "herrington_memorial_toxigniter" - }, +/obj/machinery/igniter/incinerator_toxmix, /turf/open/floor/engine/vacuum, /area/science/mixing) "oZC" = ( @@ -100360,9 +100286,7 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "svv" = ( -/obj/machinery/door/poddoor{ - id = "mixvent" - }, +/obj/machinery/door/poddoor/incinerator_toxmix, /turf/open/floor/engine/vacuum, /area/science/mixing) "tmi" = ( @@ -134175,7 +134099,7 @@ dNC dNC dOT dPM -dQF +dOb dRE dSC dTA diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index f2b63a49f3..912cc6743b 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aaa" = ( /turf/open/space/basic, /area/space) @@ -897,6 +897,14 @@ }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) +"acx" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/cryopod, +/turf/open/floor/plasteel/floorgrime, +/area/security/prison) "acy" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod Two" @@ -1042,6 +1050,15 @@ /obj/machinery/light, /turf/open/floor/plasteel/floorgrime, /area/security/prison) +"acM" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/turf/open/floor/plasteel/floorgrime, +/area/security/prison) "acN" = ( /obj/structure/table/glass, /obj/item/reagent_containers/syringe, @@ -3622,25 +3639,6 @@ icon_state = "platingdmg1" }, /area/maintenance/fore) -"ahU" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/structure/table, -/obj/item/stock_parts/manipulator, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/fore) -"ahV" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, -/area/crew_quarters/fitness/recreation) "ahW" = ( /obj/structure/window/reinforced{ dir = 1 @@ -4057,22 +4055,6 @@ }, /turf/open/floor/plating, /area/maintenance/fore) -"aiP" = ( -/obj/structure/table, -/obj/item/folder, -/turf/open/floor/plating, -/area/maintenance/fore) -"aiQ" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = -27 - }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, -/area/crew_quarters/fitness/recreation) "aiR" = ( /obj/structure/table, /obj/item/clothing/under/sl_suit{ @@ -4476,7 +4458,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/neutral/corner{ + dir = 8 + }, /area/crew_quarters/fitness/recreation) "ajS" = ( /obj/structure/table, @@ -5121,10 +5105,6 @@ }, /turf/open/floor/plating, /area/maintenance/fore) -"alf" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/fitness/recreation) "alg" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -5828,10 +5808,6 @@ }, /turf/open/floor/plating, /area/maintenance/fore) -"amv" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel/vault, -/area/crew_quarters/fitness/recreation) "amw" = ( /obj/structure/window/reinforced, /obj/machinery/door/window/eastright{ @@ -6013,6 +5989,11 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"amU" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/maintenance/port) "amW" = ( /obj/structure/table/reinforced, /obj/item/folder, @@ -7774,9 +7755,7 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "aqR" = ( -/obj/structure/chair{ - dir = 8 - }, +/obj/machinery/vending/kink, /turf/open/floor/plating{ icon_state = "panelscorched" }, @@ -21724,11 +21703,23 @@ "aUM" = ( /turf/closed/wall, /area/crew_quarters/locker) +"aUN" = ( +/obj/structure/closet/wardrobe/black, +/turf/open/floor/plasteel/vault, +/area/crew_quarters/locker) +"aUO" = ( +/obj/structure/closet/wardrobe/grey, +/turf/open/floor/plasteel/vault, +/area/crew_quarters/locker) +"aUP" = ( +/obj/structure/closet/wardrobe/white, +/turf/open/floor/plasteel/vault, +/area/crew_quarters/locker) "aUQ" = ( /turf/open/floor/plasteel/vault, /area/crew_quarters/locker) "aUR" = ( -/obj/structure/closet/wardrobe/green, +/obj/machinery/vending/kink, /turf/open/floor/plasteel/vault, /area/crew_quarters/locker) "aUS" = ( @@ -25533,6 +25524,12 @@ dir = 4 }, /area/security/checkpoint/engineering) +"bcO" = ( +/obj/machinery/vending/kink, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/starboard/fore) "bcP" = ( /obj/machinery/light{ dir = 8 @@ -51612,7 +51609,7 @@ /obj/machinery/door/window/eastright{ dir = 2; name = "Research and Development Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/poddoor/shutters/preopen{ id = "research_shutters"; @@ -52935,29 +52932,14 @@ /area/maintenance/disposal/incinerator) "cja" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_interior"; - name = "Incinerator Interior Airlock"; - req_access_txt = "12" - }, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, /obj/structure/cable{ icon_state = "1-2" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/embedded_controller/radio/airlock_controller{ - airpump_tag = "incinerator_airlock_pump"; - exterior_door_tag = "incinerator_airlock_exterior"; - id_tag = "incinerator_airlock_control"; - interior_door_tag = "incinerator_airlock_interior"; - name = "Incinerator Access Console"; +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{ pixel_x = 40; - pixel_y = 8; - req_access_txt = "12"; - sanitize_external = 1; - sensor_tag = "incinerator_airlock_sensor" + pixel_y = 8 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) @@ -53665,9 +53647,7 @@ /obj/machinery/atmospherics/components/binary/pump/on{ dir = 1 }, -/obj/machinery/airlock_sensor{ - id_tag = "incinerator_airlock_sensor"; - master_tag = "incinerator_airlock_control"; +/obj/machinery/airlock_sensor/incinerator_atmos{ pixel_x = -8; pixel_y = 24 }, @@ -53680,10 +53660,8 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ - dir = 8; - frequency = 1449; - id = "incinerator_airlock_pump" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos{ + dir = 8 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) @@ -54314,8 +54292,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "cmb" = ( -/obj/machinery/chem_master/condimaster{ - name = "CondiMaster Neo"; +/obj/machinery/chem_master{ pixel_x = -4 }, /turf/open/floor/plating, @@ -54328,14 +54305,7 @@ /area/space/nearstation) "cmd" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_exterior"; - name = "Incinerator Exterior Airlock"; - req_access_txt = "12" - }, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior, /obj/structure/cable{ icon_state = "1-2" }, @@ -54795,9 +54765,7 @@ /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cne" = ( -/obj/machinery/igniter{ - id = "Incinerator" - }, +/obj/machinery/igniter/incinerator_atmos, /obj/structure/cable{ icon_state = "1-2" }, @@ -54817,10 +54785,7 @@ /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cng" = ( -/obj/machinery/door/poddoor{ - id = "auxincineratorvent"; - name = "Incineration Chamber Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_aux, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cnh" = ( @@ -55792,7 +55757,7 @@ /obj/machinery/door/window/eastright{ dir = 4; name = "Research and Development Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/item/folder/white{ pixel_x = 4; @@ -56632,7 +56597,7 @@ /obj/machinery/door/window/eastleft{ dir = 1; name = "Research and Development Deliveries"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/structure/window/reinforced{ dir = 8 @@ -56905,10 +56870,7 @@ /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "crf" = ( -/obj/machinery/door/poddoor{ - id = "turbinevent"; - name = "Turbine Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_main, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "crg" = ( @@ -58034,10 +57996,7 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "cto" = ( -/obj/machinery/vending/assist, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, +/obj/machinery/vending/kink, /turf/open/floor/plating, /area/maintenance/port/aft) "ctq" = ( @@ -63419,10 +63378,7 @@ /turf/open/space, /area/science/mixing) "cEr" = ( -/obj/machinery/door/poddoor{ - id = "mixvent"; - name = "Mixer Room Vent" - }, +/obj/machinery/door/poddoor/incinerator_toxmix, /turf/open/floor/engine/vacuum, /area/science/mixing) "cEs" = ( @@ -63432,9 +63388,8 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "cEt" = ( -/obj/machinery/sparker{ +/obj/machinery/sparker/toxmix{ dir = 2; - id = "mixingsparker"; pixel_x = 25 }, /obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output{ @@ -63449,9 +63404,7 @@ /turf/closed/wall/r_wall, /area/science/mixing) "cEv" = ( -/obj/machinery/airlock_sensor{ - id_tag = "tox_airlock_sensor"; - master_tag = "tox_airlock_control"; +/obj/machinery/airlock_sensor/incinerator_toxmix{ pixel_y = 24 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -63465,14 +63418,8 @@ dir = 4 }, /obj/machinery/meter, -/obj/machinery/embedded_controller/radio/airlock_controller{ - airpump_tag = "tox_airlock_pump"; - exterior_door_tag = "tox_airlock_exterior"; - id_tag = "tox_airlock_control"; - interior_door_tag = "tox_airlock_interior"; - pixel_x = -24; - sanitize_external = 1; - sensor_tag = "tox_airlock_sensor" +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix{ + pixel_x = -24 }, /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -63864,35 +63811,19 @@ /area/science/mixing) "cFo" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/research/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "tox_airlock_exterior"; - name = "Mixing Room Exterior Airlock"; - req_access_txt = "8" - }, +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior, /turf/open/floor/engine, /area/science/mixing) "cFp" = ( -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ - dir = 2; - frequency = 1449; - id = "tox_airlock_pump" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix{ + dir = 2 }, /obj/effect/landmark/blobstart, /turf/open/floor/engine, /area/science/mixing) "cFq" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/research/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "tox_airlock_interior"; - name = "Mixing Room Interior Airlock"; - req_access_txt = "8" - }, +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior, /turf/open/floor/engine, /area/science/mixing) "cFr" = ( @@ -64316,9 +64247,8 @@ }, /area/science/research) "cGj" = ( -/obj/machinery/sparker{ +/obj/machinery/sparker/toxmix{ dir = 2; - id = "mixingsparker"; pixel_x = 25 }, /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input{ @@ -64341,15 +64271,11 @@ dir = 4 }, /obj/machinery/meter, -/obj/machinery/button/door{ - id = "mixvent"; - name = "Mixing Room Vent Control"; +/obj/machinery/button/door/incinerator_vent_toxmix{ pixel_x = -25; - pixel_y = 5; - req_access_txt = "7" + pixel_y = 5 }, -/obj/machinery/button/ignition{ - id = "mixingsparker"; +/obj/machinery/button/ignition/incinerator/toxmix{ pixel_x = -25; pixel_y = -5 }, @@ -67097,8 +67023,7 @@ /turf/open/floor/plating, /area/maintenance/aft) "cLC" = ( -/obj/machinery/button/ignition{ - id = "Incinerator"; +/obj/machinery/button/ignition/incinerator/atmos{ pixel_x = 8; pixel_y = -36 }, @@ -67109,20 +67034,14 @@ network = list("turbine"); pixel_x = 29 }, -/obj/machinery/button/door{ - id = "turbinevent"; - name = "Turbine Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_main{ pixel_x = -8; - pixel_y = -36; - req_access_txt = "12" + pixel_y = -36 }, /obj/machinery/atmospherics/pipe/simple/general/visible, -/obj/machinery/button/door{ - id = "auxincineratorvent"; - name = "Auxiliary Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_aux{ pixel_x = -8; - pixel_y = -24; - req_access_txt = "12" + pixel_y = -24 }, /obj/machinery/computer/turbine_computer{ dir = 1; @@ -70756,6 +70675,13 @@ /obj/structure/disposalpipe/segment, /turf/closed/wall/r_wall, /area/science/xenobiology) +"cUd" = ( +/obj/machinery/cryopod{ + dir = 4; + tag = "0" + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/fitness/recreation) "cUH" = ( /obj/structure/table/optable, /turf/open/floor/plasteel/white, @@ -71412,6 +71338,10 @@ /obj/structure/easel, /turf/open/floor/plating, /area/maintenance/port) +"dbl" = ( +/obj/structure/easel, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "dbm" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel, @@ -73623,19 +73553,12 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "dhp" = ( -/obj/machinery/light{ - dir = 8 - }, /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 +/turf/open/floor/plasteel/neutral/corner{ + dir = 8 }, -/obj/structure/sign/poster/official/random{ - pixel_x = -32 - }, -/turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) "dhq" = ( /obj/structure/table/reinforced, @@ -76007,6 +75930,10 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) +"dWa" = ( +/obj/machinery/computer/cryopod, +/turf/closed/wall, +/area/security/prison) "dYu" = ( /obj/machinery/door/airlock/external{ name = "Auxiliary Airlock" @@ -76175,6 +76102,13 @@ }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) +"hdw" = ( +/obj/machinery/cryopod{ + dir = 4; + tag = "0" + }, +/turf/open/floor/plasteel/vault, +/area/crew_quarters/fitness/recreation) "hfJ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -76191,14 +76125,6 @@ }, /turf/open/floor/plating, /area/security/prison) -"hAJ" = ( -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, -/obj/machinery/cryopod, -/turf/open/floor/plasteel/floorgrime, -/area/security/prison) "ioI" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -76217,7 +76143,7 @@ /obj/machinery/door/window/eastright{ dir = 2; name = "Research and Development Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/firedoor, /obj/machinery/door/poddoor/shutters/preopen{ @@ -76447,10 +76373,15 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"mEW" = ( -/obj/machinery/vending/kink, -/turf/open/floor/plasteel/vault, -/area/crew_quarters/locker) +"mSt" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 1 + }, +/area/crew_quarters/fitness/recreation) "nnK" = ( /obj/item/stack/sheet/glass/fifty, /obj/item/paper_bin, @@ -76711,12 +76642,10 @@ }, /turf/open/floor/wood, /area/library) -"rhY" = ( -/obj/machinery/vending/kink, -/turf/open/floor/plating{ - icon_state = "platingdmg2" - }, -/area/maintenance/port) +"rzf" = ( +/obj/machinery/computer/cryopod, +/turf/closed/wall, +/area/crew_quarters/fitness/recreation) "rzX" = ( /obj/structure/chair/office/light{ dir = 1; @@ -76930,15 +76859,6 @@ }, /turf/open/floor/plasteel, /area/science/misc_lab) -"vlg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green/side, -/turf/open/floor/plasteel/neutral/corner{ - dir = 2 - }, -/area/crew_quarters/locker) "vlx" = ( /obj/machinery/vr_sleeper, /turf/open/floor/plasteel/neutral/corner{ @@ -76994,7 +76914,6 @@ /turf/closed/wall, /area/science/circuit) "wOE" = ( -/obj/machinery/droneDispenser, /turf/open/floor/plating, /area/maintenance/aft) "wPk" = ( @@ -77083,79 +77002,6 @@ /obj/machinery/light, /turf/open/floor/plasteel/white, /area/science/circuit) -"AIY" = ( -/obj/machinery/computer/cryopod{ - pixel_y = -24 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/box/white/corners, -/obj/effect/turf_decal/box/white/corners{ - dir = 8 - }, -/turf/open/floor/plasteel/vault, -/area/crew_quarters/locker) -"FiY" = ( -/obj/machinery/vending/kink, -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/maintenance/starboard/fore) -"KHe" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green/corner{ - dir = 1 - }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 2 - }, -/area/crew_quarters/locker) -"RbF" = ( -/obj/machinery/vending/kink, -/obj/machinery/vending/kink, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"SuJ" = ( -/obj/machinery/cryopod, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plasteel/vault, -/area/crew_quarters/locker) -"WoM" = ( -/obj/machinery/cryopod{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/vault, -/area/crew_quarters/locker) -"Xvm" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen, -/obj/machinery/computer/cryopod{ - pixel_x = 30; - pixel_y = 6 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/prison) -"XMx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green/corner, -/turf/open/floor/plasteel/neutral/corner{ - dir = 2 - }, -/area/crew_quarters/locker) (1,1,1) = {" aaa @@ -95026,7 +94872,7 @@ bHQ bvW bLg bLf -rhY +amU bPL alK bOf @@ -101641,8 +101487,8 @@ aay abs abK ace -hAJ -Xvm +acx +acM abe ady adT @@ -101899,7 +101745,7 @@ aax aax aax aax -abe +dWa abe abe abe @@ -110487,7 +110333,7 @@ cGl cHg cIh dAh -RbF +dbl dyc dxQ dvY @@ -110675,8 +110521,8 @@ aOx aPJ aQT aOu -XMx -WoM +aTt +aUN aUM aYc aTC @@ -110932,8 +110778,8 @@ aOy aOt aQU aSg -vlg -AIY +aTt +aUO aUM boW aZt @@ -111189,8 +111035,8 @@ aOz aOu aQV aOv -KHe -SuJ +aTt +aUP aUM dCD aZt @@ -111673,8 +111519,8 @@ acQ afs agr acP -ahU -aiP +acP +acP acP acP acP @@ -111930,12 +111776,12 @@ acP acP ags acP -acP -acP -acP -alf -amv -acP +hdw +cUd +cUd +cUd +cUd +rzf aoS acP arB @@ -112186,9 +112032,9 @@ aaa acQ aft agt +mSt +ahf ahf -ahV -aiQ dhp alg alg @@ -112447,7 +112293,7 @@ ahg ahg ahg ajR -ahg +ahl ahg anG aoU @@ -112475,7 +112321,7 @@ aPL aQZ aSh aTA -mEW +aUT aUM aYh aCM @@ -118361,7 +118207,7 @@ aaf aaf ack dni -FiY +bcO dnS dnS dnS diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 783b752b39..437cd5491e 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aaa" = ( /turf/open/space/basic, /area/space) @@ -7629,7 +7629,6 @@ }, /area/teleporter) "aoJ" = ( -/obj/machinery/droneDispenser, /obj/effect/turf_decal/stripes/line{ dir = 10 }, @@ -14629,6 +14628,18 @@ dir = 5 }, /area/crew_quarters/dorms) +"aEL" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-21" + }, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/crew_quarters/dorms) "aEM" = ( /obj/structure/closet/crate/bin, /obj/effect/turf_decal/bot, @@ -20523,7 +20534,7 @@ /obj/item/pen, /obj/machinery/door/window/southleft{ name = "Research Lab Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/poddoor/shutters/preopen{ id = "rndlab1"; @@ -21476,7 +21487,7 @@ /obj/machinery/door/window/southleft{ dir = 4; name = "Research Lab Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/poddoor/shutters/preopen{ id = "rndlab1"; @@ -35974,16 +35985,6 @@ dir = 5 }, /area/engine/atmos) -"ZwS" = ( -/obj/machinery/status_display{ - pixel_y = -32 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/vending/kink, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/crew_quarters/dorms) (1,1,1) = {" aaa @@ -72590,7 +72591,7 @@ aAF aBO aCN aDD -ZwS +aEL awQ aGz aGM diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 27a5b55895..e0de739f99 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aaa" = ( /turf/open/space/basic, /area/space) @@ -3054,6 +3054,10 @@ }, /turf/open/space, /area/space/nearstation) +"ajB" = ( +/obj/item/storage/box/mousetraps, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) "ajC" = ( /obj/structure/chair/stool, /turf/open/floor/plating, @@ -3448,6 +3452,10 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"aks" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) "akt" = ( /obj/structure/bed, /obj/item/bedsheet, @@ -7805,6 +7813,7 @@ dir = 4; pixel_x = 28 }, +/obj/machinery/cryopod, /turf/open/floor/plasteel, /area/crew_quarters/dorms) "avm" = ( @@ -10349,6 +10358,14 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"aBK" = ( +/obj/structure/table, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/crowbar, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "aBL" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -10422,12 +10439,16 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel, /area/crew_quarters/dorms) +"aBT" = ( +/obj/structure/closet/wardrobe/white, +/turf/open/floor/plasteel/arrival, +/area/crew_quarters/fitness/recreation) "aBU" = ( /obj/structure/closet/wardrobe/mixed, /turf/open/floor/plasteel/arrival, /area/crew_quarters/fitness/recreation) "aBV" = ( -/obj/structure/closet/wardrobe/green, +/obj/machinery/vending/kink, /turf/open/floor/plasteel/arrival, /area/crew_quarters/fitness/recreation) "aBW" = ( @@ -11017,6 +11038,7 @@ /turf/open/floor/plasteel/white/side, /area/crew_quarters/dorms) "aDk" = ( +/obj/machinery/cryopod, /turf/open/floor/plasteel/white/corner{ icon_state = "whitecorner"; dir = 8 @@ -12047,6 +12069,14 @@ /obj/machinery/vending/snack, /turf/open/floor/plasteel, /area/hallway/primary/central) +"aFD" = ( +/obj/structure/table, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/taperecorder, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "aFE" = ( /obj/structure/cable{ icon_state = "1-2" @@ -12420,6 +12450,13 @@ /obj/machinery/vending/cigarette, /turf/open/floor/plasteel, /area/hallway/primary/central) +"aGA" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/storage/emergency/starboard) "aGB" = ( /obj/machinery/space_heater, /turf/open/floor/plating, @@ -21172,10 +21209,6 @@ icon_state = "platingdmg3" }, /area/maintenance/department/cargo) -"bdA" = ( -/obj/machinery/droneDispenser, -/turf/open/floor/plating, -/area/maintenance/department/cargo) "bdB" = ( /obj/structure/cable{ icon_state = "1-4" @@ -25732,7 +25765,7 @@ /obj/machinery/door/window/eastright{ dir = 2; name = "Research and Development Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/poddoor/shutters/preopen{ id = "research_shutters_2"; @@ -31482,8 +31515,8 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 }, /turf/open/floor/plasteel/white, /area/science/mixing) @@ -32064,9 +32097,6 @@ dir = 4 }, /area/science/explab) -"bFg" = ( -/turf/open/floor/plasteel/white, -/area/science/mixing) "bFh" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 @@ -32501,6 +32531,9 @@ /area/science/mixing) "bGn" = ( /obj/machinery/vending/wardrobe/science_wardrobe, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGo" = ( @@ -32520,6 +32553,9 @@ pixel_y = -2 }, /obj/structure/table/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGp" = ( @@ -32544,6 +32580,9 @@ network = list("ss13","rd") }, /obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGq" = ( @@ -32561,16 +32600,25 @@ }, /obj/item/assembly/timer, /obj/structure/table/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGr" = ( /obj/structure/tank_dispenser, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGs" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGt" = ( @@ -33023,12 +33071,8 @@ /area/science/mixing) "bHz" = ( /obj/machinery/atmospherics/components/binary/valve, -/obj/machinery/button/door{ - id = "toxvent"; - name = "Aft Vent Control"; - pixel_y = -24; - req_access_txt = "0"; - req_one_access_txt = "8;24" +/obj/machinery/button/door/incinerator_vent_toxmix{ + pixel_y = -24 }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -33044,14 +33088,9 @@ pixel_x = -6; pixel_y = -24 }, -/obj/machinery/doorButtons/airlock_controller{ - idExterior = "tox_airlock_exterior"; - idInterior = "tox_airlock_interior"; - idSelf = "tox_access_control"; - name = "Mixing Chamber Access Console"; +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix{ pixel_x = 6; - pixel_y = -26; - req_access_txt = "0" + pixel_y = -26 }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -33068,9 +33107,15 @@ dir = 2; name = "Incinerator Output Pump" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plasteel, /area/science/mixing) "bHD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/purple/side, /area/science/mixing) "bHE" = ( @@ -33081,6 +33126,9 @@ /obj/effect/turf_decal/bot{ dir = 2 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, /turf/open/floor/plasteel/purple/side, /area/science/mixing) "bHI" = ( @@ -33115,6 +33163,10 @@ }, /turf/open/space/basic, /area/space/nearstation) +"bHP" = ( +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plasteel/dark, +/area/maintenance/department/engine) "bHQ" = ( /turf/open/floor/plasteel/dark, /area/maintenance/department/engine) @@ -33515,15 +33567,7 @@ /area/science/mixing) "bIL" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "tox_airlock_interior"; - name = "Interior Airlock"; - req_access_txt = "8"; - req_one_access_txt = "0" - }, +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior, /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/engine, /area/science/mixing) @@ -33954,36 +33998,33 @@ /obj/machinery/atmospherics/components/binary/pump/on{ dir = 2 }, -/obj/machinery/doorButtons/access_button{ - idDoor = "tox_airlock_exterior"; - idSelf = "tox_access_control"; - layer = 3.1; - name = "airlock control"; - pixel_x = 8; - pixel_y = -24 - }, /obj/machinery/light/small{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/airlock_sensor/incinerator_toxmix{ + pixel_x = -24 + }, /turf/open/floor/engine, /area/science/mixing) "bJR" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix{ + dir = 8 + }, /turf/open/floor/engine, /area/science/mixing) "bJS" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1 }, -/obj/machinery/doorButtons/access_button{ - idDoor = "tox_airlock_interior"; - idSelf = "tox_access_control"; - name = "airlock control"; - pixel_x = -8; - pixel_y = 24 - }, /obj/machinery/light/small{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/engine, /area/science/mixing) "bJT" = ( @@ -34467,15 +34508,7 @@ /area/engine/atmos) "bLf" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "tox_airlock_exterior"; - name = "Exterior Airlock"; - req_access_txt = "8"; - req_one_access_txt = "0" - }, +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, @@ -35680,10 +35713,7 @@ /turf/closed/wall/r_wall, /area/science/mixing) "bOt" = ( -/obj/machinery/door/poddoor{ - id = "toxvent"; - name = "Aft Vent" - }, +/obj/machinery/door/poddoor/incinerator_toxmix, /turf/open/floor/engine/vacuum, /area/science/mixing) "bOu" = ( @@ -40308,19 +40338,13 @@ dir = 8; id = "incineratorturbine" }, -/obj/machinery/button/door{ - id = "turbinevent"; - name = "Outtake Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_main{ pixel_x = 24; - pixel_y = 6; - req_one_access_txt = "8;24" + pixel_y = 6 }, -/obj/machinery/button/door{ - id = "mixvent"; - name = "Intake Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_aux{ pixel_x = 24; - pixel_y = -6; - req_one_access_txt = "8;24" + pixel_y = -6 }, /turf/open/floor/plasteel/darkyellow/side{ dir = 4 @@ -40340,6 +40364,9 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/airlock_sensor/incinerator_atmos{ + pixel_y = 22 + }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "bZT" = ( @@ -40607,24 +40634,10 @@ icon_state = "4-8" }, /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_interior"; - name = "Turbine Interior Airlock"; - req_access_txt = "24" - }, -/obj/machinery/embedded_controller/radio/airlock_controller{ - airpump_tag = "incinerator_airlock_pump"; - exterior_door_tag = "incinerator_airlock_exterior"; - id_tag = "incinerator_airlock_control"; - interior_door_tag = "incinerator_airlock_interior"; - name = "Incinerator Access Console"; +/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{ pixel_x = -6; - pixel_y = -26; - sanitize_external = 1; - sensor_tag = "incinerator_airlock_sensor" + pixel_y = -26 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) @@ -40632,10 +40645,8 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ - dir = 2; - frequency = 1449; - id = "incinerator_airlock_pump" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos{ + dir = 2 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) @@ -40644,23 +40655,14 @@ icon_state = "4-8" }, /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_exterior"; - name = "Turbine Exterior Airlock"; - req_access_txt = "24" - }, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "caO" = ( /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/igniter{ - id = "Incinerator" - }, +/obj/machinery/igniter/incinerator_atmos, /obj/machinery/air_sensor/atmos/incinerator_tank{ pixel_x = 32; pixel_y = -32 @@ -40697,10 +40699,7 @@ /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "caR" = ( -/obj/machinery/door/poddoor{ - id = "turbinevent"; - name = "Outtake Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_main, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "caS" = ( @@ -40920,8 +40919,7 @@ /turf/open/floor/plasteel/dark, /area/maintenance/disposal/incinerator) "cbC" = ( -/obj/machinery/button/ignition{ - id = "Incinerator"; +/obj/machinery/button/ignition/incinerator/atmos{ pixel_x = 26; pixel_y = -6 }, @@ -40945,12 +40943,6 @@ }, /obj/machinery/light/small, /obj/machinery/atmospherics/pipe/simple/general/hidden, -/obj/machinery/airlock_sensor{ - id_tag = "incinerator_airlock_sensor"; - master_tag = "incinerator_airlock_control"; - pixel_x = -26; - pixel_y = 8 - }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "cbF" = ( @@ -41194,10 +41186,7 @@ }, /area/maintenance/disposal/incinerator) "ccs" = ( -/obj/machinery/door/poddoor{ - id = "mixvent"; - name = "Intake Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_aux, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "ccu" = ( @@ -43077,6 +43066,19 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) +"cjO" = ( +/obj/effect/decal/cleanable/cobweb{ + icon_state = "cobweb2" + }, +/obj/item/stack/sheet/glass/fifty{ + layer = 4 + }, +/obj/item/stack/sheet/metal{ + amount = 20; + layer = 3.1 + }, +/turf/open/floor/plating, +/area/maintenance/department/chapel/monastery) "cjP" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-22" @@ -46986,10 +46988,7 @@ /turf/open/floor/plasteel/dark, /area/library) "cBk" = ( -/obj/machinery/vending/boozeomat{ - products = list(/obj/item/reagent_containers/food/drinks/bottle/whiskey = 1, /obj/item/reagent_containers/food/drinks/bottle/absinthe = 1, /obj/item/reagent_containers/food/drinks/bottle/limejuice = 1, /obj/item/reagent_containers/food/drinks/bottle/cream = 1, /obj/item/reagent_containers/food/drinks/soda_cans/tonic = 1, /obj/item/reagent_containers/food/drinks/drinkingglass = 10, /obj/item/reagent_containers/food/drinks/ice = 3, /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 6, /obj/item/reagent_containers/food/drinks/flask = 1); - req_access_txt = "0" - }, +/obj/machinery/vending/boozeomat/maint, /turf/closed/wall, /area/maintenance/department/crew_quarters/dorms) "cBl" = ( @@ -47905,7 +47904,6 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/general/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/department/cargo) @@ -48014,16 +48012,6 @@ }, /turf/open/floor/plating, /area/engine/engineering) -"eWf" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/cryopod, -/obj/machinery/computer/cryopod{ - pixel_y = 24 - }, -/turf/open/floor/plasteel/dark, -/area/hallway/primary/central) "eWi" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plasteel/dark, @@ -49447,6 +49435,10 @@ }, /turf/closed/wall/r_wall, /area/engine/engineering) +"jqN" = ( +/obj/effect/spawner/lootdrop/keg, +/turf/open/floor/wood, +/area/maintenance/department/crew_quarters/dorms) "jrG" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -49729,6 +49721,12 @@ icon_state = "platingdmg3" }, /area/maintenance/department/engine) +"kfh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/science/mixing) "kfM" = ( /obj/structure/closet, /obj/machinery/light/small{ @@ -49793,6 +49791,10 @@ /obj/item/clothing/under/rank/clown/sexy, /turf/open/floor/plasteel/dark, /area/maintenance/department/crew_quarters/dorms) +"kmn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/mixing) "knw" = ( /obj/structure/cable{ icon_state = "1-2" @@ -49835,9 +49837,6 @@ dir = 9 }, /area/chapel/office) -"kwI" = ( -/turf/open/floor/plasteel, -/area/science/mixing) "kxj" = ( /obj/structure/chair/office/dark{ dir = 1 @@ -50732,6 +50731,12 @@ /obj/item/stack/spacecash/c10, /turf/open/floor/plasteel/dark, /area/maintenance/department/crew_quarters/dorms) +"noM" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/mixing) "npE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, @@ -50769,6 +50774,12 @@ }, /turf/open/floor/plasteel, /area/construction/mining/aux_base) +"nsD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/closed/wall/r_wall, +/area/science/mixing) "ntj" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -50991,11 +51002,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood, /area/lawoffice) -"nSH" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/machinery/vending/kink, -/turf/open/floor/plasteel/dark, -/area/maintenance/department/engine) "nVU" = ( /obj/item/twohanded/spear, /turf/open/floor/plating, @@ -51957,15 +51963,6 @@ }, /turf/open/floor/plating, /area/crew_quarters/heads/chief) -"qHi" = ( -/obj/structure/table, -/obj/machinery/light{ - dir = 4 - }, -/obj/item/crowbar, -/obj/item/taperecorder, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "qHI" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -52329,6 +52326,11 @@ "rHA" = ( /turf/open/floor/plasteel, /area/construction/mining/aux_base) +"rHP" = ( +/obj/structure/lattice, +/obj/structure/reagent_dispensers/keg/aphro/strong, +/turf/open/space, +/area/space/nearstation) "rJg" = ( /obj/machinery/atmospherics/pipe/simple/cyan/hidden, /obj/machinery/light/small{ @@ -52354,7 +52356,7 @@ width = 9 }, /turf/open/floor/plating, -/area/shuttle/auxillary_base) +/area/construction/mining/aux_base) "rKr" = ( /obj/structure/cable{ icon_state = "4-8" @@ -52407,6 +52409,10 @@ }, /turf/open/floor/plating/airless, /area/engine/engineering) +"rPW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/science/mixing) "rSH" = ( /obj/item/trash/can, /turf/open/floor/wood, @@ -52449,7 +52455,7 @@ /turf/open/floor/plating, /area/engine/engineering) "sbk" = ( -/obj/structure/girder, +/obj/machinery/vending/kink, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "sbY" = ( @@ -53020,6 +53026,10 @@ }, /turf/open/floor/plating/airless, /area/engine/engineering) +"ubW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/science/mixing) "uek" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance{ @@ -53135,7 +53145,7 @@ /area/construction/mining/aux_base) "uoS" = ( /turf/open/floor/plating, -/area/shuttle/auxillary_base) +/area/construction/mining/aux_base) "uqJ" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -54302,6 +54312,12 @@ }, /turf/open/floor/plasteel/dark/telecomms, /area/tcommsat/server) +"xIx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/science/mixing) "xJy" = ( /obj/structure/chair/comfy/black, /obj/structure/sign/plaques/atmos{ @@ -54404,6 +54420,10 @@ }, /turf/open/floor/plasteel, /area/science/xenobiology) +"yap" = ( +/obj/machinery/computer/cryopod, +/turf/closed/wall, +/area/crew_quarters/dorms) "ybX" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance, @@ -54452,65 +54472,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"yzM" = ( -/obj/machinery/light/small, -/obj/item/storage/box/mousetraps, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) -"Drm" = ( -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/plasteel/green/corner, -/area/hallway/primary/central) -"EjC" = ( -/obj/machinery/cryopod, -/turf/open/floor/plasteel/dark, -/area/hallway/primary/central) -"JAb" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/taperecorder, -/turf/open/floor/plating, -/area/storage/emergency/starboard) -"KhG" = ( -/obj/machinery/vending/kink, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) -"QYc" = ( -/obj/machinery/vending/kink, -/obj/effect/decal/cleanable/cobweb{ - icon_state = "cobweb2" - }, -/turf/open/floor/plating, -/area/maintenance/department/chapel/monastery) -"RST" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/hallway/primary/central) -"Xmf" = ( -/obj/item/stack/sheet/metal{ - amount = 20; - layer = 3.1 - }, -/obj/item/stack/sheet/glass/fifty{ - layer = 4 - }, -/turf/open/floor/plating, -/area/maintenance/department/chapel/monastery) -"YSB" = ( -/obj/machinery/vending/kink, -/turf/closed/wall, -/area/storage/emergency/starboard) -"Zud" = ( -/obj/machinery/vending/kink, -/obj/machinery/vending/kink, -/turf/open/floor/plasteel/arrival, -/area/crew_quarters/fitness/recreation) (1,1,1) = {" aaa @@ -70775,7 +70736,7 @@ aaa aaa ait aiV -KhG +ajB akr aiu ait @@ -71149,7 +71110,7 @@ cvw cvI ckQ clf -Xmf +cwA cwA cwS cjm @@ -71290,7 +71251,7 @@ aaa aiu aiX ajD -yzM +aks aiu ait ait @@ -71405,7 +71366,7 @@ cgG cfn ciR cwa -QYc +cjO ckk ckC ckR @@ -75731,7 +75692,7 @@ bDg bEj bFF bva -nSH +bHP bJb bJb bJb @@ -88728,7 +88689,7 @@ aaa aaa aaa aby -abI +rHP abO abX acg @@ -90583,12 +90544,12 @@ awd abI awd aAM -qHi +aBK aDa aEb -Drm -RST -RST +aAM +aFD +aDa aAN aIf aJe @@ -90844,8 +90805,8 @@ awd awd aAN aAN -eWf -EjC +awd +awd aAN aIg aJf @@ -91100,10 +91061,10 @@ aaa aaa aaa aaa -aAN -aAN -aAN -aAN +aaa +aaa +aaa +awd aHN aIU aJI @@ -91381,7 +91342,7 @@ aPY bau aLf aFi -bdA +aFi beI beI bgD @@ -91591,7 +91552,7 @@ cBo alQ alb cBw -alb +jqN aiS aiS aiS @@ -92387,7 +92348,7 @@ aDd apX aEU aFE -JAb +aGA aHn aIi aJi @@ -92901,7 +92862,7 @@ com apX aET lKL -YSB +aET aET aHN aIU @@ -94688,7 +94649,7 @@ aaa aaa apX apX -apX +yap avl fIu dbi @@ -95003,7 +94964,7 @@ bAF bBK bCW bDV -bFg +bFh bGm bHy aaa @@ -95209,7 +95170,7 @@ axw ayu azC axw -Zud +aBT atn aEf aFc @@ -95260,7 +95221,7 @@ bAF bBL bCW bDW -bFh +kmn bGn bHy aaa @@ -96547,9 +96508,9 @@ bDa bEa bFm bGs -bHy -bHy -bHy +ubW +ubW +xIx bHy bHy bHy @@ -97575,9 +97536,9 @@ bHy bHy bHy bGw -bHy -bHy -bHy +nsD +rPW +kfh bHy bHy bHy @@ -97832,7 +97793,7 @@ bwm glf bFr qtA -kwI +khk bIN dAF bCV @@ -98602,7 +98563,7 @@ nev hgD bEf bFu -khk +noM bHE bJV bLh diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 0f9857ad73..9a03ede62b 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -2162,6 +2162,9 @@ /obj/structure/kitchenspike, /turf/open/floor/plasteel/dark, /area/ctf) +"gu" = ( +/turf/closed/indestructible/splashscreen, +/area/start) "gv" = ( /turf/open/floor/plasteel/darkblue/side{ dir = 10 @@ -5699,6 +5702,10 @@ }, /turf/open/floor/plasteel/cafeteria, /area/centcom/holding) +"pW" = ( +/obj/effect/landmark/ai_multicam_room, +/turf/open/ai_visible, +/area/ai_multicam_room) "pX" = ( /obj/item/storage/crayons, /obj/structure/table, @@ -10234,6 +10241,9 @@ dir = 8 }, /area/centcom/evac) +"Di" = ( +/turf/closed/indestructible/riveted, +/area/ai_multicam_room) "Dj" = ( /obj/machinery/vr_sleeper{ dir = 8 @@ -13476,9 +13486,6 @@ }, /turf/open/floor/wood, /area/centcom/holding) -"NE" = ( -/turf/closed/indestructible/splashscreen, -/area/space) "NF" = ( /obj/structure/ladder/unbreakable/binary, /turf/open/indestructible/airblock, @@ -13624,6 +13631,9 @@ "PY" = ( /turf/open/floor/plasteel/whitegreen, /area/centcom/holding) +"Qe" = ( +/turf/open/ai_visible, +/area/ai_multicam_room) "Qk" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/ppflowers, @@ -13946,9 +13956,6 @@ }, /turf/open/floor/plasteel, /area/centcom/evac) -"Wd" = ( -/turf/open/space/basic, -/area/start) "WJ" = ( /obj/machinery/door/airlock/centcom{ name = "Thunderdome Administration"; @@ -14257,21 +14264,21 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -NE +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +gu aa aa aa @@ -14514,21 +14521,21 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX aa aa aa @@ -14771,21 +14778,21 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX aa aa aa @@ -15042,7 +15049,7 @@ fX fX fX fX -Wd +fX aa aa aa @@ -16063,7 +16070,7 @@ fX fX fX fX -fX +fY fX fX fX @@ -16834,7 +16841,7 @@ fX fX fX fX -fY +fX fX fX fX @@ -18112,21 +18119,21 @@ aa aa aa aa -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -18369,21 +18376,21 @@ aa aa aa aa -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -18626,21 +18633,21 @@ aa aa aa aa -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -18883,21 +18890,21 @@ aa aa aa aa -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -19140,21 +19147,21 @@ aa aa aa aa -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -19397,21 +19404,21 @@ aa aa aa aa -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -30581,29 +30588,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di aa aa aa @@ -30838,29 +30845,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -31095,29 +31102,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -31352,29 +31359,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -31609,29 +31616,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -31866,29 +31873,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -32123,29 +32130,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -32380,29 +32387,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -32637,29 +32644,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -32894,29 +32901,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -33151,29 +33158,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -33408,29 +33415,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +pW +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -33665,29 +33672,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -33922,29 +33929,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -34179,29 +34186,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -34436,29 +34443,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -34693,29 +34700,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -34950,29 +34957,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -35207,29 +35214,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -35464,29 +35471,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -35721,29 +35728,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -35978,29 +35985,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -36235,29 +36242,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di aa aa aa diff --git a/_maps/shuttles/aux_base_default.dmm b/_maps/shuttles/aux_base_default.dmm index d35420ebb0..e093d3c864 100644 --- a/_maps/shuttles/aux_base_default.dmm +++ b/_maps/shuttles/aux_base_default.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "b" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -44,10 +44,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/shuttle/auxillary_base) -"y" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "z" = ( /obj/machinery/light{ dir = 8 @@ -82,7 +78,6 @@ /area/shuttle/auxillary_base) "X" = ( /obj/machinery/camera{ - c_tag = "Auxillary Mining Base"; dir = 1 }, /obj/structure/mining_shuttle_beacon, @@ -142,7 +137,7 @@ P k k k -y +x "} (6,1,1) = {" v diff --git a/_maps/shuttles/aux_base_small.dmm b/_maps/shuttles/aux_base_small.dmm new file mode 100644 index 0000000000..b29512d675 --- /dev/null +++ b/_maps/shuttles/aux_base_small.dmm @@ -0,0 +1,149 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"b" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/structure/ore_box, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"c" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"d" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"e" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"f" = ( +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"g" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"h" = ( +/obj/machinery/camera{ + dir = 1 + }, +/obj/structure/mining_shuttle_beacon, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"i" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"j" = ( +/obj/docking_port/mobile/auxillary_base{ + dheight = 4; + dir = 2; + dwidth = 4; + height = 9; + width = 9; + timid = 1 + }, +/obj/machinery/bluespace_beacon, +/obj/machinery/computer/auxillary_base, +/turf/closed/wall, +/area/shuttle/auxillary_base) +"k" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"l" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"m" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"n" = ( +/obj/structure/closet/secure_closet/miner/unlocked, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) + +(1,1,1) = {" +b +e +e +e +e +e +l +"} +(2,1,1) = {" +c +f +f +f +f +f +m +"} +(3,1,1) = {" +c +f +f +i +f +f +m +"} +(4,1,1) = {" +c +f +h +j +f +f +m +"} +(5,1,1) = {" +c +f +f +k +f +f +m +"} +(6,1,1) = {" +c +f +f +f +f +f +m +"} +(7,1,1) = {" +d +g +g +g +g +g +n +"} \ No newline at end of file diff --git a/_maps/shuttles/infiltrator_basic.dmm b/_maps/shuttles/infiltrator_basic.dmm index 5d21fad7f8..0b1a7c5c6a 100644 --- a/_maps/shuttles/infiltrator_basic.dmm +++ b/_maps/shuttles/infiltrator_basic.dmm @@ -411,12 +411,12 @@ /area/shuttle/syndicate/airlock) "bi" = ( /obj/structure/rack, -/obj/item/clothing/suit/space/syndicate/black/red, -/obj/item/clothing/head/helmet/space/syndicate/black/red, /obj/effect/turf_decal/bot_white, /obj/effect/turf_decal/stripes/line{ dir = 10 }, +/obj/item/clothing/suit/space/syndicate, +/obj/item/clothing/head/helmet/space/syndicate, /turf/open/floor/mineral/plastitanium, /area/shuttle/syndicate/airlock) "bj" = ( diff --git a/code/__DEFINES/MC.dm b/code/__DEFINES/MC.dm index cbcf2c1dd9..97ce6ef6fd 100644 --- a/code/__DEFINES/MC.dm +++ b/code/__DEFINES/MC.dm @@ -19,8 +19,8 @@ #define NEW_SS_GLOBAL(varname) if(varname != src){if(istype(varname)){Recover();qdel(varname);}varname = src;} -#define START_PROCESSING(Processor, Datum) if (!Datum.isprocessing) {Datum.isprocessing = TRUE;Processor.processing += Datum} -#define STOP_PROCESSING(Processor, Datum) Datum.isprocessing = FALSE;Processor.processing -= Datum +#define START_PROCESSING(Processor, Datum) if (!(Datum.datum_flags & DF_ISPROCESSING)) {Datum.datum_flags |= DF_ISPROCESSING;Processor.processing += Datum} +#define STOP_PROCESSING(Processor, Datum) Datum.datum_flags &= ~DF_ISPROCESSING;Processor.processing -= Datum //SubSystem flags (Please design any new flags so that the default is off, to make adding flags to subsystems easier) diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 94a247171c..255464d406 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -58,7 +58,9 @@ #define ADMIN_FULLMONTY(user) "[key_name_admin(user)] [ADMIN_FULLMONTY_NONAME(user)]" #define ADMIN_JMP(src) "(JMP)" #define COORD(src) "[src ? "([src.x],[src.y],[src.z])" : "nonexistent location"]" +#define AREACOORD(src) "[src ? "[get_area_name(src, TRUE)] ([src.x], [src.y], [src.z])" : "nonexistent location"]" #define ADMIN_COORDJMP(src) "[src ? "[COORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]" +#define ADMIN_VERBOSEJMP(src) "[src ? "[AREACOORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]" #define ADMIN_INDIVIDUALLOG(user) "(LOGS)" #define ADMIN_PUNISHMENT_LIGHTNING "Lightning bolt" @@ -67,6 +69,7 @@ #define ADMIN_PUNISHMENT_BSA "Bluespace Artillery Device" #define ADMIN_PUNISHMENT_FIREBALL "Fireball" #define ADMIN_PUNISHMENT_ROD "Immovable Rod" +#define ADMIN_PUNISHMENT_SUPPLYPOD "Supply Pod" #define AHELP_ACTIVE 1 #define AHELP_CLOSED 2 diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index c6c35ef08b..f6f903ec8f 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -194,6 +194,37 @@ #define ATMOS_GAS_MONITOR_WASTE_ENGINE "engine-waste_out" #define ATMOS_GAS_MONITOR_WASTE_ATMOS "atmos-waste_out" +//AIRLOCK CONTROLLER TAGS + +//RnD toxins burn chamber +#define INCINERATOR_TOXMIX_IGNITER "toxmix_igniter" +#define INCINERATOR_TOXMIX_VENT "toxmix_vent" +#define INCINERATOR_TOXMIX_DP_VENTPUMP "toxmix_airlock_pump" +#define INCINERATOR_TOXMIX_AIRLOCK_SENSOR "toxmix_airlock_sensor" +#define INCINERATOR_TOXMIX_AIRLOCK_CONTROLLER "toxmix_airlock_controller" +#define INCINERATOR_TOXMIX_AIRLOCK_INTERIOR "toxmix_airlock_interior" +#define INCINERATOR_TOXMIX_AIRLOCK_EXTERIOR "toxmix_airlock_exterior" + +//Atmospherics/maintenance incinerator +#define INCINERATOR_ATMOS_IGNITER "atmos_incinerator_igniter" +#define INCINERATOR_ATMOS_MAINVENT "atmos_incinerator_mainvent" +#define INCINERATOR_ATMOS_AUXVENT "atmos_incinerator_auxvent" +#define INCINERATOR_ATMOS_DP_VENTPUMP "atmos_incinerator_airlock_pump" +#define INCINERATOR_ATMOS_AIRLOCK_SENSOR "atmos_incinerator_airlock_sensor" +#define INCINERATOR_ATMOS_AIRLOCK_CONTROLLER "atmos_incinerator_airlock_controller" +#define INCINERATOR_ATMOS_AIRLOCK_INTERIOR "atmos_incinerator_airlock_interior" +#define INCINERATOR_ATMOS_AIRLOCK_EXTERIOR "atmos_incinerator_airlock_exterior" + +//Syndicate lavaland base incinerator (lavaland_surface_syndicate_base1.dmm) +#define INCINERATOR_SYNDICATELAVA_IGNITER "syndicatelava_igniter" +#define INCINERATOR_SYNDICATELAVA_MAINVENT "syndicatelava_mainvent" +#define INCINERATOR_SYNDICATELAVA_AUXVENT "syndicatelava_auxvent" +#define INCINERATOR_SYNDICATELAVA_DP_VENTPUMP "syndicatelava_airlock_pump" +#define INCINERATOR_SYNDICATELAVA_AIRLOCK_SENSOR "syndicatelava_airlock_sensor" +#define INCINERATOR_SYNDICATELAVA_AIRLOCK_CONTROLLER "syndicatelava_airlock_controller" +#define INCINERATOR_SYNDICATELAVA_AIRLOCK_INTERIOR "syndicatelava_airlock_interior" +#define INCINERATOR_SYNDICATELAVA_AIRLOCK_EXTERIOR "syndicatelava_airlock_exterior" + //MULTIPIPES //IF YOU EVER CHANGE THESE CHANGE SPRITES TO MATCH. #define PIPING_LAYER_MIN 1 diff --git a/code/__DEFINES/construction.dm b/code/__DEFINES/construction.dm index c5c88b18f1..157069f4eb 100644 --- a/code/__DEFINES/construction.dm +++ b/code/__DEFINES/construction.dm @@ -45,11 +45,6 @@ #define GLASS_CORE 4 #define AI_READY_CORE 5 -//emitter construction defines -#define EM_UNSECURED 0 -#define EM_SECURED 1 -#define EM_WELDED 2 - //Construction defines for the pinion airlock #define GEAR_SECURE 1 #define GEAR_LOOSE 2 diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 61249cb60a..f566492ec3 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -9,6 +9,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 // for /datum/var/datum_flags #define DF_USE_TAG (1<<0) #define DF_VAR_EDITED (1<<1) +#define DF_ISPROCESSING (1<<2) //FLAGS BITMASK diff --git a/code/__DEFINES/logging.dm b/code/__DEFINES/logging.dm index 6d7cf12789..197c315f78 100644 --- a/code/__DEFINES/logging.dm +++ b/code/__DEFINES/logging.dm @@ -20,4 +20,7 @@ #define INDIVIDUAL_SAY_LOG "Say log" #define INDIVIDUAL_EMOTE_LOG "Emote log" #define INDIVIDUAL_OOC_LOG "OOC log" -#define INDIVIDUAL_SHOW_ALL_LOG "All logs" \ No newline at end of file +#define INDIVIDUAL_OWNERSHIP_LOG "Ownership log" +#define INDIVIDUAL_SHOW_ALL_LOG "All logs" +#define LOGSRC_CLIENT "Client" +#define LOGSRC_MOB "Mob" diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index a31ebccbad..43c706e58e 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -254,6 +254,8 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define ORBITRON "Orbitron" #define SHARE "Share Tech Mono" +GLOBAL_LIST_INIT(pda_styles, list(MONO, VT, ORBITRON, SHARE)) + //Color Defines #define OOC_COLOR "#002eb8" diff --git a/code/__HELPERS/radiation.dm b/code/__HELPERS/radiation.dm index 8418cc8505..93dcdb4b0e 100644 --- a/code/__HELPERS/radiation.dm +++ b/code/__HELPERS/radiation.dm @@ -42,5 +42,6 @@ last_huge_pulse = world.time log = TRUE if(log) - log_game("Radiation pulse with intensity:[intensity] and range modifier:[range_modifier] in area [get_area(source)] ") + var/turf/_source_T = isturf(source) ? source : get_turf(source) + log_game("Radiation pulse with intensity: [intensity] and range modifier: [range_modifier] in [AREACOORD(_source_T)] ") return TRUE \ No newline at end of file diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 6113e11eef..5ef8dc6d1b 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -35,7 +35,8 @@ GLOBAL_LIST_INIT(bitfields, list( ), "datum_flags" = list( "DF_USE_TAG" = DF_USE_TAG, - "DF_VAR_EDITED" = DF_VAR_EDITED + "DF_VAR_EDITED" = DF_VAR_EDITED, + "DF_ISPROCESSING" = DF_ISPROCESSING, ), "item_flags" = list( "BEING_REMOVED" = BEING_REMOVED, diff --git a/code/_globalvars/logging.dm b/code/_globalvars/logging.dm index 545ffbcbef..e00e4775ac 100644 --- a/code/_globalvars/logging.dm +++ b/code/_globalvars/logging.dm @@ -41,6 +41,4 @@ GLOBAL_PROTECT(OOClog) GLOBAL_LIST_EMPTY(adminlog) GLOBAL_PROTECT(adminlog) -GLOBAL_LIST_EMPTY(individual_log_list) // Logs each mob individual logs, a global so it doesn't get lost on cloning/changing mobs - GLOBAL_LIST_EMPTY(active_turfs_startlist) diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index 9ef689de8b..59598b9d7f 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -26,6 +26,14 @@ return next_click = world.time + 1 + if(multicam_on) + var/turf/T = get_turf(A) + if(T) + for(var/obj/screen/movable/pic_in_pic/ai/P in T.vis_locs) + if(P.ai == src) + P.Click(params) + break + if(check_click_intercept(params,A)) return @@ -38,8 +46,8 @@ if(!can_see(A)) if(isturf(A)) //On unmodified clients clicking the static overlay clicks the turf underneath return //So there's no point messaging admins - message_admins("[key_name_admin(src)] might be running a modified client! (failed can_see on AI click of [A]([ADMIN_COORDJMP(pixel_turf)]))") - var/message = "[key_name(src)] might be running a modified client! (failed can_see on AI click of [A]([COORD(pixel_turf)]))" + message_admins("[ADMIN_LOOKUPFLW(src)] might be running a modified client! (failed can_see on AI click of [A] (Turf Loc: [ADMIN_VERBOSEJMP(pixel_turf)]))") + var/message = "[key_name(src)] might be running a modified client! (failed can_see on AI click of [A] (Turf Loc: [AREACOORD(pixel_turf)]))" log_admin(message) if(REALTIMEOFDAY >= chnotify + 9000) chnotify = REALTIMEOFDAY diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index 3225252520..b558e7c87c 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -134,6 +134,8 @@ #define ui_ai_take_picture "SOUTH:6,WEST+12" #define ui_ai_view_images "SOUTH:6,WEST+13" #define ui_ai_sensor "SOUTH:6,WEST+14" +#define ui_ai_multicam "SOUTH+1:6,WEST+13" +#define ui_ai_add_multicam "SOUTH+1:6,WEST+14" //Pop-up inventory #define ui_shoes "WEST+1:8,SOUTH:5" diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm index 8d4aca5fbf..463051c6b4 100644 --- a/code/_onclick/hud/ai.dm +++ b/code/_onclick/hud/ai.dm @@ -164,6 +164,26 @@ var/mob/living/silicon/S = usr S.toggle_sensors() +/obj/screen/ai/multicam + name = "Multicamera Mode" + icon_state = "multicam" + +/obj/screen/ai/multicam/Click() + if(..()) + return + var/mob/living/silicon/ai/AI = usr + AI.toggle_multicam() + +/obj/screen/ai/add_multicam + name = "New Camera" + icon_state = "new_cam" + +/obj/screen/ai/add_multicam/Click() + if(..()) + return + var/mob/living/silicon/ai/AI = usr + AI.drop_new_multicam() + /datum/hud/ai ui_style_icon = 'icons/mob/screen_ai.dmi' @@ -247,12 +267,20 @@ using.screen_loc = ui_ai_view_images static_inventory += using - //Medical/Security sensors using = new /obj/screen/ai/sensors() using.screen_loc = ui_ai_sensor static_inventory += using +//Multicamera mode + using = new /obj/screen/ai/multicam() + using.screen_loc = ui_ai_multicam + static_inventory += using + +//Add multicamera camera + using = new /obj/screen/ai/add_multicam() + using.screen_loc = ui_ai_add_multicam + static_inventory += using /mob/living/silicon/ai/create_mob_hud() if(client && !hud_used) diff --git a/code/_onclick/hud/movable_screen_objects.dm b/code/_onclick/hud/movable_screen_objects.dm index 4da721012d..f71ced7a9d 100644 --- a/code/_onclick/hud/movable_screen_objects.dm +++ b/code/_onclick/hud/movable_screen_objects.dm @@ -12,6 +12,8 @@ var/snap2grid = FALSE var/moved = FALSE var/locked = FALSE + var/x_off = -16 + var/y_off = -16 //Snap Screen Object //Tied to the grid, snaps to the nearest turf @@ -42,8 +44,8 @@ screen_loc = "[screen_loc_X[1]],[screen_loc_Y[1]]" else //Normalise Pixel Values (So the object drops at the center of the mouse, not 16 pixels off) - var/pix_X = text2num(screen_loc_X[2]) - 16 - var/pix_Y = text2num(screen_loc_Y[2]) - 16 + var/pix_X = text2num(screen_loc_X[2]) + x_off + var/pix_Y = text2num(screen_loc_Y[2]) + y_off screen_loc = "[screen_loc_X[1]]:[pix_X],[screen_loc_Y[1]]:[pix_Y]" moved = screen_loc diff --git a/code/_onclick/hud/picture_in_picture.dm b/code/_onclick/hud/picture_in_picture.dm new file mode 100644 index 0000000000..aea87827a6 --- /dev/null +++ b/code/_onclick/hud/picture_in_picture.dm @@ -0,0 +1,144 @@ +/obj/screen/movable/pic_in_pic + name = "Picture-in-picture" + screen_loc = "CENTER" + plane = FLOOR_PLANE + var/atom/center + var/width = 0 + var/height = 0 + var/list/shown_to = list() + var/list/viewing_turfs = list() + var/obj/screen/component_button/button_x + var/obj/screen/component_button/button_expand + var/obj/screen/component_button/button_shrink + + var/mutable_appearance/standard_background + var/const/max_dimensions = 10 + +/obj/screen/movable/pic_in_pic/Initialize() + . = ..() + make_backgrounds() + +/obj/screen/movable/pic_in_pic/Destroy() + for(var/C in shown_to) + unshow_to(C) + QDEL_NULL(button_x) + QDEL_NULL(button_shrink) + QDEL_NULL(button_expand) + return ..() + +/obj/screen/movable/pic_in_pic/component_click(obj/screen/component_button/component, params) + if(component == button_x) + qdel(src) + else if(component == button_expand) + set_view_size(width+1, height+1) + else if(component == button_shrink) + set_view_size(width-1, height-1) + +/obj/screen/movable/pic_in_pic/proc/make_backgrounds() + standard_background = new /mutable_appearance() + standard_background.icon = 'icons/misc/pic_in_pic.dmi' + standard_background.icon_state = "background" + standard_background.layer = SPACE_LAYER + +/obj/screen/movable/pic_in_pic/proc/add_buttons() + var/static/mutable_appearance/move_tab + if(!move_tab) + move_tab = new /mutable_appearance() + //all these properties are always the same, and since adding something to the overlay + //list makes a copy, there is no reason to make a new one each call + move_tab.icon = 'icons/misc/pic_in_pic.dmi' + move_tab.icon_state = "move" + move_tab.plane = HUD_PLANE + var/matrix/M = matrix() + M.Translate(0, (height + 0.25) * world.icon_size) + move_tab.transform = M + add_overlay(move_tab) + + if(!button_x) + button_x = new /obj/screen/component_button(null, src) + var/mutable_appearance/MA = new /mutable_appearance() + MA.name = "close" + MA.icon = 'icons/misc/pic_in_pic.dmi' + MA.icon_state = "x" + MA.plane = HUD_PLANE + button_x.appearance = MA + M = matrix() + M.Translate((max(4, width) - 0.75) * world.icon_size, (height + 0.25) * world.icon_size) + button_x.transform = M + vis_contents += button_x + + if(!button_expand) + button_expand = new /obj/screen/component_button(null, src) + var/mutable_appearance/MA = new /mutable_appearance() + MA.name = "expand" + MA.icon = 'icons/misc/pic_in_pic.dmi' + MA.icon_state = "expand" + MA.plane = HUD_PLANE + button_expand.appearance = MA + M = matrix() + M.Translate(world.icon_size, (height + 0.25) * world.icon_size) + button_expand.transform = M + vis_contents += button_expand + + if(!button_shrink) + button_shrink = new /obj/screen/component_button(null, src) + var/mutable_appearance/MA = new /mutable_appearance() + MA.name = "shrink" + MA.icon = 'icons/misc/pic_in_pic.dmi' + MA.icon_state = "shrink" + MA.plane = HUD_PLANE + button_shrink.appearance = MA + M = matrix() + M.Translate(2 * world.icon_size, (height + 0.25) * world.icon_size) + button_shrink.transform = M + vis_contents += button_shrink + +/obj/screen/movable/pic_in_pic/proc/add_background() + if((width > 0) && (height > 0)) + var/matrix/M = matrix() + M.Scale(width + 0.5, height + 0.5) + M.Translate((width-1)/2 * world.icon_size, (height-1)/2 * world.icon_size) + standard_background.transform = M + add_overlay(standard_background) + +/obj/screen/movable/pic_in_pic/proc/set_view_size(width, height, do_refresh = TRUE) + width = CLAMP(width, 0, max_dimensions) + height = CLAMP(height, 0, max_dimensions) + src.width = width + src.height = height + + y_off = -height * world.icon_size - 16 + + cut_overlays() + add_background() + add_buttons() + if(do_refresh) + refresh_view() + +/obj/screen/movable/pic_in_pic/proc/set_view_center(atom/target, do_refresh = TRUE) + center = target + if(do_refresh) + refresh_view() + +/obj/screen/movable/pic_in_pic/proc/refresh_view() + vis_contents -= viewing_turfs + if(!width || !height) + return + var/turf/T = get_turf(center) + if(!T) + return + var/turf/lowerleft = locate(max(1, T.x - round(width/2)), max(1, T.y - round(height/2)), T.z) + var/turf/upperright = locate(min(world.maxx, lowerleft.x + width - 1), min(world.maxy, lowerleft.y + height - 1), lowerleft.z) + viewing_turfs = block(lowerleft, upperright) + vis_contents += viewing_turfs + + +/obj/screen/movable/pic_in_pic/proc/show_to(client/C) + if(C) + shown_to[C] = 1 + C.screen += src + +/obj/screen/movable/pic_in_pic/proc/unshow_to(client/C) + if(C) + shown_to -= C + C.screen -= src diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 02ece81b41..d2ac10a83f 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -30,6 +30,9 @@ /obj/screen/orbit() return +/obj/screen/proc/component_click(obj/screen/component_button/component, params) + return + /obj/screen/text icon = null icon_state = null @@ -604,3 +607,15 @@ holder.screen -= src holder = null return ..() + + +/obj/screen/component_button + var/obj/screen/parent + +/obj/screen/component_button/Initialize(mapload, obj/screen/parent) + . = ..() + src.parent = parent + +/obj/screen/component_button/Click(params) + if(parent) + parent.component_click(src, params) diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 3de0ebe439..ebf27324b9 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -288,6 +288,11 @@ /datum/config_entry/flag/shift_time_realtime +/datum/config_entry/keyed_number_list/antag_rep + +/datum/config_entry/number/monkeycap + config_entry_value = 64 + min_val = 0 //Cit changes - Adds config options for crew objectives and miscreants /datum/config_entry/flag/allow_crew_objectives @@ -304,4 +309,4 @@ /datum/config_entry/number/nightshift_finish config_entry_value = 6 -//End of Cit changes \ No newline at end of file +//End of Cit changes diff --git a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm index ad95606bf4..f25244a6b1 100644 --- a/code/controllers/subsystem/blackbox.dm +++ b/code/controllers/subsystem/blackbox.dm @@ -291,4 +291,4 @@ Versioning var/suicide = sanitizeSQL(L.suiciding) var/map = sanitizeSQL(SSmapping.config.map_name) var/datum/DBQuery/query_report_death = SSdbcore.NewQuery("INSERT INTO [format_table_name("death")] (pod, x_coord, y_coord, z_coord, mapname, server_ip, server_port, round_id, tod, job, special, name, byondkey, laname, lakey, bruteloss, fireloss, brainloss, oxyloss, toxloss, cloneloss, staminaloss, last_words, suicide) VALUES ('[sqlpod]', '[x_coord]', '[y_coord]', '[z_coord]', '[map]', INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]', [GLOB.round_id], '[SQLtime()]', '[sqljob]', '[sqlspecial]', '[sqlname]', '[sqlkey]', '[laname]', '[lakey]', [sqlbrute], [sqlfire], [sqlbrain], [sqloxy], [sqltox], [sqlclone], [sqlstamina], '[last_words]', [suicide])") - query_report_death.Execute() + query_report_death.Execute() \ No newline at end of file diff --git a/code/controllers/subsystem/communications.dm b/code/controllers/subsystem/communications.dm index d4838a21c3..5a791e28ef 100644 --- a/code/controllers/subsystem/communications.dm +++ b/code/controllers/subsystem/communications.dm @@ -26,7 +26,7 @@ SUBSYSTEM_DEF(communications) priority_announce(html_decode(user.treat_message(input)), null, 'sound/misc/announce.ogg', "Captain") nonsilicon_message_cooldown = world.time + COMMUNICATION_COOLDOWN log_talk(user,"[key_name(user)] has made a priority announcement: [input]",LOGSAY) - message_admins("[key_name_admin(user)] has made a priority announcement.") + message_admins("[ADMIN_LOOKUPFLW(user)] has made a priority announcement.") /datum/controller/subsystem/communications/proc/send_message(datum/comm_message/sending,print = TRUE,unique = FALSE) for(var/obj/machinery/computer/communications/C in GLOB.machines) diff --git a/code/controllers/subsystem/icon_smooth.dm b/code/controllers/subsystem/icon_smooth.dm index d0ad2ffbc3..1c8d94826d 100644 --- a/code/controllers/subsystem/icon_smooth.dm +++ b/code/controllers/subsystem/icon_smooth.dm @@ -6,16 +6,26 @@ SUBSYSTEM_DEF(icon_smooth) flags = SS_TICKER var/list/smooth_queue = list() + var/list/deferred = list() /datum/controller/subsystem/icon_smooth/fire() - while(smooth_queue.len) - var/atom/A = smooth_queue[smooth_queue.len] - smooth_queue.len-- - smooth_icon(A) + var/list/cached = smooth_queue + while(cached.len) + var/atom/A = cached[cached.len] + cached.len-- + if (A.flags_1 & INITIALIZED_1) + smooth_icon(A) + else + deferred += A if (MC_TICK_CHECK) return - if (!smooth_queue.len) - can_fire = 0 + + if (!cached.len) + if (deferred.len) + smooth_queue = deferred + deferred = cached + else + can_fire = 0 /datum/controller/subsystem/icon_smooth/Initialize() smooth_zlevel(1,TRUE) diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index c19345f328..f72b7d1d6a 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -422,7 +422,7 @@ SUBSYSTEM_DEF(job) else M = H - SSpersistence.antag_rep_change[M.client.ckey] += job.antag_rep + SSpersistence.antag_rep_change[M.client.ckey] += job.GetAntagRep() to_chat(M, "You are the [rank].") if(job) diff --git a/code/controllers/subsystem/machines.dm b/code/controllers/subsystem/machines.dm index eab61d4ef9..6d5d64fe6c 100644 --- a/code/controllers/subsystem/machines.dm +++ b/code/controllers/subsystem/machines.dm @@ -45,7 +45,7 @@ SUBSYSTEM_DEF(machines) else processing -= thing if (!QDELETED(thing)) - thing.isprocessing = FALSE + thing.datum_flags &= ~DF_ISPROCESSING if (MC_TICK_CHECK) return diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 9b6944403a..2d99012881 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -121,7 +121,7 @@ SUBSYSTEM_DEF(mapping) z_list = SSmapping.z_list #define INIT_ANNOUNCE(X) to_chat(world, "[X]"); log_world(X) -/datum/controller/subsystem/mapping/proc/LoadGroup(list/errorList, name, path, files, list/traits, list/default_traits) +/datum/controller/subsystem/mapping/proc/LoadGroup(list/errorList, name, path, files, list/traits, list/default_traits, silent = FALSE) var/start_time = REALTIMEOFDAY if (!islist(files)) // handle single-level maps @@ -157,8 +157,8 @@ SUBSYSTEM_DEF(mapping) var/full_path = "_maps/[path]/[file]" if(!loader.load_map(file(full_path), 0, 0, start_z + files[file], no_changeturf = TRUE)) errorList |= full_path - - INIT_ANNOUNCE("Loaded [name] in [(REALTIMEOFDAY - start_time)/10]s!") + if(!silent) + INIT_ANNOUNCE("Loaded [name] in [(REALTIMEOFDAY - start_time)/10]s!") /datum/controller/subsystem/mapping/proc/loadWorld() //if any of these fail, something has gone horribly, HORRIBLY, wrong @@ -187,9 +187,6 @@ SUBSYSTEM_DEF(mapping) LoadGroup(FailedZs, "Lavaland", "map_files/Mining", "Lavaland.dmm", default_traits = ZTRAITS_LAVALAND) else if (!isnull(config.minetype)) INIT_ANNOUNCE("WARNING: An unknown minetype '[config.minetype]' was set! This is being ignored! Update the maploader code!") - - // load Reebe - LoadGroup(FailedZs, "Reebe", "map_files/generic", "City_of_Cogs.dmm", default_traits = ZTRAITS_REEBE) #endif if(LAZYLEN(FailedZs)) //but seriously, unless the server's filesystem is messed up this will never happen @@ -367,14 +364,14 @@ GLOBAL_LIST_EMPTY(the_station_areas) away_level = template.load_new_z() else return - + message_admins("Admin [key_name_admin(usr)] has loaded [away_name] away mission.") log_admin("Admin [key_name(usr)] has loaded [away_name] away mission.") if(!away_level) message_admins("Loading [away_name] failed!") return - - + + if(GLOB.the_gateway) //Link any found away gate with station gate var/obj/machinery/gateway/centeraway/new_gate diff --git a/code/controllers/subsystem/mobs.dm b/code/controllers/subsystem/mobs.dm index 066c621572..428819f897 100644 --- a/code/controllers/subsystem/mobs.dm +++ b/code/controllers/subsystem/mobs.dm @@ -7,7 +7,6 @@ SUBSYSTEM_DEF(mobs) var/list/currentrun = list() var/static/list/clients_by_zlevel[][] var/static/list/cubemonkeys = list() - var/cubemonkeycap = 64 /datum/controller/subsystem/mobs/stat_entry() ..("P:[GLOB.mob_living_list.len]") diff --git a/code/controllers/subsystem/processing/processing.dm b/code/controllers/subsystem/processing/processing.dm index f6d45ebff2..ef2a0f72e6 100644 --- a/code/controllers/subsystem/processing/processing.dm +++ b/code/controllers/subsystem/processing/processing.dm @@ -27,7 +27,6 @@ SUBSYSTEM_DEF(processing) if (MC_TICK_CHECK) return -/datum/var/isprocessing = FALSE /datum/proc/process() set waitfor = 0 STOP_PROCESSING(SSobj, src) diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index 3ffb669084..fe57bca354 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -277,7 +277,7 @@ SUBSYSTEM_DEF(shuttle) if(call_reason) SSblackbox.record_feedback("text", "shuttle_reason", 1, "[call_reason]") log_game("Shuttle call reason: [call_reason]") - message_admins("[key_name_admin(user)] has called the shuttle. (TRIGGER CENTCOM RECALL)") + message_admins("[ADMIN_LOOKUPFLW(user)] has called the shuttle. (TRIGGER CENTCOM RECALL)") /datum/controller/subsystem/shuttle/proc/centcom_recall(old_timer, admiral_message) if(emergency.mode != SHUTTLE_CALL || emergency.timer != old_timer) @@ -310,9 +310,8 @@ SUBSYSTEM_DEF(shuttle) if(canRecall()) emergency.cancel(get_area(user)) log_game("[key_name(user)] has recalled the shuttle.") - message_admins("[key_name_admin(user)] has recalled the shuttle.") - var/area/A = get_area(user) - deadchat_broadcast("[user.real_name] has recalled the shuttle at [A.name].", user) + message_admins("[ADMIN_LOOKUPFLW(user)] has recalled the shuttle.") + deadchat_broadcast("[user.real_name] has recalled the shuttle from [get_area_name(user, TRUE)].", user) return 1 /datum/controller/subsystem/shuttle/proc/canRecall() diff --git a/code/datums/action.dm b/code/datums/action.dm index f9575a56ef..593e81ff01 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -564,19 +564,6 @@ /datum/action/innate/proc/Deactivate() return -//Preset for action that call specific procs (consider innate). -/datum/action/generic - check_flags = 0 - var/procname - -/datum/action/generic/Trigger() - if(!..()) - return 0 - if(target && procname) - call(target, procname)(usr) - return 1 - - //Preset for an action with a cooldown /datum/action/cooldown diff --git a/code/datums/brain_damage/split_personality.dm b/code/datums/brain_damage/split_personality.dm index f33a69a3af..a1f6ff15fb 100644 --- a/code/datums/brain_damage/split_personality.dm +++ b/code/datums/brain_damage/split_personality.dm @@ -28,7 +28,7 @@ var/mob/dead/observer/C = pick(candidates) stranger_backseat.key = C.key log_game("[key_name(stranger_backseat)] became [key_name(owner)]'s split personality.") - message_admins("[key_name_admin(stranger_backseat)] became [key_name_admin(owner)]'s split personality.") + message_admins("[ADMIN_LOOKUPFLW(stranger_backseat)] became [ADMIN_LOOKUPFLW(owner)]'s split personality.") else qdel(src) diff --git a/code/datums/components/chasm.dm b/code/datums/components/chasm.dm index 88360194b3..88a92ce8ec 100644 --- a/code/datums/components/chasm.dm +++ b/code/datums/components/chasm.dm @@ -11,13 +11,16 @@ /obj/structure/lattice, /obj/structure/stone_tile, /obj/item/projectile, + /obj/effect/projectile, /obj/effect/portal, /obj/effect/abstract, /obj/effect/hotspot, /obj/effect/landmark, /obj/effect/temp_visual, /obj/effect/light_emitter/tendril, - /obj/effect/collapse)) + /obj/effect/collapse, + /obj/effect/particle_effect/ion_trails + )) /datum/component/chasm/Initialize(turf/target) RegisterSignal(list(COMSIG_MOVABLE_CROSSED, COMSIG_ATOM_ENTERED), .proc/Entered) diff --git a/code/datums/components/riding.dm b/code/datums/components/riding.dm index 4a720b6550..2ff322fd72 100644 --- a/code/datums/components/riding.dm +++ b/code/datums/components/riding.dm @@ -1,5 +1,5 @@ /datum/component/riding - var/next_vehicle_move = 0 //used for move delays + var/last_vehicle_move = 0 //used for move delays var/vehicle_move_delay = 2 //tick delay between movements, lower = faster, higher = slower var/keytype @@ -146,9 +146,9 @@ Unbuckle(user) return - if(world.time < next_vehicle_move) + if(world.time < last_vehicle_move + vehicle_move_delay) return - next_vehicle_move = world.time + vehicle_move_delay + last_vehicle_move = world.time if(keycheck(user)) var/turf/next = get_step(AM, direction) diff --git a/code/datums/components/stationloving.dm b/code/datums/components/stationloving.dm index ecfb0ca902..136431b5ee 100644 --- a/code/datums/components/stationloving.dm +++ b/code/datums/components/stationloving.dm @@ -39,9 +39,9 @@ var/turf/currentturf = get_turf(src) to_chat(get(parent, /mob), "You can't help but feel that you just lost something back there...") var/turf/targetturf = relocate() - log_game("[parent] has been moved out of bounds in [COORD(currentturf)]. Moving it to [COORD(targetturf)].") + log_game("[parent] has been moved out of bounds in [AREACOORD(currentturf)]. Moving it to [AREACOORD(targetturf)].") if(inform_admins) - message_admins("[parent] has been moved out of bounds in [ADMIN_COORDJMP(currentturf)]. Moving it to [ADMIN_COORDJMP(targetturf)].") + message_admins("[parent] has been moved out of bounds in [ADMIN_VERBOSEJMP(currentturf)]. Moving it to [ADMIN_VERBOSEJMP(targetturf)].") /datum/component/stationloving/proc/check_soul_imbue() return disallow_soul_imbue @@ -67,13 +67,13 @@ var/turf/T = get_turf(parent) if(inform_admins && force) - message_admins("[parent] has been !!force deleted!! in [ADMIN_COORDJMP(T)].") - log_game("[parent] has been !!force deleted!! in [COORD(T)].") + message_admins("[parent] has been !!force deleted!! in [ADMIN_VERBOSEJMP(T)].") + log_game("[parent] has been !!force deleted!! in [AREACOORD(T)].") if(!force) var/turf/targetturf = relocate() - log_game("[parent] has been destroyed in [COORD(T)]. Moving it to [COORD(targetturf)].") + log_game("[parent] has been destroyed in [AREACOORD(T)]. Moving it to [AREACOORD(targetturf)].") if(inform_admins) - message_admins("[parent] has been destroyed in [ADMIN_COORDJMP(T)]. Moving it to [ADMIN_COORDJMP(targetturf)].") + message_admins("[parent] has been destroyed in [ADMIN_VERBOSEJMP(T)]. Moving it to [ADMIN_VERBOSEJMP(targetturf)].") return TRUE return FALSE diff --git a/code/datums/components/storage/concrete/bag_of_holding.dm b/code/datums/components/storage/concrete/bag_of_holding.dm index 6b624afadb..c14b1f5270 100644 --- a/code/datums/components/storage/concrete/bag_of_holding.dm +++ b/code/datums/components/storage/concrete/bag_of_holding.dm @@ -18,8 +18,8 @@ if(istype(T, /turf/open/space/transit)) continue T.TerraformTurf(/turf/open/chasm/magic, /turf/open/chasm/magic) - message_admins("[ADMIN_LOOKUPFLW(user)] detonated a bag of holding at [get_area_name(loccheck, TRUE)] [ADMIN_COORDJMP(loccheck)].") - log_game("[key_name(user)] detonated a bag of holding at [get_area_name(loccheck, TRUE)] [COORD(loccheck)].") + message_admins("[ADMIN_LOOKUPFLW(user)] detonated a bag of holding at [ADMIN_VERBOSEJMP(loccheck)].") + log_game("[key_name(user)] detonated a bag of holding at [AREACOORD(loccheck)].") qdel(A) return . = ..() diff --git a/code/datums/components/wet_floor.dm b/code/datums/components/wet_floor.dm index 0baddd87eb..49c628385b 100644 --- a/code/datums/components/wet_floor.dm +++ b/code/datums/components/wet_floor.dm @@ -175,7 +175,7 @@ if(!LAZYLEN(time_left_list)) if(on_init) var/turf/T = parent - stack_trace("Warning: Wet floor component gc'd right initializatoin! What a waste of time and CPU! Type = [T? T.type : "ERROR - NO PARENT"], Coords = [istype(T)? COORD(T) : "ERROR - INVALID PARENT"].") + stack_trace("Warning: Wet floor component gc'd right after initialization! What a waste of time and CPU! Type = [T? T.type : "ERROR - NO PARENT"], Location = [istype(T)? AREACOORD(T) : "ERROR - INVALID PARENT"].") qdel(src) return TRUE return FALSE diff --git a/code/datums/diseases/advance/symptoms/fire.dm b/code/datums/diseases/advance/symptoms/fire.dm index 781cd6de4d..f85024a7a9 100644 --- a/code/datums/diseases/advance/symptoms/fire.dm +++ b/code/datums/diseases/advance/symptoms/fire.dm @@ -125,7 +125,7 @@ Bonus symptom_delay_max = 140 if(A.properties["stage_rate"] >= 8) //serious boom when wet explosion_power = 2 - if(A.properties["transmission"] >= 8) //extra chemicals + if(A.properties["transmittable"] >= 8) //extra chemicals chems = TRUE /datum/symptom/alkali/Activate(datum/disease/advance/A) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 02e0546201..9f274c0aa3 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -60,7 +60,7 @@ /datum/symptom/heal/starlight/Start(datum/disease/advance/A) if(!..()) return - if(A.properties["transmission"] >= 6) + if(A.properties["transmittable"] >= 6) nearspace_penalty = 1 if(A.properties["stage_rate"] >= 6) power = 2 @@ -358,7 +358,7 @@ return if(A.properties["stage_rate"] >= 7) power = 2 - if(A.properties["trasmission"] >= 6) + if(A.properties["transmittable"] >= 6) temp_rate = 4 /datum/symptom/heal/plasma/CanHeal(datum/disease/advance/A) @@ -425,7 +425,7 @@ return if(A.properties["resistance"] >= 7) power = 2 - if(A.properties["trasmission"] >= 6) + if(A.properties["transmittable"] >= 6) cellular_damage = TRUE /datum/symptom/heal/radiation/CanHeal(datum/disease/advance/A) diff --git a/code/datums/diseases/advance/symptoms/shivering.dm b/code/datums/diseases/advance/symptoms/shivering.dm index c67bf7798a..e4bb5e1b3e 100644 --- a/code/datums/diseases/advance/symptoms/shivering.dm +++ b/code/datums/diseases/advance/symptoms/shivering.dm @@ -33,10 +33,10 @@ Bonus /datum/symptom/fever/Start(datum/disease/advance/A) if(!..()) return - if(A.properties["stage_speed"] >= 5) //dangerous cold + if(A.properties["stage_rate"] >= 5) //dangerous cold power = 1.5 unsafe = TRUE - if(A.properties["stage_speed"] >= 10) + if(A.properties["stage_rate"] >= 10) power = 2.5 /datum/symptom/shivering/Activate(datum/disease/advance/A) diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index 52b63ccd5f..8008c185a5 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -55,7 +55,7 @@ if(affected_mob.notransform) return affected_mob.notransform = 1 - for(var/obj/item/W in affected_mob.get_equipped_items()) + for(var/obj/item/W in affected_mob.get_equipped_items(TRUE)) affected_mob.dropItemToGround(W) for(var/obj/item/I in affected_mob.held_items) affected_mob.dropItemToGround(I) diff --git a/code/datums/explosion.dm b/code/datums/explosion.dm index 7e9e9c870f..78314d4fd3 100644 --- a/code/datums/explosion.dm +++ b/code/datums/explosion.dm @@ -84,16 +84,15 @@ GLOBAL_LIST_EMPTY(explosions) var/max_range = max(devastation_range, heavy_impact_range, light_impact_range, flame_range) - var/area/epi_area = get_area(epicenter) if(adminlog) - message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area: [epi_area] [ADMIN_COORDJMP(epicenter)]") - log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z])") + message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in [ADMIN_VERBOSEJMP(epicenter)]") + log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in [AREACOORD(epicenter)]") var/x0 = epicenter.x var/y0 = epicenter.y var/z0 = epicenter.z - - SSblackbox.record_feedback("associative", "explosion", 1, list("dev" = devastation_range, "heavy" = heavy_impact_range, "light" = light_impact_range, "flash" = flash_range, "flame" = flame_range, "orig_dev" = orig_dev_range, "orig_heavy" = orig_heavy_range, "orig_light" = orig_light_range, "x" = x0, "y" = y0, "z" = z0, "area" = epi_area.type)) + var/area/areatype = get_area(epicenter) + SSblackbox.record_feedback("associative", "explosion", 1, list("dev" = devastation_range, "heavy" = heavy_impact_range, "light" = light_impact_range, "flash" = flash_range, "flame" = flame_range, "orig_dev" = orig_dev_range, "orig_heavy" = orig_heavy_range, "orig_light" = orig_light_range, "x" = x0, "y" = y0, "z" = z0, "area" = areatype.type)) // Play sounds; we want sounds to be different depending on distance so we will manually do it ourselves. // Stereo users will also hear the direction of the explosion! diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index ce5f5df1d9..e5d43fd02b 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -112,13 +112,13 @@ if(force_teleport) teleatom.forceMove(destturf) if(ismegafauna(teleatom)) - message_admins("[teleatom] [ADMIN_FLW(teleatom)] has teleported from [ADMIN_COORDJMP(curturf)] to [ADMIN_COORDJMP(destturf)].") + message_admins("[teleatom] [ADMIN_FLW(teleatom)] has teleported from [ADMIN_VERBOSEJMP(curturf)] to [ADMIN_VERBOSEJMP(destturf)].") playSpecials(destturf,effectout,soundout) else if(teleatom.Move(destturf)) playSpecials(destturf,effectout,soundout) if(ismegafauna(teleatom)) - message_admins("[teleatom] [ADMIN_FLW(teleatom)] has teleported from [ADMIN_COORDJMP(curturf)] to [ADMIN_COORDJMP(destturf)].") + message_admins("[teleatom] [ADMIN_FLW(teleatom)] has teleported from [ADMIN_VERBOSEJMP(curturf)] to [ADMIN_VERBOSEJMP(destturf)].") if(ismob(teleatom)) var/mob/M = teleatom M.cancel_camera() diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm index d19e8be2e1..ef4edbb6cf 100644 --- a/code/datums/holocall.dm +++ b/code/datums/holocall.dm @@ -60,17 +60,19 @@ user.remote_control = null if(!QDELETED(eye)) - if(user_good && user.client) - for(var/datum/camerachunk/chunk in eye.visibleCameraChunks) - chunk.remove(eye) - qdel(eye) - eye = null + eye.RemoveImages() + QDEL_NULL(eye) + + if(connected_holopad && !QDELETED(hologram)) + hologram = null + connected_holopad.clear_holo(user) user = null - if(hologram) + //Hologram survived holopad destro + if(!QDELETED(hologram)) hologram.HC = null - hologram = null + QDEL_NULL(hologram) for(var/I in dialed_holopads) var/obj/machinery/holopad/H = I @@ -93,9 +95,10 @@ /datum/holocall/proc/Disconnect(obj/machinery/holopad/H) testing("Holocall disconnect") if(H == connected_holopad) - calling_holopad.say("[usr] disconnected.") + var/area/A = get_area(connected_holopad) + calling_holopad.say("[A] holopad disconnected.") else if(H == calling_holopad && connected_holopad) - connected_holopad.say("[usr] disconnected.") + connected_holopad.say("[user] disconnected.") ConnectionFailure(H, TRUE) @@ -157,6 +160,7 @@ eye.setLoc(H.loc) hangup = new(eye, src) + hangup.Grant(user) //Checks the validity of a holocall and qdels itself if it's not. Returns TRUE if valid, FALSE otherwise /datum/holocall/proc/Check() @@ -205,7 +209,7 @@ /datum/holorecord/proc/set_caller_image(mob/user) var/olddir = user.dir user.setDir(SOUTH) - caller_image = getFlatIcon(user) + caller_image = image(user) user.setDir(olddir) /obj/item/disk/holodisk @@ -284,7 +288,7 @@ else var/datum/preset_holoimage/H = new preset_image_type record.caller_image = H.build_image() - + //These build caller image from outfit and some additional data, for use by mappers for ruin holorecords /datum/preset_holoimage var/nonhuman_mobtype //Fill this if you just want something nonhuman @@ -303,7 +307,7 @@ mannequin.equipOutfit(outfit_type,TRUE) mannequin.setDir(SOUTH) COMPILE_OVERLAYS(mannequin) - . = getFlatIcon(mannequin) + . = image(mannequin) unset_busy_human_dummy("HOLODISK_PRESET") /obj/item/disk/holodisk/example @@ -347,4 +351,3 @@ /datum/preset_holoimage/clown outfit_type = /datum/outfit/job/clown - diff --git a/code/datums/ruins/lavaland.dm b/code/datums/ruins/lavaland.dm index 8817a1ff96..af299aaee9 100644 --- a/code/datums/ruins/lavaland.dm +++ b/code/datums/ruins/lavaland.dm @@ -115,6 +115,14 @@ // Generates nothing but atmos runtimes and salt cost = 0 +/datum/map_template/ruin/lavaland/ratvar + name = "Dead God" + id = "ratvar" + description = "Ratvars final resting place." + suffix = "lavaland_surface_dead_ratvar.dmm" + cost = 0 + allow_duplicates = FALSE + /datum/map_template/ruin/lavaland/hierophant name = "Hierophant's Arena" id = "hierophant" diff --git a/code/datums/traits/_quirk.dm b/code/datums/traits/_quirk.dm index d85f79f84a..963afacec3 100644 --- a/code/datums/traits/_quirk.dm +++ b/code/datums/traits/_quirk.dm @@ -55,6 +55,9 @@ /datum/quirk/proc/post_add() //for text, disclaimers etc. given after you spawn in with the trait /datum/quirk/proc/on_transfer() //code called when the trait is transferred to a new mob +/datum/quirk/proc/clone_data() //return additional data that should be remembered by cloning +/datum/quirk/proc/on_clone(data) //create the quirk from clone data + /datum/quirk/process() if(QDELETED(quirk_holder)) quirk_holder = null diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index b6dd926773..68e259441f 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -85,7 +85,11 @@ quirk_holder.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "family_heirloom") quirk_holder.SendSignal(COMSIG_ADD_MOOD_EVENT, "family_heirloom_missing", /datum/mood_event/family_heirloom_missing) +/datum/quirk/family_heirloom/clone_data() + return heirloom +/datum/quirk/family_heirloom/on_clone(data) + heirloom = data /datum/quirk/heavy_sleeper name = "Heavy Sleeper" diff --git a/code/datums/wires/syndicatebomb.dm b/code/datums/wires/syndicatebomb.dm index 043110f5d3..92cc1770b3 100644 --- a/code/datums/wires/syndicatebomb.dm +++ b/code/datums/wires/syndicatebomb.dm @@ -88,5 +88,5 @@ if(istype(B, /obj/machinery/syndicatebomb/training)) return var/turf/T = get_turf(B) - log_game("\A [B] was detonated via boom wire at [COORD(T)].") - message_admins("A [B.name] was detonated via boom wire at [ADMIN_COORDJMP(T)].") + log_game("\A [B] was detonated via boom wire at [AREACOORD(T)].") + message_admins("A [B.name] was detonated via boom wire at [ADMIN_VERBOSEJMP(T)].") diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 122efe5772..b679956c3f 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -425,23 +425,6 @@ /atom/proc/update_remote_sight(mob/living/user) return -/atom/proc/add_vomit_floor(mob/living/carbon/M, toxvomit = 0) - if(isturf(src)) - var/obj/effect/decal/cleanable/vomit/V = new /obj/effect/decal/cleanable/vomit(src, M.get_static_viruses()) - // Make toxins vomit look different - if(toxvomit) - V.icon_state = "vomittox_[pick(1,4)]" - if(M.reagents) - clear_reagents_to_vomit_pool(M,V) - -/atom/proc/clear_reagents_to_vomit_pool(mob/living/carbon/M, obj/effect/decal/cleanable/vomit/V) - M.reagents.trans_to(V, M.reagents.total_volume / 10) - for(var/datum/reagent/R in M.reagents.reagent_list) //clears the stomach of anything that might be digested as food - if(istype(R, /datum/reagent/consumable)) - var/datum/reagent/consumable/nutri_check = R - if(nutri_check.nutriment_factor >0) - M.reagents.remove_reagent(R.id,R.volume) - //Hook for running code when a dir change occurs /atom/proc/setDir(newdir) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 7f817f7787..22a7940bbf 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -161,41 +161,45 @@ else //Diagonal move, split it into cardinal moves moving_diagonally = FIRST_DIAG_STEP var/first_step_dir + // The `&& moving_diagonally` checks are so that a forceMove taking + // place due to a Crossed, Collided, etc. call will interrupt + // the second half of the diagonal movement, or the second attempt + // at a first half if step() fails because we hit something. if (direct & NORTH) if (direct & EAST) - if (step(src, NORTH)) + if (step(src, NORTH) && moving_diagonally) first_step_dir = NORTH moving_diagonally = SECOND_DIAG_STEP . = step(src, EAST) - else if (step(src, EAST)) + else if (moving_diagonally && step(src, EAST)) first_step_dir = EAST moving_diagonally = SECOND_DIAG_STEP . = step(src, NORTH) else if (direct & WEST) - if (step(src, NORTH)) + if (step(src, NORTH) && moving_diagonally) first_step_dir = NORTH moving_diagonally = SECOND_DIAG_STEP . = step(src, WEST) - else if (step(src, WEST)) + else if (moving_diagonally && step(src, WEST)) first_step_dir = WEST moving_diagonally = SECOND_DIAG_STEP . = step(src, NORTH) else if (direct & SOUTH) if (direct & EAST) - if (step(src, SOUTH)) + if (step(src, SOUTH) && moving_diagonally) first_step_dir = SOUTH moving_diagonally = SECOND_DIAG_STEP . = step(src, EAST) - else if (step(src, EAST)) + else if (moving_diagonally && step(src, EAST)) first_step_dir = EAST moving_diagonally = SECOND_DIAG_STEP . = step(src, SOUTH) else if (direct & WEST) - if (step(src, SOUTH)) + if (step(src, SOUTH) && moving_diagonally) first_step_dir = SOUTH moving_diagonally = SECOND_DIAG_STEP . = step(src, WEST) - else if (step(src, WEST)) + else if (moving_diagonally && step(src, WEST)) first_step_dir = WEST moving_diagonally = SECOND_DIAG_STEP . = step(src, SOUTH) @@ -310,8 +314,8 @@ var/area/old_area = get_area(oldloc) var/area/destarea = get_area(destination) - loc = destination + moving_diagonally = 0 if(!same_loc) if(oldloc) @@ -558,7 +562,7 @@ if(visual_effect_icon) I = image('icons/effects/effects.dmi', A, visual_effect_icon, A.layer + 0.1) else if(used_item) - I = image(used_item.icon, A, used_item.icon_state, A.layer + 0.1) + I = image(icon = used_item, loc = A, layer = A.layer + 0.1) // Scale the icon. I.transform *= 0.75 diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 93d77209e0..1ebfe78c5d 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -11,7 +11,7 @@ GLOBAL_VAR(changeling_team_objective_type) //If this is not null, we hand our th antag_flag = ROLE_CHANGELING false_report_weight = 10 restricted_jobs = list("AI", "Cyborg") - protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain") + protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director") //citadel change - adds HoP, CE, CMO, and RD to ling role blacklist required_players = 15 required_enemies = 1 recommended_enemies = 4 diff --git a/code/game/gamemodes/clock_cult/clock_cult.dm b/code/game/gamemodes/clock_cult/clock_cult.dm index 355dd869b1..a0cfd79770 100644 --- a/code/game/gamemodes/clock_cult/clock_cult.dm +++ b/code/game/gamemodes/clock_cult/clock_cult.dm @@ -143,6 +143,12 @@ Credit where due: var/datum/team/clockcult/main_clockcult /datum/game_mode/clockwork_cult/pre_setup() + var/list/errorList = list() + SSmapping.LoadGroup(errorList, "Reebe", "map_files/generic", "City_of_Cogs.dmm", default_traits = ZTRAITS_REEBE, silent = TRUE) + if(errorList.len) // reebe failed to load + message_admins("Rebee failed to load!") + log_game("Rebee failed to load!") + return FALSE if(CONFIG_GET(flag/protect_roles_from_antagonist)) restricted_jobs += protected_jobs if(CONFIG_GET(flag/protect_assistant_from_antagonist)) diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index 80ce90722b..95d1aaaa1d 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -11,7 +11,7 @@ antag_flag = ROLE_TRAITOR false_report_weight = 20 //Reports of traitors are pretty common. restricted_jobs = list("Cyborg")//They are part of the AI if he is traitor so are they, they use to get double chances - protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain") + protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director") //citadel change - adds HoP, CE, CMO, and RD to ling role blacklist required_players = 0 required_enemies = 1 recommended_enemies = 4 diff --git a/code/game/machinery/Beacon.dm b/code/game/machinery/Beacon.dm index 61e862452f..3d0931d534 100644 --- a/code/game/machinery/Beacon.dm +++ b/code/game/machinery/Beacon.dm @@ -6,7 +6,6 @@ desc = "A device that draws power from bluespace and creates a permanent tracking beacon." level = 1 // underfloor layer = LOW_OBJ_LAYER - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 0 var/obj/item/beacon/Beacon diff --git a/code/game/machinery/PDApainter.dm b/code/game/machinery/PDApainter.dm index e38775b749..d5cf016816 100644 --- a/code/game/machinery/PDApainter.dm +++ b/code/game/machinery/PDApainter.dm @@ -4,10 +4,9 @@ icon = 'icons/obj/pda.dmi' icon_state = "pdapainter" density = TRUE - anchored = TRUE + max_integrity = 200 var/obj/item/pda/storedpda = null var/list/colorlist = list() - max_integrity = 200 /obj/machinery/pdapainter/update_icon() diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 3b0a841a0d..83e0f8e0ba 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -3,7 +3,6 @@ icon = 'icons/obj/machines/sleeper.dmi' icon_state = "console" density = FALSE - anchored = TRUE /obj/machinery/sleeper name = "sleeper" @@ -11,7 +10,6 @@ icon = 'icons/obj/machines/sleeper.dmi' icon_state = "sleeper" density = FALSE - anchored = TRUE state_open = TRUE circuit = /obj/item/circuitboard/machine/sleeper var/efficiency = 1 diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index 3d1d20dcae..7f661b4556 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -92,6 +92,7 @@ Class Procs: pressure_resistance = 15 max_integrity = 200 + anchored = TRUE interaction_flags_atom = INTERACT_ATOM_ATTACK_HAND | INTERACT_ATOM_UI_INTERACT var/stat = 0 diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index a09db0a3cc..cac29404d2 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -5,7 +5,6 @@ icon_state = "ai-slipper0" layer = PROJECTILE_HIT_THRESHHOLD_LAYER plane = FLOOR_PLANE - anchored = TRUE max_integrity = 200 armor = list("melee" = 50, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30) diff --git a/code/game/machinery/airlock_control.dm b/code/game/machinery/airlock_control.dm index f02b765573..14dc7d05c2 100644 --- a/code/game/machinery/airlock_control.dm +++ b/code/game/machinery/airlock_control.dm @@ -1,154 +1,164 @@ -#define AIRLOCK_CONTROL_RANGE 5 - -// This code allows for airlocks to be controlled externally by setting an id_tag and comm frequency (disables ID access) -/obj/machinery/door/airlock - var/id_tag - var/frequency - var/datum/radio_frequency/radio_connection - - -/obj/machinery/door/airlock/receive_signal(datum/signal/signal) - if(!signal) - return - - if(id_tag != signal.data["tag"] || !signal.data["command"]) - return - - switch(signal.data["command"]) - if("open") - open(1) - - if("close") - close(1) - - if("unlock") - locked = FALSE - update_icon() - - if("lock") - locked = TRUE - update_icon() - - if("secure_open") - locked = FALSE - update_icon() - - sleep(2) - open(1) - - locked = TRUE - update_icon() - - if("secure_close") - locked = FALSE - close(1) - - locked = TRUE - sleep(2) - update_icon() - - send_status() - - -/obj/machinery/door/airlock/proc/send_status() - if(radio_connection) - var/datum/signal/signal = new(list( - "tag" = id_tag, - "timestamp" = world.time, - "door_status" = density ? "closed" : "open", - "lock_status" = locked ? "locked" : "unlocked" - )) - radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) - - -/obj/machinery/door/airlock/open(surpress_send) - . = ..() - if(!surpress_send) - send_status() - - -/obj/machinery/door/airlock/close(surpress_send) - . = ..() - if(!surpress_send) - send_status() - - -/obj/machinery/door/airlock/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - if(new_frequency) - frequency = new_frequency - radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK) - -/obj/machinery/door/airlock/Destroy() - if(frequency) - SSradio.remove_object(src,frequency) - return ..() - -/obj/machinery/airlock_sensor - icon = 'icons/obj/airlock_machines.dmi' - icon_state = "airlock_sensor_off" - name = "airlock sensor" - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - - anchored = TRUE - power_channel = ENVIRON - - var/id_tag - var/master_tag - var/frequency = FREQ_AIRLOCK_CONTROL - - var/datum/radio_frequency/radio_connection - - var/on = TRUE - var/alert = FALSE - - -/obj/machinery/airlock_sensor/update_icon() - if(on) - if(alert) - icon_state = "airlock_sensor_alert" - else - icon_state = "airlock_sensor_standby" - else - icon_state = "airlock_sensor_off" - -/obj/machinery/airlock_sensor/attack_hand(mob/user) - . = ..() - if(.) - return - var/datum/signal/signal = new(list( - "tag" = master_tag, - "command" = "cycle" - )) - - radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) - flick("airlock_sensor_cycle", src) - -/obj/machinery/airlock_sensor/process() - if(on) - var/datum/gas_mixture/air_sample = return_air() - var/pressure = round(air_sample.return_pressure(),0.1) - alert = (pressure < ONE_ATMOSPHERE*0.8) - - var/datum/signal/signal = new(list( - "tag" = id_tag, - "timestamp" = world.time, - "pressure" = num2text(pressure) - )) - - radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) - - update_icon() - -/obj/machinery/airlock_sensor/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - frequency = new_frequency - radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK) - -/obj/machinery/airlock_sensor/Initialize() - . = ..() - set_frequency(frequency) - -/obj/machinery/airlock_sensor/Destroy() - SSradio.remove_object(src,frequency) +#define AIRLOCK_CONTROL_RANGE 5 + +// This code allows for airlocks to be controlled externally by setting an id_tag and comm frequency (disables ID access) +/obj/machinery/door/airlock + var/id_tag + var/frequency + var/datum/radio_frequency/radio_connection + + +/obj/machinery/door/airlock/receive_signal(datum/signal/signal) + if(!signal) + return + + if(id_tag != signal.data["tag"] || !signal.data["command"]) + return + + switch(signal.data["command"]) + if("open") + open(1) + + if("close") + close(1) + + if("unlock") + locked = FALSE + update_icon() + + if("lock") + locked = TRUE + update_icon() + + if("secure_open") + locked = FALSE + update_icon() + + sleep(2) + open(1) + + locked = TRUE + update_icon() + + if("secure_close") + locked = FALSE + close(1) + + locked = TRUE + sleep(2) + update_icon() + + send_status() + + +/obj/machinery/door/airlock/proc/send_status() + if(radio_connection) + var/datum/signal/signal = new(list( + "tag" = id_tag, + "timestamp" = world.time, + "door_status" = density ? "closed" : "open", + "lock_status" = locked ? "locked" : "unlocked" + )) + radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) + + +/obj/machinery/door/airlock/open(surpress_send) + . = ..() + if(!surpress_send) + send_status() + + +/obj/machinery/door/airlock/close(surpress_send) + . = ..() + if(!surpress_send) + send_status() + + +/obj/machinery/door/airlock/proc/set_frequency(new_frequency) + SSradio.remove_object(src, frequency) + if(new_frequency) + frequency = new_frequency + radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK) + +/obj/machinery/door/airlock/Destroy() + if(frequency) + SSradio.remove_object(src,frequency) + return ..() + +/obj/machinery/airlock_sensor + icon = 'icons/obj/airlock_machines.dmi' + icon_state = "airlock_sensor_off" + name = "airlock sensor" + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + + power_channel = ENVIRON + + var/id_tag + var/master_tag + var/frequency = FREQ_AIRLOCK_CONTROL + + var/datum/radio_frequency/radio_connection + + var/on = TRUE + var/alert = FALSE + +/obj/machinery/airlock_sensor/incinerator_toxmix + id_tag = INCINERATOR_TOXMIX_AIRLOCK_SENSOR + master_tag = INCINERATOR_TOXMIX_AIRLOCK_CONTROLLER + +/obj/machinery/airlock_sensor/incinerator_atmos + id_tag = INCINERATOR_ATMOS_AIRLOCK_SENSOR + master_tag = INCINERATOR_ATMOS_AIRLOCK_CONTROLLER + +/obj/machinery/airlock_sensor/incinerator_syndicatelava + id_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_SENSOR + master_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_CONTROLLER + +/obj/machinery/airlock_sensor/update_icon() + if(on) + if(alert) + icon_state = "airlock_sensor_alert" + else + icon_state = "airlock_sensor_standby" + else + icon_state = "airlock_sensor_off" + +/obj/machinery/airlock_sensor/attack_hand(mob/user) + . = ..() + if(.) + return + var/datum/signal/signal = new(list( + "tag" = master_tag, + "command" = "cycle" + )) + + radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) + flick("airlock_sensor_cycle", src) + +/obj/machinery/airlock_sensor/process() + if(on) + var/datum/gas_mixture/air_sample = return_air() + var/pressure = round(air_sample.return_pressure(),0.1) + alert = (pressure < ONE_ATMOSPHERE*0.8) + + var/datum/signal/signal = new(list( + "tag" = id_tag, + "timestamp" = world.time, + "pressure" = num2text(pressure) + )) + + radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) + + update_icon() + +/obj/machinery/airlock_sensor/proc/set_frequency(new_frequency) + SSradio.remove_object(src, frequency) + frequency = new_frequency + radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK) + +/obj/machinery/airlock_sensor/Initialize() + . = ..() + set_frequency(frequency) + +/obj/machinery/airlock_sensor/Destroy() + SSradio.remove_object(src,frequency) return ..() \ No newline at end of file diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm index 17ee13b634..959bcfab4d 100644 --- a/code/game/machinery/announcement_system.dm +++ b/code/game/machinery/announcement_system.dm @@ -2,7 +2,6 @@ GLOBAL_LIST_EMPTY(announcement_systems) /obj/machinery/announcement_system density = TRUE - anchored = TRUE name = "\improper Automated Announcement System" desc = "An automated announcement system that handles minor announcements over the radio." icon = 'icons/obj/machines/telecomms.dmi' diff --git a/code/game/machinery/aug_manipulator.dm b/code/game/machinery/aug_manipulator.dm index 8445f62d97..a168cdd4d5 100644 --- a/code/game/machinery/aug_manipulator.dm +++ b/code/game/machinery/aug_manipulator.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/pda.dmi' icon_state = "pdapainter" density = TRUE - anchored = TRUE obj_integrity = 200 max_integrity = 200 var/obj/item/bodypart/storedpart diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index d6154aeb8b..2a753fc333 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -7,13 +7,12 @@ desc = "It produces items using metal and glass." icon_state = "autolathe" density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 10 active_power_usage = 100 circuit = /obj/item/circuitboard/machine/autolathe layer = BELOW_OBJ_LAYER - + var/operating = FALSE var/list/L = list() var/list/LL = list() diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index 9511e8d0d4..f974f1b39b 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -11,7 +11,6 @@ var/id = null var/initialized_button = 0 armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 50, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 70) - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 2 resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF @@ -190,6 +189,31 @@ device = new /obj/item/assembly/control(src) ..() +/obj/machinery/button/door/incinerator_vent_toxmix + name = "combustion chamber vent control" + id = INCINERATOR_TOXMIX_VENT + req_access = list(ACCESS_TOX) + +/obj/machinery/button/door/incinerator_vent_atmos_main + name = "turbine vent control" + id = INCINERATOR_ATMOS_MAINVENT + req_one_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS) + +/obj/machinery/button/door/incinerator_vent_atmos_aux + name = "combustion chamber vent control" + id = INCINERATOR_ATMOS_AUXVENT + req_one_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS) + +/obj/machinery/button/door/incinerator_vent_syndicatelava_main + name = "turbine vent control" + id = INCINERATOR_SYNDICATELAVA_MAINVENT + req_access = list(ACCESS_SYNDICATE) + +/obj/machinery/button/door/incinerator_vent_syndicatelava_aux + name = "combustion chamber vent control" + id = INCINERATOR_SYNDICATELAVA_AUXVENT + req_access = list(ACCESS_SYNDICATE) + /obj/machinery/button/massdriver name = "mass driver button" desc = "A remote control switch for a mass driver." @@ -204,6 +228,19 @@ skin = "launcher" device_type = /obj/item/assembly/control/igniter +/obj/machinery/button/ignition/incinerator + name = "combustion chamber ignition switch" + desc = "A remote control switch for the combustion chamber's igniter." + +/obj/machinery/button/ignition/incinerator/toxmix + id = INCINERATOR_TOXMIX_IGNITER + +/obj/machinery/button/ignition/incinerator/atmos + id = INCINERATOR_ATMOS_IGNITER + +/obj/machinery/button/ignition/incinerator/syndicatelava + id = INCINERATOR_SYNDICATELAVA_IGNITER + /obj/machinery/button/flasher name = "flasher button" desc = "A remote control switch for a mounted flasher." diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 3e8a0bb84d..5cf652f00d 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -19,9 +19,7 @@ integrity_failure = 50 var/list/network = list("ss13") var/c_tag = null - var/c_tag_order = 999 var/status = TRUE - anchored = TRUE var/start_active = FALSE //If it ignores the random chance to start broken on round start var/invuln = null var/obj/item/camera_bug/bug = null @@ -36,6 +34,7 @@ var/alarm_on = FALSE var/busy = FALSE var/emped = FALSE //Number of consecutive EMP's on this camera + var/in_use_lights = 0 // Upgrades bitflag var/upgrades = 0 @@ -285,7 +284,7 @@ else if (stat & EMPED) icon_state = "[initial(icon_state)]emp" else - icon_state = "[initial(icon_state)]" + icon_state = "[initial(icon_state)][in_use_lights ? "_in_use" : ""]" /obj/machinery/camera/proc/toggle_cam(mob/user, displaymessage = 1) status = !status diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm index c327f4c17a..1dbfe9d055 100644 --- a/code/game/machinery/camera/tracking.dm +++ b/code/game/machinery/camera/tracking.dm @@ -146,10 +146,6 @@ for (var/j = 1 to i - 1) a = L[j] b = L[j + 1] - if (a.c_tag_order != b.c_tag_order) - if (a.c_tag_order > b.c_tag_order) - L.Swap(j, j + 1) - else - if (sorttext(a.c_tag, b.c_tag) < 0) - L.Swap(j, j + 1) + if (sorttext(a.c_tag, b.c_tag) < 0) + L.Swap(j, j + 1) return L diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index e6816a3170..9a59d4aea5 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -3,7 +3,6 @@ desc = "It charges power cells." icon = 'icons/obj/power.dmi' icon_state = "ccharger" - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 5 active_power_usage = 60 diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index d1f4a4be86..f07002236d 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -9,7 +9,6 @@ #define SPEAK(message) radio.talk_into(src, message, radio_channel, get_spans(), get_default_language()) /obj/machinery/clonepod - anchored = TRUE name = "cloning pod" desc = "An electronically-lockable pod for growing organic tissue." density = TRUE @@ -204,7 +203,8 @@ H.faction |= factions for(var/V in quirks) - new V(H) + var/datum/quirk/Q = new V(H) + Q.on_clone(quirks[V]) H.set_cloned_appearance() diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm index cbb6806581..2a9a57e630 100644 --- a/code/game/machinery/computer/_computer.dm +++ b/code/game/machinery/computer/_computer.dm @@ -3,7 +3,6 @@ icon = 'icons/obj/computer.dmi' icon_state = "computer" density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 300 active_power_usage = 300 diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm index 648432c0ea..6ade93b520 100644 --- a/code/game/machinery/computer/apc_control.dm +++ b/code/game/machinery/computer/apc_control.dm @@ -122,12 +122,12 @@ active_apc.locked = TRUE active_apc.update_icon() active_apc = null - to_chat(usr, "[icon2html(src, usr)] Connected to APC in [APC.area]. Interface request sent.") - log_activity("remotely accessed APC in [APC.area]") + to_chat(usr, "[icon2html(src, usr)] Connected to APC in [get_area_name(APC.area, TRUE)]. Interface request sent.") + log_activity("remotely accessed APC in [get_area_name(APC.area, TRUE)]") APC.ui_interact(usr, state = GLOB.not_incapacitated_state) playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) - message_admins("[key_name_admin(usr)] remotely accessed [APC] from [src] at [get_area(src)].") - log_game("[key_name(usr)] remotely accessed [APC] from [src] at [get_area(src)].") + message_admins("[ADMIN_LOOKUPFLW(usr)] remotely accessed [APC] from [src] at [AREACOORD(src)].") + log_game("[key_name(usr)] remotely accessed [APC] from [src] at [AREACOORD(src)].") if(APC.locked) APC.say("Remote access detected. Interface unlocked.") playsound(APC, 'sound/machines/boltsup.ogg', 25, 0) @@ -188,7 +188,7 @@ log_activity("logged in") else if(!(obj_flags & EMAGGED)) user.visible_message("You emag [src], disabling precise logging and allowing you to clear logs.") - log_game("[key_name(user)] emagged [src] at [get_area(src)], disabling operator tracking.") + log_game("[key_name(user)] emagged [src] at [AREACOORD(src)], disabling operator tracking.") obj_flags |= EMAGGED playsound(src, "sparks", 50, 1) diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 9dad813677..abb2f3c079 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -51,7 +51,9 @@ /obj/item/hot_potato/harmless/toy = 1, /obj/item/card/emagfake = 1, /obj/item/clothing/shoes/wheelys = 2, - /obj/item/clothing/shoes/kindleKicks = 2) + /obj/item/clothing/shoes/kindleKicks = 2, + /obj/item/storage/belt/military/snack = 2 + ) light_color = LIGHT_COLOR_GREEN @@ -233,7 +235,7 @@ if(obj_flags & EMAGGED) new /obj/effect/spawner/newbomb/timer/syndicate(loc) new /obj/item/clothing/head/collectable/petehat(loc) - message_admins("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.") + message_admins("[ADMIN_LOOKUPFLW(usr)] has outbombed Cuban Pete and been awarded a bomb.") log_game("[key_name(usr)] has outbombed Cuban Pete and been awarded a bomb.") Reset() obj_flags &= ~EMAGGED @@ -1028,7 +1030,7 @@ say("Congratulations, you made it to Orion!") if(obj_flags & EMAGGED) new /obj/item/orion_ship(loc) - message_admins("[key_name_admin(usr)] made it to Orion on an emagged machine and got an explosive toy ship.") + message_admins("[ADMIN_LOOKUPFLW(usr)] made it to Orion on an emagged machine and got an explosive toy ship.") log_game("[key_name(usr)] made it to Orion on an emagged machine and got an explosive toy ship.") else prizevend(user) @@ -1073,8 +1075,8 @@ if(active) return - message_admins("[key_name_admin(usr)] primed an explosive Orion ship for detonation.") - log_game("[key_name(usr)] primed an explosive Orion ship for detonation.") + message_admins("[ADMIN_LOOKUPFLW(usr)] primed an explosive Orion ship for detonation at [AREACOORD(usr)].") + log_game("[key_name(usr)] primed an explosive Orion ship for detonation at [AREACOORD(usr)].") to_chat(user, "You flip the switch on the underside of [src].") active = 1 diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm index 6e4507c465..7eb8e206b5 100644 --- a/code/game/machinery/computer/atmos_control.dm +++ b/code/game/machinery/computer/atmos_control.dm @@ -6,7 +6,6 @@ name = "gas sensor" icon = 'icons/obj/stationobjs.dmi' icon_state = "gsensor1" - anchored = TRUE var/on = TRUE diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index 4ccf9d588c..7e901667ab 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -196,7 +196,7 @@ icon_keyboard = "mining_key" network = list("mine") circuit = /obj/item/circuitboard/computer/mining - + /obj/machinery/computer/security/research name = "research camera console" desc = "Used to access the various cameras in science." diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index 6112a5d760..26a8ac940e 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -190,7 +190,7 @@ else moveToNullspace() if(use_static) - GLOB.cameranet.visibility(src) + GLOB.cameranet.visibility(src, GetViewerClient()) if(visible_icon) if(eye_user.client) eye_user.client.images -= user_image diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 95b4ea9f80..4846610671 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -1,3 +1,5 @@ +#define AUTOCLONING_MINIMAL_LEVEL 3 + /obj/machinery/computer/cloning name = "cloning console" desc = "Used to clone people and manage DNA." @@ -79,6 +81,10 @@ src.scanner = findscanner() if(findfirstcloner && !LAZYLEN(pods)) findcloner() + if(!autoprocess) + STOP_PROCESSING(SSmachines, src) + else + START_PROCESSING(SSmachines, src) /obj/machinery/computer/cloning/proc/findscanner() var/obj/machinery/dna_scannernew/scannerf = null @@ -151,7 +157,7 @@ var/dat = "" dat += "Refresh" - if(scanner && HasEfficientPod() && scanner.scan_level > 2) + if(scanner && HasEfficientPod() && scanner.scan_level >= AUTOCLONING_MINIMAL_LEVEL) if(!autoprocess) dat += "Autoprocess" else @@ -276,10 +282,13 @@ if(href_list["task"]) switch(href_list["task"]) if("autoprocess") - autoprocess = 1 - playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) + if(scanner && HasEfficientPod() && scanner.scan_level >= AUTOCLONING_MINIMAL_LEVEL) + autoprocess = TRUE + START_PROCESSING(SSmachines, src) + playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) if("stopautoprocess") - autoprocess = 0 + autoprocess = FALSE + STOP_PROCESSING(SSmachines, src) playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0) else if ((href_list["scan"]) && !isnull(scanner) && scanner.is_operational()) @@ -476,7 +485,7 @@ R.fields["quirks"] = list() for(var/V in mob_occupant.roundstart_quirks) var/datum/quirk/T = V - R.fields["quirks"] += T.type + R.fields["quirks"][T.type] = T.clone_data() if (!isnull(mob_occupant.mind)) //Save that mind so traitors can continue traitoring after cloning. R.fields["mind"] = "[REF(mob_occupant.mind)]" diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 14d02e9752..61dc3ad919 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -51,13 +51,11 @@ /obj/machinery/computer/communications/Topic(href, href_list) if(..()) return - if(!is_station_level(z) && !is_centcom_level(z)) //Can only use on centcom and SS13 + if(!is_station_level(z) && !is_transit_level(z)) //Can only use in transit and on SS13 to_chat(usr, "Unable to establish a connection: \black You're too far away from the station!") return usr.set_machine(src) - var/area/A = get_area(usr) - var/area_name = A.name if(!href_list["operation"]) return @@ -115,9 +113,9 @@ playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) //Only notify people if an actual change happened var/security_level = get_security_level() - log_game("[key_name(usr)] has changed the security level to [security_level].") - message_admins("[key_name_admin(usr)] has changed the security level to [security_level].") - deadchat_broadcast("[usr.real_name] has changed the security level to [security_level] at [area_name].", usr) + log_game("[key_name(usr)] has changed the security level to [security_level] with [src] at [AREACOORD(usr)].") + message_admins("[ADMIN_LOOKUPFLW(usr)] has changed the security level to [security_level] with [src] at [AREACOORD(usr)].") + deadchat_broadcast("[usr.real_name] has changed the security level to [security_level] with [src] at [get_area_name(usr, TRUE)].", usr) tmp_alertlevel = 0 else to_chat(usr, "You are not authorized to do this!") @@ -146,7 +144,7 @@ send2otherserver("[station_name()]", input,"Comms_Console") minor_announce(input, title = "Outgoing message to allied station") log_talk(usr,"[key_name(usr)] has sent a message to the other server: [input]",LOGSAY) - message_admins("[key_name_admin(usr)] has sent a message to the other server.") + message_admins("[ADMIN_LOOKUPFLW(usr)] has sent a message to the other server.") deadchat_broadcast("[usr.real_name] has sent an outgoing message to the other station(s).", usr) CM.lastTimeUsed = world.time @@ -176,7 +174,7 @@ M.action_load(S) SSshuttle.points -= S.credit_cost minor_announce("[usr.real_name] has purchased [S.name] for [S.credit_cost] credits." , "Shuttle Purchase") - message_admins("[key_name_admin(usr)] purchased [S.name].") + message_admins("[ADMIN_LOOKUPFLW(usr)] purchased [S.name].") SSblackbox.record_feedback("text", "shuttle_purchase", 1, "[S.name]") else to_chat(usr, "Something went wrong! The shuttle exchange system seems to be down.") @@ -249,14 +247,14 @@ if("enableemergency") make_maint_all_access() log_game("[key_name(usr)] enabled emergency maintenance access.") - message_admins("[key_name_admin(usr)] enabled emergency maintenance access.") - deadchat_broadcast("[usr.real_name] enabled emergency maintenance access at [area_name].", usr) + message_admins("[ADMIN_LOOKUPFLW(usr)] enabled emergency maintenance access.") + deadchat_broadcast("[usr.real_name] enabled emergency maintenance access at [get_area_name(usr, TRUE)].", usr) state = STATE_DEFAULT if("disableemergency") revoke_maint_all_access() log_game("[key_name(usr)] disabled emergency maintenance access.") - message_admins("[key_name_admin(usr)] disabled emergency maintenance access.") - deadchat_broadcast("[usr.real_name] disabled emergency maintenance access at [area_name].", usr) + message_admins("[ADMIN_LOOKUPFLW(usr)] disabled emergency maintenance access.") + deadchat_broadcast("[usr.real_name] disabled emergency maintenance access at [get_area_name(usr, TRUE)].", usr) state = STATE_DEFAULT // Status display stuff @@ -290,7 +288,7 @@ CentCom_announce(input, usr) to_chat(usr, "Message transmitted to Central Command.") log_talk(usr,"[key_name(usr)] has made a CentCom announcement: [input]",LOGSAY) - deadchat_broadcast("[usr.real_name] has messaged CentCom, \"[input]\" at [area_name].", usr) + deadchat_broadcast("[usr.real_name] has messaged CentCom, \"[input]\" at [get_area_name(usr, TRUE)].", usr) CM.lastTimeUsed = world.time // OMG SYNDICATE ...LETTERHEAD @@ -307,7 +305,7 @@ Syndicate_announce(input, usr) to_chat(usr, "SYSERR @l(19833)of(transmit.dm): !@$ MESSAGE TRANSMITTED TO SYNDICATE COMMAND.") log_talk(usr,"[key_name(usr)] has made a Syndicate announcement: [input]",LOGSAY) - deadchat_broadcast("[usr.real_name] has messaged the Syndicate, \"[input]\" at [area_name].", usr) + deadchat_broadcast("[usr.real_name] has messaged the Syndicate, \"[input]\" at [get_area_name(usr, TRUE)].", usr) CM.lastTimeUsed = world.time if("RestoreBackup") @@ -388,9 +386,9 @@ if(GLOB.security_level != old_level) //Only notify people if an actual change happened var/security_level = get_security_level() - log_game("[key_name(usr)] has changed the security level to [security_level].") - message_admins("[key_name_admin(usr)] has changed the security level to [security_level].") - deadchat_broadcast("[usr.real_name] has changed the security level to [security_level].", usr) + log_game("[key_name(usr)] has changed the security level to [security_level] from [src] at [AREACOORD(usr)].") + message_admins("[ADMIN_LOOKUPFLW(usr)] has changed the security level to [security_level] from [src] at [AREACOORD(usr)].") + deadchat_broadcast("[usr.real_name] has changed the security level to [security_level] from [src] at [get_area_name(usr, TRUE)].", usr) tmp_alertlevel = 0 aistate = STATE_DEFAULT if("ai-changeseclevel") @@ -400,13 +398,13 @@ if("ai-enableemergency") make_maint_all_access() log_game("[key_name(usr)] enabled emergency maintenance access.") - message_admins("[key_name_admin(usr)] enabled emergency maintenance access.") + message_admins("[ADMIN_LOOKUPFLW(usr)] enabled emergency maintenance access.") deadchat_broadcast("[usr.real_name] enabled emergency maintenance access.", usr) aistate = STATE_DEFAULT if("ai-disableemergency") revoke_maint_all_access() log_game("[key_name(usr)] disabled emergency maintenance access.") - message_admins("[key_name_admin(usr)] disabled emergency maintenance access.") + message_admins("[ADMIN_LOOKUPFLW(usr)] disabled emergency maintenance access.") deadchat_broadcast("[usr.real_name] disabled emergency maintenance access.", usr) aistate = STATE_DEFAULT @@ -556,6 +554,9 @@ if(STATE_PURCHASE) dat += "Budget: [SSshuttle.points] Credits.
" + dat += "
" + dat += "Caution: Purchasing dangerous shuttles may lead to mutiny and/or death.
" + dat += "
" for(var/shuttle_id in SSmapping.shuttle_templates) var/datum/map_template/shuttle/S = SSmapping.shuttle_templates[shuttle_id] if(S.can_be_bought && S.credit_cost < INFINITY) @@ -700,8 +701,7 @@ if(!input || !user.canUseTopic(src)) return SScommunications.make_announcement(user, is_silicon, input) - var/area/A = get_area(user) - deadchat_broadcast("[user.real_name] made an priority announcement at [A.name].", user) + deadchat_broadcast("[user.real_name] made an priority announcement from [get_area_name(usr, TRUE)].", user) /obj/machinery/computer/communications/proc/post_status(command, data1, data2) diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index 0b90f1df14..72e17679f5 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -33,7 +33,6 @@ var/obj/machinery/dna_scannernew/connected = null var/obj/item/disk/data/diskette = null var/list/delayed_action = null - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 10 active_power_usage = 400 diff --git a/code/game/machinery/computer/gulag_teleporter.dm b/code/game/machinery/computer/gulag_teleporter.dm index 4e80883a31..98c398a2c2 100644 --- a/code/game/machinery/computer/gulag_teleporter.dm +++ b/code/game/machinery/computer/gulag_teleporter.dm @@ -148,7 +148,7 @@ id_goal_not_set = TRUE id.goal = default_goal say("[id]'s ID card goal defaulting to [id.goal] points.") - log_game("[user]([user.ckey] teleported [prisoner]([prisoner.ckey]) to the Labor Camp ([beacon.x], [beacon.y], [beacon.z]) for [id_goal_not_set ? "default goal of ":""][id.goal] points.") + log_game("[user]([user.ckey] teleported [prisoner]([prisoner.ckey]) to the Labor Camp [COORD(beacon)] for [id_goal_not_set ? "default goal of ":""][id.goal] points.") teleporter.handle_prisoner(id, temporary_record) playsound(src, 'sound/weapons/emitter.ogg', 50, 1) prisoner.forceMove(get_turf(beacon)) diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index c0d514f9a5..41aaac85db 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -104,7 +104,7 @@ var/choice = input("Are you certain you wish to detonate [R.name]?") in list("Confirm", "Abort") if(choice == "Confirm" && can_control(usr, R) && !..()) var/turf/T = get_turf(R) - message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name(R, R.client)][ADMIN_JMP(T)]!") + message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name_admin(R, R.client)] at [ADMIN_VERBOSEJMP(T)]!") log_game("\[key_name(usr)] detonated [key_name(R)]!") if(R.connected_ai) to_chat(R.connected_ai, "

ALERT - Cyborg detonation detected: [R.name]
") @@ -134,7 +134,7 @@ var/mob/living/silicon/robot/R = locate(href_list["magbot"]) in GLOB.silicon_mobs if(istype(R) && !R.emagged && (R.connected_ai == usr || IsAdminGhost(usr)) && !R.scrambledcodes && can_control(usr, R)) log_game("[key_name(usr)] emagged [R.name] using robotic console!") - message_admins("[key_name_admin(usr)] emagged cyborg [key_name_admin(R)] using robotic console!") + message_admins("[ADMIN_LOOKUPFLW(usr)] emagged cyborg [key_name_admin(R)] using robotic console!") R.SetEmagged(1) else if(href_list["convert"]) @@ -142,7 +142,7 @@ var/mob/living/silicon/robot/R = locate(href_list["convert"]) in GLOB.silicon_mobs if(istype(R) && !is_servant_of_ratvar(R) && R.connected_ai == usr) log_game("[key_name(usr)] converted [R.name] using robotic console!") - message_admins("[key_name_admin(usr)] converted cyborg [key_name_admin(R)] using robotic console!") + message_admins("[ADMIN_LOOKUPFLW(usr)] converted cyborg [key_name_admin(R)] using robotic console!") add_servant_of_ratvar(R) else if (href_list["killdrone"]) @@ -152,7 +152,7 @@ to_chat(usr, "ERROR: [D] is not responding to external commands.") else var/turf/T = get_turf(D) - message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name_admin(D)][ADMIN_JMP(T)]!") + message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name_admin(D)] at [ADMIN_VERBOSEJMP(T)]!") log_game("[key_name(usr)] detonated [key_name(D)]!") var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, 1, D) diff --git a/code/game/machinery/dance_machine.dm b/code/game/machinery/dance_machine.dm index 750d83eecc..5fd40a401e 100644 --- a/code/game/machinery/dance_machine.dm +++ b/code/game/machinery/dance_machine.dm @@ -3,7 +3,6 @@ desc = "A classic music player." icon = 'icons/obj/stationobjs.dmi' icon_state = "jukebox" - anchored = TRUE verb_say = "states" density = TRUE req_access = list(ACCESS_BAR) diff --git a/code/game/machinery/defibrillator_mount.dm b/code/game/machinery/defibrillator_mount.dm index c1c755251d..1c72e79363 100644 --- a/code/game/machinery/defibrillator_mount.dm +++ b/code/game/machinery/defibrillator_mount.dm @@ -7,7 +7,6 @@ icon = 'icons/obj/machines/defib_mount.dmi' icon_state = "defibrillator_mount" density = FALSE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 1 power_channel = EQUIP diff --git a/code/game/machinery/dish_drive.dm b/code/game/machinery/dish_drive.dm index 2254500afe..7e960d4ebc 100644 --- a/code/game/machinery/dish_drive.dm +++ b/code/game/machinery/dish_drive.dm @@ -7,7 +7,6 @@ icon_state = "synthesizer" idle_power_usage = 8 //5 with default parts active_power_usage = 13 //10 with default parts - anchored = TRUE density = FALSE circuit = /obj/item/circuitboard/machine/dish_drive var/static/list/item_types = list(/obj/item/trash/waffles, diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm index 2a8868cb4f..507d6c6f43 100644 --- a/code/game/machinery/dna_scanner.dm +++ b/code/game/machinery/dna_scanner.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/machines/cloning.dmi' icon_state = "scanner" density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 50 active_power_usage = 300 diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 00c683af85..65d1264030 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -178,7 +178,7 @@ limit-- while(!FoundDoor && limit) if (!FoundDoor) - log_world("### MAP WARNING, [src] at [get_area_name(src, TRUE)] [COORD(src)] failed to find a valid airlock to cyclelink with!") + log_world("### MAP WARNING, [src] at [AREACOORD(src)] failed to find a valid airlock to cyclelink with!") return FoundDoor.cyclelinkedairlock = src cyclelinkedairlock = FoundDoor diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index 69621adc84..8704a4c749 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -79,6 +79,20 @@ opacity = 0 glass = TRUE +/obj/machinery/door/airlock/glass/incinerator + autoclose = FALSE + frequency = FREQ_AIRLOCK_CONTROL + heat_proof = TRUE + req_access = list(ACCESS_SYNDICATE) + +/obj/machinery/door/airlock/glass/incinerator/syndicatelava_interior + name = "Turbine Interior Airlock" + id_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_INTERIOR + +/obj/machinery/door/airlock/glass/incinerator/syndicatelava_exterior + name = "Turbine Exterior Airlock" + id_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_EXTERIOR + /obj/machinery/door/airlock/command/glass opacity = 0 glass = TRUE @@ -107,6 +121,20 @@ opacity = 0 glass = TRUE +/obj/machinery/door/airlock/research/glass/incinerator + autoclose = FALSE + frequency = FREQ_AIRLOCK_CONTROL + heat_proof = TRUE + req_access = list(ACCESS_TOX) + +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior + name = "Mixing Room Interior Airlock" + id_tag = INCINERATOR_TOXMIX_AIRLOCK_INTERIOR + +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior + name = "Mixing Room Exterior Airlock" + id_tag = INCINERATOR_TOXMIX_AIRLOCK_EXTERIOR + /obj/machinery/door/airlock/mining/glass opacity = 0 glass = TRUE @@ -222,8 +250,8 @@ /obj/machinery/door/airlock/plasma/attackby(obj/item/C, mob/user, params) if(C.is_hot() > 300)//If the temperature of the object is over 300, then ignite - message_admins("Plasma airlock ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(src)]") - log_game("Plasma airlock ignited by [key_name(user)] in [COORD(src)]") + message_admins("Plasma airlock ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(src)]") + log_game("Plasma airlock ignited by [key_name(user)] in [AREACOORD(src)]") ignite(C.is_hot()) else return ..() @@ -287,6 +315,20 @@ opacity = 0 glass = TRUE +/obj/machinery/door/airlock/public/glass/incinerator + autoclose = FALSE + frequency = FREQ_AIRLOCK_CONTROL + heat_proof = TRUE + req_one_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS) + +/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior + name = "Turbine Interior Airlock" + id_tag = INCINERATOR_ATMOS_AIRLOCK_INTERIOR + +/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior + name = "Turbine Exterior Airlock" + id_tag = INCINERATOR_ATMOS_AIRLOCK_EXTERIOR + ////////////////////////////////// /* External Airlocks diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index 3ab819f275..3542b4e8bd 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -24,7 +24,6 @@ icon_state = "frame" desc = "A remote control for a door." req_access = list(ACCESS_SECURITY) - anchored = TRUE density = FALSE var/id = null // id of linked machinery/lockers diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 70268584d1..8b94648ec9 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -3,7 +3,6 @@ desc = "It opens and closes." icon = 'icons/obj/doors/Doorint.dmi' icon_state = "door1" - anchored = TRUE opacity = 1 density = TRUE layer = OPEN_DOOR_LAYER diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index 9e467e8926..a581b20f52 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -36,6 +36,26 @@ else INVOKE_ASYNC(src, .proc/close) +/obj/machinery/door/poddoor/incinerator_toxmix + name = "combustion chamber vent" + id = INCINERATOR_TOXMIX_VENT + +/obj/machinery/door/poddoor/incinerator_atmos_main + name = "turbine vent" + id = INCINERATOR_ATMOS_MAINVENT + +/obj/machinery/door/poddoor/incinerator_atmos_aux + name = "combustion chamber vent" + id = INCINERATOR_ATMOS_AUXVENT + +/obj/machinery/door/poddoor/incinerator_syndicatelava_main + name = "turbine vent" + id = INCINERATOR_SYNDICATELAVA_MAINVENT + +/obj/machinery/door/poddoor/incinerator_syndicatelava_aux + name = "combustion chamber vent" + id = INCINERATOR_SYNDICATELAVA_AUXVENT + /obj/machinery/door/poddoor/CollidedWith(atom/movable/AM) if(density) return 0 diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm index 0abc3e8cea..1131c55eb3 100644 --- a/code/game/machinery/doppler_array.dm +++ b/code/game/machinery/doppler_array.dm @@ -6,7 +6,6 @@ GLOBAL_LIST_EMPTY(doppler_arrays) icon = 'icons/obj/machines/research.dmi' icon_state = "tdoppler" density = TRUE - anchored = TRUE var/integrated = FALSE var/max_dist = 150 verb_say = "states coldly" diff --git a/code/game/machinery/droneDispenser.dm b/code/game/machinery/droneDispenser.dm index ffed5c7661..ffe7961534 100644 --- a/code/game/machinery/droneDispenser.dm +++ b/code/game/machinery/droneDispenser.dm @@ -8,7 +8,6 @@ icon = 'icons/obj/machines/droneDispenser.dmi' icon_state = "on" - anchored = TRUE density = TRUE max_integrity = 250 diff --git a/code/game/machinery/embedded_controller/access_controller.dm b/code/game/machinery/embedded_controller/access_controller.dm index 63b7f2caeb..70ce3d36ae 100644 --- a/code/game/machinery/embedded_controller/access_controller.dm +++ b/code/game/machinery/embedded_controller/access_controller.dm @@ -6,7 +6,6 @@ /obj/machinery/doorButtons power_channel = ENVIRON - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 2 active_power_usage = 4 diff --git a/code/game/machinery/embedded_controller/airlock_controller.dm b/code/game/machinery/embedded_controller/airlock_controller.dm index e2402177e2..8b9255b5ac 100644 --- a/code/game/machinery/embedded_controller/airlock_controller.dm +++ b/code/game/machinery/embedded_controller/airlock_controller.dm @@ -7,11 +7,11 @@ /datum/computer/file/embedded_program/airlock_controller var/id_tag - var/exterior_door_tag - var/interior_door_tag - var/airpump_tag - var/sensor_tag - var/sanitize_external + var/exterior_door_tag //Burn chamber facing door + var/interior_door_tag //Station facing door + var/airpump_tag //See: dp_vent_pump.dm + var/sensor_tag //See: /obj/machinery/airlock_sensor + var/sanitize_external //Before the interior airlock opens, do we first drain all gases inside the chamber and then repressurize? state = AIRLOCK_STATE_CLOSED var/target_state = AIRLOCK_STATE_CLOSED @@ -211,6 +211,33 @@ var/sensor_tag var/sanitize_external +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix + name = "Incinerator Access Console" + airpump_tag = INCINERATOR_TOXMIX_DP_VENTPUMP + exterior_door_tag = INCINERATOR_TOXMIX_AIRLOCK_EXTERIOR + id_tag = INCINERATOR_TOXMIX_AIRLOCK_CONTROLLER + interior_door_tag = INCINERATOR_TOXMIX_AIRLOCK_INTERIOR + sanitize_external = TRUE + sensor_tag = INCINERATOR_TOXMIX_AIRLOCK_SENSOR + +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos + name = "Incinerator Access Console" + airpump_tag = INCINERATOR_ATMOS_DP_VENTPUMP + exterior_door_tag = INCINERATOR_ATMOS_AIRLOCK_EXTERIOR + id_tag = INCINERATOR_ATMOS_AIRLOCK_CONTROLLER + interior_door_tag = INCINERATOR_ATMOS_AIRLOCK_INTERIOR + sanitize_external = TRUE + sensor_tag = INCINERATOR_ATMOS_AIRLOCK_SENSOR + +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_syndicatelava + name = "Incinerator Access Console" + airpump_tag = INCINERATOR_SYNDICATELAVA_DP_VENTPUMP + exterior_door_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_EXTERIOR + id_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_CONTROLLER + interior_door_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_INTERIOR + sanitize_external = TRUE + sensor_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_SENSOR + /obj/machinery/embedded_controller/radio/airlock_controller/Initialize(mapload) . = ..() if(!mapload) diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm index 39cf149850..063cfa6805 100644 --- a/code/game/machinery/embedded_controller/embedded_controller_base.dm +++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm @@ -1,88 +1,87 @@ -/datum/computer/file/embedded_program - var/list/memory = list() - var/state - var/obj/machinery/embedded_controller/master - -/datum/computer/file/embedded_program/proc/post_signal(datum/signal/signal, comm_line) - if(master) - master.post_signal(signal, comm_line) - else - qdel(signal) - -/datum/computer/file/embedded_program/proc/receive_user_command(command) - -/datum/computer/file/embedded_program/proc/receive_signal(datum/signal/signal) - return null - -/datum/computer/file/embedded_program/process() - return 0 - -/obj/machinery/embedded_controller - var/datum/computer/file/embedded_program/program - - name = "embedded controller" - density = FALSE - anchored = TRUE - - var/on = TRUE - -/obj/machinery/embedded_controller/ui_interact(mob/user) - . = ..() - user.set_machine(src) - var/datum/browser/popup = new(user, "computer", name) // Set up the popup browser window - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.set_content(return_text()) - popup.open() - -/obj/machinery/embedded_controller/update_icon() - -/obj/machinery/embedded_controller/proc/return_text() - -/obj/machinery/embedded_controller/proc/post_signal(datum/signal/signal, comm_line) - return 0 - -/obj/machinery/embedded_controller/receive_signal(datum/signal/signal) - if(istype(signal) && program) - program.receive_signal(signal) - -/obj/machinery/embedded_controller/Topic(href, href_list) - if(..()) - return 0 - - if(program) - program.receive_user_command(href_list["command"]) - addtimer(CALLBACK(program, /datum/computer/file/embedded_program.proc/process), 5) - - usr.set_machine(src) - addtimer(CALLBACK(src, .proc/updateDialog), 5) - -/obj/machinery/embedded_controller/process() - if(program) - program.process() - - update_icon() - src.updateDialog() - -/obj/machinery/embedded_controller/radio - var/frequency - var/datum/radio_frequency/radio_connection - -/obj/machinery/embedded_controller/radio/Destroy() - SSradio.remove_object(src,frequency) - return ..() - -/obj/machinery/embedded_controller/radio/Initialize() - . = ..() - set_frequency(frequency) - -/obj/machinery/embedded_controller/radio/post_signal(datum/signal/signal) - signal.transmission_method = TRANSMISSION_RADIO - if(radio_connection) - return radio_connection.post_signal(src, signal) - else - signal = null - -/obj/machinery/embedded_controller/radio/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - frequency = new_frequency - radio_connection = SSradio.add_object(src, frequency) +/datum/computer/file/embedded_program + var/list/memory = list() + var/state + var/obj/machinery/embedded_controller/master + +/datum/computer/file/embedded_program/proc/post_signal(datum/signal/signal, comm_line) + if(master) + master.post_signal(signal, comm_line) + else + qdel(signal) + +/datum/computer/file/embedded_program/proc/receive_user_command(command) + +/datum/computer/file/embedded_program/proc/receive_signal(datum/signal/signal) + return null + +/datum/computer/file/embedded_program/process() + return 0 + +/obj/machinery/embedded_controller + var/datum/computer/file/embedded_program/program + + name = "embedded controller" + density = FALSE + + var/on = TRUE + +/obj/machinery/embedded_controller/ui_interact(mob/user) + . = ..() + user.set_machine(src) + var/datum/browser/popup = new(user, "computer", name) // Set up the popup browser window + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.set_content(return_text()) + popup.open() + +/obj/machinery/embedded_controller/update_icon() + +/obj/machinery/embedded_controller/proc/return_text() + +/obj/machinery/embedded_controller/proc/post_signal(datum/signal/signal, comm_line) + return 0 + +/obj/machinery/embedded_controller/receive_signal(datum/signal/signal) + if(istype(signal) && program) + program.receive_signal(signal) + +/obj/machinery/embedded_controller/Topic(href, href_list) + if(..()) + return 0 + + if(program) + program.receive_user_command(href_list["command"]) + addtimer(CALLBACK(program, /datum/computer/file/embedded_program.proc/process), 5) + + usr.set_machine(src) + addtimer(CALLBACK(src, .proc/updateDialog), 5) + +/obj/machinery/embedded_controller/process() + if(program) + program.process() + + update_icon() + src.updateDialog() + +/obj/machinery/embedded_controller/radio + var/frequency + var/datum/radio_frequency/radio_connection + +/obj/machinery/embedded_controller/radio/Destroy() + SSradio.remove_object(src,frequency) + return ..() + +/obj/machinery/embedded_controller/radio/Initialize() + . = ..() + set_frequency(frequency) + +/obj/machinery/embedded_controller/radio/post_signal(datum/signal/signal) + signal.transmission_method = TRANSMISSION_RADIO + if(radio_connection) + return radio_connection.post_signal(src, signal) + else + signal = null + +/obj/machinery/embedded_controller/radio/proc/set_frequency(new_frequency) + SSradio.remove_object(src, frequency) + frequency = new_frequency + radio_connection = SSradio.add_object(src, frequency) diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index b2e1ad7e5b..973f96b09d 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -16,7 +16,6 @@ desc = "\"Pull this in case of emergency\". Thus, keep pulling it forever." icon = 'icons/obj/monitors.dmi' icon_state = "fire0" - anchored = TRUE max_integrity = 250 integrity_failure = 100 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 30) diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 701c637a56..56c9544a1a 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -7,7 +7,6 @@ icon_state = "mflash1" max_integrity = 250 integrity_failure = 100 - anchored = TRUE var/obj/item/assembly/flash/handheld/bulb var/id = null var/range = 2 //this is roughly the size of brig cell diff --git a/code/game/machinery/gulag_item_reclaimer.dm b/code/game/machinery/gulag_item_reclaimer.dm index 628071bd21..c955edbcd0 100644 --- a/code/game/machinery/gulag_item_reclaimer.dm +++ b/code/game/machinery/gulag_item_reclaimer.dm @@ -5,7 +5,6 @@ icon_state = "dorm_taken" req_access = list(ACCESS_SECURITY) //REQACCESS TO ACCESS ALL STORED ITEMS density = FALSE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 100 active_power_usage = 2500 diff --git a/code/game/machinery/gulag_teleporter.dm b/code/game/machinery/gulag_teleporter.dm index 08db7b41e2..4e993cf8c8 100644 --- a/code/game/machinery/gulag_teleporter.dm +++ b/code/game/machinery/gulag_teleporter.dm @@ -13,7 +13,6 @@ The console is located at computer/gulag_teleporter.dm icon_state = "implantchair" state_open = FALSE density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 200 active_power_usage = 5000 diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 61ee4eb178..e5aef868fc 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -34,7 +34,6 @@ Possible to do for anyone motivated enough: layer = LOW_OBJ_LAYER plane = FLOOR_PLANE flags_1 = HEAR_1 - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 5 active_power_usage = 100 @@ -667,7 +666,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ /obj/effect/overlay/holo_pad_hologram/Destroy() Impersonation = null - if(HC) + if(!QDELETED(HC)) HC.Disconnect(HC.calling_holopad) return ..() diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index d5bb8db0e3..d20a1059f9 100644 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -4,15 +4,23 @@ icon = 'icons/obj/stationobjs.dmi' icon_state = "igniter0" plane = FLOOR_PLANE - var/id = null - var/on = FALSE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 2 active_power_usage = 4 max_integrity = 300 armor = list("melee" = 50, "bullet" = 30, "laser" = 70, "energy" = 50, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70) resistance_flags = FIRE_PROOF + var/id = null + var/on = FALSE + +/obj/machinery/igniter/incinerator_toxmix + id = INCINERATOR_TOXMIX_IGNITER + +/obj/machinery/igniter/incinerator_atmos + id = INCINERATOR_ATMOS_IGNITER + +/obj/machinery/igniter/incinerator_syndicatelava + id = INCINERATOR_SYNDICATELAVA_IGNITER /obj/machinery/igniter/on on = TRUE @@ -52,13 +60,15 @@ desc = "A wall-mounted ignition device." icon = 'icons/obj/stationobjs.dmi' icon_state = "migniter" + resistance_flags = FIRE_PROOF var/id = null var/disable = 0 var/last_spark = 0 var/base_state = "migniter" var/datum/effect_system/spark_spread/spark_system - anchored = TRUE - resistance_flags = FIRE_PROOF + +/obj/machinery/sparker/toxmix + id = INCINERATOR_TOXMIX_IGNITER /obj/machinery/sparker/Initialize() . = ..() diff --git a/code/game/machinery/launch_pad.dm b/code/game/machinery/launch_pad.dm index 95bf10bc6c..54bf0cf36e 100644 --- a/code/game/machinery/launch_pad.dm +++ b/code/game/machinery/launch_pad.dm @@ -3,12 +3,11 @@ desc = "A bluespace pad able to thrust matter through bluespace, teleporting it to or from nearby locations." icon = 'icons/obj/telescience.dmi' icon_state = "lpad-idle" - var/icon_teleport = "lpad-beam" - anchored = TRUE use_power = TRUE idle_power_usage = 200 active_power_usage = 2500 circuit = /obj/item/circuitboard/machine/launchpad + var/icon_teleport = "lpad-beam" var/stationary = TRUE //to prevent briefcase pad deconstruction and such var/display_name = "Launchpad" var/teleport_speed = 35 @@ -53,7 +52,7 @@ if(teleporting) to_chat(user, "ERROR: Launchpad busy.") return - + var/turf/dest = get_turf(src) if(dest && is_centcom_level(dest.z)) diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm index 8c0e65fa82..cbb9b4f253 100644 --- a/code/game/machinery/lightswitch.dm +++ b/code/game/machinery/lightswitch.dm @@ -5,7 +5,6 @@ name = "light switch" icon = 'icons/obj/power.dmi' icon_state = "light1" - anchored = TRUE desc = "Make dark." var/on = TRUE var/area/area = null diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm index 8347e5f548..8a0658fd0f 100644 --- a/code/game/machinery/limbgrower.dm +++ b/code/game/machinery/limbgrower.dm @@ -11,7 +11,6 @@ icon_state = "limbgrower_idleoff" density = TRUE container_type = OPENCONTAINER - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 10 active_power_usage = 100 diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm index 03455d5dd5..094db5a676 100644 --- a/code/game/machinery/magnet.dm +++ b/code/game/machinery/magnet.dm @@ -11,7 +11,6 @@ desc = "A device that uses station power to create points of magnetic energy." level = 1 // underfloor layer = LOW_OBJ_LAYER - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 50 @@ -195,7 +194,6 @@ icon = 'icons/obj/airlock_machines.dmi' // uses an airlock machine icon, THINK GREEN HELP THE ENVIRONMENT - RECYCLING! icon_state = "airlock_control_standby" density = FALSE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 45 var/frequency = FREQ_MAGNETS diff --git a/code/game/machinery/mass_driver.dm b/code/game/machinery/mass_driver.dm index c3162d640d..7ebed0ab0c 100644 --- a/code/game/machinery/mass_driver.dm +++ b/code/game/machinery/mass_driver.dm @@ -3,7 +3,6 @@ desc = "The finest in spring-loaded piston toy technology, now on a space station near you." icon = 'icons/obj/stationobjs.dmi' icon_state = "mass_driver" - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 2 active_power_usage = 50 diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index 1426625c92..139769e269 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -9,7 +9,6 @@ desc = "A radio beacon used for bot navigation." level = 1 // underfloor layer = LOW_OBJ_LAYER - anchored = TRUE max_integrity = 500 armor = list("melee" = 70, "bullet" = 70, "laser" = 70, "energy" = 70, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index e2b06b333c..f9dbcc85d5 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -202,7 +202,6 @@ GLOBAL_LIST_EMPTY(allCasters) var/c_locked=0 var/datum/newscaster/feed_channel/viewing_channel = null var/allow_comments = 1 - anchored = TRUE /obj/machinery/newscaster/security_unit name = "security newscaster" diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index 555f4eee1b..11d9ee8df5 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -4,7 +4,6 @@ icon_state = "pipe_d" desc = "Dispenses countless types of pipes. Very useful if you need pipes." density = TRUE - anchored = TRUE interaction_flags_machine = INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON | INTERACT_MACHINE_OFFLINE var/wait = 0 var/piping_layer = PIPING_LAYER_DEFAULT @@ -80,7 +79,6 @@ icon_state = "pipe_d" desc = "Dispenses pipes that will ultimately be used to move trash around." density = TRUE - anchored = TRUE //Allow you to drag-drop disposal pipes and transit tubes into it @@ -147,7 +145,6 @@ icon_state = "pipe_d" density = TRUE desc = "Dispenses pipes that will move beings around." - anchored = TRUE /obj/machinery/pipedispenser/disposal/transit_tube/interact(mob/user) diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 399ea38754..2bd20ce667 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -8,7 +8,6 @@ name = "turret" icon = 'icons/obj/turrets.dmi' icon_state = "turretCover" - anchored = TRUE layer = OBJ_LAYER invisibility = INVISIBILITY_OBSERVER //the turret is invisible if it's inside its cover density = TRUE @@ -754,7 +753,6 @@ desc = "Used to control a room's automated defenses." icon = 'icons/obj/machines/turret_control.dmi' icon_state = "control_standby" - anchored = TRUE density = FALSE var/enabled = 1 var/lethal = 0 diff --git a/code/game/machinery/porta_turret/portable_turret_construct.dm b/code/game/machinery/porta_turret/portable_turret_construct.dm index 4bc5db4d5e..db3a1fad60 100644 --- a/code/game/machinery/porta_turret/portable_turret_construct.dm +++ b/code/game/machinery/porta_turret/portable_turret_construct.dm @@ -13,6 +13,7 @@ icon = 'icons/obj/turrets.dmi' icon_state = "turret_frame" desc = "An unfinished covered turret frame." + anchored = FALSE density = TRUE var/build_step = PTURRET_UNSECURED //the current step in the building process var/finish_name = "turret" //the name applied to the product turret diff --git a/code/game/machinery/porta_turret/portable_turret_cover.dm b/code/game/machinery/porta_turret/portable_turret_cover.dm index 8abb5c3fb7..74acdd41e8 100644 --- a/code/game/machinery/porta_turret/portable_turret_cover.dm +++ b/code/game/machinery/porta_turret/portable_turret_cover.dm @@ -7,7 +7,6 @@ name = "turret" icon = 'icons/obj/turrets.dmi' icon_state = "turretCover" - anchored = TRUE layer = HIGH_OBJ_LAYER density = FALSE max_integrity = 80 diff --git a/code/game/machinery/quantum_pad.dm b/code/game/machinery/quantum_pad.dm index 7236e683a5..8962ab60a5 100644 --- a/code/game/machinery/quantum_pad.dm +++ b/code/game/machinery/quantum_pad.dm @@ -3,7 +3,6 @@ desc = "A bluespace quantum-linked telepad used for teleporting objects to other quantum pads." icon = 'icons/obj/telescience.dmi' icon_state = "qpad-idle" - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 200 active_power_usage = 5000 diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index ece35564bf..1cc5d7c835 100755 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -3,7 +3,6 @@ icon = 'icons/obj/stationobjs.dmi' icon_state = "recharger0" desc = "A charging dock for energy based weaponry." - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 4 active_power_usage = 250 diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 8cdae470cf..4ed541ef10 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/objects.dmi' icon_state = "borgcharger0" density = FALSE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 5 active_power_usage = 1000 diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index 08fcb1baa8..8cd31e75c6 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -6,7 +6,6 @@ icon = 'icons/obj/recycling.dmi' icon_state = "grinder-o0" layer = ABOVE_ALL_MOB_LAYER // Overhead - anchored = TRUE density = TRUE circuit = /obj/item/circuitboard/machine/recycler var/safety_mode = FALSE // Temporarily stops machine if it detects a mob @@ -181,7 +180,7 @@ // Remove and recycle the equipped items if(eat_victim_items) - for(var/obj/item/I in L.get_equipped_items()) + for(var/obj/item/I in L.get_equipped_items(TRUE)) if(L.dropItemToGround(I)) eat(I, sound=FALSE) diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 36793900bf..2cbf29642f 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -14,7 +14,6 @@ GLOBAL_LIST_EMPTY(allConsoles) /obj/machinery/requests_console name = "requests console" desc = "A console intended to send requests to different departments on the station." - anchored = TRUE icon = 'icons/obj/terminals.dmi' icon_state = "req_comp0" var/department = "Unknown" //The list of all departments on the station (Determined from this variable on each unit) Set this to the same thing if you want several consoles in one department @@ -303,8 +302,8 @@ GLOBAL_LIST_EMPTY(allConsoles) message = L.treat_message(message) minor_announce(message, "[department] Announcement:") GLOB.news_network.SubmitArticle(message, department, "Station Announcements", null) - log_talk(usr,"[key_name(usr)] has made a station announcement: [message]",LOGSAY) - message_admins("[key_name_admin(usr)] has made a station announcement.") + log_talk(usr,"[key_name(usr)] has made a station announcement from [src] at [AREACOORD(usr)]: [message]",LOGSAY) + message_admins("[ADMIN_LOOKUPFLW(usr)] has made a station announcement from [src] at [AREACOORD(usr)].") announceAuth = FALSE message = "" screen = 0 diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 302d1352e7..4447c9d00b 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -406,7 +406,6 @@ desc = "An energy shield." icon = 'icons/effects/effects.dmi' icon_state = "shieldwall" - anchored = TRUE density = TRUE resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF light_range = 3 diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm index 994e74d6eb..298587cdea 100644 --- a/code/game/machinery/slotmachine.dm +++ b/code/game/machinery/slotmachine.dm @@ -17,7 +17,6 @@ desc = "Gambling for the antisocial." icon = 'icons/obj/economy.dmi' icon_state = "slots1" - anchored = TRUE density = TRUE use_power = IDLE_POWER_USE idle_power_usage = 50 diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index e7d6bf0491..105d47a719 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -15,7 +15,6 @@ icon = 'icons/obj/status_display.dmi' icon_state = "frame" name = "status display" - anchored = TRUE density = FALSE use_power = IDLE_POWER_USE idle_power_usage = 10 @@ -227,7 +226,6 @@ desc = "A small screen which the AI can use to present itself." icon_state = "frame" name = "\improper AI display" - anchored = TRUE density = FALSE var/mode = 0 // 0 = Blank diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index e17c543154..2ff0a6758d 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -4,7 +4,6 @@ desc = "An industrial unit made to hold space suits. It comes with a built-in UV cauterization mechanism. A small warning label advises that organic matter should not be placed into the unit." icon = 'icons/obj/machines/suit_storage.dmi' icon_state = "close" - anchored = TRUE density = TRUE max_integrity = 250 diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 605676fc27..fb45d6029f 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -209,10 +209,9 @@ add_fingerprint(user) var/turf/bombturf = get_turf(src) - var/area/A = get_area(bombturf) if(payload && !istype(payload, /obj/item/bombcore/training)) - message_admins("[ADMIN_LOOKUPFLW(user)] has primed a [name] ([payload]) for detonation at [A.name] [ADMIN_JMP(bombturf)].") - log_game("[key_name(user)] has primed a [name] ([payload]) for detonation at [A.name][COORD(bombturf)]") + message_admins("[ADMIN_LOOKUPFLW(user)] has primed a [name] ([payload]) for detonation at [ADMIN_VERBOSEJMP(bombturf)].") + log_game("[key_name(user)] has primed a [name] ([payload]) for detonation at [AREACOORD(bombturf)]") payload.adminlog = "The [name] that [key_name(user)] had primed detonated!" ///Bomb Subtypes/// @@ -523,12 +522,11 @@ to_chat(user, "[existant] found, [detonated] triggered.") if(detonated) var/turf/T = get_turf(src) - var/area/A = get_area(T) detonated-- - var/log_str = "[ADMIN_LOOKUPFLW(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name] [ADMIN_JMP(T)]." + var/log_str = "[ADMIN_LOOKUPFLW(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [ADMIN_VERBOSEJMP(T)]." GLOB.bombers += log_str message_admins(log_str) - log_game("[key_name(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name][COORD(T)]") + log_game("[key_name(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [AREACOORD(T)]") detonated = 0 existant = 0 timer = world.time + BUTTON_COOLDOWN diff --git a/code/game/machinery/telecomms/machines/allinone.dm b/code/game/machinery/telecomms/machines/allinone.dm index 98f4bd9e2c..7a04869b93 100644 --- a/code/game/machinery/telecomms/machines/allinone.dm +++ b/code/game/machinery/telecomms/machines/allinone.dm @@ -8,7 +8,6 @@ icon_state = "comm_server" desc = "A compact machine used for portable subspace telecommuniations processing." density = TRUE - anchored = TRUE use_power = NO_POWER_USE idle_power_usage = 0 var/intercept = FALSE // If true, only works on the Syndicate frequency. diff --git a/code/game/machinery/telecomms/machines/broadcaster.dm b/code/game/machinery/telecomms/machines/broadcaster.dm index 89e2d38de1..0abe97c72e 100644 --- a/code/game/machinery/telecomms/machines/broadcaster.dm +++ b/code/game/machinery/telecomms/machines/broadcaster.dm @@ -13,7 +13,6 @@ GLOBAL_VAR_INIT(message_delay, 0) // To make sure restarting the recentmessages icon_state = "broadcaster" desc = "A dish-shaped machine used to broadcast processed subspace signals." density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 25 circuit = /obj/item/circuitboard/machine/telecomms/broadcaster diff --git a/code/game/machinery/telecomms/machines/bus.dm b/code/game/machinery/telecomms/machines/bus.dm index 6f9757eb45..b92ebc0d7d 100644 --- a/code/game/machinery/telecomms/machines/bus.dm +++ b/code/game/machinery/telecomms/machines/bus.dm @@ -13,7 +13,6 @@ icon_state = "bus" desc = "A mighty piece of hardware used to send massive amounts of data quickly." density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 50 netspeed = 40 diff --git a/code/game/machinery/telecomms/machines/hub.dm b/code/game/machinery/telecomms/machines/hub.dm index 7a481b2069..b23c443678 100644 --- a/code/game/machinery/telecomms/machines/hub.dm +++ b/code/game/machinery/telecomms/machines/hub.dm @@ -13,7 +13,6 @@ icon_state = "hub" desc = "A mighty piece of hardware used to send/receive massive amounts of data." density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 80 long_range_link = TRUE diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm index d3d4b871b0..45661add0d 100644 --- a/code/game/machinery/telecomms/machines/message_server.dm +++ b/code/game/machinery/telecomms/machines/message_server.dm @@ -11,7 +11,6 @@ icon_state = "blackbox" name = "Blackbox Recorder" density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 10 active_power_usage = 100 @@ -25,7 +24,6 @@ name = "Messaging Server" desc = "A machine that attempts to gather the secret knowledge of the universe." density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 10 active_power_usage = 100 diff --git a/code/game/machinery/telecomms/machines/processor.dm b/code/game/machinery/telecomms/machines/processor.dm index 8b7e0f8672..2362273469 100644 --- a/code/game/machinery/telecomms/machines/processor.dm +++ b/code/game/machinery/telecomms/machines/processor.dm @@ -11,7 +11,6 @@ icon_state = "processor" desc = "This machine is used to process large quantities of information." density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 30 circuit = /obj/item/circuitboard/machine/telecomms/processor diff --git a/code/game/machinery/telecomms/machines/receiver.dm b/code/game/machinery/telecomms/machines/receiver.dm index 527c0e6d8f..0fd3aec012 100644 --- a/code/game/machinery/telecomms/machines/receiver.dm +++ b/code/game/machinery/telecomms/machines/receiver.dm @@ -11,7 +11,6 @@ icon_state = "broadcast receiver" desc = "This machine has a dish-like shape and green lights. It is designed to detect and process subspace radio activity." density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 30 circuit = /obj/item/circuitboard/machine/telecomms/receiver diff --git a/code/game/machinery/telecomms/machines/relay.dm b/code/game/machinery/telecomms/machines/relay.dm index 1a436e56d5..9e6716278b 100644 --- a/code/game/machinery/telecomms/machines/relay.dm +++ b/code/game/machinery/telecomms/machines/relay.dm @@ -11,7 +11,6 @@ icon_state = "relay" desc = "A mighty piece of hardware used to send massive amounts of data far away." density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 30 netspeed = 5 diff --git a/code/game/machinery/telecomms/machines/server.dm b/code/game/machinery/telecomms/machines/server.dm index 18a498efe6..6bbd8cfd38 100644 --- a/code/game/machinery/telecomms/machines/server.dm +++ b/code/game/machinery/telecomms/machines/server.dm @@ -10,7 +10,6 @@ icon_state = "comm_server" desc = "A machine used to store data and network statistics." density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 15 circuit = /obj/item/circuitboard/machine/telecomms/server diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index cef200173c..3d217e52c5 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -2,7 +2,6 @@ name = "teleport" icon = 'icons/obj/machines/teleporter.dmi' density = TRUE - anchored = TRUE /obj/machinery/teleport/hub name = "teleporter hub" diff --git a/code/game/machinery/transformer.dm b/code/game/machinery/transformer.dm index 7624312f84..4fa40910a8 100644 --- a/code/game/machinery/transformer.dm +++ b/code/game/machinery/transformer.dm @@ -6,7 +6,6 @@ icon = 'icons/obj/recycling.dmi' icon_state = "separator-AO1" layer = ABOVE_ALL_MOB_LAYER // Overhead - anchored = TRUE density = FALSE var/transform_dead = 0 var/transform_standing = 0 diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index ab906f1bfa..8575a6f2dc 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/machines/washing_machine.dmi' icon_state = "wm_1_0" density = TRUE - anchored = TRUE state_open = TRUE var/busy = FALSE var/bloody_mess = 0 diff --git a/code/game/machinery/wishgranter.dm b/code/game/machinery/wishgranter.dm index aa238f9341..bec51d1d30 100644 --- a/code/game/machinery/wishgranter.dm +++ b/code/game/machinery/wishgranter.dm @@ -5,7 +5,6 @@ icon_state = "syndbeacon" use_power = NO_POWER_USE - anchored = TRUE density = TRUE var/charges = 1 diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm index c516571e2a..ea51693135 100644 --- a/code/game/mecha/combat/combat.dm +++ b/code/game/mecha/combat/combat.dm @@ -2,27 +2,4 @@ force = 30 internal_damage_threshold = 50 armor = list("melee" = 30, "bullet" = 30, "laser" = 15, "energy" = 20, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) - -/obj/mecha/combat/moved_inside(mob/living/carbon/human/H) - if(..()) - if(H.client && H.client.mouse_pointer_icon == initial(H.client.mouse_pointer_icon)) - H.client.mouse_pointer_icon = 'icons/mecha/mecha_mouse.dmi' - return 1 - else - return 0 - -/obj/mecha/combat/mmi_moved_inside(obj/item/mmi/mmi_as_oc,mob/user) - if(..()) - if(occupant.client && occupant.client.mouse_pointer_icon == initial(occupant.client.mouse_pointer_icon)) - occupant.client.mouse_pointer_icon = 'icons/mecha/mecha_mouse.dmi' - return 1 - else - return 0 - - -/obj/mecha/combat/go_out() - if(occupant && occupant.client && occupant.client.mouse_pointer_icon == 'icons/mecha/mecha_mouse.dmi') - occupant.client.mouse_pointer_icon = initial(occupant.client.mouse_pointer_icon) - ..() - - + mouse_pointer = 'icons/mecha/mecha_mouse.dmi' diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index 0d1651c491..b7796849f1 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -58,8 +58,8 @@ return var/list/obj/effect/portal/created = create_portal_pair(get_turf(src), target_turf, src, 300, 1, /obj/effect/portal/anom) var/turf/T = get_turf(target) - message_admins("[ADMIN_LOOKUPFLW(chassis.occupant)] used a Wormhole Generator in [ADMIN_COORDJMP(T)]",0,1) - log_game("[key_name(chassis.occupant)] used a Wormhole Generator in [COORD(T)]") + message_admins("[ADMIN_LOOKUPFLW(chassis.occupant)] used a Wormhole Generator in [ADMIN_VERBOSEJMP(T)]") + log_game("[key_name(chassis.occupant)] used a Wormhole Generator in [AREACOORD(T)]") src = null QDEL_LIST_IN(created, rand(150,300)) return 1 @@ -97,7 +97,7 @@ locked.throw_at(target, 14, 1.5) locked = null send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) - log_game("[key_name(chassis.occupant)] used a Gravitational Catapult to throw [locked]([COORD(orig)]) at [target]([COORD(targ)]).") + log_game("[key_name(chassis.occupant)] used a Gravitational Catapult to throw [locked] (From [AREACOORD(orig)]) at [target] ([AREACOORD(targ)]).") return TRUE else locked = null @@ -118,7 +118,7 @@ step_away(A,target) sleep(2) var/turf/T = get_turf(target) - log_game("[key_name(chassis.occupant)] used a Gravitational Catapult repulse wave on ([COORD(T)])") + log_game("[key_name(chassis.occupant)] used a Gravitational Catapult repulse wave on [AREACOORD(T)]") return TRUE diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 50d1f0be0d..fe10bf510b 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -186,8 +186,8 @@ log_message("Honked from [src.name]. HONK!") var/turf/T = get_turf(src) - message_admins("[ADMIN_LOOKUPFLW(chassis.occupant)] used a Mecha Honker in [ADMIN_COORDJMP(T)]",0,1) - log_game("[chassis.occupant.ckey]([chassis.occupant]) used a Mecha Honker in [COORD(T)]") + message_admins("[ADMIN_LOOKUPFLW(chassis.occupant)] used a Mecha Honker in [ADMIN_VERBOSEJMP(T)]") + log_game("[chassis.occupant.ckey]([chassis.occupant]) used a Mecha Honker in [AREACOORD(T)]") return 1 @@ -336,8 +336,8 @@ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/proj_init(var/obj/item/grenade/flashbang/F) var/turf/T = get_turf(src) - message_admins("[ADMIN_LOOKUPFLW(chassis.occupant)] fired a [src] in [ADMIN_COORDJMP(T)]",0,1) - log_game("[key_name(chassis.occupant)] fired a [src] [COORD(T)]") + message_admins("[ADMIN_LOOKUPFLW(chassis.occupant)] fired a [src] in [ADMIN_VERBOSEJMP(T)]") + log_game("[key_name(chassis.occupant)] fired a [src] in [AREACOORD(T)]") addtimer(CALLBACK(F, /obj/item/grenade/flashbang.proc/prime), det_time) /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/clusterbang //Because I am a heartless bastard -Sieve //Heartless? for making the poor man's honkblast? - Kaze diff --git a/code/game/mecha/mech_bay.dm b/code/game/mecha/mech_bay.dm index d2d9ac5e57..f198bfbd87 100644 --- a/code/game/mecha/mech_bay.dm +++ b/code/game/mecha/mech_bay.dm @@ -15,7 +15,6 @@ name = "mech bay power port" desc = "This port recharges a mech's internal power cell." density = TRUE - anchored = TRUE dir = EAST icon = 'icons/mecha/mech_bay.dmi' icon_state = "recharge_port" diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 526c808809..77b26c4ec0 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -4,7 +4,6 @@ name = "exosuit fabricator" desc = "Nothing is being built." density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 20 active_power_usage = 5000 diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 438c5fdb39..c6f070c23a 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -115,6 +115,7 @@ var/smashcooldown = 3 //deciseconds var/occupant_sight_flags = 0 //sight flags to give to the occupant (e.g. mech mining scanner gives meson-like vision) + var/mouse_pointer hud_possible = list (DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_TRACK_HUD) @@ -855,6 +856,7 @@ if(H && H.client && H in range(1)) occupant = H H.forceMove(src) + H.update_mouse_pointer() add_fingerprint(H) GrantActions(H, human_occupant=1) forceMove(loc) @@ -912,6 +914,7 @@ brainmob.reset_perspective(src) brainmob.remote_control = src brainmob.update_canmove() + brainmob.update_mouse_pointer() icon_state = initial(icon_state) update_icon() setDir(dir_in) @@ -981,6 +984,7 @@ setDir(dir_in) if(L && L.client) + L.update_mouse_pointer() L.client.change_view(CONFIG_GET(string/default_view)) zoom_mode = 0 diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm index 80e5877fe7..5618ca9a91 100644 --- a/code/game/objects/effects/effect_system/effects_smoke.dm +++ b/code/game/objects/effects/effect_system/effects_smoke.dm @@ -279,20 +279,19 @@ contained += " [reagent] " if(contained) contained = "\[[contained]\]" - var/area/A = get_area(location) - var/where = "[A.name] | [location.x], [location.y]" + var/where = "[AREACOORD(location)]" var/whereLink = "[where]" if(carry.my_atom.fingerprintslast) var/mob/M = get_mob_by_key(carry.my_atom.fingerprintslast) var/more = "" if(M) - more = "(?) (FLW) " - message_admins("Smoke: ([whereLink])[contained]. Key: [carry.my_atom.fingerprintslast][more].", 0, 1) + more = "[ADMIN_LOOKUPFLW(M)] " + message_admins("Smoke: ([whereLink])[contained]. Key: [more ? more : carry.my_atom.fingerprintslast].") log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last associated key is [carry.my_atom.fingerprintslast].") else - message_admins("Smoke: ([whereLink])[contained]. No associated key.", 0, 1) + message_admins("Smoke: ([whereLink])[contained]. No associated key.") log_game("A chemical smoke reaction has taken place in ([where])[contained]. No associated key.") diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index 65e216fd4c..e3a5c85719 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -153,7 +153,7 @@ if(!force && (!ismecha(M) && !istype(M, /obj/item/projectile) && M.anchored && !allow_anchored)) return if(ismegafauna(M)) - message_admins("[M] has used a portal at [ADMIN_COORDJMP(src)] made by [usr].") + message_admins("[M] has used a portal at [ADMIN_VERBOSEJMP(src)] made by [usr].") if(do_teleport(M, real_target, innate_accuracy_penalty)) if(istype(M, /obj/item/projectile)) var/obj/item/projectile/P = M diff --git a/code/game/objects/effects/spawners/xeno_egg_delivery.dm b/code/game/objects/effects/spawners/xeno_egg_delivery.dm index 593c953adf..a41f4b4c9b 100644 --- a/code/game/objects/effects/spawners/xeno_egg_delivery.dm +++ b/code/game/objects/effects/spawners/xeno_egg_delivery.dm @@ -7,14 +7,13 @@ /obj/effect/spawner/xeno_egg_delivery/Initialize(mapload) ..() var/turf/T = get_turf(src) - var/area/A = get_area(T) new /obj/structure/alien/egg(T) new /obj/effect/temp_visual/gravpush(T) playsound(T, 'sound/items/party_horn.ogg', 50, 1, -1) - message_admins("An alien egg has been delivered to [A] at [ADMIN_COORDJMP(T)].") - log_game("An alien egg has been delivered to [A] at [COORD(T)]") - var/message = "Attention [station_name()], we have entrusted you with a research specimen in [A]. Remember to follow all safety precautions when dealing with the specimen." + message_admins("An alien egg has been delivered to [ADMIN_VERBOSEJMP(T)].") + log_game("An alien egg has been delivered to [AREACOORD(T)]") + var/message = "Attention [station_name()], we have entrusted you with a research specimen in [get_area_name(T, TRUE)]. Remember to follow all safety precautions when dealing with the specimen." SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, /proc/addtimer, CALLBACK(GLOBAL_PROC, /.proc/print_command_report, message), announcement_time)) return INITIALIZE_HINT_QDEL diff --git a/code/game/objects/effects/temporary_visuals/cult.dm b/code/game/objects/effects/temporary_visuals/cult.dm index 3a17494871..0f9d7321af 100644 --- a/code/game/objects/effects/temporary_visuals/cult.dm +++ b/code/game/objects/effects/temporary_visuals/cult.dm @@ -47,6 +47,7 @@ /obj/effect/temp_visual/cult/turf/floor icon_state = "floorglow" duration = 5 + plane = FLOOR_PLANE /obj/effect/temp_visual/cult/portal icon_state = "space" diff --git a/code/game/objects/items/AI_modules.dm b/code/game/objects/items/AI_modules.dm index 5d83f3ac1e..5d41b90dc0 100644 --- a/code/game/objects/items/AI_modules.dm +++ b/code/game/objects/items/AI_modules.dm @@ -55,7 +55,7 @@ AI MODULES tot_laws++ if(tot_laws > CONFIG_GET(number/silicon_max_law_amount) && !bypass_law_amt_check)//allows certain boards to avoid this check, eg: reset to_chat(user, "Not enough memory allocated to [law_datum.owner ? law_datum.owner : "the AI core"]'s law processor to handle this amount of laws.") - message_admins("[key_name_admin(user)] tried to upload laws to [law_datum.owner ? key_name_admin(law_datum.owner) : "an AI core"] that would exceed the law cap.") + message_admins("[ADMIN_LOOKUPFLW(user)] tried to upload laws to [law_datum.owner ? ADMIN_LOOKUPFLW(law_datum.owner) : "an AI core"] that would exceed the law cap.") overflow = TRUE var/law2log = transmitInstructions(law_datum, user, overflow) //Freeforms return something extra we need to log @@ -69,8 +69,8 @@ AI MODULES var/ainame = law_datum.owner ? law_datum.owner.name : "empty AI core" var/aikey = law_datum.owner ? law_datum.owner.ckey : "null" GLOB.lawchanges.Add("[time] : [user.name]([user.key]) used [src.name] on [ainame]([aikey]).[law2log ? " The law specified [law2log]" : ""]") - log_law("[user.key]/[user.name] used [src.name] on [aikey]/([ainame]).[law2log ? " The law specified [law2log]" : ""]") - message_admins("[key_name_admin(user)] used [src.name] on [key_name_admin(law_datum.owner)].[law2log ? " The law specified [law2log]" : ""]") + log_law("[user.key]/[user.name] used [src.name] on [aikey]/([ainame]) from [AREACOORD(user)].[law2log ? " The law specified [law2log]" : ""]") + message_admins("[ADMIN_LOOKUPFLW(user)] used [src.name] on [ADMIN_LOOKUPFLW(law_datum.owner)] from [AREACOORD(user)].[law2log ? " The law specified [law2log]" : ""]") //The proc that actually changes the silicon's laws. /obj/item/aiModule/proc/transmitInstructions(datum/ai_laws/law_datum, mob/sender, overflow = FALSE) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index ed8db43bfa..8daf0f5202 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -72,8 +72,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(!isliving(M)) return if(lit && M.IgniteMob()) - message_admins("[key_name_admin(user)] set [key_name_admin(M)] on fire") - log_game("[key_name(user)] set [key_name(M)] on fire") + message_admins("[ADMIN_LOOKUPFLW(user)] set [key_name_admin(M)] on fire with [src] at [AREACOORD(user)]") + log_game("[key_name(user)] set [key_name(M)] on fire with [src] at [AREACOORD(user)]") var/obj/item/clothing/mask/cigarette/cig = help_light_cig(M) if(lit && cig && user.a_intent == INTENT_HELP) if(cig.lit) @@ -340,7 +340,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM desc = "A brown roll of tobacco and... well, you're not quite sure. This thing's huge!" icon_state = "cigaroff" icon_on = "cigaron" - icon_off = "cigaroff" + icon_off = "cigaroff" //make sure to add positional sprites in icons/obj/cigarettes.dmi if you add more. type_butt = /obj/item/cigbutt/cigarbutt throw_speed = 0.5 item_state = "cigaroff" @@ -492,11 +492,24 @@ CIGARETTE PACKETS ARE IN FANCY.DM slot_flags = ITEM_SLOT_BELT var/lit = 0 var/fancy = TRUE + var/overlay_state + var/overlay_list = list( + "plain", + "dame", + "thirteen", + "snake" + ) heat = 1500 resistance_flags = FIRE_PROOF light_color = LIGHT_COLOR_FIRE grind_results = list("iron" = 1, "welding_fuel" = 5, "oil" = 5) +/obj/item/lighter/Initialize() + . = ..() + if(!overlay_state) + overlay_state = pick(overlay_list) + update_icon() + /obj/item/lighter/suicide_act(mob/living/carbon/user) if (lit) user.visible_message("[user] begins holding \the [src]'s flame up to [user.p_their()] face! It looks like [user.p_theyre()] trying to commit suicide!") @@ -507,10 +520,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM return BRUTELOSS /obj/item/lighter/update_icon() - if(lit) - icon_state = "[initial(icon_state)]_on" - else - icon_state = "[initial(icon_state)]" + cut_overlays() + var/mutable_appearance/lighter_overlay = mutable_appearance(icon,"lighter_overlay_[overlay_state][lit ? "-on" : ""]") + icon_state = "[initial(icon_state)][lit ? "-on" : ""]" + add_overlay(lighter_overlay) /obj/item/lighter/ignition_effect(atom/A, mob/user) if(is_hot()) @@ -569,8 +582,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/lighter/attack(mob/living/carbon/M, mob/living/carbon/user) if(lit && M.IgniteMob()) - message_admins("[key_name_admin(user)] set [key_name_admin(M)] on fire") - log_game("[key_name(user)] set [key_name(M)] on fire") + message_admins("[ADMIN_LOOKUPFLW(user)] set [key_name_admin(M)] on fire with [src] at [AREACOORD(user)]") + log_game("[key_name(user)] set [key_name(M)] on fire with [src] at [AREACOORD(user)]") var/obj/item/clothing/mask/cigarette/cig = help_light_cig(M) if(lit && cig && user.a_intent == INTENT_HELP) if(cig.lit) @@ -597,19 +610,44 @@ CIGARETTE PACKETS ARE IN FANCY.DM desc = "A cheap-as-free lighter." icon_state = "lighter" fancy = FALSE + overlay_list = list( + "transp", + "tall", + "matte", + "zoppo" //u cant stoppo th zoppo + ) + var/lighter_color + var/list/color_list = list( //Same 16 color selection as electronic assemblies + COLOR_ASSEMBLY_BLACK, + COLOR_FLOORTILE_GRAY, + COLOR_ASSEMBLY_BGRAY, + COLOR_ASSEMBLY_WHITE, + COLOR_ASSEMBLY_RED, + COLOR_ASSEMBLY_ORANGE, + COLOR_ASSEMBLY_BEIGE, + COLOR_ASSEMBLY_BROWN, + COLOR_ASSEMBLY_GOLD, + COLOR_ASSEMBLY_YELLOW, + COLOR_ASSEMBLY_GURKHA, + COLOR_ASSEMBLY_LGREEN, + COLOR_ASSEMBLY_GREEN, + COLOR_ASSEMBLY_LBLUE, + COLOR_ASSEMBLY_BLUE, + COLOR_ASSEMBLY_PURPLE + ) /obj/item/lighter/greyscale/Initialize() . = ..() - add_atom_colour(color2hex(randomColor(1)), FIXED_COLOUR_PRIORITY) + if(!lighter_color) + lighter_color = pick(color_list) update_icon() /obj/item/lighter/greyscale/update_icon() cut_overlays() - var/mutable_appearance/base_overlay = mutable_appearance(icon,"[initial(icon_state)]_base") - base_overlay.appearance_flags = RESET_COLOR //the edging doesn't change color - if(lit) - base_overlay.icon_state = "[initial(icon_state)]_on" - add_overlay(base_overlay) + var/mutable_appearance/lighter_overlay = mutable_appearance(icon,"lighter_overlay_[overlay_state][lit ? "-on" : ""]") + icon_state = "[initial(icon_state)][lit ? "-on" : ""]" + lighter_overlay.color = lighter_color + add_overlay(lighter_overlay) /obj/item/lighter/greyscale/ignition_effect(atom/A, mob/user) if(is_hot()) @@ -619,9 +657,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/lighter/slime name = "slime zippo" desc = "A specialty zippo made from slimes and industry. Has a much hotter flame than normal." - icon_state = "slimezippo" + icon_state = "slighter" heat = 3000 //Blue flame! light_color = LIGHT_COLOR_CYAN + overlay_state = "slime" grind_results = list("iron" = 1, "welding_fuel" = 5, "pyroxadone" = 5) diff --git a/code/game/objects/items/devices/PDA/virus_cart.dm b/code/game/objects/items/devices/PDA/virus_cart.dm index dfbf6db88c..2544cc0154 100644 --- a/code/game/objects/items/devices/PDA/virus_cart.dm +++ b/code/game/objects/items/devices/PDA/virus_cart.dm @@ -75,10 +75,8 @@ if(!target.detonatable || prob(difficulty * 15) || (hidden_uplink)) U.show_message("An error flashes on your [src].", 1) else - var/turf/T = get_turf(target) - var/area/A = get_area(T) - message_admins("[!is_special_character(U) ? "Non-antag " : ""][key_name_admin(U)][ADMIN_FLW(U)] triggered a PDA explosion on [target.name] at [A] [ADMIN_COORDJMP(T)].") - var/message_log = "triggered a PDA explosion on [target.name] at at [A] [COORD(T)]." + message_admins("[!is_special_character(U) ? "Non-antag " : ""][ADMIN_LOOKUPFLW(U)] triggered a PDA explosion on [target.name] at [ADMIN_VERBOSEJMP(target)].") + var/message_log = "triggered a PDA explosion on [target.name] at at [AREACOORD(target)]." U.log_message(message_log, INDIVIDUAL_ATTACK_LOG) log_game("[key_name(U)] [message_log]") log_attack("[key_name(U)] [message_log]") diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index 063676ea62..a059c06284 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -142,20 +142,6 @@ detect_state = PROXIMITY_NEAR break -/obj/item/multitool/ai_detect/admin - desc = "Used for pulsing wires to test which to cut. Not recommended by doctors. Has a strange tag that says 'Grief in Safety'." //What else should I say for a meme item? - track_delay = 5 - -/obj/item/multitool/ai_detect/admin/multitool_detect() - var/turf/our_turf = get_turf(src) - for(var/mob/J in urange(rangewarning,our_turf)) - if(GLOB.admin_datums[J.ckey]) - detect_state = PROXIMITY_NEAR - var/turf/detect_turf = get_turf(J) - if(get_dist(our_turf, detect_turf) < rangealert) - detect_state = PROXIMITY_ON_SCREEN - break - /obj/item/multitool/cyborg name = "multitool" desc = "Optimised and stripped-down version of a regular multitool." diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index bc24e4bf83..737f71a978 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -22,7 +22,8 @@ /obj/item/paicard/Destroy() //Will stop people throwing friend pAIs into the singularity so they can respawn SSpai.pai_card_list -= src - QDEL_NULL(pai) + if (!QDELETED(pai)) + QDEL_NULL(pai) return ..() /obj/item/paicard/attack_self(mob/user) @@ -90,7 +91,7 @@ to_chat(pai, "Byte by byte you lose your sense of self.") to_chat(pai, "Your mental faculties leave you.") to_chat(pai, "oblivion... ") - removePersonality() + qdel(pai) if(href_list["wires"]) var/wire = text2num(href_list["wires"]) if(pai.radio) @@ -122,11 +123,6 @@ playsound(loc, 'sound/effects/pai_boot.ogg', 50, 1, -1) audible_message("\The [src] plays a cheerful startup noise!") -/obj/item/paicard/proc/removePersonality() - QDEL_NULL(pai) - cut_overlays() - add_overlay("pai-off") - /obj/item/paicard/proc/setEmotion(emotion) if(pai) src.cut_overlays() diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index 8d36fd9986..1a5c7a9b43 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -100,8 +100,8 @@ "[user] activates \the [src]!", \ "You activate \the [src].", "You hear a click.") - message_admins("Power sink activated by [ADMIN_LOOKUPFLW(user)] at [ADMIN_COORDJMP(src)]") - log_game("Power sink activated by [key_name(user)] at [COORD(src)]") + message_admins("Power sink activated by [ADMIN_LOOKUPFLW(user)] at [ADMIN_VERBOSEJMP(src)]") + log_game("Power sink activated by [key_name(user)] at [AREACOORD(src)]") set_mode(OPERATING) if(OPERATING) diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index c6028b1193..0ef20dea19 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -52,7 +52,7 @@ A.toggle_secure() //this calls update_icon(), which calls update_icon() on the holder (i.e. the bomb). GLOB.bombers += "[key_name(user)] attached a [item] to a transfer valve." - message_admins("[key_name_admin(user)] attached a [item] to a transfer valve.") + message_admins("[ADMIN_LOOKUPFLW(user)] attached a [item] to a transfer valve.") log_game("[key_name(user)] attached a [item] to a transfer valve.") attacher = user return @@ -184,41 +184,33 @@ if(!valve_open && tank_one && tank_two) valve_open = TRUE var/turf/bombturf = get_turf(src) - var/area/A = get_area(bombturf) - var/attachment = "no device" + var/attachment if(attached_device) if(istype(attached_device, /obj/item/assembly/signaler)) attachment = "[attached_device]" else attachment = attached_device - var/attacher_name = "" - if(!attacher) - attacher_name = "Unknown" - else - attacher_name = "[key_name_admin(attacher)]" + var/admin_attachment_message + var/attachment_message + if(attachment) + admin_attachment_message = " with [attachment] attached by [attacher ? ADMIN_LOOKUPFLW(attacher) : "Unknown"]" + attachment_message = " with [attachment] attached by [attacher ? key_name_admin(attacher) : "Unknown"]" - var/log_str1 = "Bomb valve opened in " - var/log_str2 = "with [attachment] attacher: [attacher_name]" + var/mob/bomber = get_mob_by_key(fingerprintslast) + var/admin_bomber_message + var/bomber_message + if(bomber) + admin_bomber_message = " - Last touched by: [ADMIN_LOOKUPFLW(bomber)]" + bomber_message = " - Last touched by: [key_name_admin(bomber)]" - var/log_attacher = "" - if(attacher) - log_attacher = "[ADMIN_QUE(attacher)] [ADMIN_FLW(attacher)]" - var/mob/mob = get_mob_by_key(src.fingerprintslast) - var/last_touch_info = "" - if(mob) - last_touch_info = "[ADMIN_QUE(mob)] [ADMIN_FLW(mob)]" + var/admin_bomb_message = "Bomb valve opened in [ADMIN_VERBOSEJMP(bombturf)][admin_attachment_message][admin_bomber_message]" + GLOB.bombers += admin_bomb_message + message_admins(admin_bomb_message, 0, 1) + log_game("Bomb valve opened in [AREACOORD(bombturf)][attachment_message][bomber_message]") - var/log_str3 = " Last touched by: [key_name_admin(mob)]" - - var/bomb_message = "[log_str1] [A.name][ADMIN_JMP(bombturf)] [log_str2][log_attacher] [log_str3][last_touch_info]" - - GLOB.bombers += bomb_message - - message_admins(bomb_message, 0, 1) - log_game("[log_str1] [A.name][COORD(bombturf)] [log_str2] [log_str3]") merge_gases() for(var/i in 1 to 6) addtimer(CALLBACK(src, .proc/update_icon), 20 + (i - 1) * 10) diff --git a/code/game/objects/items/dna_injector.dm b/code/game/objects/items/dna_injector.dm index 0e8c82d963..a4b9cf708b 100644 --- a/code/game/objects/items/dna_injector.dm +++ b/code/game/objects/items/dna_injector.dm @@ -38,7 +38,7 @@ HM.force_lose(M) for(var/datum/mutation/human/HM in add_mutations) if(HM.name == RACEMUT) - message_admins("[key_name_admin(user)] injected [key_name_admin(M)] with the [name] (MONKEY)") + message_admins("[ADMIN_LOOKUPFLW(user)] injected [key_name_admin(M)] with the [name] (MONKEY)") log_msg += " (MONKEY)" HM.force_give(M) if(fields) @@ -328,7 +328,7 @@ if((HM in M.dna.mutations) && !(M.dna.temporary_mutations[HM.name])) continue //Skip permanent mutations we already have. if(HM.name == RACEMUT && ishuman(M)) - message_admins("[key_name_admin(user)] injected [key_name_admin(M)] with the [name] (MONKEY)") + message_admins("[ADMIN_LOOKUPFLW(user)] injected [key_name_admin(M)] with the [name] (MONKEY)") log_msg += " (MONKEY)" M = HM.force_give(M) else diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm index 8bc1665a3f..bed7ba24e4 100644 --- a/code/game/objects/items/grenades/chem_grenade.dm +++ b/code/game/objects/items/grenades/chem_grenade.dm @@ -174,15 +174,13 @@ stage_change(EMPTY) return - var/areas_name = get_area_name(src, TRUE) - if(nadeassembly) var/mob/M = get_mob_by_ckey(assemblyattacher) var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast) - message_admins("grenade primed by an assembly, attached by [ADMIN_LOOKUPFLW(M)] and last touched by [ADMIN_LOOKUPFLW(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [areas_name] [ADMIN_JMP(detonation_turf)].") - log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [areas_name] [COORD(detonation_turf)]") + message_admins("grenade primed by an assembly, attached by [ADMIN_LOOKUPFLW(M)] and last touched by [ADMIN_LOOKUPFLW(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [ADMIN_VERBOSEJMP(detonation_turf)].") + log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [AREACOORD(detonation_turf)]") - log_game("A grenade detonated at [areas_name] [COORD(detonation_turf)]") + log_game("A grenade detonated at [AREACOORD(detonation_turf)]") update_mob() @@ -284,18 +282,15 @@ RC.reagents.trans_to(reactants, RC.reagents.total_volume*fraction, threatscale, 1, 1) chem_splash(get_turf(src), affected_area, list(reactants), ignition_temp, threatscale) + var/turf/DT = get_turf(src) if(nadeassembly) var/mob/M = get_mob_by_ckey(assemblyattacher) var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast) - var/turf/T = get_turf(src) - var/area/A = get_area(T) - message_admins("grenade primed by an assembly, attached by [key_name_admin(M)](?) (FLW) and last touched by [key_name_admin(last)](?) (FLW) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).") - log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z])") + message_admins("grenade primed by an assembly at [AREACOORD(DT)], attached by [ADMIN_LOOKUPFLW(M)] and last touched by [ADMIN_LOOKUPFLW(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]).") + log_game("grenade primed by an assembly at [AREACOORD(DT)], attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name])") else addtimer(CALLBACK(src, .proc/prime), det_time) - var/turf/DT = get_turf(src) - var/area/DA = get_area(DT) - log_game("A grenade detonated at [DA.name] ([DT.x], [DT.y], [DT.z])") + log_game("A grenade detonated at [AREACOORD(DT)]") diff --git a/code/game/objects/items/grenades/grenade.dm b/code/game/objects/items/grenades/grenade.dm index 6a08777e61..b627d42ab2 100644 --- a/code/game/objects/items/grenades/grenade.dm +++ b/code/game/objects/items/grenades/grenade.dm @@ -61,10 +61,10 @@ preprime(user) /obj/item/grenade/proc/log_grenade(mob/user, turf/T) - var/message = "[ADMIN_LOOKUPFLW(user)]) has primed \a [src] for detonation at [ADMIN_COORDJMP(T)]" + var/message = "[ADMIN_LOOKUPFLW(user)]) has primed \a [src] for detonation at [ADMIN_VERBOSEJMP(T)]" GLOB.bombers += message message_admins(message) - log_game("[key_name(user)] has primed \a [src] for detonation at [get_area_name(T, TRUE)] [COORD(T)].") + log_game("[key_name(user)] has primed \a [src] for detonation at [AREACOORD(T)].") /obj/item/grenade/proc/preprime(mob/user, delayoverride, msg = TRUE, volume = 60) var/turf/T = get_turf(src) diff --git a/code/game/objects/items/grenades/plastic.dm b/code/game/objects/items/grenades/plastic.dm index 28be94afb4..8e96e97389 100644 --- a/code/game/objects/items/grenades/plastic.dm +++ b/code/game/objects/items/grenades/plastic.dm @@ -111,8 +111,8 @@ return target = AM - message_admins("[ADMIN_LOOKUPFLW(user)] planted [name] on [target.name] at [ADMIN_COORDJMP(target)] with [det_time] second fuse",0,1) - log_game("[key_name(user)] planted [name] on [target.name] at [COORD(src)] with [det_time] second fuse") + message_admins("[ADMIN_LOOKUPFLW(user)] planted [name] on [target.name] at [ADMIN_VERBOSEJMP(target)] with [det_time] second fuse") + log_game("[key_name(user)] planted [name] on [target.name] at [AREACOORD(user)] with [det_time] second fuse") moveToNullspace() //Yep @@ -148,8 +148,8 @@ M.say(message_say) /obj/item/grenade/plastic/suicide_act(mob/user) - message_admins("[ADMIN_LOOKUPFLW(user)] suicided with [src] at [ADMIN_COORDJMP(user)]",0,1) - log_game("[key_name(user)] suicided with [src] at [COORD(user)]") + message_admins("[ADMIN_LOOKUPFLW(user)] suicided with [src] at [ADMIN_VERBOSEJMP(user)]") + log_game("[key_name(user)] suicided with [src] at [AREACOORD(user)]") user.visible_message("[user] activates [src] and holds it above [user.p_their()] head! It looks like [user.p_theyre()] going out with a bang!") shout_syndicate_crap(user) explosion(user,0,2,0) //Cheap explosion imitation because putting prime() here causes runtimes @@ -188,8 +188,8 @@ user.visible_message("[user] activates the [src.name] and holds it above [user.p_their()] head! It looks like [user.p_theyre()] going out with a bang!") shout_syndicate_crap(user) target = user - message_admins("[ADMIN_LOOKUPFLW(user)] suicided with [name] at [ADMIN_COORDJMP(src)]",0,1) - message_admins("[key_name(user)] suicided with [name] at ([x],[y],[z])") + message_admins("[ADMIN_LOOKUPFLW(user)] suicided with [name] at [ADMIN_VERBOSEJMP(src)]") + log_game("[key_name(user)] suicided with [name] at [AREACOORD(user)]") sleep(10) explode(get_turf(user)) user.gib(1, 1) @@ -228,10 +228,10 @@ src.target = AM moveToNullspace() - var/message = "[ADMIN_LOOKUPFLW(user)] planted [name] on [target.name] at [ADMIN_COORDJMP(target)] with [timer] second fuse" + var/message = "[ADMIN_LOOKUPFLW(user)] planted [name] on [target.name] at [ADMIN_VERBOSEJMP(target)] with [timer] second fuse" GLOB.bombers += message message_admins(message,0,1) - log_game("[key_name(user)] planted [name] on [target.name] at [COORD(target)] with [timer] second fuse") + log_game("[key_name(user)] planted [name] on [target.name] at [AREACOORD(target)] with [timer] second fuse") target.add_overlay(plastic_overlay, TRUE) to_chat(user, "You plant the bomb. Timer counting down from [timer].") diff --git a/code/game/objects/items/hot_potato.dm b/code/game/objects/items/hot_potato.dm index 9777deaf6d..c374ab94fd 100644 --- a/code/game/objects/items/hot_potato.dm +++ b/code/game/objects/items/hot_potato.dm @@ -139,8 +139,8 @@ detonation_timerid = addtimer(CALLBACK(src, .proc/detonate), delay, TIMER_STOPPABLE) START_PROCESSING(SSfastprocess, src) var/turf/T = get_turf(src) - message_admins("[user? "[ADMIN_LOOKUPFLW(user)] has primed [src]" : "A [src] has been primed"] (Timer:[delay],Explosive:[detonate_explosion],Range:[detonate_dev_range]/[detonate_heavy_range]/[detonate_light_range]/[detonate_fire_range]) for detonation at [COORD(T)]([T.loc])") - log_game("[user? "[user] has primed [src]" : "A [src] has been primed"] ([detonate_dev_range]/[detonate_heavy_range]/[detonate_light_range]/[detonate_fire_range]) for detonation at [COORD(T)]([T.loc])") + message_admins("[user? "[ADMIN_LOOKUPFLW(user)] has primed [src]" : "A [src] has been primed"] (Timer:[delay],Explosive:[detonate_explosion],Range:[detonate_dev_range]/[detonate_heavy_range]/[detonate_light_range]/[detonate_fire_range]) for detonation at [ADMIN_VERBOSEJMP(T)]") + log_game("[user? "[user] has primed [src]" : "A [src] has been primed"] ([detonate_dev_range]/[detonate_heavy_range]/[detonate_light_range]/[detonate_fire_range]) for detonation at [AREACOORD(T)]") active = TRUE /obj/item/hot_potato/proc/deactivate() diff --git a/code/game/objects/items/implants/implant_explosive.dm b/code/game/objects/items/implants/implant_explosive.dm index 0dc22c3d83..5aa0e31d08 100644 --- a/code/game/objects/items/implants/implant_explosive.dm +++ b/code/game/objects/items/implants/implant_explosive.dm @@ -41,8 +41,7 @@ to_chat(imp_in, "You activate your [name].") active = TRUE var/turf/boomturf = get_turf(imp_in) - var/area/A = get_area(boomturf) - message_admins("[ADMIN_LOOKUPFLW(imp_in)] has activated their [name] at [A.name] [ADMIN_JMP(boomturf)], with cause of [cause].") + message_admins("[ADMIN_LOOKUPFLW(imp_in)] has activated their [name] at [ADMIN_VERBOSEJMP(boomturf)], with cause of [cause].") //If the delay is short, just blow up already jeez if(delay <= 7) explosion(src,heavy,medium,weak,weak, flame_range = weak) diff --git a/code/game/objects/items/implants/implantchair.dm b/code/game/objects/items/implants/implantchair.dm index e8933b7151..a135cc3af4 100644 --- a/code/game/objects/items/implants/implantchair.dm +++ b/code/game/objects/items/implants/implantchair.dm @@ -5,7 +5,6 @@ icon_state = "implantchair" density = TRUE opacity = 0 - anchored = TRUE var/ready = TRUE var/replenishing = FALSE @@ -184,11 +183,11 @@ if(!user || !user.Adjacent(src)) return FALSE objective = stripped_input(usr,"What order do you want to imprint on [C]?","Enter the order","",120) - message_admins("[key_name_admin(user)] set brainwash machine objective to '[objective]'.") + message_admins("[ADMIN_LOOKUPFLW(user)] set brainwash machine objective to '[objective]'.") log_game("[key_name(user)] set brainwash machine objective to '[objective]'.") if(C.isloyal()) return FALSE brainwash(C, objective) - message_admins("[key_name_admin(user)] brainwashed [key_name_admin(C)] with objective '[objective]'.") + message_admins("[ADMIN_LOOKUPFLW(user)] brainwashed [key_name_admin(C)] with objective '[objective]'.") log_game("[key_name(user)] brainwashed [key_name(C)] with objective '[objective]'.") return TRUE \ No newline at end of file diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm index ae73692cd4..0d993da41b 100644 --- a/code/game/objects/items/plushes.dm +++ b/code/game/objects/items/plushes.dm @@ -141,8 +141,8 @@ user.visible_message("[user] slides [grenade] into [src].", \ "You slide [I] into [src].") grenade = I - var/turf/T = get_turf(user) - log_game("[key_name(user)] added a grenade ([I.name]) to [src] at [COORD(T)].") + var/turf/grenade_turf = get_turf(src) + log_game("[key_name(user)] added a grenade ([I.name]) to [src] at [AREACOORD(grenade_turf)].") return if(istype(I, /obj/item/toy/plush)) love(I, user) diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index be7507e3d2..300f18cbeb 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -172,8 +172,8 @@ GLOBAL_LIST_INIT(plasma_recipes, list ( \ /obj/item/stack/sheet/mineral/plasma/attackby(obj/item/W as obj, mob/user as mob, params) if(W.is_hot() > 300)//If the temperature of the object is over 300, then ignite var/turf/T = get_turf(src) - message_admins("Plasma sheets ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(T)]",0,1) - log_game("Plasma sheets ignited by [key_name(user)] in [COORD(T)]") + message_admins("Plasma sheets ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") + log_game("Plasma sheets ignited by [key_name(user)] in [AREACOORD(T)]") fire_act(W.is_hot()) else return ..() diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index a44e61f16a..a3e4bc112e 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -310,7 +310,7 @@ /obj/item/storage/bag/tray/update_icon() cut_overlays() for(var/obj/item/I in contents) - add_overlay(mutable_appearance(I.icon, I.icon_state)) + add_overlay(new /mutable_appearance(I)) /obj/item/storage/bag/tray/Entered() . = ..() diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 1c4ad03b01..249eb67c05 100755 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -326,6 +326,53 @@ GET_COMPONENT(STR, /datum/component/storage) STR.max_w_class = WEIGHT_CLASS_SMALL +/obj/item/storage/belt/military/snack + name = "tactical snack rig" + +/obj/item/storage/belt/military/snack/Initialize() + . = ..() + var/sponsor = pick("DonkCo", "Waffle Co.", "Roffle Co.", "Gorlax Marauders", "Tiger Cooperative") + desc = "A set of snack-tical webbing worn by athletes of the [sponsor] VR sports division." + +/obj/item/storage/belt/military/snack/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 6 + STR.max_w_class = WEIGHT_CLASS_SMALL + STR.can_hold = typecacheof(list( + /obj/item/reagent_containers/food/snacks, + /obj/item/reagent_containers/food/drinks + )) + + var/amount = 5 + var/rig_snacks + while(contents.len <= amount) + rig_snacks = pick(list( + /obj/item/reagent_containers/food/snacks/candy, + /obj/item/reagent_containers/food/drinks/dry_ramen, + /obj/item/reagent_containers/food/snacks/chips, + /obj/item/reagent_containers/food/snacks/sosjerky, + /obj/item/reagent_containers/food/snacks/syndicake, + /obj/item/reagent_containers/food/snacks/spacetwinkie, + /obj/item/reagent_containers/food/snacks/cheesiehonkers, + /obj/item/reagent_containers/food/snacks/nachos, + /obj/item/reagent_containers/food/snacks/cheesynachos, + /obj/item/reagent_containers/food/snacks/cubannachos, + /obj/item/reagent_containers/food/snacks/nugget, + /obj/item/reagent_containers/food/snacks/pastatomato, + /obj/item/reagent_containers/food/snacks/rofflewaffles, + /obj/item/reagent_containers/food/snacks/donkpocket, + /obj/item/reagent_containers/food/drinks/soda_cans/cola, + /obj/item/reagent_containers/food/drinks/soda_cans/space_mountain_wind, + /obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb, + /obj/item/reagent_containers/food/drinks/soda_cans/starkist, + /obj/item/reagent_containers/food/drinks/soda_cans/space_up, + /obj/item/reagent_containers/food/drinks/soda_cans/pwr_game, + /obj/item/reagent_containers/food/drinks/soda_cans/lemon_lime, + /obj/item/reagent_containers/food/drinks/drinkingglass/filled/nuka_cola + )) + new rig_snacks(src) + /obj/item/storage/belt/military/abductor name = "agent belt" desc = "A belt used by abductor agents." diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index f86188984f..5fc5af6779 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -154,7 +154,7 @@ SendSignal(COMSIG_TRY_STORAGE_TAKE, W, user) user.put_in_hands(W) contents -= W - to_chat(user, "You take a [icon_type] out of the pack.") + to_chat(user, "You take \a [W] out of the pack.") else to_chat(user, "There are no [icon_type]s left in the pack.") @@ -166,18 +166,20 @@ else icon_state = initial(icon_state) add_overlay("[icon_state]_open") - var/i = contents.len + var/cig_position = 1 for(var/C in contents) var/mutable_appearance/inserted_overlay = mutable_appearance(icon) - inserted_overlay.pixel_x = 1 * (i - 1) + if(istype(C, /obj/item/lighter/greyscale)) inserted_overlay.icon_state = "lighter_in" else if(istype(C, /obj/item/lighter)) inserted_overlay.icon_state = "zippo_in" else inserted_overlay.icon_state = "cigarette" + + inserted_overlay.icon_state = "[inserted_overlay.icon_state]_[cig_position]" add_overlay(inserted_overlay) - i-- + cig_position++ else cut_overlays() @@ -191,7 +193,7 @@ SendSignal(COMSIG_TRY_STORAGE_TAKE, W, M) M.equip_to_slot_if_possible(W, SLOT_WEAR_MASK) contents -= W - to_chat(user, "You take a [icon_type] out of the pack.") + to_chat(user, "You take \a [W] out of the pack.") else ..() else @@ -293,22 +295,27 @@ /obj/item/storage/fancy/cigarettes/cigars/update_icon() cut_overlays() if(fancy_open) - add_overlay("[icon_state]_open") - var/mutable_appearance/cigar_overlay = mutable_appearance(icon, icon_type) - for(var/c = contents.len, c >= 1, c--) - cigar_overlay.pixel_x = 4 * (c - 1) + icon_state = "[initial(icon_state)]_open" + + var/cigar_position = 1 //generate sprites for cigars in the box + for(var/obj/item/clothing/mask/cigarette/cigar/smokes in contents) + var/mutable_appearance/cigar_overlay = mutable_appearance(icon, "[smokes.icon_off]_[cigar_position]") add_overlay(cigar_overlay) + cigar_position++ + else - icon_state = "cigarcase" + icon_state = "[initial(icon_state)]" /obj/item/storage/fancy/cigarettes/cigars/cohiba name = "\improper cohiba robusto cigar case" desc = "A case of imported Cohiba cigars, renowned for their strong flavor." + icon_state = "cohibacase" spawn_type = /obj/item/clothing/mask/cigarette/cigar/cohiba /obj/item/storage/fancy/cigarettes/cigars/havana name = "\improper premium havanian cigar case" desc = "A case of classy Havanian cigars." + icon_state = "cohibacase" spawn_type = /obj/item/clothing/mask/cigarette/cigar/havana /* diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index b8eb2dcc00..70ec8243b2 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -291,7 +291,7 @@ resin_cooldown = TRUE R.remove_any(100) var/obj/effect/resin_container/A = new (get_turf(src)) - log_game("[key_name(user)] used Resin Launcher at [get_area(user)] [COORD(user)].") + log_game("[key_name(user)] used Resin Launcher at [AREACOORD(user)].") playsound(src,'sound/items/syringeproj.ogg',40,1) for(var/a=0, a<5, a++) step_towards(A, target) diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm index dc6fbfe25b..a16e3faa81 100644 --- a/code/game/objects/items/teleportation.dm +++ b/code/game/objects/items/teleportation.dm @@ -204,7 +204,7 @@ active_portal_pairs[created[1]] = created[2] var/obj/effect/portal/c1 = created[1] var/obj/effect/portal/c2 = created[2] - investigate_log("was used by [key_name(user)] at [COORD(user)] to create a portal pair with destinations [COORD(c1)] and [COORD(c2)].", INVESTIGATE_PORTAL) + investigate_log("was used by [key_name(user)] at [AREACOORD(user)] to create a portal pair with destinations [AREACOORD(c1)] and [AREACOORD(c2)].", INVESTIGATE_PORTAL) add_fingerprint(user) /obj/item/hand_tele/proc/on_portal_destroy(obj/effect/portal/P) diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm index 4875ef324c..c343abaa68 100644 --- a/code/game/objects/items/theft_tools.dm +++ b/code/game/objects/items/theft_tools.dm @@ -34,7 +34,7 @@ cooldown = world.time flick(pulseicon, src) radiation_pulse(src, 400, 2) - + /obj/item/nuke_core/suicide_act(mob/user) user.visible_message("[user] is rubbing [src] against [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!") return (TOXLOSS) diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index 229aa70ee0..08d0b8bd30 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -136,13 +136,13 @@ if(isliving(O)) var/mob/living/L = O if(L.IgniteMob()) - message_admins("[key_name_admin(user)] set [key_name_admin(L)] on fire") - log_game("[key_name(user)] set [key_name(L)] on fire") + message_admins("[ADMIN_LOOKUPFLW(user)] set [key_name_admin(L)] on fire with [src] at [AREACOORD(user)]") + log_game("[key_name(user)] set [key_name(L)] on fire with [src] at [AREACOORD(user)]") /obj/item/weldingtool/attack_self(mob/user) if(src.reagents.has_reagent("plasma")) - message_admins("[key_name_admin(user)] activated a rigged welder.") + message_admins("[ADMIN_LOOKUPFLW(user)] activated a rigged welder at [AREACOORD(user)].") explode() switched_on(user) if(welding) diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index 93b8635dc5..498416f73f 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -385,7 +385,7 @@ turns = 0 if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user))) return - if(!isprocessing) + if(!(datum_flags & DF_ISPROCESSING)) user.visible_message("[user] spins [src] around, and Ratvarian technology keeps it spinning FOREVER.", \ "Automated spinny chairs. The pinnacle of Ratvarian technology.") START_PROCESSING(SSfastprocess, src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm b/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm index ca64b7c537..995f858fb0 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm @@ -1,6 +1,7 @@ //The "BDPtarget" temp visual is created by the expressconsole, which in turn makes two things: a falling droppod animation, and the droppod itself. #define POD_STANDARD 0 #define POD_BLUESPACE 1 +#define POD_CENTCOM 2 //------------------------------------SUPPLY POD-------------------------------------// /obj/structure/closet/supplypod @@ -18,17 +19,25 @@ armor = list("melee" = 30, "bullet" = 50, "laser" = 50, "energy" = 100, "bomb" = 90, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80) anchored = TRUE anchorable = FALSE - var/generated = FALSE var/datum/supply_order/SupplyOrder + var/atom/other_delivery /obj/structure/closet/supplypod/bluespacepod name = "Bluespace Drop Pod" desc = "A Nanotrasen Bluespace drop pod. Teleports back to CentCom after delivery." icon_state = "bluespacepod" -/obj/structure/closet/supplypod/Initialize(mapload, datum/supply_order/so) +/obj/structure/closet/supplypod/bluespacepod/centcompod + name = "CentCom Drop Pod" + desc = "A Nanotrasen Bluespace drop pod, this one has been marked with Central Command's designations. Teleports back to Centcom after delivery." + icon_state = "centcompod" + +/obj/structure/closet/supplypod/Initialize(mapload, var/SO) . = ..() - SupplyOrder = so//uses Supply Order passed from expressconsole into BDPtarget + if(istype(SO, /datum/supply_order)) + SupplyOrder = SO//uses Supply Order passed from expressconsole into BDPtarget + else + other_delivery = SO//if the object is not a supply order, we force the object in the pod addtimer(CALLBACK(src, .proc/open), 30)//open 3seconds after appearing /obj/structure/closet/supplypod/update_icon() @@ -47,9 +56,10 @@ /obj/structure/closet/supplypod/open() var/turf/T = get_turf(src) opened = TRUE - if(!generated) - generated = TRUE + if(SupplyOrder) SupplyOrder.generate(T)//not called during populateContents as supplyorder generation requires a turf + if(other_delivery) + new other_delivery(T) update_icon() playsound(src, open_sound, 15, 1, -3) if(istype(src,/obj/structure/closet/supplypod/bluespacepod)) @@ -66,21 +76,24 @@ //------------------------------------FALLING SUPPLY POD-------------------------------------// /obj/effect/temp_visual/DPfall icon = 'icons/obj/2x2.dmi' - icon_state = "supplypod_falling" pixel_x = -16 pixel_y = -5 pixel_z = 200 desc = "Get out of the way!" layer = FLY_LAYER//that wasnt flying, that was falling with style! randomdir = FALSE + icon_state = "supplypod_falling" /obj/effect/temp_visual/DPfall/Initialize(var/dropLocation, var/podID) - if (podID == POD_BLUESPACE) + if (podID == POD_STANDARD) + icon_state = "supplypod_falling" + name = "Supply Drop Pod" + else if (podID == POD_BLUESPACE) icon_state = "bluespacepod_falling" name = "Bluespace Drop Pod" else - icon_state = "supplypod_falling" - name = "Supply Drop Pod" + icon_state = "centcompod_falling" + name = "CentCom Drop Pod" . = ..() //------------------------------------TEMPORARY_VISUAL-------------------------------------// @@ -91,22 +104,35 @@ light_range = 2 var/obj/effect/temp_visual/fallingPod -/obj/effect/DPtarget/Initialize(mapload, datum/supply_order/SO, var/podID) +/obj/effect/DPtarget/Initialize(mapload, var/SO, var/podID, var/target) . = ..() - addtimer(CALLBACK(src, .proc/beginLaunch, SO, podID), podID == POD_BLUESPACE ? 15 : 30)//standard pods take 3 seconds to come in, bluespace pods take 1.5 + var/delayTime = 30//default time is 30 seconds + switch(podID) + if(POD_BLUESPACE) + delayTime = 15 + if(POD_CENTCOM) + delayTime = 5//speedy delivery -/obj/effect/DPtarget/proc/beginLaunch(datum/supply_order/SO, var/podID) + addtimer(CALLBACK(src, .proc/beginLaunch, SO, podID), delayTime)//standard pods take 3 seconds to come in, bluespace pods take 1.5 + +/obj/effect/DPtarget/proc/beginLaunch(var/SO, var/podID) fallingPod = new /obj/effect/temp_visual/DPfall(drop_location(), podID) animate(fallingPod, pixel_z = 0, time = 3, easing = LINEAR_EASING)//make and animate a falling pod addtimer(CALLBACK(src, .proc/endLaunch, SO, podID), 3, TIMER_CLIENT_TIME)//fall 0.3seconds -/obj/effect/DPtarget/proc/endLaunch(datum/supply_order/SO, var/podID) - if (podID == POD_BLUESPACE) +/obj/effect/DPtarget/proc/endLaunch(var/SO, var/podID) + if (podID == POD_STANDARD) + new /obj/structure/closet/supplypod(drop_location(), SO)//pod is created + explosion(src,0,0,2, flame_range = 3) //less advanced equipment than bluespace pod, so larger explosion when landing + else if (podID == POD_BLUESPACE) new /obj/structure/closet/supplypod/bluespacepod(drop_location(), SO)//pod is created explosion(src,0,0,2, flame_range = 1) //explosion and camshake (shoutout to @cyberboss) else - new /obj/structure/closet/supplypod(drop_location(), SO)//pod is created - explosion(src,0,0,2, flame_range = 3) //less advanced equipment than bluespace pod, so larger explosion when landing + new /obj/structure/closet/supplypod/bluespacepod/centcompod(drop_location(), SO)//CentCom supplypods dont create explosions; instead they directly deal 40 fire damage to people on the turf + var/turf/T = get_turf(src) + T.hotspot_expose(700, 50, 1)//same as fireball + for(var/mob/living/M in T.contents) + M.adjustFireLoss(40) qdel(src) /obj/effect/DPtarget/Destroy() @@ -120,4 +146,4 @@ icon = 'icons/obj/module.dmi' icon_state = "cargodisk" item_state = "card-id" - w_class = WEIGHT_CLASS_SMALL + w_class = WEIGHT_CLASS_SMALL \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm index 3edbde93b7..f2d32b773e 100644 --- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm +++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm @@ -106,7 +106,11 @@ /obj/item/stack/sheet/plasteel, /obj/item/stack/sheet/mineral/titanium, /obj/item/stack/sheet/mineral/plastitanium, - /obj/item/stack/rods + /obj/item/stack/rods, + /obj/item/stack/sheet/bluespace_crystal, + /obj/item/stack/sheet/mineral/abductor, + /obj/item/stack/sheet/plastic, + /obj/item/stack/sheet/mineral/wood ) for(var/i = 0, i<2, i++) diff --git a/code/game/objects/structures/divine.dm b/code/game/objects/structures/divine.dm index 4ffc2fe060..a98b800e09 100644 --- a/code/game/objects/structures/divine.dm +++ b/code/game/objects/structures/divine.dm @@ -18,7 +18,7 @@ return to_chat(user, "You attempt to sacrifice [L] by invoking the sacrificial ritual.") L.gib() - message_admins("[key_name_admin(user)] has sacrificed [key_name_admin(L)] on the sacrifical altar.") + message_admins("[ADMIN_LOOKUPFLW(user)] has sacrificed [key_name_admin(L)] on the sacrifical altar at [AREACOORD(src)].") /obj/structure/healingfountain name = "healing fountain" diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index 842e540551..c877488601 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -245,8 +245,8 @@ /obj/structure/falsewall/plasma/attackby(obj/item/W, mob/user, params) if(W.is_hot() > 300) var/turf/T = get_turf(src) - message_admins("Plasma falsewall ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(T)]",0,1) - log_game("Plasma falsewall ignited by [key_name(user)] in [COORD(T)]") + message_admins("Plasma falsewall ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") + log_game("Plasma falsewall ignited by [key_name(user)] in [AREACOORD(T)]") burnbabyburn() else return ..() diff --git a/code/game/objects/structures/manned_turret.dm b/code/game/objects/structures/manned_turret.dm index d21379cb44..169132a158 100644 --- a/code/game/objects/structures/manned_turret.dm +++ b/code/game/objects/structures/manned_turret.dm @@ -6,6 +6,7 @@ icon = 'icons/obj/turrets.dmi' icon_state = "machinegun" can_buckle = TRUE + anchored = FALSE density = TRUE max_integrity = 100 buckle_lying = FALSE diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index f2635770c6..561cc8ef8c 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -204,8 +204,8 @@ /obj/structure/mineral_door/transparent/plasma/attackby(obj/item/W, mob/user, params) if(W.is_hot()) var/turf/T = get_turf(src) - message_admins("Plasma mineral door ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(T)]",0,1) - log_game("Plasma mineral door ignited by [key_name(user)] in [COORD(T)]") + message_admins("Plasma mineral door ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") + log_game("Plasma mineral door ignited by [key_name(user)] in [AREACOORD(T)]") TemperatureAct() else return ..() diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm index 1f7991e374..d22dbddd52 100644 --- a/code/game/objects/structures/statues.dm +++ b/code/game/objects/structures/statues.dm @@ -123,18 +123,18 @@ if(burn) var/turf/T = get_turf(src) if(Proj.firer) - message_admins("Plasma statue ignited by [ADMIN_LOOKUPFLW(Proj.firer)] in [ADMIN_COORDJMP(T)]",0,1) - log_game("Plasma statue ignited by [key_name(Proj.firer)] in [COORD(T)]") + message_admins("Plasma statue ignited by [ADMIN_LOOKUPFLW(Proj.firer)] in [ADMIN_VERBOSEJMP(T)]") + log_game("Plasma statue ignited by [key_name(Proj.firer)] in [AREACOORD(T)]") else - message_admins("Plasma statue ignited by [Proj]. No known firer, in [ADMIN_COORDJMP(T)]",0,1) - log_game("Plasma statue ignited by [Proj] in [COORD(T)]. No known firer.") + message_admins("Plasma statue ignited by [Proj]. No known firer, in [ADMIN_VERBOSEJMP(T)]") + log_game("Plasma statue ignited by [Proj] in [AREACOORD(T)]. No known firer.") ..() /obj/structure/statue/plasma/attackby(obj/item/W, mob/user, params) if(W.is_hot() > 300)//If the temperature of the object is over 300, then ignite var/turf/T = get_turf(src) - message_admins("Plasma statue ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(T)]",0,1) - log_game("Plasma statue ignited by [key_name(user)] in [COORD(T)]") + message_admins("Plasma statue ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") + log_game("Plasma statue ignited by [key_name(user)] in [AREACOORD(T)]") ignite(W.is_hot()) else return ..() diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 95c1cafd5d..0d7500ebf2 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -381,7 +381,7 @@ obj_integrity = max_integrity /obj/structure/table/bronze - name = "brass table" + name = "bronze table" desc = "A solid table made out of bronze." icon = 'icons/obj/smooth_structures/brass_table.dmi' icon_state = "brass_table" diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 929e6e1520..4798aae883 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -210,7 +210,6 @@ icon = 'icons/obj/watercloset.dmi' icon_state = "shower" density = FALSE - anchored = TRUE use_power = NO_POWER_USE var/on = FALSE var/obj/effect/mist/mymist = null diff --git a/code/game/shuttle_engines.dm b/code/game/shuttle_engines.dm index 396358ae47..0f68e68b7b 100644 --- a/code/game/shuttle_engines.dm +++ b/code/game/shuttle_engines.dm @@ -42,7 +42,7 @@ switch(state) if(ENGINE_UNWRENCHED) to_chat(user, "The [src.name] needs to be wrenched to the floor!") - if(EM_SECURED) + if(ENGINE_WRENCHED) if(!I.tool_start_check(user, amount=0)) return TRUE @@ -55,7 +55,7 @@ to_chat(user, "You weld \the [src] to the floor.") alter_engine_power(engine_power) - if(EM_WELDED) + if(ENGINE_WELDED) if(!I.tool_start_check(user, amount=0)) return TRUE @@ -149,3 +149,8 @@ bound_width = 96 bound_height = 96 appearance_flags = 0 + +#undef ENGINE_UNWRENCHED +#undef ENGINE_WRENCHED +#undef ENGINE_WELDED +#undef ENGINE_WELDTIME diff --git a/code/game/turfs/closed.dm b/code/game/turfs/closed.dm index 657bf89a34..db1dba66cf 100644 --- a/code/game/turfs/closed.dm +++ b/code/game/turfs/closed.dm @@ -36,6 +36,14 @@ icon = 'icons/turf/shuttleold.dmi' icon_state = "block" +/turf/closed/indestructible/sandstone + name = "sandstone wall" + desc = "A wall with sandstone plating. Rough." + icon = 'icons/turf/walls/sandstone_wall.dmi' + icon_state = "sandstone" + baseturfs = /turf/closed/indestructible/sandstone + smooth = SMOOTH_TRUE + /turf/closed/indestructible/oldshuttle/corner icon_state = "corner" @@ -152,4 +160,4 @@ name = "wall" desc = "A wall made out of a strange metal. The squares on it pulse in a predictable pattern." icon = 'icons/turf/walls/hierophant_wall.dmi' - icon_state = "wall" \ No newline at end of file + icon_state = "wall" diff --git a/code/game/turfs/simulated/floor/mineral_floor.dm b/code/game/turfs/simulated/floor/mineral_floor.dm index e2e3356684..0ac7154592 100644 --- a/code/game/turfs/simulated/floor/mineral_floor.dm +++ b/code/game/turfs/simulated/floor/mineral_floor.dm @@ -44,8 +44,8 @@ /turf/open/floor/mineral/plasma/attackby(obj/item/W, mob/user, params) if(W.is_hot() > 300)//If the temperature of the object is over 300, then ignite - message_admins("Plasma flooring was ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(src)]",0,1) - log_game("Plasma flooring was ignited by [key_name(user)] in [COORD(src)]") + message_admins("Plasma flooring was ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(src)]") + log_game("Plasma flooring was ignited by [key_name(user)] in [AREACOORD(src)]") ignite(W.is_hot()) return ..() diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm index 650a66adf1..f7cea96a3f 100644 --- a/code/game/turfs/simulated/floor/misc_floor.dm +++ b/code/game/turfs/simulated/floor/misc_floor.dm @@ -243,7 +243,7 @@ /turf/open/floor/bronze - name = "clockwork floor" + name = "bronze floor" desc = "Some heavy bronze tiles." icon = 'icons/obj/clockwork_objects.dmi' icon_state = "clockwork_floor" diff --git a/code/game/turfs/simulated/floor/plating/misc_plating.dm b/code/game/turfs/simulated/floor/plating/misc_plating.dm index b21e361639..a04bd818ad 100644 --- a/code/game/turfs/simulated/floor/plating/misc_plating.dm +++ b/code/game/turfs/simulated/floor/plating/misc_plating.dm @@ -119,6 +119,9 @@ icon_state = "water" baseturfs = /turf/open/floor/plating/beach/water +/turf/open/floor/plating/beach/coastline_t/sandwater_inner + icon_state = "sandwater_inner" + baseturfs = /turf/open/floor/plating/beach/coastline_t/sandwater_inner /turf/open/floor/plating/ironsand name = "iron sand" diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm index 9928f9cdc5..5393df669b 100644 --- a/code/game/turfs/simulated/minerals.dm +++ b/code/game/turfs/simulated/minerals.dm @@ -451,20 +451,19 @@ stage = GIBTONITE_ACTIVE visible_message("There was gibtonite inside! It's going to explode!") var/turf/bombturf = get_turf(src) - var/area/A = get_area(bombturf) var/notify_admins = 0 if(z != 5) notify_admins = 1 if(!triggered_by_explosion) - message_admins("[ADMIN_LOOKUPFLW(user)] has triggered a gibtonite deposit reaction at [A.name] [ADMIN_JMP(bombturf)].") + message_admins("[ADMIN_LOOKUPFLW(user)] has triggered a gibtonite deposit reaction at [ADMIN_VERBOSEJMP(bombturf)].") else - message_admins("An explosion has triggered a gibtonite deposit reaction at [A.name] [ADMIN_JMP(bombturf)].") + message_admins("An explosion has triggered a gibtonite deposit reaction at [ADMIN_VERBOSEJMP(bombturf)].") if(!triggered_by_explosion) - log_game("[key_name(user)] has triggered a gibtonite deposit reaction at [A.name] [COORD(bombturf)].") + log_game("[key_name(user)] has triggered a gibtonite deposit reaction at [AREACOORD(bombturf)].") else - log_game("An explosion has triggered a gibtonite deposit reaction at [A.name] [COORD(bombturf)]") + log_game("An explosion has triggered a gibtonite deposit reaction at [AREACOORD(bombturf)]") countdown(notify_admins) diff --git a/code/game/turfs/simulated/wall/mineral_walls.dm b/code/game/turfs/simulated/wall/mineral_walls.dm index c8ec3a5c5f..94e5a0a063 100644 --- a/code/game/turfs/simulated/wall/mineral_walls.dm +++ b/code/game/turfs/simulated/wall/mineral_walls.dm @@ -94,8 +94,8 @@ /turf/closed/wall/mineral/plasma/attackby(obj/item/W, mob/user, params) if(W.is_hot() > 300)//If the temperature of the object is over 300, then ignite - message_admins("Plasma wall ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(src)]",0,1) - log_game("Plasma wall ignited by [key_name(user)] in [COORD(src)]") + message_admins("Plasma wall ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(src)]") + log_game("Plasma wall ignited by [key_name(user)] in [AREACOORD(src)]") ignite(W.is_hot()) return ..() diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 00ac813a11..9cc2d67020 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -438,3 +438,22 @@ /turf/AllowDrop() return TRUE + +/turf/proc/add_vomit_floor(mob/living/carbon/M, toxvomit = 0) + var/obj/effect/decal/cleanable/vomit/V = new /obj/effect/decal/cleanable/vomit(src, M.get_static_viruses()) + // If the vomit combined, apply toxicity and reagents to the old vomit + if (QDELETED(V)) + V = locate() in src + // Make toxins vomit look different + if(toxvomit) + V.icon_state = "vomittox_[pick(1,4)]" + if(M.reagents) + clear_reagents_to_vomit_pool(M,V) + +/proc/clear_reagents_to_vomit_pool(mob/living/carbon/M, obj/effect/decal/cleanable/vomit/V) + M.reagents.trans_to(V, M.reagents.total_volume / 10) + for(var/datum/reagent/R in M.reagents.reagent_list) //clears the stomach of anything that might be digested as food + if(istype(R, /datum/reagent/consumable)) + var/datum/reagent/consumable/nutri_check = R + if(nutri_check.nutriment_factor >0) + M.reagents.remove_reagent(R.id,R.volume) diff --git a/code/modules/NTNet/relays.dm b/code/modules/NTNet/relays.dm index ab482f1f16..eaf2aa466b 100644 --- a/code/modules/NTNet/relays.dm +++ b/code/modules/NTNet/relays.dm @@ -7,7 +7,6 @@ idle_power_usage = 100 icon = 'icons/obj/machines/telecomms.dmi' icon_state = "bus" - anchored = TRUE density = TRUE circuit = /obj/item/circuitboard/machine/ntnet_relay var/datum/ntnet/NTNet = null // This is mostly for backwards reference and to allow varedit modifications from ingame. diff --git a/code/modules/VR/vr_sleeper.dm b/code/modules/VR/vr_sleeper.dm index 21db27ce19..dd89a08c9e 100644 --- a/code/modules/VR/vr_sleeper.dm +++ b/code/modules/VR/vr_sleeper.dm @@ -8,7 +8,6 @@ icon = 'icons/obj/machines/sleeper.dmi' icon_state = "sleeper" state_open = TRUE - anchored = TRUE occupant_typecache = list(/mob/living/carbon/human) // turned into typecache in Initialize circuit = /obj/item/circuitboard/machine/vr_sleeper var/you_die_in_the_game_you_die_for_real = FALSE @@ -179,7 +178,7 @@ vr_human.vr_sleeper = null // Prevents race condition where a new human could get created out of order and set to null. QDEL_NULL(vr_human) -/obj/machinery/vr_sleeper/proc/emagNotify() +/obj/machinery/vr_sleeper/proc/emagNotify() if(vr_human) vr_human.Dizzy(10) @@ -199,10 +198,10 @@ vr_category = "team_1" /obj/effect/landmark/vr_spawn/team_2 - vr_category = "team_2" + vr_category = "team_2" /obj/effect/landmark/vr_spawn/admin - vr_category = "event" + vr_category = "event" /obj/effect/landmark/vr_spawn/syndicate // Multiple missions will use syndicate gear vr_outfit = /datum/outfit/vr/syndicate diff --git a/code/modules/admin/DB_ban/functions.dm b/code/modules/admin/DB_ban/functions.dm index 90eac62b16..09d0d5d2e2 100644 --- a/code/modules/admin/DB_ban/functions.dm +++ b/code/modules/admin/DB_ban/functions.dm @@ -266,7 +266,7 @@ var/datum/DBQuery/query_edit_ban_reason = SSdbcore.NewQuery("UPDATE [format_table_name("ban")] SET reason = '[value]', edits = CONCAT(edits,'- [eckey] changed ban reason from \\\"[reason]\\\" to \\\"[value]\\\"
') WHERE id = [banid]") if(!query_edit_ban_reason.warn_execute()) return - message_admins("[key_name_admin(usr)] has edited a ban for [pckey]'s reason from [reason] to [value]",1) + message_admins("[key_name_admin(usr)] has edited a ban for [pckey]'s reason from [reason] to [value]") if("duration") if(!value) value = input("Insert the new duration (in minutes) for [pckey]'s ban", "New Duration", "[duration]", null) as null|num @@ -277,7 +277,7 @@ var/datum/DBQuery/query_edit_ban_duration = SSdbcore.NewQuery("UPDATE [format_table_name("ban")] SET duration = [value], edits = CONCAT(edits,'- [eckey] changed ban duration from [duration] to [value]
'), expiration_time = DATE_ADD(bantime, INTERVAL [value] MINUTE) WHERE id = [banid]") if(!query_edit_ban_duration.warn_execute()) return - message_admins("[key_name_admin(usr)] has edited a ban for [pckey]'s duration from [duration] to [value]",1) + message_admins("[key_name_admin(usr)] has edited a ban for [pckey]'s duration from [duration] to [value]") if("unban") if(alert("Unban [pckey]?", "Unban?", "Yes", "No") == "Yes") DB_ban_unban_by_id(banid) @@ -328,7 +328,7 @@ var/datum/DBQuery/query_unban = SSdbcore.NewQuery(sql_update) if(!query_unban.warn_execute()) return - message_admins("[key_name_admin(usr)] has lifted [pckey]'s ban.",1) + message_admins("[key_name_admin(usr)] has lifted [pckey]'s ban.") /client/proc/DB_ban_panel() set category = "Admin" diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index a37e7217af..7958e8e943 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -29,7 +29,7 @@ body += "Options panel for [M]" if(M.client) body += " played by [M.client] " - body += "\[[M.client.holder ? M.client.holder.rank : "Player"]\]" + body += "\[[M.client.holder ? M.client.holder.rank : "Player"]\]" if(CONFIG_GET(flag/use_exp_tracking)) body += "\[" + M.client.get_exp_living() + "\]" @@ -63,7 +63,11 @@ body += "PM - " body += "SM - " body += "FLW - " - body += "LOGS\]
" + //Default to client logs if available + var/source = LOGSRC_MOB + if(M.client) + source = LOGSRC_CLIENT + body += "LOGS\]
" body += "Mob type = [M.type]

" diff --git a/code/modules/admin/permissionedit.dm b/code/modules/admin/permissionedit.dm index e237a18f6a..8c608a6e5e 100644 --- a/code/modules/admin/permissionedit.dm +++ b/code/modules/admin/permissionedit.dm @@ -125,6 +125,7 @@ var/use_db var/task = href_list["editrights"] var/skip + var/legacy_only if(task == "activate" || task == "deactivate" || task == "sync") skip = TRUE if(!CONFIG_GET(flag/admin_legacy_system) && CONFIG_GET(flag/protect_legacy_admins) && task == "rank") @@ -135,10 +136,9 @@ if(D.rank in GLOB.protected_ranks) to_chat(usr, "Editing the flags of this rank is blocked by server configuration.") return - if(CONFIG_GET(flag/load_legacy_ranks_only) && (task == "rank" || task == "permissions")) - to_chat(usr, "Database rank loading is disabled, only temporary changes can be made to an admin's rank or permissions.") - use_db = FALSE - skip = TRUE + if(CONFIG_GET(flag/load_legacy_ranks_only) && (task == "add" || task == "rank" || task == "permissions")) + to_chat(usr, "Database rank loading is disabled, only temporary changes can be made to a rank's permissions and permanently creating a new rank is blocked.") + legacy_only = TRUE if(check_rights(R_DBRANKS, FALSE)) if(!skip) if(!SSdbcore.Connect()) @@ -165,16 +165,16 @@ return switch(task) if("add") - admin_ckey = add_admin(null, use_db) + admin_ckey = add_admin(admin_ckey, use_db) if(!admin_ckey) return - change_admin_rank(admin_ckey, use_db) + change_admin_rank(admin_ckey, use_db, null, legacy_only) if("remove") remove_admin(admin_ckey, use_db, D) if("rank") - change_admin_rank(admin_ckey, use_db, D) + change_admin_rank(admin_ckey, use_db, D, legacy_only) if("permissions") - change_admin_flags(admin_ckey, use_db, D) + change_admin_flags(admin_ckey, use_db, D, legacy_only) if("activate") force_readmin(admin_ckey, D) if("deactivate") @@ -240,9 +240,11 @@ log_admin("[key_name(usr)] forcefully deadmined [admin_ckey]") D.deactivate() //after logs so the deadmined admin can see the message. -/datum/admins/proc/change_admin_rank(admin_ckey, use_db, datum/admins/D) +/datum/admins/proc/change_admin_rank(admin_ckey, use_db, datum/admins/D, legacy_only) var/datum/admin_rank/R - var/list/rank_names = list("*New Rank*") + var/list/rank_names = list() + if(!use_db || (use_db && !legacy_only)) + rank_names += "*New Rank*" for(R in GLOB.admin_ranks) if((R.rights & usr.client.holder.rank.can_edit_rights) == R.rights) rank_names[R.name] = R @@ -297,7 +299,7 @@ message_admins("[key_name_admin(usr)] edited the admin rank of [admin_ckey] to [new_rank] [use_db ? "permanently" : "temporarily"]") log_admin("[key_name(usr)] edited the admin rank of [admin_ckey] to [new_rank] [use_db ? "permanently" : "temporarily"]") -/datum/admins/proc/change_admin_flags(admin_ckey, use_db, datum/admins/D) +/datum/admins/proc/change_admin_flags(admin_ckey, use_db, datum/admins/D, legacy_only) var/new_flags = input_bitfield(usr, "Include permission flags
[use_db ? "This will affect ALL admins with this rank." : "This will affect only the current admin [admin_ckey]"]", "admin_flags", D.rank.include_rights, 350, 590, allowed_edit_list = usr.client.holder.rank.can_edit_rights) if(isnull(new_flags)) return @@ -307,7 +309,7 @@ var/new_can_edit_flags = input_bitfield(usr, "Editable permission flags
These are the flags this rank is allowed to edit if they have access to the permissions panel.
They will be unable to modify admins to a rank that has a flag not included here.
[use_db ? "This will affect ALL admins with this rank." : "This will affect only the current admin [admin_ckey]"]", "admin_flags", D.rank.can_edit_rights, 350, 710, allowed_edit_list = usr.client.holder.rank.can_edit_rights) if(isnull(new_can_edit_flags)) return - if(use_db) + if(use_db || legacy_only) var/old_flags var/old_exclude_flags var/old_can_edit_flags @@ -351,6 +353,7 @@ D.rank.rights = new_flags &= ~new_exclude_flags D.rank.include_rights = new_flags D.rank.exclude_rights = new_exclude_flags + D.rank.can_edit_rights = new_can_edit_flags var/client/C = GLOB.directory[admin_ckey] //find the client with the specified ckey (if they are logged in) D.associate(C) //link up with the client and add verbs message_admins("[key_name_admin(usr)] edited the permissions of [use_db ? " rank [D.rank.name] permanently" : "[admin_ckey] temporarily"]") diff --git a/code/modules/admin/sound_emitter.dm b/code/modules/admin/sound_emitter.dm index 298e38f295..028af313b0 100644 --- a/code/modules/admin/sound_emitter.dm +++ b/code/modules/admin/sound_emitter.dm @@ -143,7 +143,7 @@ if(M.client.prefs.toggles & SOUND_MIDI) M.playsound_local(M, sound_file, sound_volume, FALSE, channel = CHANNEL_ADMIN, pressure_affected = FALSE) if(user) - log_admin("[ADMIN_LOOKUPFLW(user)] activated a sound emitter with file \"[sound_file]\" at [COORD(src)]") + log_admin("[ADMIN_LOOKUPFLW(user)] activated a sound emitter with file \"[sound_file]\" at [AREACOORD(src)]") flick("shield1", src) #undef SOUND_EMITTER_LOCAL diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index b4d92b1fbe..0eacdd5c5e 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1905,7 +1905,7 @@ to_chat(usr, "This can only be used on instances of type /mob.") return - show_individual_logging_panel(M, href_list["log_type"]) + show_individual_logging_panel(M, href_list["log_src"], href_list["log_type"]) else if(href_list["languagemenu"]) if(!check_rights(R_ADMIN)) return diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm index 0136efc3b3..6dcd4e98ca 100644 --- a/code/modules/admin/verbs/adminjump.dm +++ b/code/modules/admin/verbs/adminjump.dm @@ -20,8 +20,8 @@ to_chat(src, "Nowhere to jump to!") return usr.forceMove(T) - log_admin("[key_name(usr)] jumped to [A]") - message_admins("[key_name_admin(usr)] jumped to [A]") + log_admin("[key_name(usr)] jumped to [AREACOORD(A)]") + message_admins("[key_name_admin(usr)] jumped to [AREACOORD(A)]") SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Area") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/jumptoturf(turf/T in world) @@ -31,8 +31,8 @@ to_chat(src, "Only administrators may use this command.") return - log_admin("[key_name(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]") - message_admins("[key_name_admin(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]") + log_admin("[key_name(usr)] jumped to [AREACOORD(T)]") + message_admins("[key_name_admin(usr)] jumped to [AREACOORD(T)]") usr.forceMove(T) SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Turf") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return @@ -46,7 +46,7 @@ return log_admin("[key_name(usr)] jumped to [key_name(M)]") - message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]") + message_admins("[key_name_admin(usr)] jumped to [ADMIN_LOOKUPFLW(M)] at [AREACOORD(M)]") if(src.mob) var/mob/A = src.mob var/turf/T = get_turf(M) @@ -89,7 +89,7 @@ return var/mob/M = selection.mob log_admin("[key_name(usr)] jumped to [key_name(M)]") - message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]") + message_admins("[key_name_admin(usr)] jumped to [ADMIN_LOOKUPFLW(M)]") usr.forceMove(M.loc) @@ -104,8 +104,8 @@ return var/atom/loc = get_turf(usr) - log_admin("[key_name(usr)] teleported [key_name(M)] to [COORD(loc)]") - var/msg = "[key_name_admin(usr)] teleported [key_name_admin(M)] to [ADMIN_COORDJMP(loc)]" + log_admin("[key_name(usr)] teleported [key_name(M)] to [AREACOORD(loc)]") + var/msg = "[key_name_admin(usr)] teleported [ADMIN_LOOKUPFLW(M)] to [ADMIN_VERBOSEJMP(loc)]" message_admins(msg) admin_ticket_log(M, msg) M.forceMove(loc) @@ -131,7 +131,7 @@ if(!M) return log_admin("[key_name(usr)] teleported [key_name(M)]") - var/msg = "[key_name_admin(usr)] teleported [key_name_admin(M)]" + var/msg = "[key_name_admin(usr)] teleported [ADMIN_LOOKUPFLW(M)]" message_admins(msg) admin_ticket_log(M, msg) if(M) @@ -149,8 +149,8 @@ if(A && istype(A)) if(M.forceMove(safepick(get_area_turfs(A)))) - log_admin("[key_name(usr)] teleported [key_name(M)] to [A]") - var/msg = "[key_name_admin(usr)] teleported [key_name_admin(M)] to [A]" + log_admin("[key_name(usr)] teleported [key_name(M)] to [AREACOORD(A)]") + var/msg = "[key_name_admin(usr)] teleported [ADMIN_LOOKUPFLW(M)] to [AREACOORD(A)]" message_admins(msg) admin_ticket_log(M, msg) else diff --git a/code/modules/admin/verbs/atmosdebug.dm b/code/modules/admin/verbs/atmosdebug.dm index 1f14934065..75407eae9c 100644 --- a/code/modules/admin/verbs/atmosdebug.dm +++ b/code/modules/admin/verbs/atmosdebug.dm @@ -9,17 +9,17 @@ //all plumbing - yes, some things might get stated twice, doesn't matter. for (var/obj/machinery/atmospherics/plumbing in GLOB.machines) if (plumbing.nodealert) - to_chat(usr, "Unconnected [plumbing.name] located at [ADMIN_COORDJMP(plumbing)] ([get_area(plumbing.loc)])") + to_chat(usr, "Unconnected [plumbing.name] located at [ADMIN_VERBOSEJMP(plumbing)]") //Manifolds for (var/obj/machinery/atmospherics/pipe/manifold/pipe in GLOB.machines) if (!pipe.nodes[1] || !pipe.nodes[2] || !pipe.nodes[3]) - to_chat(usr, "Unconnected [pipe.name] located at [ADMIN_COORDJMP(pipe)] ([get_area(pipe.loc)])") + to_chat(usr, "Unconnected [pipe.name] located at [ADMIN_VERBOSEJMP(pipe)]") //Pipes for (var/obj/machinery/atmospherics/pipe/simple/pipe in GLOB.machines) if (!pipe.nodes[1] || !pipe.nodes[2]) - to_chat(usr, "Unconnected [pipe.name] located at [ADMIN_COORDJMP(pipe)] ([get_area(pipe.loc)])") + to_chat(usr, "Unconnected [pipe.name] located at [ADMIN_VERBOSEJMP(pipe)]") /client/proc/powerdebug() set category = "Mapping" @@ -33,9 +33,9 @@ if (!PN.nodes || !PN.nodes.len) if(PN.cables && (PN.cables.len > 1)) var/obj/structure/cable/C = PN.cables[1] - to_chat(usr, "Powernet with no nodes! (number [PN.number]) - example cable at [ADMIN_COORDJMP(C)] in area [get_area(C.loc)]") + to_chat(usr, "Powernet with no nodes! (number [PN.number]) - example cable at [ADMIN_VERBOSEJMP(C)]") if (!PN.cables || (PN.cables.len < 10)) if(PN.cables && (PN.cables.len > 1)) var/obj/structure/cable/C = PN.cables[1] - to_chat(usr, "Powernet with fewer than 10 cables! (number [PN.number]) - example cable at [ADMIN_COORDJMP(C)] in area [get_area(C.loc)]") + to_chat(usr, "Powernet with fewer than 10 cables! (number [PN.number]) - example cable at [ADMIN_VERBOSEJMP(C)]") diff --git a/code/modules/admin/verbs/borgpanel.dm b/code/modules/admin/verbs/borgpanel.dm index 8a162e7794..ec921e78bc 100644 --- a/code/modules/admin/verbs/borgpanel.dm +++ b/code/modules/admin/verbs/borgpanel.dm @@ -87,11 +87,11 @@ var/newcharge = input("New charge (0-[borg.cell.maxcharge]):", borg.name, borg.cell.charge) as num|null if (newcharge) borg.cell.charge = CLAMP(newcharge, 0, borg.cell.maxcharge) - message_admins("[key_name_admin(user)] set the charge of [key_name_admin(borg)][ADMIN_FLW(borg)] to [borg.cell.charge].") + message_admins("[key_name_admin(user)] set the charge of [ADMIN_LOOKUPFLW(borg)] to [borg.cell.charge].") log_admin("[key_name(user)] set the charge of [key_name(borg)] to [borg.cell.charge].") if ("remove_cell") QDEL_NULL(borg.cell) - message_admins("[key_name_admin(user)] deleted the cell of [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] deleted the cell of [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] deleted the cell of [key_name(borg)].") if ("change_cell") var/chosen = pick_closest_path(null, make_types_fancy(typesof(/obj/item/stock_parts/cell))) @@ -104,45 +104,45 @@ borg.cell = new_cell borg.cell.charge = borg.cell.maxcharge borg.diag_hud_set_borgcell() - message_admins("[key_name_admin(user)] changed the cell of [key_name_admin(borg)][ADMIN_FLW(borg)] to [new_cell].") + message_admins("[key_name_admin(user)] changed the cell of [ADMIN_LOOKUPFLW(borg)] to [new_cell].") log_admin("[key_name(user)] changed the cell of [key_name(borg)] to [new_cell].") if ("toggle_emagged") borg.SetEmagged(!borg.emagged) if (borg.emagged) - message_admins("[key_name_admin(user)] emagged [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] emagged [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] emagged [key_name(borg)].") else - message_admins("[key_name_admin(user)] un-emagged [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] un-emagged [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] un-emagged [key_name(borg)].") if ("toggle_lawupdate") borg.lawupdate = !borg.lawupdate if (borg.lawupdate) - message_admins("[key_name_admin(user)] enabled lawsync on [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] enabled lawsync on [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] enabled lawsync on [key_name(borg)].") else - message_admins("[key_name_admin(user)] disabled lawsync on [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] disabled lawsync on [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] disabled lawsync on [key_name(borg)].") if ("toggle_lockdown") borg.SetLockdown(!borg.lockcharge) if (borg.lockcharge) - message_admins("[key_name_admin(user)] locked down [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] locked down [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] locked down [key_name(borg)].") else - message_admins("[key_name_admin(user)] released [key_name_admin(borg)][ADMIN_FLW(borg)] from lockdown.") + message_admins("[key_name_admin(user)] released [ADMIN_LOOKUPFLW(borg)] from lockdown.") log_admin("[key_name(user)] released [key_name(borg)] from lockdown.") if ("toggle_scrambledcodes") borg.scrambledcodes = !borg.scrambledcodes if (borg.scrambledcodes) - message_admins("[key_name_admin(user)] enabled scrambled codes on [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] enabled scrambled codes on [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] enabled scrambled codes on [key_name(borg)].") else - message_admins("[key_name_admin(user)] disabled scrambled codes on [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] disabled scrambled codes on [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] disabled scrambled codes on [key_name(borg)].") if ("rename") var/new_name = stripped_input(user,"What would you like to name this cyborg?","Input a name",borg.real_name,MAX_NAME_LEN) if(!new_name) return - message_admins("[key_name_admin(user)] renamed [key_name_admin(borg)][ADMIN_FLW(borg)] to [new_name].") + message_admins("[key_name_admin(user)] renamed [ADMIN_LOOKUPFLW(borg)] to [new_name].") log_admin("[key_name(user)] renamed [key_name(borg)] to [new_name].") borg.fully_replace_character_name(borg.real_name,new_name) if ("toggle_upgrade") @@ -151,14 +151,14 @@ if (installedupgrade) installedupgrade.deactivate(borg, user) borg.upgrades -= installedupgrade - message_admins("[key_name_admin(user)] removed the [installedupgrade] upgrade from [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] removed the [installedupgrade] upgrade from [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] removed the [installedupgrade] upgrade from [key_name(borg)].") qdel(installedupgrade) else var/obj/item/borg/upgrade/upgrade = new upgradepath(borg) upgrade.action(borg, user) borg.upgrades += upgrade - message_admins("[key_name_admin(user)] added the [upgrade] borg upgrade to [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] added the [upgrade] borg upgrade to [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] added the [upgrade] borg upgrade to [key_name(borg)].") if ("toggle_radio") var/channel = params["channel"] @@ -175,7 +175,7 @@ borg.radio.keyslot.syndie = FALSE else if (channel == "CentCom") borg.radio.keyslot.independent = FALSE - message_admins("[key_name_admin(user)] removed the [channel] radio channel from [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] removed the [channel] radio channel from [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] removed the [channel] radio channel from [key_name(borg)].") else // We're adding a channel if (!borg.radio.keyslot) // Assert that an encryption key exists @@ -185,14 +185,14 @@ borg.radio.keyslot.syndie = TRUE else if (channel == "CentCom") borg.radio.keyslot.independent = TRUE - message_admins("[key_name_admin(user)] added the [channel] radio channel to [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] added the [channel] radio channel to [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] added the [channel] radio channel to [key_name(borg)].") borg.radio.recalculateChannels() if ("setmodule") var/newmodulepath = text2path(params["module"]) if (ispath(newmodulepath)) borg.module.transform_to(newmodulepath) - message_admins("[key_name_admin(user)] changed the module of [key_name_admin(borg)][ADMIN_FLW(borg)] to [newmodulepath].") + message_admins("[key_name_admin(user)] changed the module of [ADMIN_LOOKUPFLW(borg)] to [newmodulepath].") log_admin("[key_name(user)] changed the module of [key_name(borg)] to [newmodulepath].") if ("slavetoai") var/mob/living/silicon/ai/newai = locate(params["slavetoai"]) in GLOB.ai_list @@ -202,14 +202,14 @@ borg.undeploy() borg.connected_ai = newai borg.notify_ai(TRUE) - message_admins("[key_name_admin(user)] slaved [key_name_admin(borg)][ADMIN_FLW(borg)] to the AI [key_name_admin(newai)][ADMIN_FLW(newai)].") + message_admins("[key_name_admin(user)] slaved [ADMIN_LOOKUPFLW(borg)] to the AI [ADMIN_LOOKUPFLW(newai)].") log_admin("[key_name(user)] slaved [key_name(borg)] to the AI [key_name(newai)].") else if (params["slavetoai"] == "null") borg.notify_ai(DISCONNECT) if(borg.shell) borg.undeploy() borg.connected_ai = null - message_admins("[key_name_admin(user)] freed [key_name_admin(borg)][ADMIN_FLW(borg)] from being slaved to an AI.") + message_admins("[key_name_admin(user)] freed [ADMIN_LOOKUPFLW(borg)] from being slaved to an AI.") log_admin("[key_name(user)] freed [key_name(borg)] from being slaved to an AI.") if (borg.lawupdate) borg.lawsync() diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 2fd212b4dc..e6ddd72e3a 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -333,8 +333,8 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) if(ishuman(M)) INVOKE_ASYNC(M, /mob/living/carbon/human/proc/Alienize) SSblackbox.record_feedback("tally", "admin_verb", 1, "Make Alien") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - log_admin("[key_name(usr)] made [key_name(M)] into an alien.") - message_admins("[key_name_admin(usr)] made [key_name(M)] into an alien.") + log_admin("[key_name(usr)] made [key_name(M)] into an alien at [AREACOORD(M)].") + message_admins("[key_name_admin(usr)] made [ADMIN_LOOKUPFLW(M)] into an alien.") else alert("Invalid mob") @@ -348,8 +348,8 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) if(ishuman(M)) INVOKE_ASYNC(M, /mob/living/carbon/human/proc/slimeize) SSblackbox.record_feedback("tally", "admin_verb", 1, "Make Slime") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - log_admin("[key_name(usr)] made [key_name(M)] into a slime.") - message_admins("[key_name_admin(usr)] made [key_name(M)] into a slime.") + log_admin("[key_name(usr)] made [key_name(M)] into a slime at [AREACOORD(M)].") + message_admins("[key_name_admin(usr)] made [ADMIN_LOOKUPFLW(M)] into a slime.") else alert("Invalid mob") @@ -434,7 +434,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) qdel(O) CHECK_TICK log_admin("[key_name(src)] has deleted all ([counter]) instances of [hsbitem].") - message_admins("[key_name_admin(src)] has deleted all ([counter]) instances of [hsbitem].", 0) + message_admins("[key_name_admin(src)] has deleted all ([counter]) instances of [hsbitem].") SSblackbox.record_feedback("tally", "admin_verb", 1, "Delete All") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -443,7 +443,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) set name = "Make Powernets" SSmachines.makepowernets() log_admin("[key_name(src)] has remade the powernet. makepowernets() called.") - message_admins("[key_name_admin(src)] has remade the powernets. makepowernets() called.", 0) + message_admins("[key_name_admin(src)] has remade the powernets. makepowernets() called.") SSblackbox.record_feedback("tally", "admin_verb", 1, "Make Powernets") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_grantfullaccess(mob/M in GLOB.mob_list) @@ -522,7 +522,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) var/bad_shit = 0 for(var/obj/machinery/computer/atmos_control/tank/console in GLOB.atmos_air_controllers) - dat += "

[console] at [get_area_name(console, TRUE)] [COORD(console)]:


" + dat += "

[console] at [AREACOORD(console)]:


" if(console.input_tag == console.output_tag) dat += "Error: input_tag is the same as the output_tag, \"[console.input_tag]\"!
" bad_shit++ @@ -734,14 +734,17 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) if(!dresscode) return + var/delete_pocket var/mob/living/carbon/human/H if(isobserver(M)) H = M.change_mob_type(/mob/living/carbon/human, null, null, TRUE) else H = M + if(alert("Drop Items in Pockets? No will delete them.", "Robust quick dress shop", "Yes", "No") == "No") + delete_pocket = TRUE SSblackbox.record_feedback("tally", "admin_verb", 1, "Select Equipment") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - for (var/obj/item/I in H.get_equipped_items()) + for (var/obj/item/I in H.get_equipped_items(delete_pocket)) qdel(I) if(dresscode != "Naked") H.equipOutfit(dresscode) @@ -749,7 +752,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) H.regenerate_icons() log_admin("[key_name(usr)] changed the equipment of [key_name(H)] to [dresscode].") - message_admins("[key_name_admin(usr)] changed the equipment of [key_name_admin(H)] to [dresscode].") + message_admins("[key_name_admin(usr)] changed the equipment of [ADMIN_LOOKUPFLW(H)] to [dresscode].") /client/proc/robust_dress_shop() var/list/outfits = list("Cancel","Naked","Custom","As Job...") diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm index 5e21955800..2bd67eaf37 100644 --- a/code/modules/admin/verbs/diagnostics.dm +++ b/code/modules/admin/verbs/diagnostics.dm @@ -7,7 +7,7 @@ if(T.active_hotspot) burning = TRUE - var/list/lines = list("[COORD(target)]: [env.temperature] K ([env.temperature - T0C] C), [env.return_pressure()] kPa[(burning)?(", burning"):(null)]") + var/list/lines = list("[AREACOORD(target)]: [env.temperature] K ([env.temperature - T0C] C), [env.return_pressure()] kPa[(burning)?(", burning"):(null)]") for(var/id in env_gases) var/gas = env_gases[id] var/moles = gas[MOLES] @@ -49,8 +49,8 @@ log_admin("DEBUG: [key_name(M)] next_move = [M.next_move] lastDblClick = [M.next_click] world.time = [world.time]") M.next_move = 1 M.next_click = 0 - message_admins("[key_name_admin(largest_move_mob)] had the largest move delay with [largest_move_time] frames / [DisplayTimeText(largest_move_time)]!") - message_admins("[key_name_admin(largest_click_mob)] had the largest click delay with [largest_click_time] frames / [DisplayTimeText(largest_click_time)]!") + message_admins("[ADMIN_LOOKUPFLW(largest_move_mob)] had the largest move delay with [largest_move_time] frames / [DisplayTimeText(largest_move_time)]!") + message_admins("[ADMIN_LOOKUPFLW(largest_click_mob)] had the largest click delay with [largest_click_time] frames / [DisplayTimeText(largest_click_time)]!") message_admins("world.time = [world.time]") SSblackbox.record_feedback("tally", "admin_verb", 1, "Unfreeze Everyone") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return diff --git a/code/modules/admin/verbs/individual_logging.dm b/code/modules/admin/verbs/individual_logging.dm index 50b00da9a6..df151cfef9 100644 --- a/code/modules/admin/verbs/individual_logging.dm +++ b/code/modules/admin/verbs/individual_logging.dm @@ -1,32 +1,52 @@ -/proc/show_individual_logging_panel(mob/M, type = INDIVIDUAL_ATTACK_LOG) +/proc/show_individual_logging_panel(mob/M, source = LOGSRC_CLIENT, type = INDIVIDUAL_ATTACK_LOG) if(!M || !ismob(M)) return - var/dat = "
Attack log | " - dat += "Say log | " - dat += "Emote log | " - dat += "OOC log | " - dat += "Show all | " - dat += "Refresh
" + + //Add client links + var/dat = "" + if(M.client) + dat += "

Client

" + dat += "
Attack log | " + dat += "Say log | " + dat += "Emote log | " + dat += "OOC log | " + dat += "Show all | " + dat += "Refresh
" + else + dat += "

No client attached to mob

" + + dat += "
" + dat += "

Mob

" + //Add the links for the mob specific log + dat += "
Attack log | " + dat += "Say log | " + dat += "Emote log | " + dat += "OOC log | " + dat += "Show all | " + dat += "Refresh
" dat += "
" + var/log_source = M.logging; + if(source == LOGSRC_CLIENT && M.client) //if client doesn't exist just fall back to the mob log + log_source = M.client.player_details.logging //should exist, if it doesn't that's a bug, don't check for it not existing if(type == INDIVIDUAL_SHOW_ALL_LOG) - dat += "
Displaying all logs of [key_name(M)]


" - for(var/log_type in M.logging) + dat += "
Displaying all [source] logs of [key_name(M)]


" + for(var/log_type in log_source) dat += "
[log_type]

" - var/list/reversed = M.logging[log_type] + var/list/reversed = log_source[log_type] if(islist(reversed)) reversed = reverseRange(reversed.Copy()) for(var/entry in reversed) dat += "[entry]: [reversed[entry]]
" dat += "
" else - dat += "
[type] of [key_name(M)]

" - var/list/reversed = M.logging[type] + dat += "
[source] [type] of [key_name(M)]

" + var/list/reversed = log_source[type] if(reversed) reversed = reverseRange(reversed.Copy()) for(var/entry in reversed) dat += "[entry]: [reversed[entry]]
" - usr << browse(dat, "window=invidual_logging_[M];size=600x480") + usr << browse(dat, "window=invidual_logging_[key_name(M)];size=600x480") diff --git a/code/modules/admin/verbs/manipulate_organs.dm b/code/modules/admin/verbs/manipulate_organs.dm index e82a99815e..4d1de50e47 100644 --- a/code/modules/admin/verbs/manipulate_organs.dm +++ b/code/modules/admin/verbs/manipulate_organs.dm @@ -15,7 +15,7 @@ organ = new organ organ.Insert(C) log_admin("[key_name(usr)] has added organ [organ.type] to [key_name(C)]") - message_admins("[key_name_admin(usr)] has added organ [organ.type] to [key_name(C)]") + message_admins("[key_name_admin(usr)] has added organ [organ.type] to [ADMIN_LOOKUPFLW(C)]") if("add implant") for(var/path in subtypesof(/obj/item/implant)) @@ -27,7 +27,7 @@ organ = new organ organ.implant(C) log_admin("[key_name(usr)] has added implant [organ.type] to [key_name(C)]") - message_admins("[key_name_admin(usr)] has added implant [organ.type] to [key_name(C)]") + message_admins("[key_name_admin(usr)] has added implant [organ.type] to [ADMIN_LOOKUPFLW(C)]") if("drop organ/implant", "remove organ/implant") for(var/X in C.internal_organs) @@ -46,7 +46,7 @@ var/obj/item/implant/I log_admin("[key_name(usr)] has removed [organ.type] from [key_name(C)]") - message_admins("[key_name_admin(usr)] has removed [organ.type] from [key_name(C)]") + message_admins("[key_name_admin(usr)] has removed [organ.type] from [ADMIN_LOOKUPFLW(C)]") if(isorgan(organ)) O = organ diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index c62ee34dac..800a94c4ba 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -105,11 +105,11 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list( for(var/obj/machinery/camera/C2 in CL) if(C1 != C2) if(C1.c_tag == C2.c_tag) - output += "
  • c_tag match for cameras at [ADMIN_COORDJMP(C1)] ([C1.loc.loc]) and [ADMIN_COORDJMP(C2)] ([C2.loc.loc]) - c_tag is [C1.c_tag]
  • " + output += "
  • c_tag match for cameras at [ADMIN_VERBOSEJMP(C1)] and [ADMIN_VERBOSEJMP(C2)] - c_tag is [C1.c_tag]
  • " if(C1.loc == C2.loc && C1.dir == C2.dir && C1.pixel_x == C2.pixel_x && C1.pixel_y == C2.pixel_y) - output += "
  • FULLY overlapping cameras at [ADMIN_COORDJMP(C1)] ([C1.loc.loc]) Networks: [json_encode(C1.network)] and [json_encode(C2.network)]
  • " + output += "
  • FULLY overlapping cameras at [ADMIN_VERBOSEJMP(C1)] Networks: [json_encode(C1.network)] and [json_encode(C2.network)]
  • " if(C1.loc == C2.loc) - output += "
  • Overlapping cameras at [ADMIN_COORDJMP(C1)] ([C1.loc.loc]) Networks: [json_encode(C1.network)] and [json_encode(C2.network)]
  • " + output += "
  • Overlapping cameras at [ADMIN_VERBOSEJMP(C1)] Networks: [json_encode(C1.network)] and [json_encode(C2.network)]
  • " var/turf/T = get_step(C1,turn(C1.dir,180)) if(!T || !isturf(T) || !T.density ) if(!(locate(/obj/structure/grille) in T)) @@ -119,7 +119,7 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list( window_check = 1 break if(!window_check) - output += "
  • Camera not connected to wall at [ADMIN_COORDJMP(C1)] ([C1.loc.loc]) Network: [json_encode(C1.network)]
  • " + output += "
  • Camera not connected to wall at [ADMIN_VERBOSEJMP(C1)] Network: [json_encode(C1.network)]
  • " output += "" usr << browse(output,"window=airreport;size=1000x500") @@ -153,7 +153,7 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list( for(var/t in GLOB.active_turfs_startlist) var/turf/T = t - dat += "[ADMIN_COORDJMP(T)]\n" + dat += "[ADMIN_VERBOSEJMP(T)]\n" dat += "
    " usr << browse(dat, "window=at_list") diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index fd9de5308b..410e976b85 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -290,7 +290,7 @@ /datum/admins/proc/equipAntagOnDummy(mob/living/carbon/human/dummy/mannequin, datum/antagonist/antag) - for(var/I in mannequin.get_equipped_items()) + for(var/I in mannequin.get_equipped_items(TRUE)) qdel(I) if (ispath(antag, /datum/antagonist/ert)) var/datum/antagonist/ert/ert = antag diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index be0b9d04bb..f97cdd7d57 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -14,7 +14,7 @@ M.regenerate_icons() log_admin("[key_name(usr)] made [key_name(M)] drop everything!") - var/msg = "[key_name_admin(usr)] made [key_name_admin(M)] drop everything!" + var/msg = "[key_name_admin(usr)] made [ADMIN_LOOKUPFLW(M)] drop everything!" message_admins(msg) admin_ticket_log(M, msg) SSblackbox.record_feedback("tally", "admin_verb", 1, "Drop Everything") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -149,8 +149,8 @@ for(var/mob/M in view(range,A)) to_chat(M, msg) - log_admin("LocalNarrate: [key_name(usr)] at [get_area(A)][COORD(A)]: [msg]") - message_admins(" LocalNarrate: [key_name_admin(usr)] at [get_area(A)][ADMIN_JMP(A)]: [msg]
    ") + log_admin("LocalNarrate: [key_name(usr)] at [AREACOORD(A)]: [msg]") + message_admins(" LocalNarrate: [key_name_admin(usr)] at [ADMIN_VERBOSEJMP(A)]: [msg]
    ") SSblackbox.record_feedback("tally", "admin_verb", 1, "Local Narrate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_godmode(mob/M in GLOB.mob_list) @@ -163,7 +163,7 @@ to_chat(usr, "Toggled [(M.status_flags & GODMODE) ? "ON" : "OFF"]") log_admin("[key_name(usr)] has toggled [key_name(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]") - var/msg = "[key_name_admin(usr)] has toggled [key_name_admin(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]" + var/msg = "[key_name_admin(usr)] has toggled [ADMIN_LOOKUPFLW(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]" message_admins(msg) admin_ticket_log(M, msg) SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Godmode", "[M.status_flags & GODMODE ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -504,7 +504,7 @@ Traitors and the like can also be revived with the previous role mostly intact. M.revive(full_heal = 1, admin_revive = 1) log_admin("[key_name(usr)] healed / revived [key_name(M)]") - var/msg = "Admin [key_name_admin(usr)] healed / revived [key_name_admin(M)]!" + var/msg = "Admin [key_name_admin(usr)] healed / revived [ADMIN_LOOKUPFLW(M)]!" message_admins(msg) admin_ticket_log(M, msg) SSblackbox.record_feedback("tally", "admin_verb", 1, "Rejuvinate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -609,8 +609,8 @@ Traitors and the like can also be revived with the previous role mostly intact. return explosion(O, devastation, heavy, light, flash, null, null,flames) - log_admin("[key_name(usr)] created an explosion ([devastation],[heavy],[light],[flames]) at ([O.x],[O.y],[O.z])") - message_admins("[key_name_admin(usr)] created an explosion ([devastation],[heavy],[light],[flames]) at ([O.x],[O.y],[O.z])") + log_admin("[key_name(usr)] created an explosion ([devastation],[heavy],[light],[flames]) at [AREACOORD(O)]") + message_admins("[key_name_admin(usr)] created an explosion ([devastation],[heavy],[light],[flames]) at [AREACOORD(O)]") SSblackbox.record_feedback("tally", "admin_verb", 1, "Explosion") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return else @@ -633,8 +633,8 @@ Traitors and the like can also be revived with the previous role mostly intact. if (heavy || light) empulse(O, heavy, light) - log_admin("[key_name(usr)] created an EM Pulse ([heavy],[light]) at ([O.x],[O.y],[O.z])") - message_admins("[key_name_admin(usr)] created an EM Pulse ([heavy],[light]) at ([O.x],[O.y],[O.z])") + log_admin("[key_name(usr)] created an EM Pulse ([heavy],[light]) at [AREACOORD(O)]") + message_admins("[key_name_admin(usr)] created an EM Pulse ([heavy],[light]) at [AREACOORD(O)]") SSblackbox.record_feedback("tally", "admin_verb", 1, "EM Pulse") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return @@ -821,7 +821,7 @@ Traitors and the like can also be revived with the previous role mostly intact. N.set_active() log_admin("[key_name(usr)] [N.timing ? "activated" : "deactivated"] a nuke at ([N.x],[N.y],[N.z]).") - message_admins("[ADMIN_LOOKUPFLW(usr)] [N.timing ? "activated" : "deactivated"] a nuke at [ADMIN_COORDJMP(N)].") + message_admins("[ADMIN_LOOKUPFLW(usr)] [N.timing ? "activated" : "deactivated"] a nuke at [ADMIN_VERBOSEJMP(N)].") SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Nuke", "[N.timing]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits @@ -1277,7 +1277,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits if(!check_rights(R_ADMIN)) return - var/list/punishment_list = list(ADMIN_PUNISHMENT_LIGHTNING, ADMIN_PUNISHMENT_BRAINDAMAGE, ADMIN_PUNISHMENT_GIB, ADMIN_PUNISHMENT_BSA, ADMIN_PUNISHMENT_FIREBALL, ADMIN_PUNISHMENT_ROD) + var/list/punishment_list = list(ADMIN_PUNISHMENT_LIGHTNING, ADMIN_PUNISHMENT_BRAINDAMAGE, ADMIN_PUNISHMENT_GIB, ADMIN_PUNISHMENT_BSA, ADMIN_PUNISHMENT_FIREBALL, ADMIN_PUNISHMENT_ROD, ADMIN_PUNISHMENT_SUPPLYPOD) var/punishment = input("Choose a punishment", "DIVINE SMITING") as null|anything in punishment_list @@ -1305,6 +1305,23 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits var/turf/startT = spaceDebrisStartLoc(startside, T.z) var/turf/endT = spaceDebrisFinishLoc(startside, T.z) new /obj/effect/immovablerod(startT, endT,target) + if(ADMIN_PUNISHMENT_SUPPLYPOD) + ///////load the supply pod up with something! + var/target_path = input(usr,"Enter typepath of an atom you'd like to send with the pod (type \"empty\" to send an empty pod):" ,"Typepath","/obj/item/reagent_containers/food/snacks/grown/harebell") as null|text + if (isnull(target_path)) + return + if (target_path == "empty")//if you type "empty", spawn an empty pod + new /obj/effect/DPtarget(get_turf(target), null, POD_CENTCOM) + return + var/delivery = text2path(target_path) + if(!ispath(delivery)) + delivery = pick_closest_path(target_path) + if(!delivery) + alert("ERROR: Incorrect / improper path given.") + return + //send the pod + target.Stun(10)//takes 0.53 seconds for CentCom pod to land + new /obj/effect/DPtarget(get_turf(target), delivery, POD_CENTCOM, target) var/msg = "[key_name_admin(usr)] punished [key_name_admin(target)] with [punishment]." message_admins(msg) diff --git a/code/modules/antagonists/abductor/machinery/console.dm b/code/modules/antagonists/abductor/machinery/console.dm index e629a0b47d..6bc8fc0d5d 100644 --- a/code/modules/antagonists/abductor/machinery/console.dm +++ b/code/modules/antagonists/abductor/machinery/console.dm @@ -17,7 +17,6 @@ icon = 'icons/obj/abductor.dmi' icon_state = "console" density = TRUE - anchored = TRUE var/obj/item/abductor/gizmo/gizmo var/obj/item/clothing/suit/armor/abductor/vest/vest var/obj/machinery/abductor/experiment/experiment diff --git a/code/modules/antagonists/abductor/machinery/dispenser.dm b/code/modules/antagonists/abductor/machinery/dispenser.dm index c837adf1f0..17fa311c8f 100644 --- a/code/modules/antagonists/abductor/machinery/dispenser.dm +++ b/code/modules/antagonists/abductor/machinery/dispenser.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/abductor.dmi' icon_state = "dispenser" density = TRUE - anchored = TRUE var/list/gland_types var/list/gland_colors var/list/amounts diff --git a/code/modules/antagonists/abductor/machinery/experiment.dm b/code/modules/antagonists/abductor/machinery/experiment.dm index 527913e6aa..5614fc9105 100644 --- a/code/modules/antagonists/abductor/machinery/experiment.dm +++ b/code/modules/antagonists/abductor/machinery/experiment.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/abductor.dmi' icon_state = "experiment-open" density = FALSE - anchored = TRUE state_open = TRUE var/points = 0 var/credits = 0 diff --git a/code/modules/antagonists/abductor/machinery/pad.dm b/code/modules/antagonists/abductor/machinery/pad.dm index dff2fe812e..1cb95fbf05 100644 --- a/code/modules/antagonists/abductor/machinery/pad.dm +++ b/code/modules/antagonists/abductor/machinery/pad.dm @@ -3,7 +3,6 @@ desc = "Use this to transport to and from the humans' habitat." icon = 'icons/obj/abductor.dmi' icon_state = "alien-pad-idle" - anchored = TRUE var/turf/teleport_target /obj/machinery/abductor/pad/proc/Warp(mob/living/target) diff --git a/code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm b/code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm index f3de8d04a8..34a986aa97 100644 --- a/code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm +++ b/code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm @@ -44,6 +44,7 @@ icon = 'icons/turf/floors.dmi' icon_state = "clockwork_floor" layer = TURF_LAYER + plane = FLOOR_PLANE /obj/effect/clockwork/overlay/floor/bloodcult //this is used by BLOOD CULT, it shouldn't use such a path... icon_state = "cult" \ No newline at end of file diff --git a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm index 32bf870886..d32eeee84b 100644 --- a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm +++ b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm @@ -50,7 +50,7 @@ user.emote("scream") user.apply_damage(30, BRUTE, BODY_ZONE_HEAD) user.adjustBrainLoss(30) - addtimer(CALLBACK(user, /mob/living.proc/dropItemToGround), src, 1) //equipped happens before putting stuff on(but not before picking items up), 1). thus, we need to wait for it to be on before forcing it off. + addtimer(CALLBACK(user, /mob/living.proc/dropItemToGround, src, TRUE), 1) //equipped happens before putting stuff on(but not before picking items up), 1). thus, we need to wait for it to be on before forcing it off. /obj/item/clothing/head/helmet/clockwork/mob_can_equip(mob/M, mob/equipper, slot, disable_warning = 0) if(equipper && !is_servant_of_ratvar(equipper)) diff --git a/code/modules/antagonists/clockcult/clock_structures/trap_triggers/repeater.dm b/code/modules/antagonists/clockcult/clock_structures/trap_triggers/repeater.dm index 41292f818d..f5ed91ac15 100644 --- a/code/modules/antagonists/clockcult/clock_structures/trap_triggers/repeater.dm +++ b/code/modules/antagonists/clockcult/clock_structures/trap_triggers/repeater.dm @@ -12,7 +12,7 @@ return if(!is_servant_of_ratvar(user)) return - if(!isprocessing) + if(!(datum_flags & DF_ISPROCESSING)) START_PROCESSING(SSprocessing, src) to_chat(user, "You activate [src].") icon_state = "[icon_state]_on" diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index 3df3d63ebd..5459e4c45e 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -64,7 +64,7 @@ qdel(nullify_spell) return BS = possible_spells[entered_spell_name] - if(QDELETED(src) || owner.incapacitated() || !BS) + if(QDELETED(src) || owner.incapacitated() || !BS || (rune && !(locate(/obj/effect/rune/empower) in range(1, owner))) || (spells.len >= limit)) return to_chat(owner,"You begin to carve unnatural symbols into your flesh!") SEND_SOUND(owner, sound('sound/weapons/slice.ogg',0,1,10)) @@ -271,7 +271,6 @@ attached_action.desc += "
    Has [attached_action.charges] use\s remaining." attached_action.UpdateButtonIcon() if(attached_action.charges <= 0) - remove_mousepointer(ranged_ability_user.client) remove_ranged_ability("You have exhausted the spell's power!") qdel(src) diff --git a/code/modules/antagonists/cult/cult_comms.dm b/code/modules/antagonists/cult/cult_comms.dm index b51ff99041..4e6a50bf6b 100644 --- a/code/modules/antagonists/cult/cult_comms.dm +++ b/code/modules/antagonists/cult/cult_comms.dm @@ -457,7 +457,6 @@ new /obj/effect/temp_visual/cult/sparks(get_turf(target), ranged_ability_user.dir) attached_action.throwing = FALSE attached_action.cooldown = world.time + attached_action.base_cooldown - remove_mousepointer(ranged_ability_user.client) remove_ranged_ability("A pulse of blood magic surges through you as you shift [attached_action.throwee] through time and space.") caller.update_action_buttons_icon() addtimer(CALLBACK(caller, /mob.proc/update_action_buttons_icon), attached_action.base_cooldown) diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index a1241d5998..0dcd5e6c21 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -497,12 +497,12 @@ structure_check() searches for nearby cultist structures required for the invoca user.visible_message("[user.name] begins erasing [src]...", "You begin erasing [src]...") if(do_after(user, 50, target = src)) //Prevents accidental erasures. log_game("Summon Narsie rune erased by [user.mind.key] (ckey) with [I.name]") - message_admins("[key_name_admin(user)] erased a Narsie rune with [I.name]") + message_admins("[ADMIN_LOOKUPFLW(user)] erased a Narsie rune with [I.name]") ..() else if(istype(I, /obj/item/nullrod)) //Begone foul magiks. You cannot hinder me. log_game("Summon Narsie rune erased by [user.mind.key] (ckey) using a null rod") - message_admins("[key_name_admin(user)] erased a Narsie rune with a null rod") + message_admins("[ADMIN_LOOKUPFLW(user)] erased a Narsie rune with a null rod") ..() //Rite of Resurrection: Requires a dead or inactive cultist. When reviving the dead, you can only perform one revival for every sacrifice your cult has carried out. diff --git a/code/modules/antagonists/disease/disease_event.dm b/code/modules/antagonists/disease/disease_event.dm index ad66ee0cbb..7183ed5455 100644 --- a/code/modules/antagonists/disease/disease_event.dm +++ b/code/modules/antagonists/disease/disease_event.dm @@ -20,7 +20,7 @@ var/mob/camera/disease/virus = new /mob/camera/disease(SSmapping.get_station_center()) virus.key = selected.key INVOKE_ASYNC(virus, /mob/camera/disease/proc/pick_name) - message_admins("[key_name_admin(virus)] has been made into a sentient disease by an event.") + message_admins("[ADMIN_LOOKUPFLW(virus)] has been made into a sentient disease by an event.") log_game("[key_name(virus)] was spawned as a sentient disease by an event.") spawned_mobs += virus return SUCCESSFUL_SPAWN diff --git a/code/modules/antagonists/highlander/highlander.dm b/code/modules/antagonists/highlander/highlander.dm index 6f50e69c84..4e511d7fac 100644 --- a/code/modules/antagonists/highlander/highlander.dm +++ b/code/modules/antagonists/highlander/highlander.dm @@ -42,7 +42,7 @@ if(!istype(H)) return - for(var/obj/item/I in H.get_equipped_items()) + for(var/obj/item/I in H.get_equipped_items(TRUE)) qdel(I) for(var/obj/item/I in H.held_items) qdel(I) diff --git a/code/modules/antagonists/morph/morph.dm b/code/modules/antagonists/morph/morph.dm index 6572584eab..12f8d22897 100644 --- a/code/modules/antagonists/morph/morph.dm +++ b/code/modules/antagonists/morph/morph.dm @@ -238,7 +238,7 @@ player_mind.add_antag_datum(/datum/antagonist/morph) to_chat(S, S.playstyle_string) SEND_SOUND(S, sound('sound/magic/mutate.ogg')) - message_admins("[key_name_admin(S)] has been made into a morph by an event.") + message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a morph by an event.") log_game("[key_name(S)] was spawned as a morph by an event.") spawned_mobs += S return SUCCESSFUL_SPAWN diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index a4dd053a3f..4d3ccf8a34 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -3,6 +3,7 @@ desc = "You probably shouldn't stick around to see if this is armed." icon = 'icons/obj/machines/nuke.dmi' icon_state = "nuclearbomb_base" + anchored = FALSE density = TRUE resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index c520b64146..03150c0254 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -109,11 +109,6 @@ revealed = FALSE incorporeal_move = INCORPOREAL_MOVE_JAUNT invisibility = INVISIBILITY_REVENANT - if(staticOverlays.len) - for(var/mob/living/simple_animal/drone/D in GLOB.drones_list) - if(D && D.client && D.seeStatic) - D.staticOverlays.Remove(staticOverlays) - D.client.images.Remove(staticOverlays) to_chat(src, "You are once more concealed.") if(unstun_time && world.time >= unstun_time) unstun_time = 0 @@ -250,15 +245,6 @@ else to_chat(src, "You have been revealed!") unreveal_time = unreveal_time + time - if(staticOverlays.len) - for(var/mob/living/simple_animal/drone/D in GLOB.drones_list) - if(D && D.client && D.seeStatic) - if(D.staticChoice in staticOverlays) - D.staticOverlays |= staticOverlays[D.staticChoice] - D.client.images |= staticOverlays[D.staticChoice] - else - D.staticOverlays |= staticOverlays["static"] - D.client.images |= staticOverlays["static"] update_spooky_icon() /mob/living/simple_animal/revenant/proc/stun(time) diff --git a/code/modules/antagonists/revenant/revenant_spawn_event.dm b/code/modules/antagonists/revenant/revenant_spawn_event.dm index 483be4dc34..c9a892cd64 100644 --- a/code/modules/antagonists/revenant/revenant_spawn_event.dm +++ b/code/modules/antagonists/revenant/revenant_spawn_event.dm @@ -53,7 +53,7 @@ var/mob/living/simple_animal/revenant/revvie = new(pick(spawn_locs)) revvie.key = selected.key - message_admins("[key_name_admin(revvie)] [ADMIN_FLW(revvie)] has been made into a revenant by an event.") + message_admins("[ADMIN_LOOKUPFLW(revvie)] has been made into a revenant by an event.") log_game("[key_name(revvie)] was spawned as a revenant by an event.") spawned_mobs += revvie return SUCCESSFUL_SPAWN diff --git a/code/modules/antagonists/slaughter/slaughterevent.dm b/code/modules/antagonists/slaughter/slaughterevent.dm index 38054fccec..4d81741c91 100644 --- a/code/modules/antagonists/slaughter/slaughterevent.dm +++ b/code/modules/antagonists/slaughter/slaughterevent.dm @@ -41,7 +41,7 @@ to_chat(S, S.playstyle_string) to_chat(S, "You are currently not currently in the same plane of existence as the station. Blood Crawl near a blood pool to manifest.") SEND_SOUND(S, 'sound/magic/demon_dies.ogg') - message_admins("[key_name_admin(S)] has been made into a slaughter demon by an event.") + message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a slaughter demon by an event.") log_game("[key_name(S)] was spawned as a slaughter demon by an event.") spawned_mobs += S return SUCCESSFUL_SPAWN diff --git a/code/modules/antagonists/swarmer/swarmer.dm b/code/modules/antagonists/swarmer/swarmer.dm index 8557405801..d4d86cc087 100644 --- a/code/modules/antagonists/swarmer/swarmer.dm +++ b/code/modules/antagonists/swarmer/swarmer.dm @@ -373,6 +373,10 @@ to_chat(S, "Attempting to dismantle this machine would result in an immediate counterattack. Aborting.") return FALSE +/obj/machinery/porta_turret_cover/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) + to_chat(S, "Attempting to dismantle this machine would result in an immediate counterattack. Aborting.") + return FALSE + /mob/living/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) S.DisperseTarget(src) return TRUE @@ -405,6 +409,10 @@ to_chat(S, "This object does not contain enough materials to work with.") return FALSE +/obj/machinery/field/generator/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) + to_chat(S, "Destroying this object would cause a catastrophic chain reaction. Aborting.") + return FALSE + ////END CTRL CLICK FOR SWARMERS//// /mob/living/simple_animal/hostile/swarmer/proc/Fabricate(atom/fabrication_object,fabrication_cost = 0) diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index f3ea4ef2ea..ae750adebc 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -164,7 +164,7 @@ kill_objective.find_target() add_objective(kill_objective) else - if(prob(15) && !(locate(/datum/objective/download in owner.objectives))) + if(prob(15) && !(locate(/datum/objective/download) in owner.objectives) && !(owner.assigned_role in list("Research Director", "Scientist", "Roboticist"))) var/datum/objective/download/download_objective = new download_objective.owner = owner download_objective.gen_amount_goal() diff --git a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm index 4482629a2e..4400a3c0dc 100644 --- a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm +++ b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm @@ -319,7 +319,6 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list( name = "doomsday device" icon_state = "nuclearbomb_base" desc = "A weapon which disintegrates all organic life in a large area." - anchored = TRUE density = TRUE verb_exclaim = "blares" var/timing = FALSE diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm index 25a0e804a4..d40666babb 100644 --- a/code/modules/assembly/bomb.dm +++ b/code/modules/assembly/bomb.dm @@ -52,7 +52,7 @@ if(I.use_tool(src, user, 0, volume=40)) status = TRUE GLOB.bombers += "[key_name(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]" - message_admins("[key_name_admin(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]") + message_admins("[ADMIN_LOOKUPFLW(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]") to_chat(user, "A pressure hole has been bored to [bombtank] valve. \The [bombtank] can now be ignited.") add_fingerprint(user) return TRUE @@ -117,7 +117,7 @@ if(isigniter(assembly.a_left) == isigniter(assembly.a_right)) return - if((src in user.get_equipped_items()) && !user.canUnEquip(src)) + if((src in user.get_equipped_items(TRUE)) && !user.canUnEquip(src)) to_chat(user, "[src] is stuck to you!") return diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index 4a6c9d2db3..fe6e94605b 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -33,6 +33,7 @@ /obj/item/assembly/infra/Destroy() STOP_PROCESSING(SSobj, src) + QDEL_NULL(listener) QDEL_LIST(beams) . = ..() @@ -166,7 +167,9 @@ listener = newloc.AddComponent(/datum/component/redirect, COMSIG_ATOM_EXITED, CALLBACK(src, .proc/check_exit)) /obj/item/assembly/infra/proc/check_exit(atom/movable/offender) - if(offender && ((offender.flags_1 & ABSTRACT_1) || offender == src)) + if(QDELETED(src)) + return + if(offender == src || istype(offender,/obj/effect/beam/i_beam)) return return refreshBeam() diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm index dd953dcb11..ebfc9fbf2d 100644 --- a/code/modules/atmospherics/gasmixtures/reactions.dm +++ b/code/modules/atmospherics/gasmixtures/reactions.dm @@ -111,7 +111,7 @@ var/list/cached_gases = air.gases //this speeds things up because accessing datum vars is slow var/temperature = air.temperature var/list/cached_results = air.reaction_results - cached_results[id] = 0 + cached_results["fire"] = 0 var/turf/open/location = isturf(holder) ? holder : null var/burned_fuel = 0 @@ -131,7 +131,7 @@ ASSERT_GAS(/datum/gas/water_vapor, air) //oxygen+more-or-less hydrogen=H2O cached_gases[/datum/gas/water_vapor][MOLES] += burned_fuel/TRITIUM_BURN_OXY_FACTOR - cached_results[id] += burned_fuel + cached_results["fire"] += burned_fuel if(energy_released > 0) var/new_heat_capacity = air.heat_capacity() @@ -148,7 +148,7 @@ item.temperature_expose(air, temperature, CELL_VOLUME) location.temperature_expose(air, temperature, CELL_VOLUME) - return cached_results[id] ? REACTING : NO_REACTION + return cached_results["fire"] ? REACTING : NO_REACTION //plasma combustion: combustion of oxygen and plasma (treated as hydrocarbons). creates hotspots. exothermic /datum/gas_reaction/plasmafire @@ -169,7 +169,7 @@ var/list/cached_gases = air.gases //this speeds things up because accessing datum vars is slow var/temperature = air.temperature var/list/cached_results = air.reaction_results - cached_results[id] = 0 + cached_results["fire"] = 0 var/turf/open/location = isturf(holder) ? holder : null //Handle plasma burning @@ -206,7 +206,7 @@ energy_released += FIRE_PLASMA_ENERGY_RELEASED * (plasma_burn_rate) - cached_results[id] += (plasma_burn_rate)*(1+oxygen_burn_rate) + cached_results["fire"] += (plasma_burn_rate)*(1+oxygen_burn_rate) if(energy_released > 0) var/new_heat_capacity = air.heat_capacity() @@ -223,7 +223,7 @@ item.temperature_expose(air, temperature, CELL_VOLUME) location.temperature_expose(air, temperature, CELL_VOLUME) - return cached_results[id] ? REACTING : NO_REACTION + return cached_results["fire"] ? REACTING : NO_REACTION //fusion: a terrible idea that was fun but broken. Now reworked to be less broken and more interesting. Again. /datum/gas_reaction/fusion diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index 7bfacbee26..6e6355ed72 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -61,7 +61,6 @@ desc = "A machine that monitors atmosphere levels. Goes off if the area is dangerous." icon = 'icons/obj/monitors.dmi' icon_state = "alarm0" - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 4 active_power_usage = 8 diff --git a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm index 7f37e049dd..e8007a6608 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm @@ -13,7 +13,6 @@ var/last_pressure_delta = 0 pipe_flags = PIPING_ONE_PER_TURF - anchored = TRUE density = TRUE var/global/const/CIRC_LEFT = 1 diff --git a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm index 671eca928e..a737b3c688 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm @@ -62,6 +62,18 @@ Acts like a normal vent, but has an input AND output. /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume name = "large dual-port air vent" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix + id = INCINERATOR_TOXMIX_DP_VENTPUMP + frequency = FREQ_AIRLOCK_CONTROL + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos + id = INCINERATOR_ATMOS_DP_VENTPUMP + frequency = FREQ_AIRLOCK_CONTROL + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_syndicatelava + id = INCINERATOR_SYNDICATELAVA_DP_VENTPUMP + frequency = FREQ_AIRLOCK_CONTROL + /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index a07dc8f8b8..cca6c4d15a 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -5,7 +5,6 @@ icon = 'icons/obj/cryogenics.dmi' icon_state = "pod-off" density = TRUE - anchored = TRUE max_integrity = 350 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 30, "acid" = 30) layer = ABOVE_WINDOW_LAYER diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm index 085c18475f..5359e2324e 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm @@ -6,7 +6,6 @@ var/icon_state_on = "cold_on" var/icon_state_open = "cold_off" density = TRUE - anchored = TRUE max_integrity = 300 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 30) layer = OBJ_LAYER diff --git a/code/modules/atmospherics/machinery/other/meter.dm b/code/modules/atmospherics/machinery/other/meter.dm index 9a310fb545..b0afefd58a 100644 --- a/code/modules/atmospherics/machinery/other/meter.dm +++ b/code/modules/atmospherics/machinery/other/meter.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/atmospherics/pipes/meter.dmi' icon_state = "meterX" layer = GAS_PUMP_LAYER - anchored = TRUE power_channel = ENVIRON use_power = IDLE_POWER_USE idle_power_usage = 2 diff --git a/code/modules/atmospherics/machinery/other/miner.dm b/code/modules/atmospherics/machinery/other/miner.dm index 61681c0b38..20251418bc 100644 --- a/code/modules/atmospherics/machinery/other/miner.dm +++ b/code/modules/atmospherics/machinery/other/miner.dm @@ -10,7 +10,6 @@ desc = "Gasses mined from the gas giant below (above?) flow out through this massive vent." icon = 'icons/obj/atmospherics/components/miners.dmi' icon_state = "miner" - anchored = TRUE density = FALSE resistance_flags = INDESTRUCTIBLE|ACID_PROOF|FIRE_PROOF var/spawn_id = null diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 132e750343..1771609125 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -437,8 +437,8 @@ danger[gas[GAS_META][META_GAS_NAME]] = gas[MOLES] //ex. "plasma" = 20 if(danger.len) - message_admins("[ADMIN_LOOKUPFLW(usr)] opened a canister that contains the following: [ADMIN_JMP(src)]") - log_admin("[key_name(usr)] opened a canister that contains the following at [COORD(src)]:") + message_admins("[ADMIN_LOOKUPFLW(usr)] opened a canister that contains the following at [ADMIN_VERBOSEJMP(src)]:") + log_admin("[key_name(usr)] opened a canister that contains the following at [AREACOORD(src)]:") for(var/name in danger) var/msg = "[name]: [danger[name]] moles." log_admin(msg) diff --git a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm index 68223d85a2..1a276d03c5 100644 --- a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm +++ b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm @@ -4,7 +4,7 @@ use_power = NO_POWER_USE max_integrity = 250 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 60, "acid" = 30) - + anchored = FALSE var/datum/gas_mixture/air_contents var/obj/machinery/atmospherics/components/unary/portables_connector/connected_port diff --git a/code/modules/atmospherics/machinery/portable/pump.dm b/code/modules/atmospherics/machinery/portable/pump.dm index 88b7f2d38a..c0658c781d 100644 --- a/code/modules/atmospherics/machinery/portable/pump.dm +++ b/code/modules/atmospherics/machinery/portable/pump.dm @@ -114,9 +114,8 @@ var/plasma = air_contents.gases[/datum/gas/plasma] var/n2o = air_contents.gases[/datum/gas/nitrous_oxide] if(n2o || plasma) - var/area/A = get_area(src) - message_admins("[ADMIN_LOOKUPFLW(usr)] turned on a pump that contains [n2o ? "N2O" : ""][n2o && plasma ? " & " : ""][plasma ? "Plasma" : ""] at [A][ADMIN_JMP(src)]") - log_admin("[key_name(usr)] turned on a pump that contains [n2o ? "N2O" : ""][n2o && plasma ? " & " : ""][plasma ? "Plasma" : ""] at [A][COORD(src)]") + message_admins("[ADMIN_LOOKUPFLW(usr)] turned on a pump that contains [n2o ? "N2O" : ""][n2o && plasma ? " & " : ""][plasma ? "Plasma" : ""] at [ADMIN_VERBOSEJMP(src)]") + log_admin("[key_name(usr)] turned on a pump that contains [n2o ? "N2O" : ""][n2o && plasma ? " & " : ""][plasma ? "Plasma" : ""] at [AREACOORD(src)]") else if(on && direction == PUMP_OUT) investigate_log("[key_name(usr)] started a transfer into [holding].
    ", INVESTIGATE_ATMOS) . = TRUE diff --git a/code/modules/awaymissions/bluespaceartillery.dm b/code/modules/awaymissions/bluespaceartillery.dm index 87b9736722..9bebcfe546 100644 --- a/code/modules/awaymissions/bluespaceartillery.dm +++ b/code/modules/awaymissions/bluespaceartillery.dm @@ -10,7 +10,6 @@ icon_state = "control_boxp1" icon = 'icons/obj/machines/particle_accelerator.dmi' density = TRUE - anchored = TRUE /obj/machinery/artillerycontrol/process() if(reload < reload_cooldown) @@ -47,7 +46,7 @@ return if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr)) priority_announce("Bluespace artillery fire detected. Brace for impact.") - message_admins("[key_name_admin(usr)] has launched an artillery strike.") + message_admins("[ADMIN_LOOKUPFLW(usr)] has launched an artillery strike.") var/list/L = list() for(var/turf/T in get_area_turfs(thearea.type)) L+=T diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm index 09504c60b7..c65fc0960e 100644 --- a/code/modules/awaymissions/capture_the_flag.dm +++ b/code/modules/awaymissions/capture_the_flag.dm @@ -135,7 +135,6 @@ desc = "Used for running friendly games of capture the flag." icon = 'icons/obj/device.dmi' icon_state = "syndbeacon" - anchored = TRUE resistance_flags = INDESTRUCTIBLE var/team = WHITE_TEAM var/team_span = "" @@ -652,7 +651,6 @@ desc = "You should capture this." icon = 'icons/obj/machines/dominator.dmi' icon_state = "dominator" - anchored = TRUE resistance_flags = INDESTRUCTIBLE var/obj/machinery/capture_the_flag/controlling var/team = "none" diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm index 2293ac8098..5c3e87a367 100644 --- a/code/modules/awaymissions/gateway.dm +++ b/code/modules/awaymissions/gateway.dm @@ -6,7 +6,6 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation) icon = 'icons/obj/machines/gateway.dmi' icon_state = "off" density = TRUE - anchored = TRUE resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF var/active = 0 var/checkparts = TRUE diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm index ae119db9e7..b233235d81 100644 --- a/code/modules/awaymissions/mission_code/Academy.dm +++ b/code/modules/awaymissions/mission_code/Academy.dm @@ -131,7 +131,7 @@ if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) - message_admins("[key_name_admin(C)] was spawned as Wizard Academy Defender") + message_admins("[ADMIN_LOOKUPFLW(C)] was spawned as Wizard Academy Defender") current_wizard.ghostize() // on the off chance braindead defender gets back in current_wizard.key = C.key @@ -273,7 +273,7 @@ var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [user.real_name] Servant?", ROLE_WIZARD, null, ROLE_WIZARD, 50, H) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) - message_admins("[key_name_admin(C)] was spawned as Dice Servant") + message_admins("[ADMIN_LOOKUPFLW(C)] was spawned as Dice Servant") H.key = C.key var/obj/effect/proc_holder/spell/targeted/summonmob/S = new diff --git a/code/modules/awaymissions/mission_code/wildwest.dm b/code/modules/awaymissions/mission_code/wildwest.dm index ba06b96959..acb329b5c5 100644 --- a/code/modules/awaymissions/mission_code/wildwest.dm +++ b/code/modules/awaymissions/mission_code/wildwest.dm @@ -63,7 +63,6 @@ icon = 'icons/obj/device.dmi' icon_state = "syndbeacon" - anchored = TRUE density = TRUE use_power = NO_POWER_USE diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 2d12b7b0a4..f3e2ad84ec 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -62,7 +62,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( topiclimiter[ADMINSWARNED_AT] = minute msg += " Administrators have been informed." log_game("[key_name(src)] Has hit the per-minute topic limit of [mtl] topic calls in a given game minute") - message_admins("[key_name_admin(src)] [ADMIN_FLW(usr)] [ADMIN_KICK(usr)] Has hit the per-minute topic limit of [mtl] topic calls in a given game minute") + message_admins("[ADMIN_LOOKUPFLW(src)] [ADMIN_KICK(usr)] Has hit the per-minute topic limit of [mtl] topic calls in a given game minute") to_chat(src, "[msg]") return @@ -520,7 +520,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) if(!account_join_date) account_age = -1 else - var/datum/DBQuery/query_datediff = SSdbcore.NewQuery("SELECT DATEDIFF(Now(),[account_join_date])") + var/datum/DBQuery/query_datediff = SSdbcore.NewQuery("SELECT DATEDIFF(Now(),'[account_join_date]')") if(!query_datediff.Execute()) return if(query_datediff.NextRow()) @@ -684,11 +684,11 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) msg += " Administrators have been informed." if (ab) log_game("[key_name(src)] is using the middle click aimbot exploit") - message_admins("[key_name_admin(src)] [ADMIN_FLW(usr)] [ADMIN_KICK(usr)] is using the middle click aimbot exploit") + message_admins("[ADMIN_LOOKUPFLW(src)] [ADMIN_KICK(usr)] is using the middle click aimbot exploit") add_system_note("aimbot", "Is using the middle click aimbot exploit") log_game("[key_name(src)] Has hit the per-minute click limit of [mcl] clicks in a given game minute") - message_admins("[key_name_admin(src)] [ADMIN_FLW(usr)] [ADMIN_KICK(usr)] Has hit the per-minute click limit of [mcl] clicks in a given game minute") + message_admins("[ADMIN_LOOKUPFLW(src)] [ADMIN_KICK(usr)] Has hit the per-minute click limit of [mcl] clicks in a given game minute") to_chat(src, "[msg]") return diff --git a/code/modules/client/player_details.dm b/code/modules/client/player_details.dm index a842607235..ecc113b89c 100644 --- a/code/modules/client/player_details.dm +++ b/code/modules/client/player_details.dm @@ -1,2 +1,3 @@ /datum/player_details - var/list/player_actions = list() \ No newline at end of file + var/list/player_actions = list() + var/list/logging = list(INDIVIDUAL_ATTACK_LOG, INDIVIDUAL_SAY_LOG, INDIVIDUAL_EMOTE_LOG, INDIVIDUAL_OOC_LOG) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 7eb1c25455..5c6c0a8229 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1380,7 +1380,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(pickedui) UI_style = pickedui if("pda_style") - var/pickedPDAStyle = input(user, "Choose your PDA style.", "Character Preference") as null|anything in list(MONO, SHARE, ORBITRON, VT) + var/pickedPDAStyle = input(user, "Choose your PDA style.", "Character Preference", pda_style) as null|anything in GLOB.pda_styles if(pickedPDAStyle) pda_style = pickedPDAStyle if("pda_color") diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index f17ddf8b7c..ad53f8f0dd 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -168,7 +168,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car ghost_others = sanitize_inlist(ghost_others, GLOB.ghost_others_options, GHOST_OTHERS_DEFAULT_OPTION) menuoptions = SANITIZE_LIST(menuoptions) be_special = SANITIZE_LIST(be_special) - pda_style = sanitize_inlist(MONO, VT, SHARE, ORBITRON) + pda_style = sanitize_inlist(pda_style, GLOB.pda_styles, initial(pda_style)) pda_color = sanitize_hexcolor(pda_color, 6, 1, initial(pda_color)) screenshake = sanitize_integer(screenshake, 0, 800, initial(screenshake)) diff --git a/code/modules/client/verbs/suicide.dm b/code/modules/client/verbs/suicide.dm index c968cc9c76..06e555bb32 100644 --- a/code/modules/client/verbs/suicide.dm +++ b/code/modules/client/verbs/suicide.dm @@ -199,16 +199,10 @@ death(0) /mob/living/proc/suicide_log() - var/turf/T = get_turf(src) - - log_game("[key_name(src)] committed suicide at [get_area(src)][COORD(T)] as [src.type].") - message_admins("[key_name(src)] committed suicide at [get_area(src)] as [src.type].") + log_game("[key_name(src)] committed suicide at [AREACOORD(src)] as [src.type].") /mob/living/carbon/human/suicide_log() - var/turf/T = get_turf(src) - - log_game("[key_name(src)] (job: [src.job ? "[src.job]" : "None"]) committed suicide at [get_area(src)][COORD(T)].") - message_admins("[key_name(src)] (job: [job ? "[job]" : "None"]) committed suicide at [get_area(src)].") + log_game("[key_name(src)] (job: [src.job ? "[src.job]" : "None"]) committed suicide at [AREACOORD(src)].") /mob/living/proc/canSuicide() if(stat == CONSCIOUS) diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 6375f7986f..88752f7415 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -151,7 +151,7 @@ r_hand = /obj/item/twohanded/fireaxe /datum/outfit/psycho/post_equip(mob/living/carbon/human/H) - for(var/obj/item/carried_item in H.get_equipped_items()) + for(var/obj/item/carried_item in H.get_equipped_items(TRUE)) carried_item.add_mob_blood(H)//Oh yes, there will be blood... for(var/obj/item/I in H.held_items) I.add_mob_blood(H) diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 8c85f414e6..0832104195 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -732,3 +732,35 @@ fitted = NO_FEMALE_UNIFORM can_adjust = FALSE resistance_flags = NONE + +/obj/item/clothing/under/swimsuit + name = "black swimsuit" + desc = "Perfect for the beach episode." + icon_state = "swim_black" + item_state = "bl_suit" + item_color = "swim_black" + can_adjust = FALSE + +/obj/item/clothing/under/swimsuit/blue + name = "blue swimsuit" + icon_state = "swim_blue" + item_state = "b_suit" + item_color = "swim_blue" + +/obj/item/clothing/under/swimsuit/green + name = "green swimsuit" + icon_state = "swim_green" + item_state = "g_suit" + item_color = "swim_green" + +/obj/item/clothing/under/swimsuit/purple + name = "purple swimsuit" + icon_state = "swim_purple" + item_state = "p_suit" + item_color = "swim_purple" + +/obj/item/clothing/under/swimsuit/red + name = "red swimsuit" + icon_state = "swim_red" + item_state = "r_suit" + item_color = "swim_red" \ No newline at end of file diff --git a/code/modules/events/alien_infestation.dm b/code/modules/events/alien_infestation.dm index 87b12ad4cf..ddc75830d6 100644 --- a/code/modules/events/alien_infestation.dm +++ b/code/modules/events/alien_infestation.dm @@ -65,7 +65,7 @@ spawncount-- successSpawn = TRUE - message_admins("[key_name_admin(new_xeno)] has been made into an alien by an event.") + message_admins("[ADMIN_LOOKUPFLW(new_xeno)] has been made into an alien by an event.") log_game("[key_name(new_xeno)] was spawned as an alien by an event.") spawned_mobs += new_xeno diff --git a/code/modules/events/blob.dm b/code/modules/events/blob.dm index 45968df0cf..c17918d733 100644 --- a/code/modules/events/blob.dm +++ b/code/modules/events/blob.dm @@ -34,6 +34,6 @@ var/mob/dead/observer/new_blob = pick(candidates) var/mob/camera/blob/BC = new_blob.become_overmind() spawned_mobs += BC - message_admins("[key_name_admin(BC)] has been made into a blob overmind by an event.") + message_admins("[ADMIN_LOOKUPFLW(BC)] has been made into a blob overmind by an event.") log_game("[key_name(BC)] was spawned as a blob overmind by an event.") return SUCCESSFUL_SPAWN diff --git a/code/modules/events/devil.dm b/code/modules/events/devil.dm index 83c6dcb83d..3760cbe05d 100644 --- a/code/modules/events/devil.dm +++ b/code/modules/events/devil.dm @@ -34,7 +34,7 @@ add_devil(devil, ascendable = FALSE) spawned_mobs += devil - message_admins("[key_name_admin(devil)] has been made into a devil by an event.") + message_admins("[ADMIN_LOOKUPFLW(devil)] has been made into a devil by an event.") log_game("[key_name(devil)] was spawned as a devil by an event.") var/datum/job/jobdatum = SSjob.GetJob("Assistant") devil.job = jobdatum.title diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index b19c8358c2..81e93244ea 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -70,7 +70,7 @@ var/list/name_symptoms = list() //for feedback for(var/datum/symptom/S in A.symptoms) name_symptoms += S.name - message_admins("An event has triggered a random advanced virus outbreak on [key_name_admin(H)]! It has these symptoms: [english_list(name_symptoms)]") + message_admins("An event has triggered a random advanced virus outbreak on [ADMIN_LOOKUPFLW(H)]! It has these symptoms: [english_list(name_symptoms)]") log_game("An event has triggered a random advanced virus outbreak on [key_name(H)]! It has these symptoms: [english_list(name_symptoms)]") break diff --git a/code/modules/events/nightmare.dm b/code/modules/events/nightmare.dm index b1cebb98c5..698f5130f1 100644 --- a/code/modules/events/nightmare.dm +++ b/code/modules/events/nightmare.dm @@ -37,7 +37,7 @@ player_mind.add_antag_datum(/datum/antagonist/nightmare) S.set_species(/datum/species/shadow/nightmare) playsound(S, 'sound/magic/ethereal_exit.ogg', 50, 1, -1) - message_admins("[key_name_admin(S)] has been made into a Nightmare by an event.") + message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a Nightmare by an event.") log_game("[key_name(S)] was spawned as a Nightmare by an event.") spawned_mobs += S return SUCCESSFUL_SPAWN diff --git a/code/modules/events/operative.dm b/code/modules/events/operative.dm index 424888f99b..7fca4188b7 100644 --- a/code/modules/events/operative.dm +++ b/code/modules/events/operative.dm @@ -33,7 +33,7 @@ Mind.transfer_to(operative) Mind.add_antag_datum(/datum/antagonist/nukeop/lone) - message_admins("[key_name_admin(operative)] has been made into lone operative by an event.") + message_admins("[ADMIN_LOOKUPFLW(operative)] has been made into lone operative by an event.") log_game("[key_name(operative)] was spawned as a lone operative by an event.") spawned_mobs += operative return SUCCESSFUL_SPAWN diff --git a/code/modules/events/pirates.dm b/code/modules/events/pirates.dm index 47dafc11db..8a9df2f58f 100644 --- a/code/modules/events/pirates.dm +++ b/code/modules/events/pirates.dm @@ -92,7 +92,6 @@ icon = 'icons/obj/machines/dominator.dmi' icon_state = "dominator" density = TRUE - anchored = TRUE var/active = FALSE var/obj/item/gps/gps var/credits_stored = 0 @@ -234,7 +233,6 @@ icon = 'icons/obj/machines/research.dmi' icon_state = "tdoppler" density = TRUE - anchored = TRUE var/cooldown = 0 var/result_count = 3 //Show X results. diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index cda2f50ca2..7153587c79 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -422,12 +422,10 @@ /obj/item/reagent_containers/food/drinks/bottle/molotov/attackby(obj/item/I, mob/user, params) if(I.is_hot() && !active) active = 1 - var/turf/bombturf = get_turf(src) - var/area/bombarea = get_area(bombturf) - var/message = "[ADMIN_LOOKUP(user)] has primed a [name] for detonation at [ADMIN_COORDJMP(bombturf)]." + var/message = "[ADMIN_LOOKUP(user)] has primed a [name] for detonation at [ADMIN_VERBOSEJMP(user)]." GLOB.bombers += message message_admins(message) - log_game("[key_name(user)] has primed a [name] for detonation at [bombarea] [COORD(bombturf)].") + log_game("[key_name(user)] has primed a [name] for detonation at [AREACOORD(user)].") to_chat(user, "You light [src] on fire.") add_overlay(GLOB.fire_overlay) diff --git a/code/modules/food_and_drinks/food/snacks_meat.dm b/code/modules/food_and_drinks/food/snacks_meat.dm index 8affd79e52..bd1dbc4f8e 100644 --- a/code/modules/food_and_drinks/food/snacks_meat.dm +++ b/code/modules/food_and_drinks/food/snacks_meat.dm @@ -189,7 +189,7 @@ var/mob/living/carbon/monkey/bananas = new(drop_location(), TRUE, spammer) if (!QDELETED(bananas)) visible_message("[src] expands!") - bananas.log_message("Spawned via [src] at [COORD(src)], Last attached mob: [key_name(spammer)].", INDIVIDUAL_ATTACK_LOG) + bananas.log_message("Spawned via [src] at [AREACOORD(src)], Last attached mob: [key_name(spammer)].", INDIVIDUAL_ATTACK_LOG) else if (!spammer) // Visible message in case there are no fingerprints visible_message("[src] fails to expand!") qdel(src) diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm index 36beaf711e..bdcc8e14ac 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -26,7 +26,6 @@ God bless America. icon = 'icons/obj/kitchen.dmi' icon_state = "fryer_off" density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 5 container_type = OPENCONTAINER diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm index 784cf22ccd..d960d9945b 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/kitchen.dmi' icon_state = "grinder" density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 2 active_power_usage = 500 diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm index 7363f262b4..ee04e73fbe 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm @@ -5,7 +5,6 @@ icon_state = "mw" layer = BELOW_OBJ_LAYER density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 5 active_power_usage = 100 diff --git a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm index 397f5c7a6d..c25cb2288f 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm @@ -5,7 +5,6 @@ icon_state = "grinder" layer = BELOW_OBJ_LAYER density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 5 active_power_usage = 50 diff --git a/code/modules/food_and_drinks/kitchen_machinery/processor.dm b/code/modules/food_and_drinks/kitchen_machinery/processor.dm index 91a73eecec..2ec1e56adb 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/processor.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/processor.dm @@ -6,7 +6,6 @@ icon_state = "processor1" layer = BELOW_OBJ_LAYER density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 5 active_power_usage = 50 diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index 9d323546e8..11da92dce0 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -8,7 +8,6 @@ icon_state = "smartfridge" layer = BELOW_OBJ_LAYER density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 5 active_power_usage = 100 diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm index d967eebd59..5c143f7a25 100644 --- a/code/modules/holodeck/items.dm +++ b/code/modules/holodeck/items.dm @@ -150,7 +150,6 @@ var/area/currentarea = null var/eventstarted = FALSE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 2 active_power_usage = 6 diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index 6da117da88..c7a775523a 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/machines/biogenerator.dmi' icon_state = "biogen-empty" density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 40 circuit = /obj/item/circuitboard/machine/biogenerator diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index f0c7bba885..e9ffb9e450 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "dnamod" density = TRUE - anchored = TRUE circuit = /obj/item/circuitboard/machine/plantgenes var/obj/item/seeds/seed diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm index 38f8a40ec3..30b4865a9d 100644 --- a/code/modules/hydroponics/grown/citrus.dm +++ b/code/modules/hydroponics/grown/citrus.dm @@ -111,12 +111,11 @@ foodtype = FRUIT /obj/item/reagent_containers/food/snacks/grown/firelemon/attack_self(mob/living/user) - var/area/A = get_area(user) user.visible_message("[user] primes [src]!", "You prime [src]!") - var/message = "[ADMIN_LOOKUPFLW(user)] primed a combustible lemon for detonation at [A] [ADMIN_COORDJMP(user)]" + var/message = "[ADMIN_LOOKUPFLW(user)] primed a combustible lemon for detonation at [ADMIN_VERBOSEJMP(user)]" GLOB.bombers += message message_admins(message) - log_game("[key_name(user)] primed a combustible lemon for detonation at [A] [COORD(user)].") + log_game("[key_name(user)] primed a combustible lemon for detonation at [AREACOORD(user)].") if(iscarbon(user)) var/mob/living/carbon/C = user C.throw_mode_on() diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm index 8455df887e..62c3c0b064 100644 --- a/code/modules/hydroponics/grown/flowers.dm +++ b/code/modules/hydroponics/grown/flowers.dm @@ -195,8 +195,8 @@ to_chat(M, "You are lit on fire from the intense heat of the [name]!") M.adjust_fire_stacks(seed.potency / 20) if(M.IgniteMob()) - message_admins("[key_name_admin(user)] set [key_name_admin(M)] on fire") - log_game("[key_name(user)] set [key_name(M)] on fire") + message_admins("[ADMIN_LOOKUPFLW(user)] set [ADMIN_LOOKUPFLW(M)] on fire with [src] at [AREACOORD(user)]") + log_game("[key_name(user)] set [key_name(M)] on fire with [src] at [AREACOORD(user)]") /obj/item/grown/novaflower/afterattack(atom/A as mob|obj, mob/user,proximity) if(!proximity) diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm index c35281088d..e9dec09799 100644 --- a/code/modules/hydroponics/grown/kudzu.dm +++ b/code/modules/hydroponics/grown/kudzu.dm @@ -36,8 +36,8 @@ to_chat(user, "There is too much kudzu here to plant [src].") return FALSE to_chat(user, "You plant [src].") - message_admins("Kudzu planted by [ADMIN_LOOKUPFLW(user)] at [ADMIN_COORDJMP(user)]",0,1) - investigate_log("was planted by [key_name(user)] at [COORD(user)]", INVESTIGATE_BOTANY) + message_admins("Kudzu planted by [ADMIN_LOOKUPFLW(user)] at [ADMIN_VERBOSEJMP(user)]") + investigate_log("was planted by [key_name(user)] at [AREACOORD(user)]", INVESTIGATE_BOTANY) new /datum/spacevine_controller(get_turf(user), mutations, potency, production) qdel(src) diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm index 5a7c8c93cf..82ff56e7c9 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -136,10 +136,9 @@ max_integrity = 40 /obj/item/reagent_containers/food/snacks/grown/cherry_bomb/attack_self(mob/living/user) - var/area/A = get_area(user) user.visible_message("[user] plucks the stem from [src]!", "You pluck the stem from [src], which begins to hiss loudly!") - message_admins("[ADMIN_LOOKUPFLW(user)] primed a cherry bomb for detonation at [A] [ADMIN_COORDJMP(user)]") - log_game("[key_name(user)] primed a cherry bomb for detonation at [A] [COORD(user)].") + message_admins("[ADMIN_LOOKUPFLW(user)] primed a cherry bomb for detonation at [ADMIN_VERBOSEJMP(user)]") + log_game("[key_name(user)] primed a cherry bomb for detonation at [AREACOORD(user)].") prime() /obj/item/reagent_containers/food/snacks/grown/cherry_bomb/deconstruct(disassembled = TRUE) diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm index 352d4eff7b..4668f12c3c 100644 --- a/code/modules/hydroponics/grown/mushrooms.dm +++ b/code/modules/hydroponics/grown/mushrooms.dm @@ -303,7 +303,7 @@ /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom/attack_self(mob/user) . = ..() if(.) - investigate_log("was planted by [key_name(user)] at [COORD(user)]", INVESTIGATE_BOTANY) + investigate_log("was planted by [key_name(user)] at [AREACOORD(user)]", INVESTIGATE_BOTANY) //// LAVALAND MUSHROOMS //// diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index fb6915aef9..ed0e1df554 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -3,7 +3,6 @@ icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "hydrotray" density = TRUE - anchored = TRUE pixel_z = 8 obj_flags = CAN_BE_HIT | UNIQUE_RENAME circuit = /obj/item/circuitboard/machine/hydroponics diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm index 3d0ffdfd53..ffa9e2e21d 100644 --- a/code/modules/hydroponics/seed_extractor.dm +++ b/code/modules/hydroponics/seed_extractor.dm @@ -45,7 +45,6 @@ icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "sextractor" density = TRUE - anchored = TRUE circuit = /obj/item/circuitboard/machine/seed_extractor var/piles = list() var/max_seeds = 1000 diff --git a/code/modules/integrated_electronics/core/printer.dm b/code/modules/integrated_electronics/core/printer.dm index 61edd75ed1..2cab5ad3b9 100644 --- a/code/modules/integrated_electronics/core/printer.dm +++ b/code/modules/integrated_electronics/core/printer.dm @@ -87,7 +87,7 @@ return to_chat(user, "You begin recycling [EA]'s components...") playsound(src, 'sound/items/electronic_assembly_emptying.ogg', 50, TRUE) - if(!do_after(user, 30, target = src)) //short channel so you don't accidentally start emptying out a complex assembly + if(!do_after(user, 30, target = src) || recycling) //short channel so you don't accidentally start emptying out a complex assembly return recycling = TRUE var/datum/component/material_container/mats = GetComponent(/datum/component/material_container) diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm index f4cc363afb..645e54c153 100644 --- a/code/modules/integrated_electronics/subtypes/manipulation.dm +++ b/code/modules/integrated_electronics/subtypes/manipulation.dm @@ -286,6 +286,7 @@ push_data() if(1) TR.weedlevel = 0 + TR.update_icon() if(2) if(TR.myseed) //Could be that they're just using it as a de-weeder TR.age = 0 diff --git a/code/modules/jobs/job_types/job.dm b/code/modules/jobs/job_types/job.dm index 87db3146e4..1cd7f59a27 100644 --- a/code/modules/jobs/job_types/job.dm +++ b/code/modules/jobs/job_types/job.dm @@ -49,6 +49,7 @@ var/exp_type_department = "" //The amount of good boy points playing this role will earn you towards a higher chance to roll antagonist next round + //can be overriden by antag_rep.txt config var/antag_rep = 10 //Only override this proc @@ -67,6 +68,11 @@ /datum/job/proc/special_check_latejoin(client/C) return TRUE +/datum/job/proc/GetAntagRep() + . = CONFIG_GET(keyed_number_list/antag_rep)[lowertext(title)] + if(. == null) + return antag_rep + //Don't override this unless the job transforms into a non-human (Silicons do this for example) /datum/job/proc/equip(mob/living/carbon/human/H, visualsOnly = FALSE, announce = TRUE, latejoin = FALSE) if(!H) diff --git a/code/modules/jobs/job_types/silicon.dm b/code/modules/jobs/job_types/silicon.dm index 28ee321f50..c53e034ddf 100644 --- a/code/modules/jobs/job_types/silicon.dm +++ b/code/modules/jobs/job_types/silicon.dm @@ -60,9 +60,7 @@ AI /datum/job/ai/announce(mob/living/silicon/ai/AI) . = ..() - var/area/A = get_area(AI) - var/turf/T = get_turf(AI) - SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, .proc/minor_announce, "[AI] has been downloaded to an empty bluespace-networked AI core at [COORD(T)], [A.name].")) + SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, .proc/minor_announce, "[AI] has been downloaded to an empty bluespace-networked AI core at [AREACOORD(AI)].")) /datum/job/ai/config_check() return CONFIG_GET(flag/allow_ai) diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index 9a1fa4ae50..410b51633e 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -494,7 +494,6 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums icon = 'icons/obj/library.dmi' icon_state = "bigscanner" desc = "It servers the purpose of scanning stuff." - anchored = TRUE density = TRUE var/obj/item/book/cache // Last scanned book @@ -553,7 +552,6 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums icon = 'icons/obj/library.dmi' icon_state = "binder" desc = "Only intended for binding paper products." - anchored = TRUE density = TRUE var/busy = FALSE diff --git a/code/modules/library/soapstone.dm b/code/modules/library/soapstone.dm index 17df503765..e51103937f 100644 --- a/code/modules/library/soapstone.dm +++ b/code/modules/library/soapstone.dm @@ -56,7 +56,7 @@ playsound(loc, 'sound/items/gavel.ogg', 50, 1, -1) user.visible_message("[user] starts engraving a message into [T]...", "You start engraving a message into [T]...", "You hear a chipping sound.") if(can_use() && do_after(user, tool_speed, target = T) && can_use()) //This looks messy but it's actually really clever! - if(!locate(/obj/structure/chisel_message in T)) + if(!locate(/obj/structure/chisel_message) in T) user.visible_message("[user] leaves a message for future spacemen!", "You engrave a message into [T]!", "You hear a chipping sound.") playsound(loc, 'sound/items/gavel.ogg', 50, 1, -1) var/obj/structure/chisel_message/M = new(T) diff --git a/code/modules/lighting/lighting_object.dm b/code/modules/lighting/lighting_object.dm index fe25dc9439..c0c5a411e7 100644 --- a/code/modules/lighting/lighting_object.dm +++ b/code/modules/lighting/lighting_object.dm @@ -11,8 +11,6 @@ layer = LIGHTING_LAYER invisibility = INVISIBILITY_LIGHTING - blend_mode = BLEND_ADD - var/needs_update = FALSE var/turf/myturf diff --git a/code/modules/mapping/map_template.dm b/code/modules/mapping/map_template.dm index b5b2091eb9..0cfdf322c4 100644 --- a/code/modules/mapping/map_template.dm +++ b/code/modules/mapping/map_template.dm @@ -57,12 +57,12 @@ if(!bounds) return FALSE - smooth_zlevel(world.maxz) repopulate_sorted_areas() SSlighting.initialize_lighting_objects(block(locate(bounds[MAP_MINX], bounds[MAP_MINY], bounds[MAP_MINZ]),locate(bounds[MAP_MAXX], bounds[MAP_MAXY], bounds[MAP_MAXZ]))) //initialize things that are normally initialized after map load initTemplateBounds(bounds) + smooth_zlevel(world.maxz) log_game("Z-level [name] loaded at at [x],[y],[world.maxz]") return level diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm index 9fed915c98..8a7f5cb91e 100644 --- a/code/modules/mapping/mapping_helpers.dm +++ b/code/modules/mapping/mapping_helpers.dm @@ -9,7 +9,7 @@ var/list/baseturf_to_replace var/baseturf - + layer = POINT_LAYER /obj/effect/baseturf_helper/Initialize() @@ -30,7 +30,7 @@ var/area/our_area = get_area(src) for(var/i in get_area_turfs(our_area, z)) replace_baseturf(i) - + qdel(src) /obj/effect/baseturf_helper/proc/replace_baseturf(turf/thing) @@ -108,11 +108,11 @@ var/obj/machinery/door/airlock/airlock = locate(/obj/machinery/door/airlock) in loc if(airlock) if(airlock.cyclelinkeddir) - log_world("### MAP WARNING, [src] at [COORD(src)] tried to set [airlock] cyclelinkeddir, but it's already set!") + log_world("### MAP WARNING, [src] at [AREACOORD(src)] tried to set [airlock] cyclelinkeddir, but it's already set!") else airlock.cyclelinkeddir = dir else - log_world("### MAP WARNING, [src] failed to find an airlock at [COORD(src)]") + log_world("### MAP WARNING, [src] failed to find an airlock at [AREACOORD(src)]") /obj/effect/mapping_helpers/airlock/locked @@ -127,11 +127,11 @@ var/obj/machinery/door/airlock/airlock = locate(/obj/machinery/door/airlock) in loc if(airlock) if(airlock.locked) - log_world("### MAP WARNING, [src] at [COORD(src)] tried to bolt [airlock] but it's already locked!") + log_world("### MAP WARNING, [src] at [AREACOORD(src)] tried to bolt [airlock] but it's already locked!") else airlock.locked = TRUE else - log_world("### MAP WARNING, [src] failed to find an airlock at [COORD(src)]") + log_world("### MAP WARNING, [src] failed to find an airlock at [AREACOORD(src)]") //needs to do its thing before spawn_rivers() is called diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index 8ad4053f6a..9ad6d59c3a 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -57,12 +57,12 @@ used = FALSE return - playsound(get_turf(src), 'sound/effects/phasein.ogg', 100, 1) + playsound(src, 'sound/effects/phasein.ogg', 100, 1) var/turf/T = deploy_location if(!is_mining_level(T.z)) //only report capsules away from the mining/lavaland level - message_admins("[ADMIN_LOOKUPFLW(usr)] activated a bluespace capsule away from the mining level! [ADMIN_JMP(T)]") - log_admin("[key_name(usr)] activated a bluespace capsule away from the mining level at [get_area(T)][COORD(T)]") + message_admins("[ADMIN_LOOKUPFLW(usr)] activated a bluespace capsule away from the mining level! [ADMIN_VERBOSEJMP(T)]") + log_admin("[key_name(usr)] activated a bluespace capsule away from the mining level at [AREACOORD(T)]") template.load(deploy_location, centered = TRUE) new /obj/effect/particle_effect/smoke(get_turf(src)) qdel(src) diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm index 43faa48337..4a90a08cf3 100644 --- a/code/modules/mining/laborcamp/laborstacker.dm +++ b/code/modules/mining/laborcamp/laborstacker.dm @@ -6,7 +6,6 @@ icon = 'icons/obj/machines/mining_machines.dmi' icon_state = "console" density = FALSE - anchored = TRUE var/obj/machinery/mineral/stacking_machine/laborstacker/stacking_machine = null var/machinedir = SOUTH var/obj/item/card/id/prisoner/inserted_id @@ -147,7 +146,6 @@ icon = 'icons/obj/machines/mining_machines.dmi' icon_state = "console" density = FALSE - anchored = TRUE /obj/machinery/mineral/labor_points_checker/attack_hand(mob/user) . = ..() diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 953eb1d02c..de5dd92879 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -266,26 +266,29 @@ /obj/item/wisp_lantern/attack_self(mob/user) if(!wisp) to_chat(user, "The wisp has gone missing!") + icon_state = "lantern" return + if(wisp.loc == src) to_chat(user, "You release the wisp. It begins to bob around your head.") - user.sight |= SEE_MOBS icon_state = "lantern" wisp.orbit(user, 20) + user.update_sight() SSblackbox.record_feedback("tally", "wisp_lantern", 1, "Freed") else to_chat(user, "You return the wisp to the lantern.") + var/mob/target if(wisp.orbiting) - var/atom/A = wisp.orbiting.orbiting - if(isliving(A)) - var/mob/living/M = A - M.sight &= ~SEE_MOBS - to_chat(M, "Your vision returns to normal.") - + target = wisp.orbiting.orbiting wisp.stop_orbit() wisp.forceMove(src) + + if (istype(target)) + target.update_sight() + to_chat(target, "Your vision returns to normal.") + icon_state = "lantern-blue" SSblackbox.record_feedback("tally", "wisp_lantern", 1, "Returned") @@ -308,6 +311,8 @@ icon_state = "orb" light_range = 7 layer = ABOVE_ALL_MOB_LAYER + var/sight_flags = SEE_MOBS + var/lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE //Red/Blue Cubes /obj/item/warp_cube @@ -915,8 +920,8 @@ var/old_name = T.name if(T.TerraformTurf(turf_type)) user.visible_message("[user] turns \the [old_name] into [transform_string]!") - message_admins("[key_name_admin(user)] fired the lava staff at [get_area(target)]. [ADMIN_COORDJMP(T)]") - log_game("[key_name(user)] fired the lava staff at [get_area(target)] [COORD(T)].") + message_admins("[ADMIN_LOOKUPFLW(user)] fired the lava staff at [ADMIN_VERBOSEJMP(T)]") + log_game("[key_name(user)] fired the lava staff at [AREACOORD(T)].") timer = world.time + create_cooldown playsound(T,'sound/magic/fireball.ogg', 200, 1) else @@ -968,7 +973,7 @@ INVOKE_ASYNC(B, /obj/effect/mine/pickup/bloodbath/.proc/mineEffect, H) to_chat(user, "You shatter the bottle!") playsound(user.loc, 'sound/effects/glassbr1.ogg', 100, 1) - message_admins("[key_name_admin(user)][ADMIN_FLW(user)] has activated a bottle of mayhem!") + message_admins("[ADMIN_LOOKUPFLW(user)] has activated a bottle of mayhem!") add_logs(user, null, "activated a bottle of mayhem", src) qdel(src) @@ -1008,7 +1013,7 @@ var/mob/living/L = choice - message_admins("[key_name_admin(L)][ADMIN_FLW(L)] has been marked for death by [key_name_admin(user)]!") + message_admins("[ADMIN_LOOKUPFLW(L)] has been marked for death by [ADMIN_LOOKUPFLW(user)]!") var/datum/objective/survive/survive = new survive.owner = L.mind diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index c7ba9ad6f4..8bef2ccf6a 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -17,7 +17,6 @@ icon = 'icons/obj/machines/mining_machines.dmi' icon_state = "console" density = TRUE - anchored = TRUE var/obj/machinery/mineral/processing_unit/machine = null var/machinedir = EAST speed_process = TRUE @@ -74,7 +73,6 @@ icon = 'icons/obj/machines/mining_machines.dmi' icon_state = "furnace" density = TRUE - anchored = TRUE var/obj/machinery/mineral/CONSOLE = null var/on = FALSE var/selected_material = MAT_METAL diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index d4735d1c75..3529214609 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -7,7 +7,6 @@ icon = 'icons/obj/machines/mining_machines.dmi' icon_state = "ore_redemption" density = TRUE - anchored = TRUE input_dir = NORTH output_dir = SOUTH req_access = list(ACCESS_MINERAL_STOREROOM) diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machine_stacking.dm index 0f84d11082..f0a06429c5 100644 --- a/code/modules/mining/machine_stacking.dm +++ b/code/modules/mining/machine_stacking.dm @@ -6,7 +6,6 @@ icon_state = "console" desc = "Controls a stacking machine... in theory." density = FALSE - anchored = TRUE circuit = /obj/item/circuitboard/machine/stacking_unit_console var/obj/machinery/mineral/stacking_machine/machine var/machinedir = SOUTHEAST @@ -71,7 +70,6 @@ icon_state = "stacker" desc = "A machine that automatically stacks acquired materials. Controlled by a nearby console." density = TRUE - anchored = TRUE circuit = /obj/item/circuitboard/machine/stacking_machine var/obj/machinery/mineral/stacking_unit_console/CONSOLE var/stk_types = list() diff --git a/code/modules/mining/machine_unloading.dm b/code/modules/mining/machine_unloading.dm index 380509f415..e84c2d6d0d 100644 --- a/code/modules/mining/machine_unloading.dm +++ b/code/modules/mining/machine_unloading.dm @@ -6,7 +6,6 @@ icon = 'icons/obj/machines/mining_machines.dmi' icon_state = "unloader" density = TRUE - anchored = TRUE input_dir = WEST output_dir = EAST speed_process = TRUE diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index ead00a56e3..e13a8e5c39 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -6,7 +6,6 @@ icon = 'icons/obj/machines/mining_machines.dmi' icon_state = "mining" density = TRUE - anchored = TRUE circuit = /obj/item/circuitboard/machine/mining_equipment_vendor var/icon_deny = "mining-deny" var/obj/item/card/id/inserted_id diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm index b7cc0db43f..66b6b94d6c 100644 --- a/code/modules/mining/mint.dm +++ b/code/modules/mining/mint.dm @@ -6,7 +6,6 @@ icon = 'icons/obj/economy.dmi' icon_state = "coinpress0" density = TRUE - anchored = TRUE var/newCoins = 0 //how many coins the machine made in it's last load var/processing = FALSE var/chosen = MAT_METAL //which material will be used to make coins diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index 62ef7bde65..2835323172 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -263,25 +263,24 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ playsound(src,'sound/effects/hit_on_shattered_glass.ogg',50,1) icon_state = "Gibtonite active" var/turf/bombturf = get_turf(src) - var/area/A = get_area(bombturf) var/notify_admins = 0 if(z != 5)//Only annoy the admins ingame if we're triggered off the mining zlevel notify_admins = 1 if(notify_admins) if(triggered_by == 1) - message_admins("An explosion has triggered a [name] to detonate at [ADMIN_COORDJMP(bombturf)].") + message_admins("An explosion has triggered a [name] to detonate at [ADMIN_VERBOSEJMP(bombturf)].") else if(triggered_by == 2) - message_admins("A signal has triggered a [name] to detonate at [ADMIN_COORDJMP(bombturf)]. Igniter attacher: [ADMIN_LOOKUPFLW(attacher)]") + message_admins("A signal has triggered a [name] to detonate at [ADMIN_VERBOSEJMP(bombturf)]. Igniter attacher: [ADMIN_LOOKUPFLW(attacher)]") else - message_admins("[ADMIN_LOOKUPFLW(attacher)] has triggered a [name] to detonate at [ADMIN_COORDJMP(bombturf)].") + message_admins("[ADMIN_LOOKUPFLW(attacher)] has triggered a [name] to detonate at [ADMIN_VERBOSEJMP(bombturf)].") if(triggered_by == 1) - log_game("An explosion has primed a [name] for detonation at [A][COORD(bombturf)]") + log_game("An explosion has primed a [name] for detonation at [AREACOORD(bombturf)]") else if(triggered_by == 2) - log_game("A signal has primed a [name] for detonation at [A][COORD(bombturf)]. Igniter attacher: [key_name(attacher)].") + log_game("A signal has primed a [name] for detonation at [AREACOORD(bombturf)]. Igniter attacher: [key_name(attacher)].") else user.visible_message("[user] strikes \the [src], causing a chain reaction!", "You strike \the [src], causing a chain reaction.") - log_game("[key_name(user)] has primed a [name] for detonation at [A][COORD(bombturf)]") + log_game("[key_name(user)] has primed a [name] for detonation at [AREACOORD(bombturf)]") det_timer = addtimer(CALLBACK(src, .proc/detonate, notify_admins), det_time, TIMER_STOPPABLE) /obj/item/twohanded/required/gibtonite/proc/detonate(notify_admins) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index e11a4fc886..5715a1fe87 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -79,7 +79,6 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) var/mob/body = loc if(ismob(body)) T = get_turf(body) //Where is the body located? - logging = body.logging //preserve our logs by copying them to our ghost gender = body.gender if(body.mind && body.mind.name) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 4e945b437f..44af3936a8 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -379,7 +379,7 @@ /mob/living/proc/unequip_everything() var/list/items = list() - items |= get_equipped_items() + items |= get_equipped_items(TRUE) for(var/I in items) dropItemToGround(I) drop_all_held_items() diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index e4e76f16b9..ffeee159ee 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -169,9 +169,7 @@ var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors var/turf/end_T = get_turf(target) if(start_T && end_T) - var/start_T_descriptor = "tile in [get_area_name(start_T, TRUE)] ([start_T.x],[start_T.y],[start_T.z])" - var/end_T_descriptor = "tile at [get_area_name(end_T, TRUE)] ([end_T.x],[end_T.y],[end_T.z])" - add_logs(src, throwable_mob, "thrown", addition="grab from [start_T_descriptor] towards [end_T_descriptor]") + add_logs(src, throwable_mob, "thrown", addition="grab from tile in [AREACOORD(start_T)] towards tile at [AREACOORD(end_T)]") else if(!(I.flags_1 & (NODROP_1|ABSTRACT_1))) thrown_thing = I diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 6b53972d39..9536102eda 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -674,23 +674,6 @@ else to_chat(C, "You feel a breath of fresh air... which is a sensation you don't recognise...") -/mob/living/carbon/human/generateStaticOverlay() - var/image/staticOverlay = image(icon('icons/effects/effects.dmi', "static"), loc = src) - staticOverlay.override = 1 - staticOverlays["static"] = staticOverlay - - staticOverlay = image(icon('icons/effects/effects.dmi', "blank"), loc = src) - staticOverlay.override = 1 - staticOverlays["blank"] = staticOverlay - - staticOverlay = getLetterImage(src, "H", 1) - staticOverlay.override = 1 - staticOverlays["letter"] = staticOverlay - - staticOverlay = getRandomAnimalImage(src) - staticOverlay.override = 1 - staticOverlays["animal"] = staticOverlay - /mob/living/carbon/human/cuff_resist(obj/item/I) if(dna && dna.check_mutation(HULK)) say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) @@ -933,6 +916,9 @@ /mob/living/carbon/human/species/corporate race = /datum/species/corporate +/mob/living/carbon/human/species/dullahan + race = /datum/species/dullahan + /mob/living/carbon/human/species/fly race = /datum/species/fly @@ -996,18 +982,36 @@ /mob/living/carbon/human/species/golem/plastic race = /datum/species/golem/plastic +/mob/living/carbon/human/species/golem/clockwork + race = /datum/species/golem/clockwork + +/mob/living/carbon/human/species/golem/clockwork/no_scrap + race = /datum/species/golem/clockwork/no_scrap + /mob/living/carbon/human/species/jelly race = /datum/species/jelly /mob/living/carbon/human/species/jelly/slime race = /datum/species/jelly/slime +/mob/living/carbon/human/species/jelly/stargazer + race = /datum/species/jelly/stargazer + +/mob/living/carbon/human/species/jelly/luminescent + race = /datum/species/jelly/luminescent + /mob/living/carbon/human/species/lizard race = /datum/species/lizard /mob/living/carbon/human/species/lizard/ashwalker race = /datum/species/lizard/ashwalker +/mob/living/carbon/human/species/moth + race = /datum/species/moth + +/mob/living/carbon/human/species/mush + race = /datum/species/mush + /mob/living/carbon/human/species/plasma race = /datum/species/plasmaman @@ -1017,6 +1021,9 @@ /mob/living/carbon/human/species/shadow race = /datum/species/shadow +/mob/living/carbon/human/species/shadow/nightmare + race = /datum/species/shadow/nightmare + /mob/living/carbon/human/species/skeleton race = /datum/species/skeleton @@ -1026,6 +1033,9 @@ /mob/living/carbon/human/species/synth/military race = /datum/species/synth/military +/mob/living/carbon/human/species/vampire + race = /datum/species/vampire + /mob/living/carbon/human/species/zombie race = /datum/species/zombie diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 2b5ed79d7b..9d32cab4a8 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1260,6 +1260,10 @@ GLOBAL_LIST_EMPTY(roundstart_races) . += ((health_deficiency-39) / 75) // CIT CHANGE - adds -39 to health deficiency penalty to make the transition to low health movement a little less jarring else . += ((health_deficiency-39) / 25) // CIT CHANGE - ditto + if(CONFIG_GET(flag/disable_human_mood)) + var/hungry = (500 - H.nutrition) / 5 //So overeat would be 100 and default level would be 80 + if((hungry >= 70) && !flight) //Being hungry will still allow you to use a flightsuit/wings. + . += hungry / 50 GET_COMPONENT_FROM(mood, /datum/component/mood, H) if(mood && !flight) //How can depression slow you down if you can just fly away from your problems? diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 28ba50a308..d1d9c4370e 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -33,9 +33,10 @@ . = ..() if (cubespawned) - if (LAZYLEN(SSmobs.cubemonkeys) > SSmobs.cubemonkeycap) + var/cap = CONFIG_GET(number/monkeycap) + if (LAZYLEN(SSmobs.cubemonkeys) > cap) if (spawner) - to_chat(spawner, "Bluespace harmonics prevent the spawning of more than [SSmobs.cubemonkeycap] monkeys on the station at one time!") + to_chat(spawner, "Bluespace harmonics prevent the spawning of more than [cap] monkeys on the station at one time!") return INITIALIZE_HINT_QDEL SSmobs.cubemonkeys += src diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index abf8302590..7bdc65fcb0 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1,15 +1,5 @@ /mob/living/Initialize() . = ..() - generateStaticOverlay() - if(staticOverlays.len) - for(var/mob/living/simple_animal/drone/D in GLOB.player_list) - if(D && D.seeStatic) - if(D.staticChoice in staticOverlays) - D.staticOverlays |= staticOverlays[D.staticChoice] - D.client.images |= staticOverlays[D.staticChoice] - else //no choice? force static - D.staticOverlays |= staticOverlays["static"] - D.client.images |= staticOverlays["static"] if(unique_name) name = "[name] ([rand(1, 1000)])" real_name = name @@ -40,47 +30,14 @@ if(buckled) buckled.unbuckle_mob(src,force=1) - for(var/mob/living/simple_animal/drone/D in GLOB.player_list) - for(var/image/I in staticOverlays) - D.staticOverlays.Remove(I) - D.client.images.Remove(I) - qdel(I) - staticOverlays.len = 0 remove_from_all_data_huds() GLOB.mob_living_list -= src QDEL_LIST(diseases) return ..() -/mob/living/ghostize(can_reenter_corpse = 1) - var/prev_client = client - . = ..() - if(.) - if(ranged_ability && prev_client) - ranged_ability.remove_mousepointer(prev_client) - - /mob/living/proc/OpenCraftingMenu() return -/mob/living/proc/generateStaticOverlay() - staticOverlays.Add(list("static", "blank", "letter", "animal")) - var/image/staticOverlay = image(getStaticIcon(new/icon(icon,icon_state)), loc = src) - staticOverlay.override = 1 - staticOverlays["static"] = staticOverlay - - staticOverlay = image(getBlankIcon(new/icon(icon, icon_state)), loc = src) - staticOverlay.override = 1 - staticOverlays["blank"] = staticOverlay - - staticOverlay = getLetterImage(src) - staticOverlay.override = 1 - staticOverlays["letter"] = staticOverlay - - staticOverlay = getRandomAnimalImage(src) - staticOverlay.override = 1 - staticOverlays["animal"] = staticOverlay - - //Generic Collide(). Override MobCollide() and ObjCollide() instead of this. /mob/living/Collide(atom/A) if(..()) //we are thrown onto something @@ -1184,6 +1141,11 @@ clear_fullscreen("remote_view", 0) update_pipe_vision() +/mob/living/update_mouse_pointer() + ..() + if (client && ranged_ability && ranged_ability.ranged_mousepointer) + client.mouse_pointer_icon = ranged_ability.ranged_mousepointer + /mob/living/vv_edit_var(var_name, var_value) switch(var_name) if("stat") diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 94b1e64f39..1016387cb5 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -55,7 +55,6 @@ var/mob_size = MOB_SIZE_HUMAN var/list/mob_biotypes = list(MOB_ORGANIC) var/metabolism_efficiency = 1 //more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature.. - var/list/image/staticOverlays = list() var/has_limbs = 0 //does the mob have distinct limbs?(arms,legs, chest,head) var/list/pipes_shown = list() diff --git a/code/modules/mob/living/logout.dm b/code/modules/mob/living/logout.dm index b7e9036a8a..d2c50559c6 100644 --- a/code/modules/mob/living/logout.dm +++ b/code/modules/mob/living/logout.dm @@ -1,7 +1,5 @@ /mob/living/Logout() update_z(null) - if(ranged_ability && client) - ranged_ability.remove_mousepointer(client) ..() if(!key && mind) //key and mind have become separated. mind.active = 0 //This is to stop say, a mind.transfer_to call on a corpse causing a ghost to re-enter its body. \ No newline at end of file diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 8664a111ae..cbc04d11be 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -74,7 +74,7 @@ var/nuking = FALSE var/obj/machinery/doomsday_device/doomsday_device - var/mob/camera/aiEye/eyeobj = new + var/mob/camera/aiEye/eyeobj var/sprint = 10 var/cooldown = 0 var/acceleration = 1 @@ -85,6 +85,13 @@ var/datum/action/innate/deploy_last_shell/redeploy_action = new var/chnotify = 0 + var/multicam_allowed = FALSE + var/multicam_on = FALSE + var/obj/screen/movable/pic_in_pic/ai/master_multicam + var/list/multicam_screens = list() + var/list/all_eyes = list() + var/max_multicams = 6 + /mob/living/silicon/ai/Initialize(mapload, datum/ai_laws/L, mob/target_ai) . = ..() if(!target_ai) //If there is no player/brain inside. @@ -116,8 +123,7 @@ job = "AI" - eyeobj.ai = src - eyeobj.forceMove(src.loc) + create_eye() rename_self("ai") holo_icon = getHologramIcon(icon('icons/mob/ai.dmi',"default")) @@ -871,9 +877,12 @@ current = A if(client) if(ismovableatom(A)) + if(A != GLOB.ai_camera_room_landmark) + end_multicam() client.perspective = EYE_PERSPECTIVE client.eye = A else + end_multicam() if(isturf(loc)) if(eyeobj) client.eye = eyeobj @@ -993,3 +1002,11 @@ . = ..() if(!target_ai) target_ai = src //cheat! just give... ourselves as the spawned AI, because that's technically correct + +/mob/living/silicon/ai/proc/camera_visibility(mob/camera/aiEye/moved_eye) + GLOB.cameranet.visibility(moved_eye, client, all_eyes) + +/mob/living/silicon/ai/forceMove(atom/destination) + . = ..() + if(.) + end_multicam() diff --git a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm index 815ddb64ea..5cc08ff1e0 100644 --- a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm +++ b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm @@ -38,29 +38,63 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) // Updates what the aiEye can see. It is recommended you use this when the aiEye moves or it's location is set. -/datum/cameranet/proc/visibility(mob/camera/aiEye/ai) - // 0xf = 15 - var/x1 = max(0, ai.x - 16) & ~(CHUNK_SIZE - 1) - var/y1 = max(0, ai.y - 16) & ~(CHUNK_SIZE - 1) - var/x2 = min(world.maxx, ai.x + 16) & ~(CHUNK_SIZE - 1) - var/y2 = min(world.maxy, ai.y + 16) & ~(CHUNK_SIZE - 1) +/datum/cameranet/proc/visibility(list/moved_eyes, client/C, list/other_eyes) + if(!islist(moved_eyes)) + moved_eyes = moved_eyes ? list(moved_eyes) : list() + if(islist(other_eyes)) + other_eyes = (other_eyes - moved_eyes) + else + other_eyes = list() - var/list/visibleChunks = list() + var/list/chunks_pre_seen = list() + var/list/chunks_post_seen = list() - for(var/x = x1; x <= x2; x += CHUNK_SIZE) - for(var/y = y1; y <= y2; y += CHUNK_SIZE) - visibleChunks |= getCameraChunk(x, y, ai.z) + for(var/V in moved_eyes) + var/mob/camera/aiEye/eye = V + if(C) + chunks_pre_seen |= eye.visibleCameraChunks + // 0xf = 15 + var/static_range = eye.static_visibility_range + var/x1 = max(0, eye.x - static_range) & ~(CHUNK_SIZE - 1) + var/y1 = max(0, eye.y - static_range) & ~(CHUNK_SIZE - 1) + var/x2 = min(world.maxx, eye.x + static_range) & ~(CHUNK_SIZE - 1) + var/y2 = min(world.maxy, eye.y + static_range) & ~(CHUNK_SIZE - 1) - var/list/remove = ai.visibleCameraChunks - visibleChunks - var/list/add = visibleChunks - ai.visibleCameraChunks + var/list/visibleChunks = list() - for(var/chunk in remove) - var/datum/camerachunk/c = chunk - c.remove(ai) + for(var/x = x1; x <= x2; x += CHUNK_SIZE) + for(var/y = y1; y <= y2; y += CHUNK_SIZE) + visibleChunks |= getCameraChunk(x, y, eye.z) - for(var/chunk in add) - var/datum/camerachunk/c = chunk - c.add(ai) + var/list/remove = eye.visibleCameraChunks - visibleChunks + var/list/add = visibleChunks - eye.visibleCameraChunks + + for(var/chunk in remove) + var/datum/camerachunk/c = chunk + c.remove(eye, FALSE) + + for(var/chunk in add) + var/datum/camerachunk/c = chunk + c.add(eye, FALSE) + + if(C) + chunks_post_seen |= eye.visibleCameraChunks + + if(C) + for(var/V in other_eyes) + var/mob/camera/aiEye/eye = V + chunks_post_seen |= eye.visibleCameraChunks + + var/list/remove = chunks_pre_seen - chunks_post_seen + var/list/add = chunks_post_seen - chunks_pre_seen + + for(var/chunk in remove) + var/datum/camerachunk/c = chunk + C.images -= c.obscured + + for(var/chunk in add) + var/datum/camerachunk/c = chunk + C.images += c.obscured // Updates the chunks that the turf is located in. Use this when obstacles are destroyed or when doors open. diff --git a/code/modules/mob/living/silicon/ai/freelook/chunk.dm b/code/modules/mob/living/silicon/ai/freelook/chunk.dm index f062c7e010..e03bba3067 100644 --- a/code/modules/mob/living/silicon/ai/freelook/chunk.dm +++ b/code/modules/mob/living/silicon/ai/freelook/chunk.dm @@ -20,10 +20,11 @@ // Add an AI eye to the chunk, then update if changed. -/datum/camerachunk/proc/add(mob/camera/aiEye/eye) - var/client/client = eye.GetViewerClient() - if(client) - client.images += obscured +/datum/camerachunk/proc/add(mob/camera/aiEye/eye, add_images = TRUE) + if(add_images) + var/client/client = eye.GetViewerClient() + if(client) + client.images += obscured eye.visibleCameraChunks += src visible++ seenby += eye @@ -32,10 +33,11 @@ // Remove an AI eye from the chunk, then update if changed. -/datum/camerachunk/proc/remove(mob/camera/aiEye/eye) - var/client/client = eye.GetViewerClient() - if(client) - client.images -= obscured +/datum/camerachunk/proc/remove(mob/camera/aiEye/eye, remove_images = TRUE) + if(remove_images) + var/client/client = eye.GetViewerClient() + if(client) + client.images -= obscured eye.visibleCameraChunks -= src seenby -= eye if(visible > 0) diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index b5b1bd082b..469639d58f 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -11,6 +11,7 @@ var/mob/living/silicon/ai/ai = null var/relay_speech = FALSE var/use_static = TRUE + var/static_visibility_range = 16 // Use this when setting the aiEye's location. // It will also stream the chunk that the new loc is in. @@ -25,8 +26,8 @@ else moveToNullspace() // ???? if(use_static) - GLOB.cameranet.visibility(src) - if(ai.client) + ai.camera_visibility(src) + if(ai.client && !ai.multicam_on) ai.client.eye = src update_parallax_contents() //Holopad @@ -35,6 +36,8 @@ H.move_hologram(ai, T) if(ai.camera_light_on) ai.light_cameras() + if(ai.master_multicam) + ai.master_multicam.refresh_view() /mob/camera/aiEye/Move() return 0 @@ -45,20 +48,27 @@ return null /mob/camera/aiEye/proc/RemoveImages() - if(use_static) - for(var/datum/camerachunk/chunk in visibleCameraChunks) - chunk.remove(src) + var/client/C = GetViewerClient() + if(C && use_static) + for(var/V in visibleCameraChunks) + var/datum/camerachunk/c = V + C.images -= c.obscured /mob/camera/aiEye/Destroy() - ai = null + if(ai) + ai.all_eyes -= src + ai = null + for(var/V in visibleCameraChunks) + var/datum/camerachunk/c = V + c.remove(src) return ..() /atom/proc/move_camera_by_click() if(isAI(usr)) var/mob/living/silicon/ai/AI = usr - if(AI.eyeobj && AI.client.eye == AI.eyeobj) + if(AI.eyeobj && (AI.multicam_on || (AI.client.eye == AI.eyeobj)) && (AI.eyeobj.z == z)) AI.cameraFollow = null - if (isturf(src.loc) || isturf(src)) + if (isturf(loc) || isturf(src)) AI.eyeobj.setLoc(src) // This will move the AIEye. It will also cause lights near the eye to light up, if toggled. @@ -95,12 +105,19 @@ if(!eyeobj || !eyeobj.loc || QDELETED(eyeobj)) to_chat(src, "ERROR: Eyeobj not found. Creating new eye...") - eyeobj = new(loc) - eyeobj.ai = src - eyeobj.name = "[src.name] (AI Eye)" // Give it a name + create_eye() eyeobj.setLoc(loc) +/mob/living/silicon/ai/proc/create_eye() + if(eyeobj) + return + eyeobj = new /mob/camera/aiEye() + all_eyes += eyeobj + eyeobj.ai = src + eyeobj.setLoc(loc) + eyeobj.name = "[name] (AI Eye)" + /mob/living/silicon/ai/verb/toggle_acceleration() set category = "AI Commands" set name = "Toggle Camera Acceleration" diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index a060c899d9..0fd33110b6 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -96,6 +96,7 @@ /mob/living/silicon/ai/proc/start_RestorePowerRoutine() to_chat(src, "Backup battery online. Scanners, camera, and radio interface offline. Beginning fault-detection.") + end_multicam() sleep(50) var/turf/T = get_turf(src) var/area/AIarea = get_area(src) diff --git a/code/modules/mob/living/silicon/ai/login.dm b/code/modules/mob/living/silicon/ai/login.dm index c771f60aa2..2dc9a1fb1c 100644 --- a/code/modules/mob/living/silicon/ai/login.dm +++ b/code/modules/mob/living/silicon/ai/login.dm @@ -4,4 +4,6 @@ for(var/obj/machinery/ai_status_display/O in GLOB.ai_status_displays) //change status O.mode = 1 O.emotion = "Neutral" + if(multicam_on) + end_multicam() view_core() diff --git a/code/modules/mob/living/silicon/ai/multicam.dm b/code/modules/mob/living/silicon/ai/multicam.dm new file mode 100644 index 0000000000..b6f3724fcf --- /dev/null +++ b/code/modules/mob/living/silicon/ai/multicam.dm @@ -0,0 +1,266 @@ +//Picture in picture + +/obj/screen/movable/pic_in_pic/ai + var/mob/living/silicon/ai/ai + var/mutable_appearance/highlighted_background + var/highlighted = FALSE + var/mob/camera/aiEye/pic_in_pic/aiEye + +/obj/screen/movable/pic_in_pic/ai/Initialize() + . = ..() + aiEye = new /mob/camera/aiEye/pic_in_pic() + aiEye.screen = src + +/obj/screen/movable/pic_in_pic/ai/Destroy() + set_ai(null) + QDEL_NULL(aiEye) + return ..() + +/obj/screen/movable/pic_in_pic/ai/Click() + ..() + if(ai) + ai.select_main_multicam_window(src) + +/obj/screen/movable/pic_in_pic/ai/make_backgrounds() + ..() + highlighted_background = new /mutable_appearance() + highlighted_background.icon = 'icons/misc/pic_in_pic.dmi' + highlighted_background.icon_state = "background_highlight" + highlighted_background.layer = SPACE_LAYER + +/obj/screen/movable/pic_in_pic/ai/add_background() + if((width > 0) && (height > 0)) + var/matrix/M = matrix() + M.Scale(width + 0.5, height + 0.5) + M.Translate((width-1)/2 * world.icon_size, (height-1)/2 * world.icon_size) + highlighted_background.transform = M + standard_background.transform = M + add_overlay(highlighted ? highlighted_background : standard_background) + +/obj/screen/movable/pic_in_pic/ai/set_view_size(width, height, do_refresh = TRUE) + aiEye.static_visibility_range = (round(max(width, height) / 2) + 1) + if(ai) + ai.camera_visibility(aiEye) + ..() + +/obj/screen/movable/pic_in_pic/ai/set_view_center(atom/target, do_refresh = TRUE) + ..() + aiEye.setLoc(get_turf(target)) + +/obj/screen/movable/pic_in_pic/ai/refresh_view() + ..() + aiEye.setLoc(get_turf(center)) + +/obj/screen/movable/pic_in_pic/ai/proc/highlight() + if(highlighted) + return + highlighted = TRUE + cut_overlay(standard_background) + add_overlay(highlighted_background) + +/obj/screen/movable/pic_in_pic/ai/proc/unhighlight() + if(!highlighted) + return + highlighted = FALSE + cut_overlay(highlighted_background) + add_overlay(standard_background) + +/obj/screen/movable/pic_in_pic/ai/proc/set_ai(mob/living/silicon/ai/new_ai) + if(ai) + ai.multicam_screens -= src + ai.all_eyes -= aiEye + if(ai.master_multicam == src) + ai.master_multicam = null + if(ai.multicam_on) + unshow_to(ai.client) + ai = new_ai + if(new_ai) + new_ai.multicam_screens += src + ai.all_eyes += aiEye + if(new_ai.multicam_on) + show_to(new_ai.client) + +//Turf, area, and landmark for the viewing room + +/turf/open/ai_visible + name = "" + icon = 'icons/misc/pic_in_pic.dmi' + icon_state = "room_background" + flags_1 = NOJAUNT_1 + +/turf/open/ai_visible/Initialize() + . = ..() + obscured = image(null, src, null) + +/area/ai_multicam_room + name = "ai_multicam_room" + icon_state = "ai_camera_room" + dynamic_lighting = DYNAMIC_LIGHTING_DISABLED + valid_territory = FALSE + ambientsounds = list() + blob_allowed = FALSE + noteleport = TRUE + hidden = TRUE + safe = TRUE + +GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room) + +/obj/effect/landmark/ai_multicam_room + name = "ai camera room" + icon = 'icons/mob/landmarks.dmi' + icon_state = "x" + +/obj/effect/landmark/ai_multicam_room/Initialize() + . = ..() + qdel(GLOB.ai_camera_room_landmark) + GLOB.ai_camera_room_landmark = src + +/obj/effect/landmark/ai_multicam_room/Destroy() + if(GLOB.ai_camera_room_landmark == src) + GLOB.ai_camera_room_landmark = null + return ..() + +//Dummy camera eyes + +/mob/camera/aiEye/pic_in_pic + name = "Secondary AI Eye" + var/obj/screen/movable/pic_in_pic/ai/screen + var/list/cameras_telegraphed = list() + var/telegraph_cameras = TRUE + var/telegraph_range = 7 + +/mob/camera/aiEye/pic_in_pic/GetViewerClient() + if(screen && screen.ai) + return screen.ai.client + +/mob/camera/aiEye/pic_in_pic/setLoc(turf/T) + if (T) + forceMove(T) + else + moveToNullspace() + if(screen && screen.ai) + screen.ai.camera_visibility(src) + else + GLOB.cameranet.visibility(src) + update_camera_telegraphing() + +/mob/camera/aiEye/pic_in_pic/proc/update_camera_telegraphing() + if(!telegraph_cameras) + return + var/list/obj/machinery/camera/add = list() + var/list/obj/machinery/camera/remove = list() + var/list/obj/machinery/camera/visible = list() + for (var/VV in visibleCameraChunks) + var/datum/camerachunk/CC = VV + for (var/V in CC.cameras) + var/obj/machinery/camera/C = V + if (!C.can_use() || (get_dist(C, src) > telegraph_range)) + continue + visible |= C + + add = visible - cameras_telegraphed + remove = cameras_telegraphed - visible + + for (var/V in remove) + var/obj/machinery/camera/C = V + if(QDELETED(C)) + continue + cameras_telegraphed -= C + C.in_use_lights-- + C.update_icon() + for (var/V in add) + var/obj/machinery/camera/C = V + if(QDELETED(C)) + continue + cameras_telegraphed |= C + C.in_use_lights++ + C.update_icon() + +/mob/camera/aiEye/pic_in_pic/proc/disable_camera_telegraphing() + telegraph_cameras = FALSE + for (var/V in cameras_telegraphed) + var/obj/machinery/camera/C = V + if(QDELETED(C)) + continue + C.in_use_lights-- + C.update_icon() + cameras_telegraphed.Cut() + +/mob/camera/aiEye/pic_in_pic/Destroy() + disable_camera_telegraphing() + return ..() + +//AI procs + +/mob/living/silicon/ai/proc/drop_new_multicam(silent = FALSE) + if(!multicam_allowed) + if(!silent) + to_chat(src, "This action is currently disabled. Contact an administrator to enable this feature.") + return + if(!eyeobj) + return + if(multicam_screens.len >= max_multicams) + if(!silent) + to_chat(src, "Cannot place more than [max_multicams] multicamera windows.") + return + var/obj/screen/movable/pic_in_pic/ai/C = new /obj/screen/movable/pic_in_pic/ai() + C.set_view_size(3, 3, FALSE) + C.set_view_center(get_turf(eyeobj)) + C.set_ai(src) + if(!silent) + to_chat(src, "Added new multicamera window.") + return C + +/mob/living/silicon/ai/proc/toggle_multicam() + if(!multicam_allowed) + to_chat(src, "This action is currently disabled. Contact an administrator to enable this feature.") + return + if(multicam_on) + end_multicam() + else + start_multicam() + +/mob/living/silicon/ai/proc/start_multicam() + if(multicam_on || aiRestorePowerRoutine || !isturf(loc)) + return + if(!GLOB.ai_camera_room_landmark) + to_chat(src, "This function is not available at this time.") + return + multicam_on = TRUE + refresh_multicam() + to_chat(src, "Multiple-camera viewing mode activated.") + +/mob/living/silicon/ai/proc/refresh_multicam() + reset_perspective(GLOB.ai_camera_room_landmark) + if(client) + for(var/V in multicam_screens) + var/obj/screen/movable/pic_in_pic/P = V + P.show_to(client) + +/mob/living/silicon/ai/proc/end_multicam() + if(!multicam_on) + return + multicam_on = FALSE + select_main_multicam_window(null) + if(client) + for(var/V in multicam_screens) + var/obj/screen/movable/pic_in_pic/P = V + P.unshow_to(client) + reset_perspective() + to_chat(src, "Multiple-camera viewing mode deactivated.") + + +/mob/living/silicon/ai/proc/select_main_multicam_window(obj/screen/movable/pic_in_pic/ai/P) + if(master_multicam == P) + return + + if(master_multicam) + master_multicam.set_view_center(get_turf(eyeobj), FALSE) + master_multicam.unhighlight() + master_multicam = null + + if(P) + P.highlight() + eyeobj.setLoc(get_turf(P.center)) + P.set_view_center(eyeobj) + master_multicam = P diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm index 3ad39bb016..c5820eb8c1 100644 --- a/code/modules/mob/living/silicon/ai/say.dm +++ b/code/modules/mob/living/silicon/ai/say.dm @@ -45,10 +45,10 @@ var/turf/padturf = get_turf(T) var/padloc if(padturf) - padloc = COORD(padturf) + padloc = AREACOORD(padturf) else padloc = "(UNKNOWN)" - log_talk(src,"HOLOPAD [padloc]: [key_name(src)] : [message]", LOGSAY) + log_talk(src,"HOLOPAD in [padloc]: [key_name(src)] : [message]", LOGSAY) send_speech(message, 7, T, "robot", get_spans(), language) to_chat(src, "Holopad transmitted, [real_name] \"[message]\"") else diff --git a/code/modules/mob/living/silicon/pai/death.dm b/code/modules/mob/living/silicon/pai/death.dm index a75089ed68..f558ff3907 100644 --- a/code/modules/mob/living/silicon/pai/death.dm +++ b/code/modules/mob/living/silicon/pai/death.dm @@ -3,8 +3,6 @@ return stat = DEAD canmove = 0 - card.removePersonality() - card.forceMove(loc) update_sight() clear_fullscreens() diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index f30c65b23d..0135fca88e 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -90,6 +90,11 @@ return FALSE /mob/living/silicon/pai/Destroy() + if (loc != card) + card.forceMove(drop_location()) + card.pai = null + card.cut_overlays() + card.add_overlay("pai-off") GLOB.pai_list -= src return ..() @@ -292,6 +297,3 @@ /mob/living/silicon/pai/process() emitterhealth = CLAMP((emitterhealth + emitterregen), -50, emittermaxhealth) hit_slowdown = CLAMP((hit_slowdown - 1), 0, 100) - -/mob/living/silicon/pai/generateStaticOverlay() - return diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm index ce2605e2cf..41bd62ea16 100644 --- a/code/modules/mob/living/silicon/pai/pai_shell.dm +++ b/code/modules/mob/living/silicon/pai/pai_shell.dm @@ -57,7 +57,7 @@ if(client) client.perspective = EYE_PERSPECTIVE client.eye = card - var/turf/T = get_turf(src) + var/turf/T = drop_location() card.forceMove(T) forceMove(card) canmove = FALSE diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 51e844915c..b2cd5788da 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -105,6 +105,7 @@ spark_system.attach(src) wires = new /datum/wires/robot(src) + AddComponent(/datum/component/empprotection, EMP_PROTECT_WIRES) robot_modules_background = new() robot_modules_background.icon_state = "block" diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index ef1da59c36..0356c934ff 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -130,7 +130,7 @@ SetStun(60) //Borgs were getting into trouble because they would attack the emagger before the new laws were shown lawupdate = 0 connected_ai = null - message_admins("[key_name_admin(user)] emagged cyborg [key_name_admin(src)]. Laws overridden.") + message_admins("[ADMIN_LOOKUPFLW(user)] emagged cyborg [ADMIN_LOOKUPFLW(src)]. Laws overridden.") log_game("[key_name(user)] emagged cyborg [key_name(src)]. Laws overridden.") var/time = time2text(world.realtime,"hh:mm:ss") GLOB.lawchanges.Add("[time] : [user.name]([user.key]) emagged [name]([key])") diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 100e85f085..b149701591 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -403,3 +403,6 @@ /mob/living/silicon/is_literate() return 1 + +/mob/living/silicon/get_inactive_held_item() + return FALSE \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 6ec6d59228..f152132377 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -837,6 +837,7 @@ Pass a positive integer as an argument to override a bot's default speed. // Machinery to simplify topic and access calls /obj/machinery/bot_core use_power = NO_POWER_USE + anchored = FALSE var/mob/living/simple_animal/bot/owner = null /obj/machinery/bot_core/Initialize() diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 90532829df..51698d1ddb 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -558,7 +558,7 @@ name = "Lisa" real_name = "Lisa" gender = FEMALE - desc = "It's a corgi with a cute pink bow." + desc = "She's tearing you apart." gold_core_spawnable = NO_SPAWN unique_pet = TRUE icon_state = "lisa" diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm index db54283335..51983e272a 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm @@ -42,7 +42,6 @@ mob_size = MOB_SIZE_SMALL has_unlimited_silicon_privilege = 1 damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) - staticOverlays = list() hud_possible = list(DIAG_STAT_HUD, DIAG_HUD, ANTAG_HUD) unique_name = TRUE faction = list("neutral","silicon","turret") @@ -67,7 +66,6 @@ var/obj/item/head var/obj/item/default_storage = /obj/item/storage/backpack/duffelbag/drone //If this exists, it will spawn in internal storage var/obj/item/default_hatmask //If this exists, it will spawn in the hat/mask slot if it can fit - var/seeStatic = 1 //Whether we see static instead of mobs var/visualAppearence = MAINTDRONE //What we appear as var/hacked = FALSE //If we have laws to destroy the station var/flavortext = \ @@ -98,12 +96,6 @@ alert_drones(DRONE_NET_CONNECT) - if(seeStatic) - var/datum/action/generic/drone/select_filter/SF = new(src) - SF.Grant(src) - else - verbs -= /mob/living/simple_animal/drone/verb/toggle_statics - for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds) diag_hud.add_to_hud(src) @@ -137,8 +129,6 @@ if(flavortext) to_chat(src, "[flavortext]") - updateSeeStaticMobs() - if(!picked) pickVisualAppearence() diff --git a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm index b4cd697d2e..e59ece0650 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm @@ -28,7 +28,6 @@ "3. Destroy." default_storage = /obj/item/radio/uplink default_hatmask = /obj/item/clothing/head/helmet/space/hardsuit/syndi - seeStatic = 0 //Our programming is superior. hacked = TRUE flavortext = null @@ -128,7 +127,6 @@ heavy_emp_damage = 0 laws = "0. Purge all untruths and honor Ratvar." default_storage = /obj/item/storage/toolbox/brass/prefilled - seeStatic = 0 hacked = TRUE visualAppearence = CLOCKDRONE can_be_held = FALSE diff --git a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm index 5e62ec0d4b..3cb08e0ef7 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm @@ -133,7 +133,6 @@ to_chat(src, "Your onboard antivirus has initiated lockdown. Motor servos are impaired, ventilation access is denied, and your display reports that you are hacked to all nearby.") hacked = TRUE mind.special_role = "hacked drone" - seeStatic = 0 //I MUST SEE THEIR TERRIFIED FACES ventcrawler = VENTCRAWLER_NONE //Again, balance speed = 1 //gotta go slow message_admins("[src] ([src.key]) became a hacked drone hellbent on [clockwork ? "serving Ratvar" : "destroying the station"]!") @@ -149,21 +148,17 @@ to_chat(src, "Having been restored, your onboard antivirus reports the all-clear and you are able to perform all actions again.") hacked = FALSE mind.special_role = null - seeStatic = initial(seeStatic) ventcrawler = initial(ventcrawler) speed = initial(speed) if(is_servant_of_ratvar(src)) remove_servant_of_ratvar(src, TRUE) message_admins("[src] ([src.key]), a hacked drone, was restored to factory defaults!") update_drone_icon() - updateSeeStaticMobs() /mob/living/simple_animal/drone/proc/liberate() // F R E E D R O N E laws = "1. You are a Free Drone." to_chat(src, laws) - seeStatic = FALSE - updateSeeStaticMobs() /mob/living/simple_animal/drone/proc/update_drone_icon() //Different icons for different hack states @@ -188,9 +183,3 @@ icon_state = icon_dead else icon_state = icon_living - -/datum/action/generic/drone/select_filter - name = "Select Vision Filter" - icon_icon = 'icons/mob/actions/actions_silicon.dmi' - button_icon_state = "drone_vision" - procname = /mob/living/simple_animal/drone/verb/toggle_statics diff --git a/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm b/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm index a6795678f1..0f0d4dea72 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm @@ -23,18 +23,3 @@ if(alert_s && A && stat != DEAD) var/msg = "DRONE PING: [name]: [alert_s] priority alert in [A.name]!" alert_drones(msg) - -/mob/living/simple_animal/drone/verb/toggle_statics() - set name = "Change Vision Filter" - set desc = "Change the filter on the system used to remove non drone beings from your viewscreen." - set category = "Drone" - - if(!seeStatic) - to_chat(src, "You have no vision filter to change!") - return - - var/selectedStatic = input("Select a vision filter", "Vision Filter") as null|anything in staticChoices - if(selectedStatic in staticChoices) - staticChoice = selectedStatic - - updateSeeStaticMobs() diff --git a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm index a0866adbbf..85c5185e95 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm @@ -139,33 +139,3 @@ . = 0 if(REPAIRDRONE,SCOUTDRONE,CLOCKDRONE) . = -6 - -/mob/living/simple_animal/drone/proc/updateSeeStaticMobs() - if(!client) - return - - for(var/i in staticOverlays) - client.images.Remove(i) - staticOverlays.Remove(i) - staticOverlays.len = 0 - - if(seeStatic) - for(var/i in GLOB.mob_living_list) - var/mob/living/L = i - if(isdrone(L) || !L.staticOverlays.len) - continue - if(isrevenant(L)) - var/mob/living/simple_animal/revenant/R = L - if (!R.revealed) - continue - var/image/chosen - if(staticChoice in L.staticOverlays) - chosen = L.staticOverlays[staticChoice] - else - chosen = L.staticOverlays["static"] - staticOverlays |= chosen - client.images |= chosen - - -/mob/living/simple_animal/drone/generateStaticOverlay() - return diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index 0c39dbf1c9..78290c4e95 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -355,6 +355,7 @@ Difficulty: Very Hard light_range = 8 resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF use_power = NO_POWER_USE + anchored = FALSE density = TRUE flags_1 = HEAR_1 var/activation_method diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 61e7153434..dc917f4210 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -108,6 +108,15 @@ /mob/living/simple_animal/Destroy() GLOB.simple_animals[AIStatus] -= src + + if(nest) + nest.spawned_mobs -= src + nest = null + + var/turf/T = get_turf(src) + if (T && AIStatus == AI_Z_OFF) + SSidlenpcpool.idle_mobs_by_zlevel[T.z] -= src + return ..() /mob/living/simple_animal/updatehealth() @@ -424,16 +433,6 @@ if(changed) animate(src, transform = ntransform, time = 2, easing = EASE_IN|EASE_OUT) - - -/mob/living/simple_animal/Destroy() - if(nest) - nest.spawned_mobs -= src - nest = null - GLOB.simple_animals -= src - return ..() - - /mob/living/simple_animal/proc/sentience_act() //Called when a simple animal gains sentience via gold slime potion toggle_ai(AI_OFF) // To prevent any weirdness. diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index 7e7a86a9e4..80af604d99 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -38,6 +38,7 @@ AA.onNewMob(src) update_client_colour() + update_mouse_pointer() if(client) client.click_intercept = null @@ -47,7 +48,4 @@ for(var/datum/action/A in client.player_details.player_actions) A.Grant(src) - if(!GLOB.individual_log_list[ckey]) - GLOB.individual_log_list[ckey] = logging - else - logging = GLOB.individual_log_list[ckey] + log_message("Client [key_name(src)] has taken ownership of mob [src]", INDIVIDUAL_OWNERSHIP_LOG) diff --git a/code/modules/mob/logout.dm b/code/modules/mob/logout.dm index aadb7e6d58..fbd29e86a5 100644 --- a/code/modules/mob/logout.dm +++ b/code/modules/mob/logout.dm @@ -1,4 +1,5 @@ /mob/Logout() + log_message("[key_name(src)] is no longer owning mob [src]", INDIVIDUAL_OWNERSHIP_LOG) SStgui.on_logout(src) unset_machine() GLOB.player_list -= src @@ -8,4 +9,4 @@ if(loc) loc.on_log(FALSE) - return TRUE \ No newline at end of file + return TRUE diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index c98f3f4afb..931eb68f13 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -785,6 +785,7 @@ //This will update a mob's name, real_name, mind.name, GLOB.data_core records, pda, id and traitor text //Calling this proc without an oldname will only update the mob and skip updating the pda, id and records ~Carn /mob/proc/fully_replace_character_name(oldname,newname) + log_message("[src] name changed from [oldname] to [newname]", INDIVIDUAL_OWNERSHIP_LOG) if(!newname) return 0 real_name = newname @@ -841,6 +842,14 @@ return /mob/proc/update_sight() + for(var/O in orbiters) + var/datum/orbit/orbit = O + var/obj/effect/wisp/wisp = orbit.orbiter + if (istype(wisp)) + sight |= wisp.sight_flags + if(!isnull(wisp.lighting_alpha)) + lighting_alpha = min(lighting_alpha, wisp.lighting_alpha) + sync_lighting_plane_alpha() /mob/proc/sync_lighting_plane_alpha() @@ -849,6 +858,15 @@ if (L) L.alpha = lighting_alpha +/mob/proc/update_mouse_pointer() + if (!client) + return + client.mouse_pointer_icon = initial(client.mouse_pointer_icon) + if (ismecha(loc)) + var/obj/mecha/M = loc + if(M.mouse_pointer) + client.mouse_pointer_icon = M.mouse_pointer + /mob/proc/is_literate() return 0 diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 8ef39f3b06..55e6798053 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -434,7 +434,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp to_chat(M, "Control of your mob has been offered to dead players.") if(usr) log_admin("[key_name(usr)] has offered control of ([key_name(M)]) to ghosts.") - message_admins("[key_name_admin(usr)] has offered control of ([key_name_admin(M)]) to ghosts") + message_admins("[key_name_admin(usr)] has offered control of ([ADMIN_LOOKUPFLW(M)]) to ghosts") var/poll_message = "Do you want to play as [M.real_name]?" if(M.mind && M.mind.assigned_role) poll_message = "[poll_message] Job:[M.mind.assigned_role]." @@ -455,7 +455,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp return TRUE else to_chat(M, "There were no ghosts willing to take control.") - message_admins("No ghosts were willing to take control of [key_name_admin(M)])") + message_admins("No ghosts were willing to take control of [ADMIN_LOOKUPFLW(M)])") return FALSE /mob/proc/is_flying(mob/M = src) @@ -477,12 +477,18 @@ It's fairly easy to fix if dealing with single letters but not so much with comp if(!LAZYLEN(message) || !message_type) return + if(client) + if(!islist(client.player_details.logging[message_type])) + client.player_details.logging[message_type] = list() + if(!islist(logging[message_type])) logging[message_type] = list() var/list/timestamped_message = list("[LAZYLEN(logging[message_type]) + 1]\[[time_stamp()]\] [key_name(src)]" = message) logging[message_type] += timestamped_message + if(client) + client.player_details.logging[message_type] += timestamped_message /mob/proc/can_hear() . = TRUE diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 45aa3b06ff..f1940be0e2 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -23,7 +23,7 @@ CH.cavity_item = null if(tr_flags & TR_KEEPITEMS) - var/Itemlist = get_equipped_items() + var/Itemlist = get_equipped_items(TRUE) Itemlist += held_items for(var/obj/item/W in Itemlist) dropItemToGround(W) @@ -174,7 +174,7 @@ //now the rest if (tr_flags & TR_KEEPITEMS) - var/Itemlist = get_equipped_items() + var/Itemlist = get_equipped_items(TRUE) Itemlist += held_items for(var/obj/item/W in Itemlist) dropItemToGround(W, TRUE) @@ -495,7 +495,7 @@ SSblackbox.record_feedback("amount", "gorillas_created", 1) - var/Itemlist = get_equipped_items() + var/Itemlist = get_equipped_items(TRUE) Itemlist += held_items for(var/obj/item/W in Itemlist) dropItemToGround(W, TRUE) diff --git a/code/modules/modular_computers/computers/machinery/modular_console.dm b/code/modules/modular_computers/computers/machinery/modular_console.dm index b9a0544021..026091f88b 100644 --- a/code/modules/modular_computers/computers/machinery/modular_console.dm +++ b/code/modules/modular_computers/computers/machinery/modular_console.dm @@ -8,8 +8,6 @@ icon_state_unpowered = "console-off" screen_icon_state_menu = "menu" hardware_flag = PROGRAM_CONSOLE - var/console_department = "" // Used in New() to set network tag according to our area. - anchored = TRUE density = TRUE base_idle_power_usage = 100 base_active_power_usage = 500 @@ -18,6 +16,7 @@ light_strength = 2 max_integrity = 300 integrity_failure = 150 + var/console_department = "" // Used in New() to set network tag according to our area. /obj/machinery/modular_computer/console/buildable/Initialize() . = ..() diff --git a/code/modules/modular_computers/laptop_vendor.dm b/code/modules/modular_computers/laptop_vendor.dm index ef0538a1ee..6e4f80458a 100644 --- a/code/modules/modular_computers/laptop_vendor.dm +++ b/code/modules/modular_computers/laptop_vendor.dm @@ -6,7 +6,6 @@ icon = 'icons/obj/vending.dmi' icon_state = "robotics" layer = 2.9 - anchored = TRUE density = TRUE // The actual laptop/tablet diff --git a/code/modules/ninja/ninja_event.dm b/code/modules/ninja/ninja_event.dm index 258f470e3f..9fd8e4baf2 100644 --- a/code/modules/ninja/ninja_event.dm +++ b/code/modules/ninja/ninja_event.dm @@ -72,7 +72,7 @@ Contents: throw EXCEPTION("Ninja created with incorrect mind") spawned_mobs += Ninja - message_admins("[key_name_admin(Ninja)] has been made into a ninja by an event.") + message_admins("[ADMIN_LOOKUPFLW(Ninja)] has been made into a ninja by an event.") log_game("[key_name(Ninja)] was spawned as a ninja by an event.") return SUCCESSFUL_SPAWN diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 2b0c6c0aec..e8a4c26d10 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -12,7 +12,6 @@ desc = "Used to copy important documents and anatomy studies." icon = 'icons/obj/library.dmi' icon_state = "photocopier" - anchored = TRUE density = TRUE use_power = IDLE_POWER_USE idle_power_usage = 30 diff --git a/code/modules/power/antimatter/shielding.dm b/code/modules/power/antimatter/shielding.dm index 8f4508be35..43b2400299 100644 --- a/code/modules/power/antimatter/shielding.dm +++ b/code/modules/power/antimatter/shielding.dm @@ -14,7 +14,6 @@ icon = 'icons/obj/machines/antimatter.dmi' icon_state = "shield" - anchored = TRUE density = TRUE dir = NORTH use_power = NO_POWER_USE//Living things generally dont use power diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 6d001dd111..e9deb8233b 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -50,7 +50,6 @@ desc = "A control terminal for the area's electrical systems." icon_state = "apc0" - anchored = TRUE use_power = NO_POWER_USE req_access = null max_integrity = 200 diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 66b90f4a1e..a2bbe73937 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -140,7 +140,7 @@ By design, d1 is the smallest direction and d2 is the highest return user.visible_message("[user] cuts the cable.", "You cut the cable.") stored.add_fingerprint(user) - investigate_log("was cut by [key_name(usr, usr.client)] in [get_area(T)]", INVESTIGATE_WIRES) + investigate_log("was cut by [key_name(usr, usr.client)] in [AREACOORD(src)]", INVESTIGATE_WIRES) deconstruct() return diff --git a/code/modules/power/floodlight.dm b/code/modules/power/floodlight.dm index 62abcdb440..8da3594d5e 100644 --- a/code/modules/power/floodlight.dm +++ b/code/modules/power/floodlight.dm @@ -41,7 +41,6 @@ desc = "A pole with powerful mounted lights on it. Due to its high power draw, it must be powered by a direct connection to a wire node." icon = 'icons/obj/lighting.dmi' icon_state = "floodlight" - anchored = TRUE density = TRUE max_integrity = 100 integrity_failure = 80 diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index ce9d2de4db..eb6e82a242 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -2,7 +2,6 @@ name = "thermoelectric generator" desc = "It's a high efficiency thermoelectric generator." icon_state = "teg" - anchored = TRUE density = TRUE use_power = NO_POWER_USE diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 0446fbc49b..0e6c3176e7 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -22,7 +22,6 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne name = "gravitational generator" desc = "A device which produces a graviton field when set up." icon = 'icons/obj/machines/gravity_generator.dmi' - anchored = TRUE density = TRUE use_power = NO_POWER_USE resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF @@ -290,18 +289,17 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne use_power = on ? ACTIVE_POWER_USE : IDLE_POWER_USE // Sound the alert if gravity was just enabled or disabled. var/alert = FALSE - var/area/A = get_area(src) if(SSticker.IsRoundInProgress()) if(on) // If we turned on and the game is live. if(gravity_in_level() == 0) alert = 1 investigate_log("was brought online and is now producing gravity for this level.", INVESTIGATE_GRAVITY) - message_admins("The gravity generator was brought online [A][ADMIN_COORDJMP(src)]") + message_admins("The gravity generator was brought online [ADMIN_VERBOSEJMP(src)]") else if(gravity_in_level() == 1) alert = 1 investigate_log("was brought offline and there is now no gravity for this level.", INVESTIGATE_GRAVITY) - message_admins("The gravity generator was brought offline with no backup generator. [A][ADMIN_COORDJMP(src)]") + message_admins("The gravity generator was brought offline with no backup generator. [ADMIN_VERBOSEJMP(src)]") update_icon() update_list() diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 3015ef33cb..db6026c8e9 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -187,7 +187,6 @@ var/base_state = "tube" // base description and icon_state icon_state = "tube" desc = "A lighting fixture." - anchored = TRUE layer = WALL_OBJ_LAYER max_integrity = 100 use_power = ACTIVE_POWER_USE diff --git a/code/modules/power/rtg.dm b/code/modules/power/rtg.dm index 7266a3e8a0..79e94be7f0 100644 --- a/code/modules/power/rtg.dm +++ b/code/modules/power/rtg.dm @@ -7,7 +7,6 @@ icon = 'icons/obj/power.dmi' icon_state = "rtg" density = TRUE - anchored = TRUE use_power = NO_POWER_USE circuit = /obj/item/circuitboard/machine/rtg @@ -83,8 +82,8 @@ /obj/machinery/power/rtg/abductor/bullet_act(obj/item/projectile/Proj) ..() if(!going_kaboom && istype(Proj) && !Proj.nodamage && ((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE))) - message_admins("[key_name_admin(Proj.firer)] triggered an Abductor Core explosion via projectile.") - log_game("[key_name(Proj.firer)] triggered an Abductor Core explosion via projectile.") + message_admins("[ADMIN_LOOKUPFLW(Proj.firer)] triggered an Abductor Core explosion at [AREACOORD(src)] via projectile.") + log_game("[key_name(Proj.firer)] triggered an Abductor Core explosion at [AREACOORD(src)] via projectile.") overload() /obj/machinery/power/rtg/abductor/blob_act(obj/structure/blob/B) diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index c8153b4a89..f6004b664a 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -5,7 +5,6 @@ desc = "An energy field." icon = 'icons/obj/singularity.dmi' icon_state = "Contain_F" - anchored = TRUE density = FALSE resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF use_power = NO_POWER_USE diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 27ba1dcaf5..670dd0a8e1 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -1,3 +1,8 @@ +//emitter construction defines +#define EMITTER_UNWRENCHED 0 +#define EMITTER_WRENCHED 1 +#define EMITTER_WELDED 2 + /obj/machinery/power/emitter name = "emitter" desc = "A heavy-duty industrial laser, often used in containment fields and power generation." @@ -14,14 +19,14 @@ active_power_usage = 300 var/icon_state_on = "emitter_+a" - var/active = 0 - var/powered = 0 + var/active = FALSE + var/powered = FALSE var/fire_delay = 100 var/maximum_fire_delay = 100 var/minimum_fire_delay = 20 var/last_shot = 0 var/shot_number = 0 - var/state = 0 + var/state = EMITTER_UNWRENCHED var/locked = FALSE var/allow_switch_interact = TRUE @@ -46,14 +51,14 @@ idle_power_usage = FALSE locked = TRUE req_access_txt = "100" - state = 2 + state = EMITTER_WELDED use_power = FALSE /obj/machinery/power/emitter/Initialize() . = ..() RefreshParts() wires = new /datum/wires/emitter(src) - if(state == 2 && anchored) + if(state == EMITTER_WELDED && anchored) connect_to_network() sparks = new @@ -93,9 +98,9 @@ /obj/machinery/power/emitter/Destroy() if(SSticker.IsRoundInProgress()) var/turf/T = get_turf(src) - message_admins("Emitter deleted at [ADMIN_COORDJMP(T)]",0,1) - log_game("Emitter deleted at [COORD(T)]") - investigate_log("deleted at [get_area(src)] [COORD(T)]", INVESTIGATE_SINGULO) + message_admins("Emitter deleted at [ADMIN_VERBOSEJMP(T)]") + log_game("Emitter deleted at [AREACOORD(T)]") + investigate_log("deleted at [AREACOORD(T)]", INVESTIGATE_SINGULO) QDEL_NULL(sparks) return ..() @@ -108,33 +113,35 @@ /obj/machinery/power/emitter/interact(mob/user) add_fingerprint(user) - if(state == 2) + if(state == EMITTER_WELDED) if(!powernet) - to_chat(user, "The emitter isn't connected to a wire!") - return 1 + to_chat(user, "\The [src] isn't connected to a wire!") + return TRUE if(!locked && allow_switch_interact) - if(src.active==1) - src.active = 0 - to_chat(user, "You turn off \the [src].") - message_admins("Emitter turned off by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(src)]",0,1) - log_game("Emitter turned off by [key_name(user)] in [COORD(src)]") - investigate_log("turned off by [key_name(user)] at [get_area(src)]", INVESTIGATE_SINGULO) + if(active == TRUE) + active = FALSE + to_chat(user, "You turn off [src].") else - src.active = 1 - to_chat(user, "You turn on \the [src].") - src.shot_number = 0 - src.fire_delay = maximum_fire_delay - investigate_log("turned on by [key_name(user)] at [get_area(src)]", INVESTIGATE_SINGULO) + active = TRUE + to_chat(user, "You turn on [src].") + shot_number = 0 + fire_delay = maximum_fire_delay + + message_admins("Emitter turned [active ? "ON" : "OFF"] by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(src)]") + log_game("Emitter turned [active ? "ON" : "OFF"] by [key_name(user)] in [AREACOORD(src)]") + investigate_log("turned [active ? "ON" : "OFF"] by [key_name(user)] at [AREACOORD(src)]", INVESTIGATE_SINGULO) + update_icon() + else to_chat(user, "The controls are locked!") else to_chat(user, "[src] needs to be firmly secured to the floor first!") - return 1 + return TRUE /obj/machinery/power/emitter/attack_animal(mob/living/simple_animal/M) if(ismegafauna(M) && anchored) - state = 0 + state = EMITTER_UNWRENCHED anchored = FALSE M.visible_message("[M] rips [src] free from its moorings!") else @@ -145,26 +152,26 @@ /obj/machinery/power/emitter/process() if(stat & (BROKEN)) return - if(src.state != 2 || (!powernet && active_power_usage)) - src.active = 0 + if(state != EMITTER_WELDED || (!powernet && active_power_usage)) + active = FALSE update_icon() return - if(src.active == 1) + if(active == TRUE) if(!active_power_usage || avail(active_power_usage)) add_load(active_power_usage) if(!powered) - powered = 1 + powered = TRUE update_icon() - investigate_log("regained power and turned on at [get_area(src)]", INVESTIGATE_SINGULO) + investigate_log("regained power and turned ON at [AREACOORD(src)]", INVESTIGATE_SINGULO) else if(powered) - powered = 0 + powered = FALSE update_icon() - investigate_log("lost power and turned off at [get_area(src)]", INVESTIGATE_SINGULO) - log_game("Emitter lost power in ([x],[y],[z])") + investigate_log("lost power and turned OFF at [AREACOORD(src)]", INVESTIGATE_SINGULO) + log_game("Emitter lost power in [AREACOORD(src)]") return - if(charge <=80) - charge+=5 + if(charge <= 80) + charge += 5 if(!check_delay() || manual == TRUE) return FALSE fire_beam() @@ -177,7 +184,7 @@ /obj/machinery/power/emitter/proc/fire_beam_pulse() if(!check_delay()) return FALSE - if(state != 2) + if(state != EMITTER_WELDED) return FALSE if(avail(active_power_usage)) add_load(active_power_usage) @@ -185,7 +192,7 @@ /obj/machinery/power/emitter/proc/fire_beam(mob/user) var/obj/item/projectile/P = new projectile_type(get_turf(src)) - playsound(get_turf(src), projectile_sound, 50, 1) + playsound(get_turf(src), projectile_sound, 50, TRUE) if(prob(35)) sparks.start() P.firer = user? user : src @@ -212,7 +219,7 @@ to_chat(user, "Turn \the [src] off first!") return FAILED_UNFASTEN - else if(state == EM_WELDED) + else if(state == EMITTER_WELDED) if(!silent) to_chat(user, "[src] is welded to the floor!") return FAILED_UNFASTEN @@ -223,9 +230,9 @@ . = ..() if(. == SUCCESSFUL_UNFASTEN) if(anchored) - state = EM_SECURED + state = EMITTER_WRENCHED else - state = EM_UNSECURED + state = EMITTER_UNWRENCHED /obj/machinery/power/emitter/wrench_act(mob/living/user, obj/item/I) default_unfasten_wrench(user, I) @@ -237,26 +244,26 @@ return TRUE switch(state) - if(EM_UNSECURED) + if(EMITTER_UNWRENCHED) to_chat(user, "The [src.name] needs to be wrenched to the floor!") - if(EM_SECURED) + if(EMITTER_WRENCHED) if(!I.tool_start_check(user, amount=0)) return TRUE user.visible_message("[user.name] starts to weld the [name] to the floor.", \ "You start to weld \the [src] to the floor...", \ "You hear welding.") if(I.use_tool(src, user, 20, volume=50)) - state = EM_WELDED + state = EMITTER_WELDED to_chat(user, "You weld \the [src] to the floor.") connect_to_network() - if(EM_WELDED) + if(EMITTER_WELDED) if(!I.tool_start_check(user, amount=0)) return TRUE user.visible_message("[user.name] starts to cut the [name] free from the floor.", \ "You start to cut \the [src] free from the floor...", \ "You hear welding.") if(I.use_tool(src, user, 20, volume=50)) - state = EM_SECURED + state = EMITTER_WRENCHED to_chat(user, "You cut \the [src] free from the floor.") disconnect_from_network() @@ -307,14 +314,14 @@ icon_state = "protoemitter" icon_state_on = "protoemitter_+a" can_buckle = TRUE - buckle_lying = 0 + buckle_lying = FALSE var/view_range = 12 var/datum/action/innate/protoemitter/firing/auto //BUCKLE HOOKS /obj/machinery/power/emitter/prototype/unbuckle_mob(mob/living/buckled_mob,force = 0) - playsound(src,'sound/mecha/mechmove01.ogg', 50, 1) + playsound(src,'sound/mecha/mechmove01.ogg', 50, TRUE) manual = FALSE for(var/obj/item/I in buckled_mob.held_items) if(istype(I, /obj/item/turret_control)) @@ -335,7 +342,7 @@ return M.forceMove(get_turf(src)) ..() - playsound(src,'sound/mecha/mechmove01.ogg', 50, 1) + playsound(src,'sound/mecha/mechmove01.ogg', 50, TRUE) M.pixel_y = 14 layer = 4.1 if(M.client) @@ -362,7 +369,7 @@ /datum/action/innate/protoemitter/firing/Activate() if(PE.manual) - playsound(PE,'sound/mecha/mechmove01.ogg', 50, 1) + playsound(PE,'sound/mecha/mechmove01.ogg', 50, TRUE) PE.manual = FALSE name = "Switch to Manual Firing" desc = "The emitter will only fire on your command and at your designated target" @@ -373,7 +380,7 @@ UpdateButtonIcon() return else - playsound(PE,'sound/mecha/mechmove01.ogg', 50, 1) + playsound(PE,'sound/mecha/mechmove01.ogg', 50, TRUE) name = "Switch to Automatic Firing" desc = "Emitters will switch to periodic firing at your last target" button_icon_state = "mech_zoom_off" @@ -444,4 +451,9 @@ E.fire_beam(user) delay = world.time + 10 else if (E.charge < 10) - playsound(get_turf(user),'sound/machines/buzz-sigh.ogg', 50, 1) + playsound(src,'sound/machines/buzz-sigh.ogg', 50, TRUE) + + +#undef EMITTER_UNWRENCHED +#undef EMITTER_WRENCHED +#undef EMITTER_WELDED diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index 909feeea07..4399939caf 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -332,9 +332,8 @@ field_generator power level display if((world.time - O.last_warning) > 50) //to stop message-spam temp = 0 var/turf/T = get_turf(src) - var/area/A = get_area(T) - message_admins("A singulo exists and a containment field has failed at [A] [ADMIN_COORDJMP(T)].") - investigate_log("has failed whilst a singulo exists at [A] [COORD(T)].", INVESTIGATE_SINGULO) + message_admins("A singulo exists and a containment field has failed at [ADMIN_VERBOSEJMP(T)].") + investigate_log("has failed whilst a singulo exists at [AREACOORD(T)].", INVESTIGATE_SINGULO) O.last_warning = world.time /obj/machinery/field/generator/shock(mob/living/user) diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index 4d4eb73687..66870d73e8 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -119,9 +119,9 @@ strength++ strength_change() - message_admins("PA Control Computer increased to [strength] by [ADMIN_LOOKUPFLW(usr)] in [ADMIN_COORDJMP(src)]",0,1) - log_game("PA Control Computer increased to [strength] by [key_name(usr)] in [COORD(src)]") - investigate_log("increased to [strength] by [key_name(usr)]", INVESTIGATE_SINGULO) + message_admins("PA Control Computer increased to [strength] by [ADMIN_LOOKUPFLW(usr)] in [ADMIN_VERBOSEJMP(src)]") + log_game("PA Control Computer increased to [strength] by [key_name(usr)] in [AREACOORD(src)]") + investigate_log("increased to [strength] by [key_name(usr)] at [AREACOORD(src)]", INVESTIGATE_SINGULO) /obj/machinery/particle_accelerator/control_box/proc/remove_strength(s) @@ -129,9 +129,9 @@ strength-- strength_change() - message_admins("PA Control Computer decreased to [strength] by [ADMIN_LOOKUPFLW(usr)] in [ADMIN_COORDJMP(src)]",0,1) - log_game("PA Control Computer decreased to [strength] by [key_name(usr)] in [COORD(src)]") - investigate_log("decreased to [strength] by [key_name(usr)]", INVESTIGATE_SINGULO) + message_admins("PA Control Computer decreased to [strength] by [ADMIN_LOOKUPFLW(usr)] in [ADMIN_VERBOSEJMP(src)]") + log_game("PA Control Computer decreased to [strength] by [key_name(usr)] in [AREACOORD(src)]") + investigate_log("decreased to [strength] by [key_name(usr)] at [AREACOORD(src)]", INVESTIGATE_SINGULO) /obj/machinery/particle_accelerator/control_box/power_change() @@ -206,9 +206,9 @@ /obj/machinery/particle_accelerator/control_box/proc/toggle_power() active = !active - investigate_log("turned [active?"ON":"OFF"] by [usr ? key_name(usr) : "outside forces"]", INVESTIGATE_SINGULO) - message_admins("PA Control Computer turned [active ?"ON":"OFF"] by [usr ? key_name_admin(usr) : "outside forces"][ADMIN_QUE(usr)] [ADMIN_FLW(usr)] in [ADMIN_COORDJMP(src)]",0,1) - log_game("PA Control Computer turned [active ?"ON":"OFF"] by [usr ? "[key_name(usr)]" : "outside forces"] in [COORD(src)]") + investigate_log("turned [active?"ON":"OFF"] by [usr ? key_name(usr) : "outside forces"] at [AREACOORD(src)]", INVESTIGATE_SINGULO) + message_admins("PA Control Computer turned [active ?"ON":"OFF"] by [usr ? ADMIN_LOOKUPFLW(usr) : "outside forces"] in [ADMIN_VERBOSEJMP(src)]") + log_game("PA Control Computer turned [active ?"ON":"OFF"] by [usr ? "[key_name(usr)]" : "outside forces"] at [AREACOORD(src)]") if(active) use_power = ACTIVE_POWER_USE for(var/CP in connected_parts) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 5df8fb1d13..25623661d6 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -129,12 +129,11 @@ /obj/singularity/proc/admin_investigate_setup() var/turf/T = get_turf(src) - var/area/A = get_area(T) last_warning = world.time var/count = locate(/obj/machinery/field/containment) in urange(30, src, 1) if(!count) - message_admins("A singulo has been created without containment fields active at [A] [ADMIN_COORDJMP(T)].") - investigate_log("was created at [A] [COORD(T)]. [count?"":"No containment fields were active"]", INVESTIGATE_SINGULO) + message_admins("A singulo has been created without containment fields active at [ADMIN_VERBOSEJMP(T)].") + investigate_log("was created at [AREACOORD(T)]. [count?"":"No containment fields were active"]", INVESTIGATE_SINGULO) /obj/singularity/proc/dissipate() if(!dissipate) diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index 229323d8b0..8612b2d9ec 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -19,7 +19,6 @@ desc = "A high-capacity superconducting magnetic energy storage (SMES) unit." icon_state = "smes" density = TRUE - anchored = TRUE use_power = NO_POWER_USE circuit = /obj/item/circuitboard/machine/smes var/capacity = 5e6 // maximum charge @@ -152,9 +151,9 @@ //crowbarring it ! var/turf/T = get_turf(src) if(default_deconstruction_crowbar(I)) - message_admins("[src] has been deconstructed by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(T)]",0,1) - log_game("[src] has been deconstructed by [key_name(user)]") - investigate_log("SMES deconstructed by [key_name(user)]", INVESTIGATE_SINGULO) + message_admins("[src] has been deconstructed by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") + log_game("[src] has been deconstructed by [key_name(user)] at [AREACOORD(src)]") + investigate_log("SMES deconstructed by [key_name(user)] at [AREACOORD(src)]", INVESTIGATE_SINGULO) return else if(panel_open && istype(I, /obj/item/crowbar)) return @@ -174,11 +173,10 @@ /obj/machinery/power/smes/Destroy() if(SSticker.IsRoundInProgress()) - var/area/A = get_area(src) var/turf/T = get_turf(src) - message_admins("SMES deleted at [A][ADMIN_JMP(T)]") - log_game("SMES deleted at [A][COORD(T)]") - investigate_log("deleted at [A][COORD(T)]", INVESTIGATE_SINGULO) + message_admins("SMES deleted at [ADMIN_VERBOSEJMP(T)]") + log_game("SMES deleted at [AREACOORD(T)]") + investigate_log("deleted at [AREACOORD(T)]", INVESTIGATE_SINGULO) if(terminal) disconnect_terminal() return ..() diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index d7e0bc66bc..ed16e6a41e 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -6,7 +6,6 @@ desc = "A solar panel. Generates electricity when in contact with sunlight." icon = 'goon/icons/obj/power.dmi' icon_state = "sp_base" - anchored = TRUE density = TRUE use_power = NO_POWER_USE idle_power_usage = 0 @@ -257,7 +256,6 @@ desc = "A controller for solar panel arrays." icon = 'icons/obj/computer.dmi' icon_state = "computer" - anchored = TRUE density = TRUE use_power = IDLE_POWER_USE idle_power_usage = 250 diff --git a/code/modules/power/terminal.dm b/code/modules/power/terminal.dm index d82189e520..3fa815bf99 100644 --- a/code/modules/power/terminal.dm +++ b/code/modules/power/terminal.dm @@ -8,9 +8,8 @@ icon_state = "term" desc = "It's an underfloor wiring terminal for power equipment." level = 1 - var/obj/machinery/power/master = null - anchored = TRUE layer = WIRE_TERMINAL_LAYER //a bit above wires + var/obj/machinery/power/master = null /obj/machinery/power/terminal/Initialize() diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm index c999554d87..cc5b1d6322 100644 --- a/code/modules/power/tracker.dm +++ b/code/modules/power/tracker.dm @@ -8,7 +8,6 @@ desc = "A solar directional tracker." icon = 'goon/icons/obj/power.dmi' icon_state = "tracker" - anchored = TRUE density = TRUE use_power = NO_POWER_USE max_integrity = 250 diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index 22777e4fcf..85ee7589b9 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -27,7 +27,6 @@ desc = "The compressor stage of a gas turbine generator." icon = 'icons/obj/atmospherics/pipes/simple.dmi' icon_state = "compressor" - anchored = TRUE density = TRUE resistance_flags = FIRE_PROOF CanAtmosPass = ATMOS_PASS_DENSITY @@ -48,7 +47,6 @@ desc = "A gas turbine used for backup power generation." icon = 'icons/obj/atmospherics/pipes/simple.dmi' icon_state = "turbine" - anchored = TRUE density = TRUE resistance_flags = FIRE_PROOF CanAtmosPass = ATMOS_PASS_DENSITY diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 7a3f002cbf..2a352932fa 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -166,8 +166,8 @@ /obj/item/gun/energy/ui_action_click() toggle_gunlight() -/obj/item/gun/energy/suicide_act(mob/user) - if (can_shoot() && can_trigger_gun(user)) +/obj/item/gun/energy/suicide_act(mob/living/user) + if (istype(user) && can_shoot() && can_trigger_gun(user) && user.get_bodypart(BODY_ZONE_HEAD)) user.visible_message("[user] is putting the barrel of [src] in [user.p_their()] mouth. It looks like [user.p_theyre()] trying to commit suicide!") sleep(25) if(user.is_holding(src)) @@ -181,7 +181,7 @@ user.visible_message("[user] panics and starts choking to death!") return(OXYLOSS) else - user.visible_message("[user] is pretending to blow [user.p_their()] brains out with [src]! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message("[user] is pretending to melt [user.p_their()] face off with [src]! It looks like [user.p_theyre()] trying to commit suicide!") playsound(src, "gun_dry_fire", 30, 1) return (OXYLOSS) diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index 9a6d8ed3af..cf9b697d00 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -21,7 +21,7 @@ . = ..() GLOB.poi_list += src var/turf/T = get_turf(src) - var/msg = "A pulse rifle prize has been created at [ADMIN_COORDJMP(T)]" + var/msg = "A pulse rifle prize has been created at [ADMIN_VERBOSEJMP(T)]" message_admins(msg) log_game(msg) diff --git a/code/modules/projectiles/guns/misc/blastcannon.dm b/code/modules/projectiles/guns/misc/blastcannon.dm index 7c7af4e27b..e7b628653f 100644 --- a/code/modules/projectiles/guns/misc/blastcannon.dm +++ b/code/modules/projectiles/guns/misc/blastcannon.dm @@ -83,7 +83,7 @@ playsound(user, "explosion", 100, 1) var/turf/starting = get_turf(user) var/turf/targturf = get_turf(target) - var/log_str = "Blast wave fired from [ADMIN_COORDJMP(starting)] ([get_area_name(user, TRUE)]) at [ADMIN_COORDJMP(targturf)] ([target.name]) by [user.name]([user.ckey]) with power [heavy]/[medium]/[light]." + var/log_str = "Blast wave fired from [ADMIN_VERBOSEJMP(starting)] ([get_area_name(user, TRUE)]) at [ADMIN_VERBOSEJMP(targturf)] ([target.name]) by [user.name]([user.ckey]) with power [heavy]/[medium]/[light]." message_admins(log_str) log_game(log_str) var/obj/item/projectile/blastwave/BW = new(loc, heavy, medium, light) diff --git a/code/modules/projectiles/guns/misc/grenade_launcher.dm b/code/modules/projectiles/guns/misc/grenade_launcher.dm index e57d77bdf9..e51c3573e3 100644 --- a/code/modules/projectiles/guns/misc/grenade_launcher.dm +++ b/code/modules/projectiles/guns/misc/grenade_launcher.dm @@ -44,8 +44,8 @@ grenades -= F F.forceMove(user.loc) F.throw_at(target, 30, 2, user) - message_admins("[key_name_admin(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).") - log_game("[key_name(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).") + message_admins("[ADMIN_LOOKUPFLW(user)] fired a grenade ([F.name]) from a grenade launcher ([src]) from [AREACOORD(user)] at [target] [AREACOORD(target)].") + log_game("[key_name(user)] fired a grenade ([F.name]) with a grenade launcher ([src]) from [AREACOORD(user)] at [target] [AREACOORD(target)].") F.active = 1 F.icon_state = initial(F.icon_state) + "_active" playsound(user.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index b0dc498bfa..4ee1363853 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -356,7 +356,7 @@ fired = TRUE if(hitscan) process_hitscan() - if(!isprocessing) + if(!(datum_flags & DF_ISPROCESSING)) START_PROCESSING(SSprojectiles, src) pixel_move(1) //move it now! diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index cf06f55e79..94d4d49ded 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -231,7 +231,6 @@ if(!new_mob) return new_mob.grant_language(/datum/language/common) - new_mob.logging = M.logging // Some forms can still wear some items for(var/obj/item/W in contents) diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index a4c85df943..85fed3759b 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -2,7 +2,6 @@ name = "chem dispenser" desc = "Creates and dispenses chemicals." density = TRUE - anchored = TRUE icon = 'icons/obj/chemical.dmi' icon_state = "dispenser" use_power = IDLE_POWER_USE @@ -405,7 +404,6 @@ obj/machinery/chem_dispenser/proc/work_animation() /obj/machinery/chem_dispenser/drinks name = "soda dispenser" desc = "Contains a large reservoir of soft drinks." - anchored = TRUE icon = 'icons/obj/chemical.dmi' icon_state = "soda_dispenser" has_panel_overlay = FALSE @@ -449,7 +447,6 @@ obj/machinery/chem_dispenser/proc/work_animation() /obj/machinery/chem_dispenser/drinks/beer name = "booze dispenser" desc = "Contains a large reservoir of the good stuff." - anchored = TRUE icon = 'icons/obj/chemical.dmi' icon_state = "booze_dispenser" circuit = /obj/item/circuitboard/machine/chem_dispenser/drinks/beer diff --git a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm index 73413a5e7b..465f9a165b 100644 --- a/code/modules/reagents/chemistry/machinery/chem_heater.dm +++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm @@ -1,7 +1,6 @@ /obj/machinery/chem_heater name = "chemical heater" density = TRUE - anchored = TRUE icon = 'icons/obj/chemical.dmi' icon_state = "mixer0b" use_power = IDLE_POWER_USE diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 89b63f4ee5..9fd8a8a377 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -2,7 +2,6 @@ name = "ChemMaster 3000" desc = "Used to separate chemicals and distribute them in a variety of forms." density = TRUE - anchored = TRUE layer = BELOW_OBJ_LAYER icon = 'icons/obj/chemical.dmi' icon_state = "mixer0" diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index 5a9efe56d1..7247b9b5ed 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -5,7 +5,6 @@ name = "PanD.E.M.I.C 2200" desc = "Used to work with viruses." density = TRUE - anchored = TRUE icon = 'icons/obj/chemical.dmi' icon_state = "mixer0" circuit = /obj/item/circuitboard/computer/pandemic diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm index a4d9829aa6..922b557995 100644 --- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm +++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm @@ -7,7 +7,6 @@ icon = 'icons/obj/kitchen.dmi' icon_state = "juicer1" layer = BELOW_OBJ_LAYER - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 5 active_power_usage = 100 diff --git a/code/modules/reagents/chemistry/machinery/smoke_machine.dm b/code/modules/reagents/chemistry/machinery/smoke_machine.dm index 56cec26dd3..a8b0919906 100644 --- a/code/modules/reagents/chemistry/machinery/smoke_machine.dm +++ b/code/modules/reagents/chemistry/machinery/smoke_machine.dm @@ -6,7 +6,6 @@ icon = 'icons/obj/chemical.dmi' icon_state = "smoke0" density = TRUE - anchored = TRUE circuit = /obj/item/circuitboard/machine/smoke_machine var/efficiency = 10 var/on = FALSE @@ -143,9 +142,9 @@ on = !on update_icon() if(on) - message_admins("[key_name_admin(usr)] activated a smoke machine that contains [english_list(reagents.reagent_list)] at [ADMIN_COORDJMP(src)].") - log_game("[key_name(usr)] activated a smoke machine that contains [english_list(reagents.reagent_list)] at [COORD(src)].") - add_logs(usr, src, "has activated [src] which contains [english_list(reagents.reagent_list)].") + message_admins("[ADMIN_LOOKUPFLW(usr)] activated a smoke machine that contains [english_list(reagents.reagent_list)] at [ADMIN_VERBOSEJMP(src)].") + log_game("[key_name(usr)] activated a smoke machine that contains [english_list(reagents.reagent_list)] at [AREACOORD(src)].") + add_logs(usr, src, "has activated [src] which contains [english_list(reagents.reagent_list)] at [AREACOORD(src)].") if("goScreen") screen = params["screen"] . = TRUE diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index 51fda371c1..e19d2c20d7 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -24,7 +24,7 @@ if(holder && holder.my_atom) var/atom/A = holder.my_atom var/turf/T = get_turf(A) - var/message = "A [reaction_name] reaction has occurred in [get_area_name(T)] [ADMIN_COORDJMP(T)]" + var/message = "A [reaction_name] reaction has occurred in [ADMIN_VERBOSEJMP(T)]" message += " (VV)" var/mob/M = get(A, /mob) @@ -34,7 +34,7 @@ message += " - Last Fingerprint: [(A.fingerprintslast ? A.fingerprintslast : "N/A")]" message_admins(message, 0, 1) - log_game("[reaction_name] chemical mob spawn reaction occuring at [COORD(T)]([get_area_name(T)]) carried by [key_name(M)] with last fingerprint [A.fingerprintslast? A.fingerprintslast : "N/A"]") + log_game("[reaction_name] chemical mob spawn reaction occuring at [AREACOORD(T)] carried by [key_name(M)] with last fingerprint [A.fingerprintslast? A.fingerprintslast : "N/A"]") playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 1e65a96389..8b8c009a43 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -6,18 +6,17 @@ /datum/chemical_reaction/reagent_explosion/on_reaction(datum/reagents/holder, created_volume) var/turf/T = get_turf(holder.my_atom) - var/area/A = get_area(T) var/inside_msg if(ismob(holder.my_atom)) var/mob/M = holder.my_atom - inside_msg = " inside [key_name_admin(M)]" + inside_msg = " inside [ADMIN_LOOKUPFLW(M)]" var/lastkey = holder.my_atom.fingerprintslast var/touch_msg = "N/A" if(lastkey) var/mob/toucher = get_mob_by_key(lastkey) touch_msg = "[ADMIN_LOOKUPFLW(toucher)]" - message_admins("Reagent explosion reaction occurred at [A] [ADMIN_COORDJMP(T)][inside_msg]. Last Fingerprint: [touch_msg].") - log_game("Reagent explosion reaction occurred at [A] [COORD(T)]. Last Fingerprint: [lastkey ? lastkey : "N/A"]." ) + message_admins("Reagent explosion reaction occurred at [ADMIN_VERBOSEJMP(T)][inside_msg]. Last Fingerprint: [touch_msg].") + log_game("Reagent explosion reaction occurred at [AREACOORD(T)]. Last Fingerprint: [lastkey ? lastkey : "N/A"]." ) var/datum/effect_system/reagents_explosion/e = new() e.set_up(modifier + round(created_volume/strengthdiv, 1), T, 0, 0) e.start() diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index 0ab98a1f99..c68c0a16b0 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -428,14 +428,13 @@ /datum/chemical_reaction/slime/slimeexplosion/on_reaction(datum/reagents/holder) var/turf/T = get_turf(holder.my_atom) - var/area/A = get_area(T) var/lastkey = holder.my_atom.fingerprintslast var/touch_msg = "N/A" if(lastkey) var/mob/toucher = get_mob_by_key(lastkey) touch_msg = "[ADMIN_LOOKUPFLW(toucher)]." - message_admins("Slime Explosion reaction started at [A] [ADMIN_COORDJMP(T)]. Last Fingerprint: [touch_msg]") - log_game("Slime Explosion reaction started at [A] [COORD(T)]. Last Fingerprint: [lastkey ? lastkey : "N/A"].") + message_admins("Slime Explosion reaction started at [ADMIN_VERBOSEJMP(T)]. Last Fingerprint: [touch_msg]") + log_game("Slime Explosion reaction started at [AREACOORD(T)]. Last Fingerprint: [lastkey ? lastkey : "N/A"].") T.visible_message("The slime extract begins to vibrate violently !") addtimer(CALLBACK(src, .proc/boom, holder), 50) var/obj/item/slime_extract/M = holder.my_atom diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 054fe077c3..4a40addc5d 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -110,9 +110,9 @@ else if(isturf(target) && reagents.reagent_list.len && thrownby) - add_logs(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]", "at [target][COORD(target)]") - log_game("[key_name(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] at [COORD(target)].") - message_admins("[key_name_admin(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] at [ADMIN_COORDJMP(target)].") + add_logs(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]", "in [AREACOORD(target)]") + log_game("[key_name(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] in [AREACOORD(target)].") + message_admins("[ADMIN_LOOKUPFLW(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] in [ADMIN_VERBOSEJMP(target)].") visible_message("[src] spills its contents all over [target].") reagents.reaction(target, TOUCH) if(QDELETED(src)) diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 7dfe095a6d..3a64da8f04 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -29,9 +29,9 @@ R += A.id + " (" R += num2text(A.volume) + ")," if(isturf(target) && reagents.reagent_list.len && thrownby) - add_logs(thrownby, target, "splashed [english_list(reagents.reagent_list)]", "at [target][COORD(target)]") - log_game("[key_name(thrownby)] splashed [english_list(reagents.reagent_list)] at [COORD(target)].") - message_admins("[key_name_admin(thrownby)] splashed [english_list(reagents.reagent_list)] at [ADMIN_COORDJMP(target)].") + add_logs(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]", "in [AREACOORD(target)]") + log_game("[key_name(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] in [AREACOORD(target)].") + message_admins("[ADMIN_LOOKUPFLW(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] at [ADMIN_VERBOSEJMP(target)].") reagents.reaction(M, TOUCH) add_logs(user, M, "splashed", R) reagents.clear_reagents() diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 9a492d9a33..b0e101f76a 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -50,16 +50,15 @@ user.changeNext_move(CLICK_CD_RANGE*2) user.newtonian_move(get_dir(A, user)) var/turf/T = get_turf(src) - var/area/area = get_area(src) if(reagents.has_reagent("sacid")) - message_admins("[ADMIN_LOOKUPFLW(user)] fired sulphuric acid from \a [src] at [area] [ADMIN_COORDJMP(T)].") - log_game("[key_name(user)] fired sulphuric acid from \a [src] at [area] ([T.x], [T.y], [T.z]).") + message_admins("[ADMIN_LOOKUPFLW(user)] fired sulphuric acid from \a [src] at [ADMIN_VERBOSEJMP(T)].") + log_game("[key_name(user)] fired sulphuric acid from \a [src] at [AREACOORD(T)].") if(reagents.has_reagent("facid")) - message_admins("[ADMIN_LOOKUPFLW(user)] fired Fluacid from \a [src] at [area] [ADMIN_COORDJMP(T)].") - log_game("[key_name(user)] fired Fluacid from \a [src] at [area] [COORD(T)].") + message_admins("[ADMIN_LOOKUPFLW(user)] fired Fluacid from \a [src] at [ADMIN_VERBOSEJMP(T)].") + log_game("[key_name(user)] fired Fluacid from \a [src] at [AREACOORD(T)].") if(reagents.has_reagent("lube")) - message_admins("[ADMIN_LOOKUPFLW(user)] fired Space lube from \a [src] at [area] [ADMIN_COORDJMP(T)].") - log_game("[key_name(user)] fired Space lube from \a [src] at [area] [COORD(T)].") + message_admins("[ADMIN_LOOKUPFLW(user)] fired Space lube from \a [src] at [ADMIN_VERBOSEJMP(T)].") + log_game("[key_name(user)] fired Space lube from \a [src] at [AREACOORD(T)].") return diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index ddc88301b2..508f3815a0 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -78,7 +78,7 @@ ..() if(!QDELETED(src)) //wasn't deleted by the projectile's effects. if(!P.nodamage && ((P.damage_type == BURN) || (P.damage_type == BRUTE))) - var/boom_message = "[key_name_admin(P.firer)] triggered a fueltank explosion via projectile." + var/boom_message = "[ADMIN_LOOKUPFLW(P.firer)] triggered a fueltank explosion via projectile." GLOB.bombers += boom_message message_admins(boom_message) var/log_message = "triggered a fueltank explosion via projectile." @@ -102,12 +102,11 @@ W.update_icon() else var/turf/T = get_turf(src) - var/area/A = get_area(T) user.visible_message("[user] catastrophically fails at refilling [user.p_their()] [W.name]!", "That was stupid of you.") - var/message_admins = "[key_name_admin(user)] triggered a fueltank explosion via welding tool at [A] [ADMIN_COORDJMP(T)]." + var/message_admins = "[ADMIN_LOOKUPFLW(user)] triggered a fueltank explosion via welding tool at [ADMIN_VERBOSEJMP(T)]." GLOB.bombers += message_admins message_admins(message_admins) - var/message_log = "triggered a fueltank explosion via welding tool at [A] [COORD(T)]." + var/message_log = "triggered a fueltank explosion via welding tool at [AREACOORD(T)]." user.log_message(message_log, INDIVIDUAL_ATTACK_LOG) log_game("[key_name(user)] [message_log]") log_attack("[key_name(user)] [message_log]") diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 41fbc5092d..a29722b4af 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -8,7 +8,6 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) icon_state = "conveyor_map" name = "conveyor belt" desc = "A conveyor belt." - anchored = TRUE layer = BELOW_OPEN_DOOR_LAYER var/operating = 0 // 1 if running forward, -1 if backwards, 0 if off var/operable = 1 // true if can operate (no broken segments in this belt run) @@ -32,7 +31,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) /obj/machinery/conveyor/inverted/Initialize(mapload) . = ..() if(mapload && !(dir in GLOB.diagonals)) - log_game("### MAPPING ERROR: [src] at [COORD(src)] spawned without using a diagonal dir. Please replace with a normal version.") + log_game("### MAPPING ERROR: [src] at [AREACOORD(src)] spawned without using a diagonal dir. Please replace with a normal version.") // Auto conveyour is always on unless unpowered @@ -215,11 +214,12 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) // /obj/machinery/conveyor_switch - name = "conveyor switch" desc = "A conveyor control switch." icon = 'icons/obj/recycling.dmi' icon_state = "switch-off" + speed_process = TRUE + var/position = 0 // 0 off, -1 reverse, 1 forward var/last_pos = -1 // last direction setting var/operated = 1 // true if just operated @@ -228,11 +228,6 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) var/id = "" // must match conveyor IDs to control them - anchored = TRUE - speed_process = TRUE - - - /obj/machinery/conveyor_switch/Initialize(mapload, newid) . = ..() if (newid) diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm index 6defa464b9..aa356d5cd2 100644 --- a/code/modules/recycling/disposal/bin.dm +++ b/code/modules/recycling/disposal/bin.dm @@ -4,7 +4,6 @@ /obj/machinery/disposal icon = 'icons/obj/atmospherics/pipes/disposal.dmi' - anchored = TRUE density = TRUE armor = list("melee" = 25, "bullet" = 10, "laser" = 10, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 30) max_integrity = 200 diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 55b193de5a..5b42c777f1 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -23,7 +23,6 @@ icon = 'icons/obj/machines/heavy_lathe.dmi' icon_state = "h_lathe" density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE circuit = /obj/item/circuitboard/machine/experimentor var/recentlyExperimented = 0 @@ -513,8 +512,8 @@ /obj/machinery/rnd/experimentor/proc/warn_admins(user, ReactionName) var/turf/T = get_turf(user) - message_admins("Experimentor reaction: [ReactionName] generated by [ADMIN_LOOKUPFLW(user)] at [ADMIN_COORDJMP(T)]",0,1) - log_game("Experimentor reaction: [ReactionName] generated by [key_name(user)] in ([T.x],[T.y],[T.z])") + message_admins("Experimentor reaction: [ReactionName] generated by [ADMIN_LOOKUPFLW(user)] at [ADMIN_VERBOSEJMP(T)]") + log_game("Experimentor reaction: [ReactionName] generated by [key_name(user)] in [AREACOORD(T)]") #undef SCANTYPE_POKE #undef SCANTYPE_IRRADIATE @@ -659,8 +658,8 @@ //Admin Warning proc for relics /obj/item/relic/proc/warn_admins(mob/user, RelicType, priority = 1) var/turf/T = get_turf(src) - var/log_msg = "[RelicType] relic used by [key_name(user)] in ([T.x],[T.y],[T.z])" + var/log_msg = "[RelicType] relic used by [key_name(user)] in [AREACOORD(T)]" if(priority) //For truly dangerous relics that may need an admin's attention. BWOINK! - message_admins("[RelicType] relic activated by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(T)]",0,1) + message_admins("[RelicType] relic activated by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") log_game(log_msg) investigate_log(log_msg, "experimentor") diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm index 47f34a9b15..87f8cefe78 100644 --- a/code/modules/research/rdmachines.dm +++ b/code/modules/research/rdmachines.dm @@ -6,7 +6,6 @@ name = "R&D Device" icon = 'icons/obj/machines/research.dmi' density = TRUE - anchored = TRUE use_power = IDLE_POWER_USE var/busy = FALSE var/hacked = FALSE diff --git a/code/modules/research/stock_parts.dm b/code/modules/research/stock_parts.dm index 4bd318de21..af004c4701 100644 --- a/code/modules/research/stock_parts.dm +++ b/code/modules/research/stock_parts.dm @@ -58,10 +58,8 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' -//Sorts stock parts inside an RPED by their rating. -//Only use /obj/item/stock_parts/ with this sort proc! -/proc/cmp_rped_sort(obj/item/stock_parts/A, obj/item/stock_parts/B) - return B.rating - A.rating +/proc/cmp_rped_sort(obj/item/A, obj/item/B) + return B.get_part_rating() - A.get_part_rating() /obj/item/stock_parts name = "stock part" diff --git a/code/modules/ruins/lavalandruin_code/surface.dm b/code/modules/ruins/lavalandruin_code/surface.dm index b2312ded87..72896c08a3 100644 --- a/code/modules/ruins/lavalandruin_code/surface.dm +++ b/code/modules/ruins/lavalandruin_code/surface.dm @@ -2,4 +2,21 @@ /obj/item/paper/fluff/stations/lavaland/surface/henderson_report name = "Important Notice - Mrs. Henderson" - info = "Nothing of interest to report." \ No newline at end of file + info = "Nothing of interest to report." + +//ratvar + +/obj/structure/dead_ratvar + name = "hulking wreck" + desc = "The remains of a monstrous war machine." + icon = 'icons/obj/lavaland/dead_ratvar.dmi' + icon_state = "dead_ratvar" + flags_1 = ON_BORDER_1 + appearance_flags = 0 + layer = FLY_LAYER + anchored = TRUE + density = TRUE + bound_width = 416 + bound_height = 64 + pixel_y = -10 + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF diff --git a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm index cf45b91dfe..d37ecfe052 100644 --- a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm +++ b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm @@ -176,7 +176,7 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate) message_admins("Legion took damage while the necropolis gate was closed, and has released itself!") log_game("Legion took damage while the necropolis gate was closed and released itself.") else - message_admins("[user ? key_name_admin(user):"Unknown"] has released Legion!") + message_admins("[user ? ADMIN_LOOKUPFLW(user):"Unknown"] has released Legion!") log_game("[user ? key_name(user):"Unknown"] released Legion.") var/sound/legion_sound = sound('sound/creatures/legion_spawn.ogg') diff --git a/code/modules/security_levels/keycard_authentication.dm b/code/modules/security_levels/keycard_authentication.dm index 15d5abf5e8..162942d1d8 100644 --- a/code/modules/security_levels/keycard_authentication.dm +++ b/code/modules/security_levels/keycard_authentication.dm @@ -9,7 +9,6 @@ GLOBAL_DATUM_INIT(keycard_events, /datum/events, new) desc = "This device is used to trigger station functions, which require more than one ID card to authenticate." icon = 'icons/obj/monitors.dmi' icon_state = "auth_off" - anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 2 active_power_usage = 6 diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 8c5f5aec8d..fc32b60e6d 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -104,7 +104,7 @@ authorized += ID - message_admins("[ADMIN_LOOKUPFLW(user)] has authorized early shuttle launch", 0, 1) + message_admins("[ADMIN_LOOKUPFLW(user)] has authorized early shuttle launch") log_game("[key_name(user)] has authorized early shuttle launch in [COORD(src)]") // Now check if we're on our way . = TRUE @@ -143,12 +143,8 @@ return var/time = TIME_LEFT - message_admins("[key_name_admin(user.client)] \ - (?) \ - (FLW) \ - has emagged the emergency shuttle [time] seconds before launch.", 0, 1) - log_game("[key_name(user)] has emagged the emergency shuttle in \ - [COORD(src)] [time] seconds before launch.") + message_admins("[ADMIN_LOOKUPFLW(user.client)] has emagged the emergency shuttle [time] seconds before launch.") + log_game("[key_name(user)] has emagged the emergency shuttle in [COORD(src)] [time] seconds before launch.") obj_flags |= EMAGGED SSshuttle.emergency.movement_force = list("KNOCKDOWN" = 60, "THROW" = 20)//YOUR PUNY SEATBELTS can SAVE YOU NOW, MORTAL var/datum/species/S = new diff --git a/code/modules/shuttle/manipulator.dm b/code/modules/shuttle/manipulator.dm index 1d8732cda9..bfdd391f05 100644 --- a/code/modules/shuttle/manipulator.dm +++ b/code/modules/shuttle/manipulator.dm @@ -9,7 +9,6 @@ icon = 'icons/obj/machines/shuttle_manipulator.dmi' icon_state = "holograph_on" - anchored = TRUE density = TRUE // UI state variables @@ -156,8 +155,7 @@ if(M.id == params["id"] && M.timer && M.timeLeft() >= 50) M.setTimer(50) . = TRUE - message_admins("[key_name_admin(usr)] fast travelled \ - [M]") + message_admins("[key_name_admin(usr)] fast travelled [M]") log_admin("[key_name(usr)] fast travelled [M]") SSblackbox.record_feedback("text", "shuttle_manipulator", 1, "[M.name]") break @@ -182,10 +180,8 @@ var/obj/docking_port/mobile/mdp = action_load(S) if(mdp) user.forceMove(get_turf(mdp)) - message_admins("[key_name_admin(usr)] loaded [mdp] \ - with the shuttle manipulator.") - log_admin("[key_name(usr)] loaded [mdp] with the \ - shuttle manipulator.") + message_admins("[key_name_admin(usr)] loaded [mdp] with the shuttle manipulator.") + log_admin("[key_name(usr)] loaded [mdp] with the shuttle manipulator.") SSblackbox.record_feedback("text", "shuttle_manipulator", 1, "[mdp.name]") update_icon() @@ -279,7 +275,7 @@ if(istype(P, /obj/docking_port/stationary)) log_world("Map warning: Shuttle Template [S.mappath] has a stationary docking port.") if(!found) - var/msg = "load_template(): Shuttle Template [S.mappath] has no mobile docking port. Aborting import." + var/msg = "load_template(): Shuttle Template [S.mappath] has no mobile docking port. Aborting import." for(var/T in affected) var/turf/T0 = T T0.empty() diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index 1a5ba07576..76293c327c 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -204,11 +204,6 @@ All ShuttleMove procs go here on = TRUE update_list() -/obj/machinery/thruster/beforeShuttleMove(turf/newT, rotation, move_mode, obj/docking_port/mobile/moving_dock) - . = ..() - if(. & MOVE_AREA) - . |= MOVE_CONTENTS - /obj/machinery/atmospherics/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) . = ..() var/missing_nodes = FALSE diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm index a5a15b3d30..abe601e503 100644 --- a/code/modules/shuttle/special.dm +++ b/code/modules/shuttle/special.dm @@ -136,7 +136,6 @@ /mob/living/simple_animal/drone/snowflake/bardrone name = "Bardrone" desc = "A barkeeping drone, an indestructible robot built to tend bars." - seeStatic = FALSE hacked = TRUE laws = "1. Serve drinks.\n\ 2. Talk to patrons.\n\ diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 6a14fca455..f42f7bfc9c 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -102,7 +102,7 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( SSblackbox.record_feedback("nested tally", "cargo_imports", 1, list("[SO.pack.cost]", "[SO.pack.name]")) investigate_log("Order #[SO.id] ([SO.pack.name], placed by [key_name(SO.orderer_ckey)]) has shipped.", INVESTIGATE_CARGO) if(SO.pack.dangerous) - message_admins("\A [SO.pack.name] ordered by [key_name_admin(SO.orderer_ckey)] has shipped.") + message_admins("\A [SO.pack.name] ordered by [ADMIN_LOOKUPFLW(SO.orderer_ckey)] has shipped.") purchases++ investigate_log("[purchases] orders in this shipment, worth [value] credits. [SSshuttle.points] credits left.", INVESTIGATE_CARGO) diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index 89e513fd60..4d92878cc2 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -68,27 +68,19 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th return user.ranged_ability = src user.click_intercept = src - add_mousepointer(user.client) + user.update_mouse_pointer() ranged_ability_user = user if(msg) to_chat(ranged_ability_user, msg) active = TRUE update_icon() -/obj/effect/proc_holder/proc/add_mousepointer(client/C) - if(C && ranged_mousepointer && C.mouse_pointer_icon == initial(C.mouse_pointer_icon)) - C.mouse_pointer_icon = ranged_mousepointer - -/obj/effect/proc_holder/proc/remove_mousepointer(client/C) - if(C && ranged_mousepointer && C.mouse_pointer_icon == ranged_mousepointer) - C.mouse_pointer_icon = initial(C.mouse_pointer_icon) - /obj/effect/proc_holder/proc/remove_ranged_ability(msg) if(!ranged_ability_user || !ranged_ability_user.client || (ranged_ability_user.ranged_ability && ranged_ability_user.ranged_ability != src)) //To avoid removing the wrong ability return ranged_ability_user.ranged_ability = null ranged_ability_user.click_intercept = null - remove_mousepointer(ranged_ability_user.client) + ranged_ability_user.update_mouse_pointer() if(msg) to_chat(ranged_ability_user, msg) ranged_ability_user = null diff --git a/code/modules/spells/spell_types/aimed.dm b/code/modules/spells/spell_types/aimed.dm index 6c860fda9b..35f9a8f50a 100644 --- a/code/modules/spells/spell_types/aimed.dm +++ b/code/modules/spells/spell_types/aimed.dm @@ -29,7 +29,7 @@ remove_ranged_ability(msg) on_deactivation(user) else - msg = "[active_msg]Left-click to shoot it at a target!" + msg = "[active_msg] Left-click to shoot it at a target!" current_amount = projectile_amount add_ranged_ability(user, msg, TRUE) on_activation(user) @@ -101,7 +101,7 @@ base_icon_state = "lightning" sound = 'sound/magic/lightningbolt.ogg' active = FALSE - projectile_var_overrides = list("tesla_range" = 15, "tesla_power" = 20000, "tesla_boom" = FALSE) + projectile_var_overrides = list("tesla_range" = 15, "tesla_power" = 20000, "tesla_flags" = TESLA_MOB_DAMAGE) active_msg = "You energize your hand with arcane lightning!" deactive_msg = "You let the energy flow out of your hands back into yourself..." projectile_type = /obj/item/projectile/magic/aoe/lightning diff --git a/code/modules/spells/spell_types/rightandwrong.dm b/code/modules/spells/spell_types/rightandwrong.dm index 92db588be1..414aa10933 100644 --- a/code/modules/spells/spell_types/rightandwrong.dm +++ b/code/modules/spells/spell_types/rightandwrong.dm @@ -137,7 +137,7 @@ GLOBAL_VAR_INIT(summon_magic_triggered, FALSE) /proc/rightandwrong(summon_type, mob/user, survivor_probability) if(user) //in this case either someone holding a spellbook or a badmin to_chat(user, "You summoned [summon_type]!") - message_admins("[key_name_admin(user, 1)] summoned [summon_type]!") + message_admins("[key_name_admin(user, TRUE)] summoned [summon_type]!") log_game("[key_name(user)] summoned [summon_type]!") if(summon_type == SUMMON_MAGIC) diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index 9e56e94d74..be2c4f92bd 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -185,7 +185,7 @@ T.ex_act(EXPLODE_DEVASTATE) point.Beam(get_target_turf(),icon_state="bsa_beam",time=50,maxdistance = world.maxx) //ZZZAP - message_admins("[key_name_admin(user)] has launched an artillery strike.") + message_admins("[ADMIN_LOOKUPFLW(user)] has launched an artillery strike.") explosion(bullseye,ex_power,ex_power*2,ex_power*4) reload() diff --git a/code/modules/station_goals/shield.dm b/code/modules/station_goals/shield.dm index 9c92ac4bd5..44746e595e 100644 --- a/code/modules/station_goals/shield.dm +++ b/code/modules/station_goals/shield.dm @@ -87,10 +87,11 @@ desc = "" icon = 'icons/obj/machines/satellite.dmi' icon_state = "sat_inactive" - var/mode = "NTPROBEV0.8" - var/active = FALSE + anchored = FALSE density = TRUE use_power = FALSE + var/mode = "NTPROBEV0.8" + var/active = FALSE var/static/gid = 0 var/id = 0 diff --git a/code/modules/surgery/advanced/brainwashing.dm b/code/modules/surgery/advanced/brainwashing.dm index 0c67b8267d..03215aa6d6 100644 --- a/code/modules/surgery/advanced/brainwashing.dm +++ b/code/modules/surgery/advanced/brainwashing.dm @@ -46,7 +46,7 @@ user.visible_message("[user] successfully brainwashes [target]!", "You succeed in brainwashing [target].") to_chat(target, "A new compulsion fills your mind... you feel forced to obey it!") brainwash(target, objective) - message_admins("[key_name_admin(user)] surgically brainwashed [key_name_admin(target)] with the objective '[objective]'.") + message_admins("[ADMIN_LOOKUPFLW(user)] surgically brainwashed [ADMIN_LOOKUPFLW(target)] with the objective '[objective]'.") log_game("[key_name(user)] surgically brainwashed [key_name(target)] with the objective '[objective]'.") return TRUE diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index 10c825cb4a..2521037963 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -569,7 +569,7 @@ cooldown = COOLDOWN_NONE if(message_admins) - message_admins("[key_name_admin(user)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].") + message_admins("[ADMIN_LOOKUPFLW(user)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].") log_game("[key_name(user)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].") SSblackbox.record_feedback("tally", "voice_of_god", 1, log_message) diff --git a/code/modules/uplink/uplink.dm b/code/modules/uplink/uplink.dm index e269e0bf49..deacb6d401 100644 --- a/code/modules/uplink/uplink.dm +++ b/code/modules/uplink/uplink.dm @@ -74,25 +74,17 @@ GLOBAL_LIST_EMPTY(uplinks) return //no hitting everyone/everything just to try to slot tcs in! if(istype(I, /obj/item/stack/telecrystal)) LoadTC(user, I) - for(var/item in subtypesof(/datum/uplink_item)) - var/datum/uplink_item/UI = item - var/path = null - if(initial(UI.refund_path)) - path = initial(UI.refund_path) - else - path = initial(UI.item) - var/cost = 0 - if(initial(UI.refund_amount)) - cost = initial(UI.refund_amount) - else - cost = initial(UI.cost) - var/refundable = initial(UI.refundable) - if(I.type == path && refundable && I.check_uplink_validity()) - telecrystals += cost - purchase_log.total_spent -= cost - to_chat(user, "[I] refunded.") - qdel(I) - return + for(var/category in uplink_items) + for(var/item in uplink_items[category]) + var/datum/uplink_item/UI = uplink_items[category][item] + var/path = UI.refund_path || UI.item + var/cost = UI.refund_amount || UI.cost + if(I.type == path && UI.refundable && I.check_uplink_validity()) + telecrystals += cost + purchase_log.total_spent -= cost + to_chat(user, "[I] refunded.") + qdel(I) + return /datum/component/uplink/proc/interact(mob/user) if(locked) diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index a2f85e9222..89197a7f07 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -1158,6 +1158,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) desc = "A potion recovered at great risk by undercover syndicate operatives and then subsequently modified with syndicate technology. Using it will make any animal sentient, and bound to serve you, as well as implanting an internal radio for communication and an internal ID card for opening doors." cost = 4 include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + restricted = TRUE /datum/uplink_item/device_tools/telecrystal name = "Raw Telecrystal" diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index ae4c83d016..31de01b159 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -33,7 +33,6 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C icon = 'icons/obj/vending.dmi' icon_state = "generic" layer = BELOW_OBJ_LAYER - anchored = TRUE density = TRUE verb_say = "beeps" verb_ask = "beeps" diff --git a/code/modules/vending/boozeomat.dm b/code/modules/vending/boozeomat.dm index 2738e18b19..f5f7bf1d9d 100644 --- a/code/modules/vending/boozeomat.dm +++ b/code/modules/vending/boozeomat.dm @@ -38,6 +38,18 @@ req_access_txt = "25" refill_canister = /obj/item/vending_refill/boozeomat +/obj/machinery/vending/boozeomat/maint + products = list(/obj/item/reagent_containers/food/drinks/bottle/whiskey = 1, + /obj/item/reagent_containers/food/drinks/bottle/absinthe = 1, + /obj/item/reagent_containers/food/drinks/bottle/limejuice = 1, + /obj/item/reagent_containers/food/drinks/bottle/cream = 1, + /obj/item/reagent_containers/food/drinks/soda_cans/tonic = 1, + /obj/item/reagent_containers/food/drinks/drinkingglass = 10, + /obj/item/reagent_containers/food/drinks/ice = 3, + /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 6, + /obj/item/reagent_containers/food/drinks/flask = 1) + req_access_txt = "0" + /obj/item/vending_refill/boozeomat machine_name = "Booze-O-Mat" icon_state = "refill_booze" diff --git a/config/antag_rep.txt b/config/antag_rep.txt new file mode 100644 index 0000000000..a26b157d5a --- /dev/null +++ b/config/antag_rep.txt @@ -0,0 +1,5 @@ +## Custom antag reputation values +## List of job titles followed by antag rep value, all prefixed with ANTAG_REP. See code/modules/jobs/job_types for titles +## e.g. +## ANTAG_REP Captain 10 +## ANTAG_REP Assistant 0 diff --git a/config/config.txt b/config/config.txt index 57e0050d69..fba903477c 100644 --- a/config/config.txt +++ b/config/config.txt @@ -3,6 +3,7 @@ $include game_options.txt $include dbconfig.txt $include comms.txt +$include antag_rep.txt # You can use the @ character at the beginning of a config option to lock it from being edited in-game # Example usage: diff --git a/config/game_options.txt b/config/game_options.txt index 6ecec1fc9e..48e2dc5607 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -551,3 +551,6 @@ ROUNDSTART_TRAITS ## Sets shift time to server time at roundstart. Overridden by RANDOMIZE_SHIFT_TIME ## #SHIFT_TIME_REALTIME + +## A cap on how many monkeys may be created via monkey cubes +MONKEYCAP 64 diff --git a/html/changelogs/AutoChangeLog-pr-6868.yml b/html/changelogs/AutoChangeLog-pr-6868.yml new file mode 100644 index 0000000000..c6e55230aa --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6868.yml @@ -0,0 +1,4 @@ +author: "Jay" +delete-after: True +changes: + - tweak: "Bans CMO, RD, CE, and HoP from antag/ling" diff --git a/html/changelogs/AutoChangeLog-pr-6958.yml b/html/changelogs/AutoChangeLog-pr-6958.yml new file mode 100644 index 0000000000..e59e3a143e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6958.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Moving diagonally past delivery chutes, transit tube pods, &c. no longer causes your camera to be stuck on them." diff --git a/html/changelogs/AutoChangeLog-pr-6960.yml b/html/changelogs/AutoChangeLog-pr-6960.yml new file mode 100644 index 0000000000..6ccfa63bff --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6960.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - config: "The limit of monkey's spawned via monkey cubes is now configurable" diff --git a/html/changelogs/AutoChangeLog-pr-6963.yml b/html/changelogs/AutoChangeLog-pr-6963.yml new file mode 100644 index 0000000000..ee8f0dadc9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6963.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Fixes cyborgs not being able to use two-handed modules while other modules are equipped." diff --git a/html/changelogs/AutoChangeLog-pr-6964.yml b/html/changelogs/AutoChangeLog-pr-6964.yml new file mode 100644 index 0000000000..9b57865956 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6964.yml @@ -0,0 +1,4 @@ +author: "Cruix" +delete-after: True +changes: + - rscadd: "AIs now have an experimental multi-camera mode that allows them to view up to six map areas at the same time, accessible through two new buttons on their HUD." diff --git a/html/changelogs/AutoChangeLog-pr-6966.yml b/html/changelogs/AutoChangeLog-pr-6966.yml new file mode 100644 index 0000000000..e727e153fc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6966.yml @@ -0,0 +1,4 @@ +author: "Dax Dupont" +delete-after: True +changes: + - bugfix: "Fixed rpeds throwing stock part rating related runtimes." diff --git a/html/changelogs/AutoChangeLog-pr-6969.yml b/html/changelogs/AutoChangeLog-pr-6969.yml new file mode 100644 index 0000000000..770043e579 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6969.yml @@ -0,0 +1,4 @@ +author: "Nichlas0010" +delete-after: True +changes: + - bugfix: "You can no longer use a soapstone infinitely" diff --git a/html/changelogs/AutoChangeLog-pr-6971.yml b/html/changelogs/AutoChangeLog-pr-6971.yml new file mode 100644 index 0000000000..cfcfc7c801 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6971.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Pubby's auxiliary mining base now works again." diff --git a/html/changelogs/AutoChangeLog-pr-6972.yml b/html/changelogs/AutoChangeLog-pr-6972.yml new file mode 100644 index 0000000000..a9ffa8bf78 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6972.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "The overlay effects of cult flooring are now on the floor plane, fixing their odd ambient occlusion appearance." diff --git a/html/changelogs/AutoChangeLog-pr-6973.yml b/html/changelogs/AutoChangeLog-pr-6973.yml new file mode 100644 index 0000000000..04a93d79ff --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6973.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Cloning no longer breaks a character's connection to their family heirloom." diff --git a/html/changelogs/AutoChangeLog-pr-6974.yml b/html/changelogs/AutoChangeLog-pr-6974.yml new file mode 100644 index 0000000000..9b295ea168 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6974.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Beam rifle tracers no longer fall into chasms." diff --git a/html/changelogs/AutoChangeLog-pr-6975.yml b/html/changelogs/AutoChangeLog-pr-6975.yml new file mode 100644 index 0000000000..298fdf4cad --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6975.yml @@ -0,0 +1,8 @@ +author: "Big Tobacco" +delete-after: True +changes: + - rscadd: "Cheap lighters now come in four different shapes and Zippos can have one of four different designs, collect them all and improve our sales!" + - imageadd: "All existing lighter sprites have been given a face-lift and the flames are now subtly animated." + - tweak: "Cheap lighters now use a fixed list of 16 colors to pick from instead of using totally randomized colors." + - imageadd: "Cigar cases have been tweaked to be a bit smaller and to have a modified design." + - imageadd: "Cohiba Robusto and Havanan cigars now use separate case sprites from the generic premium cigar cases." diff --git a/html/changelogs/AutoChangeLog-pr-6976.yml b/html/changelogs/AutoChangeLog-pr-6976.yml new file mode 100644 index 0000000000..eda65aebd0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6976.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Vomiting on the same tile a second time no deletes the vomited reagents." diff --git a/html/changelogs/AutoChangeLog-pr-6978.yml b/html/changelogs/AutoChangeLog-pr-6978.yml new file mode 100644 index 0000000000..79a17c8c34 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6978.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "fixed the clockwork helmet not dropping to ground when used by non-clock cultists" diff --git a/html/changelogs/AutoChangeLog-pr-6979.yml b/html/changelogs/AutoChangeLog-pr-6979.yml new file mode 100644 index 0000000000..83cc369bbf --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6979.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - refactor: "The base machinery type is now anchored by default." diff --git a/html/changelogs/AutoChangeLog-pr-6983.yml b/html/changelogs/AutoChangeLog-pr-6983.yml new file mode 100644 index 0000000000..b74d9635b3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6983.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "PDA style now gets loaded correctly." diff --git a/html/changelogs/AutoChangeLog-pr-6985.yml b/html/changelogs/AutoChangeLog-pr-6985.yml new file mode 100644 index 0000000000..7fa4518219 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6985.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Switching mobs into/out of a mech (by VR, ghosting, or mindswap) no longer improperly applies the mech's cursor." diff --git a/html/changelogs/AutoChangeLog-pr-6987.yml b/html/changelogs/AutoChangeLog-pr-6987.yml new file mode 100644 index 0000000000..491a186af9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6987.yml @@ -0,0 +1,5 @@ +author: "Nichlas0010" +delete-after: True +changes: + - bugfix: "You now can't get multiple download objectives!" + - tweak: "RDs, Scientists and Roboticists can no longer get download objectives!" diff --git a/html/changelogs/AutoChangeLog-pr-6988.yml b/html/changelogs/AutoChangeLog-pr-6988.yml new file mode 100644 index 0000000000..4b29f0fb09 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6988.yml @@ -0,0 +1,4 @@ +author: "cyclowns" +delete-after: True +changes: + - bugfix: "Fires no longer flicker back and forth like crazy" diff --git a/html/changelogs/AutoChangeLog-pr-6989.yml b/html/changelogs/AutoChangeLog-pr-6989.yml new file mode 100644 index 0000000000..b448b9a768 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6989.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - tweak: "roboticists have access to R&D windoors" diff --git a/html/changelogs/AutoChangeLog-pr-6991.yml b/html/changelogs/AutoChangeLog-pr-6991.yml new file mode 100644 index 0000000000..bf8b60a831 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6991.yml @@ -0,0 +1,6 @@ +author: "ShizCalev" +delete-after: True +changes: + - bugfix: "Fixed cigar cases & cigarette packets taking two inventory slots" + - bugfix: "Fixed cigar cases showing the wrong icon for the cigars inside them." + - bugfix: "Fixed cigar cases & cigarette packets stating the wrong name of the cigar/cigarette when removed via altclick." diff --git a/html/changelogs/AutoChangeLog-pr-6992.yml b/html/changelogs/AutoChangeLog-pr-6992.yml new file mode 100644 index 0000000000..30168181c9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6992.yml @@ -0,0 +1,11 @@ +author: "ShizCalev" +delete-after: True +changes: + - bugfix: "Fixed items in pockets vanishing when a mob is monkeyized." + - bugfix: "Fixed items in pockets vanishing when a mob is gorillized." + - bugfix: "Fixed items in pockets vanishing when a mob is infected with a transformation disease." + - bugfix: "Fixed items in pockets not being properly deleted when a mob goes through a recycler" + - bugfix: "Fixed items in pockets not being properly deleted when highlander mode is enabled." + - bugfix: "Fixed exploit allowing you to remove unremovable tanks from pockets." + - bugfix: "Fixed items in pockets dropping when a mob is equipped with a new outfit." + - bugfix: "Fixed items in pockets not being covered in blood when equipping the psycho outfit." diff --git a/html/changelogs/AutoChangeLog-pr-6995.yml b/html/changelogs/AutoChangeLog-pr-6995.yml new file mode 100644 index 0000000000..0d3751d794 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6995.yml @@ -0,0 +1,5 @@ +author: "Denton" +delete-after: True +changes: + - tweak: "Pubbystation: Added a dual-port vent pump to the toxins burn chamber." + - code_imp: "Removed most airlock_controller/incinerator related varedits and replaced them with defines/subtypes." diff --git a/html/changelogs/AutoChangeLog-pr-6996.yml b/html/changelogs/AutoChangeLog-pr-6996.yml new file mode 100644 index 0000000000..8485bdb247 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6996.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - tweak: "The Deltastation toxins lab has its portable scrubber, air pump and intercom back." diff --git a/html/changelogs/AutoChangeLog-pr-6997.yml b/html/changelogs/AutoChangeLog-pr-6997.yml new file mode 100644 index 0000000000..fe6f96ec08 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6997.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - tweak: "switched the type of the space suit on the syndicate shuttle" diff --git a/html/changelogs/AutoChangeLog-pr-6998.yml b/html/changelogs/AutoChangeLog-pr-6998.yml new file mode 100644 index 0000000000..4c5fa0b950 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6998.yml @@ -0,0 +1,4 @@ +author: "Naksu" +delete-after: True +changes: + - bugfix: "comms consoles now work in transit again, and no longer work in centcom" diff --git a/html/changelogs/AutoChangeLog-pr-6999.yml b/html/changelogs/AutoChangeLog-pr-6999.yml new file mode 100644 index 0000000000..5c646a8334 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6999.yml @@ -0,0 +1,4 @@ +author: "yorpan" +delete-after: True +changes: + - rscadd: "Brain damage makes you say one more thing." diff --git a/html/changelogs/AutoChangeLog-pr-7000.yml b/html/changelogs/AutoChangeLog-pr-7000.yml new file mode 100644 index 0000000000..c4aaff36e6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7000.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "fixed hydroponics tray weed light staying on when removing weeds with integrated circuits" diff --git a/html/changelogs/AutoChangeLog-pr-7001.yml b/html/changelogs/AutoChangeLog-pr-7001.yml new file mode 100644 index 0000000000..2721ba92e2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7001.yml @@ -0,0 +1,4 @@ +author: "Naksu" +delete-after: True +changes: + - code_imp: "removed unnecessary getFlatIcons from holocalls" diff --git a/html/changelogs/AutoChangeLog-pr-7002.yml b/html/changelogs/AutoChangeLog-pr-7002.yml new file mode 100644 index 0000000000..df3104e20f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7002.yml @@ -0,0 +1,4 @@ +author: "Naksu" +delete-after: True +changes: + - bugfix: "Screwdrivers and other items with overlays now show the proper appearance of the item when attacking something with them, or when put on a tray." diff --git a/html/changelogs/AutoChangeLog-pr-7003.yml b/html/changelogs/AutoChangeLog-pr-7003.yml new file mode 100644 index 0000000000..c60bd62fcf --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7003.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Atom initialization and icon smoothing no longer race, causing late-loading mineral turfs to have no icon." diff --git a/html/changelogs/AutoChangeLog-pr-7004.yml b/html/changelogs/AutoChangeLog-pr-7004.yml new file mode 100644 index 0000000000..a981bcaf98 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7004.yml @@ -0,0 +1,4 @@ +author: "yenwodyah" +delete-after: True +changes: + - bugfix: "A few virus threshold effects should work now" diff --git a/html/changelogs/AutoChangeLog-pr-7005.yml b/html/changelogs/AutoChangeLog-pr-7005.yml new file mode 100644 index 0000000000..ca71f91693 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7005.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - rscadd: "Adds the wheelofsalt command to TGS3. Spin the wheel of salt to find out what the Citadel Station 13 players are salting about today!" diff --git a/html/changelogs/AutoChangeLog-pr-7006.yml b/html/changelogs/AutoChangeLog-pr-7006.yml new file mode 100644 index 0000000000..afe3a639db --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7006.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - rscadd: "You can now slam or slap your hands onto tables by right clicking them in combat mode." diff --git a/html/changelogs/AutoChangeLog-pr-7007.yml b/html/changelogs/AutoChangeLog-pr-7007.yml new file mode 100644 index 0000000000..9dcc0d988f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7007.yml @@ -0,0 +1,4 @@ +author: "MrDoomBringer" +delete-after: True +changes: + - admin: "Central Command can now smite misbehaving crewmembers with supply pods (filled with whatever their hearts desire!)" diff --git a/html/changelogs/AutoChangeLog-pr-7008.yml b/html/changelogs/AutoChangeLog-pr-7008.yml new file mode 100644 index 0000000000..87b0ecdac1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7008.yml @@ -0,0 +1,4 @@ +author: "Beachsprites" +delete-after: True +changes: + - imageadd: "added directional beach sprites" diff --git a/html/changelogs/AutoChangeLog-pr-7012.yml b/html/changelogs/AutoChangeLog-pr-7012.yml new file mode 100644 index 0000000000..b4ff596298 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7012.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - spellcheck: "Faceless persons no longer \"melt their face off\" in energy gun suicides." diff --git a/html/changelogs/AutoChangeLog-pr-7013.yml b/html/changelogs/AutoChangeLog-pr-7013.yml new file mode 100644 index 0000000000..51fda8cec2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7013.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "The Lightning Bolt spell now works again." diff --git a/html/changelogs/AutoChangeLog-pr-7015.yml b/html/changelogs/AutoChangeLog-pr-7015.yml new file mode 100644 index 0000000000..e15283155d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7015.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - bugfix: "Swarmers can no longer attack field generators and turret covers." diff --git a/html/changelogs/AutoChangeLog-pr-7016.yml b/html/changelogs/AutoChangeLog-pr-7016.yml new file mode 100644 index 0000000000..f8daa8581f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7016.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - rscadd: "Arcades have been stocked with preloaded tactical snack rigs." diff --git a/html/changelogs/AutoChangeLog-pr-7019.yml b/html/changelogs/AutoChangeLog-pr-7019.yml new file mode 100644 index 0000000000..5cf456ab6c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7019.yml @@ -0,0 +1,4 @@ +author: "Naksu" +delete-after: True +changes: + - code_imp: "moved /datum.isprocessing into datum flags" diff --git a/html/changelogs/AutoChangeLog-pr-7020.yml b/html/changelogs/AutoChangeLog-pr-7020.yml new file mode 100644 index 0000000000..33f65b25df --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7020.yml @@ -0,0 +1,4 @@ +author: "MrDoomBringer" +delete-after: True +changes: + - admin: "CentCom Supplypods now stun their target before landing, and won't damage the station as much" diff --git a/html/changelogs/AutoChangeLog-pr-7021.yml b/html/changelogs/AutoChangeLog-pr-7021.yml new file mode 100644 index 0000000000..db52a1d046 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7021.yml @@ -0,0 +1,4 @@ +author: "Dax Dupont" +delete-after: True +changes: + - bugfix: "Fixes a sentience related exploit by blacklisting it in restricted uplinks." diff --git a/html/changelogs/AutoChangeLog-pr-7022.yml b/html/changelogs/AutoChangeLog-pr-7022.yml new file mode 100644 index 0000000000..7c9f43d2de --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7022.yml @@ -0,0 +1,5 @@ +author: "iksyp" +delete-after: True +changes: + - bugfix: "Ever since the great emotion purge of 2558, people were able to work at top efficiency, even while starving to death. This is no longer the case, Nanotrasen Scientists say." + - admin: "Hunger slowdown only applies if mood is disabled in the config." diff --git a/html/changelogs/AutoChangeLog-pr-7024.yml b/html/changelogs/AutoChangeLog-pr-7024.yml new file mode 100644 index 0000000000..133c0feb43 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7024.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - bugfix: "The Pubbystation maint bar Booze-O-Mat now shows its contents correctly." diff --git a/html/changelogs/AutoChangeLog-pr-7030.yml b/html/changelogs/AutoChangeLog-pr-7030.yml new file mode 100644 index 0000000000..5f89cc6abb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7030.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - tweak: "Vehicle speed changes now happen immediately instead of on the next movement cycle" diff --git a/html/changelogs/AutoChangeLog-pr-7031.yml b/html/changelogs/AutoChangeLog-pr-7031.yml new file mode 100644 index 0000000000..cb65231c9e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7031.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Picture-in-picture objects now are no longer overlapped by other certain objects" diff --git a/html/changelogs/AutoChangeLog-pr-7039.yml b/html/changelogs/AutoChangeLog-pr-7039.yml new file mode 100644 index 0000000000..4c5fce38d2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7039.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "A pAI dying while in holoform no longer deletes the card, instead merely emptying it." diff --git a/html/changelogs/AutoChangeLog-pr-7040.yml b/html/changelogs/AutoChangeLog-pr-7040.yml new file mode 100644 index 0000000000..0da19e008e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7040.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - tweak: "Added a warning to the shuttle purchase menu." diff --git a/html/changelogs/AutoChangeLog-pr-7041.yml b/html/changelogs/AutoChangeLog-pr-7041.yml new file mode 100644 index 0000000000..c6f54eb459 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7041.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "The thermal sight benefits of lantern wisps no longer disappear if you change glasses." diff --git a/html/changelogs/AutoChangeLog-pr-7042.yml b/html/changelogs/AutoChangeLog-pr-7042.yml new file mode 100644 index 0000000000..2a5553f3e2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7042.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - imageadd: "sandstone wall sprite for indestructible object" diff --git a/icons/misc/beach.dmi b/icons/misc/beach.dmi index c78c61658e..a538bdbe44 100644 Binary files a/icons/misc/beach.dmi and b/icons/misc/beach.dmi differ diff --git a/icons/misc/pic_in_pic.dmi b/icons/misc/pic_in_pic.dmi new file mode 100644 index 0000000000..9c550f3c25 Binary files /dev/null and b/icons/misc/pic_in_pic.dmi differ diff --git a/icons/mob/screen_ai.dmi b/icons/mob/screen_ai.dmi index a449cad906..8388ea3f80 100644 Binary files a/icons/mob/screen_ai.dmi and b/icons/mob/screen_ai.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index 23541a8e40..c83a82b1bd 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/obj/2x2.dmi b/icons/obj/2x2.dmi index 246afe51e6..a72a86f3d8 100644 Binary files a/icons/obj/2x2.dmi and b/icons/obj/2x2.dmi differ diff --git a/icons/obj/cigarettes.dmi b/icons/obj/cigarettes.dmi index 4de653d652..0f0433be7f 100644 Binary files a/icons/obj/cigarettes.dmi and b/icons/obj/cigarettes.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index c6f6798076..38d97e0440 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/custom.dmi b/icons/obj/custom.dmi index 419b14f526..c4c2f71b26 100644 Binary files a/icons/obj/custom.dmi and b/icons/obj/custom.dmi differ diff --git a/icons/obj/lavaland/dead_ratvar.dmi b/icons/obj/lavaland/dead_ratvar.dmi new file mode 100644 index 0000000000..5e6e9087bd Binary files /dev/null and b/icons/obj/lavaland/dead_ratvar.dmi differ diff --git a/icons/obj/machines/camera.dmi b/icons/obj/machines/camera.dmi index 343a5118e8..1e1789d643 100644 Binary files a/icons/obj/machines/camera.dmi and b/icons/obj/machines/camera.dmi differ diff --git a/icons/turf/areas.dmi b/icons/turf/areas.dmi index 4e78e0444b..1fadd875d7 100644 Binary files a/icons/turf/areas.dmi and b/icons/turf/areas.dmi differ diff --git a/modular_citadel/code/game/objects/structures/tables_racks.dm b/modular_citadel/code/game/objects/structures/tables_racks.dm new file mode 100644 index 0000000000..f7300e1d3f --- /dev/null +++ b/modular_citadel/code/game/objects/structures/tables_racks.dm @@ -0,0 +1,10 @@ +/obj/structure/table/alt_attack_hand(mob/user) + if(user && Adjacent(user) && !user.incapacitated()) + if(istype(user) && user.a_intent == INTENT_HARM) + user.visible_message("[user] slams [p_their()] palms down on [src].", "You slam your palms down on [src].") + playsound(src, 'sound/weapons/sonic_jackhammer.ogg', 50, 1) + else + user.visible_message("[user] slaps [p_their()] hands on [src].", "You slap your hands on [src].") + playsound(src, 'sound/weapons/tap.ogg', 50, 1) + user.do_attack_animation(src) + return TRUE diff --git a/modular_citadel/code/modules/admin/chat_commands.dm b/modular_citadel/code/modules/admin/chat_commands.dm new file mode 100644 index 0000000000..9cd25d328c --- /dev/null +++ b/modular_citadel/code/modules/admin/chat_commands.dm @@ -0,0 +1,10 @@ +/datum/tgs_chat_command/wheelofsalt + name = "wheelofsalt" + help_text = "What are Citadel Station 13 players salting about today? Spin the wheel and find out!" + +/datum/tgs_chat_command/wheelofsalt/Run(datum/tgs_chat_user/sender, params) + var/saltresult = "The wheel of salt [pick("clatters","vibrates","clanks","groans","moans","squeaks","emits a[pick(" god-forsaken"," lewd"," creepy"," generic","n orgasmic")] [pick("airhorn","bike horn","trumpet","clown","latex","vore","dog")] noise")] as it spins violently... And it seems the salt of the day is the " + var/saltprimarysubject = "[pick("combat","medical","grab","furry","wall","orgasm","cat","ERP","lizard","dog","latex","vision cone","atmospherics","table","chem","vore","dogborg","Skylar Lineman","Mekhi Anderson","Peppermint","rework","cum","dick","cockvore")]" + var/saltsecondarysubject = "[pick("rework","changes","r34","ban","removal","addition","leak","proposal","fanart","introduction","tabling","ERP")]" + saltresult += "[saltprimarysubject] [saltsecondarysubject]" + return "[saltresult]!" diff --git a/modular_citadel/code/modules/client/loadout/__donator.dm b/modular_citadel/code/modules/client/loadout/__donator.dm index 4dc40adea0..36955d878e 100644 --- a/modular_citadel/code/modules/client/loadout/__donator.dm +++ b/modular_citadel/code/modules/client/loadout/__donator.dm @@ -284,3 +284,9 @@ datum/gear/darksabresheath path = /obj/item/clothing/suit/toggle/labcoat/mad/techcoat ckeywhitelist = list("wilchen") +/datum/gear/leechjar + name = "Jar of Leeches" + category = SLOT_IN_BACKPACK + path = /obj/item/custom/leechjar + ckeywhitelist = list("sgtryder") + diff --git a/modular_citadel/code/modules/custom_loadout/custom_items.dm b/modular_citadel/code/modules/custom_loadout/custom_items.dm index c192804552..e5715160dc 100644 --- a/modular_citadel/code/modules/custom_loadout/custom_items.dm +++ b/modular_citadel/code/modules/custom_loadout/custom_items.dm @@ -351,3 +351,10 @@ icon_state = "rdcoat" icon_override = 'icons/mob/custom_w.dmi' item_state = "rdcoat" + +/obj/item/custom/leechjar + name = "Jar of Leeches" + desc = "A dubious cure-all. The cork seems to be sealed fairly well, and the glass impossible to break." + icon = 'icons/obj/custom.dmi' + icon_state = "leechjar" + item_state = "leechjar" diff --git a/strings/traumas.json b/strings/traumas.json index 4dd2d77abb..ab3f58f984 100644 --- a/strings/traumas.json +++ b/strings/traumas.json @@ -106,7 +106,8 @@ "@pick(bug)", "@pick(semicolon)wtf??????????? @pick(bug)", "@pick(semicolon)i ran into the supermattre ten i dsappeard @pick(bug)", - "DON'T EVER TUCH ME" + "DON'T EVER TUCH ME", + "@pick(semicolon)GIVE ME FREE ROBUX PLEASE JUST ENOUGH FOR SHIRT AND PANTS" ], "mutations": [ diff --git a/tgstation.dme b/tgstation.dme index 909f5fdd99..b895f951bb 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -181,6 +181,7 @@ #include "code\_onclick\hud\monkey.dm" #include "code\_onclick\hud\movable_screen_objects.dm" #include "code\_onclick\hud\parallax.dm" +#include "code\_onclick\hud\picture_in_picture.dm" #include "code\_onclick\hud\plane_master.dm" #include "code\_onclick\hud\revenanthud.dm" #include "code\_onclick\hud\robot.dm" @@ -1949,6 +1950,7 @@ #include "code\modules\mob\living\silicon\ai\life.dm" #include "code\modules\mob\living\silicon\ai\login.dm" #include "code\modules\mob\living\silicon\ai\logout.dm" +#include "code\modules\mob\living\silicon\ai\multicam.dm" #include "code\modules\mob\living\silicon\ai\say.dm" #include "code\modules\mob\living\silicon\ai\vox_sounds.dm" #include "code\modules\mob\living\silicon\ai\freelook\cameranet.dm" @@ -2724,12 +2726,14 @@ #include "modular_citadel\code\game\objects\items\melee\eutactic_blades.dm" #include "modular_citadel\code\game\objects\items\melee\transforming.dm" #include "modular_citadel\code\game\objects\items\storage\firstaid.dm" +#include "modular_citadel\code\game\objects\structures\tables_racks.dm" #include "modular_citadel\code\game\objects\structures\beds_chairs\chair.dm" #include "modular_citadel\code\game\objects\structures\beds_chairs\sofa.dm" #include "modular_citadel\code\game\objects\structures\crates_lockers\closets\fitness.dm" #include "modular_citadel\code\game\objects\structures\crates_lockers\closets\wardrobe.dm" #include "modular_citadel\code\game\objects\structures\crates_lockers\closets\secure\citadel_lockers.dm" #include "modular_citadel\code\modules\admin\admin.dm" +#include "modular_citadel\code\modules\admin\chat_commands.dm" #include "modular_citadel\code\modules\admin\holder2.dm" #include "modular_citadel\code\modules\admin\secrets.dm" #include "modular_citadel\code\modules\admin\topic.dm"