diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 12bb3ab6097..c5e57df7794 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -81,6 +81,7 @@ add: new lavaland elite mob - **bugfix:** если Вы исправили некий баг - **code_imp:** если имплементируете новое для билда, не меняя при этом ничего в самой игре. - **config:** если меняете перестановку конфигов или меняете работу SQL. (По этому поводу обращаться стоит с хосту) +- **map** если вы меняете только карту - **imageadd:** если просто поменяли спрайты, без затрагивания кода - **soundadd:** если просто добавили новые звуки, без затрагивания кода - **spellcheck:** если исправляете грамматику в коде. diff --git a/.gitignore b/.gitignore index 2de803a5dca..0a0cedc0107 100644 --- a/.gitignore +++ b/.gitignore @@ -68,3 +68,5 @@ stddef.dm #Ignore cached sound files. /sound/tts_cache/**/* /sound/tts_scrambled/**/* +.vscode/launch.json +.gitignore diff --git a/_maps/map_files/Delta/delta.dmm b/_maps/map_files/Delta/delta.dmm index eaba878e5b2..1d8827891b7 100644 --- a/_maps/map_files/Delta/delta.dmm +++ b/_maps/map_files/Delta/delta.dmm @@ -446,8 +446,8 @@ "adj" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -816,11 +816,11 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/effect/decal/cleanable{ + color = "yellow"; icon = 'icons/effects/crayondecal.dmi'; icon_state = "n"; - color = "yellow"; - pixel_y = 8; - pixel_x = -15 + pixel_x = -15; + pixel_y = 8 }, /turf/simulated/floor/glass/reinforced, /area/maintenance/fpmaint) @@ -851,9 +851,9 @@ /area/toxins/launch) "aiA" = ( /obj/effect/turf_decal/siding/green/corner{ - icon_state = "grass_edge_medium_corner"; color = ""; - dir = 8 + dir = 8; + icon_state = "grass_edge_medium_corner" }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) @@ -1262,9 +1262,9 @@ "amL" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/snacks/candy/gummybear/purple{ - pixel_y = 1; + name = "Jo"; pixel_x = 13; - name = "Jo" + pixel_y = 1 }, /obj/item/twohanded/required/kirbyplants{ pixel_y = 12; @@ -1444,9 +1444,9 @@ "aoe" = ( /obj/structure/plasticflaps, /obj/effect/turf_decal/siding/green/corner{ - icon_state = "grass_edge_medium_corner"; color = ""; - dir = 4 + dir = 4; + icon_state = "grass_edge_medium_corner" }, /obj/machinery/door/poddoor/shutters/preopen{ dir = 1; @@ -1463,7 +1463,7 @@ dir = 8; icon_state = "darkbluecorners" }, -/area/construction/hallway) +/area/aisat/aihallway) "aon" = ( /obj/structure/table/wood, /obj/machinery/fishtank/bowl{ @@ -5245,8 +5245,8 @@ dir = 1 }, /obj/item/seeds/grass{ - pixel_y = 6; - pixel_x = -6 + pixel_x = -6; + pixel_y = 6 }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) @@ -5306,8 +5306,8 @@ /area/solar/auxport) "aOL" = ( /turf/simulated/floor/plasteel{ - icon_state = "darkred"; - dir = 6 + dir = 6; + icon_state = "darkred" }, /area/hallway/secondary/entry/commercial) "aON" = ( @@ -5512,9 +5512,9 @@ "aPY" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/green/corner{ - icon_state = "grass_edge_medium_corner"; color = ""; - dir = 4 + dir = 4; + icon_state = "grass_edge_medium_corner" }, /obj/structure/cable{ icon_state = "1-2" @@ -5529,20 +5529,20 @@ /area/maintenance/fpmaint) "aQb" = ( /obj/effect/turf_decal/siding/green/corner{ - icon_state = "grass_edge_medium_corner"; color = ""; - dir = 1 + dir = 1; + icon_state = "grass_edge_medium_corner" }, /obj/effect/decal/cleanable/dirt, /obj/item/trash/candy, /obj/effect/decal/cleanable{ + color = "yellow"; icon = 'icons/effects/crayondecal.dmi'; - icon_state = "c"; - color = "yellow" + icon_state = "c" }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -6031,9 +6031,9 @@ /area/engineering/mechanic_workshop/hangar) "aTA" = ( /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; + color = ""; dir = 8; - color = "" + icon_state = "grass_edge_medium" }, /obj/effect/decal/cleanable/dirt, /obj/item/trash/cheesie, @@ -6166,9 +6166,9 @@ /area/crew_quarters/kitchen) "aUv" = ( /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; + color = ""; dir = 8; - color = "" + icon_state = "grass_edge_medium" }, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -6688,9 +6688,9 @@ req_access = list(12) }, /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; color = ""; - dir = 1 + dir = 1; + icon_state = "grass_edge_medium" }, /obj/structure/cable{ icon_state = "1-2" @@ -7727,9 +7727,9 @@ /area/janitor) "bfc" = ( /obj/effect/turf_decal/siding/green/corner{ - icon_state = "grass_edge_medium_corner"; color = ""; - dir = 4 + dir = 4; + icon_state = "grass_edge_medium_corner" }, /obj/structure/cable{ icon_state = "1-2" @@ -7742,8 +7742,8 @@ }, /obj/structure/disposalpipe/junction/reversed, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -9888,9 +9888,9 @@ /area/crew_quarters/serviceyard) "bsb" = ( /obj/effect/turf_decal/siding/green/corner{ - icon_state = "grass_edge_medium_corner"; color = ""; - dir = 8 + dir = 8; + icon_state = "grass_edge_medium_corner" }, /obj/structure/cable{ d1 = 4; @@ -11143,8 +11143,8 @@ dir = 8 }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -11154,8 +11154,8 @@ "bxr" = ( /obj/item/shard{ icon_state = "small"; - pixel_y = 9; - pixel_x = 5 + pixel_x = 5; + pixel_y = 9 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -11201,8 +11201,8 @@ "bxx" = ( /obj/item/paper/crumpled, /obj/item/trash/can{ - pixel_y = -6; - pixel_x = 6 + pixel_x = 6; + pixel_y = -6 }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -11725,8 +11725,8 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -11869,14 +11869,14 @@ /area/hallway/secondary/entry/lounge) "bAn" = ( /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; + color = ""; dir = 8; - color = "" + icon_state = "grass_edge_medium" }, /obj/effect/turf_decal/siding/green/corner{ - icon_state = "grass_edge_medium_corner"; color = ""; - dir = 1 + dir = 1; + icon_state = "grass_edge_medium_corner" }, /turf/simulated/floor/glass/reinforced, /area/maintenance/fpmaint) @@ -11884,8 +11884,8 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/grille_50, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -12610,8 +12610,8 @@ icon_state = "pipe-c" }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -12623,8 +12623,8 @@ }, /obj/item/camera_assembly, /obj/item/reagent_containers/food/drinks/drinkingglass{ - pixel_y = 18; - pixel_x = -8 + pixel_x = -8; + pixel_y = 18 }, /turf/simulated/floor/plating, /area/maintenance/trading) @@ -12872,7 +12872,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "bEr" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -14582,8 +14582,8 @@ /area/maintenance/bar) "bNK" = ( /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; - color = "" + color = ""; + icon_state = "grass_edge_medium" }, /obj/effect/decal/cleanable/dust, /turf/simulated/floor/plating, @@ -14612,7 +14612,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "bNS" = ( /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, @@ -15077,7 +15077,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "bPU" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 4 @@ -15247,8 +15247,8 @@ dir = 8 }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -15357,8 +15357,8 @@ /obj/structure/closet/cardboard, /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -15542,7 +15542,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "bRF" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/power/emitter{ @@ -15587,7 +15587,7 @@ dir = 6; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "bRT" = ( /obj/structure/cable{ icon_state = "1-2" @@ -15788,14 +15788,14 @@ "bSM" = ( /obj/effect/decal/cleanable/dust, /obj/effect/decal/cleanable{ + color = "yellow"; icon = 'icons/effects/crayondecal.dmi'; icon_state = "l"; - color = "yellow"; pixel_x = -10 }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -15874,9 +15874,9 @@ /area/aisat/maintenance) "bTv" = ( /obj/effect/turf_decal/siding/green/corner{ - icon_state = "grass_edge_medium_corner"; color = ""; - dir = 1 + dir = 1; + icon_state = "grass_edge_medium_corner" }, /turf/simulated/wall, /area/maintenance/fpmaint) @@ -17927,9 +17927,9 @@ /area/maintenance/casino) "ccK" = ( /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; + color = ""; dir = 8; - color = "" + icon_state = "grass_edge_medium" }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden{ @@ -17941,8 +17941,8 @@ }, /obj/item/trash/raisins, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -17990,8 +17990,8 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -18346,12 +18346,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/decal/cleanable/dust, /obj/effect/turf_decal/siding/green/corner{ - icon_state = "grass_edge_medium_corner"; - color = "" + color = ""; + icon_state = "grass_edge_medium_corner" }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -18864,8 +18864,8 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/reagent_dispensers/watertank, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -19393,9 +19393,9 @@ /area/space) "clp" = ( /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; + color = ""; dir = 4; - color = "" + icon_state = "grass_edge_medium" }, /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -19406,8 +19406,8 @@ /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance/double, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -19608,8 +19608,8 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel{ - icon_state = "darkyellow"; - dir = 10 + dir = 10; + icon_state = "darkyellow" }, /area/maintenance/fpmaint) "cmi" = ( @@ -19736,8 +19736,8 @@ }, /obj/machinery/vending/plasmaresearch, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -19768,8 +19768,8 @@ /obj/item/stack/sheet/cardboard, /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -19812,9 +19812,9 @@ "cno" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; + color = ""; dir = 6; - color = "" + icon_state = "grass_edge_medium" }, /obj/item/grown/bananapeel, /obj/item/trash/can{ @@ -19823,8 +19823,8 @@ /obj/item/trash/candy, /obj/effect/spawner/random_spawners/grille_13, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -21048,9 +21048,9 @@ }, /obj/machinery/door/airlock/maintenance, /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; + color = ""; dir = 4; - color = "" + icon_state = "grass_edge_medium" }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) @@ -21587,7 +21587,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "cwL" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -22401,16 +22401,16 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/decal/cleanable/dust, /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; color = ""; - dir = 1 + dir = 1; + icon_state = "grass_edge_medium" }, /obj/machinery/light/small{ dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -22531,9 +22531,9 @@ /area/engineering/hardsuitstorage) "cAK" = ( /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; + color = ""; dir = 4; - color = "" + icon_state = "grass_edge_medium" }, /obj/effect/decal/cleanable/dirt, /obj/structure/girder, @@ -22930,7 +22930,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "cCE" = ( /turf/simulated/wall/rust, /area/space) @@ -25361,8 +25361,8 @@ dir = 1 }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -26218,8 +26218,8 @@ icon_state = "1-4" }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -28027,7 +28027,6 @@ network = list("Engineering","SS13"); pixel_y = -22 }, -/obj/machinery/station_map/engineering/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "yellow" @@ -28454,7 +28453,7 @@ dir = 9; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "cZU" = ( /obj/item/trash/pistachios, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -28509,7 +28508,7 @@ dir = 5; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "daj" = ( /obj/structure/window/reinforced{ dir = 8 @@ -29461,7 +29460,7 @@ dir = 1; icon_state = "darkbluecorners" }, -/area/construction/hallway) +/area/aisat/aihallway) "deB" = ( /obj/structure/cable{ icon_state = "1-2" @@ -29598,7 +29597,7 @@ dir = 4; icon_state = "darkbluecorners" }, -/area/construction/hallway) +/area/aisat/aihallway) "deX" = ( /obj/effect/decal/cleanable/dirt, /mob/living/simple_animal/moth, @@ -30203,7 +30202,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dhw" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -30545,7 +30544,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "diY" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -31169,7 +31168,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dlL" = ( /obj/structure/cable{ icon_state = "0-8" @@ -31378,8 +31377,8 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -31398,7 +31397,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dmB" = ( /obj/machinery/access_button{ command = "cycle_exterior"; @@ -32257,7 +32256,7 @@ dir = 6; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "dpR" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -32466,13 +32465,13 @@ /area/crew_quarters/courtroom) "dre" = ( /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; + color = ""; dir = 5; - color = "" + icon_state = "grass_edge_medium" }, /obj/effect/turf_decal/siding/green/corner{ - icon_state = "grass_edge_medium_corner"; - color = "" + color = ""; + icon_state = "grass_edge_medium_corner" }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) @@ -32751,7 +32750,7 @@ dir = 10; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "dsz" = ( /obj/machinery/papershredder, /obj/machinery/newscaster{ @@ -32846,7 +32845,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "dsR" = ( /obj/item/radio/intercom{ pixel_x = -28 @@ -32935,7 +32934,7 @@ dir = 6; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "dte" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp, @@ -33956,7 +33955,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dxT" = ( /obj/structure/cable{ icon_state = "1-2" @@ -34000,7 +33999,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dyn" = ( /obj/structure/cable{ icon_state = "0-4" @@ -34106,9 +34105,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; + color = ""; dir = 4; - color = "" + icon_state = "grass_edge_medium" }, /obj/machinery/light/small{ dir = 4 @@ -34625,8 +34624,8 @@ /obj/structure/flora/grass/jungle, /obj/item/seeds/grass, /obj/item/reagent_containers/glass/bottle/nutrient/rh{ - pixel_y = 18; - pixel_x = -10 + pixel_x = -10; + pixel_y = 18 }, /turf/simulated/floor/grass, /area/maintenance/fpmaint) @@ -37862,8 +37861,8 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dust, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -39398,9 +39397,9 @@ /area/crew_quarters/bar/atrium) "dWf" = ( /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; + color = ""; dir = 6; - color = "" + icon_state = "grass_edge_medium" }, /obj/structure/cable{ icon_state = "1-2" @@ -39538,9 +39537,9 @@ /area/crew_quarters/kitchen) "dWC" = ( /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; color = ""; - dir = 1 + dir = 1; + icon_state = "grass_edge_medium" }, /obj/effect/decal/cleanable/dirt, /obj/structure/table/wood, @@ -39548,8 +39547,8 @@ dir = 1 }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -40048,7 +40047,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dYd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -40133,7 +40132,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dYz" = ( /obj/effect/decal/warning_stripes/south, /obj/machinery/atmospherics/pipe/simple/visible{ @@ -40319,7 +40318,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dZk" = ( /obj/structure/lattice/catwalk, /obj/structure/disposalpipe/segment{ @@ -42318,7 +42317,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "evo" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -43644,13 +43643,13 @@ /area/atmos) "eLR" = ( /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; - color = "" + color = ""; + icon_state = "grass_edge_medium" }, /obj/effect/turf_decal/siding/green/corner{ - icon_state = "grass_edge_medium_corner"; color = ""; - dir = 8 + dir = 8; + icon_state = "grass_edge_medium_corner" }, /obj/item/shard{ icon_state = "medium"; @@ -43659,8 +43658,8 @@ }, /obj/effect/spawner/random_spawners/blood_5, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -43955,19 +43954,19 @@ /area/hallway/primary/central/sw) "eOd" = ( /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; - color = "" + color = ""; + icon_state = "grass_edge_medium" }, /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; color = ""; - dir = 1 + dir = 1; + icon_state = "grass_edge_medium" }, /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/rodent, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -44379,7 +44378,7 @@ dir = 10; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "eTz" = ( /obj/structure/grille, /obj/effect/decal/cleanable/dirt, @@ -45862,7 +45861,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "fkX" = ( /obj/effect/decal/warning_stripes/east, /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -45957,7 +45956,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "fmF" = ( /obj/effect/decal/warning_stripes/north, /obj/machinery/hologram/holopad, @@ -46572,8 +46571,8 @@ "fvs" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp{ - pixel_y = 15; - pixel_x = -2 + pixel_x = -2; + pixel_y = 15 }, /obj/item/paper{ pixel_x = -5 @@ -47480,8 +47479,8 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -47784,13 +47783,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/decal/cleanable/dust, /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; color = ""; - dir = 10 + dir = 10; + icon_state = "grass_edge_medium" }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -47831,7 +47830,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "fLz" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/atmospherics/pipe/simple/visible/yellow{ @@ -48105,11 +48104,11 @@ dir = 8 }, /obj/effect/decal/cleanable{ + color = "yellow"; icon = 'icons/effects/crayondecal.dmi'; icon_state = "w"; - color = "yellow"; - pixel_y = 7; - pixel_x = -4 + pixel_x = -4; + pixel_y = 7 }, /turf/simulated/floor/glass/reinforced, /area/maintenance/fpmaint) @@ -48327,15 +48326,15 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/decal/cleanable{ + color = "771919"; icon = 'icons/effects/crayondecal.dmi'; icon_state = "d"; - color = "771919"; pixel_x = 31 }, /obj/structure/grille/broken, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -48847,9 +48846,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/decal/cleanable{ + color = "771919"; icon = 'icons/effects/crayondecal.dmi'; icon_state = "i"; - color = "771919"; pixel_x = 36 }, /obj/structure/grille, @@ -48896,9 +48895,9 @@ /area/crew_quarters/bar/atrium) "fXu" = ( /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; + color = ""; dir = 4; - color = "" + icon_state = "grass_edge_medium" }, /obj/structure/cable{ icon_state = "0-4" @@ -53181,7 +53180,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" }, -/area/construction/hallway) +/area/aisat/aihallway) "gXi" = ( /obj/effect/decal/warning_stripes/red/hollow, /obj/structure/rack{ @@ -53795,7 +53794,7 @@ name = "Escape Pod Airlock" }, /turf/simulated/floor/plating, -/area/construction/hallway) +/area/aisat/aihallway) "heZ" = ( /obj/structure/cable{ icon_state = "1-2" @@ -54128,8 +54127,8 @@ /obj/structure/bed, /obj/item/clothing/mask/gas, /obj/item/trash/can{ - pixel_y = -6; - pixel_x = 6 + pixel_x = 6; + pixel_y = -6 }, /obj/machinery/atmospherics/unary/vent_pump/on, /mob/living/simple_animal/moth, @@ -54980,8 +54979,8 @@ pixel_y = 17 }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -58852,9 +58851,9 @@ /area/bridge) "irI" = ( /obj/effect/turf_decal/siding/green/corner{ - icon_state = "grass_edge_medium_corner"; color = ""; - dir = 4 + dir = 4; + icon_state = "grass_edge_medium_corner" }, /obj/effect/spawner/random_spawners/rodent, /obj/structure/disposalpipe/segment, @@ -58864,13 +58863,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/turf_decal/siding/green/corner{ - icon_state = "grass_edge_medium_corner"; color = ""; - dir = 1 + dir = 1; + icon_state = "grass_edge_medium_corner" }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -60538,8 +60537,8 @@ /area/engineering/engine) "iNh" = ( /obj/effect/turf_decal/siding/green/corner{ - icon_state = "grass_edge_medium_corner"; - color = "" + color = ""; + icon_state = "grass_edge_medium_corner" }, /obj/structure/cable{ icon_state = "1-2" @@ -61319,9 +61318,9 @@ /area/toxins/sm_test_chamber) "iXx" = ( /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; color = ""; - dir = 1 + dir = 1; + icon_state = "grass_edge_medium" }, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ @@ -62112,8 +62111,8 @@ }, /obj/item/shard{ icon_state = "small"; - pixel_y = -13; - pixel_x = 5 + pixel_x = 5; + pixel_y = -13 }, /obj/effect/spawner/random_spawners/rodent, /obj/structure/statue/chickenstatue, @@ -63649,7 +63648,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "jxT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ @@ -66737,7 +66736,7 @@ dir = 4; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "knb" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -68202,9 +68201,9 @@ /area/medical/research/restroom) "kHa" = ( /obj/effect/turf_decal/siding/green/corner{ - icon_state = "grass_edge_medium_corner"; color = ""; - dir = 8 + dir = 8; + icon_state = "grass_edge_medium_corner" }, /obj/structure/cable{ icon_state = "1-2" @@ -71358,9 +71357,9 @@ /area/security/warden) "lyE" = ( /obj/effect/turf_decal/siding/green/corner{ - icon_state = "grass_edge_medium_corner"; color = ""; - dir = 8 + dir = 8; + icon_state = "grass_edge_medium_corner" }, /obj/effect/decal/cleanable/dirt, /obj/machinery/portable_atmospherics/canister/air, @@ -71432,8 +71431,8 @@ id = "comdel" }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -71817,8 +71816,8 @@ /obj/effect/decal/cleanable/dust, /obj/item/chair, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -74828,7 +74827,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "mpt" = ( /obj/structure/cable{ icon_state = "4-8" @@ -75084,7 +75083,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "mss" = ( /obj/item/chair/wood/wings{ dir = 1 @@ -75289,7 +75288,7 @@ dir = 5; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "muV" = ( /obj/machinery/door_control{ id = "RnDChem"; @@ -76266,14 +76265,14 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/decal/cleanable{ + color = "771919"; icon = 'icons/effects/crayondecal.dmi'; icon_state = "e"; - color = "771919"; pixel_x = 35 }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -80016,9 +80015,9 @@ /area/security/prison/cell_block/A) "nxF" = ( /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; + color = ""; dir = 9; - color = "" + icon_state = "grass_edge_medium" }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -80335,8 +80334,8 @@ }, /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -82118,7 +82117,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "nWY" = ( /obj/machinery/atmospherics/unary/portables_connector{ dir = 1 @@ -86823,9 +86822,9 @@ /area/crew_quarters/theatre) "pcJ" = ( /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; color = ""; - dir = 1 + dir = 1; + icon_state = "grass_edge_medium" }, /obj/effect/decal/cleanable/dirt, /obj/structure/table/wood, @@ -87437,7 +87436,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "pjD" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -87676,12 +87675,12 @@ /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance, /obj/effect/turf_decal/siding/green/corner{ - icon_state = "grass_edge_medium_corner"; - color = "" + color = ""; + icon_state = "grass_edge_medium_corner" }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -88326,9 +88325,9 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/girder, /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; + color = ""; dir = 8; - color = "" + icon_state = "grass_edge_medium" }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) @@ -88429,7 +88428,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "puB" = ( /turf/simulated/wall/r_wall, /area/toxins/storage) @@ -89847,8 +89846,8 @@ /obj/effect/decal/cleanable/dirt, /obj/item/vending_refill/youtool, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -90365,8 +90364,8 @@ "pOX" = ( /obj/effect/decal/cleanable/dust, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -90384,6 +90383,13 @@ icon_state = "dark" }, /area/crew_quarters/serviceyard) +"pPA" = ( +/obj/machinery/station_map/engineering/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engineering/break_room) "pPB" = ( /obj/structure/safe, /obj/item/soap, @@ -90759,7 +90765,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "pUL" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -95112,8 +95118,8 @@ dir = 1 }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -97102,8 +97108,8 @@ /obj/structure/table/wood, /obj/item/book/random, /turf/simulated/floor/plasteel{ - icon_state = "darkred"; - dir = 10 + dir = 10; + icon_state = "darkred" }, /area/hallway/secondary/entry/commercial) "rpj" = ( @@ -97398,7 +97404,7 @@ dir = 9; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "rtb" = ( /obj/structure/closet/coffin, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -99535,6 +99541,15 @@ icon_state = "whitepurple" }, /area/toxins/lab) +"rTM" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/aisat/aihallway) "rTW" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -99928,8 +99943,8 @@ dir = 1 }, /obj/item/trash/can{ - pixel_y = -6; - pixel_x = 6 + pixel_x = 6; + pixel_y = -6 }, /turf/simulated/floor/plating, /area/maintenance/trading) @@ -102235,15 +102250,15 @@ "sAw" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; - color = "" + color = ""; + icon_state = "grass_edge_medium" }, /obj/structure/cable{ icon_state = "1-2" }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -102264,7 +102279,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "sAK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -102346,13 +102361,13 @@ /area/toxins/xenobiology) "sBE" = ( /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; - color = "" + color = ""; + icon_state = "grass_edge_medium" }, /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; color = ""; - dir = 1 + dir = 1; + icon_state = "grass_edge_medium" }, /obj/effect/decal/cleanable/dirt, /obj/item/reagent_containers/glass/bottle/nutrient/l4z{ @@ -102706,7 +102721,7 @@ dir = 5; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "sGl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -105862,7 +105877,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "tuS" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light_switch{ @@ -107778,7 +107793,7 @@ "tOj" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, -/area/construction/hallway) +/area/aisat/aihallway) "tOp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -108756,8 +108771,8 @@ }, /obj/random/tool, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -109254,7 +109269,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "ufo" = ( /obj/structure/cable{ icon_state = "1-2" @@ -110218,9 +110233,9 @@ /area/maintenance/kitchen) "ura" = ( /obj/effect/turf_decal/siding/green/corner{ - icon_state = "grass_edge_medium_corner"; color = ""; - dir = 8 + dir = 8; + icon_state = "grass_edge_medium_corner" }, /obj/effect/decal/cleanable/dirt, /obj/machinery/constructable_frame/machine_frame, @@ -110241,7 +110256,7 @@ dir = 6; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "urC" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction, /turf/simulated/wall/r_wall/coated, @@ -110511,8 +110526,8 @@ "uvd" = ( /obj/random/tool, /turf/simulated/floor/plasteel{ - icon_state = "darkyellow"; - dir = 6 + dir = 6; + icon_state = "darkyellow" }, /area/maintenance/fpmaint) "uve" = ( @@ -110648,7 +110663,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "uwZ" = ( /obj/machinery/ai_slipper, /obj/structure/cable{ @@ -111271,7 +111286,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "uEQ" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -111725,9 +111740,9 @@ /area/maintenance/starboard) "uJA" = ( /obj/effect/turf_decal/siding/green/corner{ - icon_state = "grass_edge_medium_corner"; color = ""; - dir = 4 + dir = 4; + icon_state = "grass_edge_medium_corner" }, /obj/structure/cable{ d1 = 4; @@ -112024,7 +112039,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "uNn" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -112106,7 +112121,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" }, -/area/construction/hallway) +/area/aisat/aihallway) "uOt" = ( /turf/simulated/floor/plasteel{ dir = 10; @@ -112320,6 +112335,10 @@ /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel, /area/storage/primary) +"uQJ" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/engineering/break_room) "uQL" = ( /obj/machinery/camera{ c_tag = "Robotics Lab"; @@ -112538,7 +112557,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" }, -/area/construction/hallway) +/area/aisat/aihallway) "uTj" = ( /obj/structure/table/glass, /obj/effect/decal/warning_stripes/north, @@ -112984,7 +113003,7 @@ dir = 9; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "uYT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -113027,7 +113046,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "uZl" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, @@ -113312,8 +113331,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/decal/cleanable/dust, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -113403,7 +113422,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "vfb" = ( /obj/machinery/door/airlock/security/glass{ name = "Briefing Room"; @@ -114309,7 +114328,7 @@ dir = 10; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "vpK" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/simple/visible/yellow{ @@ -115983,8 +116002,8 @@ /area/security/securehallway) "vJo" = ( /obj/item/storage/box/large{ - pixel_y = 17; - pixel_x = 9 + pixel_x = 9; + pixel_y = 17 }, /obj/item/storage/fancy/glowsticks_box{ pixel_x = -17 @@ -115995,8 +116014,8 @@ /obj/effect/spawner/lootdrop/maintenance, /obj/structure/table/wood, /turf/simulated/floor/plasteel{ - icon_state = "neutral"; - dir = 6 + dir = 6; + icon_state = "neutral" }, /area/maintenance/trading) "vJr" = ( @@ -117054,9 +117073,9 @@ "vVH" = ( /obj/effect/decal/cleanable/dust, /obj/effect/decal/cleanable{ + color = "yellow"; icon = 'icons/effects/crayondecal.dmi'; icon_state = "o"; - color = "yellow"; pixel_x = -14 }, /obj/item/clothing/mask/gas/clown_hat/pennywise{ @@ -117064,8 +117083,8 @@ pixel_y = -10 }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -117538,7 +117557,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "wcr" = ( /obj/structure/lattice/catwalk, /obj/machinery/access_button{ @@ -117849,7 +117868,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "whc" = ( /obj/structure/cable{ icon_state = "4-8" @@ -118821,7 +118840,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "wsN" = ( /obj/structure/window/reinforced{ dir = 4 @@ -118952,8 +118971,8 @@ "wud" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ - icon_state = "neutral"; - dir = 10 + dir = 10; + icon_state = "neutral" }, /area/maintenance/trading) "wuf" = ( @@ -120198,8 +120217,8 @@ /obj/effect/spawner/random_spawners/rodent, /obj/effect/decal/cleanable/dust, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -120300,7 +120319,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "wKB" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -120427,7 +120446,7 @@ dir = 8; icon_state = "vault" }, -/area/construction/hallway) +/area/aisat/aihallway) "wLN" = ( /obj/structure/bed, /obj/effect/decal/cleanable/dirt, @@ -120869,7 +120888,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkbluecorners" }, -/area/construction/hallway) +/area/aisat/aihallway) "wRH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -121037,12 +121056,12 @@ /area/security/permabrig) "wTO" = ( /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; - color = "" + color = ""; + icon_state = "grass_edge_medium" }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -121191,7 +121210,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "wVP" = ( /obj/structure/falsewall, /turf/simulated/floor/plating, @@ -121264,7 +121283,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" }, -/area/construction/hallway) +/area/aisat/aihallway) "wWA" = ( /obj/structure/table/reinforced, /obj/item/stack/packageWrap, @@ -122332,8 +122351,8 @@ pixel_x = -32 }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -122355,7 +122374,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "xkm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -123555,7 +123574,7 @@ dir = 6; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "xwJ" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -124061,7 +124080,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "xBS" = ( /obj/effect/decal/warning_stripes/northeastcorner, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -125802,7 +125821,7 @@ dir = 8; icon_state = "vault" }, -/area/construction/hallway) +/area/aisat/aihallway) "xTh" = ( /obj/machinery/camera{ c_tag = "Server Room"; @@ -125972,7 +125991,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "xUL" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/cobweb_left_frequent, @@ -126015,9 +126034,9 @@ /area/maintenance/library) "xVe" = ( /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; color = ""; - dir = 1 + dir = 1; + icon_state = "grass_edge_medium" }, /obj/structure/chair{ dir = 4 @@ -126046,18 +126065,18 @@ /area/atmos) "xVl" = ( /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; - color = "" + color = ""; + icon_state = "grass_edge_medium" }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; color = ""; - dir = 1 + dir = 1; + icon_state = "grass_edge_medium" }, /turf/simulated/floor/plasteel{ - icon_state = "dark"; dir = 5; + icon_state = "dark"; tag = "icon-vault (NORTHEAST)" }, /area/maintenance/fpmaint) @@ -126337,9 +126356,9 @@ /area/ntrep) "xYs" = ( /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; + color = ""; dir = 4; - color = "" + icon_state = "grass_edge_medium" }, /obj/structure/cable{ icon_state = "2-4" @@ -126619,7 +126638,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "ybJ" = ( /obj/machinery/power/emitter{ dir = 8 @@ -127280,9 +127299,9 @@ "yhV" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/green{ - icon_state = "grass_edge_medium"; + color = ""; dir = 4; - color = "" + icon_state = "grass_edge_medium" }, /obj/structure/closet, /obj/effect/decal/cleanable/cobweb2, @@ -127360,7 +127379,7 @@ dir = 5; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "yiC" = ( /obj/structure/cable{ icon_state = "1-2" @@ -127434,7 +127453,7 @@ dir = 10; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "yjA" = ( /obj/structure/particle_accelerator/particle_emitter/left{ dir = 8 @@ -133508,7 +133527,7 @@ aaq aaq dZq cgA -sOt +rTM dtv wKp iGo @@ -133524,7 +133543,7 @@ iGo wKp iGo daj -sOt +rTM bUT dZq aaq @@ -133765,7 +133784,7 @@ aaq aaq dZq oKs -sOt +rTM bXR coE coE @@ -133781,7 +133800,7 @@ coE coE coE oKs -sOt +rTM bXR dZq aaq @@ -134022,7 +134041,7 @@ aaq aaq coE cgA -sOt +rTM bUT aaq coE @@ -134038,7 +134057,7 @@ coE aaq coE cgA -sOt +rTM bUT dZq dZq @@ -134279,7 +134298,7 @@ aaq aaq dZq cgA -sOt +rTM bUT aaq coE @@ -134295,7 +134314,7 @@ coE aaq coE cgA -sOt +rTM dsq dse dxZ @@ -134536,7 +134555,7 @@ coE dZq dZq oKs -sOt +rTM bXR coE coE @@ -134787,13 +134806,13 @@ iGo iGo iGo oJo -sOt +rTM dsq dse dse dxZ cZL -sOt +rTM tSb aaq vtK @@ -134816,7 +134835,7 @@ iGo wKp iGo daj -sOt +rTM bUT dZq aaq @@ -135073,7 +135092,7 @@ coE coE coE oKs -sOt +rTM bXR dZq aaq @@ -135844,7 +135863,7 @@ dEP kNO coE oKs -sOt +rTM tqu coE dZq @@ -138414,7 +138433,7 @@ dEP tKL coE oKs -sOt +rTM wVe coE dZq @@ -138928,7 +138947,7 @@ coE aaq coE cgA -sOt +rTM bUT coE aaq @@ -139185,7 +139204,7 @@ coE coE coE oKs -sOt +rTM bXR dZq aaq @@ -139419,7 +139438,7 @@ wKp wKp iGo daj -sOt +rTM bXR aaq vxh @@ -139442,7 +139461,7 @@ dxZ dse dxZ hDH -sOt +rTM bUT dZq aaq @@ -139676,7 +139695,7 @@ dZq dZq coE oKs -sOt +rTM bXR coE coE @@ -139933,7 +139952,7 @@ aaq aaq coE cgA -sOt +rTM bUT aaq coE @@ -139949,7 +139968,7 @@ coE aaq coE cgA -sOt +rTM uWl wKp iGo @@ -140190,7 +140209,7 @@ aaq aaq dZq cgA -sOt +rTM bUT aaq coE @@ -140206,7 +140225,7 @@ coE aaq coE cgA -sOt +rTM bUT dZq dZq @@ -140447,7 +140466,7 @@ aaq aaq dZq oKs -sOt +rTM bXR coE coE @@ -140463,7 +140482,7 @@ coE coE coE oKs -sOt +rTM bXR dZq aaq @@ -140704,7 +140723,7 @@ aaq aaq dZq cgA -sOt +rTM lwR dse dxZ @@ -140720,7 +140739,7 @@ dxZ dse dxZ hDH -sOt +rTM bUT dZq aaq @@ -150214,7 +150233,7 @@ kLP rZU sMk bPK -lsT +uQJ uOE pqZ cTM @@ -152268,8 +152287,8 @@ frD frD frD frD -jJA -cKe +frD +pPA ofQ oPZ aLM diff --git a/_maps/map_files/event/Station/coldcolony.dmm b/_maps/map_files/event/Station/coldcolony.dmm index 4242930539c..7b28ab19dd6 100644 --- a/_maps/map_files/event/Station/coldcolony.dmm +++ b/_maps/map_files/event/Station/coldcolony.dmm @@ -11267,9 +11267,6 @@ icon_state = "neutralfull" }, /area/quartermaster/office) -"ejn" = ( -/turf/simulated/wall/indestructible/reinforced, -/area/medical/virology/lab) "ejr" = ( /obj/machinery/atmospherics/pipe/simple/visible/green{ desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; @@ -16759,7 +16756,7 @@ /area/crew_quarters/mrchangs) "gsD" = ( /obj/machinery/status_display, -/turf/simulated/wall/indestructible/reinforced, +/turf/simulated/wall/r_wall, /area/bridge) "gsG" = ( /turf/simulated/wall, @@ -17622,7 +17619,7 @@ }, /area/security/processing) "gKk" = ( -/turf/simulated/wall/indestructible/reinforced, +/turf/simulated/wall/r_wall, /area/tcommsat/chamber) "gKn" = ( /turf/simulated/floor/plasteel{ @@ -21060,7 +21057,7 @@ }, /area/coldcolony/ruin/abandoned_garage) "icb" = ( -/turf/simulated/wall/indestructible/reinforced, +/turf/simulated/wall/r_wall, /area/maintenance/maintcentral) "icn" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -27480,7 +27477,7 @@ }, /area/crew_quarters/chief) "kua" = ( -/turf/simulated/wall/indestructible/reinforced, +/turf/simulated/wall/r_wall, /area/medical/cmo) "kue" = ( /obj/structure/table, @@ -27508,7 +27505,7 @@ }, /area/hallway/primary/central/north) "kuG" = ( -/turf/simulated/wall/indestructible/reinforced, +/turf/simulated/wall/r_wall, /area/crew_quarters/heads/hop) "kuQ" = ( /obj/effect/decal/cleanable/dirt, @@ -29542,7 +29539,7 @@ /area/assembly/robotics) "ljY" = ( /obj/machinery/status_display, -/turf/simulated/wall/indestructible/reinforced, +/turf/simulated/wall/r_wall, /area/crew_quarters/heads/hop) "lkm" = ( /obj/effect/landmark/start/engineer, @@ -35487,6 +35484,10 @@ }, /area/hydroponics) "nCl" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, /turf/simulated/floor/wood/fancy/light{ icon_state = "light-fancy-wood-broken2" }, @@ -36817,7 +36818,7 @@ /turf/simulated/floor/plasteel, /area/crew_quarters/locker) "obp" = ( -/turf/simulated/wall/indestructible/reinforced, +/turf/simulated/wall/r_wall, /area/blueshield) "obw" = ( /obj/machinery/computer/arcade/battle, @@ -39929,9 +39930,6 @@ temperature = 180 }, /area/ruin/unpowered) -"pjc" = ( -/turf/simulated/wall/indestructible/reinforced, -/area/ntrep) "pjd" = ( /obj/structure/chair/office/dark{ dir = 4 @@ -45515,7 +45513,7 @@ /turf/simulated/floor/plating, /area/medical/research/shallway) "rjr" = ( -/turf/simulated/wall/indestructible/reinforced, +/turf/simulated/wall/r_wall, /area/bridge/meeting_room) "rjt" = ( /obj/effect/decal/cleanable/dirt, @@ -52760,7 +52758,7 @@ }, /area/hallway/primary/central/north) "tYA" = ( -/turf/simulated/wall/indestructible/reinforced, +/turf/simulated/wall/r_wall, /area/crew_quarters/captain/bedroom) "tYF" = ( /obj/structure/table, @@ -55053,7 +55051,7 @@ }, /area/security/permabrig) "uTD" = ( -/turf/simulated/wall/indestructible/reinforced, +/turf/simulated/wall/r_wall, /area/crew_quarters/captain) "uTG" = ( /obj/machinery/suit_storage_unit/lavaland, @@ -55344,7 +55342,7 @@ /turf/simulated/floor/carpet/black, /area/bridge/meeting_room) "uYL" = ( -/turf/simulated/wall/indestructible/reinforced, +/turf/simulated/wall/r_wall, /area/bridge/vip) "uYP" = ( /obj/effect/spawner/random_spawners/rodent, @@ -56226,7 +56224,7 @@ /turf/simulated/floor/plating, /area/maintenance/fore) "voL" = ( -/turf/simulated/wall/indestructible/reinforced, +/turf/simulated/wall/r_wall, /area/hallway/primary/fore) "vpd" = ( /obj/machinery/door/window/eastleft{ @@ -58424,7 +58422,7 @@ }, /area/medical/medbay2) "wdw" = ( -/turf/simulated/wall/indestructible/reinforced, +/turf/simulated/wall/r_wall, /area/bridge) "wdY" = ( /obj/structure/sign/poster/contraband/random{ @@ -61333,7 +61331,7 @@ /obj/structure/sign/comand{ name = "\improper COMMAND" }, -/turf/simulated/wall/indestructible/reinforced, +/turf/simulated/wall/r_wall, /area/hallway/primary/fore) "xhw" = ( /obj/effect/turf_decal/siding/wood{ @@ -112104,7 +112102,7 @@ whV bhu gnj qPW -ejn +whV dGf tBa kWx @@ -112406,7 +112404,7 @@ whV jVh nIv tgo -ejn +whV nJW rmU jzD @@ -129563,14 +129561,14 @@ uYI diR anq jgP -pjc +lXT lXT rcs grM jlD wNP lXT -pjc +lXT uYw icb icb @@ -129865,14 +129863,14 @@ rEr waq hKw uhC -pjc +lXT bFq nbY xQl fCV sKl xHG -pjc +lXT dOU qAX icb @@ -130174,7 +130172,7 @@ nxK aml nLc aUo -pjc +lXT gZt oab icb @@ -130469,14 +130467,14 @@ gKn gKn hKw reE -pjc +lXT arv jqy qii cRn fwP ewv -pjc +lXT gZt keU icb @@ -130771,14 +130769,14 @@ qmI wLm kBV oaw -pjc +lXT fwP fwP dpQ fwP fwP tDC -pjc +lXT pAH gZt icb @@ -131073,14 +131071,14 @@ emZ emZ kgd dFy -pjc +lXT vGX sDh sDO fss neF wsH -pjc +lXT cSj uYw icb @@ -131375,14 +131373,14 @@ efi emZ mJs nbX -pjc -pjc -pjc -pjc -pjc -pjc -pjc -pjc +lXT +lXT +lXT +lXT +lXT +lXT +lXT +lXT aFw dOU icb diff --git a/_maps/map_files/event/Station/delta_old.dmm b/_maps/map_files/event/Station/delta_old.dmm index 3e47c7a2aaf..3a156f1f907 100644 --- a/_maps/map_files/event/Station/delta_old.dmm +++ b/_maps/map_files/event/Station/delta_old.dmm @@ -940,7 +940,7 @@ dir = 8; icon_state = "darkbluecorners" }, -/area/construction/hallway) +/area/aisat/aihallway) "aon" = ( /obj/structure/table/wood, /obj/item/camera, @@ -12015,7 +12015,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "bEr" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -13713,7 +13713,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "bNS" = ( /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, @@ -14154,7 +14154,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "bPU" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 4 @@ -14587,7 +14587,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "bRF" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/power/emitter{ @@ -14617,7 +14617,7 @@ dir = 6; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "bRT" = ( /obj/structure/cable{ icon_state = "1-2" @@ -17034,7 +17034,7 @@ /obj/structure/lattice, /obj/machinery/light/small, /turf/space, -/area/aisat) +/area/aisat/aihallway) "ccC" = ( /obj/machinery/status_display{ pixel_y = 32 @@ -21093,7 +21093,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "cwL" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -22504,7 +22504,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "cCE" = ( /turf/simulated/wall/rust, /area/space/nearstation) @@ -23877,7 +23877,7 @@ network = list("SS13","MiniSat") }, /turf/space, -/area/aisat) +/area/aisat/aihallway) "cHJ" = ( /obj/structure/cable{ icon_state = "4-8" @@ -28246,7 +28246,7 @@ dir = 9; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "cZS" = ( /obj/structure/cable{ icon_state = "4-8" @@ -28320,7 +28320,7 @@ dir = 5; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "daj" = ( /obj/structure/window/reinforced{ dir = 8 @@ -29252,7 +29252,7 @@ dir = 1; icon_state = "darkbluecorners" }, -/area/construction/hallway) +/area/aisat/aihallway) "deB" = ( /obj/structure/cable{ icon_state = "1-2" @@ -29440,7 +29440,7 @@ dir = 4; icon_state = "darkbluecorners" }, -/area/construction/hallway) +/area/aisat/aihallway) "deX" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/wood, @@ -29524,7 +29524,7 @@ dir = 5; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "dfr" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -30087,7 +30087,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dhw" = ( /obj/structure/table/wood, /obj/machinery/light{ @@ -30423,7 +30423,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "diX" = ( /obj/machinery/computer/aiupload/cyborg, /obj/item/radio/intercom/private{ @@ -31084,7 +31084,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dlL" = ( /obj/machinery/reagentgrinder, /obj/structure/table/reinforced, @@ -31324,7 +31324,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dmz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -32249,7 +32249,7 @@ dir = 6; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "dpR" = ( /obj/machinery/door/airlock/public{ name = "Bar"; @@ -32838,7 +32838,7 @@ dir = 10; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "dsx" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -32936,7 +32936,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "dsR" = ( /obj/item/radio/intercom{ pixel_x = -32 @@ -33033,7 +33033,7 @@ dir = 6; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "dte" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp, @@ -34022,7 +34022,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dxT" = ( /obj/structure/cable{ icon_state = "1-2" @@ -34074,7 +34074,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dyn" = ( /obj/structure/cable{ icon_state = "0-4" @@ -35603,7 +35603,7 @@ network = list("SS13","MiniSat") }, /turf/space, -/area/maintenance/ai) +/area/aisat/aihallway) "dFa" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -38716,16 +38716,6 @@ icon_state = "dark" }, /area/security/permabrig) -"dSb" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/lattice, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/space, -/area/aisat) "dSc" = ( /obj/structure/window/reinforced, /obj/structure/closet/coffin, @@ -39274,16 +39264,6 @@ icon_state = "neutralcorner" }, /area/crew_quarters/locker) -"dTT" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/lattice, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/space, -/area/aisat) "dTW" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/structure/chair, @@ -40482,7 +40462,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dYc" = ( /obj/machinery/camera{ c_tag = "Central Ring Hallway West 4"; @@ -40624,7 +40604,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dYz" = ( /obj/effect/decal/warning_stripes/south, /obj/machinery/atmospherics/pipe/simple/visible{ @@ -40829,7 +40809,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dZk" = ( /obj/structure/lattice/catwalk, /obj/structure/disposalpipe/segment{ @@ -42531,7 +42511,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "evo" = ( /obj/structure/chair/wood{ dir = 1 @@ -44297,7 +44277,7 @@ dir = 10; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "eTz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -45520,7 +45500,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "fkX" = ( /obj/effect/decal/warning_stripes/east, /obj/machinery/atmospherics/unary/vent_scrubber{ @@ -45610,7 +45590,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "fmF" = ( /obj/effect/decal/warning_stripes/north, /obj/machinery/hologram/holopad, @@ -47237,7 +47217,7 @@ network = list("SS13","MiniSat") }, /turf/space, -/area/aisat) +/area/aisat/aihallway) "fKF" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/portable_atmospherics/canister/oxygen, @@ -47341,7 +47321,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "fLz" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/atmospherics/pipe/simple/visible/yellow{ @@ -52342,7 +52322,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" }, -/area/construction/hallway) +/area/aisat/aihallway) "gXk" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -52866,7 +52846,7 @@ "heT" = ( /obj/machinery/door/airlock/external, /turf/simulated/floor/plating, -/area/construction/hallway) +/area/aisat/aihallway) "heZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -60215,7 +60195,7 @@ network = list("SS13","MiniSat") }, /turf/space, -/area/aisat) +/area/aisat/aihallway) "jiS" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -61429,7 +61409,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "jxS" = ( /obj/machinery/alarm{ dir = 8; @@ -63672,7 +63652,7 @@ dir = 4 }, /turf/space, -/area/maintenance/ai) +/area/aisat/aihallway) "kgz" = ( /obj/structure/girder, /turf/simulated/floor/plating, @@ -63976,7 +63956,7 @@ dir = 8 }, /turf/space, -/area/maintenance/ai) +/area/aisat/aihallway) "klw" = ( /turf/simulated/floor/engine/n20, /area/atmos) @@ -64172,7 +64152,7 @@ dir = 4; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "kna" = ( /turf/simulated/wall/r_wall, /area/atmos/control) @@ -66996,7 +66976,7 @@ network = list("SS13","MiniSat") }, /turf/space, -/area/maintenance/ai) +/area/aisat/aihallway) "liE" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -67179,7 +67159,7 @@ dir = 1 }, /turf/space, -/area/aisat) +/area/aisat/aihallway) "llN" = ( /obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, @@ -71108,7 +71088,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "mpA" = ( /obj/structure/cable{ icon_state = "4-8" @@ -71352,7 +71332,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "msG" = ( /obj/structure/window/reinforced, /obj/structure/chair/comfy/black{ @@ -71528,7 +71508,7 @@ dir = 5; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "muV" = ( /obj/structure/cable{ icon_state = "4-8" @@ -71904,7 +71884,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "mzZ" = ( /obj/structure/sign/science{ icon_state = "doors" @@ -77365,7 +77345,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "nWY" = ( /obj/effect/decal/warning_stripes/west, /turf/simulated/floor/plating, @@ -81973,7 +81953,7 @@ network = list("SS13","MiniSat") }, /turf/space, -/area/aisat) +/area/aisat/aihallway) "pjj" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -81998,7 +81978,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "pjI" = ( /obj/machinery/access_button{ command = "cycle_exterior"; @@ -82951,7 +82931,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "puB" = ( /turf/simulated/wall/r_wall, /area/toxins/storage) @@ -84923,7 +84903,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "pUL" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -90543,7 +90523,7 @@ dir = 9; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "rtb" = ( /obj/structure/closet/coffin, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -94749,7 +94729,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "sAQ" = ( /obj/effect/decal/warning_stripes/north, /turf/simulated/floor/plasteel{ @@ -95166,7 +95146,7 @@ dir = 5; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "sGl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -95703,7 +95683,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "sOC" = ( /obj/structure/closet/secure_closet/exile, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -99386,7 +99366,7 @@ "tOj" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, -/area/construction/hallway) +/area/aisat/aihallway) "tOq" = ( /obj/machinery/camera{ c_tag = "Arrivals South End"; @@ -100545,7 +100525,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "ufo" = ( /obj/structure/cable{ icon_state = "1-2" @@ -101416,7 +101396,7 @@ dir = 6; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "urC" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction, /turf/simulated/wall/r_wall/coated, @@ -101789,7 +101769,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "uwZ" = ( /obj/machinery/ai_slipper, /obj/structure/cable{ @@ -102267,7 +102247,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "uEV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -102969,7 +102949,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "uNn" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -103051,7 +103031,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" }, -/area/construction/hallway) +/area/aisat/aihallway) "uOt" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -103433,7 +103413,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" }, -/area/construction/hallway) +/area/aisat/aihallway) "uTm" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -103886,7 +103866,7 @@ dir = 9; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "uYT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -103926,7 +103906,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "uZl" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, @@ -104276,7 +104256,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "vfb" = ( /obj/machinery/door/airlock/security/glass{ name = "Briefing Room"; @@ -105066,7 +105046,7 @@ dir = 10; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "vpK" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/simple/visible/yellow{ @@ -105341,7 +105321,7 @@ network = list("SS13","MiniSat") }, /turf/space, -/area/maintenance/ai) +/area/aisat/aihallway) "vtR" = ( /obj/machinery/light/small{ dir = 1 @@ -105643,7 +105623,7 @@ network = list("SS13","MiniSat") }, /turf/space, -/area/maintenance/ai) +/area/aisat/aihallway) "vxk" = ( /obj/structure/chair/office/dark{ dir = 1 @@ -108002,7 +107982,7 @@ dir = 4 }, /turf/space, -/area/maintenance/ai) +/area/aisat/aihallway) "waS" = ( /obj/structure/window/reinforced{ dir = 4 @@ -108102,7 +108082,7 @@ dir = 8 }, /turf/space, -/area/maintenance/ai) +/area/aisat/aihallway) "wcl" = ( /obj/machinery/door/airlock/external{ frequency = 1379; @@ -108114,7 +108094,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "wcr" = ( /obj/structure/lattice/catwalk, /obj/machinery/access_button{ @@ -108435,7 +108415,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "whc" = ( /obj/structure/cable{ icon_state = "4-8" @@ -109314,7 +109294,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "wsN" = ( /obj/structure/cable{ icon_state = "4-8" @@ -110615,7 +110595,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "wKB" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -110698,7 +110678,7 @@ dir = 8; icon_state = "vault" }, -/area/construction/hallway) +/area/aisat/aihallway) "wMm" = ( /obj/effect/decal/warning_stripes/yellow, /obj/machinery/navbeacon{ @@ -111144,7 +111124,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkbluecorners" }, -/area/construction/hallway) +/area/aisat/aihallway) "wRB" = ( /obj/item/twohanded/required/kirbyplants, /obj/machinery/light_switch{ @@ -111515,7 +111495,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" }, -/area/construction/hallway) +/area/aisat/aihallway) "wWK" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -112614,7 +112594,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "xkm" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -113725,7 +113705,7 @@ dir = 6; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "xwM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -114175,7 +114155,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "xBS" = ( /obj/effect/decal/warning_stripes/northeastcorner, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -115651,7 +115631,7 @@ dir = 8; icon_state = "vault" }, -/area/construction/hallway) +/area/aisat/aihallway) "xTh" = ( /obj/machinery/camera{ c_tag = "Server Room"; @@ -115763,7 +115743,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "xUL" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/cobweb_left_frequent, @@ -116288,7 +116268,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "ybL" = ( /obj/structure/table/reinforced, /obj/item/wrench, @@ -116865,7 +116845,7 @@ dir = 5; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "yiC" = ( /obj/structure/cable{ icon_state = "1-2" @@ -116922,7 +116902,7 @@ dir = 10; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "yjA" = ( /obj/structure/particle_accelerator/particle_emitter/left{ dir = 8 @@ -122956,7 +122936,7 @@ dYy wVe iGo fFm -dSb +kfX iGo iGo iGo @@ -123208,7 +123188,7 @@ iGo iGo iGo iGo -dSb +kfX iGo iGw iGw @@ -127834,7 +127814,7 @@ dxZ dxZ dxZ dxZ -dTT +klv dxZ iGw iGw @@ -128096,7 +128076,7 @@ dZj eER dxZ fHS -dTT +klv dxZ dxZ dxZ diff --git a/code/__DEFINES/alerts.dm b/code/__DEFINES/alerts.dm index 8a98697925e..473b539206f 100644 --- a/code/__DEFINES/alerts.dm +++ b/code/__DEFINES/alerts.dm @@ -26,6 +26,7 @@ #define ALERT_EMBEDDED "embedded" #define ALERT_NUTRITION "nutrition" #define ALERT_DIRECTION_LOCK "direction_lock" +#define ALERT_UNPOSSESS_OBJECT "unpossess_object" /** Silicon related */ #define ALERT_LOCKED "locked" diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index 879ea09134e..7e09eecd099 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -686,6 +686,11 @@ /// From base of /client/Move(): (direction, old_dir) #define COMSIG_MOB_CLIENT_MOVED "mob_client_moved" +/// From base of /client/Move(), invoked when a non-living mob is attempting to move: (list/move_args) +#define COMSIG_MOB_CLIENT_PRE_NON_LIVING_MOVE "mob_client_pre_non_living_move" + /// Cancels the move attempt + #define COMSIG_MOB_CLIENT_BLOCK_PRE_NON_LIVING_MOVE COMPONENT_MOVABLE_BLOCK_PRE_MOVE + /// From base of /client/Move(): (list/move_args) #define COMSIG_MOB_CLIENT_PRE_LIVING_MOVE "mob_client_pre_living_move" /// Should we stop the current living movement attempt @@ -1287,3 +1292,6 @@ /// Source: /proc/random_hair_style (mob/living/carbon/human/human, valid_hairstyles, robohead) #define COMSIG_RANDOM_HAIR_STYLE "random_hair_style" + +/// Source: /datum/component/object_possession/proc/on_move (mob/mob, new_loc, direct) +#define COMSIG_POSSESSED_MOVEMENT "possessed_movement" diff --git a/code/__DEFINES/dcs/signals_silicon.dm b/code/__DEFINES/dcs/signals_silicon.dm new file mode 100644 index 00000000000..34c557659eb --- /dev/null +++ b/code/__DEFINES/dcs/signals_silicon.dm @@ -0,0 +1,2 @@ +///from base of /mob/camera/aiEye/setLoc: (/turf/destination) +#define COMSIG_AI_EYE_MOVED "ai_eye_moved" diff --git a/code/__DEFINES/ert.dm b/code/__DEFINES/ert.dm new file mode 100644 index 00000000000..8587e08d0ba --- /dev/null +++ b/code/__DEFINES/ert.dm @@ -0,0 +1,7 @@ +#define ERT_ROLE_COMMANDER "Командир" +#define ERT_ROLE_SECURITY "Боец" +#define ERT_ROLE_MEDIC "Медик" +#define ERT_ROLE_ENGINEER "Инженер" +#define ERT_ROLE_JANITOR "Уборщик" +#define ERT_ROLE_PARANORMAL "Паранормал" +#define ERT_ROLE_CYBORG "Борг" diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 4de13d17dd6..abdf6d2953d 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -143,6 +143,8 @@ GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list( #define ischasm(A) (istype(A, /turf/simulated/floor/chasm)) +#define issingularity(atom) (istype(atom, /obj/singularity)) + //Structures #define isstructure(A) (istype(A, /obj/structure)) diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index d68dcf08a4f..64c6aa569f4 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -102,6 +102,7 @@ #define INIT_ORDER_NIGHTSHIFT -24 #define INIT_ORDER_GAME_EVENTS -26 #define INIT_ORDER_PATH -50 +#define INIT_ORDER_EXPLOSIONS -69 #define INIT_ORDER_PERSISTENCE -95 #define INIT_ORDER_STATPANELS -98 #define INIT_ORDER_DEMO -99 // To avoid a bunch of changes related to initialization being written, do this last @@ -139,6 +140,7 @@ #define FIRE_PRIORITY_CHAT 400 #define FIRE_PRIORITY_RUNECHAT 410 // I hate how high the fire priority on this is -aa #define FIRE_PRIORITY_OVERLAYS 500 +#define FIRE_PRIORITY_EXPLOSIONS 666 #define FIRE_PRIORITY_TIMER 700 #define FIRE_PRIORITY_SPEECH_CONTROLLER 900 #define FIRE_PRIORITY_DELAYED_VERBS 950 diff --git a/code/__HELPERS/data_struct/priority_queue.dm b/code/__HELPERS/data_struct/priority_queue.dm new file mode 100644 index 00000000000..f2a0808fb04 --- /dev/null +++ b/code/__HELPERS/data_struct/priority_queue.dm @@ -0,0 +1,69 @@ +/priority_queue + var/list/priority_node/heap = list() + +/priority_node + var/item + var/priority + +/priority_node/New(item, priority) + . = ..() + src.item = item + src.priority = priority + +/priority_queue/proc/enqueue(value, priority) + heap += list(new /priority_node(value, priority)) + bubble_up(heap.len) + +/priority_queue/proc/dequeue() + if (heap.len == 0) + return null + + var/priority_node/top = heap[1] + var/bottom = heap[heap.len] + var/item = top.item + heap -= bottom + if(!heap.len) + qdel(top) + return item + heap[1] = bottom + bubble_down(1) + qdel(top) + return item + +/priority_queue/proc/peek() + if (heap.len == 0) + return null + return heap[1].item + +/priority_queue/proc/is_empty() + return heap.len == 0 + +/priority_queue/proc/bubble_up(index) + while(index > 1) + var/parent = round(index / 2) + + if (heap[parent].priority < heap[index].priority) + break + + swap(index, parent) + index = parent + + +/priority_queue/proc/bubble_down(index) + while(index * 2 <= heap.len) + var/child = index * 2 + + if (child + 1 <= heap.len && heap[child + 1].priority < heap[child].priority) + child++ + + if (heap[index].priority < heap[child].priority) + break + + swap(index, child) + index = child + + +/priority_queue/proc/swap(a, b) + var/list/temp = heap[a] + heap[a] = heap[b] + heap[b] = temp diff --git a/code/__HELPERS/data_struct/queue.dm b/code/__HELPERS/data_struct/queue.dm new file mode 100644 index 00000000000..11f03adf0ff --- /dev/null +++ b/code/__HELPERS/data_struct/queue.dm @@ -0,0 +1,73 @@ +/* +* Double linked list node +*/ +/node + var/value + var/prev + var/next + +/* +* Defining a queue based on a double linked list +*/ +/queue + /// Link to the beginning of the list + var/node/head + /// Link to end of list + var/node/tail + /// Number of elements in queue + var/count = 0 + +/* +* Adding an element to the end of the queue +*/ +/queue/proc/enqueue(value) + var/node/new_node = new + new_node.value = value + + if (!tail) + head = new_node + tail = new_node + else + tail.next = new_node + new_node.prev = tail + tail = new_node + count++ +/* + * Retrieving an element from the head of the queue + */ +/queue/proc/dequeue() + if (!head) + return null + + var/value = head.value + var/node/old_head = head + + head = head.next + if (head) + head.prev = null + else + tail = null + old_head.value = null + old_head.next = null + qdel(old_head) + count-- + return value +/* +* Returns an element from the beginning of the queue without removing it +*/ +/queue/proc/peek() + if (!head) + return null + return head.value + +/* +* Checking if the queue is empty +*/ +/queue/proc/is_empty() + return count == 0 + +/* +* Returns the number of elements in the queue +*/ +/queue/proc/size() + return count diff --git a/code/__HELPERS/level_check.dm b/code/__HELPERS/level_check.dm deleted file mode 100644 index 2e8ad669f79..00000000000 --- a/code/__HELPERS/level_check.dm +++ /dev/null @@ -1,20 +0,0 @@ -/proc/is_on_level_name(atom/A,name) - var/datum/space_level/S = GLOB.space_manager.get_zlev_by_name(name) - return A.z == S.zpos - -// For expansion later -/proc/atoms_share_level(atom/A, atom/B) - return A && B && A.z == B.z - -/** - * Checks if source_loc and checking_loc is both on the station, or on the same z level. - * This is because the station's several levels aren't considered the same z, so multi-z stations need this special case. - * returns TRUE if connection is valid, FALSE otherwise. - */ -/proc/is_valid_z_level(turf/source_loc, turf/checking_loc) - // if we're both on "station", regardless of multi-z, we'll pass by. - if(is_station_level(source_loc.z) && is_station_level(checking_loc.z)) - return TRUE - if(source_loc.z == checking_loc.z) - return TRUE - return FALSE diff --git a/code/__HELPERS/level_traits.dm b/code/__HELPERS/level_traits.dm index a7807445229..7b6a047d397 100644 --- a/code/__HELPERS/level_traits.dm +++ b/code/__HELPERS/level_traits.dm @@ -86,3 +86,11 @@ GLOBAL_LIST_INIT(default_map_traits, MAP_TRANSITION_CONFIG) if(SL.linkage == CROSSLINKED && !is_taipan(SL.zpos)) znums |= SL.zpos return znums + +/// Checks if both atoms are in same z or in connected z-levels. +/proc/are_zs_connected(atom/A, atom/B) + A = get_turf(A) + B = get_turf(B) + if(A.z == B.z) + return TRUE + return (B.z in SSmapping.get_connected_levels(A)) diff --git a/code/_globalvars/lists/holomaps.dm b/code/_globalvars/lists/holomaps.dm index 5712f51f33f..80f2cad3b77 100644 --- a/code/_globalvars/lists/holomaps.dm +++ b/code/_globalvars/lists/holomaps.dm @@ -13,9 +13,9 @@ GLOBAL_LIST_INIT(holomap_color_to_name, list( HOLOMAP_AREACOLOR_CARGO = "Снабжение", HOLOMAP_AREACOLOR_HALLWAYS = "Коридоры", HOLOMAP_AREACOLOR_MAINTENANCE = "Тех. тоннели", - HOLOMAP_AREACOLOR_ARRIVALS = "Зона прибытия", - HOLOMAP_AREACOLOR_ESCAPE = "Зона отбытия", - HOLOMAP_AREACOLOR_DORMS = "Зона отдыха", + HOLOMAP_AREACOLOR_ARRIVALS = "Прибытие", + HOLOMAP_AREACOLOR_ESCAPE = "Отбытие", + HOLOMAP_AREACOLOR_DORMS = "Дормиторий", HOLOMAP_AREACOLOR_SERVICE = "Сервис", HOLOMAP_AREACOLOR_HANGAR = "Ангар", )) diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index 3a8e66de69b..a6a8a11acf2 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -872,14 +872,18 @@ so as to remain in compliance with the most up-to-date laws." /atom/movable/screen/alert/Click(location, control, params) if(!usr || !usr.client) - return + return FALSE + var/paramslist = params2list(params) if(paramslist["shift"]) // screen objects don't do the normal Click() stuff so we'll cheat to_chat(usr, "[name] - [desc]") - return + return FALSE + if(master) return usr.client.Click(master, location, control, params) + return TRUE + /atom/movable/screen/alert/Destroy() severity = 0 master = null @@ -899,3 +903,16 @@ so as to remain in compliance with the most up-to-date laws." if(!istype(usr)) return living_owner.do_succumb(TRUE) + +/atom/movable/screen/alert/unpossess_object + name = "Unpossess" + desc = "Этот объект под вашим контролем. Нажмите сюда для прекращения контроля." + icon_state = "buckled" + +/atom/movable/screen/alert/unpossess_object/Click(location, control, params) + . = ..() + + if(!.) + return + + qdel(usr.GetComponent(/datum/component/object_possession)) diff --git a/code/controllers/subsystem/augury.dm b/code/controllers/subsystem/augury.dm new file mode 100644 index 00000000000..2ebd6f8c740 --- /dev/null +++ b/code/controllers/subsystem/augury.dm @@ -0,0 +1,78 @@ +SUBSYSTEM_DEF(augury) + name = "Augury" + flags = SS_NO_INIT + runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME + + var/list/watchers = list() + var/list/doombringers = list() + + var/list/observers_given_action = list() + +/datum/controller/subsystem/augury/stat_entry(msg) + msg = "W:[watchers.len]|D:[length(doombringers)]" + return ..() + +/datum/controller/subsystem/augury/proc/register_doom(atom/A, severity) + doombringers[A] = severity + RegisterSignal(A, COMSIG_QDELETING, PROC_REF(unregister_doom)) + +/datum/controller/subsystem/augury/proc/unregister_doom(atom/A) + SIGNAL_HANDLER + UnregisterSignal(A, COMSIG_QDELETING) + doombringers -= A + +/datum/controller/subsystem/augury/fire() + var/biggest_doom = null + var/biggest_threat = null + + for(var/db in doombringers) + var/datum/d = db + if(!d || QDELETED(d)) + doombringers -= d + continue + var/threat = doombringers[d] + if((biggest_threat == null) || (biggest_threat < threat)) + biggest_doom = d + biggest_threat = threat + + if(doombringers.len) + for(var/i in GLOB.player_list) + if(isobserver(i) && (!(observers_given_action[i]))) + var/datum/action/innate/augury/A = new + A.Grant(i) + observers_given_action[i] = TRUE + else + for(var/i in observers_given_action) + if(observers_given_action[i] && isobserver(i)) + var/mob/dead/observer/O = i + for(var/datum/action/innate/augury/A in O.actions) + qdel(A) + observers_given_action -= i + + for(var/w in watchers) + if(!w) + watchers -= w + continue + var/mob/dead/observer/O = w + if(biggest_doom && (!O.orbiting || O.orbiting != biggest_doom)) + O.ManualFollow(biggest_doom) + +/datum/action/innate/augury + name = "Авто-отслеживание обломок" + icon_icon = 'icons/obj/meteor.dmi' + button_icon_state = "flaming" + +/datum/action/innate/augury/Destroy() + if(owner) + SSaugury.watchers -= owner + return ..() + +/datum/action/innate/augury/Activate() + SSaugury.watchers += owner + to_chat(owner, span_notice("Вы теперь автоматически отслеживаете обломки.")) + active = TRUE + +/datum/action/innate/augury/Deactivate() + SSaugury.watchers -= owner + to_chat(owner, span_notice("Вы больше не отслеживаете обломки.")) + active = FALSE diff --git a/code/controllers/subsystem/explosions.dm b/code/controllers/subsystem/explosions.dm new file mode 100644 index 00000000000..157cf9f452f --- /dev/null +++ b/code/controllers/subsystem/explosions.dm @@ -0,0 +1,476 @@ +//TODO: Flash range does nothing currently + +#define CREAK_DELAY 5 SECONDS //Time taken for the creak to play after explosion, if applicable. +#define DEVASTATION_PROB 30 //The probability modifier for devistation, maths! +#define HEAVY_IMPACT_PROB 5 //ditto +#define FAR_UPPER 60 //Upper limit for the far_volume, distance, clamped. +#define FAR_LOWER 40 //lower limit for the far_volume, distance, clamped. +#define PROB_SOUND 75 //The probability modifier for a sound to be an echo, or a far sound. (0-100) +#define SHAKE_CLAMP 2.5 //The limit for how much the camera can shake for out of view booms. +#define FREQ_UPPER 40 //The upper limit for the randomly selected frequency. +#define FREQ_LOWER 25 //The lower of the above. + +GLOBAL_LIST_EMPTY(explosions) + +SUBSYSTEM_DEF(explosions) + name = "Explosions" + init_order = INIT_ORDER_EXPLOSIONS + priority = FIRE_PRIORITY_EXPLOSIONS + wait = 1 + flags = SS_TICKER + runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME + + var/priority_queue/explosion_queue + + var/reactionary_explosions = FALSE + var/multiz_explosions = FALSE + + // Explosion sounds cache + var/sound/explosion_sound + var/sound/far_explosion_sound + var/sound/creaking_explosion_sound + var/sound/hull_creaking_sound + var/sound/explosion_echo_sound + + +/datum/controller/subsystem/explosions/Initialize() + if(CONFIG_GET(flag/multiz_explosions)) + multiz_explosions = TRUE + if(CONFIG_GET(flag/reactionary_explosions)) + reactionary_explosions = TRUE + explosion_sound = sound(get_sfx("explosion")) + far_explosion_sound = sound('sound/effects/explosionfar.ogg') + creaking_explosion_sound = sound(get_sfx("explosion_creaking")) + hull_creaking_sound = sound(get_sfx("hull_creaking")) + explosion_echo_sound = sound('sound/effects/explosion_distant.ogg') + explosion_queue = new() + return SS_INIT_SUCCESS + + +/datum/controller/subsystem/explosions/fire(resumed = 0) + while(!explosion_queue.is_empty()) + var/datum/explosion_data/data = explosion_queue.peek() + while(!data.affected_turfs_queue.is_empty()) + var/turf/T = data.affected_turfs_queue.dequeue() + if(QDELETED(T)) + continue + var/dist = HYPOTENUSE(T.x, T.y, data.x0, data.y0) + + if(reactionary_explosions) + var/turf_block + var/total_cords = "[T.x],[T.y],[T.z]" + var/prev_block + if(data.multiz_explosion) + turf_block = data.cached_turf_vert_exp_block[T] ? data.cached_turf_vert_exp_block[T] : count_turf_vert_block(T) + if(T != data.epicenter) + var/turf/next_turf = get_step_towards_multiz(T, data.epicenter) + var/next_cords = "[next_turf.x],[next_turf.y],[next_turf.z]" + if(next_turf.z != T.z) + prev_block = data.cached_exp_block[next_cords] ? data.cached_exp_block[next_cords] : count_turf_vert_block(next_turf) + else + prev_block = data.cached_exp_block[next_cords] ? data.cached_exp_block[next_cords] : count_turf_block(next_turf) + + else + turf_block = data.cached_turf_exp_block[T] ? data.cached_turf_exp_block[T] : count_turf_block(T) + + if(T != data.epicenter) + var/turf/next_turf = get_step_towards(T, data.epicenter) + var/next_cords = "[next_turf.x],[next_turf.y],[next_turf.z]" + prev_block = data.cached_exp_block[next_cords] ? data.cached_exp_block[next_cords] : count_turf_block(next_turf) + + if(T == data.epicenter) + data.cached_exp_block[total_cords] = turf_block + dist += prev_block + data.cached_exp_block[total_cords] = prev_block + turf_block + + var/flame_dist = 0 + + if(dist < data.flame_range) + flame_dist = 1 + + if(dist < data.devastation_range) dist = 1 + else if(dist < data.heavy_impact_range) dist = 2 + else if(dist < data.light_impact_range) dist = 3 + else dist = 0 + + //------- TURF FIRES ------- + + if(flame_dist && prob(40) && !isspaceturf(T) && !T.density) + new /obj/effect/hotspot(T) //Mostly for ambience! + if(dist > 0) + if(issimulatedturf(T)) + var/turf/simulated/S = T + var/affecting_level + if(dist == 1) + affecting_level = 1 + else + affecting_level = S.is_shielded() ? 2 : (S.intact ? 2 : 1) + for(var/atom/AM as anything in S) //bypass type checking since only atom can be contained by turfs anyway + if(!QDELETED(AM) && AM.simulated) + if(AM.level >= affecting_level) + AM.ex_act(dist, data.epicenter) + else + for(var/atom/AM as anything in T) //see above + if(!QDELETED(AM) && AM.simulated) + AM.ex_act(dist, data.epicenter) + if(data.breach) + T.ex_act(dist, data.epicenter) + else + T.ex_act(3, data.epicenter) + if(MC_TICK_CHECK) + return + + var/took = stop_watch(data.watch) + //You need to press the DebugGame verb to see these now....they were getting annoying and we've collected a fair bit of data. Just -test- changes to explosion code using this please so we can compare + log_world("## DEBUG: Explosion([data.x0],[data.y0],[data.z0])(d[data.devastation_range],h[data.heavy_impact_range],l[data.light_impact_range]): Took [took] seconds.") + data.log_explosions_machines(took) + qdel(explosion_queue.dequeue()) + if(MC_TICK_CHECK) + return + +/datum/controller/subsystem/explosions/proc/start_explosion(datum/explosion_data/data, adminlog, cause, smoke, silent) + if(adminlog) + data.explosion_log(cause) + if(!silent) + data.play_sounds_and_shake() + data.create_effect(smoke) + data.enqueue_affected_turfs(reactionary_explosions) + explosion_queue.enqueue(data, data.affected_turfs_queue.count) + +/datum/controller/subsystem/explosions/proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = TRUE, ignorecap = FALSE, flame_range = 0, silent = FALSE, smoke = TRUE, cause = null, breach = TRUE, protect_epicenter, explosion_direction, explosion_arc) + if(!epicenter) + return FALSE + + var/datum/explosion_data/data = new(epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, ignorecap, flame_range, breach, multiz_explosions, protect_epicenter, explosion_direction, explosion_arc) + INVOKE_ASYNC(src, PROC_REF(start_explosion), data, adminlog, cause, smoke, silent) + + return TRUE + + +/proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog, ignorecap, flame_range, silent, smoke, cause, breach, protect_epicenter = FALSE, explosion_direction = 0, explosion_arc = 360) + SSexplosions.explosion(epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog, ignorecap, flame_range, silent, smoke, cause, breach, protect_epicenter, explosion_direction, explosion_arc) + +/* +* DON'T USE THIS!!! It is not processed by the system and has no radius restrictions. +*/ +/proc/secondaryexplosion(turf/epicenter, range) + for(var/turf/tile in prepare_explosion_turfs(range, epicenter)) + tile.ex_act(2, epicenter) + +/datum/explosion_data + var/orig_dev_range + var/orig_heavy_range + var/orig_light_range + var/orig_max_distance + + var/turf/epicenter + + var/max_range + var/x0 + var/y0 + var/z0 + var/min_z + var/max_z + var/far_dist = 0 + var/flame_range + var/flash_range + var/devastation_range + var/heavy_impact_range + var/light_impact_range + var/explosion_direction = 0 + var/explosion_arc = 360 + var/protect_epicenter = FALSE + var/breach + var/multiz_explosion = FALSE + var/queue/affected_turfs_queue = new() + var/list/cached_turf_exp_block = list() + var/list/cached_turf_vert_exp_block = list() + var/list/cached_exp_block = list() + var/list/epicenter_list = list() + var/watch + +/datum/explosion_data/New(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, ignorecap = FALSE, flame_range = 0, breach = TRUE, multiz = FALSE, protect_epicenter = FALSE, explosion_direction = 0, explosion_arc = 360) + . = ..() + src.epicenter = get_turf(epicenter) + src.flame_range = flame_range + src.flash_range = flash_range + src.devastation_range = devastation_range + src.heavy_impact_range = heavy_impact_range + src.light_impact_range = light_impact_range + src.breach = breach + src.max_range = max(devastation_range, heavy_impact_range, light_impact_range, flame_range) + src.explosion_arc = explosion_arc + src.explosion_direction = explosion_direction + src.protect_epicenter = protect_epicenter + + orig_dev_range = devastation_range + orig_heavy_range = heavy_impact_range + orig_light_range = light_impact_range + + orig_max_distance = max(devastation_range, heavy_impact_range, light_impact_range, flash_range, flame_range) + + if(multiz) + var/turf/top_turf = get_highest_turf(epicenter) + var/turf/low_turf = get_lowest_turf(epicenter) + max_z = min(top_turf.z, epicenter.z + orig_max_distance) + min_z = max(low_turf.z, epicenter.z - orig_max_distance) + multiz_explosion = multiz && max_z != min_z + + x0 = epicenter.x + y0 = epicenter.y + z0 = epicenter.z + + far_dist = 0 + far_dist += heavy_impact_range * 15 + far_dist += devastation_range * 20 + if(!ignorecap) + clamp_ranges() + epicenter_list += epicenter + watch = start_watch() + +/datum/explosion_data/Destroy() + qdel(affected_turfs_queue) + LAZYCLEARLIST(epicenter_list) + LAZYNULL(epicenter_list) + LAZYCLEARLIST(cached_exp_block) + LAZYNULL(cached_exp_block) + LAZYCLEARLIST(cached_turf_exp_block) + LAZYNULL(cached_turf_exp_block) + LAZYCLEARLIST(cached_turf_vert_exp_block) + LAZYNULL(cached_turf_vert_exp_block) + . = ..() + +/datum/explosion_data/proc/clamp_ranges() + devastation_range = clamp(devastation_range, 0, GLOB.max_ex_devastation_range) + heavy_impact_range = clamp(heavy_impact_range, 0, GLOB.max_ex_heavy_range) + light_impact_range = clamp(light_impact_range, 0, GLOB.max_ex_light_range) + flash_range = clamp(flash_range, 0, GLOB.max_ex_flash_range) + flame_range = clamp(flame_range, 0, GLOB.max_ex_flame_range) + + +/datum/explosion_data/proc/create_effect(smoke) + if(heavy_impact_range > 1) + var/datum/effect_system/explosion/E + if(smoke) + E = new /datum/effect_system/explosion/smoke + else + E = new + E.set_up(epicenter) + E.start() + +/datum/explosion_data/proc/enqueue_affected_turfs(reactionary_explosions) + var/list/affected_turfs = prepare_explosion_turfs(max_range, epicenter, protect_epicenter, explosion_direction, explosion_arc, multiz_explosion, min_z, max_z) + if(reactionary_explosions) + count_reactionary_explosions(affected_turfs) + + for(var/turf in affected_turfs) + affected_turfs_queue.enqueue(turf) + +/datum/explosion_data/proc/count_reactionary_explosions(list/affected_turfs) + for(var/turf/counted_turf as anything in affected_turfs) // we cache the explosion block rating of every turf in the explosion area + cached_turf_exp_block[counted_turf] = count_turf_block(counted_turf) + if(multiz_explosion) + cached_turf_vert_exp_block[counted_turf] = count_turf_vert_block(counted_turf) + +/proc/count_turf_block(turf/counted_turf) + var/block = 0 + if(counted_turf.density && counted_turf.explosion_block) + block += counted_turf.explosion_block + + for(var/atom/object as anything in counted_turf) + var/the_block = object.explosion_block + block += the_block == EXPLOSION_BLOCK_PROC ? object.get_explosion_block() : the_block + return block + +/proc/count_turf_vert_block(turf/counted_turf) + var/block = 0 + if(counted_turf.density && counted_turf.explosion_block) + block += counted_turf.explosion_vertical_block + + for(var/atom/object as anything in counted_turf) + block += object.explosion_vertical_block + return block + +/datum/explosion_data/proc/explosion_log(cause) + var/cause_str + var/atom/cause_atom + var/cause_vv = "" + if(isatom(cause)) + cause_atom = cause + cause_str = cause_atom.name + cause_vv += ADMIN_VV(cause_atom,"VV") + else if(istext(cause)) + cause_str = cause + else if(isnull(cause)) + pass() + else + log_runtime("Bad type of cause for logging explosion.") + + message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) [cause ? "(Cause: [cause_str] [cause_vv])" : ""] [ADMIN_VERBOSEJMP(epicenter)] ") + add_game_logs("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) [cause ? "(Cause: [cause_str])" : ""] [AREACOORD(epicenter)] ") + +/datum/explosion_data/proc/log_explosions_machines(took) + //Machines which report explosions. + for(var/array in GLOB.doppler_arrays) + if(!array) + continue + if(istype(array, /obj/machinery/doppler_array)) + var/obj/machinery/doppler_array/doppler_array = array + doppler_array.sense_explosion(x0,y0,z0,devastation_range,heavy_impact_range,light_impact_range,took,orig_dev_range,orig_heavy_range,orig_light_range) + if(istype(array, /obj/item/clothing/head/helmet/space/hardsuit/rd)) + var/obj/item/clothing/head/helmet/space/hardsuit/rd/helm_array = array + helm_array.sense_explosion(x0,y0,z0,devastation_range,heavy_impact_range,light_impact_range,took,orig_dev_range,orig_heavy_range,orig_light_range) + +/* +* Play sounds; we want sounds to be different depending on distance so we will manually do it ourselves. +* Stereo users will also hear the direction of the explosion! +* Calculate far explosion sound range. Only allow the sound effect for heavy/devastating explosions. +* 3/7/14 will calculate to 80 + 35 +*/ +/datum/explosion_data/proc/play_sounds_and_shake() + var/frequency = get_rand_frequency() + var/on_station = is_station_level(epicenter.z) + var/creaking_explosion = FALSE + + if(prob(devastation_range * DEVASTATION_PROB + heavy_impact_range * HEAVY_IMPACT_PROB) && on_station) // Huge explosions are near guaranteed to make the station creak and whine, smaller ones might. + creaking_explosion = TRUE // prob over 100 always returns true + + for(var/MN in GLOB.player_list) + var/mob/M = MN + // Double check for client + var/turf/M_turf = get_turf(M) + if(M_turf && M_turf.z == z0) + var/dist = get_dist(M_turf, epicenter) + var/baseshakeamount + if(orig_max_distance - dist > 0) + baseshakeamount = sqrt((orig_max_distance - dist) * 0.1) + // If inside the blast radius + world.view - 2 + if(dist <= round(max_range + world.view - 2, 1)) + M.playsound_local(epicenter, null, 100, 1, frequency, S = SSexplosions.explosion_sound) + if(baseshakeamount > 0) + shake_camera(M, 25, clamp(baseshakeamount, 0, 10)) + // You hear a far explosion if you're outside the blast radius. Small bombs shouldn't be heard all over the station. + else if(dist <= far_dist) + var/far_volume = clamp(far_dist / 2, FAR_LOWER, FAR_UPPER) // Volume is based on explosion size and dist + if(creaking_explosion) + M.playsound_local(epicenter, null, far_volume, 1, frequency, S = SSexplosions.creaking_explosion_sound, distance_multiplier = 0) + else if(prob(PROB_SOUND)) // Sound variety during meteor storm/tesloose/other bad event + M.playsound_local(epicenter, null, far_volume, 1, frequency, S = SSexplosions.far_explosion_sound, distance_multiplier = 0) // Far sound + else + M.playsound_local(epicenter, null, far_volume, 1, frequency, S = SSexplosions.explosion_echo_sound, distance_multiplier = 0) // Echo sound + + if(baseshakeamount > 0 || devastation_range) + if(!baseshakeamount) // Devastating explosions rock the station and ground + baseshakeamount = devastation_range * 3 + shake_camera(M, 10, clamp(baseshakeamount * 0.25, 0, SHAKE_CLAMP)) + else if(!isspaceturf(get_turf(M)) && heavy_impact_range) // Big enough explosions echo throughout the hull + var/echo_volume = 40 + if(devastation_range) + baseshakeamount = devastation_range + shake_camera(M, 10, clamp(baseshakeamount * 0.25, 0, SHAKE_CLAMP)) + echo_volume = 60 + M.playsound_local(epicenter, null, echo_volume, 1, frequency, S = SSexplosions.explosion_echo_sound, distance_multiplier = 0) + + if(creaking_explosion) // 5 seconds after the bang, the station begins to creak + addtimer(CALLBACK(M, TYPE_PROC_REF(/mob, playsound_local), epicenter, null, rand(FREQ_LOWER, FREQ_UPPER), 1, frequency, null, null, FALSE, SSexplosions.hull_creaking_sound, 0), CREAK_DELAY) + +/// Returns a list of turfs in X range from the epicenter +/// Returns in a unique order, spiraling outwards +/// This is done to ensure our progressive cache of blast resistance is always valid +/// This is quite fast +/proc/prepare_explosion_turfs(range, turf/epicenter, protect_epicenter, explosion_direction = 0, explosion_arc = 360, multiz = FALSE, min_z, max_z) + var/list/outlist = list() + var/list/candidates = list() + + var/our_x = epicenter.x + var/our_y = epicenter.y + var/our_z = epicenter.z + + if(!multiz) + min_z = our_z + max_z = our_z + + var/max_x = world.maxx + var/max_y = world.maxy + + // Work out the angles to explode between + var/first_angle_limit = WRAP(explosion_direction - explosion_arc * 0.5, 0, 360) + var/second_angle_limit = WRAP(explosion_direction + explosion_arc * 0.5, 0, 360) + + // Get everything in the right order + var/lower_angle_limit + var/upper_angle_limit + var/do_directional + var/reverse_angle + + // Work out which case we're in + if(first_angle_limit == second_angle_limit) // CASE A: FULL CIRCLE + do_directional = FALSE + else if(first_angle_limit < second_angle_limit) // CASE B: When the arc does not cross 0 degrees + lower_angle_limit = first_angle_limit + upper_angle_limit = second_angle_limit + do_directional = TRUE + reverse_angle = FALSE + else if (first_angle_limit > second_angle_limit) // CASE C: When the arc crosses 0 degrees + lower_angle_limit = second_angle_limit + upper_angle_limit = first_angle_limit + do_directional = TRUE + reverse_angle = TRUE + + if(!protect_epicenter) + if(!do_directional) + candidates += epicenter + else + outlist += epicenter + + for(var/i in 1 to range) + var/lowest_x = our_x - i + var/lowest_y = our_y - i + var/lowest_z = our_z - i + var/highest_x = our_x + i + var/highest_y = our_y + i + var/highest_z = our_z + i + // top left to one before top right + if(highest_y <= max_y) + candidates += block(lowest_x, highest_y, min_z, + highest_x - 1, highest_y, max_z) + // top right to one before bottom right + if(highest_x <= max_x) + candidates += block(highest_x, highest_y, min_z, + highest_x, lowest_y + 1, max_z) + + if(multiz && highest_z <= max_z) + candidates += block(lowest_x + 1, highest_y - 1, max_z, + highest_x - 1, lowest_y + 1, max_z) + + // bottom right to one before bottom left + if(lowest_y >= 1) + candidates += block(highest_x, lowest_y, min_z, + lowest_x + 1, lowest_y, max_z) + // bottom left to one before top left + if(lowest_x >= 1) + candidates += block(lowest_x, lowest_y, min_z, + lowest_x, highest_y - 1, max_z) + + if(multiz && lowest_z >= min_z) + candidates += block(lowest_x + 1, highest_y - 1, min_z, + highest_x - 1, lowest_y + 1, max_z) + + if(!do_directional) + outlist = candidates + else + for(var/turf/candidate as anything in candidates) + var/angle = get_angle(epicenter, candidate) + if(ISINRANGE(angle, lower_angle_limit, upper_angle_limit) ^ reverse_angle) + outlist += candidate + return outlist + +#undef CREAK_DELAY +#undef DEVASTATION_PROB +#undef HEAVY_IMPACT_PROB +#undef FAR_UPPER +#undef FAR_LOWER +#undef PROB_SOUND +#undef SHAKE_CLAMP +#undef FREQ_UPPER +#undef FREQ_LOWER diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 50ac31c5c6a..835fb188f6d 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -718,10 +718,17 @@ SUBSYSTEM_DEF(mapping) true_to_offset_planes[string_real] |= offset_plane -/proc/generate_lighting_appearance_by_z(z_level) +/datum/controller/subsystem/mapping/proc/generate_lighting_appearance_by_z(z_level) if(length(GLOB.default_lighting_underlays_by_z) < z_level) GLOB.default_lighting_underlays_by_z.len = z_level GLOB.default_lighting_underlays_by_z[z_level] = mutable_appearance(LIGHTING_ICON, "transparent_lighting_object", z_level * 0.01, null, LIGHTING_PLANE, 255, RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM, offset_const = GET_Z_PLANE_OFFSET(z_level)) +/// Takes a turf or a z level, and returns a list of all the z levels that are connected to it +/datum/controller/subsystem/mapping/proc/get_connected_levels(turf/connected) + var/z_level = connected + if(isturf(z_level)) + z_level = connected.z + return z_level_to_stack[z_level] + /datum/controller/subsystem/mapping/Recover() flags |= SS_NO_INIT diff --git a/code/controllers/subsystem/holomap.dm b/code/controllers/subsystem/non-firing/holomap.dm similarity index 100% rename from code/controllers/subsystem/holomap.dm rename to code/controllers/subsystem/non-firing/holomap.dm diff --git a/code/datums/browser.dm b/code/datums/browser.dm index 283ac697258..571a5b50821 100644 --- a/code/datums/browser.dm +++ b/code/datums/browser.dm @@ -5,37 +5,43 @@ var/window_id var/width = 0 var/height = 0 - /// UID of the host atom - var/atom_uid = null + /// weakref of the host atom + var/datum/weakref/ref = null /// Various options to control elements such as titlebar buttons for the window - var/list/window_options = list("focus=0;can_close=1;can_minimize=1;can_maximize=0;can_resize=1;titlebar=1;") // window option is set using window_id + var/window_options = "focus=0;can_close=1;can_minimize=1;can_maximize=0;can_resize=1;titlebar=1;" // window option is set using window_id /// Assoc list of stylesheets for use by the datum var/stylesheets[0] /// Assoc list of script files for use by the datum var/scripts[0] /// Should default stylesheets be loaded var/include_default_stylesheet = TRUE + var/head_elements + var/body_elements /// Header HTML content of the browser datum var/list/head_content = list() /// HTML content of the browser datum var/list/content = list() - -/datum/browser/New(nuser, nwindow_id, ntitle = 0, nwidth = 0, nheight = 0, atom/atom = null) +/datum/browser/New(nuser, nwindow_id, ntitle = 0, nwidth = 0, nheight = 0, atom/nref = null) user = nuser + RegisterSignal(user, COMSIG_QDELETING, PROC_REF(user_deleted)) window_id = nwindow_id - if(ntitle) + if (ntitle) title = format_text(ntitle) - if(nwidth) + if (nwidth) width = nwidth - if(nheight) + if (nheight) height = nheight - if(atom) - atom_uid = atom.UID() + if (nref) + ref = WEAKREF(nref) /datum/browser/proc/set_title(ntitle) title = islist(ntitle) ? ntitle : list(ntitle) +/datum/browser/proc/user_deleted(datum/source) + SIGNAL_HANDLER + user = null + /datum/browser/proc/add_head_content(nhead_content) head_content = islist(nhead_content) ? nhead_content : list(nhead_content) @@ -43,7 +49,7 @@ window_options = islist(nwindow_options) ? nwindow_options : list(nwindow_options) /datum/browser/proc/add_stylesheet(name, file) - if(istype(name, /datum/asset/spritesheet)) + if (istype(name, /datum/asset/spritesheet)) var/datum/asset/spritesheet/sheet = name stylesheets["spritesheet_[sheet.name].css"] = "data/spritesheets/[sheet.name]" else @@ -51,7 +57,7 @@ stylesheets[asset_name] = file - if(!SSassets.cache[asset_name]) + if (!SSassets.cache[asset_name]) SSassets.transport.register_asset(asset_name, file) /datum/browser/proc/add_scss_stylesheet(name, file) @@ -72,13 +78,15 @@ content += ncontent /datum/browser/proc/get_header() + var/file if(include_default_stylesheet) - head_content += "" - - for(var/file in stylesheets) + var/datum/asset/simple/namespaced/common/common_asset = get_asset_datum(/datum/asset/simple/namespaced/common) + head_content += "" + for (file in stylesheets) head_content += "" - for(var/file in scripts) + + for (file in scripts) head_content += "" return {" @@ -93,7 +101,7 @@ [title ? "