diff --git a/_maps/map_files/Cerestation/cerestation.dmm b/_maps/map_files/Cerestation/cerestation.dmm index 0bcbf8da32a..d4fa3ec8773 100644 --- a/_maps/map_files/Cerestation/cerestation.dmm +++ b/_maps/map_files/Cerestation/cerestation.dmm @@ -1,5 +1,4 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -//Model dictionary trimmed on: 12-05-2017 18:47 (UTC) "aaa" = ( /turf/open/space, /area/space) @@ -295,14 +294,14 @@ "aaQ" = ( /turf/closed/wall, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "aaR" = ( /obj/structure/window/reinforced/fulltile, /obj/structure/grille, /turf/open/floor/plating, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "aaS" = ( /turf/closed/wall{ @@ -414,7 +413,7 @@ }, /turf/open/floor/plating/airless, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "abf" = ( /obj/structure/disposalpipe/segment{ @@ -422,7 +421,7 @@ }, /turf/closed/wall, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "abg" = ( /obj/structure/disposalpipe/trunk{ @@ -433,7 +432,7 @@ }, /turf/open/floor/plating, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "abh" = ( /obj/machinery/conveyor/auto{ @@ -448,7 +447,7 @@ }, /turf/open/floor/plating, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "abi" = ( /obj/machinery/conveyor/auto{ @@ -457,7 +456,7 @@ }, /turf/open/floor/plating, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "abj" = ( /obj/machinery/conveyor/auto{ @@ -469,7 +468,7 @@ }, /turf/open/floor/plating, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "abk" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -480,7 +479,7 @@ }, /turf/open/floor/plating, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "abl" = ( /obj/machinery/light{ @@ -591,7 +590,7 @@ }, /turf/open/floor/plating, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "abu" = ( /obj/effect/turf_decal/stripes/line{ @@ -599,7 +598,7 @@ }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "abv" = ( /obj/effect/turf_decal/stripes/line{ @@ -607,7 +606,7 @@ }, /turf/open/floor/plating, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "abw" = ( /obj/machinery/conveyor/auto{ @@ -616,7 +615,7 @@ }, /turf/open/floor/plating, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "abx" = ( /obj/structure/showcase{ @@ -724,7 +723,7 @@ "abF" = ( /turf/closed/wall/rust, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "abG" = ( /obj/machinery/light/small, @@ -732,7 +731,7 @@ /obj/item/weapon/storage/toolbox/emergency, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "abH" = ( /obj/structure/rack, @@ -740,7 +739,7 @@ /obj/item/weapon/tank/internals/emergency_oxygen, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "abI" = ( /obj/structure/cable/orange{ @@ -759,7 +758,7 @@ }, /turf/open/floor/plating, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "abJ" = ( /obj/structure/cable/orange{ @@ -769,7 +768,7 @@ }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "abK" = ( /obj/effect/turf_decal/stripes/line{ @@ -777,7 +776,7 @@ }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "abL" = ( /obj/structure/disposalpipe/trunk, @@ -787,7 +786,7 @@ }, /turf/open/floor/plating, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "abM" = ( /obj/machinery/porta_turret/ai{ @@ -895,13 +894,13 @@ }, /turf/open/floor/plating, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "abY" = ( /obj/structure/disposalpipe/segment, /turf/closed/wall, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "abZ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -1025,7 +1024,7 @@ }, /turf/open/floor/plating, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "acl" = ( /obj/machinery/disposal/deliveryChute, @@ -1034,7 +1033,7 @@ }, /turf/open/floor/plating/airless, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "acm" = ( /obj/docking_port/stationary{ @@ -1119,7 +1118,7 @@ }, /turf/open/floor/plating, /area/maintenance/disposal{ - name = "Northen External Waste Belt" + name = "Northern External Waste Belt" }) "acu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -1800,7 +1799,7 @@ /area/shuttle/syndicate) "adP" = ( /turf/closed/mineral, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "adQ" = ( @@ -2048,8 +2047,8 @@ /area/shuttle/syndicate) "aep" = ( /turf/closed/mineral/random/labormineral, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aeq" = ( /turf/open/floor/plasteel/darkred/side{ @@ -2267,7 +2266,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aeK" = ( @@ -2433,7 +2432,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "afb" = ( @@ -2441,12 +2440,12 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "afc" = ( /turf/open/floor/plating/asteroid, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "afd" = ( @@ -2502,7 +2501,7 @@ /area/ai_monitored/security/armory) "afi" = ( /turf/closed/wall, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "afj" = ( @@ -2517,7 +2516,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "afk" = ( @@ -2528,7 +2527,7 @@ /obj/structure/disposalpipe/trunk, /obj/structure/disposalpipe/trunk, /turf/open/floor/plating/airless, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "afl" = ( @@ -2668,8 +2667,8 @@ /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/asteroid, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "afx" = ( /obj/machinery/vending/sustenance, @@ -2762,7 +2761,7 @@ /turf/closed/wall/rust{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "afF" = ( @@ -2777,20 +2776,20 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "afG" = ( /obj/structure/disposalpipe/segment, /turf/closed/wall, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "afH" = ( /turf/closed/wall{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "afI" = ( @@ -2799,7 +2798,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "afJ" = ( @@ -3083,7 +3082,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ago" = ( @@ -3093,7 +3092,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "agp" = ( @@ -3104,7 +3103,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "agq" = ( @@ -3117,7 +3116,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "agr" = ( @@ -3133,7 +3132,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ags" = ( @@ -3146,7 +3145,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "agt" = ( @@ -3159,7 +3158,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "agu" = ( @@ -3172,7 +3171,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "agv" = ( @@ -3185,7 +3184,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "agw" = ( @@ -3200,7 +3199,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "agx" = ( @@ -3217,7 +3216,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "agy" = ( @@ -3230,7 +3229,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "agz" = ( @@ -3241,7 +3240,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "agA" = ( @@ -3254,7 +3253,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "agB" = ( @@ -3264,7 +3263,7 @@ /turf/closed/wall{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "agC" = ( @@ -3275,7 +3274,7 @@ dir = 8 }, /turf/open/floor/plating/airless, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "agD" = ( @@ -3287,7 +3286,7 @@ }, /turf/open/floor/plating/airless, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "agE" = ( /obj/structure/disposalpipe/trunk{ @@ -3300,7 +3299,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "agF" = ( /obj/machinery/conveyor/auto{ @@ -3311,7 +3310,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "agG" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -3324,7 +3323,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "agH" = ( /obj/machinery/message_server, @@ -3613,7 +3612,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ahe" = ( @@ -3624,7 +3623,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ahf" = ( @@ -3634,7 +3633,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ahg" = ( @@ -3645,7 +3644,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ahh" = ( @@ -3656,7 +3655,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ahi" = ( @@ -3667,7 +3666,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ahj" = ( @@ -3679,7 +3678,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ahk" = ( @@ -3690,7 +3689,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ahl" = ( @@ -3699,7 +3698,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ahm" = ( @@ -3710,7 +3709,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ahn" = ( @@ -3721,7 +3720,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aho" = ( @@ -3734,7 +3733,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ahp" = ( @@ -3745,7 +3744,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ahq" = ( @@ -3757,7 +3756,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ahr" = ( @@ -3769,7 +3768,7 @@ }, /turf/open/floor/plating, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "ahs" = ( /obj/effect/turf_decal/stripes/line{ @@ -3777,7 +3776,7 @@ }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aht" = ( /obj/effect/turf_decal/stripes/line{ @@ -3785,7 +3784,7 @@ }, /turf/open/floor/plating, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "ahu" = ( /obj/machinery/conveyor/auto{ @@ -3796,7 +3795,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "ahv" = ( /obj/machinery/telecomms/server/presets/supply, @@ -3995,7 +3994,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ahR" = ( @@ -4006,7 +4005,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ahS" = ( @@ -4018,7 +4017,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ahT" = ( @@ -4029,7 +4028,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ahU" = ( @@ -4045,7 +4044,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ahV" = ( @@ -4058,12 +4057,12 @@ }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "ahW" = ( /turf/open/floor/plasteel/floorgrime, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "ahX" = ( /obj/effect/turf_decal/stripes/line{ @@ -4071,7 +4070,7 @@ }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "ahY" = ( /obj/machinery/telecomms/server/presets/service, @@ -4373,7 +4372,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aiB" = ( /obj/structure/cable/orange{ @@ -4385,7 +4384,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aiC" = ( @@ -4394,7 +4393,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aiD" = ( @@ -4406,7 +4405,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aiE" = ( @@ -4416,7 +4415,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aiF" = ( @@ -4427,19 +4426,19 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aiG" = ( /obj/structure/table, /turf/open/floor/plasteel/floorgrime, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aiH" = ( /turf/open/floor/plating, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aiI" = ( /obj/machinery/conveyor/auto{ @@ -4450,7 +4449,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aiJ" = ( /obj/machinery/conveyor/auto{ @@ -4462,7 +4461,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aiK" = ( /obj/machinery/conveyor/auto{ @@ -4474,7 +4473,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aiL" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -4484,7 +4483,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aiM" = ( /obj/machinery/light, @@ -4578,16 +4577,16 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aiX" = ( /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aiY" = ( /obj/machinery/light/small{ @@ -4598,16 +4597,16 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aiZ" = ( /obj/structure/table, /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aja" = ( /obj/structure/table, @@ -4616,14 +4615,14 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "ajb" = ( /obj/structure/closet/crate, /turf/open/floor/plating/asteroid, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "ajc" = ( /obj/machinery/light/small{ @@ -4633,8 +4632,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "ajd" = ( /obj/machinery/camera{ @@ -4778,7 +4777,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ajt" = ( @@ -4790,7 +4789,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aju" = ( @@ -4798,13 +4797,13 @@ /obj/item/weapon/storage/toolbox/emergency, /turf/open/floor/plating, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "ajv" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/floorgrime, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "ajw" = ( /obj/effect/turf_decal/stripes/corner{ @@ -4813,7 +4812,7 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/floorgrime, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "ajx" = ( /obj/machinery/light/small{ @@ -4824,7 +4823,7 @@ }, /turf/open/floor/plating, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "ajy" = ( /obj/structure/disposalpipe/trunk{ @@ -4837,7 +4836,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "ajz" = ( /obj/structure/disposaloutlet{ @@ -5064,22 +5063,22 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "ajW" = ( /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "ajX" = ( /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "ajY" = ( /obj/structure/bed, @@ -5203,7 +5202,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "akl" = ( @@ -5227,7 +5226,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "ako" = ( /turf/closed/wall{ @@ -5442,8 +5441,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "akH" = ( /obj/effect/turf_decal/stripes/asteroid/line{ @@ -5453,16 +5452,16 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "akI" = ( /obj/structure/barricade/wooden, /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "akJ" = ( /obj/effect/turf_decal/stripes/asteroid/line{ @@ -5472,8 +5471,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "akK" = ( /obj/structure/disposalpipe/segment, @@ -5481,7 +5480,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "akL" = ( @@ -5573,8 +5572,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "akU" = ( /obj/structure/curtain, @@ -5603,8 +5602,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "akX" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -5801,7 +5800,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "alu" = ( @@ -5812,7 +5811,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "alv" = ( @@ -5820,7 +5819,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "alw" = ( @@ -5828,7 +5827,7 @@ dir = 1 }, /turf/open/floor/plating/asteroid, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "alx" = ( @@ -5836,7 +5835,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aly" = ( @@ -5845,7 +5844,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "alz" = ( @@ -5918,7 +5917,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "alH" = ( /turf/open/floor/plasteel/neutral{ @@ -6336,7 +6335,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "amn" = ( @@ -6348,8 +6347,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "amo" = ( /obj/structure/cable/orange{ @@ -6364,7 +6363,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "amp" = ( @@ -6379,7 +6378,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "amq" = ( @@ -6395,7 +6394,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "amr" = ( @@ -6411,7 +6410,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ams" = ( @@ -6427,7 +6426,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "amt" = ( @@ -6747,7 +6746,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ane" = ( @@ -6763,7 +6762,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "anf" = ( @@ -6779,7 +6778,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ang" = ( @@ -6800,7 +6799,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "anh" = ( @@ -6812,7 +6811,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ani" = ( @@ -6932,8 +6931,8 @@ "ans" = ( /obj/structure/closet/firecloset/full, /turf/open/floor/plating/asteroid, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "ant" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -6992,7 +6991,7 @@ "anA" = ( /obj/structure/rack, /obj/item/weapon/shovel, -/obj/item/clothing/glasses/material/mining, +/obj/item/clothing/glasses/meson, /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -7220,7 +7219,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "anU" = ( @@ -7233,7 +7232,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "anV" = ( @@ -7244,7 +7243,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "anW" = ( @@ -7255,7 +7254,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "anX" = ( @@ -7271,7 +7270,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "anY" = ( @@ -7284,7 +7283,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "anZ" = ( @@ -7292,7 +7291,7 @@ dir = 4 }, /turf/open/floor/plating/asteroid, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aoa" = ( @@ -7471,8 +7470,8 @@ dir = 8 }, /turf/open/floor/plating/asteroid, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "aos" = ( /obj/structure/cable/orange{ @@ -7483,8 +7482,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "aot" = ( /obj/structure/cable/orange{ @@ -7500,8 +7499,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "aou" = ( /obj/machinery/power/apc{ @@ -7761,7 +7760,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aoU" = ( @@ -7773,8 +7772,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "aoV" = ( /turf/closed/wall{ @@ -7792,13 +7791,13 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aoX" = ( /obj/structure/grille, /turf/open/floor/plating/asteroid, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aoY" = ( @@ -7953,8 +7952,8 @@ "apo" = ( /obj/structure/grille/broken, /turf/open/floor/plating/asteroid, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "app" = ( /obj/structure/cable/orange{ @@ -7966,8 +7965,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "apq" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -8022,22 +8021,17 @@ }, /area/quartermaster/miningdock) "apx" = ( -/obj/machinery/power/apc{ - dir = 4; - name = "Cell Block APC"; - pixel_x = 23; - pixel_y = 2 - }, -/obj/structure/cable/orange, -/obj/effect/turf_decal/stripes/end{ - tag = "icon-warn_end (WEST)"; - icon_state = "warn_end"; - dir = 8 +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/security/prison) +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) "apy" = ( /obj/structure/bed, /obj/machinery/camera{ @@ -8183,7 +8177,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "apK" = ( @@ -8197,8 +8191,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "apL" = ( /obj/machinery/power/apc{ @@ -8221,8 +8215,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "apN" = ( /obj/machinery/light/small{ @@ -8276,7 +8270,7 @@ /obj/effect/spawner/lootdrop/maintenance, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/asteroid, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "apT" = ( @@ -8400,14 +8394,14 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aqh" = ( /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating/asteroid, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aqi" = ( /obj/structure/lattice/catwalk, @@ -8464,8 +8458,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "aqo" = ( /obj/machinery/camera{ @@ -8662,7 +8656,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aqL" = ( @@ -8672,7 +8666,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aqM" = ( @@ -8756,7 +8750,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aqV" = ( /obj/structure/lattice/catwalk, @@ -9082,7 +9076,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "arz" = ( @@ -9533,7 +9527,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "ast" = ( @@ -9549,7 +9543,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "asu" = ( @@ -9562,7 +9556,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "asv" = ( @@ -9639,7 +9633,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "asF" = ( @@ -10098,7 +10092,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "atz" = ( @@ -10106,7 +10100,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "atA" = ( @@ -10115,7 +10109,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "atB" = ( @@ -10237,7 +10231,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "atM" = ( @@ -10247,7 +10241,7 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "atN" = ( @@ -10359,7 +10353,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "atZ" = ( /obj/structure/closet/crate/medical, @@ -10546,16 +10540,16 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aut" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "auu" = ( /obj/effect/turf_decal/stripes/line, @@ -10627,7 +10621,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "auB" = ( @@ -10635,8 +10629,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "auC" = ( /obj/structure/girder, @@ -10644,8 +10638,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "auD" = ( /obj/structure/cable/orange{ @@ -10660,7 +10654,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "auE" = ( @@ -10674,7 +10668,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "auF" = ( @@ -11239,8 +11233,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "avD" = ( /obj/machinery/door/airlock/maintenance{ @@ -11250,8 +11244,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "avE" = ( /obj/machinery/airalarm{ @@ -11380,8 +11374,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "avP" = ( /obj/structure/cable/orange{ @@ -11398,7 +11392,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "avQ" = ( @@ -11483,7 +11477,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "avZ" = ( @@ -11700,7 +11694,7 @@ "awt" = ( /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/asteroid, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "awu" = ( @@ -11822,8 +11816,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "awJ" = ( /obj/effect/turf_decal/stripes/line{ @@ -11832,8 +11826,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "awK" = ( /obj/machinery/status_display{ @@ -11967,7 +11961,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "awX" = ( @@ -11978,7 +11972,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "awY" = ( @@ -12264,15 +12258,15 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "axF" = ( /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "axG" = ( /obj/structure/closet/bombcloset, @@ -12504,8 +12498,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" }) "axV" = ( /obj/structure/cable/orange{ @@ -12522,7 +12516,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "axW" = ( @@ -12540,7 +12534,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "axX" = ( @@ -12556,7 +12550,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "axY" = ( @@ -12571,7 +12565,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "axZ" = ( @@ -12584,7 +12578,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aya" = ( @@ -12880,7 +12874,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "ayG" = ( /obj/structure/closet, @@ -12892,7 +12886,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "ayH" = ( /obj/structure/table, @@ -12901,7 +12895,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "ayI" = ( /obj/machinery/power/apc{ @@ -12922,8 +12916,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "ayJ" = ( /obj/structure/cable/orange{ @@ -12940,8 +12934,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "ayK" = ( /obj/structure/closet/crate/internals, @@ -13166,8 +13160,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "azg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -13182,8 +13176,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "azh" = ( /obj/machinery/vending/security, @@ -13289,7 +13283,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "azs" = ( @@ -13305,7 +13299,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "azt" = ( @@ -13321,7 +13315,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "azu" = ( @@ -13337,7 +13331,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "azv" = ( @@ -13351,7 +13345,7 @@ }, /obj/machinery/power/apc{ dir = 4; - name = "Fore Maintenance APC"; + name = "Fore Maintenance North APC"; pixel_x = 23; pixel_y = 2 }, @@ -13367,7 +13361,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "azw" = ( @@ -13674,7 +13668,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "azZ" = ( /obj/machinery/light/small, @@ -13871,8 +13865,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aAu" = ( /obj/machinery/power/apc{ @@ -14131,14 +14125,14 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aAQ" = ( /turf/closed/wall/r_wall{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aAR" = ( @@ -14151,7 +14145,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aAS" = ( @@ -14164,7 +14158,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aAT" = ( /obj/structure/cable/orange{ @@ -14180,7 +14174,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aAU" = ( @@ -14192,7 +14186,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aAV" = ( @@ -14384,7 +14378,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aBn" = ( /obj/structure/closet/crate, @@ -14393,8 +14387,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "aBo" = ( /obj/structure/grille, @@ -14464,16 +14458,16 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aBv" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aBw" = ( /obj/structure/table, @@ -14598,7 +14592,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aBI" = ( @@ -14612,7 +14606,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aBJ" = ( @@ -14624,7 +14618,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aBK" = ( @@ -15086,8 +15080,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aCF" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -15100,8 +15094,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aCG" = ( /obj/structure/reagent_dispensers/peppertank{ @@ -15362,7 +15356,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aDf" = ( @@ -15379,7 +15373,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aDg" = ( @@ -15594,7 +15588,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aDA" = ( /obj/structure/cable/orange{ @@ -15606,8 +15600,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "aDB" = ( /obj/structure/cable/orange{ @@ -15619,8 +15613,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "aDC" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -15782,8 +15776,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aDP" = ( /obj/structure/cable/orange{ @@ -15803,8 +15797,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aDQ" = ( /obj/structure/cable/orange{ @@ -16178,7 +16172,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aEq" = ( @@ -16191,7 +16185,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aEr" = ( @@ -16234,7 +16228,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aEt" = ( @@ -16243,7 +16237,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aEu" = ( @@ -16743,8 +16737,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aFl" = ( /obj/structure/disposalpipe/segment, @@ -16757,8 +16751,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aFm" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -17601,8 +17595,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aGG" = ( /turf/closed/wall/r_wall{ @@ -17976,7 +17970,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aHq" = ( /obj/machinery/power/apc{ @@ -17985,8 +17979,8 @@ pixel_y = -24 }, /turf/closed/mineral, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "aHr" = ( /obj/structure/table, @@ -18115,8 +18109,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aHB" = ( /obj/structure/closet/secure_closet/detective, @@ -18705,8 +18699,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aIH" = ( /obj/structure/cable/orange{ @@ -18721,8 +18715,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aII" = ( /obj/structure/cable/orange{ @@ -18737,8 +18731,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aIJ" = ( /obj/structure/cable/orange{ @@ -18759,7 +18753,9 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/security/detectives_office) +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) "aIK" = ( /obj/machinery/airalarm{ dir = 4; @@ -18932,7 +18928,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aJc" = ( @@ -19111,7 +19107,7 @@ }, /obj/machinery/power/apc{ dir = 8; - name = "Fore Asteroid Maintenance APC"; + name = "Fore Asteroid Maintenance East APC"; pixel_x = -23; pixel_y = 2 }, @@ -19124,7 +19120,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aJv" = ( /turf/closed/wall{ @@ -19301,22 +19297,22 @@ /obj/effect/spawner/lootdrop/maintenance, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/asteroid, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "aJM" = ( /obj/structure/closet/emcloset, /turf/open/floor/plating/asteroid, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aJN" = ( /obj/machinery/light/small, /obj/structure/closet/crate, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/asteroid, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aJO" = ( /obj/structure/table/wood, @@ -19704,8 +19700,8 @@ dir = 1 }, /turf/open/floor/plating/airless, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aKA" = ( /obj/structure/table/wood, @@ -20083,7 +20079,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aLj" = ( /obj/machinery/camera{ @@ -20095,7 +20091,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aLk" = ( /obj/structure/cable/orange{ @@ -20110,7 +20106,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aLl" = ( /obj/machinery/power/smes/engineering, @@ -20122,7 +20118,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aLm" = ( /obj/structure/table, @@ -20328,8 +20324,8 @@ /turf/closed/wall{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aLD" = ( /obj/structure/cable/orange{ @@ -20343,7 +20339,7 @@ }, /obj/machinery/power/apc{ dir = 8; - name = "Fore Maintenance APC"; + name = "Fore Maintenance West APC"; pixel_x = -25; pixel_y = 1 }, @@ -20355,8 +20351,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aLE" = ( /obj/structure/cable/orange{ @@ -20367,8 +20363,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aLF" = ( /obj/structure/cable/orange{ @@ -20385,8 +20381,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aLG" = ( /obj/structure/cable/orange{ @@ -20402,8 +20398,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aLH" = ( /obj/structure/rack, @@ -20660,7 +20656,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aMg" = ( /obj/structure/cable{ @@ -20672,7 +20668,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aMh" = ( /obj/structure/cable{ @@ -20685,7 +20681,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aMi" = ( /obj/structure/cable{ @@ -20703,7 +20699,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aMj" = ( /obj/machinery/power/terminal{ @@ -20718,7 +20714,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aMk" = ( /obj/item/chair, @@ -20831,8 +20827,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "aMt" = ( /obj/structure/cable/orange{ @@ -20848,8 +20844,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "aMu" = ( /obj/machinery/power/apc{ @@ -20870,16 +20866,16 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "aMv" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aMw" = ( /obj/structure/cable/orange{ @@ -20891,8 +20887,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aMx" = ( /obj/structure/cable/orange{ @@ -20907,8 +20903,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aMy" = ( /obj/machinery/door/airlock/maintenance{ @@ -20923,8 +20919,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aMz" = ( /obj/structure/cable/orange{ @@ -20943,8 +20939,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aMA" = ( /obj/machinery/power/terminal{ @@ -20960,8 +20956,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aMB" = ( /obj/structure/table/wood, @@ -21136,7 +21132,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aMT" = ( @@ -21285,7 +21281,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aNf" = ( /obj/structure/cable/orange{ @@ -21308,7 +21304,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aNg" = ( /obj/structure/cable/orange{ @@ -21320,7 +21316,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aNh" = ( /obj/structure/cable/orange{ @@ -21332,8 +21328,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "aNi" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -21545,15 +21541,15 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "aNy" = ( /obj/structure/closet, /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aNz" = ( @@ -21564,7 +21560,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aNA" = ( /obj/structure/girder, @@ -21572,7 +21568,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aNB" = ( @@ -21583,8 +21579,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aNC" = ( /obj/machinery/door/airlock/maintenance{ @@ -21594,8 +21590,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aND" = ( /obj/effect/turf_decal/stripes/line{ @@ -21609,8 +21605,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aNE" = ( /obj/structure/cable{ @@ -21627,8 +21623,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aNF" = ( /obj/machinery/status_display{ @@ -21752,7 +21748,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aNP" = ( @@ -21857,7 +21853,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aOa" = ( /obj/machinery/door/airlock/maintenance{ @@ -21873,7 +21869,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aOb" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -21998,8 +21994,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "aOk" = ( /obj/machinery/door/firedoor, @@ -22054,8 +22050,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aOp" = ( /obj/structure/disposalpipe/sortjunction{ @@ -22067,8 +22063,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aOq" = ( /obj/structure/disposalpipe/segment{ @@ -22079,8 +22075,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aOr" = ( /obj/structure/disposalpipe/segment{ @@ -22092,7 +22088,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aOs" = ( @@ -22106,8 +22102,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aOt" = ( /obj/structure/disposalpipe/segment{ @@ -22120,8 +22116,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aOu" = ( /obj/structure/cable{ @@ -22137,8 +22133,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aOv" = ( /obj/structure/cable/orange{ @@ -23324,7 +23320,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aPR" = ( @@ -23337,8 +23333,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aPS" = ( /obj/machinery/door/airlock/maintenance{ @@ -23354,8 +23350,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aPT" = ( /obj/structure/disposalpipe/segment{ @@ -23366,8 +23362,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aPU" = ( /obj/structure/table, @@ -23378,8 +23374,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aPV" = ( /obj/structure/cable{ @@ -23393,8 +23389,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aPW" = ( /obj/machinery/door/airlock/maintenance{ @@ -23410,8 +23406,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aPX" = ( /obj/structure/cable{ @@ -23821,8 +23817,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "aQJ" = ( /obj/structure/cable/orange{ @@ -23840,23 +23836,23 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "aQK" = ( /obj/structure/table, /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aQL" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aQM" = ( @@ -23864,8 +23860,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aQN" = ( /obj/structure/girder, @@ -23873,8 +23869,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aQO" = ( /obj/structure/table, @@ -23883,8 +23879,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aQP" = ( /obj/machinery/firealarm{ @@ -24539,22 +24535,22 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aRP" = ( /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aRQ" = ( /obj/structure/rack, /turf/open/floor/plating/asteroid, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aRR" = ( /obj/structure/cable{ @@ -24838,8 +24834,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aSr" = ( /obj/machinery/door/airlock/maintenance{ @@ -24850,8 +24846,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aSs" = ( /obj/effect/turf_decal/stripes/line{ @@ -24993,8 +24989,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" }) "aSC" = ( /obj/effect/turf_decal/stripes/asteroid/line{ @@ -25009,8 +25005,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" }) "aSD" = ( /obj/structure/cable/orange{ @@ -25026,8 +25022,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" }) "aSE" = ( /obj/structure/disposalpipe/trunk{ @@ -25445,8 +25441,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "aTr" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -25502,8 +25498,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aTv" = ( /obj/structure/cable{ @@ -25572,13 +25568,13 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/asteroid, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "aTA" = ( /obj/structure/girder, /obj/item/stack/sheet/metal, /turf/open/floor/plating/asteroid, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "aTB" = ( @@ -25772,8 +25768,8 @@ }, /obj/structure/disposaloutlet, /turf/open/floor/plating/airless, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aTS" = ( /obj/machinery/light/small, @@ -25781,8 +25777,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "aTT" = ( /obj/effect/turf_decal/stripes/line{ @@ -25841,8 +25837,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" }) "aTY" = ( /obj/structure/closet/jcloset, @@ -26065,14 +26061,14 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" }) "aUt" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating/asteroid, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" }) "aUu" = ( /obj/structure/table, @@ -26249,8 +26245,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "aUM" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -26311,8 +26307,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "aUQ" = ( /obj/structure/cable{ @@ -26329,8 +26325,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "aUR" = ( /obj/machinery/camera{ @@ -26341,14 +26337,14 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "aUS" = ( /obj/structure/closet, /turf/open/floor/plating/asteroid, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "aUT" = ( /obj/structure/cable{ @@ -26644,8 +26640,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "aVt" = ( /obj/machinery/door/firedoor, @@ -26690,8 +26686,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "aVw" = ( /obj/structure/cable{ @@ -26830,24 +26826,24 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "aVH" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "aVI" = ( /obj/machinery/light/small, /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "aVJ" = ( /obj/structure/rack, @@ -26855,8 +26851,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "aVK" = ( /obj/machinery/door/airlock/glass_external{ @@ -27089,8 +27085,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "aWb" = ( /obj/machinery/power/terminal{ @@ -27108,8 +27104,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "aWc" = ( /obj/structure/lattice/catwalk, @@ -27320,8 +27316,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "aWs" = ( /obj/structure/girder, @@ -34002,7 +33998,7 @@ "bhT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/camera{ - c_tag = "SEngineering Asteroid Hallway 5"; + c_tag = "Engineering Asteroid Hallway 5"; dir = 4; icon_state = "camera" }, @@ -34175,7 +34171,7 @@ /area/medical/surgery) "bil" = ( /obj/machinery/door/airlock/maintenance{ - name = "Surgey Observation"; + name = "Surgery Observation"; req_access_txt = "5" }, /turf/open/floor/plating{ @@ -35504,7 +35500,7 @@ /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bkC" = ( /obj/structure/cable{ icon_state = "0-2"; @@ -35523,7 +35519,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bkD" = ( /obj/structure/cable{ d1 = 4; @@ -35534,7 +35530,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bkE" = ( /obj/structure/cable{ d2 = 8; @@ -35553,7 +35549,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bkF" = ( /obj/structure/cable{ d2 = 8; @@ -35566,7 +35562,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bkG" = ( /obj/machinery/light/small{ dir = 8 @@ -35938,7 +35934,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "blp" = ( /obj/machinery/light, /obj/structure/cable{ @@ -35950,7 +35946,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "blq" = ( /obj/structure/cable{ d1 = 1; @@ -35960,7 +35956,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "blr" = ( /obj/machinery/computer/station_alert, /obj/machinery/requests_console{ @@ -35980,7 +35976,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "blt" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment{ @@ -36799,7 +36795,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bmC" = ( /obj/structure/reflector/single{ anchored = 1; @@ -36810,7 +36806,7 @@ /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bmD" = ( /obj/structure/reflector/box{ anchored = 1 @@ -36818,7 +36814,7 @@ /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bmE" = ( /obj/structure/reflector/single{ anchored = 1; @@ -36829,7 +36825,7 @@ /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bmF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment, @@ -37653,7 +37649,7 @@ dir = 1 }, /turf/closed/wall/r_wall, -/area/engine/supermatter) +/area/engine/engineering) "bnS" = ( /obj/machinery/door/airlock/glass_engineering{ name = "Laser Room"; @@ -37668,7 +37664,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bnT" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile, @@ -37685,7 +37681,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bnV" = ( /obj/machinery/light{ icon_state = "tube1"; @@ -38407,21 +38403,11 @@ d2 = 4; icon_state = "2-4" }, -/obj/machinery/power/apc{ - dir = 8; - name = "Supermatter Containment Room APC"; - pixel_x = -23; - pixel_y = 2 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, /turf/open/floor/engine{ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bpc" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -38436,7 +38422,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bpd" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -38454,7 +38440,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bpe" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -38466,7 +38452,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bpf" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -38478,7 +38464,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bpg" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -38490,7 +38476,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bph" = ( /obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/simple/general/visible{ @@ -38499,7 +38485,7 @@ /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bpi" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -38511,13 +38497,13 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bpj" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 10 }, /turf/closed/wall/r_wall, -/area/engine/supermatter) +/area/engine/engineering) "bpk" = ( /obj/structure/cable{ d1 = 1; @@ -39268,7 +39254,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bqt" = ( /obj/effect/turf_decal/stripes/corner, /obj/machinery/atmospherics/pipe/manifold/general/visible{ @@ -39278,7 +39264,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bqu" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/components/trinary/filter/flipped{ @@ -39286,13 +39272,14 @@ filter_type = "co2"; icon_state = "filter_off_f"; name = "gas filter (CO2)"; + on = 1; tag = "icon-filter_off_f (WEST)" }, /turf/open/floor/engine{ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bqv" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/simple/general/visible{ @@ -39303,7 +39290,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bqw" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/components/trinary/filter/flipped{ @@ -39311,13 +39298,14 @@ filter_type = "o2"; icon_state = "filter_off_f"; name = "gas filter (O2)"; + on = 1; tag = "icon-filter_off_f (WEST)" }, /turf/open/floor/engine{ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bqx" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -39336,7 +39324,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bqy" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -39349,7 +39337,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bqz" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/components/trinary/filter/flipped{ @@ -39357,13 +39345,14 @@ filter_type = "plasma"; icon_state = "filter_off_f"; name = "gas filter (Plasma)"; + on = 1; tag = "icon-filter_off_f (WEST)" }, /turf/open/floor/engine{ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bqA" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/components/trinary/filter/flipped{ @@ -39371,13 +39360,14 @@ filter_type = ""; icon_state = "filter_off_f"; name = "gas filter (Custom)"; + on = 1; tag = "icon-filter_off_f (WEST)" }, /turf/open/floor/engine{ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bqB" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -39389,7 +39379,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bqC" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -39401,7 +39391,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bqD" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 5 @@ -39416,7 +39406,7 @@ pixel_y = 1 }, /turf/open/floor/plating/airless, -/area/engine/supermatter) +/area/engine/engineering) "bqF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment, @@ -40340,7 +40330,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bsb" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -40354,7 +40344,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bsc" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile, @@ -40371,7 +40361,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bse" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -40380,7 +40370,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bsf" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 @@ -41086,7 +41076,7 @@ /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "btr" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 @@ -41094,7 +41084,7 @@ /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bts" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -41114,7 +41104,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "btt" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -41132,7 +41122,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "btu" = ( /obj/effect/turf_decal/stripes/end{ tag = "icon-warn_end (EAST)"; @@ -41263,7 +41253,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "btE" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -41277,7 +41267,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "btF" = ( /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 1 @@ -41285,7 +41275,7 @@ /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "btG" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ icon_state = "connector_map"; @@ -41300,7 +41290,7 @@ /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "btH" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 @@ -42077,13 +42067,13 @@ /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "buU" = ( /obj/machinery/holopad, /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "buV" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -42101,7 +42091,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "buW" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -42121,7 +42111,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "buX" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile, @@ -42185,7 +42175,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bvc" = ( /obj/machinery/holopad, /obj/machinery/atmospherics/pipe/manifold/general/visible{ @@ -42194,7 +42184,7 @@ /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bvd" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ dir = 8 @@ -42205,7 +42195,7 @@ /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bve" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/disposalpipe/segment, @@ -42304,7 +42294,7 @@ }, /obj/machinery/power/apc{ dir = 1; - name = "Central Asteroid Maintence APC"; + name = "Central Asteroid Maintenance APC"; pixel_x = 0; pixel_y = 24 }, @@ -42908,7 +42898,7 @@ /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bwo" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -42924,7 +42914,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bwp" = ( /obj/machinery/power/rad_collector{ anchored = 1 @@ -42960,7 +42950,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bwr" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -42974,13 +42964,13 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bws" = ( /obj/machinery/atmospherics/pipe/manifold/general/visible, /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bwt" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ dir = 8 @@ -42988,7 +42978,7 @@ /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bwu" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile, @@ -43665,7 +43655,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bxz" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 10 @@ -43719,7 +43709,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bxE" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -43732,13 +43722,13 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bxF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, /turf/closed/wall/r_wall, -/area/engine/supermatter) +/area/engine/engineering) "bxG" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/item/weapon/twohanded/required/kirbyplants{ @@ -44224,7 +44214,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "byB" = ( /obj/effect/turf_decal/delivery, /obj/machinery/portable_atmospherics/canister, @@ -44232,7 +44222,7 @@ /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "byC" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/binary/pump{ @@ -44271,7 +44261,7 @@ /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "byG" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -44286,11 +44276,11 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "byH" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, -/area/engine/supermatter) +/area/engine/engineering) "byI" = ( /obj/machinery/light{ dir = 8 @@ -44756,22 +44746,27 @@ /area/engine/engineering) "bzA" = ( /obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 5; + icon_state = "intact"; + tag = "icon-intact (SOUTHEAST)" }, /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bzB" = ( /obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + tag = "icon-manifold (EAST)"; + name = "scrubbers pipe"; + icon_state = "manifold"; dir = 4 }, /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bzC" = ( /obj/machinery/atmospherics/pipe/simple/general/visible, /turf/closed/wall/r_wall, @@ -44789,11 +44784,11 @@ /area/engine/supermatter) "bzE" = ( /obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/general/visible, +/obj/machinery/atmospherics/components/binary/pump, /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bzF" = ( /obj/structure/table, /obj/item/weapon/storage/box/donkpockets, @@ -45497,7 +45492,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bAM" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -45521,7 +45516,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bAN" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -45539,15 +45534,16 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bAO" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/machinery/atmospherics/components/trinary/filter{ - tag = "icon-filter_off (WEST)"; + dir = 8; icon_state = "filter_off"; - dir = 8 + on = 1; + tag = "icon-filter_off (WEST)" }, /obj/structure/cable{ d1 = 4; @@ -45559,7 +45555,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bAP" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -45580,7 +45576,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bAQ" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -45609,7 +45605,7 @@ /obj/machinery/atmospherics/components/binary/pump{ dir = 8; name = "Gas To Filter"; - on = 0 + on = 1 }, /obj/structure/cable{ d1 = 2; @@ -45620,7 +45616,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bAS" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -45630,7 +45626,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bAT" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -45646,7 +45642,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bAU" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -45661,7 +45657,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bAV" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -45676,7 +45672,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bAW" = ( /obj/structure/table, /obj/machinery/microwave, @@ -46250,7 +46246,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bBQ" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/cable/yellow{ @@ -46262,7 +46258,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bBR" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -46277,7 +46273,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bBS" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -46289,7 +46285,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bBT" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -46307,7 +46303,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bBU" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -46324,7 +46320,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bBV" = ( /obj/effect/turf_decal/stripes/corner, /obj/structure/cable/yellow{ @@ -46337,7 +46333,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bBW" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/cable/yellow{ @@ -46349,7 +46345,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bBX" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -46363,7 +46359,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bBY" = ( /obj/machinery/status_display{ density = 0; @@ -46766,6 +46762,7 @@ }) "bCK" = ( /obj/effect/turf_decal/stripes/asteroid/line, +/obj/machinery/atmospherics/pipe/simple/orange/visible, /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -46773,7 +46770,6 @@ name = "Central Asteroid Maintenance" }) "bCL" = ( -/obj/machinery/atmospherics/pipe/simple/orange/hidden, /obj/structure/rack, /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless @@ -46840,13 +46836,13 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, -/area/engine/supermatter) +/area/engine/engineering) "bCT" = ( /obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 10 }, /turf/closed/wall/r_wall, -/area/engine/supermatter) +/area/engine/engineering) "bCU" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -46856,7 +46852,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bCV" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/closet/radiation, @@ -46864,7 +46860,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bCW" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/light, @@ -46872,14 +46868,14 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bCX" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/engine{ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bCY" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/cable{ @@ -46898,7 +46894,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bCZ" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/cable/yellow{ @@ -46910,7 +46906,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bDa" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -46920,7 +46916,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "bDb" = ( /obj/machinery/atmospherics/pipe/simple/orange/visible{ tag = "icon-intact (SOUTHEAST)"; @@ -46928,13 +46924,13 @@ dir = 6 }, /turf/closed/wall/r_wall, -/area/engine/supermatter) +/area/engine/engineering) "bDc" = ( /obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 9 }, /turf/closed/wall/r_wall, -/area/engine/supermatter) +/area/engine/engineering) "bDd" = ( /obj/structure/reagent_dispensers/water_cooler, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -47412,18 +47408,22 @@ density = 0; layer = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, /turf/closed/wall/r_wall{ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) "bDX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, /obj/machinery/door/airlock/maintenance{ name = "Atmospehrics Maintenance"; req_access_txt = "12;24" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible, /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -47528,7 +47528,7 @@ dir = 5 }, /turf/closed/wall/r_wall, -/area/engine/supermatter) +/area/engine/engineering) "bEj" = ( /obj/machinery/door/airlock/glass_engineering{ name = "Supermatter Engine Room"; @@ -47540,7 +47540,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bEk" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile, @@ -47562,7 +47562,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bEl" = ( /obj/machinery/door/airlock/glass_engineering{ name = "Supermatter Engine Room"; @@ -47579,7 +47579,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "bEm" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plasteel{ @@ -47977,6 +47977,7 @@ /area/hydroponics) "bEY" = ( /obj/effect/turf_decal/delivery, +/obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plasteel/vault{ baseturf = /turf/open/floor/plating/asteroid/airless; dir = 5 @@ -48011,21 +48012,26 @@ icon_state = "tube1"; dir = 8 }, +/obj/item/weapon/twohanded/required/kirbyplants{ + tag = "icon-plant-21"; + icon_state = "plant-21" + }, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) "bFd" = ( /obj/structure/closet/firecloset/full, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) "bFe" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/orange/visible, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -48036,7 +48042,6 @@ /obj/item/stack/rods{ amount = 50 }, -/obj/machinery/atmospherics/pipe/simple/orange/visible, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -48063,6 +48068,11 @@ /obj/structure/table, /obj/item/weapon/grenade/chem_grenade/metalfoam, /obj/item/weapon/grenade/chem_grenade/metalfoam, +/obj/machinery/airalarm{ + frequency = 1439; + locked = 0; + pixel_y = 23 + }, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -49042,6 +49052,10 @@ icon_state = "1-2"; pixel_y = 0 }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -49051,6 +49065,10 @@ dir = 4 }, /obj/effect/landmark/start/atmospheric_technician, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + icon_state = "intact"; + dir = 8 + }, /turf/open/floor/plasteel/yellow/side{ tag = "icon-yellow (EAST)"; icon_state = "yellow"; @@ -49065,13 +49083,22 @@ id = "atmodesk" }, /obj/machinery/door/window/eastright{ + name = "Atmospherics Desk"; req_access_txt = "24" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + icon_state = "intact"; + dir = 8 + }, /turf/open/floor/plasteel/yellow{ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) "bGU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + icon_state = "intact"; + dir = 8 + }, /turf/open/floor/plasteel/yellow/side{ tag = "icon-yellow (WEST)"; icon_state = "yellow"; @@ -49091,13 +49118,11 @@ icon_state = "1-2"; pixel_y = 0 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, /obj/structure/disposalpipe/segment{ dir = 4; icon_state = "pipe-c" }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -50714,6 +50739,7 @@ icon_state = "camera"; network = list("SS13","CE") }, +/obj/machinery/portable_atmospherics/scrubber, /turf/open/floor/plasteel/vault{ baseturf = /turf/open/floor/plating/asteroid/airless; dir = 5 @@ -50744,16 +50770,19 @@ }, /area/atmos) "bJM" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 5 +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1; + scrub_N2O = 0; + scrub_Toxins = 0 }, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) "bJN" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 10 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless @@ -51249,31 +51278,30 @@ name = "Lounge" }) "bKF" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -24 - }, -/turf/open/floor/plasteel/yellow/side{ - baseturf = /turf/open/floor/plating/asteroid/airless +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/visible, +/obj/machinery/meter, +/turf/open/floor/plasteel/yellow/corner{ + dir = 8 }, /area/atmos) "bKG" = ( -/obj/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + icon_state = "intact"; dir = 8 }, -/turf/open/floor/plasteel/yellow/side{ +/turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) "bKH" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ +/obj/effect/landmark/lightsout, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 10; icon_state = "intact"; - dir = 10 + tag = "icon-intact (SOUTHEAST)" }, -/turf/open/floor/plasteel/yellow/corner{ - tag = "icon-yellowcorner (WEST)"; - icon_state = "yellowcorner"; - dir = 8; +/turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) @@ -51306,6 +51334,8 @@ icon_state = "camera"; network = list("SS13","CE") }, +/obj/structure/closet/secure_closet/atmospherics, +/obj/item/weapon/pickaxe/mini, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -51964,7 +51994,11 @@ }, /area/atmos) "bLV" = ( -/obj/machinery/pipedispenser/disposal/transit_tube, +/obj/machinery/door/window/eastright{ + dir = 1; + name = "Interior Pipe Access"; + req_access_txt = "24" + }, /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -51975,16 +52009,14 @@ }, /area/atmos) "bLX" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, /obj/machinery/atmospherics/components/binary/pump{ - dir = 2; - name = "Waste To Filter"; - on = 1 + dir = 1; + name = "Mix To Engine"; + on = 0; + target_pressure = 101 }, -/turf/open/floor/plasteel/black{ - baseturf = /turf/open/floor/plating/asteroid/airless +/turf/open/floor/plasteel/yellow/corner{ + dir = 8 }, /area/atmos) "bLY" = ( @@ -52015,6 +52047,8 @@ pixel_x = 30; pixel_y = 0 }, +/obj/structure/closet/secure_closet/atmospherics, +/obj/item/weapon/pickaxe/mini, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -53034,6 +53068,8 @@ dir = 4; icon_state = "tube1" }, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -53546,23 +53582,8 @@ /turf/open/floor/plating, /area/atmos) "bOv" = ( -/obj/machinery/computer/atmos_control/tank{ - frequency = 1441; - input_tag = "n2_in"; - name = "Nitrogen Supply Control"; - output_tag = "n2_out"; - sensors = list("n2_sensor" = "Tank") - }, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/floor/plasteel/black{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/atmos) -"bOw" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - icon_state = "intact"; - dir = 5 - }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/machinery/meter, /turf/open/floor/plasteel/yellow/side{ tag = "icon-yellow (WEST)"; icon_state = "yellow"; @@ -53570,17 +53591,31 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) +"bOw" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) "bOx" = ( -/obj/machinery/atmospherics/pipe/manifold/yellow/visible, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10; + pixel_x = 0; + initialize_directions = 10 + }, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) "bOy" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 4 - }, -/turf/open/floor/plasteel{ +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/open/floor/plasteel/yellow/side{ + tag = "icon-yellow (WEST)"; + icon_state = "yellow"; + dir = 8; baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) @@ -53590,9 +53625,11 @@ d2 = 4; icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 4 +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" }, +/obj/structure/chair/stool/bar, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -53603,9 +53640,12 @@ d2 = 8; icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ +/obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/table, +/obj/item/weapon/storage/fancy/cigarettes, +/obj/item/weapon/lighter/greyscale, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -53616,14 +53656,15 @@ d2 = 8; icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 4 - }, /obj/item/device/radio/intercom{ broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/chair/stool/bar, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -53634,13 +53675,12 @@ d2 = 8; icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - icon_state = "intact"; - dir = 10 - }, /obj/structure/sign/atmosplaque{ pixel_y = 32 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -53651,11 +53691,11 @@ d2 = 8; icon_state = "1-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/visible, /obj/structure/disposalpipe/segment{ - dir = 1; + dir = 8; icon_state = "pipe-c" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -54301,14 +54341,6 @@ }, /area/atmos) "bPC" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/turf/open/floor/plasteel/black{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/atmos) -"bPD" = ( /obj/machinery/atmospherics/pipe/simple/green/visible, /obj/machinery/atmospherics/components/binary/pump{ dir = 4; @@ -54316,9 +54348,19 @@ on = 1 }, /obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel/red, +/area/atmos) +"bPD" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, -/turf/open/floor/plasteel/black{ +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/floor/plasteel/yellow/side{ + tag = "icon-yellow (WEST)"; + icon_state = "yellow"; + dir = 8; baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) @@ -54382,7 +54424,9 @@ }, /area/atmos) "bPL" = ( -/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -54973,9 +55017,9 @@ /area/atmos) "bQG" = ( /obj/machinery/atmospherics/pipe/simple/yellow/visible{ - icon_state = "intact"; - dir = 10 + dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/yellow/side{ tag = "icon-yellow (WEST)"; icon_state = "yellow"; @@ -54990,12 +55034,11 @@ }, /area/atmos) "bQI" = ( -/obj/structure/closet/secure_closet/atmospherics, -/obj/item/weapon/pickaxe/mini, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4; +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "North Canister to Waste" + }, +/turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) @@ -55008,13 +55051,11 @@ }, /area/atmos) "bQK" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - tag = "icon-connector_map (EAST)"; - icon_state = "connector_map"; - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 1 }, -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/plasteel/delivery{ +/obj/machinery/meter, +/turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) @@ -55042,10 +55083,7 @@ /obj/structure/fireaxecabinet{ pixel_x = 32 }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -55530,8 +55568,9 @@ }, /area/atmos) "bRI" = ( -/obj/machinery/atmospherics/pipe/manifold4w/yellow/visible, -/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 1 + }, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -55548,22 +55587,17 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - tag = "icon-connector_map (EAST)"; - icon_state = "connector_map"; - dir = 4 - }, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) "bRL" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - tag = "icon-intact (WEST)"; - icon_state = "intact"; - dir = 8 +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + tag = "icon-connector_map (EAST)"; + icon_state = "connector_map"; + dir = 4 }, +/obj/machinery/portable_atmospherics/pump, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -55574,6 +55608,7 @@ icon_state = "intact"; dir = 8 }, +/obj/machinery/meter, /turf/open/floor/plasteel/yellow/side{ tag = "icon-yellow (EAST)"; icon_state = "yellow"; @@ -55595,6 +55630,7 @@ /area/atmos) "bRO" = ( /obj/machinery/portable_atmospherics/canister, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/yellow/side{ tag = "icon-yellow (WEST)"; icon_state = "yellow"; @@ -55603,9 +55639,7 @@ }, /area/atmos) "bRP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - tag = "icon-intact (SOUTHEAST)"; - icon_state = "intact"; +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 6 }, /turf/open/floor/plasteel{ @@ -55614,8 +55648,8 @@ /area/atmos) "bRQ" = ( /obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Waste to Filter"; + dir = 4; + name = "Filter to Waste"; on = 1 }, /turf/open/floor/plasteel{ @@ -56039,19 +56073,16 @@ }, /area/atmos) "bSI" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 9 +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 }, -/turf/open/floor/plasteel{ +/turf/open/floor/plasteel/delivery{ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) "bSJ" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - icon_state = "intact"; - dir = 5 - }, -/turf/open/floor/plasteel{ +/obj/machinery/pipedispenser/disposal, +/turf/open/floor/plasteel/yellow/corner{ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) @@ -56064,19 +56095,18 @@ }, /area/atmos) "bSL" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 4 +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Pure To Canisters"; + on = 0 }, -/obj/machinery/meter, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) "bSM" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Mix To Canisters"; - on = 0 +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 }, /turf/open/floor/plasteel/yellow/side{ tag = "icon-yellow (EAST)"; @@ -56099,11 +56129,8 @@ }, /area/atmos) "bSO" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 2; - name = "Mix to Filter"; - on = 1 - }, +/obj/machinery/atmospherics/pipe/manifold/yellow/visible, +/obj/machinery/meter, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -56503,11 +56530,7 @@ }, /area/atmos) "bTA" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - tag = "icon-intact (NORTHEAST)"; - icon_state = "intact"; - dir = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/yellow/side{ tag = "icon-yellow (WEST)"; icon_state = "yellow"; @@ -56747,13 +56770,20 @@ /area/atmos) "bTZ" = ( /obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1; + scrub_N2O = 0; + scrub_Toxins = 0 + }, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) "bUa" = ( -/obj/machinery/atmospherics/pipe/manifold/yellow/visible{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, /turf/open/floor/plasteel/yellow/side{ tag = "icon-yellow (EAST)"; @@ -57157,16 +57187,16 @@ }, /area/atmos) "bUL" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, /obj/machinery/atmospherics/pipe/simple/cyan/visible{ tag = "icon-intact (WEST)"; icon_state = "intact"; dir = 8 }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/plasteel/yellow{ +/turf/open/floor/plasteel/yellow/side{ + tag = "icon-yellow (WEST)"; + icon_state = "yellow"; + dir = 8; baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) @@ -57185,20 +57215,16 @@ }, /area/atmos) "bUN" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - tag = "icon-intact (NORTHWEST)"; - icon_state = "intact"; - dir = 9 +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 }, -/turf/open/floor/plasteel/yellow/side{ +/turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) "bUO" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 6 - }, -/turf/open/floor/plasteel/yellow/side{ +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) @@ -57262,6 +57288,10 @@ dir = 4; icon_state = "tube1" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + icon_state = "intact"; + dir = 4 + }, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -57451,32 +57481,22 @@ }, /area/atmos) "bVt" = ( -/obj/machinery/computer/atmos_control/tank{ - frequency = 1441; - input_tag = "air_in"; - name = "Mixed Air Supply Control"; - output_tag = "air_out"; - sensors = list("air_sensor" = "Tank") +/obj/machinery/atmospherics/pipe/manifold/yellow/visible{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - tag = "icon-intact (NORTHEAST)"; - icon_state = "intact"; - dir = 5 - }, -/turf/open/floor/plasteel/vault{ - baseturf = /turf/open/floor/plating/asteroid/airless; - dir = 5 +/turf/open/floor/plasteel/yellow/side{ + tag = "icon-yellow (SOUTHWEST)"; + icon_state = "yellow"; + dir = 10; + baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) "bVu" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - tag = "icon-intact (WEST)"; +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ icon_state = "intact"; dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/yellow/visible, -/obj/structure/window/reinforced, -/turf/open/floor/plasteel/yellow{ +/turf/open/floor/plasteel/yellow/side{ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) @@ -57532,14 +57552,11 @@ }, /area/atmos) "bVy" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 4 }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plasteel/black{ +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/open/floor/plasteel/yellow/side{ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) @@ -57939,75 +57956,129 @@ }, /area/atmos) "bWe" = ( -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 1; - initialize_directions = 11 +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 10; + initialize_directions = 10 }, /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) "bWf" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - name = "Air to Pure" +/obj/machinery/atmospherics/pipe/simple/green/visible{ + tag = "icon-intact (NORTHEAST)"; + icon_state = "intact"; + dir = 5 }, -/turf/open/floor/plasteel/black{ - baseturf = /turf/open/floor/plating/asteroid/airless +/obj/structure/window/reinforced{ + dir = 8 }, +/obj/structure/window/reinforced, +/obj/structure/table, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/turf/open/floor/plasteel/barber, /area/atmos) "bWg" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ +/obj/machinery/atmospherics/pipe/simple/green/visible{ tag = "icon-intact (WEST)"; icon_state = "intact"; dir = 8 }, -/turf/open/floor/plasteel/black{ - baseturf = /turf/open/floor/plating/asteroid/airless +/obj/structure/window/reinforced, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Air to Pure"; + on = 0 }, +/turf/open/floor/plasteel/barber, /area/atmos) "bWh" = ( -/obj/machinery/atmospherics/pipe/manifold/yellow/visible, -/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/window/eastright{ + dir = 1; + name = "Interior Pipe Access"; + req_access_txt = "24" + }, /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/atmos) "bWi" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - tag = "icon-intact (WEST)"; - icon_state = "intact"; - dir = 8 +/obj/machinery/atmospherics/components/trinary/filter{ + dir = 4; + filter_type = "co2"; + name = "co2 filter"; + on = 1 }, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/floor/plasteel/black{ - baseturf = /turf/open/floor/plating/asteroid/airless +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/vault{ + initial_gas_mix = "n2=100;TEMP=80"; + temperature = 80 }, /area/atmos) "bWj" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - tag = "icon-intact (NORTHWEST)"; - icon_state = "intact"; - dir = 9 +/obj/machinery/computer/atmos_control/tank{ + frequency = 1441; + input_tag = "co2_in"; + name = "Carbon Dioxide Supply Control"; + output_tag = "co2_out"; + sensors = list("co2_sensor" = "Tank") }, -/turf/open/floor/plasteel/black{ - baseturf = /turf/open/floor/plating/asteroid/airless +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/vault{ + dir = 5; + initial_gas_mix = "n2=500;TEMP=80"; + temperature = 80 }, /area/atmos) "bWk" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible, -/turf/open/floor/plasteel/black{ - baseturf = /turf/open/floor/plating/asteroid/airless +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "CO2 to Pure"; + on = 0 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/vault{ + initial_gas_mix = "n2=100;TEMP=80"; + temperature = 80 }, /area/atmos) "bWl" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/floor/plasteel/black{ - baseturf = /turf/open/floor/plating/asteroid/airless +/obj/machinery/atmospherics/components/trinary/filter{ + dir = 4; + filter_type = "plasma"; + name = "plasma filter"; + on = 1 }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/purple, /area/atmos) "bWm" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 2; + name = "Unfiltered to Mix"; + on = 1 + }, /turf/open/floor/plasteel/yellow/side{ tag = "icon-yellow (WEST)"; icon_state = "yellow"; @@ -58019,6 +58090,11 @@ /obj/structure/extinguisher_cabinet{ pixel_x = 24 }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + tag = "icon-intact (NORTHWEST)"; + icon_state = "intact"; + dir = 9 + }, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -58219,7 +58295,6 @@ /obj/machinery/light{ dir = 8 }, -/obj/machinery/pipedispenser/disposal, /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -58251,15 +58326,13 @@ }, /area/atmos) "bWJ" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, /obj/machinery/camera{ - c_tag = "Atmoshperic Tanks 1"; + c_tag = "Atmospheric Tanks 1"; dir = 1; icon_state = "camera"; network = list("SS13","CE") }, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible, /turf/open/floor/plasteel/black{ baseturf = /turf/open/floor/plating/asteroid/airless }, @@ -59434,7 +59507,7 @@ /obj/structure/table, /obj/item/weapon/paper{ desc = ""; - info = "Brusies sustained in the holodeck can be healed simply by sleeping."; + info = "Bruises sustained in the holodeck can be healed simply by sleeping."; name = "Holodeck Disclaimer" }, /turf/open/floor/plasteel{ @@ -67307,7 +67380,7 @@ d2 = 2; icon_state = "1-2" }, -/turf/closed/wall{ +/turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/aft{ @@ -78333,8 +78406,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "cFc" = ( /obj/structure/disposalpipe/segment{ @@ -78399,8 +78472,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "cFj" = ( /obj/structure/disposalpipe/segment{ @@ -78432,8 +78505,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "cFm" = ( /obj/structure/disposalpipe/segment{ @@ -78517,7 +78590,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "cFv" = ( /obj/machinery/ai_status_display, @@ -78824,11 +78897,11 @@ layer = 4 }, /turf/closed/wall/r_wall, -/area/engine/supermatter) +/area/engine/engineering) "cGb" = ( /obj/machinery/ai_status_display, /turf/closed/wall/r_wall, -/area/engine/supermatter) +/area/engine/engineering) "cGc" = ( /turf/open/space/basic, /area/space) @@ -78884,7 +78957,7 @@ }, /obj/machinery/ai_status_display, /turf/closed/wall/r_wall, -/area/engine/supermatter) +/area/engine/engineering) "cGk" = ( /obj/structure/window/reinforced{ dir = 4; @@ -79479,9 +79552,9 @@ }, /area/crew_quarters/fitness) "cHs" = ( -/obj/effect/landmark/start/atmospheric_technician, -/turf/open/floor/plasteel{ - baseturf = /turf/open/floor/plating/asteroid/airless +/obj/machinery/pipedispenser/disposal/transit_tube, +/turf/open/floor/plasteel/yellow/corner{ + dir = 4 }, /area/atmos) "cHt" = ( @@ -79552,7 +79625,7 @@ }) "cHA" = ( /obj/machinery/door/airlock/maintenance{ - name = "Maintenance Drone Dispensery"; + name = "Maintenance Drone Dispensary"; req_access_txt = "12" }, /turf/open/floor/plating{ @@ -80059,8 +80132,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "cIo" = ( /obj/structure/disposaloutlet{ @@ -80201,8 +80274,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "cIA" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -80307,8 +80380,8 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "cIG" = ( /obj/structure/cable{ @@ -80358,8 +80431,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "cIK" = ( /obj/structure/disposalpipe/segment{ @@ -81581,7 +81654,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/engine/supermatter) +/area/engine/engineering) "cLh" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile, @@ -81606,7 +81679,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless; name = "reinforced floor" }, -/area/engine/supermatter) +/area/engine/engineering) "cLj" = ( /obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 4 @@ -81711,7 +81784,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cLt" = ( @@ -81720,7 +81793,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cLu" = ( @@ -81731,7 +81804,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "cLv" = ( /obj/structure/girder, @@ -81739,7 +81812,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cLw" = ( @@ -81747,7 +81820,7 @@ /obj/effect/spawner/lootdrop/maintenance, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/asteroid, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cLx" = ( @@ -81756,7 +81829,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "cLy" = ( /obj/structure/closet, @@ -81765,7 +81838,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cLz" = ( @@ -81777,8 +81850,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "cLA" = ( /obj/structure/cable/orange{ @@ -81789,8 +81862,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "cLB" = ( /obj/structure/disposalpipe/segment{ @@ -81800,7 +81873,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cLC" = ( @@ -81816,7 +81889,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cLD" = ( @@ -81831,7 +81904,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cLE" = ( @@ -81843,7 +81916,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cLF" = ( @@ -81852,15 +81925,15 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/asteroid, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "cLG" = ( /obj/structure/grille, /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "cLH" = ( /obj/machinery/airalarm{ @@ -81883,7 +81956,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cLJ" = ( @@ -81899,7 +81972,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cLK" = ( @@ -81912,7 +81985,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cLL" = ( @@ -81923,7 +81996,7 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/asteroid, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "cLM" = ( /obj/structure/disposalpipe/segment, @@ -81935,7 +82008,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cLN" = ( @@ -81949,7 +82022,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cLO" = ( @@ -81962,15 +82035,15 @@ /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "cLP" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cLQ" = ( @@ -81981,8 +82054,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "cLR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -82002,7 +82075,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cLT" = ( @@ -82010,7 +82083,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cLU" = ( @@ -82023,7 +82096,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cLV" = ( @@ -82041,7 +82114,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cLX" = ( @@ -82054,7 +82127,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cLY" = ( @@ -82066,7 +82139,7 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cLZ" = ( @@ -82080,15 +82153,15 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "cMb" = ( /obj/structure/closet/crate, /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cMc" = ( @@ -82136,7 +82209,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "cMf" = ( /obj/structure/closet/firecloset/full, @@ -82145,7 +82218,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "cMg" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -82259,8 +82332,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "cMs" = ( /obj/structure/cable/orange{ @@ -82342,7 +82415,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "cMz" = ( /obj/structure/cable/orange{ @@ -82358,8 +82431,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "cMA" = ( /obj/structure/closet/secure_closet/quartermaster, @@ -82418,7 +82491,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cMG" = ( @@ -82436,7 +82509,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "cMH" = ( /obj/structure/cable/orange{ @@ -82448,8 +82521,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "cMI" = ( /obj/structure/closet/firecloset/full, @@ -82518,7 +82591,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cMP" = ( @@ -82532,7 +82605,7 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "cMQ" = ( /obj/machinery/light/small{ @@ -82541,8 +82614,8 @@ /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/asteroid, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" }) "cMR" = ( /obj/machinery/power/apc{ @@ -82573,7 +82646,7 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ +/area/maintenance/fpmaint2/fore_port_maintenance{ name = "Fore Asteroid Maintenance" }) "cMT" = ( @@ -82603,8 +82676,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "cMV" = ( /obj/structure/cable/orange{ @@ -82617,15 +82690,15 @@ baseturf = /turf/open/floor/plating/asteroid/airless }, /area/maintenance/fore{ - name = "Fore Asteroid Maintenance" + name = "Fore Asteroid Maintenance North" }) "cMW" = ( /obj/structure/grille/broken, /turf/open/floor/plating/astplate{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "cMX" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -82733,8 +82806,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "cNf" = ( /obj/structure/table, @@ -89327,8 +89400,8 @@ /turf/closed/wall{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" }) "cZa" = ( /obj/structure/cable{ @@ -89375,8 +89448,8 @@ /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "cZc" = ( /obj/effect/turf_decal/stripes/asteroid/line{ @@ -89386,8 +89459,8 @@ /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless }, -/area/maintenance/fore{ - name = "Fore Asteroid Maintenance" +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" }) "cZd" = ( /obj/structure/table, @@ -91948,6 +92021,6640 @@ /area/maintenance/port{ name = "Port Asteroid Maintenance" }) +"deK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + icon_state = "intact"; + dir = 8 + }, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"deL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + icon_state = "intact"; + dir = 8 + }, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"deM" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -24 + }, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"deN" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/obj/machinery/meter, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"deO" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/closet/secure_closet/atmospherics, +/obj/item/weapon/pickaxe/mini, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"deP" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 4; + frequency = 1441; + id = "n2_in" + }, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/maintenance/maintcentral{ + name = "Central Asteroid Maintenance" + }) +"deQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/mineral, +/area/maintenance/maintcentral{ + name = "Central Asteroid Maintenance" + }) +"deR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/mineral, +/area/maintenance/maintcentral{ + name = "Central Asteroid Maintenance" + }) +"deS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/mineral, +/area/maintenance/maintcentral{ + name = "Central Asteroid Maintenance" + }) +"deT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/mineral, +/area/maintenance/maintcentral{ + name = "Central Asteroid Maintenance" + }) +"deU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/mineral/random/labormineral, +/area/maintenance/maintcentral{ + name = "Central Asteroid Maintenance" + }) +"deV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/maintcentral{ + name = "Central Asteroid Maintenance" + }) +"deW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/maintcentral{ + name = "Central Asteroid Maintenance" + }) +"deX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/maintcentral{ + name = "Central Asteroid Maintenance" + }) +"deY" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/scrubber/huge, +/turf/open/floor/plasteel/vault{ + baseturf = /turf/open/floor/plating/asteroid/airless; + dir = 5 + }, +/area/atmos) +"deZ" = ( +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/vault{ + baseturf = /turf/open/floor/plating/asteroid/airless; + dir = 5 + }, +/area/atmos) +"dfa" = ( +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/vault{ + baseturf = /turf/open/floor/plating/asteroid/airless; + dir = 5 + }, +/area/atmos) +"dfb" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/vault{ + baseturf = /turf/open/floor/plating/asteroid/airless; + dir = 5 + }, +/area/atmos) +"dfc" = ( +/obj/machinery/atmospherics/components/binary/valve/digital{ + dir = 4; + name = "Waste Release" + }, +/turf/open/floor/plasteel/yellow/side{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfd" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/plasteel/yellow/side{ + tag = "icon-yellow (SOUTHWEST)"; + icon_state = "yellow"; + dir = 10; + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfe" = ( +/obj/machinery/atmospherics/components/trinary/filter{ + dir = 2; + filter_type = "n2"; + name = "nitogren filter"; + on = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel/red, +/area/atmos) +"dff" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfg" = ( +/obj/structure/sign/nosmoking_2, +/turf/closed/wall/r_wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfh" = ( +/obj/machinery/computer/atmos_control/tank{ + frequency = 1441; + input_tag = "n2_in"; + name = "Nitrogen Supply Control"; + output_tag = "n2_out"; + sensors = list("n2_sensor" = "Tank") + }, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel/red, +/area/atmos) +"dfi" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfk" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "N2 to Pure" + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/reinforced, +/obj/machinery/door/window/eastright{ + name = "Interior Pipe Access"; + req_access_txt = "24" + }, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfl" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfm" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/crew_quarters/chief) +"dfn" = ( +/obj/machinery/atmospherics/components/trinary/filter{ + dir = 2; + filter_type = "o2"; + name = "oxygen filter"; + on = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel/blue, +/area/atmos) +"dfo" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfp" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 1 + }, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfq" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10 + }, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfs" = ( +/obj/machinery/computer/atmos_control/tank{ + frequency = 1441; + input_tag = "o2_in"; + name = "Oxygen Supply Control"; + output_tag = "o2_out"; + sensors = list("o2_sensor" = "Tank") + }, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel/blue, +/area/atmos) +"dft" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/open/floor/plasteel/yellow/side{ + tag = "icon-yellow (EAST)"; + icon_state = "yellow"; + dir = 4 + }, +/area/atmos) +"dfu" = ( +/obj/machinery/pipedispenser, +/obj/machinery/light, +/turf/open/floor/plasteel/yellow/corner{ + tag = "icon-yellowcorner (WEST)"; + icon_state = "yellowcorner"; + dir = 8 + }, +/area/atmos) +"dfv" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/turf/open/floor/plasteel/delivery{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfw" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/turf/open/floor/plasteel/delivery{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfx" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + icon_state = "intact"; + dir = 6 + }, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfy" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "O2 to Airmix"; + on = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel/blue, +/area/atmos) +"dfz" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible, +/obj/machinery/camera{ + c_tag = "Atmospherics Distro"; + dir = 9; + icon_state = "camera"; + network = list("SS13","CE") + }, +/turf/open/floor/plasteel/yellow/side{ + tag = "icon-yellow (EAST)"; + icon_state = "yellow"; + dir = 4 + }, +/area/atmos) +"dfA" = ( +/obj/structure/sign/poster/official/safety_internals, +/turf/closed/wall, +/area/atmos) +"dfB" = ( +/obj/machinery/camera{ + c_tag = "Atmospherics South"; + dir = 4; + icon_state = "camera"; + network = list("SS13","CE") + }, +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel/yellow/side{ + tag = "icon-yellow (WEST)"; + icon_state = "yellow"; + dir = 8; + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfC" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + icon_state = "intact"; + dir = 4 + }, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfD" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfE" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4; + initialize_directions = 11 + }, +/turf/closed/wall/r_wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfF" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "O2 to Pure" + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/reinforced, +/obj/machinery/door/window/eastright{ + name = "Interior Pipe Access"; + req_access_txt = "24" + }, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfG" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "South Canister To Waste"; + on = 0; + target_pressure = 101 + }, +/turf/open/floor/plasteel/yellow/side{ + tag = "icon-yellow (EAST)"; + icon_state = "yellow"; + dir = 4 + }, +/area/atmos) +"dfH" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/yellow/corner{ + dir = 1 + }, +/area/atmos) +"dfI" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plasteel/delivery{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfJ" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plasteel/delivery{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfK" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plasteel/delivery{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfL" = ( +/obj/effect/landmark/start/atmospheric_technician, +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/open/floor/plasteel/yellow/side{ + tag = "icon-yellow (WEST)"; + icon_state = "yellow"; + dir = 8; + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfM" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfN" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel/yellow/side{ + tag = "icon-yellow (WEST)"; + icon_state = "yellow"; + dir = 8; + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfO" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1; + scrub_Toxins = 0 + }, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfP" = ( +/obj/machinery/status_display{ + density = 0; + layer = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfQ" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + tag = "icon-intact (WEST)"; + icon_state = "intact"; + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel/barber, +/area/atmos) +"dfR" = ( +/obj/machinery/atmospherics/pipe/manifold4w/general/visible, +/obj/machinery/meter, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfS" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfT" = ( +/obj/machinery/atmospherics/pipe/manifold/yellow/visible{ + dir = 8 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel/yellow/side{ + tag = "icon-yellow (EAST)"; + icon_state = "yellow"; + dir = 4; + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfV" = ( +/obj/machinery/computer/atmos_control/tank{ + frequency = 1441; + input_tag = "air_in"; + name = "Mixed Air Supply Control"; + output_tag = "air_out"; + sensors = list("air_sensor" = "Tank") + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/plasteel/barber, +/area/atmos) +"dfW" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/machinery/airalarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfX" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/window/eastright{ + dir = 1; + name = "Interior Pipe Access"; + req_access_txt = "24" + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Air to South Canister"; + on = 0 + }, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dfY" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/computer/atmos_control/tank{ + frequency = 1441; + input_tag = "tox_in"; + name = "Plasma Supply Control"; + output_tag = "tox_out"; + sensors = list("tox_sensor" = "Tank") + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/purple, +/area/atmos) +"dfZ" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Plasma to Pure"; + on = 0 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/purple, +/area/atmos) +"dga" = ( +/obj/machinery/atmospherics/components/trinary/filter{ + dir = 4; + filter_type = "n2o"; + name = "n2o filter"; + on = 1 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/escape{ + dir = 10 + }, +/area/atmos) +"dgb" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/computer/atmos_control/tank{ + frequency = 1441; + input_tag = "n2o_in"; + name = "Nitrous Oxide Supply Control"; + output_tag = "n2o_out"; + sensors = list("n2o_sensor" = "Tank") + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/escape, +/area/atmos) +"dgc" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "N2O to Pure"; + on = 0 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/escape{ + dir = 6 + }, +/area/atmos) +"dgd" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dge" = ( +/obj/machinery/atmospherics/pipe/manifold/cyan/visible, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/atmos) +"dgf" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgg" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgh" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgi" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgj" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgk" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgl" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgn" = ( +/obj/structure/window/reinforced/fulltile, +/obj/structure/grille, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgo" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgp" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgq" = ( +/obj/structure/window/reinforced/fulltile, +/obj/structure/grille, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgr" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dgs" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgt" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgu" = ( +/obj/structure/window/reinforced/fulltile, +/obj/structure/grille, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgv" = ( +/obj/structure/window/reinforced/fulltile, +/obj/structure/grille, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgw" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgx" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dgy" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dgz" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dgA" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dgB" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dgC" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dgD" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgE" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgF" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgG" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dgH" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dgI" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgJ" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgL" = ( +/obj/machinery/disposal/deliveryChute{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgM" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dgN" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dgO" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dgP" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dgQ" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgR" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgS" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgT" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgU" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgV" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgW" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgX" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dgY" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dgZ" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dha" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dhb" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dhc" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dhd" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dhe" = ( +/turf/closed/mineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dhf" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dhg" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dhh" = ( +/turf/closed/mineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dhi" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dhj" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dhk" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dhl" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dhm" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dhn" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dho" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dhp" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dhq" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dhr" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dhs" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dht" = ( +/turf/closed/mineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dhu" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dhv" = ( +/turf/closed/mineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dhw" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dhx" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dhy" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dhz" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dhA" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dhB" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dhC" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dhD" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dhE" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dhF" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dhG" = ( +/turf/closed/mineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dhH" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dhI" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dhJ" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dhK" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dhL" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dhM" = ( +/turf/closed/mineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dhN" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dhO" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dhP" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dhQ" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dhR" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dhS" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dhT" = ( +/obj/structure/girder, +/obj/item/stack/sheet/metal, +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dhU" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dhV" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dhW" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dhX" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dhY" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dhZ" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dia" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dib" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dic" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"did" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"die" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dif" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dig" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dih" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dii" = ( +/obj/structure/girder, +/obj/item/stack/sheet/metal, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dij" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dik" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dil" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dim" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"din" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dio" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dip" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"diq" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dir" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dis" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dit" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"diu" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"div" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"diw" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dix" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"diy" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"diz" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"diA" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"diB" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"diC" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"diD" = ( +/obj/structure/girder, +/obj/item/stack/sheet/metal, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"diE" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"diF" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"diG" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"diH" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"diI" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"diJ" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"diK" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"diL" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"diM" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"diN" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"diO" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"diP" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Cell Block APC"; + pixel_x = 23; + pixel_y = 2 + }, +/obj/structure/cable/orange, +/obj/effect/turf_decal/stripes/end{ + tag = "icon-warn_end (WEST)"; + icon_state = "warn_end"; + dir = 8 + }, +/obj/structure/closet/firecloset/full, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/security/prison) +"diQ" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"diR" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"diS" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"diT" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"diU" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"diV" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"diW" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"diX" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"diY" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"diZ" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dja" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"djb" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"djc" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"djd" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dje" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"djf" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"djg" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"djh" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/item/device/assembly/mousetrap/armed, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dji" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"djj" = ( +/obj/structure/grille, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"djk" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"djl" = ( +/obj/structure/girder, +/obj/item/stack/sheet/metal, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"djm" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"djn" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"djo" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"djp" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"djq" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"djr" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"djs" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"djt" = ( +/turf/open/floor/plasteel/floorgrime{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dju" = ( +/obj/structure/girder, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"djv" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"djw" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"djx" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"djy" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"djz" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"djA" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"djB" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"djC" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"djD" = ( +/turf/open/floor/plasteel/floorgrime{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"djE" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"djF" = ( +/obj/structure/grille, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"djG" = ( +/obj/structure/grille, +/turf/open/floor/plating/asteroid, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"djH" = ( +/turf/closed/mineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"djI" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"djJ" = ( +/obj/structure/grille, +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"djK" = ( +/obj/structure/grille, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"djL" = ( +/turf/open/floor/plasteel/floorgrime{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"djM" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"djN" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"djO" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"djP" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"djQ" = ( +/turf/closed/mineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"djR" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"djS" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"djT" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"djU" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Fore Asteroid Maintenance Access"; + req_access_txt = "12" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"djV" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"djW" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"djX" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"djY" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Fore Asteroid Maintenance Access"; + req_access_txt = "12" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"djZ" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dka" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkb" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkc" = ( +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating/asteroid, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkd" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dke" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dkf" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dkg" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dkh" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dki" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dkj" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dkk" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dkl" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dkm" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkn" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dko" = ( +/obj/structure/grille, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkp" = ( +/obj/structure/girder, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkq" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkr" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dks" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkt" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dku" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkv" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkw" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dkx" = ( +/obj/structure/girder, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dky" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance North East" + }) +"dkz" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dkA" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dkB" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dkC" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dkD" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dkE" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkF" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkG" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkH" = ( +/turf/closed/mineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkI" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkJ" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkK" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dkL" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dkM" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkN" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/asteroid, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkO" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkP" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkQ" = ( +/turf/closed/mineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkR" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkS" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkT" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkU" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dkV" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dkW" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dkX" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dkY" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dkZ" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dla" = ( +/obj/structure/grille, +/turf/open/floor/plating/asteroid, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dlb" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dlc" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dld" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dle" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dlf" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dlg" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dlh" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dli" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dlj" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dlk" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dll" = ( +/turf/open/floor/plasteel/floorgrime{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dlm" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dln" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dlo" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dlp" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dlq" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dlr" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dls" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dlt" = ( +/obj/structure/grille, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dlu" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dlv" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dlw" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dlx" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dly" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dlz" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dlA" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dlB" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dlC" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dlD" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dlE" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dlF" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dlG" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dlH" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dlI" = ( +/turf/open/floor/plasteel/floorgrime{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dlJ" = ( +/turf/open/floor/plasteel/floorgrime{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dlK" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dlL" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dlM" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dlN" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dlO" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dlP" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dlQ" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dlR" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dlS" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dlT" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dlU" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dlV" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dlW" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dlX" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dlY" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/item/device/assembly/mousetrap/armed, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dlZ" = ( +/obj/structure/girder, +/obj/item/stack/sheet/metal, +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dma" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dmb" = ( +/obj/structure/grille, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dmc" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dmd" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dme" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dmf" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dmg" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dmh" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dmi" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dmj" = ( +/turf/closed/mineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dmk" = ( +/turf/closed/mineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dml" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dmm" = ( +/obj/structure/girder, +/obj/item/stack/sheet/metal, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dmn" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dmo" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dmp" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dmq" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dmr" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dms" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dmt" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dmu" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dmv" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dmw" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dmx" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dmy" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/asteroid, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dmz" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dmA" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dmB" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dmC" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dmD" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dmE" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dmF" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dmG" = ( +/obj/structure/girder, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dmH" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dmI" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dmJ" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dmK" = ( +/obj/structure/grille, +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dmL" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dmM" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dmN" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dmO" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dmP" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dmQ" = ( +/obj/structure/grille/broken, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dmR" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dmS" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dmT" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dmU" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dmV" = ( +/obj/structure/closet/firecloset/full, +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dmW" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dmX" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dmY" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dmZ" = ( +/obj/structure/girder, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dna" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dnb" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dnc" = ( +/turf/closed/mineral, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dnd" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dne" = ( +/turf/closed/mineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dnf" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dng" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dnh" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dni" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dnj" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dnk" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dnl" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dnm" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dnn" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dno" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dnp" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dnq" = ( +/obj/structure/girder, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dnr" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dns" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dnt" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dnu" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dnv" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dnw" = ( +/turf/closed/mineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dnx" = ( +/turf/closed/mineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dny" = ( +/turf/closed/mineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dnz" = ( +/turf/closed/mineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dnA" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dnB" = ( +/obj/structure/girder, +/obj/item/stack/sheet/metal, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dnC" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dnD" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dnE" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dnF" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dnG" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dnH" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dnI" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dnJ" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dnK" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dnL" = ( +/obj/structure/girder, +/obj/item/stack/sheet/metal, +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dnM" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dnN" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dnO" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dnP" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dnQ" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dnR" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dnS" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dnT" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dnU" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dnV" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dnW" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dnX" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dnY" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/grille/broken, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dnZ" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"doa" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dob" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"doc" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dod" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"doe" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dof" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dog" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"doh" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"doi" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"doj" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dok" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dol" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dom" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"don" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"doo" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dop" = ( +/turf/open/floor/plasteel/floorgrime{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"doq" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dor" = ( +/obj/structure/grille, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dos" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dot" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dou" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dov" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dow" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dox" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"doy" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"doz" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"doA" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"doB" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"doC" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"doD" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"doE" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"doF" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"doG" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"doH" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"doI" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"doJ" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"doK" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"doL" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"doM" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"doN" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"doO" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"doP" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"doQ" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"doR" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"doS" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"doT" = ( +/obj/structure/girder, +/obj/item/stack/sheet/metal, +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"doU" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"doV" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"doW" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"doX" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"doY" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"doZ" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dpa" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dpb" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dpc" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dpd" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dpe" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dpf" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dpg" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dph" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dpi" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dpj" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dpk" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dpl" = ( +/obj/machinery/power/smes/engineering{ + charge = 3e+006 + }, +/obj/structure/cable/orange, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dpm" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dpn" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dpo" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dpp" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dpq" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel/floorgrime{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dpr" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dps" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fore{ + name = "Fore Asteroid Maintenance North" + }) +"dpt" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dpu" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dpv" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dpw" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dpx" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dpy" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dpz" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dpA" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dpB" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dpC" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dpD" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dpE" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dpF" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dpG" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dpH" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dpI" = ( +/obj/structure/closet, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dpJ" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/floorgrime{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dpK" = ( +/obj/structure/girder, +/obj/structure/grille, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dpL" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dpM" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dpN" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dpO" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dpP" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Fore Asteroid Maintenance Access"; + req_access_txt = "12" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dpQ" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Fore Asteroid Maintenance Access"; + req_access_txt = "12" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint{ + name = "Fore Asteroid Maintenance East" + }) +"dpR" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dpS" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dpT" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dpU" = ( +/obj/structure/girder, +/obj/item/stack/sheet/metal, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dpV" = ( +/obj/structure/grille, +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dpW" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dpX" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dpY" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dpZ" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqa" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/floorgrime{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqd" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqe" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqf" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqg" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel/floorgrime{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqh" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqi" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqj" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqk" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dql" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqm" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqn" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqo" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqp" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqq" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqr" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqs" = ( +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 2 + }, +/turf/open/floor/plasteel/floorgrime{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqt" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/floorgrime{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqw" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqx" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel/floorgrime{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqy" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqz" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqA" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqB" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqC" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqD" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqE" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqF" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqG" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqH" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqI" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqJ" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqK" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqL" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqM" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqN" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel/floorgrime{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqO" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Fore Asteroid Maintenance Access"; + req_access_txt = "12" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqP" = ( +/obj/structure/girder, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqQ" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqR" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqS" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqT" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqU" = ( +/obj/structure/girder, +/obj/structure/grille, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqV" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dqW" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqX" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqY" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dqZ" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dra" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"drb" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"drc" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"drd" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dre" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Fore Asteroid Maintenance Access"; + req_access_txt = "12" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"drf" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Fore Asteroid Maintenance Access"; + req_access_txt = "12" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"drg" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"drh" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dri" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"drj" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"drk" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"drl" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"drm" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"drn" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dro" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"drp" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"drq" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"drr" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"drs" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"drt" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dru" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"drv" = ( +/obj/structure/girder, +/obj/item/stack/sheet/metal, +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"drw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"drx" = ( +/turf/closed/mineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dry" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"drz" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"drA" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"drB" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"drC" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"drD" = ( +/turf/closed/mineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"drE" = ( +/turf/closed/mineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"drF" = ( +/turf/closed/mineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"drG" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"drH" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"drI" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"drJ" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"drK" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"drL" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"drM" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + icon_state = "ast_warn"; + dir = 1 + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"drN" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"drO" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"drP" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"drQ" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"drR" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"drS" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"drT" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"drU" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"drV" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"drW" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"drX" = ( +/turf/closed/mineral, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"drY" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"drZ" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dsa" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dsb" = ( +/turf/closed/mineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsc" = ( +/turf/closed/mineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsd" = ( +/turf/closed/mineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dse" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsf" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsg" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsh" = ( +/obj/structure/grille, +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsi" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsj" = ( +/obj/structure/girder, +/obj/item/stack/sheet/metal, +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsk" = ( +/obj/structure/closet/firecloset/full, +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsl" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsm" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsn" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dso" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsp" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsq" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsr" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dss" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dst" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dsu" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dsv" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dsw" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dsx" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dsy" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dsz" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dsA" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dsB" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dsC" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dsD" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dsE" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dsF" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsG" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsH" = ( +/obj/structure/grille, +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsI" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsJ" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsK" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsL" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsM" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsN" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsO" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsP" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsQ" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsR" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsS" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsT" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dsU" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dsV" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dsW" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dsX" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dsY" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dsZ" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dta" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dtb" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dtc" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dtd" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dte" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dtf" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dtg" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dth" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dti" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint{ + name = "Fore Asteroid Maintenance West" + }) +"dtj" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dtk" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dtl" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dtm" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dtn" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dto" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dtp" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dtq" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dtr" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dts" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dtt" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dtu" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dtv" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dtw" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dtx" = ( +/turf/closed/mineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dty" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dtz" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dtA" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dtB" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dtC" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dtD" = ( +/obj/structure/grille, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dtE" = ( +/obj/structure/grille, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dtF" = ( +/obj/effect/turf_decal/stripes/asteroid/line, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dtG" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dtH" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dtI" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dtJ" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dtK" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dtL" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dtM" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dtN" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dtO" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dtP" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dtQ" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dtR" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fpmaint2/fore_port_maintenance{ + name = "Fore Asteroid Maintenance" + }) +"dtS" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dtT" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dtU" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dtV" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dtW" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dtX" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dtY" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dtZ" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel/floorgrime{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dua" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dub" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duc" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dud" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"due" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duf" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dug" = ( +/obj/structure/grille, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duh" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dui" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duj" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duk" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dul" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dum" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dun" = ( +/turf/closed/mineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"duo" = ( +/turf/closed/mineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dup" = ( +/turf/closed/mineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"duq" = ( +/turf/closed/mineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dur" = ( +/turf/closed/mineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dus" = ( +/turf/closed/mineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"dut" = ( +/turf/closed/mineral, +/area/maintenance/fpmaint2/aft_port_maintenance{ + name = "Fore Asteroid Maintenance South" + }) +"duu" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duv" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duw" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dux" = ( +/turf/open/floor/plating/asteroid, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duy" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duz" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duA" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duB" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duC" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Fore Asteroid Maintenance Access"; + req_access_txt = "12" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duD" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duE" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duF" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duG" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duH" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + icon_state = "ast_warn"; + dir = 1 + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duI" = ( +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duJ" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duK" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duL" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duM" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duN" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duO" = ( +/obj/structure/chair/stool, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duP" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duQ" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duR" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duS" = ( +/turf/closed/mineral/random/labormineral, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duT" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duU" = ( +/obj/structure/closet, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duV" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duW" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duX" = ( +/obj/machinery/power/smes/engineering, +/obj/structure/cable/orange, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duY" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"duZ" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dva" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvb" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvc" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvd" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dve" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvf" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvg" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvh" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvi" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvj" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvk" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvl" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvm" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvn" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvo" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvp" = ( +/turf/closed/wall/rust{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvq" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvr" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvs" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvt" = ( +/obj/structure/table, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvu" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvv" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvw" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvx" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvy" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvz" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvA" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/fsmaint2{ + name = "Fore Asteroid Maintenance East" + }) +"dvB" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"dvC" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/astplate{ + baseturf = /turf/open/floor/plating/asteroid/airless + }, +/area/maintenance/port{ + name = "Port Asteroid Maintenance" + }) (1,1,1) = {" aaa @@ -101015,13 +107722,13 @@ aaa aaa aaa abC -afH -afH -afH -afH -afH -afH -afH +dpd +dpH +dqa +dqq +dqG +dqW +drn abC aaa aaa @@ -101272,13 +107979,13 @@ aaa aaa abC abC -afH -aNy +dpe +dpI aOo -aPQ +dqr aQK aiZ -afH +dro abC abC aaa @@ -101527,17 +108234,17 @@ aaa aaa aaa aaa -afH -afH -afE -aNz +dod +doF +dpf +dpJ ajW axF axF axF -afE -afH -afH +drp +drV +dsA aaa aaa aaa @@ -101789,9 +108496,9 @@ aLC aMv aMv aOp -ahm -aQL -aQL +dqs +dqH +dqX aSq aLC aTR @@ -102041,17 +108748,17 @@ abC aaa aaa aaa -afH -afH -afH -aNA +doe +doG +dpg +dpK aOq -aiE +dqt axF axF -afE -afH -afH +drq +drW +dsB aaa aaa aaa @@ -102300,13 +109007,13 @@ abW aaa abW abW -afE +dph axF -aiE -ahf +dqb +dqu aQM aRO -afH +drr abW abW aaa @@ -102528,7 +109235,7 @@ aaa aaa aaa aaa -aaa +cGc aaa aaa aaa @@ -102557,13 +109264,13 @@ acH acH acH acH -afE +dpi axF -aOr +dqc aPR aQN aRP -afH +drs abW abW akm @@ -102810,18 +109517,18 @@ awF aFh atl aep -aqg -afE -afH -afE -afH -afH +dnq +dnH +dof +doH +dpj +dpL aOs aPS -afE -afE -afE -adP +dqI +dqY +drt +drX abW abW aaa @@ -103067,18 +109774,18 @@ awF aFi atl aHz -afc -aqh -afc -afc -afc -afc +dnr +dnI +dog +doI +dpk +dpM aOt aOt -afc +dqJ aRQ -afH -afH +dru +drY acH acH abE @@ -103298,19 +110005,19 @@ aaa aaa aaa abC -afH +dgx aiW aiW aiW -afH +dhi acH acH acH acH aep aep -afH -afH +djf +djr atl atl atl @@ -103326,16 +110033,16 @@ atl aHA aIG apK -anY -anY +doh +doJ aMw -afa -anV -aeJ -afc -afc -aTA -afH +dpN +dqd +dqv +dqK +dqZ +drv +drZ aep acH abE @@ -103555,20 +110262,20 @@ aaa aaa abW abW -afE +dgy aiX ajV aiZ -afE +dhj acH acH acH aep -afE +dix ajW -cLx +djg ajW -cLC +djB aus avC awI @@ -103580,16 +110287,16 @@ aCE aDO aFk aGF -cLJ +dmX aIH -afa +dnJ ajc -afa +doK aMx aNB -aQL +dqe aPT -atM +dqL ajX ajX apM @@ -103812,20 +110519,20 @@ aaa aaa abW abW -afH +dgz aiY ajW akG -afH +dhk abW aep -afH -cLv -afE -cLC -cLI -cLK -cLJ +dhU +dii +diy +diO +djh +djs +djC aut avD awJ @@ -103837,20 +110544,20 @@ aCF aDP aFl cMr -aQL +dmY aII -afc -afH -afH +dnK +doi +doL aMy aNC -afH -afE -afE -afE +dqf +dqw +dqM +dra ajW akT -afE +dsC aep abW abW @@ -104069,15 +110776,15 @@ abW abW acH acH -afE +dgA aiZ ajW ajX -afE +dhl acH aep cLz -aBJ +dij cFi cFl aro @@ -104094,21 +110801,21 @@ aro aDQ aFm aro -aqg -anh -aTA -afH +dmZ +dns +dnL +doj aLD aMz aND -cLW +dqg aPU aQO -afH +drb ajW -afH +dsa aTS -afH +dti abW abW abE @@ -104326,13 +111033,13 @@ acH acH acH acH -afH +dgB aja axF akH -afE +dhm aep -afH +dhI cLA aro cFj @@ -104351,20 +111058,20 @@ aCG aDR aFn aro -afH -anh +dna +dnt aJM -afE +dok aLE axF axF cMU -cLY -cLW -afE +dqx +dqN +drc ajW ajW -cLx +dsD aep acH abW @@ -104583,11 +111290,11 @@ acH acH acH aep -afH -afH -afE +dgC +dgG +dgM akI -afE +dhn aep ajW cLA @@ -104608,20 +111315,20 @@ aCH aDS aFo aro -afE -anh +dnb +dnu aJN -afE +dol aLF aMA aNE aOu aPV cMR -afH -cLS +drd +drw aTu -afE +dsE aep acH abE @@ -104839,7 +111546,7 @@ acH acH acH acH -afE +dgr cFb apM ajX @@ -104865,13 +111572,13 @@ aCI aDT aFp aro -adP +dnc aIJ -afH -afH +dnM +dom aLG -aEt -afH +dpl +dpO cYZ aPW aKq @@ -105098,16 +111805,16 @@ acH acH auC ajX -afc -afc -afc +dgH +dgN +dgY ajX ajX ajX -aAU -aBJ +dhV +dik apx -anT +diP aro asl atp @@ -107243,7 +113950,7 @@ btk btk btk ddI -cJW +ddI btk btk btk @@ -108016,7 +114723,7 @@ bxl ddJ ddX bte -bBF +dem cHi bDU bte @@ -108273,7 +114980,7 @@ bte byn bzm bte -bBF +dem bCC bDO bte @@ -109041,10 +115748,10 @@ bzr ddn bwc ddB -ddL +ddv dea bAq -dep +ddo dey deE bzr @@ -109297,12 +116004,12 @@ brI btj ddo bwc -ddC -ddM -deb +ddB +ddv +dea dej -deq -dez +ddo +dey cUI bzr bGC @@ -109502,10 +116209,10 @@ aOD cIG aRg cIK -adP -adP -aep -aep +drx +dsb +dsF +dtj aUV aUV aUV @@ -109559,7 +116266,7 @@ ddN bzn bAr buB -bzo +ddY bDP bzr bGD @@ -109759,10 +116466,10 @@ cIB cIH aQS cIL -aep -adP -aep -aep +dry +dsc +dsG +dtk aUW aVk aVx @@ -109809,14 +116516,14 @@ boR aYW brI btj -ddp +ddo ddv -ddE -ddO -dec +ddB +ddv +dea bwc -der -deA +ddo +dey bDQ bzr bGE @@ -110016,10 +116723,10 @@ aOE aQa aQS cIL -aep -adP -aoX -afc +drz +dsd +dsH +dtl aUW aVl aVy @@ -110066,14 +116773,14 @@ boR aYW brJ bzr -ddq -ddw -ddF -ddP -ded +ddn +ddv +ddB +ddv +dea bwc -des -deB +ddo +dey bDR bzr bGF @@ -110273,9 +116980,9 @@ aOF aQa aQS cIL -aep -aep -afc +drA +dse +dsI aUs aUX aVm @@ -110327,7 +117034,7 @@ byq bwd bxn ddQ -bzo +ddY byp det bzm @@ -110530,10 +117237,10 @@ cIA aQf aRb cIL -aep -afH -alw -anh +drB +dsf +dsJ +dtm aUW aUW aUV @@ -110581,7 +117288,7 @@ bqm brL bzr ddr -ddx +ddr bxo ddR dee @@ -110787,12 +117494,12 @@ cIC aQe aRa cIM -aep -afc -aos -aoU -aep -adP +drC +dsg +dsK +dtn +dtH +dun abW abW abW @@ -111044,11 +117751,11 @@ cIA aQa aRc cIL -adP -aoX -anh -aep -aep +drD +dsh +dsL +dto +dtI abW abW abW @@ -111098,10 +117805,10 @@ buC ddy bxq ddT -def +ddV bAu -deu -bCF +ddG +ddV bDT bzr bGJ @@ -111301,11 +118008,11 @@ cID aQa aQS cIL -adP -aTz -anh -aep -aep +drE +dsi +dsM +dtp +dtJ abW abW abW @@ -111359,7 +118066,7 @@ bzp dek bBG bwg -deG +ddG bzr bGK bIk @@ -111558,11 +118265,11 @@ aOG aQa aQS cIL -adP -aTA -anh -aep -aep +drF +dsj +dsN +dtq +dtK abW abW aaa @@ -111612,11 +118319,11 @@ buE ddz ddG ddV -deg +ddG del -dev +ddV deC -bCF +ddV bzr bQB bGL @@ -111815,12 +118522,12 @@ aOH aQg cHb cIL -aep -ans +drG +dsk axU -afE -aep -adP +dtr +dtL +duo abW aaa aaa @@ -111875,10 +118582,10 @@ btk btk btk bEX -deI +dei bTq aXZ -bCG +dvC bip bNs bip @@ -112072,12 +118779,12 @@ aOC aQa aQS cIL -aep -afc -anh -afc -aep -adP +drH +dsl +dsO +dts +dtM +dup abW aaa aaa @@ -112329,12 +119036,12 @@ aOI aQa aRe cIL -aep -aep -anh -afc -aep -adP +drI +dsm +dsP +dtt +dtN +duq abW aaa aaa @@ -112566,7 +119273,7 @@ ass aty auA afE -ajW +dki axT azq aAM @@ -112586,12 +119293,12 @@ aOC aQa aQT cIL -aep -afc -anh -afc -aep -adP +drJ +dsn +dsQ +dtu +dtO +dur abW aaa aaa @@ -112819,12 +119526,12 @@ ajr afD acH afH -axF +djt atz -axF +djL afE -ajW -cLA +dkj +dkA cFt aAL aBD @@ -112844,11 +119551,11 @@ aQh aRf cIN aSB -ahd +dso aTX aUt -aep -adP +dtP +dus akm abC abC @@ -113077,9 +119784,9 @@ abW acH afH ast -axF +djD cLP -akn +djU awX cLU cFt @@ -113101,11 +119808,11 @@ aQi cMX cIO aSC -afc -afH -aep -aep -adP +dsp +dsR +dtv +dtQ +dut abW aaa aaa @@ -113326,19 +120033,19 @@ adP adP adP adP -aep -aep -aep -aep -aep -aep +dhw +dhJ +dhW +dil +diz +diQ afH afH afH afH afH cLT -cLA +dkB azq aAN aBF @@ -113357,11 +120064,11 @@ aOL aQa cMX cIL -anh -aep -aep -aep -aep +drK +dsq +dsS +dtw +dtR abW abW aaa @@ -113586,16 +120293,16 @@ alt afE afH afH -aep -aep -aep -aep +dim +diA +diR +dji adP atA aqg cLv -ajW -cLA +dkk +dkC azq aAO aBG @@ -113615,8 +120322,8 @@ aQa cMX cIL aSD -aep -aep +dsr +dsT abW abW abW @@ -113848,11 +120555,11 @@ aqg afH alw afc -ajX +djE cLv -ajW -ajW -cLA +djV +dkl +dkD azq azq azq @@ -113861,7 +120568,7 @@ azq azq azq azq -cMy +dnv cMO aNA aPQ @@ -114094,9 +120801,9 @@ afE afE adP ajs -ajW -ajW -ajW +dgO +dgZ +dho aAU aBJ aBJ @@ -114354,10 +121061,10 @@ afH afH cLt cLv -aep +dhx afH adP -ajW +din ahR aQL anV @@ -114368,19 +121075,19 @@ cLE afE axW azs -ajW -ajW +dkY +dlk cMb -cLG +dmb cLy cLt -cLx +dnd cMF cLv -ajW -ajW -aut -akn +don +doM +dpm +dpP aOL aQk cMX @@ -114608,11 +121315,11 @@ ahf afH adP adP -aep -aep +dgP +dha afH -aep -aep +dhy +dhK ahR aQL aiF @@ -114621,7 +121328,7 @@ cLK cLJ afH ahf -ajW +djW afE axX azt @@ -114867,8 +121574,8 @@ adP adP adP adP -aep -aep +dhp +dhz adP ahf cLC @@ -114878,7 +121585,7 @@ afH afE adP ahf -ajW +djX afE axY azu @@ -115124,8 +121831,8 @@ adP adP adP adP -aep -aep +dhq +dhA afE anU cLD @@ -115140,8 +121847,8 @@ afH axZ azv cLW -axF -axF +dll +dlI aEr aFS aFS @@ -115381,8 +122088,8 @@ adP adP adP adP -aep -aep +dhr +dhB afE cLB cLD @@ -115392,13 +122099,13 @@ aqD aqD aqD auE -akn +djY aqD afH afH aAT -ajW -axF +dlm +dlJ aEs aFS aHa @@ -115643,7 +122350,7 @@ afH afH ahh cLD -aep +diB aqD arz asv @@ -116504,9 +123211,9 @@ aaa aaa aaa aaa -aaa -aaa -aaa +deP +abC +abC abC aaa aaa @@ -116670,7 +123377,7 @@ adP afE alw aeJ -cLA +dio cLt aqD arB @@ -116761,7 +123468,7 @@ aaa aaa aaa aXS -aXS +deQ aXS aXE aYh @@ -117018,7 +123725,7 @@ aaa aXE aXE aXS -aXS +deQ aXS aXS aXS @@ -117275,7 +123982,7 @@ aXS aXS aXS aXS -aXS +deQ aXS aXS aXS @@ -117532,7 +124239,7 @@ aYg aYg aXS aXS -aXS +deQ aXS aXS aXS @@ -117789,7 +124496,7 @@ bzs bzs bzs bzs -bzs +deU bxK bxK bwA @@ -117952,7 +124659,7 @@ adP adP adP alu -ajX +dhC amp afH aoV @@ -118046,7 +124753,7 @@ cHu bwA bzs bwA -bwA +deV cHu bwA bvh @@ -118303,7 +125010,7 @@ cQI bwA cHu cHu -bYq +deW cQe cQC cRq @@ -118467,8 +125174,8 @@ adP adP cLw amp -aep -aep +dhL +dhX aoV apN aqH @@ -118560,7 +125267,7 @@ cUT cUU cUV cUW -cUX +deX cUY cUY cUY @@ -118725,7 +125432,7 @@ afE alw amq afE -aep +dhY aoV apP aqI @@ -118817,7 +125524,7 @@ bDV bDV bDV bDV -bDV +bDZ bDV bxK cHu @@ -118978,11 +125685,11 @@ afE adP adP adP -aep +dhb alx amr afH -aep +dhZ aoV aoV aoV @@ -119074,7 +125781,7 @@ bEY bEY bIm bJI -bEY +deY bLU bLU bLU @@ -119331,7 +126038,7 @@ bEZ bGM bIn bJJ -bJJ +deZ bLU bNt bOr @@ -119493,7 +126200,7 @@ abW adP adP afH -aep +dhs afc amp adP @@ -119588,7 +126295,7 @@ bFa bFa bIn bJK -bJK +dfa bLU bNt bOs @@ -119749,7 +126456,7 @@ abW abW abW adP -aep +dhc afH afc amp @@ -119845,7 +126552,7 @@ bFb bFb bIn bJL -bJL +dfb bLU bNu bOt @@ -120006,7 +126713,7 @@ abW abW acH acH -aep +dhd afE awt amp @@ -120015,7 +126722,7 @@ adP cLt aqK cLv -aiA +dju atK anT avX @@ -120102,7 +126809,7 @@ bDV bDV bIo bDV -bDV +bDZ bLU bNv bOu @@ -120352,14 +127059,14 @@ aXS bxK bwA bxM -bBJ +cQB bxK bDV bFc bGN bGO -bGO -bDV +deM +dfc bLV bNw bLW @@ -120531,7 +127238,7 @@ alx afc aqg atM -ajW +djM avZ aQL aQL @@ -120609,25 +127316,25 @@ aXS bxK cHu bwy -cQB +cUQ bCJ bDW bFd -bGO -bGO -bGO +bGP +bGP +bGP bKF -bLW -bNw -bLW +dfd +dfe +dfh bPC -bPC -bNw -bLW -bPC -bPC -bUK -bLW +dfk +dfn +dfs +dfy +dfF +dfQ +dfV bWf bUK bDV @@ -120784,7 +127491,7 @@ ani anZ aoX apS -ajX +diS arK arK arK @@ -120866,27 +127573,27 @@ aXS bxK bxK cQu -cUQ +cUR bCK bDX bFe -bGP -bGP -bGP +bGQ +bGQ +deN bKG bLX -bNx +bNy bOv bPD -bQF -bRH -bSH -bTt -bTX +bTY +bNy +bNy +bTu +bTY bUL bVt bWg -bUK +dge bDV cHx cHz @@ -121123,24 +127830,24 @@ aYK aYK aYK bAB -cUR +bBJ bCL -bDY +bDZ bFf -bGQ -bGQ +bGO +bGO bJM bKH -bLY -bNy +bQM +dff bOw -bPE -bQG -bNy -bNy -bTu -bTY -bUM +bPF +bQH +bQH +bQH +bTv +bQH +bVK bVu bWh bUK @@ -121298,7 +128005,7 @@ anj amw aoY akl -ajW +diT arK asG atO @@ -121387,18 +128094,18 @@ bFg bGR bIp bJN -bKI -bGQ -bNz +bGO +bGO +bGO bOx -bPF -bQH -bQH -bQH -bTv -bQH +dff +dff +dfo +dft +dfz +dfG bUN -bVv +bVu bWi bWG bXg @@ -121555,7 +128262,7 @@ ank aoa aoZ apT -ajW +diU arK asH atP @@ -121641,21 +128348,21 @@ bBJ bwA bDZ bFh -bGO +deK bIq -bGO +bJN bKJ bGO -bNA -bOy -bPG -bQI -bQI -bQI -bPG bGO -bUO -bVw +bGO +bNA +bGO +bQI +dfu +bPH +dfH +dfD +bVu bWj bWH bOu @@ -121812,7 +128519,7 @@ amv aob apa apU -ajW +diV arK asI atQ @@ -121898,21 +128605,21 @@ bBK cHu bDZ bFi -bGO +deK bIr -bGR +deO bKK bLZ bNB bOz -bPH -bQJ -bQJ -bQJ -bQO bGO +bGO +dfp +dfv +bQJ +dfI +dfD bUP -bVx bWk bWI bXh @@ -122157,20 +128864,20 @@ bDZ bFj bGS bIs +bDZ bDV bDV -bDV -bDV +dfg bOA -bPI -bQK -bQK -bQK -bTw bGO -bUQ +bGO +bQK +dfv +bQJ +dfI +dfR bVy -bLW +dfX bWJ bLU bLU @@ -122414,19 +129121,19 @@ bEa bFk bGT bIt -bJO +bJP bKL bMa bDV bOB bGO -bQL -bRI -bSI -bGO bGO +dfp +dfv +bQJ +dfI +dfD bUQ -bVz bWl bWG bXg @@ -122676,15 +129383,15 @@ bKM bMb bDV bOC -bPJ -bQM -bRJ -bSJ bGO +bGO +bQI +bSJ +dfA cHs +bQI bUQ -bVA -bLW +dfY bWH bOu bXD @@ -122933,15 +129640,15 @@ bKN bMc bNC bOD -bPK -bGO +dfj bGO +dfq bOy -bGO -bGO +dfB +dfL +dfS bUP -bVB -bWk +dfZ bWI bXh bXE @@ -123189,16 +129896,16 @@ bDZ bKM bMb bDV -bOE +bGO bPL bQN +dfr +bPK +dfC bGO -bSK -bSJ bGO bUQ -bVy -bLW +bWh bWK bLU bLU @@ -123450,12 +130157,12 @@ bOF bPM bQO bRK -bOy -bTx +dfx +dfD bTZ +bGO bUQ -bVC -bWl +dga bWG bXg bXF @@ -123707,12 +130414,12 @@ cRb cRb bQP bRL +bTx bSL -bSL +bJN bGO bUQ -bVD -bLW +dgb bWH bOu bXG @@ -123946,7 +130653,7 @@ bnR btq buT bwn -cLf +bjD abC abC abC @@ -123967,10 +130674,10 @@ bRM bSM bTy bUa +dfT bUR -bVE -bWk -bWL +dgc +bWI bXh bXH bYl @@ -124196,19 +130903,19 @@ bjC biJ bjC abC -cLf -cLf -cLf +bjD +bjD +bjD cGb btr buU bkB -cLf -cLf -cLf -cLf -cLf -cLj +bjD +bjD +bjD +bjD +bjD +bCR bEg cQK bHa @@ -124223,10 +130930,10 @@ bQQ bRN bSN bTz +dfM bUb bTz -bVF -bTz +dgd bWM bLU bLU @@ -124476,13 +131183,13 @@ bMg cRk cRs bPP -bQQ +dfm bRO bQG bTA +dfN bUc bUS -bVG bWm bWN bXg @@ -124706,11 +131413,11 @@ bgd bhe bhR biK -cLf -cLf -cLf -cLf -cLf +bjD +bjD +bjD +bjD +bjD bpc bqt bsb @@ -124736,11 +131443,11 @@ cRA cWQ bRP bSO -bOx +bGO +dfO bUd bUT bVH -bGO bWO bOu bXJ @@ -124963,7 +131670,7 @@ bgd bhe bhR biK -cLf +bjD bkB blo bmB @@ -124980,7 +131687,7 @@ bzA bAN bBR bCU -cLj +bCR bFu cHm bIC @@ -124992,12 +131699,12 @@ cRu cRB cWR bRQ -bGO bQL +bPJ bUe bPJ -bVI bPJ +bVI bWP bXh bXK @@ -125220,10 +131927,10 @@ bgd bhe bhR biK -cLf +bjD bkB blp -cLf +bjD cGa bpe bqv @@ -125237,7 +131944,7 @@ bzB bAO bBS bCV -cLj +bCR bFv bHb bIC @@ -125252,9 +131959,9 @@ bRR bSP bTB bUf +dfU bGO bVJ -bQH bWQ bLU bLU @@ -125477,11 +132184,11 @@ bgd bhe bhR biK -cLf +bjD bkC blq bmC -cLf +bjD bpf bqw cLf @@ -125510,7 +132217,7 @@ bSQ bTC bUg bUU -bVK +dfW bWn bWR bDV @@ -125653,9 +132360,9 @@ aaa aaa aaa aaa -afH +dgf agD -afH +dgo aaa aaa aaa @@ -125734,11 +132441,11 @@ bgd bhe bhR biK -cLf +bjD bkD bkB bkB -cLh +bnT bpg bqx cLf @@ -125764,9 +132471,9 @@ cRc bQS bRT bSR +dfE +dfP bTD -bDW -bDV bDV bDV bDV @@ -125910,14 +132617,14 @@ aaa aaa aaa aaa -afH -agB -afH -afH -afH -afH -afH -abW +dgg +dgm +dgp +dgs +dgD +dgI +dgQ +dhe aaa amC abE @@ -125941,10 +132648,10 @@ aGo aHl aEX abW -afH -afH -afH -afH +dnN +doo +doN +dpn aKq aPn aQl @@ -125991,11 +132698,11 @@ bge cFX bhR biK -cLf +bjD bkE bkB bmD -cLh +bnT bph bph bsc @@ -126167,15 +132874,15 @@ aaa aaa aaa aaa -afH +dgh agE ahr ahV aiG aju -afE -afE -adP +dgR +dhf +dht akm abW abW @@ -126198,10 +132905,10 @@ aGp aHm aEX abW -afH +dnO aLi aMf -cLz +dpo aNY aPo aQk @@ -126248,11 +132955,11 @@ bgf bhe bhR biK -cLf +bjD bkD bkB bkB -cLh +bnT bpi bqy cLf @@ -126424,7 +133131,7 @@ aaa aaa aaa aaa -afH +dgi agF ahs ahW @@ -126432,13 +133139,13 @@ aiH ajv akn cLu -afH -afE -adP -aep -aep -aep -aep +dhu +dhD +dhM +dia +dip +diC +diW arS asS atW @@ -126454,8 +133161,8 @@ aEV aGq aHn aEX -adP -afH +dnw +dnP aLj aMg aNe @@ -126505,11 +133212,11 @@ bgg bhe bhR biK -cLf +bjD bkF cLg bmE -cLf +bjD cLi bqz cLf @@ -126522,7 +133229,7 @@ cLf bAT bBS bCW -cLj +bCR bFy bHe bIE @@ -126681,7 +133388,7 @@ aaa aaa aaa aaa -afH +dgj agF aht ahX @@ -126691,10 +133398,10 @@ akn cLu alG cLx -ajW -afH -afE -cLv +dhN +dib +diq +diD aqU arS asT @@ -126711,11 +133418,11 @@ aEW aGr aHo aEX -adP -afH +dnx +dnQ aNz aMh -cLA +dpp aKq aPq aQk @@ -126762,10 +133469,10 @@ bgg bhe bhR biK -cLf +bjD bkB bls -cLf +bjD cGb bpe bqv @@ -126779,7 +133486,7 @@ bzE bAS bBS bCV -cLj +bCR bFz bHb bIC @@ -126938,21 +133645,21 @@ aaa aaa aaa aaa -afH +dgk agG ahu ahu aiI ajx -afE -afE +dgS +dhg aiA -ajW -alx -ajX +dhE +dhO +dic alG -ajW -ajW +diE +diX arS arS arS @@ -126968,11 +133675,11 @@ aEX aEX aEX aEX -adP -afH -axF +dny +dnR +dop aMh -aLE +dpq aKq aPr aQu @@ -127019,7 +133726,7 @@ bgg bhe bhR biK -cLf +bjD bkB cLg cLg @@ -127036,7 +133743,7 @@ bzE bAS bBV bDa -cLj +bCR bFA bHf bIF @@ -127195,38 +133902,38 @@ aaa aaa aaa aaa -afH -afI -afI -afE +dgl +dgn +dgq +dgt aiJ -afE -afE -adP -adP -afH -afc -ajX -ajX -ajX -ajW -cLG +dgJ +dgT +dhh +dhv +dhF +dhP +did +dir +diF +diY +djj asU atY -ahd -apJ -aBJ -aBJ +djN +djZ +dkm +dkE azX aBm -aBJ +dln cMe -aBJ +dmc aGs aAS -adP -adP -afH +dne +dnz +dnS aLk aMi aNf @@ -127276,11 +133983,11 @@ bgg bhe bhR biK -cLf -cLf -cLf -cLf -cLf +bjD +bjD +bjD +bjD +bjD bpe bqB bsd @@ -127455,35 +134162,35 @@ aaa abC abC abC -afI +dgu aiK ahu -afH +dgU abC akm -adP -afH +dhG +dhQ aTz cLF aqh -ajX -ajX -ajX -alv -ajX -ajX -ajX -ajW -ajX -ajX -ajX -ajX -ajX -ajX -anh +diZ +djk +djv +djF +djO +dka +dkn +dkF +dkM +dkZ +dlo +dlK +dmd +dmw +dmM cMy -afE -afE +dnA +dnT aLl aMj aNg @@ -127537,7 +134244,7 @@ biJ bjC biJ bjC -cLf +bjD bpg bqC bse @@ -127712,38 +134419,38 @@ aaa aaa aaa abC -afI +dgv aiL ajy -afH +dgV aaa abW abW -aep -aep -afE -aep -afH -cLv +dhR +die +dis +diG +dja +djl cLL -aoX -afc -afc -alv -afH -anZ -aoX +djG +djP +dkb +dko +dkG +dkN +dla aqh -ajX -afc -afc -anh -ajX +dlL +dme +dmx +dmN +dnf aJu -afE -afE -afH -afH +dnU +doq +doO +dpr aKq aPm aQk @@ -127794,9 +134501,9 @@ bjE biL bjE biK -cLf +bjD bpj -bqD +dvB cGa btF bvc @@ -127969,33 +134676,33 @@ aaa aaa aaa abC -afH -afH -agB -afH +dgw +dgE +dgK +dgW aaa abW abW abW acH acH -aep -afH -afE -afH -adP -adP -awt -aqg -adP -afE -aep -aep +diH +djb +djm +djw +djH +djQ +dkc +dkp +dkH +dkO +dlb +dlp cMf -afc -anZ +dmf +dmy aHp -aBJ +dng cMG cMe cMP @@ -128054,7 +134761,7 @@ bjE abC abC bqE -cLf +bjD btG bvd bwt @@ -128227,9 +134934,9 @@ aaa aaa aaa abC -afH -agC -afH +dgF +dgL +dgX abC akm abW @@ -128241,23 +134948,23 @@ acH acH acH acH -aep -aep -aep +djR +dkd +dkq acH acH acH -aep +dlq aDz -afE -afH -aep -afH -cLv -ajW -cLG -cMF -aut +dmg +dmz +dmO +dnh +dnB +dnV +dor +doP +dps akn aOL aQk @@ -128502,17 +135209,17 @@ acH acH acH acH -aep -afE -afE -ajW -aep +dkP +dlc +dlr +dlM +dmh acH acH -aep -aep -afE -afH +dni +dnC +dnW +dos aKq aKq aKq @@ -128759,11 +135466,11 @@ abW abW abW abW -adP -ajW -ajW -ajW -aep +dkQ +dld +dls +dlN +dmi acH acH acH @@ -129014,13 +135721,13 @@ abW abW abW abW -afE -afE -afE -afE -cLG -afH -adP +dkr +dkI +dkR +dle +dlt +dlO +dmj abW abW abW @@ -129271,13 +135978,13 @@ abW abW abW abW -afE +dks ayF -ajW +dkS cLx -ajW -afE -adP +dlu +dlP +dmk abW abW abW @@ -129528,12 +136235,12 @@ abW abW abW abW -afE +dkt ayG -ajW +dkT cFu -afH -afH +dlv +dlQ abW abW abW @@ -129785,11 +136492,11 @@ abW abW akm abW -afH +dku ayH azY -afH -afH +dlf +dlw abW abW abW @@ -130042,10 +136749,10 @@ aaa aaa abC aaa -afH -aiW -aiW -afH +dkv +dkJ +dkU +dlg abW abW abW @@ -133264,7 +139971,7 @@ ciW ckX cdG cmo -cmV +cle cog coK cpL @@ -139802,17 +146509,17 @@ alc alc amI amI -afH -afH -afE -aep -afH -adP -aep -afH -afH -aep -aep +djc +djn +djx +djI +djS +dke +dkw +dkK +dkV +dlh +dlx alc amI amI @@ -140057,22 +146764,22 @@ aaa alc alc amI -aep -aep -afH -aqh -afc -aoX +dit +diI +djd +djo +djy +djJ cLQ -cLy -aiA +dkf +dkx ayI -alG +dkW aBn -adP -afH -afH -aep +dly +dlR +dml +dmA alc alc alc @@ -140313,23 +147020,23 @@ akx alc amI amI -aep -afE -afH +dif +diu +diJ aor -afc -ajX -alv -ajX -ajX -ajW -cLA -ajW -cLx -ajW -alG -cLv -aep +djp +djz +djK +djT +dkg +dky +dkL +dkX +dli +dlz +dlS +dmm +dmB amI amI aJv @@ -140570,25 +147277,25 @@ akx alc amI amI -aep +dig apo aos -ahd -ahd -ahd +dje +djq +djA cLO avf -ahd -ahd +dkh +dkz ayJ cLO -ahd -ahd +dlj +dlA aDA -afE -afH -aep -aep +dmn +dmC +dmP +dnj aJv aKt aLq @@ -140825,11 +147532,11 @@ ajJ anv cUg aiV -aep -afE -afH -afc -anh +dhH +dhS +dih +div +diK aqY aqY aqY @@ -140840,12 +147547,12 @@ aqY aqY aqY aqY -afc -anh -afE -adP +dlB +dlT +dmo +dmD aHq -adP +dnk aJv aKu aLr @@ -140860,8 +147567,8 @@ aTl aTO aUi aKq -afH -afH +dtS +duu aVC aVU aWm @@ -141083,7 +147790,7 @@ ajK cUh aiV aiV -aTA +dhT aor aos aqn @@ -141097,12 +147804,12 @@ axg ayK arT aqY -aqh +dlC aDB -alG -ajW -cMa -afE +dmp +dmE +dmQ +dnl aJw aKv aLs @@ -141118,7 +147825,7 @@ aTP aUj aKq ajb -aqh +duv aVD aVV aWn @@ -141343,7 +148050,7 @@ amJ akW aos app -afH +diL aqY arU asW @@ -141354,12 +148061,12 @@ asW asW azZ aqY -afE +dlD amn -aBJ -aBJ -aBJ -aAS +dmq +dmF +dmR +dnm aJv aJv aJv @@ -141374,7 +148081,7 @@ aTn aTI aUk aKq -alw +dtT aVs aVE aVW @@ -141600,7 +148307,7 @@ aiV anr aot cLG -adP +diM aqY arV asX @@ -141611,17 +148318,17 @@ axh asW aAa aqY -adP -afE -afH -aiA +dlE +dlU +dmr +dmG cMs cMz cMH -aBJ -aAS -cLx -cMy +dnX +dot +doQ +dpt aKq aPH aQr @@ -141631,8 +148338,8 @@ aTo aTJ aUl aKq -aqh -anh +dtU +duw aVD aVD aVC @@ -141663,7 +148370,7 @@ aZP aZP aZP aZP -cFS +aZr bgx bhq bid @@ -141856,8 +148563,8 @@ alM aiV ans aou -adP -adP +diw +diN aqY arT asW @@ -141868,17 +148575,17 @@ axi axh aAa aqY -adP -adP +dlF +dlV cMh cMh cMh cMh cMh cMh -anh -cLx -afE +dou +doR +dpu aOc aPI aQy @@ -141888,9 +148595,9 @@ aTp aKq aKq aKq -aos +dtV aoU -afE +duN alc alc alc @@ -142134,7 +148841,7 @@ cMA cMI cMh amn -ahd +doS aNh aOj aPJ @@ -142143,10 +148850,10 @@ aRG aKq aKq aKq -adP -adP -anh -afc +dsU +dtx +dtW +dux aKq aKq aKq @@ -142391,19 +149098,19 @@ cMB cMJ cMh cMQ -aTA +doT auB -akn +dpQ aPK aQk aRH aKq -adP -adP -adP +drL +dss +dsV aUL aoU -aep +duy aKq aLo aLn @@ -142647,20 +149354,20 @@ cMv cMC cMK cMh -afH -aep -afH +dov +doU +dpv aKq aPL aQA aRI -aOj +dre aTq -ahd -ahd +dst +dsW aoU -afH -aep +dtX +duz aKq aMl aMl @@ -142911,13 +149618,13 @@ any aPK aQk aRG -akn -akW -aqh -anZ +drf +drM +dsu +dsX afw -afH -aep +dtY +duA aKq aVX aWp @@ -144456,13 +151163,13 @@ ayS aSo any alc -afH +dsY aUQ cZa cZb cNe aWa -afH +dvg alc alc alc @@ -144713,13 +151420,13 @@ cII aSo any alc -afH +dsZ aUR -aLE -ajW -atz +dtZ +duB +duO aWb -afH +dvh alc alc alc @@ -144970,13 +151677,13 @@ aoC aSo any alc -afH -aLi -aAU +dta +dty +dua aVv aVG -aEt -afH +duX +dvi alc alc alc @@ -145227,13 +151934,13 @@ aRN aSp any alc -afH -afH -afH -akn -afH -afH -afH +dtb +dtz +dub +duC +duP +duY +dvj alc alc alc @@ -145480,15 +152187,15 @@ any aOn any aQI -auE +dqO any any alc amI -afH -ajW +dtA +duc cZc -afE +duQ alc alc alc @@ -145731,21 +152438,21 @@ aCn aov cMN any -aep -aep -adP -afH -ajW +dow +doV +dpw +dpR +dqh aQJ cIJ cMa -afE +drN alc alc -afE -ajW +dtB +dud aVI -afH +duR amI amI amI @@ -145988,21 +152695,21 @@ aCn aov aJE any -aep -aep -adP -afE -cLC -cLJ -aiA -afE -afH +dox +doW +dpx +dpS +dqi +dqy +dqP +drg +drO amI -aep -afH -ajW -afH -aep +dtc +dtC +due +duD +duS amI amI alc @@ -146245,20 +152952,20 @@ aHu aIB aJF aGD -aep -aep -afE -cLy -cLD -ajW -ajW -cLt -afE +doy +doX +dpy +dpT +dqj +dqz +dqQ +drh +drP amI -afH -alv -ajW -afE +dtd +dtD +duf +duE amI amI amI @@ -146502,20 +153209,20 @@ aHv aIC aJG aGD -aep -aep -aep -cLv -cLD +doz +doY +dpz +dpU +dqk aVI -afE -adP -afE -aep -aep -alv -alv -aep +dqR +dri +drQ +dsv +dte +dtE +dug +duF amI alc alc @@ -146759,22 +153466,22 @@ aHw aID aJH aGD -adP -aep -aep -aoX +doA +doZ +dpA +dpV cIF -afH -adP -afE -afH -afE +dqA +dqS +drj +drR +dsw aUS afw -afH -afE -afE -afH +duh +duG +duT +duZ alc alc alc @@ -147016,25 +153723,25 @@ aHx aID aJI aGD -adP -afH -afH -alw -amp -alx -afH -ajW -ajW -ajW -ajX -auB +doB +dpa +dpB +dpW +dql +dqB +dqT +drk +drS +dsx +dtf +dtF avO -akW -aNy -afE -afH -afE -afH +duH +duU +dva +dvk +dvp +dvv akx akx aaa @@ -147275,23 +153982,23 @@ aJJ aGD aGD aMs -afE -alx -amp -ajW -aNA -ajW -ajW -cLx -ajW +dpC +dpX +dqm +dqC +dqU +drl +drT +dsy +dtg afb -afH -ajX -ajW -afE -ajW -ajW -aiW +dui +duI +duV +dvb +dvl +dvq +dvw akx akx aaa @@ -147534,21 +154241,21 @@ cIj cIn aNx cIz -cLJ -afE -afH -afH -afH -aep -afE -afH -afE -ajW +dqn +dqD +dqV +drm +drU +dsz +dth +dtG +duj +duJ aVH -ajW -ajW -ajW -aiW +dvc +dvm +dvr +dvx aaa aaa aaa @@ -147788,24 +154495,24 @@ aGD aGD aGD aGD -cLz -aBJ +dpb +dpD aoU cMW -afE +dqE alc amI amI amI alc alc -afE -ajW +duk +duK aVI -afH +dvd aWr -ajW -aiW +dvs +dvy aaa aaa aaa @@ -148036,33 +154743,33 @@ axp ayV aAl amP -adP -afE -afH -adP -adP +dlG +dlW +dms +dmH +dmS aIF -aBJ -cMH -aBJ +dnD +dnY +doC aMt -atM -afc -afH -aep +dpE +dpY +dqo +dqF alc amI amI amI amI alc -afE -aPQ +dul +duL aVJ -afE -akG -aiZ -aiW +dve +dvn +dvt +dvz aaa aaa cGc @@ -148294,18 +155001,18 @@ ayW avq amP cMa -cLx -aos -ahd -apJ +dlX +dmt +dmI +dmT aoU -ajX -alx -ajW +dnE +dnZ +doD aMu -afE -adP -aep +dpF +dpZ +dqp amI alc amI @@ -148313,13 +155020,13 @@ amI amI amI alc -afH -afH -afH -afH -afH -afH -afH +dum +duM +duW +dvf +dvo +dvu +dvA abC abC abC @@ -148551,16 +155258,16 @@ ayX aAm amP aCx -atY +dlY aoU -aqh -afc -afc +dmJ +dmU +dnn aJL -adP -adP -afH -adP +doa +doE +dpc +dpG alc alc alc @@ -148808,13 +155515,13 @@ ayY aAn amP afw -aTA -anZ -aoX -ans -afH -afE -adP +dlZ +dmu +dmK +dmV +dno +dnF +dob alc alc alc @@ -149064,14 +155771,14 @@ amP amP amP amP -afH -afE -afE -adP -adP -adP -adP -adP +dlH +dma +dmv +dmL +dmW +dnp +dnG +doc alc alc alc diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index c157cdc7809..6afa5767f1a 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -40948,10 +40948,7 @@ /obj/machinery/firealarm{ dir = 1; pixel_x = -32; - pixel_y = -26 - }, -/obj/structure/sign/electricshock{ - pixel_x = -32 + pixel_y = 6 }, /obj/structure/disposalpipe/segment{ dir = 4; @@ -40963,7 +40960,7 @@ name = "Transfer Door Control"; normaldoorcontrol = 1; pixel_x = -24; - pixel_y = -40 + pixel_y = -8 }, /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -41940,6 +41937,9 @@ /obj/structure/grille, /obj/structure/window/reinforced/fulltile, /obj/structure/disposalpipe/segment, +/obj/structure/sign/electricshock{ + pixel_x = -32 + }, /turf/open/floor/plating, /area/security/transfer) "bBB" = ( @@ -63624,6 +63624,7 @@ dir = 8 }, /obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister/freon, /turf/open/floor/plasteel, /area/engine/engineering) "cqt" = ( diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 26c4cc57191..303005c32f9 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -56825,7 +56825,6 @@ icon_state = "4-8" }, /turf/open/floor/plasteel{ - desc = ""; icon_state = "L13"; name = "floor" }, @@ -57517,7 +57516,6 @@ dir = 4 }, /turf/open/floor/plasteel{ - desc = ""; icon_state = "L14" }, /area/hallway/primary/central) diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index bd71cc47948..99cef30ebd5 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -47062,6 +47062,11 @@ icon_state = "1-2" }, /obj/effect/turf_decal/stripes/line, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/open/floor/plasteel, /area/engine/engineering) "bPR" = ( @@ -55914,6 +55919,20 @@ /obj/machinery/light, /turf/open/floor/pod/light, /area/shuttle/transport) +"cjQ" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/power/apc{ + cell_type = 15000; + dir = 2; + name = "Engineering APC"; + pixel_y = -24 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) (1,1,1) = {" aaa @@ -89495,7 +89514,7 @@ bNt bOE bNt bNt -bPE +cjQ bMb bQy bMb diff --git a/_maps/map_files/generic/Centcomm.dmm b/_maps/map_files/generic/Centcomm.dmm index ba62ea23579..be683695788 100644 --- a/_maps/map_files/generic/Centcomm.dmm +++ b/_maps/map_files/generic/Centcomm.dmm @@ -12212,7 +12212,7 @@ name = "Thunderdome Blast Door" }, /turf/open/floor/plasteel/loadingarea{ - baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + baseturf = /turf/open/space; dir = 8 }, /area/tdome/arena) @@ -12243,7 +12243,7 @@ name = "General Supply" }, /turf/open/floor/plasteel/loadingarea{ - baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + baseturf = /turf/open/space; dir = 8 }, /area/tdome/arena) @@ -12394,7 +12394,7 @@ /area/tdome/arena) "Ey" = ( /turf/open/floor/plasteel/loadingarea{ - baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + baseturf = /turf/open/space; dir = 8 }, /area/tdome/arena) @@ -13716,7 +13716,7 @@ /area/tdome/arena_source) "IS" = ( /turf/open/floor/plasteel/loadingarea{ - baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + baseturf = /turf/open/space; dir = 8 }, /area/tdome/arena_source) @@ -13765,7 +13765,7 @@ /area/tdome/arena_source) "Jd" = ( /turf/open/floor/plasteel/loadingarea{ - baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + baseturf = /turf/open/space; dir = 8 }, /area/tdome/arena_source) diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm index 26c0b8c984e..165690571f1 100644 --- a/code/__DEFINES/antagonists.dm +++ b/code/__DEFINES/antagonists.dm @@ -3,3 +3,6 @@ #define ANTAG_DATUM_CLOCKCULT /datum/antagonist/clockcult #define ANTAG_DATUM_CLOCKCULT_SILENT /datum/antagonist/clockcult/silent #define ANTAG_DATUM_DEVIL /datum/antagonist/devil +#define ANTAG_DATUM_NINJA /datum/antagonist/ninja +#define ANTAG_DATUM_NINJA_FRIENDLY /datum/antagonist/ninja/friendly +#define ANTAG_DATUM_NINJA_RANDOM /datum/antagonist/ninja/randomAllegiance/ diff --git a/code/__DEFINES/cult.dm b/code/__DEFINES/cult.dm new file mode 100644 index 00000000000..71d4ad3af9b --- /dev/null +++ b/code/__DEFINES/cult.dm @@ -0,0 +1,9 @@ +//rune colors, for easy reference +#define RUNE_COLOR_TALISMAN "#0000FF" +#define RUNE_COLOR_TELEPORT "#551A8B" +#define RUNE_COLOR_OFFER "#FFFFFF" +#define RUNE_COLOR_DARKRED "#7D1717" +#define RUNE_COLOR_MEDIUMRED "#C80000" +#define RUNE_COLOR_RED "#FF0000" +#define RUNE_COLOR_EMP "#4D94FF" +#define RUNE_COLOR_SUMMON "#00FF00" diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index a0516bfd5c6..8d9af56105b 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -27,6 +27,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define BLOCK_GAS_SMOKE_EFFECT 4096 // blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY! #define THICKMATERIAL 8192 //prevents syringes, parapens and hypos if the external suit or helmet (if targeting head) has this flag. Example: space suits, biosuit, bombsuits, thick suits that cover your body. #define DROPDEL 16384 // When dropped, it calls qdel on itself +#define PREVENT_CLICK_UNDER 32768 //Prevent clicking things below it on the same turf eg. doors/ fulltile windows /* Secondary atom flags, access using the SECONDARY_FLAG macros */ diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 7edf1f5959b..463c7cfee5e 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -402,3 +402,7 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE //Error handler defines #define ERROR_USEFUL_LEN 2 + +#define NO_FIELD 0 +#define FIELD_TURF 1 +#define FIELD_EDGE 2 diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index 77896d2886d..be095882cba 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -40,3 +40,5 @@ #define STATUS_EFFECT_HISWRATH /datum/status_effect/his_wrath //His Wrath. #define STATUS_EFFECT_SUMMONEDGHOST /datum/status_effect/cultghost //is a cult ghost and can't use manifest runes + +#define STATUS_EFFECT_CRUSHERMARK /datum/status_effect/crusher_mark //if struck with a proto-kinetic crusher, takes a ton of damage diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 9a0bf8d401e..371bad418c1 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -40,6 +40,7 @@ // Subsystem init_order, from highest priority to lowest priority // The numbers just define the ordering, they are meaningless otherwise. +#define INIT_ORDER_SERVER_MAINT 16 #define INIT_ORDER_JOBS 15 #define INIT_ORDER_EVENTS 14 #define INIT_ORDER_TICKER 13 diff --git a/code/__HELPERS/files.dm b/code/__HELPERS/files.dm index 5983f26950d..a76a9ac6236 100644 --- a/code/__HELPERS/files.dm +++ b/code/__HELPERS/files.dm @@ -3,7 +3,7 @@ for(var/file in args) src << browse_rsc(file) -/client/proc/browse_files(root="data/logs/", max_iterations=10, list/valid_extensions=list(".txt",".log",".htm")) +/client/proc/browse_files(root="data/logs/", max_iterations=10, list/valid_extensions=list(".txt",".log",".htm", ".html")) var/path = root for(var/i=0, i world.time) + return FALSE + return TRUE + +//pass a list in the format list("health" = mob's health var) to check health during this +/mob/living/break_do_after_checks(list/checked_health, check_clicks) + if(islist(checked_health)) + if(health < checked_health["health"]) + return FALSE + checked_health["health"] = health + return ..() + /proc/do_after(mob/user, delay, needhand = 1, atom/target = null, progress = 1, datum/callback/extra_checks = null) if(!user) return 0 diff --git a/code/__HELPERS/names.dm b/code/__HELPERS/names.dm index 49be0a12c3b..58b8fbaa0f0 100644 --- a/code/__HELPERS/names.dm +++ b/code/__HELPERS/names.dm @@ -167,9 +167,13 @@ GLOBAL_VAR(syndicate_code_response) //Code response for traitors. /N */ -/proc/generate_code_phrase()//Proc is used for phrase and response in master_controller.dm +/proc/generate_code_phrase(return_list=FALSE)//Proc is used for phrase and response in master_controller.dm + + if(!return_list) + . = "" + else + . = list() - var/code_phrase = ""//What is returned when the proc finishes. var/words = pick(//How many words there will be. Minimum of two. 2, 4 and 5 have a lesser chance of being selected. 3 is the most likely. 50; 2, 200; 3, @@ -204,39 +208,39 @@ GLOBAL_VAR(syndicate_code_response) //Code response for traitors. switch(rand(1,2))//Mainly to add more options later. if(1) if(names.len&&prob(70)) - code_phrase += pick(names) + . += pick(names) else if(prob(10)) - code_phrase += pick(lizard_name(MALE),lizard_name(FEMALE)) + . += pick(lizard_name(MALE),lizard_name(FEMALE)) else - code_phrase += pick(pick(GLOB.first_names_male,GLOB.first_names_female)) - code_phrase += " " - code_phrase += pick(GLOB.last_names) + var/new_name = pick(pick(GLOB.first_names_male,GLOB.first_names_female)) + new_name += " " + new_name += pick(GLOB.last_names) + . += new_name if(2) - code_phrase += pick(get_all_jobs())//Returns a job. + . += pick(get_all_jobs())//Returns a job. safety -= 1 if(2) switch(rand(1,3))//Food, drinks, or things. Only selectable once. if(1) - code_phrase += lowertext(pick(drinks)) + . += lowertext(pick(drinks)) if(2) - code_phrase += lowertext(pick(foods)) + . += lowertext(pick(foods)) if(3) - code_phrase += lowertext(pick(locations)) + . += lowertext(pick(locations)) safety -= 2 if(3) switch(rand(1,4))//Abstract nouns, objects, adjectives, threats. Can be selected more than once. if(1) - code_phrase += lowertext(pick(nouns)) + . += lowertext(pick(nouns)) if(2) - code_phrase += lowertext(pick(objects)) + . += lowertext(pick(objects)) if(3) - code_phrase += lowertext(pick(adjectives)) + . += lowertext(pick(adjectives)) if(4) - code_phrase += lowertext(pick(threats)) - if(words==1) - code_phrase += "." - else - code_phrase += ", " - - return code_phrase + . += lowertext(pick(threats)) + if(!return_list) + if(words==1) + . += "." + else + . += ", " diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index f35a6eaa156..c5947259d48 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1416,3 +1416,24 @@ GLOBAL_PROTECT(valid_HTTPSGet) mob_occupant = brain.brainmob return mob_occupant + +/proc/msglog_admins(text) + message_admins(text) + log_admin(text) + +/proc/trigger_centcom_recall() + if(SSshuttle.emergency.mode != SHUTTLE_CALL) + return + + var/time = rand(600, 1200) + var/message = pick(GLOB.annoyed_admiral_messages) + + message = input("Enter message from the on-call admiral to be put in the recall report.", "Annoyed Admiral Message", message) as text|null + + if(!message) + return + + message_admins("[key_name_admin(usr)] triggered a Centcom recall in [time/10] seconds, with the annoyed admiral message of: [message]") + log_game("[key_name(usr)] triggered a Centcom recall in [time/10] seconds, with the annoyed admiral message of: [message]") + + addtimer(CALLBACK(SSshuttle, /datum/controller/subsystem/shuttle/.proc/centcom_recall, SSshuttle.emergency.timer, message), time) diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index 7a4ce0c57a0..7f1198be394 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -161,3 +161,5 @@ GLOBAL_LIST_INIT(numbers_as_words, list("One", "Two", "Three", "Four", return L GLOBAL_LIST_INIT(station_numerals, greek_letters + phonetic_alphabet + numbers_as_words + generate_number_strings()) + +GLOBAL_LIST_INIT(annoyed_admiral_messages, list("Do you know how expensive these stations are?","Stop wasting my time.","I was sleeping, thanks a lot.","Stand and fight you cowards!","You knew the risks coming in.","Stop being paranoid.","Whatever's broken just build a new one.","No.", "null","Error: No comment given.", "It's a good day to die!")) diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm index ba50d63aae0..59326c5c170 100644 --- a/code/_globalvars/misc.dm +++ b/code/_globalvars/misc.dm @@ -8,7 +8,7 @@ GLOBAL_VAR_INIT(fileaccess_timer, 0) GLOBAL_VAR_INIT(TAB, "    ") -GLOBAL_DATUM(data_core, /datum/datacore) +GLOBAL_DATUM_INIT(data_core, /datum/datacore, new) GLOBAL_VAR_INIT(CELLRATE, 0.002) // multiplier for watts per tick <> cell storage (eg: .002 means if there is a load of 1000 watts, 20 units will be taken from a cell per second) GLOBAL_VAR_INIT(CHARGELEVEL, 0.001) // Cap for how fast cells charge, as a percentage-per-tick (.001 means cellcharge is capped to 1% per second) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 0c40be56ac5..d37ff5ef516 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -92,6 +92,9 @@ if(next_move > world.time) // in the year 2000... return + if(A.IsObscured()) + return + if(istype(loc,/obj/mecha)) var/obj/mecha/M = loc return M.click_action(A,src,params) @@ -141,6 +144,24 @@ else RangedAttack(A,params) +//Is the atom obscured by a PREVENT_CLICK_UNDER object above it +/atom/proc/IsObscured() + if(!isturf(loc)) //This only makes sense for things directly on turfs for now + return FALSE + var/turf/T = get_turf_pixel(src) + if(!T) + return FALSE + for(var/atom/movable/AM in T) + if(AM.flags & PREVENT_CLICK_UNDER && AM.density && AM.layer > layer) + return TRUE + return FALSE + +/turf/IsObscured() + for(var/atom/movable/AM in src) + if(AM.flags & PREVENT_CLICK_UNDER && AM.density) + return TRUE + return FALSE + /atom/movable/proc/CanReach(atom/target,obj/item/tool,view_only = FALSE) if(isturf(target) || isturf(target.loc) || DirectAccess(target)) //Directly accessible atoms if(Adjacent(target) || (tool && CheckToolReach(src, target, tool.reach))) //Adjacent or reaching attacks diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index b1c5a6bb1ed..4400070dfb4 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -28,7 +28,7 @@ if(sharpness) to_chat(user, "You begin to butcher [src]...") playsound(loc, 'sound/weapons/slice.ogg', 50, 1, -1) - if(do_mob(user, src, 80/sharpness)) + if(do_mob(user, src, 80/sharpness) && Adjacent(I)) harvest(user) return 1 return I.attack(src, user) diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index 90b3983d821..c7ad66440ea 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -13,7 +13,7 @@ /atom/proc/attack_tk(mob/user) if(user.stat) return - new /obj/effect/overlay/temp/telekinesis(loc) + new /obj/effect/temp_visual/telekinesis(loc) user.UnarmedAttack(src,0) // attack_hand, attack_paw, etc return @@ -163,7 +163,7 @@ /obj/item/tk_grab/proc/apply_focus_overlay() if(!focus) return - new /obj/effect/overlay/temp/telekinesis(get_turf(focus)) + new /obj/effect/temp_visual/telekinesis(get_turf(focus)) /obj/item/tk_grab/update_icon() cut_overlays() diff --git a/code/controllers/master.dm b/code/controllers/master.dm index a220c2530cd..773f334b673 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -83,6 +83,7 @@ GLOBAL_VAR_INIT(CURRENT_TICKLIMIT, TICK_LIMIT_RUNNING) sortTim(subsystems, /proc/cmp_subsystem_init) reverseRange(subsystems) for(var/datum/controller/subsystem/ss in subsystems) + testing("Shutdown [ss.name] subsystem") ss.Shutdown() // Returns 1 if we created a new mc, 0 if we couldn't due to a recent restart, diff --git a/code/controllers/subsystem/atoms.dm b/code/controllers/subsystem/atoms.dm index 98e3ba2330c..31af608bfd4 100644 --- a/code/controllers/subsystem/atoms.dm +++ b/code/controllers/subsystem/atoms.dm @@ -150,9 +150,9 @@ SUBSYSTEM_DEF(atoms) /datum/controller/subsystem/atoms/Shutdown() var/initlog = InitLog() if(initlog) - log_world(initlog) + text2file("[GLOB.log_directory]/initialize.log", initlog) #undef BAD_INIT_QDEL_BEFORE #undef BAD_INIT_DIDNT_INIT #undef BAD_INIT_SLEPT -#undef BAD_INIT_NO_HINT \ No newline at end of file +#undef BAD_INIT_NO_HINT diff --git a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm index 5b2c67c2969..76daddcf6a4 100644 --- a/code/controllers/subsystem/blackbox.dm +++ b/code/controllers/subsystem/blackbox.dm @@ -54,6 +54,8 @@ SUBSYSTEM_DEF(blackbox) return FALSE /datum/controller/subsystem/blackbox/Shutdown() + set_val("ahelp_unresolved", GLOB.ahelp_tickets.active_tickets.len) + var/pda_msg_amt = 0 var/rc_msg_amt = 0 @@ -87,7 +89,7 @@ SUBSYSTEM_DEF(blackbox) var/list/sqlrowlist = list() for (var/datum/feedback_variable/FV in feedback) - sqlrowlist += list("time" = "Now()", "round_id" = GLOB.round_id, "var_name" = "'[sanitizeSQL(FV.get_variable())]'", "var_value" = FV.get_value(), "details" = "'[sanitizeSQL(FV.get_details())]'") + sqlrowlist += list(list("time" = "Now()", "round_id" = GLOB.round_id, "var_name" = "'[sanitizeSQL(FV.get_variable())]'", "var_value" = FV.get_value(), "details" = "'[sanitizeSQL(FV.get_details())]'")) if (!length(sqlrowlist)) return diff --git a/code/controllers/subsystem/fields.dm b/code/controllers/subsystem/fields.dm new file mode 100644 index 00000000000..8e9f387478a --- /dev/null +++ b/code/controllers/subsystem/fields.dm @@ -0,0 +1,27 @@ + +SUBSYSTEM_DEF(fields) + name = "Fields" + wait = 2 + priority = 40 + flags = SS_KEEP_TIMING + var/list/datum/proximity_monitor/advanced/running = list() + var/list/datum/proximity_monitor/advanced/currentrun = list() + +/datum/controller/subsystem/fields/fire(resumed = 0) + if(!resumed) + src.currentrun = running.Copy() + var/list/currentrun = src.currentrun + while(currentrun.len) + var/datum/proximity_monitor/advanced/F = currentrun[currentrun.len] + currentrun.len-- + if(!F.requires_processing) + continue + F.process() + if(MC_TICK_CHECK) + return + +/datum/controller/subsystem/fields/proc/register_new_field(datum/proximity_monitor/advanced/F) + running += F + +/datum/controller/subsystem/fields/proc/unregister_field(datum/proximity_monitor/advanced/F) + running -= F diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index 628c6a14eac..3d2fd637d5b 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -61,7 +61,7 @@ SUBSYSTEM_DEF(garbage) for(var/path in sleptDestroy) dellog += "Path : [path] \n" dellog += "Sleeps : [sleptDestroy[path]] \n" - log_world(dellog.Join()) + text2file("[GLOB.log_directory]/qdel.log", dellog.Join()) /datum/controller/subsystem/garbage/fire() HandleToBeQueued() @@ -182,14 +182,13 @@ SUBSYSTEM_DEF(garbage) // Should be treated as a replacement for the 'del' keyword. // Datums passed to this will be given a chance to clean up references to allow the GC to collect them. /proc/qdel(datum/D, force=FALSE) - if(!D) + if(!istype(D)) + del(D) return #ifdef TESTING SSgarbage.qdel_list += "[D.type]" #endif - if(!istype(D)) - del(D) - else if(isnull(D.gc_destroyed)) + if(isnull(D.gc_destroyed)) D.gc_destroyed = GC_CURRENTLY_BEING_QDELETED var/start_time = world.time var/hint = D.Destroy(force) // Let our friend know they're about to get fucked up. diff --git a/code/controllers/subsystem/server_maint.dm b/code/controllers/subsystem/server_maint.dm index a24d952b9dc..3400c6b9509 100644 --- a/code/controllers/subsystem/server_maint.dm +++ b/code/controllers/subsystem/server_maint.dm @@ -5,6 +5,7 @@ SUBSYSTEM_DEF(server_maint) wait = 6 flags = SS_POST_FIRE_TIMING priority = 10 + init_order = INIT_ORDER_SERVER_MAINT runlevels = RUNLEVEL_LOBBY | RUNLEVELS_DEFAULT var/list/currentrun @@ -37,4 +38,11 @@ SUBSYSTEM_DEF(server_maint) if (MC_TICK_CHECK) //one day, when ss13 has 1000 people per server, you guys are gonna be glad I added this tick check return +/datum/controller/subsystem/server_maint/Shutdown() + kick_clients_in_lobby("The round came to an end with you in the lobby.", TRUE) //second parameter ensures only afk clients are kicked + for(var/thing in GLOB.clients) + var/client/C = thing + if(C && config.server) //if you set a server location in config.txt, it sends you there instead of trying to reconnect to the same world address. -- NeoFite + C << link("byond://[config.server]") + #undef PING_BUFFER_TIME diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index 5057bf63ecb..e1c85849c5c 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -215,7 +215,32 @@ SUBSYSTEM_DEF(shuttle) emergency.request(null, signal_origin, html_decode(emergency_reason), 0) log_game("[key_name(user)] has called the shuttle.") - message_admins("[key_name_admin(user)] has called the shuttle.") + message_admins("[key_name_admin(user)] has called the shuttle. (TRIGGER CENTCOM RECALL)") + +/datum/controller/subsystem/shuttle/proc/centcom_recall(old_timer, annoyed_admiral_message) + if(emergency.mode != SHUTTLE_CALL || emergency.timer != old_timer) + return + + emergency.cancel(/area/centcom) + msglog_admins("Shuttle has been recalled from Centcom.") + + addtimer(CALLBACK(src, .proc/centcom_recall2, annoyed_admiral_message), 50) + +/datum/controller/subsystem/shuttle/proc/centcom_recall2(annoyed_admiral_message) + if(!annoyed_admiral_message) + annoyed_admiral_message = pick(GLOB.annoyed_admiral_messages) + var/intercepttext = "NanoTrasen Update: Request For Shuttle.
\ + To whom it may concern:

\ + We have taken note of the situation upon [station_name()] and have come to the \ + conclusion that it does not warrant the abandonment of the station.
\ + If you do not agree with our opinion we suggest that you open a direct \ + line with us and explain the nature of your crisis.

\ + This message has been automatically generated based upon readings from long \ + range diagnostic tools. To assure the quality of your request every finalized report \ + is reviewed by an on-call rear admiral.
\ + Rear Admiral's Notes: \ + [annoyed_admiral_message]" + print_command_report(intercepttext, announce=TRUE) // Called when an emergency shuttle mobile docking port is // destroyed, which will only happen with admin intervention @@ -514,4 +539,4 @@ SUBSYSTEM_DEF(shuttle) for(var/obj/docking_port/mobile/M in mobile) if(M.is_in_shuttle_bounds(A)) return TRUE - \ No newline at end of file + diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index e3c8f47471e..dab36e8e33e 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -20,6 +20,7 @@ SUBSYSTEM_DEF(ticker) var/login_music //music played in pregame lobby var/round_end_sound //music/jingle played when the world reboots + var/round_end_sound_sent = TRUE //If all clients have loaded it var/list/datum/mind/minds = list() //The characters in the game. Used for objective tracking. @@ -61,6 +62,7 @@ SUBSYSTEM_DEF(ticker) var/list/round_start_events /datum/controller/subsystem/ticker/Initialize(timeofday) + load_mode() var/list/music = world.file2list(ROUND_START_MUSIC_LIST, "\n") login_music = pick(music) @@ -616,9 +618,9 @@ SUBSYSTEM_DEF(ticker) sleep(50) if(mode.station_was_nuked) - world.Reboot("Station destroyed by Nuclear Device.", "end_proper", "nuke") + Reboot("Station destroyed by Nuclear Device.", "end_proper", "nuke") else - world.Reboot("Round ended.", "end_proper", "proper completion") + Reboot("Round ended.", "end_proper", "proper completion") /datum/controller/subsystem/ticker/proc/send_tip_of_the_round() var/m @@ -779,3 +781,69 @@ SUBSYSTEM_DEF(ticker) start_at = world.time + newtime else timeLeft = newtime + +/datum/controller/subsystem/ticker/proc/load_mode() + var/mode = trim(file2text("data/mode.txt")) + if(mode) + GLOB.master_mode = mode + else + GLOB.master_mode = "extended" + log_game("Saved mode is '[GLOB.master_mode]'") + +/datum/controller/subsystem/ticker/proc/save_mode(the_mode) + var/F = file("data/mode.txt") + fdel(F) + F << the_mode + +/datum/controller/subsystem/ticker/proc/SetRoundEndSound(the_sound) + set waitfor = FALSE + round_end_sound_sent = FALSE + round_end_sound = fcopy_rsc(the_sound) + for(var/thing in GLOB.clients) + var/client/C = thing + if (!C) + continue + C.Export("##action=load_rsc", round_end_sound) + round_end_sound_sent = TRUE + +/datum/controller/subsystem/ticker/proc/Reboot(reason, feedback_c, feedback_r, delay) + set waitfor = FALSE + if(usr && !check_rights(R_SERVER, TRUE)) + return + + if(!delay) + delay = config.round_end_countdown * 10 + + if(delay_end) + to_chat(world, "An admin has delayed the round end.") + return + + to_chat(world, "Rebooting World in [delay/10] [(delay >= 10 && delay < 20) ? "second" : "seconds"]. [reason]") + + var/start_wait = world.time + UNTIL(round_end_sound_sent && (world.time - start_wait) > (delay * 2)) //don't wait forever + sleep(delay - (world.time - start_wait)) + + if(delay_end) + to_chat(world, "Reboot was cancelled by an admin.") + return + + SSblackbox.set_details("[feedback_c]","[feedback_r]") + + log_game("Rebooting World. [reason]") + + world.Reboot() + +/datum/controller/subsystem/ticker/Shutdown() + if(!round_end_sound) + round_end_sound = pick(\ + 'sound/roundend/newroundsexy.ogg', + 'sound/roundend/apcdestroyed.ogg', + 'sound/roundend/bangindonk.ogg', + 'sound/roundend/leavingtg.ogg', + 'sound/roundend/its_only_game.ogg', + 'sound/roundend/yeehaw.ogg', + 'sound/roundend/disappointed.ogg'\ + ) + + world << sound(round_end_sound) \ No newline at end of file diff --git a/code/controllers/subsystem/title.dm b/code/controllers/subsystem/title.dm index d9f4ef99386..6c5466d8d9f 100644 --- a/code/controllers/subsystem/title.dm +++ b/code/controllers/subsystem/title.dm @@ -55,6 +55,12 @@ SUBSYSTEM_DEF(title) var/F = file("data/previous_title.dat") F << file_path + for(var/thing in GLOB.clients) + if(!thing) + continue + var/obj/screen/splash/S = new(thing, FALSE) + S.Fade(FALSE,FALSE) + /datum/controller/subsystem/title/Recover() icon = SStitle.icon splash_turf = SStitle.splash_turf diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index a914074a418..05c45988ca4 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -118,7 +118,7 @@ SUBSYSTEM_DEF(vote) restart = 1 if("gamemode") if(GLOB.master_mode != .) - world.save_mode(.) + SSticker.save_mode(.) if(SSticker.HasRoundStarted()) restart = 1 else @@ -130,7 +130,7 @@ SUBSYSTEM_DEF(vote) active_admins = 1 break if(!active_admins) - world.Reboot("Restart vote successful.", "end_error", "restart vote") + SSticker.Reboot("Restart vote successful.", "end_error", "restart vote") else to_chat(world, "Notice:Restart vote will not restart the server automatically because there are active admins on.") message_admins("A restart vote has passed, but there are active admins on with +server, so it has been canceled. If you wish, you may restart the server.") diff --git a/code/datums/action.dm b/code/datums/action.dm index 5a397fe3bda..ba3dc04f567 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -358,6 +358,59 @@ active = FALSE ..() +/datum/action/item_action/initialize_ninja_suit + name = "Toggle ninja suit" + +/datum/action/item_action/ninjajaunt + name = "Phase Jaunt (10E)" + desc = "Utilizes the internal VOID-shift device to rapidly transit in direction facing." + button_icon_state = "ninja_phase" + +/datum/action/item_action/ninjasmoke + name = "Smoke Bomb" + desc = "Blind your enemies momentarily with a well-placed smoke bomb." + button_icon_state = "smoke" + +/datum/action/item_action/ninjaboost + name = "Adrenaline Boost" + desc = "Inject a secret chemical that will counteract all movement-impairing effect." + button_icon_state = "repulse" + +/datum/action/item_action/ninjapulse + name = "EM Burst (25E)" + desc = "Disable any nearby technology with a electro-magnetic pulse." + button_icon_state = "emp" + +/datum/action/item_action/ninjastar + name = "Create Throwing Stars (1E)" + desc = "Creates some throwing stars" + button_icon_state = "throwingstar" + icon_icon = 'icons/obj/weapons.dmi' + +/datum/action/item_action/ninjanet + name = "Energy Net (20E)" + desc = "Captures a fallen opponent in a net of energy. Will teleport them to a holding facility after 30 seconds." + button_icon_state = "energynet" + icon_icon = 'icons/effects/effects.dmi' + +/datum/action/item_action/ninja_sword_recall + name = "Recall Energy Katana (Variable Cost)" + desc = "Teleports the Energy Katana linked to this suit to its wearer, cost based on distance." + button_icon_state = "energy_katana" + icon_icon = 'icons/obj/weapons.dmi' + +/datum/action/item_action/ninja_stealth + name = "Toggle Stealth" + desc = "Toggles stealth mode on and off." + button_icon_state = "ninja_cloak" + +/datum/action/item_action/toggle_glove + name = "Toggle interaction" + desc = "Switch between normal interaction and drain mode." + button_icon_state = "s-ninjan" + icon_icon = 'icons/obj/clothing/gloves.dmi' + + /datum/action/item_action/organ_action check_flags = AB_CHECK_CONSCIOUS diff --git a/code/datums/antagonists/ninja.dm b/code/datums/antagonists/ninja.dm new file mode 100644 index 00000000000..d3b6da5b19c --- /dev/null +++ b/code/datums/antagonists/ninja.dm @@ -0,0 +1,153 @@ +/datum/antagonist/ninja + name = "Ninja" + var/team + var/helping_station = 0 + var/give_objectives = TRUE + +/datum/antagonist/ninja/friendly + helping_station = 1 + +/datum/antagonist/ninja/friendly/noobjective + give_objectives = FALSE + +/datum/antagonist/ninja/New(datum/mind/new_owner) + if(new_owner && !ishuman(new_owner.current))//It's fine if we aren't passed a mind, but if we are, they have to be human. + throw EXCEPTION("Only humans and/or humanoids may be ninja'ed") + ..(new_owner) + +/datum/antagonist/ninja/randomAllegiance/New(datum/mind/new_owner) + ..(new_owner) + helping_station = rand(0,1) + +/datum/antagonist/ninja/proc/equip_space_ninja(mob/living/carbon/human/H = owner.current, safety=0)//Safety in case you need to unequip stuff for existing characters. + if(safety) + qdel(H.w_uniform) + qdel(H.wear_suit) + qdel(H.wear_mask) + qdel(H.head) + qdel(H.shoes) + qdel(H.gloves) + + var/obj/item/clothing/suit/space/space_ninja/theSuit = new(H) + var/obj/item/weapon/katana/energy/EK = new(H) + theSuit.energyKatana = EK + + H.equip_to_slot_or_del(new /obj/item/device/radio/headset(H), slot_ears) + H.equip_to_slot_or_del(new /obj/item/clothing/under/color/black(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/space_ninja(H), slot_shoes) + H.equip_to_slot_or_del(theSuit, slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/gloves/space_ninja(H), slot_gloves) + H.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/space_ninja(H), slot_head) + H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/space_ninja(H), slot_wear_mask) + H.equip_to_slot_or_del(new /obj/item/clothing/glasses/night(H), slot_glasses) + H.equip_to_slot_or_del(EK, slot_belt) + H.equip_to_slot_or_del(new /obj/item/device/flashlight(H), slot_r_store) + H.equip_to_slot_or_del(new /obj/item/weapon/grenade/plastic/x4(H), slot_l_store) + H.equip_to_slot_or_del(new /obj/item/weapon/tank/internals/emergency_oxygen(H), slot_s_store) + H.equip_to_slot_or_del(new /obj/item/weapon/tank/jetpack/carbondioxide(H), slot_back) + theSuit.randomize_param() + + var/obj/item/weapon/implant/explosive/E = new/obj/item/weapon/implant/explosive(H) + E.implant(H) + return 1 + +/datum/antagonist/ninja/proc/addMemories() + owner.store_memory("I am an elite mercenary assassin of the mighty Spider Clan. A SPACE NINJA!") + owner.store_memory("Surprise is my weapon. Shadows are my armor. Without them, I am nothing. (//initialize your suit by right clicking on it, to use abilities like stealth)!") + owner.store_memory("Officially, [helping_station?"Nanotrasen":"The Syndicate"] are my employer.") + +/datum/antagonist/ninja/proc/addObjectives(quantity = 6) + var/list/possible_targets = list() + for(var/datum/mind/M in SSticker.minds) + if(M.current && M.current.stat != DEAD) + if(ishuman(M.current)) + if(M.special_role) + possible_targets[M] = 0 //bad-guy + else if(M.assigned_role in GLOB.command_positions) + possible_targets[M] = 1 //good-guy + + var/list/objectives = list(1,2,3,4) + while(owner.objectives.len < quantity) + switch(pick_n_take(objectives)) + if(1) //research + var/datum/objective/download/O = new /datum/objective/download() + O.owner = owner + O.gen_amount_goal() + owner.objectives += O + + if(2) //steal + var/datum/objective/steal/special/O = new /datum/objective/steal/special() + O.owner = owner + owner.objectives += O + + if(3) //protect/kill + if(!possible_targets.len) continue + var/index = rand(1,possible_targets.len) + var/datum/mind/M = possible_targets[index] + var/is_bad_guy = possible_targets[M] + possible_targets.Cut(index,index+1) + + if(is_bad_guy ^ helping_station) //kill (good-ninja + bad-guy or bad-ninja + good-guy) + var/datum/objective/assassinate/O = new /datum/objective/assassinate() + O.owner = owner + O.target = M + O.explanation_text = "Slay \the [M.current.real_name], the [M.assigned_role]." + owner.objectives += O + else //protect + var/datum/objective/protect/O = new /datum/objective/protect() + O.owner = owner + O.target = M + O.explanation_text = "Protect \the [M.current.real_name], the [M.assigned_role], from harm." + owner.objectives += O + if(4) //debrain/capture + if(!possible_targets.len) continue + var/selected = rand(1,possible_targets.len) + var/datum/mind/M = possible_targets[selected] + var/is_bad_guy = possible_targets[M] + possible_targets.Cut(selected,selected+1) + + if(is_bad_guy ^ helping_station) //debrain (good-ninja + bad-guy or bad-ninja + good-guy) + var/datum/objective/debrain/O = new /datum/objective/debrain() + O.owner = owner + O.target = M + O.explanation_text = "Steal the brain of [M.current.real_name]." + owner.objectives += O + else //capture + var/datum/objective/capture/O = new /datum/objective/capture() + O.owner = owner + O.gen_amount_goal() + owner.objectives += O + else + break + var/datum/objective/O = new /datum/objective/survive() + O.owner = owner + owner.objectives += O + + +/proc/remove_ninja(mob/living/L) + if(!L || !L.mind) + return FALSE + var/datum/antagonist/datum = L.mind.has_antag_datum(ANTAG_DATUM_NINJA) + datum.on_removal() + return TRUE + +/proc/add_ninja(mob/living/carbon/human/H, type = ANTAG_DATUM_NINJA_RANDOM) + if(!H || !H.mind) + return FALSE + return H.mind.add_antag_datum(type) + +/proc/is_ninja(mob/living/M) + return M && M.mind && M.mind.has_antag_datum(ANTAG_DATUM_NINJA) + + +/datum/antagonist/ninja/greet() + owner.current << sound('sound/effects/ninja_greeting.ogg') + to_chat(owner.current, "I am an elite mercenary assassin of the mighty Spider Clan. A SPACE NINJA!") + to_chat(owner.current, "Surprise is my weapon. Shadows are my armor. Without them, I am nothing. (//initialize your suit by right clicking on it, to use abilities like stealth)!") + to_chat(owner.current, "Officially, [helping_station?"Nanotrasen":"The Syndicate"] are my employer.") + return + +/datum/antagonist/ninja/on_gain() + if(give_objectives) + addObjectives() + addMemories() diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 3ba7efb4c98..35bc4bc33a0 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -737,18 +737,6 @@ src.give_disease(M) href_list["datumrefresh"] = href_list["give_spell"] - else if(href_list["ninja"]) - if(!check_rights(R_FUN)) - return - - var/mob/M = locate(href_list["ninja"]) - if(!istype(M)) - to_chat(usr, "This can only be used on instances of type /mob") - return - - src.cmd_admin_ninjafy(M) - href_list["datumrefresh"] = href_list["ninja"] - else if(href_list["gib"]) if(!check_rights(R_FUN)) return diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 5b8b77cf8a5..8fc9e05fd18 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -36,7 +36,7 @@ Bonus /datum/symptom/heal/proc/Heal(mob/living/M, datum/disease/advance/A) var/heal_amt = 0.5 if(M.toxloss > 0 && prob(20)) - new /obj/effect/overlay/temp/heal(get_turf(M), "#66FF99") + new /obj/effect/temp_visual/heal(get_turf(M), "#66FF99") M.adjustToxLoss(-heal_amt) return 1 @@ -67,7 +67,7 @@ Bonus /datum/symptom/heal/plus/Heal(mob/living/M, datum/disease/advance/A) var/heal_amt = 1 if(M.toxloss > 0 && prob(20)) - new /obj/effect/overlay/temp/heal(get_turf(M), "#00FF00") + new /obj/effect/temp_visual/heal(get_turf(M), "#00FF00") M.adjustToxLoss(-heal_amt) return 1 @@ -110,7 +110,7 @@ Bonus M.update_damage_overlays() if(prob(20)) - new /obj/effect/overlay/temp/heal(get_turf(M), "#FF3333") + new /obj/effect/temp_visual/heal(get_turf(M), "#FF3333") return 1 @@ -148,7 +148,7 @@ Bonus if(M.getCloneLoss() > 0) M.adjustCloneLoss(-1) M.take_bodypart_damage(0, 1) //Deals BURN damage, which is not cured by this symptom - new /obj/effect/overlay/temp/heal(get_turf(M), "#33FFCC") + new /obj/effect/temp_visual/heal(get_turf(M), "#33FFCC") if(!parts.len) return @@ -158,7 +158,7 @@ Bonus M.update_damage_overlays() if(prob(20)) - new /obj/effect/overlay/temp/heal(get_turf(M), "#CC1100") + new /obj/effect/temp_visual/heal(get_turf(M), "#CC1100") return 1 @@ -201,7 +201,7 @@ Bonus M.update_damage_overlays() if(prob(20)) - new /obj/effect/overlay/temp/heal(get_turf(M), "#FF9933") + new /obj/effect/temp_visual/heal(get_turf(M), "#FF9933") return 1 @@ -248,7 +248,7 @@ Bonus M.update_damage_overlays() if(prob(20)) - new /obj/effect/overlay/temp/heal(get_turf(M), "#CC6600") + new /obj/effect/temp_visual/heal(get_turf(M), "#CC6600") return 1 diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm index 24774da158d..9177f87f07f 100644 --- a/code/datums/holocall.dm +++ b/code/datums/holocall.dm @@ -30,6 +30,7 @@ var/obj/machinery/holopad/H = I if(!QDELETED(H) && H.is_operational()) dialed_holopads += H + H.say("Incoming call.") LAZYADD(H.holo_calls, src) if(!dialed_holopads.len) @@ -41,12 +42,16 @@ //cleans up ALL references :) /datum/holocall/Destroy() - QDEL_NULL(eye) - user.reset_perspective() + if(user.client) + for(var/datum/camerachunk/chunk in eye.visibleCameraChunks) + user.client.images -= chunk.obscured + user.remote_control = null + QDEL_NULL(eye) user = null - hologram.HC = null + if(hologram) + hologram.HC = null hologram = null calling_holopad.outgoing_call = null diff --git a/code/datums/mind.dm b/code/datums/mind.dm index d3058fafe94..04bec0a7a43 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -326,7 +326,8 @@ "traitor", // "traitorchan", "monkey", "clockcult", - "devil" + "devil", + "ninja" ) var/text = "" @@ -614,9 +615,27 @@ text += "|Disabled in Prefs" sections["devil"] = text +/** NINJA ***/ + text = "ninja" + if(SSticker.mode.config_tag == "ninja") + text = uppertext(text) + text = "[text]: " + var/datum/antagonist/ninja/ninjainfo = has_antag_datum(ANTAG_DATUM_NINJA) + if(ninjainfo) + if(ninjainfo.helping_station) + text += "employee | syndicate | NANOTRASEN | EQUIP" + else + text += "employee | SYNDICATE | nanotrasen | EQUIP" + else + text += "EMPLOYEE | syndicate | nanotrasen | random allegiance" + if(current && current.client && (ROLE_NINJA in current.client.prefs.be_special)) + text += " | Enabled in Prefs" + else + text += " | Disabled in Prefs" + sections["ninja"] = text - /** SILICON ***/ +/** SILICON ***/ if(issilicon(current)) text = "silicon" var/mob/living/silicon/robot/robot = current @@ -1202,7 +1221,28 @@ else to_chat(usr, "This only works on humans!") return - + else if(href_list["ninja"]) + var/datum/antagonist/ninja/ninjainfo = has_antag_datum(ANTAG_DATUM_NINJA) + switch(href_list["ninja"]) + if("clear") + remove_ninja(current) + message_admins("[key_name_admin(usr)] has de-ninja'ed [current].") + log_admin("[key_name(usr)] has de-ninja'ed [current].") + if("equip") + ninjainfo.equip_space_ninja() + return + if("nanotrasen") + add_ninja(current, ANTAG_DATUM_NINJA_FRIENDLY) + message_admins("[key_name_admin(usr)] has friendly ninja'ed [current].") + log_admin("[key_name(usr)] has friendly ninja'ed [current].") + if("syndicate") + add_ninja(current, ANTAG_DATUM_NINJA) + message_admins("[key_name_admin(usr)] has syndie ninja'ed [current].") + log_admin("[key_name(usr)] has syndie ninja'ed [current].") + if("random") + add_ninja(current) + message_admins("[key_name_admin(usr)] has random ninja'ed [current].") + log_admin("[key_name(usr)] has random ninja'ed [current].") else if(href_list["abductor"]) switch(href_list["abductor"]) if("clear") @@ -1330,7 +1370,7 @@ obj_count++ /datum/mind/proc/find_syndicate_uplink() - var/list/L = current.get_contents() + var/list/L = current.GetAllContents() for (var/obj/item/I in L) if (I.hidden_uplink) return I.hidden_uplink diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index 76dea0b8f89..ac1ef7a35bf 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -167,3 +167,30 @@ id = "cult_ghost" duration = -1 alert_type = null + +/datum/status_effect/crusher_mark + id = "crusher_mark" + duration = 300 //if you leave for 30 seconds you lose the mark, deal with it + status_type = STATUS_EFFECT_REPLACE + alert_type = null + var/mutable_appearance/marked_underlay + var/obj/item/weapon/twohanded/required/mining_hammer/hammer_synced + +/datum/status_effect/crusher_mark/on_apply() + if(owner.mob_size >= MOB_SIZE_LARGE) + marked_underlay = mutable_appearance('icons/effects/effects.dmi', "shield2") + marked_underlay.pixel_x = -owner.pixel_x + marked_underlay.pixel_y = -owner.pixel_y + owner.underlays += marked_underlay + return FALSE + +/datum/status_effect/crusher_mark/Destroy() + hammer_synced = null + if(owner) + owner.underlays -= marked_underlay + QDEL_NULL(marked_underlay) + return ..() + +/datum/status_effect/crusher_mark/be_replaced() + owner.underlays -= marked_underlay //if this is being called, we should have an owner at this point. + ..() diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 23deaf99621..af9672c3df2 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -42,6 +42,30 @@ return FALSE //PLEASE no. if((var_name in careful_edits) && (var_value % world.icon_size) != 0) return FALSE + switch(var_name) + if("x") + var/turf/T = locate(var_value, y, z) + if(T) + forceMove(T) + return TRUE + return FALSE + if("y") + var/turf/T = locate(x, var_value, z) + if(T) + forceMove(T) + return TRUE + return FALSE + if("z") + var/turf/T = locate(x, y, var_value) + if(T) + forceMove(T) + return TRUE + return FALSE + if("loc") + if(var_value == null || istype(var_value, /atom)) + forceMove(var_value) + return TRUE + return FALSE return ..() /atom/movable/Move(atom/newloc, direct = 0) @@ -602,6 +626,10 @@ var/datum/language_holder/H = get_language_holder() . = H.has_language(dt) +/atom/movable/proc/copy_known_languages_from(thing, replace=FALSE) + var/datum/language_holder/H = get_language_holder() + . = H.copy_known_languages_from(thing, replace) + // Whether an AM can speak in a language or not, independent of whether // it KNOWS the language /atom/movable/proc/could_speak_in_language(datum/language/dt) diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm index 46853995cb3..8ad8861cbd5 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm @@ -32,7 +32,7 @@ /mob/living/simple_animal/hostile/blob/blob_act(obj/structure/blob/B) if(stat != DEAD && health < maxHealth) for(var/i in 1 to 2) - var/obj/effect/overlay/temp/heal/H = new /obj/effect/overlay/temp/heal(get_turf(src)) //hello yes you are being healed + var/obj/effect/temp_visual/heal/H = new /obj/effect/temp_visual/heal(get_turf(src)) //hello yes you are being healed if(overmind) H.color = overmind.blob_reagent_datum.complementary_color else diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index f9eb16c7a92..e80e92337ed 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -140,7 +140,7 @@ loc.blob_act(src) //don't ask how a wall got on top of the core, just eat it /obj/structure/blob/proc/blob_attack_animation(atom/A = null, controller) //visually attacks an atom - var/obj/effect/overlay/temp/blob/O = new /obj/effect/overlay/temp/blob(src.loc) + var/obj/effect/temp_visual/blob/O = new /obj/effect/temp_visual/blob(src.loc) O.setDir(dir) if(controller) var/mob/camera/blob/BO = controller @@ -208,7 +208,7 @@ if(overmind) overmind.blob_reagent_datum.emp_reaction(src, severity) if(prob(100 - severity * 30)) - new /obj/effect/overlay/temp/emp(get_turf(src)) + new /obj/effect/temp_visual/emp(get_turf(src)) /obj/structure/blob/tesla_act(power) ..() diff --git a/code/game/gamemodes/clock_cult/clock_effects/clock_sigils.dm b/code/game/gamemodes/clock_cult/clock_effects/clock_sigils.dm index cf709f09b0d..7d8c3eb1f97 100644 --- a/code/game/gamemodes/clock_cult/clock_effects/clock_sigils.dm +++ b/code/game/gamemodes/clock_cult/clock_effects/clock_sigils.dm @@ -73,7 +73,7 @@ L.visible_message("[src] appears around [L] in a burst of light!", \ "[target_flashed ? "An unseen force":"The glowing sigil around you"] holds you in place!") L.Stun(5) - new /obj/effect/overlay/temp/ratvar/sigil/transgression(get_turf(src)) + new /obj/effect/temp_visual/ratvar/sigil/transgression(get_turf(src)) qdel(src) @@ -102,7 +102,7 @@ L.visible_message("[src] begins to glow a piercing magenta!", "You feel something start to invade your mind...") var/oldcolor = color animate(src, color = "#AF0AAF", time = convert_time) - var/obj/effect/overlay/temp/ratvar/sigil/glow + var/obj/effect/temp_visual/ratvar/sigil/glow if(glow_type) glow = new glow_type(get_turf(src)) animate(glow, alpha = 255, time = convert_time) @@ -158,7 +158,7 @@ light_color = "#A97F1B" delete_on_finish = FALSE sigil_name = "Sigil of Accession" - glow_type = /obj/effect/overlay/temp/ratvar/sigil/accession + glow_type = /obj/effect/temp_visual/ratvar/sigil/accession resist_string = "glows bright orange" /obj/effect/clockwork/sigil/submission/accession/post_channel(mob/living/L) @@ -321,14 +321,14 @@ while(L && (!is_servant_of_ratvar(L) || (is_servant_of_ratvar(L) && (GLOB.ratvar_awakens || vitality))) && get_turf(L) == get_turf(src)) sigil_active = TRUE if(animation_number >= 4) - new /obj/effect/overlay/temp/ratvar/sigil/vitality(get_turf(src)) + new /obj/effect/temp_visual/ratvar/sigil/vitality(get_turf(src)) animation_number = 0 animation_number++ if(!is_servant_of_ratvar(L)) var/vitality_drained = 0 if(L.stat == DEAD) vitality_drained = L.maxHealth - var/obj/effect/overlay/temp/ratvar/sigil/vitality/V = new /obj/effect/overlay/temp/ratvar/sigil/vitality(get_turf(src)) + var/obj/effect/temp_visual/ratvar/sigil/vitality/V = new /obj/effect/temp_visual/ratvar/sigil/vitality(get_turf(src)) animate(V, alpha = 0, transform = matrix()*2, time = 8) playsound(L, 'sound/magic/WandODeath.ogg', 50, 1) L.visible_message("[L] collapses in on [L.p_them()]self as [src] flares bright blue!") @@ -356,7 +356,7 @@ if(ghost) ghost.reenter_corpse() L.revive(1, 1) - var/obj/effect/overlay/temp/ratvar/sigil/vitality/V = new /obj/effect/overlay/temp/ratvar/sigil/vitality(get_turf(src)) + var/obj/effect/temp_visual/ratvar/sigil/vitality/V = new /obj/effect/temp_visual/ratvar/sigil/vitality(get_turf(src)) animate(V, alpha = 0, transform = matrix()*2, time = 8) playsound(L, 'sound/magic/Staff_Healing.ogg', 50, 1) L.visible_message("[L] suddenly gets back up, [GLOB.ratvar_awakens ? "[L.p_their()] body dripping blue ichor":"even as [src] scatters into blue sparks around [L.p_them()]"]!", \ diff --git a/code/game/gamemodes/clock_cult/clock_helpers/component_helpers.dm b/code/game/gamemodes/clock_cult/clock_helpers/component_helpers.dm index 120ed0ff601..ec35ae4c5b8 100644 --- a/code/game/gamemodes/clock_cult/clock_helpers/component_helpers.dm +++ b/code/game/gamemodes/clock_cult/clock_helpers/component_helpers.dm @@ -124,15 +124,15 @@ /proc/get_component_animation_type(id) switch(id) if(BELLIGERENT_EYE) - return /obj/effect/overlay/temp/ratvar/component + return /obj/effect/temp_visual/ratvar/component if(VANGUARD_COGWHEEL) - return /obj/effect/overlay/temp/ratvar/component/cogwheel + return /obj/effect/temp_visual/ratvar/component/cogwheel if(GEIS_CAPACITOR) - return /obj/effect/overlay/temp/ratvar/component/capacitor + return /obj/effect/temp_visual/ratvar/component/capacitor if(REPLICANT_ALLOY) - return /obj/effect/overlay/temp/ratvar/component/alloy + return /obj/effect/temp_visual/ratvar/component/alloy if(HIEROPHANT_ANSIBLE) - return /obj/effect/overlay/temp/ratvar/component/ansible + return /obj/effect/temp_visual/ratvar/component/ansible else return null diff --git a/code/game/gamemodes/clock_cult/clock_helpers/proselytizer_helpers.dm b/code/game/gamemodes/clock_cult/clock_helpers/proselytizer_helpers.dm index 529f38d832f..fc448a68b46 100644 --- a/code/game/gamemodes/clock_cult/clock_helpers/proselytizer_helpers.dm +++ b/code/game/gamemodes/clock_cult/clock_helpers/proselytizer_helpers.dm @@ -5,60 +5,60 @@ //otherwise, return literally any non-list thing but preferably FALSE //returning TRUE won't produce the "cannot be proselytized" message and will still prevent proselytizing -/atom/proc/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/atom/proc/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) return FALSE //Turf conversion -/turf/closed/wall/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) //four sheets of metal +/turf/closed/wall/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) //four sheets of metal return list("operation_time" = 50, "new_obj_type" = /turf/closed/wall/clockwork, "power_cost" = POWER_WALL_TOTAL - (POWER_METAL * 4), "spawn_dir" = SOUTH) -/turf/closed/wall/mineral/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) //two sheets of metal +/turf/closed/wall/mineral/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) //two sheets of metal return list("operation_time" = 50, "new_obj_type" = /turf/closed/wall/clockwork, "power_cost" = POWER_WALL_TOTAL - (POWER_METAL * 2), "spawn_dir" = SOUTH) -/turf/closed/wall/mineral/iron/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) //two sheets of metal, five rods +/turf/closed/wall/mineral/iron/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) //two sheets of metal, five rods return list("operation_time" = 50, "new_obj_type" = /turf/closed/wall/clockwork, "power_cost" = POWER_WALL_TOTAL - (POWER_METAL * 2) - (POWER_ROD * 5), "spawn_dir" = SOUTH) -/turf/closed/wall/mineral/cult/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) //no metal +/turf/closed/wall/mineral/cult/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) //no metal return list("operation_time" = 80, "new_obj_type" = /turf/closed/wall/clockwork, "power_cost" = POWER_WALL_TOTAL, "spawn_dir" = SOUTH) -/turf/closed/wall/shuttle/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) //two sheets of metal +/turf/closed/wall/shuttle/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) //two sheets of metal return list("operation_time" = 50, "new_obj_type" = /turf/closed/wall/clockwork, "power_cost" = POWER_WALL_TOTAL - (POWER_METAL * 2), "spawn_dir" = SOUTH) -/turf/closed/wall/r_wall/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/turf/closed/wall/r_wall/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) return FALSE -/turf/closed/wall/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/turf/closed/wall/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) return list("operation_time" = 50, "new_obj_type" = /turf/open/floor/clockwork, "power_cost" = -POWER_WALL_MINUS_FLOOR, "spawn_dir" = SOUTH) -/turf/open/floor/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/turf/open/floor/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) if(floor_tile == /obj/item/stack/tile/plasteel) new floor_tile(src) make_plating() playsound(src, 'sound/items/Crowbar.ogg', 10, 1) //clink return list("operation_time" = 30, "new_obj_type" = /turf/open/floor/clockwork, "power_cost" = POWER_FLOOR, "spawn_dir" = SOUTH) -/turf/open/floor/plating/asteroid/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/turf/open/floor/plating/asteroid/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) return FALSE -/turf/open/floor/plating/ashplanet/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/turf/open/floor/plating/ashplanet/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) return FALSE -/turf/open/floor/plating/lava/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/turf/open/floor/plating/lava/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) return FALSE -/turf/open/floor/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/turf/open/floor/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) if(locate(/obj/structure/table) in src) return FALSE if(is_blocked_turf(src, TRUE)) to_chat(user, "Something is in the way, preventing you from proselytizing [src] into a clockwork wall.") return TRUE var/operation_time = 100 - if(proselytizer.speed_multiplier > 0) + if(!GLOB.ratvar_awakens && proselytizer.speed_multiplier > 0) //if ratvar isn't awake, this always takes 10 seconds operation_time /= proselytizer.speed_multiplier return list("operation_time" = operation_time, "new_obj_type" = /turf/closed/wall/clockwork, "power_cost" = POWER_WALL_MINUS_FLOOR, "spawn_dir" = SOUTH) //False wall conversion -/obj/structure/falsewall/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/structure/falsewall/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) var/cost = POWER_WALL_MINUS_FLOOR if(ispath(mineral, /obj/item/stack/sheet/metal)) cost -= (POWER_METAL * (2 + mineral_amount)) //four sheets of metal, plus an assumption that the girder is also two @@ -66,17 +66,17 @@ cost -= (POWER_METAL * 2) //anything that doesn't use metal just has the girder return list("operation_time" = 50, "new_obj_type" = /obj/structure/falsewall/brass, "power_cost" = cost, "spawn_dir" = SOUTH) -/obj/structure/falsewall/iron/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) //two sheets of metal, two rods; special assumption +/obj/structure/falsewall/iron/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) //two sheets of metal, two rods; special assumption return list("operation_time" = 50, "new_obj_type" = /obj/structure/falsewall/brass, "power_cost" = POWER_WALL_MINUS_FLOOR - (POWER_METAL * 2) - (POWER_ROD * 2), "spawn_dir" = SOUTH) -/obj/structure/falsewall/reinforced/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/structure/falsewall/reinforced/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) return FALSE -/obj/structure/falsewall/brass/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/structure/falsewall/brass/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) return FALSE //Metal conversion -/obj/item/stack/tile/plasteel/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/item/stack/tile/plasteel/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) if(source) return FALSE var/amount_temp = get_amount() @@ -90,7 +90,7 @@ no_delete = TRUE use(amount_temp) amount_temp *= 12.5 //each tile is 12.5 power so this is 2 tiles to 25 power - return list("operation_time" = 0, "new_obj_type" = /obj/effect/overlay/temp/ratvar/beam/itemconsume, "power_cost" = -amount_temp, "spawn_dir" = SOUTH, "no_target_deletion" = no_delete) + return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -amount_temp, "spawn_dir" = SOUTH, "no_target_deletion" = no_delete) if(amount_temp >= 20) var/sheets_to_make = round(amount_temp * 0.05) //and 20 to 1 brass var/used = sheets_to_make * 20 @@ -104,11 +104,11 @@ to_chat(user, "You need at least 20 floor tiles to convert into brass.") return TRUE -/obj/item/stack/rods/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/item/stack/rods/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) if(source) return FALSE if(proselytizer.metal_to_power) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/overlay/temp/ratvar/beam/itemconsume, "power_cost" = -(amount*POWER_ROD), "spawn_dir" = SOUTH) + return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -(amount*POWER_ROD), "spawn_dir" = SOUTH) if(get_amount() >= 10) var/sheets_to_make = round(get_amount() * 0.1) var/used = sheets_to_make * 10 @@ -122,11 +122,11 @@ to_chat(user, "You need at least 10 rods to convert into brass.") return TRUE -/obj/item/stack/sheet/metal/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/item/stack/sheet/metal/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) if(source) return FALSE if(proselytizer.metal_to_power) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/overlay/temp/ratvar/beam/itemconsume, "power_cost" = -(amount*POWER_METAL), "spawn_dir" = SOUTH) + return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -(amount*POWER_METAL), "spawn_dir" = SOUTH) if(get_amount() >= 5) var/sheets_to_make = round(get_amount() * 0.2) var/used = sheets_to_make * 5 @@ -140,11 +140,11 @@ to_chat(user, "You need at least 5 sheets of metal to convert into brass.") return TRUE -/obj/item/stack/sheet/plasteel/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/item/stack/sheet/plasteel/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) if(source) return FALSE if(proselytizer.metal_to_power) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/overlay/temp/ratvar/beam/itemconsume, "power_cost" = -(amount*POWER_PLASTEEL), "spawn_dir" = SOUTH) + return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -(amount*POWER_PLASTEEL), "spawn_dir" = SOUTH) if(get_amount() >= 2) var/sheets_to_make = round(get_amount() * 0.5) var/used = sheets_to_make * 2 @@ -159,23 +159,23 @@ return TRUE //Brass directly to power -/obj/item/stack/tile/brass/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/item/stack/tile/brass/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) if(source) return FALSE - return list("operation_time" = 0, "new_obj_type" = /obj/effect/overlay/temp/ratvar/beam/itemconsume, "power_cost" = -(amount*POWER_FLOOR), "spawn_dir" = SOUTH) + return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -(amount*POWER_FLOOR), "spawn_dir" = SOUTH) //Airlock conversion -/obj/machinery/door/airlock/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/machinery/door/airlock/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) var/doortype = /obj/machinery/door/airlock/clockwork if(glass) doortype = /obj/machinery/door/airlock/clockwork/brass return list("operation_time" = 60, "new_obj_type" = doortype, "power_cost" = POWER_WALL_TOTAL, "spawn_dir" = dir) -/obj/machinery/door/airlock/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/machinery/door/airlock/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) return FALSE //Table conversion -/obj/structure/table/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/structure/table/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) var/prosel_cost = POWER_STANDARD if(framestack == /obj/item/stack/rods) prosel_cost -= POWER_ROD*framestackamount @@ -187,10 +187,10 @@ prosel_cost -= POWER_PLASTEEL*buildstackamount return list("operation_time" = 20, "new_obj_type" = /obj/structure/table/reinforced/brass, "power_cost" = prosel_cost, "spawn_dir" = SOUTH) -/obj/structure/table/reinforced/brass/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/structure/table/reinforced/brass/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) return FALSE -/obj/structure/table_frame/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/structure/table_frame/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) var/prosel_cost = POWER_FLOOR if(framestack == /obj/item/stack/rods) prosel_cost -= POWER_ROD*framestackamount @@ -198,11 +198,11 @@ prosel_cost -= POWER_FLOOR*framestackamount return list("operation_time" = 10, "new_obj_type" = /obj/structure/table_frame/brass, "power_cost" = prosel_cost, "spawn_dir" = SOUTH) -/obj/structure/table_frame/brass/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/structure/table_frame/brass/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) return FALSE //Window conversion -/obj/structure/window/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/structure/window/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) var/windowtype = /obj/structure/window/reinforced/clockwork var/new_dir = TRUE var/prosel_time = 15 @@ -220,18 +220,18 @@ INVOKE_ASYNC(proselytizer, /obj/item/clockwork/clockwork_proselytizer.proc/proselytize, G, user) return list("operation_time" = prosel_time, "new_obj_type" = windowtype, "power_cost" = prosel_cost, "spawn_dir" = dir, "dir_in_new" = new_dir) -/obj/structure/window/reinforced/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/structure/window/reinforced/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) return FALSE //Windoor conversion -/obj/machinery/door/window/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/machinery/door/window/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) return list("operation_time" = 30, "new_obj_type" = /obj/machinery/door/window/clockwork, "power_cost" = POWER_STANDARD, "spawn_dir" = dir, "dir_in_new" = TRUE) -/obj/machinery/door/window/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/machinery/door/window/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) return FALSE //Grille conversion -/obj/structure/grille/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/structure/grille/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) var/grilletype = /obj/structure/grille/ratvar var/prosel_time = 15 if(broken) @@ -239,32 +239,32 @@ prosel_time = 5 return list("operation_time" = prosel_time, "new_obj_type" = grilletype, "power_cost" = 0, "spawn_dir" = dir) -/obj/structure/grille/ratvar/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/structure/grille/ratvar/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) return FALSE //Lattice conversion -/obj/structure/lattice/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/structure/lattice/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) return list("operation_time" = 0, "new_obj_type" = /obj/structure/lattice/clockwork, "power_cost" = 0, "spawn_dir" = SOUTH, "no_target_deletion" = TRUE) -/obj/structure/lattice/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/structure/lattice/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) ratvar_act() //just in case we're the wrong type for some reason?? return FALSE -/obj/structure/lattice/catwalk/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/structure/lattice/catwalk/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) return list("operation_time" = 0, "new_obj_type" = /obj/structure/lattice/catwalk/clockwork, "power_cost" = 0, "spawn_dir" = SOUTH, "no_target_deletion" = TRUE) -/obj/structure/lattice/catwalk/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/structure/lattice/catwalk/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) return FALSE //Girder conversion -/obj/structure/girder/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/structure/girder/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) var/prosel_cost = POWER_GEAR - (POWER_METAL * 2) if(state == GIRDER_REINF_STRUTS || state == GIRDER_REINF) prosel_cost -= POWER_PLASTEEL return list("operation_time" = 20, "new_obj_type" = /obj/structure/destructible/clockwork/wall_gear, "power_cost" = prosel_cost, "spawn_dir" = SOUTH) //Hitting a clockwork structure will try to repair it. -/obj/structure/destructible/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/structure/destructible/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) . = TRUE var/list/repair_values = list() if(!proselytizer.proselytizer_repair_checks(repair_values, src, user)) @@ -287,7 +287,7 @@ "You finish repairing [src]. It is now at [obj_integrity]/[max_integrity] integrity.") //Hitting a sigil of transmission will try to charge from it. -/obj/effect/clockwork/sigil/transmission/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/obj/effect/clockwork/sigil/transmission/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) . = TRUE var/list/charge_values = list() if(!proselytizer.sigil_charge_checks(charge_values, src, user)) @@ -337,7 +337,7 @@ adjustHealth(-amount) //Hitting a ratvar'd silicon will also try to repair it. -/mob/living/silicon/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/mob/living/silicon/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) . = TRUE if(health == maxHealth) //if we're at maximum health, prosel the turf under us return FALSE @@ -346,7 +346,7 @@ "You finish repairin[src == user ? "g yourself. You are":"g [src]. [p_they(TRUE)] [p_are()]"] now at [abs(HEALTH_THRESHOLD_DEAD - health)]/[abs(HEALTH_THRESHOLD_DEAD - maxHealth)] health.") //Same with clockwork mobs. -/mob/living/simple_animal/hostile/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/mob/living/simple_animal/hostile/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) . = TRUE if(health == maxHealth) //if we're at maximum health, prosel the turf under us return FALSE @@ -355,7 +355,7 @@ "You finish repairin[src == user ? "g yourself. You are":"g [src]. [p_they(TRUE)] [p_are()]"] now at [health]/[maxHealth] health.") //Cogscarabs get special interaction because they're drones and have innate self-heals/revives. -/mob/living/simple_animal/drone/cogscarab/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) +/mob/living/simple_animal/drone/cogscarab/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent) . = TRUE if(stat == DEAD) try_reactivate(user) //if we're at maximum health, prosel the turf under us @@ -374,17 +374,36 @@ proselytizer.repairing = null //Convert shards and gear bits directly to power -/obj/item/clockwork/alloy_shards/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/overlay/temp/ratvar/beam/itemconsume, "power_cost" = -POWER_STANDARD, "spawn_dir" = SOUTH) +/obj/item/clockwork/alloy_shards/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent, power_amount) + if(!power_amount) + power_amount = -POWER_STANDARD + if(proselytizer.can_use_power(power_amount)) + var/obj/effect/temp_visual/ratvar/beam/itemconsume/B = new /obj/effect/temp_visual/ratvar/beam/itemconsume(get_turf(src)) + B.pixel_x = pixel_x + B.pixel_y = pixel_y + if(!silent) //looper no looping + for(var/obj/item/clockwork/alloy_shards/S in get_turf(src)) //convert all other shards in the turf if we can + if(S == src) + continue //we want the shards to be proselytized after the main shard, thus this delay + addtimer(CALLBACK(proselytizer, /obj/item/clockwork/clockwork_proselytizer.proc/proselytize, S, user, TRUE), 0) + return list("operation_time" = 0, "new_obj_type" = null, "power_cost" = power_amount, "spawn_dir" = SOUTH) -/obj/item/clockwork/alloy_shards/medium/gear_bit/large/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/overlay/temp/ratvar/beam/itemconsume, "power_cost" = -(CLOCKCULT_POWER_UNIT*0.08), "spawn_dir" = SOUTH) +/obj/item/clockwork/alloy_shards/medium/gear_bit/large/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent, power_amount) + if(!power_amount) + power_amount = -(CLOCKCULT_POWER_UNIT*0.08) + return ..() -/obj/item/clockwork/alloy_shards/large/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/overlay/temp/ratvar/beam/itemconsume, "power_cost" = -(CLOCKCULT_POWER_UNIT*0.06), "spawn_dir" = SOUTH) +/obj/item/clockwork/alloy_shards/large/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent, power_amount) + if(!power_amount) + power_amount = -(CLOCKCULT_POWER_UNIT*0.06) + return ..() -/obj/item/clockwork/alloy_shards/medium/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/overlay/temp/ratvar/beam/itemconsume, "power_cost" = -(CLOCKCULT_POWER_UNIT*0.04), "spawn_dir" = SOUTH) +/obj/item/clockwork/alloy_shards/medium/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent, power_amount) + if(!power_amount) + power_amount = -(CLOCKCULT_POWER_UNIT*0.04) + return ..() -/obj/item/clockwork/alloy_shards/small/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/overlay/temp/ratvar/beam/itemconsume, "power_cost" = -(CLOCKCULT_POWER_UNIT*0.02), "spawn_dir" = SOUTH) +/obj/item/clockwork/alloy_shards/small/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer, silent, power_amount) + if(!power_amount) + power_amount = -(CLOCKCULT_POWER_UNIT*0.02) + return ..() diff --git a/code/game/gamemodes/clock_cult/clock_helpers/slab_abilities.dm b/code/game/gamemodes/clock_cult/clock_helpers/slab_abilities.dm index 57a68078df4..ccf7aead44a 100644 --- a/code/game/gamemodes/clock_cult/clock_helpers/slab_abilities.dm +++ b/code/game/gamemodes/clock_cult/clock_helpers/slab_abilities.dm @@ -124,7 +124,7 @@ L.adjustToxLoss(totaldamage * 0.5, TRUE, TRUE) var/healseverity = max(round(totaldamage*0.05, 1), 1) //shows the general severity of the damage you just healed, 1 glow per 20 for(var/i in 1 to healseverity) - new /obj/effect/overlay/temp/heal(targetturf, "#1E8CE1") + new /obj/effect/temp_visual/heal(targetturf, "#1E8CE1") clockwork_say(ranged_ability_user, text2ratvar("Mend wounded flesh!")) add_logs(ranged_ability_user, L, "healed with Sentinel's Compromise") else @@ -173,7 +173,7 @@ if(usable_power > 0 && C.cell.use(usable_power)) multiplier += (usable_power * 0.001) qdel(VC) - new/obj/effect/overlay/temp/ratvar/volt_hit/true(targetturf, ranged_ability_user, multiplier) + new/obj/effect/temp_visual/ratvar/volt_hit/true(targetturf, ranged_ability_user, multiplier) add_logs(ranged_ability_user, targetturf, "fired a volt ray") remove_ranged_ability() diff --git a/code/game/gamemodes/clock_cult/clock_items/clock_components.dm b/code/game/gamemodes/clock_cult/clock_items/clock_components.dm index 16cfef5d721..f64b361ac1b 100644 --- a/code/game/gamemodes/clock_cult/clock_items/clock_components.dm +++ b/code/game/gamemodes/clock_cult/clock_items/clock_components.dm @@ -162,14 +162,15 @@ resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF var/randomsinglesprite = FALSE var/randomspritemax = 2 + var/sprite_shift = 9 /obj/item/clockwork/alloy_shards/Initialize() . = ..() if(randomsinglesprite) replace_name_desc() icon_state = "[icon_state][rand(1, randomspritemax)]" - pixel_x = rand(-9, 9) - pixel_y = rand(-9, 9) + pixel_x = rand(-sprite_shift, sprite_shift) + pixel_y = rand(-sprite_shift, sprite_shift) /obj/item/clockwork/alloy_shards/proc/replace_name_desc() name = "replicant alloy shard" @@ -177,16 +178,21 @@ clockwork_desc = "A broken shard of replicant alloy. Can be proselytized for additional power." /obj/item/clockwork/alloy_shards/large + w_class = WEIGHT_CLASS_TINY randomsinglesprite = TRUE icon_state = "shard_large" + sprite_shift = 9 /obj/item/clockwork/alloy_shards/medium + w_class = WEIGHT_CLASS_TINY randomsinglesprite = TRUE icon_state = "shard_medium" + sprite_shift = 10 /obj/item/clockwork/alloy_shards/medium/gear_bit randomspritemax = 4 icon_state = "gear_bit" + sprite_shift = 12 /obj/item/clockwork/alloy_shards/medium/gear_bit/replace_name_desc() name = "gear bit" @@ -200,9 +206,11 @@ name = "complex gear bit" /obj/item/clockwork/alloy_shards/small + w_class = WEIGHT_CLASS_TINY randomsinglesprite = TRUE randomspritemax = 3 icon_state = "shard_small" + sprite_shift = 12 /obj/item/clockwork/alloy_shards/pinion_lock name = "pinion lock" diff --git a/code/game/gamemodes/clock_cult/clock_items/clockwork_proselytizer.dm b/code/game/gamemodes/clock_cult/clock_items/clockwork_proselytizer.dm index 60df56b6ef4..aa174adcd80 100644 --- a/code/game/gamemodes/clock_cult/clock_items/clockwork_proselytizer.dm +++ b/code/game/gamemodes/clock_cult/clock_items/clockwork_proselytizer.dm @@ -178,21 +178,24 @@ return TRUE //A note here; return values are for if we CAN BE PUT ON A TABLE, not IF WE ARE SUCCESSFUL, unless no_table_check is TRUE -/obj/item/clockwork/clockwork_proselytizer/proc/proselytize(atom/target, mob/living/user, no_table_check) +/obj/item/clockwork/clockwork_proselytizer/proc/proselytize(atom/target, mob/living/user, silent, no_table_check) if(!target || !user) return FALSE if(repairing) - to_chat(user, "You are currently repairing [repairing] with [src]!") + if(!silent) + to_chat(user, "You are currently repairing [repairing] with [src]!") return FALSE if(recharging) - to_chat(user, "You are currently recharging [src] from the [recharging.sigil_name]!") + if(!silent) + to_chat(user, "You are currently recharging [src] from the [recharging.sigil_name]!") return FALSE - var/list/proselytize_values = target.proselytize_vals(user, src) //relevant values for proselytizing stuff, given as an associated list + var/list/proselytize_values = target.proselytize_vals(user, src, silent) //relevant values for proselytizing stuff, given as an associated list if(!islist(proselytize_values)) if(proselytize_values != TRUE) //if we get true, fail, but don't send a message for whatever reason if(!isturf(target)) //otherwise, if we didn't get TRUE and the original target wasn't a turf, try to proselytize the turf return proselytize(get_turf(target), user, no_table_check) - to_chat(user, "[target] cannot be proselytized!") + if(!silent) + to_chat(user, "[target] cannot be proselytized!") if(!no_table_check) return TRUE return FALSE @@ -207,19 +210,22 @@ var/target_type = target.type - if(!proselytize_checks(proselytize_values, target, target_type, user)) + if(!proselytize_checks(proselytize_values, target, target_type, user, silent)) return FALSE proselytize_values["operation_time"] *= speed_multiplier playsound(target, 'sound/machines/click.ogg', 50, 1) if(proselytize_values["operation_time"]) - user.visible_message("[user]'s [name] begins tearing apart [target]!", "You begin proselytizing [target]...") + if(!silent) + user.visible_message("[user]'s [name] begins tearing apart [target]!", "You begin proselytizing [target]...") if(!do_after(user, proselytize_values["operation_time"], target = target, extra_checks = CALLBACK(src, .proc/proselytize_checks, proselytize_values, target, target_type, user, TRUE))) return FALSE - user.visible_message("[user]'s [name] covers [target] in golden energy!", "You proselytize [target].") + if(!silent) + user.visible_message("[user]'s [name] covers [target] in golden energy!", "You proselytize [target].") else - user.visible_message("[user]'s [name] tears apart [target], covering it in golden energy!", "You proselytize [target].") + if(!silent) + user.visible_message("[user]'s [name] tears apart [target], covering it in golden energy!", "You proselytize [target].") playsound(target, 'sound/items/Deconstruct.ogg', 50, 1) var/new_thing_type = proselytize_values["new_obj_type"] @@ -227,11 +233,12 @@ var/turf/T = target T.ChangeTurf(new_thing_type) else - if(proselytize_values["dir_in_new"]) - new new_thing_type(get_turf(target), proselytize_values["spawn_dir"]) //please verify that your new object actually wants to get a dir in New() - else - var/atom/A = new new_thing_type(get_turf(target)) - A.setDir(proselytize_values["spawn_dir"]) + if(new_thing_type) + if(proselytize_values["dir_in_new"]) + new new_thing_type(get_turf(target), proselytize_values["spawn_dir"]) //please verify that your new object actually wants to get a dir in New() + else + var/atom/A = new new_thing_type(get_turf(target)) + A.setDir(proselytize_values["spawn_dir"]) if(!proselytize_values["no_target_deletion"]) //for some cases where proselytize_vals() modifies the object but doesn't want it deleted qdel(target) modify_stored_power(-proselytize_values["power_cost"]) @@ -239,8 +246,13 @@ return TRUE return FALSE +//The following three procs are heavy wizardry. +//What these procs do is they take an existing list of values, which they then modify. +//This(modifying an existing object, in this case the list) is the only way to get information OUT of a do_after callback, which this is used as. + +//The proselytize check proc. /obj/item/clockwork/clockwork_proselytizer/proc/proselytize_checks(list/proselytize_values, atom/target, expected_type, mob/user, silent) //checked constantly while proselytizing - if(!islist(proselytize_values) || !target || QDELETED(target) || !user) + if(!islist(proselytize_values) || QDELETED(target) || QDELETED(user)) return FALSE if(repairing || recharging) return FALSE @@ -259,11 +271,8 @@ return TRUE //The repair check proc. -//Is dark magic. Can probably kill you. -//What this proc does is it takes an existing list of values, which it modifies. -//This(modifying an existing object) is the only way to get information OUT of a do_after callback, which this is used as. /obj/item/clockwork/clockwork_proselytizer/proc/proselytizer_repair_checks(list/repair_values, atom/target, mob/user, silent) //Exists entirely to avoid an otherwise unreadable series of checks. - if(!islist(repair_values) || !target || QDELETED(target) || !user) + if(!islist(repair_values) || QDELETED(target) || QDELETED(user)) return FALSE if(isliving(target)) //standard checks for if we can affect the target var/mob/living/L = target @@ -302,9 +311,9 @@ return FALSE return TRUE -//checked constantly while charging from a sigil +//The sigil charge check proc. /obj/item/clockwork/clockwork_proselytizer/proc/sigil_charge_checks(list/charge_values, obj/effect/clockwork/sigil/transmission/sigil, mob/user, silent) - if(!islist(charge_values) || !sigil || QDELETED(sigil) || !user) + if(!islist(charge_values) || QDELETED(sigil) || QDELETED(user)) return FALSE if(can_use_power(RATVAR_POWER_CHECK)) return FALSE diff --git a/code/game/gamemodes/clock_cult/clock_items/ratvarian_spear.dm b/code/game/gamemodes/clock_cult/clock_items/ratvarian_spear.dm index 976cd1cb4b3..a54b019d536 100644 --- a/code/game/gamemodes/clock_cult/clock_items/ratvarian_spear.dm +++ b/code/game/gamemodes/clock_cult/clock_items/ratvarian_spear.dm @@ -96,13 +96,13 @@ impale_cooldown = world.time + initial(impale_cooldown) attack_cooldown = world.time + initial(attack_cooldown) //can't attack until we're done impaling if(target) - new /obj/effect/overlay/temp/dir_setting/bloodsplatter(get_turf(target), get_dir(user, target)) + new /obj/effect/temp_visual/dir_setting/bloodsplatter(get_turf(target), get_dir(user, target)) target.Stun(2) //brief stun to_chat(user, "You prepare to remove your ratvarian spear from [target]...") var/remove_verb = pick("pull", "yank", "drag") if(do_after(user, 10, 1, target)) var/turf/T = get_turf(target) - var/obj/effect/overlay/temp/dir_setting/bloodsplatter/B = new /obj/effect/overlay/temp/dir_setting/bloodsplatter(T, get_dir(target, user)) + var/obj/effect/temp_visual/dir_setting/bloodsplatter/B = new /obj/effect/temp_visual/dir_setting/bloodsplatter(T, get_dir(target, user)) playsound(T, 'sound/misc/splort.ogg', 200, 1) playsound(T, 'sound/weapons/pierce.ogg', 200, 1) if(target.stat != CONSCIOUS) @@ -151,5 +151,5 @@ T = get_turf(src) if(T) //make sure we're not in null or something T.visible_message("[src] [pick("cracks in two and fades away", "snaps in two and dematerializes")]!") - new /obj/effect/overlay/temp/ratvar/spearbreak(T) + new /obj/effect/temp_visual/ratvar/spearbreak(T) qdel(src) diff --git a/code/game/gamemodes/clock_cult/clock_mobs/clockwork_marauder.dm b/code/game/gamemodes/clock_cult/clock_mobs/clockwork_marauder.dm index 6006c257243..376526febb4 100644 --- a/code/game/gamemodes/clock_cult/clock_mobs/clockwork_marauder.dm +++ b/code/game/gamemodes/clock_cult/clock_mobs/clockwork_marauder.dm @@ -150,7 +150,7 @@ if(iscarbon(host)) resulthealth = round((abs(HEALTH_THRESHOLD_DEAD - host.health) / abs(HEALTH_THRESHOLD_DEAD - host.maxHealth)) * 100) if(GLOB.ratvar_awakens || resulthealth <= MARAUDER_EMERGE_THRESHOLD) - new /obj/effect/overlay/temp/heal(host.loc, "#AF0AAF") + new /obj/effect/temp_visual/heal(host.loc, "#AF0AAF") host.heal_ordered_damage(4, damage_heal_order) /mob/living/simple_animal/hostile/clockwork/marauder/adjustHealth(amount, updating_health = TRUE, forced = FALSE) diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm index bc5ec1b9d83..9efb9a8eb2c 100644 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm +++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm @@ -114,7 +114,7 @@ for(var/i in 1 to heal_attempts) if(S.health < S.maxHealth) S.adjustHealth(-heal_amount) - new /obj/effect/overlay/temp/heal(T, "#1E8CE1") + new /obj/effect/temp_visual/heal(T, "#1E8CE1") if(i == heal_attempts && S.health >= S.maxHealth) //we finished healing on the last tick, give them the message to_chat(S, "\"[text2ratvar(pick(heal_finish_messages))]\"") break @@ -129,7 +129,7 @@ for(var/i in 1 to heal_attempts) if(S.health < S.maxHealth) S.heal_ordered_damage(heal_amount, damage_heal_order) - new /obj/effect/overlay/temp/heal(T, "#1E8CE1") + new /obj/effect/temp_visual/heal(T, "#1E8CE1") if(i == heal_attempts && S.health >= S.maxHealth) to_chat(S, "\"[text2ratvar(pick(heal_finish_messages))]\"") break @@ -158,7 +158,7 @@ for(var/i in 1 to heal_ticks) if(H.health < H.maxHealth) H.heal_ordered_damage(heal_amount, damage_heal_order) - new /obj/effect/overlay/temp/heal(T, "#1E8CE1") + new /obj/effect/temp_visual/heal(T, "#1E8CE1") if(i == heal_ticks && H.health >= H.maxHealth) to_chat(H, "\"[text2ratvar(pick(heal_finish_messages))]\"") break @@ -174,10 +174,10 @@ if(C.obj_integrity < C.max_integrity) C.obj_integrity = min(C.obj_integrity + 5, C.max_integrity) C.update_icon() - new /obj/effect/overlay/temp/heal(T, "#1E8CE1") + new /obj/effect/temp_visual/heal(T, "#1E8CE1") else break - new /obj/effect/overlay/temp/ratvar/mending_mantra(get_turf(invoker)) + new /obj/effect/temp_visual/ratvar/mending_mantra(get_turf(invoker)) return TRUE @@ -389,7 +389,7 @@ usable_power = min(Floor(C.cell.charge * 0.2, MIN_CLOCKCULT_POWER), 1000) - prev_power if(usable_power > 0 && C.cell.use(usable_power)) multiplier += (usable_power * 0.0005) - var/obj/effect/overlay/temp/ratvar/volt_hit/VH = new /obj/effect/overlay/temp/ratvar/volt_hit(get_turf(invoker), null, multiplier) + var/obj/effect/temp_visual/ratvar/volt_hit/VH = new /obj/effect/temp_visual/ratvar/volt_hit(get_turf(invoker), null, multiplier) invoker.visible_message("[invoker] is struck by [invoker.p_their()] own [VH.name]!", "You're struck by your own [VH.name]!") invoker.adjustFireLoss(VH.damage) //you have to fail all five blasts to die to this playsound(invoker, 'sound/machines/defib_zap.ogg', VH.damage, 1, -1) diff --git a/code/game/gamemodes/clock_cult/clock_structure.dm b/code/game/gamemodes/clock_cult/clock_structure.dm index 0a193e75585..64c71359719 100644 --- a/code/game/gamemodes/clock_cult/clock_structure.dm +++ b/code/game/gamemodes/clock_cult/clock_structure.dm @@ -131,7 +131,7 @@ if(anchored && unanchored_icon) anchored = FALSE update_anchored(null, obj_integrity > max_integrity * 0.25) - new /obj/effect/overlay/temp/emp(loc) + new /obj/effect/temp_visual/emp(loc) //for the ark and Ratvar @@ -222,7 +222,7 @@ /obj/structure/destructible/clockwork/powered/emp_act(severity) if(forced_disable(TRUE)) - new /obj/effect/overlay/temp/emp(loc) + new /obj/effect/temp_visual/emp(loc) /obj/structure/destructible/clockwork/powered/proc/total_accessable_power() //how much power we have and can use if(!needs_power || GLOB.ratvar_awakens) diff --git a/code/game/gamemodes/clock_cult/clock_structures/geis_binding.dm b/code/game/gamemodes/clock_cult/clock_structures/geis_binding.dm index 1203c7119a7..84098fca578 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/geis_binding.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/geis_binding.dm @@ -31,7 +31,7 @@ return /obj/structure/destructible/clockwork/geis_binding/emp_act(severity) - new /obj/effect/overlay/temp/emp(loc) + new /obj/effect/temp_visual/emp(loc) qdel(src) /obj/structure/destructible/clockwork/geis_binding/post_buckle_mob(mob/living/M) @@ -54,8 +54,8 @@ if(!can_resist) repair_and_interrupt() else - var/obj/effect/overlay/temp/ratvar/geis_binding/G = new /obj/effect/overlay/temp/ratvar/geis_binding(M.loc) - var/obj/effect/overlay/temp/ratvar/geis_binding/T = new /obj/effect/overlay/temp/ratvar/geis_binding/top(M.loc) + var/obj/effect/temp_visual/ratvar/geis_binding/G = new /obj/effect/temp_visual/ratvar/geis_binding(M.loc) + var/obj/effect/temp_visual/ratvar/geis_binding/T = new /obj/effect/temp_visual/ratvar/geis_binding/top(M.loc) G.layer = mob_layer - 0.01 T.layer = mob_layer + 0.01 G.alpha = alpha @@ -93,10 +93,10 @@ var/mob/living/carbon/C = L C.silent += 4 visible_message("[src] flares brightly!") - var/obj/effect/overlay/temp/ratvar/geis_binding/G1 = new /obj/effect/overlay/temp/ratvar/geis_binding(loc) - var/obj/effect/overlay/temp/ratvar/geis_binding/G2 = new /obj/effect/overlay/temp/ratvar/geis_binding(loc) - var/obj/effect/overlay/temp/ratvar/geis_binding/T1 = new /obj/effect/overlay/temp/ratvar/geis_binding/top(loc) - var/obj/effect/overlay/temp/ratvar/geis_binding/T2 = new /obj/effect/overlay/temp/ratvar/geis_binding/top(loc) + var/obj/effect/temp_visual/ratvar/geis_binding/G1 = new /obj/effect/temp_visual/ratvar/geis_binding(loc) + var/obj/effect/temp_visual/ratvar/geis_binding/G2 = new /obj/effect/temp_visual/ratvar/geis_binding(loc) + var/obj/effect/temp_visual/ratvar/geis_binding/T1 = new /obj/effect/temp_visual/ratvar/geis_binding/top(loc) + var/obj/effect/temp_visual/ratvar/geis_binding/T2 = new /obj/effect/temp_visual/ratvar/geis_binding/top(loc) G1.layer = mob_layer - 0.01 G2.layer = mob_layer - 0.01 T1.layer = mob_layer + 0.01 diff --git a/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm b/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm index c4415dfed86..9c7b5e9518e 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm @@ -87,7 +87,7 @@ var/obj/mecha/M = target M.take_damage(damage_per_tick * get_efficiency_mod(), BURN, "melee", 1, get_dir(src, M)) - new /obj/effect/overlay/temp/ratvar/ocular_warden(get_turf(target)) + new /obj/effect/temp_visual/ratvar/ocular_warden(get_turf(target)) setDir(get_dir(get_turf(src), get_turf(target))) if(!target) diff --git a/code/game/gamemodes/clock_cult/clock_structures/ratvar_the_clockwork_justicar.dm b/code/game/gamemodes/clock_cult/clock_structures/ratvar_the_clockwork_justicar.dm index b82e9a9c85e..25f151def54 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/ratvar_the_clockwork_justicar.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/ratvar_the_clockwork_justicar.dm @@ -28,7 +28,7 @@ var/mutable_appearance/alert_overlay = mutable_appearance('icons/effects/clockwork_effects.dmi', "ratvar_alert") var/area/A = get_area(src) notify_ghosts("The Justiciar's light calls to you! Reach out to Ratvar in [A.name] to be granted a shell to spread his glory!", null, source = src, alert_overlay = alert_overlay) - INVOKE_ASYNC(SSshuttle.emergency, /obj/docking_port/mobile/emergency..proc/request, null, 0, 0) + INVOKE_ASYNC(SSshuttle.emergency, /obj/docking_port/mobile/emergency.proc/request, null, 0, null, FALSE, 0) /obj/structure/destructible/clockwork/massive/ratvar/Destroy() GLOB.ratvar_awakens-- diff --git a/code/game/gamemodes/clock_cult/clock_structures/wall_gear.dm b/code/game/gamemodes/clock_cult/clock_structures/wall_gear.dm index 94bf35b6a76..8dc2fb06f05 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/wall_gear.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/wall_gear.dm @@ -19,7 +19,7 @@ /obj/structure/destructible/clockwork/wall_gear/Initialize() . = ..() - new /obj/effect/overlay/temp/ratvar/gear(get_turf(src)) + new /obj/effect/temp_visual/ratvar/gear(get_turf(src)) /obj/structure/destructible/clockwork/wall_gear/emp_act(severity) return diff --git a/code/game/gamemodes/cult/cult_comms.dm b/code/game/gamemodes/cult/cult_comms.dm index 7e516da4832..1f380dfb5e1 100644 --- a/code/game/gamemodes/cult/cult_comms.dm +++ b/code/game/gamemodes/cult/cult_comms.dm @@ -177,13 +177,13 @@ var/turf/mobloc = get_turf(B.current) switch(i) if(1) - new /obj/effect/overlay/temp/cult/sparks(mobloc, B.current.dir) + new /obj/effect/temp_visual/cult/sparks(mobloc, B.current.dir) playsound(mobloc, "sparks", 50, 1) if(2) - new /obj/effect/overlay/temp/dir_setting/cult/phase/out(mobloc, B.current.dir) + new /obj/effect/temp_visual/dir_setting/cult/phase/out(mobloc, B.current.dir) playsound(mobloc, "sparks", 75, 1) if(3) - new /obj/effect/overlay/temp/dir_setting/cult/phase(mobloc, B.current.dir) + new /obj/effect/temp_visual/dir_setting/cult/phase(mobloc, B.current.dir) playsound(mobloc, "sparks", 100, 1) if(4) playsound(mobloc, 'sound/magic/exit_blood.ogg', 100, 1) @@ -193,7 +193,7 @@ var/obj/item/device/soulstone/S = B.current.loc S.release_shades(owner) B.current.setDir(SOUTH) - new /obj/effect/overlay/temp/cult/blood(final) + new /obj/effect/temp_visual/cult/blood(final) addtimer(CALLBACK(B.current, /mob/.proc/reckon, final), 10) else return @@ -201,7 +201,7 @@ Remove(owner) /mob/proc/reckon(turf/final) - new /obj/effect/overlay/temp/cult/blood/out(get_turf(src)) + new /obj/effect/temp_visual/cult/blood/out(get_turf(src)) forceMove(final) /datum/action/innate/cult/master/finalreck/proc/chant(chant_number) diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 821edd1613c..a59d7cd3cfe 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -204,7 +204,7 @@ if(current_charges) owner.visible_message("\The [attack_text] is deflected in a burst of blood-red sparks!") current_charges-- - new /obj/effect/overlay/temp/cult/sparks(get_turf(owner)) + new /obj/effect/temp_visual/cult/sparks(get_turf(owner)) if(!current_charges) owner.visible_message("The runed shield around [owner] suddenly disappears!") owner.update_inv_wear_suit() @@ -214,7 +214,7 @@ /obj/item/clothing/suit/hooded/cultrobes/cult_shield/worn_overlays(isinhands) . = list() if(!isinhands && current_charges) - . += mutable_appearance('icons/effects/effects.dmi', "shield-cult", MOB_LAYER + 0.01) + . += mutable_appearance('icons/effects/cult_effects.dmi', "shield-cult", MOB_LAYER + 0.01) /obj/item/clothing/suit/hooded/cultrobes/berserker name = "flagellant's robes" @@ -356,14 +356,14 @@ if(uses <= 0) icon_state ="shifter_drained" playsound(mobloc, "sparks", 50, 1) - new /obj/effect/overlay/temp/dir_setting/cult/phase/out(mobloc, C.dir) + new /obj/effect/temp_visual/dir_setting/cult/phase/out(mobloc, C.dir) var/atom/movable/pulled = handle_teleport_grab(destination, C) C.forceMove(destination) if(pulled) C.start_pulling(pulled) //forcemove resets pulls, so we need to re-pull - new /obj/effect/overlay/temp/dir_setting/cult/phase(destination, C.dir) + new /obj/effect/temp_visual/dir_setting/cult/phase(destination, C.dir) playsound(destination, 'sound/effects/phasein.ogg', 25, 1) playsound(destination, "sparks", 50, 1) diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm index 51c622858dd..63e5b97b9ed 100644 --- a/code/game/gamemodes/cult/cult_structures.dm +++ b/code/game/gamemodes/cult/cult_structures.dm @@ -152,7 +152,7 @@ for(var/mob/living/L in range(5, src)) if(iscultist(L) || isshade(L) || isconstruct(L)) if(L.health != L.maxHealth) - new /obj/effect/overlay/temp/heal(get_turf(src), "#960000") + new /obj/effect/temp_visual/heal(get_turf(src), "#960000") if(ishuman(L)) L.adjustBruteLoss(-1, 0) L.adjustFireLoss(-1, 0) @@ -190,7 +190,7 @@ else var/turf/open/floor/engine/cult/F = safepick(cultturfs) if(F) - new /obj/effect/overlay/temp/cult/turf/floor(F) + new /obj/effect/temp_visual/cult/turf/floor(F) else // Are we in space or something? No cult turfs or // convertable turfs? diff --git a/code/game/gamemodes/cult/rune_spawn_action.dm b/code/game/gamemodes/cult/rune_spawn_action.dm new file mode 100644 index 00000000000..7412a5d6bbb --- /dev/null +++ b/code/game/gamemodes/cult/rune_spawn_action.dm @@ -0,0 +1,70 @@ +//after a delay, creates a rune below you. for constructs creating runes. +/datum/action/innate/cult/create_rune + background_icon_state = "bg_cult" + var/obj/effect/rune/rune_type + var/cooldown = 0 + var/base_cooldown = 900 + var/scribe_time = 100 + var/damage_interrupt = TRUE + var/action_interrupt = TRUE + var/obj/effect/temp_visual/cult/rune_spawn/rune_word_type + var/obj/effect/temp_visual/cult/rune_spawn/rune_innerring_type + var/obj/effect/temp_visual/cult/rune_spawn/rune_center_type + var/rune_color + +/datum/action/innate/cult/create_rune/IsAvailable() + if(!rune_type || cooldown > world.time) + return FALSE + return ..() + +/datum/action/innate/cult/create_rune/Activate() + var/chosen_keyword + if(!isturf(owner.loc)) + to_chat(owner, "[src] pulses blood red!") var/oldcolor = color - color = "#7D1717" + color = RUNE_COLOR_DARKRED var/mob/living/L = pick(myriad_targets) var/is_clock = is_servant_of_ratvar(L) var/is_convertable = is_convertable_to_cult(L) @@ -410,7 +410,7 @@ structure_check() searches for nearby cultist structures required for the invoca else GLOB.sacrificed += sacrificial - new /obj/effect/overlay/temp/cult/sac(get_turf(src)) + new /obj/effect/temp_visual/cult/sac(get_turf(src)) for(var/M in invokers) if(big_sac) to_chat(M, "\"Yes! This is the one I desire! You have done well.\"") @@ -442,7 +442,7 @@ structure_check() searches for nearby cultist structures required for the invoca invocation = "TOK-LYR RQA-NAP G'OLT-ULOFT!!" req_cultists = 9 icon = 'icons/effects/96x96.dmi' - color = "#7D1717" + color = RUNE_COLOR_DARKRED icon_state = "rune_large" pixel_x = -32 //So the big ol' 96x96 sprite shows up right pixel_y = -32 @@ -478,12 +478,10 @@ structure_check() searches for nearby cultist structures required for the invoca send_to_playing_players('sound/effects/dimensional_rend.ogg') var/turf/T = get_turf(src) sleep(40) - SSticker.mode.eldergod = FALSE if(src) - color = "#FF0000" - deltimer(GLOB.blood_target_reset_timer) - new /obj/singularity/narsie/large/cult(T) //Causes Nar-Sie to spawn and makes it the blood target even if the rune has been removed - + color = RUNE_COLOR_RED + SSticker.mode.eldergod = FALSE + new /obj/singularity/narsie/large/cult(T) //Causes Nar-Sie to spawn even if the rune has been removed /obj/effect/rune/narsie/attackby(obj/I, mob/user, params) //Since the narsie rune takes a long time to make, add logging to removal. if((istype(I, /obj/item/weapon/tome) && iscultist(user))) @@ -504,7 +502,7 @@ structure_check() searches for nearby cultist structures required for the invoca cultist_desc = "requires the corpse of a cultist placed upon the rune. Provided there have been sufficient sacrifices, they will be revived." invocation = "Pasnar val'keriam usinar. Savrae ines amutan. Yam'toth remium il'tarat!" //Depends on the name of the user - see below icon_state = "1" - color = "#C80000" + color = RUNE_COLOR_MEDIUMRED var/static/revives_used = 0 /obj/effect/rune/raise_dead/examine(mob/user) @@ -595,7 +593,7 @@ structure_check() searches for nearby cultist structures required for the invoca invocation = "Ta'gh fara'qha fel d'amar det!" icon_state = "5" allow_excess_invokers = 1 - color = "#4D94FF" + color = RUNE_COLOR_EMP /obj/effect/rune/emp/invoke(var/list/invokers) var/turf/E = get_turf(src) @@ -625,7 +623,7 @@ structure_check() searches for nearby cultist structures required for the invoca cultist_desc = "severs the link between one's spirit and body. This effect is taxing and one's physical body will take damage while this is active." invocation = "Fwe'sh mah erl nyag r'ya!" icon_state = "7" - color = "#7D1717" + color = RUNE_COLOR_DARKRED rune_in_use = 0 //One at a time, please! construct_invoke = 0 var/mob/living/affecting = null @@ -651,9 +649,9 @@ structure_check() searches for nearby cultist structures required for the invoca var/mob/living/user = invokers[1] ..() var/turf/T = get_turf(src) - rune_in_use = 1 + rune_in_use = TRUE affecting = user - user.color = "#7D1717" + user.add_atom_colour(RUNE_COLOR_DARKRED, ADMIN_COLOUR_PRIORITY) user.visible_message("[user] freezes statue-still, glowing an unearthly red.", \ "You see what lies beyond. All is revealed. While this is a wondrous experience, your physical form will waste away in this state. Hurry...") user.ghostize(1) @@ -661,7 +659,7 @@ structure_check() searches for nearby cultist structures required for the invoca if(!affecting) visible_message("[src] pulses gently before falling dark.") affecting = null //In case it's assigned to a number or something - rune_in_use = 0 + rune_in_use = FALSE return affecting.apply_damage(0.1, BRUTE) if(!(user in T)) @@ -671,9 +669,9 @@ structure_check() searches for nearby cultist structures required for the invoca if(user.key) user.visible_message("[user] slowly relaxes, the glow around [user.p_them()] dimming.", \ "You are re-united with your physical form. [src] releases its hold over you.") - user.color = initial(user.color) + user.remove_atom_colour(ADMIN_COLOUR_PRIORITY, RUNE_COLOR_DARKRED) user.Weaken(3) - rune_in_use = 0 + rune_in_use = FALSE affecting = null return if(user.stat == UNCONSCIOUS) @@ -681,14 +679,14 @@ structure_check() searches for nearby cultist structures required for the invoca var/mob/dead/observer/G = user.get_ghost() to_chat(G, "You feel the link between you and your body weakening... you must hurry!") if(user.stat == DEAD) - user.color = initial(user.color) - rune_in_use = 0 + user.remove_atom_colour(ADMIN_COLOUR_PRIORITY, RUNE_COLOR_DARKRED) + rune_in_use = FALSE affecting = null var/mob/dead/observer/G = user.get_ghost() to_chat(G, "You suddenly feel your physical form pass on. [src]'s exertion has killed you!") return sleep(1) - rune_in_use = 0 + rune_in_use = FALSE //Rite of the Corporeal Shield: When invoked, becomes solid and cannot be passed. Invoke again to undo. /obj/effect/rune/wall @@ -696,7 +694,7 @@ structure_check() searches for nearby cultist structures required for the invoca cultist_desc = "when invoked, makes a temporary invisible wall to block passage. Can be invoked again to reverse this." invocation = "Khari'd! Eske'te tannin!" icon_state = "1" - color = "#C80000" + color = RUNE_COLOR_MEDIUMRED CanAtmosPass = ATMOS_PASS_DENSITY var/density_timer var/recharging = FALSE @@ -755,7 +753,7 @@ structure_check() searches for nearby cultist structures required for the invoca /obj/effect/rune/wall/proc/recharge() recharging = FALSE - add_atom_colour("#C80000", FIXED_COLOUR_PRIORITY) + add_atom_colour(RUNE_COLOR_MEDIUMRED, FIXED_COLOUR_PRIORITY) /obj/effect/rune/wall/proc/update_state() deltimer(density_timer) @@ -766,10 +764,10 @@ structure_check() searches for nearby cultist structures required for the invoca shimmer.alpha = 60 shimmer.color = "#701414" add_overlay(shimmer) - add_atom_colour("#FF0000", FIXED_COLOUR_PRIORITY) + add_atom_colour(RUNE_COLOR_RED, FIXED_COLOUR_PRIORITY) else cut_overlays() - add_atom_colour("#C80000", FIXED_COLOUR_PRIORITY) + add_atom_colour(RUNE_COLOR_MEDIUMRED, FIXED_COLOUR_PRIORITY) //Rite of Joined Souls: Summons a single cultist. /obj/effect/rune/summon @@ -779,7 +777,7 @@ structure_check() searches for nearby cultist structures required for the invoca req_cultists = 2 allow_excess_invokers = 1 icon_state = "5" - color = "#00FF00" + color = RUNE_COLOR_SUMMON /obj/effect/rune/summon/invoke(var/list/invokers) var/mob/living/user = invokers[1] @@ -824,7 +822,7 @@ structure_check() searches for nearby cultist structures required for the invoca cultist_desc = "boils the blood of non-believers who can see the rune, rapidly dealing extreme amounts of damage. Requires 3 invokers." invocation = "Dedo ol'btoh!" icon_state = "4" - color = "#C80000" + color = RUNE_COLOR_MEDIUMRED light_color = LIGHT_COLOR_LAVA req_cultists = 3 construct_invoke = 0 @@ -891,7 +889,7 @@ structure_check() searches for nearby cultist structures required for the invoca invocation = "Gal'h'rfikk harfrandid mud'gib!" //how the fuck do you pronounce this icon_state = "6" construct_invoke = 0 - color = "#C80000" + color = RUNE_COLOR_MEDIUMRED var/ghost_limit = 5 var/ghosts = 0 diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 027df31acd6..9a9d8c582b3 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -49,7 +49,7 @@ /obj/item/weapon/paper/talisman/teleport cultist_name = "Talisman of Teleportation" cultist_desc = "A single-use talisman that will teleport a user to a random rune of the same keyword." - color = "#551A8B" // purple + color = RUNE_COLOR_TELEPORT invocation = "Sas'so c'arta forbici!" health_cost = 5 creation_time = 80 diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm index e2d015da552..bb4bf455dcd 100644 --- a/code/game/gamemodes/gang/gang.dm +++ b/code/game/gamemodes/gang/gang.dm @@ -2,7 +2,8 @@ //Gang War Game Mode GLOBAL_LIST_INIT(gang_name_pool, list("Clandestine", "Prima", "Zero-G", "Max", "Blasto", "Waffle", "North", "Omni", "Newton", "Cyber", "Donk", "Gene", "Gib", "Tunnel", "Diablo", "Psyke", "Osiron", "Sirius", "Sleeping Carp")) -GLOBAL_LIST_INIT(gang_colors_pool, list("red","orange","yellow","green","blue","purple")) +GLOBAL_LIST_INIT(gang_colors_pool, list("red","orange","yellow","green","blue","purple", "white")) +GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/obj/item/clothing/suit/jacket/leather/overcoat,/obj/item/clothing/suit/jacket/puffer,/obj/item/clothing/suit/jacket/miljacket,/obj/item/clothing/suit/jacket/puffer,/obj/item/clothing/suit/pirate,/obj/item/clothing/suit/poncho,/obj/item/clothing/suit/apron/overalls,/obj/item/clothing/suit/jacket/letterman)) /datum/game_mode var/list/datum/gang/gangs = list() @@ -164,6 +165,8 @@ GLOBAL_LIST_INIT(gang_colors_pool, list("red","orange","yellow","green","blue"," /////////////////////////////////////////// /datum/game_mode/proc/add_gangster(datum/mind/gangster_mind, datum/gang/G, check = 1) if(!G || (gangster_mind in get_all_gangsters()) || (gangster_mind.enslaved_to && !is_gangster(gangster_mind.enslaved_to))) + if(is_in_gang(gangster_mind.current, G.name) && !(gangster_mind in get_gang_bosses())) + return 3 return 0 if(check && gangster_mind.current.isloyal()) //Check to see if the potential gangster is implanted return 1 @@ -193,6 +196,10 @@ GLOBAL_LIST_INIT(gang_colors_pool, list("red","orange","yellow","green","blue"," //////////////////////////////////////////////////////////////////// /datum/game_mode/proc/remove_gangster(datum/mind/gangster_mind, beingborged, silent, remove_bosses=0) var/datum/gang/gang = gangster_mind.gang_datum + for(var/obj/O in gangster_mind.current.contents) + if(istype(O, /obj/item/device/gangtool/soldier)) + qdel(O) + if(!gang) return 0 diff --git a/code/game/gamemodes/gang/gang_datum.dm b/code/game/gamemodes/gang/gang_datum.dm index 2493c7386ce..0ff9ef4f2db 100644 --- a/code/game/gamemodes/gang/gang_datum.dm +++ b/code/game/gamemodes/gang/gang_datum.dm @@ -15,19 +15,29 @@ var/list/territory_lost = list() var/recalls = 1 var/dom_attempts = 2 - var/points = 15 + var/inner_outfit + var/outer_outfit var/datum/atom_hud/antag/gang/ganghud var/is_deconvertible = TRUE //Can you deconvert normal gangsters from the gang var/domination_timer var/is_dominating - var/item_list - var/item_category_list - var/buyable_items = list( + var/boss_item_list + var/boss_category_list + var/static/list/boss_items = list( /datum/gang_item/function/gang_ping, /datum/gang_item/function/recall, - /datum/gang_item/function/outfit, + + /datum/gang_item/clothing/under, + /datum/gang_item/clothing/suit, + /datum/gang_item/clothing/hat, + /datum/gang_item/clothing/neck, + /datum/gang_item/clothing/shoes, + /datum/gang_item/clothing/mask, + /datum/gang_item/clothing/hands, + /datum/gang_item/clothing/belt, + /datum/gang_item/weapon/shuriken, /datum/gang_item/weapon/switchblade, /datum/gang_item/weapon/improvised, @@ -41,6 +51,7 @@ /datum/gang_item/weapon/machinegun, /datum/gang_item/weapon/uzi, /datum/gang_item/weapon/ammo/uzi_ammo, + /datum/gang_item/equipment/sharpener, /datum/gang_item/equipment/spraycan, /datum/gang_item/equipment/sharpener, /datum/gang_item/equipment/emp, @@ -50,11 +61,45 @@ /datum/gang_item/equipment/implant_breaker, /datum/gang_item/equipment/wetwork_boots, /datum/gang_item/equipment/pen, - /datum/gang_item/equipment/gangtool, - /datum/gang_item/equipment/necklace, /datum/gang_item/equipment/dominator ) + var/reg_item_list + var/reg_category_list + var/static/list/soldier_items = list( + /datum/gang_item/clothing/under, + /datum/gang_item/clothing/suit, + /datum/gang_item/clothing/hat, + /datum/gang_item/clothing/neck, + /datum/gang_item/clothing/shoes, + /datum/gang_item/clothing/mask, + /datum/gang_item/clothing/hands, + /datum/gang_item/clothing/belt, + + /datum/gang_item/weapon/shuriken, + /datum/gang_item/weapon/switchblade, + /datum/gang_item/weapon/improvised, + /datum/gang_item/weapon/ammo/improvised_ammo, + /datum/gang_item/weapon/surplus, + /datum/gang_item/weapon/ammo/surplus_ammo, + /datum/gang_item/weapon/pistol, + /datum/gang_item/weapon/ammo/pistol_ammo, + /datum/gang_item/weapon/sniper, + /datum/gang_item/weapon/ammo/sniper_ammo, + /datum/gang_item/weapon/machinegun, + /datum/gang_item/weapon/uzi, + /datum/gang_item/weapon/ammo/uzi_ammo, + /datum/gang_item/equipment/sharpener, + /datum/gang_item/equipment/spraycan, + /datum/gang_item/equipment/sharpener, + /datum/gang_item/equipment/emp, + /datum/gang_item/equipment/c4, + /datum/gang_item/equipment/frag, + /datum/gang_item/equipment/stimpack, + /datum/gang_item/equipment/implant_breaker, + /datum/gang_item/equipment/wetwork_boots, + ) + /datum/gang/New(loc,gangname) if(!GLOB.gang_colors_pool.len) message_admins("WARNING: Maximum number of gangs have been exceeded!") @@ -66,36 +111,56 @@ switch(color) if("red") color_hex = "#DA0000" + inner_outfit = pick(/obj/item/clothing/under/color/red, /obj/item/clothing/under/lawyer/red) if("orange") color_hex = "#FF9300" + inner_outfit = pick(/obj/item/clothing/under/color/orange, /obj/item/clothing/under/geisha) if("yellow") color_hex = "#FFF200" + inner_outfit = pick(/obj/item/clothing/under/color/yellow, /obj/item/clothing/under/burial, /obj/item/clothing/under/suit_jacket/tan) if("green") color_hex = "#A8E61D" + inner_outfit = pick(/obj/item/clothing/under/color/green, /obj/item/clothing/under/syndicate/camo, /obj/item/clothing/under/suit_jacket/green) if("blue") color_hex = "#00B7EF" + inner_outfit = pick(/obj/item/clothing/under/color/blue, /obj/item/clothing/under/suit_jacket/navy) if("purple") color_hex = "#DA00FF" + inner_outfit = pick(/obj/item/clothing/under/color/lightpurple, /obj/item/clothing/under/lawyer/purpsuit) + if("white") + color_hex = "#FFFFFF" + inner_outfit = pick(/obj/item/clothing/under/color/white, /obj/item/clothing/under/suit_jacket/white) name = (gangname ? gangname : pick(GLOB.gang_name_pool)) GLOB.gang_name_pool -= name - + outer_outfit = pick(GLOB.gang_outfit_pool) ganghud = new() ganghud.color = color_hex log_game("The [name] Gang has been created. Their gang color is [color].") build_item_list() /datum/gang/proc/build_item_list() - item_list = list() - item_category_list = list() - for(var/V in buyable_items) - var/datum/gang_item/G = new V() - item_list[G.id] = G - var/list/Cat = item_category_list[G.category] + boss_item_list = list() + boss_category_list = list() + for(var/B in boss_items) + var/datum/gang_item/G = new B() + boss_item_list[G.id] = G + var/list/Cat = boss_category_list[G.category] if(Cat) Cat += G else - item_category_list[G.category] = list(G) + boss_category_list[G.category] = list(G) + + reg_item_list = list() + reg_category_list = list() + for(var/S in soldier_items) + var/datum/gang_item/G = new S() + reg_item_list[G.id] = G + var/list/Cat = reg_category_list[G.category] + if(Cat) + Cat += G + else + reg_category_list[G.category] = list(G) /datum/gang/proc/add_gang_hud(datum/mind/recruit_mind) ganghud.join_hud(recruit_mind.current) @@ -116,52 +181,6 @@ /datum/gang/proc/domination_time_remaining() var/diff = domination_timer - world.time return diff / 10 -//////////////////////////////////////////// OUTFITS - - -//Used by recallers when purchasing a gang outfit. First time a gang outfit is purchased the buyer decides a gang style which is stored so gang outfits are uniform -/datum/gang/proc/gang_outfit(mob/living/carbon/user,obj/item/device/gangtool/gangtool) - if(!user || !gangtool) - return 0 - if(!gangtool.can_use(user)) - return 0 - - var/gang_style_list = list("Gang Colors","Black Suits","White Suits","Leather Jackets","Leather Overcoats","Puffer Jackets","Military Jackets","Tactical Turtlenecks","Soviet Uniforms") - if(!style && (user.mind in SSticker.mode.get_gang_bosses())) //Only the boss gets to pick a style - style = input("Pick an outfit style.", "Pick Style") as null|anything in gang_style_list - - if(gangtool.can_use(user) && (gangtool.outfits >= 1)) - var/outfit_path - switch(style) - if(null || "Gang Colors") - outfit_path = text2path("/obj/item/clothing/under/color/[color]") - if("Black Suits") - outfit_path = /obj/item/clothing/under/suit_jacket/charcoal - if("White Suits") - outfit_path = /obj/item/clothing/under/suit_jacket/white - if("Puffer Jackets") - outfit_path = /obj/item/clothing/suit/jacket/puffer - if("Leather Jackets") - outfit_path = /obj/item/clothing/suit/jacket/leather - if("Leather Overcoats") - outfit_path = /obj/item/clothing/suit/jacket/leather/overcoat - if("Military Jackets") - outfit_path = /obj/item/clothing/suit/jacket/miljacket - if("Soviet Uniforms") - outfit_path = /obj/item/clothing/under/soviet - if("Tactical Turtlenecks") - outfit_path = /obj/item/clothing/under/syndicate - - if(outfit_path) - var/obj/item/clothing/outfit = new outfit_path(user.loc) - outfit.armor = list(melee = 20, bullet = 35, laser = 10, energy = 10, bomb = 30, bio = 0, rad = 0, fire = 30, acid = 30) - outfit.desc += " Tailored for the [name] Gang to offer the wearer moderate protection against ballistics and physical trauma." - outfit.gang = src - user.put_in_hands(outfit) - return 1 - - return 0 - //////////////////////////////////////////// MESSAGING @@ -199,45 +218,7 @@ lost_names += "[territory_lost[area]]" territory -= area - //Count uniformed gangsters - var/uniformed = 0 - for(var/datum/mind/gangmind in (gangsters|bosses)) - if(ishuman(gangmind.current)) - var/mob/living/carbon/human/gangster = gangmind.current - //Gangster must be alive and on station - if((gangster.stat == DEAD) || (gangster.z > ZLEVEL_STATION)) - continue - - var/obj/item/clothing/outfit - var/obj/item/clothing/gang_outfit - if(gangster.w_uniform) - outfit = gangster.w_uniform - if(outfit.gang == src) - gang_outfit = outfit - if(gangster.wear_suit) - outfit = gangster.wear_suit - if(outfit.gang == src) - gang_outfit = outfit - - if(gang_outfit) - to_chat(gangster, "The [src] Gang's influence grows as you wear [gang_outfit].") - uniformed ++ - //Calculate and report influence growth - var/message = "[src] Gang Status Report:
*---------*
" - if(is_dominating) - var/seconds_remaining = domination_time_remaining() - var/new_time = max(180, seconds_remaining - (uniformed * 4) - (territory.len * 2)) - if(new_time < seconds_remaining) - message += "Takeover shortened by [seconds_remaining - new_time] seconds for defending [territory.len] territories and [uniformed] uniformed gangsters.
" - set_domination_time(new_time) - message += "[seconds_remaining] seconds remain in hostile takeover.
" - else - var/points_new = min(999,points + 15 + (uniformed * 2) + territory.len) - if(points_new != points) - message += "Gang influence has increased by [points_new - points] for defending [territory.len] territories and [uniformed] uniformed gangsters.
" - points = points_new - message += "Your gang now has [points] influence.
" //Process new territories for(var/area in territory_new) @@ -247,27 +228,69 @@ territory += area //Report territory changes + var/message = "[src] Gang Status Report:.
*---------*
" message += "[territory_new.len] new territories:
[added_names]
" message += "[territory_lost.len] territories lost:
[lost_names]
" - //Clear the lists territory_new = list() territory_lost = list() - var/control = round((territory.len/GLOB.start_state.num_territories)*100, 1) - message += "Your gang now has [control]% control of the station.
*---------*" - message_gangtools(message) - - //Increase outfit stock - for(var/obj/item/device/gangtool/tool in gangtools) - tool.outfits = min(tool.outfits+1,5) + var/sbonus = sqrt(LAZYLEN(territory)) // Bonus given to soldier's for the gang's total territory + message += "Your gang now has [control]% control of the station.
*---------*
" + if(is_dominating) + var/seconds_remaining = domination_time_remaining() + var/new_time = max(180, seconds_remaining - (territory.len * 2)) + if(new_time < seconds_remaining) + message += "Takeover shortened by [seconds_remaining - new_time] seconds for defending [territory.len] territories.
" + set_domination_time(new_time) + message += "[seconds_remaining] seconds remain in hostile takeover.
" + else + for(var/obj/item/device/gangtool/G in gangtools) + var/pmessage = message + var/points_new = 0 + if(istype(G, /obj/item/device/gangtool/soldier)) + points_new = max(0,round(3 - G.points/10)) + (sbonus) + (LAZYLEN(G.tags)/2) // Soldier points + pmessage += "Your influence has increased by [round(sbonus)] from your gang holding [LAZYLEN(territory)] territories, and a bonus of [round(LAZYLEN(G.tags)/2)] for territories you have personally marked and kept intact.
" + else + points_new = max(0,round(5 - G.points/10)) + LAZYLEN(territory) // Boss points, more focused on big picture + pmessage += "Your influence has increased by [round(points_new)] from your gang holding [territory.len] territories
" + G.points += points_new + var/mob/living/carbon/human/ganger = get(G.loc, /mob/living) + var/points_newer = 0 + var/static/inner = inner_outfit + var/static/outer = outer_outfit + if(ishuman(ganger) && ganger.mind in (gangsters|bosses)) + for(var/obj/C in ganger.contents) + if(C.type == inner_outfit) + points_newer += 2 + continue + if(C.type == outer_outfit) + points_newer += 2 + continue + switch(C.type) + if(/obj/item/clothing/neck/necklace/dope) + points_newer += 2 + if(/obj/item/clothing/head/collectable/petehat/gang) + points_newer += 4 + if(/obj/item/clothing/shoes/gang) + points_newer += 6 + if(/obj/item/clothing/mask/gskull) + points_newer += 5 + if(/obj/item/clothing/gloves/gang) + points_newer += 3 + if(/obj/item/weapon/storage/belt/military/gang) + points_newer += 4 + if(points_newer) + G.points += points_newer + pmessage += "Your influential choice of clothing has further increased your influence by [points_newer] points.
" + pmessage += "You now have [G.points] influence.
" + to_chat(ganger, "\icon[G] [pmessage]") //Multiverse /datum/gang/multiverse dom_attempts = 0 - points = 0 fighting_style = "multiverse" is_deconvertible = FALSE diff --git a/code/game/gamemodes/gang/gang_items.dm b/code/game/gamemodes/gang/gang_items.dm index d624429da99..a9607639c05 100644 --- a/code/game/gamemodes/gang/gang_items.dm +++ b/code/game/gamemodes/gang/gang_items.dm @@ -6,14 +6,12 @@ var/category var/id + /datum/gang_item/proc/purchase(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool, check_canbuy = TRUE) if(check_canbuy && !can_buy(user, gang, gangtool)) return FALSE var/real_cost = get_cost(user, gang, gangtool) - if(gang && real_cost) - gang.message_gangtools("A [get_name_display(user, gang, gangtool)] was purchased by [user.real_name] for [real_cost] Influence.") - log_game("A [id] was purchased by [key_name(user)] ([gang.name] Gang) for [real_cost] Influence.") - gang.points -= real_cost + gangtool.points -= real_cost spawn_item(user, gang, gangtool) return TRUE @@ -25,7 +23,7 @@ to_chat(user, spawn_msg) /datum/gang_item/proc/can_buy(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - return gang && (gang.points >= get_cost(user, gang, gangtool)) && can_see(user, gang, gangtool) + return gang && (gangtool.points >= get_cost(user, gang, gangtool)) && can_see(user, gang, gangtool) /datum/gang_item/proc/can_see(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) return TRUE @@ -78,23 +76,104 @@ gangtool.recall(user) -/datum/gang_item/function/outfit - name = "Create Armored Gang Outfit" - id = "outfit" +/////////////////// +//CLOTHING +/////////////////// -/datum/gang_item/function/outfit/can_buy(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - return gangtool && (gangtool.outfits > 0) && ..() +/datum/gang_item/clothing + category = "Purchase Influence-Enhancing Clothes:" + +/datum/gang_item/clothing/under + name = "Gang Uniform" + id = "under" + cost = 1 + +/datum/gang_item/clothing/under/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) + if(gang.inner_outfit) + var/obj/item/O = new gang.inner_outfit(user.loc) + user.put_in_hands(O) + to_chat(user, " This is your gang's official uniform, wearing it will increase your influence") + +/datum/gang_item/clothing/suit + name = "Gang Armored Outerwear" + id = "suit" + cost = 1 + +/datum/gang_item/clothing/suit/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) + if(gang.outer_outfit) + var/obj/item/O = new gang.outer_outfit(user.loc) + O.armor = list(melee = 20, bullet = 35, laser = 10, energy = 10, bomb = 30, bio = 0, rad = 0, fire = 30, acid = 30) + O.desc += " Tailored for the [gang.name] Gang to offer the wearer moderate protection against ballistics and physical trauma." + user.put_in_hands(O) + to_chat(user, " This is your gang's official outerwear, wearing it will increase your influence") + + +/datum/gang_item/clothing/hat + name = "Pimp Hat" + id = "hat" + cost = 18 + item_path = /obj/item/clothing/head/collectable/petehat/gang + +/obj/item/clothing/head/collectable/petehat/gang + name = "pimpin' hat" + desc = "The undisputed king of style." + +/datum/gang_item/clothing/mask + name = "Golden Death Mask" + id = "mask" + cost = 20 + item_path = /obj/item/clothing/mask/gskull + +/obj/item/clothing/mask/gskull + name = "golden death mask" + icon_state = "gskull" + desc = "Strike terror, and envy, into the hearts of your enemies." + + +/datum/gang_item/clothing/shoes + name = "Bling Boots" + id = "boots" + cost = 25 + item_path = /obj/item/clothing/shoes/gang + +/obj/item/clothing/shoes/gang + name = "blinged-out boots" + desc = "Stand aside peasants." + icon_state = "bling" + +/datum/gang_item/clothing/neck + name = "Gold Necklace" + id = "necklace" + cost = 10 + item_path = /obj/item/clothing/neck/necklace/dope + + +/datum/gang_item/clothing/hands + name = "Decorative Brass Knuckles" + id = "hand" + cost = 12 + item_path = /obj/item/clothing/gloves/gang + +/obj/item/clothing/gloves/gang + name = "braggadocio's brass knuckles" + desc = "Purely decorative, don't find out the hard way." + icon_state = "knuckles" + w_class = 3 + +/datum/gang_item/clothing/belt + name = "Badass Belt" + id = "belt" + cost = 15 + item_path = /obj/item/weapon/storage/belt/military/gang + +/obj/item/weapon/storage/belt/military/gang + name = "badass belt" + icon_state = "gangbelt" + item_state = "gang" + desc = "The belt buckle simply reads 'BAMF'." + storage_slots = 1 -/datum/gang_item/function/outfit/get_cost_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(gangtool && !gangtool.outfits) - return "(Restocking)" - return ..() -/datum/gang_item/function/outfit/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(gang && gang.gang_outfit(user, gangtool)) - to_chat(user, "Gang Outfits can act as armor with moderate protection against ballistic and melee attacks. Every gangster wearing one will also help grow your gang's influence.") - if(gangtool) - gangtool.outfits -= 1 /////////////////// //WEAPONS @@ -208,12 +287,6 @@ cost = 3 item_path = /obj/item/weapon/sharpener -/datum/gang_item/equipment/necklace - name = "Gold Necklace" - id = "necklace" - cost = 1 - item_path = /obj/item/clothing/neck/necklace/dope - /datum/gang_item/equipment/emp name = "EMP Grenade" diff --git a/code/game/gamemodes/gang/gang_pen.dm b/code/game/gamemodes/gang/gang_pen.dm index 621d40cc458..d60a3cb57b4 100644 --- a/code/game/gamemodes/gang/gang_pen.dm +++ b/code/game/gamemodes/gang/gang_pen.dm @@ -25,7 +25,16 @@ var/datum/gang/G = user.mind.gang_datum var/recruitable = SSticker.mode.add_gangster(M.mind,G) switch(recruitable) + if(3) + for(var/obj/O in M.contents) + if(istype(O, /obj/item/device/gangtool/soldier)) + to_chat(user, "This gangster already has an uplink!") + return + new /obj/item/device/gangtool/soldier(M) + to_chat(user, "You inject [M] with a new gangtool!") + cooldown(G) if(2) + new /obj/item/device/gangtool/soldier(M) M.Paralyse(5) cooldown(G) if(1) diff --git a/code/game/gamemodes/gang/recaller.dm b/code/game/gamemodes/gang/recaller.dm index f67bcad50af..ad2da7b5024 100644 --- a/code/game/gamemodes/gang/recaller.dm +++ b/code/game/gamemodes/gang/recaller.dm @@ -12,9 +12,11 @@ origin_tech = "programming=5;bluespace=2;syndicate=5" var/datum/gang/gang //Which gang uses this? var/recalling = 0 - var/outfits = 3 + var/outfits = 2 var/free_pen = 0 var/promotable = 0 + var/points = 15 + var/list/tags = list() /obj/item/device/gangtool/Initialize() //Initialize supply point income if it hasn't already been started ..() @@ -48,14 +50,14 @@ var/isboss = (user.mind == gang.bosses[1]) dat += "Registration: [gang.name] Gang [isboss ? "Boss" : "Lieutenant"]
" dat += "Organization Size: [gang.gangsters.len + gang.bosses.len] | Station Control: [round((gang.territory.len/GLOB.start_state.num_territories)*100, 1)]%
" - dat += "Gang Influence: [gang.points]
" - dat += "Time until Influence grows: [(gang.points >= 999) ? ("--:--") : (time2text(SSticker.mode.gang_points.next_point_time - world.time, "mm:ss"))]
" + dat += "Your Influence: [points]
" + dat += "Time until Influence grows: [time2text(SSticker.mode.gang_points.next_point_time - world.time, "mm:ss")]
" dat += "
" - for(var/cat in gang.item_category_list) + for(var/cat in gang.boss_category_list) dat += "[cat]
" - for(var/V in gang.item_category_list[cat]) + for(var/V in gang.boss_category_list[cat]) var/datum/gang_item/G = V if(!G.can_see(user, gang, src)) continue @@ -76,7 +78,7 @@ dat += "Refresh
" - var/datum/browser/popup = new(user, "gangtool", "Welcome to GangTool v3.4", 340, 625) + var/datum/browser/popup = new(user, "gangtool", "Welcome to GangTool v3.5", 340, 625) popup.set_content(dat) popup.open() @@ -95,7 +97,7 @@ return if(href_list["purchase"]) - var/datum/gang_item/G = gang.item_list[href_list["purchase"]] + var/datum/gang_item/G = gang.boss_item_list[href_list["purchase"]] if(G && G.can_buy(usr, gang, src)) G.purchase(usr, gang, src, FALSE) @@ -168,7 +170,7 @@ if(recalling) to_chat(usr, "Error: Recall already in progress.") return 0 - + if(!gang.recalls) to_chat(usr, "Error: Unable to access communication arrays. Firewall has logged our signature and is blocking all further attempts.") @@ -212,7 +214,7 @@ userturf = get_turf(user) if(userturf.z == 1) //Check one more time that they are on station. if(SSshuttle.cancelEvac(user)) - gang.recalls -= 1 + gang.recalls -= 1 return 1 to_chat(loc, "\icon[src]No response recieved. Emergency shuttle cannot be recalled at this time.") @@ -227,14 +229,10 @@ return 0 if(!user.mind) return 0 - - if(gang) //If it's already registered, only let the gang's bosses use this - if(user.mind in gang.bosses) - return 1 - else //If it's not registered, any gangster can use this to register - if(user.mind in SSticker.mode.get_all_gangsters()) - return 1 - + if(gang && (user.mind in gang.bosses)) //If it's already registered, only let the gang's bosses use this + return 1 + else if(user.mind in SSticker.mode.get_all_gangsters()) // For soldiers and potential LT's + return 1 return 0 /obj/item/device/gangtool/spare @@ -242,3 +240,92 @@ /obj/item/device/gangtool/spare/lt promotable = 1 + +///////////// Internal tool used by gang regulars /////////// + +/obj/item/device/gangtool/soldier + points = 5 + +/obj/item/device/gangtool/soldier/New(mob/user) + . = ..() + gang = user.mind.gang_datum + gang.gangtools += src + var/datum/action/innate/gang/tool/GT = new + GT.Grant(user, src, gang) + +/obj/item/device/gangtool/soldier/attack_self(mob/user) + if (!can_use(user)) + return + var/dat + if(gang.is_dominating) + dat += "
Takeover In Progress:
[gang.domination_time_remaining()] seconds remain
" + dat += "Registration: [gang.name] - Foot Soldier
" + dat += "Organization Size: [gang.gangsters.len + gang.bosses.len] | Station Control: [round((gang.territory.len/GLOB.start_state.num_territories)*100, 1)]%
" + dat += "Your Influence: [points]
" + if(LAZYLEN(tags)) + dat += "Your tags generate bonus influence for you.
You have tagged the following territories:" + for(var/obj/effect/decal/cleanable/crayon/gang/T in tags) + dat += " [T.territory] -" + else + dat += "You have not personally tagged any territory for your gang. Use a spray can to mark your territory and receive bonus influence." + dat += "
Time until Influence grows: [time2text(SSticker.mode.gang_points.next_point_time - world.time, "mm:ss")]
" + dat += "
" + for(var/cat in gang.reg_category_list) + dat += "[cat]
" + for(var/V in gang.reg_category_list[cat]) + var/datum/gang_item/G = V + if(!G.can_see(user, gang, src)) + continue + + var/cost = G.get_cost_display(user, gang, src) + if(cost) + dat += cost + " " + + var/toAdd = G.get_name_display(user, gang, src) + if(G.can_buy(user, gang, src)) + toAdd = "[toAdd]" + dat += toAdd + var/extra = G.get_extra_info(user, gang, src) + if(extra) + dat += "
[extra]" + dat += "
" + dat += "
" + + dat += "Refresh
" + + var/datum/browser/popup = new(user, "gangtool", "Welcome to GangTool v3.5", 340, 625) + popup.set_content(dat) + popup.open() + +/obj/item/device/gangtool/soldier/Topic(href, href_list) + if(!can_use(usr)) + return + if(href_list["purchase"]) + var/datum/gang_item/G = gang.reg_item_list[href_list["purchase"]] + if(G && G.can_buy(usr, gang, src)) + G.purchase(usr, gang, src, FALSE) + + attack_self(usr) + +/datum/action/innate/gang + background_icon_state = "bg_spell" + +/datum/action/innate/gang/IsAvailable() + if(!owner.mind || !owner.mind in SSticker.mode.get_all_gangsters()) + return 0 + return ..() + +/datum/action/innate/gang/tool + name = "Personal Gang Tool" + desc = "An implanted gang tool that lets you purchase gear" + background_icon_state = "bg_mime" + button_icon_state = "bolt_action" + var/obj/item/device/gangtool/soldier/GT + +/datum/action/innate/gang/tool/Grant(mob/user, obj/reg, datum/gang/G) + . = ..() + GT = reg + button.color = G.color + +/datum/action/innate/gang/tool/Activate() + GT.attack_self(owner) diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 8f90cd892da..9def30992ec 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -328,7 +328,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event /obj/effect/meteor/tunguska/Move() . = ..() if(.) - new /obj/effect/overlay/temp/revenant(get_turf(src)) + new /obj/effect/temp_visual/revenant(get_turf(src)) /obj/effect/meteor/tunguska/meteor_effect() ..() diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm index d7ab46cb9cd..de11c2ed94d 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm @@ -64,7 +64,7 @@ stealth_active = 1 if(ishuman(loc)) var/mob/living/carbon/human/M = loc - new /obj/effect/overlay/temp/dir_setting/ninja/cloak(get_turf(M), M.dir) + new /obj/effect/temp_visual/dir_setting/ninja/cloak(get_turf(M), M.dir) M.name_override = disguise.name M.icon = disguise.icon M.icon_state = disguise.icon_state @@ -78,7 +78,7 @@ stealth_active = 0 if(ishuman(loc)) var/mob/living/carbon/human/M = loc - new /obj/effect/overlay/temp/dir_setting/ninja(get_turf(M), M.dir) + new /obj/effect/temp_visual/dir_setting/ninja(get_turf(M), M.dir) M.name_override = null M.cut_overlays() M.regenerate_icons() diff --git a/code/game/gamemodes/miniantags/abduction/machinery/pad.dm b/code/game/gamemodes/miniantags/abduction/machinery/pad.dm index 083e610587a..a12515a6257 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/pad.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/pad.dm @@ -16,38 +16,38 @@ flick("alien-pad", src) for(var/mob/living/target in loc) target.forceMove(teleport_target) - new /obj/effect/overlay/temp/dir_setting/ninja(get_turf(target), target.dir) + new /obj/effect/temp_visual/dir_setting/ninja(get_turf(target), target.dir) to_chat(target, "The instability of the warp leaves you disoriented!") target.Stun(3) /obj/machinery/abductor/pad/proc/Retrieve(mob/living/target) flick("alien-pad", src) - new /obj/effect/overlay/temp/dir_setting/ninja(get_turf(target), target.dir) + new /obj/effect/temp_visual/dir_setting/ninja(get_turf(target), target.dir) Warp(target) /obj/machinery/abductor/pad/proc/MobToLoc(place,mob/living/target) - new /obj/effect/overlay/temp/teleport_abductor(place) + new /obj/effect/temp_visual/teleport_abductor(place) sleep(80) flick("alien-pad", src) target.forceMove(place) - new /obj/effect/overlay/temp/dir_setting/ninja(get_turf(target), target.dir) + new /obj/effect/temp_visual/dir_setting/ninja(get_turf(target), target.dir) /obj/machinery/abductor/pad/proc/PadToLoc(place) - new /obj/effect/overlay/temp/teleport_abductor(place) + new /obj/effect/temp_visual/teleport_abductor(place) sleep(80) flick("alien-pad", src) for(var/mob/living/target in get_turf(src)) target.forceMove(place) - new /obj/effect/overlay/temp/dir_setting/ninja(get_turf(target), target.dir) + new /obj/effect/temp_visual/dir_setting/ninja(get_turf(target), target.dir) -/obj/effect/overlay/temp/teleport_abductor +/obj/effect/temp_visual/teleport_abductor name = "Huh" icon = 'icons/obj/abductor.dmi' icon_state = "teleport" duration = 80 -/obj/effect/overlay/temp/teleport_abductor/Initialize() +/obj/effect/temp_visual/teleport_abductor/Initialize() . = ..() var/datum/effect_system/spark_spread/S = new S.set_up(10,0,loc) diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm index 3b315bb6682..1b929e917b9 100644 --- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm +++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm @@ -435,7 +435,7 @@ resources += resource_gain do_attack_animation(target) changeNext_move(CLICK_CD_MELEE) - var/obj/effect/overlay/temp/swarmer/integrate/I = new /obj/effect/overlay/temp/swarmer/integrate(get_turf(target)) + var/obj/effect/temp_visual/swarmer/integrate/I = new /obj/effect/temp_visual/swarmer/integrate(get_turf(target)) I.pixel_x = target.pixel_x I.pixel_y = target.pixel_y I.pixel_z = target.pixel_z @@ -452,7 +452,7 @@ /mob/living/simple_animal/hostile/swarmer/proc/DisIntegrate(atom/movable/target) - new /obj/effect/overlay/temp/swarmer/disintegration(get_turf(target)) + new /obj/effect/temp_visual/swarmer/disintegration(get_turf(target)) do_attack_animation(target) changeNext_move(CLICK_CD_MELEE) target.ex_act(3) @@ -497,7 +497,7 @@ /mob/living/simple_animal/hostile/swarmer/proc/DismantleMachine(obj/machinery/target) do_attack_animation(target) to_chat(src, "We begin to dismantle this machine. We will need to be uninterrupted.") - var/obj/effect/overlay/temp/swarmer/dismantle/D = new /obj/effect/overlay/temp/swarmer/dismantle(get_turf(target)) + var/obj/effect/temp_visual/swarmer/dismantle/D = new /obj/effect/temp_visual/swarmer/dismantle(get_turf(target)) D.pixel_x = target.pixel_x D.pixel_y = target.pixel_y D.pixel_z = target.pixel_z @@ -507,7 +507,7 @@ M.amount = 5 for(var/obj/item/I in target.component_parts) I.loc = M.loc - var/obj/effect/overlay/temp/swarmer/disintegration/N = new /obj/effect/overlay/temp/swarmer/disintegration(get_turf(target)) + var/obj/effect/temp_visual/swarmer/disintegration/N = new /obj/effect/temp_visual/swarmer/disintegration(get_turf(target)) N.pixel_x = target.pixel_x N.pixel_y = target.pixel_y N.pixel_z = target.pixel_z @@ -519,23 +519,23 @@ qdel(target) -/obj/effect/overlay/temp/swarmer //temporary swarmer visual feedback objects +/obj/effect/temp_visual/swarmer //temporary swarmer visual feedback objects icon = 'icons/mob/swarmer.dmi' layer = BELOW_MOB_LAYER -/obj/effect/overlay/temp/swarmer/disintegration +/obj/effect/temp_visual/swarmer/disintegration icon_state = "disintegrate" duration = 10 -/obj/effect/overlay/temp/swarmer/disintegration/Initialize() +/obj/effect/temp_visual/swarmer/disintegration/Initialize() . = ..() playsound(loc, "sparks", 100, 1) -/obj/effect/overlay/temp/swarmer/dismantle +/obj/effect/temp_visual/swarmer/dismantle icon_state = "dismantle" duration = 25 -/obj/effect/overlay/temp/swarmer/integrate +/obj/effect/temp_visual/swarmer/integrate icon_state = "integrate" duration = 5 diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm index 265688a15b6..293b114b369 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant.dm @@ -14,7 +14,7 @@ var/icon_reveal = "revenant_revealed" var/icon_stun = "revenant_stun" var/icon_drain = "revenant_draining" - var/stasis = 0 + var/stasis = FALSE incorporeal_move = 3 invisibility = INVISIBILITY_REVENANT health = INFINITY //Revenants don't use health, they use essence instead @@ -205,6 +205,7 @@ /mob/living/simple_animal/revenant/death() if(!revealed || stasis) //Revenants cannot die if they aren't revealed //or are already dead return 0 + stasis = TRUE to_chat(src, "NO! No... it's too late, you can feel your essence [pick("breaking apart", "drifting away")]...") notransform = TRUE revealed = TRUE @@ -222,8 +223,7 @@ R.client_to_revive = client //If the essence reforms, the old revenant is put back in the body R.revenant = src invisibility = INVISIBILITY_ABSTRACT - revealed = 0 - stasis = 1 + revealed = FALSE ghostize(0)//Don't re-enter invisible corpse return @@ -317,7 +317,7 @@ incorporeal_move = 3 invisibility = INVISIBILITY_REVENANT alpha=255 - stasis = 0 + stasis = FALSE //reforming diff --git a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm index 580515d4ecd..ed51fb4caa4 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm @@ -202,7 +202,7 @@ var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(4, 0, L) s.start() - new /obj/effect/overlay/temp/revenant(L.loc) + new /obj/effect/temp_visual/revenant(L.loc) sleep(20) if(!L.on) //wait, wait, don't shock me return @@ -237,7 +237,7 @@ /obj/effect/proc_holder/spell/aoe_turf/revenant/defile/proc/defile(turf/T) if(T.flags & NOJAUNT) T.flags -= NOJAUNT - new /obj/effect/overlay/temp/revenant(T) + new /obj/effect/temp_visual/revenant(T) if(!istype(T, /turf/open/floor/plating) && !istype(T, /turf/open/floor/engine/cult) && isfloorturf(T) && prob(15)) var/turf/open/floor/floor = T if(floor.intact && floor.floor_tile) @@ -246,10 +246,10 @@ floor.burnt = 0 floor.make_plating(1) if(T.type == /turf/closed/wall && prob(15)) - new /obj/effect/overlay/temp/revenant(T) + new /obj/effect/temp_visual/revenant(T) T.ChangeTurf(/turf/closed/wall/rust) if(T.type == /turf/closed/wall/r_wall && prob(10)) - new /obj/effect/overlay/temp/revenant(T) + new /obj/effect/temp_visual/revenant(T) T.ChangeTurf(/turf/closed/wall/r_wall/rust) for(var/obj/structure/closet/closet in T.contents) closet.open() @@ -261,7 +261,7 @@ for(var/obj/structure/window/window in T) window.take_damage(rand(30,80)) if(window && window.fulltile) - new /obj/effect/overlay/temp/revenant/cracks(window.loc) + new /obj/effect/temp_visual/revenant/cracks(window.loc) for(var/obj/machinery/light/light in T) light.flicker(20) //spooky @@ -284,7 +284,7 @@ /obj/effect/proc_holder/spell/aoe_turf/revenant/malfunction/proc/malfunction(turf/T, mob/user) for(var/mob/living/simple_animal/bot/bot in T) if(!bot.emagged) - new /obj/effect/overlay/temp/revenant(bot.loc) + new /obj/effect/temp_visual/revenant(bot.loc) bot.locked = 0 bot.open = 1 bot.emag_act() @@ -292,21 +292,21 @@ if(human == user) continue to_chat(human, "You feel [pick("your sense of direction flicker out", "a stabbing pain in your head", "your mind fill with static")].") - new /obj/effect/overlay/temp/revenant(human.loc) + new /obj/effect/temp_visual/revenant(human.loc) human.emp_act(1) for(var/obj/thing in T) if(istype(thing, /obj/machinery/dominator) || istype(thing, /obj/machinery/power/apc) || istype(thing, /obj/machinery/power/smes)) //Doesn't work on dominators, SMES and APCs, to prevent kekkery continue if(prob(20)) if(prob(50)) - new /obj/effect/overlay/temp/revenant(thing.loc) + new /obj/effect/temp_visual/revenant(thing.loc) thing.emag_act(null) else if(!istype(thing, /obj/machinery/clonepod)) //I hate everything but mostly the fact there's no better way to do this without just not affecting it at all thing.emp_act(1) for(var/mob/living/silicon/robot/S in T) //Only works on cyborgs, not AI playsound(S, 'sound/machines/warning-buzzer.ogg', 50, 1) - new /obj/effect/overlay/temp/revenant(S.loc) + new /obj/effect/temp_visual/revenant(S.loc) S.spark_system.start() S.emp_act(1) @@ -329,7 +329,7 @@ for(var/mob/living/mob in T) if(mob == user) continue - new /obj/effect/overlay/temp/revenant(mob.loc) + new /obj/effect/temp_visual/revenant(mob.loc) if(iscarbon(mob)) if(ishuman(mob)) var/mob/living/carbon/human/H = mob @@ -350,14 +350,14 @@ mob.adjustToxLoss(5) for(var/obj/structure/spacevine/vine in T) //Fucking with botanists, the ability. vine.add_atom_colour("#823abb", TEMPORARY_COLOUR_PRIORITY) - new /obj/effect/overlay/temp/revenant(vine.loc) + new /obj/effect/temp_visual/revenant(vine.loc) QDEL_IN(vine, 10) for(var/obj/structure/glowshroom/shroom in T) shroom.add_atom_colour("#823abb", TEMPORARY_COLOUR_PRIORITY) - new /obj/effect/overlay/temp/revenant(shroom.loc) + new /obj/effect/temp_visual/revenant(shroom.loc) QDEL_IN(shroom, 10) for(var/obj/machinery/hydroponics/tray in T) - new /obj/effect/overlay/temp/revenant(tray.loc) + new /obj/effect/temp_visual/revenant(tray.loc) tray.pestlevel = rand(8, 10) tray.weedlevel = rand(8, 10) tray.toxic = rand(45, 55) diff --git a/code/game/gamemodes/miniantags/revenant/revenant_blight.dm b/code/game/gamemodes/miniantags/revenant/revenant_blight.dm index 8b766aad370..913efb34ce8 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant_blight.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant_blight.dm @@ -33,11 +33,11 @@ to_chat(affected_mob, "You suddenly feel [pick("sick and tired", "disoriented", "tired and confused", "nauseated", "faint", "dizzy")]...") affected_mob.confused += 8 affected_mob.adjustStaminaLoss(8) - new /obj/effect/overlay/temp/revenant(affected_mob.loc) + new /obj/effect/temp_visual/revenant(affected_mob.loc) if(stagedamage < stage) stagedamage++ affected_mob.adjustToxLoss(stage*2) //should, normally, do about 30 toxin damage. - new /obj/effect/overlay/temp/revenant(affected_mob.loc) + new /obj/effect/temp_visual/revenant(affected_mob.loc) if(prob(45)) affected_mob.adjustStaminaLoss(stage) ..() //So we don't increase a stage before applying the stage damage. @@ -56,7 +56,7 @@ finalstage = TRUE to_chat(affected_mob, "You feel like [pick("nothing's worth it anymore", "nobody ever needed your help", "nothing you did mattered", "everything you tried to do was worthless")].") affected_mob.adjustStaminaLoss(45) - new /obj/effect/overlay/temp/revenant(affected_mob.loc) + new /obj/effect/temp_visual/revenant(affected_mob.loc) if(affected_mob.dna && affected_mob.dna.species) affected_mob.dna.species.handle_mutant_bodyparts(affected_mob,"#1d2953") affected_mob.dna.species.handle_hair(affected_mob,"#1d2953") diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 1f01b38860d..5964983b095 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -459,8 +459,7 @@ var/datum/game_mode/nuclear/NM = SSticker.mode NM.nukes_left -- if(!SSticker.mode.check_finished())//If the mode does not deal with the nuke going off so just reboot because everyone is stuck as is - spawn() - world.Reboot("Station destroyed by Nuclear Device.", "end_error", "nuke - unhandled ending") + SSticker.Reboot("Station destroyed by Nuclear Device.", "end_error", "nuke - unhandled ending") /* diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index 0ebfceef6d0..10a6a98b4a5 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -206,6 +206,7 @@ if(issilicon(traitor.current)) add_law_zero(traitor.current) traitor.current.playsound_local('sound/ambience/antag/Malf.ogg',100,0) + traitor.current.grant_language(/datum/language/codespeak) else equip_traitor(traitor.current) traitor.current.playsound_local('sound/ambience/antag/TatorAlert.ogg',100,0) diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index dde67fb664e..c07ed401ad0 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -584,7 +584,7 @@ var/turf/T = get_turf(user) playsound(T,'sound/magic/WarpWhistle.ogg', 200, 1) user.canmove = 0 - new /obj/effect/overlay/temp/tornado(T) + new /obj/effect/temp_visual/tornado(T) sleep(20) if(interrupted(user)) return @@ -602,7 +602,7 @@ T = potential_T break breakout += 1 - new /obj/effect/overlay/temp/tornado(T) + new /obj/effect/temp_visual/tornado(T) sleep(20) if(interrupted(user)) return @@ -620,7 +620,7 @@ last_user.canmove = 1 return ..() -/obj/effect/overlay/temp/tornado +/obj/effect/temp_visual/tornado icon = 'icons/obj/wizard.dmi' icon_state = "tornado" name = "tornado" @@ -630,6 +630,6 @@ duration = 40 pixel_x = 500 -/obj/effect/overlay/temp/tornado/Initialize() +/obj/effect/temp_visual/tornado/Initialize() . = ..() animate(src, pixel_x = -500, time = 40) diff --git a/code/game/machinery/bank_machine.dm b/code/game/machinery/bank_machine.dm index ace9b543d16..0ebae75da69 100644 --- a/code/game/machinery/bank_machine.dm +++ b/code/game/machinery/bank_machine.dm @@ -25,9 +25,6 @@ if(istype(I, /obj/item/stack/spacecash)) var/obj/item/stack/spacecash/C = I value = C.value * C.amount - if(istype(I, /obj/item/weapon/coin)) - var/obj/item/weapon/coin/C = I - value = C.value if(value) SSshuttle.points += value to_chat(user, "You deposit [I]. The station now has [SSshuttle.points] credits.") diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 643282ab4a6..1fdfd61f07f 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -43,7 +43,8 @@ /obj/item/weapon/grenade/chem_grenade/glitter/pink = 1, /obj/item/weapon/grenade/chem_grenade/glitter/blue = 1, /obj/item/weapon/grenade/chem_grenade/glitter/white = 1, - /obj/item/toy/eightball = 2) + /obj/item/toy/eightball = 2, + /obj/item/toy/windupToolbox = 2) light_color = LIGHT_COLOR_GREEN diff --git a/code/game/machinery/dance_machine.dm b/code/game/machinery/dance_machine.dm index 3e367767733..8632243b67a 100644 --- a/code/game/machinery/dance_machine.dm +++ b/code/game/machinery/dance_machine.dm @@ -236,7 +236,7 @@ /obj/machinery/disco/proc/hierofunk() for(var/i in 1 to 10) - spawn_atom_to_turf(/obj/effect/overlay/temp/hierophant/telegraph/edge, src, 1, FALSE) + spawn_atom_to_turf(/obj/effect/temp_visual/hierophant/telegraph/edge, src, 1, FALSE) sleep(5) /obj/machinery/disco/proc/lights_spin() diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index 18d60559bd3..7f914971b29 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -363,7 +363,7 @@ assemblytype = /obj/structure/door_assembly/door_assembly_cult hackProof = 1 aiControlDisabled = 1 - var/openingoverlaytype = /obj/effect/overlay/temp/cult/door + var/openingoverlaytype = /obj/effect/temp_visual/cult/door var/friendly = FALSE /obj/machinery/door/airlock/cult/New() @@ -380,7 +380,7 @@ new openingoverlaytype(loc) return 1 else - new /obj/effect/overlay/temp/cult/sac(loc) + new /obj/effect/temp_visual/cult/sac(loc) var/atom/throwtarget throwtarget = get_edge_target_turf(src, get_dir(src, get_step_away(M, src))) M << pick(sound('sound/hallucinations/turn_around1.ogg',0,1,50), sound('sound/hallucinations/turn_around2.ogg',0,1,50)) @@ -407,7 +407,7 @@ icon = 'icons/obj/doors/airlocks/cult/unruned/cult.dmi' overlays_file = 'icons/obj/doors/airlocks/cult/unruned/overlays.dmi' assemblytype = /obj/structure/door_assembly/door_assembly_cult/unruned - openingoverlaytype = /obj/effect/overlay/temp/cult/door/unruned + openingoverlaytype = /obj/effect/temp_visual/cult/door/unruned /obj/machinery/door/airlock/cult/unruned/friendly friendly = TRUE @@ -438,8 +438,8 @@ /obj/machinery/door/airlock/clockwork/New() ..() var/turf/T = get_turf(src) - new /obj/effect/overlay/temp/ratvar/door(T) - new /obj/effect/overlay/temp/ratvar/beam/door(T) + new /obj/effect/temp_visual/ratvar/door(T) + new /obj/effect/temp_visual/ratvar/beam/door(T) change_construction_value(5) /obj/machinery/door/airlock/clockwork/Destroy() diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 51695317344..35e6d2ddf49 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -12,6 +12,7 @@ max_integrity = 350 armor = list(melee = 30, bullet = 30, laser = 20, energy = 20, bomb = 10, bio = 100, rad = 100, fire = 80, acid = 70) CanAtmosPass = ATMOS_PASS_DENSITY + flags = PREVENT_CLICK_UNDER var/secondsElectrified = 0 var/shockedby = list() diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 77f33e45138..be51bf008d1 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -328,7 +328,7 @@ /obj/machinery/door/window/clockwork/setDir(direct) if(!made_glow) - var/obj/effect/E = new /obj/effect/overlay/temp/ratvar/door/window(get_turf(src)) + var/obj/effect/E = new /obj/effect/temp_visual/ratvar/door/window(get_turf(src)) E.setDir(direct) made_glow = TRUE ..() diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 0aec5d9cca7..41cdf87537a 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -26,8 +26,6 @@ Possible to do for anyone motivated enough: #define HOLOPAD_PASSIVE_POWER_USAGE 1 #define HOLOGRAM_POWER_USAGE 2 - -GLOBAL_LIST_EMPTY(holopads) #define HOLOPAD_MODE RANGE_BASED /obj/machinery/holopad @@ -295,7 +293,7 @@ GLOBAL_LIST_EMPTY(holopads) Hologram.add_atom_colour("#77abff", FIXED_COLOUR_PRIORITY) Hologram.Impersonation = user - Hologram.language_holder = user.get_language_holder() + Hologram.copy_known_languages_from(user,replace = TRUE) Hologram.mouse_opacity = 0//So you can't click on it. Hologram.layer = FLY_LAYER//Above all the other objects/mobs. Or the vast majority of them. Hologram.anchored = 1//So space wind cannot drag it. diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 96b0029134d..a224efd91ce 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -159,7 +159,7 @@ Class Procs: /obj/machinery/emp_act(severity) if(use_power && !stat) use_power(7500/severity) - new /obj/effect/overlay/temp/emp(loc) + new /obj/effect/temp_visual/emp(loc) ..() /obj/machinery/proc/open_machine(drop = 1) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 929bcca658a..f98454fd06b 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -48,6 +48,7 @@ var/icon_deny //Icon_state when vending! var/seconds_electrified = 0 //Shock customers like an airlock. var/shoot_inventory = 0 //Fire items at customers! We're broken! + var/shoot_inventory_chance = 2 var/shut_up = 0 //Stop spouting those godawful pitches! var/extended_inventory = 0 //can we access the hidden inventory? var/scan_id = 1 @@ -561,7 +562,7 @@ speak(slogan) last_slogan = world.time - if(shoot_inventory && prob(2)) + if(shoot_inventory && prob(shoot_inventory_chance)) throw_item() @@ -592,7 +593,7 @@ if(!target) return 0 - for(var/datum/data/vending_product/R in product_records) + for(var/datum/data/vending_product/R in shuffle(product_records)) if(R.amount <= 0) //Try to use a record that actually has something to dump. continue var/dump_path = R.product_path @@ -605,19 +606,22 @@ if(!throw_item) return 0 + pre_throw(throw_item) + throw_item.throw_at(target, 16, 3) visible_message("[src] launches [throw_item] at [target]!") return 1 +/obj/machinery/vending/proc/pre_throw(obj/item/I) + return + /obj/machinery/vending/proc/shock(mob/user, prb) if(stat & (BROKEN|NOPOWER)) // unpowered, no shock return FALSE if(!prob(prb)) return FALSE - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() + do_sparks(5, TRUE, src) var/tmp/check_range = TRUE if(electrocute_mob(user, get_area(src), src, 0.7, check_range)) return TRUE @@ -864,6 +868,11 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C /obj/item/weapon/storage/fancy/cigarettes/cigars = 1, /obj/item/weapon/storage/fancy/cigarettes/cigars/havana = 1, /obj/item/weapon/storage/fancy/cigarettes/cigars/cohiba = 1) refill_canister = /obj/item/weapon/vending_refill/cigarette +/obj/machinery/vending/cigarette/pre_throw(obj/item/I) + if(istype(I, /obj/item/weapon/lighter)) + var/obj/item/weapon/lighter/L = I + L.set_lit(TRUE) + /obj/machinery/vending/medical name = "\improper NanoMed Plus" desc = "Medical drug dispenser." @@ -919,6 +928,15 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50) resistance_flags = FIRE_PROOF +/obj/machinery/vending/security/pre_throw(obj/item/I) + if(istype(I, /obj/item/weapon/grenade)) + var/obj/item/weapon/grenade/G = I + G.preprime() + else if(istype(I, /obj/item/device/flashlight)) + var/obj/item/device/flashlight/F = I + F.on = TRUE + F.update_brightness() + /obj/machinery/vending/hydronutrients name = "\improper NutriMax" desc = "A plant nutrients vendor." diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 1d7d9072c93..1cd46f24eab 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -8,7 +8,7 @@ var/variance = 0 var/randomspread = 0 //use random spread for machineguns, instead of shotgun scatter var/projectile_delay = 0 - var/firing_effect_type = /obj/effect/overlay/temp/dir_setting/firing_effect //the visual effect appearing when the weapon is fired. + var/firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect //the visual effect appearing when the weapon is fired. /obj/item/mecha_parts/mecha_equipment/weapon/can_attach(obj/mecha/combat/M) if(..()) @@ -60,7 +60,7 @@ //Base energy weapon type /obj/item/mecha_parts/mecha_equipment/weapon/energy name = "general energy weapon" - firing_effect_type = /obj/effect/overlay/temp/dir_setting/firing_effect/energy + firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/energy /obj/item/mecha_parts/mecha_equipment/weapon/energy/get_shot_amount() return min(round(chassis.cell.charge / energy_drain), projectiles_per_shot) diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm index 6a41809eb17..a96f3b50a2e 100644 --- a/code/game/objects/effects/decals/crayon.dm +++ b/code/game/objects/effects/decals/crayon.dm @@ -8,7 +8,7 @@ /obj/effect/decal/cleanable/crayon/Initialize(mapload, main = "#FFFFFF", var/type = "rune1", var/e_name = "rune", var/rotation = 0, var/alt_icon = null) ..() - + name = e_name desc = "A [name] vandalizing the station." if(type == "poseur tag") @@ -30,22 +30,25 @@ layer = HIGH_OBJ_LAYER //Harder to hide do_icon_rotate = FALSE //These are designed to always face south, so no rotation please. var/datum/gang/gang + var/obj/item/device/gangtool/linked_tool + var/area/territory -/obj/effect/decal/cleanable/crayon/gang/Initialize(mapload, var/datum/gang/G, var/e_name = "gang tag", var/rotation = 0) +/obj/effect/decal/cleanable/crayon/gang/Initialize(mapload, var/datum/gang/G, var/e_name = "gang tag", var/rotation = 0, var/mob/user) if(!type || !G) qdel(src) - - var/area/territory = get_area(src) + territory = get_area(src) gang = G var/newcolor = G.color_hex icon_state = G.name G.territory_new |= list(territory.type = territory.name) - + linked_tool = locate(/obj/item/device/gangtool) in user.contents + if(linked_tool) + linked_tool.tags += src ..(mapload, newcolor, icon_state, e_name, rotation) /obj/effect/decal/cleanable/crayon/gang/Destroy() - var/area/territory = get_area(src) - + if(linked_tool) + linked_tool.tags -= src if(gang) gang.territory -= territory.type gang.territory_new -= territory.type diff --git a/code/game/objects/effects/decals/misc.dm b/code/game/objects/effects/decals/misc.dm index 2994a6a629e..829ed6f6f55 100644 --- a/code/game/objects/effects/decals/misc.dm +++ b/code/game/objects/effects/decals/misc.dm @@ -1,11 +1,11 @@ -/obj/effect/overlay/temp/point +/obj/effect/temp_visual/point name = "pointer" icon = 'icons/mob/screen_gen.dmi' icon_state = "arrow" layer = POINT_LAYER duration = 25 -/obj/effect/overlay/temp/point/Initialize(mapload, set_invis = 0) +/obj/effect/temp_visual/point/Initialize(mapload, set_invis = 0) ..() var/atom/old_loc = loc loc = get_turf(src) diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index 12225321d74..9d9694b076d 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -18,620 +18,6 @@ ..() QDEL_IN(src, 10) -/obj/effect/overlay/temp - icon_state = "nothing" - anchored = 1 - layer = ABOVE_MOB_LAYER - mouse_opacity = 0 - var/duration = 10 //in deciseconds - var/randomdir = TRUE - var/timerid - -/obj/effect/overlay/temp/Destroy() - . = ..() - deltimer(timerid) - -/obj/effect/overlay/temp/Initialize() - . = ..() - if(randomdir) - setDir(pick(GLOB.cardinal)) - - timerid = QDEL_IN(src, duration) - -/obj/effect/overlay/temp/ex_act() - return - -/obj/effect/overlay/temp/dir_setting - randomdir = FALSE - -/obj/effect/overlay/temp/dir_setting/Initialize(mapload, set_dir) - if(set_dir) - setDir(set_dir) - . = ..() - -/obj/effect/overlay/temp/dir_setting/bloodsplatter - icon = 'icons/effects/blood.dmi' - duration = 5 - randomdir = FALSE - layer = BELOW_MOB_LAYER - var/splatter_type = "splatter" - -/obj/effect/overlay/temp/dir_setting/bloodsplatter/Initialize(mapload, set_dir) - if(set_dir in GLOB.diagonals) - icon_state = "[splatter_type][pick(1, 2, 6)]" - else - icon_state = "[splatter_type][pick(3, 4, 5)]" - . = ..() - var/target_pixel_x = 0 - var/target_pixel_y = 0 - switch(set_dir) - if(NORTH) - target_pixel_y = 16 - if(SOUTH) - target_pixel_y = -16 - layer = ABOVE_MOB_LAYER - if(EAST) - target_pixel_x = 16 - if(WEST) - target_pixel_x = -16 - if(NORTHEAST) - target_pixel_x = 16 - target_pixel_y = 16 - if(NORTHWEST) - target_pixel_x = -16 - target_pixel_y = 16 - if(SOUTHEAST) - target_pixel_x = 16 - target_pixel_y = -16 - layer = ABOVE_MOB_LAYER - if(SOUTHWEST) - target_pixel_x = -16 - target_pixel_y = -16 - layer = ABOVE_MOB_LAYER - animate(src, pixel_x = target_pixel_x, pixel_y = target_pixel_y, alpha = 0, time = duration) - -/obj/effect/overlay/temp/dir_setting/bloodsplatter/xenosplatter - splatter_type = "xsplatter" - -/obj/effect/overlay/temp/dir_setting/speedbike_trail - name = "speedbike trails" - icon_state = "ion_fade" - layer = BELOW_MOB_LAYER - duration = 10 - randomdir = 0 - -/obj/effect/overlay/temp/dir_setting/firing_effect - icon = 'icons/effects/effects.dmi' - icon_state = "firing_effect" - duration = 2 - -/obj/effect/overlay/temp/dir_setting/firing_effect/setDir(newdir) - switch(newdir) - if(NORTH) - layer = BELOW_MOB_LAYER - pixel_x = rand(-3,3) - pixel_y = rand(4,6) - if(SOUTH) - pixel_x = rand(-3,3) - pixel_y = rand(-1,1) - else - pixel_x = rand(-1,1) - pixel_y = rand(-1,1) - ..() - -/obj/effect/overlay/temp/dir_setting/firing_effect/energy - icon_state = "firing_effect_energy" - duration = 3 - -/obj/effect/overlay/temp/dir_setting/firing_effect/magic - icon_state = "shieldsparkles" - duration = 3 - -/obj/effect/overlay/temp/dir_setting/ninja - name = "ninja shadow" - icon = 'icons/mob/mob.dmi' - icon_state = "uncloak" - duration = 9 - -/obj/effect/overlay/temp/dir_setting/ninja/cloak - icon_state = "cloak" - -/obj/effect/overlay/temp/dir_setting/ninja/shadow - icon_state = "shadow" - -/obj/effect/overlay/temp/dir_setting/ninja/phase - name = "ninja energy" - icon_state = "phasein" - -/obj/effect/overlay/temp/dir_setting/ninja/phase/out - icon_state = "phaseout" - -/obj/effect/overlay/temp/dir_setting/wraith - name = "blood" - icon = 'icons/mob/mob.dmi' - icon_state = "phase_shift2" - duration = 12 - -/obj/effect/overlay/temp/dir_setting/wraith/out - icon_state = "phase_shift" - -/obj/effect/overlay/temp/dir_setting/tailsweep - icon_state = "tailsweep" - duration = 4 - -/obj/effect/overlay/temp/wizard - name = "water" - icon = 'icons/mob/mob.dmi' - icon_state = "reappear" - duration = 5 - -/obj/effect/overlay/temp/wizard/out - icon_state = "liquify" - duration = 12 - -/obj/effect/overlay/temp/monkeyify - icon = 'icons/mob/mob.dmi' - icon_state = "h2monkey" - duration = 22 - -/obj/effect/overlay/temp/monkeyify/humanify - icon_state = "monkey2h" - -/obj/effect/overlay/temp/borgflash - icon = 'icons/mob/mob.dmi' - icon_state = "blspell" - duration = 5 - -/obj/effect/overlay/temp/guardian - randomdir = 0 - -/obj/effect/overlay/temp/guardian/phase - duration = 5 - icon_state = "phasein" - -/obj/effect/overlay/temp/guardian/phase/out - icon_state = "phaseout" - -/obj/effect/overlay/temp/decoy - desc = "It's a decoy!" - duration = 15 - -/obj/effect/overlay/temp/decoy/Initialize(mapload, atom/mimiced_atom) - . = ..() - alpha = initial(alpha) - if(mimiced_atom) - name = mimiced_atom.name - appearance = mimiced_atom.appearance - setDir(mimiced_atom.dir) - mouse_opacity = 0 - -/obj/effect/overlay/temp/decoy/fading/Initialize(mapload, atom/mimiced_atom) - . = ..() - animate(src, alpha = 0, time = duration) - -/obj/effect/overlay/temp/decoy/fading/fivesecond - duration = 50 - -/obj/effect/overlay/temp/small_smoke - icon_state = "smoke" - duration = 50 - -/obj/effect/overlay/temp/fire - icon = 'icons/effects/fire.dmi' - icon_state = "3" - duration = 20 - -/obj/effect/overlay/temp/cult - randomdir = 0 - duration = 10 - -/obj/effect/overlay/temp/cult/sparks - randomdir = 1 - name = "blood sparks" - icon_state = "bloodsparkles" - -/obj/effect/overlay/temp/cult/blood // The traditional teleport - name = "blood jaunt" - duration = 12 - icon_state = "bloodin" - -/obj/effect/overlay/temp/cult/blood/out - icon_state = "bloodout" - -/obj/effect/overlay/temp/dir_setting/cult/phase // The veil shifter teleport - name = "phase glow" - duration = 7 - icon_state = "cultin" - -/obj/effect/overlay/temp/dir_setting/cult/phase/out - icon_state = "cultout" - -/obj/effect/overlay/temp/cult/sac - name = "maw of Nar-Sie" - icon_state = "sacconsume" - -/obj/effect/overlay/temp/cult/door - name = "unholy glow" - icon_state = "doorglow" - layer = CLOSED_FIREDOOR_LAYER //above closed doors - -/obj/effect/overlay/temp/cult/door/unruned - icon_state = "unruneddoorglow" - -/obj/effect/overlay/temp/cult/turf - name = "unholy glow" - icon_state = "wallglow" - layer = ABOVE_NORMAL_TURF_LAYER - -/obj/effect/overlay/temp/cult/turf/floor - icon_state = "floorglow" - duration = 5 - - -/obj/effect/overlay/temp/ratvar - name = "ratvar's light" - icon = 'icons/effects/clockwork_effects.dmi' - duration = 8 - randomdir = 0 - layer = ABOVE_NORMAL_TURF_LAYER - -/obj/effect/overlay/temp/ratvar/door - icon_state = "ratvardoorglow" - layer = CLOSED_DOOR_LAYER //above closed doors - -/obj/effect/overlay/temp/ratvar/door/window - icon_state = "ratvarwindoorglow" - layer = ABOVE_WINDOW_LAYER - -/obj/effect/overlay/temp/ratvar/beam - icon_state = "ratvarbeamglow" - -/obj/effect/overlay/temp/ratvar/beam/door - layer = CLOSED_DOOR_LAYER - -/obj/effect/overlay/temp/ratvar/beam/grille - layer = BELOW_OBJ_LAYER - -/obj/effect/overlay/temp/ratvar/beam/itemconsume - layer = HIGH_OBJ_LAYER - -/obj/effect/overlay/temp/ratvar/beam/falsewall - layer = OBJ_LAYER - -/obj/effect/overlay/temp/ratvar/beam/catwalk - layer = LATTICE_LAYER - -/obj/effect/overlay/temp/ratvar/wall - icon_state = "ratvarwallglow" - -/obj/effect/overlay/temp/ratvar/wall/false - layer = OBJ_LAYER - -/obj/effect/overlay/temp/ratvar/floor - icon_state = "ratvarfloorglow" - -/obj/effect/overlay/temp/ratvar/floor/catwalk - layer = LATTICE_LAYER - -/obj/effect/overlay/temp/ratvar/window - icon_state = "ratvarwindowglow" - layer = ABOVE_OBJ_LAYER - -/obj/effect/overlay/temp/ratvar/window/single - icon_state = "ratvarwindowglow_s" - -/obj/effect/overlay/temp/ratvar/gear - icon_state = "ratvargearglow" - layer = BELOW_OBJ_LAYER - -/obj/effect/overlay/temp/ratvar/grille - icon_state = "ratvargrilleglow" - layer = BELOW_OBJ_LAYER - -/obj/effect/overlay/temp/ratvar/grille/broken - icon_state = "ratvarbrokengrilleglow" - -/obj/effect/overlay/temp/ratvar/mending_mantra - layer = ABOVE_MOB_LAYER - duration = 20 - alpha = 200 - icon_state = "mending_mantra" - light_range = 1.5 - light_color = "#1E8CE1" - -/obj/effect/overlay/temp/ratvar/mending_mantra/Initialize(mapload) - . = ..() - transform = matrix()*2 - var/matrix/M = transform - M.Turn(90) - animate(src, alpha = 20, time = duration, easing = BOUNCE_EASING, flags = ANIMATION_PARALLEL) - animate(src, transform = M, time = duration, flags = ANIMATION_PARALLEL) - -/obj/effect/overlay/temp/ratvar/volt_hit - name = "volt blast" - layer = ABOVE_MOB_LAYER - duration = 5 - icon_state = "volt_hit" - light_range = 1.5 - light_power = 2 - light_color = LIGHT_COLOR_ORANGE - var/mob/user - var/damage = 20 - -/obj/effect/overlay/temp/ratvar/volt_hit/Initialize(mapload, caster, multiplier) - if(multiplier) - damage *= multiplier - duration = max(round(damage * 0.2), 1) - . = ..() - -/obj/effect/overlay/temp/ratvar/volt_hit/true/Initialize(mapload, caster, multiplier) - . = ..() - user = caster - if(user) - var/matrix/M = new - M.Turn(Get_Angle(src, user)) - transform = M - INVOKE_ASYNC(src, .proc/volthit) - -/obj/effect/overlay/temp/ratvar/volt_hit/proc/volthit() - if(user) - Beam(get_turf(user), "volt_ray", time=duration, maxdistance=8, beam_type=/obj/effect/ebeam/volt_ray) - var/hit_amount = 0 - var/turf/T = get_turf(src) - for(var/mob/living/L in T) - if(is_servant_of_ratvar(L)) - continue - var/obj/item/I = L.null_rod_check() - if(I) - L.visible_message("Strange energy flows into [L]'s [I.name]!", \ - "Your [I.name] shields you from [src]!") - continue - L.visible_message("[L] is struck by a [name]!", "You're struck by a [name]!") - L.apply_damage(damage, BURN, "chest", L.run_armor_check("chest", "laser", "Your armor absorbs [src]!", "Your armor blocks part of [src]!", 0, "Your armor was penetrated by [src]!")) - add_logs(user, L, "struck with a volt blast") - hit_amount++ - for(var/obj/mecha/M in T) - if(M.occupant) - if(is_servant_of_ratvar(M.occupant)) - continue - to_chat(M.occupant, "Your [M.name] is struck by a [name]!") - M.visible_message("[M] is struck by a [name]!") - M.take_damage(damage, BURN, 0, 0) - hit_amount++ - if(hit_amount) - playsound(src, 'sound/machines/defib_zap.ogg', damage*hit_amount, 1, -1) - else - playsound(src, "sparks", 50, 1) - -/obj/effect/overlay/temp/ratvar/ocular_warden - name = "warden's gaze" - layer = ABOVE_MOB_LAYER - icon_state = "warden_gaze" - duration = 3 - -/obj/effect/overlay/temp/ratvar/ocular_warden/Initialize() - . = ..() - pixel_x = rand(-8, 8) - pixel_y = rand(-10, 10) - animate(src, alpha = 0, time = 3, easing = EASE_OUT) - -/obj/effect/overlay/temp/ratvar/spearbreak - icon = 'icons/effects/64x64.dmi' - icon_state = "ratvarspearbreak" - layer = BELOW_MOB_LAYER - pixel_y = -16 - pixel_x = -16 - -/obj/effect/overlay/temp/ratvar/geis_binding - icon_state = "geisbinding" - -/obj/effect/overlay/temp/ratvar/geis_binding/top - icon_state = "geisbinding_top" - -/obj/effect/overlay/temp/ratvar/component - icon = 'icons/obj/clockwork_objects.dmi' - icon_state = "belligerent_eye" - layer = ABOVE_MOB_LAYER - duration = 10 - -/obj/effect/overlay/temp/ratvar/component/Initialize() - . = ..() - transform = matrix()*0.75 - pixel_x = rand(-10, 10) - pixel_y = rand(-10, -2) - animate(src, pixel_y = pixel_y + 10, alpha = 50, time = 10, easing = EASE_OUT) - -/obj/effect/overlay/temp/ratvar/component/cogwheel - icon_state = "vanguard_cogwheel" - -/obj/effect/overlay/temp/ratvar/component/capacitor - icon_state = "geis_capacitor" - -/obj/effect/overlay/temp/ratvar/component/alloy - icon_state = "replicant_alloy" - -/obj/effect/overlay/temp/ratvar/component/ansible - icon_state = "hierophant_ansible" - -/obj/effect/overlay/temp/ratvar/sigil - name = "glowing circle" - icon_state = "sigildull" - -/obj/effect/overlay/temp/ratvar/sigil/transgression - color = "#FAE48C" - layer = ABOVE_MOB_LAYER - duration = 70 - light_range = 5 - light_power = 2 - light_color = "#FAE48C" - -/obj/effect/overlay/temp/ratvar/sigil/transgression/Initialize() - . = ..() - var/oldtransform = transform - animate(src, transform = matrix()*2, time = 5) - animate(transform = oldtransform, alpha = 0, time = 65) - -/obj/effect/overlay/temp/ratvar/sigil/vitality - color = "#1E8CE1" - icon_state = "sigilactivepulse" - layer = ABOVE_MOB_LAYER - light_range = 1.4 - light_power = 0.5 - light_color = "#1E8CE1" - -/obj/effect/overlay/temp/ratvar/sigil/accession - color = "#AF0AAF" - layer = ABOVE_MOB_LAYER - duration = 70 - icon_state = "sigilactiveoverlay" - alpha = 0 - - -/obj/effect/overlay/temp/revenant - name = "spooky lights" - icon_state = "purplesparkles" - -/obj/effect/overlay/temp/revenant/cracks - name = "glowing cracks" - icon_state = "purplecrack" - duration = 6 - - -/obj/effect/overlay/temp/gravpush - name = "gravity wave" - icon_state = "shieldsparkles" - duration = 5 - -/obj/effect/overlay/temp/telekinesis - name = "telekinetic force" - icon_state = "empdisable" - duration = 5 - -/obj/effect/overlay/temp/emp - name = "emp sparks" - icon_state = "empdisable" - -/obj/effect/overlay/temp/emp/pulse - name = "emp pulse" - icon_state = "emppulse" - duration = 8 - randomdir = 0 - -/obj/effect/overlay/temp/gib_animation - icon = 'icons/mob/mob.dmi' - duration = 15 - -/obj/effect/overlay/temp/gib_animation/Initialize(mapload, gib_icon) - icon_state = gib_icon // Needs to be before ..() so icon is correct - . = ..() - -/obj/effect/overlay/temp/gib_animation/ex_act(severity) - return //so the overlay isn't deleted by the explosion that gibbed the mob. - -/obj/effect/overlay/temp/gib_animation/animal - icon = 'icons/mob/animal.dmi' - -/obj/effect/overlay/temp/dust_animation - icon = 'icons/mob/mob.dmi' - duration = 15 - -/obj/effect/overlay/temp/dust_animation/Initialize(mapload, dust_icon) - icon_state = dust_icon // Before ..() so the correct icon is flick()'d - . = ..() - -/obj/effect/overlay/temp/mummy_animation - icon = 'icons/mob/mob.dmi' - icon_state = "mummy_revive" - duration = 20 - -/obj/effect/overlay/temp/heal //color is white by default, set to whatever is needed - name = "healing glow" - icon_state = "heal" - duration = 15 - -/obj/effect/overlay/temp/heal/Initialize(mapload, colour) - if(colour) - color = colour - . = ..() - pixel_x = rand(-12, 12) - pixel_y = rand(-9, 0) - -/obj/effect/overlay/temp/kinetic_blast - name = "kinetic explosion" - icon = 'icons/obj/projectiles.dmi' - icon_state = "kinetic_blast" - layer = ABOVE_ALL_MOB_LAYER - duration = 4 - -/obj/effect/overlay/temp/explosion - name = "explosion" - icon = 'icons/effects/96x96.dmi' - icon_state = "explosion" - pixel_x = -32 - pixel_y = -32 - duration = 8 - -/obj/effect/overlay/temp/explosion/fast - icon_state = "explosionfast" - duration = 4 - -/obj/effect/overlay/temp/blob - name = "blob" - icon_state = "blob_attack" - alpha = 140 - randomdir = 0 - duration = 6 - -/obj/effect/overlay/temp/impact_effect - icon_state = "impact_bullet" - duration = 5 - -/obj/effect/overlay/temp/impact_effect/Initialize(mapload, atom/target, obj/item/projectile/P) - if(target == P.original) //the projectile hit the target originally clicked - pixel_x = P.p_x + target.pixel_x - 16 + rand(-4,4) - pixel_y = P.p_y + target.pixel_y - 16 + rand(-4,4) - else - pixel_x = target.pixel_x + rand(-4,4) - pixel_y = target.pixel_y + rand(-4,4) - . = ..() - -/obj/effect/overlay/temp/impact_effect/red_laser - icon_state = "impact_laser" - duration = 4 - -/obj/effect/overlay/temp/impact_effect/red_laser/wall - icon_state = "impact_laser_wall" - duration = 10 - -/obj/effect/overlay/temp/impact_effect/blue_laser - icon_state = "impact_laser_blue" - duration = 4 - -/obj/effect/overlay/temp/impact_effect/green_laser - icon_state = "impact_laser_green" - duration = 4 - -/obj/effect/overlay/temp/impact_effect/purple_laser - icon_state = "impact_laser_purple" - duration = 4 - -/obj/effect/overlay/temp/impact_effect/ion - icon_state = "shieldsparkles" - duration = 6 - -/obj/effect/overlay/temp/heart - name = "heart" - icon = 'icons/mob/animal.dmi' - icon_state = "heart" - duration = 25 - -/obj/effect/overlay/temp/heart/Initialize(mapload) - . = ..() - pixel_x = rand(-4,4) - pixel_y = rand(-4,4) - - animate(src, pixel_y = pixel_y + 32, alpha = 0, time = 25) - /obj/effect/overlay/palmtree_r name = "Palm tree" icon = 'icons/misc/beach2.dmi' diff --git a/code/game/objects/effects/spawners/xeno_egg_delivery.dm b/code/game/objects/effects/spawners/xeno_egg_delivery.dm index 91db494d9b8..a452dae7497 100644 --- a/code/game/objects/effects/spawners/xeno_egg_delivery.dm +++ b/code/game/objects/effects/spawners/xeno_egg_delivery.dm @@ -10,7 +10,7 @@ var/area/A = get_area(T) new /obj/structure/alien/egg(T) - new /obj/effect/overlay/temp/gravpush(T) + new /obj/effect/temp_visual/gravpush(T) playsound(T, 'sound/items/party_horn.ogg', 50, 1, -1) message_admins("An alien egg has been delivered to [A] at [ADMIN_COORDJMP(T)].") diff --git a/code/game/objects/effects/temporary_visuals/clockcult.dm b/code/game/objects/effects/temporary_visuals/clockcult.dm new file mode 100644 index 00000000000..1eae2a3c643 --- /dev/null +++ b/code/game/objects/effects/temporary_visuals/clockcult.dm @@ -0,0 +1,218 @@ +//temporary visual effects(/obj/effect/temp_visual) used by clockcult stuff +/obj/effect/temp_visual/ratvar + name = "ratvar's light" + icon = 'icons/effects/clockwork_effects.dmi' + duration = 8 + randomdir = 0 + layer = ABOVE_NORMAL_TURF_LAYER + +/obj/effect/temp_visual/ratvar/door + icon_state = "ratvardoorglow" + layer = CLOSED_DOOR_LAYER //above closed doors + +/obj/effect/temp_visual/ratvar/door/window + icon_state = "ratvarwindoorglow" + layer = ABOVE_WINDOW_LAYER + +/obj/effect/temp_visual/ratvar/beam + icon_state = "ratvarbeamglow" + +/obj/effect/temp_visual/ratvar/beam/door + layer = CLOSED_DOOR_LAYER + +/obj/effect/temp_visual/ratvar/beam/grille + layer = BELOW_OBJ_LAYER + +/obj/effect/temp_visual/ratvar/beam/itemconsume + layer = HIGH_OBJ_LAYER + +/obj/effect/temp_visual/ratvar/beam/falsewall + layer = OBJ_LAYER + +/obj/effect/temp_visual/ratvar/beam/catwalk + layer = LATTICE_LAYER + +/obj/effect/temp_visual/ratvar/wall + icon_state = "ratvarwallglow" + +/obj/effect/temp_visual/ratvar/wall/false + layer = OBJ_LAYER + +/obj/effect/temp_visual/ratvar/floor + icon_state = "ratvarfloorglow" + +/obj/effect/temp_visual/ratvar/floor/catwalk + layer = LATTICE_LAYER + +/obj/effect/temp_visual/ratvar/window + icon_state = "ratvarwindowglow" + layer = ABOVE_OBJ_LAYER + +/obj/effect/temp_visual/ratvar/window/single + icon_state = "ratvarwindowglow_s" + +/obj/effect/temp_visual/ratvar/gear + icon_state = "ratvargearglow" + layer = BELOW_OBJ_LAYER + +/obj/effect/temp_visual/ratvar/grille + icon_state = "ratvargrilleglow" + layer = BELOW_OBJ_LAYER + +/obj/effect/temp_visual/ratvar/grille/broken + icon_state = "ratvarbrokengrilleglow" + +/obj/effect/temp_visual/ratvar/mending_mantra + layer = ABOVE_MOB_LAYER + duration = 20 + alpha = 200 + icon_state = "mending_mantra" + light_range = 1.5 + light_color = "#1E8CE1" + +/obj/effect/temp_visual/ratvar/mending_mantra/Initialize(mapload) + . = ..() + transform = matrix()*2 + var/matrix/M = transform + M.Turn(90) + animate(src, alpha = 20, time = duration, easing = BOUNCE_EASING, flags = ANIMATION_PARALLEL) + animate(src, transform = M, time = duration, flags = ANIMATION_PARALLEL) + +/obj/effect/temp_visual/ratvar/volt_hit + name = "volt blast" + layer = ABOVE_MOB_LAYER + duration = 5 + icon_state = "volt_hit" + light_range = 1.5 + light_power = 2 + light_color = LIGHT_COLOR_ORANGE + var/mob/user + var/damage = 20 + +/obj/effect/temp_visual/ratvar/volt_hit/Initialize(mapload, caster, multiplier) + if(multiplier) + damage *= multiplier + duration = max(round(damage * 0.2), 1) + . = ..() + +/obj/effect/temp_visual/ratvar/volt_hit/true/Initialize(mapload, caster, multiplier) + . = ..() + user = caster + if(user) + var/matrix/M = new + M.Turn(Get_Angle(src, user)) + transform = M + INVOKE_ASYNC(src, .proc/volthit) + +/obj/effect/temp_visual/ratvar/volt_hit/proc/volthit() + if(user) + Beam(get_turf(user), "volt_ray", time=duration, maxdistance=8, beam_type=/obj/effect/ebeam/volt_ray) + var/hit_amount = 0 + var/turf/T = get_turf(src) + for(var/mob/living/L in T) + if(is_servant_of_ratvar(L)) + continue + var/obj/item/I = L.null_rod_check() + if(I) + L.visible_message("Strange energy flows into [L]'s [I.name]!", \ + "Your [I.name] shields you from [src]!") + continue + L.visible_message("[L] is struck by a [name]!", "You're struck by a [name]!") + L.apply_damage(damage, BURN, "chest", L.run_armor_check("chest", "laser", "Your armor absorbs [src]!", "Your armor blocks part of [src]!", 0, "Your armor was penetrated by [src]!")) + add_logs(user, L, "struck with a volt blast") + hit_amount++ + for(var/obj/mecha/M in T) + if(M.occupant) + if(is_servant_of_ratvar(M.occupant)) + continue + to_chat(M.occupant, "Your [M.name] is struck by a [name]!") + M.visible_message("[M] is struck by a [name]!") + M.take_damage(damage, BURN, 0, 0) + hit_amount++ + if(hit_amount) + playsound(src, 'sound/machines/defib_zap.ogg', damage*hit_amount, 1, -1) + else + playsound(src, "sparks", 50, 1) + +/obj/effect/temp_visual/ratvar/ocular_warden + name = "warden's gaze" + layer = ABOVE_MOB_LAYER + icon_state = "warden_gaze" + duration = 3 + +/obj/effect/temp_visual/ratvar/ocular_warden/Initialize() + . = ..() + pixel_x = rand(-8, 8) + pixel_y = rand(-10, 10) + animate(src, alpha = 0, time = 3, easing = EASE_OUT) + +/obj/effect/temp_visual/ratvar/spearbreak + icon = 'icons/effects/64x64.dmi' + icon_state = "ratvarspearbreak" + layer = BELOW_MOB_LAYER + pixel_y = -16 + pixel_x = -16 + +/obj/effect/temp_visual/ratvar/geis_binding + icon_state = "geisbinding" + +/obj/effect/temp_visual/ratvar/geis_binding/top + icon_state = "geisbinding_top" + +/obj/effect/temp_visual/ratvar/component + icon = 'icons/obj/clockwork_objects.dmi' + icon_state = "belligerent_eye" + layer = ABOVE_MOB_LAYER + duration = 10 + +/obj/effect/temp_visual/ratvar/component/Initialize() + . = ..() + transform = matrix()*0.75 + pixel_x = rand(-10, 10) + pixel_y = rand(-10, -2) + animate(src, pixel_y = pixel_y + 10, alpha = 50, time = 10, easing = EASE_OUT) + +/obj/effect/temp_visual/ratvar/component/cogwheel + icon_state = "vanguard_cogwheel" + +/obj/effect/temp_visual/ratvar/component/capacitor + icon_state = "geis_capacitor" + +/obj/effect/temp_visual/ratvar/component/alloy + icon_state = "replicant_alloy" + +/obj/effect/temp_visual/ratvar/component/ansible + icon_state = "hierophant_ansible" + +/obj/effect/temp_visual/ratvar/sigil + name = "glowing circle" + icon_state = "sigildull" + +/obj/effect/temp_visual/ratvar/sigil/transgression + color = "#FAE48C" + layer = ABOVE_MOB_LAYER + duration = 70 + light_range = 5 + light_power = 2 + light_color = "#FAE48C" + +/obj/effect/temp_visual/ratvar/sigil/transgression/Initialize() + . = ..() + var/oldtransform = transform + animate(src, transform = matrix()*2, time = 5) + animate(transform = oldtransform, alpha = 0, time = 65) + +/obj/effect/temp_visual/ratvar/sigil/vitality + color = "#1E8CE1" + icon_state = "sigilactivepulse" + layer = ABOVE_MOB_LAYER + light_range = 1.4 + light_power = 0.5 + light_color = "#1E8CE1" + +/obj/effect/temp_visual/ratvar/sigil/accession + color = "#AF0AAF" + layer = ABOVE_MOB_LAYER + duration = 70 + icon_state = "sigilactiveoverlay" + alpha = 0 diff --git a/code/game/objects/effects/temporary_visuals/cult.dm b/code/game/objects/effects/temporary_visuals/cult.dm new file mode 100644 index 00000000000..78cc50cfc1e --- /dev/null +++ b/code/game/objects/effects/temporary_visuals/cult.dm @@ -0,0 +1,144 @@ +//temporary visual effects(/obj/effect/temp_visual) used by cult stuff +/obj/effect/temp_visual/cult + icon = 'icons/effects/cult_effects.dmi' + randomdir = 0 + duration = 10 + +/obj/effect/temp_visual/cult/sparks + randomdir = 1 + name = "blood sparks" + icon_state = "bloodsparkles" + +/obj/effect/temp_visual/cult/blood // The traditional teleport + name = "blood jaunt" + duration = 12 + icon_state = "bloodin" + +/obj/effect/temp_visual/cult/blood/out + icon_state = "bloodout" + +/obj/effect/temp_visual/dir_setting/cult/phase // The veil shifter teleport + name = "phase glow" + duration = 7 + icon_state = "cultin" + +/obj/effect/temp_visual/dir_setting/cult/phase/out + icon_state = "cultout" + +/obj/effect/temp_visual/cult/sac + name = "maw of Nar-Sie" + icon_state = "sacconsume" + +/obj/effect/temp_visual/cult/door + name = "unholy glow" + icon_state = "doorglow" + layer = CLOSED_FIREDOOR_LAYER //above closed doors + +/obj/effect/temp_visual/cult/door/unruned + icon_state = "unruneddoorglow" + +/obj/effect/temp_visual/cult/turf + name = "unholy glow" + icon_state = "wallglow" + layer = ABOVE_NORMAL_TURF_LAYER + +/obj/effect/temp_visual/cult/turf/floor + icon_state = "floorglow" + duration = 5 + +//visuals for runes being magically created +/obj/effect/temp_visual/cult/rune_spawn + icon_state = "runeouter" + alpha = 0 + var/turnedness = 179 //179 turns counterclockwise, 181 turns clockwise + +/obj/effect/temp_visual/cult/rune_spawn/Initialize(mapload, set_duration, set_color) + if(isnum(set_duration)) + duration = set_duration + if(set_color) + add_atom_colour(set_color, FIXED_COLOUR_PRIORITY) + . = ..() + var/oldtransform = transform + transform = matrix()*2 + var/matrix/M = transform + M.Turn(turnedness) + transform = M + animate(src, alpha = 255, time = duration, easing = BOUNCE_EASING, flags = ANIMATION_PARALLEL) + animate(src, transform = oldtransform, time = duration, flags = ANIMATION_PARALLEL) + +/obj/effect/temp_visual/cult/rune_spawn/rune1 + icon_state = "rune1words" + turnedness = 181 + +/obj/effect/temp_visual/cult/rune_spawn/rune1/inner + icon_state = "rune1inner" + turnedness = 179 + +/obj/effect/temp_visual/cult/rune_spawn/rune1/center + icon_state = "rune1center" + +/obj/effect/temp_visual/cult/rune_spawn/rune2 + icon_state = "rune2words" + turnedness = 181 + +/obj/effect/temp_visual/cult/rune_spawn/rune2/inner + icon_state = "rune2inner" + turnedness = 179 + +/obj/effect/temp_visual/cult/rune_spawn/rune2/center + icon_state = "rune2center" + +/obj/effect/temp_visual/cult/rune_spawn/rune3 + icon_state = "rune3words" + turnedness = 181 + +/obj/effect/temp_visual/cult/rune_spawn/rune3/inner + icon_state = "rune3inner" + turnedness = 179 + +/obj/effect/temp_visual/cult/rune_spawn/rune3/center + icon_state = "rune3center" + +/obj/effect/temp_visual/cult/rune_spawn/rune4 + icon_state = "rune4words" + turnedness = 181 + +/obj/effect/temp_visual/cult/rune_spawn/rune4/inner + icon_state = "rune4inner" + turnedness = 179 + +/obj/effect/temp_visual/cult/rune_spawn/rune4/center + icon_state = "rune4center" + +/obj/effect/temp_visual/cult/rune_spawn/rune5 + icon_state = "rune5words" + turnedness = 181 + +/obj/effect/temp_visual/cult/rune_spawn/rune5/inner + icon_state = "rune5inner" + turnedness = 179 + +/obj/effect/temp_visual/cult/rune_spawn/rune5/center + icon_state = "rune5center" + +/obj/effect/temp_visual/cult/rune_spawn/rune6 + icon_state = "rune6words" + turnedness = 181 + +/obj/effect/temp_visual/cult/rune_spawn/rune6/inner + icon_state = "rune6inner" + turnedness = 179 + +/obj/effect/temp_visual/cult/rune_spawn/rune6/center + icon_state = "rune6center" + +/obj/effect/temp_visual/cult/rune_spawn/rune7 + icon_state = "rune7words" + turnedness = 181 + +/obj/effect/temp_visual/cult/rune_spawn/rune7/inner + icon_state = "rune7inner" + turnedness = 179 + +/obj/effect/temp_visual/cult/rune_spawn/rune7/center + icon_state = "rune7center" diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm new file mode 100644 index 00000000000..c3cf2a51039 --- /dev/null +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -0,0 +1,312 @@ +//unsorted miscellaneous temporary visuals +/obj/effect/temp_visual/dir_setting/bloodsplatter + icon = 'icons/effects/blood.dmi' + duration = 5 + randomdir = FALSE + layer = BELOW_MOB_LAYER + var/splatter_type = "splatter" + +/obj/effect/temp_visual/dir_setting/bloodsplatter/Initialize(mapload, set_dir) + if(set_dir in GLOB.diagonals) + icon_state = "[splatter_type][pick(1, 2, 6)]" + else + icon_state = "[splatter_type][pick(3, 4, 5)]" + . = ..() + var/target_pixel_x = 0 + var/target_pixel_y = 0 + switch(set_dir) + if(NORTH) + target_pixel_y = 16 + if(SOUTH) + target_pixel_y = -16 + layer = ABOVE_MOB_LAYER + if(EAST) + target_pixel_x = 16 + if(WEST) + target_pixel_x = -16 + if(NORTHEAST) + target_pixel_x = 16 + target_pixel_y = 16 + if(NORTHWEST) + target_pixel_x = -16 + target_pixel_y = 16 + if(SOUTHEAST) + target_pixel_x = 16 + target_pixel_y = -16 + layer = ABOVE_MOB_LAYER + if(SOUTHWEST) + target_pixel_x = -16 + target_pixel_y = -16 + layer = ABOVE_MOB_LAYER + animate(src, pixel_x = target_pixel_x, pixel_y = target_pixel_y, alpha = 0, time = duration) + +/obj/effect/temp_visual/dir_setting/bloodsplatter/xenosplatter + splatter_type = "xsplatter" + +/obj/effect/temp_visual/dir_setting/speedbike_trail + name = "speedbike trails" + icon_state = "ion_fade" + layer = BELOW_MOB_LAYER + duration = 10 + randomdir = 0 + +/obj/effect/temp_visual/dir_setting/firing_effect + icon = 'icons/effects/effects.dmi' + icon_state = "firing_effect" + duration = 2 + +/obj/effect/temp_visual/dir_setting/firing_effect/setDir(newdir) + switch(newdir) + if(NORTH) + layer = BELOW_MOB_LAYER + pixel_x = rand(-3,3) + pixel_y = rand(4,6) + if(SOUTH) + pixel_x = rand(-3,3) + pixel_y = rand(-1,1) + else + pixel_x = rand(-1,1) + pixel_y = rand(-1,1) + ..() + +/obj/effect/temp_visual/dir_setting/firing_effect/energy + icon_state = "firing_effect_energy" + duration = 3 + +/obj/effect/temp_visual/dir_setting/firing_effect/magic + icon_state = "shieldsparkles" + duration = 3 + +/obj/effect/temp_visual/dir_setting/ninja + name = "ninja shadow" + icon = 'icons/mob/mob.dmi' + icon_state = "uncloak" + duration = 9 + +/obj/effect/temp_visual/dir_setting/ninja/cloak + icon_state = "cloak" + +/obj/effect/temp_visual/dir_setting/ninja/shadow + icon_state = "shadow" + +/obj/effect/temp_visual/dir_setting/ninja/phase + name = "ninja energy" + icon_state = "phasein" + +/obj/effect/temp_visual/dir_setting/ninja/phase/out + icon_state = "phaseout" + +/obj/effect/temp_visual/dir_setting/wraith + name = "blood" + icon = 'icons/mob/mob.dmi' + icon_state = "phase_shift2" + duration = 12 + +/obj/effect/temp_visual/dir_setting/wraith/out + icon_state = "phase_shift" + +/obj/effect/temp_visual/dir_setting/tailsweep + icon_state = "tailsweep" + duration = 4 + +/obj/effect/temp_visual/wizard + name = "water" + icon = 'icons/mob/mob.dmi' + icon_state = "reappear" + duration = 5 + +/obj/effect/temp_visual/wizard/out + icon_state = "liquify" + duration = 12 + +/obj/effect/temp_visual/monkeyify + icon = 'icons/mob/mob.dmi' + icon_state = "h2monkey" + duration = 22 + +/obj/effect/temp_visual/monkeyify/humanify + icon_state = "monkey2h" + +/obj/effect/temp_visual/borgflash + icon = 'icons/mob/mob.dmi' + icon_state = "blspell" + duration = 5 + +/obj/effect/temp_visual/guardian + randomdir = 0 + +/obj/effect/temp_visual/guardian/phase + duration = 5 + icon_state = "phasein" + +/obj/effect/temp_visual/guardian/phase/out + icon_state = "phaseout" + +/obj/effect/temp_visual/decoy + desc = "It's a decoy!" + duration = 15 + +/obj/effect/temp_visual/decoy/Initialize(mapload, atom/mimiced_atom) + . = ..() + alpha = initial(alpha) + if(mimiced_atom) + name = mimiced_atom.name + appearance = mimiced_atom.appearance + setDir(mimiced_atom.dir) + mouse_opacity = 0 + +/obj/effect/temp_visual/decoy/fading/Initialize(mapload, atom/mimiced_atom) + . = ..() + animate(src, alpha = 0, time = duration) + +/obj/effect/temp_visual/decoy/fading/fivesecond + duration = 50 + +/obj/effect/temp_visual/small_smoke + icon_state = "smoke" + duration = 50 + +/obj/effect/temp_visual/fire + icon = 'icons/effects/fire.dmi' + icon_state = "3" + duration = 20 + +/obj/effect/temp_visual/revenant + name = "spooky lights" + icon_state = "purplesparkles" + +/obj/effect/temp_visual/revenant/cracks + name = "glowing cracks" + icon_state = "purplecrack" + duration = 6 + +/obj/effect/temp_visual/gravpush + name = "gravity wave" + icon_state = "shieldsparkles" + duration = 5 + +/obj/effect/temp_visual/telekinesis + name = "telekinetic force" + icon_state = "empdisable" + duration = 5 + +/obj/effect/temp_visual/emp + name = "emp sparks" + icon_state = "empdisable" + +/obj/effect/temp_visual/emp/pulse + name = "emp pulse" + icon_state = "emppulse" + duration = 8 + randomdir = 0 + +/obj/effect/temp_visual/gib_animation + icon = 'icons/mob/mob.dmi' + duration = 15 + +/obj/effect/temp_visual/gib_animation/Initialize(mapload, gib_icon) + icon_state = gib_icon // Needs to be before ..() so icon is correct + . = ..() + +/obj/effect/temp_visual/gib_animation/animal + icon = 'icons/mob/animal.dmi' + +/obj/effect/temp_visual/dust_animation + icon = 'icons/mob/mob.dmi' + duration = 15 + +/obj/effect/temp_visual/dust_animation/Initialize(mapload, dust_icon) + icon_state = dust_icon // Before ..() so the correct icon is flick()'d + . = ..() + +/obj/effect/temp_visual/mummy_animation + icon = 'icons/mob/mob.dmi' + icon_state = "mummy_revive" + duration = 20 + +/obj/effect/temp_visual/heal //color is white by default, set to whatever is needed + name = "healing glow" + icon_state = "heal" + duration = 15 + +/obj/effect/temp_visual/heal/Initialize(mapload, set_color) + if(set_color) + add_atom_colour(set_color, FIXED_COLOUR_PRIORITY) + . = ..() + pixel_x = rand(-12, 12) + pixel_y = rand(-9, 0) + +/obj/effect/temp_visual/kinetic_blast + name = "kinetic explosion" + icon = 'icons/obj/projectiles.dmi' + icon_state = "kinetic_blast" + layer = ABOVE_ALL_MOB_LAYER + duration = 4 + +/obj/effect/temp_visual/explosion + name = "explosion" + icon = 'icons/effects/96x96.dmi' + icon_state = "explosion" + pixel_x = -32 + pixel_y = -32 + duration = 8 + +/obj/effect/temp_visual/explosion/fast + icon_state = "explosionfast" + duration = 4 + +/obj/effect/temp_visual/blob + name = "blob" + icon_state = "blob_attack" + alpha = 140 + randomdir = 0 + duration = 6 + +/obj/effect/temp_visual/impact_effect + icon_state = "impact_bullet" + duration = 5 + +/obj/effect/temp_visual/impact_effect/Initialize(mapload, atom/target, obj/item/projectile/P) + if(target == P.original) //the projectile hit the target originally clicked + pixel_x = P.p_x + target.pixel_x - 16 + rand(-4,4) + pixel_y = P.p_y + target.pixel_y - 16 + rand(-4,4) + else + pixel_x = target.pixel_x + rand(-4,4) + pixel_y = target.pixel_y + rand(-4,4) + . = ..() + +/obj/effect/temp_visual/impact_effect/red_laser + icon_state = "impact_laser" + duration = 4 + +/obj/effect/temp_visual/impact_effect/red_laser/wall + icon_state = "impact_laser_wall" + duration = 10 + +/obj/effect/temp_visual/impact_effect/blue_laser + icon_state = "impact_laser_blue" + duration = 4 + +/obj/effect/temp_visual/impact_effect/green_laser + icon_state = "impact_laser_green" + duration = 4 + +/obj/effect/temp_visual/impact_effect/purple_laser + icon_state = "impact_laser_purple" + duration = 4 + +/obj/effect/temp_visual/impact_effect/ion + icon_state = "shieldsparkles" + duration = 6 + +/obj/effect/temp_visual/heart + name = "heart" + icon = 'icons/mob/animal.dmi' + icon_state = "heart" + duration = 25 + +/obj/effect/temp_visual/heart/Initialize(mapload) + . = ..() + pixel_x = rand(-4,4) + pixel_y = rand(-4,4) + animate(src, pixel_y = pixel_y + 32, alpha = 0, time = 25) diff --git a/code/game/objects/effects/temporary_visuals/temporary_visual.dm b/code/game/objects/effects/temporary_visuals/temporary_visual.dm new file mode 100644 index 00000000000..44b9b91224a --- /dev/null +++ b/code/game/objects/effects/temporary_visuals/temporary_visual.dm @@ -0,0 +1,37 @@ +//temporary visual effects +/obj/effect/temp_visual + icon_state = "nothing" + anchored = 1 + layer = ABOVE_MOB_LAYER + mouse_opacity = 0 + var/duration = 10 //in deciseconds + var/randomdir = TRUE + var/timerid + +/obj/effect/temp_visual/Initialize() + . = ..() + if(randomdir) + setDir(pick(GLOB.cardinal)) + + timerid = QDEL_IN(src, duration) + +/obj/effect/temp_visual/Destroy() + . = ..() + deltimer(timerid) + +/obj/effect/temp_visual/singularity_act() + return + +/obj/effect/temp_visual/singularity_pull() + return + +/obj/effect/temp_visual/ex_act() + return + +/obj/effect/temp_visual/dir_setting + randomdir = FALSE + +/obj/effect/temp_visual/dir_setting/Initialize(mapload, set_dir) + if(set_dir) + setDir(set_dir) + . = ..() diff --git a/code/game/objects/empulse.dm b/code/game/objects/empulse.dm index 0a87fc55dba..eb8602da5da 100644 --- a/code/game/objects/empulse.dm +++ b/code/game/objects/empulse.dm @@ -9,7 +9,7 @@ log_game("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] ") if(heavy_range > 1) - new /obj/effect/overlay/temp/emp/pulse(epicenter) + new /obj/effect/temp_visual/emp/pulse(epicenter) if(heavy_range > light_range) light_range = heavy_range diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 28388d656d3..f275862caa5 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -528,6 +528,9 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) /obj/item/throw_impact(atom/A) if(A && !QDELETED(A)) + if(is_hot() && isliving(A)) + var/mob/living/L = A + L.IgniteMob() var/itempush = 1 if(w_class < 4) itempush = 0 //too light to push anything diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index af8b9341f94..0c29ee3f9f9 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -68,6 +68,7 @@ var/pre_noise = FALSE var/post_noise = FALSE + /obj/item/toy/crayon/suicide_act(mob/user) user.visible_message("[user] is jamming [src] up [user.p_their()] nose and into [user.p_their()] brain. It looks like [user.p_theyre()] trying to commit suicide!") return (BRUTELOSS|OXYLOSS) @@ -422,7 +423,7 @@ var/gangID = user.mind.gang_datum var/area/territory = get_area(target) - new /obj/effect/decal/cleanable/crayon/gang(target,gangID,"graffiti",0) + new /obj/effect/decal/cleanable/crayon/gang(target,gangID,"graffiti",0,user) to_chat(user, "You tagged [territory] for your gang!") /obj/item/toy/crayon/red diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index 0e4f7200bb1..3ab826ec418 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -56,13 +56,13 @@ qdel(active_dummy) active_dummy = null to_chat(usr, "You deactivate \the [src].") - new /obj/effect/overlay/temp/emp/pulse(get_turf(src)) + new /obj/effect/temp_visual/emp/pulse(get_turf(src)) else playsound(get_turf(src), 'sound/effects/pop.ogg', 100, 1, -6) var/obj/effect/dummy/chameleon/C = new/obj/effect/dummy/chameleon(usr.loc) C.activate(usr, saved_appearance, src) to_chat(usr, "You activate \the [src].") - new /obj/effect/overlay/temp/emp/pulse(get_turf(src)) + new /obj/effect/temp_visual/emp/pulse(get_turf(src)) /obj/item/device/chameleon/proc/disrupt(delete_dummy = 1) if(active_dummy) diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 7ed563d6b78..dd506c1ad43 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -162,18 +162,18 @@ return var/T = get_turf(target) if(locate(/mob/living) in T) - new /obj/effect/overlay/temp/medical_holosign(T,user) //produce a holographic glow + new /obj/effect/temp_visual/medical_holosign(T,user) //produce a holographic glow holo_cooldown = world.time + 100 return ..() -/obj/effect/overlay/temp/medical_holosign +/obj/effect/temp_visual/medical_holosign name = "medical holosign" desc = "A small holographic glow that indicates a medic is coming to treat a patient." icon_state = "medi_holo" duration = 30 -/obj/effect/overlay/temp/medical_holosign/Initialize(mapload, creator) +/obj/effect/temp_visual/medical_holosign/Initialize(mapload, creator) . = ..() playsound(loc, 'sound/machines/ping.ogg', 50, 0) //make some noise! if(creator) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 5b82a2cb412..fbc41fb1bb8 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -293,7 +293,6 @@ // --- Cold, emotionless machines. --- else if(isobj(M)) jobname = "Machine" - voice = capitalize(voice) // --- Unidentifiable mob --- else diff --git a/code/game/objects/items/eightball.dm b/code/game/objects/items/eightball.dm index 28e42813b6f..ae3a45f457f 100644 --- a/code/game/objects/items/eightball.dm +++ b/code/game/objects/items/eightball.dm @@ -4,6 +4,7 @@ icon = 'icons/obj/toy.dmi' icon_state = "eightball" + w_class = WEIGHT_CLASS_TINY verb_say = "rattles" diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index 73581f9269d..01d7bfd9bdc 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -504,6 +504,113 @@ S.change_head_color(color2) dropped = TRUE +//Peacekeeper Cyborg Projectile Dampenening Field +/obj/item/borg/projectile_dampen + name = "Hyperkinetic Dampening projector" + desc = "A device that projects a dampening field that weakens kinetic energy above a certain threshold. Projects a field that drains power per second \ + while active, that will weaken and slow damaging projectiles inside its field. Still being a prototype, it tends to induce a charge on ungrounded metallic surfaces." + icon = 'icons/obj/device.dmi' + icon_state = "shield" + var/maxenergy = 1500 + var/energy = 1500 + var/energy_recharge = 7.5 + var/energy_recharge_cyborg_drain_coefficient = 0.4 + var/cyborg_cell_critical_percentage = 0.05 + var/mob/living/silicon/robot/host = null + var/datum/proximity_monitor/advanced/dampening_field + var/projectile_damage_coefficient = 0.5 + var/projectile_damage_tick_ecost_coefficient = 2 //Lasers get half their damage chopped off, drains 50 power/tick. Note that fields are processed 5 times per second. + var/projectile_speed_coefficient = 1.5 //Higher the coefficient slower the projectile. + var/projectile_tick_speed_ecost = 15 + var/current_damage_dampening = 0 + var/list/obj/item/projectile/tracked + var/image/projectile_effect + var/field_radius = 3 + +/obj/item/borg/projectile_dampen/debug + maxenergy = 50000 + energy = 50000 + energy_recharge = 5000 + +/obj/item/borg/projectile_dampen/Initialize() + . = ..() + projectile_effect = image('icons/effects/fields.dmi', "projectile_dampen_effect") + tracked = list() + icon_state = "shield0" + START_PROCESSING(SSfastprocess, src) + +/obj/item/borg/projectile_dampen/Destroy() + STOP_PROCESSING(SSfastprocess, src) + return ..() + +/obj/item/borg/projectile_dampen/attack_self(mob/user) + var/active = FALSE + if(!istype(dampening_field)) + activate_field() + active = TRUE + else + deactivate_field() + active = FALSE + to_chat(user, "You [active? "activate":"deactivate"] the [src].") + icon_state = "[initial(icon_state)][active]" + +/obj/item/borg/projectile_dampen/proc/activate_field() + if(!istype(dampening_field)) + dampening_field = make_field(/datum/proximity_monitor/advanced/peaceborg_dampener, list("current_range" = field_radius, "host" = src, "projector" = src)) + +/obj/item/borg/projectile_dampen/proc/deactivate_field() + QDEL_NULL(dampening_field) + visible_message("The [src] shuts off!") + for(var/obj/item/projectile/P in tracked) + restore_projectile(P) + +/obj/item/borg/projectile_dampen/process() + process_recharge() + process_usage() + update_location() + +/obj/item/borg/projectile_dampen/proc/update_location() + if(dampening_field) + dampening_field.HandleMove() + +/obj/item/borg/projectile_dampen/proc/process_usage() + var/usage = 0 + for(var/I in tracked) + if(!tracked[I]) //No damage + continue + usage += projectile_tick_speed_ecost + usage += (current_damage_dampening * projectile_damage_tick_ecost_coefficient) + energy = Clamp(energy - usage, 0, maxenergy) + if(energy <= 0) + deactivate_field() + visible_message("The [src] blinks \"ENERGY DEPLETED\"") + +/obj/item/borg/projectile_dampen/proc/process_recharge() + if(!istype(host)) + energy = Clamp(energy + energy_recharge, 0, maxenergy) + return + if((host.cell.charge >= (host.cell.maxcharge * cyborg_cell_critical_percentage)) && (energy < maxenergy)) + host.cell.use(energy_recharge*energy_recharge_cyborg_drain_coefficient) + energy += energy_recharge + +/obj/item/borg/projectile_dampen/proc/dampen_projectile(obj/item/projectile/P, track_projectile = TRUE) + if(tracked[P]) + return + if(track_projectile) + tracked[P] = P.damage + current_damage_dampening += P.damage + P.damage *= projectile_damage_coefficient + P.speed *= projectile_speed_coefficient + P.add_overlay(projectile_effect) + +/obj/item/borg/projectile_dampen/proc/restore_projectile(obj/item/projectile/P) + tracked -= P + P.damage *= (1/projectile_damage_coefficient) + P.speed *= (1/projectile_speed_coefficient) + P.cut_overlay(projectile_effect) + current_damage_dampening -= P.damage + + /********************************************************************** HUD/SIGHT things ***********************************************************************/ diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 5353341ab6c..69e00e057eb 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -279,6 +279,28 @@ resistance_flags = FLAMMABLE +/obj/item/toy/windupToolbox + name = "windup toolbox" + desc = "A replica toolbox that rumbles when you turn the key" + icon_state = "his_grace" + item_state = "artistic_toolbox" + var/active = FALSE + icon = 'icons/obj/weapons.dmi' + attack_verb = list("robusted") + +/obj/item/toy/windupToolbox/attack_self(mob/user) + if(!active) + icon_state = "his_grace_awakened" + to_chat(user, "You wind up [src], it begins to rumble.") + active = TRUE + addtimer(CALLBACK(src, .proc/stopRumble), 600) + else + to_chat(user, "[src] is already active.") + +/obj/item/toy/windupToolbox/proc/stopRumble() + icon_state = initial(icon_state) + active = FALSE + /* * Subtype of Double-Bladed Energy Swords */ diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index f53c9f66976..302ec5e6de8 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -472,8 +472,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM flags = CONDUCT slot_flags = SLOT_BELT var/lit = 0 + var/fancy = TRUE heat = 1500 resistance_flags = FIRE_PROOF + light_color = LIGHT_COLOR_FIRE /obj/item/weapon/lighter/update_icon() if(lit) @@ -484,37 +486,28 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/weapon/lighter/ignition_effect(atom/A, mob/user) . = "With a single flick of their wrist, [user] smoothly lights [A] with [src]. Damn [user.p_theyre()] cool." -/obj/item/weapon/lighter/greyscale - name = "cheap lighter" - desc = "A cheap-as-free lighter." - icon_state = "lighter" - -/obj/item/weapon/lighter/greyscale/Initialize() - . = ..() - add_atom_colour(color2hex(randomColor(1)), FIXED_COLOUR_PRIORITY) - update_icon() - -/obj/item/weapon/lighter/greyscale/update_icon() - cut_overlays() - var/mutable_appearance/base_overlay = mutable_appearance(icon,"[initial(icon_state)]_base") - base_overlay.appearance_flags = RESET_COLOR //the edging doesn't change color +/obj/item/weapon/lighter/proc/set_lit(new_lit) + lit = new_lit if(lit) - base_overlay.icon_state = "[initial(icon_state)]_on" - add_overlay(base_overlay) - -/obj/item/weapon/lighter/greyscale/ignition_effect(atom/A, mob/user) - . = "After some fiddling, [user] manages to light [A] with [src]." + force = 5 + damtype = "fire" + hitsound = 'sound/items/welder.ogg' + attack_verb = list("burnt", "singed") + set_light(1) + START_PROCESSING(SSobj, src) + else + hitsound = "swing_hit" + force = 0 + attack_verb = null //human_defense.dm takes care of it + set_light(0) + STOP_PROCESSING(SSobj, src) + update_icon() /obj/item/weapon/lighter/attack_self(mob/living/user) if(user.is_holding(src)) if(!lit) - lit = 1 - update_icon() - force = 5 - damtype = "fire" - hitsound = 'sound/items/welder.ogg' - attack_verb = list("burnt", "singed") - if(!istype(src, /obj/item/weapon/lighter/greyscale)) + set_lit(TRUE) + if(fancy) user.visible_message("Without even breaking stride, [user] flips open and lights [src] in one smooth movement.", "Without even breaking stride, you flip open and lights [src] in one smooth movement.") else var/prot = FALSE @@ -534,20 +527,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM user.apply_damage(5, BURN, hitzone) user.visible_message("After a few attempts, [user] manages to light [src] - however, [user.p_they()] burn their finger in the process.", "You burn yourself while lighting the lighter!") - set_light(1) - START_PROCESSING(SSobj, src) else - lit = 0 - update_icon() - hitsound = "swing_hit" - force = 0 - attack_verb = null //human_defense.dm takes care of it - if(!istype(src, /obj/item/weapon/lighter/greyscale)) + set_lit(FALSE) + if(fancy) user.visible_message("You hear a quiet click, as [user] shuts off [src] without even looking at what [user.p_theyre()] doing. Wow.", "You quietly shut off [src] without even looking at what you're doing. Wow.") else user.visible_message("[user] quietly shuts off [src].", "You quietly shut off [src].") - set_light(0) - STOP_PROCESSING(SSobj, src) else . = ..() @@ -562,7 +547,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(M == user) cig.attackby(src, user) else - if(!istype(src, /obj/item/weapon/lighter/greyscale)) + if(fancy) cig.light("[user] whips the [name] out and holds it for [M]. [user.p_their(TRUE)] arm is as steady as the unflickering flame they light \the [cig] with.") else cig.light("[user] holds the [name] out for [M], and lights the [cig.name].") @@ -575,6 +560,30 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/weapon/lighter/is_hot() return lit * heat + +/obj/item/weapon/lighter/greyscale + name = "cheap lighter" + desc = "A cheap-as-free lighter." + icon_state = "lighter" + fancy = FALSE + +/obj/item/weapon/lighter/greyscale/Initialize() + . = ..() + add_atom_colour(color2hex(randomColor(1)), FIXED_COLOUR_PRIORITY) + update_icon() + +/obj/item/weapon/lighter/greyscale/update_icon() + cut_overlays() + var/mutable_appearance/base_overlay = mutable_appearance(icon,"[initial(icon_state)]_base") + base_overlay.appearance_flags = RESET_COLOR //the edging doesn't change color + if(lit) + base_overlay.icon_state = "[initial(icon_state)]_on" + add_overlay(base_overlay) + +/obj/item/weapon/lighter/greyscale/ignition_effect(atom/A, mob/user) + . = "After some fiddling, [user] manages to light [A] with [src]." + + /////////// //ROLLING// /////////// diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm index 86f9244130c..6cc72ca8d7b 100644 --- a/code/game/objects/items/weapons/dna_injector.dm +++ b/code/game/objects/items/weapons/dna_injector.dm @@ -50,9 +50,7 @@ M.dna.uni_identity = merge_text(M.dna.uni_identity, fields["UI"]) M.updateappearance(mutations_overlay_update=1) log_attack(log_msg) - else - to_chat(user, "It appears that [M] does not have compatible DNA.") - return + return TRUE /obj/item/weapon/dnainjector/attack(mob/target, mob/user) if(!user.IsAdvancedToolUser()) @@ -79,7 +77,9 @@ add_logs(user, target, "injected", src) - inject(target, user) //Now we actually do the heavy lifting. + if(!inject(target, user)) //Now we actually do the heavy lifting. + to_chat(user, "It appears that [target] does not have compatible DNA.") + used = 1 icon_state = "dnainjector0" desc += " This one is used up." diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm index 1989d15af13..008b39ea51d 100644 --- a/code/game/objects/items/weapons/grenades/grenade.dm +++ b/code/game/objects/items/weapons/grenades/grenade.dm @@ -48,23 +48,27 @@ /obj/item/weapon/grenade/attack_self(mob/user) if(!active) if(clown_check(user)) - to_chat(user, "You prime the [name]! [det_time/10] seconds!") - playsound(user.loc, 'sound/weapons/armbomb.ogg', 60, 1) - active = 1 - icon_state = initial(icon_state) + "_active" - add_fingerprint(user) - var/turf/bombturf = get_turf(src) - var/area/A = get_area(bombturf) - var/message = "[ADMIN_LOOKUPFLW(user)]) has primed a [name] for detonation at [ADMIN_COORDJMP(bombturf)]" - GLOB.bombers += message - message_admins(message) - log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] [COORD(bombturf)].") + preprime(user) if(iscarbon(user)) var/mob/living/carbon/C = user C.throw_mode_on() - spawn(det_time) - prime() +/obj/item/weapon/grenade/proc/preprime(mob/user) + if(user) + to_chat(user, "You prime the [name]! [det_time/10] seconds!") + playsound(loc, 'sound/weapons/armbomb.ogg', 60, 1) + active = TRUE + icon_state = initial(icon_state) + "_active" + add_fingerprint(user) + var/turf/bombturf = get_turf(src) + var/area/A = get_area(bombturf) + if(user) + var/message = "[ADMIN_LOOKUPFLW(user)]) has primed a [name] for detonation at [ADMIN_COORDJMP(bombturf)]" + GLOB.bombers += message + message_admins(message) + log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] [COORD(bombturf)].") + + addtimer(CALLBACK(src, .proc/prime), det_time) /obj/item/weapon/grenade/proc/prime() @@ -104,4 +108,4 @@ if(damage && attack_type == PROJECTILE_ATTACK && prob(15)) owner.visible_message("[attack_text] hits [owner]'s [src], setting it off! What a shot!") prime() - return 1 //It hit the grenade, not them \ No newline at end of file + return 1 //It hit the grenade, not them diff --git a/code/game/objects/items/weapons/grenades/plastic.dm b/code/game/objects/items/weapons/grenades/plastic.dm index 3118d731f22..21a71f371d6 100644 --- a/code/game/objects/items/weapons/grenades/plastic.dm +++ b/code/game/objects/items/weapons/grenades/plastic.dm @@ -18,6 +18,10 @@ plastic_overlay = mutable_appearance(icon, "[item_state]2") ..() +/obj/item/weapon/grenade/plastic/Initialize(mapload) + . = ..() + SET_SECONDARY_FLAG(src, NO_EMP_WIRES) + /obj/item/weapon/grenade/plastic/Destroy() qdel(nadeassembly) nadeassembly = null diff --git a/code/game/objects/items/weapons/pneumaticCannon.dm b/code/game/objects/items/weapons/pneumaticCannon.dm index 68015380983..bc26417b0ca 100644 --- a/code/game/objects/items/weapons/pneumaticCannon.dm +++ b/code/game/objects/items/weapons/pneumaticCannon.dm @@ -243,7 +243,7 @@ range_multiplier = 3 fire_mode = PCANNON_FIFO throw_amount = 1 - maxWeightClass = 100 //50 pies. :^) + maxWeightClass = 150 //50 pies. :^) clumsyCheck = FALSE /obj/item/weapon/pneumatic_cannon/pie/can_load_item(obj/item/I, mob/user) @@ -251,3 +251,22 @@ return ..() to_chat(user, "[src] only accepts pies!") return FALSE + +/obj/item/weapon/pneumatic_cannon/pie/selfcharge + automatic = TRUE + var/charge_amount = 1 + var/charge_ticks = 1 + var/charge_tick = 0 + maxWeightClass = 60 //20 pies. + +/obj/item/weapon/pneumatic_cannon/pie/selfcharge/Initialize() + . = ..() + START_PROCESSING(SSobj, src) + +/obj/item/weapon/pneumatic_cannon/pie/selfcharge/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/item/weapon/pneumatic_cannon/pie/selfcharge/process() + if(++charge_tick >= charge_ticks) + fill_with_type(/obj/item/weapon/reagent_containers/food/snacks/pie, charge_amount) diff --git a/code/game/objects/items/weapons/powerfist.dm b/code/game/objects/items/weapons/powerfist.dm index 1f5a2298644..7b26c58a5df 100644 --- a/code/game/objects/items/weapons/powerfist.dm +++ b/code/game/objects/items/weapons/powerfist.dm @@ -80,7 +80,7 @@ target.apply_damage(force * fisto_setting, BRUTE) target.visible_message("[user]'s powerfist lets out a loud hiss as they punch [target.name]!", \ "You cry out in pain as [user]'s punch flings you backwards!") - new /obj/effect/overlay/temp/kinetic_blast(target.loc) + new /obj/effect/temp_visual/kinetic_blast(target.loc) playsound(loc, 'sound/weapons/resonator_blast.ogg', 50, 1) playsound(loc, 'sound/weapons/genhit2.ogg', 50, 1) diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm index 94b0709ae20..b1301a3e8aa 100644 --- a/code/game/objects/items/weapons/storage/toolbox.dm +++ b/code/game/objects/items/weapons/storage/toolbox.dm @@ -21,8 +21,8 @@ if(has_latches) if(prob(10)) latches = "double_latch" - else if(prob(1)) - latches = "triple_latch" + if(prob(1)) + latches = "triple_latch" update_icon() /obj/item/weapon/storage/toolbox/update_icon() diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm old mode 100644 new mode 100755 index 9617f8820a5..f451c9b56cf --- a/code/game/objects/items/weapons/tanks/tank_types.dm +++ b/code/game/objects/items/weapons/tanks/tank_types.dm @@ -140,6 +140,8 @@ item_state = "plasmaman_tank_belt" slot_flags = SLOT_BELT force = 5 + volume = 3 + w_class = WEIGHT_CLASS_SMALL //thanks i forgot this /obj/item/weapon/tank/internals/plasmaman/belt/full/New() ..() diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index 389ae40e880..43e0de52a14 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -331,8 +331,8 @@ /obj/structure/falsewall/brass/New(loc) ..() var/turf/T = get_turf(src) - new /obj/effect/overlay/temp/ratvar/wall/false(T) - new /obj/effect/overlay/temp/ratvar/beam/falsewall(T) + new /obj/effect/temp_visual/ratvar/wall/false(T) + new /obj/effect/temp_visual/ratvar/beam/falsewall(T) change_construction_value(4) /obj/structure/falsewall/brass/Destroy() diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index 82378b094c3..05414f0a4d3 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -149,8 +149,8 @@ /obj/effect/mob_spawn/human/golem/attack_hand(mob/user) if(isgolem(user) && can_transfer) - var/transfer = alert("Transfer your soul to [src]? (Warning, your old body will die!)",,"Yes","No") - if(!transfer) + var/transfer_choice = alert("Transfer your soul to [src]? (Warning, your old body will die!)",,"Yes","No") + if(transfer_choice != "Yes") return log_game("[user.ckey] golem-swapped into [src]") user.visible_message("A faint light leaves [user], moving to [src] and animating it!","You leave your old body behind, and transfer into [src]!") diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 2dc159d4828..64d93e914e1 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -254,10 +254,10 @@ /obj/structure/grille/ratvar/New() ..() if(broken) - new /obj/effect/overlay/temp/ratvar/grille/broken(get_turf(src)) + new /obj/effect/temp_visual/ratvar/grille/broken(get_turf(src)) else - new /obj/effect/overlay/temp/ratvar/grille(get_turf(src)) - new /obj/effect/overlay/temp/ratvar/beam/grille(get_turf(src)) + new /obj/effect/temp_visual/ratvar/grille(get_turf(src)) + new /obj/effect/temp_visual/ratvar/beam/grille(get_turf(src)) /obj/structure/grille/ratvar/narsie_act() take_damage(rand(1, 3), BRUTE) diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index ba9e5f8a338..2f6b03bef16 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -102,8 +102,8 @@ /obj/structure/lattice/catwalk/clockwork/Initialize(mapload) ..() - new /obj/effect/overlay/temp/ratvar/floor/catwalk(loc) - new /obj/effect/overlay/temp/ratvar/beam/catwalk(loc) + new /obj/effect/temp_visual/ratvar/floor/catwalk(loc) + new /obj/effect/temp_visual/ratvar/beam/catwalk(loc) /obj/structure/lattice/catwalk/clockwork/ratvar_act() return diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index d5027a0c754..0c114180030 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -440,7 +440,7 @@ dir = FULLTILE_WINDOW_DIR max_integrity = 50 fulltile = 1 - flags = NONE + flags = PREVENT_CLICK_UNDER smooth = SMOOTH_TRUE canSmoothWith = list(/obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile,/obj/structure/window/reinforced/highpressure/fulltile, /obj/structure/window/reinforced/tinted/fulltile) glass_amount = 2 @@ -454,7 +454,7 @@ dir = FULLTILE_WINDOW_DIR max_integrity = 100 fulltile = 1 - flags = NONE + flags = PREVENT_CLICK_UNDER smooth = SMOOTH_TRUE canSmoothWith = list(/obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile,/obj/structure/window/reinforced/highpressure/fulltile, /obj/structure/window/reinforced/tinted/fulltile) @@ -467,7 +467,7 @@ dir = FULLTILE_WINDOW_DIR max_integrity = 1000 fulltile = 1 - flags = NONE + flags = PREVENT_CLICK_UNDER smooth = SMOOTH_TRUE canSmoothWith = list(/obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile,/obj/structure/window/reinforced/highpressure/fulltile, /obj/structure/window/reinforced/tinted/fulltile) level = 3 @@ -481,7 +481,7 @@ icon_state = "tinted_window" dir = FULLTILE_WINDOW_DIR fulltile = 1 - flags = NONE + flags = PREVENT_CLICK_UNDER smooth = SMOOTH_TRUE canSmoothWith = list(/obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile,/obj/structure/window/reinforced/highpressure/fulltile, /obj/structure/window/reinforced/tinted/fulltile/) level = 3 @@ -504,7 +504,7 @@ max_integrity = 100 wtype = "shuttle" fulltile = 1 - flags = NONE + flags = PREVENT_CLICK_UNDER reinf = 1 heat_resistance = 1600 armor = list(melee = 50, bullet = 0, laser = 0, energy = 0, bomb = 25, bio = 100, rad = 100, fire = 80, acid = 100) @@ -545,7 +545,7 @@ qdel(I) var/amount_of_gears = 2 if(fulltile) - new /obj/effect/overlay/temp/ratvar/window(get_turf(src)) + new /obj/effect/temp_visual/ratvar/window(get_turf(src)) amount_of_gears = 4 for(var/i in 1 to amount_of_gears) debris += new/obj/item/clockwork/alloy_shards/medium/gear_bit() @@ -553,7 +553,7 @@ /obj/structure/window/reinforced/clockwork/setDir(direct) if(!made_glow) - var/obj/effect/E = new /obj/effect/overlay/temp/ratvar/window/single(get_turf(src)) + var/obj/effect/E = new /obj/effect/temp_visual/ratvar/window/single(get_turf(src)) E.setDir(direct) made_glow = TRUE ..() @@ -583,7 +583,7 @@ smooth = SMOOTH_TRUE canSmoothWith = null fulltile = 1 - flags = NONE + flags = PREVENT_CLICK_UNDER dir = FULLTILE_WINDOW_DIR max_integrity = 120 level = 3 diff --git a/code/game/say.dm b/code/game/say.dm index 93351137d60..1aaa3d60413 100644 --- a/code/game/say.dm +++ b/code/game/say.dm @@ -143,7 +143,7 @@ GLOBAL_LIST_INIT(freqtospan, list( return "0" /atom/movable/proc/GetVoice() - return name + return "[src]" //Returns the atom's name, prepended with 'The' if it's not a proper noun /atom/movable/proc/IsVocal() return 1 diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm index 9144cbc8715..810a77fc423 100644 --- a/code/game/turfs/simulated/floor/misc_floor.dm +++ b/code/game/turfs/simulated/floor/misc_floor.dm @@ -133,8 +133,8 @@ /turf/open/floor/clockwork/Initialize() ..() - new /obj/effect/overlay/temp/ratvar/floor(src) - new /obj/effect/overlay/temp/ratvar/beam(src) + new /obj/effect/temp_visual/ratvar/floor(src) + new /obj/effect/temp_visual/ratvar/beam(src) realappearence = new /obj/effect/clockwork/overlay/floor(src) realappearence.linked = src change_construction_value(1) diff --git a/code/game/turfs/simulated/floor/reinf_floor.dm b/code/game/turfs/simulated/floor/reinf_floor.dm index 9c40b8276f2..544d6375716 100644 --- a/code/game/turfs/simulated/floor/reinf_floor.dm +++ b/code/game/turfs/simulated/floor/reinf_floor.dm @@ -108,7 +108,7 @@ /turf/open/floor/engine/cult/Initialize() ..() - new /obj/effect/overlay/temp/cult/turf/floor(src) + new /obj/effect/temp_visual/cult/turf/floor(src) realappearence = new /obj/effect/clockwork/overlay/floor/bloodcult(src) realappearence.linked = src diff --git a/code/game/turfs/simulated/wall/misc_walls.dm b/code/game/turfs/simulated/wall/misc_walls.dm index 9fa69fc6a79..21015e82d09 100644 --- a/code/game/turfs/simulated/wall/misc_walls.dm +++ b/code/game/turfs/simulated/wall/misc_walls.dm @@ -10,7 +10,7 @@ girder_type = /obj/structure/girder/cult /turf/closed/wall/mineral/cult/Initialize() - new /obj/effect/overlay/temp/cult/turf(src) + new /obj/effect/temp_visual/cult/turf(src) . = ..() /turf/closed/wall/mineral/cult/devastate_wall() @@ -39,11 +39,11 @@ desc = "A cold stone wall engraved with indecipherable symbols. Studying them causes your head to pound." /turf/closed/wall/mineral/cult/artificer/break_wall() - new /obj/effect/overlay/temp/cult/turf(get_turf(src)) + new /obj/effect/temp_visual/cult/turf(get_turf(src)) return null //excuse me we want no runed metal here /turf/closed/wall/mineral/cult/artificer/devastate_wall() - new /obj/effect/overlay/temp/cult/turf(get_turf(src)) + new /obj/effect/temp_visual/cult/turf(get_turf(src)) //Clockwork wall: Causes nearby tinkerer's caches to generate components. /turf/closed/wall/clockwork @@ -60,8 +60,8 @@ /turf/closed/wall/clockwork/Initialize() ..() - new /obj/effect/overlay/temp/ratvar/wall(src) - new /obj/effect/overlay/temp/ratvar/beam(src) + new /obj/effect/temp_visual/ratvar/wall(src) + new /obj/effect/temp_visual/ratvar/beam(src) realappearence = new /obj/effect/clockwork/overlay/wall(src) realappearence.linked = src change_construction_value(5) diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index a0940eded1f..1876d6f782a 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -42,7 +42,7 @@ if (opacity) has_opaque_atom = TRUE - + return INITIALIZE_HINT_NORMAL /turf/open/space/attack_ghost(mob/dead/observer/user) @@ -177,7 +177,7 @@ ChangeTurf(/turf/open/floor/plating) return TRUE return FALSE - + /turf/open/space/ReplaceWithLattice() var/dest_x = destination_x var/dest_y = destination_y @@ -186,4 +186,4 @@ destination_x = dest_x destination_y = dest_y destination_z = dest_z - + diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 96e3b9c5905..c4d35d7bd1c 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -92,39 +92,39 @@ LC.attackby(C,user) return coil.place_turf(src, user) - return 1 + return TRUE - return 0 + return FALSE /turf/CanPass(atom/movable/mover, turf/target, height=1.5) - if(!target) return 0 + if(!target) return FALSE if(istype(mover)) // turf/Enter(...) will perform more advanced checks return !density else // Now, doing more detailed checks for air movement and air group formation if(target.blocks_air||blocks_air) - return 0 + return FALSE for(var/obj/obstacle in src) if(!obstacle.CanPass(mover, target, height)) - return 0 + return FALSE for(var/obj/obstacle in target) if(!obstacle.CanPass(mover, src, height)) - return 0 + return FALSE - return 1 + return TRUE /turf/Enter(atom/movable/mover as mob|obj, atom/forget as mob|obj|turf|area) if (!mover) - return 1 + return TRUE // First, make sure it can leave its square if(isturf(mover.loc)) // Nothing but border objects stop you from leaving a tile, only one loop is needed for(var/obj/obstacle in mover.loc) if(!obstacle.CheckExit(mover, src) && obstacle != mover && obstacle != forget) mover.Bump(obstacle, 1) - return 0 + return FALSE var/list/large_dense = list() //Next, check objects to block entry that are on the border @@ -132,14 +132,14 @@ if(border_obstacle.flags & ON_BORDER) if(!border_obstacle.CanPass(mover, mover.loc, 1) && (forget != border_obstacle)) mover.Bump(border_obstacle, 1) - return 0 + return FALSE else large_dense += border_obstacle //Then, check the turf itself if (!src.CanPass(mover, src)) mover.Bump(src, 1) - return 0 + return FALSE //Finally, check objects/mobs to block entry that are not on the border var/atom/movable/tompost_bump @@ -151,8 +151,9 @@ top_layer = obstacle.layer if(tompost_bump) mover.Bump(tompost_bump,1) - return 0 - return 1 //Nothing found to block so return success! + return FALSE + + return TRUE //Nothing found to block so return success! /turf/Entered(atom/movable/AM) if(explosion_level && AM.ex_check(explosion_id)) @@ -185,7 +186,7 @@ O.make_unfrozen() /turf/proc/is_plasteel_floor() - return 0 + return FALSE /turf/proc/levelupdate() for(var/obj/O in src) @@ -303,7 +304,7 @@ if(src_object.contents.len) to_chat(usr, "You start dumping out the contents...") if(!do_after(usr,20,target=src_object)) - return 0 + return FALSE var/list/things = src_object.contents.Copy() var/datum/progressbar/progress = new(user, things.len, src) @@ -311,7 +312,7 @@ sleep(1) qdel(progress) - return 1 + return TRUE ////////////////////////////// //Distance procs @@ -325,7 +326,7 @@ // possible. It results in more efficient (CPU-wise) pathing // for bots and anything else that only moves in cardinal dirs. /turf/proc/Distance_cardinal(turf/T) - if(!src || !T) return 0 + if(!src || !T) return FALSE return abs(x - T.x) + abs(y - T.y) //////////////////////////////////////////////////// @@ -341,7 +342,7 @@ return(2) /turf/proc/can_have_cabling() - return 1 + return TRUE /turf/proc/can_lay_cable() return can_have_cabling() & !intact diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 954283d1183..3371914bb83 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -421,13 +421,18 @@ set desc="Restarts the world immediately" if (!usr.client.holder) return - var/confirm = alert("Restart the game world?", "Restart", "Yes", "Cancel") - if(confirm == "Cancel") - return - if(confirm == "Yes") - SSticker.delay_end = 0 + + var/list/options = list("Regular Restart", "Hard Restart (No Delay/Feeback Reason)", "Hardest Restart (No actions, just reboot)") + var result = input(usr, "Select reboot method", "World Reboot", options[1]) as null|anything in options + if(result) SSblackbox.add_details("admin_verb","Reboot World") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - world.Reboot("Initiated by [usr.client.holder.fakekey ? "Admin" : usr.key].", "end_error", "admin reboot - by [usr.key] [usr.client.holder.fakekey ? "(stealth)" : ""]", 10) + switch(result) + if("Regular Restart") + SSticker.Reboot("Initiated by [usr.client.holder.fakekey ? "Admin" : usr.key].", "end_error", "admin reboot - by [usr.key] [usr.client.holder.fakekey ? "(stealth)" : ""]", 10) + if("Hard Restart (No Delay, No Feeback Reason)") + world.Reboot() + if("Hardest Restart (No actions, just reboot)") + world.Reboot(fast_track = TRUE) /datum/admins/proc/end_round() set category = "Server" diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 728db7372cb..bbc65277118 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -78,7 +78,6 @@ GLOBAL_LIST_INIT(admin_verbs_fun, list( /client/proc/drop_dynex_bomb, /client/proc/cinematic, /client/proc/one_click_antag, - /client/proc/send_space_ninja, /client/proc/cmd_admin_add_freeform_ai_law, /client/proc/object_say, /client/proc/toggle_random_events, @@ -193,7 +192,6 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( /client/proc/get_dynex_power, /client/proc/set_dynex_scale, /client/proc/cinematic, - /client/proc/send_space_ninja, /client/proc/cmd_admin_add_freeform_ai_law, /client/proc/cmd_admin_create_centcom_report, /client/proc/cmd_change_command_name, diff --git a/code/modules/admin/fun_balloon.dm b/code/modules/admin/fun_balloon.dm index b886232e005..d288c634838 100644 --- a/code/modules/admin/fun_balloon.dm +++ b/code/modules/admin/fun_balloon.dm @@ -60,7 +60,7 @@ message_admins("[key_name_admin(ghost)] has taken control of ([key_name_admin(body)])") body.ghostize(0) body.key = ghost.key - new /obj/effect/overlay/temp/gravpush(get_turf(body)) + new /obj/effect/temp_visual/gravpush(get_turf(body)) /obj/effect/fun_balloon/sentience/emergency_shuttle name = "shuttle sentience fun balloon" @@ -79,7 +79,7 @@ /obj/effect/fun_balloon/scatter/effect() for(var/mob/living/M in range(effect_range, get_turf(src))) var/turf/T = find_safe_turf() - new /obj/effect/overlay/temp/gravpush(get_turf(M)) + new /obj/effect/temp_visual/gravpush(get_turf(M)) M.forceMove(T) to_chat(M, "Pop!") diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index d2127d71380..020d6db9220 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -442,7 +442,7 @@ dat += "" for(var/datum/gang/G in SSticker.mode.gangs) - dat += "
" + dat += "
[G.name] Gang: [G.points] Influence | [round((G.territory.len/GLOB.start_state.num_territories)*100, 1)]% Control
" for(var/datum/mind/N in G.bosses) var/mob/M = N.current if(!M) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 98c26857a25..9ca955feaa6 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -281,6 +281,11 @@ minor_announce("The emergency shuttle will reach its destination in [round(SSshuttle.emergency.timeLeft(600))] minutes.") message_admins("[key_name_admin(usr)] edited the Emergency Shuttle's timeleft to [timer] seconds.") href_list["secrets"] = "check_antagonist" + else if(href_list["trigger_centcom_recall"]) + if(!check_rights(R_ADMIN)) + return + + trigger_centcom_recall() else if(href_list["toggle_continuous"]) if(!check_rights(R_ADMIN)) @@ -1206,7 +1211,7 @@ message_admins("[key_name_admin(usr)] set the mode as [GLOB.master_mode].") to_chat(world, "The mode is now: [GLOB.master_mode]") Game() // updates the main game menu - world.save_mode(GLOB.master_mode) + SSticker.save_mode(GLOB.master_mode) .(href, list("c_mode"=1)) else if(href_list["f_secret2"]) @@ -1511,17 +1516,6 @@ usr.client.cmd_admin_animalize(M) - else if(href_list["gangpoints"]) - var/datum/gang/G = locate(href_list["gangpoints"]) in SSticker.mode.gangs - if(G) - var/newpoints = input("Set [G.name ] Gang's influence.","Set Influence",G.points) as null|num - if(!newpoints) - return - message_admins("[key_name_admin(usr)] changed the [G.name] Gang's influence from [G.points] to [newpoints].") - log_admin("[key_name(usr)] changed the [G.name] Gang's influence from [G.points] to [newpoints].") - G.points = newpoints - G.message_gangtools("Your gang now has [G.points] influence.") - else if(href_list["adminplayeropts"]) var/mob/M = locate(href_list["adminplayeropts"]) show_player_panel(M) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 1ee98d15557..f693bca7873 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -109,7 +109,11 @@ GLOBAL_PROTECT(AdminProcCallCount) return call(target, procname)(arglist(arguments)) /proc/IsAdminAdvancedProcCall() +#ifdef TESTING + return FALSE +#else return usr && usr.client && GLOB.AdminProcCaller == usr.client.ckey +#endif /client/proc/callproc_datum(datum/A as null|area|mob|obj|turf) set category = "Debug" diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm index e781473634c..eb4c3a5f10f 100644 --- a/code/modules/admin/verbs/playsound.dm +++ b/code/modules/admin/verbs/playsound.dm @@ -52,10 +52,7 @@ if(!check_rights(R_SOUNDS)) return - if(SSticker) - SSticker.round_end_sound = fcopy_rsc(S) - else - return + SSticker.SetRoundEndSound(S) log_admin("[key_name(src)] set the round end sound to [S]") message_admins("[key_name_admin(src)] set the round end sound to [S]") diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 22dfa9e5ee7..67951fc26ae 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -386,9 +386,8 @@ Traitors and the like can also be revived with the previous role mostly intact. for(var/obj/effect/landmark/L in GLOB.landmarks_list) if(L.name=="carpspawn") ninja_spawn += L - new_character.equip_space_ninja() - new_character.internal = new_character.s_store - new_character.update_internals_hud_icon(1) + var/datum/antagonist/ninja/ninjadatum = new_character.mind.has_antag_datum(ANTAG_DATUM_NINJA) + ninjadatum.equip_space_ninja() if(ninja_spawn.len) var/obj/effect/landmark/ninja_spawn_here = pick(ninja_spawn) new_character.loc = ninja_spawn_here.loc @@ -586,7 +585,7 @@ Traitors and the like can also be revived with the previous role mostly intact. empulse(O, heavy, light) log_admin("[key_name(usr)] created an EM Pulse ([heavy],[light]) at ([O.x],[O.y],[O.z])") - message_admins("[key_name_admin(usr)] created an EM PUlse ([heavy],[light]) at ([O.x],[O.y],[O.z])") + message_admins("[key_name_admin(usr)] created an EM Pulse ([heavy],[light]) at ([O.x],[O.y],[O.z])") SSblackbox.add_details("admin_verb","EM Pulse") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm index e816e883c9a..0e4fd0d7944 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -172,11 +172,11 @@ /obj/item/device/assembly/flash/cyborg/attack(mob/living/M, mob/user) ..() - new /obj/effect/overlay/temp/borgflash(get_turf(src)) + new /obj/effect/temp_visual/borgflash(get_turf(src)) /obj/item/device/assembly/flash/cyborg/attack_self(mob/user) ..() - new /obj/effect/overlay/temp/borgflash(get_turf(src)) + new /obj/effect/temp_visual/borgflash(get_turf(src)) /obj/item/device/assembly/flash/cyborg/attackby(obj/item/weapon/W, mob/user, params) return diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm index 93b9b6b3f96..b06c9a55793 100644 --- a/code/modules/awaymissions/capture_the_flag.dm +++ b/code/modules/awaymissions/capture_the_flag.dm @@ -433,7 +433,7 @@ /obj/item/projectile/beam/ctf/red icon_state = "laser" - impact_effect_type = /obj/effect/overlay/temp/impact_effect/red_laser + impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser // BLUE TEAM GUNS @@ -448,7 +448,7 @@ /obj/item/projectile/beam/ctf/blue icon_state = "bluelaser" - impact_effect_type = /obj/effect/overlay/temp/impact_effect/blue_laser + impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser /datum/outfit/ctf name = "CTF" diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 32cb9dfaa77..150c4b32eee 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -636,3 +636,7 @@ GLOBAL_LIST(external_rsc_urls) CRASH("change_view called without argument.") view = new_size + +/client/proc/AnnouncePR(announcement) + if(prefs && prefs.chat_toggles & CHAT_PULLR) + to_chat(src, announcement) \ No newline at end of file diff --git a/code/modules/clothing/outfits/ert.dm b/code/modules/clothing/outfits/ert.dm index b3f74b038fa..fccfe21589c 100644 --- a/code/modules/clothing/outfits/ert.dm +++ b/code/modules/clothing/outfits/ert.dm @@ -65,9 +65,8 @@ backpack_contents = list(/obj/item/weapon/storage/box/engineer=1,\ /obj/item/weapon/storage/box/handcuffs=1,\ /obj/item/clothing/mask/gas/sechailer=1,\ - /obj/item/weapon/gun/energy/e_gun=1,\ - /obj/item/weapon/melee/baton/loaded=1,\ - /obj/item/weapon/gun/energy/e_gun/advtaser=1) + /obj/item/weapon/gun/energy/e_gun/stun=1,\ + /obj/item/weapon/melee/baton/loaded=1) /datum/outfit/ert/security/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) ..() diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 0a8be08e809..0f0baa51258 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -211,6 +211,14 @@ item_state = "black_suit_fem" item_color = "black_suit_fem" +/obj/item/clothing/under/suit_jacket/green + name = "green suit" + desc = "A green suit and yellow necktie. Baller." + icon_state = "green_suit" + item_state = "dg_suit" + item_color = "green_suit" + can_adjust = 0 + /obj/item/clothing/under/suit_jacket/red name = "red suit" desc = "A red suit and blue tie. Somewhat formal." diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index b43bf3fe3a8..0f5cdd3020e 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -444,7 +444,7 @@ /datum/spacevine_controller/Topic(href, href_list) if(..() || !check_rights(R_ADMIN, FALSE)) return - + if(href_list["purge_vines"]) if(alert(usr, "Are you sure you want to delete this spacevine cluster?", "Delete Vines", "Yes", "No") != "Yes") return @@ -476,6 +476,7 @@ for(var/datum/spacevine_mutation/SM in SV.mutations) SM.on_birth(SV) + location.Entered(SV) /datum/spacevine_controller/proc/VineDestroyed(obj/structure/spacevine/S) S.master = null diff --git a/code/modules/fields/fields.dm b/code/modules/fields/fields.dm new file mode 100644 index 00000000000..4b083d7e026 --- /dev/null +++ b/code/modules/fields/fields.dm @@ -0,0 +1,309 @@ + +//Movable and easily code-modified fields! Allows for custom AOE effects that affect movement and anything inside of them, and can do custom turf effects! +//Supports automatic recalculation/reset on movement. +//If there's any way to make this less CPU intensive than I've managed, gimme a call or do it yourself! - kevinz000 + +//Field shapes +#define FIELD_NO_SHAPE 0 //Does not update turfs automatically +#define FIELD_SHAPE_RADIUS_SQUARE 1 //Uses current_range and square_depth_up/down +#define FIELD_SHAPE_CUSTOM_SQUARE 2 //Uses square_height and square_width and square_depth_up/down + +//Proc to make fields. make_field(field_type, field_params_in_associative_list) +/proc/make_field(field_type, list/field_params, override_checks = FALSE, start_field = TRUE) + var/datum/proximity_monitor/advanced/F = new field_type() + if(!F.assume_params(field_params) && !override_checks) + QDEL_NULL(F) + if(!F.check_variables() && !override_checks) + QDEL_NULL(F) + if(start_field && (F || override_checks)) + F.Initialize() + return F + +/datum/proximity_monitor/advanced + var/name = "\improper Energy Field" + //Field setup specifications + var/field_shape = FIELD_NO_SHAPE + var/square_height = 0 + var/square_width = 0 + var/square_depth_up = 0 + var/square_depth_down = 0 + //Processing + var/requires_processing = FALSE + var/process_inner_turfs = FALSE //Don't do this unless it's absolutely necessary + var/process_edge_turfs = FALSE //Don't do this either unless it's absolutely necessary, you can just track what things are inside manually or on the initial setup. + var/setup_edge_turfs = FALSE //Setup edge turfs/all field turfs. Set either or both to ON when you need it, it's defaulting to off unless you do to save CPU. + var/setup_field_turfs = FALSE + + var/list/turf/field_turfs = list() + var/list/turf/edge_turfs = list() + var/list/turf/field_turfs_new = list() + var/list/turf/edge_turfs_new = list() + +/datum/proximity_monitor/advanced/New() + SSfields.register_new_field(src) + +/datum/proximity_monitor/advanced/Destroy() + SSfields.unregister_field(src) + full_cleanup() + return ..() + +/datum/proximity_monitor/advanced/proc/assume_params(list/field_params) + var/pass_check = TRUE + for(var/param in field_params) + if(vars[param] || isnull(vars[param]) || (param in vars)) + vars[param] = field_params[param] + else + pass_check = FALSE + return pass_check + +/datum/proximity_monitor/advanced/proc/check_variables() + var/pass = TRUE + if(field_shape == FIELD_NO_SHAPE) //If you're going to make a manually updated field you shouldn't be using automatic checks so don't. + pass = FALSE + if(current_range < 0 || square_height < 0 || square_width < 0 || square_depth_up < 0 || square_depth_down < 0) + pass = FALSE + if(!istype(host)) + pass = FALSE + return pass + +/datum/proximity_monitor/advanced/process() + if(process_inner_turfs) + for(var/turf/T in field_turfs) + process_inner_turf(T) + CHECK_TICK //Really crappy lagchecks, needs improvement once someone starts using processed fields. + if(process_edge_turfs) + for(var/turf/T in edge_turfs) + process_edge_turf(T) + CHECK_TICK //Same here. + +/datum/proximity_monitor/advanced/proc/process_inner_turf(turf/T) + +/datum/proximity_monitor/advanced/proc/process_edge_turf(turf/T) + +/datum/proximity_monitor/advanced/proc/Initialize() + setup_field() + post_setup_field() + +/datum/proximity_monitor/advanced/proc/full_cleanup() //Full cleanup for when you change something that would require complete resetting. + for(var/turf/T in edge_turfs) + cleanup_edge_turf(T) + for(var/turf/T in field_turfs) + cleanup_field_turf(T) + +/datum/proximity_monitor/advanced/proc/recalculate_field(ignore_movement_check = FALSE) //Call every time the field moves (done automatically if you use update_center) or a setup specification is changed. + if(!(ignore_movement_check || ((host.loc != last_host_loc) && (field_shape != FIELD_NO_SHAPE)))) + return + update_new_turfs() + var/list/turf/needs_setup = field_turfs_new.Copy() + if(setup_field_turfs) + for(var/turf/T in field_turfs) + if(!(T in needs_setup)) + cleanup_field_turf(T) + else + needs_setup -= T + CHECK_TICK + for(var/turf/T in needs_setup) + setup_field_turf(T) + CHECK_TICK + if(setup_edge_turfs) + for(var/turf/T in edge_turfs) + cleanup_edge_turf(T) + CHECK_TICK + for(var/turf/T in edge_turfs_new) + setup_edge_turf(T) + CHECK_TICK + +/datum/proximity_monitor/advanced/proc/field_turf_canpass(atom/movable/AM, obj/effect/abstract/proximity_checker/advanced/field_turf/F, turf/entering) + return TRUE + +/datum/proximity_monitor/advanced/proc/field_turf_uncross(atom/movable/AM, obj/effect/abstract/proximity_checker/advanced/field_turf/F) + return TRUE + +/datum/proximity_monitor/advanced/proc/field_turf_crossed(atom/movable/AM, obj/effect/abstract/proximity_checker/advanced/field_turf/F) + return TRUE + +/datum/proximity_monitor/advanced/proc/field_turf_uncrossed(atom/movable/AM, obj/effect/abstract/proximity_checker/advanced/field_turf/F) + return TRUE + +/datum/proximity_monitor/advanced/proc/field_edge_canpass(atom/movable/AM, obj/effect/abstract/proximity_checker/advanced/field_edge/F, turf/entering) + return TRUE + +/datum/proximity_monitor/advanced/proc/field_edge_uncross(atom/movable/AM, obj/effect/abstract/proximity_checker/advanced/field_edge/F) + return TRUE + +/datum/proximity_monitor/advanced/proc/field_edge_crossed(atom/movable/AM, obj/effect/abstract/proximity_checker/advanced/field_edge/F) + return TRUE + +/datum/proximity_monitor/advanced/proc/field_edge_uncrossed(atom/movable/AM, obj/effect/abstract/proximity_checker/advanced/field_edge/F) + return TRUE + +/datum/proximity_monitor/advanced/HandleMove() + var/atom/_host = host + var/atom/new_host_loc = _host.loc + if(last_host_loc != new_host_loc) + recalculate_field() + +/datum/proximity_monitor/advanced/proc/post_setup_field() + +/datum/proximity_monitor/advanced/proc/setup_field() + update_new_turfs() + if(setup_field_turfs) + for(var/turf/T in field_turfs_new) + setup_field_turf(T) + CHECK_TICK + if(setup_edge_turfs) + for(var/turf/T in edge_turfs_new) + setup_edge_turf(T) + CHECK_TICK + +/datum/proximity_monitor/advanced/proc/cleanup_field_turf(turf/T) + qdel(field_turfs[T]) + field_turfs -= T + +/datum/proximity_monitor/advanced/proc/cleanup_edge_turf(turf/T) + qdel(edge_turfs[T]) + edge_turfs -= T + +/datum/proximity_monitor/advanced/proc/setup_field_turf(turf/T) + field_turfs[T] = new /obj/effect/abstract/proximity_checker/advanced/field_turf(T, src) + +/datum/proximity_monitor/advanced/proc/setup_edge_turf(turf/T) + edge_turfs[T] = new /obj/effect/abstract/proximity_checker/advanced/field_edge(T, src) + +/datum/proximity_monitor/advanced/proc/update_new_turfs() + if(!istype(host)) + return FALSE + last_host_loc = host.loc + var/turf/center = get_turf(host) + field_turfs_new = list() + edge_turfs_new = list() + switch(field_shape) + if(FIELD_NO_SHAPE) + return FALSE + if(FIELD_SHAPE_RADIUS_SQUARE) + for(var/turf/T in block(locate(center.x-current_range,center.y-current_range,center.z-square_depth_down),locate(center.x+current_range, center.y+current_range,center.z+square_depth_up))) + field_turfs_new += T + edge_turfs_new = field_turfs_new.Copy() + if(current_range >= 1) + var/list/turf/center_turfs = list() + for(var/turf/T in block(locate(center.x-current_range+1,center.y-current_range+1,center.z-square_depth_down),locate(center.x+current_range-1, center.y+current_range-1,center.z+square_depth_up))) + center_turfs += T + for(var/turf/T in center_turfs) + edge_turfs_new -= T + if(FIELD_SHAPE_CUSTOM_SQUARE) + for(var/turf/T in block(locate(center.x-square_width,center.y-square_height,center.z-square_depth_down),locate(center.x+square_width, center.y+square_height,center.z+square_depth_up))) + field_turfs_new += T + edge_turfs_new = field_turfs_new.Copy() + if(square_height >= 1 && square_width >= 1) + var/list/turf/center_turfs = list() + for(var/turf/T in block(locate(center.x-square_width+1,center.y-square_height+1,center.z-square_depth_down),locate(center.x+square_width-1, center.y+square_height-1,center.z+square_depth_up))) + center_turfs += T + for(var/turf/T in center_turfs) + edge_turfs_new -= T + +//Gets edge direction/corner, only works with square radius/WDH fields! +/datum/proximity_monitor/advanced/proc/get_edgeturf_direction(turf/T, turf/center_override = null) + var/turf/checking_from = get_turf(host) + if(istype(center_override)) + checking_from = center_override + if(field_shape != FIELD_SHAPE_RADIUS_SQUARE && field_shape != FIELD_SHAPE_CUSTOM_SQUARE) + return + if(!(T in edge_turfs)) + return + switch(field_shape) + if(FIELD_SHAPE_RADIUS_SQUARE) + if(((T.x == (checking_from.x + current_range)) || (T.x == (checking_from.x - current_range))) && ((T.y == (checking_from.y + current_range)) || (T.y == (checking_from.y - current_range)))) + return get_dir(checking_from, T) + if(T.x == (checking_from.x + current_range)) + return EAST + if(T.x == (checking_from.x - current_range)) + return WEST + if(T.y == (checking_from.y - current_range)) + return SOUTH + if(T.y == (checking_from.y + current_range)) + return NORTH + if(FIELD_SHAPE_CUSTOM_SQUARE) + if(((T.x == (checking_from.x + square_width)) || (T.x == (checking_from.x - square_width))) && ((T.y == (checking_from.y + square_height)) || (T.y == (checking_from.y - square_height)))) + return get_dir(checking_from, T) + if(T.x == (checking_from.x + square_width)) + return EAST + if(T.x == (checking_from.x - square_width)) + return WEST + if(T.y == (checking_from.y - square_height)) + return SOUTH + if(T.y == (checking_from.y + square_height)) + return NORTH + +//DEBUG FIELDS +/datum/proximity_monitor/advanced/debug + name = "\improper Color Matrix Field" + field_shape = FIELD_SHAPE_RADIUS_SQUARE + current_range = 5 + var/set_fieldturf_color = "#aaffff" + var/set_edgeturf_color = "#ffaaff" + setup_field_turfs = TRUE + setup_edge_turfs = TRUE + +/datum/proximity_monitor/advanced/debug/recalculate_field() + ..() + +/datum/proximity_monitor/advanced/debug/post_setup_field() + ..() + +/datum/proximity_monitor/advanced/debug/setup_edge_turf(turf/T) + T.color = set_edgeturf_color + ..() + +/datum/proximity_monitor/advanced/debug/cleanup_edge_turf(turf/T) + T.color = initial(T.color) + ..() + if(T in field_turfs) + T.color = set_fieldturf_color + +/datum/proximity_monitor/advanced/debug/setup_field_turf(turf/T) + T.color = set_fieldturf_color + ..() + +/datum/proximity_monitor/advanced/debug/cleanup_field_turf(turf/T) + T.color = initial(T.color) + ..() + +//DEBUG FIELD ITEM +/obj/item/device/multitool/field_debug + name = "strange multitool" + desc = "Seems to project a colored field!" + var/list/field_params = list("field_shape" = FIELD_SHAPE_RADIUS_SQUARE, "current_range" = 5, "set_fieldturf_color" = "#aaffff", "set_edgeturf_color" = "#ffaaff") + var/field_type = /datum/proximity_monitor/advanced/debug + var/operating = FALSE + var/datum/proximity_monitor/advanced/current = null + +/obj/item/device/multitool/field_debug/New() + START_PROCESSING(SSobj, src) + ..() + +/obj/item/device/multitool/field_debug/Destroy() + STOP_PROCESSING(SSobj, src) + QDEL_NULL(current) + ..() + +/obj/item/device/multitool/field_debug/proc/setup_debug_field() + var/list/new_params = field_params.Copy() + new_params["host"] = src + current = make_field(field_type, new_params) + +/obj/item/device/multitool/field_debug/attack_self(mob/user) + operating = !operating + to_chat(user, "You turn the [src] [operating? "on":"off"].") + if(!istype(current) && operating) + setup_debug_field() + else if(!operating) + QDEL_NULL(current) + +/obj/item/device/multitool/field_debug/on_mob_move() + check_turf(get_turf(src)) + +/obj/item/device/multitool/field_debug/process() + check_turf(get_turf(src)) + +/obj/item/device/multitool/field_debug/proc/check_turf(turf/T) + current.HandleMove() diff --git a/code/modules/fields/peaceborg_dampener.dm b/code/modules/fields/peaceborg_dampener.dm new file mode 100644 index 00000000000..bcf8a885851 --- /dev/null +++ b/code/modules/fields/peaceborg_dampener.dm @@ -0,0 +1,106 @@ + +//Projectile dampening field that slows projectiles and lowers their damage for an energy cost deducted every 1/5 second. +//Only use square radius for this! +/datum/proximity_monitor/advanced/peaceborg_dampener + name = "\improper Hyperkinetic Dampener Field" + requires_processing = TRUE + setup_edge_turfs = TRUE + setup_field_turfs = TRUE + field_shape = FIELD_SHAPE_RADIUS_SQUARE + var/static/image/edgeturf_south = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_south") + var/static/image/edgeturf_north = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_north") + var/static/image/edgeturf_west = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_west") + var/static/image/edgeturf_east = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_east") + var/static/image/northwest_corner = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_northwest") + var/static/image/southwest_corner = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_southwest") + var/static/image/northeast_corner = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_northeast") + var/static/image/southeast_corner = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_southeast") + var/obj/item/borg/projectile_dampen/projector = null + var/list/obj/item/projectile/tracked + var/list/obj/item/projectile/staging + +/datum/proximity_monitor/advanced/peaceborg_dampener/New() + tracked = list() + staging = list() + ..() + +/datum/proximity_monitor/advanced/peaceborg_dampener/process() + if(!istype(projector)) + qdel(src) + var/list/ranged = list() + for(var/obj/item/projectile/P in range(current_range, get_turf(host))) + ranged += P + for(var/obj/item/projectile/P in tracked) + if(!(P in ranged) || !P.loc) + release_projectile(P) + for(var/mob/living/silicon/robot/R in range(current_range, get_turf(host))) + if(R.has_buckled_mobs()) + for(var/mob/living/L in R.buckled_mobs) + L.visible_message("[L] is knocked off of [R] by the charge in [R]'s chassis induced by [name]!") //I know it's bad. + L.Weaken(3) + R.unbuckle_mob(L) + do_sparks(5, 0, L) + ..() + +/datum/proximity_monitor/advanced/peaceborg_dampener/setup_edge_turf(turf/T) + ..() + var/image/I = get_edgeturf_overlay(get_edgeturf_direction(T)) + var/obj/effect/abstract/proximity_checker/advanced/F = edge_turfs[T] + F.appearance = I.appearance + F.invisibility = 0 + F.layer = 5 + +/datum/proximity_monitor/advanced/peaceborg_dampener/cleanup_edge_turf(turf/T) + ..() + +/datum/proximity_monitor/advanced/peaceborg_dampener/proc/get_edgeturf_overlay(direction) + switch(direction) + if(NORTH) + return edgeturf_north + if(SOUTH) + return edgeturf_south + if(EAST) + return edgeturf_east + if(WEST) + return edgeturf_west + if(NORTHEAST) + return northeast_corner + if(NORTHWEST) + return northwest_corner + if(SOUTHEAST) + return southeast_corner + if(SOUTHWEST) + return southwest_corner + +/datum/proximity_monitor/advanced/peaceborg_dampener/proc/capture_projectile(obj/item/projectile/P, track_projectile = TRUE) + if(P in tracked) + return + projector.dampen_projectile(P, track_projectile) + if(track_projectile) + tracked += P + +/datum/proximity_monitor/advanced/peaceborg_dampener/proc/release_projectile(obj/item/projectile/P) + projector.restore_projectile(P) + tracked -= P + +/datum/proximity_monitor/advanced/peaceborg_dampener/field_edge_uncrossed(atom/movable/AM, obj/effect/abstract/proximity_checker/advanced/field_edge/F) + if(!is_turf_in_field(get_turf(AM), src)) + if(istype(AM, /obj/item/projectile)) + if(AM in tracked) + release_projectile(AM) + else + capture_projectile(AM, FALSE) + return ..() + +/datum/proximity_monitor/advanced/peaceborg_dampener/field_edge_crossed(atom/movable/AM, obj/effect/abstract/proximity_checker/advanced/field_edge/F) + if(istype(AM, /obj/item/projectile) && !(AM in tracked) && staging[AM] && !is_turf_in_field(staging[AM], src)) + capture_projectile(AM) + staging -= AM + return ..() + +/datum/proximity_monitor/advanced/peaceborg_dampener/field_edge_canpass(atom/movable/AM, obj/effect/abstract/proximity_checker/advanced/field_edge/F, turf/entering) + if(istype(AM, /obj/item/projectile)) + staging[AM] = get_turf(AM) + . = ..() + if(!.) + staging -= AM //This one ain't goin' through. diff --git a/code/modules/fields/turf_objects.dm b/code/modules/fields/turf_objects.dm new file mode 100644 index 00000000000..683fa67c962 --- /dev/null +++ b/code/modules/fields/turf_objects.dm @@ -0,0 +1,76 @@ + +/obj/effect/abstract/proximity_checker/advanced + name = "field" + desc = "Why can you see energy fields?!" + icon = null + icon_state = null + alpha = 0 + invisibility = INVISIBILITY_ABSTRACT + flags = ABSTRACT|ON_BORDER + var/datum/proximity_monitor/advanced/parent = null + +/obj/effect/abstract/proximity_checker/advanced/Initialize(mapload, _monitor) + if(_monitor) + parent = _monitor + return ..() + +/obj/effect/abstract/proximity_checker/advanced/center + name = "field anchor" + desc = "No." + +/obj/effect/abstract/proximity_checker/advanced/field_turf + name = "energy field" + desc = "Get off my turf!" + +/obj/effect/abstract/proximity_checker/advanced/field_turf/CanPass(atom/movable/AM, turf/target, height) + if(parent) + return parent.field_turf_canpass(AM, src, target) + return TRUE + +/obj/effect/abstract/proximity_checker/advanced/field_turf/Crossed(atom/movable/AM) + if(parent) + return parent.field_turf_crossed(AM, src) + return TRUE + +/obj/effect/abstract/proximity_checker/advanced/field_turf/Uncross(atom/movable/AM) + if(parent) + return parent.field_turf_uncross(AM, src) + return TRUE + +/obj/effect/abstract/proximity_checker/advanced/field_turf/Uncrossed(atom/movable/AM) + if(parent) + return parent.field_turf_uncrossed(AM, src) + return TRUE + +/obj/effect/abstract/proximity_checker/advanced/field_edge + name = "energy field edge" + desc = "Edgy description here." + +/obj/effect/abstract/proximity_checker/advanced/field_edge/CanPass(atom/movable/AM, turf/target, height) + if(parent) + return parent.field_edge_canpass(AM, src, target) + return TRUE + +/obj/effect/abstract/proximity_checker/advanced/field_edge/Crossed(atom/movable/AM) + if(parent) + return parent.field_edge_crossed(AM, src) + return TRUE + +/obj/effect/abstract/proximity_checker/advanced/field_edge/Uncross(atom/movable/AM) + if(parent) + return parent.field_edge_uncross(AM, src) + return TRUE + +/obj/effect/abstract/proximity_checker/advanced/field_edge/Uncrossed(atom/movable/AM) + if(parent) + return parent.field_edge_uncrossed(AM, src) + return TRUE + +/proc/is_turf_in_field(turf/T, datum/proximity_monitor/advanced/F) //Looking for ways to optimize this! + for(var/obj/effect/abstract/proximity_checker/advanced/O in T) + if(istype(O, /obj/effect/abstract/proximity_checker/advanced/field_edge)) + if(O.parent == F) + return FIELD_EDGE + if(O.parent == F) + return FIELD_TURF + return NO_FIELD diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm index 3a6c2d91f66..7a1682aedd0 100644 --- a/code/modules/food_and_drinks/food/customizables.dm +++ b/code/modules/food_and_drinks/food/customizables.dm @@ -135,7 +135,6 @@ /obj/item/weapon/reagent_containers/food/snacks/customizable/initialize_slice(obj/item/weapon/reagent_containers/food/snacks/slice, reagents_per_slice) ..() - slice.name = "[customname] [initial(slice.name)]" slice.filling_color = filling_color slice.update_overlays(src) diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index 148541922ff..95d3a7993b9 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -215,8 +215,9 @@ /obj/item/weapon/reagent_containers/food/snacks/proc/initialize_slice(obj/item/weapon/reagent_containers/food/snacks/slice, reagents_per_slice) slice.create_reagents(slice.volume) reagents.trans_to(slice,reagents_per_slice) - if( name != initial(name) || desc != initial(desc) ) - slice.name = "slice of [src]" + if(name != initial(name)) + slice.name = "slice of [name]" + if(desc != initial(desc)) slice.desc = "[desc]" /obj/item/weapon/reagent_containers/food/snacks/proc/generate_trash(atom/location) diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm index 81e36923768..f4ffb4123a0 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm @@ -174,7 +174,6 @@ var/mob/living/carbon/human/gibee = occupant sourcejob = gibee.job var/sourcenutriment = mob_occupant.nutrition / 15 - var/sourcetotalreagents = mob_occupant.reagents.total_volume var/gibtype = /obj/effect/decal/cleanable/blood/gibs var/typeofmeat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human var/typeofskin = /obj/item/stack/sheet/animalhide/human @@ -207,7 +206,6 @@ newmeat.reagents.add_reagent ("nutriment", sourcenutriment / meat_produced) // Thehehe. Fat guys go first if(sourcejob) newmeat.subjectjob = sourcejob - src.occupant.reagents.trans_to (newmeat, round (sourcetotalreagents / meat_produced, 1)) // Transfer all the reagents from the allmeat[i] = newmeat allskin = newskin diff --git a/code/modules/language/codespeak.dm b/code/modules/language/codespeak.dm new file mode 100644 index 00000000000..35fc6e0aa76 --- /dev/null +++ b/code/modules/language/codespeak.dm @@ -0,0 +1,83 @@ +/datum/language/codespeak + name = "Codespeak" + desc = "Syndicate operatives can use a series of codewords to convey complex information, while sounding like random concepts and drinks to anyone listening in." + key = "t" + default_priority = 0 + flags = TONGUELESS_SPEECH | LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD + icon_state = "codespeak" + +/datum/language/codespeak/scramble(input) + var/lookup = check_cache(input) + if(lookup) + return lookup + + . = "" + var/list/words = list() + while(length(.) < length(input)) + words += generate_code_phrase(return_list=TRUE) + . = jointext(words, ", ") + + . = capitalize(.) + + var/input_ending = copytext(input, length(input)) + + var/static/list/endings + if(!endings) + endings = list("!", "?", ".") + + if(input_ending in endings) + . += input_ending + + add_to_cache(input, .) + +/obj/item/weapon/codespeak_manual + name = "codespeak manual" + desc = "The book's cover reads: \"Codespeak(tm) - Secure your communication with metaphors so elaborate, they seem randomly generated!\"" + icon = 'icons/obj/library.dmi' + icon_state = "book2" + var/charges = 1 + +/obj/item/weapon/codespeak_manual/attack_self(mob/living/user) + if(!isliving(user)) + return + + if(user.has_language(/datum/language/codespeak)) + to_chat(user, "You start skimming through [src], but you already know Codespeak.") + return + + to_chat(user, "You start skimming through [src], and suddenly your mind is filled with codewords and responses.") + user.grant_language(/datum/language/codespeak) + + use_charge(user) + +/obj/item/weapon/codespeak_manual/attack(mob/living/M, mob/living/user) + if(!istype(M) || !istype(user)) + return + if(M == user) + attack_self(user) + return + + playsound(loc, "punch", 25, 1, -1) + + if(M.stat == DEAD) + M.visible_message("[user] smacks [M]'s lifeless corpse with [src].", "[user] smacks your lifeless corpse with [src].", "You hear smacking.") + else if(M.has_language(/datum/language/codespeak)) + M.visible_message("[user] beats [M] over the head with [src]!", "[user] beats you over the head with [src]!", "You hear smacking.") + else + M.visible_message("[user] teaches [M] by beating them over the head with [src]!", "As [user] hits you with [src], codewords and responses flow through your mind.", "You hear smacking.") + M.grant_language(/datum/language/codespeak) + use_charge(user) + +/obj/item/weapon/codespeak_manual/proc/use_charge(mob/user) + charges-- + if(!charges) + var/turf/T = get_turf(src) + T.visible_message("The cover and contents of [src] start shifting and changing!") + + qdel(src) + var/obj/item/weapon/book/manual/random/book = new(T) + user.put_in_active_hand(book) + +/obj/item/weapon/codespeak_manual/unlimited + name = "deluxe codespeak manual" + charges = INFINITY diff --git a/code/modules/language/language.dm b/code/modules/language/language.dm index 55a57de9941..7e7e5bc20d2 100644 --- a/code/modules/language/language.dm +++ b/code/modules/language/language.dm @@ -56,16 +56,27 @@ return "[trim(full_name)]" +/datum/language/proc/check_cache(input) + var/lookup = scramble_cache[input] + if(lookup) + scramble_cache -= input + scramble_cache[input] = lookup + . = lookup + +/datum/language/proc/add_to_cache(input, scrambled_text) + // Add it to cache, cutting old entries if the list is too long + scramble_cache[input] = scrambled_text + if(scramble_cache.len > SCRAMBLE_CACHE_LEN) + scramble_cache.Cut(1, scramble_cache.len-SCRAMBLE_CACHE_LEN-1) + /datum/language/proc/scramble(input) if(!syllables || !syllables.len) return stars(input) // If the input is cached already, move it to the end of the cache and return it - var/lookup = scramble_cache[input] + var/lookup = check_cache(input) if(lookup) - scramble_cache -= input - scramble_cache[input] = lookup return lookup var/input_size = length(input) @@ -93,10 +104,7 @@ if(input_ending in list("!","?",".")) scrambled_text += input_ending - // Add it to cache, cutting old entries if the list is too long - scramble_cache[input] = scrambled_text - if(scramble_cache.len > SCRAMBLE_CACHE_LEN) - scramble_cache.Cut(1, scramble_cache.len-SCRAMBLE_CACHE_LEN-1) + add_to_cache(input, scrambled_text) return scrambled_text diff --git a/code/modules/language/language_holder.dm b/code/modules/language/language_holder.dm index 580ca9294a7..3973893b8f1 100644 --- a/code/modules/language/language_holder.dm +++ b/code/modules/language/language_holder.dm @@ -64,6 +64,24 @@ return LANGUAGE_SHADOWED return FALSE +/datum/language_holder/proc/copy_known_languages_from(thing, replace=FALSE) + var/datum/language_holder/other + if(istype(thing, /datum/language_holder)) + other = thing + else if(istype(thing, /atom/movable)) + var/atom/movable/AM = thing + other = AM.get_language_holder() + else if(istype(thing, /datum/mind)) + var/datum/mind/M = thing + other = M.get_language_holder() + + if(replace) + src.remove_all_languages() + + for(var/l in other.languages) + src.grant_language(l) + + /datum/language_holder/proc/open_language_menu(mob/user) if(!language_menu) language_menu = new(src) diff --git a/code/modules/mining/aux_base.dm b/code/modules/mining/aux_base.dm index 8c2d1ca2818..0811c0a8d9e 100644 --- a/code/modules/mining/aux_base.dm +++ b/code/modules/mining/aux_base.dm @@ -2,7 +2,8 @@ #define BAD_ZLEVEL 1 #define BAD_AREA 2 -#define ZONE_SET 3 +#define BAD_COORDS 3 +#define ZONE_SET 4 /area/shuttle/auxillary_base name = "Auxillary Base" @@ -149,6 +150,9 @@ interface with the mining shuttle at the landing site if a mobile beacon is also if(T.z != ZLEVEL_MINING) return BAD_ZLEVEL var/colony_radius = max(base_dock.width, base_dock.height)*0.5 + if(T.x - colony_radius < 1 || T.x + colony_radius >= world.maxx || T.y - colony_radius < 1 || T.y + colony_radius >= world.maxx) + return BAD_COORDS //Avoid dropping the base too close to map boundaries, as it results in parts of it being left in space + var/list/area_counter = get_areas_in_range(colony_radius, T) if(area_counter.len > 1) //Avoid smashing ruins unless you are inside a really big one return BAD_AREA @@ -195,6 +199,7 @@ interface with the mining shuttle at the landing site if a mobile beacon is also if(!do_after(user, 50, target = user)) //You get a few seconds to cancel if you do not want to drop there. setting = FALSE return + setting = FALSE var/turf/T = get_turf(user) var/obj/machinery/computer/auxillary_base/AB @@ -212,6 +217,8 @@ interface with the mining shuttle at the landing site if a mobile beacon is also to_chat(user, "This uplink can only be used in a designed mining zone.") if(BAD_AREA) to_chat(user, "Unable to acquire a targeting lock. Find an area clear of stuctures or entirely within one.") + if(BAD_COORDS) + to_chat(user, "Location is too close to the edge of the station's scanning range. Move several paces away and try again.") if(ZONE_SET) qdel(src) @@ -347,4 +354,5 @@ obj/docking_port/stationary/public_mining_dock/onShuttleMove() #undef BAD_ZLEVEL #undef BAD_AREA +#undef BAD_COORDS #undef ZONE_SET \ No newline at end of file diff --git a/code/modules/mining/equipment.dm b/code/modules/mining/equipment.dm index dd8766bdc9a..43305ef8f45 100644 --- a/code/modules/mining/equipment.dm +++ b/code/modules/mining/equipment.dm @@ -447,10 +447,10 @@ minerals += M if(minerals.len) for(var/turf/closed/mineral/M in minerals) - var/obj/effect/overlay/temp/mining_overlay/C = new /obj/effect/overlay/temp/mining_overlay(M) + var/obj/effect/temp_visual/mining_overlay/C = new /obj/effect/temp_visual/mining_overlay(M) C.icon_state = M.scan_state -/obj/effect/overlay/temp/mining_overlay +/obj/effect/temp_visual/mining_overlay layer = FLASH_LAYER icon = 'icons/turf/smoothrocks.dmi' anchored = 1 @@ -510,79 +510,66 @@ hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("smashed", "crushed", "cleaved", "chopped", "pulped") sharpness = IS_SHARP - var/charged = 1 - var/charge_time = 16 - var/atom/mark = null - var/mutable_appearance/marked_underlay + var/charged = TRUE + var/charge_time = 14 /obj/item/projectile/destabilizer name = "destabilizing force" icon_state = "pulse1" + nodamage = TRUE damage = 0 //We're just here to mark people. This is still a melee weapon. damage_type = BRUTE flag = "bomb" range = 6 - var/obj/item/weapon/twohanded/required/mining_hammer/hammer_synced = null log_override = TRUE + var/obj/item/weapon/twohanded/required/mining_hammer/hammer_synced + +/obj/item/projectile/destabilizer/Destroy() + hammer_synced = null + return ..() /obj/item/projectile/destabilizer/on_hit(atom/target, blocked = 0) - if(hammer_synced) - if(hammer_synced.mark == target) - return ..() - if(isliving(target)) - if(hammer_synced.mark && hammer_synced.marked_underlay) - hammer_synced.mark.underlays -= hammer_synced.marked_underlay - hammer_synced.marked_underlay = null - var/mob/living/L = target - if(L.mob_size >= MOB_SIZE_LARGE) - hammer_synced.mark = L - hammer_synced.marked_underlay = mutable_appearance('icons/effects/effects.dmi', "shield2") - hammer_synced.marked_underlay.pixel_x = -L.pixel_x - hammer_synced.marked_underlay.pixel_y = -L.pixel_y - L.underlays += hammer_synced.marked_underlay - var/target_turf = get_turf(target) - if(ismineralturf(target_turf)) - var/turf/closed/mineral/M = target_turf - new /obj/effect/overlay/temp/kinetic_blast(M) - M.gets_drilled(firer) + if(isliving(target)) + var/mob/living/L = target + var/datum/status_effect/crusher_mark/CM = L.apply_status_effect(STATUS_EFFECT_CRUSHERMARK) + CM.hammer_synced = hammer_synced + var/target_turf = get_turf(target) + if(ismineralturf(target_turf)) + var/turf/closed/mineral/M = target_turf + new /obj/effect/temp_visual/kinetic_blast(M) + M.gets_drilled(firer) ..() /obj/item/weapon/twohanded/required/mining_hammer/afterattack(atom/target, mob/user, proximity_flag) if(!proximity_flag && charged)//Mark a target, or mine a tile. - var/turf/proj_turf = get_turf(src) + var/turf/proj_turf = user.loc if(!isturf(proj_turf)) return - var/datum/gas_mixture/environment = proj_turf.return_air() - var/pressure = environment.return_pressure() - if(pressure > 50) - playsound(user, 'sound/weapons/empty.ogg', 100, 1) - return - var/obj/item/projectile/destabilizer/D = new /obj/item/projectile/destabilizer(user.loc) - D.preparePixelProjectile(target,get_turf(target), user) + var/obj/item/projectile/destabilizer/D = new /obj/item/projectile/destabilizer(proj_turf) + D.preparePixelProjectile(target, get_turf(target), user) D.hammer_synced = src playsound(user, 'sound/weapons/plasma_cutter.ogg', 100, 1) D.fire() - charged = 0 + charged = FALSE icon_state = "mining_hammer1_uncharged" addtimer(CALLBACK(src, .proc/Recharge), charge_time) return - if(proximity_flag && target == mark && isliving(target)) + if(proximity_flag && isliving(target)) var/mob/living/L = target - new /obj/effect/overlay/temp/kinetic_blast(get_turf(L)) - mark = 0 - if(L.mob_size >= MOB_SIZE_LARGE) - L.underlays -= marked_underlay - QDEL_NULL(marked_underlay) - var/backstab_dir = get_dir(user, L) - var/def_check = L.getarmor(type = "bomb") - if((user.dir & backstab_dir) && (L.dir & backstab_dir)) - L.apply_damage(80, BRUTE, blocked = def_check) - playsound(user, 'sound/weapons/Kenetic_accel.ogg', 100, 1) //Seriously who spelled it wrong - else - L.apply_damage(50, BRUTE, blocked = def_check) + var/datum/status_effect/crusher_mark/CM = L.has_status_effect(STATUS_EFFECT_CRUSHERMARK) + if(!CM || CM.hammer_synced != src || !L.remove_status_effect(STATUS_EFFECT_CRUSHERMARK)) + return + new /obj/effect/temp_visual/kinetic_blast(get_turf(L)) + var/backstab_dir = get_dir(user, L) + var/def_check = L.getarmor(type = "bomb") + if((user.dir & backstab_dir) && (L.dir & backstab_dir)) + L.apply_damage(80, BRUTE, blocked = def_check) + playsound(user, 'sound/weapons/Kenetic_accel.ogg', 100, 1) //Seriously who spelled it wrong + else + L.apply_damage(50, BRUTE, blocked = def_check) /obj/item/weapon/twohanded/required/mining_hammer/proc/Recharge() if(!charged) - charged = 1 + charged = TRUE icon_state = "mining_hammer1" playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 4999f796c57..65ca340d995 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -1,5 +1,6 @@ //The chests dropped by mob spawner tendrils. Also contains associated loot. + /obj/structure/closet/crate/necropolis name = "necropolis chest" desc = "It's watching you closely." @@ -672,7 +673,7 @@ if(!istype(T)) return if(!istype(T, turf_type)) - var/obj/effect/overlay/temp/lavastaff/L = new /obj/effect/overlay/temp/lavastaff(T) + var/obj/effect/temp_visual/lavastaff/L = new /obj/effect/temp_visual/lavastaff(T) L.alpha = 0 animate(L, alpha = 255, time = create_delay) user.visible_message("[user] points [src] at [T]!") @@ -695,7 +696,7 @@ timer = world.time + reset_cooldown playsound(T,'sound/magic/Fireball.ogg', 200, 1) -/obj/effect/overlay/temp/lavastaff +/obj/effect/temp_visual/lavastaff icon_state = "lavastaff_warn" duration = 50 @@ -820,7 +821,9 @@ timer = world.time + cooldown_time if(isliving(target) && chaser_timer <= world.time) //living and chasers off cooldown? fire one! chaser_timer = world.time + chaser_cooldown - new /obj/effect/overlay/temp/hierophant/chaser(get_turf(user), user, target, chaser_speed, friendly_fire_check) + var/obj/effect/temp_visual/hierophant/chaser/C = new(get_turf(user), user, target, chaser_speed, friendly_fire_check) + C.damage = 30 + C.monster_damage_boost = FALSE add_logs(user, target, "fired a chaser at", src) else INVOKE_ASYNC(src, .proc/cardinal_blasts, T, user) //otherwise, just do cardinal blast @@ -875,7 +878,7 @@ if(do_after(user, 50, target = user) && !beacon) var/turf/T = get_turf(user) playsound(T,'sound/magic/Blind.ogg', 200, 1, -4) - new /obj/effect/overlay/temp/hierophant/telegraph/teleport(T, user) + new /obj/effect/temp_visual/hierophant/telegraph/teleport(T, user) beacon = new/obj/effect/hierophant(T) user.update_action_buttons_icon() user.visible_message("[user] places a strange machine beneath [user.p_their()] feet!", \ @@ -902,8 +905,8 @@ timer = world.time + 50 INVOKE_ASYNC(src, .proc/prepare_icon_update) beacon.icon_state = "hierophant_tele_on" - var/obj/effect/overlay/temp/hierophant/telegraph/edge/TE1 = new /obj/effect/overlay/temp/hierophant/telegraph/edge(user.loc) - var/obj/effect/overlay/temp/hierophant/telegraph/edge/TE2 = new /obj/effect/overlay/temp/hierophant/telegraph/edge(beacon.loc) + var/obj/effect/temp_visual/hierophant/telegraph/edge/TE1 = new /obj/effect/temp_visual/hierophant/telegraph/edge(user.loc) + var/obj/effect/temp_visual/hierophant/telegraph/edge/TE2 = new /obj/effect/temp_visual/hierophant/telegraph/edge(beacon.loc) if(do_after(user, 40, target = user) && user && beacon) var/turf/T = get_turf(beacon) var/turf/source = get_turf(user) @@ -915,8 +918,8 @@ INVOKE_ASYNC(src, .proc/prepare_icon_update) beacon.icon_state = "hierophant_tele_off" return - new /obj/effect/overlay/temp/hierophant/telegraph(T, user) - new /obj/effect/overlay/temp/hierophant/telegraph(source, user) + new /obj/effect/temp_visual/hierophant/telegraph(T, user) + new /obj/effect/temp_visual/hierophant/telegraph(source, user) playsound(T,'sound/magic/Wand_Teleport.ogg', 200, 1) playsound(source,'sound/machines/AirlockOpen.ogg', 200, 1) if(!do_after(user, 3, target = user) || !user || !beacon || QDELETED(beacon)) //no walking away shitlord @@ -937,13 +940,13 @@ beacon.icon_state = "hierophant_tele_off" return add_logs(user, beacon, "teleported self from ([source.x],[source.y],[source.z]) to") - new /obj/effect/overlay/temp/hierophant/telegraph/teleport(T, user) - new /obj/effect/overlay/temp/hierophant/telegraph/teleport(source, user) + new /obj/effect/temp_visual/hierophant/telegraph/teleport(T, user) + new /obj/effect/temp_visual/hierophant/telegraph/teleport(source, user) for(var/t in RANGE_TURFS(1, T)) - var/obj/effect/overlay/temp/hierophant/blast/B = new /obj/effect/overlay/temp/hierophant/blast(t, user, TRUE) //blasts produced will not hurt allies + var/obj/effect/temp_visual/hierophant/blast/B = new /obj/effect/temp_visual/hierophant/blast(t, user, TRUE) //blasts produced will not hurt allies B.damage = 30 for(var/t in RANGE_TURFS(1, source)) - var/obj/effect/overlay/temp/hierophant/blast/B = new /obj/effect/overlay/temp/hierophant/blast(t, user, TRUE) //but absolutely will hurt enemies + var/obj/effect/temp_visual/hierophant/blast/B = new /obj/effect/temp_visual/hierophant/blast(t, user, TRUE) //but absolutely will hurt enemies B.damage = 30 for(var/mob/living/L in range(1, source)) INVOKE_ASYNC(src, .proc/teleport_mob, source, L, T, user) //regardless, take all mobs near us along @@ -988,10 +991,10 @@ /obj/item/weapon/hierophant_club/proc/cardinal_blasts(turf/T, mob/living/user) //fire cardinal cross blasts with a delay if(!T) return - new /obj/effect/overlay/temp/hierophant/telegraph/cardinal(T, user) + new /obj/effect/temp_visual/hierophant/telegraph/cardinal(T, user) playsound(T,'sound/effects/bin_close.ogg', 200, 1) sleep(2) - new /obj/effect/overlay/temp/hierophant/blast(T, user, friendly_fire_check) + new /obj/effect/temp_visual/hierophant/blast(T, user, friendly_fire_check) for(var/d in GLOB.cardinal) INVOKE_ASYNC(src, .proc/blast_wall, T, d, user) @@ -1004,15 +1007,18 @@ for(var/i in 1 to range) if(!J) return - new /obj/effect/overlay/temp/hierophant/blast(J, user, friendly_fire_check) + var/obj/effect/temp_visual/hierophant/blast/B = new(J, user, friendly_fire_check) + B.damage = 30 + B.monster_damage_boost = FALSE previousturf = J J = get_step(previousturf, dir) /obj/item/weapon/hierophant_club/proc/aoe_burst(turf/T, mob/living/user) //make a 3x3 blast around a target if(!T) return - new /obj/effect/overlay/temp/hierophant/telegraph(T, user) + new /obj/effect/temp_visual/hierophant/telegraph(T, user) playsound(T,'sound/effects/bin_close.ogg', 200, 1) sleep(2) for(var/t in RANGE_TURFS(1, T)) - new /obj/effect/overlay/temp/hierophant/blast(t, user, friendly_fire_check) + var/obj/effect/temp_visual/hierophant/blast/B = new(t, user, friendly_fire_check) + B.damage = 15 //keeps monster damage boost due to lower damage diff --git a/code/modules/mob/living/carbon/alien/death.dm b/code/modules/mob/living/carbon/alien/death.dm index 9382dc392db..46facdc4547 100644 --- a/code/modules/mob/living/carbon/alien/death.dm +++ b/code/modules/mob/living/carbon/alien/death.dm @@ -5,10 +5,10 @@ new /obj/effect/gibspawner/xenobodypartless(loc,viruses) /mob/living/carbon/alien/gib_animation() - new /obj/effect/overlay/temp/gib_animation(loc, "gibbed-a") + new /obj/effect/temp_visual/gib_animation(loc, "gibbed-a") /mob/living/carbon/alien/spawn_dust() new /obj/effect/decal/remains/xeno(loc) /mob/living/carbon/alien/dust_animation() - new /obj/effect/overlay/temp/dust_animation(loc, "dust-a") + new /obj/effect/temp_visual/dust_animation(loc, "dust-a") diff --git a/code/modules/mob/living/carbon/alien/larva/death.dm b/code/modules/mob/living/carbon/alien/larva/death.dm index 16d2f534e08..585e5779c62 100644 --- a/code/modules/mob/living/carbon/alien/larva/death.dm +++ b/code/modules/mob/living/carbon/alien/larva/death.dm @@ -13,10 +13,10 @@ new /obj/effect/gibspawner/larvabodypartless(loc,viruses) /mob/living/carbon/alien/larva/gib_animation() - new /obj/effect/overlay/temp/gib_animation(loc, "gibbed-l") + new /obj/effect/temp_visual/gib_animation(loc, "gibbed-l") /mob/living/carbon/alien/larva/spawn_dust() new /obj/effect/decal/remains/xeno(loc) /mob/living/carbon/alien/larva/dust_animation() - new /obj/effect/overlay/temp/dust_animation(loc, "dust-l") + new /obj/effect/temp_visual/dust_animation(loc, "dust-l") diff --git a/code/modules/mob/living/carbon/alien/status_procs.dm b/code/modules/mob/living/carbon/alien/status_procs.dm index 653b05ae5a8..b63d2330162 100644 --- a/code/modules/mob/living/carbon/alien/status_procs.dm +++ b/code/modules/mob/living/carbon/alien/status_procs.dm @@ -17,4 +17,4 @@ /mob/living/carbon/alien/AdjustStunned(amount, updating = 1, ignore_canstun = 0) . = ..() if(!.) - move_delay_add = min(move_delay_add + round(amount / 2), 10) + move_delay_add = Clamp(move_delay_add + round(amount/2), 0, 10) diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 86ed1220fa8..04dba44ee5f 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -1,8 +1,8 @@ /mob/living/carbon/human/gib_animation() - new /obj/effect/overlay/temp/gib_animation(loc, "gibbed-h") + new /obj/effect/temp_visual/gib_animation(loc, "gibbed-h") /mob/living/carbon/human/dust_animation() - new /obj/effect/overlay/temp/dust_animation(loc, "dust-h") + new /obj/effect/temp_visual/dust_animation(loc, "dust-h") /mob/living/carbon/human/spawn_gibs(with_bodyparts) if(with_bodyparts) diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index bb84bb460f2..85fa57063ee 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -664,7 +664,7 @@ return invisibility = INVISIBILITY_MAXIMUM //disappear before the animation - new /obj/effect/overlay/temp/mummy_animation(get_turf(src)) + new /obj/effect/temp_visual/mummy_animation(get_turf(src)) if(cloth_golem.revive(full_heal = TRUE, admin_revive = TRUE)) cloth_golem.grab_ghost() //won't pull if it's a suicide sleep(20) diff --git a/code/modules/mob/living/carbon/monkey/death.dm b/code/modules/mob/living/carbon/monkey/death.dm index a45209c5c21..3c5cdf3b38d 100644 --- a/code/modules/mob/living/carbon/monkey/death.dm +++ b/code/modules/mob/living/carbon/monkey/death.dm @@ -1,5 +1,5 @@ /mob/living/carbon/monkey/gib_animation() - new /obj/effect/overlay/temp/gib_animation(loc, "gibbed-m") + new /obj/effect/temp_visual/gib_animation(loc, "gibbed-m") /mob/living/carbon/monkey/dust_animation() - new /obj/effect/overlay/temp/dust_animation(loc, "dust-m") + new /obj/effect/temp_visual/dust_animation(loc, "dust-m") diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index f080a54e84c..c74d21b7181 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -820,7 +820,7 @@ /mob/living/proc/has_bane(banetype) var/datum/antagonist/devil/devilInfo = is_devil(src) - return (banetype == devilInfo.bane) + return devilInfo && banetype == devilInfo.bane /mob/living/proc/check_weakness(obj/item/weapon, mob/living/attacker) if(mind && mind.has_antag_datum(ANTAG_DATUM_DEVIL)) diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm index 4df0c54d1a1..246ea1e060a 100644 --- a/code/modules/mob/living/silicon/robot/death.dm +++ b/code/modules/mob/living/silicon/robot/death.dm @@ -1,6 +1,6 @@ /mob/living/silicon/robot/gib_animation() - new /obj/effect/overlay/temp/gib_animation(loc, "gibbed-r") + new /obj/effect/temp_visual/gib_animation(loc, "gibbed-r") /mob/living/silicon/robot/dust() if(mmi) @@ -11,7 +11,7 @@ new /obj/effect/decal/remains/robot(loc) /mob/living/silicon/robot/dust_animation() - new /obj/effect/overlay/temp/dust_animation(loc, "dust-r") + new /obj/effect/temp_visual/dust_animation(loc, "dust-r") /mob/living/silicon/robot/death(gibbed) if(stat == DEAD) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index fde80220572..fb723d28b18 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -198,9 +198,9 @@ /obj/item/weapon/robot_module/proc/do_transform_animation() var/mob/living/silicon/robot/R = loc R.notransform = TRUE - var/obj/effect/overlay/temp/decoy/fading/fivesecond/ANM = new /obj/effect/overlay/temp/decoy/fading/fivesecond(R.loc, R) + var/obj/effect/temp_visual/decoy/fading/fivesecond/ANM = new /obj/effect/temp_visual/decoy/fading/fivesecond(R.loc, R) ANM.layer = R.layer - 0.01 - new /obj/effect/overlay/temp/small_smoke(R.loc) + new /obj/effect/temp_visual/small_smoke(R.loc) if(R.hat) R.hat.forceMove(get_turf(R)) R.hat = null @@ -359,7 +359,8 @@ /obj/item/weapon/reagent_containers/borghypo/peace, /obj/item/weapon/holosign_creator/cyborg, /obj/item/borg/cyborghug/peacekeeper, - /obj/item/weapon/extinguisher) + /obj/item/weapon/extinguisher, + /obj/item/borg/projectile_dampen) emag_modules = list(/obj/item/weapon/reagent_containers/borghypo/peace/hacked) ratvar_modules = list( /obj/item/clockwork/slab/cyborg/peacekeeper, diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 1dfdf2a14f9..796705e4c8d 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -299,7 +299,7 @@ /mob/living/simple_animal/bot/emp_act(severity) var/was_on = on stat |= EMPED - new /obj/effect/overlay/temp/emp(loc) + new /obj/effect/temp_visual/emp(loc) if(paicard) paicard.emp_act(severity) src.visible_message("[paicard] is flies out of [bot_name]!","You are forcefully ejected from [bot_name]!") diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index 07ea0d7b5dd..6b8f8339cef 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -444,7 +444,7 @@ Auto Patrol[]"}, if(severity==2 && prob(70)) ..(severity-1) else - new /obj/effect/overlay/temp/emp(loc) + new /obj/effect/temp_visual/emp(loc) var/list/mob/living/carbon/targets = new for(var/mob/living/carbon/C in view(12,src)) if(C.stat==2) diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 0e51630b4c1..40978f04ff5 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -215,7 +215,7 @@ if(change) if(change > 0) if(M && stat != DEAD) - new /obj/effect/overlay/temp/heart(loc) + new /obj/effect/temp_visual/heart(loc) emote("me", 1, "purrs!") else if(M && stat != DEAD) diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index d73b74e4a0f..5a4cd366b92 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -552,7 +552,7 @@ if(change) if(change > 0) if(M && stat != DEAD) // Added check to see if this mob (the dog) is dead to fix issue 2454 - new /obj/effect/overlay/temp/heart(loc) + new /obj/effect/temp_visual/heart(loc) emote("me", 1, "yaps happily!") else if(M && stat != DEAD) // Same check here, even though emote checks it as well (poor form to check it only in the help case) diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index fe6e22bcab2..a0f46922b7f 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -175,9 +175,9 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians if(istype(summoner.loc, /obj/effect)) Recall(TRUE) else - new /obj/effect/overlay/temp/guardian/phase/out(loc) + new /obj/effect/temp_visual/guardian/phase/out(loc) forceMove(summoner.loc) - new /obj/effect/overlay/temp/guardian/phase(loc) + new /obj/effect/temp_visual/guardian/phase(loc) /mob/living/simple_animal/hostile/guardian/canSuicide() return 0 @@ -315,7 +315,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians return FALSE if(loc == summoner) forceMove(summoner.loc) - new /obj/effect/overlay/temp/guardian/phase(loc) + new /obj/effect/temp_visual/guardian/phase(loc) cooldown = world.time + 10 return TRUE return FALSE @@ -323,7 +323,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians /mob/living/simple_animal/hostile/guardian/proc/Recall(forced) if(!summoner || loc == summoner || (cooldown > world.time && !forced)) return FALSE - new /obj/effect/overlay/temp/guardian/phase/out(loc) + new /obj/effect/temp_visual/guardian/phase/out(loc) forceMove(summoner) cooldown = world.time + 10 diff --git a/code/modules/mob/living/simple_animal/guardian/types/assassin.dm b/code/modules/mob/living/simple_animal/guardian/types/assassin.dm index 1fa54dfd216..0f4b15b4f4d 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/assassin.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/assassin.dm @@ -72,7 +72,7 @@ armour_penetration = 100 obj_damage = 0 environment_smash = 0 - new /obj/effect/overlay/temp/guardian/phase/out(get_turf(src)) + new /obj/effect/temp_visual/guardian/phase/out(get_turf(src)) alpha = 15 if(!forced) to_chat(src, "You enter stealth, empowering your next attack.") diff --git a/code/modules/mob/living/simple_animal/guardian/types/charger.dm b/code/modules/mob/living/simple_animal/guardian/types/charger.dm index 708a1e2ce6b..c1be82b8208 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/charger.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/charger.dm @@ -40,7 +40,7 @@ /mob/living/simple_animal/hostile/guardian/charger/Move() if(charging) - new /obj/effect/overlay/temp/decoy/fading(loc,src) + new /obj/effect/temp_visual/decoy/fading(loc,src) . = ..() /mob/living/simple_animal/hostile/guardian/charger/snapback() diff --git a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm index 9da40c0c7c5..1e6fa727b9d 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm @@ -21,14 +21,14 @@ if(. && prob(40) && isliving(target)) var/mob/living/M = target if(!M.anchored && M != summoner && !hasmatchingsummoner(M)) - new /obj/effect/overlay/temp/guardian/phase/out(get_turf(M)) + new /obj/effect/temp_visual/guardian/phase/out(get_turf(M)) do_teleport(M, M, 10) for(var/mob/living/L in range(1, M)) if(hasmatchingsummoner(L)) //if the summoner matches don't hurt them continue if(L != src && L != summoner) L.apply_damage(15, BRUTE) - new /obj/effect/overlay/temp/explosion(get_turf(M)) + new /obj/effect/temp_visual/explosion(get_turf(M)) /mob/living/simple_animal/hostile/guardian/bomb/AltClickOn(atom/movable/A) if(!istype(A)) @@ -75,7 +75,7 @@ var/turf/T = get_turf(src) stored_obj.forceMove(T) playsound(T,'sound/effects/Explosion2.ogg', 200, 1) - new /obj/effect/overlay/temp/explosion(T) + new /obj/effect/temp_visual/explosion(T) user.ex_act(2) qdel(src) else diff --git a/code/modules/mob/living/simple_animal/guardian/types/protector.dm b/code/modules/mob/living/simple_animal/guardian/types/protector.dm index eacf58410b4..cabb6854b2f 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/protector.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/protector.dm @@ -63,6 +63,6 @@ else to_chat(summoner, "You moved out of range, and were pulled back! You can only move [range] meters from [real_name]!") summoner.visible_message("\The [summoner] jumps back to [summoner.p_their()] protector.") - new /obj/effect/overlay/temp/guardian/phase/out(get_turf(summoner)) + new /obj/effect/temp_visual/guardian/phase/out(get_turf(summoner)) summoner.forceMove(get_turf(src)) - new /obj/effect/overlay/temp/guardian/phase(get_turf(summoner)) + new /obj/effect/temp_visual/guardian/phase(get_turf(summoner)) diff --git a/code/modules/mob/living/simple_animal/guardian/types/support.dm b/code/modules/mob/living/simple_animal/guardian/types/support.dm index 159e6df5f4c..3d7ae484432 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/support.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/support.dm @@ -34,7 +34,7 @@ C.adjustFireLoss(-5) C.adjustOxyLoss(-5) C.adjustToxLoss(-5) - var/obj/effect/overlay/temp/heal/H = new /obj/effect/overlay/temp/heal(get_turf(C)) + var/obj/effect/temp_visual/heal/H = new /obj/effect/temp_visual/heal(get_turf(C)) if(namedatum) H.color = namedatum.colour if(C == summoner) @@ -136,11 +136,11 @@ to_chat(src, "You need to hold still!") return - new /obj/effect/overlay/temp/guardian/phase/out(T) + new /obj/effect/temp_visual/guardian/phase/out(T) if(isliving(A)) var/mob/living/L = A L.flash_act() A.visible_message("[A] disappears in a flash of light!", \ "Your vision is obscured by a flash of light!") do_teleport(A, beacon, 0) - new /obj/effect/overlay/temp/guardian/phase(get_turf(A)) + new /obj/effect/temp_visual/guardian/phase(get_turf(A)) diff --git a/code/modules/mob/living/simple_animal/hostile/bosses/paperwizard.dm b/code/modules/mob/living/simple_animal/hostile/bosses/paperwizard.dm index 951589daaf1..601233c4247 100644 --- a/code/modules/mob/living/simple_animal/hostile/bosses/paperwizard.dm +++ b/code/modules/mob/living/simple_animal/hostile/bosses/paperwizard.dm @@ -16,7 +16,7 @@ melee_damage_upper = 20 health = 1000 maxHealth = 1000 - loot = list(/obj/effect/overlay/temp/paperwiz_dying) + loot = list(/obj/effect/temp_visual/paperwiz_dying) projectiletype = /obj/item/projectile/temp projectilesound = 'sound/weapons/emitter.ogg' attack_sound = 'sound/hallucinations/growl1.ogg' @@ -129,7 +129,7 @@ qdel(src) //I see through your ruse! //fancy effects -/obj/effect/overlay/temp/paper_scatter +/obj/effect/temp_visual/paper_scatter name = "scattering paper" desc = "Pieces of paper scattering to the wind." layer = ABOVE_OPEN_TURF_LAYER @@ -139,7 +139,7 @@ duration = 5 randomdir = FALSE -/obj/effect/overlay/temp/paperwiz_dying +/obj/effect/temp_visual/paperwiz_dying name = "craft portal" desc = "A wormhole sucking the wizard into the void. Neat." layer = ABOVE_OPEN_TURF_LAYER @@ -149,18 +149,18 @@ duration = 18 randomdir = FALSE -/obj/effect/overlay/temp/paperwiz_dying/Initialize() +/obj/effect/temp_visual/paperwiz_dying/Initialize() . = ..() visible_message("The wizard cries out in pain as a gate appears behind him, sucking him in!") playsound(get_turf(src),'sound/magic/MandSwap.ogg', 50, 1, 1) playsound(get_turf(src),'sound/hallucinations/wail.ogg', 50, 1, 1) -/obj/effect/overlay/temp/paperwiz_dying/Destroy() +/obj/effect/temp_visual/paperwiz_dying/Destroy() for(var/mob/M in range(7,src)) shake_camera(M, 7, 1) var/turf/T = get_turf(src) playsound(T,'sound/magic/Summon_Magic.ogg', 50, 1, 1) - new /obj/effect/overlay/temp/paper_scatter(T) + new /obj/effect/temp_visual/paper_scatter(T) new /obj/item/clothing/suit/wizrobe/paper(T) new /obj/item/clothing/head/collectable/paper(T) return ..() diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm index fa61a16e517..2645ebcef78 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm @@ -134,7 +134,7 @@ Difficulty: Hard /mob/living/simple_animal/hostile/megafauna/bubblegum/Move() if(charging) - new /obj/effect/overlay/temp/decoy/fading(loc,src) + new /obj/effect/temp_visual/decoy/fading(loc,src) DestroySurroundings() . = ..() if(!stat && .) @@ -150,12 +150,12 @@ Difficulty: Hard var/turf/T = get_turf(target) if(!T || T == loc) return - new /obj/effect/overlay/temp/dragon_swoop/bubblegum(T) + new /obj/effect/temp_visual/dragon_swoop/bubblegum(T) charging = TRUE DestroySurroundings() walk(src, 0) setDir(get_dir(src, T)) - var/obj/effect/overlay/temp/decoy/D = new /obj/effect/overlay/temp/decoy(loc,src) + var/obj/effect/temp_visual/decoy/D = new /obj/effect/temp_visual/decoy(loc,src) animate(D, alpha = 0, color = "#FF0000", transform = matrix()*2, time = 3) sleep(3) throw_at(T, get_dist(src, T), 1, src, 0, callback = CALLBACK(src, .charge_end, bonus_charges)) @@ -245,9 +245,9 @@ Difficulty: Hard /mob/living/simple_animal/hostile/megafauna/bubblegum/proc/bloodsmack(turf/T, handedness) if(handedness) - new /obj/effect/overlay/temp/bubblegum_hands/rightsmack(T) + new /obj/effect/temp_visual/bubblegum_hands/rightsmack(T) else - new /obj/effect/overlay/temp/bubblegum_hands/leftsmack(T) + new /obj/effect/temp_visual/bubblegum_hands/leftsmack(T) sleep(2.5) for(var/mob/living/L in T) if(!faction_check_mob(L)) @@ -259,11 +259,11 @@ Difficulty: Hard /mob/living/simple_animal/hostile/megafauna/bubblegum/proc/bloodgrab(turf/T, handedness) if(handedness) - new /obj/effect/overlay/temp/bubblegum_hands/rightpaw(T) - new /obj/effect/overlay/temp/bubblegum_hands/rightthumb(T) + new /obj/effect/temp_visual/bubblegum_hands/rightpaw(T) + new /obj/effect/temp_visual/bubblegum_hands/rightthumb(T) else - new /obj/effect/overlay/temp/bubblegum_hands/leftpaw(T) - new /obj/effect/overlay/temp/bubblegum_hands/leftthumb(T) + new /obj/effect/temp_visual/bubblegum_hands/leftpaw(T) + new /obj/effect/temp_visual/bubblegum_hands/leftthumb(T) sleep(6) for(var/mob/living/L in T) if(!faction_check_mob(L)) @@ -276,31 +276,31 @@ Difficulty: Hard addtimer(CALLBACK(src, .proc/devour, L), 2) sleep(1) -/obj/effect/overlay/temp/dragon_swoop/bubblegum +/obj/effect/temp_visual/dragon_swoop/bubblegum duration = 10 -/obj/effect/overlay/temp/bubblegum_hands +/obj/effect/temp_visual/bubblegum_hands icon = 'icons/effects/bubblegum.dmi' duration = 9 -/obj/effect/overlay/temp/bubblegum_hands/rightthumb +/obj/effect/temp_visual/bubblegum_hands/rightthumb icon_state = "rightthumbgrab" -/obj/effect/overlay/temp/bubblegum_hands/leftthumb +/obj/effect/temp_visual/bubblegum_hands/leftthumb icon_state = "leftthumbgrab" -/obj/effect/overlay/temp/bubblegum_hands/rightpaw +/obj/effect/temp_visual/bubblegum_hands/rightpaw icon_state = "rightpawgrab" layer = BELOW_MOB_LAYER -/obj/effect/overlay/temp/bubblegum_hands/leftpaw +/obj/effect/temp_visual/bubblegum_hands/leftpaw icon_state = "leftpawgrab" layer = BELOW_MOB_LAYER -/obj/effect/overlay/temp/bubblegum_hands/rightsmack +/obj/effect/temp_visual/bubblegum_hands/rightsmack icon_state = "rightsmack" -/obj/effect/overlay/temp/bubblegum_hands/leftsmack +/obj/effect/temp_visual/bubblegum_hands/leftsmack icon_state = "leftsmack" /mob/living/simple_animal/hostile/megafauna/bubblegum/proc/blood_warp() @@ -316,7 +316,7 @@ Difficulty: Hard if(!pools.len) return FALSE - var/obj/effect/overlay/temp/decoy/DA = new /obj/effect/overlay/temp/decoy(loc,src) + var/obj/effect/temp_visual/decoy/DA = new /obj/effect/temp_visual/decoy(loc,src) DA.color = "#FF0000" var/oldtransform = DA.transform DA.transform = matrix()*2 @@ -358,7 +358,7 @@ Difficulty: Hard new /obj/effect/decal/cleanable/blood/bubblegum(J) for(var/i in 1 to range) J = get_step(previousturf, targetdir) - new /obj/effect/overlay/temp/dir_setting/bloodsplatter(previousturf, get_dir(previousturf, J)) + new /obj/effect/temp_visual/dir_setting/bloodsplatter(previousturf, get_dir(previousturf, J)) playsound(previousturf,'sound/effects/splat.ogg', 100, 1, -1) if(!J || !previousturf.atmos_adjacent_turfs || !previousturf.atmos_adjacent_turfs[J]) break diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index cd2f11f399e..f3cb534ff29 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -95,7 +95,7 @@ Difficulty: Very Hard ..() internal = new/obj/item/device/gps/internal/colossus(src) -/obj/effect/overlay/temp/at_shield +/obj/effect/temp_visual/at_shield name = "anti-toolbox field" desc = "A shimmering forcefield protecting the colossus." icon = 'icons/effects/effects.dmi' @@ -105,14 +105,14 @@ Difficulty: Very Hard duration = 8 var/target -/obj/effect/overlay/temp/at_shield/Initialize(mapload, new_target) +/obj/effect/temp_visual/at_shield/Initialize(mapload, new_target) . = ..() target = new_target INVOKE_ASYNC(src, /atom/movable/proc/orbit, target, 0, FALSE, 0, 0, FALSE, TRUE) /mob/living/simple_animal/hostile/megafauna/colossus/bullet_act(obj/item/projectile/P) if(!stat) - var/obj/effect/overlay/temp/at_shield/AT = new /obj/effect/overlay/temp/at_shield(src.loc, src) + var/obj/effect/temp_visual/at_shield/AT = new /obj/effect/temp_visual/at_shield(src.loc, src) var/random_x = rand(-32, 32) AT.pixel_x += random_x @@ -581,7 +581,7 @@ Difficulty: Very Hard if(..()) for(var/i in range(1, src)) if(isturf(i)) - new /obj/effect/overlay/temp/cult/sparks(i) + new /obj/effect/temp_visual/cult/sparks(i) continue if(ishuman(i)) var/mob/living/carbon/human/H = i @@ -675,7 +675,7 @@ Difficulty: Very Hard var/mob/living/L = target if(L.stat != DEAD) L.heal_overall_damage(heal_power, heal_power) - new /obj/effect/overlay/temp/heal(get_turf(target), "#80F5FF") + new /obj/effect/temp_visual/heal(get_turf(target), "#80F5FF") /mob/living/simple_animal/hostile/lightgeist/ghostize() . = ..() @@ -699,7 +699,7 @@ Difficulty: Very Hard if(..()) var/list/L = list() var/turf/T = get_step(src, dir) - new /obj/effect/overlay/temp/emp/pulse(T) + new /obj/effect/temp_visual/emp/pulse(T) for(var/i in T) if(istype(i, /obj/item) && !is_type_in_typecache(i, banned_items_typecache)) var/obj/item/W = i diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm index 45139747fa0..1c1fc8fb9ee 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm @@ -124,7 +124,7 @@ Difficulty: Medium target.visible_message("Fire rains from the sky!") for(var/turf/turf in range(9,get_turf(target))) if(prob(11)) - new /obj/effect/overlay/temp/target(turf) + new /obj/effect/temp_visual/target(turf) /mob/living/simple_animal/hostile/megafauna/dragon/proc/fire_walls() playsound(get_turf(src),'sound/magic/Fireball.ogg', 200, 1) @@ -179,7 +179,7 @@ Difficulty: Medium negative = FALSE else if(target.x == initial_x) //if their x is the same, pick a direction negative = prob(50) - var/obj/effect/overlay/temp/dragon_flight/F = new /obj/effect/overlay/temp/dragon_flight(loc, negative) + var/obj/effect/temp_visual/dragon_flight/F = new /obj/effect/temp_visual/dragon_flight(loc, negative) negative = !negative //invert it for the swoop down later @@ -208,7 +208,7 @@ Difficulty: Medium if(L.stat == DEAD) break //target is dead and we're on em, slam they if(fire_rain) - new /obj/effect/overlay/temp/target(loc, flame_hit) + new /obj/effect/temp_visual/target(loc, flame_hit) forceMove(get_step(src, get_dir(src, target))) if(loc == get_turf(target)) if(!fire_rain) @@ -228,8 +228,8 @@ Difficulty: Medium else if(IsInRange(x, initial_x - DRAKE_SWOOP_DIRECTION_CHANGE_RANGE, initial_x - 1)) negative = TRUE - new /obj/effect/overlay/temp/dragon_flight/end(loc, negative) - new /obj/effect/overlay/temp/dragon_swoop(loc) + new /obj/effect/temp_visual/dragon_flight/end(loc, negative) + new /obj/effect/temp_visual/dragon_swoop(loc) animate(src, transform = oldtransform, time = 5) sleep(5) swooping &= ~SWOOP_INVULNERABLE @@ -271,7 +271,7 @@ Difficulty: Medium invisibility = 100 -/obj/effect/overlay/temp/fireball +/obj/effect/temp_visual/fireball icon = 'icons/obj/wizard.dmi' icon_state = "fireball" name = "fireball" @@ -281,28 +281,28 @@ Difficulty: Medium duration = 9 pixel_z = DRAKE_SWOOP_HEIGHT -/obj/effect/overlay/temp/fireball/Initialize() +/obj/effect/temp_visual/fireball/Initialize() . = ..() animate(src, pixel_z = 0, time = duration) -/obj/effect/overlay/temp/target +/obj/effect/temp_visual/target icon = 'icons/mob/actions.dmi' icon_state = "sniper_zoom" layer = BELOW_MOB_LAYER light_range = 2 duration = 9 -/obj/effect/overlay/temp/target/ex_act() +/obj/effect/temp_visual/target/ex_act() return -/obj/effect/overlay/temp/target/Initialize(mapload, list/flame_hit) +/obj/effect/temp_visual/target/Initialize(mapload, list/flame_hit) . = ..() INVOKE_ASYNC(src, .proc/fall, flame_hit) -/obj/effect/overlay/temp/target/proc/fall(list/flame_hit) +/obj/effect/temp_visual/target/proc/fall(list/flame_hit) var/turf/T = get_turf(src) playsound(T,'sound/magic/Fireball.ogg', 80, 1) - new /obj/effect/overlay/temp/fireball(T) + new /obj/effect/temp_visual/fireball(T) sleep(duration) if(ismineralturf(T)) var/turf/closed/mineral/M = T @@ -320,7 +320,7 @@ Difficulty: Medium else L.adjustFireLoss(10) //if we've already hit them, do way less damage -/obj/effect/overlay/temp/dragon_swoop +/obj/effect/temp_visual/dragon_swoop name = "certain death" desc = "Don't just stand there, move!" icon = 'icons/effects/96x96.dmi' @@ -331,7 +331,7 @@ Difficulty: Medium color = "#FF0000" duration = 5 -/obj/effect/overlay/temp/dragon_flight +/obj/effect/temp_visual/dragon_flight icon = 'icons/mob/lavaland/dragon.dmi' icon_state = "dragon" layer = ABOVE_ALL_MOB_LAYER @@ -339,11 +339,11 @@ Difficulty: Medium duration = 10 randomdir = FALSE -/obj/effect/overlay/temp/dragon_flight/Initialize(mapload, negative) +/obj/effect/temp_visual/dragon_flight/Initialize(mapload, negative) . = ..() INVOKE_ASYNC(src, .proc/flight, negative) -/obj/effect/overlay/temp/dragon_flight/proc/flight(negative) +/obj/effect/temp_visual/dragon_flight/proc/flight(negative) if(negative) animate(src, pixel_x = -DRAKE_SWOOP_HEIGHT*0.10, pixel_z = DRAKE_SWOOP_HEIGHT*0.15, time = 3, easing = BOUNCE_EASING) else @@ -355,12 +355,12 @@ Difficulty: Medium else animate(src, pixel_x = DRAKE_SWOOP_HEIGHT, pixel_z = DRAKE_SWOOP_HEIGHT, time = 7) -/obj/effect/overlay/temp/dragon_flight/end +/obj/effect/temp_visual/dragon_flight/end pixel_x = DRAKE_SWOOP_HEIGHT pixel_z = DRAKE_SWOOP_HEIGHT duration = 5 -/obj/effect/overlay/temp/dragon_flight/end/flight(negative) +/obj/effect/temp_visual/dragon_flight/end/flight(negative) if(negative) pixel_x = -DRAKE_SWOOP_HEIGHT animate(src, pixel_x = -16, pixel_z = 0, time = 5) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm index 03f8ce63cfe..fc884abe199 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm @@ -150,7 +150,7 @@ Difficulty: Hard var/prevloc = loc . = ..() if(!stat && .) - var/obj/effect/overlay/temp/hierophant/squares/HS = new /obj/effect/overlay/temp/hierophant/squares(prevloc) + var/obj/effect/temp_visual/hierophant/squares/HS = new /obj/effect/temp_visual/hierophant/squares(prevloc) HS.dir = dir playsound(loc, 'sound/mecha/mechmove04.ogg', 150, 1, -4) if(target) @@ -250,7 +250,7 @@ Difficulty: Hard pickedtarget = pick_n_take(targets) if(!istype(pickedtarget) || pickedtarget.stat == DEAD) pickedtarget = target - var/obj/effect/overlay/temp/hierophant/chaser/C = new /obj/effect/overlay/temp/hierophant/chaser(loc, src, pickedtarget, chaser_speed, FALSE) + var/obj/effect/temp_visual/hierophant/chaser/C = new /obj/effect/temp_visual/hierophant/chaser(loc, src, pickedtarget, chaser_speed, FALSE) C.moving = 3 C.moving_dir = pick_n_take(cardinal_copy) sleep(10) @@ -280,10 +280,10 @@ Difficulty: Hard else INVOKE_ASYNC(src, .proc/diagonal_blasts, target) else if(chaser_cooldown < world.time) //if chasers are off cooldown, fire some! - var/obj/effect/overlay/temp/hierophant/chaser/C = new /obj/effect/overlay/temp/hierophant/chaser(loc, src, target, chaser_speed, FALSE) + var/obj/effect/temp_visual/hierophant/chaser/C = new /obj/effect/temp_visual/hierophant/chaser(loc, src, target, chaser_speed, FALSE) chaser_cooldown = world.time + initial(chaser_cooldown) if((prob(anger_modifier) || target.Adjacent(src)) && target != src) - var/obj/effect/overlay/temp/hierophant/chaser/OC = new /obj/effect/overlay/temp/hierophant/chaser(loc, src, target, max(1.5, 5 - anger_modifier * 0.07), FALSE) + var/obj/effect/temp_visual/hierophant/chaser/OC = new /obj/effect/temp_visual/hierophant/chaser(loc, src, target, max(1.5, 5 - anger_modifier * 0.07), FALSE) OC.moving = 4 OC.moving_dir = pick(GLOB.cardinal - C.moving_dir) else //just release a burst of power @@ -293,10 +293,10 @@ Difficulty: Hard var/turf/T = get_turf(victim) if(!T) return - new /obj/effect/overlay/temp/hierophant/telegraph/diagonal(T, src) + new /obj/effect/temp_visual/hierophant/telegraph/diagonal(T, src) playsound(T,'sound/effects/bin_close.ogg', 200, 1) sleep(2) - new /obj/effect/overlay/temp/hierophant/blast(T, src, FALSE) + new /obj/effect/temp_visual/hierophant/blast(T, src, FALSE) for(var/d in GLOB.diagonals) INVOKE_ASYNC(src, .proc/blast_wall, T, d) @@ -304,10 +304,10 @@ Difficulty: Hard var/turf/T = get_turf(victim) if(!T) return - new /obj/effect/overlay/temp/hierophant/telegraph/cardinal(T, src) + new /obj/effect/temp_visual/hierophant/telegraph/cardinal(T, src) playsound(T,'sound/effects/bin_close.ogg', 200, 1) sleep(2) - new /obj/effect/overlay/temp/hierophant/blast(T, src, FALSE) + new /obj/effect/temp_visual/hierophant/blast(T, src, FALSE) for(var/d in GLOB.cardinal) INVOKE_ASYNC(src, .proc/blast_wall, T, d) @@ -315,10 +315,10 @@ Difficulty: Hard var/turf/T = get_turf(victim) if(!T) return - new /obj/effect/overlay/temp/hierophant/telegraph(T, src) + new /obj/effect/temp_visual/hierophant/telegraph(T, src) playsound(T,'sound/effects/bin_close.ogg', 200, 1) sleep(2) - new /obj/effect/overlay/temp/hierophant/blast(T, src, FALSE) + new /obj/effect/temp_visual/hierophant/blast(T, src, FALSE) for(var/d in GLOB.alldirs) INVOKE_ASYNC(src, .proc/blast_wall, T, d) @@ -327,7 +327,7 @@ Difficulty: Hard var/turf/previousturf = T var/turf/J = get_step(previousturf, set_dir) for(var/i in 1 to range) - new /obj/effect/overlay/temp/hierophant/blast(J, src, FALSE) + new /obj/effect/temp_visual/hierophant/blast(J, src, FALSE) previousturf = J J = get_step(previousturf, set_dir) @@ -342,8 +342,8 @@ Difficulty: Hard INVOKE_ASYNC(src, .proc/arena_squares, T, d) for(var/t in RANGE_TURFS(11, T)) if(t && get_dist(t, T) == 11) - new /obj/effect/overlay/temp/hierophant/wall(t) - new /obj/effect/overlay/temp/hierophant/blast(t, src, FALSE) + new /obj/effect/temp_visual/hierophant/wall(t) + new /obj/effect/temp_visual/hierophant/blast(t, src, FALSE) if(get_dist(src, T) >= 11) //hey you're out of range I need to get closer to you! INVOKE_ASYNC(src, .proc/blink, T) @@ -351,7 +351,7 @@ Difficulty: Hard var/turf/previousturf = T var/turf/J = get_step(previousturf, set_dir) for(var/i in 1 to 10) - var/obj/effect/overlay/temp/hierophant/squares/HS = new /obj/effect/overlay/temp/hierophant/squares(J) + var/obj/effect/temp_visual/hierophant/squares/HS = new /obj/effect/temp_visual/hierophant/squares(J) HS.dir = set_dir previousturf = J J = get_step(previousturf, set_dir) @@ -362,19 +362,19 @@ Difficulty: Hard return var/turf/T = get_turf(victim) var/turf/source = get_turf(src) - new /obj/effect/overlay/temp/hierophant/telegraph(T, src) - new /obj/effect/overlay/temp/hierophant/telegraph(source, src) + new /obj/effect/temp_visual/hierophant/telegraph(T, src) + new /obj/effect/temp_visual/hierophant/telegraph(source, src) playsound(T,'sound/magic/Wand_Teleport.ogg', 200, 1) playsound(source,'sound/machines/AirlockOpen.ogg', 200, 1) blinking = TRUE sleep(2) //short delay before we start... - new /obj/effect/overlay/temp/hierophant/telegraph/teleport(T, src) - new /obj/effect/overlay/temp/hierophant/telegraph/teleport(source, src) + new /obj/effect/temp_visual/hierophant/telegraph/teleport(T, src) + new /obj/effect/temp_visual/hierophant/telegraph/teleport(source, src) for(var/t in RANGE_TURFS(1, T)) - var/obj/effect/overlay/temp/hierophant/blast/B = new /obj/effect/overlay/temp/hierophant/blast(t, src, FALSE) + var/obj/effect/temp_visual/hierophant/blast/B = new /obj/effect/temp_visual/hierophant/blast(t, src, FALSE) B.damage = 30 for(var/t in RANGE_TURFS(1, source)) - var/obj/effect/overlay/temp/hierophant/blast/B = new /obj/effect/overlay/temp/hierophant/blast(t, src, FALSE) + var/obj/effect/temp_visual/hierophant/blast/B = new /obj/effect/temp_visual/hierophant/blast(t, src, FALSE) B.damage = 30 animate(src, alpha = 0, time = 2, easing = EASE_OUT) //fade out sleep(1) @@ -396,11 +396,11 @@ Difficulty: Hard var/turf/T = get_turf(victim) if(!T) return - new /obj/effect/overlay/temp/hierophant/telegraph(T, src) + new /obj/effect/temp_visual/hierophant/telegraph(T, src) playsound(T,'sound/effects/bin_close.ogg', 200, 1) sleep(2) for(var/t in RANGE_TURFS(1, T)) - new /obj/effect/overlay/temp/hierophant/blast(t, src, FALSE) + new /obj/effect/temp_visual/hierophant/blast(t, src, FALSE) /mob/living/simple_animal/hostile/megafauna/hierophant/proc/burst(turf/original) //release a wave of blasts playsound(original,'sound/machines/AirlockOpen.ogg', 200, 1) @@ -413,7 +413,7 @@ Difficulty: Hard if(dist > last_dist) last_dist = dist sleep(1 + min(burst_range - last_dist, 12) * 0.5) //gets faster as it gets further out - new /obj/effect/overlay/temp/hierophant/blast(T, src, FALSE) + new /obj/effect/temp_visual/hierophant/blast(T, src, FALSE) /mob/living/simple_animal/hostile/megafauna/hierophant/AltClickOn(atom/A) //player control handler(don't give this to a player holy fuck) if(!istype(A) || get_dist(A, src) <= 2) @@ -421,29 +421,29 @@ Difficulty: Hard blink(A) //Hierophant overlays -/obj/effect/overlay/temp/hierophant +/obj/effect/temp_visual/hierophant name = "vortex energy" layer = BELOW_MOB_LAYER var/mob/living/caster //who made this, anyway -/obj/effect/overlay/temp/hierophant/Initialize(mapload, new_caster) +/obj/effect/temp_visual/hierophant/Initialize(mapload, new_caster) . = ..() if(new_caster) caster = new_caster -/obj/effect/overlay/temp/hierophant/squares +/obj/effect/temp_visual/hierophant/squares icon_state = "hierophant_squares" duration = 3 light_range = 1 randomdir = FALSE -/obj/effect/overlay/temp/hierophant/squares/Initialize(mapload, new_caster) +/obj/effect/temp_visual/hierophant/squares/Initialize(mapload, new_caster) . = ..() if(ismineralturf(loc)) var/turf/closed/mineral/M = loc M.gets_drilled(caster) -/obj/effect/overlay/temp/hierophant/wall //smoothing and pooling were not friends, but pooling is dead. +/obj/effect/temp_visual/hierophant/wall //smoothing and pooling were not friends, but pooling is dead. name = "vortex wall" icon = 'icons/turf/walls/hierophant_wall_temp.dmi' icon_state = "wall" @@ -451,21 +451,21 @@ Difficulty: Hard duration = 100 smooth = SMOOTH_TRUE -/obj/effect/overlay/temp/hierophant/wall/Initialize(mapload, new_caster) +/obj/effect/temp_visual/hierophant/wall/Initialize(mapload, new_caster) . = ..() queue_smooth_neighbors(src) queue_smooth(src) -/obj/effect/overlay/temp/hierophant/wall/Destroy() +/obj/effect/temp_visual/hierophant/wall/Destroy() queue_smooth_neighbors(src) return ..() -/obj/effect/overlay/temp/hierophant/wall/CanPass(atom/movable/mover, turf/target, height = 0) +/obj/effect/temp_visual/hierophant/wall/CanPass(atom/movable/mover, turf/target, height = 0) if(mover == caster) return TRUE return FALSE -/obj/effect/overlay/temp/hierophant/chaser //a hierophant's chaser. follows target around, moving and producing a blast every speed deciseconds. +/obj/effect/temp_visual/hierophant/chaser //a hierophant's chaser. follows target around, moving and producing a blast every speed deciseconds. duration = 98 var/mob/living/target //what it's following var/turf/targetturf //what turf the target is actually on @@ -478,8 +478,10 @@ Difficulty: Hard var/speed = 3 //how many deciseconds between each step var/currently_seeking = FALSE var/friendly_fire_check = FALSE //if blasts produced apply friendly fire + var/monster_damage_boost = TRUE + var/damage = 10 -/obj/effect/overlay/temp/hierophant/chaser/Initialize(mapload, new_caster, new_target, new_speed, is_friendly_fire) +/obj/effect/temp_visual/hierophant/chaser/Initialize(mapload, new_caster, new_target, new_speed, is_friendly_fire) . = ..() target = new_target friendly_fire_check = is_friendly_fire @@ -487,14 +489,14 @@ Difficulty: Hard speed = new_speed addtimer(CALLBACK(src, .proc/seek_target), 1) -/obj/effect/overlay/temp/hierophant/chaser/proc/get_target_dir() +/obj/effect/temp_visual/hierophant/chaser/proc/get_target_dir() . = get_cardinal_dir(src, targetturf) if((. != previous_moving_dir && . == more_previouser_moving_dir) || . == 0) //we're alternating, recalculate var/list/cardinal_copy = GLOB.cardinal.Copy() cardinal_copy -= more_previouser_moving_dir . = pick(cardinal_copy) -/obj/effect/overlay/temp/hierophant/chaser/proc/seek_target() +/obj/effect/temp_visual/hierophant/chaser/proc/seek_target() if(!currently_seeking) currently_seeking = TRUE targetturf = get_turf(target) @@ -521,43 +523,45 @@ Difficulty: Hard moving-- sleep(speed) targetturf = get_turf(target) +/obj/effect/temp_visual/hierophant/chaser/proc/make_blast() + var/obj/effect/temp_visual/hierophant/blast/B = new(loc, caster, friendly_fire_check) + B.damage = damage + B.monster_damage_boost = monster_damage_boost -/obj/effect/overlay/temp/hierophant/chaser/proc/make_blast() - new /obj/effect/overlay/temp/hierophant/blast(loc, caster, friendly_fire_check) - -/obj/effect/overlay/temp/hierophant/telegraph +/obj/effect/temp_visual/hierophant/telegraph icon = 'icons/effects/96x96.dmi' icon_state = "hierophant_telegraph" pixel_x = -32 pixel_y = -32 duration = 3 -/obj/effect/overlay/temp/hierophant/telegraph/diagonal +/obj/effect/temp_visual/hierophant/telegraph/diagonal icon_state = "hierophant_telegraph_diagonal" -/obj/effect/overlay/temp/hierophant/telegraph/cardinal +/obj/effect/temp_visual/hierophant/telegraph/cardinal icon_state = "hierophant_telegraph_cardinal" -/obj/effect/overlay/temp/hierophant/telegraph/teleport +/obj/effect/temp_visual/hierophant/telegraph/teleport icon_state = "hierophant_telegraph_teleport" duration = 9 -/obj/effect/overlay/temp/hierophant/telegraph/edge +/obj/effect/temp_visual/hierophant/telegraph/edge icon_state = "hierophant_telegraph_edge" duration = 40 -/obj/effect/overlay/temp/hierophant/blast +/obj/effect/temp_visual/hierophant/blast icon_state = "hierophant_blast" name = "vortex blast" light_range = 1 desc = "Get out of the way!" duration = 9 var/damage = 10 //how much damage do we do? + var/monster_damage_boost = TRUE //do we deal extra damage to monsters? Used by the boss var/list/hit_things = list() //we hit these already, ignore them var/friendly_fire_check = FALSE var/bursting = FALSE //if we're bursting and need to hit anyone crossing us -/obj/effect/overlay/temp/hierophant/blast/Initialize(mapload, new_caster, friendly_fire) +/obj/effect/temp_visual/hierophant/blast/Initialize(mapload, new_caster, friendly_fire) . = ..() friendly_fire_check = friendly_fire if(new_caster) @@ -567,7 +571,7 @@ Difficulty: Hard M.gets_drilled(caster) INVOKE_ASYNC(src, .proc/blast) -/obj/effect/overlay/temp/hierophant/blast/proc/blast() +/obj/effect/temp_visual/hierophant/blast/proc/blast() var/turf/T = get_turf(src) if(!T) return @@ -578,12 +582,12 @@ Difficulty: Hard sleep(1.3) //slightly forgiving; the burst animation is 1.5 deciseconds bursting = FALSE //we no longer damage crossers -/obj/effect/overlay/temp/hierophant/blast/Crossed(atom/movable/AM) +/obj/effect/temp_visual/hierophant/blast/Crossed(atom/movable/AM) ..() if(bursting) do_damage(get_turf(src)) -/obj/effect/overlay/temp/hierophant/blast/proc/do_damage(turf/T) +/obj/effect/temp_visual/hierophant/blast/proc/do_damage(turf/T) for(var/mob/living/L in T.contents - hit_things) //find and damage mobs... hit_things += L if((friendly_fire_check && caster && caster.faction_check_mob(L)) || L.stat == DEAD) @@ -595,7 +599,7 @@ Difficulty: Hard var/limb_to_hit = L.get_bodypart(pick("head", "chest", "r_arm", "l_arm", "r_leg", "l_leg")) var/armor = L.run_armor_check(limb_to_hit, "melee", "Your armor absorbs [src]!", "Your armor blocks part of [src]!", 50, "Your armor was penetrated by [src]!") L.apply_damage(damage, BURN, limb_to_hit, armor) - if(ismegafauna(L) || istype(L, /mob/living/simple_animal/hostile/asteroid)) + if(monster_damage_boost && (ismegafauna(L) || istype(L, /mob/living/simple_animal/hostile/asteroid))) L.adjustBruteLoss(damage) add_logs(caster, L, "struck with a [name]") for(var/obj/mecha/M in T.contents - hit_things) //and mechs. @@ -630,7 +634,7 @@ Difficulty: Hard INVOKE_ASYNC(H, /obj/item/weapon/hierophant_club.proc/prepare_icon_update) if(do_after(user, 50, target = src)) playsound(src,'sound/magic/Blind.ogg', 200, 1, -4) - new /obj/effect/overlay/temp/hierophant/telegraph/teleport(get_turf(src), user) + new /obj/effect/temp_visual/hierophant/telegraph/teleport(get_turf(src), user) to_chat(user, "You collect [src], reattaching it to the club!") H.beacon = null user.update_action_buttons_icon() diff --git a/code/modules/mob/living/simple_animal/hostile/stickman.dm b/code/modules/mob/living/simple_animal/hostile/stickman.dm index 3f4267e164b..b85151ad97b 100644 --- a/code/modules/mob/living/simple_animal/hostile/stickman.dm +++ b/code/modules/mob/living/simple_animal/hostile/stickman.dm @@ -52,7 +52,7 @@ /mob/living/simple_animal/hostile/stickman/Initialize(mapload, var/wizard_summoned) ..() - new /obj/effect/overlay/temp/paper_scatter(src) + new /obj/effect/temp_visual/paper_scatter(src) summoned_by_wizard = wizard_summoned /mob/living/simple_animal/hostile/stickman/death() diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 831058a284f..5cb0d3b113a 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -249,7 +249,7 @@ /mob/living/simple_animal/gib_animation() if(icon_gib) - new /obj/effect/overlay/temp/gib_animation/animal(loc, icon_gib) + new /obj/effect/temp_visual/gib_animation/animal(loc, icon_gib) /mob/living/simple_animal/say_mod(input, message_mode) if(speak_emote && speak_emote.len) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index b1421f3b07a..78118fcba46 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -292,14 +292,14 @@ if(!src || !isturf(src.loc) || !(A in view(src.loc))) return 0 - if(istype(A, /obj/effect/overlay/temp/point)) + if(istype(A, /obj/effect/temp_visual/point)) return 0 var/tile = get_turf(A) if (!tile) return 0 - new /obj/effect/overlay/temp/point(A,invisibility) + new /obj/effect/temp_visual/point(A,invisibility) return 1 diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index c8ed520c28d..c8dc6456742 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -242,12 +242,12 @@ L.loc = locate(locx,locy,mobloc.z) var/limit = 2//For only two trailing shadows. for(var/turf/T in getline(mobloc, L.loc)) - new /obj/effect/overlay/temp/dir_setting/ninja/shadow(T, L.dir) + new /obj/effect/temp_visual/dir_setting/ninja/shadow(T, L.dir) limit-- if(limit<=0) break else - new /obj/effect/overlay/temp/dir_setting/ninja/shadow(mobloc, L.dir) + new /obj/effect/temp_visual/dir_setting/ninja/shadow(mobloc, L.dir) L.loc = get_step(L, direct) L.setDir(direct) if(3) //Incorporeal move, but blocked by holy-watered tiles and salt piles. diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 6545fcb505c..f91a6cd5538 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -36,7 +36,7 @@ cut_overlays() invisibility = INVISIBILITY_MAXIMUM - new /obj/effect/overlay/temp/monkeyify(loc) + new /obj/effect/temp_visual/monkeyify(loc) sleep(22) var/mob/living/carbon/monkey/O = new /mob/living/carbon/monkey( loc ) @@ -186,7 +186,7 @@ icon = null cut_overlays() invisibility = INVISIBILITY_MAXIMUM - new /obj/effect/overlay/temp/monkeyify/humanify(loc) + new /obj/effect/temp_visual/monkeyify/humanify(loc) sleep(22) var/mob/living/carbon/human/O = new( loc ) for(var/obj/item/C in O.loc) diff --git a/code/modules/ninja/admin_ninja_verbs.dm b/code/modules/ninja/admin_ninja_verbs.dm deleted file mode 100644 index 7338d9bb0be..00000000000 --- a/code/modules/ninja/admin_ninja_verbs.dm +++ /dev/null @@ -1,64 +0,0 @@ - -/* - -Contents: -- Admin procs that make ninjas - -*/ - - -//ADMIN CREATE NINJA (From Player) -/client/proc/cmd_admin_ninjafy(mob/living/carbon/human/H in GLOB.player_list) - set category = null - set name = "Make Space Ninja" - - if (!SSticker.mode) - alert("Wait until the game starts") - return - - if(!istype(H)) - return - - if(alert(src, "You sure?", "Confirm", "Yes", "No") != "Yes") - return - - log_admin("[key_name(src)] turned [H.key] into a Space Ninja.") - H.mind = create_ninja_mind(H.key) - H.mind_initialize() - H.equip_space_ninja(1) - if(istype(H.wear_suit, /obj/item/clothing/suit/space/space_ninja)) - H.wear_suit:randomize_param() - spawn(0) - H.wear_suit:ninitialize(10,H) - SSticker.mode.update_ninja_icons_added(H) - - -//ADMIN CREATE NINJA (From Ghost) -/client/proc/send_space_ninja() - set category = "Fun" - set name = "Spawn Space Ninja" - set desc = "Spawns a space ninja for when you need a teenager with attitude." - set popup_menu = 0 - - if(!holder) - to_chat(src, "Only administrators may use this command.") - return - if(!SSticker.mode) - alert("The game hasn't started yet!") - return - if(alert("Are you sure you want to send in a space ninja?",,"Yes","No")=="No") - return - - var/client/C = input("Pick character to spawn as the Space Ninja", "Key", "") as null|anything in GLOB.clients - if(!C) - return - - // passing FALSE means the event doesn't start immediately - var/datum/round_event/ghost_role/ninja/E = new(FALSE) - E.priority_candidates += C - E.processing = TRUE - - message_admins("[key_name_admin(key)] has spawned [key_name_admin(C.key)] as a Space Ninja.") - log_admin("[key] used Spawn Space Ninja.") - - return diff --git a/code/modules/ninja/ninja_event.dm b/code/modules/ninja/ninja_event.dm index e83f3a17e2e..8ff36523676 100644 --- a/code/modules/ninja/ninja_event.dm +++ b/code/modules/ninja/ninja_event.dm @@ -63,98 +63,21 @@ Contents: Mind.active = 1 //generate objectives - You'll generally get 6 objectives (Ninja is meant to be hardmode!) - var/list/possible_targets = list() - for(var/datum/mind/M in SSticker.minds) - if(M.current && M.current.stat != DEAD) - if(ishuman(M.current)) - if(M.special_role) - possible_targets[M] = 0 //bad-guy - else if(M.assigned_role in GLOB.command_positions) - possible_targets[M] = 1 //good-guy - var/list/objectives = list(1,2,3,4) - while(give_objectives && Mind.objectives.len < 6) - switch(pick_n_take(objectives)) - if(1) //research - var/datum/objective/download/O = new /datum/objective/download() - O.owner = Mind - O.gen_amount_goal() - Mind.objectives += O - - if(2) //steal - var/datum/objective/steal/special/O = new /datum/objective/steal/special() - O.owner = Mind - Mind.objectives += O - - if(3) //protect/kill - if(!possible_targets.len) continue - var/index = rand(1,possible_targets.len) - var/datum/mind/M = possible_targets[index] - var/is_bad_guy = possible_targets[M] - possible_targets.Cut(index,index+1) - - if(is_bad_guy ^ helping_station) //kill (good-ninja + bad-guy or bad-ninja + good-guy) - var/datum/objective/assassinate/O = new /datum/objective/assassinate() - O.owner = Mind - O.target = M - O.explanation_text = "Slay \the [M.current.real_name], the [M.assigned_role]." - Mind.objectives += O - else //protect - var/datum/objective/protect/O = new /datum/objective/protect() - O.owner = Mind - O.target = M - O.explanation_text = "Protect \the [M.current.real_name], the [M.assigned_role], from harm." - Mind.objectives += O - if(4) //debrain/capture - if(!possible_targets.len) continue - var/selected = rand(1,possible_targets.len) - var/datum/mind/M = possible_targets[selected] - var/is_bad_guy = possible_targets[M] - possible_targets.Cut(selected,selected+1) - - if(is_bad_guy ^ helping_station) //debrain (good-ninja + bad-guy or bad-ninja + good-guy) - var/datum/objective/debrain/O = new /datum/objective/debrain() - O.owner = Mind - O.target = M - O.explanation_text = "Steal the brain of [M.current.real_name]." - Mind.objectives += O - else //capture - var/datum/objective/capture/O = new /datum/objective/capture() - O.owner = Mind - O.gen_amount_goal() - Mind.objectives += O - else - break - - //Add a survival objective since it's usually broad enough for any round type. - if(give_objectives) - var/datum/objective/O = new /datum/objective/survive() - O.owner = Mind - Mind.objectives += O - - //add some RP-fluff - Mind.store_memory("I am an elite mercenary assassin of the mighty Spider Clan. A SPACE NINJA!") - Mind.store_memory("Surprise is my weapon. Shadows are my armor. Without them, I am nothing. (//initialize your suit by right clicking on it, to use abilities like stealth)!") - Mind.store_memory("Officially, [helping_station?"Nanotrasen":"The Syndicate"] are my employer.") //spawn the ninja and assign the candidate var/mob/living/carbon/human/Ninja = create_space_ninja(spawn_loc) Mind.transfer_to(Ninja) - - //initialise equipment - if(istype(Ninja.wear_suit,/obj/item/clothing/suit/space/space_ninja)) - //Should be true but we have to check these things. - var/obj/item/clothing/suit/space/space_ninja/N = Ninja.wear_suit - N.randomize_param() + var/datum/antagonist/ninja/ninjadatum = add_ninja(Ninja) + ninjadatum.equip_space_ninja() Ninja.internal = Ninja.s_store Ninja.update_internals_hud_icon(1) if(Ninja.mind != Mind) //something has gone wrong! throw EXCEPTION("Ninja created with incorrect mind") - return - Ninja << sound('sound/effects/ninja_greeting.ogg') //so ninja you probably wouldn't even know if you were made one + SSticker.mode.update_ninja_icons_added(Ninja) spawned_mobs += Ninja message_admins("[key_name_admin(Ninja)] has been made into a ninja by an event.") @@ -171,7 +94,6 @@ Contents: A.real_name = "[pick(GLOB.ninja_titles)] [pick(GLOB.ninja_names)]" A.copy_to(new_ninja) new_ninja.dna.update_dna_identity() - new_ninja.equip_space_ninja() return new_ninja @@ -183,38 +105,6 @@ Contents: return Mind -/mob/living/carbon/human/proc/equip_space_ninja(safety=0)//Safety in case you need to unequip stuff for existing characters. - if(safety) - qdel(w_uniform) - qdel(wear_suit) - qdel(wear_mask) - qdel(head) - qdel(shoes) - qdel(gloves) - - var/obj/item/device/radio/R = new /obj/item/device/radio/headset(src) - var/obj/item/clothing/suit/space/space_ninja/theSuit = new(src) - var/obj/item/weapon/katana/energy/EK = new(src) - theSuit.energyKatana = EK - - equip_to_slot_or_del(R, slot_ears) - equip_to_slot_or_del(new /obj/item/clothing/under/color/black(src), slot_w_uniform) - equip_to_slot_or_del(new /obj/item/clothing/shoes/space_ninja(src), slot_shoes) - equip_to_slot_or_del(theSuit, slot_wear_suit) - equip_to_slot_or_del(new /obj/item/clothing/gloves/space_ninja(src), slot_gloves) - equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/space_ninja(src), slot_head) - equip_to_slot_or_del(new /obj/item/clothing/mask/gas/space_ninja(src), slot_wear_mask) - equip_to_slot_or_del(new /obj/item/clothing/glasses/night(src), slot_glasses) - equip_to_slot_or_del(EK, slot_belt) - equip_to_slot_or_del(new /obj/item/device/flashlight(src), slot_r_store) - equip_to_slot_or_del(new /obj/item/weapon/grenade/plastic/x4(src), slot_l_store) - equip_to_slot_or_del(new /obj/item/weapon/tank/internals/emergency_oxygen(src), slot_s_store) - equip_to_slot_or_del(new /obj/item/weapon/tank/jetpack/carbondioxide(src), slot_back) - - var/obj/item/weapon/implant/explosive/E = new/obj/item/weapon/implant/explosive(src) - E.implant(src) - return 1 - /datum/game_mode/proc/update_ninja_icons_added(var/mob/living/carbon/human/ninja) var/datum/atom_hud/antag/ninjahud = GLOB.huds[ANTAG_HUD_NINJA] ninjahud.join_hud(ninja) diff --git a/code/modules/ninja/suit/gloves.dm b/code/modules/ninja/suit/gloves.dm index d26e4cbd363..e9a350eae31 100644 --- a/code/modules/ninja/suit/gloves.dm +++ b/code/modules/ninja/suit/gloves.dm @@ -58,30 +58,23 @@ A.add_fingerprint(H) draining = 1 - var/drained = A.ninjadrain_act(suit,H,src) + . = A.ninjadrain_act(suit,H,src) draining = 0 - if(isnum(drained)) //Numerical values of drained handle their feedback here, Alpha values handle it themselves (Research hacking) - if(drained) - to_chat(H, "Gained [drained] energy from \the [A].") + if(isnum(.)) //Numerical values of drained handle their feedback here, Alpha values handle it themselves (Research hacking) + if(.) + to_chat(H, "Gained [.] energy from \the [A].") else to_chat(H, "\The [A] has run dry of power, you must find another source!") else - drained = 0 //as to not cancel attack_hand() - - return drained + . = 0 //as to not cancel attack_hand() -/obj/item/clothing/gloves/space_ninja/proc/toggled() - set name = "Toggle Interaction" - set desc = "Toggles special interaction on or off." - set category = "Ninja Equip" - +/obj/item/clothing/gloves/space_ninja/proc/toggledrain() var/mob/living/carbon/human/U = loc to_chat(U, "You [candrain?"disable":"enable"] special interaction.") candrain=!candrain - /obj/item/clothing/gloves/space_ninja/examine(mob/user) ..() if(flags & NODROP) diff --git a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm index 1f5fdc6ea05..619ae359d35 100644 --- a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm +++ b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm @@ -72,7 +72,7 @@ It is possible to destroy the net by the occupant or someone else. M.dropItemToGround(W) playsound(M.loc, 'sound/effects/sparks4.ogg', 50, 1) - new /obj/effect/overlay/temp/dir_setting/ninja/phase/out(get_turf(M), M.dir) + new /obj/effect/temp_visual/dir_setting/ninja/phase/out(get_turf(M), M.dir) visible_message("[M] suddenly vanishes!") M.forceMove(pick(GLOB.holdingfacility)) //Throw mob in to the holding facility. @@ -86,7 +86,7 @@ It is possible to destroy the net by the occupant or someone else. spark_system.start() playsound(M.loc, 'sound/effects/phasein.ogg', 25, 1) playsound(M.loc, 'sound/effects/sparks2.ogg', 50, 1) - new /obj/effect/overlay/temp/dir_setting/ninja/phase(get_turf(M), M.dir) + new /obj/effect/temp_visual/dir_setting/ninja/phase(get_turf(M), M.dir) qdel(src) else//And they are free. diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm index 30085fdac54..e1c378f9f3d 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm @@ -1,12 +1,6 @@ - - //Wakes the user so they are able to do their thing. Also injects a decent dose of radium. //Movement impairing would indicate drugs and the like. /obj/item/clothing/suit/space/space_ninja/proc/ninjaboost() - set name = "Adrenaline Boost" - set desc = "Inject a secret chemical that will counteract all movement-impairing effect." - set category = "Ninja Ability" - set popup_menu = 0 if(!ninjacost(0,N_ADRENALINE))//Have to make sure stat is not counted for this ability. var/mob/living/carbon/human/H = affecting @@ -25,4 +19,3 @@ a_boost-- to_chat(H, "There are [a_boost] adrenaline boosts remaining.") s_coold = 3 - return \ No newline at end of file diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_cost_check.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_cost_check.dm index 977279082e3..1d728084b34 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_cost_check.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_cost_check.dm @@ -26,4 +26,4 @@ if(!a_boost) to_chat(H, "You do not have any more adrenaline boosters.") return 1 - return (s_coold)//Returns the value of the variable which counts down to zero. \ No newline at end of file + return (s_coold)//Returns the value of the variable which counts down to zero. diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_empulse.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_empulse.dm index 8cfc6b89370..48e3cf69a97 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_empulse.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_empulse.dm @@ -2,14 +2,9 @@ //Disables nearby tech equipment. /obj/item/clothing/suit/space/space_ninja/proc/ninjapulse() - set name = "EM Burst (25E)" - set desc = "Disable any nearby technology with a electro-magnetic pulse." - set category = "Ninja Ability" - set popup_menu = 0 if(!ninjacost(250,N_STEALTH_CANCEL)) var/mob/living/carbon/human/H = affecting playsound(H.loc, 'sound/effects/EMPulse.ogg', 60, 2) empulse(H, 4, 6) //Procs sure are nice. Slightly weaker than wizard's disable tch. s_coold = 2 - return \ No newline at end of file diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_net.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_net.dm index 481c4d46b5f..18682e87eb9 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_net.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_net.dm @@ -1,10 +1,6 @@ //Allows the ninja to kidnap people /obj/item/clothing/suit/space/space_ninja/proc/ninjanet(mob/living/carbon/C in oview())//Only living carbon mobs. - set name = "Energy Net (20E)" - set desc = "Captures a fallen opponent in a net of energy. Will teleport them to a holding facility after 30 seconds." - set category = null - set src = usr.contents if(!ninjacost(200,N_STEALTH_CANCEL) && iscarbon(C)) var/mob/living/carbon/human/H = affecting @@ -26,4 +22,3 @@ to_chat(H, "[C.p_they(TRUE)] are already trapped inside an energy net!") else to_chat(H, "[C.p_they(TRUE)] will bring no honor to your Clan!") - return \ No newline at end of file diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_smoke.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_smoke.dm index 3596976e9b0..3c19162048c 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_smoke.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_smoke.dm @@ -2,10 +2,6 @@ //Smoke bomb /obj/item/clothing/suit/space/space_ninja/proc/ninjasmoke() - set name = "Smoke Bomb" - set desc = "Blind your enemies momentarily with a well-placed smoke bomb." - set category = "Ninja Ability" - set popup_menu = 0//Will not see it when right clicking. if(!ninjacost(0,N_SMOKE_BOMB)) var/mob/living/carbon/human/H = affecting @@ -16,4 +12,3 @@ s_bombs-- to_chat(H, "There are [s_bombs] smoke bombs remaining.") s_coold = 1 - return \ No newline at end of file diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_stars.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_stars.dm index bed0eafd599..336b061a6f2 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_stars.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_stars.dm @@ -2,11 +2,6 @@ //Creates a throwing star /obj/item/clothing/suit/space/space_ninja/proc/ninjastar() - set name = "Create Throwing Stars (1E)" - set desc = "Creates some throwing stars" - set category = "Ninja Ability" - set popup_menu = 0 - if(!ninjacost(10)) var/mob/living/carbon/human/H = affecting var/obj/item/weapon/throwing_star/ninja/N = new(H) diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm index 12e80d5c098..8103fa24152 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm @@ -21,7 +21,6 @@ Contents: animate(U, alpha = 50,time = 15) U.visible_message("[U.name] vanishes into thin air!", \ "You are now mostly invisible to normal detection.") - return /obj/item/clothing/suit/space/space_ninja/proc/cancel_stealth() @@ -38,12 +37,7 @@ Contents: /obj/item/clothing/suit/space/space_ninja/proc/stealth() - set name = "Toggle Stealth" - set desc = "Utilize the internal CLOAK-tech device to activate or deactivate stealth-camo." - set category = "Ninja Equip" - if(!s_busy) toggle_stealth() else to_chat(affecting, "Stealth does not appear to work!") - diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_sword_recall.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_sword_recall.dm index 4183e83fbfc..73c7082eec6 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_sword_recall.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_sword_recall.dm @@ -1,10 +1,5 @@ /obj/item/clothing/suit/space/space_ninja/proc/ninja_sword_recall() - set name = "Recall Energy Katana (Variable Cost)" - set desc = "Teleports the Energy Katana linked to this suit to its wearer, cost based on distance." - set category = "Ninja Ability" - set popup_menu = 0 - var/mob/living/carbon/human/H = affecting var/cost = 0 @@ -42,4 +37,3 @@ else //Else just TP it to us. energyKatana.returnToOwner(H,1) - diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_teleporting.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_teleporting.dm index 339b0b2857f..74dcec12ce8 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_teleporting.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_teleporting.dm @@ -16,16 +16,10 @@ Contents: var/mob/living/victim = H.pulling if(!victim.anchored) victim.forceMove(locate(T.x+rand(-1,1),T.y+rand(-1,1),T.z)) - return //Jaunt /obj/item/clothing/suit/space/space_ninja/proc/ninjajaunt() - set name = "Phase Jaunt (10E)" - set desc = "Utilizes the internal VOID-shift device to rapidly transit in direction facing." - set category = "Ninja Ability" - set popup_menu = 0 - if(!ninjacost(100,N_STEALTH_CANCEL)) var/mob/living/carbon/human/H = affecting var/turf/destination = get_teleport_loc(H.loc,H,9,1,3,1,0,1) @@ -33,7 +27,7 @@ Contents: if(destination && isturf(mobloc))//So we don't teleport out of containers playsound(H.loc, "sparks", 50, 1) - new /obj/effect/overlay/temp/dir_setting/ninja/phase/out(get_turf(H), H.dir) + new /obj/effect/temp_visual/dir_setting/ninja/phase/out(get_turf(H), H.dir) handle_teleport_grab(destination, H) H.loc = destination @@ -41,13 +35,12 @@ Contents: spark_system.start() playsound(H.loc, 'sound/effects/phasein.ogg', 25, 1) playsound(H.loc, "sparks", 50, 1) - new /obj/effect/overlay/temp/dir_setting/ninja/phase(get_turf(H), H.dir) + new /obj/effect/temp_visual/dir_setting/ninja/phase(get_turf(H), H.dir) destination.phase_damage_creatures(20,H)//Paralyse and damage mobs and mechas on the turf s_coold = 1 else to_chat(H, "The VOID-shift device is malfunctioning, teleportation failed.") - return //Right-Click teleport: It's basically admin "jump to turf" @@ -62,7 +55,7 @@ Contents: var/turf/mobloc = get_turf(H.loc)//To make sure that certain things work properly below. if(!T.density && isturf(mobloc)) playsound(H.loc, "sparks", 50, 1) - new /obj/effect/overlay/temp/dir_setting/ninja/phase/out(get_turf(H), H.dir) + new /obj/effect/temp_visual/dir_setting/ninja/phase/out(get_turf(H), H.dir) handle_teleport_grab(T, H) H.forceMove(T) @@ -70,12 +63,9 @@ Contents: spark_system.start() playsound(H.loc, 'sound/effects/phasein.ogg', 25, 1) playsound(H.loc, "sparks", 50, 1) - new /obj/effect/overlay/temp/dir_setting/ninja/phase(get_turf(H), H.dir) + new /obj/effect/temp_visual/dir_setting/ninja/phase(get_turf(H), H.dir) T.phase_damage_creatures(20,H)//Paralyse and damage mobs and mechas on the turf s_coold = 1 else to_chat(H, "You cannot teleport into solid walls or from solid matter") - return - - diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm index 827047c93ea..d5811e32c93 100644 --- a/code/modules/ninja/suit/suit.dm +++ b/code/modules/ninja/suit/suit.dm @@ -22,6 +22,8 @@ Contents: armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 100, acid = 100) strip_delay = 12 + actions_types = list(/datum/action/item_action/initialize_ninja_suit, /datum/action/item_action/ninjajaunt, /datum/action/item_action/ninjasmoke, /datum/action/item_action/ninjaboost, /datum/action/item_action/ninjapulse, /datum/action/item_action/ninjastar, /datum/action/item_action/ninjanet, /datum/action/item_action/ninja_sword_recall, /datum/action/item_action/ninja_stealth, /datum/action/item_action/toggle_glove) + //Important parts of the suit. var/mob/living/carbon/human/affecting = null var/obj/item/weapon/stock_parts/cell/cell @@ -57,7 +59,6 @@ Contents: /obj/item/clothing/suit/space/space_ninja/New() ..() - verbs += /obj/item/clothing/suit/space/space_ninja/proc/init//suit initialize verb //Spark Init spark_system = new() @@ -109,40 +110,38 @@ Contents: //This proc prevents the suit from being taken off. -/obj/item/clothing/suit/space/space_ninja/proc/lock_suit(mob/living/carbon/human/H, checkIcons = 0) +/obj/item/clothing/suit/space/space_ninja/proc/lock_suit(mob/living/carbon/human/H) if(!istype(H)) return 0 - if(checkIcons) - icon_state = H.gender==FEMALE ? "s-ninjanf" : "s-ninjan" - H.gloves.icon_state = "s-ninjan" - H.gloves.item_state = "s-ninjan" - else - if(H.mind.special_role!="Space Ninja") - to_chat(H, "\red fÄTaL ÈÈRRoR: 382200-*#00CÖDE RED\nUNAU†HORIZED USÈ DETÈC†††eD\nCoMMÈNCING SUB-R0U†IN3 13...\nTÈRMInATING U-U-USÈR...") - H.gib() - return 0 - if(!istype(H.head, /obj/item/clothing/head/helmet/space/space_ninja)) - to_chat(H, "ERROR: 100113 UNABLE TO LOCATE HEAD GEAR\nABORTING...") - return 0 - if(!istype(H.shoes, /obj/item/clothing/shoes/space_ninja)) - to_chat(H, "ERROR: 122011 UNABLE TO LOCATE FOOT GEAR\nABORTING...") - return 0 - if(!istype(H.gloves, /obj/item/clothing/gloves/space_ninja)) - to_chat(H, "ERROR: 110223 UNABLE TO LOCATE HAND GEAR\nABORTING...") - return 0 + if(!is_ninja(H)) + to_chat(H, "\red fÄTaL ÈÈRRoR: 382200-*#00CÖDE RED\nUNAU†HORIZED USÈ DETÈC†††eD\nCoMMÈNCING SUB-R0U†IN3 13...\nTÈRMInATING U-U-USÈR...") + H.gib() + return FALSE + if(!istype(H.head, /obj/item/clothing/head/helmet/space/space_ninja)) + to_chat(H, "ERROR: 100113 UNABLE TO LOCATE HEAD GEAR\nABORTING...") + return FALSE + if(!istype(H.shoes, /obj/item/clothing/shoes/space_ninja)) + to_chat(H, "ERROR: 122011 UNABLE TO LOCATE FOOT GEAR\nABORTING...") + return FALSE + if(!istype(H.gloves, /obj/item/clothing/gloves/space_ninja)) + to_chat(H, "ERROR: 110223 UNABLE TO LOCATE HAND GEAR\nABORTING...") + return FALSE + affecting = H + flags |= NODROP //colons make me go all |= + slowdown = FALSE + n_hood = H.head + n_hood.flags |= NODROP + n_shoes = H.shoes + n_shoes.flags |= NODROP + n_shoes.slowdown-- + n_gloves = H.gloves + n_gloves.flags |= NODROP + return TRUE - affecting = H - flags |= NODROP //colons make me go all |= - slowdown = 0 - n_hood = H.head - n_hood.flags |= NODROP - n_shoes = H.shoes - n_shoes.flags |= NODROP - n_shoes.slowdown-- - n_gloves = H.gloves - n_gloves.flags |= NODROP - - return 1 +/obj/item/clothing/suit/space/space_ninja/proc/lockIcons(mob/living/carbon/human/H) + icon_state = H.gender==FEMALE ? "s-ninjanf" : "s-ninjan" + H.gloves.icon_state = "s-ninjan" + H.gloves.item_state = "s-ninjan" //This proc allows the suit to be taken off. @@ -172,3 +171,39 @@ Contents: to_chat(user, "The CLOAK-tech device is [s_active?"active":"inactive"].") to_chat(user, "There are [s_bombs] smoke bomb\s remaining.") to_chat(user, "There are [a_boost] adrenaline booster\s remaining.") + +/obj/item/clothing/suit/space/space_ninja/ui_action_click(mob/user, action) + if(istype(action, /datum/action/item_action/initialize_ninja_suit)) + toggle_on_off() + return TRUE + if(!s_initialized) + to_chat(user, "ERROR: suit offline. Please activate suit.") + return FALSE + if(istype(action, /datum/action/item_action/ninjajaunt)) + ninjajaunt() + return TRUE + if(istype(action, /datum/action/item_action/ninjasmoke)) + ninjasmoke() + return TRUE + if(istype(action, /datum/action/item_action/ninjaboost)) + ninjaboost() + return TRUE + if(istype(action, /datum/action/item_action/ninjapulse)) + ninjapulse() + return TRUE + if(istype(action, /datum/action/item_action/ninjastar)) + ninjastar() + return TRUE + if(istype(action, /datum/action/item_action/ninjanet)) + ninjanet() + return TRUE + if(istype(action, /datum/action/item_action/ninja_sword_recall)) + ninja_sword_recall() + return TRUE + if(istype(action, /datum/action/item_action/ninja_stealth)) + stealth() + return TRUE + if(istype(action, /datum/action/item_action/toggle_glove)) + n_gloves.toggledrain() + return TRUE + return FALSE diff --git a/code/modules/ninja/suit/suit_initialisation.dm b/code/modules/ninja/suit/suit_initialisation.dm index 6851eb9b483..f26912df24d 100644 --- a/code/modules/ninja/suit/suit_initialisation.dm +++ b/code/modules/ninja/suit/suit_initialisation.dm @@ -1,102 +1,98 @@ - -//Verbs link to procs because verb-like procs have a bug which prevents their use if the arguments are not readily referenced. -//^ Old coder words may be false these days, Not taking the risk for now. - -/obj/item/clothing/suit/space/space_ninja/proc/init() - set name = "Initialize Suit" - set desc = "Initializes the suit for field operation." - set category = "Ninja Equip" - - ninitialize() - -/obj/item/clothing/suit/space/space_ninja/proc/deinit() - set name = "De-Initialize Suit" - set desc = "Begins procedure to remove the suit." - set category = "Ninja Equip" - - if(!s_busy) +/obj/item/clothing/suit/space/space_ninja/proc/toggle_on_off() + if(s_busy) + to_chat(loc, "ERROR: You cannot use this function at this time.") + return FALSE + if(s_initialized) deinitialize() else - to_chat(affecting, "The function did not trigger!") - + ninitialize() + . = TRUE /obj/item/clothing/suit/space/space_ninja/proc/ninitialize(delay = s_delay, mob/living/carbon/human/U = loc) - if(U.mind && U.mind.assigned_role==U.mind.special_role && !s_initialized && !s_busy)//Shouldn't be busy... but anything is possible I guess. - s_busy = 1 - for(var/i,i<7,i++) - switch(i) - if(0) - to_chat(U, "Now initializing...") - if(1) - if(!lock_suit(U))//To lock the suit onto wearer. - break - to_chat(U, "Securing external locking mechanism...\nNeural-net established.") - if(2) - to_chat(U, "Extending neural-net interface...\nNow monitoring brain wave pattern...") - if(3) - if(U.stat==2||U.health<=0) - to_chat(U, "FĆAL �Rr�R: 344--93#�&&21 BR��N |/|/aV� PATT$RN RED\nA-A-aB�rT�NG...") - unlock_suit() - break - lock_suit(U,1)//Check for icons. - U.regenerate_icons() - to_chat(U, "Linking neural-net interface...\nPattern\green GREEN, continuing operation.") - if(4) - to_chat(U, "VOID-shift device status: ONLINE.\nCLOAK-tech device status: ONLINE.") - if(5) - to_chat(U, "Primary system status: ONLINE.\nBackup system status: ONLINE.\nCurrent energy capacity: [cell.charge].") - if(6) - to_chat(U, "All systems operational. Welcome to SpiderOS, [U.real_name].") - grant_ninja_verbs() - grant_equip_verbs() - ntick() - sleep(delay) - s_busy = 0 - else - if(!U.mind||U.mind.assigned_role!=U.mind.special_role)//Your run of the mill persons shouldn't know what it is. Or how to turn it on. - to_chat(U, "You do not understand how this suit functions. Where the heck did it even come from?") - else if(s_initialized) - to_chat(U, "The suit is already functioning. Please report this bug.") - else - to_chat(U, "ERROR: You cannot use this function at this time.") - return + if(!U.mind) + return //Not sure how this could happen. + if(!is_ninja(U)) + to_chat(U, "You do not understand how this suit functions. Where the heck did it even come from?") + return + s_busy = TRUE + to_chat(U, "Now initializing...") + addtimer(CALLBACK(src, .proc/ninitialize_two, delay, U), delay) + +/obj/item/clothing/suit/space/space_ninja/proc/ninitialize_two(delay, mob/living/carbon/human/U) + if(!lock_suit(U))//To lock the suit onto wearer. + s_busy = FALSE + return + to_chat(U, "Securing external locking mechanism...\nNeural-net established.") + addtimer(CALLBACK(src, .proc/ninitialize_three, delay, U), delay) + +/obj/item/clothing/suit/space/space_ninja/proc/ninitialize_three(delay, mob/living/carbon/human/U) + to_chat(U, "Extending neural-net interface...\nNow monitoring brain wave pattern...") + addtimer(CALLBACK(src, .proc/ninitialize_four, delay, U), delay) + +/obj/item/clothing/suit/space/space_ninja/proc/ninitialize_four(delay, mob/living/carbon/human/U) + if(U.stat==2||U.health<=0) + to_chat(U, "FĆAL �Rr�R: 344--93#�&&21 BR��N |/|/aV� PATT$RN RED\nA-A-aB�rT�NG...") + unlock_suit() + return + lockIcons(U)//Check for icons. + U.regenerate_icons() + to_chat(U, "Linking neural-net interface...\nPattern\green GREEN, continuing operation.") + addtimer(CALLBACK(src, .proc/ninitialize_five, delay, U), delay) + +/obj/item/clothing/suit/space/space_ninja/proc/ninitialize_five(delay, mob/living/carbon/human/U) + to_chat(U, "VOID-shift device status: ONLINE.\nCLOAK-tech device status: ONLINE.") + addtimer(CALLBACK(src, .proc/ninitialize_six, delay, U), delay) + +/obj/item/clothing/suit/space/space_ninja/proc/ninitialize_six(delay, mob/living/carbon/human/U) + to_chat(U, "Primary system status: ONLINE.\nBackup system status: ONLINE.\nCurrent energy capacity: [cell.charge].") + addtimer(CALLBACK(src, .proc/ninitialize_seven, delay, U), delay) + +/obj/item/clothing/suit/space/space_ninja/proc/ninitialize_seven(delay, mob/living/carbon/human/U) + to_chat(U, "All systems operational. Welcome to SpiderOS, [U.real_name].") + grant_ninja_verbs() + grant_equip_verbs() + ntick() + s_busy = FALSE /obj/item/clothing/suit/space/space_ninja/proc/deinitialize(delay = s_delay) - if(affecting==loc&&!s_busy) + if(affecting==loc) var/mob/living/carbon/human/U = affecting - if(!s_initialized) - to_chat(U, "The suit is not initialized. Please report this bug.") - return if(alert("Are you certain you wish to remove the suit? This will take time and remove all abilities.",,"Yes","No")=="No") return - if(s_busy) - to_chat(U, "ERROR: You cannot use this function at this time.") - return - s_busy = 1 - for(var/i = 0,i<7,i++) - switch(i) - if(0) - to_chat(U, "Now de-initializing...") - spideros = 0//Spideros resets. - if(1) - to_chat(U, "Logging off, [U:real_name]. Shutting down SpiderOS.") - remove_ninja_verbs() - if(2) - to_chat(U, "Primary system status: OFFLINE.\nBackup system status: OFFLINE.") - if(3) - to_chat(U, "VOID-shift device status: OFFLINE.\nCLOAK-tech device status: OFFLINE.") - cancel_stealth()//Shutdowns stealth. - if(4) - to_chat(U, "Disconnecting neural-net interface...\greenSuccess.") - if(5) - to_chat(U, "Disengaging neural-net interface...\greenSuccess.") - if(6) - to_chat(U, "Unsecuring external locking mechanism...\nNeural-net abolished.\nOperation status: FINISHED.") - remove_equip_verbs() - unlock_suit() - U.regenerate_icons() - sleep(delay) - s_busy = 0 - return \ No newline at end of file + s_busy = TRUE + addtimer(CALLBACK(src, .proc/deinitialize_two, delay, U), delay) + +/obj/item/clothing/suit/space/space_ninja/proc/deinitialize_two(delay, mob/living/carbon/human/U) + to_chat(U, "Now de-initializing...") + spideros = 0//Spideros resets. + addtimer(CALLBACK(src, .proc/deinitialize_three, delay, U), delay) + +/obj/item/clothing/suit/space/space_ninja/proc/deinitialize_three(delay, mob/living/carbon/human/U) + to_chat(U, "Logging off, [U:real_name]. Shutting down SpiderOS.") + remove_ninja_verbs() + addtimer(CALLBACK(src, .proc/deinitialize_four, delay, U), delay) + +/obj/item/clothing/suit/space/space_ninja/proc/deinitialize_four(delay, mob/living/carbon/human/U) + to_chat(U, "Primary system status: OFFLINE.\nBackup system status: OFFLINE.") + addtimer(CALLBACK(src, .proc/deinitialize_five, delay, U), delay) + +/obj/item/clothing/suit/space/space_ninja/proc/deinitialize_five(delay, mob/living/carbon/human/U) + to_chat(U, "VOID-shift device status: OFFLINE.\nCLOAK-tech device status: OFFLINE.") + cancel_stealth()//Shutdowns stealth. + addtimer(CALLBACK(src, .proc/deinitialize_six, delay, U), delay) + +/obj/item/clothing/suit/space/space_ninja/proc/deinitialize_six(delay, mob/living/carbon/human/U) + to_chat(U, "Disconnecting neural-net interface...\greenSuccess.") + addtimer(CALLBACK(src, .proc/deinitialize_seven, delay, U), delay) + +/obj/item/clothing/suit/space/space_ninja/proc/deinitialize_seven(delay, mob/living/carbon/human/U) + to_chat(U, "Disengaging neural-net interface...\greenSuccess.") + addtimer(CALLBACK(src, .proc/deinitialize_eight, delay, U), delay) + +/obj/item/clothing/suit/space/space_ninja/proc/deinitialize_eight(delay, mob/living/carbon/human/U) + to_chat(U, "Unsecuring external locking mechanism...\nNeural-net abolished.\nOperation status: FINISHED.") + remove_equip_verbs() + U.regenerate_icons() + s_busy = FALSE diff --git a/code/modules/ninja/suit/suit_process.dm b/code/modules/ninja/suit/suit_process.dm index 4b341c91980..99f801ed76a 100644 --- a/code/modules/ninja/suit/suit_process.dm +++ b/code/modules/ninja/suit/suit_process.dm @@ -20,5 +20,3 @@ cancel_stealth() sleep(10)//Checks every second. - - diff --git a/code/modules/ninja/suit/suit_verbs_handlers.dm b/code/modules/ninja/suit/suit_verbs_handlers.dm index 24797a272b0..7c887da1d2a 100644 --- a/code/modules/ninja/suit/suit_verbs_handlers.dm +++ b/code/modules/ninja/suit/suit_verbs_handlers.dm @@ -9,33 +9,20 @@ Contents: */ /obj/item/clothing/suit/space/space_ninja/proc/grant_equip_verbs() - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/init - verbs += /obj/item/clothing/suit/space/space_ninja/proc/deinit - verbs += /obj/item/clothing/suit/space/space_ninja/proc/stealth - n_gloves.verbs += /obj/item/clothing/gloves/space_ninja/proc/toggled + n_gloves.verbs += /obj/item/clothing/gloves/space_ninja/proc/toggledrain s_initialized = 1 /obj/item/clothing/suit/space/space_ninja/proc/remove_equip_verbs() - verbs += /obj/item/clothing/suit/space/space_ninja/proc/init - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/deinit - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/stealth if(n_gloves) - n_gloves.verbs -= /obj/item/clothing/gloves/space_ninja/proc/toggled + n_gloves.verbs -= /obj/item/clothing/gloves/space_ninja/proc/toggledrain s_initialized = 0 /obj/item/clothing/suit/space/space_ninja/proc/grant_ninja_verbs() verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjashift - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjajaunt - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjasmoke - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjaboost - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjapulse - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjastar - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjanet - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninja_sword_recall s_initialized=1 slowdown=0 @@ -43,10 +30,3 @@ Contents: /obj/item/clothing/suit/space/space_ninja/proc/remove_ninja_verbs() verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjashift - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjajaunt - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjasmoke - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjaboost - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjapulse - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjastar - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjanet - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninja_sword_recall diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index 32d47d274f5..0f721bc8267 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -78,8 +78,8 @@ name = "folder- 'TOP SECRET'" desc = "A folder stamped \"Top Secret - Property of Nanotrasen Corporation. Unauthorized distribution is punishable by death.\"" -/obj/item/weapon/folder/documents/New() - ..() +/obj/item/weapon/folder/documents/Initialize() + . = ..() new /obj/item/documents/nanotrasen(src) update_icon() @@ -91,20 +91,20 @@ /obj/item/weapon/folder/syndicate/red icon_state = "folder_sred" -/obj/item/weapon/folder/syndicate/red/New() - ..() +/obj/item/weapon/folder/syndicate/red/Initialize() + . = ..() new /obj/item/documents/syndicate/red(src) update_icon() /obj/item/weapon/folder/syndicate/blue icon_state = "folder_sblue" -/obj/item/weapon/folder/syndicate/blue/New() - ..() +/obj/item/weapon/folder/syndicate/blue/Initialize() + . = ..() new /obj/item/documents/syndicate/blue(src) update_icon() -/obj/item/weapon/folder/syndicate/mining/New() - ..() +/obj/item/weapon/folder/syndicate/mining/Initialize() + . = ..() new /obj/item/documents/syndicate/mining(src) - update_icon() \ No newline at end of file + update_icon() diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 36e69828b27..b6c6ab5d9e9 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -170,8 +170,7 @@ /obj/item/weapon/paper/proc/updateinfolinks() info_links = info - var/i = 0 - for(i=1,i<=fields,i++) + for(var/i in 1 to min(fields, 15)) addtofield(i, "write", 1) info_links = info_links + "write" diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 0cf502f8002..cf6d2fb61c3 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -304,16 +304,17 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne // Sound the alert if gravity was just enabled or disabled. var/alert = 0 var/area/A = get_area(src) - if(on && SSticker.IsRoundInProgress()) // If we turned on and the game is live. - if(gravity_in_level() == 0) - alert = 1 - investigate_log("was brought online and is now producing gravity for this level.", "gravity") - message_admins("The gravity generator was brought online [A][ADMIN_COORDJMP(src)]") - else - if(gravity_in_level() == 1) - alert = 1 - investigate_log("was brought offline and there is now no gravity for this level.", "gravity") - message_admins("The gravity generator was brought offline with no backup generator. [A][ADMIN_COORDJMP(src)]") + if(SSticker.IsRoundInProgress()) + if(on) // If we turned on and the game is live. + if(gravity_in_level() == 0) + alert = 1 + investigate_log("was brought online and is now producing gravity for this level.", "gravity") + message_admins("The gravity generator was brought online [A][ADMIN_COORDJMP(src)]") + else + if(gravity_in_level() == 1) + alert = 1 + investigate_log("was brought offline and there is now no gravity for this level.", "gravity") + message_admins("The gravity generator was brought offline with no backup generator. [A][ADMIN_COORDJMP(src)]") update_icon() update_list() diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm index 55373e4b1c7..a52d99bcccd 100644 --- a/code/modules/power/singularity/narsie.dm +++ b/code/modules/power/singularity/narsie.dm @@ -34,7 +34,7 @@ var/area/A = get_area(src) if(A) - var/mutable_appearance/alert_overlay = mutable_appearance('icons/effects/effects.dmi', "ghostalertsie") + var/mutable_appearance/alert_overlay = mutable_appearance('icons/effects/cult_effects.dmi', "ghostalertsie") notify_ghosts("Nar-Sie has risen in \the [A.name]. Reach out to the Geometer to be given a new shell for your soul.", source = src, alert_overlay = alert_overlay, action=NOTIFY_ATTACK) INVOKE_ASYNC(src, .proc/narsie_spawn_animation) @@ -52,6 +52,7 @@ /obj/singularity/narsie/large/cult/Initialize() . = ..() GLOB.cult_narsie = src + deltimer(GLOB.blood_target_reset_timer) GLOB.blood_target = src resize(0.6) for(var/datum/mind/cult_mind in SSticker.mode.cult) @@ -59,7 +60,7 @@ var/mob/living/L = cult_mind.current L.narsie_act() for(var/mob/living/player in GLOB.player_list) - if(player.stat != DEAD && player.loc.z == ZLEVEL_STATION && !iscultist(player) && isliving(player)) + if(player.stat != DEAD && player.loc.z == ZLEVEL_STATION && !iscultist(player)) souls_needed[player] = TRUE soul_goal = round(1 + LAZYLEN(souls_needed) * 0.6) INVOKE_ASYNC(src, .proc/begin_the_end) diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index f0941946dcf..e7e85bc8c47 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -16,7 +16,7 @@ var/randomspread = 0 //Randomspread for automatics var/delay = 0 //Delay for energy weapons var/click_cooldown_override = 0 //Override this to make your gun have a faster fire rate, in tenths of a second. 4 is the default gun cooldown. - var/firing_effect_type = /obj/effect/overlay/temp/dir_setting/firing_effect //the visual effect appearing when the ammo is fired. + var/firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect //the visual effect appearing when the ammo is fired. /obj/item/ammo_casing/New() diff --git a/code/modules/projectiles/ammunition/caseless.dm b/code/modules/projectiles/ammunition/caseless.dm index 9ba066ef95b..0480476a74d 100644 --- a/code/modules/projectiles/ammunition/caseless.dm +++ b/code/modules/projectiles/ammunition/caseless.dm @@ -45,7 +45,7 @@ icon_state = "s-casing-live" projectile_type = /obj/item/projectile/beam fire_sound = 'sound/weapons/Laser.ogg' - firing_effect_type = /obj/effect/overlay/temp/dir_setting/firing_effect/energy + firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/energy /obj/item/ammo_casing/caseless/laser/gatling projectile_type = /obj/item/projectile/beam/weak diff --git a/code/modules/projectiles/ammunition/energy.dm b/code/modules/projectiles/ammunition/energy.dm index bf695cffedc..83a9549872e 100644 --- a/code/modules/projectiles/ammunition/energy.dm +++ b/code/modules/projectiles/ammunition/energy.dm @@ -6,7 +6,7 @@ var/e_cost = 100 //The amount of energy a cell needs to expend to create this shot. var/select_name = "energy" fire_sound = 'sound/weapons/Laser.ogg' - firing_effect_type = /obj/effect/overlay/temp/dir_setting/firing_effect/energy + firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/energy /obj/item/ammo_casing/energy/chameleon e_cost = 0 @@ -77,6 +77,9 @@ fire_sound = 'sound/weapons/taser.ogg' e_cost = 200 +/obj/item/ammo_casing/energy/electrode/spec + e_cost = 100 + /obj/item/ammo_casing/energy/electrode/gun fire_sound = 'sound/weapons/gunshot.ogg' e_cost = 100 diff --git a/code/modules/projectiles/ammunition/special.dm b/code/modules/projectiles/ammunition/special.dm index 68681c1124f..bd57d7c07a8 100644 --- a/code/modules/projectiles/ammunition/special.dm +++ b/code/modules/projectiles/ammunition/special.dm @@ -2,7 +2,7 @@ name = "magic casing" desc = "I didn't even know magic needed ammo..." projectile_type = /obj/item/projectile/magic - firing_effect_type = /obj/effect/overlay/temp/dir_setting/firing_effect/magic + firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/magic /obj/item/ammo_casing/magic/change projectile_type = /obj/item/projectile/magic/change @@ -64,10 +64,29 @@ qdel(S) ..() +/obj/item/ammo_casing/dnainjector + name = "rigged syringe gun spring" + desc = "A high-power spring that throws DNA injectors." + projectile_type = /obj/item/projectile/bullet/dnainjector + firing_effect_type = null + +/obj/item/ammo_casing/dnainjector/ready_proj(atom/target, mob/living/user, quiet, zone_override = "") + if(!BB) + return + if(istype(loc, /obj/item/weapon/gun/syringe/dna)) + var/obj/item/weapon/gun/syringe/dna/SG = loc + if(!SG.syringes.len) + return + + var/obj/item/weapon/dnainjector/S = popleft(SG.syringes) + var/obj/item/projectile/bullet/dnainjector/D = BB + S.forceMove(D) + D.injector = S + ..() /obj/item/ammo_casing/energy/c3dbullet projectile_type = /obj/item/projectile/bullet/midbullet3 select_name = "spraydown" fire_sound = 'sound/weapons/gunshot_smg.ogg' e_cost = 20 - firing_effect_type = /obj/effect/overlay/temp/dir_setting/firing_effect + firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect diff --git a/code/modules/projectiles/guns/energy/energy_gun.dm b/code/modules/projectiles/guns/energy/energy_gun.dm index cc1166814b4..4ebed674e48 100644 --- a/code/modules/projectiles/guns/energy/energy_gun.dm +++ b/code/modules/projectiles/guns/energy/energy_gun.dm @@ -31,6 +31,11 @@ if(gun_light && gun_light.on) add_overlay("mini-light") +/obj/item/weapon/gun/energy/e_gun/stun + name = "tactical energy gun" + desc = "Military issue energy gun, is able to fire stun rounds." + ammo_type = list(/obj/item/ammo_casing/energy/electrode/spec, /obj/item/ammo_casing/energy/disabler, /obj/item/ammo_casing/energy/laser) + /obj/item/weapon/gun/energy/e_gun/mini/practice_phaser name = "practice phaser" desc = "A modified version of the basic phaser gun, this one fires less concentrated energy bolts designed for target practice." diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 6a5dab12bf6..4a7115b0c6d 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -195,7 +195,7 @@ if(ismineralturf(target_turf)) var/turf/closed/mineral/M = target_turf M.gets_drilled(firer) - var/obj/effect/overlay/temp/kinetic_blast/K = new /obj/effect/overlay/temp/kinetic_blast(target_turf) + var/obj/effect/temp_visual/kinetic_blast/K = new /obj/effect/temp_visual/kinetic_blast(target_turf) K.color = color for(var/type in hit_overlays) new type(target_turf) @@ -319,7 +319,7 @@ /obj/item/borg/upgrade/modkit/aoe/modify_projectile(obj/item/projectile/kinetic/K) K.name = "kinetic explosion" if(!K.turf_aoe && !K.mob_aoe) - K.hit_overlays += /obj/effect/overlay/temp/explosion/fast + K.hit_overlays += /obj/effect/temp_visual/explosion/fast K.mob_aoe += modifier /obj/item/borg/upgrade/modkit/aoe/turfs diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index 73d3a34a1b9..1c25f164377 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -5,6 +5,7 @@ item_state = null w_class = WEIGHT_CLASS_BULKY force = 10 + modifystate = TRUE flags = CONDUCT slot_flags = SLOT_BACK ammo_type = list(/obj/item/ammo_casing/energy/laser/pulse, /obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/laser) @@ -39,7 +40,7 @@ w_class = WEIGHT_CLASS_NORMAL slot_flags = SLOT_BELT icon_state = "pulse_carbine" - item_state = "pulse" + item_state = null cell_type = "/obj/item/weapon/stock_parts/cell/pulse/carbine" can_flashlight = 1 flight_x_offset = 18 @@ -56,7 +57,6 @@ icon_state = "pulse_pistol" item_state = "gun" cell_type = "/obj/item/weapon/stock_parts/cell/pulse/pistol" - can_charge = 0 /obj/item/weapon/gun/energy/pulse/pistol/loyalpin pin = /obj/item/device/firing_pin/implant/mindshield diff --git a/code/modules/projectiles/guns/medbeam.dm b/code/modules/projectiles/guns/medbeam.dm index 32646ee1e8f..37d576a8ffd 100644 --- a/code/modules/projectiles/guns/medbeam.dm +++ b/code/modules/projectiles/guns/medbeam.dm @@ -113,7 +113,7 @@ /obj/item/weapon/gun/medbeam/proc/on_beam_tick(var/mob/living/target) if(target.health != target.maxHealth) - new /obj/effect/overlay/temp/heal(get_turf(target), "#80F5FF") + new /obj/effect/temp_visual/heal(get_turf(target), "#80F5FF") target.adjustBruteLoss(-4) target.adjustFireLoss(-4) return diff --git a/code/modules/projectiles/guns/syringe_gun.dm b/code/modules/projectiles/guns/syringe_gun.dm index 6da113b6e36..09547b0d98a 100644 --- a/code/modules/projectiles/guns/syringe_gun.dm +++ b/code/modules/projectiles/guns/syringe_gun.dm @@ -49,18 +49,18 @@ return 1 -/obj/item/weapon/gun/syringe/attackby(obj/item/A, mob/user, params, show_msg = 1) +/obj/item/weapon/gun/syringe/attackby(obj/item/A, mob/user, params, show_msg = TRUE) if(istype(A, /obj/item/weapon/reagent_containers/syringe)) if(syringes.len < max_syringes) if(!user.transferItemToLoc(A, src)) - return + return FALSE to_chat(user, "You load [A] into \the [src].") - syringes.Add(A) + syringes += A recharge_newshot() - return 1 + return TRUE else - to_chat(usr, "[src] cannot hold more syringes!") - return 0 + to_chat(user, "[src] cannot hold more syringes!") + return FALSE /obj/item/weapon/gun/syringe/rapidsyringe name = "rapid syringe gun" @@ -78,3 +78,29 @@ force = 2 //Also very weak because it's smaller suppressed = 1 //Softer fire sound can_unsuppress = 0 //Permanently silenced + +/obj/item/weapon/gun/syringe/dna + name = "modified syringe gun" + desc = "A syringe gun that has been modified to fit DNA injectors instead of normal syringes." + origin_tech = "combat=2;syndicate=2;biotech=3" + +/obj/item/weapon/gun/syringe/dna/Initialize() + . = ..() + chambered = new /obj/item/ammo_casing/dnainjector(src) + +/obj/item/weapon/gun/syringe/dna/attackby(obj/item/A, mob/user, params, show_msg = TRUE) + if(istype(A, /obj/item/weapon/dnainjector)) + var/obj/item/weapon/dnainjector/D = A + if(D.used) + to_chat(user, "This injector is used up!") + return + if(syringes.len < max_syringes) + if(!user.transferItemToLoc(D, src)) + return FALSE + to_chat(user, "You load \the [D] into \the [src].") + syringes += D + recharge_newshot() + return TRUE + else + to_chat(user, "[src] cannot hold more syringes!") + return FALSE \ No newline at end of file diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 3dedaa9ae1c..3dbadc85c5e 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -90,9 +90,9 @@ if(starting) splatter_dir = get_dir(starting, target_loca) if(isalien(L)) - new /obj/effect/overlay/temp/dir_setting/bloodsplatter/xenosplatter(target_loca, splatter_dir) + new /obj/effect/temp_visual/dir_setting/bloodsplatter/xenosplatter(target_loca, splatter_dir) else - new /obj/effect/overlay/temp/dir_setting/bloodsplatter(target_loca, splatter_dir) + new /obj/effect/temp_visual/dir_setting/bloodsplatter(target_loca, splatter_dir) if(prob(33)) L.add_splatter_floor(target_loca) else if(impact_effect_type) @@ -224,7 +224,7 @@ pixel_y_offset += 32 old_pixel_y += 32 new_y-- - + pixel_x = old_pixel_x pixel_y = old_pixel_y step_towards(src, locate(new_x, new_y, z)) @@ -237,7 +237,7 @@ animate(src, pixel_x = pixel_x_offset, pixel_y = pixel_y_offset, time = max(1, (delay <= 3 ? delay - 1 : delay)), flags = ANIMATION_END_NOW) old_pixel_x = pixel_x_offset old_pixel_y = pixel_y_offset - + if(original && (original.layer>=2.75) || ismob(original)) if(loc == get_turf(original)) if(!(original in permutated)) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 7d651ef6f61..edc8c325ac5 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -9,7 +9,7 @@ hitsound_wall = 'sound/weapons/effects/searwall.ogg' flag = "laser" eyeblur = 2 - impact_effect_type = /obj/effect/overlay/temp/impact_effect/red_laser + impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser light_color = LIGHT_COLOR_RED /obj/item/projectile/beam/laser @@ -25,7 +25,7 @@ var/mob/living/carbon/M = target M.IgniteMob() else if(isturf(target)) - impact_effect_type = /obj/effect/overlay/temp/impact_effect/red_laser/wall + impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser/wall /obj/item/projectile/beam/weak damage = 15 @@ -48,7 +48,7 @@ irradiate = 30 range = 15 forcedodge = 1 - impact_effect_type = /obj/effect/overlay/temp/impact_effect/green_laser + impact_effect_type = /obj/effect/temp_visual/impact_effect/green_laser light_color = LIGHT_COLOR_GREEN /obj/item/projectile/beam/disabler @@ -59,14 +59,14 @@ flag = "energy" hitsound = 'sound/weapons/tap.ogg' eyeblur = 0 - impact_effect_type = /obj/effect/overlay/temp/impact_effect/blue_laser + impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser light_color = LIGHT_COLOR_BLUE /obj/item/projectile/beam/pulse name = "pulse" icon_state = "u_laser" damage = 50 - impact_effect_type = /obj/effect/overlay/temp/impact_effect/blue_laser + impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser light_color = LIGHT_COLOR_BLUE /obj/item/projectile/beam/pulse/on_hit(atom/target, blocked = 0) @@ -94,7 +94,7 @@ damage = 30 legacy = 1 animate_movement = SLIDE_STEPS - impact_effect_type = /obj/effect/overlay/temp/impact_effect/green_laser + impact_effect_type = /obj/effect/temp_visual/impact_effect/green_laser light_color = LIGHT_COLOR_GREEN /obj/item/projectile/beam/emitter/singularity_pull() @@ -108,7 +108,7 @@ damage_type = STAMINA flag = "laser" var/suit_types = list(/obj/item/clothing/suit/redtag, /obj/item/clothing/suit/bluetag) - impact_effect_type = /obj/effect/overlay/temp/impact_effect/blue_laser + impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser light_color = LIGHT_COLOR_BLUE /obj/item/projectile/beam/lasertag/on_hit(atom/target, blocked = 0) @@ -122,7 +122,7 @@ /obj/item/projectile/beam/lasertag/redtag icon_state = "laser" suit_types = list(/obj/item/clothing/suit/bluetag) - impact_effect_type = /obj/effect/overlay/temp/impact_effect/red_laser + impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser light_color = LIGHT_COLOR_RED /obj/item/projectile/beam/lasertag/bluetag @@ -134,17 +134,17 @@ icon_state = "purple_laser" damage = 200 damage_type = BURN - impact_effect_type = /obj/effect/overlay/temp/impact_effect/purple_laser + impact_effect_type = /obj/effect/temp_visual/impact_effect/purple_laser light_color = LIGHT_COLOR_PURPLE /obj/item/projectile/beam/instakill/blue icon_state = "blue_laser" - impact_effect_type = /obj/effect/overlay/temp/impact_effect/blue_laser + impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser light_color = LIGHT_COLOR_BLUE /obj/item/projectile/beam/instakill/red icon_state = "red_laser" - impact_effect_type = /obj/effect/overlay/temp/impact_effect/red_laser + impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser light_color = LIGHT_COLOR_RED /obj/item/projectile/beam/instakill/on_hit(atom/target) diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index ad517c698e5..b6e9a143b53 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -6,7 +6,7 @@ nodamage = 0 flag = "bullet" hitsound_wall = "ricochet" - impact_effect_type = /obj/effect/overlay/temp/impact_effect + impact_effect_type = /obj/effect/temp_visual/impact_effect /obj/item/projectile/bullet/weakbullet //beanbag, heavy stamina damage damage = 5 @@ -190,7 +190,7 @@ name = "dart" icon_state = "cbbolt" damage = 6 - var/piercing = 0 + var/piercing = FALSE /obj/item/projectile/bullet/dart/New() ..() @@ -201,15 +201,15 @@ if(iscarbon(target)) var/mob/living/carbon/M = target if(blocked != 100) // not completely blocked - if(M.can_inject(null, 0, def_zone, piercing)) // Pass the hit zone to see if it can inject by whether it hit the head or the body. + if(M.can_inject(null, FALSE, def_zone, piercing)) // Pass the hit zone to see if it can inject by whether it hit the head or the body. ..() reagents.reaction(M, INJECT) reagents.trans_to(M, reagents.total_volume) - return 1 + return TRUE else blocked = 100 - target.visible_message("The [name] was deflected!", \ - "You were protected against the [name]!") + target.visible_message("\The [src] was deflected!", \ + "You were protected against \the [src]!") ..(target, blocked) reagents.set_reacting(TRUE) @@ -240,7 +240,28 @@ nodamage = 1 . = ..() // Execute the rest of the code. +/obj/item/projectile/bullet/dnainjector + name = "\improper DNA injector" + icon_state = "syringeproj" + var/obj/item/weapon/dnainjector/injector + +/obj/item/projectile/bullet/dnainjector/on_hit(atom/target, blocked = 0) + if(iscarbon(target)) + var/mob/living/carbon/M = target + if(blocked != 100) + if(M.can_inject(null, FALSE, def_zone, FALSE)) + if(injector.inject(M, firer)) + QDEL_NULL(injector) + return TRUE + else + blocked = 100 + target.visible_message("\The [src] was deflected!", \ + "You were protected against \the [src]!") + return ..() +/obj/item/projectile/bullet/dnainjector/Destroy() + QDEL_NULL(injector) + return ..() //// SNIPER BULLETS diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index bd5ad14c48f..6e73989c2cd 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -133,7 +133,7 @@ damage = 20 damage_type = CLONE irradiate = 10 - impact_effect_type = /obj/effect/overlay/temp/impact_effect/green_laser + impact_effect_type = /obj/effect/temp_visual/impact_effect/green_laser /obj/item/projectile/energy/dart //ninja throwing dart name = "dart" @@ -162,7 +162,7 @@ /obj/item/projectile/energy/tesla name = "tesla bolt" icon_state = "tesla_projectile" - impact_effect_type = /obj/effect/overlay/temp/impact_effect/blue_laser + impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser var/chain /obj/item/projectile/energy/tesla/fire(setAngle) diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index f5df46cb7b5..e93a252a1ae 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -5,7 +5,7 @@ damage_type = BURN nodamage = 1 flag = "energy" - impact_effect_type = /obj/effect/overlay/temp/impact_effect/ion + impact_effect_type = /obj/effect/temp_visual/impact_effect/ion /obj/item/projectile/ion/on_hit(atom/target, blocked = 0) @@ -202,7 +202,7 @@ damage = 5 range = 3.5 //works as 4, but doubles to 7 dismemberment = 20 - impact_effect_type = /obj/effect/overlay/temp/impact_effect/purple_laser + impact_effect_type = /obj/effect/temp_visual/impact_effect/purple_laser /obj/item/projectile/plasma/Initialize() . = ..() @@ -270,7 +270,7 @@ A.throw_at(throwtarget,power+1,1) thrown_items[A] = A for(var/turf/F in range(T,power)) - new /obj/effect/overlay/temp/gravpush(F) + new /obj/effect/temp_visual/gravpush(F) /obj/item/projectile/gravityattract name = "attraction bolt" @@ -300,7 +300,7 @@ A.throw_at(T, power+1, 1) thrown_items[A] = A for(var/turf/F in range(T,power)) - new /obj/effect/overlay/temp/gravpush(F) + new /obj/effect/temp_visual/gravpush(F) /obj/item/projectile/gravitychaos name = "gravitational blast" @@ -330,5 +330,5 @@ A.throw_at(get_edge_target_turf(A, pick(GLOB.cardinal)), power+1, 1) thrown_items[A] = A for(var/turf/Z in range(T,power)) - new /obj/effect/overlay/temp/gravpush(Z) + new /obj/effect/temp_visual/gravpush(Z) diff --git a/code/modules/reagents/chemistry/reagents/blob_reagents.dm b/code/modules/reagents/chemistry/reagents/blob_reagents.dm index 948da607f83..9b1117bcc55 100644 --- a/code/modules/reagents/chemistry/reagents/blob_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/blob_reagents.dm @@ -298,7 +298,7 @@ var/initial_volume = reac_volume reac_volume = ..() if(reac_volume >= 10) //if it's not a spore cloud, bad time incoming - var/obj/effect/overlay/temp/explosion/fast/E = new /obj/effect/overlay/temp/explosion/fast(get_turf(M)) + var/obj/effect/temp_visual/explosion/fast/E = new /obj/effect/temp_visual/explosion/fast(get_turf(M)) E.alpha = 150 for(var/mob/living/L in orange(get_turf(M), 1)) if("blob" in L.faction) //no friendly fire diff --git a/code/modules/ruins/lavaland_ruin_code.dm b/code/modules/ruins/lavaland_ruin_code.dm index 647068a43e0..ef657f59224 100644 --- a/code/modules/ruins/lavaland_ruin_code.dm +++ b/code/modules/ruins/lavaland_ruin_code.dm @@ -143,6 +143,7 @@ has_id = 1 flavour_text = "You are a syndicate agent, employed in a top secret research facility developing biological weapons. Unfortunately, your hated enemy, Nanotrasen, has begun mining in this sector. Continue your research as best you can, and try to keep a low profile. Do not abandon the base without good cause. The base is rigged with explosives should the worst happen, do not let the base fall into enemy hands!" id_access_list = list(GLOB.access_syndicate) + faction = list("syndicate") /obj/effect/mob_spawn/human/lavaland_syndicate/comms name = "Syndicate Comms Agent" diff --git a/code/modules/shuttle/ripple.dm b/code/modules/shuttle/ripple.dm index ca49f50ae51..a757a86430a 100644 --- a/code/modules/shuttle/ripple.dm +++ b/code/modules/shuttle/ripple.dm @@ -1,4 +1,4 @@ -/obj/effect/overlay/temp/ripple +/obj/effect/temp_visual/ripple name = "hyperspace ripple" desc = "Something is coming through hyperspace, you can see the \ visual disturbances. It's probably best not to be on top of these \ @@ -13,10 +13,10 @@ duration = 3 * SHUTTLE_RIPPLE_TIME -/obj/effect/overlay/temp/ripple/Initialize(mapload, time_left) +/obj/effect/temp_visual/ripple/Initialize(mapload, time_left) . = ..() animate(src, alpha=255, time=time_left) addtimer(CALLBACK(src, .proc/stop_animation), 8, TIMER_CLIENT_TIME) -/obj/effect/overlay/temp/ripple/proc/stop_animation() +/obj/effect/temp_visual/ripple/proc/stop_animation() icon_state = "medi_holo_no_anim" diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index a5d60b1e8d6..96db9d0ac39 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -404,7 +404,7 @@ /obj/docking_port/mobile/proc/create_ripples(obj/docking_port/stationary/S1, animate_time) var/list/turfs = ripple_area(S1) for(var/t in turfs) - ripples += new /obj/effect/overlay/temp/ripple(t, animate_time) + ripples += new /obj/effect/temp_visual/ripple(t, animate_time) /obj/docking_port/mobile/proc/remove_ripples() for(var/R in ripples) @@ -764,6 +764,6 @@ if(T in block(T0,T1)) return TRUE return FALSE - + #undef DOCKING_PORT_HIGHLIGHT diff --git a/code/modules/spells/spell_types/aimed.dm b/code/modules/spells/spell_types/aimed.dm index cdac152ed26..b06f69c1898 100644 --- a/code/modules/spells/spell_types/aimed.dm +++ b/code/modules/spells/spell_types/aimed.dm @@ -24,6 +24,7 @@ if(charge_type == "recharge") var/refund_percent = current_amount/projectile_amount charge_counter = charge_max * refund_percent + start_recharge() remove_ranged_ability(msg) else msg = "[active_msg]Left-click to shoot it at a target!" diff --git a/code/modules/spells/spell_types/construct_spells.dm b/code/modules/spells/spell_types/construct_spells.dm index b6898afdef4..c8a7c387eef 100644 --- a/code/modules/spells/spell_types/construct_spells.dm +++ b/code/modules/spells/spell_types/construct_spells.dm @@ -128,8 +128,8 @@ action_icon_state = "phaseshift" action_background_icon_state = "bg_demon" jaunt_in_time = 12 - jaunt_in_type = /obj/effect/overlay/temp/dir_setting/wraith - jaunt_out_type = /obj/effect/overlay/temp/dir_setting/wraith/out + jaunt_in_type = /obj/effect/temp_visual/dir_setting/wraith + jaunt_out_type = /obj/effect/temp_visual/dir_setting/wraith/out /obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/jaunt_steam(mobloc) return @@ -256,7 +256,7 @@ S.add_atom_colour("#990000", FIXED_COLOUR_PRIORITY) S.faction = list("cult") playsound(get_turf(S), 'sound/effects/ghost.ogg', 100, 1) - new /obj/effect/overlay/temp/cult/sac(get_turf(S)) + new /obj/effect/temp_visual/cult/sac(get_turf(S)) /obj/effect/proc_holder/spell/targeted/dominate/can_target(mob/living/target) if(!isanimal(target) || target.stat) @@ -267,5 +267,5 @@ /obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/golem charge_max = 800 - jaunt_in_type = /obj/effect/overlay/temp/dir_setting/cult/phase - jaunt_out_type = /obj/effect/overlay/temp/dir_setting/cult/phase/out \ No newline at end of file + jaunt_in_type = /obj/effect/temp_visual/dir_setting/cult/phase + jaunt_out_type = /obj/effect/temp_visual/dir_setting/cult/phase/out \ No newline at end of file diff --git a/code/modules/spells/spell_types/ethereal_jaunt.dm b/code/modules/spells/spell_types/ethereal_jaunt.dm index a282ec72b7c..4d881d5bd53 100644 --- a/code/modules/spells/spell_types/ethereal_jaunt.dm +++ b/code/modules/spells/spell_types/ethereal_jaunt.dm @@ -13,8 +13,8 @@ nonabstract_req = 1 var/jaunt_duration = 50 //in deciseconds var/jaunt_in_time = 5 - var/jaunt_in_type = /obj/effect/overlay/temp/wizard - var/jaunt_out_type = /obj/effect/overlay/temp/wizard/out + var/jaunt_in_type = /obj/effect/temp_visual/wizard + var/jaunt_out_type = /obj/effect/temp_visual/wizard/out action_icon_state = "jaunt" /obj/effect/proc_holder/spell/targeted/ethereal_jaunt/cast(list/targets,mob/user = usr) //magnets, so mostly hardcoded diff --git a/code/modules/spells/spell_types/wizard.dm b/code/modules/spells/spell_types/wizard.dm index b8296a1da5b..f62259f67b5 100644 --- a/code/modules/spells/spell_types/wizard.dm +++ b/code/modules/spells/spell_types/wizard.dm @@ -257,7 +257,7 @@ selection_type = "view" sound = 'sound/magic/Repulse.ogg' var/maxthrow = 5 - var/sparkle_path = /obj/effect/overlay/temp/gravpush + var/sparkle_path = /obj/effect/temp_visual/gravpush action_icon_state = "repulse" @@ -300,7 +300,7 @@ range = 2 cooldown_min = 150 invocation_type = "none" - sparkle_path = /obj/effect/overlay/temp/dir_setting/tailsweep + sparkle_path = /obj/effect/temp_visual/dir_setting/tailsweep action_icon_state = "tailsweep" action_background_icon_state = "bg_alien" diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm index 2636e2e5d55..f2764ca386a 100644 --- a/code/modules/surgery/organs/tongue.dm +++ b/code/modules/surgery/organs/tongue.dm @@ -14,6 +14,7 @@ languages_possible = typecacheof(list( /datum/language/common, /datum/language/draconic, + /datum/language/codespeak, /datum/language/monkey, /datum/language/narsie, /datum/language/ratvar diff --git a/code/modules/uplink/uplink_item.dm b/code/modules/uplink/uplink_item.dm index cbee8e53f21..20339906bb5 100644 --- a/code/modules/uplink/uplink_item.dm +++ b/code/modules/uplink/uplink_item.dm @@ -1136,6 +1136,19 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. item = /obj/item/device/jammer cost = 5 +/datum/uplink_item/device_tools/codespeak_manual + name = "Codespeak Manual" + desc = "Syndicate agents can be trained to use a series of codewords to comvey complex information, which sounds like random concepts and drinks to anyone listening. This manual teaches you this Codespeak. You can also hit someone else with the manual in order to teach them. One use." + item = /obj/item/weapon/codespeak_manual + cost = 2 + exclude_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/device_tools/codespeak_manual_deluxe + name = "Deluxe Codespeak Manual" + desc = "Syndicate agents can be trained to use a series of codewords to comvey complex information, which sounds like random concepts and drinks to anyone listening. This manual teaches you this Codespeak. You can also hit someone else with the manual in order to teach them. This is the deluxe edition, which has unlimited uses." + cost = 8 + include_modes = list(/datum/game_mode/nuclear) + // Implants /datum/uplink_item/implants category = "Implants" @@ -1276,6 +1289,14 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. restricted_roles = list("Chaplain") surplus = 5 //Very low chance to get it in a surplus crate even without being the chaplain +/datum/uplink_item/role_restricted/pie_cannon + name = "Banana Cream Pie Cannon" + desc = "A special pie cannon for a special clown, this gadget can hold up to 20 pies and automatically fabricates one every two seconds!" + cost = 10 + item = /obj/item/weapon/pneumatic_cannon/pie/selfcharge + restricted_roles = list("Clown") + surplus = 0 //No fun unless you're the clown! + /datum/uplink_item/role_restricted/ancient_jumpsuit name = "Ancient Jumpsuit" desc = "A tattered old jumpsuit that will provide absolutely no benefit to you. It fills the wearer with a strange compulsion to blurt out 'glorf'." @@ -1291,6 +1312,13 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. cost = 2 restricted_roles = list("Curator") limited_stock = 1 // please don't spam deadchat + +/datum/uplink_item/role_restricted/modified_syringe_gun + name = "Modified Syringe Gun" + desc = "A syringe gun that fires DNA injectors instead of normal syringes." + item = /obj/item/weapon/gun/syringe/dna + cost = 14 + restricted_roles = list("Geneticist", "Chief Medical Officer") // Pointless /datum/uplink_item/badass diff --git a/code/modules/vehicles/speedbike.dm b/code/modules/vehicles/speedbike.dm index cc909e27755..134eea97298 100644 --- a/code/modules/vehicles/speedbike.dm +++ b/code/modules/vehicles/speedbike.dm @@ -17,7 +17,7 @@ /obj/vehicle/space/speedbike/Move(newloc,move_dir) if(has_buckled_mobs()) - new /obj/effect/overlay/temp/dir_setting/speedbike_trail(loc,move_dir) + new /obj/effect/temp_visual/dir_setting/speedbike_trail(loc,move_dir) . = ..() /obj/vehicle/space/speedbike/red diff --git a/code/world.dm b/code/world.dm index 9858ab0c9ba..6e3f4d79843 100644 --- a/code/world.dm +++ b/code/world.dm @@ -16,6 +16,32 @@ /world/New() log_world("World loaded at [time_stamp()]") + SetupExternalRSC() + + GLOB.config_error_log = file("data/logs/config_error.log") //temporary file used to record errors with loading config, moved to log directory once logging is set bl + + make_datum_references_lists() //initialises global lists for referencing frequently used datums (so that we only ever do it once) + + config = new + + SetRoundID() + + SetupLogs() + + GLOB.revdata.DownloadPRDetails() + + load_motd() + load_admins() + load_menu() + if(config.usewhitelist) + load_whitelist() + LoadBans() + + GLOB.timezoneOffset = text2num(time2text(0,"hh")) * 36000 + + Master.Initialize(10, FALSE) + +/world/proc/SetupExternalRSC() #if (PRELOAD_RSC == 0) external_rsc_urls = world.file2list("config/external_rsc_urls.txt","\n") var/i=1 @@ -25,23 +51,25 @@ else external_rsc_urls.Cut(i,i+1) #endif - GLOB.config_error_log = file("data/logs/config_error.log") //temporary file used to record errors with loading config, moved to log directory once logging is set bl - make_datum_references_lists() //initialises global lists for referencing frequently used datums (so that we only ever do it once) - config = new - GLOB.log_directory = "data/logs/[time2text(world.realtime, "YYYY/MM/DD")]/round-" + +/world/proc/SetRoundID() if(config.sql_enabled) if(SSdbcore.Connect()) log_world("Database connection established.") - var/datum/DBQuery/query_feedback_create_round = SSdbcore.NewQuery("INSERT INTO [format_table_name("feedback")] SELECT null, Now(), MAX(round_id)+1, \"server_ip\", 0, \"[world.internet_address]:[world.port]\" FROM [format_table_name("feedback")]") + var/datum/DBQuery/query_feedback_create_round = SSdbcore.NewQuery("INSERT INTO [format_table_name("feedback")] SELECT null, Now(), IFNULL(MAX(round_id),0)+1, \"server_ip\", 0, \"[world.internet_address]:[world.port]\" FROM [format_table_name("feedback")]") query_feedback_create_round.Execute() var/datum/DBQuery/query_feedback_max_id = SSdbcore.NewQuery("SELECT MAX(round_id) FROM [format_table_name("feedback")]") query_feedback_max_id.Execute() if(query_feedback_max_id.NextRow()) GLOB.round_id = query_feedback_max_id.item[1] - GLOB.log_directory += "[GLOB.round_id]" else log_world("Your server failed to establish a connection with the database.") - if(!GLOB.round_id) + +/world/proc/SetupLogs() + GLOB.log_directory = "data/logs/[time2text(world.realtime, "YYYY/MM/DD")]/round-" + if(GLOB.round_id) + GLOB.log_directory += "[GLOB.round_id]" + else GLOB.log_directory += "[replacetext(time_stamp(), ":", ".")]" GLOB.world_game_log = file("[GLOB.log_directory]/game.log") GLOB.world_attack_log = file("[GLOB.log_directory]/attack.log") @@ -58,21 +86,6 @@ if(GLOB.round_id) log_game("Round ID: [GLOB.round_id]") - GLOB.revdata.DownloadPRDetails() - load_mode() - load_motd() - load_admins() - load_menu() - if(config.usewhitelist) - load_whitelist() - LoadBans() - - GLOB.timezoneOffset = text2num(time2text(0,"hh")) * 36000 - - GLOB.data_core = new /datum/datacore() - - Master.Initialize(10, FALSE) - #define IRC_STATUS_THROTTLE 50 /world/Topic(T, addr, master, key) if(config && config.log_world_topic) @@ -198,99 +211,21 @@ if(PRcounts[id] > PR_ANNOUNCEMENTS_PER_ROUND) return -#define CHAT_PULLR 64 //defined in preferences.dm, but not available here at compilation time + var/final_composed = "PR: [announcement]" for(var/client/C in GLOB.clients) - if(C.prefs && (C.prefs.chat_toggles & CHAT_PULLR)) - C << "PR: [announcement]" -#undef CHAT_PULLR + C.AnnouncePR(final_composed) -#define WORLD_REBOOT(X) log_world("World rebooted at [time_stamp()]"); ..(X); return; - -/world/Reboot(var/reason, var/feedback_c, var/feedback_r, var/time) - if (reason == 1) //special reboot, do none of the normal stuff +/world/Reboot(reason = 0, fast_track = FALSE) + if (reason || fast_track) //special reboot, do none of the normal stuff if (usr) log_admin("[key_name(usr)] Has requested an immediate world restart via client side debugging tools") message_admins("[key_name_admin(usr)] Has requested an immediate world restart via client side debugging tools") to_chat(world, "Rebooting World immediately due to host request") - WORLD_REBOOT(1) - var/delay - if(time) - delay = time else - delay = config.round_end_countdown * 10 - if(SSticker.delay_end) - to_chat(world, "An admin has delayed the round end.") - return - to_chat(world, "Rebooting World in [delay/10] [(delay >= 10 && delay < 20) ? "second" : "seconds"]. [reason]") - var/round_end_sound_sent = FALSE - if(SSticker.round_end_sound) - round_end_sound_sent = TRUE - for(var/thing in GLOB.clients) - var/client/C = thing - if (!C) - continue - C.Export("##action=load_rsc", SSticker.round_end_sound) - sleep(delay) - if(SSticker.delay_end) - to_chat(world, "Reboot was cancelled by an admin.") - return - OnReboot(reason, feedback_c, feedback_r, round_end_sound_sent) - WORLD_REBOOT(0) -#undef WORLD_REBOOT - -/world/proc/OnReboot(reason, feedback_c, feedback_r, round_end_sound_sent) - SSblackbox.set_details("[feedback_c]","[feedback_r]") - log_game("Rebooting World. [reason]") - SSblackbox.set_val("ahelp_unresolved", GLOB.ahelp_tickets.active_tickets.len) - Master.Shutdown() //run SS shutdowns - RoundEndAnimation(round_end_sound_sent) - kick_clients_in_lobby("The round came to an end with you in the lobby.", 1) //second parameter ensures only afk clients are kicked - to_chat(world, "Rebooting world...") - for(var/thing in GLOB.clients) - var/client/C = thing - if(C && config.server) //if you set a server location in config.txt, it sends you there instead of trying to reconnect to the same world address. -- NeoFite - C << link("byond://[config.server]") - -/world/proc/RoundEndAnimation(round_end_sound_sent) - set waitfor = FALSE - var/round_end_sound - if(SSticker.round_end_sound) - round_end_sound = SSticker.round_end_sound - if (!round_end_sound_sent) - for(var/thing in GLOB.clients) - var/client/C = thing - if (!C) - continue - C.Export("##action=load_rsc", round_end_sound) - else - round_end_sound = pick(\ - 'sound/roundend/newroundsexy.ogg', - 'sound/roundend/apcdestroyed.ogg', - 'sound/roundend/bangindonk.ogg', - 'sound/roundend/leavingtg.ogg', - 'sound/roundend/its_only_game.ogg', - 'sound/roundend/yeehaw.ogg', - 'sound/roundend/disappointed.ogg'\ - ) - - for(var/thing in GLOB.clients) - var/obj/screen/splash/S = new(thing, FALSE) - S.Fade(FALSE,FALSE) - - world << sound(round_end_sound) - -/world/proc/load_mode() - var/mode = trim(file2text("data/mode.txt")) - if(mode) - GLOB.master_mode = mode - else - GLOB.master_mode = "extended" - log_game("Saved mode is '[GLOB.master_mode]'") - -/world/proc/save_mode(the_mode) - var/F = file("data/mode.txt") - fdel(F) - F << the_mode + to_chat(world, "Rebooting world...") + Master.Shutdown() //run SS shutdowns + log_world("World rebooted at [time_stamp()]"); + ..() /world/proc/load_motd() GLOB.join_motd = file2text("config/motd.txt") + "
" + GLOB.revdata.GetTestMergeInfo() diff --git a/html/changelog.html b/html/changelog.html index 175db73205c..ee6df126300 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,83 @@ -->
+

20 May 2017

+

Joan updated:

+
    +
  • Proto-kinetic crushers have been worked over by our highly qualified techs, will recharge 12% faster, and no longer require very low-pressure atmospheres to fire!
  • +
  • In addition, our techs have tweaked the quantum linker module and proto-kinetic crushers can apply multiple marks to different targets! Marks applied may eventually expire if not detonated.
  • +
+

Steelpoint updated:

+
    +
  • All Pulse weapons now accurately show, by their sprites, what fire mode they are in.
  • +
  • ERT, non-red alert, Security Response Officers spawn with a Tactical Energy Gun. This is a military variant of the Egun that, in addition to laser and disable rounds, has access to stun rounds.
  • +
  • Pulse Pistols can now be recharged.
  • +
+

Swindly updated:

+
    +
  • Added modified syringe guns. They fire DNA injectors. Geneticists and CMOs can buy them from the traitor uplink for 14 TC.
  • +
+

coiax updated:

+
    +
  • When a shuttle is called, sometimes an on-call admiral, using available information to them, will recall the shuttle from Centcom.
  • +
+

octareenroon91 updated:

+
    +
  • Golems touching a shell can now choose to stay in their own body.
  • +
+ +

19 May 2017

+

4dplanner updated:

+
    +
  • the Hierophant club has gained in power
  • +
+ +

18 May 2017

+

Joan updated:

+
    +
  • Proselytizing alloy shards will now proselytize all the shards in the tile, instead of requiring you to proselytize each one at a time.
  • +
+

Lordpidey updated:

+
    +
  • Space ninjas now use action buttons instead of verbs for a more consistent user experience.
  • +
  • Toy toolboxes with realistic rumbling action have been added to arcade prizes.
  • +
+

Tacolizard Forever: Plasmaman Powercreep updated:

+
    +
  • Plasmaman tanks are the same size as emergency oxygen tanks.
  • +
+

coiax updated:

+
    +
  • Syndicate agents can purchase a "codespeak manual", that teaches them a language that sounds like a series of codewords. You can also hit other people with the manual to teach them. One use per manual.
  • +
  • Nuclear operatives have access to a deluxe manual that is more expensive but has unlimited uses.
  • +
  • Syndicate AIs know Codespeak for free.
  • +
  • Spacevines can no longer spread on space transit turfs.
  • +
  • Plastic explosives can no longer be detonated by EMPs.
  • +
  • Various vending machines, when shooting their inventory at nearby people, will "demonstrate their products features". This means that if a cigarette vending machine throws a lighter at you, it will be on. Vending machines also choose random products when throwing, rather than the first available one.
  • +
+

kevinz000 updated:

+
    +
  • Peacekeeper cyborgs now have projectile dampening fields.
  • +
+ +

17 May 2017

+

4dplanner updated:

+
    +
  • revenant respawning will not spam up deadchat so much, and is less likely to break.
  • +
+

Expletive updated:

+
    +
  • Syndicate Tomes have been added to traitor uplinks for 9 TC. They let an agent or an operative provide both weal and woe.
  • +
+

Penguaro updated:

+
    +
  • Centcom Engineering has reviewed the power schematic for the engine room and added an Area Power Controller.
  • +
+

coiax updated:

+
    +
  • Magic eightballs are now tiny items, able to fit into a box and pocket.
  • +
+

16 May 2017

Moonlighting Mac says updated:

    @@ -153,11 +230,6 @@

13 May 2017

-

Kingofcarrotflowerspt1 updated:

-
    -
  • Adds Dakimakuras, more colloquially known as "anime girl body pillows"
  • -
  • They take up a hand slot and can hold a few items. Many different girls to choose from!
  • -

QualityVan updated:

  • Pizza boxes once again look different when open
  • @@ -1331,119 +1403,6 @@
  • Fixed Monkey Recycler board not showing in Circuit Imprinter
  • Kinetic Accelerator Range Mod now takes up 25% space instead of 24%
- -

18 March 2017

-

Supermichael777 updated:

-
    -
  • Free golems can now buy new ids for 250 points.
  • -
-

XDTM updated:

-
    -
  • You can now complete a golem shell with runed metal, if you somehow manage to get both.
  • -
  • Runic golems don't have passive bonuses over golems, but they have some special abilities.
  • -
-

coiax updated:

-
    -
  • The alert level is no longer lowered by a nuke's detonation.
  • -
- -

17 March 2017

-

BeeSting12 updated:

-
    -
  • Moved Metastation's deep fryer so that the chef can walk all the way around the table.
  • -
-

Cobby updated:

-
    -
  • The gulag mineral ratio has been tweaked so there are PLENTY of iron ore, nice bits of silver/plasma, with the negative of having less really high valued ores. If you need minerals, it may be a good time to ask the warden now!
  • -
-

Joan updated:

-
    -
  • You can now place lights and most wall objects on shuttles.
  • -
-

Xhuis updated:

-
    -
  • Added the power flow control console, which allows remote manipulation of most APCs on the z-level. You can find them in the Chief Engineer's office on all maps.
  • -
- -

16 March 2017

-

BASILMAN YOUR MAIN MAN updated:

-
    -
  • The BM Speedwagon has been improved both in terms of aesthetics and performance!
  • -
-

Cyberboss updated:

-
    -
  • The shield generators in Boxstation Xenobiology now have the correct access
  • -
-

Joan updated:

-
    -
  • Cult structures that emitted light now have colored light.
  • -
-

MrPerson updated:

-
    -
  • Humans can see in darkness slightly again. This is only so you can see where you are when the lights go out.
  • -
-

MrStonedOne updated:

-
    -
  • Fixed lighting not updating when a opaque object was deleted
  • -
-

Penguaro updated:

-
    -
  • Increased Synchronization Range on Exosuit Fabricator
  • -
-

Tofa01 updated:

-
    -
  • [Delta] Fixes telecoms temperature and gas mixing / being contaminated.
  • -
  • [Delta] Fixes some doubled up turfs causing items and objects to get stuck to stuff
  • -
  • [Omega] Makes telecoms room cool down and be cold.
  • -
-

Tokiko1 updated:

-
    -
  • Most gases now have unique effects when surrounding the supermatter crystal.
  • -
  • The supermatter crystal can now take damage from too much energy and too much gas.
  • -
  • Added a dangerous overcharged state to the supermatter crystal.
  • -
  • Readded explosion delaminations, a new tesla delamination and allowed the singulo delamination to absorb the supermatter.
  • -
  • The type of delamination now depends on the state of the supermatter crystal.
  • -
  • Various supermatter engine rebalancing and fixes.
  • -
-

kevinz000 updated:

-
    -
  • SDQL2 now supports outputting proccalls to variables, and associative lists
  • -
-

peoplearestrange updated:

-
    -
  • Fixed buildmodes full tile window to be correct path
  • -
-

rock updated:

-
    -
  • if we can have glowsticks in toolvends why not flashlights amirite guys
  • -
- -

15 March 2017

-

Cyberboss updated:

-
    -
  • You can no longer depart on the arrivals shuttle by hiding inside things
  • -
-

Joan updated:

-
    -
  • Proselytizers converting clockwork floors to walls now always take 10 seconds, regardless of how fast the proselytizer is.
  • -
  • Clockwork grilles no longer provide CV.
  • -
-

Penguaro updated:

-
    -
  • **Engineering** - Changed Access Level from **24** (_Atmo_) to **10** (_Engine_) on **Radiation Shutter Control**
  • -
-

TrustyGun updated:

-
    -
  • Traitor Mimes with the finger guns spell now fire 3 bullets at a time, as opposed to just 1.
  • -
-

octareenroon91 updated:

-
    -
  • Allow new reflector frames to be built from metal sheets.
  • -
-

oranges updated:

-
    -
  • Removed patting
  • -
GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index d9733cb1427..4cfa5ffb6c7 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -11183,10 +11183,6 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. or dismembered heads and successfully clone from them. Brains seem to remember the DNA of the last body they were attached to. 2017-05-13: - Kingofcarrotflowerspt1: - - rscadd: Adds Dakimakuras, more colloquially known as "anime girl body pillows" - - rscadd: They take up a hand slot and can hold a few items. Many different girls - to choose from! QualityVan: - bugfix: Pizza boxes once again look different when open 'Tacolizard Forever: It''s hip to fuck bees': @@ -11290,3 +11286,67 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. fludd12: - rscadd: You can now add grills to a bonfire, letting you cook things on top of them. +2017-05-17: + 4dplanner: + - bugfix: revenant respawning will not spam up deadchat so much, and is less likely + to break. + Expletive: + - rscadd: Syndicate Tomes have been added to traitor uplinks for 9 TC. They let + an agent or an operative provide both weal and woe. + Penguaro: + - bugfix: Centcom Engineering has reviewed the power schematic for the engine room + and added an Area Power Controller. + coiax: + - balance: Magic eightballs are now tiny items, able to fit into a box and pocket. +2017-05-18: + Joan: + - rscadd: Proselytizing alloy shards will now proselytize all the shards in the + tile, instead of requiring you to proselytize each one at a time. + Lordpidey: + - tweak: Space ninjas now use action buttons instead of verbs for a more consistent + user experience. + - rscadd: Toy toolboxes with realistic rumbling action have been added to arcade + prizes. + 'Tacolizard Forever: Plasmaman Powercreep': + - tweak: Plasmaman tanks are the same size as emergency oxygen tanks. + coiax: + - rscadd: Syndicate agents can purchase a "codespeak manual", that teaches them + a language that sounds like a series of codewords. You can also hit other people + with the manual to teach them. One use per manual. + - rscadd: Nuclear operatives have access to a deluxe manual that is more expensive + but has unlimited uses. + - rscadd: Syndicate AIs know Codespeak for free. + - bugfix: Spacevines can no longer spread on space transit turfs. + - balance: Plastic explosives can no longer be detonated by EMPs. + - rscadd: Various vending machines, when shooting their inventory at nearby people, + will "demonstrate their products features". This means that if a cigarette vending + machine throws a lighter at you, it will be on. Vending machines also choose + random products when throwing, rather than the first available one. + kevinz000: + - rscadd: Peacekeeper cyborgs now have projectile dampening fields. +2017-05-19: + 4dplanner: + - balance: the Hierophant club has gained in power +2017-05-20: + Joan: + - balance: Proto-kinetic crushers have been worked over by our highly qualified + techs, will recharge 12% faster, and no longer require very low-pressure atmospheres + to fire! + - balance: In addition, our techs have tweaked the quantum linker module and proto-kinetic + crushers can apply multiple marks to different targets! Marks applied may eventually + expire if not detonated. + Steelpoint: + - rscadd: All Pulse weapons now accurately show, by their sprites, what fire mode + they are in. + - rscadd: ERT, non-red alert, Security Response Officers spawn with a Tactical Energy + Gun. This is a military variant of the Egun that, in addition to laser and disable + rounds, has access to stun rounds. + - tweak: Pulse Pistols can now be recharged. + Swindly: + - rscadd: Added modified syringe guns. They fire DNA injectors. Geneticists and + CMOs can buy them from the traitor uplink for 14 TC. + coiax: + - rscadd: When a shuttle is called, sometimes an on-call admiral, using available + information to them, will recall the shuttle from Centcom. + octareenroon91: + - bugfix: Golems touching a shell can now choose to stay in their own body. diff --git a/html/changelogs/AutoChangeLog-pr-27192.yml b/html/changelogs/AutoChangeLog-pr-27192.yml deleted file mode 100644 index 293680b2b3c..00000000000 --- a/html/changelogs/AutoChangeLog-pr-27192.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Expletive" -delete-after: True -changes: - - rscadd: "Syndicate Tomes have been added to traitor uplinks for 9 TC. They let an agent or an operative provide both weal and woe." diff --git a/html/changelogs/AutoChangeLog-pr-27435.yml b/html/changelogs/AutoChangeLog-pr-27435.yml new file mode 100644 index 00000000000..ab6277afb7d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-27435.yml @@ -0,0 +1,4 @@ +author: "Gun Hog" +delete-after: True +changes: + - bugfix: "The Auxiliary Base can no longer land outside the lavaland map's boundaries." diff --git a/icons/effects/cult_effects.dmi b/icons/effects/cult_effects.dmi new file mode 100644 index 00000000000..58a2d3c9c97 Binary files /dev/null and b/icons/effects/cult_effects.dmi differ diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index fe537a8e739..eab44acdd79 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/effects/fields.dmi b/icons/effects/fields.dmi new file mode 100644 index 00000000000..5eadb96a1a0 Binary files /dev/null and b/icons/effects/fields.dmi differ diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index b9f0b18b90b..7f6f85b0044 100644 Binary files a/icons/mob/actions.dmi and b/icons/mob/actions.dmi differ diff --git a/icons/mob/belt.dmi b/icons/mob/belt.dmi index b9ddf041530..8fbd06a23be 100644 Binary files a/icons/mob/belt.dmi and b/icons/mob/belt.dmi differ diff --git a/icons/mob/feet.dmi b/icons/mob/feet.dmi index 062dc0b486e..94af51d6a7d 100644 Binary files a/icons/mob/feet.dmi and b/icons/mob/feet.dmi differ diff --git a/icons/mob/hands.dmi b/icons/mob/hands.dmi index dfe487caa8b..86b4d9dc71c 100644 Binary files a/icons/mob/hands.dmi and b/icons/mob/hands.dmi differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 6d9c093dc0b..247b3d10790 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/inhands/guns_lefthand.dmi b/icons/mob/inhands/guns_lefthand.dmi index fdb1fd88a01..025fe48c8fc 100644 Binary files a/icons/mob/inhands/guns_lefthand.dmi and b/icons/mob/inhands/guns_lefthand.dmi differ diff --git a/icons/mob/inhands/guns_righthand.dmi b/icons/mob/inhands/guns_righthand.dmi index edae1d5ba64..9c32d82b05d 100644 Binary files a/icons/mob/inhands/guns_righthand.dmi and b/icons/mob/inhands/guns_righthand.dmi differ diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi index b86c548b775..24438f397a1 100644 Binary files a/icons/mob/mask.dmi and b/icons/mob/mask.dmi differ diff --git a/icons/mob/neck.dmi b/icons/mob/neck.dmi index 53bc2616860..de13308f370 100644 Binary files a/icons/mob/neck.dmi and b/icons/mob/neck.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index 5aa18ecf86c..a3dd1e21bd2 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/obj/clockwork_objects.dmi b/icons/obj/clockwork_objects.dmi index 4b52f332052..a7c80ba5361 100644 Binary files a/icons/obj/clockwork_objects.dmi and b/icons/obj/clockwork_objects.dmi differ diff --git a/icons/obj/clothing/belts.dmi b/icons/obj/clothing/belts.dmi index 263e51400a6..441f334ca77 100644 Binary files a/icons/obj/clothing/belts.dmi and b/icons/obj/clothing/belts.dmi differ diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index fd078d775c1..48f37887cf0 100644 Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi index 7a3c416b945..c0f2d46f62b 100644 Binary files a/icons/obj/clothing/masks.dmi and b/icons/obj/clothing/masks.dmi differ diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi index 90e4ee53325..d936e41df43 100644 Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ diff --git a/icons/obj/guns/energy.dmi b/icons/obj/guns/energy.dmi index 3916befb125..71b1474a660 100644 Binary files a/icons/obj/guns/energy.dmi and b/icons/obj/guns/energy.dmi differ diff --git a/storage.dmi b/storage.dmi deleted file mode 100644 index 91055cc42c5..00000000000 Binary files a/storage.dmi and /dev/null differ diff --git a/tgstation.dme b/tgstation.dme index 56e998bbd45..60b4a72758c 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -31,6 +31,7 @@ #include "code\__DEFINES\combat.dm" #include "code\__DEFINES\construction.dm" #include "code\__DEFINES\contracts.dm" +#include "code\__DEFINES\cult.dm" #include "code\__DEFINES\DNA.dm" #include "code\__DEFINES\events.dm" #include "code\__DEFINES\flags.dm" @@ -167,6 +168,7 @@ #include "code\controllers\subsystem\dbcore.dm" #include "code\controllers\subsystem\disease.dm" #include "code\controllers\subsystem\events.dm" +#include "code\controllers\subsystem\fields.dm" #include "code\controllers\subsystem\fire_burning.dm" #include "code\controllers\subsystem\garbage.dm" #include "code\controllers\subsystem\icon_smooth.dm" @@ -234,6 +236,7 @@ #include "code\datums\antagonists\antag_datum.dm" #include "code\datums\antagonists\datum_clockcult.dm" #include "code\datums\antagonists\datum_cult.dm" +#include "code\datums\antagonists\ninja.dm" #include "code\datums\diseases\_disease.dm" #include "code\datums\diseases\_MobProcs.dm" #include "code\datums\diseases\anxiety.dm" @@ -437,6 +440,7 @@ #include "code\game\gamemodes\cult\cult_items.dm" #include "code\game\gamemodes\cult\cult_structures.dm" #include "code\game\gamemodes\cult\ritual.dm" +#include "code\game\gamemodes\cult\rune_spawn_action.dm" #include "code\game\gamemodes\cult\runes.dm" #include "code\game\gamemodes\cult\supply.dm" #include "code\game\gamemodes\cult\talisman.dm" @@ -677,10 +681,10 @@ #include "code\game\objects\effects\decals\decal.dm" #include "code\game\objects\effects\decals\misc.dm" #include "code\game\objects\effects\decals\remains.dm" -#include "code\game\objects\effects\decals\Cleanable\aliens.dm" -#include "code\game\objects\effects\decals\Cleanable\humans.dm" -#include "code\game\objects\effects\decals\Cleanable\misc.dm" -#include "code\game\objects\effects\decals\Cleanable\robots.dm" +#include "code\game\objects\effects\decals\cleanable\aliens.dm" +#include "code\game\objects\effects\decals\cleanable\humans.dm" +#include "code\game\objects\effects\decals\cleanable\misc.dm" +#include "code\game\objects\effects\decals\cleanable\robots.dm" #include "code\game\objects\effects\effect_system\effect_system.dm" #include "code\game\objects\effects\effect_system\effects_explosion.dm" #include "code\game\objects\effects\effect_system\effects_foam.dm" @@ -695,6 +699,10 @@ #include "code\game\objects\effects\spawners\structure.dm" #include "code\game\objects\effects\spawners\vaultspawner.dm" #include "code\game\objects\effects\spawners\xeno_egg_delivery.dm" +#include "code\game\objects\effects\temporary_visuals\clockcult.dm" +#include "code\game\objects\effects\temporary_visuals\cult.dm" +#include "code\game\objects\effects\temporary_visuals\miscellaneous.dm" +#include "code\game\objects\effects\temporary_visuals\temporary_visual.dm" #include "code\game\objects\items\apc_frame.dm" #include "code\game\objects\items\blueprints.dm" #include "code\game\objects\items\body_egg.dm" @@ -1258,6 +1266,9 @@ #include "code\modules\events\wizard\rpgloot.dm" #include "code\modules\events\wizard\shuffle.dm" #include "code\modules\events\wizard\summons.dm" +#include "code\modules\fields\fields.dm" +#include "code\modules\fields\peaceborg_dampener.dm" +#include "code\modules\fields\turf_objects.dm" #include "code\modules\flufftext\Dreaming.dm" #include "code\modules\flufftext\Hallucination.dm" #include "code\modules\flufftext\TextFilters.dm" @@ -1380,6 +1391,7 @@ #include "code\modules\jobs\job_types\security.dm" #include "code\modules\jobs\job_types\silicon.dm" #include "code\modules\jobs\map_changes\map_changes.dm" +#include "code\modules\language\codespeak.dm" #include "code\modules\language\common.dm" #include "code\modules\language\draconic.dm" #include "code\modules\language\drone.dm" @@ -1754,7 +1766,6 @@ #include "code\modules\modular_computers\NTNet\NTNet_relay.dm" #include "code\modules\modular_computers\NTNet\NTNRC\conversation.dm" #include "code\modules\ninja\__ninjaDefines.dm" -#include "code\modules\ninja\admin_ninja_verbs.dm" #include "code\modules\ninja\energy_katana.dm" #include "code\modules\ninja\ninja_event.dm" #include "code\modules\ninja\Ninja_Readme.dm"
[G.name] Gang: [round((G.territory.len/GLOB.start_state.num_territories)*100, 1)]% Control