diff --git a/_maps/map_files/AegisVII/AegisVII.dmm b/_maps/map_files/AegisVII/AegisVII.dmm index 319adba27ad..3cb8be8d233 100644 --- a/_maps/map_files/AegisVII/AegisVII.dmm +++ b/_maps/map_files/AegisVII/AegisVII.dmm @@ -341,9 +341,6 @@ /area/station/security/brig) "aiv" = ( /obj/machinery/light/directional/east, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, /turf/open/floor/deadspace/random/slides, /area/station/security/brig) "aiP" = ( @@ -524,11 +521,19 @@ /turf/open/floor/deadspace/random/maint_center, /area/station/security/checkpoint/science) "amr" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/rack, +/obj/item/melee/cleric_mace{ + name = "riot baton"; + greyscale_colors = "#3e4040"; + desc = "A very large steel club designed to curb RIG suit riots, very lethal against the unarmored." }, -/turf/open/floor/deadspace/random/maint_center, -/area/station/security/brig) +/obj/item/melee/cleric_mace{ + name = "riot baton"; + greyscale_colors = "#3e4040"; + desc = "A very large steel club designed to curb RIG suit riots, very lethal against the unarmored." + }, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/security/armory) "amv" = ( /obj/structure/railing, /obj/machinery/light/directional/north, @@ -1759,7 +1764,7 @@ /turf/open/floor/deadspace/random/slides{ dir = 1 }, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "aUR" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/firealarm/directional/east, @@ -1982,7 +1987,7 @@ /obj/structure/table/reinforced, /obj/structure/window/reinforced/spawner, /turf/open/floor/deadspace/mono, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "bbn" = ( /obj/machinery/camera/directional/south{ c_tag = "Courtroom - Gallery" @@ -2595,7 +2600,7 @@ /obj/structure/cable/yellow{ icon_state = "3" }, -/obj/structure/overfloor_catwalk/iron_dark, +/turf/open/floor/iron/ported/lino, /area/station/service/chapel/funeral) "bqt" = ( /obj/machinery/light/directional/south, @@ -2854,6 +2859,7 @@ "byk" = ( /obj/effect/mob_spawn/corpse/human/miner, /obj/structure/overfloor_catwalk/iron_dark, +/turf/open/floor/plating, /area/aegis/mining) "byl" = ( /obj/machinery/door/poddoor/shutters{ @@ -2951,12 +2957,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/deadspace/random/rectangles, /area/station/commons/storage/primary) -"bBw" = ( -/obj/machinery/door/airlock{ - name = "Bathroom" - }, -/turf/closed/wall, -/area/station/commons/dorms/barracks/female) "bBH" = ( /obj/structure/chair{ dir = 8 @@ -3366,7 +3366,7 @@ }, /obj/machinery/light/directional/north, /turf/open/floor/deadspace/mono, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "bKf" = ( /obj/structure/table/wood/fancy/red, /obj/item/candle/infinite, @@ -3410,13 +3410,10 @@ /turf/open/floor/plating, /area/station/engineering/main) "bLm" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "bLI" = ( /obj/structure/table, /obj/item/flashlight/lamp, @@ -3655,6 +3652,7 @@ "bQD" = ( /obj/effect/landmark/pestspawn, /obj/structure/overfloor_catwalk/iron_dark, +/turf/open/floor/plating, /area/aegis/mining) "bQI" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners, @@ -3859,12 +3857,17 @@ /turf/open/floor/deadspace/mono, /area/station/cargo) "bVx" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/structure/rack, +/obj/item/melee/curator_whip{ + name = "riot whip"; + desc = "A whip designed to curtail civilian riots, use sparingly." + }, +/obj/item/melee/curator_whip{ + name = "riot whip"; + desc = "A whip designed to curtail civilian riots, use sparingly." }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "bVz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -3973,12 +3976,13 @@ }, /area/station/security/checkpoint/science) "bYn" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/rack, +/obj/item/restraints/legcuffs/bola/tactical, +/obj/item/restraints/legcuffs/bola/tactical, +/obj/item/restraints/legcuffs/bola/tactical, +/obj/item/restraints/legcuffs/bola/tactical, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "bYz" = ( /obj/effect/landmark/pestspawn, /turf/open/floor/deadspace/random/slides{ @@ -4188,7 +4192,8 @@ /obj/machinery/conveyor{ id = "Storage Upper" }, -/obj/structure/overfloor_catwalk/iron_dark, +/obj/structure/lattice, +/turf/open/openspace, /area/aegis/surface) "cef" = ( /obj/effect/landmark{ @@ -4490,7 +4495,7 @@ /turf/open/floor/deadspace/random/slides_end{ dir = 1 }, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "cmG" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, @@ -4858,7 +4863,7 @@ /turf/open/floor/deadspace/random/slides{ dir = 1 }, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "cxa" = ( /obj/effect/turf_decal/box, /turf/open/floor/deadspace/grater, @@ -5446,6 +5451,7 @@ /area/station/hallway/primary/fore) "cLi" = ( /obj/structure/closet/secure_closet/ds/hos, +/obj/item/shield/riot/ds/advanced, /turf/open/floor/deadspace/hardwood, /area/station/command/heads_quarters/hos) "cLP" = ( @@ -7197,6 +7203,7 @@ /obj/structure/disposalpipe/trunk/multiz/down{ dir = 1 }, +/obj/machinery/light/directional/west, /turf/open/floor/deadspace/mono, /area/station/security/brig) "dFW" = ( @@ -7432,7 +7439,7 @@ }, /obj/structure/window/reinforced/spawner/east, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "dLC" = ( /obj/structure/window/reinforced/spawner/west, /obj/structure/window/reinforced/spawner/east, @@ -7583,7 +7590,7 @@ /obj/item/grenade/c4, /obj/structure/window/reinforced/spawner/west, /turf/open/floor/deadspace/random/maint_center, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "dOY" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -7619,7 +7626,7 @@ "dQI" = ( /obj/structure/overfloor_catwalk/iron_dark, /turf/open/floor/plating/reinforced, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "dRc" = ( /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable/yellow{ @@ -8030,7 +8037,7 @@ /obj/structure/closet/bombcloset, /obj/machinery/light/directional/east, /turf/open/floor/deadspace/random/slides, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "eeL" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -8208,12 +8215,9 @@ /area/station/service/chapel) "ejR" = ( /obj/machinery/firealarm/directional/east, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, +/obj/structure/barricade/security, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "ejT" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/deadspace/random/slides{ @@ -8282,11 +8286,11 @@ }, /area/station/hallway/primary/starboard) "emn" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, +/obj/item/melee/baton, +/obj/item/melee/baton, +/obj/structure/rack, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "emv" = ( /obj/structure/chair/office{ dir = 8 @@ -8320,6 +8324,7 @@ icon_state = "9" }, /obj/structure/overfloor_catwalk/iron_dark, +/turf/open/openspace, /area/station/service/chapel/funeral) "enr" = ( /obj/structure/cable/yellow{ @@ -8416,6 +8421,7 @@ /obj/effect/decal/cleanable/blood, /obj/effect/mob_spawn/corpse/human/miner, /obj/structure/overfloor_catwalk/iron_dark, +/turf/open/floor/plating, /area/aegis/mining) "epL" = ( /obj/structure/table, @@ -8521,13 +8527,13 @@ /turf/open/floor/iron/ported/techfloor_grid, /area/station/engineering/supermatter/room) "esG" = ( -/obj/machinery/door/airlock/security{ - name = "Morgue"; - req_one_access_txt = "1;4" - }, /obj/machinery/door/firedoor, +/obj/machinery/door/airlock/highsecurity{ + req_one_access_txt = "1;3"; + name = "Morgue / Riot Control" + }, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "esI" = ( /obj/machinery/camera/motion/directional/west, /turf/open/floor/deadspace/random/slides{ @@ -8757,7 +8763,7 @@ "eBj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "eBI" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/bot{ @@ -10377,6 +10383,7 @@ /obj/effect/spawner/random/vending/snackvend, /obj/machinery/light/small/directional/east, /obj/structure/overfloor_catwalk/iron_dark, +/turf/open/floor/plating, /area/aegis/mining) "fto" = ( /obj/effect/turf_decal/box, @@ -10614,7 +10621,7 @@ dir = 4 }, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "fBO" = ( /obj/effect/turf_decal/box, /obj/machinery/hydroponics/constructable, @@ -10834,7 +10841,6 @@ /turf/open/floor/deadspace/bathroom, /area/mine/production) "fIr" = ( -/obj/structure/disposalpipe/trunk/multiz, /obj/structure/cable/multiz, /obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2{ dir = 4 @@ -10846,7 +10852,7 @@ icon_state = "4" }, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "fIs" = ( /turf/open/floor/deadspace/random/slides, /area/station/cargo/warehouse) @@ -12100,11 +12106,8 @@ /turf/open/floor/deadspace/random/maint_left, /area/station/security/courtroom) "guq" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "guv" = ( /obj/item/storage/toolbox/mechanical, /turf/open/misc/asteroid, @@ -12369,6 +12372,7 @@ pixel_x = -11 }, /obj/structure/overfloor_catwalk/iron_dark, +/turf/open/openspace, /area/station/service/chapel/funeral) "gBT" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -12452,7 +12456,7 @@ icon_state = "3" }, /turf/open/floor/deadspace/random/slides, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "gCS" = ( /obj/machinery/door/window/left/directional/west{ name = "Inner Pipe Access"; @@ -12537,7 +12541,7 @@ /obj/item/ammo_casing/shotgun/bola, /obj/item/gun/ballistic/shotgun/scl_shotgun, /turf/open/floor/deadspace/random/slides, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "gFt" = ( /obj/structure/window/reinforced/spawner/north, /obj/structure/window/reinforced/spawner/west, @@ -12828,7 +12832,7 @@ icon_state = "3" }, /turf/open/floor/deadspace/mono, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "gLP" = ( /obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 4 @@ -13242,9 +13246,6 @@ /obj/structure/chair/office{ dir = 1 }, -/obj/structure/disposalpipe/trunk/multiz/down{ - dir = 1 - }, /obj/structure/cable/multiz, /obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4{ dir = 8 @@ -13319,7 +13320,7 @@ /obj/structure/cable/yellow{ icon_state = "12" }, -/obj/structure/overfloor_catwalk/iron_dark, +/turf/open/floor/plating, /area/station/maintenance/starboard/central) "gUV" = ( /obj/machinery/door/airlock{ @@ -13682,9 +13683,10 @@ /turf/open/floor/deadspace/hardwood, /area/station/command/heads_quarters/hop) "hdo" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/obj/structure/window/reinforced/spawner, +/obj/structure/closet/emcloset, +/turf/open/floor/deadspace/mono, +/area/station/ai_monitored/security/armory) "hdp" = ( /obj/machinery/door/airlock/glass, /obj/machinery/door/firedoor, @@ -13840,13 +13842,15 @@ /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/overfloor_catwalk/iron_dark, +/turf/open/floor/deadspace/random/maint_center, /area/station/security/checkpoint/customs) "hhr" = ( /turf/closed/wall, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "hht" = ( +/obj/structure/barricade/security, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "hhz" = ( /turf/closed/wall/r_wall, /area/station/engineering/atmos/storage/gas) @@ -14043,9 +14047,6 @@ /turf/open/floor/iron, /area/station/maintenance/port/lesser) "hox" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/deadspace/random/maint_center, @@ -14246,7 +14247,7 @@ /obj/machinery/airalarm/directional/south, /obj/structure/overfloor_catwalk/iron_dark, /turf/open/floor/plating/reinforced, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "htj" = ( /obj/effect/spawner/random/vending/colavend, /turf/open/floor/deadspace/random/slides, @@ -14721,9 +14722,6 @@ /turf/open/floor/deadspace/med/med_plating, /area/station/medical/chemistry) "hFH" = ( -/obj/structure/disposalpipe/junction/yjunction{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable/yellow{ @@ -14736,6 +14734,9 @@ icon_state = "3" }, /obj/structure/overfloor_catwalk/iron_dark, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, /turf/open/floor/plating, /area/station/security/brig) "hFJ" = ( @@ -15383,9 +15384,13 @@ }, /area/station/hallway/primary/fore) "hXy" = ( -/obj/machinery/vending/security, +/obj/machinery/camera/autoname/directional/west, +/obj/structure/rack, +/obj/item/shield/riot/ds, +/obj/item/shield/riot/ds, +/obj/item/shield/riot/ds, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "hXF" = ( /obj/machinery/light/directional/north, /turf/open/floor/deadspace/random/golf_brown, @@ -15727,6 +15732,7 @@ /area/station/command/heads_quarters/hos) "ijc" = ( /obj/structure/overfloor_catwalk/iron_dark, +/turf/open/floor/plating, /area/aegis/mining) "ijj" = ( /obj/structure/table, @@ -15770,12 +15776,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"ike" = ( -/obj/machinery/door/airlock{ - name = "Bathroom" - }, -/turf/closed/wall, -/area/station/commons/dorms/barracks/male) "ikn" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible, /obj/machinery/atmospherics/pipe/smart/simple/pink/visible{ @@ -16935,7 +16935,7 @@ /obj/structure/table/reinforced, /obj/item/storage/box/firingpins, /turf/open/floor/deadspace/random/slides_end, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "iMP" = ( /obj/structure/cable/yellow{ icon_state = "3" @@ -17645,7 +17645,7 @@ dir = 8 }, /turf/open/floor/deadspace/random/slides, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "jfJ" = ( /obj/machinery/light/directional/north, /turf/open/openspace, @@ -17921,7 +17921,7 @@ /obj/machinery/conveyor{ id = "Storage Upper" }, -/obj/structure/overfloor_catwalk/iron_dark, +/turf/open/openspace, /area/aegis/surface) "jnF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -18210,6 +18210,7 @@ "juq" = ( /obj/structure/reagent_dispensers/watertank, /obj/structure/overfloor_catwalk/iron_dark, +/turf/open/floor/deadspace/grater, /area/aegis/mining) "juE" = ( /obj/effect/decal/cleanable/generic, @@ -18953,7 +18954,7 @@ /turf/open/floor/deadspace/random/slides{ dir = 1 }, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "jPM" = ( /obj/machinery/light/floor/has_bulb, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -19538,7 +19539,7 @@ "kgw" = ( /obj/structure/sign/warning, /turf/closed/wall/r_wall, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "kgA" = ( /obj/structure/window/reinforced/spawner/west, /obj/structure/flora/rock/pile, @@ -21843,15 +21844,13 @@ /turf/open/floor/deadspace/random/golf_brown, /area/station/cargo) "lnQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable/yellow{ icon_state = "3" }, /obj/structure/overfloor_catwalk/iron_dark, +/obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/security/brig) "lnU" = ( @@ -22099,11 +22098,11 @@ /turf/open/floor/carpet/royalblack, /area/station/cargo/lobby) "ltY" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/machinery/vending/security, +/turf/open/floor/deadspace/random/slides{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/security/lockers) "luf" = ( /obj/structure/table/wood/fancy/green, /obj/machinery/fax_machine, @@ -22134,7 +22133,7 @@ dir = 4 }, /turf/open/floor/deadspace/random/maint_center, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "luO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/ported/lino, @@ -22267,6 +22266,7 @@ icon_state = "12" }, /obj/structure/overfloor_catwalk/iron_dark, +/turf/open/floor/deadspace/random/maint_center, /area/station/security/checkpoint/customs) "lwY" = ( /obj/machinery/power/apc/auto_name/directional/south, @@ -23067,7 +23067,7 @@ dir = 8 }, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "lTd" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance, @@ -24126,7 +24126,7 @@ "mvd" = ( /obj/machinery/door/airlock/medical{ name = "Morgue"; - req_access_txt = "6" + req_access_txt = "4;6" }, /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -24257,7 +24257,7 @@ dir = 1 }, /turf/open/floor/deadspace/mono, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "myz" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor/deadspace/random/slides{ @@ -24652,9 +24652,6 @@ /turf/open/floor/deadspace/med/med_plating, /area/station/medical/medbay/aft) "mFC" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable/yellow{ @@ -25167,7 +25164,7 @@ "mUY" = ( /obj/structure/stairs/north, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "mVh" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -25343,11 +25340,16 @@ }, /area/station/medical/coldroom) "naH" = ( -/obj/machinery/vending/cigarette, -/obj/machinery/camera/autoname/directional/west, /obj/machinery/light/directional/south, +/obj/structure/rack, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "naS" = ( /obj/structure/table, /obj/effect/spawner/random/engineering/tool, @@ -25801,7 +25803,7 @@ icon_state = "3" }, /turf/open/floor/deadspace/mono, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "nmx" = ( /obj/structure/railing{ dir = 1 @@ -26270,11 +26272,12 @@ "nCB" = ( /obj/effect/decal/cleanable/blood, /obj/structure/overfloor_catwalk/iron_dark, +/turf/open/floor/plating, /area/aegis/mining) "nCH" = ( -/obj/structure/closet/firecloset, +/obj/structure/closet/secure_closet/lethalshots, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "nCL" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -26481,6 +26484,7 @@ icon_state = "2" }, /obj/structure/overfloor_catwalk/iron_dark, +/turf/open/floor/deadspace/random/maint_center, /area/station/security/checkpoint/customs) "nHr" = ( /turf/open/floor/deadspace/random/slides{ @@ -26517,7 +26521,9 @@ "nHS" = ( /obj/machinery/light/directional/south, /obj/machinery/camera/autoname/directional/south, -/turf/open/floor/deadspace/mono, +/turf/open/floor/deadspace/random/slides{ + dir = 4 + }, /area/station/security/brig) "nHW" = ( /obj/machinery/computer/mechpad{ @@ -27444,6 +27450,10 @@ /area/station/science/lab) "ogu" = ( /obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/highsecurity{ + req_one_access_txt = "1;3"; + name = "Morgue / Riot Control" + }, /turf/open/floor/deadspace/mono, /area/station/security/brig) "ogx" = ( @@ -27709,7 +27719,10 @@ /turf/open/floor/iron/dark, /area/station/science/genetics) "olE" = ( -/turf/open/floor/deadspace/mono, +/obj/machinery/vending/cigarette, +/turf/open/floor/deadspace/random/slides{ + dir = 4 + }, /area/station/security/brig) "olQ" = ( /obj/machinery/firealarm/directional/north, @@ -28655,14 +28668,14 @@ /area/station/service/chapel) "oIt" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/junction/flip{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable/yellow{ icon_state = "5" }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, /turf/open/floor/deadspace/random/maint_center, /area/station/security/brig) "oIw" = ( @@ -29299,7 +29312,7 @@ /turf/open/floor/deadspace/random/slides{ dir = 1 }, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "oZk" = ( /obj/structure/fluff/empty_sleeper, /obj/machinery/light/small/directional/north, @@ -29531,7 +29544,7 @@ /obj/structure/rack/shelf, /obj/item/mod/control/pre_equipped/ds/pcsi, /turf/open/floor/deadspace/random/slides, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "pdV" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/light_switch/directional/north, @@ -29677,13 +29690,11 @@ /turf/open/floor/deadspace/random/rectangles, /area/station/engineering/break_room) "phv" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/light/directional/north, +/obj/structure/barricade/security, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "phz" = ( /obj/machinery/power/apc/auto_name/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -30420,7 +30431,7 @@ icon_state = "12" }, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "pzP" = ( /obj/machinery/door/window{ dir = 4 @@ -30453,7 +30464,7 @@ /area/station/maintenance/port/lesser) "pAQ" = ( /turf/closed/wall/r_wall, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "pAV" = ( /obj/structure/frame/computer, /obj/effect/turf_decal/box, @@ -30494,7 +30505,7 @@ /area/station/tcommsat/server) "pBD" = ( /turf/open/floor/deadspace/random/maint_center, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "pBH" = ( /turf/closed/wall/r_wall, /area/station/medical/psychology) @@ -30939,7 +30950,7 @@ }, /obj/structure/overfloor_catwalk/iron_dark, /turf/open/floor/plating/reinforced, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "pNc" = ( /obj/machinery/air_sensor/plasma_tank, /obj/machinery/camera/directional/east{ @@ -31992,12 +32003,6 @@ }, /turf/open/floor/deadspace/random/golf_brown, /area/station/cargo/sorting) -"qqh" = ( -/obj/machinery/conveyor{ - id = "Storage Upper" - }, -/turf/open/floor/plating, -/area/aegis/surface) "qqt" = ( /obj/structure/closet/firecloset, /obj/effect/turf_decal/bot, @@ -32208,8 +32213,9 @@ /area/station/command/heads_quarters/cmo) "qvC" = ( /obj/machinery/light/directional/east, +/obj/structure/barricade/security, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "qvK" = ( /obj/item/camera, /obj/structure/table, @@ -32317,7 +32323,7 @@ }, /obj/structure/overfloor_catwalk/iron_dark, /turf/open/floor/plating/reinforced, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "qym" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, @@ -32493,7 +32499,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/overfloor_catwalk/iron_dark, /turf/open/floor/plating/reinforced, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "qCI" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -32701,7 +32707,7 @@ /area/station/security/courtroom) "qIC" = ( /turf/open/floor/deadspace/random/slides, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "qII" = ( /obj/structure/chair{ dir = 4 @@ -32871,7 +32877,7 @@ icon_state = "3" }, /turf/open/floor/deadspace/random/maint_center, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "qMr" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible, /obj/machinery/atmospherics/components/binary/pump/on{ @@ -33943,7 +33949,7 @@ icon_state = "8" }, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "rwv" = ( /obj/machinery/power/emitter/welded{ dir = 8 @@ -35085,6 +35091,7 @@ "rZt" = ( /obj/structure/reagent_dispensers/fueltank, /obj/structure/overfloor_catwalk/iron_dark, +/turf/open/floor/deadspace/grater, /area/aegis/mining) "rZF" = ( /obj/machinery/light/small/directional/north, @@ -36909,6 +36916,22 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/deadspace/random/rectangles, /area/station/engineering/atmos) +"sVV" = ( +/obj/structure/rack, +/obj/item/clothing/suit/armor/swat, +/obj/item/clothing/suit/armor/swat, +/obj/item/clothing/suit/armor/swat, +/obj/item/clothing/shoes/combat/swat, +/obj/item/clothing/shoes/combat/swat, +/obj/item/clothing/shoes/combat/swat, +/obj/item/clothing/mask/gas/sechailer/swat, +/obj/item/clothing/mask/gas/sechailer/swat, +/obj/item/clothing/mask/gas/sechailer/swat, +/obj/item/clothing/head/helmet/swat, +/obj/item/clothing/head/helmet/swat, +/obj/item/clothing/head/helmet/swat, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/security/armory) "sVZ" = ( /obj/machinery/light/floor/has_bulb, /turf/open/floor/deadspace/cable, @@ -38104,7 +38127,7 @@ /turf/open/floor/deadspace/random/slides{ dir = 1 }, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "tDH" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -38134,16 +38157,13 @@ /turf/open/floor/iron/showroomfloor, /area/station/commons/dorms/laundry) "tFb" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable/yellow{ icon_state = "9" }, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "tFf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable/yellow{ @@ -38151,7 +38171,7 @@ }, /obj/structure/overfloor_catwalk/iron_dark, /turf/open/floor/plating/reinforced, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "tFo" = ( /obj/item/clothing/head/collectable/hardhat, /obj/structure/table, @@ -38410,10 +38430,14 @@ /turf/open/floor/plating, /area/station/hallway/secondary/exit) "tMZ" = ( -/obj/structure/closet/emcloset, /obj/machinery/light/directional/south, +/obj/structure/rack, +/obj/item/clothing/head/helmet/marine/security, +/obj/item/clothing/head/helmet/marine/security, +/obj/item/clothing/suit/armor/vest/marine/security, +/obj/item/clothing/suit/armor/vest/marine/security, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "tNb" = ( /turf/open/floor/deadspace/med/med_plating, /area/station/medical/pharmacy) @@ -38502,6 +38526,7 @@ icon_state = "6" }, /obj/structure/overfloor_catwalk/iron_dark, +/turf/open/openspace, /area/station/service/chapel/funeral) "tPR" = ( /obj/item/clothing/suit/xenos, @@ -38624,7 +38649,7 @@ icon_state = "12" }, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "tTB" = ( /obj/structure/cable/yellow{ icon_state = "3" @@ -38725,7 +38750,7 @@ "tWx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "tWy" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/deadspace/random/slides{ @@ -39026,7 +39051,7 @@ icon_state = "3" }, /turf/open/floor/deadspace/random/maint_center, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "ueJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/deadspace/random/tech{ @@ -39224,7 +39249,7 @@ /obj/structure/window/reinforced/spawner/west, /obj/structure/overfloor_catwalk/iron_dark, /turf/open/floor/plating/reinforced, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "ukm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable/yellow{ @@ -39493,6 +39518,7 @@ /area/station/science/robotics/lab) "urL" = ( /obj/structure/closet/secure_closet/ds/captains, +/obj/item/shield/riot/ds/advanced, /turf/open/floor/deadspace/hardwood, /area/station/command/heads_quarters/captain/private) "urV" = ( @@ -40157,7 +40183,7 @@ "uKI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/deadspace/random/slides, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "uKR" = ( /obj/structure/sign/cec/deck/medical{ pixel_y = -32 @@ -40581,24 +40607,15 @@ "uWK" = ( /obj/structure/rack, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/shield/riot{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/shield/riot{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/shield/riot{ - pixel_x = 3; - pixel_y = -3 - }, /obj/structure/window/reinforced/spawner/east, /obj/structure/cable/yellow{ icon_state = "3" }, +/obj/item/shield/riot/ds/advanced, +/obj/item/shield/riot/ds/advanced, +/obj/item/shield/riot/ds/advanced, /turf/open/floor/deadspace/random/maint_center, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "uWL" = ( /obj/structure/chair/office{ dir = 8 @@ -40722,7 +40739,7 @@ }, /obj/structure/window/reinforced/spawner/west, /turf/open/floor/deadspace/random/maint_center, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "uZE" = ( /obj/machinery/vending/drugs, /obj/machinery/airalarm/directional/north, @@ -40793,7 +40810,7 @@ /obj/item/ammo_box/magazine/divet, /obj/structure/window/reinforced/spawner/west, /turf/open/floor/deadspace/random/maint_center, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "vci" = ( /obj/machinery/air_sensor/air_tank, /obj/machinery/camera/directional/east{ @@ -40961,6 +40978,7 @@ /obj/item/reagent_containers/spray/cleaner, /obj/item/reagent_containers/spray/cleaner, /obj/structure/overfloor_catwalk/iron_dark, +/turf/open/openspace, /area/station/service/chapel/funeral) "vfU" = ( /obj/structure/chair/stool/bar/directional/north, @@ -41762,7 +41780,7 @@ "vyl" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/deadspace/random/maint_center, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "vyu" = ( /obj/structure/table/reinforced/rglass, /obj/effect/floor_decal/ds/spline/fancy/wood/cee, @@ -43983,7 +44001,7 @@ icon_state = "12" }, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "wFP" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -44040,7 +44058,7 @@ /obj/item/ammo_box/magazine/divet/ap, /obj/structure/window/reinforced/spawner/west, /turf/open/floor/deadspace/random/maint_center, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "wGL" = ( /obj/machinery/status_display/evac/directional/east, /obj/effect/turf_decal/tile/neutral{ @@ -44293,11 +44311,10 @@ /turf/open/floor/deadspace/random/rectangles, /area/station/engineering/main) "wOs" = ( -/obj/structure/lattice, /obj/machinery/conveyor{ id = "Storage Upper" }, -/turf/open/floor/plating, +/turf/open/misc/asteroid, /area/aegis/surface) "wOy" = ( /obj/structure/table, @@ -45531,11 +45548,10 @@ /turf/open/floor/iron/white, /area/station/science/research) "xtC" = ( -/obj/structure/table/reinforced, /obj/structure/window/reinforced/spawner, -/obj/item/storage/box/evidence, +/obj/structure/closet/firecloset, /turf/open/floor/deadspace/mono, -/area/station/security/checkpoint/medical) +/area/station/ai_monitored/security/armory) "xua" = ( /turf/closed/wall, /area/station/engineering/atmos/storage/gas) @@ -45946,7 +45962,7 @@ /obj/item/mod/control/pre_equipped/ds/pcsi, /obj/machinery/light/directional/east, /turf/open/floor/deadspace/random/slides, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "xEO" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners, /obj/structure/cable/yellow{ @@ -46509,7 +46525,7 @@ icon_state = "3" }, /turf/open/floor/deadspace/random/maint_center, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "xQo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -46634,7 +46650,7 @@ /obj/item/pen, /obj/machinery/door/firedoor, /turf/open/floor/deadspace/mono, -/area/station/ai_monitored/security/armory) +/area/station/ai_monitored/security/armory/upper) "xTo" = ( /obj/machinery/light/small/directional/west, /turf/open/floor/deadspace/random/rectangles, @@ -46801,6 +46817,7 @@ icon_state = "2" }, /obj/structure/overfloor_catwalk/iron_dark, +/turf/open/openspace, /area/station/service/chapel/funeral) "xXl" = ( /obj/machinery/door/window/left/directional/west{ @@ -55570,10 +55587,10 @@ dBD dBD hhr mUY -hht -hht +guq +guq fIr -emn +guq hXy hhr dBD @@ -55886,9 +55903,9 @@ hhr pzK eBj xtC -bYn -hht -hXy +tWx +guq +amr hhr dBD dBD @@ -56041,11 +56058,11 @@ dBD dBD hhr wFM -hht -baO -bYn -hht -hhr +guq +hdo +tWx +guq +bVx hhr dBD dBD @@ -56201,7 +56218,8 @@ tTy fBM baO bLm -hht +guq +emn hhr dBD dBD @@ -56211,7 +56229,6 @@ dBD dBD dBD dBD -dBD jyZ jyZ "} @@ -56357,8 +56374,9 @@ hhr rwm dLt hhr -bYn -hht +tWx +guq +sVV hhr dBD dBD @@ -56368,7 +56386,6 @@ dBD dBD dBD dBD -dBD jyZ jyZ "} @@ -56511,12 +56528,12 @@ dBD dBD dBD hhr -ltY -hdo -hdo -bVx hht -hhr +hht +hht +tWx +guq +bYn hhr dBD dBD @@ -56672,7 +56689,7 @@ phv tWx tWx tWx -hht +guq tMZ hhr dBD @@ -56829,7 +56846,7 @@ ejR lTa qvC hht -hht +guq nCH hhr dBD @@ -75286,7 +75303,7 @@ pnM dBD dBD dBD -dBD +qjS dBD dBD dBD @@ -75608,7 +75625,7 @@ dBD dBD dBD dBD -kCR +qjS kCR kCR kCR @@ -75930,7 +75947,7 @@ kCR kCR kCR kCR -kCR +qjS kCR kCR kCR @@ -77186,7 +77203,7 @@ kCR kCR kCR kCR -kCR +qjS kCR kCR kCR @@ -80518,9 +80535,9 @@ rMR mzN eMD bJB -cvV -cvV -cvV +mzN +mzN +mzN dfq dBD dBD @@ -81581,7 +81598,7 @@ tBi eHz gqY rQa -ike +rBy uWf mkC uWf @@ -82209,7 +82226,7 @@ uJn eHz rxH nEa -bBw +cUY piu rSh piu @@ -84458,7 +84475,7 @@ sXb kLn twY iJW -sha +ltY kKR dBD dBD @@ -85074,7 +85091,7 @@ bcd dil dil wnZ -dIM +foa dil dil dil @@ -85086,7 +85103,7 @@ dIM dil dil sCe -ais +olE oXR dBD dBD @@ -85231,7 +85248,7 @@ pwj gmj mSR roz -dIM +foa bHM oXR oXR @@ -85545,7 +85562,7 @@ ses tHx vVj roz -dIM +foa uFS sys onQ @@ -85702,7 +85719,7 @@ rGz rGz kmP roz -dIM +foa tLj oXR oXR @@ -86810,14 +86827,14 @@ xCP oXR roz dIM -ais nHS oXR oXR oXR oXR +oXR aig -amr +hdA oJH bgy bgy @@ -87125,7 +87142,7 @@ oXR aqZ dIM ais -olE +oXR oXR oXR oXR @@ -106076,7 +106093,7 @@ kCR kCR dBD dBD -xNw +dBD dBD dBD dBD @@ -106232,8 +106249,8 @@ kCR kCR xNw xNw -xNw -xNw +dBD +dBD dBD dBD dBD @@ -107962,7 +107979,7 @@ jnE jnE jnE wOs -qqh +wOs nFQ dNu dNu diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index d9fdf63a1d2..3a03cde9725 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -567,6 +567,83 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." final.Turn(difference) animate(src, transform = final, time = 5, loop = 0) +/atom/movable/screen/alert/necrosense + name = "Necro Sense" + desc = "Allows you to find those who are not whole." + icon_state = "cult_sense" //TODO : get our own sprites + alerttooltipstyle = "cult" + var/angle = 0 + var/mob/living/carbon/human/necromorph/Cviewer = null + +/atom/movable/screen/alert/necrosense/Initialize(mapload) + . = ..() + START_PROCESSING(SSprocessing, src) + +/atom/movable/screen/alert/necrosense/Destroy() + Cviewer = null + STOP_PROCESSING(SSprocessing, src) + return ..() + +/atom/movable/screen/alert/necrosense/process() + var/mob/living/carbon/human/necromorph/sensor = owner + var/mob/target = sensor.sense_target + + if(!sensor.mind) + return + if(!sensor.sense_target) + return + if(target.stat == DEAD) + to_chat(sensor, "Your target has died.") + sensor.searching = FALSE + sensor.sense_target = null + sensor.clear_alert("necrosense") + + var/turf/P = get_turf(target) + var/turf/Q = get_turf(sensor) + if(!P || !Q || (P.z != Q.z)) //The target is on a different Z level, we cannot sense that far. + icon_state = "runed_sense2" + desc = "You can no longer sense your target's presence." + sensor.searching = FALSE + sensor.sense_target = null + return + if(isliving(target)) + var/mob/living/real_target = target + desc = "You are currently tracking [real_target.real_name] in [get_area_name(target)]." + else + desc = "You are currently tracking [target] in [get_area_name(target)]." + var/target_angle = get_angle(Q, P) + var/target_dist = get_dist(P, Q) + cut_overlays() + switch(target_dist) + if(0 to 1) + icon_state = "runed_sense2" + if(2 to 8) + icon_state = "arrow8" + if(9 to 15) + icon_state = "arrow7" + if(16 to 22) + icon_state = "arrow6" + if(23 to 29) + icon_state = "arrow5" + if(30 to 36) + icon_state = "arrow4" + if(37 to 43) + icon_state = "arrow3" + if(44 to 50) + icon_state = "arrow2" + if(51 to 57) + icon_state = "arrow1" + if(58 to 64) + icon_state = "arrow0" + if(65 to 400) + icon_state = "arrow" + var/difference = target_angle - angle + angle = target_angle + if(!difference) + return + var/matrix/final = matrix(transform) + final.Turn(difference) + animate(src, transform = final, time = 5, loop = 0) //GUARDIANS diff --git a/code/datums/components/caltrop.dm b/code/datums/components/caltrop.dm index bf736b99b4a..bbd0dc4ad36 100644 --- a/code/datums/components/caltrop.dm +++ b/code/datums/components/caltrop.dm @@ -91,7 +91,7 @@ if(!istype(O)) return - if(O.bodypart_flags & BP_NO_PAIN) + if(O.bodytype & BODYTYPE_ROBOTIC) return if (!(flags & CALTROP_BYPASS_SHOES)) diff --git a/code/datums/storage/storage.dm b/code/datums/storage/storage.dm index 45cb8b072f2..e221763cea2 100644 --- a/code/datums/storage/storage.dm +++ b/code/datums/storage/storage.dm @@ -723,6 +723,9 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches) if(ismob(over_object)) if(over_object != user) return + //If we don't check for necros they can get guns through backpack inventories + if(isnecromorph(over_object)) + return INVOKE_ASYNC(src, PROC_REF(open_storage), user) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index 07a261fd7d0..4bdb2304800 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -31,13 +31,14 @@ new /obj/item/clothing/mask/muzzle/breath(src) /obj/structure/closet/secure_closet/medical3 - name = "'s locker" + name = "medical locker" req_access = list(ACCESS_SURGERY) icon_state = "med_secure" /obj/structure/closet/secure_closet/medical3/PopulateContents() ..() new /obj/item/radio/headset/headset_med(src) + new /obj/item/healthanalyzer(src) new /obj/item/defibrillator/loaded(src) new /obj/item/clothing/gloves/color/latex/nitrile(src) new /obj/item/storage/belt/medical(src) diff --git a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm index b32a3be15c2..b4b54f4f14e 100644 --- a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm +++ b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm @@ -16,7 +16,6 @@ var/volume = 0 ///Used to track if anything of note has happen while running process_atmos() var/excited = TRUE - biomass_produce = BIOMASS_HARVEST_SMALL /obj/machinery/portable_atmospherics/Initialize(mapload) . = ..() diff --git a/code/modules/atmospherics/machinery/portable/scrubber.dm b/code/modules/atmospherics/machinery/portable/scrubber.dm index d01553d9605..3e0b8627a2c 100644 --- a/code/modules/atmospherics/machinery/portable/scrubber.dm +++ b/code/modules/atmospherics/machinery/portable/scrubber.dm @@ -163,7 +163,6 @@ var/movable = FALSE use_overlays = FALSE - biomass_produce = BIOMASS_HARVEST_MEDIUM /obj/machinery/portable_atmospherics/scrubber/huge/movable movable = TRUE diff --git a/code/modules/client/preferences/loadout/loadout_item/neck.dm b/code/modules/client/preferences/loadout/loadout_item/neck.dm index 9ddf38a1b35..aed08da6108 100644 --- a/code/modules/client/preferences/loadout/loadout_item/neck.dm +++ b/code/modules/client/preferences/loadout/loadout_item/neck.dm @@ -80,4 +80,4 @@ path = /obj/item/clothing/neck/tie/horrible /datum/loadout_item/neck/link_scryer - path = /obj/item/clothing/neck/link_scryer + path = /obj/item/clothing/neck/link_scryer/loaded diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index f24e36f852a..1c9ca38643f 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -223,6 +223,9 @@ Works together with spawning an observer, noted above. if(!ghost.client?.prefs || ghost.client.prefs.read_preference(/datum/preference/toggle/monochrome_ghost)) ghost.add_client_colour(/datum/client_colour/ghostmono) + if(ismarkereye(usr)) //So signals don't float around if someone ghosts insteads of leaving horde + qdel(src) + return ghost /mob/living/ghostize(can_reenter_corpse = TRUE, admin_ghost) diff --git a/code/modules/mob/living/simple_animal/hostile/regalrat.dm b/code/modules/mob/living/simple_animal/hostile/regalrat.dm index c9171699197..797619ee2c3 100644 --- a/code/modules/mob/living/simple_animal/hostile/regalrat.dm +++ b/code/modules/mob/living/simple_animal/hostile/regalrat.dm @@ -309,10 +309,6 @@ /mob/living/simple_animal/hostile/rat/death(gibbed, cause_of_death = "Unknown") if(!ckey) ..(TRUE) - if(!gibbed) - var/obj/item/food/deadmouse/mouse = new(loc) - mouse.icon_state = icon_dead - mouse.name = name SSmobs.cheeserats -= src // remove rats on death return ..() diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 67983f2eca6..62e22e951bd 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -91,7 +91,7 @@ taste_description = "bitterness" reagent_state = LIQUID color = "#00bfff" - overdose_threshold = 60 + overdose_threshold = 45 metabolization_rate = 0.1 value = 3.5 @@ -107,7 +107,8 @@ /datum/reagent/medicine/inaprovaline/affect_blood(mob/living/carbon/C, removed) APPLY_CHEM_EFFECT(C, CE_STABLE, 1) - APPLY_CHEM_EFFECT(C, CE_PAINKILLER, 30) + APPLY_CHEM_EFFECT(C, CE_PAINKILLER, 40) + C.adjustBruteLoss(-2 * removed, updating_health = FALSE) //This is effectively 0.2 heal due to metab /datum/reagent/medicine/inaprovaline/overdose_start(mob/living/carbon/C) C.add_movespeed_modifier(/datum/movespeed_modifier/inaprovaline) @@ -119,8 +120,8 @@ . = ..() if(prob(5)) C.set_slurring_if_lower(10 SECONDS) - if(prob(2)) - C.drowsyness = max(C.drowsyness, 5) + C.adjustOrganLoss(ORGAN_SLOT_EYES, 0.2, updating_health = FALSE) + APPLY_CHEM_EFFECT(C, CE_PAINKILLER, 80) //Im invincible! ...Why do I feel funny? /datum/reagent/medicine/bicaridine name = "Bicaridine" diff --git a/code/modules/reagents/chemistry/recipes/gateway.dm b/code/modules/reagents/chemistry/recipes/gateway.dm index 139d619d3c1..cb43d1f6147 100644 --- a/code/modules/reagents/chemistry/recipes/gateway.dm +++ b/code/modules/reagents/chemistry/recipes/gateway.dm @@ -1,8 +1,4 @@ // Reagents whose primary purpose is to be upgraded to another reagent. -/datum/chemical_reaction/acetone - results = list(/datum/reagent/acetone = 3) - required_reagents = list(/datum/reagent/fuel/oil = 1, /datum/reagent/fuel = 1, /datum/reagent/oxygen = 1) - /datum/chemical_reaction/oil results = list(/datum/reagent/fuel/oil = 3) required_reagents = list(/datum/reagent/fuel = 1, /datum/reagent/hydrogen = 1, /datum/reagent/carbon = 1) diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index c45a24c52ee..bc0ee2a50fa 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -1,7 +1,7 @@ /datum/chemical_reaction/inaprovaline results = list(/datum/reagent/medicine/inaprovaline = 3) - required_reagents = list(/datum/reagent/acetone = 1, /datum/reagent/carbon = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/phenol = 1) + required_reagents = list(/datum/reagent/acetone = 1, /datum/reagent/carbon = 1, /datum/reagent/medicine/morphine = 1) /datum/chemical_reaction/dylovene results = list(/datum/reagent/medicine/dylovene = 3) @@ -100,7 +100,7 @@ /datum/chemical_reaction/morphine results = list(/datum/reagent/medicine/morphine = 2) - required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/consumable/ethanol = 1, /datum/reagent/oxygen = 1) + required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/nitrogen = 2, /datum/reagent/consumable/ethanol = 1, /datum/reagent/oxygen = 1) required_temp = 480 /datum/chemical_reaction/imidazoline diff --git a/code/modules/slapcrafting/recipes/components/metal_shaping.dm b/code/modules/slapcrafting/recipes/components/metal_shaping.dm index d120daedf5c..35452f227ed 100644 --- a/code/modules/slapcrafting/recipes/components/metal_shaping.dm +++ b/code/modules/slapcrafting/recipes/components/metal_shaping.dm @@ -12,7 +12,7 @@ /datum/slapcraft_recipe/metal_ball - name = "metal pipe" + name = "metal ball" examine_hint = "You could form this into a ball, starting by heating it with a welder..." category = SLAP_CAT_COMPONENTS can_disassemble = FALSE diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm index 03c6a35c206..454b43202c4 100644 --- a/code/modules/surgery/bodyparts/_bodyparts.dm +++ b/code/modules/surgery/bodyparts/_bodyparts.dm @@ -1100,10 +1100,10 @@ /obj/item/bodypart/proc/get_modified_bleed_rate() var/bleed_rate = cached_bleed_rate if(owner.body_position == LYING_DOWN) - bleed_rate *= 0.60 + bleed_rate *= 0.5 //laying cuts bloodloss by half if(HAS_TRAIT(src, TRAIT_BODYPART_GRABBED)) - bleed_rate *= 0.3 + bleed_rate *= 0.3 //Apply the pressure! if(bandage) bleed_rate *= bandage.absorption_rate_modifier diff --git a/deadspace/code/__DEFINES/colors.dm b/deadspace/code/__DEFINES/colors.dm index d5ece87929a..5e59031e105 100644 --- a/deadspace/code/__DEFINES/colors.dm +++ b/deadspace/code/__DEFINES/colors.dm @@ -7,9 +7,6 @@ #define COLOR_BLOOD_HUMAN "#a10808" #define COLOR_BLOOD_NECRO "#583001" -#define COLOR_NECRO_YELLOW "#ffff00" -#define COLOR_NECRO_DARK_YELLOW "#aaaa00" -#define COLOR_MARKER_RED "#ff4444" #define COLOR_HARVESTER_RED rgb(255, 68, 68, 128) #define COLOR_BIOMASS_GREEN "#82bf26" #define COLOR_BIOLUMINESCENT_ORANGE "#ffb347" diff --git a/deadspace/code/__DEFINES/layers.dm b/deadspace/code/__DEFINES/layers.dm index 07892d7d439..49849e18d5d 100644 --- a/deadspace/code/__DEFINES/layers.dm +++ b/deadspace/code/__DEFINES/layers.dm @@ -1,6 +1,6 @@ -#define MARKER_SIGNAL_PLANE 250 +#define MARKER_SIGNAL_PLANE 505 -#define OBSCURITY_PLANE 210 +#define OBSCURITY_PLANE 503 -#define OBSCURITY_MASKING_PLANE 215 +#define OBSCURITY_MASKING_PLANE 504 #define OBSCURITY_MASKING_RENDER_TARGET "*OBSCURITY_MASKING_RENDER_TARGET" diff --git a/deadspace/code/biomass/source_types.dm b/deadspace/code/biomass/source_types.dm index 592db389fe8..97fcd7fd72e 100644 --- a/deadspace/code/biomass/source_types.dm +++ b/deadspace/code/biomass/source_types.dm @@ -1,6 +1,6 @@ /datum/biomass_source/baseline remaining_mass = INFINITY //Never runs out - mass_per_tick = 0.5 + mass_per_tick = 0.3 /// It's not supposed to ever deplet /datum/biomass_source/baseline/absorb_biomass(delta_time) diff --git a/deadspace/code/corruption/corruption.dm b/deadspace/code/corruption/corruption.dm index 924fc76912d..36008a67ea7 100644 --- a/deadspace/code/corruption/corruption.dm +++ b/deadspace/code/corruption/corruption.dm @@ -207,7 +207,7 @@ /obj/structure/corruption/proc/on_nearby_turf_change(turf/source, path, list/new_baseturfs, flags, list/post_change_callbacks) if(isopenspaceturf(source)) - if(ispath(/turf/open/openspace)) + if(ispath(path, /turf/open/openspace) || ispath(path, /turf/open/space/openspace)) return UnregisterSignal(GetBelow(source), list(COMSIG_TURF_CHANGE, COMSIG_TURF_NECRO_CORRUPTED, COMSIG_TURF_NECRO_UNCORRUPTED)) @@ -220,7 +220,7 @@ else dirs_to_spread &= ~get_dir(loc, source) UnregisterSignal(source, list(COMSIG_TURF_NECRO_CORRUPTED, COMSIG_TURF_NECRO_UNCORRUPTED)) - if(ispath(/turf/open/openspace)) + if(ispath(path, /turf/open/openspace) || ispath(path, /turf/open/space/openspace)) register_turf(GetBelow(source), get_dir(loc, source)) update_spread_state() @@ -228,10 +228,14 @@ /obj/structure/corruption/proc/on_nearby_turf_corrupted(turf/source) dirs_to_spread &= ~get_dir(loc, source) update_spread_state() + UnregisterSignal(source, COMSIG_TURF_NECRO_CORRUPTED) + RegisterSignal(source, COMSIG_TURF_NECRO_UNCORRUPTED, PROC_REF(on_nearby_turf_uncorrupted)) /obj/structure/corruption/proc/on_nearby_turf_uncorrupted(turf/source) dirs_to_spread |= get_dir(loc, source) update_spread_state() + UnregisterSignal(source, COMSIG_TURF_NECRO_UNCORRUPTED) + RegisterSignal(source, COMSIG_TURF_NECRO_CORRUPTED, PROC_REF(on_nearby_turf_corrupted)) /obj/structure/corruption/proc/on_master_delete() master.corruption -= src diff --git a/deadspace/code/corruption/structures/cyst.dm b/deadspace/code/corruption/structures/cyst.dm index 40cc641efb5..33e44a2d18b 100644 --- a/deadspace/code/corruption/structures/cyst.dm +++ b/deadspace/code/corruption/structures/cyst.dm @@ -23,7 +23,7 @@ return ..() /obj/structure/necromorph/cyst/proc/on_entered(atom/source, mob/living/carbon/human/arrived) - if(!ready || isnecromorph(arrived) || isprojectile(arrived)) + if(!ready || isnecromorph(arrived) || isprojectile(arrived) || !arrived.stat == CONSCIOUS) return var/angle = SIMPLIFY_DEGREES(get_angle(src, arrived) - dir2angle(src.dir)) if(angle > CYST_SHOOT_ANGLE*0.5) diff --git a/deadspace/code/corruption/structures/harvester.dm b/deadspace/code/corruption/structures/harvester.dm index 627c525cad9..8b458c29a87 100644 --- a/deadspace/code/corruption/structures/harvester.dm +++ b/deadspace/code/corruption/structures/harvester.dm @@ -2,11 +2,13 @@ /obj/structure/necromorph/harvester name = "harvester" - icon = 'deadspace/icons/effects/corruption96x96.dmi' - icon_state = "whole" + icon = 'deadspace/icons/effects/harvester_new.dmi' + icon_state = "closed" density = TRUE - pixel_x = -32 - base_pixel_x = -32 + pixel_x = -16 + base_pixel_x = -16 + pixel_y = -8 + base_pixel_y = -8 var/active = FALSE var/biomass_per_tick = 0 var/list/controlled_atoms @@ -15,13 +17,11 @@ /obj/structure/necromorph/harvester/Initialize(mapload, obj/structure/marker/new_master) .=..() - AddComponent(/datum/component/seethrough, SEE_THROUGH_MAP_THREE_X_THREE) + AddComponent(/datum/component/seethrough, SEE_THROUGH_MAP_DEFAULT_TWO_TALL) if(!new_master) return INITIALIZE_HINT_QDEL marker = new_master controlled_atoms = list() - icon_state = "harvester" - update_icon(UPDATE_OVERLAYS) /obj/structure/necromorph/harvester/LateInitialize() ..() @@ -41,26 +41,9 @@ marker = null return ..() -/obj/structure/necromorph/harvester/update_overlays() - .=..() - var/static/our_overlays - if (isnull(our_overlays)) - our_overlays = list( - mutable_appearance(icon, "tentacle_1"), - mutable_appearance(icon, "tentacle_2"), - mutable_appearance(icon, "tentacle_3"), - mutable_appearance(icon, "tentacle_4"), - mutable_appearance(icon, "beak"), - mutable_appearance(icon, "beak_closed"), - ) - if(active) - . += our_overlays[1] - . += our_overlays[2] - . += our_overlays[3] - . += our_overlays[4] - . += our_overlays[5] - else - . += our_overlays[6] +/obj/structure/necromorph/harvester/update_icon_state() + icon_state = (active ? "active" : "closed") + return ..() /obj/structure/necromorph/harvester/on_turf_corrupted() ..() @@ -76,7 +59,11 @@ REMOVE_TRAIT(controlled, TRAIT_PRODUCES_BIOMASS, src) controlled.remove_filter("harvester_glow") controlled_atoms.Cut() - update_icon(UPDATE_OVERLAYS) + update_icon_state() + light_power = 0 + light_inner_range = 0 + light_outer_range = 0 + update_light() /obj/structure/necromorph/harvester/proc/activate() if(active) @@ -94,7 +81,12 @@ biomass_per_tick += controlled.biomass_produce FOR_DVIEW_END our_source = marker.add_biomass_source(/datum/biomass_source/harvester, src) - update_icon(UPDATE_OVERLAYS) + update_icon_state() + light_power = 0.5 + light_inner_range = 2 + light_outer_range = 5 + light_color = "#bcb10d" + update_light() /obj/structure/necromorph/harvester/proc/on_controlled_delete(atom/movable/controlled, force) SIGNAL_HANDLER diff --git a/deadspace/code/corruption/structures/maw.dm b/deadspace/code/corruption/structures/maw.dm index ed37c0090e0..ec68195a47c 100644 --- a/deadspace/code/corruption/structures/maw.dm +++ b/deadspace/code/corruption/structures/maw.dm @@ -6,7 +6,7 @@ desc = "A disgusting mass of throbbing flesh and gnashing teeth, it looks like something out of a nightmare." desc_controls = "Drag a body onto the maw to begin biomass consumption. Will grab the living if they step on it." icon = 'deadspace/icons/effects/corruption.dmi' - icon_state = "maw" + icon_state = "maw_new" density = FALSE max_integrity = 30 can_buckle = TRUE @@ -27,7 +27,7 @@ /obj/structure/necromorph/maw/update_icon_state() ..() - icon_state = length(buckled_mobs) ? "maw_active" : "maw" + icon_state = length(buckled_mobs) ? "maw_new_active" : "maw_new" ///The signal handler that starts the process of grabbing /obj/structure/necromorph/maw/proc/maw_grabbing(datum/source, atom/movable/AM) diff --git a/deadspace/code/corruption/structures/nest.dm b/deadspace/code/corruption/structures/nest.dm index 189264117ac..9d0f0684c26 100644 --- a/deadspace/code/corruption/structures/nest.dm +++ b/deadspace/code/corruption/structures/nest.dm @@ -9,6 +9,10 @@ base_pixel_x = -16 pixel_y = -16 base_pixel_y = -16 + light_power = 0.5 + light_inner_range = 1 + light_outer_range = 3 + light_color = "#bcb10d" ///Type, not a reference var/datum/necro_class/spawning_necromorph var/biomass_spent = 0 @@ -69,7 +73,7 @@ to_chat(user, span_notice("Wait [timeleft(timer_id)/(1 SECONDS)] seconds before the nest produces [initial(spawning_necromorph.display_name)]")) return if(tgui_alert(user, "Are you sure you want to possess [initial(spawning_necromorph.display_name)]", "Nest", list("Yes", "No")) == "Yes") - if(QDELING(src) || available_necromorphs == 0) + if(QDELING(src) || available_necromorphs <= 0) return var/type_to_spawn = initial(spawning_necromorph.necromorph_type_path) available_necromorphs-- diff --git a/deadspace/code/marker/abilities/scry.dm b/deadspace/code/marker/abilities/scry.dm index 35c57f7b10b..066ac3f7412 100644 --- a/deadspace/code/marker/abilities/scry.dm +++ b/deadspace/code/marker/abilities/scry.dm @@ -20,10 +20,6 @@ /obj/effect/temp_visual/scry anchored = TRUE - light_color = "#ffff00" - light_inner_range = 1 - light_outer_range = 4 - light_power = 1 duration = 1 MINUTES /obj/effect/temp_visual/scry/Initialize(mapload, datum/markernet/visual_net) @@ -35,3 +31,17 @@ /obj/effect/temp_visual/scry/can_see_marker() return RANGE_TURFS(6, src) + +/datum/action/cooldown/necro/psy/sense + name = "Sense Survivors" + desc = "Senses for living survivors and sentient creatures in the world. The Marker automatically does this on activation. Recommend to use if the necromorphs cannot find the last survivors." + button_icon_state = "scry" + cost = 250 + cooldown_time = 20 MINUTES //You probably only have to use this ability once in a round, so the cooldown will be big + click_through_static = TRUE + marker_flags = SIGNAL_ABILITY_POST_ACTIVATION|SIGNAL_ABILITY_MARKER_ONLY + +//This just is a roundabout way for the master signal to add to the survivor list mid-round +/datum/action/cooldown/necro/psy/sense/Activate(atom/target) + var/mob/camera/marker_signal/caller = owner + caller.marker.sense_survivors() diff --git a/deadspace/code/marker/marker.dm b/deadspace/code/marker/marker.dm index 74f85091852..9781adebc78 100644 --- a/deadspace/code/marker/marker.dm +++ b/deadspace/code/marker/marker.dm @@ -14,6 +14,7 @@ necro_spawn_atoms += src AddComponent(AddComponent(/datum/component/seethrough, SEE_THROUGH_MAP_MARKER)) + soundloop = new(src, FALSE) START_PROCESSING(SSobj, src) /obj/structure/marker/Destroy() @@ -29,7 +30,9 @@ signal.show_message(span_userdanger("You feel like your connection with the Marker breaks!")) qdel(signal) marker_signals = null + QDEL_LIST(unwhole) QDEL_NULL(markernet) + QDEL_NULL(soundloop) .=..() /obj/structure/marker/update_icon_state() @@ -86,6 +89,11 @@ necromorphs -= necro necro.marker = null +/obj/structure/marker/proc/sense_survivors() + for(var/mob/living/survivors as anything in GLOB.player_list) //We look for any mob with a client + if(survivors.stat != DEAD && !isnecromorph(survivors) && is_station_level(survivors.loc?.z)) + unwhole |= survivors //Using |= prevents duplicates in the list, but is a little slower + /obj/structure/marker/proc/activate() if(active) return @@ -93,6 +101,7 @@ change_marker_biomass(250) //Marker given a biomass injection, enough for a small team and some growing change_signal_biomass(50) //Signals given biomass injection for general spreading add_biomass_source(/datum/biomass_source/baseline, src) //Base income for marker + sense_survivors() //Checks for survivors for sense for(var/mob/camera/marker_signal/eye as anything in marker_signals) for(var/datum/action/cooldown/necro/psy/ability as anything in eye.abilities) if((ability.marker_flags & SIGNAL_ABILITY_PRE_ACTIVATION)) @@ -106,6 +115,12 @@ ability.Grant(eye) new /datum/corruption_node/atom/marker(src, src) update_icon(UPDATE_ICON_STATE) + light_power = 1 + light_inner_range = 2 + light_outer_range = 10 + light_color = "#EC3232" + update_light() + soundloop.start() /obj/structure/marker/can_see_marker() return RANGE_TURFS(12, src) diff --git a/deadspace/code/marker/marker_defines.dm b/deadspace/code/marker/marker_defines.dm index cca3e92b9b2..366a1c83ef7 100644 --- a/deadspace/code/marker/marker_defines.dm +++ b/deadspace/code/marker/marker_defines.dm @@ -14,6 +14,8 @@ GLOBAL_LIST_EMPTY(necromorph_markers) base_pixel_x = -33 move_resist = MOVE_FORCE_OVERPOWERING density = TRUE + ///The loopingsound for when marker activates + var/datum/looping_sound/marker/soundloop var/active = FALSE ///Whether we should use necroqueue when spawning necromorphs var/use_necroqueue = TRUE @@ -22,6 +24,8 @@ GLOBAL_LIST_EMPTY(necromorph_markers) var/datum/markernet/markernet var/list/marker_signals = list() var/list/necromorphs = list() + ///checks mobs with clients when marker activates and adds them to a list, used for sense + var/list/unwhole = list() /// Biomass stored var/marker_biomass = 0 /// Biomass signals can use @@ -44,3 +48,12 @@ GLOBAL_LIST_EMPTY(necromorph_markers) var/list/corruption_eyes /// When was the last time all signals were alerted by an eye var/last_eye_notify + +/datum/looping_sound/marker + mid_sounds = 'deadspace/sound/effects/markerthrob.ogg' + mid_length = 9.5 SECONDS + volume = 50 + ignore_walls = FALSE + extra_range = 20 + falloff_exponent = 5 + falloff_distance = 8 diff --git a/deadspace/code/marker/markernet/marker_static.dm b/deadspace/code/marker/markernet/marker_static.dm index 4a7829a60f1..0ee51099917 100644 --- a/deadspace/code/marker/markernet/marker_static.dm +++ b/deadspace/code/marker/markernet/marker_static.dm @@ -23,6 +23,10 @@ INITIALIZE_IMMEDIATE(/atom/movable/screen/cameranet_static) update_o(view) RegisterSignal(owner.client, COMSIG_VIEW_SET, PROC_REF(on_view_change)) +//The static doesn't need to be used +/atom/movable/screen/cameranet_static/can_usr_use(mob/user) + return FALSE + /atom/movable/screen/cameranet_static/proc/on_view_change(datum/source, new_size) SIGNAL_HANDLER update_o(new_size) diff --git a/deadspace/code/modules/weapons/guns/pulse_rifle.dm b/deadspace/code/modules/weapons/guns/pulse_rifle.dm index 5e2ba97d018..c0c335773eb 100644 --- a/deadspace/code/modules/weapons/guns/pulse_rifle.dm +++ b/deadspace/code/modules/weapons/guns/pulse_rifle.dm @@ -228,7 +228,7 @@ Projectiles effects /obj/effect/projectile/pulse/hv icon_state = "muzzle_pulse_hv" light_power = 0.6 - light_color = COLOR_MARKER_RED + light_color = "#ff4444" /obj/effect/projectile/pulse/df icon_state = "muzzle_pulse_light" diff --git a/deadspace/code/necromorph/abilities/sense.dm b/deadspace/code/necromorph/abilities/sense.dm index 6e72ca3485d..ce5e9adfa24 100644 --- a/deadspace/code/necromorph/abilities/sense.dm +++ b/deadspace/code/necromorph/abilities/sense.dm @@ -1,67 +1,57 @@ -/datum/action/cooldown/necro/sense - name = "Sense" - desc = "Reveals nearby living creatures around you to yourself." - cooldown_time = 7 SECONDS - activate_keybind = COMSIG_KB_NECROMORPH_ABILITY_SENSE_DOWN - var/duration = 5 SECONDS - var/list/image/trackers = null - -/datum/action/cooldown/necro/sense/Destroy() - if(trackers) - remove_trackers() - return ..() - -/datum/action/cooldown/necro/sense/Activate(atom/target) - if(trackers) - remove_trackers() - - var/closest_human = 0 - var/list/can_see = list() - for(var/mob/living/found as anything in GLOB.mob_living_list) - if(found.stat == DEAD) - continue - if(found.z != owner.z) - continue - if(ishuman(found)) - closest_human = min(closest_human, GET_TRUE_DIST(found, owner)) - if(!IN_GIVEN_RANGE(found, owner, 5)) - continue - //We don't need necromorphs in here - if(faction_check(owner.faction, found.faction)) - continue - can_see += found - - trackers = list() - for(var/mob/living/found as anything in can_see) - var/image/added = image('icons/effects/effects.dmi', get_turf(found), "impact_laser") - added.alpha = 128 - trackers += added - owner.client?.images += added - - addtimer(CALLBACK(src, PROC_REF(remove_trackers)), duration, TIMER_OVERRIDE|TIMER_UNIQUE) - - if(closest_human > 0) - to_chat(owner, span_notice("There is a living human [closest_human]m away!")) +/datum/action/innate/sense + name = "Sense the Unwhole" + desc = "They cannot stop what is coming. Use to sense those who are not Whole." + button_icon = 'icons/mob/actions/actions_cult.dmi' //TODO : Get our own sense button sprites + background_icon_state = "bg_demon" + buttontooltipstyle = "cult" + button_icon_state = "cult_mark" + +//This is rewritten cultist harvester code kitbashed into the original sense code +//It works well enough for our purposes +/datum/action/innate/sense/Activate() + var/mob/living/carbon/human/necromorph/sensor = owner + var/thelist = sensor.marker.unwhole + if(sensor.marker == null) + return + if(sensor.searching) + desc = "They cannot stop what is coming. Use to sense those who are not Whole." + button_icon_state = "cult_mark" + sensor.searching = FALSE + sensor.sense_target = null + to_chat(sensor, "You are no longer sensing.") + sensor.clear_alert("necrosense") + return else - to_chat(owner, span_notice("There are no living prey on this floor")) - - var/mob/living/carbon/human/necromorph/necro = owner - necro.play_necro_sound(SOUND_SPEECH, VOLUME_MID, TRUE, 3) - play_effects() - -/datum/action/cooldown/necro/sense/proc/play_effects() + for(var/mob/living/found in thelist) + found = pick(thelist) + if(QDELETED(found)) + LAZYREMOVE(found, thelist) //He's dead, remove him from the list + continue + if(found.stat == DEAD) + LAZYREMOVE(found, thelist) //He's dead, remove him from the list + continue + if(found.z != owner.z) + continue //If we're not on the same floor ignore it + sensor.sense_target = found + to_chat(sensor, "You are now tracking your prey, [found.real_name] - find [found.p_them()]!") + if(!sensor.sense_target) + to_chat(sensor, "There is nobody on this floor.") + return + desc = "Activate to stop sensing." + button_icon_state = "sintouch" + sensor.searching = TRUE + sensor.throw_alert("necrosense", /atom/movable/screen/alert/necrosense) + sensor.play_necro_sound(SOUND_SPEECH, VOLUME_MID, TRUE, 3) + play_effects() + +/datum/action/innate/sense/proc/play_effects() set waitfor = FALSE var/obj/effect/temp_visual/circle = new /obj/effect/temp_visual/expanding_circle(owner.loc, 2 SECONDS, 2) circle.pixel_y += 40 //Offset it so it appears to be at our mob's head - sleep(4) + sleep(7) circle = new /obj/effect/temp_visual/expanding_circle(owner.loc, 2 SECONDS, 2) circle.pixel_y += 40 - sleep(4) + sleep(7) circle = new /obj/effect/temp_visual/expanding_circle(owner.loc, 2 SECONDS, 2) circle.pixel_y += 40 - -/datum/action/cooldown/necro/sense/proc/remove_trackers() - for(var/image/tracker as anything in trackers) - owner.client?.images -= tracker - trackers = null diff --git a/deadspace/code/necromorph/necromorphs/necro_defines.dm b/deadspace/code/necromorph/necromorphs/necro_defines.dm index 961e5924665..288692b2e21 100644 --- a/deadspace/code/necromorph/necromorphs/necro_defines.dm +++ b/deadspace/code/necromorph/necromorphs/necro_defines.dm @@ -46,6 +46,12 @@ /// whether the necromorph has been selected by the marker as a leader. var/marker_chosen_lead + /// is the necromorph using sense? + var/searching = FALSE + + ///The mob the necromorph is targeting with sense + var/sense_target = null + /// Notification spam controls var/recent_notice = 0 var/notice_delay = 2 SECONDS diff --git a/deadspace/code/necromorph/necromorphs/necromorph.dm b/deadspace/code/necromorph/necromorphs/necromorph.dm index 4e0822f4f27..9c31487a22c 100644 --- a/deadspace/code/necromorph/necromorphs/necromorph.dm +++ b/deadspace/code/necromorph/necromorphs/necromorph.dm @@ -27,7 +27,8 @@ return //This had to be moved from species due to code improvements -/mob/living/carbon/human/necromorph/apply_damage(damage, damagetype = BRUTE, def_zone = null, blocked, mob/living/carbon/human/necromorph/H, forced = FALSE, spread_damage = FALSE, sharpness = NONE, attack_direction = null, attacking_item) +/mob/living/carbon/human/necromorph/apply_damage(damage, damagetype = BRUTE, def_zone = null, blocked, forced = FALSE, spread_damage = FALSE, sharpness = NONE, attack_direction = null, attacking_item) + var/mob/living/carbon/human/necromorph/H = src if(H.dodge_shield > 0) // Calculate amount of the damage that was blocked by the shield var/dodged_damage = min(H.dodge_shield, damage, damage * (100 - blocked) / 100) diff --git a/deadspace/code/necromorph/necromorphs/species.dm b/deadspace/code/necromorph/necromorphs/species.dm index 9f9f0d20f77..eaa800bedba 100644 --- a/deadspace/code/necromorph/necromorphs/species.dm +++ b/deadspace/code/necromorph/necromorphs/species.dm @@ -101,6 +101,14 @@ /datum/species/necromorph/random_name(gender,unique,lastname) return "[name] [rand(1, 999)]" +//The natural healing of the necromorph +/datum/species/necromorph/spec_life(mob/living/carbon/N, delta_time, times_fired) + if(N.stat == DEAD) //Dead necros don't heal + return + var/turf/my_turf = get_turf(N) + if(my_turf.necro_corrupted) //Not standing on corruption? No heals + N.heal_overall_damage(0.2 * delta_time, 0 * delta_time, BODYTYPE_ORGANIC) + //Does animations for regenerating a limb /datum/species/necromorph/proc/regenerate_limb(mob/living/carbon/human/necromorph/H, limb, duration) var/image/LR = image(initial(H.class.ui_icon), H, "[limb]_regen") diff --git a/deadspace/code/necromorph/necromorphs/subtypes/brute.dm b/deadspace/code/necromorph/necromorphs/subtypes/brute.dm index ef97fae5e58..39a0140a75f 100644 --- a/deadspace/code/necromorph/necromorphs/subtypes/brute.dm +++ b/deadspace/code/necromorph/necromorphs/subtypes/brute.dm @@ -97,7 +97,8 @@ stop_curl() //Switched from species to mob due to code improvements -/mob/living/carbon/human/necromorph/brute/apply_damage(damage, damagetype, def_zone, blocked, mob/living/carbon/human/necromorph/brute/H, forced, spread_damage, sharpness, attack_direction, attacking_item) +/mob/living/carbon/human/necromorph/brute/apply_damage(damage, damagetype, def_zone, blocked, forced, spread_damage, sharpness, attack_direction, attacking_item) + var/mob/living/carbon/human/necromorph/brute/H = src var/reduced = 0 switch(turn(attack_direction, dir2angle(H.dir))) if(NORTH) diff --git a/deadspace/code/necromorph/necromorphs/subtypes/e_infector.dm b/deadspace/code/necromorph/necromorphs/subtypes/e_infector.dm index ddf35ddbf07..d203c2363b2 100644 --- a/deadspace/code/necromorph/necromorphs/subtypes/e_infector.dm +++ b/deadspace/code/necromorph/necromorphs/subtypes/e_infector.dm @@ -14,6 +14,7 @@ melee_damage_lower = 10 melee_damage_upper = 16 actions = list( + /datum/action/innate/sense, ) minimap_icon = "e_infector" diff --git a/deadspace/code/necromorph/necromorphs/subtypes/hunter.dm b/deadspace/code/necromorph/necromorphs/subtypes/hunter.dm index 02a7d1a14c3..b51672155a2 100644 --- a/deadspace/code/necromorph/necromorphs/subtypes/hunter.dm +++ b/deadspace/code/necromorph/necromorphs/subtypes/hunter.dm @@ -29,7 +29,8 @@ return FALSE return FALSE -/mob/living/carbon/human/necromorph/hunter/apply_damage(damage, damagetype, def_zone, blocked, mob/living/carbon/human/necromorph/hunter/H, forced, spread_damage, sharpness, attack_direction, attacking_item) +/mob/living/carbon/human/necromorph/hunter/apply_damage(damage, damagetype, def_zone, blocked, forced, spread_damage, sharpness, attack_direction, attacking_item) + var/mob/living/carbon/human/necromorph/hunter/H = src if(H.health - damage <= 0) H.handle_death_check() . = ..() @@ -51,6 +52,7 @@ /datum/action/cooldown/necro/swing/hunter, // /datum/action/cooldown/necro/taunt/hunter, /datum/action/cooldown/necro/regenerate/hunter, + /datum/action/innate/sense, /datum/action/cooldown/necro/shout, ) minimap_icon = "hunter" diff --git a/deadspace/code/necromorph/necromorphs/subtypes/infector.dm b/deadspace/code/necromorph/necromorphs/subtypes/infector.dm index 2e6886ba942..935a25a51ab 100644 --- a/deadspace/code/necromorph/necromorphs/subtypes/infector.dm +++ b/deadspace/code/necromorph/necromorphs/subtypes/infector.dm @@ -14,6 +14,7 @@ melee_damage_lower = 10 melee_damage_upper = 16 actions = list( + /datum/action/innate/sense, ) minimap_icon = "infector" diff --git a/deadspace/code/necromorph/necromorphs/subtypes/twitcher.dm b/deadspace/code/necromorph/necromorphs/subtypes/twitcher.dm index d95543e9d26..16082a9d1c7 100644 --- a/deadspace/code/necromorph/necromorphs/subtypes/twitcher.dm +++ b/deadspace/code/necromorph/necromorphs/subtypes/twitcher.dm @@ -62,6 +62,7 @@ if(necro.stat == DEAD) return //Don't want it generating dodge while dead necro.dodge_pool = min(necro.dodge_pool + (0.6 * delta_time), necro.max_pool) + ..() /datum/species/necromorph/twitcher/bullet_act(obj/projectile/P, mob/living/carbon/human/necromorph/twitcher/necro) if(necro.stat == DEAD) diff --git a/deadspace/code/necromorph/necromorphs/subtypes/ubermorph.dm b/deadspace/code/necromorph/necromorphs/subtypes/ubermorph.dm index b46e312b002..28ccef518ae 100644 --- a/deadspace/code/necromorph/necromorphs/subtypes/ubermorph.dm +++ b/deadspace/code/necromorph/necromorphs/subtypes/ubermorph.dm @@ -26,8 +26,8 @@ armor = list(BLUNT = 75, PUNCTURE = 75, SLASH = 30, LASER = 10, ENERGY = 15, BOMB = 25, BIO = 100, FIRE = 80, ACID = 100) actions = list( /datum/action/cooldown/necro/charge/ubermorph, - /datum/action/cooldown/necro/sense, /datum/action/cooldown/necro/regenerate/ubermorph, + /datum/action/innate/sense, // /datum/action/cooldown/necro/frenzy_shout/ubermorph, ) minimap_icon = "ubermorph" diff --git a/deadspace/sound/effects/markerthrob.ogg b/deadspace/sound/effects/markerthrob.ogg index a8cb77e6f3d..0a39fc12d7e 100644 Binary files a/deadspace/sound/effects/markerthrob.ogg and b/deadspace/sound/effects/markerthrob.ogg differ