diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm
index 0a2280a5a53..d41cfaa3a68 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm
@@ -1,34 +1,35 @@
"a" = (/turf/template_noop,/area/template_noop)
-"b" = (/turf/closed/wall/shuttle/smooth/nodiagonal{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"c" = (/obj/structure/closet/crate,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/storage/bag/ore,/obj/item/device/mining_scanner,/obj/item/device/flashlight/lantern,/obj/item/weapon/card/id/mining,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"d" = (/obj/structure/closet/crate,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/storage/bag/ore,/obj/item/device/mining_scanner,/obj/item/device/flashlight/lantern,/obj/item/weapon/card/id/mining,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"e" = (/obj/item/weapon/storage/toolbox/mechanical,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"f" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"g" = (/obj/structure/reagent_dispensers/watertank,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"h" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth; initial_gas_mix = "o2=14;n2=23;TEMP=300"},/area/ruin/powered)
-"i" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 8},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth; initial_gas_mix = "o2=14;n2=23;TEMP=300"},/area/ruin/powered)
-"j" = (/obj/machinery/door/airlock/shuttle,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"k" = (/obj/machinery/computer/arcade/battle,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"l" = (/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"m" = (/obj/effect/mob_spawn/human/golem/adamantine,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"n" = (/obj/machinery/mineral/equipment_vendor/golem,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"o" = (/obj/item/weapon/resonator,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"p" = (/obj/machinery/mineral/ore_redemption,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"q" = (/obj/structure/statue/gold/rd,/obj/structure/window/reinforced{dir = 4; name = "shrine of the liberator"; pixel_x = 0},/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"r" = (/obj/machinery/computer/shuttle,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"s" = (/obj/structure/extinguisher_cabinet{pixel_y = 30},/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"t" = (/obj/structure/table/wood,/obj/item/weapon/bedsheet/rd{desc = "Majestic."; layer = 3; name = "Royal Cape of the Liberator"; pixel_x = 5; pixel_y = 9},/obj/item/weapon/book/manual/research_and_development{name = "Sacred Text of the Liberator"; pixel_x = -4; pixel_y = 3},/obj/structure/window/reinforced{dir = 4; name = "shrine of the liberator"; pixel_x = 0},/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"u" = (/obj/item/weapon/resonator/upgraded,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"v" = (/obj/machinery/autolathe,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"w" = (/obj/structure/table/wood,/obj/machinery/reagentgrinder,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"x" = (/obj/machinery/computer/arcade/orion_trail,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"y" = (/obj/structure/extinguisher_cabinet{pixel_y = -30},/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"z" = (/obj/structure/table/wood,/obj/item/weapon/surgical_drapes{pixel_x = 15},/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/fire,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"A" = (/obj/item/weapon/storage/firstaid/fire,/obj/structure/table/wood,/obj/item/weapon/storage/firstaid/fire,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"B" = (/obj/item/weapon/storage/firstaid/brute,/obj/structure/table/wood,/obj/item/weapon/storage/firstaid/brute,/obj/item/areaeditor/blueprints{desc = "Use to build new structures in the wastes."; name = "land claim"},/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"C" = (/obj/item/weapon/storage/firstaid/brute,/obj/structure/table/wood,/obj/item/weapon/storage/firstaid/brute,/obj/item/weapon/disk/design_disk/golem_shell,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"D" = (/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"E" = (/obj/structure/ore_box,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
+"b" = (/turf/closed/wall/shuttle/smooth/nodiagonal{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"c" = (/obj/structure/closet/crate,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/storage/bag/ore,/obj/item/device/mining_scanner,/obj/item/device/flashlight/lantern,/obj/item/weapon/card/id/mining,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"d" = (/obj/structure/closet/crate,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/storage/bag/ore,/obj/item/device/mining_scanner,/obj/item/device/flashlight/lantern,/obj/item/weapon/card/id/mining,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"e" = (/obj/item/weapon/storage/toolbox/mechanical,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"f" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"g" = (/obj/structure/reagent_dispensers/watertank,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"h" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth; initial_gas_mix = "o2=14;n2=23;TEMP=300"},/area/ruin/powered/golem_ship)
+"i" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 8},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth; initial_gas_mix = "o2=14;n2=23;TEMP=300"},/area/ruin/powered/golem_ship)
+"j" = (/obj/machinery/door/airlock/shuttle,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"k" = (/obj/machinery/computer/arcade/battle,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"l" = (/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"m" = (/obj/effect/mob_spawn/human/golem/adamantine,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"n" = (/obj/machinery/mineral/equipment_vendor/golem,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"o" = (/obj/item/weapon/resonator,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"p" = (/obj/machinery/mineral/ore_redemption,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"q" = (/obj/structure/statue/gold/rd,/obj/structure/window/reinforced{dir = 4; name = "shrine of the liberator"; pixel_x = 0},/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"r" = (/obj/machinery/computer/shuttle,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"s" = (/obj/machinery/bluespace_beacon,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"t" = (/obj/structure/extinguisher_cabinet{pixel_y = 30},/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"u" = (/obj/structure/table/wood,/obj/item/weapon/bedsheet/rd{desc = "Majestic."; layer = 3; name = "Royal Cape of the Liberator"; pixel_x = 5; pixel_y = 9},/obj/item/weapon/book/manual/research_and_development{name = "Sacred Text of the Liberator"; pixel_x = -4; pixel_y = 3},/obj/structure/window/reinforced{dir = 4; name = "shrine of the liberator"; pixel_x = 0},/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"v" = (/obj/item/weapon/resonator/upgraded,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"w" = (/obj/machinery/autolathe,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"x" = (/obj/structure/table/wood,/obj/machinery/reagentgrinder,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"y" = (/obj/machinery/computer/arcade/orion_trail,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"z" = (/obj/structure/extinguisher_cabinet{pixel_y = -30},/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"A" = (/obj/structure/table/wood,/obj/item/weapon/surgical_drapes{pixel_x = 15},/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/fire,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"B" = (/obj/item/weapon/storage/firstaid/fire,/obj/structure/table/wood,/obj/item/weapon/storage/firstaid/fire,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"C" = (/obj/item/weapon/storage/firstaid/brute,/obj/structure/table/wood,/obj/item/weapon/storage/firstaid/brute,/obj/item/areaeditor/blueprints{desc = "Use to build new structures in the wastes."; name = "land claim"},/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"D" = (/obj/item/weapon/storage/firstaid/brute,/obj/structure/table/wood,/obj/item/weapon/storage/firstaid/brute,/obj/item/weapon/disk/design_disk/golem_shell,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"E" = (/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
+"F" = (/obj/structure/ore_box,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaa
@@ -40,14 +41,14 @@ aabbbbjjbbbbjjbbbbbb
aabkllllmmbllllllnhi
aabllllloojlllllllhi
bbbjjbbbbbblllllpbbb
-bqrllllllljlllllljsj
-btlllllllljlllllljlj
-bbbjjbbbbbblllluvbbb
-aabllllloojllllllwhi
-aabxllllmmbyllzABChi
+bqrllllllljlslllljtj
+bulllllllljlllllljlj
+bbbjjbbbbbbllllvwbbb
+aabllllloojllllllxhi
+aabyllllmmbzllABCDhi
aabbbbjjbbbbjjbbbbbb
-aaaaabfffffffffffDhi
-aaaaabEEEEEEEefffDhi
+aaaaabfffffffffffEhi
+aaaaabFFFFFFFefffEhi
aaaaabbbbbbbbbbbbbbb
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
diff --git a/_maps/birdstation.dm b/_maps/birdstation.dm
index e35fa7106cf..b1f4350ed1e 100644
--- a/_maps/birdstation.dm
+++ b/_maps/birdstation.dm
@@ -31,7 +31,6 @@ A small map intended for lowpop(40 players and less).
#if !defined(MAP_OVERRIDE_FILES)
#define MAP_OVERRIDE_FILES
#include "map_files\BirdStation\telecomms.dm"
- #include "map_files\BirdStation\misc.dm"
#include "map_files\BirdStation\job\job_changes.dm"
#include "map_files\BirdStation\job\removed_jobs.dm"
#endif
@@ -40,4 +39,4 @@ A small map intended for lowpop(40 players and less).
#warn a map has already been included, ignoring birdstation.
-#endif
\ No newline at end of file
+#endif
diff --git a/_maps/map_files/BirdStation/BirdStation.dmm b/_maps/map_files/BirdStation/BirdStation.dmm
index b08b7ff7e43..23fe48b8871 100644
--- a/_maps/map_files/BirdStation/BirdStation.dmm
+++ b/_maps/map_files/BirdStation/BirdStation.dmm
@@ -1469,7 +1469,7 @@
"aCm" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk,/turf/open/floor/plating,/area/maintenance/disposal)
"aCn" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/machinery/light,/turf/open/floor/plating,/area/maintenance/disposal)
"aCo" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/machinery/door/poddoor{id = "crusherdoor"; layer = 3.1; name = "crusher safety blast door"},/turf/open/floor/plating,/area/maintenance/disposal)
-"aCp" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/machinery/recycler/birdstation{emagged = 1; name = "dangerous old crusher"},/turf/open/floor/plating,/area/maintenance/disposal)
+"aCp" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/machinery/recycler/deathtrap,/turf/open/floor/plating,/area/maintenance/disposal)
"aCq" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/turf/open/floor/plating,/area/maintenance/disposal)
"aCr" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal/deliveryChute{dir = 8},/turf/open/floor/plating,/area/maintenance/disposal)
"aCs" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/closed/wall/r_wall,/area/maintenance/disposal)
diff --git a/_maps/map_files/BirdStation/job/job_changes.dm b/_maps/map_files/BirdStation/job/job_changes.dm
index 679c212c7ee..cca341cc117 100644
--- a/_maps/map_files/BirdStation/job/job_changes.dm
+++ b/_maps/map_files/BirdStation/job/job_changes.dm
@@ -6,7 +6,7 @@
supervisors = "the captain and the head of personnel"
/datum/outfit/job/New()
- box = /obj/item/weapon/storage/box/birdsurv
+ box = /obj/item/weapon/storage/box/survival/radio
/datum/job/assistant // Here so assistant appears on the top of the select job list.
@@ -29,7 +29,7 @@
..()
/datum/outfit/job/hos/New()
- box = /obj/item/weapon/storage/box/birdsec
+ box = /obj/item/weapon/storage/box/security/radio
/datum/job/officer/New()
..()
@@ -39,7 +39,7 @@
minimal_access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, access_maint_tunnels, access_morgue, access_weapons, access_forensics_lockers)
/datum/outfit/job/officer/New()
- box = /obj/item/weapon/storage/box/birdsec
+ box = /obj/item/weapon/storage/box/security/radio
/datum/job/detective/New()
..()
@@ -47,7 +47,7 @@
minimal_access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, access_maint_tunnels, access_morgue, access_weapons, access_forensics_lockers)
/datum/outfit/job/detective/New()
- box = /obj/item/weapon/storage/box/birdsec
+ box = /obj/item/weapon/storage/box/security/radio
//Medbay
@@ -69,7 +69,7 @@
minimal_access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics, access_tcomsat)
/datum/outfit/job/engineer/New()
- box = /obj/item/weapon/storage/box/birdeng
+ box = /obj/item/weapon/storage/box/engineer/radio
//Science
@@ -93,7 +93,7 @@
minimal_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom)
/datum/outfit/job/mining/New()
- box = /obj/item/weapon/storage/box/birdeng
+ box = /obj/item/weapon/storage/box/engineer/radio
//Service
@@ -123,4 +123,4 @@
/datum/job/clown/New()
..()
- supervisors = "nobody but yourself" //Honk
\ No newline at end of file
+ supervisors = "nobody but yourself" //Honk
diff --git a/_maps/map_files/BirdStation/misc.dm b/_maps/map_files/BirdStation/misc.dm
deleted file mode 100644
index b86c9247888..00000000000
--- a/_maps/map_files/BirdStation/misc.dm
+++ /dev/null
@@ -1,63 +0,0 @@
-
-// modified crusher
-// only does 120 brute damage and won't eat the victims items
-
-
-/obj/machinery/recycler/birdstation/eat(mob/living/L)
-
- L.loc = src.loc
-
- if(istype(L,/mob/living/silicon))
- playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
- else
- playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
-
- var/gib = 1
- if(istype(L,/mob/living/carbon))
- gib = 0
- add_blood(L)
-
- if(!blood && !istype(L,/mob/living/silicon))
- blood = 1
- update_icon()
- L.Paralyse(5)
- if(gib || emagged == 2)
- L.gib()
- else if(emagged == 1)
- L.adjustBruteLoss(120)
-
-// we don't want anyone to dismantle or disable the crusher easily
-
-/obj/machinery/recycler/birdstation/attackby(obj/item/I, mob/user, params)
- if (istype(I, /obj/item/weapon/wrench) || istype(I, /obj/item/weapon/screwdriver))
- return
-
-
-//special birdstation survival boxes
-
-/obj/item/weapon/storage/box/birdsurv/New()
- ..()
- contents = list()
- new /obj/item/clothing/mask/breath(src)
- new /obj/item/weapon/tank/internals/emergency_oxygen(src)
- new /obj/item/weapon/reagent_containers/hypospray/medipen(src)
- new /obj/item/device/radio/off(src)
- return
-
-/obj/item/weapon/storage/box/birdeng/New()
- ..()
- contents = list()
- new /obj/item/clothing/mask/breath(src)
- new /obj/item/weapon/tank/internals/emergency_oxygen/engi(src)
- new /obj/item/weapon/reagent_containers/hypospray/medipen(src)
- new /obj/item/device/radio/off(src)
- return
-
-/obj/item/weapon/storage/box/birdsec/New()
- ..()
- contents = list()
- new /obj/item/clothing/mask/gas/sechailer(src)
- new /obj/item/weapon/tank/internals/emergency_oxygen(src)
- new /obj/item/weapon/reagent_containers/hypospray/medipen(src)
- new /obj/item/device/radio/off(src)
- return
diff --git a/_maps/map_files/DreamStation/dreamstation04.dmm b/_maps/map_files/DreamStation/dreamstation04.dmm
index 9f1dde54049..801662b4f4d 100644
--- a/_maps/map_files/DreamStation/dreamstation04.dmm
+++ b/_maps/map_files/DreamStation/dreamstation04.dmm
@@ -33852,7 +33852,14 @@
/area/crew_quarters/theatre)
"boC" = (
/obj/structure/table/wood,
-/obj/item/weapon/lipstick/random,
+/obj/item/weapon/lipstick/random{
+ pixel_x = 2;
+ pixel_y = 2
+ },
+/obj/item/weapon/lipstick/random{
+ pixel_x = -2;
+ pixel_y = -2
+ },
/turf/open/floor/wood,
/area/crew_quarters/theatre)
"boD" = (
@@ -78083,6 +78090,10 @@
/area/hallway/primary/aft{
name = "Aft Port Hallway"
})
+"cSm" = (
+/obj/structure/closet/secure_closet/freezer/cream_pie,
+/turf/open/floor/wood,
+/area/crew_quarters/theatre)
(1,1,1) = {"
aaa
@@ -108287,7 +108298,7 @@ biH
bjZ
bkT
bmM
-boC
+cSm
bqO
bte
bmM
diff --git a/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm b/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm
index 8e7fc5e4d84..f030f88a39d 100644
--- a/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm
+++ b/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm
@@ -33996,8 +33996,8 @@
},
/area/crew_quarters/kitchen)
"bjL" = (
-/obj/structure/closet,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/closet/secure_closet/freezer/cream_pie,
/turf/open/floor/plasteel{
icon_state = "redbluefull"
},
@@ -34014,8 +34014,15 @@
},
/area/crew_quarters/theatre)
"bjN" = (
-/obj/item/weapon/storage/crayons,
/obj/structure/table/wood,
+/obj/item/weapon/storage/crayons{
+ pixel_x = 3;
+ pixel_y = 3
+ },
+/obj/item/weapon/reagent_containers/food/snacks/pie/cream{
+ pixel_x = -3;
+ pixel_y = -3
+ },
/turf/open/floor/plasteel{
icon_state = "redbluefull"
},
@@ -61714,6 +61721,25 @@
},
/turf/closed/indestructible/opshuttle,
/area/shuttle/syndicate)
+"ckh" = (
+/obj/structure/table/wood,
+/obj/machinery/airalarm{
+ dir = 4;
+ icon_state = "alarm0";
+ pixel_x = -22
+ },
+/obj/item/weapon/storage/crayons{
+ pixel_x = 3;
+ pixel_y = 3
+ },
+/obj/item/weapon/reagent_containers/food/snacks/pie/cream{
+ pixel_x = -3;
+ pixel_y = -3
+ },
+/turf/open/floor/plasteel{
+ icon_state = "redbluefull"
+ },
+/area/space)
"cki" = (
/turf/open/space,
/obj/machinery/porta_turret/syndicate{
@@ -61724,17 +61750,6 @@
icon_state = "diagonalWall3"
},
/area/shuttle/syndicate)
-"ckh" = (
-/turf/open/space,
-/obj/machinery/porta_turret/syndicate{
- dir = 4
- },
-/turf/closed/wall/shuttle{
- tag = "icon-diagonalWall3 (WEST)";
- icon_state = "diagonalWall3";
- dir = 8
- },
-/area/shuttle/syndicate)
(1,1,1) = {"
aaa
@@ -95288,7 +95303,7 @@ bkQ
bfv
bvd
bfv
-bfv
+ckh
bqH
bsy
btK
diff --git a/_maps/map_files/MetaStation/MetaStation.v41I.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
similarity index 99%
rename from _maps/map_files/MetaStation/MetaStation.v41I.dmm
rename to _maps/map_files/MetaStation/MetaStation.dmm
index a01e241996c..e165b51f680 100644
--- a/_maps/map_files/MetaStation/MetaStation.v41I.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -3422,9 +3422,7 @@
name = "\improper Recreation Area"
})
"afB" = (
-/obj/structure/chair/stool{
- pixel_y = 8
- },
+/obj/structure/easel,
/turf/open/floor/plasteel{
icon_state = "dark"
},
@@ -3752,7 +3750,6 @@
},
/area/ai_monitored/security/armory)
"agf" = (
-/obj/machinery/flasher/portable,
/obj/item/device/radio/intercom{
freerange = 0;
frequency = 1459;
@@ -3760,6 +3757,20 @@
pixel_x = 0;
pixel_y = 24
},
+/obj/structure/rack,
+/obj/item/weapon/grenade/barrier{
+ pixel_x = -3;
+ pixel_y = 1
+ },
+/obj/item/weapon/grenade/barrier,
+/obj/item/weapon/grenade/barrier{
+ pixel_x = 3;
+ pixel_y = -1
+ },
+/obj/item/weapon/grenade/barrier{
+ pixel_x = 6;
+ pixel_y = -2
+ },
/turf/open/floor/plasteel{
icon_state = "vault";
dir = 1
@@ -3767,9 +3778,13 @@
/area/ai_monitored/security/armory)
"agg" = (
/mob/living/simple_animal/bot/secbot{
- health = 35;
- name = "Securitron #359";
- on = 0
+ arrest_type = 1;
+ health = 45;
+ icon_state = "secbot1";
+ idcheck = 1;
+ name = "Sergeant-at-Armsky";
+ on = 1;
+ weaponscheck = 1
},
/turf/open/floor/plasteel{
icon_state = "vault";
@@ -4263,13 +4278,14 @@
},
/area/ai_monitored/security/armory)
"agX" = (
-/obj/machinery/flasher/portable,
/obj/machinery/airalarm{
dir = 4;
locked = 0;
pixel_x = -23;
pixel_y = 0
},
+/obj/structure/rack,
+/obj/item/weapon/storage/fancy,
/turf/open/floor/plasteel{
icon_state = "vault";
dir = 1
@@ -4666,7 +4682,14 @@
d2 = 4;
icon_state = "2-4"
},
-/obj/machinery/flasher/portable,
+/obj/structure/rack,
+/obj/item/weapon/storage/box/flashes{
+ pixel_x = 3
+ },
+/obj/item/weapon/storage/box/teargas{
+ pixel_x = 1;
+ pixel_y = -2
+ },
/turf/open/floor/plasteel{
icon_state = "vault";
dir = 1
@@ -4728,7 +4751,6 @@
pixel_x = 3;
pixel_y = -3
},
-/obj/item/weapon/storage/box/teargas,
/obj/machinery/button/door{
id = "armory";
name = "Armory Shutters";
@@ -5042,6 +5064,7 @@
/turf/open/floor/plating,
/area/maintenance/disposal)
"aio" = (
+/obj/structure/easel,
/turf/open/floor/plating,
/area/maintenance/disposal)
"aip" = (
@@ -5594,7 +5617,7 @@
name = "HIGH VOLTAGE";
pixel_y = 0
},
-/turf/closed/wall/r_wall,
+/turf/closed/wall,
/area/maintenance/auxsolarport)
"ajp" = (
/obj/structure/table,
@@ -5736,6 +5759,10 @@
lootcount = 2;
name = "2maintenance loot spawner"
},
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = 28
+ },
/turf/open/floor/plasteel{
icon_state = "vault";
dir = 4
@@ -6455,7 +6482,6 @@
},
/area/security/warden)
"akI" = (
-/obj/item/weapon/grenade/barrier,
/obj/structure/extinguisher_cabinet{
pixel_x = -27;
pixel_y = 0
@@ -6465,12 +6491,13 @@
dir = 4;
network = list("SS13")
},
+/obj/machinery/flasher/portable,
/turf/open/floor/plasteel{
icon_state = "bot"
},
/area/security/warden)
"akJ" = (
-/obj/item/weapon/grenade/barrier,
+/obj/machinery/flasher/portable,
/turf/open/floor/plasteel{
icon_state = "bot"
},
@@ -8159,10 +8186,6 @@
/obj/structure/filingcabinet/security{
pixel_x = 4
},
-/obj/machinery/firealarm{
- dir = 4;
- pixel_x = 28
- },
/turf/open/floor/plasteel{
icon_state = "vault";
dir = 10
@@ -8178,6 +8201,11 @@
/obj/item/weapon/storage/lockbox/loyalty,
/obj/item/weapon/reagent_containers/glass/bottle/morphine,
/obj/machinery/light/small,
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = -26;
+ pixel_y = 0
+ },
/turf/open/floor/plasteel{
icon_state = "bot"
},
@@ -9297,7 +9325,7 @@
},
/obj/item/weapon/storage/belt{
desc = "Can hold quite a lot of stuff.";
- name = "mutli-belt"
+ name = "multi-belt"
},
/obj/item/clothing/gloves/color/fyellow,
/obj/effect/spawner/lootdrop/maintenance,
@@ -9379,7 +9407,7 @@
/turf/open/floor/plating,
/area/engine/gravity_generator)
"apu" = (
-/turf/closed/wall/r_wall,
+/turf/closed/wall,
/area/maintenance/auxsolarstarboard)
"apv" = (
/obj/machinery/power/solar_control{
@@ -10349,11 +10377,11 @@
/turf/open/floor/plating,
/area/maintenance/fore)
"arf" = (
-/obj/effect/decal/cleanable/blood,
/obj/structure/chair,
/obj/item/weapon/restraints/handcuffs,
/obj/effect/decal/remains/human,
/obj/item/clothing/under/soviet,
+/obj/effect/decal/cleanable/blood/old,
/turf/open/floor/plating,
/area/maintenance/fore)
"arg" = (
@@ -11957,7 +11985,7 @@
name = "HIGH VOLTAGE";
pixel_y = 0
},
-/turf/closed/wall/r_wall,
+/turf/closed/wall,
/area/maintenance/auxsolarstarboard)
"atw" = (
/turf/closed/wall/r_wall,
@@ -12735,8 +12763,8 @@
icon_state = "space";
layer = 4;
name = "EXTERNAL AIRLOCK";
- pixel_x = 0;
- pixel_y = 32
+ pixel_x = 32;
+ pixel_y = 0
},
/turf/open/floor/plating,
/area/maintenance/starboard)
@@ -13987,8 +14015,8 @@
/obj/machinery/door/airlock/security{
name = "Interrogation";
req_access = null;
- req_access_txt = "0";
- req_one_access_txt = "1;4"
+ req_access_txt = "63";
+ req_one_access_txt = "0"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -14949,7 +14977,11 @@
/turf/closed/wall/r_wall,
/area/engine/engineering)
"ayp" = (
-/obj/structure/closet/emcloset,
+/obj/structure/closet/emcloset{
+ anchored = 1;
+ desc = "It's a storage unit for emergency breath masks and O2 tanks, and is securely bolted in place.";
+ name = "anchored emergency closet"
+ },
/turf/open/floor/plating,
/area/engine/engineering)
"ayq" = (
@@ -17411,6 +17443,7 @@
dir = 4;
network = list("Singulo")
},
+/obj/structure/lattice,
/turf/open/space,
/area/space)
"aCi" = (
@@ -20832,13 +20865,13 @@
amount = 50
},
/obj/item/stack/sheet/glass{
- amount = 12
+ amount = 50
},
/obj/item/stack/sheet/glass{
- amount = 12
+ amount = 50
},
/obj/item/stack/sheet/glass{
- amount = 12
+ amount = 50
},
/obj/item/weapon/crowbar,
/obj/item/weapon/grenade/chem_grenade/metalfoam,
@@ -24449,12 +24482,12 @@
/turf/open/floor/wood,
/area/lawoffice)
"aNP" = (
+/obj/structure/filingcabinet/chestdrawer,
/obj/machinery/airalarm{
dir = 8;
icon_state = "alarm0";
pixel_x = 24
},
-/obj/structure/filingcabinet/employment,
/turf/open/floor/wood,
/area/lawoffice)
"aNQ" = (
@@ -25058,10 +25091,7 @@
/area/quartermaster/qm)
"aOT" = (
/obj/structure/table,
-/obj/item/weapon/paper_bin{
- pixel_x = -3;
- pixel_y = 7
- },
+/obj/machinery/computer/stockexchange,
/turf/open/floor/plasteel{
dir = 1;
icon_state = "brown"
@@ -26649,7 +26679,18 @@
pixel_y = 0;
supply_display = 1
},
-/obj/machinery/computer/stockexchange,
+/obj/item/weapon/cartridge/quartermaster{
+ pixel_x = 6;
+ pixel_y = 5
+ },
+/obj/item/weapon/cartridge/quartermaster,
+/obj/item/weapon/cartridge/quartermaster{
+ pixel_x = -4;
+ pixel_y = 7
+ },
+/obj/item/device/gps{
+ gpstag = "QM0"
+ },
/turf/open/floor/plasteel,
/area/quartermaster/qm)
"aRC" = (
@@ -27565,18 +27606,10 @@
/area/quartermaster/qm)
"aSY" = (
/obj/structure/table,
-/obj/item/weapon/cartridge/quartermaster{
- pixel_x = 6;
- pixel_y = 5
- },
-/obj/item/weapon/cartridge/quartermaster,
-/obj/item/weapon/cartridge/quartermaster{
- pixel_x = -4;
+/obj/item/weapon/paper_bin{
+ pixel_x = -3;
pixel_y = 7
},
-/obj/item/device/gps{
- gpstag = "QM0"
- },
/turf/open/floor/plasteel{
dir = 2;
icon_state = "brown"
@@ -29711,11 +29744,7 @@
/turf/open/floor/plating/airless,
/area/engine/engineering)
"aWD" = (
-/obj/machinery/camera/emp_proof{
- c_tag = "Aft Arm - Far";
- dir = 8;
- network = list("Singulo")
- },
+/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating/airless,
/area/engine/engineering)
"aWE" = (
@@ -30089,6 +30118,10 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
req_access_txt = 1
},
+/obj/item/weapon/storage/firstaid/regular{
+ pixel_x = 0;
+ pixel_y = 0
+ },
/turf/open/floor/plasteel{
icon_state = "delivery";
name = "floor"
@@ -31654,18 +31687,21 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/computer/powermonitor{
- pixel_x = -2;
- pixel_y = 2
+/obj/item/weapon/circuitboard/computer/pandemic{
+ pixel_x = -3;
+ pixel_y = 3
},
-/obj/item/weapon/circuitboard/computer/stationalert{
- pixel_x = 1;
- pixel_y = -1
- },
-/obj/item/weapon/circuitboard/computer/atmos_alert{
+/obj/item/weapon/circuitboard/computer/rdconsole,
+/obj/item/weapon/circuitboard/machine/rdserver{
pixel_x = 3;
pixel_y = -3
},
+/obj/item/weapon/circuitboard/machine/destructive_analyzer,
+/obj/item/weapon/circuitboard/machine/protolathe,
+/obj/item/weapon/circuitboard/computer/aifixer,
+/obj/item/weapon/circuitboard/computer/teleporter,
+/obj/item/weapon/circuitboard/machine/circuit_imprinter,
+/obj/item/weapon/circuitboard/machine/mechfab,
/turf/open/floor/plasteel{
icon_state = "dark"
},
@@ -31675,14 +31711,12 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/computer/secure_data{
- pixel_x = -2;
- pixel_y = 2
- },
-/obj/item/weapon/circuitboard/computer/security{
- pixel_x = 1;
- pixel_y = -1
+/obj/item/weapon/circuitboard/computer/mining,
+/obj/item/weapon/circuitboard/machine/autolathe{
+ pixel_x = 3;
+ pixel_y = -3
},
+/obj/item/weapon/circuitboard/computer/arcade/battle,
/obj/machinery/ai_status_display{
pixel_x = 0;
pixel_y = 31
@@ -31692,20 +31726,10 @@
},
/area/storage/tech)
"aZI" = (
-/obj/structure/rack{
- dir = 8;
- layer = 2.9
- },
-/obj/item/weapon/circuitboard/computer/cloning{
- pixel_x = 0
- },
-/obj/item/weapon/circuitboard/computer/med_data{
- pixel_x = 3;
- pixel_y = -3
- },
-/obj/item/weapon/circuitboard/machine/clonescanner,
-/obj/item/weapon/circuitboard/machine/clonepod,
-/obj/item/weapon/circuitboard/computer/scan_consolenew,
+/obj/structure/rack,
+/obj/item/weapon/circuitboard/machine/telecomms/processor,
+/obj/item/weapon/circuitboard/machine/telecomms/receiver,
+/obj/machinery/computer/telecomms/server,
/turf/open/floor/plasteel{
icon_state = "dark"
},
@@ -31838,6 +31862,14 @@
/turf/closed/wall,
/area/security/checkpoint/engineering)
"aZS" = (
+/obj/structure/sign/securearea{
+ desc = "A warning sign which reads 'EXTERNAL AIRLOCK'";
+ icon_state = "space";
+ layer = 4;
+ name = "EXTERNAL AIRLOCK";
+ pixel_x = 32;
+ pixel_y = 0
+ },
/turf/open/floor/plating{
dir = 2;
icon_state = "warnplate"
@@ -32756,6 +32788,7 @@
/area/engine/engineering)
"bbo" = (
/obj/machinery/space_heater,
+/obj/effect/decal/cleanable/cobweb2,
/turf/open/floor/plating{
icon_state = "platingdmg3"
},
@@ -33263,6 +33296,7 @@
pixel_x = 0;
pixel_y = 30
},
+/obj/item/weapon/pen/red,
/turf/open/floor/plasteel{
dir = 9;
icon_state = "brown"
@@ -33271,11 +33305,6 @@
name = "\improper Cargo Office"
})
"bbW" = (
-/obj/item/weapon/paper_bin{
- pixel_x = -3;
- pixel_y = 7
- },
-/obj/item/weapon/pen/red,
/obj/structure/table/reinforced,
/obj/machinery/computer/stockexchange,
/turf/open/floor/plasteel{
@@ -33760,14 +33789,6 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/computer/borgupload{
- pixel_x = -1;
- pixel_y = 1
- },
-/obj/item/weapon/circuitboard/computer/aiupload{
- pixel_x = 2;
- pixel_y = -2
- },
/turf/open/floor/plasteel{
icon_state = "vault";
dir = 4
@@ -33804,50 +33825,18 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/computer/message_monitor{
- pixel_y = -5
- },
-/obj/item/weapon/circuitboard/computer/arcade/battle{
- pixel_x = -4;
- pixel_y = 2
- },
-/obj/item/weapon/circuitboard/computer/arcade/orion_trail{
- pixel_x = 4
- },
/turf/open/floor/plasteel{
icon_state = "dark"
},
/area/storage/tech)
"bcN" = (
-/obj/structure/rack{
- dir = 8;
- layer = 2.9
- },
-/obj/item/weapon/circuitboard/computer/mining,
-/obj/item/weapon/circuitboard/machine/autolathe{
- pixel_x = 3;
- pixel_y = -3
- },
-/turf/open/floor/plasteel{
- icon_state = "dark"
- },
-/area/storage/tech)
+/turf/closed/wall,
+/area/maintenance/auxsolarport)
"bcO" = (
/obj/structure/rack{
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/computer/pandemic{
- pixel_x = -3;
- pixel_y = 3
- },
-/obj/item/weapon/circuitboard/computer/rdconsole,
-/obj/item/weapon/circuitboard/machine/rdserver{
- pixel_x = 3;
- pixel_y = -3
- },
-/obj/item/weapon/circuitboard/machine/destructive_analyzer,
-/obj/item/weapon/circuitboard/machine/protolathe,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel{
icon_state = "dark"
@@ -34078,8 +34067,8 @@
icon_state = "space";
layer = 4;
name = "EXTERNAL AIRLOCK";
- pixel_x = 0;
- pixel_y = 32
+ pixel_x = 32;
+ pixel_y = -32
},
/turf/open/floor/plating{
icon_state = "warnplate";
@@ -34227,10 +34216,16 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
req_access_txt = 1
},
-/obj/machinery/light_switch{
- pixel_x = -25;
+/obj/machinery/power/apc{
+ dir = 8;
+ name = "Cargo Office APC";
+ pixel_x = -24;
pixel_y = 0
},
+/obj/structure/cable/yellow{
+ d2 = 4;
+ icon_state = "0-4"
+ },
/turf/open/floor/plasteel{
dir = 9;
icon_state = "brown"
@@ -34245,6 +34240,12 @@
icon_state = "1-2"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8";
+ tag = ""
+ },
/turf/open/floor/plasteel{
dir = 1;
icon_state = "brown"
@@ -34296,13 +34297,17 @@
})
"bdz" = (
/obj/structure/table/reinforced,
-/obj/item/weapon/folder/yellow,
/obj/machinery/door/firedoor,
/obj/machinery/door/window/westleft{
dir = 8;
name = "Cargo Desk";
req_access_txt = "50"
},
+/obj/item/weapon/paper_bin{
+ pixel_x = -3;
+ pixel_y = 7
+ },
+/obj/item/weapon/pen,
/turf/open/floor/plasteel,
/area/quartermaster/office{
name = "\improper Cargo Office"
@@ -34518,18 +34523,6 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/computer/crew{
- pixel_x = -1;
- pixel_y = 1
- },
-/obj/item/weapon/circuitboard/computer/card{
- pixel_x = 2;
- pixel_y = -2
- },
-/obj/item/weapon/circuitboard/computer/communications{
- pixel_x = 5;
- pixel_y = -5
- },
/turf/open/floor/plasteel{
icon_state = "vault";
dir = 8
@@ -34757,11 +34750,11 @@
},
/area/security/checkpoint/engineering)
"bes" = (
-/obj/structure/closet/emcloset,
+/obj/structure/easel,
/turf/open/floor/plating{
- icon_state = "platingdmg2"
+ icon_state = "platingdmg3"
},
-/area/engine/engineering)
+/area/maintenance/starboard)
"bet" = (
/obj/machinery/light{
dir = 8
@@ -35451,14 +35444,6 @@
dir = 8;
layer = 2.9
},
-/obj/item/weapon/circuitboard/computer/robotics{
- pixel_x = -2;
- pixel_y = 2
- },
-/obj/item/weapon/circuitboard/computer/mecha_control{
- pixel_x = 1;
- pixel_y = -1
- },
/turf/open/floor/plasteel{
icon_state = "vault";
dir = 1
@@ -37123,18 +37108,41 @@
name = "Customs"
})
"bin" = (
-/obj/item/weapon/grenade/barrier,
-/obj/machinery/firealarm{
- dir = 8;
- pixel_x = -26;
- pixel_y = 0
- },
/obj/machinery/light/small{
dir = 1
},
/obj/machinery/airalarm{
pixel_y = 28
},
+/obj/structure/closet/crate/secure/weapon{
+ desc = "A secure clothing crate.";
+ name = "formal uniform crate";
+ req_access_txt = "3"
+ },
+/obj/item/clothing/under/rank/security/navyblue,
+/obj/item/clothing/under/rank/security/navyblue,
+/obj/item/clothing/under/rank/security/navyblue,
+/obj/item/clothing/under/rank/security/navyblue,
+/obj/item/clothing/under/rank/security/navyblue,
+/obj/item/clothing/under/rank/security/navyblue,
+/obj/item/clothing/suit/security/officer,
+/obj/item/clothing/suit/security/officer,
+/obj/item/clothing/suit/security/officer,
+/obj/item/clothing/suit/security/officer,
+/obj/item/clothing/suit/security/officer,
+/obj/item/clothing/suit/security/officer,
+/obj/item/clothing/under/rank/warden/navyblue,
+/obj/item/clothing/suit/security/warden,
+/obj/item/clothing/under/rank/head_of_security/navyblue,
+/obj/item/clothing/suit/security/hos,
+/obj/item/clothing/head/beret/sec/navyofficer,
+/obj/item/clothing/head/beret/sec/navyofficer,
+/obj/item/clothing/head/beret/sec/navyofficer,
+/obj/item/clothing/head/beret/sec/navyofficer,
+/obj/item/clothing/head/beret/sec/navyofficer,
+/obj/item/clothing/head/beret/sec/navyofficer,
+/obj/item/clothing/head/beret/sec/navywarden,
+/obj/item/clothing/head/beret/sec/navyhos,
/turf/open/floor/plasteel{
icon_state = "bot"
},
@@ -37290,11 +37298,6 @@
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 2
},
-/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
/turf/open/floor/plasteel{
dir = 8;
icon_state = "brown"
@@ -37311,11 +37314,6 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
- },
/turf/open/floor/plasteel,
/area/quartermaster/office{
name = "\improper Cargo Office"
@@ -38487,18 +38485,9 @@
/obj/structure/table,
/obj/item/weapon/clipboard,
/obj/item/weapon/folder/yellow,
+/obj/item/weapon/folder/yellow,
/obj/item/device/multitool,
-/obj/machinery/firealarm{
- dir = 8;
- pixel_x = -26;
- pixel_y = 0
- },
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/machinery/computer/stockexchange,
+/obj/item/weapon/pen/red,
/turf/open/floor/plasteel{
dir = 8;
icon_state = "brown"
@@ -39532,23 +39521,12 @@
})
"bmb" = (
/obj/structure/table,
-/obj/item/device/radio/intercom{
- freerange = 0;
- frequency = 1459;
- name = "Station Intercom (General)";
- pixel_x = -29
- },
-/obj/item/weapon/storage/firstaid/regular{
- pixel_x = 0;
+/obj/machinery/computer/stockexchange,
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = -26;
pixel_y = 0
},
-/obj/machinery/power/apc{
- dir = 2;
- name = "Cargo Office APC";
- pixel_x = 1;
- pixel_y = -24
- },
-/obj/structure/cable/yellow,
/turf/open/floor/plasteel{
dir = 10;
icon_state = "brown"
@@ -39589,6 +39567,13 @@
pixel_x = 28;
pixel_y = 0
},
+/obj/item/device/radio/intercom{
+ freerange = 0;
+ frequency = 1459;
+ name = "Station Intercom (General)";
+ pixel_x = 0;
+ pixel_y = -28
+ },
/turf/open/floor/plasteel{
dir = 6;
icon_state = "brown"
@@ -40241,7 +40226,7 @@
/area/engine/break_room)
"bng" = (
/obj/structure/sign/pods,
-/turf/closed/wall,
+/turf/closed/wall/r_wall,
/area/engine/break_room)
"bnh" = (
/obj/structure/grille,
@@ -40857,10 +40842,6 @@
/area/crew_quarters/heads)
"boh" = (
/obj/machinery/recharger,
-/obj/machinery/keycard_auth{
- pixel_x = 0;
- pixel_y = 24
- },
/obj/item/weapon/storage/secure/safe{
pixel_x = 34;
pixel_y = 0
@@ -44053,8 +44034,6 @@
/area/hallway/primary/central)
"btc" = (
/obj/structure/table,
-/obj/item/weapon/storage/crayons,
-/obj/item/weapon/storage/crayons,
/obj/machinery/power/apc{
cell_type = 2500;
dir = 8;
@@ -44066,6 +44045,11 @@
d2 = 4;
icon_state = "0-4"
},
+/obj/item/stack/cable_coil/random,
+/obj/item/stack/cable_coil/random,
+/obj/item/stack/cable_coil/random,
+/obj/item/stack/cable_coil/random,
+/obj/item/stack/cable_coil/random,
/turf/open/floor/plasteel,
/area/storage/art)
"btd" = (
@@ -45597,10 +45581,15 @@
/area/hallway/primary/central)
"bvn" = (
/obj/structure/table,
-/obj/item/stack/cable_coil/random,
-/obj/item/stack/cable_coil/random,
-/obj/item/stack/cable_coil/random,
-/obj/item/stack/cable_coil/random,
+/obj/item/weapon/canvas/twentythreeXtwentythree,
+/obj/item/weapon/canvas/twentythreeXtwentythree,
+/obj/item/weapon/canvas/twentythreeXnineteen,
+/obj/item/weapon/canvas/twentythreeXnineteen,
+/obj/item/weapon/canvas/nineteenXnineteen,
+/obj/item/weapon/canvas/nineteenXnineteen,
+/obj/item/weapon/storage/crayons,
+/obj/item/weapon/storage/crayons,
+/obj/item/weapon/storage/crayons,
/turf/open/floor/plasteel,
/area/storage/art)
"bvo" = (
@@ -45643,7 +45632,14 @@
},
/obj/structure/closet/gmcloset,
/obj/item/weapon/wrench,
-/obj/item/stack/cable_coil/white,
+/obj/item/stack/sheet/glass{
+ amount = 30
+ },
+/obj/item/stack/sheet/metal{
+ amount = 30
+ },
+/obj/item/stack/cable_coil/random,
+/obj/item/stack/cable_coil/random,
/turf/open/floor/wood,
/area/crew_quarters/bar)
"bvt" = (
@@ -49939,7 +49935,10 @@
/area/crew_quarters/bar)
"bCu" = (
/obj/structure/table/wood/poker,
-/obj/effect/spawner/lootdrop/gambling,
+/obj/effect/spawner/lootdrop{
+ loot = list(/obj/item/weapon/gun/projectile/revolver/russian = 5, /obj/item/weapon/storage/box/syndie_kit/throwing_weapons, /obj/item/toy/cards/deck/syndicate = 2);
+ name = "gambling valuables spawner"
+ },
/turf/open/floor/wood,
/area/crew_quarters/bar)
"bCv" = (
@@ -50677,7 +50676,7 @@
dir = 4
},
/turf/open/floor/goonplaque{
- desc = "\"This is a plaque in honour of our comrades on the G4407 Stations. Hopefully TG4407 model can live up to your fame and fortune.\" Scratched in beneath that is a crude image of sentient postcards in a realm of darkness. The station model number is MSv41I:151101"
+ desc = "\"This is a plaque in honour of our comrades on the G4407 Stations. Hopefully TG4407 model can live up to your fame and fortune.\" Scratched in beneath that is a crude image of sentient postcards in a realm of darkness. The station model number is MS-160511"
},
/area/hallway/primary/port)
"bDM" = (
@@ -54489,12 +54488,12 @@
icon_state = "shower";
dir = 4
},
-/obj/effect/decal/cleanable/blood,
-/obj/effect/decal/cleanable/blood/gibs/limb,
/obj/machinery/light/small,
/obj/effect/landmark{
name = "revenantspawn"
},
+/obj/effect/decal/cleanable/blood/old,
+/obj/effect/decal/cleanable/blood/gibs/old,
/turf/open/floor/plasteel{
icon_state = "floorgrime"
},
@@ -56442,7 +56441,9 @@
name = "Port Maintenance"
})
"bNo" = (
-/obj/machinery/vending/autodrobe,
+/obj/machinery/vending/autodrobe{
+ req_access_txt = "0"
+ },
/turf/open/floor/plating,
/area/maintenance/fpmaint2{
name = "Port Maintenance"
@@ -56963,13 +56964,7 @@
/area/bridge)
"bOg" = (
/obj/structure/rack,
-/obj/item/weapon/circuitboard/machine/telecomms/processor,
-/obj/item/weapon/circuitboard/machine/telecomms/processor,
-/obj/item/weapon/circuitboard/machine/telecomms/receiver,
-/obj/item/weapon/circuitboard/machine/telecomms/server,
-/obj/item/weapon/circuitboard/machine/telecomms/server,
-/obj/item/weapon/circuitboard/machine/telecomms/bus,
-/obj/item/weapon/circuitboard/machine/telecomms/bus,
+/obj/machinery/telecomms/bus,
/obj/item/weapon/circuitboard/machine/telecomms/broadcaster,
/obj/machinery/atmospherics/components/unary/vent_pump{
dir = 1;
@@ -58852,10 +58847,19 @@
},
/area/crew_quarters/kitchen)
"bRk" = (
-/turf/open/floor/plasteel{
- icon_state = "showroomfloor"
+/obj/structure/sign/securearea{
+ desc = "A warning sign which reads 'EXTERNAL AIRLOCK'";
+ icon_state = "space";
+ layer = 4;
+ name = "EXTERNAL AIRLOCK";
+ pixel_x = 32;
+ pixel_y = 0
},
-/area/crew_quarters/kitchen)
+/turf/open/floor/plating{
+ icon_state = "warnplate";
+ dir = 1
+ },
+/area/maintenance/starboard)
"bRl" = (
/obj/machinery/chem_master/condimaster{
name = "CondiMaster Neo";
@@ -59349,7 +59353,6 @@
pixel_y = 0
},
/obj/item/clothing/under/suit_jacket/red,
-/obj/item/weapon/book/codex_gigas,
/turf/open/floor/plasteel{
icon_state = "cult";
dir = 2
@@ -61602,11 +61605,12 @@
name = "HIGH VOLTAGE";
pixel_y = 0
},
-/turf/closed/wall/r_wall,
+/turf/closed/wall,
/area/maintenance/portsolar)
"bVC" = (
-/turf/closed/wall/r_wall,
-/area/maintenance/portsolar)
+/obj/machinery/power/grounding_rod,
+/turf/open/floor/plating/airless,
+/area/engine/engineering)
"bVD" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/airlock/maintenance{
@@ -65361,6 +65365,10 @@
pixel_x = -2;
pixel_y = 8
},
+/obj/structure/window/reinforced{
+ dir = 1;
+ pixel_y = 1
+ },
/turf/open/floor/plasteel{
dir = 4;
icon_state = "caution"
@@ -69913,7 +69921,11 @@
},
/area/crew_quarters/kitchen)
"ciS" = (
-/obj/structure/closet/emcloset,
+/obj/structure/closet/emcloset{
+ anchored = 1;
+ desc = "It's a storage unit for emergency breath masks and O2 tanks, and is securely bolted in place.";
+ name = "anchored emergency closet"
+ },
/turf/open/floor/plating{
icon_state = "warnplate";
dir = 1
@@ -72348,8 +72360,8 @@
name = "old sink";
pixel_y = 28
},
-/obj/effect/decal/cleanable/blood,
-/obj/effect/decal/cleanable/blood/gibs/limb,
+/obj/effect/decal/cleanable/blood/old,
+/obj/effect/decal/cleanable/blood/gibs/old,
/turf/open/floor/plating,
/area/maintenance/starboard)
"cmL" = (
@@ -73278,8 +73290,6 @@
name = "Aft Maintenance"
})
"col" = (
-/obj/effect/decal/cleanable/blood,
-/obj/effect/decal/cleanable/blood/gibs/limb,
/obj/effect/landmark{
name = "xeno_spawn";
pixel_x = -1
@@ -73287,6 +73297,8 @@
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
},
+/obj/effect/decal/cleanable/blood/old,
+/obj/effect/decal/cleanable/blood/gibs/old,
/turf/open/floor/plating,
/area/maintenance/aft{
name = "Aft Maintenance"
@@ -73441,14 +73453,14 @@
name = "Sleepers"
})
"coC" = (
-/obj/structure/grille,
-/obj/structure/window/fulltile{
- layer = 2.9
+/obj/structure/lattice,
+/obj/machinery/camera/emp_proof{
+ c_tag = "Fore Arm - Far";
+ dir = 8;
+ network = list("Singulo")
},
-/turf/open/floor/plating,
-/area/medical/sleeper{
- name = "Sleepers"
- })
+/turf/open/space,
+/area/space)
"coD" = (
/obj/machinery/door/firedoor,
/obj/structure/extinguisher_cabinet{
@@ -74760,7 +74772,7 @@
name = "Aft Maintenance"
})
"cqG" = (
-/obj/effect/decal/cleanable/blood,
+/obj/effect/decal/cleanable/blood/old,
/turf/open/floor/plating,
/area/maintenance/aft{
name = "Aft Maintenance"
@@ -76559,9 +76571,9 @@
},
/area/toxins/explab)
"ctj" = (
-/obj/effect/decal/cleanable/blood,
-/obj/effect/decal/cleanable/blood/gibs/limb,
/obj/structure/bed/roller,
+/obj/effect/decal/cleanable/blood/old,
+/obj/effect/decal/cleanable/blood/gibs/old,
/turf/open/floor/plating{
icon_state = "warnplate";
dir = 4
@@ -76602,8 +76614,8 @@
})
"ctn" = (
/obj/structure/bed,
-/obj/effect/decal/cleanable/blood/gibs/limb,
-/obj/effect/decal/cleanable/blood,
+/obj/effect/decal/cleanable/blood/old,
+/obj/effect/decal/cleanable/blood/gibs/old,
/turf/open/floor/plating,
/area/maintenance/aft{
name = "Aft Maintenance"
@@ -79098,7 +79110,6 @@
pixel_x = -2;
pixel_y = 4
},
-/obj/item/weapon/circuitboard/computer/teleporter,
/turf/open/floor/plasteel{
icon_state = "cafeteria";
dir = 5
@@ -81487,7 +81498,7 @@
pixel_y = 25
},
/obj/machinery/atmospherics/components/unary/portables_connector/visible,
-/obj/machinery/portable_atmospherics/canister,
+/obj/machinery/portable_atmospherics/canister/oxygen,
/turf/open/floor/plasteel{
dir = 2;
icon_state = "warning"
@@ -81771,6 +81782,7 @@
},
/obj/machinery/power/apc{
dir = 4;
+ locked = 0;
name = "Cloning Lab APC";
pixel_x = 24;
pixel_y = 0
@@ -83886,8 +83898,14 @@
},
/area/medical/morgue)
"cEt" = (
-/turf/open/floor/plating,
-/area/construction)
+/obj/structure/sign/securearea{
+ desc = "A warning sign which reads 'HIGH VOLTAGE'";
+ icon_state = "shock";
+ name = "HIGH VOLTAGE";
+ pixel_y = 0
+ },
+/turf/closed/wall/r_wall,
+/area/engine/engineering)
"cEu" = (
/obj/machinery/firealarm{
dir = 2;
@@ -95007,6 +95025,11 @@
/obj/machinery/light/small{
dir = 8
},
+/obj/machinery/camera{
+ c_tag = "Xenobiology Lab - Pen #1";
+ dir = 4;
+ network = list("SS13","RD","Xeno")
+ },
/turf/open/floor/engine,
/area/toxins/xenobiology)
"cVE" = (
@@ -95104,6 +95127,11 @@
/obj/machinery/light/small{
dir = 4
},
+/obj/machinery/camera{
+ c_tag = "Xenobiology Lab - Pen #2";
+ dir = 8;
+ network = list("SS13","RD","Xeno")
+ },
/turf/open/floor/engine,
/area/toxins/xenobiology)
"cVN" = (
@@ -97776,8 +97804,6 @@
},
/area/shuttle/abandoned)
"daw" = (
-/obj/structure/frame/machine,
-/obj/item/weapon/circuitboard/machine/cyborgrecharger,
/obj/effect/decal/cleanable/oil,
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
@@ -97945,7 +97971,6 @@
},
/area/shuttle/abandoned)
"daO" = (
-/obj/structure/frame/computer,
/obj/effect/decal/cleanable/cobweb,
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
@@ -98033,43 +98058,21 @@
},
/area/shuttle/abandoned)
"daW" = (
-/obj/effect/decal/cleanable/dirt{
- desc = "A thin layer of dust coating the floor.";
- name = "dust"
+/obj/machinery/light/small{
+ dir = 8
},
-/obj/effect/decal/cleanable/dirt{
- desc = "A thin layer of dust coating the floor.";
- name = "dust"
- },
-/obj/structure/frame/machine{
- desc = "A NanoTrasen hypersleep chamber - this one appears broken. There are exposed bolts for easy detachment using a wrench.";
- dir = 1;
- icon = 'icons/obj/Cryogenic2.dmi';
- icon_state = "sleeper-o";
- name = "broken hypersleep chamber";
- pixel_y = 0
- },
-/turf/open/floor/plasteel/shuttle{
- icon_state = "shuttlefloor3"
- },
-/area/shuttle/abandoned)
+/obj/structure/easel,
+/turf/open/floor/plating,
+/area/maintenance/starboard)
"daX" = (
-/obj/effect/decal/cleanable/dirt{
- desc = "A thin layer of dust coating the floor.";
- name = "dust"
+/obj/structure/lattice,
+/obj/machinery/camera/emp_proof{
+ c_tag = "Aft Arm - Far";
+ dir = 8;
+ network = list("Singulo")
},
-/obj/structure/frame/machine{
- desc = "A NanoTrasen hypersleep chamber - this one appears broken. There are exposed bolts for easy detachment using a wrench.";
- dir = 1;
- icon = 'icons/obj/Cryogenic2.dmi';
- icon_state = "sleeper-o";
- name = "broken hypersleep chamber";
- pixel_y = 0
- },
-/turf/open/floor/plasteel/shuttle{
- icon_state = "shuttlefloor3"
- },
-/area/shuttle/abandoned)
+/turf/open/space,
+/area/space)
"daY" = (
/obj/structure/chair/office/light{
dir = 4
@@ -98345,43 +98348,17 @@
},
/area/shuttle/abandoned)
"dbt" = (
-/obj/effect/decal/cleanable/dirt{
- desc = "A thin layer of dust coating the floor.";
- name = "dust"
+/obj/machinery/camera/emp_proof{
+ c_tag = "Aft Arm - Near";
+ dir = 4;
+ network = list("Singulo")
},
-/obj/effect/decal/cleanable/dirt{
- desc = "A thin layer of dust coating the floor.";
- name = "dust"
- },
-/obj/structure/frame/machine{
- desc = "A NanoTrasen hypersleep chamber - this one appears broken. There are exposed bolts for easy detachment using a wrench.";
- dir = 2;
- icon = 'icons/obj/Cryogenic2.dmi';
- icon_state = "sleeper-o";
- name = "broken hypersleep chamber";
- pixel_y = 3
- },
-/turf/open/floor/plasteel/shuttle{
- icon_state = "shuttlefloor3"
- },
-/area/shuttle/abandoned)
+/obj/structure/lattice,
+/turf/open/space,
+/area/space)
"dbu" = (
-/obj/effect/decal/cleanable/dirt{
- desc = "A thin layer of dust coating the floor.";
- name = "dust"
- },
-/obj/structure/frame/machine{
- desc = "A NanoTrasen hypersleep chamber - this one appears broken. There are exposed bolts for easy detachment using a wrench.";
- dir = 2;
- icon = 'icons/obj/Cryogenic2.dmi';
- icon_state = "sleeper-o";
- name = "broken hypersleep chamber";
- pixel_y = 3
- },
-/turf/open/floor/plasteel/shuttle{
- icon_state = "shuttlefloor3"
- },
-/area/shuttle/abandoned)
+/turf/closed/wall/r_wall,
+/area/security/checkpoint/engineering)
"dbv" = (
/obj/structure/chair/office/light,
/obj/effect/decal/cleanable/dirt{
@@ -98466,15 +98443,9 @@
},
/area/shuttle/abandoned)
"dbC" = (
-/obj/structure/frame/computer,
-/obj/effect/decal/cleanable/dirt{
- desc = "A thin layer of dust coating the floor.";
- name = "dust"
- },
-/turf/open/floor/plasteel/shuttle{
- icon_state = "shuttlefloor3"
- },
-/area/shuttle/abandoned)
+/obj/effect/spawner/lootdrop/maintenance,
+/turf/open/floor/plating,
+/area/engine/engineering)
"dbD" = (
/obj/structure/table,
/obj/item/device/radio/off{
@@ -98644,7 +98615,6 @@
},
/area/shuttle/abandoned)
"dbS" = (
-/obj/structure/frame/machine,
/obj/effect/decal/cleanable/oil,
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
@@ -98655,16 +98625,13 @@
},
/area/shuttle/abandoned)
"dbT" = (
-/obj/structure/frame/machine,
-/obj/item/weapon/circuitboard/machine/autolathe,
-/obj/effect/decal/cleanable/dirt{
- desc = "A thin layer of dust coating the floor.";
- name = "dust"
+/obj/structure/reagent_dispensers/watertank,
+/obj/structure/window/reinforced{
+ dir = 8
},
-/turf/open/floor/plasteel/shuttle{
- icon_state = "shuttlefloor3"
- },
-/area/shuttle/abandoned)
+/obj/effect/spawner/lootdrop/maintenance,
+/turf/open/floor/plating,
+/area/engine/engineering)
"dbU" = (
/obj/machinery/sleeper{
dir = 4;
@@ -98788,26 +98755,15 @@
/turf/open/floor/plasteel/shuttle,
/area/shuttle/abandoned)
"dcd" = (
-/obj/structure/frame/machine,
-/obj/item/weapon/circuitboard/machine/chem_dispenser,
-/obj/effect/decal/cleanable/dirt{
- desc = "A thin layer of dust coating the floor.";
- name = "dust"
- },
-/turf/open/floor/plasteel/shuttle{
- icon_state = "shuttlefloor3"
- },
-/area/shuttle/abandoned)
+/obj/structure/closet/firecloset,
+/obj/effect/spawner/lootdrop/maintenance,
+/turf/open/floor/plating,
+/area/engine/engineering)
"dce" = (
-/obj/structure/frame/machine,
-/obj/effect/decal/cleanable/dirt{
- desc = "A thin layer of dust coating the floor.";
- name = "dust"
- },
-/turf/open/floor/plasteel/shuttle{
- icon_state = "shuttlefloor3"
- },
-/area/shuttle/abandoned)
+/obj/machinery/portable_atmospherics/canister/air,
+/obj/effect/spawner/lootdrop/maintenance,
+/turf/open/floor/plating,
+/area/engine/engineering)
"dcf" = (
/obj/structure/chair/office/light,
/obj/effect/decal/cleanable/dirt{
@@ -99275,12 +99231,11 @@
},
/area/shuttle/escape)
"dcR" = (
-/obj/machinery/door/airlock/shuttle{
- name = "Emergency Shuttle Airlock";
- req_access_txt = "2"
+/obj/machinery/door/airlock/maintenance{
+ req_access_txt = "12"
},
-/turf/open/floor/plasteel/shuttle,
-/area/shuttle/escape)
+/turf/open/floor/plating,
+/area/engine/break_room)
"dcS" = (
/obj/structure/closet/crate/medical{
name = "medical crate"
@@ -99362,9 +99317,6 @@
},
/area/shuttle/escape)
"dcY" = (
-/obj/machinery/door/airlock/shuttle{
- name = "Emergency Shuttle Cargo Bay Airlock"
- },
/obj/docking_port/stationary{
dheight = 0;
dir = 4;
@@ -99381,6 +99333,9 @@
height = 14;
width = 25
},
+/obj/machinery/door/airlock/shuttle{
+ name = "Emergency Shuttle Airlock"
+ },
/turf/open/floor/plasteel/shuttle,
/area/shuttle/escape)
"dcZ" = (
@@ -100407,13 +100362,12 @@
/turf/open/floor/wood,
/area/crew_quarters/bar)
"dfi" = (
-/obj/machinery/camera/emp_proof{
- c_tag = "Aft Arm - Near";
- dir = 4;
- network = list("Singulo")
+/obj/machinery/keycard_auth{
+ pixel_x = 26;
+ pixel_y = 0
},
-/turf/open/floor/plating/airless,
-/area/space)
+/turf/open/floor/carpet,
+/area/crew_quarters/heads)
"dfj" = (
/obj/structure/cable{
icon_state = "0-2";
@@ -100457,14 +100411,18 @@
/turf/open/floor/plating,
/area/maintenance/starboard)
"dfo" = (
-/turf/open/floor/wood,
-/area/security/vacantoffice)
+/obj/item/hand_labeler_refill,
+/obj/structure/easel,
+/turf/open/floor/plating,
+/area/maintenance/fpmaint2{
+ name = "Port Maintenance"
+ })
"dfp" = (
-/turf/open/floor/plasteel{
- icon_state = "cafeteria";
- dir = 5
- },
-/area/crew_quarters/kitchen)
+/obj/structure/easel,
+/turf/open/floor/plating,
+/area/maintenance/aft{
+ name = "Aft Maintenance"
+ })
"dfq" = (
/turf/open/floor/plasteel,
/area/ai_monitored/storage/eva{
@@ -100476,16 +100434,27 @@
},
/area/crew_quarters/kitchen)
"dfs" = (
-/obj/structure/chair/stool,
-/turf/open/floor/wood,
-/area/maintenance/aft{
- name = "Aft Maintenance"
- })
+/obj/machinery/light/small{
+ dir = 8
+ },
+/obj/machinery/camera{
+ c_tag = "Xenobiology Lab - Pen #3";
+ dir = 4;
+ network = list("SS13","RD","Xeno")
+ },
+/turf/open/floor/engine,
+/area/toxins/xenobiology)
"dft" = (
-/turf/open/floor/wood,
-/area/maintenance/aft{
- name = "Aft Maintenance"
- })
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Xenobiology Lab - Pen #4";
+ dir = 8;
+ network = list("SS13","RD","Xeno")
+ },
+/turf/open/floor/engine,
+/area/toxins/xenobiology)
"dfu" = (
/turf/open/floor/wood{
icon_state = "wood-broken6"
@@ -100504,23 +100473,27 @@
},
/area/medical/morgue)
"dfw" = (
-/turf/open/floor/plasteel{
- icon_state = "dark"
+/obj/machinery/light/small{
+ dir = 8
},
-/area/medical/morgue)
+/obj/machinery/camera{
+ c_tag = "Xenobiology Lab - Pen #5";
+ dir = 4;
+ network = list("SS13","RD","Xeno")
+ },
+/turf/open/floor/engine,
+/area/toxins/xenobiology)
"dfx" = (
-/obj/structure/window/reinforced{
+/obj/machinery/light/small{
dir = 4
},
-/obj/structure/table/wood,
-/obj/item/clothing/under/burial,
-/obj/item/clothing/under/burial,
-/obj/item/clothing/under/burial,
-/obj/item/clothing/under/burial,
-/obj/item/clothing/under/burial,
-/obj/item/clothing/under/burial,
-/turf/open/floor/plating,
-/area/chapel/main)
+/obj/machinery/camera{
+ c_tag = "Xenobiology Lab - Pen #6";
+ dir = 8;
+ network = list("SS13","RD","Xeno")
+ },
+/turf/open/floor/engine,
+/area/toxins/xenobiology)
"dfy" = (
/turf/open/floor/engine/vacuum,
/area/atmos)
@@ -109770,9 +109743,9 @@ dai
dav
daE
dai
-daX
+daU
dbi
-dbu
+daU
dai
cZz
cZK
@@ -110027,13 +110000,13 @@ dah
dau
daD
dai
-daW
+daV
dbh
-dbt
+daV
dbA
daa
dbS
-dcd
+daU
dcr
cZy
aaa
@@ -110546,8 +110519,8 @@ dbj
cZS
dai
daE
-dbT
-dce
+daU
+daU
dcs
cZy
aaa
@@ -110798,9 +110771,9 @@ dal
dau
daG
dai
-daX
+daU
dbm
-dbu
+daU
dai
cZz
cZK
@@ -111055,9 +111028,9 @@ dak
daw
daa
dai
-daX
+daU
dbl
-dbt
+daV
dai
dbJ
dbU
@@ -111829,7 +111802,7 @@ daO
daY
dai
dbv
-dbC
+daU
cZy
cLU
dcj
@@ -113878,10 +113851,10 @@ bRQ
asj
alQ
bVz
-bVC
-bVC
-bVC
-bVC
+bVz
+bVz
+bVz
+bVz
aaa
aaf
aaa
@@ -114905,11 +114878,11 @@ aLU
bRT
aLU
bUA
-bVC
-bVC
-bVC
-bVC
-bVC
+bVz
+bVz
+bVz
+bVz
+bVz
aaa
aaf
aaa
@@ -118505,7 +118478,7 @@ alQ
bQr
bQH
alI
-avZ
+dfo
bVE
caW
ccb
@@ -118954,10 +118927,10 @@ aaf
aaf
aaf
aek
-agG
-agG
-agG
-agG
+bcN
+bcN
+bcN
+bcN
akr
ahv
ahv
@@ -119214,7 +119187,7 @@ aek
agH
ahx
air
-agG
+bcN
aks
alI
amY
@@ -119982,8 +119955,8 @@ aaf
aaf
aaf
aek
-agG
-agG
+bcN
+bcN
agG
agG
aiu
@@ -120865,7 +120838,7 @@ cOU
cRS
cRS
cSP
-dfx
+cRS
cOU
cUb
cOU
@@ -124983,7 +124956,7 @@ cOU
dcy
dcF
dcF
-dcR
+dcB
dcz
dcY
dcF
@@ -124993,7 +124966,7 @@ dcz
dcK
dcB
dcz
-dcR
+dcB
dcF
dcz
dcF
@@ -125682,7 +125655,7 @@ bdK
bol
bfm
bsF
-buS
+dfi
bww
bys
bmn
@@ -129617,7 +129590,7 @@ cTC
cTC
cTC
cVt
-cVD
+dfw
cVB
cTC
cTC
@@ -129870,7 +129843,7 @@ cVD
cVN
cVo
cVt
-cVD
+dfs
cVN
cVo
cVs
@@ -132954,7 +132927,7 @@ cVM
cVY
cVo
cVN
-cVM
+dft
cVY
cVo
cVB
@@ -133215,7 +133188,7 @@ cTC
cTC
cTC
cVB
-cVM
+dfx
cVY
cTC
cTC
@@ -133960,7 +133933,7 @@ cIx
cJs
cKt
chP
-bZQ
+dfp
cgG
ciY
bVE
@@ -138265,7 +138238,7 @@ avN
aXR
aZH
baX
-bcN
+bcM
bee
bfH
aXR
@@ -138772,7 +138745,7 @@ aMR
aOg
apj
aQW
-asL
+daW
aTz
alw
avN
@@ -141834,7 +141807,7 @@ aaf
aaf
acn
alx
-apn
+bes
apk
apk
apk
@@ -143147,15 +143120,15 @@ aCf
ayo
azn
aZR
-aZR
-aZR
-aZR
-aZR
-aZR
+dbu
+dbu
+dbu
+dbu
+dbu
bjQ
bly
bng
-bfV
+bjF
brj
bjF
bjF
@@ -143403,12 +143376,12 @@ aDp
aVe
ayo
aYd
-aZS
-bbn
+ayp
+ayo
bdd
-bes
-bfV
-bhH
+bdf
+dcR
+bjR
bjR
bjR
bjF
@@ -143663,11 +143636,11 @@ azn
ayo
ayo
aKe
-ayo
-bfV
+dbT
+bjF
bhI
bjR
-bjR
+bhH
bjF
bsD
brm
@@ -143901,8 +143874,8 @@ ayq
azp
aaf
aCh
+aaf
aIK
-aoa
aDq
aDq
aDq
@@ -143912,16 +143885,16 @@ aDq
aDq
aDq
aDq
-dfi
aIK
-aaa
+aaf
+dbt
aaf
aYe
aZT
ayo
-aKe
-ayo
-bfV
+dbC
+dcd
+bjF
bhJ
bjS
blz
@@ -144156,7 +144129,7 @@ avP
atw
ayr
azq
-aaf
+aoa
aaf
aIM
aLy
@@ -144172,13 +144145,13 @@ aLy
aLy
dfk
aaf
-aaf
+aoa
azq
ayr
ayo
bde
-ayo
-bnn
+dce
+brr
bhK
cXk
bhK
@@ -144434,8 +144407,8 @@ aYf
aZU
ayo
aKe
-ayo
-bnn
+aBZ
+brr
bhK
cWO
bhK
@@ -144669,7 +144642,7 @@ apk
avN
atw
ayr
-azq
+bVC
aAO
aaa
aIN
@@ -144687,11 +144660,11 @@ dfj
dfl
aaa
aWC
-azq
+bVC
ayr
ayo
bdf
-ayo
+aBZ
aaf
bhL
bjV
@@ -144947,8 +144920,8 @@ azq
ayq
azu
ayo
-aKe
-ayo
+dbC
+aBZ
aaf
aaa
cYF
@@ -145205,7 +145178,7 @@ ayr
ayo
ayo
aKe
-ayo
+aBZ
aaf
aaf
aaf
@@ -145436,7 +145409,7 @@ apu
apu
apu
apu
-atw
+alw
apk
anU
atw
@@ -145462,7 +145435,7 @@ aYg
ayo
bbo
aKe
-ayo
+aBZ
aaf
aaa
aaa
@@ -145692,7 +145665,7 @@ aaf
aaa
aaa
aaa
-atw
+alw
auL
avD
atw
@@ -145719,7 +145692,7 @@ ayr
ayo
ayo
bdg
-ayo
+aBZ
aaf
aaa
aaa
@@ -145975,7 +145948,7 @@ azq
ayt
aZT
ayo
-aKe
+dbC
aDq
aaf
aaa
@@ -146206,12 +146179,12 @@ aaa
aaa
aaf
aaa
-atw
+alw
auN
avS
atw
ayr
-azq
+bVC
aAP
aaa
aIN
@@ -146229,11 +146202,11 @@ dfj
dfl
aaa
azq
-azq
+bVC
ayr
ayo
bdh
-ayo
+aBZ
aaf
aaf
aaa
@@ -146463,8 +146436,8 @@ aaa
aaa
aaf
aaa
-atw
-atw
+alw
+alw
atx
atw
ayt
@@ -146490,8 +146463,8 @@ aYf
azu
ayo
bdi
-ayo
-ayo
+aBZ
+aBZ
aaf
aaa
aaa
@@ -146721,13 +146694,13 @@ aaa
acn
acn
atx
-anV
-avT
+bRk
+avS
atw
ayu
azq
azq
-aaa
+aaf
aIL
aoa
aoa
@@ -146746,7 +146719,7 @@ azq
azq
ayu
ayo
-bdh
+aKg
aZS
bdi
acn
@@ -146977,14 +146950,14 @@ aaf
aaf
aaf
aaf
-atw
-atw
+alw
+alw
atx
-awY
+atw
ayu
ayu
-aAQ
-aoa
+azq
+aaa
aLw
aSG
aSG
@@ -146998,14 +146971,14 @@ aTN
aSG
aSG
dfm
-aoa
+aaf
aWD
ayu
ayu
-aHA
+ayo
bdi
-ayo
-ayo
+aBZ
+aBZ
aaf
aaa
aaa
@@ -147239,25 +147212,25 @@ aaf
acn
atw
ayo
-azv
ayo
-azq
-aoa
-aoa
-aaf
-aaf
-aoa
-apy
-aoa
-aaf
-aaf
-aaf
-aaf
-aaf
-aaf
-azq
ayo
-azv
+aaa
+coC
+aIK
+aaf
+aaa
+aaa
+aaf
+aIK
+aaf
+aaa
+aaa
+aaf
+aIK
+daX
+aaa
+ayo
+ayo
ayo
ayo
acn
@@ -147496,7 +147469,7 @@ aaf
acn
aaf
aaf
-azw
+aaf
ayo
ayo
ayo
@@ -147752,25 +147725,25 @@ aaa
aaa
aaa
aaa
+aaa
aaf
-aaf
+ayo
azw
azw
azw
-azw
-aGc
+aHA
azw
azw
azw
+cEt
azw
azw
azw
-azw
-aGc
-azw
+aHA
azw
azw
azw
+ayo
aaf
aaa
aaf
@@ -148271,17 +148244,17 @@ aaa
aaa
aaa
aaa
-aaa
+aaf
aaf
aaa
aaa
aaf
-aaa
+aaf
aaa
aaa
aaa
aaf
-aaa
+aaf
aaa
aaa
aaa
@@ -148533,7 +148506,7 @@ aaf
aaa
aaa
aaa
-aaa
+aaf
aaa
aaa
aaa
@@ -149051,7 +149024,7 @@ aaa
aaa
aaa
aaa
-aaf
+aaa
aaa
aaa
aaa
diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm
index 355c2d64f14..ea06612a0c9 100644
--- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm
+++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm
@@ -464,21 +464,41 @@
/obj/item/key/security,
/turf/open/floor/plasteel{
icon_state = "vault";
- dir = 1
+ dir = 8
},
/area/ai_monitored/security/armory)
"abn" = (
+/obj/structure/rack,
+/obj/item/clothing/suit/armor/vest{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/item/clothing/suit/armor/vest{
+ pixel_y = 0
+ },
+/obj/item/clothing/suit/armor/vest{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/obj/item/clothing/head/helmet{
+ layer = 3.00001;
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/item/clothing/head/helmet{
+ layer = 3.00001
+ },
+/obj/item/clothing/head/helmet{
+ layer = 3.00001;
+ pixel_x = 3;
+ pixel_y = -3
+ },
/obj/machinery/firealarm{
pixel_y = 24
},
-/obj/structure/closet/secure_closet{
- anchored = 1;
- name = "Contraband Locker";
- req_access_txt = "3"
- },
/turf/open/floor/plasteel{
icon_state = "vault";
- dir = 1
+ dir = 8
},
/area/ai_monitored/security/armory)
"abo" = (
@@ -639,14 +659,6 @@
},
/area/security/prison)
"abH" = (
-/obj/machinery/camera/motion{
- c_tag = "Armory Motion Sensor";
- dir = 2;
- name = "motion-sensitive security camera"
- },
-/obj/machinery/airalarm{
- pixel_y = 23
- },
/obj/structure/table,
/obj/item/weapon/storage/box/chemimp{
pixel_x = 6
@@ -657,74 +669,80 @@
/obj/item/weapon/storage/lockbox/loyalty,
/turf/open/floor/plasteel{
icon_state = "vault";
- dir = 1
+ dir = 8
},
/area/ai_monitored/security/armory)
"abI" = (
/obj/structure/rack,
-/obj/structure/window/reinforced{
+/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/suit/armor/bulletproof{
- pixel_x = 3;
- pixel_y = -1
- },
-/obj/item/clothing/suit/armor/bulletproof{
- pixel_y = -1
- },
-/obj/item/clothing/suit/armor/bulletproof{
+/obj/item/clothing/head/helmet/riot{
pixel_x = -3;
- pixel_y = -1
+ pixel_y = 3
},
-/obj/item/clothing/head/helmet/alt{
- layer = 3.00001;
- pixel_x = 3
+/obj/item/clothing/head/helmet/riot,
+/obj/item/clothing/head/helmet/riot{
+ pixel_x = 3;
+ pixel_y = -3
},
-/obj/item/clothing/head/helmet/alt{
- layer = 3.00001
+/obj/item/weapon/shield/riot{
+ pixel_x = -3;
+ pixel_y = 3
},
-/obj/item/clothing/head/helmet/alt{
- layer = 3.00001;
- pixel_x = -3
+/obj/item/weapon/shield/riot,
+/obj/item/weapon/shield/riot{
+ pixel_x = 3;
+ pixel_y = -3
},
/turf/open/floor/plasteel{
icon_state = "vault";
- dir = 1
+ dir = 8
},
/area/ai_monitored/security/armory)
"abJ" = (
/obj/structure/rack,
-/obj/structure/window/reinforced{
- dir = 1
- },
-/obj/structure/window/reinforced{
- dir = 8
- },
-/obj/item/clothing/suit/armor/vest{
- pixel_x = 3;
- pixel_y = -1
- },
-/obj/item/clothing/suit/armor/vest{
- pixel_y = -1
- },
-/obj/item/clothing/suit/armor/vest{
+/obj/item/clothing/suit/armor/bulletproof{
pixel_x = -3;
- pixel_y = -1
+ pixel_y = 3
},
-/obj/item/clothing/head/helmet{
+/obj/item/clothing/suit/armor/bulletproof{
+ pixel_y = 0
+ },
+/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_x = -3;
+ pixel_y = 3
},
-/obj/item/clothing/head/helmet{
+/obj/item/clothing/head/helmet/alt{
layer = 3.00001
},
-/obj/item/clothing/head/helmet{
+/obj/item/clothing/head/helmet/alt{
layer = 3.00001;
- pixel_x = -3
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/obj/machinery/camera/motion{
+ c_tag = "Armory Motion Sensor";
+ dir = 2;
+ name = "motion-sensitive security camera"
},
/turf/open/floor/plasteel{
icon_state = "vault";
- dir = 1
+ dir = 8
},
/area/ai_monitored/security/armory)
"abK" = (
@@ -782,17 +800,9 @@
},
/area/security/prison)
"abN" = (
-/obj/structure/rack,
-/obj/structure/window/reinforced{
- dir = 1
- },
-/obj/machinery/light{
- dir = 1
- },
-/obj/item/clothing/suit/armor/laserproof,
+/obj/structure/closet/secure_closet/lethalshots,
/turf/open/floor/plasteel{
- icon_state = "vault";
- dir = 1
+ icon_state = "dark"
},
/area/ai_monitored/security/armory)
"abO" = (
@@ -808,27 +818,14 @@
/area/security/main)
"abQ" = (
/obj/structure/rack,
-/obj/item/clothing/suit/armor/riot,
-/obj/item/clothing/head/helmet/riot,
-/obj/item/clothing/suit/armor/riot,
-/obj/item/clothing/head/helmet/riot,
-/obj/item/clothing/suit/armor/riot,
-/obj/item/clothing/head/helmet/riot,
-/obj/item/weapon/shield/riot{
- pixel_x = 4;
- pixel_y = 0
- },
-/obj/item/weapon/shield/riot,
-/obj/item/weapon/shield/riot{
- pixel_x = -4;
- pixel_y = 0
- },
-/obj/structure/window/reinforced{
- dir = 1
+/obj/machinery/airalarm{
+ pixel_y = 23
},
+/obj/item/weapon/gun/energy/ionrifle,
+/obj/item/clothing/suit/armor/laserproof,
/turf/open/floor/plasteel{
icon_state = "vault";
- dir = 1
+ dir = 8
},
/area/ai_monitored/security/armory)
"abR" = (
@@ -998,16 +995,9 @@
},
/area/security/prison)
"aci" = (
-/obj/structure/window/reinforced{
- dir = 1
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
-/obj/structure/closet/secure_closet/lethalshots,
+/obj/vehicle/secway,
/turf/open/floor/plasteel{
- icon_state = "vault";
- dir = 1
+ icon_state = "dark"
},
/area/ai_monitored/security/armory)
"acj" = (
@@ -1044,7 +1034,7 @@
d2 = 2
},
/turf/open/floor/plasteel{
- dir = 5;
+ dir = 1;
icon_state = "warning"
},
/area/ai_monitored/security/armory)
@@ -1105,14 +1095,13 @@
/turf/open/floor/carpet,
/area/security/hos)
"acv" = (
-/obj/machinery/light{
- icon_state = "tube1";
- dir = 8
+/obj/structure/closet/secure_closet{
+ anchored = 1;
+ name = "Contraband Locker";
+ req_access_txt = "3"
},
-/obj/machinery/suit_storage_unit/security,
/turf/open/floor/plasteel{
- icon_state = "vault";
- dir = 1
+ icon_state = "dark"
},
/area/ai_monitored/security/armory)
"acw" = (
@@ -1292,18 +1281,24 @@
/area/security/prison)
"acL" = (
/turf/open/floor/plasteel{
- dir = 8;
+ dir = 10;
icon_state = "warning"
},
/area/ai_monitored/security/armory)
"acM" = (
/obj/structure/rack,
-/obj/machinery/atmospherics/components/unary/vent_scrubber{
+/obj/item/weapon/gun/energy/gun{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/item/weapon/gun/energy/gun,
+/obj/item/weapon/gun/energy/gun{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump{
on = 1
},
-/obj/item/weapon/storage/box/teargas,
-/obj/item/weapon/storage/box/handcuffs,
-/obj/item/weapon/storage/box/flashbangs,
/turf/open/floor/plasteel{
dir = 2;
icon_state = "bot"
@@ -1503,10 +1498,7 @@
d2 = 2;
icon_state = "1-2"
},
-/turf/open/floor/plasteel{
- dir = 4;
- icon_state = "warning"
- },
+/turf/open/floor/plasteel,
/area/ai_monitored/security/armory)
"adh" = (
/obj/machinery/disposal/bin,
@@ -1514,15 +1506,23 @@
/turf/open/floor/carpet,
/area/security/hos)
"adi" = (
-/obj/machinery/suit_storage_unit/security,
+/obj/machinery/flasher/portable,
/turf/open/floor/plasteel{
icon_state = "vault";
- dir = 1
+ dir = 8
},
/area/ai_monitored/security/armory)
"adj" = (
/obj/structure/rack,
-/obj/item/weapon/gun/energy/ionrifle,
+/obj/item/weapon/gun/energy/gun/advtaser{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/item/weapon/gun/energy/gun/advtaser,
+/obj/item/weapon/gun/energy/gun/advtaser{
+ pixel_x = 3;
+ pixel_y = -3
+ },
/turf/open/floor/plasteel{
dir = 2;
icon_state = "bot"
@@ -1556,7 +1556,10 @@
pixel_y = -26;
req_access_txt = "3"
},
-/turf/open/floor/plasteel,
+/turf/open/floor/plasteel{
+ icon_state = "delivery";
+ name = "floor"
+ },
/area/ai_monitored/security/armory)
"adm" = (
/obj/structure/grille,
@@ -2203,34 +2206,30 @@
/area/security/prison)
"aes" = (
/obj/structure/cable{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
},
+/obj/machinery/suit_storage_unit/security,
/turf/open/floor/plasteel{
- icon_state = "warningcorner";
- dir = 2
+ icon_state = "red"
},
/area/ai_monitored/security/armory)
"aet" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber{
- on = 1
- },
/turf/open/floor/plasteel{
icon_state = "warningcorner";
dir = 1
},
/area/ai_monitored/security/armory)
"aeu" = (
-/obj/vehicle/secway,
/obj/structure/cable{
d1 = 1;
d2 = 8;
icon_state = "1-8"
},
+/obj/machinery/suit_storage_unit/security,
/turf/open/floor/plasteel{
- dir = 6;
- icon_state = "warning"
+ icon_state = "red"
},
/area/ai_monitored/security/armory)
"aev" = (
@@ -2560,23 +2559,11 @@
/obj/structure/rack,
/obj/item/clothing/mask/gas/sechailer{
pixel_x = -3;
- pixel_y = -3
+ pixel_y = 3
},
/obj/item/clothing/mask/gas/sechailer,
/obj/item/clothing/mask/gas/sechailer{
- pixel_x = -3;
- pixel_y = -3
- },
-/obj/item/clothing/mask/gas/sechailer{
- pixel_x = -3;
- pixel_y = -3
- },
-/obj/item/clothing/mask/gas/sechailer{
- pixel_x = -3;
- pixel_y = -3
- },
-/obj/item/clothing/mask/gas/sechailer{
- pixel_x = -3;
+ pixel_x = 3;
pixel_y = -3
},
/turf/open/floor/plasteel{
@@ -2584,67 +2571,49 @@
},
/area/security/warden)
"aeX" = (
-/obj/structure/rack,
-/obj/item/weapon/gun/energy/gun{
- pixel_x = -3;
- pixel_y = 3
- },
-/obj/item/weapon/gun/energy/gun,
-/obj/item/weapon/gun/energy/gun{
- pixel_x = 3;
- pixel_y = -3
- },
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
- dir = 8
+/obj/structure/grille,
+/obj/structure/cable{
+ icon_state = "0-4";
+ d2 = 4
},
+/obj/structure/window/reinforced/fulltile,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 5
},
-/turf/open/floor/plasteel{
- icon_state = "vault";
- dir = 1
- },
+/turf/open/floor/plating,
/area/ai_monitored/security/armory)
"aeY" = (
-/obj/structure/rack,
-/obj/item/weapon/gun/energy/gun/advtaser{
- pixel_x = -3;
- pixel_y = 3
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0
},
-/obj/item/weapon/gun/energy/gun/advtaser,
-/obj/item/weapon/gun/energy/gun/advtaser{
- pixel_x = 3;
- pixel_y = -3
- },
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
- dir = 4
+/obj/machinery/door/window/southleft{
+ name = "Armory";
+ req_access_txt = "3"
},
+/obj/machinery/door/firedoor,
/turf/open/floor/plasteel{
- icon_state = "vault";
- dir = 1
+ dir = 10;
+ icon_state = "warning"
},
/area/ai_monitored/security/armory)
"aeZ" = (
-/obj/structure/rack,
-/obj/item/weapon/gun/energy/laser{
- pixel_x = -3;
- pixel_y = 3
+/obj/structure/grille,
+/obj/structure/cable{
+ d2 = 8;
+ icon_state = "0-8"
},
-/obj/item/weapon/gun/energy/laser,
-/obj/item/weapon/gun/energy/laser{
- pixel_x = 3;
- pixel_y = -3
+/obj/structure/cable{
+ icon_state = "0-4";
+ d2 = 4
},
-/obj/structure/window/reinforced,
+/obj/structure/window/reinforced/fulltile,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 10
},
-/turf/open/floor/plasteel{
- icon_state = "vault";
- dir = 1
- },
+/turf/open/floor/plating,
/area/ai_monitored/security/armory)
"afa" = (
/obj/machinery/door/window/southleft{
@@ -2666,6 +2635,12 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 10
},
+/obj/structure/cable{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8";
+ tag = ""
+ },
/turf/open/floor/plasteel{
dir = 6;
icon_state = "warning"
@@ -2817,6 +2792,15 @@
possible_destinations = "pod_asteroid3";
shuttleId = "pod3"
},
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/machinery/status_display{
+ density = 0;
+ layer = 3;
+ pixel_x = 0;
+ pixel_y = 32
+ },
/turf/open/floor/plasteel/shuttle,
/area/shuttle/pod_3)
"afr" = (
@@ -2827,6 +2811,9 @@
pixel_x = 6;
pixel_y = -32
},
+/obj/structure/chair{
+ dir = 4
+ },
/turf/open/floor/plasteel/shuttle,
/area/shuttle/pod_3)
"afs" = (
@@ -3287,16 +3274,36 @@
},
/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/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 5
+/obj/structure/cable{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8";
+ tag = ""
},
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/light{
+ dir = 4;
+ icon_state = "tube1"
+ },
+/obj/structure/cable{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel{
- dir = 10;
+ dir = 2;
icon_state = "warning"
},
/area/ai_monitored/security/armory)
@@ -3594,6 +3601,12 @@
/area/security/warden)
"agV" = (
/obj/machinery/hologram/holopad,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel{
icon_state = "showroomfloor"
},
@@ -3610,11 +3623,6 @@
"agX" = (
/obj/structure/table,
/obj/machinery/recharger,
-/obj/machinery/atmospherics/components/unary/vent_scrubber{
- on = 1;
- scrub_N2O = 0;
- scrub_Toxins = 0
- },
/turf/open/floor/plasteel{
icon_state = "showroomfloor"
},
@@ -4354,6 +4362,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
+/obj/item/weapon/book/manual/wiki/security_space_law,
/turf/open/floor/plasteel{
icon_state = "showroomfloor"
},
@@ -4713,6 +4722,14 @@
name = "Reception Desk";
req_access_txt = "63"
},
+/obj/item/weapon/paper_bin{
+ pixel_x = -3;
+ pixel_y = 7
+ },
+/obj/item/weapon/pen{
+ pixel_x = 4;
+ pixel_y = 4
+ },
/turf/open/floor/plasteel{
icon_state = "showroomfloor"
},
@@ -5106,7 +5123,7 @@
/turf/open/floor/plasteel,
/area/security/brig)
"ajC" = (
-/obj/effect/landmark/event_spawn,
+/obj/item/weapon/storage/toolbox/drone,
/turf/open/floor/plasteel{
dir = 8;
icon_state = "warning"
@@ -6070,7 +6087,7 @@
/area/security/processing)
"alt" = (
/obj/structure/reagent_dispensers/peppertank,
-/turf/closed/wall,
+/turf/closed/wall/r_wall,
/area/ai_monitored/security/armory)
"alu" = (
/obj/machinery/nuclearbomb/selfdestruct{
@@ -6656,8 +6673,11 @@
/turf/open/floor/plating,
/area/maintenance/auxsolarport)
"amB" = (
-/turf/open/floor/plating,
-/area/security/prison)
+/obj/structure/chair{
+ dir = 4
+ },
+/turf/open/floor/plasteel/shuttle,
+/area/shuttle/escape)
"amC" = (
/turf/open/floor/plating,
/area/maintenance/fpmaint2)
@@ -6765,7 +6785,6 @@
pixel_x = -3;
pixel_y = -2
},
-/obj/item/weapon/storage/firstaid/regular,
/turf/open/floor/plasteel{
icon_state = "showroomfloor"
},
@@ -7059,8 +7078,10 @@
/obj/structure/chair{
dir = 4
},
-/turf/open/floor/plasteel/shuttle,
-/area/shuttle/labor)
+/turf/open/floor/plasteel/shuttle{
+ icon_state = "shuttlefloor3"
+ },
+/area/shuttle/escape)
"anr" = (
/obj/structure/chair{
dir = 8
@@ -8712,11 +8733,11 @@
/turf/open/floor/wood,
/area/lawoffice)
"arc" = (
-/obj/structure/chair{
- dir = 4
+/obj/machinery/atmospherics/components/unary/vent_scrubber{
+ on = 1
},
-/turf/open/floor/wood,
-/area/lawoffice)
+/turf/open/floor/plasteel,
+/area/ai_monitored/security/armory)
"ard" = (
/obj/structure/grille,
/obj/machinery/door/poddoor/preopen{
@@ -10698,14 +10719,18 @@
},
/area/crew_quarters/fitness)
"avB" = (
-/obj/structure/chair{
- dir = 4
+/obj/structure/grille,
+/obj/structure/cable{
+ icon_state = "0-2";
+ d2 = 2
},
-/turf/open/floor/plasteel{
- icon_state = "red";
- dir = 4
+/obj/structure/window/reinforced/fulltile,
+/obj/structure/cable{
+ d2 = 8;
+ icon_state = "0-8"
},
-/area/crew_quarters/fitness)
+/turf/open/floor/plating,
+/area/ai_monitored/security/armory)
"avC" = (
/obj/structure/chair{
dir = 8
@@ -11257,10 +11282,23 @@
/turf/open/floor/plating,
/area/maintenance/fsmaint2)
"awN" = (
-/turf/open/floor/plasteel{
- icon_state = "floorgrime"
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
},
-/area/security/prison)
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/turf/open/floor/plasteel{
+ icon_state = "showroomfloor"
+ },
+/area/security/warden)
"awO" = (
/obj/structure/cable{
d1 = 4;
@@ -14640,7 +14678,14 @@
/obj/structure/mirror{
pixel_x = -28
},
-/obj/item/weapon/lipstick/random,
+/obj/item/weapon/lipstick/random{
+ pixel_x = 2;
+ pixel_y = 2
+ },
+/obj/item/weapon/lipstick/random{
+ pixel_x = -2;
+ pixel_y = -2
+ },
/turf/open/floor/plasteel{
icon_state = "whitehall";
dir = 4
@@ -15937,10 +15982,10 @@
/turf/closed/wall,
/area/crew_quarters/theatre)
"aGw" = (
-/obj/structure/closet,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
+/obj/structure/closet/secure_closet/freezer/cream_pie,
/turf/open/floor/plasteel{
icon_state = "redbluefull"
},
@@ -16043,7 +16088,9 @@
/obj/structure/mirror{
pixel_x = -28
},
-/obj/item/weapon/lipstick/random,
+/obj/item/device/flashlight/lamp/bananalamp{
+ pixel_y = 3
+ },
/turf/open/floor/plasteel{
icon_state = "redbluefull"
},
@@ -16464,14 +16511,20 @@
},
/area/chapel/main)
"aHp" = (
-/obj/structure/chair{
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/turf/open/floor/plasteel{
- dir = 1;
- icon_state = "chapel"
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0
},
-/area/chapel/main)
+/obj/structure/filingcabinet/chestdrawer,
+/turf/open/floor/plasteel{
+ icon_state = "showroomfloor"
+ },
+/area/security/warden)
"aHq" = (
/obj/structure/grille,
/obj/structure/window/reinforced/fulltile,
@@ -16645,7 +16698,7 @@
/turf/open/floor/plasteel,
/area/gateway)
"aHK" = (
-/obj/structure/closet,
+/obj/structure/closet/secure_closet/freezer/cream_pie,
/turf/open/floor/plasteel{
icon_state = "redbluefull"
},
@@ -16797,7 +16850,14 @@
icon_state = "alarm0";
pixel_x = -22
},
-/obj/item/weapon/storage/crayons,
+/obj/item/weapon/storage/crayons{
+ pixel_x = 3;
+ pixel_y = 3
+ },
+/obj/item/weapon/reagent_containers/food/snacks/pie/cream{
+ pixel_x = -3;
+ pixel_y = -3
+ },
/turf/open/floor/plasteel{
icon_state = "redbluefull"
},
@@ -17101,14 +17161,11 @@
},
/area/chapel/main)
"aIF" = (
-/obj/structure/chair{
- dir = 4
- },
-/turf/open/floor/plasteel{
- dir = 8;
- icon_state = "chapel"
- },
-/area/chapel/main)
+/obj/structure/grille,
+/obj/structure/window/reinforced/fulltile,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/security/warden)
"aIG" = (
/obj/structure/chair{
dir = 1
@@ -29607,8 +29664,9 @@
/turf/open/floor/plating,
/area/maintenance/disposal)
"bkA" = (
-/turf/open/floor/plating,
-/area/maintenance/disposal)
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/ai_monitored/security/armory)
"bkB" = (
/obj/machinery/button/door{
id = "Disposal Exit";
@@ -30377,8 +30435,14 @@
},
/area/maintenance/disposal)
"blT" = (
-/turf/open/floor/plating,
-/area/maintenance/fsmaint2)
+/obj/structure/cable{
+ d1 = 2;
+ d2 = 4;
+ 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,
@@ -56864,13 +56928,16 @@
/turf/open/floor/plating,
/area/maintenance/asmaint)
"cml" = (
-/obj/structure/chair{
- dir = 4
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
},
-/turf/open/floor/plasteel/shuttle{
- icon_state = "shuttlefloor4"
+/turf/open/floor/plasteel{
+ icon_state = "showroomfloor"
},
-/area/shuttle/syndicate)
+/area/security/warden)
"cmm" = (
/obj/structure/chair{
dir = 8
@@ -58356,18 +58423,24 @@
},
/area/shuttle/syndicate)
"coS" = (
-/obj/docking_port/stationary{
- dheight = 9;
- dir = 2;
- dwidth = 5;
- height = 24;
- id = "syndicate_nw";
- name = "south maintenance airlock";
- turf_type = /turf/open/space;
- width = 18
+/obj/structure/rack,
+/obj/item/weapon/gun/energy/laser{
+ pixel_x = -3;
+ pixel_y = 3
},
-/turf/open/space,
-/area/space)
+/obj/item/weapon/gun/energy/laser,
+/obj/item/weapon/gun/energy/laser{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel{
+ dir = 2;
+ icon_state = "bot"
+ },
+/area/ai_monitored/security/armory)
"coT" = (
/obj/item/pipe{
dir = 4;
@@ -58499,7 +58572,7 @@
/obj/structure/table,
/turf/open/floor/plasteel{
icon_state = "vault";
- dir = 1
+ dir = 8
},
/area/ai_monitored/security/armory)
"cph" = (
@@ -58711,8 +58784,11 @@
d2 = 2;
icon_state = "1-2"
},
-/turf/open/floor/plating,
-/area/maintenance/fsmaint2)
+/obj/structure/chair/office/dark{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/security/armory)
"cpB" = (
/obj/structure/cable/yellow{
d1 = 4;
@@ -59260,11 +59336,31 @@
/turf/open/floor/plating,
/area/engine/engineering)
"cqG" = (
-/turf/open/floor/plating{
- icon_state = "warnplate";
- dir = 4
+/obj/structure/rack,
+/obj/item/weapon/storage/box/rubbershot{
+ pixel_x = -3;
+ pixel_y = 3
},
-/area/engine/engineering)
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/item/weapon/storage/box/rubbershot{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/item/weapon/storage/box/rubbershot,
+/obj/item/weapon/storage/box/rubbershot,
+/obj/item/weapon/storage/box/rubbershot{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/obj/item/weapon/storage/box/rubbershot{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/turf/open/floor/plasteel{
+ icon_state = "vault";
+ dir = 8
+ },
+/area/ai_monitored/security/armory)
"cqH" = (
/obj/item/weapon/screwdriver,
/turf/open/floor/plating,
@@ -62486,11 +62582,21 @@
/turf/open/floor/plasteel/shuttle,
/area/shuttle/escape)
"cwM" = (
-/obj/structure/chair{
- dir = 4
+/obj/structure/rack,
+/obj/item/weapon/storage/box/teargas{
+ pixel_x = -3;
+ pixel_y = 3
},
-/turf/open/floor/plasteel/shuttle,
-/area/shuttle/escape)
+/obj/item/weapon/storage/box/handcuffs,
+/obj/item/weapon/storage/box/flashbangs{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/turf/open/floor/plasteel{
+ icon_state = "vault";
+ dir = 8
+ },
+/area/ai_monitored/security/armory)
"cwN" = (
/obj/machinery/computer/security,
/turf/open/floor/plasteel/shuttle{
@@ -62653,13 +62759,21 @@
},
/area/shuttle/escape)
"cxk" = (
-/obj/structure/chair{
- dir = 4
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
},
-/turf/open/floor/plasteel/shuttle{
- icon_state = "shuttlefloor3"
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
},
-/area/shuttle/escape)
+/turf/open/floor/plasteel{
+ icon_state = "showroomfloor"
+ },
+/area/security/warden)
"cxl" = (
/turf/closed/wall/shuttle{
icon_state = "swall7";
@@ -62713,6 +62827,9 @@
},
/area/shuttle/escape)
"cxr" = (
+/obj/structure/chair{
+ dir = 4
+ },
/obj/structure/window/reinforced{
dir = 8
},
@@ -62771,11 +62888,11 @@
/turf/open/floor/plasteel/shuttle,
/area/shuttle/transport)
"cxA" = (
-/obj/structure/chair{
- dir = 4
+/turf/open/floor/plasteel{
+ dir = 8;
+ icon_state = "warning"
},
-/turf/open/floor/plasteel/shuttle,
-/area/shuttle/transport)
+/area/ai_monitored/security/armory)
"cxB" = (
/obj/structure/chair,
/turf/open/floor/plasteel/shuttle,
@@ -63609,6 +63726,15 @@
possible_destinations = "pod_asteroid4";
shuttleId = "pod4"
},
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/machinery/status_display{
+ density = 0;
+ layer = 3;
+ pixel_x = 0;
+ pixel_y = 32
+ },
/turf/open/floor/plasteel/shuttle,
/area/shuttle/pod_4)
"czM" = (
@@ -63619,6 +63745,9 @@
pixel_x = 6;
pixel_y = -32
},
+/obj/structure/chair{
+ dir = 4
+ },
/turf/open/floor/plasteel/shuttle,
/area/shuttle/pod_4)
"czN" = (
@@ -93089,8 +93218,8 @@ abm
cpg
acv
adi
-adq
-aez
+adi
+aaZ
aeW
agQ
ahv
@@ -93346,8 +93475,8 @@ abH
acl
ajC
acL
-adL
-aez
+adi
+aaZ
agp
agT
ahx
@@ -93601,9 +93730,9 @@ aaa
aaZ
abn
ack
-acF
-acF
+adk
adK
+cqG
aeX
ago
agS
@@ -93859,8 +93988,8 @@ aaZ
abJ
ack
acM
-adj
adQ
+cwM
aeZ
agr
agU
@@ -94115,15 +94244,15 @@ aaa
aaZ
abI
ack
-acF
-acF
-adQ
+coS
+aet
+cxA
aeY
-amN
agt
-agQ
+agt
+ahz
aie
-aiL
+aiN
ajc
ajI
akp
@@ -94372,15 +94501,15 @@ aaa
aaZ
abQ
ack
-acN
-adk
-aet
+adj
+arc
+blT
agq
-agt
+cml
agV
-ahz
-aih
-aiN
+cxk
+aig
+aiM
ajc
ajI
akp
@@ -94629,15 +94758,15 @@ aaa
aaZ
abN
ack
-acF
+bkA
acF
aes
-afa
-ags
-ags
-ahD
-aig
-aiM
+avB
+amN
+agt
+awN
+aHp
+aIF
ajc
ajI
akp
@@ -94886,7 +95015,7 @@ aaf
aaZ
aci
acm
-adg
+cpA
adg
aeu
alt
@@ -115747,11 +115876,11 @@ cxd
cxe
cwU
cwL
-cxa
-cxa
-cxa
-cxa
-cxa
+anq
+anq
+anq
+anq
+anq
cwL
cwU
cxQ
@@ -117029,7 +117158,7 @@ cwL
cwX
cwL
cwL
-cxa
+anq
cxj
cwL
cxq
@@ -117281,8 +117410,8 @@ aaa
aaa
crx
cwG
-cwL
-cwL
+amB
+amB
cwW
cxa
cwL
diff --git a/_maps/metastation.dm b/_maps/metastation.dm
index d574427fca1..a75489a671d 100644
--- a/_maps/metastation.dm
+++ b/_maps/metastation.dm
@@ -19,7 +19,7 @@ z7 = empty space
#define MINETYPE "lavaland"
- #include "map_files\MetaStation\MetaStation.v41I.dmm"
+ #include "map_files\MetaStation\MetaStation.dmm"
#include "map_files\generic\z2.dmm"
#include "map_files\generic\z3.dmm"
#include "map_files\generic\z4.dmm"
@@ -30,7 +30,7 @@ z7 = empty space
#include "map_files\generic\z9.dmm"
#define MAP_PATH "map_files/MetaStation"
- #define MAP_FILE "MetaStation.v41I.dmm"
+ #define MAP_FILE "MetaStation.dmm"
#define MAP_NAME "MetaStation"
#define MAP_TRANSITION_CONFIG list(MAIN_STATION = CROSSLINKED, CENTCOMM = SELFLOOPING, ABANDONED_SATELLITE = CROSSLINKED, DERELICT = CROSSLINKED, MINING = SELFLOOPING, EMPTY_AREA_1 = CROSSLINKED, EMPTY_AREA_2 = CROSSLINKED, EMPTY_AREA_3 = CROSSLINKED, EMPTY_AREA_4 = CROSSLINKED)
diff --git a/_maps/shuttles/emergency_bar.dmm b/_maps/shuttles/emergency_bar.dmm
index 3846904216b..387ebe9f888 100644
--- a/_maps/shuttles/emergency_bar.dmm
+++ b/_maps/shuttles/emergency_bar.dmm
@@ -34,7 +34,7 @@
"aH" = (/obj/machinery/door/airlock/shuttle{name = "Emergency Shuttle Airlock"},/obj/docking_port/mobile/emergency{name = "The Emergency Escape Bar"},/turf/open/floor/plasteel/bar,/area/shuttle/escape)
"aI" = (/obj/structure/table,/obj/machinery/chem_dispenser/drinks/beer,/turf/open/floor/plasteel/bar,/area/shuttle/escape)
"aJ" = (/obj/structure/chair,/turf/open/floor/plasteel/bar,/area/shuttle/escape)
-"aK" = (/mob/living/simple_animal/drone/snowflake{desc = "A barkeeping drone, an indestructible robot built to tend bars."; dir = 8; health = 3000; languages = 127; laws = "1. Serve drinks. 2. Talk to patrons. 3. Don't get messed up in their affairs."; maxHealth = 3000; name = "Bardrone"; seeStatic = 0},/turf/open/floor/plasteel/bar,/area/shuttle/escape)
+"aK" = (/mob/living/simple_animal/drone/snowflake/bardrone,/turf/open/floor/plasteel/bar,/area/shuttle/escape)
"aL" = (/obj/machinery/vending/boozeomat,/turf/open/floor/plasteel/bar,/area/shuttle/escape)
"aM" = (/obj/structure/table,/turf/open/floor/plasteel/bar,/area/shuttle/escape)
"aN" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/condiment/saltshaker,/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 6; pixel_y = 4},/turf/open/floor/plasteel/bar,/area/shuttle/escape)
diff --git a/_maps/shuttles/emergency_narnar.dmm b/_maps/shuttles/emergency_narnar.dmm
index c85ddedd921..d4cf6ff501d 100644
--- a/_maps/shuttles/emergency_narnar.dmm
+++ b/_maps/shuttles/emergency_narnar.dmm
@@ -15,20 +15,20 @@
"o" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -29},/turf/open/floor/plasteel/cult,/area/shuttle/escape)
"p" = (/obj/machinery/computer/communications,/turf/open/floor/plasteel/cult,/area/shuttle/escape)
"q" = (/obj/item/stack/sheet/metal,/obj/effect/decal/remains/human,/turf/open/floor/plasteel/cult,/area/shuttle/escape)
-"r" = (/obj/machinery/door/airlock/cult/unruned/glass,/turf/open/floor/plasteel/cult,/area/shuttle/escape)
+"r" = (/obj/machinery/door/airlock/cult/unruned/glass/friendly,/turf/open/floor/plasteel/cult,/area/shuttle/escape)
"s" = (/obj/machinery/status_display,/turf/closed/wall/cult,/area/shuttle/escape)
"t" = (/obj/structure/closet/emcloset,/turf/open/floor/plasteel/cult,/area/shuttle/escape)
"u" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/crowbar,/turf/open/floor/plasteel/cult,/area/shuttle/escape)
"v" = (/obj/effect/decal/cleanable/blood,/turf/open/floor/plasteel/cult,/area/shuttle/escape)
"w" = (/mob/living/simple_animal/hostile/construct/builder,/turf/open/floor/plasteel/cult,/area/shuttle/escape)
-"x" = (/obj/machinery/door/airlock/cult,/turf/open/floor/plating,/area/shuttle/escape)
+"x" = (/obj/machinery/door/airlock/cult/friendly,/turf/open/floor/plating,/area/shuttle/escape)
"y" = (/obj/effect/decal/cleanable/blood/gibs/up,/obj/item/candle/infinite,/turf/open/floor/plasteel/cult,/area/shuttle/escape)
"z" = (/obj/effect/rune/raise_dead,/turf/open/floor/plasteel/cult,/area/shuttle/escape)
"A" = (/obj/item/candle/infinite,/turf/open/floor/plasteel/cult,/area/shuttle/escape)
"B" = (/obj/effect/rune/true_sight,/obj/effect/decal/remains/human,/obj/effect/decal/cleanable/blood/gibs/body,/obj/effect/decal/cleanable/blood/gibs/core,/turf/open/floor/plasteel/cult,/area/shuttle/escape)
"C" = (/mob/living/simple_animal/hostile/construct/armored,/turf/open/floor/plasteel/cult,/area/shuttle/escape)
"D" = (/obj/effect/rune/true_sight,/obj/effect/decal/remains/human,/turf/open/floor/plasteel/cult,/area/shuttle/escape)
-"E" = (/obj/machinery/door/airlock/cult,/obj/docking_port/mobile/emergency{name = "shuttle 667"},/turf/open/floor/plating,/area/shuttle/escape)
+"E" = (/obj/machinery/door/airlock/cult/friendly,/obj/docking_port/mobile/emergency{name = "shuttle 667"},/turf/open/floor/plating,/area/shuttle/escape)
"F" = (/obj/effect/decal/cleanable/blood/gibs/down,/turf/open/floor/plasteel/cult,/area/shuttle/escape)
"G" = (/obj/structure/extinguisher_cabinet{has_extinguisher = null; icon_state = "extinguisher_empty"; opened = 1; pixel_x = 27; pixel_y = 0},/obj/item/weapon/extinguisher{safety = 0},/turf/open/floor/plasteel/cult,/area/shuttle/escape)
"H" = (/mob/living/simple_animal/hostile/construct/wraith,/turf/open/floor/plasteel/cult,/area/shuttle/escape)
@@ -37,7 +37,7 @@
"K" = (/mob/living/simple_animal/hostile/carp/eyeball{faction = list("cult"); name = "right eyeball"},/turf/open/floor/plasteel/cult,/area/shuttle/escape)
"L" = (/obj/effect/decal/cleanable/blood/drip,/turf/open/floor/plasteel/cult,/area/shuttle/escape)
"M" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/open/floor/plasteel/cult,/area/shuttle/escape)
-"N" = (/obj/machinery/door/airlock/cult/glass,/turf/open/floor/plasteel/cult,/area/shuttle/escape)
+"N" = (/obj/machinery/door/airlock/cult/glass/friendly,/turf/open/floor/plasteel/cult,/area/shuttle/escape)
"O" = (/obj/structure/dresser,/turf/open/floor/plasteel/cult,/area/shuttle/escape)
"P" = (/obj/structure/showcase/horrific_experiment,/turf/open/floor/plasteel/cult,/area/shuttle/escape)
"Q" = (/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/crowbar,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/item/stack/sheet/metal,/turf/open/floor/plasteel/cult,/area/shuttle/escape)
diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm
index 0cbd606660e..04e5a8fbf0d 100644
--- a/code/__DEFINES/combat.dm
+++ b/code/__DEFINES/combat.dm
@@ -70,3 +70,13 @@
#define UNARMED_ATTACK 2
#define PROJECTILE_ATTACK 3
#define THROWN_PROJECTILE_ATTACK 4
+
+
+//Gun Stuff
+ #define SAWN_INTACT 0
+ #define SAWN_OFF 1
+ #define SAWN_SAWING -1
+
+ #define WEAPON_LIGHT 0
+ #define WEAPON_MEDIUM 1
+ #define WEAPON_HEAVY 2
\ No newline at end of file
diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm
index f05b74117d9..7daf7eeaf3c 100644
--- a/code/__DEFINES/is_helpers.dm
+++ b/code/__DEFINES/is_helpers.dm
@@ -8,6 +8,14 @@
#define ishuman(A) (istype(A, /mob/living/carbon/human))
+// Human sub-species
+#define isabductor(A) (is_species(A, /datum/species/abductor))
+#define isgolem(A) (is_species(A, /datum/species/golem))
+#define islizard(A) (is_species(A, /datum/species/lizard))
+#define isplasmaman(A) (is_species(A, /datum/species/plasmaman))
+#define ispodperson(A) (is_species(A, /datum/species/podperson))
+#define isflyperson(A) (is_species(A, /datum/species/fly))
+
#define ismonkey(A) (istype(A, /mob/living/carbon/monkey))
#define isbrain(A) (istype(A, /mob/living/carbon/brain))
@@ -32,6 +40,8 @@
#define ismouse(A) (istype(A, /mob/living/simple_animal/mouse))
+#define isconstruct(A) (istype(A, /mob/living/simple_animal/hostile/construct))
+
#define isbear(A) (istype(A, /mob/living/simple_animal/hostile/bear))
#define iscarp(A) (istype(A, /mob/living/simple_animal/hostile/carp))
@@ -78,4 +88,4 @@
#define issignaler(O) (istype(O, /obj/item/device/assembly/signaler))
-#define istimer(O) (istype(O, /obj/item/device/assembly/timer))
\ No newline at end of file
+#define istimer(O) (istype(O, /obj/item/device/assembly/timer))
diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm
index 39c68439420..5fc6b1400d6 100644
--- a/code/__HELPERS/mobs.dm
+++ b/code/__HELPERS/mobs.dm
@@ -317,4 +317,11 @@ Proc for attack log creation, because really why not
. = 0
break mainloop
if(progbar)
- qdel(progbar)
\ No newline at end of file
+ qdel(progbar)
+
+/proc/is_species(A, species_datum)
+ . = FALSE
+ if(ishuman(A))
+ var/mob/living/carbon/human/H = A
+ if(H.dna && istype(H.dna.species, species_datum))
+ . = TRUE
diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm
index a4648b5fac6..a5a299d068c 100644
--- a/code/game/gamemodes/cult/cult_structures.dm
+++ b/code/game/gamemodes/cult/cult_structures.dm
@@ -8,9 +8,21 @@
/obj/structure/cult/examine(mob/user)
..()
+ user << "\The [src] is [anchored ? "":"not "]secured to the floor."
if(iscultist(user) && cooldowntime > world.time)
user << "The magic in [src] is weak, it will be ready to use again in [getETA()]."
+/obj/structure/cult/attackby(obj/I, mob/user, params)
+ if(istype(I, /obj/item/weapon/tome) && iscultist(user))
+ anchored = !anchored
+ user << "You [anchored ? "":"un"]secure \the [src] [anchored ? "to":"from"] the floor."
+ if(!anchored)
+ icon_state = "[initial(icon_state)]_off"
+ else
+ icon_state = initial(icon_state)
+ else
+ return ..()
+
/obj/structure/cult/proc/getETA()
var/time = (cooldowntime - world.time)/600
var/eta = "[round(time, 1)] minutes"
@@ -28,6 +40,9 @@
if(!iscultist(user))
user << "You're pretty sure you know exactly what this is used for and you can't seem to touch it."
return
+ if(!anchored)
+ user << "You need to anchor [src] to the floor with a tome first."
+ return
if(cooldowntime > world.time)
user << "The magic in [src] is weak, it will be ready to use again in [getETA()]."
return
@@ -40,7 +55,7 @@
pickedtype = /obj/item/clothing/glasses/night/cultblind
if("Flask of Unholy Water")
pickedtype = /obj/item/weapon/reagent_containers/food/drinks/bottle/unholywater
- if(pickedtype && Adjacent(user) && src && !qdeleted(src) && !user.incapacitated() && cooldowntime <= world.time)
+ if(src && !qdeleted(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time)
cooldowntime = world.time + 2400
var/obj/item/N = new pickedtype(get_turf(src))
user << "You kneel before the altar and your faith is rewarded with an [N]!"
@@ -56,6 +71,9 @@
if(!iscultist(user))
user << "The heat radiating from [src] pushes you back."
return
+ if(!anchored)
+ user << "You need to anchor [src] to the floor with a tome first."
+ return
if(cooldowntime > world.time)
user << "The magic in [src] is weak, it will be ready to use again in [getETA()]."
return
@@ -68,7 +86,7 @@
pickedtype = /obj/item/clothing/suit/hooded/cultrobes/berserker
if("Nar-Sien Hardsuit")
pickedtype = /obj/item/clothing/suit/space/hardsuit/cult
- if(pickedtype && Adjacent(user) && src && !qdeleted(src) && !user.incapacitated() && cooldowntime <= world.time)
+ if(src && !qdeleted(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time)
cooldowntime = world.time + 2400
var/obj/item/N = new pickedtype(get_turf(src))
user << "You work the forge as dark knowledge guides your hands, creating [N]!"
@@ -79,44 +97,49 @@
desc = "A floating crystal that slowly heals those faithful to Nar'Sie."
icon_state = "pylon"
luminosity = 5
- var/heal_delay = 50
- var/last_shot = 0
- var/list/corruption = list()
+ var/heal_delay = 25
+ var/last_heal = 0
+ var/corrupt_delay = 50
+ var/last_corrupt = 0
/obj/structure/cult/pylon/New()
- SSobj.processing |= src
- corruption += get_turf(src)
- for(var/i in 1 to 5)
- for(var/t in corruption)
- var/turf/T = t
- corruption |= T.GetAtmosAdjacentTurfs()
+ SSfastprocess.processing |= src
..()
/obj/structure/cult/pylon/Destroy()
- SSobj.processing.Remove(src)
+ SSfastprocess.processing.Remove(src)
return ..()
/obj/structure/cult/pylon/process()
- if((last_shot + heal_delay) <= world.time)
- last_shot = world.time
+ if(!anchored)
+ return
+ if(last_heal <= world.time)
+ last_heal = world.time + heal_delay
for(var/mob/living/L in range(5, src))
- if(iscultist(L))
- var/mob/living/carbon/human/H = L
- if(istype(H))
- L.adjustBruteLoss(-1, 0)
- L.adjustFireLoss(-1, 0)
- L.updatehealth()
- if(istype(L, /mob/living/simple_animal/hostile/construct))
- var/mob/living/simple_animal/M = L
- if(M.health < M.maxHealth)
- M.adjustHealth(-2)
- if(corruption.len)
- var/turf/T = pick_n_take(corruption)
- corruption -= T
- if(istype(T, /turf/open/floor/engine/cult) || istype(T, /turf/open/space) || istype(T, /turf/open/floor/plating/lava))
- return
+ if(iscultist(L) || istype(L, /mob/living/simple_animal/shade) || istype(L, /mob/living/simple_animal/hostile/construct))
+ if(L.health != L.maxHealth)
+ PoolOrNew(/obj/effect/overlay/temp/heal, list(get_turf(src), "#960000"))
+ if(ishuman(L))
+ L.adjustBruteLoss(-1, 0)
+ L.adjustFireLoss(-1, 0)
+ L.updatehealth()
+ if(istype(L, /mob/living/simple_animal/shade) || istype(L, /mob/living/simple_animal/hostile/construct))
+ var/mob/living/simple_animal/M = L
+ if(M.health < M.maxHealth)
+ M.adjustHealth(-1)
+ CHECK_TICK
+ if(last_corrupt <= world.time)
+ var/list/validturfs = list()
+ for(var/T in circleviewturfs(src, 5))
+ if(istype(T, /turf/closed) || istype(T, /turf/open/floor/engine/cult) || istype(T, /turf/open/space) || istype(T, /turf/open/floor/plating/lava))
+ continue
+ validturfs |= T
+ var/turf/T = safepick(validturfs)
+ if(T)
T.ChangeTurf(/turf/open/floor/engine/cult)
-
+ last_corrupt = world.time + corrupt_delay
+ else
+ last_corrupt = world.time + corrupt_delay*2
/obj/structure/cult/tome
name = "archives"
@@ -128,6 +151,9 @@
if(!iscultist(user))
user << "All of these books seem to be gibberish."
return
+ if(!anchored)
+ user << "You need to anchor [src] to the floor with a tome first."
+ return
if(cooldowntime > world.time)
user << "The magic in [src] is weak, it will be ready to use again in [getETA()]."
return
@@ -140,7 +166,7 @@
pickedtype = /obj/item/device/shuttle_curse
if("Veil Shifter")
pickedtype = /obj/item/device/cult_shift
- if(pickedtype && Adjacent(user) && src && !qdeleted(src) && !user.incapacitated() && cooldowntime <= world.time)
+ if(src && !qdeleted(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time)
cooldowntime = world.time + 2400
var/obj/item/N = new pickedtype(get_turf(src))
user << "You summon [N] from the archives!"
diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm
index ecd8c75aa6e..de7f5cb0a92 100644
--- a/code/game/gamemodes/cult/ritual.dm
+++ b/code/game/gamemodes/cult/ritual.dm
@@ -17,6 +17,7 @@ This file contains the arcane tome files.
..()
if(iscultist(user) || user.stat == DEAD)
user << "The scriptures of the Geometer. Allows the scribing of runes and access to the knowledge archives of the cult of Nar-Sie."
+ user << "Striking a cult structure will unanchor or reanchor it."
user << "Striking another cultist with it will purge holy water from them."
user << "Striking a noncultist, however, will sear their flesh."
@@ -154,7 +155,7 @@ This file contains the arcane tome files.
text += "Juggernaut
The Juggernaut is a slow, but durable, melee attacker which can produce temporary forcewalls. It will also reflect most lethal energy weapons.
"
- text += "Artificer
The Artificer is a weak and fragile construct, able to heal other constructs, produce more soulstones and construct shells, \
+ text += "Artificer
The Artificer is a weak and fragile construct, able to heal other constructs, shades, or itself, produce more soulstones and construct shells, \
construct fortifying cult walls and flooring, and finally, it can release a few indiscriminate stunning missiles.
"
text += "Harvester
If you see one, know that you have done all you can and your life is void.
"
diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm
index 44e546a9f76..530af072747 100644
--- a/code/game/gamemodes/cult/runes.dm
+++ b/code/game/gamemodes/cult/runes.dm
@@ -203,7 +203,7 @@ structure_check() searches for nearby cultist structures required for the invoca
log_game("Talisman Creation rune failed - already in use")
return
var/obj/item/weapon/paper/paper_to_imbue = pick(papers_on_rune)
- for(var/I in subtypesof(/obj/item/weapon/paper/talisman) - /obj/item/weapon/paper/talisman/malformed - /obj/item/weapon/paper/talisman/supply)
+ for(var/I in subtypesof(/obj/item/weapon/paper/talisman) - /obj/item/weapon/paper/talisman/malformed - /obj/item/weapon/paper/talisman/supply - /obj/item/weapon/paper/talisman/supply/weak)
var/obj/item/weapon/paper/talisman/J = I
var/talisman_cult_name = initial(J.cultist_name)
if(talisman_cult_name)
@@ -534,40 +534,29 @@ var/list/teleport_runes = list()
var/mob/living/user = invokers[1]
if(rune_in_use)
return
- for(var/mob/living/M in orange(1,src))
- if(M.stat == DEAD)
- potential_sacrifice_mobs.Add(M)
+ for(var/mob/living/M in orange(1,T))
+ if(M.stat == DEAD && !iscultist(M))
+ potential_sacrifice_mobs |= M
if(!potential_sacrifice_mobs.len)
user << "There are no eligible sacrifices nearby!"
- log_game("Raise Dead rune failed - no catalyst corpse")
- return
- mob_to_sacrifice = input(user, "Choose a corpse to sacrifice.", "Corpse to Sacrifice") as null|anything in potential_sacrifice_mobs
- if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated() || !mob_to_revive || !mob_to_sacrifice || rune_in_use)
+ log_game("Raise Dead rune failed - no catalyst corpses")
+ fail_invoke()
return
for(var/mob/living/M in T.contents)
if(M.stat == DEAD)
- potential_revive_mobs.Add(M)
+ potential_revive_mobs |= M
if(!potential_revive_mobs.len)
user << "There is no eligible revival target on the rune!"
- log_game("Raise Dead rune failed - no corpse to revived")
+ log_game("Raise Dead rune failed - no corpses to revive")
+ fail_invoke()
+ return
+ mob_to_sacrifice = input(user, "Choose a corpse to sacrifice.", "Corpse to Sacrifice") as null|anything in potential_sacrifice_mobs
+ if(!src || qdeleted(src) || rune_in_use || !validness_checks(mob_to_sacrifice, user, 1))
return
mob_to_revive = input(user, "Choose a corpse to revive.", "Corpse to Revive") as null|anything in potential_revive_mobs
- if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated() || rune_in_use)
+ if(!src || qdeleted(src) || rune_in_use || !validness_checks(mob_to_sacrifice, user, 1))
return
- if(!in_range(mob_to_sacrifice,src))
- user << "The sacrificial target has been moved!"
- fail_invoke()
- log_game("Raise Dead rune failed - catalyst corpse moved")
- return
- if(!(mob_to_revive in T.contents))
- user << "The corpse to revive has been moved!"
- fail_invoke()
- log_game("Raise Dead rune failed - revival target moved")
- return
- if(mob_to_sacrifice.stat != DEAD)
- user << "The sacrificial target must be dead!"
- fail_invoke()
- log_game("Raise Dead rune failed - catalyst corpse is not dead")
+ if(!validness_checks(mob_to_revive, user, 0))
return
rune_in_use = 1
if(user.name == "Herbert West")
@@ -579,19 +568,47 @@ var/list/teleport_runes = list()
mob_to_revive.Beam(mob_to_sacrifice,icon_state="sendbeam",icon='icons/effects/effects.dmi',time=20)
sleep(20)
if(!mob_to_sacrifice || !in_range(mob_to_sacrifice, src))
- mob_to_sacrifice.visible_message("[mob_to_sacrifice] disintegrates into a pile of bones")
+ rune_in_use = 0
return
- mob_to_sacrifice.dust()
if(!mob_to_revive || mob_to_revive.stat != DEAD)
visible_message("The glowing tendril snaps against the rune with a shocking crack.")
rune_in_use = 0
+ fail_invoke()
return
- mob_to_revive.revive() //This does remove disabilities and such, but the rune might actually see some use because of it!
+ mob_to_sacrifice.visible_message("[mob_to_sacrifice] disintegrates into a pile of bones.")
+ mob_to_sacrifice.dust()
+ mob_to_revive.revive(1, 1) //This does remove disabilities and such, but the rune might actually see some use because of it!
mob_to_revive << "\"PASNAR SAVRAE YAM'TOTH. Arise.\""
mob_to_revive.visible_message("[mob_to_revive] draws in a huge breath, red light shining from their eyes.", \
"You awaken suddenly from the void. You're alive!")
rune_in_use = 0
+/obj/effect/rune/raise_dead/proc/validness_checks(mob/living/target_mob, mob/living/user, saccing)
+ var/turf/T = get_turf(src)
+ if(!user)
+ return 0
+ if(!Adjacent(user) || user.incapacitated())
+ return 0
+ if(!target_mob)
+ fail_invoke()
+ return 0
+ if(saccing)
+ if(!in_range(target_mob, src))
+ user << "The sacrificial target has been moved!"
+ fail_invoke()
+ log_game("Raise Dead rune failed - catalyst corpse moved")
+ return 0
+ if(target_mob.stat != DEAD)
+ user << "The sacrificial target must be dead!"
+ fail_invoke()
+ log_game("Raise Dead rune failed - catalyst corpse is not dead")
+ return 0
+ else if(!(target_mob in T.contents))
+ user << "The corpse to revive has been moved!"
+ fail_invoke()
+ log_game("Raise Dead rune failed - revival target moved")
+ return 0
+ return 1
/obj/effect/rune/raise_dead/fail_invoke()
..()
@@ -783,8 +800,9 @@ var/list/teleport_runes = list()
/obj/effect/rune/blood_boil/invoke(var/list/invokers)
..()
+ var/turf/T = get_turf(src)
visible_message("[src] briefly bubbles before exploding!")
- for(var/mob/living/carbon/C in viewers(src))
+ for(var/mob/living/carbon/C in viewers(T))
if(!iscultist(C))
var/obj/item/weapon/nullrod/N = C.null_rod_check()
if(N)
@@ -797,8 +815,8 @@ var/list/teleport_runes = list()
var/mob/living/L = M
L.apply_damage(15, BRUTE, pick("l_arm", "r_arm"))
L << "[src] saps your strength!"
- explosion(get_turf(src), -1, 0, 1, 5)
qdel(src)
+ explosion(T, -1, 0, 1, 5)
//Rite of Spectral Manifestation: Summons a ghost on top of the rune as a cultist human with no items. User must stand on the rune at all times, and takes damage for each summoned ghost.
diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm
index b43ee71186c..8628b91fb87 100644
--- a/code/game/gamemodes/gang/gang.dm
+++ b/code/game/gamemodes/gang/gang.dm
@@ -263,8 +263,10 @@ var/list/gang_colors_pool = list("red","orange","yellow","green","blue","purple"
if(gangs.len)
if(!winner)
world << "The station was [station_was_nuked ? "destroyed!" : "evacuated before a gang could claim it! The station wins!"]
"
+ feedback_set_details("round_end_result","win - gang domination complete")
else
world << "The [winner.name] Gang successfully performed a hostile takeover of the station!
"
+ feedback_set_details("round_end_result","loss - gangs failed takeover")
for(var/datum/gang/G in gangs)
var/text = "The [G.name] Gang was [winner==G ? "victorious" : "defeated"] with [round((G.territory.len/start_state.num_territories)*100, 1)]% control of the station!"
diff --git a/code/game/gamemodes/miniantags/abduction/abduction.dm b/code/game/gamemodes/miniantags/abduction/abduction.dm
index 3e602b824e4..c5f3dfa2a70 100644
--- a/code/game/gamemodes/miniantags/abduction/abduction.dm
+++ b/code/game/gamemodes/miniantags/abduction/abduction.dm
@@ -236,8 +236,8 @@
console.vest = V
V.flags |= NODROP
agent.equip_to_slot_or_del(V, slot_wear_suit)
- agent.equip_to_slot_or_del(new /obj/item/weapon/abductor_baton(agent), slot_in_backpack)
- agent.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/alien(agent), slot_belt)
+ agent.equip_to_slot_or_del(new /obj/item/weapon/abductor_baton(agent), slot_belt)
+ agent.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/alien(agent), slot_in_backpack)
agent.equip_to_slot_or_del(new /obj/item/device/abductor/silencer(agent), slot_in_backpack)
agent.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/abductor(agent), slot_head)
diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
index 914dfa1c9d0..989c076a27f 100644
--- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
+++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
@@ -112,19 +112,11 @@
if(combat_cooldown==initial(combat_cooldown))
SSobj.processing.Remove(src)
-/obj/item/device/abductor/proc/IsAbductor(user)
- if(ishuman(user))
- var/mob/living/carbon/human/H = user
- if(H.dna.species.id != "abductor")
- return 0
- return 1
- return 0
-
/obj/item/device/abductor/proc/AbductorCheck(user)
- if(IsAbductor(user))
- return 1
+ if(isabductor(user))
+ return TRUE
user << "You can't figure how this works!"
- return 0
+ return FALSE
/obj/item/device/abductor/proc/ScientistCheck(user)
var/mob/living/carbon/human/H = user
@@ -194,7 +186,7 @@
user << "This specimen is already marked!"
return
if(istype(target,/mob/living/carbon/human))
- if(IsAbductor(target))
+ if(isabductor(target))
marked = target
user << "You mark [target] for future retrieval."
else
@@ -304,27 +296,26 @@
break
return console
-
-/obj/item/device/firing_pin/alien
+/obj/item/device/firing_pin/abductor
name = "alien firing pin"
- desc = "An odd device that resembles a firing pin."
- fail_message = "UNAUTHORIZED -- UNAUTHORIZED"
+ icon_state = "firing_pin_ayy"
+ desc = "This firing pin is slimy and warm; you can swear you feel it \
+ constantly trying to mentally probe you."
+ fail_message = "\
+ Firing error, please contact Command."
-/obj/item/device/firing_pin/alien/pin_auth(mob/living/user)
- if(ishuman(user))
- var/mob/living/carbon/human/H = user
- if(H.dna.species.id != "abductor")
- return 0
- return 1
+/obj/item/device/firing_pin/abductor/pin_auth(mob/living/user)
+ . = isabductor(user)
/obj/item/weapon/gun/energy/alien
name = "alien pistol"
desc = "A complicated gun that fires bursts of high-intensity radiation."
ammo_type = list(/obj/item/ammo_casing/energy/declone)
- pin = /obj/item/device/firing_pin/alien
+ pin = /obj/item/device/firing_pin/abductor
icon_state = "alienpistol"
item_state = "alienpistol"
origin_tech = "combat=5;materials=4;powerstorage=3;abductor=3"
+ trigger_guard = TRIGGER_GUARD_ALLOW_ALL
/obj/item/weapon/paper/abductor
name = "Dissection Guide"
@@ -402,16 +393,8 @@ Congratulations! You are now trained for xenobiology research!"}
icon_state = "wonderprodProbe"
item_state = "wonderprodProbe"
-/obj/item/weapon/abductor_baton/proc/IsAbductor(mob/living/user)
- if(!ishuman(user))
- return 0
- var/mob/living/carbon/human/H = user
- if(H.dna.species.id != "abductor")
- return 0
- return 1
-
/obj/item/weapon/abductor_baton/attack(mob/target, mob/living/user)
- if(!IsAbductor(user))
+ if(!isabductor(user))
return
if(isrobot(target))
@@ -689,4 +672,4 @@ Congratulations! You are now trained for xenobiology research!"}
else if(istype(W, /obj/item/stack/sheet))
return // no material modding
else
- ..()
\ No newline at end of file
+ ..()
diff --git a/code/game/gamemodes/miniantags/abduction/machinery/camera.dm b/code/game/gamemodes/miniantags/abduction/machinery/camera.dm
index 2a69da0950a..9c06517bd95 100644
--- a/code/game/gamemodes/miniantags/abduction/machinery/camera.dm
+++ b/code/game/gamemodes/miniantags/abduction/machinery/camera.dm
@@ -45,15 +45,12 @@
set_droppoint_action.target = console
set_droppoint_action.Grant(user)
-/obj/machinery/computer/camera_advanced/abductor/proc/IsAbductor(mob/living/carbon/human/H)
- return H.dna.species.id == "abductor"
-
/obj/machinery/computer/camera_advanced/abductor/proc/IsScientist(mob/living/carbon/human/H)
var/datum/species/abductor/S = H.dna.species
return S.scientist
/obj/machinery/computer/camera_advanced/abductor/attack_hand(mob/user)
- if(!iscarbon(user) || !IsAbductor(user))
+ if(!isabductor(user))
return
return ..()
@@ -154,4 +151,4 @@
var/mob/camera/aiEye/remote/remote_eye = C.remote_control
var/obj/machinery/abductor/console/console = target
- console.SetDroppoint(remote_eye.loc,owner)
\ No newline at end of file
+ console.SetDroppoint(remote_eye.loc,owner)
diff --git a/code/game/gamemodes/miniantags/abduction/machinery/console.dm b/code/game/gamemodes/miniantags/abduction/machinery/console.dm
index a2f029725a3..de3a3b468ea 100644
--- a/code/game/gamemodes/miniantags/abduction/machinery/console.dm
+++ b/code/game/gamemodes/miniantags/abduction/machinery/console.dm
@@ -3,9 +3,6 @@
/obj/machinery/abductor
var/team = 0
-/obj/machinery/abductor/proc/IsAbductor(mob/living/carbon/human/H)
- return H.dna.species.id == "abductor"
-
/obj/machinery/abductor/proc/IsAgent(mob/living/carbon/human/H)
if(H.dna.species.id == "abductor")
var/datum/species/abductor/S = H.dna.species
@@ -37,7 +34,7 @@
/obj/machinery/abductor/console/attack_hand(mob/user)
if(..())
return
- if(!IsAbductor(user))
+ if(!isabductor(user))
user << "You start mashing alien buttons at random!"
if(do_after(user,100, target = src))
TeleporterSend()
@@ -208,4 +205,4 @@
new item(src.loc)
else
say("Insufficent data!")
- return
\ No newline at end of file
+ return
diff --git a/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm b/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm
index dc1a5ec85f7..09f63616766 100644
--- a/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm
+++ b/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm
@@ -25,7 +25,7 @@
/obj/machinery/abductor/gland_dispenser/attack_hand(mob/user)
if(..())
return
- if(!IsAbductor(user))
+ if(!isabductor(user))
return
user.set_machine(src)
var/box_css = {"
@@ -82,4 +82,4 @@
if(amounts[count]>0)
amounts[count]--
var/T = gland_types[count]
- new T(get_turf(src))
\ No newline at end of file
+ new T(get_turf(src))
diff --git a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm
index 19fbe24f92d..7b32758a6dd 100644
--- a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm
+++ b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm
@@ -15,7 +15,7 @@
/obj/machinery/abductor/experiment/MouseDrop_T(mob/target, mob/user)
if(user.stat || user.lying || !Adjacent(user) || !target.Adjacent(user) || !ishuman(target))
return
- if(IsAbductor(target))
+ if(isabductor(target))
return
close_machine(target)
@@ -30,8 +30,8 @@
..()
/obj/machinery/abductor/experiment/close_machine(mob/target)
- for(var/mob/living/carbon/C in loc)
- if(IsAbductor(C))
+ for(var/A in loc)
+ if(isabductor(A))
return
if(state_open && !panel_open)
..(target)
diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
index b0509ca1b28..0e0f23a3d0f 100644
--- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
+++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
@@ -90,6 +90,7 @@
faction = list("swarmer")
AIStatus = AI_OFF
pass_flags = PASSTABLE
+ mob_size = MOB_SIZE_TINY
ventcrawler = 2
ranged = 1
projectiletype = /obj/item/projectile/beam/disabler
@@ -551,4 +552,3 @@
M << rendered
if(M in dead_mob_list)
M << "(F) [rendered]"
-
diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm
index 724311e6a54..6e2d45a1f1a 100644
--- a/code/game/machinery/camera/camera.dm
+++ b/code/game/machinery/camera/camera.dm
@@ -142,10 +142,12 @@
if(istype(W, /obj/item/weapon/wirecutters)) //enable/disable the camera
toggle_cam(user, 1)
health = initial(health) //this is a pretty simplistic way to heal the camera, but there's no reason for this to be complex.
+ return
else if(istype(W, /obj/item/device/multitool)) //change focus
setViewRange((view_range == initial(view_range)) ? short_range : initial(view_range))
user << "You [(view_range == initial(view_range)) ? "restore" : "mess up"] the camera's focus."
+ return
else if(istype(W, /obj/item/weapon/weldingtool))
if(weld(W, user))
@@ -157,7 +159,7 @@
assembly.dir = src.dir
assembly = null
qdel(src)
- return
+ return
else if(istype(W, /obj/item/device/analyzer))
if(!isXRay())
diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm
index 836b1fc81d0..04fe6350d4c 100644
--- a/code/game/machinery/doors/airlock_types.dm
+++ b/code/game/machinery/doors/airlock_types.dm
@@ -321,11 +321,15 @@
hackProof = 1
aiControlDisabled = 1
var/openingoverlaytype = /obj/effect/overlay/temp/cult/door
+ var/friendly = FALSE
/obj/machinery/door/airlock/cult/allowed(mob/M)
if(!density)
return 1
- if(iscultist(M) || istype(M, /mob/living/simple_animal/shade) || istype(M, /mob/living/simple_animal/hostile/construct))
+ if(friendly || \
+ iscultist(M) || \
+ istype(M, /mob/living/simple_animal/shade) || \
+ istype(M, /mob/living/simple_animal/hostile/construct))
PoolOrNew(openingoverlaytype, src.loc)
return 1
else
@@ -345,22 +349,34 @@
/obj/machinery/door/airlock/cult/narsie_act()
return
+/obj/machinery/door/airlock/cult/friendly
+ friendly = TRUE
+
/obj/machinery/door/airlock/cult/glass
doortype = /obj/structure/door_assembly/door_assembly_cult/glass
glass = 1
opacity = 0
+/obj/machinery/door/airlock/cult/glass/friendly
+ friendly = TRUE
+
/obj/machinery/door/airlock/cult/unruned
icon = 'icons/obj/doors/airlocks/cult/unruned/cult.dmi'
overlays_file = 'icons/obj/doors/airlocks/cult/unruned/overlays.dmi'
doortype = /obj/structure/door_assembly/door_assembly_cult/unruned
openingoverlaytype = /obj/effect/overlay/temp/cult/door/unruned
+/obj/machinery/door/airlock/cult/unruned/friendly
+ friendly = TRUE
+
/obj/machinery/door/airlock/cult/unruned/glass
doortype = /obj/structure/door_assembly/door_assembly_cult/unruned/glass
glass = 1
opacity = 0
+/obj/machinery/door/airlock/cult/unruned/glass/friendly
+ friendly = TRUE
+
//////////////////////////////////
/*
Misc Airlocks
diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm
index a37a0e4d14e..319ce51d949 100644
--- a/code/game/machinery/recycler.dm
+++ b/code/game/machinery/recycler.dm
@@ -8,13 +8,15 @@ var/const/SAFETY_COOLDOWN = 100
layer = MOB_LAYER+1 // Overhead
anchored = 1
density = 1
- var/safety_mode = 0 // Temporality stops the machine if it detects a mob
- var/grinding = 0
+ var/safety_mode = FALSE // Temporarily stops machine if it detects a mob
var/icon_name = "grinder-o"
var/blood = 0
var/eat_dir = WEST
var/amount_produced = 1
var/datum/material_container/materials
+ var/crush_damage = 1000
+ var/eat_victim_items = TRUE
+ var/item_recycle_sound = 'sound/items/Welder.ogg'
/obj/machinery/recycler/New()
..()
@@ -72,9 +74,9 @@ var/const/SAFETY_COOLDOWN = 100
/obj/machinery/recycler/emag_act(mob/user)
if(!emagged)
- emagged = 1
+ emagged = TRUE
if(safety_mode)
- safety_mode = 0
+ safety_mode = FALSE
update_icon()
playsound(src.loc, "sparks", 75, 1, -1)
user << "You use the cryptographic sequencer on the [src.name]."
@@ -83,7 +85,7 @@ var/const/SAFETY_COOLDOWN = 100
..()
var/is_powered = !(stat & (BROKEN|NOPOWER))
if(safety_mode)
- is_powered = 0
+ is_powered = FALSE
icon_state = icon_name + "[is_powered]" + "[(blood ? "bld" : "")]" // add the blood tag at the end
// This is purely for admin possession !FUN!.
@@ -104,24 +106,34 @@ var/const/SAFETY_COOLDOWN = 100
var/move_dir = get_dir(loc, AM.loc)
if(move_dir == eat_dir)
+ eat(AM)
+
+/obj/machinery/recycler/proc/eat(atom/AM0, sound=TRUE)
+ var/list/to_eat = list(AM0)
+ if(istype(AM0, /obj/item))
+ to_eat += AM0.GetAllContents()
+ var/items_recycled = 0
+
+ for(var/i in to_eat)
+ var/atom/movable/AM = i
if(isliving(AM))
if(emagged)
- eat(AM)
+ crush_living(AM)
else
- stop(AM)
+ emergency_stop(AM)
else if(istype(AM, /obj/item))
- recycle(AM)
- else // Can't recycle
+ recycle_item(AM)
+ items_recycled++
+ else
playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
AM.loc = src.loc
-/obj/machinery/recycler/proc/recycle(obj/item/I, sound = 1)
- I.loc = src.loc
- if(!istype(I))
- return
+ if(items_recycled && sound)
+ playsound(src.loc, item_recycle_sound, 50, 1)
+
+/obj/machinery/recycler/proc/recycle_item(obj/item/I)
+ I.loc = src.loc
- if(sound)
- playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
var/material_amount = materials.get_item_material_amount(I)
if(!material_amount)
qdel(I)
@@ -131,18 +143,18 @@ var/const/SAFETY_COOLDOWN = 100
materials.retrieve_all()
-/obj/machinery/recycler/proc/stop(mob/living/L)
+/obj/machinery/recycler/proc/emergency_stop(mob/living/L)
playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
- safety_mode = 1
+ safety_mode = TRUE
update_icon()
L.loc = src.loc
spawn(SAFETY_COOLDOWN)
playsound(src.loc, 'sound/machines/ping.ogg', 50, 0)
- safety_mode = 0
+ safety_mode = FALSE
update_icon()
-/obj/machinery/recycler/proc/eat(mob/living/L)
+/obj/machinery/recycler/proc/crush_living(mob/living/L)
L.loc = src.loc
@@ -151,22 +163,23 @@ var/const/SAFETY_COOLDOWN = 100
else
playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
- var/gib = 1
+ var/gib = TRUE
// By default, the emagged recycler will gib all non-carbons. (human simple animal mobs don't count)
if(iscarbon(L))
- gib = 0
+ gib = FALSE
if(L.stat == CONSCIOUS)
L.say("ARRRRRRRRRRRGH!!!")
add_blood(L)
if(!blood && !issilicon(L))
- blood = 1
+ blood = TRUE
update_icon()
- // Remove and recycle the equipped items.
- for(var/obj/item/I in L.get_equipped_items())
- if(L.unEquip(I))
- recycle(I, 0)
+ // Remove and recycle the equipped items
+ if(eat_victim_items)
+ for(var/obj/item/I in L.get_equipped_items())
+ if(L.unEquip(I))
+ eat(I, sound=FALSE)
// Instantly lie down, also go unconscious from the pain, before you die.
L.Paralyse(5)
@@ -175,9 +188,13 @@ var/const/SAFETY_COOLDOWN = 100
if(gib || emagged == 2)
L.gib()
else if(emagged == 1)
- L.adjustBruteLoss(1000)
-
+ L.adjustBruteLoss(crush_damage)
+/obj/machinery/recycler/deathtrap
+ name = "dangerous old crusher"
+ emagged = TRUE
+ crush_damage = 120
+ flags = NODECONSTRUCT
/obj/item/weapon/paper/recycler
name = "paper - 'garbage duty instructions'"
diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm
index ed76ccd8768..1ee601cc453 100644
--- a/code/game/machinery/spaceheater.dm
+++ b/code/game/machinery/spaceheater.dm
@@ -224,6 +224,7 @@
if(target == "input")
target = input("New target temperature:", name, round(targetTemperature - T0C, 1)) as num|null
if(!isnull(target) && !..())
+ target += T0C
. = TRUE
else if(adjust)
target = targetTemperature + adjust
diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm
index f7335295aef..eb062334719 100644
--- a/code/game/machinery/washing_machine.dm
+++ b/code/game/machinery/washing_machine.dm
@@ -2,21 +2,15 @@
name = "washing machine"
desc = "Gets rid of those pesky bloodstains, or your money back!"
icon = 'icons/obj/machines/washing_machine.dmi'
- icon_state = "wm_10"
+ icon_state = "wm_1_0"
density = 1
anchored = 1
- var/state = 1
- //1 = empty, open door
- //2 = empty, closed door
- //3 = full, open door
- //4 = full, closed door
- //5 = running
- //6 = blood, open door
- //7 = blood, closed door
- //8 = blood, running
- var/gibs_ready = 0
- var/obj/crayon
- var/obj/paper
+ state_open = 1
+ var/busy = 0
+ var/bloody_mess = 0
+ var/has_corgi = 0
+ var/obj/item/color_source
+ var/max_wash_capacity = 5
/obj/machinery/washing_machine/examine(mob/user)
..()
@@ -26,286 +20,227 @@
if(!user.canUseTopic(src))
return
- if( state != 4 )
- usr << "The washing machine cannot run in this state."
+ if(busy)
return
- if( locate(/mob,contents) )
- state = 8
- else
- state = 5
+ if(state_open)
+ user << "Close the door first"
+ return
+
+ if(bloody_mess)
+ user << "[src] must be cleaned up first."
+ return
+
+ if(has_corgi)
+ bloody_mess = 1
+
+ busy = 1
update_icon()
sleep(200)
- for(var/atom/A in contents)
- A.clean_blood()
+ wash_cycle()
- //Tanning!
- for(var/obj/item/stack/sheet/hairlesshide/HH in contents)
- var/obj/item/stack/sheet/wetleather/WL = new(src)
- WL.amount = HH.amount
- qdel(HH)
-
- //Corgi costume says goodbye
- for(var/obj/item/clothing/suit/hooded/ian_costume/IC in contents)
- new /obj/item/weapon/reagent_containers/food/snacks/meat/slab/corgi(src)
- qdel(IC)
-
- for(var/obj/item/weapon/paper/P in contents)
- if(crayon)
- var/dye_color
- if(istype(crayon,/obj/item/toy/crayon))
- var/obj/item/toy/crayon/CR = crayon
- dye_color = CR.paint_color
- if(dye_color)
- P.color = dye_color
- qdel(crayon)
- crayon = null
-
- if(crayon)
- var/wash_color
- if(istype(crayon,/obj/item/toy/crayon))
- var/obj/item/toy/crayon/CR = crayon
- wash_color = CR.paint_color
- else if(istype(crayon,/obj/item/weapon/stamp))
- var/obj/item/weapon/stamp/ST = crayon
- wash_color = ST.item_color
-
-
- if(wash_color)
- var/new_jumpsuit_icon_state = ""
- var/new_jumpsuit_item_state = ""
- var/new_jumpsuit_name = ""
- var/new_can_adjust
- var/new_glove_icon_state = ""
- var/new_glove_item_state = ""
- var/new_glove_name = ""
- var/new_shoe_icon_state = ""
- var/new_shoe_name = ""
- var/new_sheet_icon_state = ""
- var/new_sheet_name = ""
- var/new_softcap_icon_state = ""
- var/new_softcap_name = ""
- var/new_desc = "The colors are a bit dodgy."
- for(var/T in typesof(/obj/item/clothing/under/color))
- var/obj/item/clothing/under/color/J = new T
- //world << "DEBUG: [wash_color] == [J.item_color]"
- if(wash_color == J.item_color)
- new_jumpsuit_icon_state = J.icon_state
- new_jumpsuit_item_state = J.item_state
- new_jumpsuit_name = J.name
- new_can_adjust = J.can_adjust
- qdel(J)
- break
- qdel(J)
- for(var/T in typesof(/obj/item/clothing/gloves/color))
- var/obj/item/clothing/gloves/color/G = new T
- if(wash_color == G.item_color)
- new_glove_icon_state = G.icon_state
- new_glove_item_state = G.item_state
- new_glove_name = G.name
- qdel(G)
- break
- qdel(G)
- for(var/T in typesof(/obj/item/clothing/shoes/sneakers))
- var/obj/item/clothing/shoes/sneakers/S = new T
- if(wash_color == S.item_color)
- new_shoe_icon_state = S.icon_state
- new_shoe_name = S.name
- qdel(S)
- break
- qdel(S)
- for(var/T in typesof(/obj/item/weapon/bedsheet))
- var/obj/item/weapon/bedsheet/B = new T
- if(wash_color == B.item_color)
- new_sheet_icon_state = B.icon_state
- new_sheet_name = B.name
- qdel(B)
- break
- qdel(B)
- for(var/T in typesof(/obj/item/clothing/head/soft))
- var/obj/item/clothing/head/soft/H = new T
- if(wash_color == H.item_color)
- new_softcap_icon_state = H.icon_state
- new_softcap_name = H.name
- qdel(H)
- break
- qdel(H)
- if(new_jumpsuit_icon_state && new_jumpsuit_item_state && new_jumpsuit_name)
- for(var/obj/item/clothing/under/color/J in contents)
- J.item_state = new_jumpsuit_item_state
- J.icon_state = new_jumpsuit_icon_state
- J.item_color = wash_color
- J.name = new_jumpsuit_name
- J.desc = new_desc
- J.suit_color = wash_color
- J.can_adjust = new_can_adjust
- if(new_glove_icon_state && new_glove_item_state && new_glove_name)
- for(var/obj/item/clothing/gloves/color/G in contents)
- G.item_state = new_glove_item_state
- G.icon_state = new_glove_icon_state
- G.item_color = wash_color
- G.name = new_glove_name
- G.desc = new_desc
- if(new_shoe_icon_state && new_shoe_name)
- for(var/obj/item/clothing/shoes/sneakers/S in contents)
- if (S.chained == 1)
- S.chained = 0
- S.slowdown = SHOES_SLOWDOWN
- new /obj/item/weapon/restraints/handcuffs( src )
- S.icon_state = new_shoe_icon_state
- S.item_color = wash_color
- S.name = new_shoe_name
- S.desc = new_desc
- if(new_sheet_icon_state && new_sheet_name)
- for(var/obj/item/weapon/bedsheet/B in contents)
- B.icon_state = new_sheet_icon_state
- B.item_color = wash_color
- B.name = new_sheet_name
- B.desc = new_desc
- if(new_softcap_icon_state && new_softcap_name)
- for(var/obj/item/clothing/head/soft/H in contents)
- H.icon_state = new_softcap_icon_state
- H.item_color = wash_color
- H.name = new_softcap_name
- H.desc = new_desc
- qdel(crayon)
- crayon = null
+/obj/machinery/washing_machine/clean_blood()
+ ..()
+ if(!busy)
+ bloody_mess = 0
+ update_icon()
- if( locate(/mob,contents) )
- state = 7
- gibs_ready = 1
- else
- state = 4
+/obj/machinery/washing_machine/proc/wash_cycle()
+ for(var/X in contents)
+ var/atom/movable/AM = X
+ AM.clean_blood()
+ AM.machine_wash(src)
+
+ busy = 0
+ if(color_source)
+ qdel(color_source)
+ color_source = null
update_icon()
-/obj/machinery/washing_machine/verb/climb_out()
- set name = "Climb out"
- set category = "Object"
- set src in usr.loc
- sleep(20)
- if(state in list(1,3,6) )
- usr.loc = src.loc
+//what happens to this object when washed inside a washing machine
+/atom/movable/proc/machine_wash(obj/machinery/washing_machine/WM)
+ return
+
+/obj/item/stack/sheet/hairlesshide/machine_wash(obj/machinery/washing_machine/WM)
+ var/obj/item/stack/sheet/wetleather/WL = new(loc)
+ WL.amount = amount
+ qdel(src)
+
+/obj/item/clothing/suit/hooded/ian_costume/machine_wash(obj/machinery/washing_machine/WM)
+ new /obj/item/weapon/reagent_containers/food/snacks/meat/slab/corgi(loc)
+ qdel(src)
+
+/obj/item/weapon/paper/machine_wash(obj/machinery/washing_machine/WM)
+ if(WM.color_source)
+ if(istype(WM.color_source,/obj/item/toy/crayon))
+ var/obj/item/toy/crayon/CR = WM.color_source
+ color = CR.paint_color
+
+/mob/living/simple_animal/pet/dog/corgi/machine_wash(obj/machinery/washing_machine/WM)
+ gib()
+
+/obj/item/clothing/under/color/machine_wash(obj/machinery/washing_machine/WM)
+ jumpsuit_wash(WM)
+
+/obj/item/clothing/under/rank/machine_wash(obj/machinery/washing_machine/WM)
+ jumpsuit_wash(WM)
+
+/obj/item/clothing/under/proc/jumpsuit_wash(obj/machinery/washing_machine/WM)
+ if(WM.color_source)
+ var/wash_color = WM.color_source.item_color
+ var/obj/item/clothing/under/U
+ for(var/T in typesof(/obj/item/clothing/under/color))
+ var/obj/item/clothing/under/color/J = T
+ if(wash_color == initial(J.item_color))
+ U = J
+ break
+ if(!U)
+ for(var/T in typesof(/obj/item/clothing/under/rank))
+ var/obj/item/clothing/under/rank/R = T
+ if(wash_color == initial(R.item_color))
+ U = R
+ break
+ if(U)
+ item_state = initial(U.item_state)
+ icon_state = initial(U.icon_state)
+ item_color = wash_color
+ name = initial(U.name)
+ desc = "The colors are a bit dodgy."
+ can_adjust = initial(U.can_adjust)
+ if(!can_adjust && adjusted) //we deadjust the uniform if it's now unadjustable
+ toggle_jumpsuit_adjust()
+
+/obj/item/clothing/gloves/color/machine_wash(obj/machinery/washing_machine/WM)
+ if(WM.color_source)
+ var/wash_color = WM.color_source.item_color
+ for(var/T in typesof(/obj/item/clothing/gloves/color))
+ var/obj/item/clothing/gloves/color/G = T
+ if(wash_color == initial(G.item_color))
+ item_state = initial(G.item_state)
+ icon_state = initial(G.icon_state)
+ item_color = wash_color
+ name = initial(G.name)
+ desc = "The colors are a bit dodgy."
+ break
+
+/obj/item/clothing/shoes/sneakers/machine_wash(obj/machinery/washing_machine/WM)
+ if(chained)
+ chained = 0
+ slowdown = SHOES_SLOWDOWN
+ new /obj/item/weapon/restraints/handcuffs(loc)
+ if(WM.color_source)
+ var/wash_color = WM.color_source.item_color
+ for(var/T in typesof(/obj/item/clothing/shoes/sneakers))
+ var/obj/item/clothing/shoes/sneakers/S = T
+ if(wash_color == initial(S.item_color))
+ icon_state = initial(S.icon_state)
+ item_color = wash_color
+ name = initial(S.name)
+ desc = "The colors are a bit dodgy."
+ break
+
+/obj/item/weapon/bedsheet/machine_wash(obj/machinery/washing_machine/WM)
+ if(WM.color_source)
+ var/wash_color = WM.color_source.item_color
+ for(var/T in typesof(/obj/item/weapon/bedsheet))
+ var/obj/item/weapon/bedsheet/B = T
+ if(wash_color == initial(B.item_color))
+ icon_state = initial(B.icon_state)
+ item_color = wash_color
+ name = initial(B.name)
+ desc = "The colors are a bit dodgy."
+ break
+
+/obj/item/clothing/head/soft/machine_wash(obj/machinery/washing_machine/WM)
+ if(WM.color_source)
+ var/wash_color = WM.color_source.item_color
+ for(var/T in typesof(/obj/item/clothing/head/soft))
+ var/obj/item/clothing/head/soft/H = T
+ if(wash_color == initial(H.item_color))
+ icon_state = initial(H.icon_state)
+ item_color = wash_color
+ name = initial(H.name)
+ desc = "The colors are a bit dodgy."
+ break
+
+
+/obj/machinery/washing_machine/relaymove(mob/user)
+ container_resist(user)
+
+/obj/machinery/washing_machine/container_resist(mob/user)
+ if(!busy)
+ add_fingerprint(user)
+ open_machine()
+
/obj/machinery/washing_machine/update_icon()
- icon_state = "wm_[state]0"
+ overlays.Cut()
+ if(busy)
+ icon_state = "wm_running_[bloody_mess]"
+ else if(bloody_mess)
+ icon_state = "wm_[state_open]_blood"
+ else
+ var/full = contents.len ? 1 : 0
+ icon_state = "wm_[state_open]_[full]"
+ if(panel_open)
+ overlays += image(icon, icon_state = "wm_panel")
/obj/machinery/washing_machine/attackby(obj/item/weapon/W, mob/user, params)
- if(istype(W,/obj/item/toy/crayon) ||istype(W,/obj/item/weapon/stamp))
- if( state in list( 1, 3, 6 ) )
- if(!crayon)
- if(!user.drop_item())
- return
- crayon = W
- crayon.loc = src
- else
- ..()
- else
- ..()
+ if(default_deconstruction_screwdriver(user, null, null, W))
+ update_icon()
+ return
else if(istype(W,/obj/item/weapon/grab))
- if(state == 1)
+ if(state_open)
var/obj/item/weapon/grab/G = W
if(iscorgi(G.affecting))
+ has_corgi = 1
G.affecting.loc = src
qdel(G)
- state = 3
- else
- ..()
+ update_icon()
- else if(istype(W,/obj/item/stack/sheet/hairlesshide) || \
- istype(W,/obj/item/clothing/under) || \
- istype(W,/obj/item/clothing/mask) || \
- istype(W,/obj/item/clothing/head) || \
- istype(W,/obj/item/clothing/gloves) || \
- istype(W,/obj/item/clothing/shoes) || \
- istype(W,/obj/item/clothing/suit) || \
- istype(W,/obj/item/weapon/bedsheet) || \
- istype(W,/obj/item/weapon/paper))
+ else if(user.a_intent != "harm")
- //YES, it's hardcoded... saves a var/can_be_washed for every single clothing item.
- if ( istype(W,/obj/item/clothing/suit/space ) )
- user << "This item does not fit."
- return
- if ( istype(W,/obj/item/clothing/suit/syndicatefake ) )
- user << "This item does not fit."
- return
-// if ( istype(W,/obj/item/clothing/suit/powered ) )
-// user << "This item does not fit."
-// return
- if ( istype(W,/obj/item/clothing/suit/cyborg_suit ) )
- user << "This item does not fit."
- return
- if ( istype(W,/obj/item/clothing/suit/bomb_suit ) )
- user << "This item does not fit."
- return
- if ( istype(W,/obj/item/clothing/suit/armor ) )
- user << "This item does not fit."
- return
- if ( istype(W,/obj/item/clothing/suit/armor ) )
- user << "This item does not fit."
- return
- if ( istype(W,/obj/item/clothing/mask/gas ) )
- user << "This item does not fit."
- return
- if ( istype(W,/obj/item/clothing/mask/cigarette ) )
- user << "This item does not fit."
- return
- if ( istype(W,/obj/item/clothing/head/syndicatefake ) )
- user << "This item does not fit."
- return
- if ( istype(W,/obj/item/clothing/head/helmet ) )
- user << "This item does not fit."
- return
- if(W.flags & NODROP) //if "can't drop" item
- user << "\The [W] is stuck to your hand, you cannot put it in the washing machine!"
- return
+ if (!state_open)
+ user << "Open the door first!"
+ return 1
- if(contents.len < 5)
- if ( state in list(1, 3) )
- if(!user.drop_item())
- return
- W.loc = src
- state = 3
- else
- user << "You can't put the item in right now!"
- else
+ if(bloody_mess)
+ user << "[src] must be cleaned up first."
+ return 1
+
+ if(contents.len >= max_wash_capacity)
user << "The washing machine is full!"
+ return 1
+
+ if(!user.unEquip(W))
+ user << "\The [W] is stuck to your hand, you cannot put it in the washing machine!"
+ return 1
+
+ if(istype(W,/obj/item/toy/crayon) || istype(W,/obj/item/weapon/stamp))
+ color_source = W
+ W.loc = src
+ update_icon()
+
else
- ..()
- update_icon()
+ return ..()
/obj/machinery/washing_machine/attack_hand(mob/user)
- switch(state)
- if(1)
- state = 2
- if(2)
- state = 1
- for(var/atom/movable/O in contents)
- O.loc = src.loc
- if(3)
- state = 4
- if(4)
- state = 3
- for(var/atom/movable/O in contents)
- O.loc = src.loc
- crayon = null
- state = 1
- if(5)
- user << "The [src] is busy."
- if(6)
- state = 7
- if(7)
- if(gibs_ready)
- gibs_ready = 0
- if(locate(/mob,contents))
- var/mob/M = locate(/mob,contents)
- M.gib()
- for(var/atom/movable/O in contents)
- O.loc = src.loc
- crayon = null
- state = 1
+ if(busy)
+ user << "[src] is busy."
+ return
+
+ if(!state_open)
+ open_machine()
+ else
+ state_open = 0 //close the door
+ update_icon()
- update_icon()
+/obj/machinery/washing_machine/open_machine(drop = 1)
+ ..()
+ density = 1 //because machinery/open_machine() sets it to 0
+ color_source = null
+ has_corgi = 0
diff --git a/code/game/mecha/equipment/tools/mining_tools.dm b/code/game/mecha/equipment/tools/mining_tools.dm
index a43d273ac65..a5363b7795a 100644
--- a/code/game/mecha/equipment/tools/mining_tools.dm
+++ b/code/game/mecha/equipment/tools/mining_tools.dm
@@ -113,6 +113,7 @@
icon_state = "mecha_analyzer"
origin_tech = "materials=3;engineering=2"
selectable = 0
+ equip_cooldown = 30
var/scanning = 0
/obj/item/mecha_parts/mecha_equipment/mining_scanner/New()
diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm
index dfb1f8c5656..c929d74e5ca 100644
--- a/code/game/objects/effects/overlays.dm
+++ b/code/game/objects/effects/overlays.dm
@@ -43,10 +43,12 @@
icon_state = "heal"
duration = 15
-/obj/effect/overlay/temp/heal/New()
+/obj/effect/overlay/temp/heal/New(loc, colour)
..()
pixel_x = rand(-12, 12)
pixel_y = rand(-9, 0)
+ if(colour)
+ color = colour
/obj/effect/overlay/temp/explosion
name = "explosion"
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 1536d5f1f85..2574c11415c 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -578,4 +578,13 @@ obj/item/proc/item_action_slot_check(slot, mob/user)
/obj/item/proc/can_dismember()
if((sharpness || damtype == BURN) && w_class >= 3)
return 1
- return 0
\ No newline at end of file
+ return 0
+
+/obj/item/proc/open_flame()
+ var/turf/location = loc
+ if(ismob(location))
+ var/mob/M = location
+ if(M.l_hand == src || M.r_hand == src)
+ location = get_turf(M)
+ if(isturf(location))
+ location.hotspot_expose(700, 5)
diff --git a/code/game/objects/items/candle.dm b/code/game/objects/items/candle.dm
index 9a20f3b8e37..eced5d1af07 100644
--- a/code/game/objects/items/candle.dm
+++ b/code/game/objects/items/candle.dm
@@ -1,22 +1,23 @@
#define CANDLE_LUMINOSITY 2
/obj/item/candle
name = "red candle"
- desc = "a candle"
+ desc = "In Greek myth, Prometheus stole fire from the Gods and gave it to \
+ humankind. The jewelry he kept for himself."
icon = 'icons/obj/candle.dmi'
icon_state = "candle1"
item_state = "candle1"
w_class = 1
var/wax = 200
- var/lit = 0
- var/infinite = 0
- var/start_lit = 0
+ var/lit = FALSE
+ var/infinite = FALSE
+ var/start_lit = FALSE
heat = 1000
/obj/item/candle/New()
..()
if(start_lit)
// No visible message
- light(null)
+ light(show_message = FALSE)
/obj/item/candle/update_icon()
var/i
@@ -56,12 +57,13 @@
light() //honk
return
-/obj/item/candle/proc/light(flavor_text = "[usr] lights the [name].")
+/obj/item/candle/proc/light(show_message)
if(!src.lit)
- src.lit = 1
+ src.lit = TRUE
//src.damtype = "fire"
- if(flavor_text)
- usr.visible_message(flavor_text)
+ if(show_message)
+ usr.visible_message(
+ "[usr] lights the [name].")
SetLuminosity(CANDLE_LUMINOSITY)
SSobj.processing |= src
update_icon()
@@ -79,14 +81,13 @@
M.unEquip(src, 1) //src is being deleted anyway
qdel(src)
update_icon()
- if(istype(loc, /turf)) //start a fire if possible
- var/turf/T = loc
- T.hotspot_expose(700, 5)
-
+ open_flame()
/obj/item/candle/attack_self(mob/user)
if(lit)
- lit = 0
+ user.visible_message(
+ "[user] snuffs [src].")
+ lit = FALSE
update_icon()
SetLuminosity(0)
user.AddLuminosity(-CANDLE_LUMINOSITY)
@@ -110,7 +111,7 @@
/obj/item/candle/infinite
- infinite = 1
- start_lit = 1
+ infinite = TRUE
+ start_lit = TRUE
#undef CANDLE_LUMINOSITY
diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index c101d2fbb61..79848f024f5 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -1,43 +1,263 @@
+
+/*
+ * Crayons
+ */
+
+/obj/item/toy/crayon
+ name = "crayon"
+ desc = "A colourful crayon. Looks tasty. Mmmm..."
+ icon = 'icons/obj/crayons.dmi'
+ icon_state = "crayonred"
+ item_color = "red"
+ w_class = 1
+ attack_verb = list("attacked", "coloured")
+ var/paint_color = "#FF0000" //RGB
+ var/drawtype = "rune"
+ var/text_buffer = ""
+ var/list/graffiti = list("amyjon","face","matt","revolution","engie","guy","end","dwarf","uboa","body","cyka","arrow","star","poseur tag")
+ var/list/letters = list("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z")
+ var/list/numerals = list("0","1","2","3","4","5","6","7","8","9")
+ var/list/oriented = list("arrow","body") // These turn to face the same way as the drawer
+ var/uses = 30 //-1 or less for unlimited uses
+ var/instant = 0
+ var/dat
+ var/list/validSurfaces = list(/turf/open/floor)
+ var/gang = 0 //For marking territory
+ var/edible = 1
+
+/obj/item/toy/crayon/suicide_act(mob/user)
+ user.visible_message("[user] is jamming the [src.name] up \his nose and into \his brain. It looks like \he's trying to commit suicide.")
+ return (BRUTELOSS|OXYLOSS)
+
+/obj/item/toy/crayon/New()
+ ..()
+ name = "[item_color] crayon" //Makes crayons identifiable in things like grinders
+ drawtype = pick(pick(graffiti), pick(letters), "rune[rand(1,6)]")
+ if(config)
+ if(config.mutant_races == 1)
+ graffiti |= "antilizard"
+ graffiti |= "prolizard"
+
+/obj/item/toy/crayon/initialize()
+ if(config.mutant_races == 1)
+ graffiti |= "antilizard"
+ graffiti |= "prolizard"
+
+/obj/item/toy/crayon/attack_self(mob/living/user)
+ update_window(user)
+
+/obj/item/toy/crayon/proc/update_window(mob/living/user)
+ dat += "