From 0604be180e2efb1481865f53c9535841da05b264 Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Wed, 1 Feb 2023 13:05:48 +1100 Subject: [PATCH 1/2] First pass on drake map. Expanding on xenofauna. --- code/game/area/Space Station 13 areas.dm | 4 + code/game/jobs/access_datum.dm | 6 + code/game/jobs/job/science.dm | 14 +- .../game/objects/items/devices/radio/radio.dm | 2 +- .../items/weapons/id cards/station_ids.dm | 2 +- .../objects/items/weapons/storage/firstaid.dm | 15 + maps/cynosure/cynosure-1.dmm | 231 +++- maps/cynosure/cynosure-2.dmm | 1006 +++++++++++++---- maps/cynosure/cynosure_jobs.dm | 4 +- maps/cynosure/cynosure_presets.dm | 4 +- maps/cynosure/structures/closets/misc.dm | 43 + maps/southern_cross/southern_cross_presets.dm | 4 +- maps/~map_system/maps.dm | 2 +- 13 files changed, 1091 insertions(+), 246 deletions(-) diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 5ec1b7fff3..f4a767607d 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -1993,6 +1993,10 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "\improper Xenoflora Lab" icon_state = "xeno_f_lab" +/area/rnd/xenobiology/xenofauna + name = "\improper Xenofauna Lab" + icon_state = "xeno_f_lab" + /area/rnd/storage name = "\improper Toxins Storage" icon_state = "toxstorage" diff --git a/code/game/jobs/access_datum.dm b/code/game/jobs/access_datum.dm index c61da4e6dc..35e5130e9e 100644 --- a/code/game/jobs/access_datum.dm +++ b/code/game/jobs/access_datum.dm @@ -318,6 +318,12 @@ var/global/const/access_xenobiology = 55 desc = "Xenobiology Lab" region = ACCESS_REGION_RESEARCH +var/global/const/access_xenofauna = 67 +/datum/access/xenofauna + id = access_xenofauna + desc = "Xenofauna Lab" + region = ACCESS_REGION_RESEARCH + var/global/const/access_ce = 56 /datum/access/ce id = access_ce diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index ac2fb4b174..575119edd1 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -17,11 +17,11 @@ economic_modifier = 15 access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue, access_tox_storage, access_teleporter, access_sec_doors, - access_research, access_robotics, access_xenobiology, access_ai_upload, access_tech_storage, + access_research, access_robotics, access_xenobiology, access_xenofauna, access_ai_upload, access_tech_storage, access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_network) minimal_access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue, access_tox_storage, access_teleporter, access_sec_doors, - access_research, access_robotics, access_xenobiology, access_ai_upload, access_tech_storage, + access_research, access_robotics, access_xenobiology, access_xenofauna, access_ai_upload, access_tech_storage, access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_network) minimum_character_age = 25 @@ -57,7 +57,7 @@ supervisors = "the Research Director" selection_color = "#633D63" economic_modifier = 7 - access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_xenoarch) + access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_xenofauna, access_xenoarch) minimal_access = list(access_tox, access_tox_storage, access_research, access_xenoarch) min_age_by_species = list(SPECIES_PROMETHEAN = 2) banned_job_species = list(SPECIES_VOX, "digital") @@ -102,8 +102,8 @@ supervisors = "the Research Director" selection_color = "#633D63" economic_modifier = 7 - access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_hydroponics) - minimal_access = list(access_research, access_xenobiology, access_hydroponics, access_tox_storage) + access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_xenofauna, access_hydroponics) + minimal_access = list(access_research, access_xenobiology, access_xenofauna, access_hydroponics, access_tox_storage) banned_job_species = list(SPECIES_VOX, "digital") minimal_player_age = 14 @@ -125,8 +125,8 @@ /datum/alt_title/xenovet title = "Xenofauna Technician" - title_blurb = "A Xenofauna Technician works with the alien fauna living in the territory around the station, often out in the field. They are also responsible \ - for training and tending to the station's small drake population." + title_blurb = "A Xenofauna Technician works with the alien fauna living in the territory around the station, heading out in the field to tag and assess the \ + local animal populations. They are also responsible for training and tending to the station's small drake population." ////////////////////////////////// // Roboticist diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index c97dd02078..22c606dc8a 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -10,7 +10,7 @@ var/global/list/default_internal_channels = list( num2text(MED_I_FREQ) = list(access_medical_equip), num2text(SEC_FREQ) = list(access_security), num2text(SEC_I_FREQ) = list(access_security), - num2text(SCI_FREQ) = list(access_tox,access_robotics,access_xenobiology), + num2text(SCI_FREQ) = list(access_tox,access_robotics,access_xenobiology,access_xenofauna), num2text(SUP_FREQ) = list(access_cargo), num2text(SRV_FREQ) = list(access_janitor, access_hydroponics) ) diff --git a/code/game/objects/items/weapons/id cards/station_ids.dm b/code/game/objects/items/weapons/id cards/station_ids.dm index 9636ff2268..8136615138 100644 --- a/code/game/objects/items/weapons/id cards/station_ids.dm +++ b/code/game/objects/items/weapons/id cards/station_ids.dm @@ -172,7 +172,7 @@ assignment = "Synthetic" access = list( access_synth, access_mining, access_mining_station, access_mining_office, access_research, - access_xenoarch, access_xenobiology, access_external_airlocks, access_robotics, access_tox, + access_xenoarch, access_xenobiology, access_xenofauna, access_external_airlocks, access_robotics, access_tox, access_tox_storage, access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot ) diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index 4296363252..dd8a78ebc6 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -153,6 +153,21 @@ /obj/item/autopsy_scanner ) +/obj/item/storage/firstaid/surgery/simple + starts_with = list( + /obj/item/surgical/bonesetter, + /obj/item/surgical/cautery, + /obj/item/surgical/circular_saw, + /obj/item/surgical/hemostat, + /obj/item/surgical/retractor, + /obj/item/surgical/scalpel, + /obj/item/surgical/surgicaldrill, + /obj/item/surgical/bonegel, + /obj/item/surgical/FixOVein, + /obj/item/stack/medical/advanced/bruise_pack, + /obj/item/autopsy_scanner + ) + /obj/item/storage/firstaid/clotting name = "clotting kit" desc = "Contains chemicals to stop bleeding." diff --git a/maps/cynosure/cynosure-1.dmm b/maps/cynosure/cynosure-1.dmm index 18a981131b..b45c8b2237 100644 --- a/maps/cynosure/cynosure-1.dmm +++ b/maps/cynosure/cynosure-1.dmm @@ -253,7 +253,7 @@ /obj/effect/floor_decal/corner/paleblue/border, /obj/machinery/door/airlock/medical{ name = "Morgue Access"; - req_one_access = list(5, 6, 12, 47) + req_one_access = list(5,6,12,47) }, /obj/machinery/door/firedoor/border_only, /turf/simulated/floor/tiled/steel_dirty, @@ -2480,7 +2480,7 @@ dir = 4; frequency = 1430; name = "Mixing Chamber Monitor"; - sensors = list("toxins_mixing_exterior" = "Mixing Chamber - Exterior", "toxins_mixing_interior" = "Mixing Chamber - Interior") + sensors = list("toxins_mixing_exterior"="Mixing Chamber - Exterior","toxins_mixing_interior"="Mixing Chamber - Interior") }, /obj/machinery/light{ dir = 8 @@ -2978,6 +2978,12 @@ name = "Medbay Maintenance Access"; req_access = list(5) }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, /turf/simulated/floor/plating, /area/surface/station/medical/hallway/bmt) "gA" = ( @@ -5086,6 +5092,18 @@ /obj/structure/window/reinforced/full, /turf/simulated/floor/plating, /area/surface/outpost/research/xenoarcheology/exp_prep) +"kM" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/surface/station/maintenance/medical/west) "kN" = ( /obj/structure/disposalpipe/segment, /obj/effect/floor_decal/steeldecal/steel_decals4{ @@ -7401,6 +7419,24 @@ }, /turf/simulated/floor/tiled/old_tile/white, /area/surface/station/rnd/mixing) +"pB" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + req_one_access = list(5,12,47) + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/surface/station/maintenance/medical/west) "pC" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -7545,7 +7581,7 @@ /obj/machinery/door/firedoor/border_only, /obj/machinery/door/airlock/medical{ name = "Morgue Access"; - req_one_access = list(5, 6, 12, 47) + req_one_access = list(5,6,12,47) }, /turf/simulated/floor/tiled/steel_dirty, /area/surface/station/maintenance/eaststairwell) @@ -8081,6 +8117,27 @@ }, /turf/simulated/floor/tiled, /area/surface/station/mining_main) +"qR" = ( +/obj/structure/ladder/up, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/cable{ + d1 = 16; + d2 = 0; + icon_state = "16-0" + }, +/obj/structure/cable{ + d1 = 16; + d2 = 0; + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/zpipe/up/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/zpipe/up/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/surface/station/maintenance/medical/west) "qS" = ( /obj/structure/closet/crate/medical, /obj/random/contraband, @@ -9698,6 +9755,20 @@ }, /turf/simulated/floor/plating, /area/surface/station/maintenance/substation/engineering/bmt) +"ue" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/surface/station/maintenance/medical/west) "uf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -11338,6 +11409,12 @@ d2 = 2; icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, /turf/simulated/floor/plating, /area/surface/station/maintenance/medical/west) "xI" = ( @@ -12193,6 +12270,20 @@ /obj/effect/map_helper/airlock/sensor/chamber_sensor, /turf/simulated/floor/tiled/techfloor/grid, /area/surface/outpost/research/xenoarcheology/entrance) +"zo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/surface/station/maintenance/medical/west) "zq" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -12339,6 +12430,21 @@ }, /turf/simulated/floor/plating, /area/surface/station/engineering/drone_fabrication) +"zE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/random/mob/mouse, +/turf/simulated/floor/plating, +/area/surface/station/maintenance/medical/west) "zG" = ( /obj/effect/floor_decal/industrial/warning{ dir = 4 @@ -14922,7 +15028,7 @@ /obj/effect/catwalk_plated/dark, /obj/machinery/door/airlock/medical{ name = "Morgue Access"; - req_one_access = list(5, 6, 12, 47) + req_one_access = list(5,6,12,47) }, /turf/simulated/floor/plating, /area/surface/station/maintenance/medical/south) @@ -16883,9 +16989,10 @@ /turf/simulated/floor/tiled/white, /area/surface/outpost/research/xenoarcheology/analysis) "JD" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, /turf/simulated/floor/tiled, /area/surface/station/medical/hallway/bmt) "JE" = ( @@ -17581,6 +17688,20 @@ }, /turf/simulated/floor/tiled/dark, /area/surface/station/hallway/primary/bmt/west) +"KY" = ( +/obj/machinery/door/blast/regular/open{ + id = "medbayquar"; + layer = 3.3; + name = "Medbay Lockdown" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/surface/station/medical/hallway/bmt) "KZ" = ( /turf/simulated/floor/plating, /area/surface/station/construction/bmt/construction3) @@ -17885,6 +18006,10 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/surface/station/mining_main/storage) +"LJ" = ( +/obj/structure/loot_pile/maint/junk, +/turf/simulated/floor/plating, +/area/surface/station/maintenance/medical/west) "LL" = ( /obj/structure/table/rack{ layer = 2.6 @@ -18051,6 +18176,21 @@ /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/tiled/old_cargo/gray, /area/surface/station/engineering/auxiliary_engineering) +"Ma" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light/small/no_nightshift, +/turf/simulated/floor/plating, +/area/surface/station/maintenance/medical/west) "Mb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -18083,7 +18223,6 @@ pixel_x = -24; pixel_y = 12 }, -/obj/effect/catwalk_plated/dark, /turf/simulated/floor/plating, /area/surface/station/maintenance/medical/west) "Me" = ( @@ -19272,7 +19411,7 @@ }, /obj/machinery/door/window/eastleft{ name = "Garbage Outlet"; - req_one_access = list(65, 26) + req_one_access = list(65,26) }, /turf/simulated/floor/tiled/steel/sif/planetuse{ icon_state = "steel_dirty"; @@ -20823,7 +20962,17 @@ d2 = 2; icon_state = "1-2" }, -/obj/effect/catwalk_plated/dark, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + d1 = 16; + d2 = 0; + icon_state = "2-8" + }, /turf/simulated/floor/plating, /area/surface/station/maintenance/medical/west) "Rr" = ( @@ -20881,6 +21030,8 @@ d2 = 2; icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plating, /area/surface/station/maintenance/medical/west) "Ry" = ( @@ -23259,12 +23410,14 @@ /turf/simulated/floor/tiled, /area/surface/station/mining_main) "WG" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, /obj/effect/catwalk_plated, /obj/effect/floor_decal/rust, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, /turf/simulated/floor/plating, /area/surface/station/medical/hallway/bmt) "WH" = ( @@ -54282,10 +54435,10 @@ HE HE HE HE -HE -HE -HE -HE +jw +jw +jw +jw HE HE HE @@ -54539,10 +54692,10 @@ HE HE HE HE -HE -HE -HE -HE +jw +qR +LJ +jw HE HE HE @@ -54796,10 +54949,10 @@ Kj HE HE HE -HE -HE -HE -HE +jw +zE +zo +jw HE HE HE @@ -55053,10 +55206,10 @@ Kj HE HE HE -HE -HE -HE -HE +jw +jw +pB +jw HE HE HE @@ -55311,9 +55464,9 @@ HE HE HE HE -HE -HE -HE +jw +ue +jw HE HE HE @@ -55568,9 +55721,9 @@ HE HE HE HE -HE -HE -HE +jw +ue +jw jw jw cE @@ -55825,8 +55978,8 @@ HE HE HE HE -HE -HE +jw +Ma jw jw dU @@ -56082,8 +56235,8 @@ jw jw jw HE -HE -HE +jw +ue jw yS iu @@ -56340,7 +56493,7 @@ Io jw jw jw -jw +ue jw tb GN @@ -56856,7 +57009,7 @@ zz Pw Zf jw -VU +kM VU id QG @@ -57113,7 +57266,7 @@ Us id id id -Cb +KY Cb id QG diff --git a/maps/cynosure/cynosure-2.dmm b/maps/cynosure/cynosure-2.dmm index a643e61ea3..0b12a0931a 100644 --- a/maps/cynosure/cynosure-2.dmm +++ b/maps/cynosure/cynosure-2.dmm @@ -125,6 +125,15 @@ }, /turf/simulated/floor/tiled, /area/surface/station/hallway/primary/groundfloor/north) +"aef" = ( +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "aeh" = ( /obj/structure/cable{ d1 = 4; @@ -1049,6 +1058,16 @@ /obj/structure/cliff/automatic/corner, /turf/simulated/floor/outdoors/mask, /area/surface/outside/plains/plateau) +"aEQ" = ( +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "aFa" = ( /obj/effect/floor_decal/techfloor{ dir = 9 @@ -1663,6 +1682,12 @@ }, /turf/simulated/floor/tiled, /area/surface/station/security/briefing_room) +"aQQ" = ( +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "aRo" = ( /obj/structure/railing{ dir = 8 @@ -1991,6 +2016,13 @@ "aWW" = ( /turf/simulated/floor/tiled/asteroid_steel, /area/surface/outside/plains/station) +"aWY" = ( +/obj/effect/landmark/start{ + name = "Trained Drake" + }, +/obj/structure/animal_den, +/turf/simulated/floor/outdoors/dirt/sif, +/area/rnd/xenobiology/xenofauna) "aXC" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -2797,6 +2829,18 @@ }, /turf/simulated/floor/tiled, /area/surface/station/hallway/primary/groundfloor/west/elevator) +"bok" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass_research{ + name = "Xenofauna Lab"; + req_one_access = list(67) + }, +/obj/effect/floor_decal/corner/purple/bordercorner, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/xenobiology/xenofauna) "bot" = ( /obj/structure/cable{ d1 = 4; @@ -4223,6 +4267,22 @@ /obj/structure/cliff/automatic, /turf/simulated/floor/outdoors/mask, /area/surface/outside/plains/plateau) +"bWB" = ( +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 8 + }, +/obj/machinery/recharge_station, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/surface/station/garage) "bWC" = ( /obj/structure/window/reinforced, /obj/structure/closet/emcloset, @@ -5125,6 +5185,11 @@ }, /turf/simulated/floor/tiled/old_tile/gray, /area/shuttle/exploration/cockpit) +"cvP" = ( +/obj/structure/table/steel_reinforced, +/obj/item/toy/plushie/spider, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenofauna) "cvZ" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow{ dir = 6 @@ -5625,6 +5690,18 @@ /obj/machinery/appliance/cooker/fryer, /turf/simulated/floor/tiled/eris/cafe, /area/surface/station/crew_quarters/kitchen) +"cJL" = ( +/obj/structure/bed/chair/comfy/purp{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Xenofauna Technician" + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "cJQ" = ( /obj/structure/cable/yellow{ d2 = 2; @@ -6419,6 +6496,18 @@ }, /turf/simulated/floor/tiled/techfloor, /area/surface/station/engineering/reactor_airlock) +"cXp" = ( +/obj/effect/floor_decal/industrial/warning/dust/corner{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 10 + }, +/turf/simulated/floor/tiled/steel/sif/planetuse{ + icon_state = "asteroidfloor"; + initial_flooring = /decl/flooring/tiling/asteroidfloor + }, +/area/surface/outside/plains/station) "cXQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -7499,6 +7588,13 @@ /obj/structure/window/reinforced/full, /turf/simulated/floor/plating, /area/surface/station/quartermaster/storage) +"dwh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "dwo" = ( /obj/structure/sign/level/ground, /turf/simulated/wall/r_concrete, @@ -7623,6 +7719,29 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/carpet, /area/surface/station/crew_quarters/heads/hop) +"dzA" = ( +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "dAm" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/machinery/power/generator{ @@ -7639,6 +7758,21 @@ }, /turf/simulated/floor/plating, /area/surface/station/engineering/reactor_room) +"dAV" = ( +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 4 + }, +/obj/structure/table/steel_reinforced, +/obj/machinery/cell_charger, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/surface/station/garage) "dBs" = ( /turf/simulated/wall/r_wall, /area/surface/station/engineering/workshop) @@ -7898,6 +8032,11 @@ }, /turf/simulated/floor/tiled/old_cargo/gray, /area/shuttle/exploration/general) +"dFf" = ( +/obj/structure/dogbed, +/obj/machinery/light, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenofauna) "dFG" = ( /turf/simulated/wall, /area/surface/station/engineering/atmos) @@ -8497,6 +8636,9 @@ /obj/effect/floor_decal/industrial/warning/corner{ dir = 4 }, +/obj/machinery/light/small{ + dir = 4 + }, /turf/simulated/floor/tiled/techmaint, /area/surface/station/garage) "dVU" = ( @@ -9663,6 +9805,18 @@ "ewo" = ( /turf/simulated/wall/r_concrete, /area/surface/station/maintenance/substation/engineering/gnd) +"ewz" = ( +/obj/structure/bed/chair/comfy/purp{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 10 + }, +/obj/effect/landmark/start{ + name = "Xenofauna Technician" + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "ewC" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/yellow{ dir = 1 @@ -10185,6 +10339,16 @@ }, /turf/simulated/floor/tiled/freezer, /area/surface/station/crew_quarters/pool) +"eHA" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/dust, +/turf/simulated/floor/tiled/steel/sif/planetuse{ + icon_state = "asteroidfloor"; + initial_flooring = /decl/flooring/tiling/asteroidfloor + }, +/area/surface/outside/plains/station) "eHI" = ( /obj/structure/table/reinforced, /obj/structure/cable/green{ @@ -10385,6 +10549,10 @@ }, /turf/simulated/floor/plating, /area/surface/station/security/briefing_room) +"eLb" = ( +/obj/structure/table/sifwoodentable, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "eLc" = ( /obj/machinery/portable_atmospherics/canister/carbon_dioxide, /obj/effect/floor_decal/industrial/warning{ @@ -11074,6 +11242,18 @@ }, /turf/simulated/floor/wood, /area/surface/station/crew_quarters/cafeteria) +"eYF" = ( +/obj/machinery/door/airlock/glass_research{ + name = "Xenofauna Lab"; + req_one_access = list(55) + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/corner/purple/bordercorner, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/xenobiology/xenofauna) "eYZ" = ( /obj/structure/ladder, /obj/effect/floor_decal/industrial/hatch/yellow, @@ -11814,12 +11994,17 @@ /turf/simulated/floor/tiled, /area/surface/station/security/lockerroom) "fpa" = ( -/obj/structure/dogbed, -/obj/effect/landmark/start{ - name = "Trained Drake" +/obj/effect/floor_decal/industrial/warning/dust/corner{ + dir = 1 }, -/turf/simulated/floor/tiled/techmaint, -/area/surface/station/garage) +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 6 + }, +/turf/simulated/floor/tiled/steel/sif/planetuse{ + icon_state = "asteroidfloor"; + initial_flooring = /decl/flooring/tiling/asteroidfloor + }, +/area/surface/outside/plains/station) "fpB" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 9 @@ -12084,6 +12269,16 @@ /obj/turbolift_map_holder/cynosure/sec, /turf/unsimulated/mask, /area/surface/station/security/hallway/gnd) +"fxS" = ( +/obj/structure/table/bench/steel, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Xenofauna Technician" + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "fyc" = ( /turf/simulated/floor/outdoors/dirt/sif, /area/surface/outside/path/plains) @@ -13362,6 +13557,14 @@ }, /turf/simulated/floor/tiled/techmaint, /area/surface/station/janitor) +"gcN" = ( +/obj/structure/table/bench/steel, +/obj/effect/floor_decal/corner/purple/border, +/obj/effect/landmark/start{ + name = "Xenofauna Technician" + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "gda" = ( /obj/structure/table/marble, /obj/machinery/door/firedoor/border_only, @@ -13407,6 +13610,12 @@ /obj/structure/window/reinforced/full, /turf/simulated/floor/plating, /area/surface/station/medical/ward) +"gdM" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenofauna) "gdR" = ( /obj/effect/floor_decal/corner/white/diagonal, /obj/effect/zone_divider, @@ -13599,6 +13808,15 @@ }, /turf/simulated/floor/tiled/milspec/sterile, /area/shuttle/large_escape_pod1/station) +"giQ" = ( +/obj/structure/table/steel_reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/item/reagent_containers/syringe/bicaridine, +/obj/item/storage/firstaid/surgery/simple, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenofauna) "giV" = ( /obj/machinery/vending/cigarette, /turf/simulated/floor/wood, @@ -15078,6 +15296,32 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/surface/station/library) +"gOt" = ( +/obj/effect/floor_decal/corner/purple/border{ + dir = 9 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_y = 24 + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/table/rack, +/obj/item/gps/explorer, +/obj/item/gps/explorer, +/obj/item/gps/explorer, +/obj/item/melee/umbrella/random, +/obj/item/melee/umbrella/random, +/obj/item/melee/umbrella/random, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "gPq" = ( /obj/effect/floor_decal/industrial/warning/corner, /turf/simulated/floor/plating, @@ -16725,6 +16969,23 @@ }, /turf/simulated/floor/tiled, /area/surface/station/security/range) +"hGi" = ( +/obj/structure/table/bench/steel, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_y = 21 + }, +/obj/effect/landmark/start{ + name = "Xenofauna Technician" + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "hGr" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ @@ -16820,6 +17081,12 @@ /obj/effect/map_helper/airlock/sensor/ext_sensor, /turf/simulated/floor/plating/sif/planetuse, /area/surface/station/maintenance/solars/northeast) +"hIn" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "hIG" = ( /obj/structure/cable{ d1 = 4; @@ -17362,6 +17629,22 @@ }, /turf/simulated/floor/tiled, /area/surface/station/hallway/primary/groundfloor/north) +"hXw" = ( +/obj/structure/closet/emcloset, +/obj/item/clothing/suit/storage/hooded/wintercoat/parka/nanotrasen, +/obj/item/clothing/suit/storage/hooded/wintercoat/parka/nanotrasen, +/obj/item/clothing/shoes/boots/winter, +/obj/item/clothing/shoes/boots/winter, +/obj/effect/floor_decal/corner/purple/border{ + dir = 6 + }, +/obj/item/melee/umbrella/random, +/obj/item/melee/umbrella/random, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) +"hXB" = ( +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "hYa" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/industrial/danger, @@ -17409,6 +17692,13 @@ /obj/structure/fuel_port, /turf/simulated/floor/tiled/monotile, /area/shuttle/exploration/cargo) +"iac" = ( +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/bordercorner, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "iak" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 6 @@ -17566,6 +17856,23 @@ outdoors = 0 }, /area/surface/outside/plains/station) +"idL" = ( +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = -18; + pixel_y = 4 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = -18; + pixel_y = -4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "idR" = ( /obj/structure/cable{ d1 = 1; @@ -19057,6 +19364,24 @@ /obj/effect/map_helper/airlock/atmos/pump_out_internal, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/exploration/cargo) +"iRX" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/corner/purple/border, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/glass_research{ + name = "Xenofauna Lab"; + req_one_access = list(55) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/xenobiology/xenofauna) "iSh" = ( /turf/simulated/wall/concrete, /area/surface/station/hallway/primary/groundfloor/east) @@ -19411,6 +19736,11 @@ /obj/effect/zone_divider, /turf/simulated/floor/tiled/freezer, /area/surface/station/crew_quarters/kitchen) +"jbz" = ( +/obj/structure/table/sifwoodentable, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "jbS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -19872,6 +20202,13 @@ /obj/machinery/ai_status_display, /turf/simulated/floor/plating, /area/surface/station/rnd/xenobiology) +"jmv" = ( +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/bordercorner, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "jmQ" = ( /obj/structure/reagent_dispensers/watertank/high, /turf/simulated/floor/tiled/dark, @@ -21395,6 +21732,9 @@ }, /turf/simulated/floor/tiled, /area/surface/station/hallway/primary/groundfloor/north) +"jUn" = ( +/turf/simulated/wall/concrete, +/area/rnd/xenobiology/xenofauna) "jUC" = ( /obj/machinery/airlock_sensor/airlock_exterior{ dir = 4; @@ -22704,6 +23044,23 @@ }, /turf/simulated/floor/tiled/old_tile/white, /area/surface/station/rnd/research_restroom) +"kwA" = ( +/obj/structure/bed/chair/comfy/purp{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 6 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = -12; + pixel_y = -24 + }, +/obj/effect/landmark/start{ + name = "Xenofauna Technician" + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "kwE" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 8 @@ -23170,6 +23527,21 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/monotile, /area/surface/station/quartermaster/storage) +"kGs" = ( +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "kGK" = ( /obj/effect/floor_decal/borderfloor{ dir = 9 @@ -23578,6 +23950,9 @@ /obj/effect/zone_divider, /turf/simulated/floor/plating/sif/planetuse, /area/surface/outside/station/solar/westsolar) +"kRE" = ( +/turf/simulated/floor/outdoors/mask, +/area/rnd/xenobiology/xenofauna) "kRH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -24135,6 +24510,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/white, /area/surface/station/crew_quarters/locker) +"lfX" = ( +/obj/structure/table/steel_reinforced, +/obj/item/storage/firstaid/regular, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenofauna) "lgu" = ( /obj/effect/zone_divider, /turf/simulated/wall/r_wall, @@ -24844,6 +25224,14 @@ }, /turf/simulated/floor/tiled/white, /area/surface/station/medical/etc) +"lwJ" = ( +/obj/structure/table/steel_reinforced, +/obj/item/book/manual/drake_handling, +/obj/effect/floor_decal/corner/purple/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "lwM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -24865,6 +25253,31 @@ }, /turf/simulated/floor/tiled/techfloor, /area/surface/station/ai/server_room) +"lxd" = ( +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_y = 21 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/space_heater, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "lxf" = ( /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/purple/border, @@ -25210,6 +25623,13 @@ }, /turf/simulated/floor/tiled/dark, /area/surface/station/security/interrogation) +"lFK" = ( +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/machinery/space_heater, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "lFZ" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ dir = 8 @@ -25708,6 +26128,17 @@ }, /turf/simulated/floor/tiled, /area/surface/station/security/processing) +"lQt" = ( +/obj/structure/plasticflaps/mining, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "lQz" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled, @@ -28798,6 +29229,13 @@ }, /turf/simulated/floor/reinforced/supermatter_core, /area/surface/station/engineering/reactor_room) +"nbK" = ( +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/obj/structure/closet/secure_closet/xenofauna, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "nbV" = ( /turf/simulated/floor/concrete/sif/planetuse, /area/surface/outside/station/shuttle/pad4) @@ -29810,6 +30248,9 @@ }, /turf/simulated/floor/tiled/techmaint, /area/surface/station/rnd/exploration) +"nDM" = ( +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenofauna) "nDO" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/catwalk_plated, @@ -30655,6 +31096,13 @@ }, /turf/simulated/floor/tiled/old_cargo/gray, /area/shuttle/exploration/general) +"nUs" = ( +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/obj/structure/closet/secure_closet/guncabinet/tranq, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "nUv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -31227,6 +31675,16 @@ }, /turf/simulated/floor/tiled/white, /area/surface/station/medical/chemistry) +"ohu" = ( +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/structure/closet/secure_closet/xenofauna, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "ohK" = ( /obj/structure/table/standard, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -32445,6 +32903,12 @@ }, /turf/simulated/floor/plating, /area/surface/station/engineering/reactor_room) +"oFN" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/rnd/xenobiology/xenofauna) "oFQ" = ( /obj/structure/cable{ d1 = 4; @@ -33755,6 +34219,14 @@ }, /turf/simulated/floor/plating, /area/surface/station/engineering/atmos) +"pfP" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass_research{ + name = "Xenofauna Lab"; + req_one_access = list(55) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/xenobiology/xenofauna) "pgK" = ( /turf/simulated/wall, /area/surface/station/janitor) @@ -34892,6 +35364,12 @@ }, /turf/simulated/floor/tiled, /area/surface/station/hallway/primary/groundfloor/north) +"pCD" = ( +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "pDw" = ( /obj/machinery/atmospherics/pipe/simple/visible/green{ dir = 4 @@ -35660,6 +36138,12 @@ }, /turf/simulated/floor/plating, /area/surface/station/engineering/reactor_room) +"pYW" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "pZo" = ( /obj/structure/cable/green{ d1 = 4; @@ -36914,6 +37398,12 @@ }, /turf/simulated/floor/carpet, /area/surface/station/library) +"qwP" = ( +/obj/effect/floor_decal/corner/purple/border{ + dir = 10 + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "qwT" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/ywflowers, @@ -37193,12 +37683,9 @@ /turf/simulated/floor/carpet, /area/surface/station/library) "qCU" = ( -/obj/structure/dogbed, -/obj/effect/landmark/start{ - name = "Trained Drake" - }, -/obj/item/reagent_containers/food/snacks/xenomeat/spidermeat, -/turf/simulated/floor/tiled/techmaint, +/obj/machinery/mech_recharger, +/obj/effect/landmark/robot_platform/explorer, +/turf/simulated/floor/tiled/dark, /area/surface/station/garage) "qCW" = ( /obj/effect/floor_decal/industrial/warning{ @@ -37691,6 +38178,10 @@ /obj/machinery/portable_atmospherics/powered/scrubber, /turf/simulated/floor/plating, /area/surface/station/maintenance/atmos) +"qMs" = ( +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "qMT" = ( /obj/effect/floor_decal/corner/pink{ dir = 5 @@ -37795,6 +38286,15 @@ }, /turf/simulated/floor/tiled/white, /area/surface/station/security/detectives_office/lab) +"qPS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "qQd" = ( /obj/effect/floor_decal/spline/plain{ dir = 8 @@ -38246,6 +38746,22 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, /area/shuttle/exploration/general) +"qYe" = ( +/obj/structure/ladder, +/obj/structure/cable/green{ + d1 = 32; + d2 = 8; + icon_state = "32-8" + }, +/obj/machinery/atmospherics/pipe/zpipe/down/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/zpipe/down/supply{ + dir = 8 + }, +/obj/structure/lattice, +/turf/simulated/open, +/area/rnd/xenobiology/xenofauna) "qYf" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -38291,6 +38807,7 @@ d2 = 8; icon_state = "4-8" }, +/obj/machinery/light/small, /turf/simulated/floor/tiled/techmaint, /area/surface/station/garage) "rav" = ( @@ -40061,6 +40578,13 @@ }, /turf/simulated/floor/tiled/white, /area/surface/station/security/detectives_office/lab) +"rQF" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/optable, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenofauna) "rRt" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -40562,6 +41086,13 @@ "sec" = ( /turf/simulated/floor/tiled/old_cargo/gray, /area/shuttle/exploration/general) +"sem" = ( +/obj/effect/floor_decal/corner/purple/bordercorner, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "seC" = ( /obj/machinery/door/firedoor/border_only, /obj/structure/grille, @@ -42282,6 +42813,19 @@ /obj/effect/map_helper/airlock/door/int_door, /turf/simulated/floor/tiled/steel_grid, /area/surface/station/arrivals/cynosure) +"sUL" = ( +/obj/effect/floor_decal/corner/purple/bordercorner, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "sUN" = ( /obj/machinery/power/breakerbox/activated{ RCon_tag = "Atmos Substation Bypass" @@ -45666,6 +46210,9 @@ /obj/effect/zone_divider, /turf/simulated/floor/plating, /area/surface/station/engineering/reactor_smes) +"uAg" = ( +/turf/simulated/floor/water, +/area/rnd/xenobiology/xenofauna) "uAp" = ( /obj/machinery/computer/security/engineering{ dir = 4 @@ -46972,6 +47519,10 @@ }, /turf/simulated/floor/bluegrid, /area/surface/station/ai/server_room) +"vfE" = ( +/obj/machinery/door/window/brigdoor/northleft, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenofauna) "vfM" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -46988,6 +47539,9 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/freezer, /area/surface/station/crew_quarters/pool) +"vfV" = ( +/turf/simulated/floor/outdoors/dirt/sif, +/area/rnd/xenobiology/xenofauna) "vgi" = ( /obj/structure/cable/green{ d1 = 4; @@ -48059,6 +48613,18 @@ has_fish = 0 }, /area/surface/outside/station/reactorpond) +"vBO" = ( +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "vCf" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 4 @@ -48565,6 +49131,15 @@ }, /turf/simulated/floor/tiled, /area/surface/station/hallway/primary/groundfloor/west/elevator) +"vNk" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenofauna) "vNt" = ( /obj/structure/cable/green{ d1 = 4; @@ -49219,6 +49794,10 @@ }, /turf/simulated/floor/tiled/white, /area/surface/station/medical/surgery2) +"wfF" = ( +/obj/structure/fence, +/turf/simulated/floor/outdoors/dirt/sif, +/area/rnd/xenobiology/xenofauna) "wga" = ( /obj/structure/sign/directions/stairs_up{ pixel_y = -6 @@ -50421,6 +51000,19 @@ /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/tiled/techmaint, /area/surface/station/engineering/storage) +"wMl" = ( +/obj/effect/floor_decal/industrial/warning/dust/corner{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/dust, +/obj/effect/floor_decal/industrial/warning/dust/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel/sif/planetuse{ + icon_state = "asteroidfloor"; + initial_flooring = /decl/flooring/tiling/asteroidfloor + }, +/area/surface/outside/plains/station) "wMG" = ( /obj/effect/floor_decal/spline/plain{ dir = 8 @@ -50591,6 +51183,18 @@ }, /turf/simulated/floor/tiled/techmaint, /area/surface/station/security/interrogation) +"wPB" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass_research{ + name = "Xenofauna Lab"; + req_one_access = list(55) + }, +/obj/effect/floor_decal/corner/purple/bordercorner, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/xenobiology/xenofauna) "wPJ" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 6 @@ -51279,6 +51883,12 @@ }, /turf/simulated/floor/outdoors/grass/sif, /area/surface/outside/plains/plateau) +"xbF" = ( +/obj/structure/fence{ + dir = 4 + }, +/turf/simulated/floor/outdoors/mask, +/area/rnd/xenobiology/xenofauna) "xcE" = ( /obj/effect/zone_divider, /turf/simulated/floor/plating, @@ -51425,6 +52035,18 @@ "xgg" = ( /turf/simulated/floor/tiled, /area/surface/station/hallway/primary/groundfloor/east) +"xgj" = ( +/obj/structure/bed/chair/comfy/purp{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Xenofauna Technician" + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenofauna) "xgC" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/brown/border, @@ -51698,6 +52320,10 @@ }, /turf/simulated/floor/plating, /area/surface/station/maintenance/kitchen) +"xoE" = ( +/obj/structure/fence, +/turf/simulated/floor/outdoors/mask, +/area/rnd/xenobiology/xenofauna) "xpd" = ( /obj/structure/fence, /turf/simulated/floor/outdoors/mask, @@ -51963,11 +52589,9 @@ /turf/simulated/floor/plating, /area/surface/station/ai/upload) "xwh" = ( -/obj/structure/table/steel_reinforced, -/obj/item/reagent_containers/syringe/bicaridine, -/obj/item/book/manual/drake_handling, -/turf/simulated/floor/tiled/techmaint, -/area/surface/station/garage) +/obj/structure/fence/door, +/turf/simulated/floor/outdoors/mask, +/area/rnd/xenobiology/xenofauna) "xxc" = ( /obj/effect/floor_decal/corner/white/diagonal, /obj/effect/floor_decal/steeldecal/steel_decals4, @@ -80934,18 +81558,18 @@ yel nCe nCe nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe +jUn +xoE +xoE +jUn +jUn +jUn +oFN +oFN +jUn +jUn +jUn +jUn nCe nCe nCe @@ -81191,18 +81815,18 @@ yel nCe nCe nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe +xbF +uAg +kRE +jUn +aWY +jUn +lwJ +qwP +giQ +lfX +cvP +jUn nCe nCe nCe @@ -81444,22 +82068,22 @@ vKC xSr nCe nCe -sLu -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe +yel nCe nCe nCe +xwh +kRE +kRE +kRE +vfV +eYF +aef +sem +vfE +nDM +dFf +jUn nCe nCe nCe @@ -81705,18 +82329,18 @@ yel nCe nCe nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe +xbF +kRE +kRE +kRE +vfV +oFN +fxS +qMs +vNk +gdM +rQF +jUn nCe nCe nCe @@ -81962,18 +82586,18 @@ yel nCe nCe nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe +jUn +xoE +xoE +jUn +jUn +jUn +hGi +pCD +aQQ +xgj +ewz +oFN nCe nCe nCe @@ -82219,25 +82843,25 @@ yel nCe nCe nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe +xbF +uAg +kRE +kRE +vfV +oFN +lFK +hXB +hXB +eLb +jbz +oFN nCe nCe nCe sSy ufW -fpa -fDL +qew +sXq kYh mLL aOC @@ -82476,25 +83100,25 @@ yel nCe nCe nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe +xwh +kRE +kRE +kRE +vfV +bok +aEQ +sUL +vBO +cJL +kwA +jUn nCe nCe nCe alv ufW -xwh -sXq +dAV +kqo sXq sXq lze @@ -82733,25 +83357,25 @@ yel nCe nCe nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe +xbF +kRE +kRE +jUn +aWY +jUn +jUn +iRX +jUn +oFN +oFN +jUn +cXp +twu nCe cPd seC qCU -sXq +kqo jaH jaH qZC @@ -82990,25 +83614,25 @@ yel nCe nCe nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe +jUn +xoE +xoE +jUn +jUn +jUn +gOt +kGs +idL +aQQ +jmv +pfP +eHA +twu twu fIk xUd -qew -sXq +kaG +kqo qBQ vQG mbv @@ -83247,20 +83871,20 @@ yel nCe nCe nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe +xbF +uAg +kRE +jUn +aWY +jUn +lxd +qPS +hIn +hXB +gcN +oFN +wMl +twu twu jmX seC @@ -83504,20 +84128,20 @@ yel nCe nCe nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe +xwh +kRE +kRE +kRE +vfV +wPB +dzA +dwh +pYW +hXB +iac +lQt +eHA +twu twu fIk ufW @@ -83761,24 +84385,24 @@ yel nCe nCe nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe +xbF +kRE +kRE +kRE +vfV +oFN +qYe +ohu +nbK +nUs +hXw +jUn +fpa nCe twu sSy ufW -kaG +bWB nQi kSF kSF @@ -84018,20 +84642,20 @@ eZL nCe nCe nCe +jUn +xoE +xoE +xoE +wfF +jUn +oFN +oFN +oFN +oFN +oFN +jUn nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe -nCe +twu twu aqn ufW diff --git a/maps/cynosure/cynosure_jobs.dm b/maps/cynosure/cynosure_jobs.dm index 662763626c..d8d479d6ff 100644 --- a/maps/cynosure/cynosure_jobs.dm +++ b/maps/cynosure/cynosure_jobs.dm @@ -56,12 +56,12 @@ var/global/const/access_explorer = 43 /datum/job/rd access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue, access_tox_storage, access_teleporter, access_sec_doors, - access_research, access_robotics, access_xenobiology, access_ai_upload, access_tech_storage, + access_research, access_robotics, access_xenobiology, access_xenofauna, access_ai_upload, access_tech_storage, access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_network, access_maint_tunnels, access_explorer, access_eva, access_external_airlocks) minimal_access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue, access_tox_storage, access_teleporter, access_sec_doors, - access_research, access_robotics, access_xenobiology, access_ai_upload, access_tech_storage, + access_research, access_robotics, access_xenobiology, access_xenofauna, access_ai_upload, access_tech_storage, access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_network, access_maint_tunnels, access_explorer, access_eva, access_external_airlocks) diff --git a/maps/cynosure/cynosure_presets.dm b/maps/cynosure/cynosure_presets.dm index b8ed4dbe8c..5a2f3ec788 100644 --- a/maps/cynosure/cynosure_presets.dm +++ b/maps/cynosure/cynosure_presets.dm @@ -95,8 +95,8 @@ var/global/const/NETWORK_SUPPLY = "Supply" num2text(MED_I_FREQ)=list(access_medical_equip), num2text(SEC_FREQ) = list(access_security), num2text(SEC_I_FREQ)=list(access_security), - num2text(SCI_FREQ) = list(access_tox,access_robotics,access_xenobiology), + num2text(SCI_FREQ) = list(access_tox,access_robotics,access_xenobiology,access_xenofauna), num2text(SUP_FREQ) = list(access_cargo), num2text(SRV_FREQ) = list(access_janitor, access_hydroponics), num2text(EXP_FREQ) = list(access_explorer) - ) \ No newline at end of file + ) diff --git a/maps/cynosure/structures/closets/misc.dm b/maps/cynosure/structures/closets/misc.dm index e0324bf654..fdeb93e013 100644 --- a/maps/cynosure/structures/closets/misc.dm +++ b/maps/cynosure/structures/closets/misc.dm @@ -33,6 +33,15 @@ /obj/item/cell/device/weapon = 2, /obj/item/clothing/accessory/permit/gun/planetside) +/obj/structure/closet/secure_closet/guncabinet/tranq + name = "phase pistol cabinet" //"tranquilizer rifle cabinet" + req_one_access = list(access_xenofauna,access_medical) + starts_with = list( + /obj/item/gun/energy/phasegun/pistol = 2, + /obj/item/cell/device/weapon = 2, + /obj/item/clothing/accessory/permit/gun/planetside + ) + //Explorer Lockers /obj/structure/closet/secure_closet/explorer @@ -69,6 +78,40 @@ starts_with += /obj/item/material/knife/machete return ..() +//Xenofauna tech lockers +/obj/structure/closet/secure_closet/xenofauna + name = "xenofauna technician locker" + req_access = list(access_xenofauna) + starts_with = list( + /obj/item/clothing/under/explorer, + /obj/item/clothing/suit/armor/pcarrier/explorer/light, + /obj/item/clothing/head/helmet/explorer, + /obj/item/clothing/suit/storage/hooded/explorer, + /obj/item/clothing/mask/gas/explorer, + /obj/item/clothing/shoes/boots/winter/explorer, + /obj/item/clothing/gloves/black, + /obj/item/radio/headset/explorer, + /obj/item/flashlight, + /obj/item/gps/explorer, + /obj/item/storage/box/flare, + /obj/item/geiger, + /obj/item/cell/device, + /obj/item/radio, + /obj/item/stack/marker_beacon/thirty, + /obj/item/cataloguer + ) + +/obj/structure/closet/secure_closet/xenofauna/Initialize() + if(prob(50)) + starts_with += /obj/item/storage/backpack/rucksack + else + starts_with += /obj/item/storage/backpack/satchel/norm + if(prob(75)) + starts_with += /obj/item/material/knife/tacknife/survival + else + starts_with += /obj/item/material/knife/machete + return ..() + //SAR Lockers /obj/structure/closet/secure_closet/sar diff --git a/maps/southern_cross/southern_cross_presets.dm b/maps/southern_cross/southern_cross_presets.dm index eb9bd6201f..f650894de6 100644 --- a/maps/southern_cross/southern_cross_presets.dm +++ b/maps/southern_cross/southern_cross_presets.dm @@ -109,8 +109,8 @@ var/global/const/NETWORK_MAIN_OUTPOST = "Main Outpost" num2text(MED_I_FREQ)=list(access_medical_equip), num2text(SEC_FREQ) = list(access_security), num2text(SEC_I_FREQ)=list(access_security), - num2text(SCI_FREQ) = list(access_tox,access_robotics,access_xenobiology), + num2text(SCI_FREQ) = list(access_tox,access_robotics,access_xenobiology,access_xenofauna), num2text(SUP_FREQ) = list(access_cargo), num2text(SRV_FREQ) = list(access_janitor, access_hydroponics), num2text(EXP_FREQ) = list(access_explorer) - ) \ No newline at end of file + ) diff --git a/maps/~map_system/maps.dm b/maps/~map_system/maps.dm index 2cc2535575..82825be1c5 100644 --- a/maps/~map_system/maps.dm +++ b/maps/~map_system/maps.dm @@ -313,7 +313,7 @@ var/global/list/all_maps = list() num2text(MED_I_FREQ) = list(access_medical_equip), num2text(SEC_FREQ) = list(access_security), num2text(SEC_I_FREQ) = list(access_security), - num2text(SCI_FREQ) = list(access_tox,access_robotics,access_xenobiology), + num2text(SCI_FREQ) = list(access_tox,access_robotics,access_xenobiology,access_xenofauna), num2text(SUP_FREQ) = list(access_cargo), num2text(SRV_FREQ) = list(access_janitor, access_hydroponics), ) From 959658a970775d93f56a5ceedf2256509e30cfcf Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Wed, 1 Mar 2023 17:40:11 +1100 Subject: [PATCH 2/2] Implementing tranquilizer rifle and pistols. --- code/modules/mob/living/simple_mob/defense.dm | 5 +-- code/modules/mob/living/simple_mob/life.dm | 45 ++++++++++--------- .../mob/living/simple_mob/simple_mob.dm | 19 ++++++++ code/modules/projectiles/guns/energy/phase.dm | 27 ++++++++++- code/modules/projectiles/projectile.dm | 6 +++ code/modules/projectiles/projectile/energy.dm | 31 ++++++++++++- maps/cynosure/structures/closets/misc.dm | 6 ++- 7 files changed, 110 insertions(+), 29 deletions(-) diff --git a/code/modules/mob/living/simple_mob/defense.dm b/code/modules/mob/living/simple_mob/defense.dm index 371ddc6192..120075cf33 100644 --- a/code/modules/mob/living/simple_mob/defense.dm +++ b/code/modules/mob/living/simple_mob/defense.dm @@ -1,10 +1,7 @@ // Hit by a projectile. /mob/living/simple_mob/bullet_act(var/obj/item/projectile/P) //Projectiles with bonus SA damage - if(!P.nodamage) - // if(!P.SA_vulnerability || P.SA_vulnerability == intelligence_level) - if(P.SA_vulnerability & mob_class) - P.damage += P.SA_bonus_damage + P.damage += P.apply_SA_vulnerability(src) . = ..() diff --git a/code/modules/mob/living/simple_mob/life.dm b/code/modules/mob/living/simple_mob/life.dm index 43ec32d64b..98c89ac670 100644 --- a/code/modules/mob/living/simple_mob/life.dm +++ b/code/modules/mob/living/simple_mob/life.dm @@ -22,6 +22,7 @@ //Should we be dead? /mob/living/simple_mob/updatehealth() + var/lasthealth = health health = getMaxHealth() - getFireLoss() - getBruteLoss() - getToxLoss() - getOxyLoss() - getCloneLoss() //Alive, becoming dead @@ -33,26 +34,30 @@ health = getMaxHealth() //Update our hud if we have one - if(healths) - if(stat != DEAD) - var/heal_per = (health / getMaxHealth()) * 100 - switch(heal_per) - if(100 to INFINITY) - healths.icon_state = "health0" - if(80 to 100) - healths.icon_state = "health1" - if(60 to 80) - healths.icon_state = "health2" - if(40 to 60) - healths.icon_state = "health3" - if(20 to 40) - healths.icon_state = "health4" - if(0 to 20) - healths.icon_state = "health5" - else - healths.icon_state = "health6" - else - healths.icon_state = "health7" + if(lasthealth != health) + if(lasthealth > health && sleeping) // Damage wakes us up. + tranq_countdown = 0 + SetSleeping(0) + if(healths) + if(stat != DEAD) + var/heal_per = (health / getMaxHealth()) * 100 + switch(heal_per) + if(100 to INFINITY) + healths.icon_state = "health0" + if(80 to 100) + healths.icon_state = "health1" + if(60 to 80) + healths.icon_state = "health2" + if(40 to 60) + healths.icon_state = "health3" + if(20 to 40) + healths.icon_state = "health4" + if(0 to 20) + healths.icon_state = "health5" + else + healths.icon_state = "health6" + else + healths.icon_state = "health7" //Updates the nutrition while we're here var/food_per = (nutrition / max_nutrition) * 100 diff --git a/code/modules/mob/living/simple_mob/simple_mob.dm b/code/modules/mob/living/simple_mob/simple_mob.dm index 61a95a99bb..e858ab7151 100644 --- a/code/modules/mob/living/simple_mob/simple_mob.dm +++ b/code/modules/mob/living/simple_mob/simple_mob.dm @@ -163,6 +163,11 @@ // Used for if the mob can drop limbs. Overrides the icon cache key, so it doesn't keep remaking the icon needlessly. var/limb_icon_key + /// If above zero, decrement in Life(); on zero, put the mob to sleep for thirty seconds. + var/tranq_countdown = 0 + /// A temporary storage value for the duration of any tranquilizer effect. + var/tranq_duration + /mob/living/simple_mob/Initialize() verbs -= /mob/verb/observe health = maxHealth @@ -288,3 +293,17 @@ /decl/mob_organ_names var/list/hit_zones = list("body") //When in doubt, it's probably got a body. + +/mob/living/simple_mob/handle_sleeping() + if(sleeping || stat != CONSCIOUS) + tranq_countdown = null + tranq_duration = null + else if(tranq_countdown > 0) + tranq_countdown-- + if(tranq_countdown <= 0) + if(client) + to_chat(src, SPAN_DANGER("You fall asleep!")) + SetSleeping(max(1, round(tranq_duration / SSmobs.wait))) + else if(prob(5) && client) + to_chat(src, SPAN_WARNING("You feel [pick("dizzy", "woozy", "sleepy")]...")) + return ..() diff --git a/code/modules/projectiles/guns/energy/phase.dm b/code/modules/projectiles/guns/energy/phase.dm index bb99cac1d7..e954c2ec0d 100644 --- a/code/modules/projectiles/guns/energy/phase.dm +++ b/code/modules/projectiles/guns/energy/phase.dm @@ -1,5 +1,4 @@ // Phase weapons go here - /obj/item/gun/energy/phasegun name = "phase carbine" desc = "The RayZar EW26 Artemis is a downsized energy weapon, specifically designed for use against wildlife." @@ -12,6 +11,30 @@ projectile_type = /obj/item/projectile/energy/phase one_handed_penalty = 15 +/obj/item/gun/energy/phasegun/tranq_rifle + name = "tranquilizer rifle" + desc = "A niche RayZar product designed for nonlethal animal control. A specialized emitter disrupts the nervous system of the target, eventually inducing sleep. Only rated for use on wildlife." + icon_state = "phaserifle" + item_state = "phaserifle" + wielded_item_state = "phaserifle-wielded" + w_class = ITEMSIZE_LARGE + slot_flags = SLOT_BACK + charge_cost = 140 + projectile_type = /obj/item/projectile/energy/phase/tranq + accuracy = 15 + one_handed_penalty = 30 + +/obj/item/gun/energy/phasegun/tranq_pistol + name = "tranquilizer pistol" + desc = "A niche RayZar product designed for nonlethal animal control. A specialized emitter disrupts the nervous system of the target, eventually inducing sleep. Only rated for use on wildlife." + icon_state = "phase" + item_state = "taser" + w_class = ITEMSIZE_NORMAL + slot_flags = SLOT_BELT|SLOT_HOLSTER + charge_cost = 200 + projectile_type = /obj/item/projectile/energy/phase/tranq/weak + one_handed_penalty = 0 + /obj/item/gun/energy/phasegun/mounted self_recharge = 1 use_external_power = 1 @@ -65,4 +88,4 @@ charge_cost = 100 projectile_type = /obj/item/projectile/energy/phase/heavy/cannon accuracy = 15 - one_handed_penalty = 65 \ No newline at end of file + one_handed_penalty = 65 diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 89e5118be7..1ebb1d287c 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -820,3 +820,9 @@ if(silenced) volume = 5 playsound(A, hitsound_wall, volume, 1, -1) + + +/obj/item/projectile/proc/apply_SA_vulnerability(var/mob/living/simple_mob/victim) + if(!nodamage && SA_bonus_damage && istype(victim) && (SA_vulnerability & victim.mob_class)) + return SA_bonus_damage + return 0 diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index de52c5d4e5..2bec4ddf69 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -292,4 +292,33 @@ range = 10 damage = 15 SA_bonus_damage = 60 // 75 total on animals - hud_state = "laser_heat" \ No newline at end of file + hud_state = "laser_heat" + +/obj/item/projectile/energy/phase/tranq + name = "tranquilizer wave" + range = 10 + damage = 0 + nodamage = TRUE + SA_bonus_damage = 0 + hud_state = "laser_heat" + var/tranq_duration = 30 SECONDS + var/tranq_delay = 10 SECONDS + var/tranq_delay_modifier = 0.7 + +/obj/item/projectile/energy/phase/tranq/weak + range = 6 + tranq_duration = 20 SECONDS + tranq_delay = 15 SECONDS + tranq_delay_modifier = 0.9 + +// Being hit with a tranq shot either shaves a percentage off the remaining delay, or starts the timer. +/obj/item/projectile/energy/phase/tranq/apply_SA_vulnerability(var/mob/living/simple_mob/victim) + ..() + if(!istype(victim) || victim.stat != CONSCIOUS || !(SA_vulnerability & victim.mob_class)) + return + if(victim.tranq_countdown <= 0) + victim.tranq_countdown = tranq_duration / SSmobs.wait + else + victim.tranq_countdown *= tranq_delay_modifier + victim.tranq_duration = (victim.tranq_duration > 0) ? min(tranq_duration, victim.tranq_duration) : tranq_duration + victim.tranq_countdown = max(1, round(victim.tranq_countdown)) diff --git a/maps/cynosure/structures/closets/misc.dm b/maps/cynosure/structures/closets/misc.dm index fdeb93e013..6eed4e191b 100644 --- a/maps/cynosure/structures/closets/misc.dm +++ b/maps/cynosure/structures/closets/misc.dm @@ -34,10 +34,12 @@ /obj/item/clothing/accessory/permit/gun/planetside) /obj/structure/closet/secure_closet/guncabinet/tranq - name = "phase pistol cabinet" //"tranquilizer rifle cabinet" + name = "tranquilizer rifle cabinet" req_one_access = list(access_xenofauna,access_medical) starts_with = list( - /obj/item/gun/energy/phasegun/pistol = 2, + /obj/item/gun/energy/phasegun/tranq_rifle = 2, + /obj/item/gun/energy/phasegun/tranq_pistol, + /obj/item/gun/energy/phasegun/pistol, /obj/item/cell/device/weapon = 2, /obj/item/clothing/accessory/permit/gun/planetside )