diff --git a/_maps/map_files/generic/centcomm.dmm b/_maps/map_files/generic/centcomm.dmm index 4b2ccb5503d..c09c18020da 100644 --- a/_maps/map_files/generic/centcomm.dmm +++ b/_maps/map_files/generic/centcomm.dmm @@ -85,6 +85,14 @@ icon_state = "asteroid" }, /area/holodeck/source_picnicarea) +"aq" = ( +/obj/structure/closet/crate/can, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) "ar" = ( /turf/simulated/floor/holofloor{ icon = 'icons/turf/floors/plating.dmi'; @@ -245,6 +253,14 @@ /obj/item/book/manual/nuclear, /turf/simulated/floor/carpet/arcade, /area/syndicate_mothership) +"aT" = ( +/obj/structure/bedsheetbin{ + pixel_x = -1; + pixel_y = 2 + }, +/obj/structure/table/glass/reinforced/plastitanium, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "aU" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -334,6 +350,13 @@ icon_state = "dark" }, /area/ghost_bar) +"bj" = ( +/obj/effect/turf_decal/arrows/red{ + dir = 1; + pixel_y = -16 + }, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "bk" = ( /obj/machinery/smartfridge/food/chef, /turf/simulated/floor/plasteel{ @@ -345,6 +368,12 @@ /obj/effect/mapping_helpers/airlock/access/all/syndicate, /turf/simulated/floor/carpet/arcade, /area/syndicate_mothership) +"bn" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/ghost_bar) "bo" = ( /turf/simulated/floor/holofloor{ dir = 4; @@ -404,6 +433,19 @@ icon_state = "green" }, /area/holodeck/source_emptycourt) +"bD" = ( +/obj/structure/window/reinforced/tinted, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/obj/machinery/door/window{ + dir = 8; + name = "Toilet"; + opacity = 1 + }, +/obj/structure/toilet/directional/east, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) "bE" = ( /obj/machinery/optable/abductor, /turf/simulated/floor/plating/abductor, @@ -439,6 +481,13 @@ /obj/item/storage/box/alienhandcuffs, /turf/simulated/floor/plating/abductor, /area/abductor_ship) +"bL" = ( +/obj/machinery/economy/vending/tool/free, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/ghost_bar) "bM" = ( /turf/simulated/floor/holofloor, /area/holodeck/source_emptycourt) @@ -455,6 +504,10 @@ }, /turf/simulated/floor/plating/abductor, /area/abductor_ship) +"bQ" = ( +/obj/item/crowbar/red, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "bR" = ( /obj/structure/reagent_dispensers/beerkeg, /turf/simulated/floor/plasteel/freezer, @@ -495,6 +548,10 @@ /obj/machinery/economy/vending/boozeomat, /turf/simulated/floor/plasteel/freezer, /area/ninja/holding) +"bZ" = ( +/obj/structure/chair/sofa/right, +/turf/simulated/floor/carpet/black, +/area/ghost_bar) "ca" = ( /turf/simulated/floor/holofloor{ dir = 6; @@ -828,6 +885,10 @@ /obj/structure/table/glass/reinforced/plastitanium, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership/jail) +"de" = ( +/obj/structure/chair/office/dark, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "df" = ( /turf/simulated/wall/indestructible/fakeglass, /area/ninja/outpost) @@ -1075,6 +1136,14 @@ icon_state = "cafeteria" }, /area/ninja/holding) +"ef" = ( +/obj/machinery/chem_dispenser/beer, +/obj/structure/table/reinforced, +/obj/machinery/barsign/ghost_bar{ + pixel_y = 32 + }, +/turf/simulated/floor/wood, +/area/ghost_bar) "eg" = ( /obj/effect/landmark/spawner/prisonwarp, /turf/simulated/floor/plating, @@ -1153,6 +1222,10 @@ }, /turf/simulated/floor/wood, /area/ghost_bar) +"eu" = ( +/obj/machinery/economy/vending/cigarette/syndicate/free, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "ev" = ( /turf/simulated/floor/beach/sand, /area/holodeck/source_beach) @@ -1264,6 +1337,14 @@ }, /turf/simulated/floor/wood, /area/wizard_station) +"eP" = ( +/obj/effect/mapping_helpers/turfs/damage, +/obj/structure/closet/crate/can, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/ghost_bar) "eQ" = ( /turf/simulated/floor/holofloor, /area/holodeck/source_boxingcourt) @@ -1271,6 +1352,26 @@ /obj/item/kirbyplants/large, /turf/simulated/floor/pod/dark, /area/syndicate_mothership) +"eT" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/light/floor, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) +"eU" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) +"eV" = ( +/obj/machinery/light/floor, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/ghost_bar) "eW" = ( /obj/structure/sink/directional/west, /turf/simulated/floor/plasteel{ @@ -1472,6 +1573,10 @@ icon_state = "dark" }, /area/ghost_bar) +"fH" = ( +/obj/structure/flora/grass/both, +/turf/simulated/floor/plating/asteroid/snow, +/area/space/centcomm) "fI" = ( /turf/simulated/wall/indestructible/riveted, /area/tdome/arena_source) @@ -1522,6 +1627,12 @@ }, /turf/simulated/floor/plasteel/dark, /area/ghost_bar) +"fQ" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/ghost_bar) "fR" = ( /obj/structure/barricade/sandbags, /obj/effect/turf_decal/delivery/hollow, @@ -1646,6 +1757,15 @@ }, /turf/simulated/floor/plating/airless, /area/shuttle/syndicate_sit) +"go" = ( +/obj/machinery/kitchen_machine/microwave/upgraded{ + pixel_y = 8 + }, +/obj/structure/table/reinforced, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/ghost_bar) "gp" = ( /obj/structure/shuttle/engine/propulsion{ dir = 1; @@ -1713,6 +1833,13 @@ }, /turf/simulated/floor/carpet/purple, /area/wizard_station) +"gC" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) "gD" = ( /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate_sit) @@ -1749,6 +1876,14 @@ /obj/machinery/sleeper/syndie, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate_elite) +"gM" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/ghost_bar) "gN" = ( /obj/machinery/abductor/experiment{ team = 2 @@ -1773,14 +1908,6 @@ /obj/structure/window/reinforced, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate_sit) -"gS" = ( -/obj/machinery/light/small{ - dir = 4; - pixel_y = 8 - }, -/obj/machinery/economy/vending/cigarette, -/turf/simulated/floor/wood, -/area/ghost_bar) "gT" = ( /obj/machinery/light/spot{ dir = 8 @@ -1849,6 +1976,15 @@ /obj/machinery/atmospherics/portable/canister/oxygen, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate_elite) +"hf" = ( +/obj/structure/closet/crate/can, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) +"hg" = ( +/obj/structure/table/wood, +/obj/item/deck/unum, +/turf/simulated/floor/wood, +/area/ghost_bar) "hi" = ( /obj/machinery/light/spot{ dir = 8 @@ -1999,6 +2135,22 @@ }, /turf/simulated/floor/wood, /area/wizard_station) +"hz" = ( +/obj/machinery/door/window{ + dir = 8; + name = "Toilet"; + opacity = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/obj/structure/toilet/directional/east, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) "hA" = ( /obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ @@ -2147,11 +2299,6 @@ icon_state = "vault" }, /area/tdome/tdomeadmin) -"hU" = ( -/obj/structure/table/wood/fancy/royalblack, -/obj/item/clothing/mask/cigarette/cigar, -/turf/simulated/floor/carpet/black, -/area/ghost_bar) "hV" = ( /obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/sit{ dir = 1 @@ -2303,6 +2450,13 @@ icon_state = "whiteblue" }, /area/shuttle/escape) +"is" = ( +/obj/structure/filingcabinet, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/ghost_bar) "it" = ( /obj/structure/railing/corner, /turf/simulated/floor/plasteel{ @@ -2354,6 +2508,11 @@ }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) +"iA" = ( +/obj/structure/table/glass/reinforced/plastitanium, +/obj/item/coin/antagtoken/syndicate, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "iC" = ( /obj/machinery/washing_machine, /turf/simulated/floor/plasteel/dark, @@ -2473,6 +2632,9 @@ }, /turf/simulated/floor/mineral/titanium, /area/shuttle/transport) +"iW" = ( +/turf/simulated/wall/indestructible/rock/snow, +/area/space/centcomm) "iX" = ( /obj/machinery/suit_storage_unit/syndicate/secure, /turf/simulated/floor/mineral/plastitanium/red, @@ -2511,6 +2673,10 @@ }, /turf/simulated/floor/wood, /area/wizard_station) +"jc" = ( +/obj/structure/table/reinforced, +/turf/simulated/floor/wood, +/area/ghost_bar) "je" = ( /obj/machinery/mech_bay_recharge_port/upgraded/unsimulated{ dir = 8 @@ -2605,11 +2771,22 @@ }, /turf/simulated/floor/plating/airless, /area/shuttle/administration) +"ju" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "jv" = ( /obj/structure/table, /obj/machinery/recharger, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate) +"jw" = ( +/obj/structure/snowman, +/turf/simulated/floor/plating/asteroid/snow, +/area/space/centcomm) "jx" = ( /obj/structure/table, /obj/item/screwdriver{ @@ -2817,6 +2994,12 @@ /obj/machinery/pdapainter, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) +"kj" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/turf/simulated/floor/carpet/arcade, +/area/ghost_bar) "kk" = ( /obj/structure/closet/secure_closet{ req_access = list(150) @@ -2863,6 +3046,13 @@ }, /turf/simulated/floor/plating/abductor, /area/abductor_ship) +"kr" = ( +/obj/structure/table/glass/reinforced/plastitanium, +/obj/machinery/computer/security/telescreen, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/ghost_bar) "ks" = ( /obj/machinery/economy/vending/coffee/free, /turf/simulated/floor/plasteel/dark, @@ -2943,6 +3133,19 @@ /obj/structure/table/glass/reinforced/plastitanium, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) +"kH" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/structure/table/glass/reinforced/plastitanium, +/obj/item/storage/firstaid/fire{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/firstaid/brute, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) "kI" = ( /obj/item/toy/figure/crew/syndie, /turf/simulated/floor/plating/asteroid/snow, @@ -2952,6 +3155,11 @@ /obj/effect/turf_decal/woodsiding, /turf/simulated/floor/wood, /area/wizard_station) +"kK" = ( +/obj/structure/table/wood, +/obj/item/deck/tarot, +/turf/simulated/floor/wood, +/area/ghost_bar) "kL" = ( /obj/structure/filingcabinet/medical, /turf/simulated/floor/plasteel{ @@ -3020,6 +3228,12 @@ "kU" = ( /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership/jail) +"kW" = ( +/obj/structure/chair/sofa{ + dir = 8 + }, +/turf/simulated/floor/carpet/black, +/area/ghost_bar) "kY" = ( /obj/item/storage/fancy/cigarettes/cigpack_robustgold{ pixel_y = 6 @@ -3037,6 +3251,10 @@ /obj/structure/bed, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership/jail) +"la" = ( +/obj/structure/gunrack, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "lb" = ( /obj/machinery/door/airlock/hatch/syndicate{ name = "SST Ready Room" @@ -3065,12 +3283,18 @@ }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) -"lj" = ( -/obj/machinery/light/small{ - dir = 4; - pixel_y = 8 +"li" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -8; + pixel_y = 5 + }, +/obj/item/reagent_containers/condiment/peppermill{ + pixel_x = -8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" }, -/turf/simulated/floor/plasteel/dark, /area/ghost_bar) "lk" = ( /obj/structure/chair/wood{ @@ -3078,6 +3302,13 @@ }, /turf/simulated/floor/plasteel, /area/admin) +"ll" = ( +/obj/structure/chair/office/dark, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = 32 + }, +/turf/simulated/floor/wood, +/area/ghost_bar) "ln" = ( /obj/item/gun/energy/immolator/multi{ pixel_x = -4; @@ -3102,6 +3333,11 @@ }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership/jail) +"lp" = ( +/obj/structure/table/reinforced, +/obj/item/multitool/red, +/turf/simulated/floor/wood, +/area/ghost_bar) "lq" = ( /turf/simulated/wall/mineral/plastitanium/nodiagonal, /area/shuttle/supply) @@ -3121,6 +3357,14 @@ }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership/jail) +"lu" = ( +/obj/structure/table/wood, +/obj/item/deck/tarot, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/ghost_bar) "lv" = ( /obj/structure/chair/stool, /turf/simulated/floor/plasteel/dark, @@ -3162,6 +3406,10 @@ /obj/effect/decal/remains/human, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership/jail) +"lE" = ( +/obj/structure/flora/tree/pine, +/turf/simulated/floor/plating/asteroid/snow, +/area/space/centcomm) "lF" = ( /obj/effect/landmark/abductor/agent{ team = 3 @@ -3554,6 +3802,11 @@ icon_state = "bar" }, /area/syndicate_mothership) +"mL" = ( +/obj/machinery/economy/arcade/claw, +/obj/structure/sign/poster/contraband/energy_swords/directional/north, +/turf/simulated/floor/carpet/arcade, +/area/ghost_bar) "mM" = ( /obj/item/radio/intercom/syndicate{ pixel_y = 25 @@ -3683,6 +3936,12 @@ icon_state = "bar" }, /area/syndicate_mothership) +"nf" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkredcorners" + }, +/area/ghost_bar) "ng" = ( /obj/mecha/combat/phazon, /turf/simulated/floor/plasteel, @@ -4007,6 +4266,13 @@ icon_state = "bar" }, /area/syndicate_mothership) +"nZ" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/machinery/economy/vending/cigarette, +/turf/simulated/floor/wood, +/area/ghost_bar) "oa" = ( /obj/structure/table, /obj/machinery/reagentgrinder, @@ -4019,6 +4285,11 @@ icon_state = "bar" }, /area/syndicate_mothership) +"oc" = ( +/obj/structure/table/reinforced, +/obj/item/ashtray/glass, +/turf/simulated/floor/wood, +/area/ghost_bar) "od" = ( /turf/simulated/wall/mineral/titanium, /area/shuttle/escape) @@ -4042,6 +4313,13 @@ /obj/structure/table/wood/fancy/royalblack, /turf/simulated/floor/carpet/royalblack, /area/admin) +"ok" = ( +/obj/structure/chair/sofa, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/turf/simulated/floor/carpet/black, +/area/ghost_bar) "ol" = ( /obj/structure/chair/comfy/black{ dir = 4 @@ -4263,10 +4541,10 @@ /turf/simulated/wall/r_wall, /area/start) "pi" = ( -/obj/structure/sink/directional/east, /obj/structure/mirror/magic/nuclear{ pixel_x = 28 }, +/obj/structure/sink/directional/east, /turf/simulated/floor/plasteel/freezer, /area/syndicate_mothership) "pk" = ( @@ -4321,6 +4599,31 @@ }, /turf/simulated/floor/plasteel, /area/admin) +"pu" = ( +/obj/structure/mopbucket, +/obj/item/mop, +/obj/structure/sink/directional/north, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) +"pw" = ( +/obj/structure/window/reinforced/tinted, +/obj/machinery/door/window{ + dir = 8; + name = "Toilet"; + opacity = 1 + }, +/obj/structure/toilet/directional/east, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) +"py" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "vault" + }, +/area/ghost_bar) "pz" = ( /obj/item/flag/syndi, /turf/simulated/floor/plasteel{ @@ -4445,6 +4748,12 @@ /obj/effect/landmark/spawner/tdome1, /turf/simulated/floor/plasteel, /area/tdome/arena) +"pX" = ( +/obj/structure/reagent_dispensers/spacecleanertank{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "pY" = ( /obj/machinery/door/airlock/centcom{ name = "Team Storage" @@ -4497,12 +4806,6 @@ icon_state = "red" }, /area/holodeck/source_thunderdomecourt) -"qk" = ( -/obj/machinery/cooking/deepfryer/upgraded, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ghost_bar) "ql" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/drinks/mug/med, @@ -4562,6 +4865,16 @@ /obj/structure/table/glass/reinforced/plastitanium, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership/jail) +"qz" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/computer/operating{ + dir = 1 + }, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "qB" = ( /obj/machinery/cryopod/offstation/right, /turf/simulated/floor/wood, @@ -4821,6 +5134,10 @@ /obj/item/kirbyplants/large, /turf/simulated/floor/plasteel, /area/centcom/evac) +"rm" = ( +/obj/structure/chair/sofa/corner, +/turf/simulated/floor/carpet/black, +/area/ghost_bar) "rn" = ( /obj/structure/rack, /obj/item/ammo_box/a357, @@ -4963,6 +5280,19 @@ /obj/structure/fans/tiny/invisible, /turf/simulated/floor/plating, /area/centcom/specops) +"rD" = ( +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "ghost_connect" + }, +/obj/machinery/door/airlock/hatch/syndicate{ + name = "oneway syndicate hatch"; + auto_close_time = 16 + }, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "rE" = ( /turf/simulated/wall/indestructible/riveted, /area/start) @@ -5109,6 +5439,24 @@ /obj/structure/chair/comfy/shuttle, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/assault_pod) +"sh" = ( +/obj/machinery/door/poddoor/shutters{ + density = 0; + dir = 2; + icon_state = "open"; + id_tag = "trader_privacy"; + name = "Privacy Shutters"; + opacity = 0 + }, +/obj/effect/spawner/window/shuttle, +/turf/simulated/floor/mineral/titanium/blue, +/area/shuttle/trade/sol) +"si" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/ghost_bar) "sj" = ( /turf/simulated/floor/plasteel/dark, /area/tdome/tdomeadmin) @@ -5141,6 +5489,18 @@ }, /turf/simulated/floor/plasteel, /area/tdome/arena_source) +"ss" = ( +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/obj/structure/table/reinforced, +/obj/item/reagent_containers/condiment/enzyme{ + pixel_y = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/ghost_bar) "st" = ( /obj/structure/table/wood, /obj/item/clothing/accessory/legal_badge{ @@ -5232,19 +5592,22 @@ /turf/simulated/floor/plating, /area/shuttle/syndicate) "sH" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/condiment/saltshaker{ - pixel_x = -8; - pixel_y = 5 +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 }, -/obj/item/reagent_containers/condiment/peppermill{ - pixel_x = -8 +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/obj/item/reagent_containers/condiment/enzyme{ - pixel_y = 5 +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) +"sI" = ( +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = -32 }, /turf/simulated/floor/plasteel{ - icon_state = "cafeteria" + dir = 5; + icon_state = "vault" }, /area/ghost_bar) "sK" = ( @@ -5396,6 +5759,11 @@ /obj/item/flashlight/lamp, /turf/simulated/floor/carpet/black, /area/centcom/specops) +"to" = ( +/obj/machinery/chem_dispenser/soda, +/obj/structure/table/reinforced, +/turf/simulated/floor/wood, +/area/ghost_bar) "tp" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -5420,6 +5788,10 @@ /obj/machinery/economy/vending/wallmed/directional/north, /turf/simulated/floor/wood, /area/trader_station/sol) +"tu" = ( +/obj/structure/flora/grass/green, +/turf/simulated/floor/plating/asteroid/snow, +/area/space/centcomm) "tv" = ( /obj/structure/table, /obj/machinery/cell_charger, @@ -5538,6 +5910,12 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate) +"tP" = ( +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "tQ" = ( /obj/machinery/mech_bay_recharge_port/upgraded/unsimulated{ dir = 8; @@ -5548,6 +5926,15 @@ icon_state = "darkred" }, /area/centcom/specops) +"tS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ghost_bar) "tU" = ( /obj/structure/table, /obj/item/storage/toolbox/syndicate, @@ -5604,6 +5991,12 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate) +"uf" = ( +/obj/structure/chair/comfy/black{ + dir = 8 + }, +/turf/simulated/floor/carpet/arcade, +/area/ghost_bar) "ug" = ( /obj/structure/rack, /obj/item/ammo_box/magazine/mm762x51, @@ -5727,6 +6120,20 @@ /obj/item/storage/firstaid/tactical, /turf/simulated/floor/plasteel/freezer, /area/admin) +"ut" = ( +/obj/structure/table/glass/reinforced/plastitanium, +/obj/machinery/door_control/no_emag{ + id = "ghost_connect"; + name = "Ghost Bar Access"; + pixel_x = 6; + pixel_y = 6; + req_access = list(153) + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/ghost_bar) "uu" = ( /obj/structure/table, /obj/item/grenade/syndieminibomb{ @@ -5775,6 +6182,14 @@ /obj/effect/decal/remains/human, /turf/simulated/floor/plating/asteroid/snow, /area/syndicate_mothership) +"uG" = ( +/obj/machinery/door/airlock/hatch/syndicate{ + req_access = null + }, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/ghost_bar) "uH" = ( /obj/structure/mirror{ pixel_x = 28 @@ -5782,6 +6197,13 @@ /obj/structure/sink/directional/east, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate) +"uI" = ( +/obj/structure/table/wood/fancy/royalblack, +/obj/machinery/computer/security/telescreen, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/ghost_bar) "uJ" = ( /obj/machinery/optable, /turf/simulated/floor/mineral/plastitanium/red, @@ -5856,6 +6278,16 @@ "vd" = ( /turf/simulated/floor/carpet/green, /area/ghost_bar) +"ve" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/door/airlock/hatch/syndicate{ + req_access = null + }, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) "vf" = ( /obj/effect/landmark/spawner/trader, /obj/structure/chair/comfy/brown, @@ -5928,6 +6360,12 @@ }, /turf/simulated/floor/wood, /area/trader_station/sol) +"vv" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/ghost_bar) "vx" = ( /obj/structure/railing, /obj/structure/table/wood, @@ -6085,6 +6523,10 @@ icon_state = "cafeteria" }, /area/tdome/tdomeobserve) +"vW" = ( +/obj/machinery/economy/vending/shoedispenser/free, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "vX" = ( /obj/structure/table, /obj/structure/window/reinforced, @@ -6295,15 +6737,11 @@ }, /turf/simulated/floor/plasteel, /area/admin) -"wI" = ( -/obj/structure/toilet/directional/east, -/obj/structure/window/reinforced/tinted, -/obj/machinery/door/window{ - dir = 8; - name = "Toilet"; - opacity = 1 +"wJ" = ( +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" }, -/turf/simulated/floor/plasteel/freezer, /area/ghost_bar) "wK" = ( /turf/simulated/wall/mineral/plastitanium, @@ -6313,7 +6751,29 @@ /turf/simulated/floor/mineral/plastitanium/red, /area/ghost_bar) "wN" = ( -/obj/structure/closet/crate/cookware, +/obj/structure/table/reinforced, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -8; + pixel_y = 5 + }, +/obj/item/reagent_containers/condiment/peppermill{ + pixel_x = -8 + }, +/obj/item/kitchen/knife, +/obj/item/reagent_containers/condiment/enzyme{ + pixel_y = 5 + }, +/obj/machinery/reagentgrinder{ + desc = "Used to grind things up into raw materials and liquids."; + pixel_y = 5 + }, +/obj/item/reagent_containers/glass/beaker/large, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/ghost_bar) +"wP" = ( +/obj/machinery/economy/vending/chefdrobe, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, @@ -6403,7 +6863,6 @@ /turf/simulated/floor/carpet, /area/admin) "xa" = ( -/obj/structure/toilet/directional/east, /obj/structure/window/reinforced/tinted{ dir = 1 }, @@ -6412,6 +6871,7 @@ name = "Toilet"; opacity = 1 }, +/obj/structure/toilet/directional/east, /turf/simulated/floor/plasteel/freezer, /area/trader_station/sol) "xb" = ( @@ -6487,6 +6947,12 @@ }, /turf/simulated/floor/plasteel, /area/admin) +"xm" = ( +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ghost_bar) "xo" = ( /turf/simulated/floor/grass/jungle, /area/wizard_station) @@ -6517,6 +6983,15 @@ icon_state = "white" }, /area/centcom/control) +"xw" = ( +/obj/structure/mopbucket, +/obj/item/mop, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) "xx" = ( /obj/machinery/photocopier/faxmachine/longrange/syndie{ department = "Syndicate" @@ -6564,6 +7039,15 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate) +"xG" = ( +/obj/structure/table/wood/fancy/royalblack, +/obj/machinery/light/floor, +/obj/item/storage/fancy/cigarettes/cigpack_syndicate{ + pixel_x = 5; + pixel_y = 4 + }, +/turf/simulated/floor/carpet/black, +/area/ghost_bar) "xH" = ( /turf/simulated/wall/indestructible/wood, /area/wizard_station) @@ -6599,6 +7083,12 @@ /obj/machinery/door/airlock/external, /turf/simulated/floor/plasteel/dark, /area/centcom/control) +"xQ" = ( +/obj/structure/table/wood, +/obj/item/folder/blue, +/obj/item/toner, +/turf/simulated/floor/wood, +/area/ghost_bar) "xR" = ( /obj/docking_port/stationary{ dir = 2; @@ -6638,6 +7128,13 @@ /obj/structure/railing, /turf/simulated/floor/plasteel/dark, /area/ghost_bar) +"xW" = ( +/obj/structure/mirror{ + pixel_x = 32 + }, +/obj/structure/sink/directional/east, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) "xX" = ( /obj/machinery/economy/vending/cola/free, /turf/simulated/floor/plasteel/dark, @@ -6664,6 +7161,10 @@ /obj/item/lighter/zippo/contractor, /turf/simulated/floor/carpet/black, /area/ghost_bar) +"yd" = ( +/obj/machinery/economy/vending/suitdispenser/free, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "ye" = ( /obj/structure/signpost, /turf/simulated/floor/plating/airless{ @@ -6718,6 +7219,13 @@ }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) +"yt" = ( +/obj/structure/table/glass/reinforced/plastitanium, +/obj/item/syndicatedetonator, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/ghost_bar) "yu" = ( /obj/machinery/economy/vending/snack, /obj/effect/turf_decal/delivery/hollow, @@ -6740,6 +7248,17 @@ /obj/structure/flora/rock/jungle, /turf/simulated/floor/grass/jungle, /area/wizard_station) +"yy" = ( +/obj/structure/table/wood/fancy/royalblack, +/turf/simulated/floor/carpet/black, +/area/ghost_bar) +"yB" = ( +/obj/machinery/light/small, +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/turf/simulated/floor/carpet/arcade, +/area/ghost_bar) "yC" = ( /obj/structure/marker_beacon/dock_marker, /turf/simulated/floor/plating/airless, @@ -6757,15 +7276,12 @@ icon_state = "green" }, /area/centcom/evac) -"yI" = ( -/obj/structure/sink/directional/east, -/obj/structure/mirror{ - pixel_x = 32 - }, +"yJ" = ( /obj/machinery/light/small{ - dir = 1 + dir = 4; + pixel_y = 8 }, -/turf/simulated/floor/plasteel/freezer, +/turf/simulated/floor/wood, /area/ghost_bar) "yK" = ( /turf/simulated/floor/plating/airless{ @@ -6790,6 +7306,14 @@ /obj/structure/bookcase/random, /turf/simulated/floor/wood, /area/ghost_bar) +"yP" = ( +/obj/structure/table/glass/reinforced/plastitanium, +/obj/item/ashtray/glass, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/ghost_bar) "yQ" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/grassybush, @@ -6803,11 +7327,44 @@ icon_state = "cafeteria" }, /area/tdome/tdomeobserve) +"yW" = ( +/obj/machinery/economy/vending/toyliberationstation, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/ghost_bar) "yX" = ( /obj/structure/table/wood, /obj/item/storage/fancy/crayons, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) +"yY" = ( +/obj/structure/rack, +/obj/item/tank/internals/emergency_oxygen/double/vox, +/obj/item/tank/internals/emergency_oxygen/double/vox, +/obj/item/tank/internals/emergency_oxygen/double/vox, +/obj/item/tank/internals/emergency_oxygen/double/vox, +/obj/item/tank/internals/emergency_oxygen/double/vox, +/obj/item/tank/internals/emergency_oxygen/double/vox, +/obj/item/tank/internals/emergency_oxygen/double/vox, +/obj/item/tank/internals/emergency_oxygen/double/vox, +/obj/item/tank/internals/emergency_oxygen/double/vox, +/obj/item/tank/internals/emergency_oxygen/double/vox, +/obj/item/clothing/mask/breath/vox, +/obj/item/clothing/mask/breath/vox, +/obj/item/clothing/mask/breath/vox, +/obj/item/clothing/mask/breath/vox, +/obj/item/clothing/mask/breath/vox, +/obj/item/clothing/mask/breath/vox, +/obj/item/clothing/mask/breath/vox, +/obj/item/clothing/mask/breath/vox, +/obj/item/clothing/mask/breath/vox, +/obj/item/clothing/mask/breath/vox, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "vault" + }, +/area/ghost_bar) "yZ" = ( /obj/effect/mapping_helpers/airlock/access/all/centcomm/shuttles, /obj/machinery/door/airlock/external{ @@ -6817,6 +7374,12 @@ /obj/structure/fans/tiny, /turf/simulated/floor/plating, /area/centcom/suppy) +"zc" = ( +/obj/machinery/door/airlock/hatch/syndicate{ + req_access = null + }, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "zf" = ( /obj/structure/chair/comfy/shuttle, /obj/effect/turf_decal/box, @@ -6900,6 +7463,10 @@ }, /turf/simulated/floor/mineral/titanium, /area/shuttle/transport) +"zr" = ( +/obj/machinery/light/floor, +/turf/simulated/floor/wood, +/area/ghost_bar) "zs" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -6920,13 +7487,6 @@ /obj/item/flag/wiz, /turf/simulated/floor/wood, /area/wizard_station) -"zw" = ( -/obj/structure/sink/directional/east, -/obj/structure/mirror{ - pixel_x = 32 - }, -/turf/simulated/floor/plasteel/freezer, -/area/ghost_bar) "zx" = ( /obj/structure/kitchenspike, /turf/simulated/floor/wood, @@ -6977,6 +7537,10 @@ /obj/effect/landmark/spawner/aroomwarp, /turf/simulated/floor/plasteel, /area/admin) +"zH" = ( +/obj/machinery/photocopier, +/turf/simulated/floor/wood, +/area/ghost_bar) "zK" = ( /obj/machinery/door_control/no_emag/no_cyborg{ pixel_x = 24; @@ -7003,9 +7567,7 @@ /area/centcom/specops) "zP" = ( /obj/machinery/light/small, -/obj/machinery/smartfridge/foodcart{ - dir = 4 - }, +/obj/machinery/economy/vending/dinnerware, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, @@ -7209,6 +7771,19 @@ /obj/structure/chair/comfy/black, /turf/simulated/floor/plasteel, /area/admin) +"Ay" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/structure/table/glass/reinforced/plastitanium, +/obj/item/storage/firstaid/toxin{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/firstaid/adv, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) "AB" = ( /obj/machinery/computer/arcade/battle{ dir = 4 @@ -7414,12 +7989,6 @@ /obj/machinery/economy/vending/tool/free, /turf/simulated/floor/plasteel/dark, /area/centcom/specops) -"Bn" = ( -/obj/machinery/icemachine, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ghost_bar) "Bo" = ( /obj/structure/table/wood, /obj/item/storage/box/drinkingglasses, @@ -7483,6 +8052,12 @@ }, /turf/simulated/floor/plasteel/dark, /area/admin) +"Bx" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/carpet/arcade, +/area/ghost_bar) "By" = ( /obj/structure/ninjatele{ pixel_x = 28 @@ -7545,6 +8120,16 @@ icon_state = "bar" }, /area/syndicate_mothership) +"BK" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/door/airlock/hatch/syndicate{ + req_access = null + }, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) "BL" = ( /obj/effect/turf_decal{ dir = 4 @@ -7571,6 +8156,12 @@ }, /turf/simulated/floor/mineral/plastitanium, /area/shuttle/supply) +"BS" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ghost_bar) "BT" = ( /obj/effect/landmark/spawner/tdomeobserve, /turf/simulated/floor/plasteel/dark, @@ -7592,6 +8183,13 @@ "BZ" = ( /turf/simulated/wall/indestructible/opsglass, /area/syndicate_mothership) +"Ca" = ( +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/obj/structure/gunrack, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "Cb" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/grassybush, @@ -7685,7 +8283,6 @@ /turf/simulated/floor/plasteel, /area/centcom/evac) "Ck" = ( -/obj/machinery/door/airlock/multi_tile/glass, /obj/effect/mapping_helpers/airlock/autoname, /turf/simulated/floor/wood, /area/ghost_bar) @@ -7700,12 +8297,6 @@ icon_state = "red" }, /area/holodeck/source_thunderdomecourt) -"Cn" = ( -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 32 - }, -/turf/simulated/floor/wood, -/area/ghost_bar) "Cp" = ( /obj/structure/sink/directional/east, /turf/simulated/floor/plasteel{ @@ -7817,6 +8408,16 @@ icon_state = "bar" }, /area/tdome/tdomeobserve) +"CH" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/defibrillator_mount/loaded{ + pixel_x = -30 + }, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "CI" = ( /obj/structure/urinal{ pixel_y = 28 @@ -7840,6 +8441,15 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel/dark, /area/centcom/control) +"CL" = ( +/obj/item/storage/firstaid/regular{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/firstaid/regular, +/obj/structure/table/glass/reinforced/plastitanium, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "CM" = ( /obj/effect/mapping_helpers/airlock/access/all/centcomm/shuttles, /obj/machinery/door/airlock/external{ @@ -7848,6 +8458,10 @@ }, /turf/simulated/floor/plating, /area/centcom/suppy) +"CN" = ( +/obj/machinery/economy/vending/autodrobe/free, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "CO" = ( /turf/simulated/floor/plating, /area/centcom/suppy) @@ -7880,6 +8494,17 @@ /obj/effect/landmark/spawner/roundstart_observer, /turf/simulated/floor/carpet/red, /area/wizard_station) +"CV" = ( +/obj/machinery/light/small, +/turf/simulated/floor/wood, +/area/ghost_bar) +"CW" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) "CX" = ( /obj/item/kitchen/knife/butcher, /obj/item/melee/baseball_bat, @@ -7929,10 +8554,7 @@ }, /area/tdome/tdomeadmin) "Dk" = ( -/obj/structure/table/reinforced, -/obj/item/storage/bag/tray, -/obj/item/kitchen/rollingpin, -/obj/item/kitchen/knife, +/obj/machinery/cooking/oven/upgraded, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, @@ -7987,6 +8609,14 @@ icon_state = "vault" }, /area/tdome/tdomeadmin) +"Du" = ( +/obj/machinery/washing_machine, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) "Dv" = ( /obj/structure/rack, /obj/item/clothing/head/helmet/space/space_ninja, @@ -8122,25 +8752,15 @@ /turf/simulated/floor/engine, /area/admin) "DS" = ( -/obj/machinery/atmospherics/refill_station/plasma, +/obj/structure/extinguisher_cabinet{ + pixel_y = -32 + }, +/obj/item/kirbyplants/large, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "vault" }, /area/centcom/specops) -"DT" = ( -/obj/structure/window/reinforced/tinted, -/obj/structure/window/reinforced/tinted{ - dir = 1 - }, -/obj/structure/toilet/directional/east, -/obj/machinery/door/window{ - dir = 8; - name = "Toilet"; - opacity = 1 - }, -/turf/simulated/floor/plasteel/freezer, -/area/ghost_bar) "DV" = ( /obj/effect/mapping_helpers/airlock/access/all/centcomm/commander, /obj/machinery/door/airlock/centcom{ @@ -8347,6 +8967,12 @@ icon_state = "darkblue" }, /area/shuttle/escape) +"EB" = ( +/obj/machinery/door/airlock/hatch/syndicate{ + req_access = null + }, +/turf/simulated/floor/carpet/arcade, +/area/ghost_bar) "ED" = ( /obj/machinery/prize_counter, /turf/simulated/floor/carpet/arcade, @@ -8382,6 +9008,14 @@ /obj/machinery/economy/slot_machine, /turf/simulated/floor/wood, /area/ghost_bar) +"EK" = ( +/obj/machinery/smartfridge/foodcart{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/ghost_bar) "EL" = ( /obj/machinery/door/airlock/hatch{ desc = "Uh oh. You'd better hope you aren't going in here!"; @@ -8389,6 +9023,10 @@ }, /turf/simulated/floor/plasteel/dark, /area/admin) +"EM" = ( +/obj/machinery/cryopod/offstation/right, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "EN" = ( /obj/machinery/economy/vending/cola, /turf/simulated/floor/mineral/plastitanium/red, @@ -8405,6 +9043,14 @@ icon_state = "dark" }, /area/ghost_bar) +"ER" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/light/floor, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) "ET" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -8439,11 +9085,6 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/machinery/reagentgrinder{ - desc = "Used to grind things up into raw materials and liquids."; - pixel_y = 5 - }, -/obj/item/reagent_containers/glass/beaker/large, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, @@ -8551,6 +9192,14 @@ /obj/structure/fans/tiny, /turf/simulated/floor/plasteel/dark, /area/centcom/specops) +"Fv" = ( +/obj/structure/chair/comfy/black{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/ghost_bar) "Fw" = ( /obj/machinery/conveyor/east{ id = "QMLoad2" @@ -8635,6 +9284,10 @@ }, /turf/simulated/floor/wood, /area/wizard_station) +"FI" = ( +/obj/machinery/economy/vending/syndisnack, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "FJ" = ( /obj/structure/table/reinforced, /obj/item/storage/box/mousetraps, @@ -8663,6 +9316,15 @@ /obj/structure/table/wood, /turf/simulated/floor/wood, /area/wizard_station) +"FO" = ( +/obj/structure/chair/comfy/black{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/turf/simulated/floor/carpet/arcade, +/area/ghost_bar) "FP" = ( /obj/structure/chair/comfy/brown{ dir = 8 @@ -8722,6 +9384,12 @@ }, /turf/simulated/floor/wood, /area/ghost_bar) +"Gb" = ( +/obj/structure/rack, +/obj/item/storage/box/lights/bulbs, +/obj/item/storage/box/lights/bulbs, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "Gc" = ( /obj/machinery/bsa/full/admin{ pixel_y = -22 @@ -8782,6 +9450,17 @@ }, /turf/simulated/floor/wood, /area/wizard_station) +"Gl" = ( +/obj/structure/mirror{ + pixel_x = -28 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/structure/sink/directional/west, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) "Gm" = ( /obj/machinery/access_button{ pixel_x = -8; @@ -8813,6 +9492,10 @@ /obj/item/gun/energy/bsg/prebuilt/admin, /turf/simulated/floor/carpet/black, /area/centcom/specops) +"Go" = ( +/obj/machinery/computer/camera_advanced, +/turf/simulated/floor/carpet/black, +/area/ghost_bar) "Gp" = ( /obj/structure/chair/stool{ dir = 8 @@ -8914,6 +9597,10 @@ /obj/item/kitchen/knife/shiv/carrot, /turf/simulated/floor/wood, /area/wizard_station) +"GH" = ( +/obj/machinery/economy/vending/coffee/free, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "GI" = ( /obj/structure/chair/comfy/shuttle{ dir = 4 @@ -9160,6 +9847,14 @@ icon_state = "vault" }, /area/centcom/specops) +"Hw" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/optable, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "Hx" = ( /obj/structure/chair/stool{ dir = 8 @@ -9205,14 +9900,22 @@ }, /area/ghost_bar) "HE" = ( -/obj/machinery/shower/directional/west, -/obj/structure/curtain/open/shower, +/obj/machinery/recharge_station, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, /turf/simulated/floor/plasteel/freezer, /area/ghost_bar) "HF" = ( /obj/effect/landmark/spawner/bubblegum_arena, /turf/simulated/floor/indestructible/necropolis, /area/ruin/space/bubblegum_arena) +"HG" = ( +/obj/structure/curtain/open/shower, +/obj/machinery/shower/directional/west, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) "HH" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -9459,6 +10162,12 @@ }, /turf/simulated/floor/plating/airless, /area/shuttle/escape) +"Iw" = ( +/obj/machinery/computer/arcade/battle{ + dir = 8 + }, +/turf/simulated/floor/carpet/arcade, +/area/ghost_bar) "Iy" = ( /obj/item/trash/sosjerky, /obj/effect/decal/cleanable/dirt, @@ -9713,10 +10422,12 @@ /turf/simulated/wall/indestructible/riveted, /area/centcom/suppy) "Jo" = ( -/obj/machinery/chem_master/condimaster, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" +/obj/structure/table/reinforced, +/obj/item/reagent_containers/drinks/shaker, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 }, +/turf/simulated/floor/wood, /area/ghost_bar) "Jq" = ( /obj/structure/table/wood, @@ -9940,6 +10651,13 @@ }, /turf/simulated/floor/plating/asteroid/snow, /area/syndicate_mothership) +"JT" = ( +/obj/structure/table/wood, +/obj/machinery/computer/library/syndie{ + req_one_access = list() + }, +/turf/simulated/floor/wood, +/area/ghost_bar) "JU" = ( /obj/structure/holowindow{ dir = 1 @@ -10033,6 +10751,13 @@ /obj/structure/snowman, /turf/simulated/floor/plating/asteroid/snow, /area/syndicate_mothership) +"Kl" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/cooking/board, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/ghost_bar) "Km" = ( /obj/machinery/kitchen_machine/microwave/upgraded, /obj/structure/table, @@ -10081,6 +10806,12 @@ /obj/structure/sign/poster/official/high_class_martini/directional/east, /turf/simulated/floor/wood, /area/centcom/evac) +"Kt" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/ghost_bar) "Ku" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/iv_bag/blood/random, @@ -10230,6 +10961,20 @@ }, /turf/simulated/floor/wood, /area/centcom/evac) +"KP" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/economy/vending/wallmed/syndicate/directional/north, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) +"KQ" = ( +/obj/machinery/economy/vending/clothing/free, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ghost_bar) "KR" = ( /obj/machinery/light/spot{ dir = 4 @@ -10451,6 +11196,12 @@ icon_state = "vault" }, /area/tdome/tdomeadmin) +"LE" = ( +/obj/structure/chair/sofa/left{ + dir = 8 + }, +/turf/simulated/floor/carpet/black, +/area/ghost_bar) "LF" = ( /obj/structure/table, /obj/structure/bedsheetbin{ @@ -10687,6 +11438,14 @@ icon_state = "vault" }, /area/tdome/tdomeadmin) +"Mq" = ( +/obj/structure/table/glass/reinforced/plastitanium, +/obj/machinery/computer/security/telescreen, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/ghost_bar) "Ms" = ( /obj/machinery/processor, /obj/effect/turf_decal/stripes/end, @@ -10971,6 +11730,11 @@ /obj/machinery/light/small, /turf/simulated/floor/wood, /area/ghost_bar) +"Ni" = ( +/obj/machinery/computer/security/telescreen, +/obj/structure/table/glass/reinforced/plastitanium, +/turf/simulated/floor/carpet/black, +/area/ghost_bar) "Nj" = ( /obj/structure/curtain/black, /turf/simulated/floor/wood, @@ -11051,7 +11815,7 @@ /turf/simulated/floor/plasteel, /area/centcom/evac) "Nz" = ( -/obj/machinery/atmospherics/refill_station/oxygen, +/obj/structure/filingcabinet/security, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "vault" @@ -11067,6 +11831,16 @@ icon_state = "green" }, /area/centcom/evac) +"NC" = ( +/obj/structure/mirror{ + pixel_x = 32 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/sink/directional/east, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) "ND" = ( /obj/structure/chair/comfy/shuttle{ dir = 4 @@ -11097,6 +11871,9 @@ icon_state = "neutral" }, /area/shuttle/escape) +"NJ" = ( +/turf/simulated/wall/indestructible/opsglass, +/area/ghost_bar) "NK" = ( /obj/machinery/computer/shuttle/admin{ dir = 8; @@ -11126,6 +11903,12 @@ icon_state = "neutralcorner" }, /area/shuttle/escape) +"NN" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/ghost_bar) "NO" = ( /obj/machinery/door/airlock/hatch{ name = "Teleporter Access" @@ -11362,11 +12145,22 @@ }, /turf/simulated/floor/plasteel/dark, /area/centcom/specops) -"OB" = ( -/obj/machinery/door/airlock/multi_tile/glass{ - name = "Badmin's Bar" +"OC" = ( +/obj/structure/table/glass/reinforced/plastitanium, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/obj/item/paper_bin/syndicate{ + pixel_y = 5 + }, +/obj/item/pen/multi/syndicate{ + pixel_x = -6; + pixel_y = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" }, -/turf/simulated/floor/carpet/arcade, /area/ghost_bar) "OD" = ( /obj/machinery/atmospherics/unary/thermomachine/freezer/on, @@ -11427,10 +12221,10 @@ /area/space/nearstation/centcom) "OL" = ( /obj/structure/curtain/open/shower, -/obj/machinery/shower/directional/south, /obj/structure/window/basic{ dir = 1 }, +/obj/machinery/shower/directional/west, /turf/simulated/floor/plasteel/freezer, /area/wizard_station) "OM" = ( @@ -11484,6 +12278,11 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) +"OS" = ( +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/ghost_bar) "OT" = ( /turf/simulated/floor/holofloor{ dir = 4; @@ -11579,6 +12378,10 @@ /obj/item/tank/jetpack/oxygen, /turf/simulated/floor/plasteel, /area/admin) +"Ph" = ( +/obj/structure/coatrack, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "Pi" = ( /turf/simulated/floor/plasteel/stairs/medium{ dir = 1 @@ -11684,6 +12487,13 @@ icon_state = "green" }, /area/centcom/evac) +"Pz" = ( +/obj/structure/closet/crate/freezer/iv_storage, +/obj/effect/turf_decal/delivery/blue/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/ghost_bar) "PA" = ( /obj/effect/landmark/shuttle_import, /turf/space, @@ -11706,6 +12516,31 @@ icon_state = "darkred" }, /area/centcom/gamma) +"PE" = ( +/turf/simulated/floor/plating/asteroid/snow, +/area/space/centcomm) +"PF" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/structure/rack, +/obj/item/storage/box/gloves{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/box/masks, +/obj/item/storage/box/autoinjectors{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/storage/box/bodybags{ + pixel_x = -6; + pixel_y = -6 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) "PG" = ( /obj/item/clipboard, /obj/item/folder/red, @@ -11746,6 +12581,17 @@ /obj/structure/shelf/engineering, /turf/simulated/floor/plasteel/dark, /area/centcom/specops) +"PN" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/item/storage/backpack/duffel/syndie/med/surgery{ + pixel_y = 8 + }, +/obj/structure/table/tray, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "PO" = ( /obj/structure/flora/ausbushes/fernybush, /turf/simulated/floor/grass, @@ -11816,6 +12662,12 @@ /obj/item/kirbyplants/large, /turf/simulated/floor/wood, /area/centcom/evac) +"PZ" = ( +/obj/machinery/economy/vending/bardrobe, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/ghost_bar) "Qa" = ( /obj/structure/statue/chickenstatue, /turf/simulated/floor/wood, @@ -11917,6 +12769,12 @@ /obj/structure/table/glass/reinforced/plastitanium, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership/jail) +"Qq" = ( +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "vault" + }, +/area/ghost_bar) "Qr" = ( /obj/item/stack/sheet/glass/fifty, /obj/item/stack/sheet/glass/fifty, @@ -12037,6 +12895,10 @@ }, /turf/simulated/floor/plasteel/dark, /area/centcom/control) +"QK" = ( +/obj/structure/chair/sofa, +/turf/simulated/floor/carpet/black, +/area/ghost_bar) "QL" = ( /turf/simulated/floor/plasteel, /area/shuttle/escape) @@ -12084,6 +12946,16 @@ icon_state = "bot" }, /area/shuttle/escape) +"QS" = ( +/obj/structure/curtain/open/shower, +/obj/structure/window/reinforced/tinted, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/shower/directional/west, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) "QT" = ( /obj/structure/flora/ausbushes/ywflowers, /turf/simulated/floor/holofloor/grass, @@ -12099,6 +12971,11 @@ /obj/item/clothing/glasses/sunglasses_fake, /turf/simulated/floor/beach/sand, /area/holodeck/source_beach) +"QW" = ( +/obj/item/storage/bag/dice, +/obj/structure/table/wood, +/turf/simulated/floor/wood, +/area/ghost_bar) "QX" = ( /obj/structure/table/wood, /obj/item/folder/red, @@ -12106,18 +12983,9 @@ /obj/item/flash, /turf/simulated/floor/plasteel/dark, /area/centcom/specops) -"QZ" = ( -/obj/structure/toilet/directional/east, -/obj/structure/window/reinforced/tinted{ - dir = 1 - }, -/obj/structure/window/reinforced/tinted, -/obj/machinery/door/window{ - dir = 8; - name = "Toilet"; - opacity = 1 - }, -/turf/simulated/floor/plasteel/freezer, +"QY" = ( +/obj/machinery/economy/vending/cigarette/syndicate/free, +/turf/simulated/floor/carpet/black, /area/ghost_bar) "Ra" = ( /turf/simulated/floor/plasteel/dark, @@ -12129,6 +12997,11 @@ "Rc" = ( /turf/simulated/floor/mech_bay_recharge_floor, /area/shuttle/escape) +"Rd" = ( +/obj/structure/table/wood/fancy/royalblack, +/obj/item/ashtray/glass, +/turf/simulated/floor/carpet/black, +/area/ghost_bar) "Re" = ( /obj/machinery/computer/mech_bay_power_console, /turf/simulated/floor/plasteel, @@ -12304,6 +13177,15 @@ /obj/machinery/status_display, /turf/simulated/wall/indestructible/riveted, /area/centcom/control) +"RF" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/structure/closet/crate/freezer/iv_storage, +/obj/effect/turf_decal/delivery/blue/hollow, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) "RG" = ( /obj/item/flag/command, /turf/simulated/floor/plasteel{ @@ -12316,6 +13198,15 @@ /obj/item/storage/fancy/donut_box, /turf/simulated/floor/wood, /area/centcom/control) +"RJ" = ( +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "vault" + }, +/area/ghost_bar) "RK" = ( /turf/simulated/floor/carpet/arcade, /area/ghost_bar) @@ -12323,6 +13214,16 @@ /obj/machinery/pdapainter, /turf/simulated/floor/wood, /area/centcom/control) +"RM" = ( +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = 32 + }, +/obj/machinery/economy/merch{ + dir = 1; + desc = "The one-stop-shop for all your Nanotrasen swag. Probably stolen from some station to end up here." + }, +/turf/simulated/floor/wood, +/area/ghost_bar) "RN" = ( /obj/structure/table/reinforced, /obj/machinery/chem_dispenser/soda{ @@ -12342,6 +13243,10 @@ icon_state = "darkgreen" }, /area/centcom/control) +"RQ" = ( +/obj/machinery/light/floor, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "RS" = ( /obj/machinery/door/poddoor/preopen{ id_tag = "CCcustoms2"; @@ -12493,6 +13398,11 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/specops) +"Sr" = ( +/obj/structure/chair/sofa, +/obj/structure/sign/poster/contraband/syndicate_pistol/directional/north, +/turf/simulated/floor/carpet/black, +/area/ghost_bar) "Ss" = ( /turf/simulated/floor/holofloor{ dir = 4; @@ -12503,6 +13413,10 @@ /obj/structure/filingcabinet/security, /turf/simulated/floor/wood, /area/centcom/control) +"Sv" = ( +/obj/machinery/economy/vending/wallmed/syndicate/directional/south, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "Sx" = ( /obj/machinery/sleeper/upgraded{ dir = 4 @@ -12560,6 +13474,23 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) +"SH" = ( +/obj/structure/curtain/open/shower, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/shower/directional/west, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) +"SI" = ( +/obj/effect/mapping_helpers/airlock/autoname, +/obj/machinery/door/poddoor/preopen{ + id_tag = "ghost_connect" + }, +/obj/machinery/door/airlock/centcom, +/turf/simulated/floor/wood, +/area/ghost_bar) "SJ" = ( /obj/item/kirbyplants/large, /turf/simulated/floor/plasteel, @@ -12594,6 +13525,15 @@ icon_state = "browncorner" }, /area/shuttle/escape) +"SR" = ( +/obj/structure/table/reinforced, +/obj/machinery/reagentgrinder, +/obj/item/reagent_containers/glass/beaker/large, +/obj/item/kitchen/knife, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/ghost_bar) "SS" = ( /obj/effect/turf_decal{ dir = 8 @@ -12611,6 +13551,21 @@ "SV" = ( /turf/simulated/wall/indestructible/fakeglass, /area/tdome/tdomeadmin) +"SW" = ( +/obj/structure/chair/stool/bar{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/ghost_bar) +"SX" = ( +/obj/structure/table/reinforced, +/obj/machinery/cooking/grill, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/ghost_bar) "SY" = ( /obj/structure/table/holotable, /obj/item/clothing/suit/armor/riot/knight/blue, @@ -12627,6 +13582,15 @@ /obj/machinery/computer/scan_consolenew, /turf/simulated/floor/mineral/titanium, /area/shuttle/administration) +"Tc" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) +"Td" = ( +/turf/simulated/wall/indestructible/syndicate/no_diagonal, +/area/ghost_bar) "Te" = ( /turf/simulated/wall/indestructible/riveted, /area/centcom/gamma) @@ -12647,6 +13611,12 @@ }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) +"Th" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "Tj" = ( /obj/structure/chair/stool{ dir = 4 @@ -12767,6 +13737,15 @@ icon_state = "cafeteria" }, /area/tdome/tdomeobserve) +"TJ" = ( +/obj/machinery/door/airlock/hatch/syndicate{ + req_access = null + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkredfull" + }, +/area/ghost_bar) "TK" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -12793,6 +13772,12 @@ icon_state = "bar" }, /area/tdome/tdomeobserve) +"TO" = ( +/obj/machinery/computer/cryopod{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "TP" = ( /obj/structure/table/reinforced, /obj/item/clipboard, @@ -12962,6 +13947,13 @@ /obj/item/lighter, /turf/simulated/floor/wood, /area/centcom/control) +"Up" = ( +/obj/item/caution/proximity_sign, +/obj/item/caution/proximity_sign, +/obj/item/caution/proximity_sign, +/obj/structure/rack, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "Uq" = ( /obj/structure/mirror/magic{ pixel_x = 28 @@ -13035,6 +14027,11 @@ /obj/structure/sign/poster/contraband/syndicate_recruitment/directional/north, /turf/simulated/floor/plating/asteroid/ancient, /area/ghost_bar) +"UD" = ( +/obj/effect/landmark/spawner/antag_extract_warp, +/obj/effect/turf_decal/delivery/red/hollow, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "UE" = ( /obj/machinery/computer/operating, /turf/simulated/floor/plasteel/freezer, @@ -13047,6 +14044,10 @@ icon_state = "whiteblue" }, /area/shuttle/escape) +"UG" = ( +/obj/machinery/cryopod/offstation, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "UH" = ( /obj/structure/chair/comfy/black, /turf/simulated/floor/carpet/green, @@ -13069,6 +14070,16 @@ icon_state = "snow" }, /area/holodeck/source_snowfield) +"UN" = ( +/obj/item/soap/syndie, +/obj/structure/rack, +/obj/item/soap/syndie, +/obj/item/soap/syndie, +/obj/item/reagent_containers/spray/cleaner, +/obj/item/reagent_containers/spray/cleaner, +/obj/item/reagent_containers/spray/cleaner, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "UO" = ( /turf/simulated/wall/indestructible/opsglass/limited_smooth, /area/syndicate_mothership) @@ -13079,15 +14090,19 @@ icon_state = "dark" }, /area/ghost_bar) -"US" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = -32 +"UR" = ( +/obj/structure/window/reinforced/tinted{ + dir = 1 }, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "vault" +/obj/structure/window/reinforced/tinted, +/obj/machinery/door/window{ + dir = 8; + name = "Toilet"; + opacity = 1 }, -/area/centcom/specops) +/obj/structure/toilet/directional/east, +/turf/simulated/floor/plasteel/freezer, +/area/ghost_bar) "UT" = ( /obj/machinery/economy/vending/cola/free, /turf/simulated/floor/plasteel{ @@ -13113,6 +14128,11 @@ }, /turf/simulated/floor/plasteel/dark, /area/centcom/evac) +"UX" = ( +/obj/structure/table/glass/reinforced/plastitanium, +/obj/machinery/computer/security/telescreen, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "UZ" = ( /turf/simulated/floor/plasteel{ icon_state = "darkred" @@ -13150,16 +14170,6 @@ icon_state = "red" }, /area/centcom/evac) -"Vh" = ( -/obj/structure/table/reinforced, -/obj/machinery/cooking/grill/upgraded, -/obj/item/stack/sheet/wood{ - amount = 30 - }, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ghost_bar) "Vi" = ( /obj/structure/table/wood, /obj/item/taperecorder, @@ -13250,6 +14260,20 @@ icon_state = "bar" }, /area/tdome/tdomeobserve) +"Vz" = ( +/obj/machinery/computer/arcade/orion_trail{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/carpet/arcade, +/area/ghost_bar) +"VA" = ( +/obj/structure/table/glass/reinforced/plastitanium, +/obj/structure/sign/poster/contraband/revolver/directional/south, +/turf/simulated/floor/carpet/black, +/area/ghost_bar) "VC" = ( /obj/item/rpd/bluespace, /obj/item/rpd/bluespace, @@ -13367,11 +14391,22 @@ icon_state = "brown" }, /area/shuttle/escape) +"VV" = ( +/obj/structure/flora/grass/brown, +/turf/simulated/floor/plating/asteroid/snow, +/area/space/centcomm) "VW" = ( -/obj/machinery/cooking/ice_cream_mixer/upgraded, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, +/obj/effect/turf_decal/tile/blue, +/obj/structure/table/glass/reinforced/plastitanium, +/obj/item/storage/firstaid/o2{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/firstaid/regular, +/turf/simulated/floor/plasteel/freezer, /area/ghost_bar) "VX" = ( /obj/item/bikehorn/rubberducky, @@ -13707,6 +14742,14 @@ }, /turf/simulated/floor/plating, /area/centcom/specops) +"WR" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/light/floor, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "WS" = ( /obj/effect/spawner/window/reinforced, /obj/structure/sign/directions/engineering{ @@ -13748,6 +14791,44 @@ }, /turf/simulated/floor/wood, /area/centcom/control) +"WV" = ( +/obj/structure/rack, +/obj/item/tank/internals/plasmaman/belt/full, +/obj/item/tank/internals/plasmaman/belt/full, +/obj/item/tank/internals/plasmaman/belt/full, +/obj/item/tank/internals/plasmaman/belt/full, +/obj/item/tank/internals/plasmaman/belt/full, +/obj/item/tank/internals/plasmaman/belt/full, +/obj/item/tank/internals/plasmaman/belt/full, +/obj/item/tank/internals/plasmaman/belt/full, +/obj/item/tank/internals/plasmaman/belt/full, +/obj/item/tank/internals/plasmaman/belt/full, +/obj/item/clothing/under/plasmaman, +/obj/item/clothing/under/plasmaman, +/obj/item/clothing/under/plasmaman, +/obj/item/clothing/under/plasmaman, +/obj/item/clothing/under/plasmaman, +/obj/item/clothing/under/plasmaman, +/obj/item/clothing/under/plasmaman, +/obj/item/clothing/under/plasmaman, +/obj/item/clothing/under/plasmaman, +/obj/item/clothing/under/plasmaman, +/obj/item/clothing/under/plasmaman, +/obj/item/clothing/head/helmet/space/plasmaman, +/obj/item/clothing/head/helmet/space/plasmaman, +/obj/item/clothing/head/helmet/space/plasmaman, +/obj/item/clothing/head/helmet/space/plasmaman, +/obj/item/clothing/head/helmet/space/plasmaman, +/obj/item/clothing/head/helmet/space/plasmaman, +/obj/item/clothing/head/helmet/space/plasmaman, +/obj/item/clothing/head/helmet/space/plasmaman, +/obj/item/clothing/head/helmet/space/plasmaman, +/obj/item/clothing/head/helmet/space/plasmaman, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "vault" + }, +/area/ghost_bar) "WW" = ( /obj/item/kirbyplants/large, /turf/simulated/floor/plasteel{ @@ -13977,6 +15058,12 @@ "XJ" = ( /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) +"XK" = ( +/obj/machinery/door/airlock/hatch/syndicate{ + req_access = null + }, +/turf/simulated/floor/wood, +/area/ghost_bar) "XL" = ( /obj/structure/table, /obj/machinery/cell_charger, @@ -14013,8 +15100,8 @@ /turf/simulated/floor/plating/airless, /area/shuttle/specops) "XR" = ( +/obj/machinery/processor, /obj/structure/sign/poster/official/fruit_bowl/directional/north, -/obj/machinery/cooking/oven/upgraded, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, @@ -14144,6 +15231,10 @@ /obj/item/pen/blue, /turf/simulated/floor/wood, /area/centcom/control) +"Yn" = ( +/obj/machinery/economy/vending/hatdispenser/free, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "Yo" = ( /obj/structure/chair/comfy/purp{ name = "wizard council throne" @@ -14291,6 +15382,12 @@ /obj/structure/railing, /turf/simulated/floor/plasteel, /area/centcom/evac) +"YP" = ( +/obj/structure/table/reinforced, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/ghost_bar) "YQ" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -14366,6 +15463,10 @@ icon_state = "bot" }, /area/shuttle/escape) +"YZ" = ( +/obj/machinery/economy/vending/syndisnack, +/turf/simulated/floor/carpet/black, +/area/ghost_bar) "Za" = ( /obj/structure/closet/crate/engineering, /obj/item/storage/toolbox/electrical{ @@ -14414,6 +15515,12 @@ "Ze" = ( /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/transport) +"Zh" = ( +/obj/machinery/light/floor, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/ghost_bar) "Zi" = ( /obj/structure/reagent_dispensers/fueltank, /turf/simulated/floor/plasteel{ @@ -14539,6 +15646,20 @@ icon_state = "bar" }, /area/syndicate_mothership) +"Zz" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/economy/vending/medical/syndicate_access, +/obj/machinery/economy/vending/medical/syndicate_access{ + req_access = list() + }, +/obj/machinery/economy/vending/medical/syndicate_access{ + req_access = list() + }, +/turf/simulated/floor/plasteel/dark, +/area/ghost_bar) "ZA" = ( /obj/machinery/defibrillator_mount/loaded{ pixel_x = -30 @@ -14564,13 +15685,6 @@ icon_state = "darkred" }, /area/centcom/specops) -"ZE" = ( -/obj/machinery/atmospherics/refill_station/nitrogen, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "vault" - }, -/area/centcom/specops) "ZF" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/poddoor/multi_tile/impassable/quad{ @@ -14606,15 +15720,6 @@ icon_state = "darkred" }, /area/centcom/specops) -"ZK" = ( -/obj/structure/table/wood, -/obj/machinery/light/small{ - dir = 4; - pixel_y = 8 - }, -/obj/item/deck/tarot, -/turf/simulated/floor/wood, -/area/ghost_bar) "ZL" = ( /obj/structure/showcase, /turf/simulated/floor/wood, @@ -33872,7 +34977,7 @@ Ji Ra Xz RD -ZE +Of Ra Ra Ra @@ -35163,7 +36268,7 @@ uX uX uX cC -US +Xz Zr NZ ic @@ -60880,8 +61985,8 @@ aN aN aN aN -aN -aN +ps +ps aN aN aN @@ -61127,6 +62232,9 @@ aN aN aN aN +OK +OK +OK aN aN aN @@ -61134,17 +62242,14 @@ aN aN aN aN +OK +ps +OK +ps aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +OK +OK aN aN aN @@ -61382,6 +62487,27 @@ aN aN aN aN +OK +OK +ps +ps +ps +OK +aN +aN +aN +aN +aN +aN +aN +OK +OK +ps +ps +OK +OK +ps +OK aN aN aN @@ -61393,29 +62519,8 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +ps +ps aN aN aN @@ -61638,6 +62743,29 @@ aN aN aN aN +OK +ps +ps +ps +ps +ps +ps +OK +aN +aN +aN +aN +YI +OK +OK +OK +OK +OK +OK +OK +OK +ps +OK aN aN aN @@ -61648,31 +62776,8 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +ya +ps aN aN aN @@ -61894,31 +62999,31 @@ aN aN aN aN +OK +OK +ps +ps +ps +ps +ps +ps +OK +OK aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +OK +OK +ps +ps +ps +OK +OK +ps +OK +ps +ps +OK aN aN aN @@ -62151,31 +63256,31 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +OK +OK +OK +ps +ps +ps +ps +ps +ps +OK +OK +OK +OK +OK +ps +ps +ps +ps +ps +ps +ps +ps +ps +ps +OK aN aN aN @@ -62409,42 +63514,42 @@ aN aN aN aN +OK aN aN +tL +ps +ps +ps +Me +Me +Nr +Nr +Nr +Nr +Me +Me +Me +Me +Me +ps +ps +ps +ps +ps +OK +OK +OK +OK +OK +OK aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +Mu +OK +OK +OK +OK aN aN aN @@ -62670,39 +63775,39 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +tL +ps +ps +Me +Kp +Pf +Pf +Pf +Pf +iu +OU +Pu +zQ +Me +Me +Me +Me +Me +ps +OK +OK +ps +ps +ps +ps +OK +OK +ps +ps +ps +ps +OK +OK aN aN aN @@ -62929,37 +64034,37 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +tL +Me +xD +Pf +UQ +Ko +Pf +LF +Me +Pu +qe +Me +KW +HG +HG +Me +ps +ps +ps +ps +ps +ps +Me +Nr +Nr +Me +Me +ps +ps +ps +OK aN aN aN @@ -63176,47 +64281,47 @@ aN aN aN aN +Db +aN +aN +aN +Db aN aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +tL +Me +HD +Pf +XD +WT +Pf +bi +Me +CI +Pu +Me +Pu +Pu +Pu +Me +ps +ps +ps +ps +ps +Me +Me +JP +Bh +On +Me +ps +ps +ps +OK aN aN aN @@ -63434,46 +64539,46 @@ aN aN aN aN +Im +Im +Im aN aN aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +tL +Me +Hc +Pf +fG +WK +Pf +Fr +Me +CI +Pu +Pu +Pu +Pu +Pu +Me +Me +Me +Me +Me +Me +Me +MM +sx +sx +NX +Me +ps +ps +ps +OK aN aN aN @@ -63690,46 +64795,46 @@ aN aN aN aN +Im +Im +EI +Im +Im +tL +Db aN +tL aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +tL +Me +yk +Pf +Pf +Pf +Pf +yv +Me +NC +xW +UR +bD +pw +Lq +Me +UB +tC +tC +tC +tC +tC +tC +tC +tC +tC +Me +ps +ps +OK aN aN aN @@ -63947,45 +65052,45 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +Im +Da +Da +Ka +Im +tL +tL +tL +tL +tL +fq +Me +Nr +Nr +LA +NH +Nr +Nr +Me +Me +Me +SB +Me +Me +Me +Me +Me +QM +Me +Me +Me +Me +Me +Me +Me +NX +Me +ps +OK aN aN aN @@ -64204,45 +65309,45 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +Im +Rb +Da +Ka +Im +Nr +Nr +Nr +Nr +Nr +Nr +nn +hp +Jy +Jy +Jy +Jy +Jy +Ck +rk +rU +xV +Xa +EP +Uh +Fm +Jm +Jy +EJ +Ma +Nr +mS +ZY +AB +Me +NX +Me +ps +OK aN aN aN @@ -64461,45 +65566,45 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +Im +PW +Da +Da +Na +EQ +Pf +zh +zh +Pf +zh +rS +HH +Jy +Jy +Jy +Jy +Jy +Jy +Ro +rU +xV +Jy +Np +Wi +rG +WF +Jy +pl +pl +Nr +Ag +Ag +Ag +Me +tC +Me +ps +ps aN aN aN @@ -64718,45 +65823,45 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +Im +Mt +Da +Da +Na +EQ +zh +zh +Pf +zh +Pf +rS +HH +Jy +cX +cX +cX +Jy +Me +sO +LA +zk +Jy +ip +qH +qH +Jy +Jy +Jy +Jy +RK +RK +RK +RK +Me +tC +Me +Me +ps aN aN aN @@ -64975,46 +66080,46 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +Im +Da +Da +Da +Im +ew +Nr +Nr +Nr +Nr +Nr +Me +bJ +Jy +qN +ym +Ah +Nh +Me +BH +Jy +LM +Jy +Jy +Jy +Jy +Jy +Jy +Jy +Jy +RK +RK +RK +CA +Me +NX +Me +Me +ps +OK aN aN aN @@ -65232,47 +66337,47 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +Im +MZ +wM +dR +Im +tL +tL +tL +tL +tL +fq +zn +yO +Jy +Ml +Ml +Ml +Jy +Me +Ga +Jy +Jy +Jy +Jy +Jy +Jy +Jy +ol +ol +Jy +Nr +RK +Tj +Tj +Me +NX +In +Me +ps +ps +OK aN aN aN @@ -65489,47 +66594,47 @@ aN aN aN aN +Im +Jd +Jd +Jd +Im +tL +Db aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +tL +Nr +Jy +Jy +vd +vd +vd +rf +Me +ip +Jy +Jy +Jy +ip +Jy +Jy +Jy +rG +qm +Jy +Nr +ED +zL +zL +Me +tC +NX +Me +ps +ps +OK aN aN aN @@ -65747,46 +66852,46 @@ aN aN aN aN +cD +cD +cD aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +OK +OK +OK +tL +Nr +Jy +Jy +vd +cX +vd +xY +Me +wh +rd +rd +rd +rd +rd +qH +Jy +RX +RX +ep +qR +Nr +Nr +Nr +Me +tC +NX +Me +ps +ps +ps aN aN aN @@ -66003,47 +67108,47 @@ aN aN aN aN +Db aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +Db +OK +yK +OK +yK +OK +OK +Nr +Jy +Jy +UH +ym +JX +yO +Me +Pp +Bj +Bj +jG +Bj +yc +WB +Jy +Jy +Jy +Hz +DG +qH +cR +qH +Me +tC +NX +Me +ps +ps +ps aN aN aN @@ -66264,43 +67369,43 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +OK +OK +OK +OK +Xs +yK +OK +Me +Li +Jy +vd +Ml +vd +xy +Me +et +Jy +Jy +Jy +Jy +Bj +WB +Jy +ip +Jy +Hz +rU +Al +Dw +eA +Me +tC +sU +Me +ps +ps +ps aN aN aN @@ -66520,44 +67625,44 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +OK +OK +OK +OK +ye +OK +OK +ps +Me +xt +Jy +vd +vd +vd +yO +Me +Jy +Jy +Jy +Jy +Jy +jG +WB +Jy +Jy +qH +Qv +Pq +rU +rU +fP +Me +tC +Me +Me +ps +ps +ps aN aN aN @@ -66776,45 +67881,45 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +OK +OK +OK +OK +OK +OK +yK +ps +ps +Me +Nr +Pn +Pn +Pn +Pn +Nr +Me +WA +Jy +zl +RN +sF +Bj +WB +Jy +Jy +qH +qH +Pi +rU +rU +rU +Me +NX +Me +ps +ps +ps +OK aN aN aN @@ -67033,45 +68138,45 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +OK +ps +OK +OK +OK +OK +OK +ps +ps +Me +yO +Jy +Jy +Jy +Jy +Jy +Me +mz +JI +Me +Me +Me +Me +Me +tr +Jy +qH +Nm +cg +rU +rU +rU +HZ +oC +Me +ps +ps +ps +OK aN aN aN @@ -67290,45 +68395,45 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +OK +ps +ps +ps +OK +OK +ps +ps +ps +Me +bJ +Jy +io +KU +yM +Dm +Me +Fb +es +Oj +zj +fF +rq +Me +xi +ip +Jy +Hz +rU +Al +Dw +eA +Me +Me +Me +ps +ps +OK +OK aN aN aN @@ -67547,45 +68652,45 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +OK +OK ps ps -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +ps +ps +ps +ps +ps +Me +zz +Jy +io +Zq +wF +Bc +Me +LG +es +es +es +es +es +Uk +Jy +Jy +Jy +Hz +eU +zE +Gp +qH +Me +ps +ps +ps +ps +OK +OK aN aN aN @@ -67806,43 +68911,43 @@ aN aN OK OK -OK -aN -aN -aN -aN -aN -aN -aN -OK +ps +ps +ps +ps +Td +ps +ps +Me +Mx +Jy +ll +lu +Sh +Bc +Me +XR +wN +Dk +EK +xU +zP +Me +eP +Jy +Jy +nZ +Me +Me +Me +Me +Me +ps +ps +ps ps OK -ps -aN -aN OK -OK -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN aN aN aN @@ -68059,26 +69164,48 @@ aN aN aN aN -OK +aN +aN OK ps ps -ps -OK -aN -aN -aN -aN -aN -aN -aN -OK -OK +Td +Td +Td +Td +Td +Td +Me +Me +SI +Me +Me +Me +Me +Me +Me +Me +Me +Me +Me +Me +Me +Me +Me +Me +Me +Me +Td +Td +Td +Td +Td +Td +Td ps ps OK OK -ps OK aN aN @@ -68091,28 +69218,6 @@ aN aN aN aN -ps -ps -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN aN aN aN @@ -68315,11 +69420,48 @@ aN aN aN aN -OK +aN +aN ps ps ps ps +Td +mS +Vz +ZY +ZY +Td +Td +Td +rD +Td +Td +Td +Td +Td +Td +Td +Td +Td +Td +Td +Td +Td +Td +Td +Td +Td +Td +RF +RF +PF +CH +qz +Td +iW +ps +ps ps ps OK @@ -68327,43 +69469,6 @@ aN aN aN aN -YI -OK -OK -OK -OK -OK -OK -OK -OK -ps -OK -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -ya -ps -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN aN aN aN @@ -68571,11 +69676,48 @@ aN aN aN aN -OK +aN +aN +aN OK ps ps ps +Td +FO +uf +uf +uf +Td +Mq +vv +vv +vv +vv +ut +Td +SH +QS +Du +Gl +Gl +Td +Yn +yd +vW +Im +yY +rU +BS +Td +KP +eT +CW +WR +Hw +Td +iW +iW ps ps ps @@ -68584,43 +69726,6 @@ OK aN aN aN -OK -OK -ps -ps -ps -OK -OK -ps -OK -ps -ps -OK -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN aN aN aN @@ -68828,53 +69933,53 @@ aN aN aN aN -OK +aN +aN OK OK ps -ps -ps +Td +Td +Td +RK +RK +RK +RK +Td +OC +Tc +rU +RQ +de +yt +Td +gC +gC +gC +gC +gC +ve +rU +rU +rU +Im +WV +RQ +rU +BK +CW +CW +CW +ju +PN +Td +PE +iW +iW ps ps ps OK -OK -OK -OK -OK -ps -ps -ps -ps -ps -ps -ps -ps -ps -ps -OK -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN aN aN aN @@ -69086,52 +70191,52 @@ aN aN aN aN +aN OK -aN -aN -tL ps ps ps -Me -Me -Nr -Nr -Nr -Nr -Me -Me -Me -Me -Me +Td +ED +RK +RK +RK +yB +Td +yP +rU +rU +rU +rU +kr +Td +sH +ER +gC +ER +gC +Im +tP +RQ +rU +zc +rU +rU +BS +Td +kH +Ay +VW +Zz +Td +Td +tu +PE +iW +iW ps ps ps -ps -ps -OK -OK -OK -OK -OK -OK -aN -aN -Mu -OK -OK -OK -OK -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN aN aN aN @@ -69344,51 +70449,51 @@ aN aN aN aN -aN -aN -aN -tL -ps -ps -Me -Kp -Pf -Pf -Pf -Pf -iu -OU -Pu -zQ -Me -Me -Me -Me -Me -ps -OK -OK ps ps ps ps -OK -OK +Td +mL +RK +RK +kj +Iw +Td +is +nf +rU +RQ +rU +yW +Td +gC +gC +gC +xw +aq +Td +aT +rU +rU +Td +Qq +rU +BS +Td +Td +Td +Td +Td +Td +PE +PE +PE +PE +iW +iW ps ps -ps -ps -OK -OK -aN -aN -aN -aN -aN -aN -aN -aN -aN aN aN aN @@ -69601,51 +70706,51 @@ aN aN aN aN -aN -aN -aN -aN -aN -tL -Me -xD -Pf -UQ -Ko -Pf -LF -Me -Pu -qe -Me -KW -HE -HE -Me -ps -ps -ps -ps -ps -ps -Me -Nr -Nr -Me -Me -ps -ps -ps OK -aN -aN -aN -aN -aN -aN -aN -aN -aN +ps +ps +ps +Td +zL +Bx +RK +Iw +Td +Td +Td +wJ +si +si +si +bL +Td +HE +hz +hz +Td +Td +Td +Td +CN +KQ +Td +RJ +RQ +BS +Td +la +rU +bj +UD +Td +PE +PE +PE +PE +PE +iW +ps +ps aN aN aN @@ -69853,56 +70958,56 @@ aN aN aN aN -Db -aN -aN -aN -Db aN aN aN aN -aN -tL -Me -HD -Pf -XD -WT -Pf -bi -Me -CI -Pu -Me -Pu -Pu -Pu -Me -ps -ps -ps -ps -ps -Me -Me -JP -Bh -On -Me -ps -ps -ps OK -aN -aN -aN -aN -aN -aN -aN -aN -aN +ps +ps +Td +Td +Td +Td +Td +EB +Td +Td +FI +Td +Td +Td +TJ +Td +Td +Td +Td +Td +Td +Td +GH +eu +Td +Td +Td +Td +Qq +rU +BS +Td +Ca +rU +bj +UD +Td +PE +PE +lE +tu +PE +iW +ps +ps aN aN aN @@ -70111,44 +71216,54 @@ aN aN aN aN -Im -Im -Im aN aN aN -aN -aN -aN -tL -Me -Hc -Pf -fG -WK -Pf -Fr -Me -CI -Pu -Pu -Pu -Pu -Pu -Me -Me -Me -Me -Me -Me -Me -MM -sx -sx -NX -Me +OK ps ps +Td +rU +tS +xm +xm +rU +xm +sI +xm +xm +xm +xm +rU +xm +xm +xm +xm +sI +xm +xm +xm +xm +xm +xm +xm +xm +rU +rU +BS +Td +Ph +RQ +bj +UD +Td +PE +PE +PE +PE +PE +iW +ps ps OK aN @@ -70163,16 +71278,6 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN SL HN HN @@ -70367,43 +71472,54 @@ wk aN aN aN -Im -Im -EI -Im -Im -tL -Db aN -tL aN -tL -Me -yk -Pf -Pf -Pf -Pf -yv -Me -yI -zw -QZ -DT -wI -Lq -Me -UB -tC -tC -tC -tC -tC -tC -tC -tC -tC -Me +aN +aN +OK +ps +ps +Td +rU +Th +RQ +rU +rU +RQ +rU +rU +RQ +rU +rU +RQ +rU +rU +RQ +rU +rU +RQ +rU +rU +RQ +rU +rU +RQ +rU +rU +RQ +rU +zc +rU +rU +Sv +Td +Td +PE +PE +VV +PE +PE +iW ps ps OK @@ -70419,17 +71535,6 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN SL HN HF @@ -70624,43 +71729,55 @@ wk wk aN aN -Im -Da -Da -Ka -Im -tL -tL -tL -tL -tL -fq -Me -Nr -Nr -LA -NH -Nr -Nr -Me -Me -Me -SB -Me -Me -Me -Me -Me -QM -Me -Me -Me -Me -Me -Me -Me -NX -Me +aN +aN +aN +ps +ps +ps +ps +Td +rU +py +Qq +rU +rU +Qq +Qq +Qq +Qq +Qq +Qq +rU +Qq +Qq +Qq +rU +rU +Qq +Qq +Qq +rU +rU +Qq +Qq +Qq +Qq +Qq +BS +Td +iA +UX +CL +Td +PE +PE +PE +tu +PE +PE +iW +ps ps OK aN @@ -70675,18 +71792,6 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN SL HN HN @@ -70881,43 +71986,55 @@ lH aN aN aN -Im -Rb -Da -Ka -Im -Nr -Nr -Nr -Nr -Nr -Nr -nn -hp -Jy -Jy -Jy -Jy -Jy -Ck -rk +aN +aN +aN +aN +ps +ps +ps +Td +Td +Td +Td +XK +XK +Td +Td +Td +Td +Td +Td +XK +Td +Td +Td +OS +OS +Td +Td +Qq rU -xV -Xa -EP -Uh -Fm -Jm -Jy -EJ -Ma -Nr -mS -ZY -AB -Me -NX -Me +BS +Td +Td +NJ +NJ +NJ +Td +Td +NJ +NJ +NJ +Td +fH +PE +PE +PE +PE +PE +iW +ps ps OK aN @@ -70932,18 +72049,6 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN SL HN HN @@ -71138,57 +72243,57 @@ lH aN aN aN -Im -PW -Da -Da -Na -EQ -Pf -zh -zh -Pf -zh -rS -HH +aN +aN +aN +aN +ps +ps +ps +Td +zH +bn Jy Jy Jy Jy +bn +Jy +JT +Td +lp Jy Jy -Ro +oc +SW +OS +OS +OS +Td +Qq rU -xV -Jy -Np -Wi -rG -WF -Jy -pl -pl -Nr -Ag -Ag -Ag -Me -tC -Me +BS +Td +PE +PE +PE +PE +tu +PE +PE +PE +PE +PE +PE +PE +PE +lE +PE +PE +iW ps -ps -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +OK +OK aN aN aN @@ -71395,57 +72500,57 @@ lH aN aN aN -Im -Mt -Da -Da -Na -EQ -zh -zh -Pf -zh -Pf -rS -HH -Jy -cX -cX -cX -Jy -Me -sO -LA -zk -Jy -ip -qH -qH -Jy -Jy -Jy -Jy -OB -RK -RK -RK -Me -tC -Me -Me +aN +aN +aN +aN ps -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +ps +ps +Td +Kt +Kt +Kt +Jy +Jy +Jy +Jy +Jy +yM +Td +Jo +Jy +Jy +jc +SW +Zh +OS +OS +OS +rU +RQ +BS +NJ +PE +PE +lE +PE +PE +PE +PE +PE +PE +PE +PE +tu +PE +PE +PE +PE +iW +ps +OK +OK aN aN aN @@ -71652,57 +72757,57 @@ wk wk aN aN -Im -Da -Da -Da -Im -ew -Nr -Nr -Nr -Nr -Nr -Me -bJ -Jy -qN -ym -Ah -Nh -Me -BH -Jy -LM +aN +aN +aN +aN +ps +ps +ps +Td +xQ +wF +hg Jy Jy +yO +yO Jy +yO +Td +ef +zr Jy -Jy -Jy -Jy -Jy -RK -RK -RK -CA -Me -NX -Me -Me +jc +SW +OS +OS +OS +OS +rU +rU +BS +NJ +VV +PE +PE +fH +PE +PE +PE +PE +PE +PE +tu +PE +PE +VV +PE +PE +iW ps OK -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +OK aN aN aN @@ -71909,44 +73014,54 @@ wk aN aN aN -Im -MZ -wM -dR -Im -tL -tL -tL -tL -tL -fq -zn +aN +aN +aN +aN +ps +ps +Td +Td +Zq +kK +QW +Jy +Jy +yO yO Jy -Ml -Ml -Ml -Jy -Me -Ga +yO +Td +to Jy Jy -Jy -Jy -Jy -Jy -Jy -ol -ol -Jy -Nr -RK -Tj -Tj -Me -NX -In -Me +jc +SW +OS +OS +OS +OS +rU +rU +BS +NJ +PE +jw +PE +PE +PE +lE +PE +fH +PE +PE +PE +lE +PE +PE +PE +PE +iW ps ps OK @@ -71962,16 +73077,6 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN SL HN LV @@ -72166,46 +73271,55 @@ aN aN aN aN -Im -Jd -Jd -Jd -Im -tL -Db aN aN aN -tL -Nr -Jy -Jy -vd -vd -vd -rf -Me -ip -Jy -Jy -Jy -ip -Jy -Jy -Jy -rG -qm -Jy -Nr -ED -zL -zL -Me -tC -NX -Me +aN ps ps +ps +Td +NN +NN +NN +Jy +Jy +yO +yO +yJ +yO +Td +mz +Jy +Jy +EJ +SW +OS +OS +OS +OS +rU +rU +BS +NJ +PE +fH +PE +PE +PE +PE +PE +PE +VV +PE +PE +PE +PE +PE +lE +iW +iW +ps OK aN aN @@ -72220,15 +73334,6 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN -aN -aN SL HN LV @@ -72424,55 +73529,55 @@ aN aN aN aN -cD -cD -cD aN aN aN OK +ps +ps +Td +RM +fQ +Jy +Jy +Jy +yO +Td +Td +Td +Td +Td +Td +Td +Td +OS +OS +OS +OS +OS +rU +RQ +BS +Td +PE +PE +PE +PE +PE +PE +PE +tu +PE +PE +PE +PE +tu +PE +PE +iW +ps +ps OK -OK -tL -Nr -Jy -Jy -vd -cX -vd -xY -Me -wh -rd -rd -rd -rd -rd -qH -Jy -RX -RX -ep -qR -Nr -Nr -Nr -Me -tC -NX -Me -ps -ps -ps -aN -aN -aN -aN -aN -aN -aN -aN -aN aN aN aN @@ -72680,55 +73785,55 @@ aN aN aN aN -Db aN aN aN -Db +aN OK -yK -OK -yK -OK -OK -Nr +ps +ps +Td +Td +Td +Td +tr Jy -Jy -UH -ym -JX yO -Me -Pp -Bj -Bj -jG -Bj -yc -WB -Jy -Jy -Jy -Hz -DG -qH -cR -qH -Me -tC -NX -Me +Td +go +es +es +es +es +li +SW +OS +OS +OS +OS +Im +Qq +rU +BS +Td +Td +NJ +NJ +NJ +NJ +NJ +Td +Td +PE +lE +fH +PE +PE +PE +iW +iW ps -ps -ps -aN -aN -aN -aN -aN -aN -aN -aN +OK aN aN aN @@ -72943,48 +74048,48 @@ aN aN OK OK -OK -OK -Xs -yK -OK -Me -Li -Jy -vd -Ml -vd -xy -Me -et +ps +ps +ps +ps +Td Jy Jy -Jy -Jy -Bj -WB -Jy -ip -Jy -Hz +yO +Td +go +es +eV +es +es +YP +SW +OS +Zh +OS +gM +Td +Qq rU +BS +Td +QY +Go +RX +RX +RX Al -Dw -eA -Me -tC -sU -Me +Ni +Td +PE +PE +PE +iW +iW +iW +iW ps -ps -ps -aN -aN -aN -aN -aN -aN -aN +OK aN aN aN @@ -73197,41 +74302,48 @@ aN aN aN aN -OK -OK -OK -OK -ye +aN +aN OK OK ps -Me -xt -Jy -vd -vd -vd -yO -Me -Jy -Jy -Jy -Jy -Jy -jG -WB +ps +ps +Td Jy Jy +CV +Td +Dk +es +zY +YP +es +YP +SW +OS +OS +OS +uI +Td +Qq +rU +BS +Td qH -Qv -Pq -rU -rU -fP -Me -tC -Me -Me +qH +qH +qH +qH +Al +Ni +Td +iW +iW +iW +iW +ps +ps ps ps OK @@ -73295,13 +74407,6 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN "} (229,1,1) = {" af @@ -73453,51 +74558,51 @@ aN aN aN aN +aN +aN +aN OK OK -OK -OK -OK -OK -yK ps ps -Me -Nr -Pn -Pn -Pn -Pn -Nr -Me -WA -Jy -zl -RN -sF -Bj -WB -Jy -Jy +ps +Td +yO +yO +yO +Td +ss +es +SX +YP +es +YP +SW +OS +OS +OS +Fv +Td +Qq +RQ +rU +zc +rU +RQ +rU +rU +RQ qH -qH -Pi -rU -rU -rU -Me -NX -Me +VA +Td +Td +Td ps ps ps -aN -aN -aN -aN -aN -aN -aN +ps +ps +OK aN aN aN @@ -73710,51 +74815,51 @@ aN aN aN aN -OK -ps -OK -OK -OK +aN +aN +aN +aN OK OK ps -ps -Me -yO -Jy -Jy -Jy -Jy -Jy -Me -mz -JI -Me -Me -Me -Me -Me -tr -Jy +Td +Td +Td +Td +Td +Td +YP +es +Kl +YP +es +Td +Td +Td +Td +uG +Td +Td +Qq +rU +BS +Td +bZ +qH +qH qH -Nm -cg rU -rU -rU -HZ -oC -Me +qH +YZ +Td +bQ +Td +ps ps ps OK -aN -aN -aN -aN -aN -aN -aN +OK +OK aN aN aN @@ -73968,49 +75073,49 @@ aN aN aN aN -ps -ps -ps +aN +aN +aN OK OK ps ps ps -Me -bJ -Jy -io -KU -yM -Dm -Me -Fb +ps +ps +ps +Td +SR es -Oj -zj -fF -rq -Me -xi -ip -Jy -Hz +YP +YP +es +YP +YP +YP +Pz +es +PZ +Td +Qq rU -Al -Dw -eA -Me -Me -Me -ps +BS +Td +QK +yy +yy +qH +rU +rU +Td +Td +Td +Td +Td +Td ps OK -aN -aN -aN -aN -aN -aN +OK aN aN aN @@ -74226,47 +75331,47 @@ aN aN aN aN +aN +aN +aN +OK +OK ps ps ps ps ps -ps -ps -Me -zz -Jy -io -Zq -wF -Bc -Me -LG +Td +rq +es +eV es es +eV es es +eV es -Uk -Jy -ol -ol -Hz -lj -zE -Gp +wP +Td +Td +zc +Td +Td +ok +xG +yy qH -Me +RQ +rU +Td +EM +EM +EM +EM +Td ps -ps -ps -aN -aN -aN -aN -aN -aN -aN +OK aN aN aN @@ -74484,47 +75589,47 @@ aN aN aN aN +aN +aN +aN +OK OK OK ps ps ps -ps -Me -Mx -Cn -io -ZK -Sh -Bc -Me -XR +Td +LG es -Dk -zY es -zP -Me -Jy -rG -hU -LM -Me -Me -Me -Me -Me +es +es +es +es +es +es +es +hR +Td +pu +RQ +Up +Td +Sr +Rd +yy +qH +rU +rU +zc +rU +rU +RQ +TO +Td ps ps -aN -aN -aN -aN -aN -aN -aN -aN -aN +OK aN aN aN @@ -74743,45 +75848,45 @@ aN aN aN aN +aN +aN OK ps ps ps -Me -Me -Me -Me -Me -Me -Me -Me -qk +Td +Td +Td +Oj +zj +fF es -Vh -sH -es -Bn -Me -Jy -RX -RX -Jy -Me +VR +YP +Td +Td +Td +Td +Td +UN +pX +Gb +Td +rm +kW +kW +LE +rU +hf +Td +UG +UG +UG +UG +Td ps ps -ps -ps -ps -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +OK aN aN aN @@ -75001,44 +76106,44 @@ aN aN aN aN +aN +OK OK OK ps ps ps +Td +Td +Td +Td +Td +Td +Td +Td ps ps ps -ps -ps -Me -VW -es -es -es -es -es -Me -gS -xY -Me -Me -Me +Td +Td +Td +Td +Td +Td +Td +Td +Td +Td +Td +Td +Td +Td +Td +Td +Td ps ps OK -OK -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN aN aN aN @@ -75259,43 +76364,43 @@ aN aN aN aN -aN -OK -ps -ps -ps -ps -ps -ps -ps -Me -VR -es -xU -Jo -wN -hR -Me -Me -Me -Me -ps -ps ps OK OK -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +OK +OK +ps +ps +ps +ps +Td +ps +ps +ps +Td +ps +ps +ps +ps +ps +ps +ps +ps +ps +Td +ps +ps +ps +ps +ps +ps +ps +ps +ps +ps +ps +ps +ps aN aN aN @@ -75518,41 +76623,41 @@ aN aN aN aN +aN +aN OK OK ps ps ps +ps +ps +OK +ps +ps +ps OK ps -Me -Me -Me -Me -Me -Me -Me -Me ps ps -Me +ps +ps +ps +ps +Td +ps +ps +ps +ps +ps +ps +ps ps ps OK -OK ps -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +ps +OK aN aN aN @@ -75777,9 +76882,22 @@ aN aN aN aN +aN +aN +aN +aN +aN +aN +aN +aN +OK +OK +OK +OK +OK +OK +OK OK -ps -ps OK OK ps @@ -75788,26 +76906,13 @@ ps ps ps ps -ps -ps -ps -ps -Me -ps OK OK -ps -ps -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +OK +OK +OK +OK +OK aN aN aN @@ -76035,8 +77140,18 @@ aN aN aN aN -OK -OK +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN OK @@ -76045,23 +77160,13 @@ OK OK OK OK -OK -OK -aN -ps ps OK -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +OK +OK +OK +OK +OK aN aN aN @@ -76308,12 +77413,12 @@ aN aN aN aN -ps -aN -aN aN aN aN +OK +OK +OK aN aN aN diff --git a/code/_globalvars/mapping_vars.dm b/code/_globalvars/mapping_vars.dm index acc6042b5f0..281d279806d 100644 --- a/code/_globalvars/mapping_vars.dm +++ b/code/_globalvars/mapping_vars.dm @@ -22,6 +22,7 @@ GLOBAL_LIST_EMPTY(newplayer_start) GLOBAL_LIST_EMPTY(latejoin) GLOBAL_LIST_EMPTY(prisonwarp) //prisoners go to these GLOBAL_LIST_EMPTY(syndieprisonwarp) //contractor targets go to these +GLOBAL_LIST_EMPTY(antagextractwarp) // exfiltrating antags go here GLOBAL_LIST_EMPTY(backroomswarp) //backrooms hallucinators go to these GLOBAL_LIST_EMPTY(xeno_spawn)//Aliens spawn at these. GLOBAL_LIST_EMPTY(ertdirector) diff --git a/code/datums/outfits/outfit_ghostbar.dm b/code/datums/outfits/outfit_ghostbar.dm new file mode 100644 index 00000000000..617564cb2e3 --- /dev/null +++ b/code/datums/outfits/outfit_ghostbar.dm @@ -0,0 +1,94 @@ +/datum/outfit/admin/ghostbar_antag + name = "Ghostly Antagonist" + + l_ear = /obj/item/radio/headset/deadsay + l_pocket = /obj/item/stack/spacecash/c1000 + id = /obj/item/card/id/syndicate + backpack_contents = list( + /obj/item/storage/box/engineer = 1, + /obj/item/flashlight = 1 + ) + +/datum/outfit/admin/ghostbar_antag/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + . = ..() + if(visualsOnly) + return + + var/obj/item/card/id/our_id = H.wear_id + if(!istype(our_id)) + return + apply_to_card(our_id, H, list(ACCESS_MAINT_TUNNELS), name) + our_id.assignment = src.name + our_id.registered_name = H.real_name + our_id.sex = capitalize(H.gender) + our_id.age = H.age + our_id.name = "[our_id.registered_name]'s ID Card ([our_id.assignment])" + our_id.photo = get_id_photo(H) + our_id.owner_uid = H.UID() + our_id.owner_ckey = H.ckey + our_id.icon_state = "syndie" + H.job = src.name + + H.mind.assigned_role = src.name + H.mind.special_role = src.name + H.mind.offstation_role = TRUE + + H.sec_hud_set_ID() + +/datum/outfit/admin/ghostbar_antag/syndicate + name = "Syndicate Agent" + + uniform = /obj/item/clothing/under/syndicate + suit = /obj/item/clothing/suit/jacket/bomber/syndicate + back = /obj/item/storage/backpack + gloves = /obj/item/clothing/gloves/combat + shoes = /obj/item/clothing/shoes/combat + backpack_contents = list( + /obj/item/storage/box/engineer = 1, + /obj/item/flashlight = 1, + /obj/item/food/syndidonkpocket = 1, + /obj/item/gun/projectile/automatic/toy/pistol = 1, + /obj/item/ammo_box/magazine/toy/pistol = 2 + ) + +/datum/outfit/admin/ghostbar_antag/vampire + name = "Vampire" + + uniform = /obj/item/clothing/under/suit/black + suit = /obj/item/clothing/suit/draculacoat + neck = /obj/item/clothing/neck/cloak + back = /obj/item/storage/backpack + gloves = /obj/item/clothing/gloves/color/black + shoes = /obj/item/clothing/shoes/black + backpack_contents = list( + /obj/item/storage/box/engineer = 1, + /obj/item/reagent_containers/iv_bag/blood/o_plus = 3 + ) + +/datum/outfit/admin/ghostbar_antag/changeling + name = "Changeling" + + uniform = /obj/item/clothing/under/chameleon + suit = /obj/item/clothing/suit/chameleon + neck = /obj/item/clothing/neck/chameleon + back = /obj/item/storage/backpack/chameleon + gloves = /obj/item/clothing/gloves/chameleon + shoes = /obj/item/clothing/shoes/chameleon + backpack_contents = list( + /obj/item/storage/box/engineer = 1, + /obj/item/toy/foamblade = 1 + ) + +/datum/outfit/admin/ghostbar_antag/mindflayer + name = "Mindflayer" + + uniform = /obj/item/clothing/under/psysuit + suit = /obj/item/clothing/suit/blacktrenchcoat + neck = /obj/item/clothing/neck/cloak + back = /obj/item/storage/backpack + gloves = /obj/item/clothing/gloves/color/black + shoes = /obj/item/clothing/shoes/black + backpack_contents = list( + /obj/item/storage/box/engineer = 1, + /obj/item/toy/plushie/ipcplushie = 1 + ) diff --git a/code/datums/uplink_items/uplink_traitor.dm b/code/datums/uplink_items/uplink_traitor.dm index 55651388d52..e88a6423441 100644 --- a/code/datums/uplink_items/uplink_traitor.dm +++ b/code/datums/uplink_items/uplink_traitor.dm @@ -581,6 +581,14 @@ cost = 50 excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) +/datum/uplink_item/device_tools/extraction_beacon + name = "Extraction Flare" + desc = "A special flare used to call in an extraction portal. The portal takes time to generate, and will only work in certain rooms that it is pre-calibrated for. The Syndicate withholds the right to deny a portal to agents with certain objectives." + reference = "EXTF" + item = /obj/item/wormhole_jaunter/extraction + limited_stock = 1 + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) + /datum/uplink_item/device_tools/hyper_medipen name = "Hyper-regenerative Medipen" desc = "An autoinjector filled with a variety of medical chemicals. It rapidly heals conventional injuries and genetic damage, but loses potency just as quickly. May have side effects if multiple are used in quick succession." diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 74d6e7e6c20..4d5bbdcc099 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -72,6 +72,9 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) /datum/objective/proc/found_target() return target +/datum/objective/proc/is_valid_exfiltration() + return TRUE + /** * This is for objectives that need to register signals, so place them in here. */ @@ -215,6 +218,8 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) explanation_text = "Free Objective" /datum/objective/assassinate/check_completion() + if(..()) + return TRUE if(target?.current) if(target.current.stat == DEAD) return TRUE @@ -271,6 +276,8 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) return TARGET_INVALID_NOTHEAD /datum/objective/mutiny/check_completion() + if(..()) + return TRUE if(target?.current) if(target.current.stat == DEAD || !ishuman(target.current) || !target.current.ckey || !target.current.client) return TRUE @@ -334,6 +341,8 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) /datum/objective/debrain/check_completion() if(!target) // If it's a free objective. return TRUE + if(..()) + return TRUE if(!target.current || !isbrain(target.current)) return FALSE for(var/datum/mind/M in get_owners()) @@ -358,6 +367,8 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) /datum/objective/protect/check_completion() if(!target) //If it's a free objective. return TRUE + if(..()) + return TRUE if(target.current) if(target.current.stat == DEAD) return FALSE @@ -395,6 +406,9 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) return FALSE return SSshuttle.emergency.is_hijacked() +/datum/objective/hijack/is_valid_exfiltration() + return FALSE + /datum/objective/hijackclone name = "Hijack (with clones)" explanation_text = "Hijack the shuttle by ensuring only you (or your copies) escape." @@ -453,7 +467,9 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) explanation_text = "Escape on the shuttle or an escape pod alive and free." needs_target = FALSE -/datum/objective/escape/check_completion() +/datum/objective/escape/check_completion(exfilling = FALSE) + if(..()) + return TRUE var/list/owners = get_owners() for(var/datum/mind/M in owners) // These are mandatory conditions, they should come before the freebie conditions below. @@ -464,6 +480,8 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) return TRUE if(SSticker.mode.station_was_nuked) // If they escaped the blast somehow, let them win. return TRUE + if(exfilling) + return TRUE if(SSshuttle.emergency.mode < SHUTTLE_ENDGAME) return FALSE @@ -536,7 +554,9 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) // This objective should only be given to a single owner since only 1 person can have the ID card of the target. // We're fine to use `owner` instead of `get_owners()`. -/datum/objective/escape/escape_with_identity/check_completion() +/datum/objective/escape/escape_with_identity/check_completion(exfilling = FALSE) + if(..()) + return TRUE if(!target_real_name) return TRUE if(!ishuman(owner.current)) @@ -554,6 +574,8 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) needs_target = FALSE /datum/objective/survive/check_completion() + if(..()) + return TRUE for(var/datum/mind/M in get_owners()) if(QDELETED(M.current) || M.current.stat == DEAD || is_special_dead(M.current, check_silicon = FALSE)) return FALSE @@ -576,6 +598,11 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) /datum/objective/steal/found_target() return steal_target +/datum/objective/steal/is_valid_exfiltration() + if(istype(steal_target, /datum/theft_objective/nukedisc) || istype(steal_target, /datum/theft_objective/plutonium_core)) + return FALSE + return TRUE + /datum/objective/steal/proc/get_location() return steal_target.location_override || "an unknown area" @@ -651,6 +678,8 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) /datum/objective/steal/check_completion() if(!steal_target) return TRUE // Free Objective + if(..()) + return TRUE for(var/datum/mind/M in get_owners()) if(!M.current) @@ -733,6 +762,8 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) explanation_text = "Acquire [target_amount] compatible genomes. The 'Extract DNA Sting' can be used to stealthily get genomes without killing somebody." /datum/objective/absorb/check_completion() + if(..()) + return TRUE for(var/datum/mind/M in get_owners()) var/datum/antagonist/changeling/cling = M?.has_antag_datum(/datum/antagonist/changeling) if(cling?.absorbed_dna && (cling.absorbed_count >= target_amount)) @@ -758,6 +789,8 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) explanation_text = "Free Objective" /datum/objective/destroy/check_completion() + if(..()) + return TRUE if(target?.current) if(target.current.stat == DEAD || is_away_level(target.current.z) || !target.current.ckey) return TRUE @@ -778,6 +811,8 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) wanted_items = typecacheof(wanted_items) /datum/objective/steal_five_of_type/check_completion() + if(..()) + return TRUE var/stolen_count = 0 var/list/owners = get_owners() var/list/all_items = list() @@ -805,6 +840,8 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) ..() /datum/objective/steal_five_of_type/summon_magic/check_completion() + if(..()) + return TRUE var/stolen_count = 0 var/list/owners = get_owners() var/list/all_items = list() @@ -843,6 +880,8 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) explanation_text = "Accumulate at least [target_amount] total units of blood." /datum/objective/blood/check_completion() + if(..()) + return TRUE for(var/datum/mind/M in get_owners()) var/datum/antagonist/vampire/V = M.has_antag_datum(/datum/antagonist/vampire) if(V.bloodtotal >= target_amount) @@ -870,6 +909,8 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) explanation_text = "Accumulate at least [target_amount] worth of swarms." /datum/objective/swarms/check_completion() + if(..()) + return TRUE for(var/datum/mind/M in get_owners()) var/datum/antagonist/mindflayer/flayer = M.has_antag_datum(/datum/antagonist/mindflayer) return flayer?.total_swarms_gathered >= target_amount @@ -930,6 +971,8 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) needs_target = FALSE /datum/objective/potentially_backstabbed/check_completion() + if(..()) + return TRUE for(var/datum/mind/M in get_owners()) var/datum/antagonist/traitor/T = M.has_antag_datum(/datum/antagonist/traitor) for(var/datum/objective/our_objective in T.get_antag_objectives(FALSE)) diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 1adfb2f78c5..8067481defc 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -198,6 +198,13 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/newplayer_start) //Without this you sp spawner_list = GLOB.syndieprisonwarp return ..() +/obj/effect/landmark/spawner/antag_extract_warp + name = "antagextractwarp" + +/obj/effect/landmark/spawner/antag_extract_warp/Initialize(mapload) + spawner_list = GLOB.antagextractwarp + return ..() + /obj/effect/landmark/spawner/prisonwarp name = "prisonwarp" diff --git a/code/modules/antagonists/_common/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm index faace9e77df..180bdd41bb1 100644 --- a/code/modules/antagonists/_common/antag_datum.dm +++ b/code/modules/antagonists/_common/antag_datum.dm @@ -61,6 +61,8 @@ GLOBAL_LIST_EMPTY(antagonists) /// Do we have delayed objective giving? var/delayed_objectives = FALSE + /// The title of the players "boss", used for exfil strings + var/boss_title = "Operations" /datum/antagonist/New() GLOB.antagonists += src @@ -498,4 +500,24 @@ GLOBAL_LIST_EMPTY(antagonists) /datum/antagonist/proc/custom_blurb() return FALSE +/datum/antagonist/proc/exfiltrate(mob/living/carbon/human/extractor, obj/item/radio/radio) + return + +/datum/antagonist/proc/prepare_exfiltration(mob/user, obj/item/wormhole_jaunter/extraction/extraction_type = null) + // No extraction for certian steals/hijack + var/objectives = user.mind.get_all_objectives() + for(var/datum/objective/goal in objectives) + if(!goal.is_valid_exfiltration()) + to_chat(user, "The [boss_title] has deemed your objectives too delicate for an early extraction.") + return + + if(world.time < 60 MINUTES) // 60 minutes of no exfil + to_chat(user, "The [boss_title] is still preparing an exfiltration portal. Please wait another [round((36000 - world.time) / 600)] minutes before trying again.") + return + var/mob/living/L = user + if(!istype(L)) + return + var/obj/item/wormhole_jaunter/extraction/extractor = new extraction_type() + L.put_in_active_hand(extractor) + #undef SUCCESSFUL_DETACH diff --git a/code/modules/antagonists/_common/antag_exfiltration.dm b/code/modules/antagonists/_common/antag_exfiltration.dm new file mode 100644 index 00000000000..815494ba935 --- /dev/null +++ b/code/modules/antagonists/_common/antag_exfiltration.dm @@ -0,0 +1,613 @@ +// Traitor flare +/obj/item/wormhole_jaunter/extraction + name = "extraction flare" + icon = 'icons/obj/lighting.dmi' + desc = "A single-use extraction flare that will let you escape the station. One way trip." + icon_state = "flare-contractor" + item_state = "flare" + /// What areas can be extracted from? + var/list/extractable_areas = list() + /// Is there a roundstart delay? + var/delayed_extraction = TRUE + /// How long does the extraction take? + var/extraction_time = 90 SECONDS + /// Type of setup once a flare is lit + var/setup_type = /obj/effect/temp_visual/exfiltration + /// Type of portal spawned + var/portal_type = /obj/effect/portal/advanced/exfiltration + +/obj/item/wormhole_jaunter/extraction/Initialize(mapload) + . = ..() + var/list/possible_areas = list( + // Rooms + /area/station/hallway/primary/aft, + /area/station/engineering/atmos, + /area/station/public/arcade, + /area/station/maintenance/assembly_line, + /area/station/public/storage/tools/auxiliary, + /area/station/command/office/blueshield, + /area/station/supply/storage, + /area/station/service/chapel, + /area/station/service/chapel/office, + /area/station/service/clown, + /area/station/legal/courtroom, + /area/station/public/toilet, + /area/station/engineering/control, + /area/station/engineering/controlroom, + /area/station/hallway/secondary/exit, + /area/holodeck/alphadeck, + /area/station/service/hydroponics, + /area/station/service/library, + /area/station/service/mime, + /area/station/supply/miningdock, + /area/station/medical/morgue, + /area/station/public/storage/office, + /area/station/public/pet_store, + /area/station/public/storage/tools, + /area/station/public/mrchangs, + /area/station/science/research, + /area/station/security/checkpoint, + /area/station/engineering/tech_storage, + /area/station/command/teleporter, + /area/station/science/storage, + /area/station/science/misc_lab, + /area/station/science/xenobiology, + /area/station/turret_protected/aisat/interior, + /area/station/aisat/atmos, + /area/station/aisat/hall, + /area/station/aisat/service, + /area/station/service/bar, + /area/station/supply/office, + /area/station/medical/chemistry, + /area/station/command/office/ce, + /area/station/command/office/cmo, + /area/station/medical/cloning, + /area/station/medical/cryo, + /area/station/public/dorms, + /area/station/engineering/equipmentstorage, + /area/station/engineering/break_room, + /area/station/ai_monitored/storage/eva, + /area/station/supply/expedition, + /area/station/science/genetics, + /area/station/engineering/gravitygenerator, + /area/station/command/office/hop, + /area/station/command/meeting_room, + /area/station/service/kitchen, + /area/station/science/robotics/chargebay, + /area/station/medical/medbay, + /area/station/medical/medbay2, + /area/station/medical/medbay3, + /area/station/medical/reception, + /area/station/medical/storage, + /area/station/medical/sleeper, + /area/station/command/server, + /area/station/command/office/ntrep, + /area/station/medical/paramedic, + /area/station/hallway/primary/port, + /area/station/supply/qm, + /area/station/command/office/rd, + /area/station/science/rnd, + /area/station/science/robotics, + /area/station/medical/surgery/primary, + /area/station/medical/surgery/secondary, + /area/station/telecomms/chamber, + /area/station/engineering/secure_storage + ) + while(length(extractable_areas) < 3) + var/area/selected_area = pick_n_take(possible_areas) + for(var/area/potential in SSmapping.existing_station_areas) + if(potential.type != selected_area) + continue + extractable_areas += potential + break + +/obj/item/wormhole_jaunter/extraction/examine(mob/user) + . = ..() + if(isAntag(user)) + . += "The target extraction locations are:" + for(var/area/A in extractable_areas) + . += " - [A.name]" + +/obj/item/wormhole_jaunter/extraction/activate(mob/user) + if(!turf_check(user)) + return + + // Delay extractions + if(world.time < 60 MINUTES && delayed_extraction) // 60 minutes of no exfil + to_chat(user, "The exfiltration teleporter is calibrating. Please wait another [round((36000 - world.time) / 600)] minutes before trying again.") + return + + // Objective checks + var/denied = FALSE + var/is_target = FALSE + var/has_target_objective = FALSE + var/objectives = user.mind.get_all_objectives() + + // Check if you're the target of any other antags. If you are, using the beacon will find it jammed and turned to ash. + for(var/datum/objective/O in GLOB.all_objectives) + if(O.target != user.mind || istype(O, /datum/objective/protect)) + continue + denied = TRUE + is_target = TRUE + break + + // No extraction for NAD, Plutonium core theft, or Hijack + for(var/datum/objective/goal in objectives) + if(!goal.is_valid_exfiltration()) + denied = TRUE + + if(istype(goal, /datum/objective/potentially_backstabbed)) + has_target_objective = TRUE + + if(denied && is_target) + to_chat(user, "Someone or something has jammed your extraction beacon, forcing it to disintegrate early!") + if(!has_target_objective) + user.mind.add_mind_objective(/datum/objective/potentially_backstabbed, "Someone or something has jammed your extraction! Survive!") + var/list/messages = user.mind.prepare_announce_objectives(FALSE) + to_chat(user, chat_box_red(messages.Join("
"))) + new /obj/effect/decal/cleanable/ash(get_turf(src)) + qdel(src) + return + else if(denied) + to_chat(user, "Your objectives are too delicate for an early extraction.") + new /obj/effect/decal/cleanable/ash(get_turf(src)) + qdel(src) + return + + var/obj/effect/temp_visual/exfiltration/F = new setup_type(get_turf(src)) + show_activation_message(user) + user.drop_item() + forceMove(F) + log_and_message_admins("[user] activated an exfiltration flare.") + var/obj/item/radio/radio = new + radio.listening = FALSE + radio.follow_target = src + radio.config(list("Security" = 0)) + radio.autosay("Unknown portal beacon detected at [get_area(src.loc)].", "Automated Announcement", "Security") + qdel(radio) + addtimer(CALLBACK(src, PROC_REF(create_portal), user), extraction_time) + +/obj/item/wormhole_jaunter/extraction/turf_check(mob/user) + var/turf/device_turf = get_turf(user) + var/area/our_area = get_area(device_turf) + var/invalid_area = TRUE + for(var/area/A in extractable_areas) + if(istype(our_area, A)) + invalid_area = FALSE + break + + if(!device_turf || invalid_area) + to_chat(user, "You're having difficulties getting the [name] to work.") + return FALSE + return TRUE + +/obj/item/wormhole_jaunter/extraction/proc/create_portal(mob/user) + new /obj/effect/decal/cleanable/ash(get_turf(src)) + var/obj/effect/portal/advanced/exfiltration/P = new portal_type(get_turf(src), pick(GLOB.antagextractwarp), src, 30 SECONDS, user) + P.antag_mind = user.mind + qdel(src) + +/obj/item/wormhole_jaunter/extraction/emag_act(mob/user) + to_chat(user, "Emagging [src] has no effect.") + +/obj/item/wormhole_jaunter/extraction/chasm_react(mob/user) + return // This is not an instant getaway portal like the jaunter + +/obj/item/wormhole_jaunter/extraction/proc/show_activation_message(mob/user) + user.visible_message("[user] pulls out a black and gold flare and lights it.", + "You light an extraction flare, initiating the extraction process.") + +/obj/item/wormhole_jaunter/extraction/vampire + name = "blood chalice" + icon = 'icons/obj/items.dmi' + desc = "An unholy construct that will create a single-use portal that will let you escape the station. One way trip." + icon_state = "blood-chalice" + setup_type = /obj/effect/temp_visual/exfiltration/vampire + +/obj/item/wormhole_jaunter/extraction/vampire/show_activation_message(mob/user) + user.visible_message("[user] sets a blood-filled chalice on the ground. It begins to bubble ominously...", + "You set a blood-filled chalice on the ground. It begins to bubble ominously...") + +/obj/item/wormhole_jaunter/extraction/changeling + name = "writhing mass" + icon = 'icons/obj/items.dmi' + desc = "A mass of writhing flesh that will create a single-use portal that will let you escape the station. One way trip." + icon_state = "changeling_organ" + setup_type = /obj/effect/temp_visual/exfiltration/changeling + +/obj/item/wormhole_jaunter/extraction/changeling/show_activation_message(mob/user) + user.visible_message("[user] sets a grotesque fleshy mass on the floor.", + "You set a pulsing piece of yourself on the floor.") + +/obj/item/wormhole_jaunter/extraction/mindflayer + name = "nanite telepad" + desc = "A swarm of mindflayer nanites in the shape of a telepad that will create a single-use portal that will let you escape the station. One way trip." + icon_state = "flayer_telepad_base" + setup_type = /obj/effect/temp_visual/exfiltration/mindflayer + +/obj/item/wormhole_jaunter/extraction/changeling/show_activation_message(mob/user) + user.visible_message("[user] sets a strange telepad on the floor. It begins to unfold.", + "You push a button on [src], and watch as it begins to unfold.") + +/obj/item/wormhole_jaunter/extraction/admin + name = "advanced extraction flare" + desc = "An advanced single-use extraction flare that will let you escape the station quickly. One way trip." + delayed_extraction = FALSE + extraction_time = 5 SECONDS + setup_type = /obj/effect/temp_visual/exfiltration/admin + +// MARK: Traitor Flare +/obj/effect/temp_visual/exfiltration + name = "extraction flare" + layer = BELOW_MOB_LAYER + icon = 'icons/obj/lighting.dmi' + icon_state = "flare-contractor-on" + duration = 90.1 SECONDS + /// Sound that plays when activated + var/activation_sound = 'sound/goonstation/misc/matchstick_light.ogg' + /// Light emitted when activated + var/emitted_color = "#FFD165" + /// Does this one emit light by default? + var/start_lit = TRUE + +/obj/effect/temp_visual/exfiltration/Initialize(mapload) + . = ..() + playsound(loc, activation_sound, 50, TRUE) + if(start_lit) + set_light(8, l_color = emitted_color) + +// MARK: Vampire Chalice +/obj/effect/temp_visual/exfiltration/vampire + name = "bloody portal" + icon_state = "vampire-portal" + activation_sound = 'sound/magic/strings.ogg' + emitted_color = "#710C04" + +// MARK: Changeling Mass +/obj/effect/temp_visual/exfiltration/changeling + name = "writhing mass" + icon_state = "changeling-organ" + activation_sound = 'sound/effects/squelch1.ogg' + emitted_color = "#E79592" + +// MARK: Mindflayer telepad +/obj/effect/temp_visual/exfiltration/mindflayer + name = "mindflayer telepad" + desc = "A swarm of mindflayer nanites in the shape of a telepad that will create a single-use portal." + icon_state = "flayer_telepad_deploy" + activation_sound = 'sound/mecha/skyfall_power_up.ogg' + start_lit = FALSE + +/obj/effect/temp_visual/exfiltration/mindflayer/Initialize(mapload) + . = ..() + addtimer(CALLBACK(src, PROC_REF(blink)), 10 SECONDS) + +/obj/effect/temp_visual/exfiltration/mindflayer/proc/blink() + icon_state = "flayer_telepad_blink" + do_sparks(4, 0, src) + addtimer(CALLBACK(src, PROC_REF(no_blink)), 5 SECONDS) + +/obj/effect/temp_visual/exfiltration/mindflayer/proc/no_blink() + icon_state = "flayer_telepad_base" + do_sparks(4, 0, src) + set_light(3, 0.5, LIGHT_COLOR_DARKGREEN) + new /obj/effect/flayer_telepad_binary_effect(get_turf(src)) + +/obj/effect/flayer_telepad_binary_effect + icon = 'icons/obj/lighting.dmi' + icon_state = "qpad-charge" + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + +/obj/effect/flayer_telepad_binary_effect/Initialize(mapload) + . = ..() + appearance_flags |= KEEP_TOGETHER + var/icon/our_icon = icon('icons/obj/lighting.dmi', "qpad-charge") + var/icon/alpha_mask + alpha_mask = new('icons/effects/effects.dmi', "scanline") // Scanline effect. + our_icon.AddAlphaMask(alpha_mask) // Finally, let's mix in a distortion effect. + icon = our_icon + color = list(0.2,0.45,0,0, 0,1,0,0, 0,0,0.2,0, 0,0,0,1, 0,0,0,0) + var/mutable_appearance/theme_icon = mutable_appearance('icons/misc/pic_in_pic.dmi', "room_background", appearance_flags = appearance_flags | RESET_TRANSFORM) + theme_icon.blend_mode = BLEND_INSET_OVERLAY + overlays += theme_icon + addtimer(CALLBACK(src, PROC_REF(progress_step)), 1 SECONDS) + +/obj/effect/flayer_telepad_binary_effect/proc/progress_step() + new /obj/effect/flayer_telepad_binary_effect_secondary(get_turf(src)) + qdel(src) + +/obj/effect/flayer_telepad_binary_effect_secondary + icon = 'icons/obj/lighting.dmi' + icon_state = "qpad-charge2" + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + +/obj/effect/flayer_telepad_binary_effect_secondary/Initialize(mapload) + . = ..() + appearance_flags |= KEEP_TOGETHER + var/icon/our_icon = icon('icons/obj/lighting.dmi', "qpad-charge2") + var/icon/alpha_mask + alpha_mask = new('icons/effects/effects.dmi', "scanline") // Scanline effect. + our_icon.AddAlphaMask(alpha_mask) // Finally, let's mix in a distortion effect. + icon = our_icon + color = list(0.2,0.45,0,0, 0,1,0,0, 0,0,0.2,0, 0,0,0,1, 0,0,0,0) + var/mutable_appearance/theme_icon = mutable_appearance('icons/misc/pic_in_pic.dmi', "room_background", appearance_flags = appearance_flags | RESET_TRANSFORM) + theme_icon.blend_mode = BLEND_INSET_OVERLAY + overlays += theme_icon + addtimer(CALLBACK(src, PROC_REF(sparky)), 4 SECONDS) + addtimer(CALLBACK(src, PROC_REF(progress_step)), 24 SECONDS) + addtimer(CALLBACK(src, PROC_REF(complete_portal)), 74 SECONDS) + +/obj/effect/flayer_telepad_binary_effect_secondary/proc/sparky() + new /obj/effect/flayer_binary_portal(get_turf(src)) + do_sparks(4, 0, src) + +/obj/effect/flayer_telepad_binary_effect_secondary/proc/progress_step() + new /obj/effect/flayer_telepad_binary_effect_tertiary(get_turf(src)) + +/obj/effect/flayer_telepad_binary_effect_secondary/proc/complete_portal() + qdel(src) + +/obj/effect/flayer_binary_portal + icon_state = "bluespace" + icon = 'icons/obj/projectiles.dmi' + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + pixel_y = 24 + +/obj/effect/flayer_binary_portal/Initialize(mapload) + . = ..() + // transform *= 0.25 + appearance_flags |= KEEP_TOGETHER | PIXEL_SCALE + var/icon/our_icon = icon('icons/obj/projectiles.dmi', "bluespace") + var/icon/alpha_mask + alpha_mask = new('icons/effects/effects.dmi', "scanline") // Scanline effect. + our_icon.AddAlphaMask(alpha_mask) // Finally, let's mix in a distortion effect. + icon = our_icon + color = list(0.2,0.45,0,0, 0,1,0,0, 0,0,0.2,0, 0,0,0,1, 0,0,0,0) + var/mutable_appearance/theme_icon = mutable_appearance('icons/misc/pic_in_pic.dmi', "room_background", appearance_flags = appearance_flags | RESET_TRANSFORM) + theme_icon.blend_mode = BLEND_INSET_OVERLAY + overlays += theme_icon + addtimer(CALLBACK(src, PROC_REF(wormhole)), 25 SECONDS) + animate(src, transform = matrix().Scale(0.25), time = 0.1 SECONDS) + animate(transform = matrix().Scale(1, 2), time = 24 SECONDS) + animate(transform = matrix().Scale(0.5), time = 0.9 SECONDS) + +/obj/effect/flayer_binary_portal/proc/wormhole() + new /obj/effect/flayer_binary_portal_secondary(get_turf(src)) + do_sparks(4, 0, src) + qdel(src) + +/obj/effect/flayer_binary_portal_secondary + icon_state = "kinesis" + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + pixel_y = 24 + +/obj/effect/flayer_binary_portal_secondary/Initialize(mapload) + . = ..() + set_light(5, 2, LIGHT_COLOR_DARKGREEN) + var/obj/effect/warp_effect/bsg/warp = new /obj/effect/warp_effect/bsg(get_turf(src)) + warp.pixel_y = 24 + appearance_flags |= KEEP_TOGETHER | PIXEL_SCALE + var/icon/our_icon = icon('icons/effects/effects.dmi', "kinesis") + var/icon/alpha_mask + alpha_mask = new('icons/effects/effects.dmi', "scanline") // Scanline effect. + our_icon.AddAlphaMask(alpha_mask) // Finally, let's mix in a distortion effect. + icon = our_icon + color = list(0.2,0.45,0,0, 0,1,0,0, 0,0,0.2,0, 0,0,0,1, 0,0,0,0) + var/mutable_appearance/theme_icon = mutable_appearance('icons/misc/pic_in_pic.dmi', "room_background", appearance_flags = appearance_flags | RESET_TRANSFORM) + theme_icon.blend_mode = BLEND_INSET_OVERLAY + overlays += theme_icon + addtimer(CALLBACK(src, PROC_REF(complete_portal)), 45 SECONDS) + animate(src, transform = matrix().Scale(0.3), time = 0.1 SECONDS) + animate(transform = matrix().Scale(0.3, 0.6), time = 5 SECONDS) + animate(transform = matrix().Scale(0.6, 1.2), time = 15 SECONDS) + +/obj/effect/flayer_binary_portal_secondary/proc/complete_portal() + animate(src, transform = matrix().Scale(0.1), time = 0.1 SECONDS) + do_sparks(4, 0, src) + qdel(src) + +/obj/effect/flayer_telepad_binary_effect_tertiary + icon = 'icons/obj/lighting.dmi' + icon_state = "qpad-beam" + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + +/obj/effect/flayer_telepad_binary_effect_tertiary/Initialize(mapload) + . = ..() + appearance_flags |= KEEP_TOGETHER + var/icon/our_icon = icon('icons/obj/lighting.dmi', "qpad-beam") + var/icon/alpha_mask + alpha_mask = new('icons/effects/effects.dmi', "scanline") // Scanline effect. + our_icon.AddAlphaMask(alpha_mask) // Finally, let's mix in a distortion effect. + icon = our_icon + color = list(0.2,0.45,0,0, 0,1,0,0, 0,0,0.2,0, 0,0,0,1, 0,0,0,0) + var/mutable_appearance/theme_icon = mutable_appearance('icons/misc/pic_in_pic.dmi', "room_background", appearance_flags = appearance_flags | RESET_TRANSFORM) + theme_icon.blend_mode = BLEND_INSET_OVERLAY + overlays += theme_icon + addtimer(CALLBACK(src, PROC_REF(complete_portal)), 50 SECONDS) + +/obj/effect/flayer_telepad_binary_effect_tertiary/proc/complete_portal() + qdel(src) + +// MARK: Debug/Admin +/obj/effect/temp_visual/exfiltration/admin + duration = 5.1 SECONDS + +// MARK: Extraction Portal +/obj/effect/portal/advanced/exfiltration + name = "exfiltration portal" + icon_state = "portal-syndicate" + one_use = TRUE + /// The mind of the exfiltrating antag. + var/datum/mind/antag_mind = null + /// Radio for handling extraction taunts + var/obj/item/radio/radio + /// Did we succeed? + var/exfil_success = FALSE + +/obj/effect/portal/advanced/exfiltration/Initialize(mapload) + . = ..() + radio = new(src) + radio.listening = FALSE + radio.follow_target = src + radio.config(list("Security" = 0)) + +/obj/effect/portal/advanced/exfiltration/Destroy() + if(exfil_success) + return ..() + if(antag_mind) + log_and_message_admins("[antag_mind.original_mob_name] failed to exfiltrate.") + SSblackbox.record_feedback("tally", "exfiltration", 1, "exfiltration_failure") + return ..() + +/obj/effect/portal/advanced/exfiltration/can_teleport(atom/movable/A) + var/mob/living/M = A + if(!istype(M)) + return FALSE + return ..() + +/obj/effect/portal/advanced/exfiltration/attempt_teleport(atom/movable/victim, turf/destination, variance = 0, force_teleport = TRUE) + if(teleports_this_cycle >= MAX_ALLOWED_TELEPORTS_PER_PROCESS) + return + var/use_effects = world.time >= effect_cooldown + var/effect = null // Will result in the default effect being used + if(!use_effects) + effect = NONE // No effect + + // Filter out non-antags + var/mob/living/user = victim + if(!istype(user)) + return FALSE + var/datum/mind/user_mind = user.mind + if(user_mind != antag_mind) + to_chat(user, "You jump through the portal! Right before you see the other side, you feel an immense, sharp pain in your head!") + var/list/L = get_destinations() + if(!length(L)) + to_chat(user, "[src] found no beacons in the sector to target.") + return + var/random_destination = pick(L) + if(!do_teleport(victim, random_destination, 2, force_teleport, effect, effect, bypass_area_flag = ignore_tele_proof_area_setting)) + invalid_teleport() + return FALSE + fail_extraction(user) + effect_cooldown = world.time + 0.5 SECONDS + teleports_this_cycle++ + return FALSE + + // For the antag + if(!do_teleport(victim, destination, variance, force_teleport, effect, effect, bypass_area_flag = ignore_tele_proof_area_setting)) + invalid_teleport() + return FALSE + pass_extraction(user) + return TRUE + +/obj/effect/portal/advanced/exfiltration/proc/get_destinations() + var/list/destinations = list() + + for(var/obj/item/beacon/B in GLOB.beacons) + var/turf/T = get_turf(B) + if(is_station_level(T.z)) + destinations += B + + return destinations + +/obj/effect/portal/advanced/exfiltration/proc/fail_extraction(mob/living/schmuck) + to_chat(schmuck, "You feel immense pain!") + log_and_message_admins("[schmuck] went through an exfiltration portal they didn't control.") + schmuck.Paralyse(30 SECONDS) + schmuck.EyeBlind(35 SECONDS) + schmuck.EyeBlurry(35 SECONDS) + schmuck.AdjustConfused(35 SECONDS) + // Same effects as if they got contracted + var/obj/item/organ/external/injury_target + if(prob(20)) + injury_target = schmuck.get_organ(pick(BODY_ZONE_PRECISE_R_HAND, BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_FOOT, BODY_ZONE_PRECISE_L_FOOT)) + if(!injury_target) + return + schmuck.adjustBruteLoss(40) + schmuck.adjustBrainLoss(25) + injury_target.droplimb() + to_chat(schmuck, "You were interrogated by your captors before being sent back! Oh god, something's missing!") + return + // Species specific punishments first + if(ismachineperson(schmuck)) + schmuck.emp_act(EMP_HEAVY) + schmuck.adjustBrainLoss(30) + to_chat(schmuck, "You were interrogated by your captors before being sent back! You feel like some of your components are loose!") + return + schmuck.adjustBruteLoss(40) + schmuck.adjustBrainLoss(25) + if(isslimeperson(schmuck)) + injury_target = schmuck.get_organ(pick(BODY_ZONE_PRECISE_R_HAND, BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_FOOT, BODY_ZONE_PRECISE_L_FOOT)) + if(!injury_target) + return + injury_target.cause_internal_bleeding() + injury_target = schmuck.get_organ(BODY_ZONE_CHEST) + injury_target.cause_internal_bleeding() + to_chat(schmuck, "You were interrogated by your captors before being sent back! You feel like your inner membrane has been punctured!") + return + if(prob(25)) + injury_target = schmuck.get_organ(BODY_ZONE_CHEST) + injury_target.fracture() + else + injury_target = schmuck.get_organ(pick(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_R_LEG)) + if(!injury_target) + return + injury_target.fracture() + injury_target.cause_internal_bleeding() + +/obj/effect/portal/advanced/exfiltration/proc/pass_extraction(mob/living/M) + // Freeze objectives + for(var/datum/objective/objective in antag_mind.get_all_objectives(include_team = FALSE)) + if(istype(objective, /datum/objective/escape)) + var/datum/objective/escape/escape_alive = objective + escape_alive.completed = escape_alive.check_completion(exfilling = TRUE) + continue + objective.completed = objective.check_completion() + // Handle syndicate barification + log_and_message_admins("[M] extracted using an exfiltration portal.") + exfil_success = TRUE + SSblackbox.record_feedback("tally", "exfiltration", 1, "exfiltration_success") + prepare_ghosting(M) + +/obj/effect/portal/advanced/exfiltration/proc/prepare_ghosting(mob/living/carbon/human/extractor) + if(!istype(extractor)) + return + // Remove all clothing and bio chips + for(var/obj/item/I in extractor) + qdel(I) + + // Remove cybernetic implants + for(var/obj/item/organ/internal/cyberimp/I in extractor.internal_organs) + // Greys get to keep their implant + if(isgrey(extractor) && istype(I, /obj/item/organ/internal/cyberimp/brain/speech_translator)) + continue + // IPCs keep their implant + if(ismachineperson(extractor) && istype(I, /obj/item/organ/internal/cyberimp/arm/power_cord)) + continue + // Try removing it + I = I.remove(extractor) + + // Remove martial arts + for(var/datum/martial_art/MA in extractor.mind.known_martial_arts) + MA.remove(extractor) + + // Equip outfits and remove spells + var/datum/mind/extractor_mind = extractor.mind + for(var/datum/antagonist/antag in extractor_mind.antag_datums) + antag.exfiltrate(extractor, radio) + + // Apply traits + ADD_TRAIT(extractor, TRAIT_PACIFISM, GHOST_ROLE) + ADD_TRAIT(extractor, TRAIT_RESPAWNABLE, GHOST_ROLE) + var/obj/item/bio_chip/dust/I = new + I.implant(extractor, null) + + if(extractor.mind) + if(extractor.mind.initial_account) + GLOB.station_money_database.delete_user_account(extractor.mind.initial_account.account_number, "NAS Trurl Financial Services", FALSE) + if(extractor.mind && extractor.mind.assigned_role) + // Handle job slot + var/job = extractor.mind.assigned_role + + SSjobs.FreeRole(job) + diff --git a/code/modules/antagonists/changeling/datum_changeling.dm b/code/modules/antagonists/changeling/datum_changeling.dm index 4bb5a165943..1ee3e39a9dd 100644 --- a/code/modules/antagonists/changeling/datum_changeling.dm +++ b/code/modules/antagonists/changeling/datum_changeling.dm @@ -50,6 +50,7 @@ RESTRICT_TYPE(/datum/antagonist/changeling) var/regenerating = FALSE blurb_text_color = COLOR_PURPLE blurb_text_outline_width = 1 + boss_title = "Greater Hivemind" /datum/antagonist/changeling/New() ..() @@ -186,6 +187,14 @@ RESTRICT_TYPE(/datum/antagonist/changeling) chem_charges = clamp(0, chem_charges + chem_recharge_rate - chem_recharge_slowdown, chem_storage) update_chem_charges_ui(H) +/datum/antagonist/changeling/exfiltrate(mob/living/carbon/human/extractor, obj/item/radio/radio) + remove_changeling_powers(FALSE) + var/datum/action/changeling/power = new /datum/action/changeling/transform + power.Grant(extractor) + extractor.equipOutfit(/datum/outfit/admin/ghostbar_antag/changeling) + radio.autosay("--ZZZT!- Welcome home, [extractor.real_name]. -ZZT!-", "Changeling Hive", "Security") + SSblackbox.record_feedback("tally", "successful_extraction", 1, "Changeling") + /datum/antagonist/changeling/proc/update_chem_charges_ui(mob/living/carbon/human/H = owner.current) if(H.hud_used?.lingchemdisplay) H.hud_used.lingchemdisplay.invisibility = 0 diff --git a/code/modules/antagonists/changeling/powers/exfilling.dm b/code/modules/antagonists/changeling/powers/exfilling.dm new file mode 100644 index 00000000000..0961f370f9e --- /dev/null +++ b/code/modules/antagonists/changeling/powers/exfilling.dm @@ -0,0 +1,15 @@ +/datum/action/changeling/exfiltration + name = "Generate Extraction Mass" + desc = "We separate a specialized organ that will generate an extraction portal. Costs 30 chemicals." + helptext = "Creates a fleshy mass that can be used in certain areas to create a portal to leave the station early." + button_icon = 'icons/obj/items.dmi' + button_icon_state = "changeling-organ" + chemical_cost = 30 + req_human = TRUE + power_type = CHANGELING_INNATE_POWER + +// Create extraction mass +/datum/action/changeling/exfiltration/sting_action(mob/living/user) + cling.prepare_exfiltration(user, /obj/item/wormhole_jaunter/extraction/changeling) + cling.remove_specific_power(/datum/action/changeling/exfiltration) + return TRUE diff --git a/code/modules/antagonists/mind_flayer/flayer_datum.dm b/code/modules/antagonists/mind_flayer/flayer_datum.dm index 4f01fecb32f..bb15ef379fa 100644 --- a/code/modules/antagonists/mind_flayer/flayer_datum.dm +++ b/code/modules/antagonists/mind_flayer/flayer_datum.dm @@ -27,6 +27,7 @@ var/can_pick_capstone = TRUE /// Have we notified that our victim does not give swarms from draining var/has_notified = FALSE + boss_title = "Master Mindflayer" /datum/antagonist/mindflayer/New() . = ..() @@ -60,6 +61,13 @@ add_antag_objective(/datum/objective/swarms) forge_basic_objectives() +/datum/antagonist/mindflayer/exfiltrate(mob/living/carbon/human/extractor, obj/item/radio/radio) + remove_all_abilities() + remove_all_passives() + extractor.equipOutfit(/datum/outfit/admin/ghostbar_antag/mindflayer) + radio.autosay("--ZZZT!- Excellent job, [extractor.real_name]. Proceed to -^%&!-ZZT!-", "Master Flayer", "Security") + SSblackbox.record_feedback("tally", "successful_extraction", 1, "Mindflayer") + /datum/antagonist/mindflayer/proc/get_swarms() return usable_swarms diff --git a/code/modules/antagonists/mind_flayer/powers/flayer_stealth_powers.dm b/code/modules/antagonists/mind_flayer/powers/flayer_stealth_powers.dm index add1ff5f552..d1927f51bca 100644 --- a/code/modules/antagonists/mind_flayer/powers/flayer_stealth_powers.dm +++ b/code/modules/antagonists/mind_flayer/powers/flayer_stealth_powers.dm @@ -221,3 +221,19 @@ borg.make_mindflayer_robot(user) return TRUE + +/datum/spell/flayer/self/extraction + name = "Nanite Portal Generator" + desc = "Allows us to use our nanites to create an extraction portal." + action_icon = 'icons/obj/lighting.dmi' + action_icon_state = "flayer_telepad_base" + power_type = FLAYER_PURCHASABLE_POWER + base_cooldown = 2 SECONDS + var/used = FALSE + +/datum/spell/flayer/self/extraction/cast(list/targets, mob/user) + if(used) + to_chat(user, "You have already attempted to create a portal generator!") + return + flayer.prepare_exfiltration(user, /obj/item/wormhole_jaunter/extraction/mindflayer) + used = TRUE diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index 99e8cfdb16b..1275444cc19 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -17,6 +17,7 @@ RESTRICT_TYPE(/datum/antagonist/traitor) var/give_uplink = TRUE blurb_r = 200 blurb_a = 0.75 + boss_title = "Syndicate Operations" /// Have we / are we sending a backstab message at this time. If we are, do not send another. var/sending_backstab = FALSE @@ -116,6 +117,20 @@ RESTRICT_TYPE(/datum/antagonist/traitor) else forge_human_objectives() +/datum/antagonist/traitor/exfiltrate(mob/living/carbon/human/extractor, obj/item/radio/radio) + extractor.equipOutfit(/datum/outfit/admin/ghostbar_antag/syndicate) + // Remove mindslaves + var/list/mindslaves = SSticker.mode.implanted + for(var/datum/mind/possible_slave in mindslaves) + for(var/datum/antagonist/slavetag in possible_slave.antag_datums) + if(!istype(slavetag, /datum/antagonist/mindslave)) + continue + var/datum/antagonist/mindslave/slave = slavetag + if(slave.master == extractor.mind) + possible_slave.remove_antag_datum(/datum/antagonist/mindslave/implant) + + radio.autosay("--ZZZT!- Good work, $@gent [extractor.real_name]. Return to -^%&!-ZZT!-", "Syndicate Operations", "Security") + SSblackbox.record_feedback("tally", "successful_extraction", 1, "Traitor") /** * Create and assign a full set of randomized human traitor objectives. */ diff --git a/code/modules/antagonists/vampire/vamp_datum.dm b/code/modules/antagonists/vampire/vamp_datum.dm index fb622af08c5..e82586da3b3 100644 --- a/code/modules/antagonists/vampire/vamp_datum.dm +++ b/code/modules/antagonists/vampire/vamp_datum.dm @@ -24,6 +24,7 @@ RESTRICT_TYPE(/datum/antagonist/vampire) /datum/spell/vampire/glare = 0, /datum/vampire_passive/vision = 100, /datum/spell/vampire/self/specialize = 150, + /datum/spell/vampire/self/exfiltrate = 150, /datum/vampire_passive/regen = 200, /datum/vampire_passive/vision/advanced = 500) @@ -34,6 +35,7 @@ RESTRICT_TYPE(/datum/antagonist/vampire) blurb_g = 221 blurb_b = 138 blurb_a = 1 + boss_title = "Master Vampire" /datum/antagonist/vampire/Destroy(force, ...) draining = null @@ -95,6 +97,23 @@ RESTRICT_TYPE(/datum/antagonist/vampire) REMOVE_TRAITS_IN(owner.current, "vampire") UnregisterSignal(owner, COMSIG_ATOM_HOLY_ATTACK) +/datum/antagonist/vampire/exfiltrate(mob/living/carbon/human/extractor, obj/item/radio/radio) + remove_all_powers() + // Remove thralls + if(istype(subclass, SUBCLASS_DANTALION)) + var/list/thralls = SSticker.mode.vampire_enthralled + for(var/datum/mind/possible_thrall in thralls) + for(var/datum/antagonist/slavetag in possible_thrall.antag_datums) + if(!istype(slavetag, /datum/antagonist/mindslave)) + continue + var/datum/antagonist/mindslave/slave = slavetag + if(slave.master == extractor.mind) + possible_thrall.remove_antag_datum(/datum/antagonist/mindslave/thrall) + + extractor.equipOutfit(/datum/outfit/admin/ghostbar_antag/vampire) + radio.autosay("--ZZZT!- Wonderfully done, [extractor.real_name]. Welcome to -^%&!-ZZT!-", "Ancient Vampire", "Security") + SSblackbox.record_feedback("tally", "successful_extraction", 1, "Vampire") + #define BLOOD_GAINED_MODIFIER 0.5 /datum/antagonist/vampire/proc/handle_bloodsucking(mob/living/carbon/human/H, suck_rate = 5 SECONDS) diff --git a/code/modules/antagonists/vampire/vampire_powers/vampire_powers.dm b/code/modules/antagonists/vampire/vampire_powers/vampire_powers.dm index ba7530a63e8..0852be171d5 100644 --- a/code/modules/antagonists/vampire/vampire_powers/vampire_powers.dm +++ b/code/modules/antagonists/vampire/vampire_powers/vampire_powers.dm @@ -108,6 +108,22 @@ return TRUE +/datum/spell/vampire/self/exfiltrate + name = "Conjure Blood Chalice" + desc = "Congeal blood into a chalice that will generate a portal away from the station." + gain_desc = "You can now decide to leave the station." + base_cooldown = 2 SECONDS + action_icon = 'icons/obj/items.dmi' + action_icon_state = "blood-chalice" + var/used = FALSE + +/datum/spell/vampire/self/exfiltrate/cast(mob/user) + if(used) + to_chat(user, "You have already attempted to create a blood chalice!") + return + var/datum/antagonist/vampire/vamp = user.mind.has_antag_datum(/datum/antagonist/vampire) + vamp.prepare_exfiltration(user, /obj/item/wormhole_jaunter/extraction/vampire) + used = TRUE /datum/spell/vampire/self/specialize name = "Choose Specialization" diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index 020e33d39fc..8e70528a470 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/icons/obj/lighting.dmi b/icons/obj/lighting.dmi index 41bfe3ae6e3..e76bc79e775 100644 Binary files a/icons/obj/lighting.dmi and b/icons/obj/lighting.dmi differ diff --git a/paradise.dme b/paradise.dme index 3e10ac344e4..f768390df1b 100644 --- a/paradise.dme +++ b/paradise.dme @@ -701,6 +701,7 @@ #include "code\datums\outfits\outfit.dm" #include "code\datums\outfits\outfit_admin.dm" #include "code\datums\outfits\outfit_debug.dm" +#include "code\datums\outfits\outfit_ghostbar.dm" #include "code\datums\outfits\plasmamen_outfits.dm" #include "code\datums\outfits\vv_outfit.dm" #include "code\datums\proximity\advanced_proximity_monitor.dm" @@ -1663,6 +1664,7 @@ #include "code\modules\admin\verbs\SDQL2\SDQL_2_parser.dm" #include "code\modules\admin\verbs\SDQL2\useful_procs.dm" #include "code\modules\antagonists\_common\antag_datum.dm" +#include "code\modules\antagonists\_common\antag_exfiltration.dm" #include "code\modules\antagonists\_common\antag_helpers.dm" #include "code\modules\antagonists\_common\antag_hud.dm" #include "code\modules\antagonists\_common\antag_spawner.dm" @@ -1685,6 +1687,7 @@ #include "code\modules\antagonists\changeling\powers\digitalcamo.dm" #include "code\modules\antagonists\changeling\powers\environmental_adaption.dm" #include "code\modules\antagonists\changeling\powers\epinephrine.dm" +#include "code\modules\antagonists\changeling\powers\exfilling.dm" #include "code\modules\antagonists\changeling\powers\fakedeath.dm" #include "code\modules\antagonists\changeling\powers\fleshmend.dm" #include "code\modules\antagonists\changeling\powers\hivemind.dm"