diff --git a/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm b/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm index df9c798059c..810ff076094 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm @@ -4,12 +4,10 @@ d1 = 4; d2 = 8; icon_state = "4-8"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -91,7 +89,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -161,7 +158,6 @@ specialfunctions = 4 }, /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "brown" }, /area/ruin/unpowered/syndicate_space_base/cargo) @@ -243,8 +239,7 @@ /area/ruin/unpowered/syndicate_space_base/virology) "cB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5; - level = 1 + dir = 5 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -255,7 +250,6 @@ d1 = 4; d2 = 8; icon_state = "4-8"; - pixel_y = 0; tag = "" }, /obj/machinery/light, @@ -266,8 +260,7 @@ "cD" = ( /obj/machinery/atmospherics/pipe/manifold/visible{ dir = 4; - initialize_directions = 11; - level = 2 + initialize_directions = 11 }, /obj/machinery/meter, /turf/simulated/floor/plating, @@ -292,8 +285,7 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5; - level = 1 + dir = 5 }, /turf/simulated/floor/engine, /area/ruin/unpowered/syndicate_space_base/testlab) @@ -330,8 +322,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4; - initialize_directions = 11; - level = 1 + initialize_directions = 11 }, /turf/simulated/floor/plasteel{ icon_state = "floorgrime" @@ -413,7 +404,6 @@ d1 = 4; d2 = 8; icon_state = "4-8"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/unary/vent_scrubber/on, @@ -465,7 +455,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -482,7 +471,6 @@ /obj/machinery/kitchen_machine/microwave, /obj/structure/table, /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)" }, @@ -533,7 +521,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ @@ -551,7 +538,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /turf/simulated/floor/engine, @@ -597,7 +583,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/machinery/door/firedoor, @@ -636,7 +621,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /turf/simulated/floor/plasteel{ @@ -687,8 +671,7 @@ "gZ" = ( /obj/machinery/light, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -725,8 +708,7 @@ /area/ruin/unpowered/syndicate_space_base/chemistry) "hq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -778,8 +760,7 @@ "hR" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plasteel{ @@ -791,12 +772,10 @@ d1 = 4; d2 = 8; icon_state = "4-8"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -808,14 +787,12 @@ "hX" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4; - initialize_directions = 11; - level = 1 + initialize_directions = 11 }, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/structure/cable{ @@ -864,7 +841,6 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)" }, @@ -875,7 +851,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/machinery/door/firedoor, @@ -1018,8 +993,7 @@ "jS" = ( /obj/machinery/atmospherics/pipe/manifold/visible{ dir = 4; - initialize_directions = 11; - level = 2 + initialize_directions = 11 }, /obj/machinery/meter, /turf/simulated/floor/plasteel{ @@ -1147,7 +1121,6 @@ /obj/machinery/optable, /obj/machinery/light, /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)" }, @@ -1221,7 +1194,6 @@ }, /obj/effect/decal/cleanable/dirt, /obj/structure/cable/yellow{ - d1 = 0; d2 = 2; icon_state = "0-2" }, @@ -1273,9 +1245,7 @@ "mX" = ( /obj/structure/sink{ dir = 4; - icon_state = "sink"; - pixel_x = 10; - pixel_y = 0 + pixel_x = 10 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -1292,7 +1262,6 @@ d1 = 4; d2 = 8; icon_state = "4-8"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ @@ -1313,7 +1282,6 @@ }, /obj/structure/table, /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)" }, @@ -1353,7 +1321,6 @@ /area/ruin/unpowered/syndicate_space_base/testlab) "ny" = ( /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)" }, @@ -1378,7 +1345,6 @@ d1 = 4; d2 = 8; icon_state = "4-8"; - pixel_y = 0; tag = "" }, /turf/simulated/floor/plasteel{ @@ -1412,8 +1378,7 @@ "ob" = ( /obj/machinery/door/airlock/hatch/syndicate, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -1428,12 +1393,10 @@ d1 = 4; d2 = 8; icon_state = "4-8"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -1492,8 +1455,7 @@ tag = "90Curve" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /turf/simulated/floor/plasteel, /area/ruin/unpowered/syndicate_space_base/cargo) @@ -1530,7 +1492,6 @@ /obj/machinery/light, /obj/machinery/cryopod/offstation, /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "darkblue" }, /area/ruin/unpowered/syndicate_space_base/dormitories) @@ -1542,26 +1503,13 @@ /area/ruin/unpowered/syndicate_space_base/bar) "pA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/ruin/unpowered/syndicate_space_base/engineering) -"pG" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/ruin/unpowered/syndicate_space_base/main) "pI" = ( /obj/structure/table/reinforced, /obj/item/retractor, @@ -1586,7 +1534,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/machinery/door/firedoor, @@ -1604,7 +1551,6 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/computer/operating, /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)" }, @@ -1627,8 +1573,7 @@ "qN" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4; - initialize_directions = 11; - level = 1 + initialize_directions = 11 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ @@ -1668,7 +1613,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /turf/simulated/floor/plasteel{ @@ -1681,12 +1625,10 @@ d1 = 4; d2 = 8; icon_state = "4-8"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -1720,8 +1662,7 @@ /area/ruin/unpowered/syndicate_space_base/arrivals) "rK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -1770,13 +1711,6 @@ icon_state = "dark" }, /area/ruin/unpowered/syndicate_space_base/arrivals) -"sw" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 - }, -/turf/simulated/floor/engine, -/area/ruin/unpowered/syndicate_space_base/testlab) "sz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/navbeacon/invisible{ @@ -1787,7 +1721,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -1816,14 +1749,12 @@ /area/ruin/unpowered/syndicate_space_base/telecomms) "tf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /obj/structure/cable{ d1 = 4; d2 = 8; icon_state = "4-8"; - pixel_y = 0; tag = "" }, /obj/machinery/alarm/syndicate{ @@ -1848,7 +1779,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ @@ -1867,8 +1797,7 @@ dir = 6 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6; - level = 1 + dir = 6 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -1966,7 +1895,6 @@ /area/ruin/unpowered/syndicate_space_base/engineering) "uJ" = ( /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)" }, @@ -1992,13 +1920,11 @@ }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4; - initialize_directions = 11; - level = 1 + initialize_directions = 11 }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1; - initialize_directions = 11; - level = 1 + initialize_directions = 11 }, /turf/simulated/floor/engine, /area/ruin/unpowered/syndicate_space_base/testlab) @@ -2008,7 +1934,6 @@ d1 = 4; d2 = 8; icon_state = "4-8"; - pixel_y = 0; tag = "" }, /obj/machinery/door/firedoor, @@ -2033,7 +1958,6 @@ "vk" = ( /obj/machinery/kitchen_machine/grill, /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)" }, @@ -2057,7 +1981,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/structure/cable{ @@ -2155,8 +2078,7 @@ "wc" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1; - initialize_directions = 11; - level = 1 + initialize_directions = 11 }, /turf/simulated/floor/plating, /area/ruin/unpowered/syndicate_space_base/engineering) @@ -2192,7 +2114,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -2261,6 +2182,12 @@ icon_state = "white" }, /area/ruin/unpowered/syndicate_space_base/virology) +"wD" = ( +/obj/machinery/computer/arcade, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/unpowered/syndicate_space_base/arrivals) "wJ" = ( /obj/structure/window/plasmareinforced{ dir = 1 @@ -2268,8 +2195,7 @@ /obj/effect/turf_decal/caution/red, /obj/machinery/atmospherics/pipe/manifold/visible{ dir = 4; - initialize_directions = 11; - level = 2 + initialize_directions = 11 }, /obj/machinery/meter, /turf/simulated/floor/plasteel{ @@ -2280,21 +2206,18 @@ /obj/item/kitchen/rollingpin, /obj/structure/table, /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)" }, /area/ruin/unpowered/syndicate_space_base/bar) "wX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /obj/structure/cable{ d1 = 4; d2 = 8; icon_state = "4-8"; - pixel_y = 0; tag = "" }, /obj/structure/cable{ @@ -2382,7 +2305,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/structure/cable{ @@ -2398,14 +2320,12 @@ /area/ruin/unpowered/syndicate_space_base/main) "xN" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /obj/structure/cable{ d1 = 4; d2 = 8; icon_state = "4-8"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -2436,7 +2356,6 @@ d1 = 4; d2 = 8; icon_state = "4-8"; - pixel_y = 0; tag = "" }, /turf/simulated/floor/plasteel{ @@ -2448,7 +2367,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/structure/cable{ @@ -2514,9 +2432,7 @@ }, /area/ruin/unpowered/syndicate_space_base/telecomms) "zs" = ( -/obj/structure/sign/biohazard{ - pixel_y = 0 - }, +/obj/structure/sign/biohazard, /turf/simulated/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_space_base/virology) "zG" = ( @@ -2650,8 +2566,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /turf/simulated/floor/plating, /area/ruin/unpowered/syndicate_space_base/engineering) @@ -2704,7 +2619,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -2723,8 +2637,7 @@ /area/ruin/unpowered/syndicate_space_base/main) "Ce" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -2738,15 +2651,13 @@ /area/ruin/unpowered/syndicate_space_base/arrivals) "Cj" = ( /obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_x = -3; - pixel_y = 0 + pixel_x = -3 }, /obj/item/reagent_containers/food/condiment/peppermill{ pixel_x = 3 }, /obj/structure/table, /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)" }, @@ -2802,7 +2713,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/unary/vent_pump/on, @@ -2811,8 +2721,7 @@ "Dp" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4; - initialize_directions = 11; - level = 1 + initialize_directions = 11 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ @@ -2842,7 +2751,6 @@ dir = 8 }, /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "darkblue" }, /area/ruin/unpowered/syndicate_space_base/dormitories) @@ -2854,7 +2762,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /turf/simulated/floor/plating, @@ -2892,7 +2799,6 @@ /obj/item/clothing/gloves/combat, /obj/machinery/light, /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "darkred" }, /area/ruin/unpowered/syndicate_space_base/cargo) @@ -2906,8 +2812,7 @@ /area/ruin/unpowered/syndicate_space_base/virology) "El" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -2930,7 +2835,6 @@ dir = 1 }, /obj/structure/cable/yellow{ - d1 = 0; d2 = 2; icon_state = "0-2" }, @@ -2955,7 +2859,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/machinery/door/firedoor, @@ -3027,7 +2930,6 @@ /area/ruin/unpowered/syndicate_space_base/engineering) "EX" = ( /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "darkbluecorners" }, /area/ruin/unpowered/syndicate_space_base/dormitories) @@ -3069,7 +2971,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -3088,7 +2989,6 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "darkblue" }, /area/ruin/unpowered/syndicate_space_base/dormitories) @@ -3147,7 +3047,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -3161,12 +3060,10 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -3201,7 +3098,6 @@ "Go" = ( /obj/machinery/cooker/deepfryer, /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)" }, @@ -3219,8 +3115,7 @@ /area/ruin/unpowered/syndicate_space_base/dormitories) "GJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /obj/structure/extinguisher_cabinet{ pixel_x = -5; @@ -3230,7 +3125,6 @@ d1 = 4; d2 = 8; icon_state = "4-8"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -3255,7 +3149,6 @@ d1 = 4; d2 = 8; icon_state = "4-8"; - pixel_y = 0; tag = "" }, /obj/machinery/door/firedoor, @@ -3271,8 +3164,7 @@ /area/ruin/unpowered/syndicate_space_base/engineering) "GY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 @@ -3309,7 +3201,6 @@ "HB" = ( /obj/structure/sink{ dir = 8; - icon_state = "sink"; pixel_x = -12; pixel_y = 2 }, @@ -3385,8 +3276,7 @@ /area/ruin/unpowered/syndicate_space_base/bar) "Iv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /turf/simulated/floor/plasteel, /area/ruin/unpowered/syndicate_space_base/cargo) @@ -3405,7 +3295,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /turf/simulated/floor/plasteel{ @@ -3508,7 +3397,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -3522,7 +3410,6 @@ d1 = 4; d2 = 8; icon_state = "4-8"; - pixel_y = 0; tag = "" }, /obj/structure/cable{ @@ -3575,7 +3462,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ @@ -3609,7 +3495,6 @@ /obj/machinery/processor, /obj/structure/table, /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)" }, @@ -3709,7 +3594,6 @@ /obj/item/reagent_containers/food/drinks/shaker, /obj/structure/table, /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)" }, @@ -3734,7 +3618,6 @@ shock_proof = 1 }, /obj/structure/cable/yellow{ - d1 = 0; d2 = 2; icon_state = "0-2" }, @@ -3751,7 +3634,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/structure/cable{ @@ -3762,8 +3644,7 @@ }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4; - initialize_directions = 11; - level = 1 + initialize_directions = 11 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ @@ -3856,14 +3737,12 @@ /area/ruin/unpowered/syndicate_space_base/engineering) "Mi" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /obj/structure/cable{ d1 = 4; d2 = 8; icon_state = "4-8"; - pixel_y = 0; tag = "" }, /obj/structure/cable{ @@ -3913,7 +3792,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ @@ -4000,7 +3878,6 @@ d1 = 4; d2 = 8; icon_state = "4-8"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -4030,12 +3907,10 @@ d1 = 4; d2 = 8; icon_state = "4-8"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -4047,7 +3922,6 @@ "Ot" = ( /obj/machinery/light, /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "darkred" }, /area/ruin/unpowered/syndicate_space_base/arrivals) @@ -4122,7 +3996,6 @@ d1 = 4; d2 = 8; icon_state = "4-8"; - pixel_y = 0; tag = "" }, /turf/simulated/floor/plasteel{ @@ -4165,7 +4038,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/machinery/door/firedoor, @@ -4179,8 +4051,7 @@ "QO" = ( /obj/machinery/light, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -4244,7 +4115,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -4295,7 +4165,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ @@ -4349,8 +4218,7 @@ /area/ruin/unpowered/syndicate_space_base/dormitories) "SQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /turf/simulated/floor/plating, /area/ruin/unpowered/syndicate_space_base/engineering) @@ -4414,8 +4282,7 @@ "Tl" = ( /obj/machinery/atmospherics/pipe/manifold/visible{ dir = 4; - initialize_directions = 11; - level = 2 + initialize_directions = 11 }, /turf/simulated/floor/plating, /area/ruin/unpowered/syndicate_space_base/engineering) @@ -4489,7 +4356,6 @@ d1 = 4; d2 = 8; icon_state = "4-8"; - pixel_y = 0; tag = "" }, /obj/machinery/alarm/syndicate{ @@ -4514,8 +4380,7 @@ /area/ruin/unpowered/syndicate_space_base/cargo) "Us" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/plasteel{ @@ -4559,7 +4424,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/effect/turf_decal/stripes/line{ @@ -4630,14 +4494,12 @@ dir = 8 }, /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "darkblue" }, /area/ruin/unpowered/syndicate_space_base/dormitories) "VQ" = ( /obj/machinery/shower{ dir = 8; - icon_state = "shower"; tag = "icon-shower (WEST)" }, /obj/item/soap/syndie, @@ -4653,7 +4515,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /turf/simulated/floor/plasteel{ @@ -4663,7 +4524,6 @@ "Wi" = ( /obj/machinery/kitchen_machine/candy_maker, /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)" }, @@ -4690,8 +4550,6 @@ /area/ruin/unpowered/syndicate_space_base/engineering) "Wz" = ( /obj/structure/sign/lifestar{ - desc = "The Star of Life, a symbol of Medical Aid."; - icon_state = "lifestar"; name = "Medbay" }, /turf/simulated/wall/mineral/plastitanium/nodiagonal, @@ -4702,7 +4560,6 @@ }, /obj/structure/table, /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)" }, @@ -4742,7 +4599,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -4791,7 +4647,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /turf/simulated/floor/plasteel{ @@ -4802,20 +4657,17 @@ /area/ruin/unpowered/syndicate_space_base/chemistry) "Ya" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 + dir = 4 }, /obj/structure/cable{ d1 = 4; d2 = 8; icon_state = "4-8"; - pixel_y = 0; tag = "" }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1; - initialize_directions = 11; - level = 1 + initialize_directions = 11 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -4826,7 +4678,6 @@ d1 = 1; d2 = 2; icon_state = "1-2"; - pixel_y = 0; tag = "" }, /obj/machinery/door/firedoor, @@ -4890,7 +4741,6 @@ d1 = 4; d2 = 8; icon_state = "4-8"; - pixel_y = 0; tag = "" }, /turf/simulated/floor/plating, @@ -6796,7 +6646,7 @@ El uk uk yz -pG +ZB uk uk uk @@ -7117,7 +6967,7 @@ TD Rn Vl Vl -sw +Ri Vc Vl Vl @@ -7179,7 +7029,7 @@ TD Vl Vl Vl -sw +Ri Vc Vl Vl @@ -7241,7 +7091,7 @@ TD Vl Vl Vl -sw +Ri Vc Vl Vl @@ -7303,7 +7153,7 @@ TD Vl Vl Vl -sw +Ri Vc Vl Vl @@ -7411,7 +7261,7 @@ yZ qF qF Em -ss +wD WG WG aj diff --git a/code/datums/spell.dm b/code/datums/spell.dm index db668cd609a..6590876ea2f 100644 --- a/code/datums/spell.dm +++ b/code/datums/spell.dm @@ -503,8 +503,8 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) revert_cast(user) return FALSE - perform(targets, user = user, make_attack_logs = create_logs) remove_ranged_ability(user) + perform(targets, user = user, make_attack_logs = create_logs) return TRUE /* Checks if a target is valid diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 5ee45d3291f..2bf9f914ad0 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -572,9 +572,10 @@ GLOBAL_LIST_INIT(all_supply_groups, list(SUPPLY_EMERGENCY,SUPPLY_SECURITY,SUPPLY containername = "electrical maintenance crate" /datum/supply_packs/vending/engivend - name = "EngiVend Supply Crate" - cost = 15 - contains = list(/obj/item/vending_refill/engivend) + name = "Engineering Vendor Supply Crate" + cost = 20 + contains = list(/obj/item/vending_refill/engivend, + /obj/item/vending_refill/youtool) containername = "engineering supply crate" /datum/supply_packs/engineering/powergamermitts diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm index d0d1bf81e71..0340352412a 100644 --- a/code/game/gamemodes/vampire/vampire_powers.dm +++ b/code/game/gamemodes/vampire/vampire_powers.dm @@ -424,7 +424,7 @@ name = "Mist Form (30)" desc = "You take on the form of mist for a short period of time." gain_desc = "You have gained the Mist Form ability which allows you to take on the form of mist for a short period and pass over any obstacle in your path." - action_icon_state = "jaunt" + action_icon_state = "mist" charge_max = 600 required_blood = 30 centcom_cancast = 0 @@ -436,28 +436,23 @@ var/originalloc = get_turf(user.loc) var/obj/effect/dummy/spell_jaunt/holder = new /obj/effect/dummy/spell_jaunt(originalloc) var/atom/movable/overlay/animation = new /atom/movable/overlay(originalloc) - animation.name = "water" + animation.name = "blood" animation.density = 0 animation.anchored = 1 animation.icon = 'icons/mob/mob.dmi' - animation.icon_state = "liquify" + animation.icon_state = "empty" animation.layer = 5 animation.master = holder U.ExtinguishMob() - flick("liquify", animation) + flick("mist", animation) user.forceMove(holder) user.client.eye = holder - var/datum/effect_system/steam_spread/steam = new /datum/effect_system/steam_spread() - steam.set_up(10, 0, originalloc) - steam.start() sleep(jaunt_duration) var/mobloc = get_turf(user.loc) animation.loc = mobloc - steam.location = mobloc - steam.start() user.canmove = 0 sleep(20) - flick("reappear",animation) + flick("mist_reappear", animation) sleep(5) if(!user.Move(mobloc)) for(var/direction in list(1,2,4,8,5,6,9,10)) @@ -476,7 +471,7 @@ name = "Shadowstep (30)" desc = "Vanish into the shadows." gain_desc = "You have gained the ability to shadowstep, which makes you disappear into nearby shadows at the cost of blood." - action_icon_state = "blink" + action_icon_state = "shadowblink" charge_max = 20 required_blood = 30 centcom_cancast = 0 diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 6cba8733a2d..78895d0d099 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -1,52 +1,18 @@ -/obj/structure/computerframe - density = 1 - anchored = 0 - name = "computer frame" - icon = 'icons/obj/stock_parts.dmi' - icon_state = "0" - max_integrity = 100 - var/state = 0 - var/obj/item/circuitboard/circuit = null - -/obj/structure/computerframe/deconstruct(disassembled = TRUE) - if(!(flags & NODECONSTRUCT)) - drop_computer_parts() - return ..() // will qdel the frame - -/obj/structure/computerframe/obj_break(damage_flag) - deconstruct() - -/obj/structure/computerframe/proc/drop_computer_parts() - new /obj/item/stack/sheet/metal(loc, 5) - if(circuit) - circuit.forceMove(loc) - circuit = null - if(state >= 3) - var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( loc ) - A.amount = 5 - if(state >= 4) - new /obj/item/stack/sheet/glass(loc, 2) - /obj/item/circuitboard - density = 0 - anchored = 0 - w_class = WEIGHT_CLASS_SMALL + /// Use `board_name` instead of this. name = "circuit board" icon = 'icons/obj/module.dmi' icon_state = "id_mod" item_state = "electronic" origin_tech = "programming=2" + w_class = WEIGHT_CLASS_SMALL materials = list(MAT_GLASS=200) - var/id = null - var/frequency = null + usesound = 'sound/items/deconstruct.ogg' + /// Use this instead of `name`. Formats as: `circuit board ([board_name])` + var/board_name = null var/build_path = null var/board_type = "computer" var/list/req_components = null - var/powernet = null - var/list/records = null - var/contain_parts = 1 - toolspeed = 1 - usesound = 'sound/items/deconstruct.ogg' /obj/item/circuitboard/computer board_type = "computer" @@ -54,6 +20,16 @@ /obj/item/circuitboard/machine board_type = "machine" +/obj/item/circuitboard/Initialize(mapload) + . = ..() + format_board_name() + +/obj/item/circuitboard/proc/format_board_name() + if(board_name) // Should always have this, but just in case. + name = "[initial(name)] ([board_name])" + else + name = "[initial(name)]" + /obj/item/circuitboard/examine(mob/user) . = ..() if(LAZYLEN(req_components)) @@ -66,480 +42,597 @@ . += "Required components: [english_list(nice_list)]." /obj/item/circuitboard/message_monitor - name = "Circuit board (Message Monitor)" + board_name = "Message Monitor" build_path = /obj/machinery/computer/message_monitor origin_tech = "programming=2" + /obj/item/circuitboard/camera - name = "Circuit board (Camera Monitor)" + board_name = "Camera Monitor" build_path = /obj/machinery/computer/security origin_tech = "programming=2;combat=2" /obj/item/circuitboard/camera/telescreen - name = "Circuit board (Telescreen)" + board_name = "Telescreen" build_path = /obj/machinery/computer/security/telescreen + /obj/item/circuitboard/camera/telescreen/entertainment - name = "Circuit board (Entertainment Monitor)" + board_name = "Entertainment Monitor" build_path = /obj/machinery/computer/security/telescreen/entertainment + /obj/item/circuitboard/camera/wooden_tv - name = "Circuit board (Wooden TV)" + board_name = "Wooden TV" build_path = /obj/machinery/computer/security/wooden_tv + /obj/item/circuitboard/camera/mining - name = "Circuit board (Outpost Camera Monitor)" + board_name = "Outpost Camera Monitor" build_path = /obj/machinery/computer/security/mining + /obj/item/circuitboard/camera/engineering - name = "Circuit board (Engineering Camera Monitor)" + board_name = "Engineering Camera Monitor" build_path = /obj/machinery/computer/security/engineering - /obj/item/circuitboard/xenobiology - name = "Circuit board (Xenobiology Console)" + board_name = "Xenobiology Console" build_path = /obj/machinery/computer/camera_advanced/xenobio origin_tech = "programming=3;biotech=3" + /obj/item/circuitboard/aicore - name = "Circuit board (AI Core)" + board_name = "AI Core" origin_tech = "programming=3" board_type = "other" + /obj/item/circuitboard/aiupload - name = "Circuit board (AI Upload)" + board_name = "AI Upload" build_path = /obj/machinery/computer/aiupload origin_tech = "programming=4;engineering=4" + /obj/item/circuitboard/borgupload - name = "Circuit board (Cyborg Upload)" + board_name = "Cyborg Upload" build_path = /obj/machinery/computer/borgupload origin_tech = "programming=4;engineering=4" + /obj/item/circuitboard/med_data - name = "Circuit board (Medical Records)" + board_name = "Medical Records" build_path = /obj/machinery/computer/med_data origin_tech = "programming=2;biotech=2" + /obj/item/circuitboard/pandemic - name = "circuit board (PanD.E.M.I.C. 2200)" + board_name = "PanD.E.M.I.C. 2200" build_path = /obj/machinery/computer/pandemic origin_tech = "programming=2;biotech=2" + /obj/item/circuitboard/scan_consolenew - name = "Circuit board (DNA Machine)" + board_name = "DNA Machine" build_path = /obj/machinery/computer/scan_consolenew origin_tech = "programming=2;biotech=2" + /obj/item/circuitboard/communications - name = "Circuit board (Communications Console)" + board_name = "Communications Console" build_path = /obj/machinery/computer/communications origin_tech = "programming=3;magnets=3" + /obj/item/circuitboard/card - name = "Circuit board (ID Computer)" + board_name = "ID Computer" build_path = /obj/machinery/computer/card origin_tech = "programming=3" + /obj/item/circuitboard/card/minor - name = "Circuit board (Dept ID Computer)" + board_name = "Dept ID Computer" build_path = /obj/machinery/computer/card/minor var/target_dept = TARGET_DEPT_GENERIC + /obj/item/circuitboard/card/minor/hos - name = "Circuit board (Sec ID Computer)" + board_name = "Sec ID Computer" build_path = /obj/machinery/computer/card/minor/hos target_dept = TARGET_DEPT_SEC + /obj/item/circuitboard/card/minor/cmo - name = "Circuit board (Medical ID Computer)" + board_name = "Medical ID Computer" build_path = /obj/machinery/computer/card/minor/cmo target_dept = TARGET_DEPT_MED + /obj/item/circuitboard/card/minor/rd - name = "Circuit board (Science ID Computer)" + board_name = "Science ID Computer" build_path = /obj/machinery/computer/card/minor/rd target_dept = TARGET_DEPT_SCI + /obj/item/circuitboard/card/minor/ce - name = "Circuit board (Engineering ID Computer)" + board_name = "Engineering ID Computer" build_path = /obj/machinery/computer/card/minor/ce target_dept = TARGET_DEPT_ENG + /obj/item/circuitboard/card/centcom - name = "Circuit board (CentComm ID Computer)" + board_name = "CentComm ID Computer" build_path = /obj/machinery/computer/card/centcom + /obj/item/circuitboard/teleporter - name = "Circuit board (Teleporter Console)" + board_name = "Teleporter Console" build_path = /obj/machinery/computer/teleporter origin_tech = "programming=3;bluespace=3;plasmatech=3" + /obj/item/circuitboard/secure_data - name = "Circuit board (Security Records)" + board_name = "Security Records" build_path = /obj/machinery/computer/secure_data origin_tech = "programming=2;combat=2" + /obj/item/circuitboard/stationalert_engineering - name = "Circuit Board (Station Alert Console (Engineering))" + board_name = "Station Alert Console - Engineering" build_path = /obj/machinery/computer/station_alert + /obj/item/circuitboard/stationalert - name = "Circuit Board (Station Alert Console)" + board_name = "Station Alert Console" build_path = /obj/machinery/computer/station_alert + /obj/item/circuitboard/atmos_alert - name = "Circuit Board (Atmospheric Alert Computer)" + board_name = "Atmospheric Alert Computer" build_path = /obj/machinery/computer/atmos_alert + /obj/item/circuitboard/atmoscontrol - name = "Circuit Board (Central Atmospherics Computer)" + board_name = "Central Atmospherics Computer" build_path = /obj/machinery/computer/atmoscontrol + /obj/item/circuitboard/air_management - name = "Circuit board (Atmospheric Monitor)" + board_name = "Atmospheric Monitor" build_path = /obj/machinery/computer/general_air_control + /obj/item/circuitboard/injector_control - name = "Circuit board (Injector Control)" + board_name = "Injector Control" build_path = /obj/machinery/computer/general_air_control/fuel_injection + /obj/item/circuitboard/pod - name = "Circuit board (Massdriver Control)" + board_name = "Massdriver Control" build_path = /obj/machinery/computer/pod + /obj/item/circuitboard/pod/deathsquad - name = "Circuit board (Deathsquad Massdriver control)" + board_name = "Deathsquad Massdriver Control" build_path = /obj/machinery/computer/pod/deathsquad + /obj/item/circuitboard/robotics - name = "Circuit board (Robotics Control Console)" + board_name = "Robotics Control Console" build_path = /obj/machinery/computer/robotics origin_tech = "programming=3" + /obj/item/circuitboard/drone_control - name = "Circuit board (Drone Control)" + board_name = "Drone Control" build_path = /obj/machinery/computer/drone_control origin_tech = "programming=3" + /obj/item/circuitboard/cloning - name = "Circuit board (Cloning Machine Console)" + board_name = "Cloning Machine Console" build_path = /obj/machinery/computer/cloning origin_tech = "programming=2;biotech=2" + /obj/item/circuitboard/arcade/battle - name = "circuit board (Arcade Battle)" + board_name = "Arcade Battle" build_path = /obj/machinery/computer/arcade/battle origin_tech = "programming=1" + /obj/item/circuitboard/arcade/orion_trail - name = "circuit board (Orion Trail)" + board_name = "Orion Trail" build_path = /obj/machinery/computer/arcade/orion_trail origin_tech = "programming=1" + /obj/item/circuitboard/solar_control - name = "Circuit board (Solar Control)" + board_name = "Solar Control" build_path = /obj/machinery/power/solar_control origin_tech = "programming=2;powerstorage=2" + /obj/item/circuitboard/powermonitor - name = "Circuit board (Power Monitor)" + board_name = "Power Monitor" build_path = /obj/machinery/computer/monitor origin_tech = "programming=2;powerstorage=2" + /obj/item/circuitboard/powermonitor/secret - name = "Circuit board (Outdated Power Monitor)" + board_name = "Outdated Power Monitor" build_path = /obj/machinery/computer/monitor/secret origin_tech = "programming=2;powerstorage=2" + /obj/item/circuitboard/olddoor - name = "Circuit board (DoorMex)" + board_name = "DoorMex" build_path = /obj/machinery/computer/pod/old + /obj/item/circuitboard/syndicatedoor - name = "Circuit board (ProComp Executive)" + board_name = "ProComp Executive" build_path = /obj/machinery/computer/pod/old/syndicate + /obj/item/circuitboard/swfdoor - name = "Circuit board (Magix)" + board_name = "Magix" build_path = /obj/machinery/computer/pod/old/swf + /obj/item/circuitboard/prisoner - name = "Circuit board (Prisoner Management)" + board_name = "Prisoner Management" build_path = /obj/machinery/computer/prisoner + /obj/item/circuitboard/brigcells - name = "Circuit board (Brig Cell Control)" + board_name = "Brig Cell Control" build_path = /obj/machinery/computer/brigcells + /obj/item/circuitboard/sm_monitor - name = "Circuit board (Supermatter Monitoring Console)" + board_name = "Supermatter Monitoring Console" build_path = /obj/machinery/computer/sm_monitor origin_tech = "programming=2;powerstorage=2" -// RD console circuits, so that {de,re}constructing one of the special consoles doesn't ruin everything forever +// RD console circuits, so that de/reconstructing one of the special consoles doesn't ruin everything forever /obj/item/circuitboard/rdconsole - name = "Circuit Board (RD Console)" + board_name = "RD Console" desc = "Swipe a Scientist level ID or higher to reconfigure." build_path = /obj/machinery/computer/rdconsole/core req_access = list(ACCESS_TOX) // This is for adjusting the type of computer we're building - in case something messes up the pre-existing robotics or mechanics consoles - var/access_types = list("R&D Core", "Robotics", "E.X.P.E.R.I-MENTOR", "Mechanics", "Public") - id = 1 + var/list/access_types = list("R&D Core", "Robotics", "E.X.P.E.R.I-MENTOR", "Mechanics", "Public") + /obj/item/circuitboard/rdconsole/robotics - name = "Circuit Board (RD Console - Robotics)" + board_name = "RD Console - Robotics" build_path = /obj/machinery/computer/rdconsole/robotics - id = 2 + /obj/item/circuitboard/rdconsole/experiment - name = "Circuit Board (RD Console - E.X.P.E.R.I-MENTOR)" + board_name = "RD Console - E.X.P.E.R.I-MENTOR" build_path = /obj/machinery/computer/rdconsole/experiment - id = 3 + /obj/item/circuitboard/rdconsole/mechanics - name = "Circuit Board (RD Console - Mechanics)" + board_name = "RD Console - Mechanics" build_path = /obj/machinery/computer/rdconsole/mechanics - id = 4 + /obj/item/circuitboard/rdconsole/public - name = "Circuit Board (RD Console - Public)" + board_name = "RD Console - Public" build_path = /obj/machinery/computer/rdconsole/public - id = 5 /obj/item/circuitboard/mecha_control - name = "Circuit Board (Exosuit Control Console)" + board_name = "Exosuit Control Console" build_path = /obj/machinery/computer/mecha + /obj/item/circuitboard/pod_locater - name = "Circuit Board (Pod Location Console)" + board_name = "Pod Location Console" build_path = /obj/machinery/computer/podtracker + /obj/item/circuitboard/rdservercontrol - name = "Circuit Board (RD Server Control)" + board_name = "RD Server Control" build_path = /obj/machinery/computer/rdservercontrol + /obj/item/circuitboard/crew - name = "Circuit board (Crew Monitoring Computer)" + board_name = "Crew Monitoring Computer" build_path = /obj/machinery/computer/crew origin_tech = "programming=2;biotech=2" + /obj/item/circuitboard/mech_bay_power_console - name = "Circuit board (Mech Bay Power Control Console)" + board_name = "Mech Bay Power Control Console" build_path = /obj/machinery/computer/mech_bay_power_console origin_tech = "programming=3;powerstorage=3" + /obj/item/circuitboard/ordercomp - name = "Circuit board (Supply Ordering Console)" + board_name = "Supply Ordering Console" build_path = /obj/machinery/computer/supplycomp/public origin_tech = "programming=3" + /obj/item/circuitboard/supplycomp - name = "Circuit board (Supply Shuttle Console)" + board_name = "Supply Shuttle Console" build_path = /obj/machinery/computer/supplycomp origin_tech = "programming=3" var/contraband_enabled = 0 /obj/item/circuitboard/operating - name = "Circuit board (Operating Computer)" + board_name = "Operating Computer" build_path = /obj/machinery/computer/operating origin_tech = "programming=2;biotech=3" /obj/item/circuitboard/shuttle - name = "circuit board (Shuttle)" + board_name = "Shuttle" build_path = /obj/machinery/computer/shuttle var/shuttleId var/possible_destinations = "" /obj/item/circuitboard/labor_shuttle - name = "circuit Board (Labor Shuttle)" + board_name = "Labor Shuttle" build_path = /obj/machinery/computer/shuttle/labor + /obj/item/circuitboard/labor_shuttle/one_way - name = "circuit Board (Prisoner Shuttle Console)" + board_name = "Prisoner Shuttle Console" build_path = /obj/machinery/computer/shuttle/labor/one_way + /obj/item/circuitboard/ferry - name = "circuit Board (Transport Ferry)" + board_name = "Transport Ferry" build_path = /obj/machinery/computer/shuttle/ferry + /obj/item/circuitboard/ferry/request - name = "circuit Board (Transport Ferry Console)" + board_name = "Transport Ferry Console" build_path = /obj/machinery/computer/shuttle/ferry/request + /obj/item/circuitboard/mining_shuttle - name = "circuit Board (Mining Shuttle)" + board_name = "Mining Shuttle" build_path = /obj/machinery/computer/shuttle/mining + /obj/item/circuitboard/white_ship - name = "circuit Board (White Ship)" + board_name = "White Ship" build_path = /obj/machinery/computer/shuttle/white_ship + /obj/item/circuitboard/shuttle/syndicate - name = "circuit board (Syndicate Shuttle)" + board_name = "Syndicate Shuttle" build_path = /obj/machinery/computer/shuttle/syndicate + /obj/item/circuitboard/shuttle/syndicate/recall - name = "circuit board (Syndicate Shuttle Recall Terminal)" + board_name = "Syndicate Shuttle Recall Terminal" build_path = /obj/machinery/computer/shuttle/syndicate/recall + /obj/item/circuitboard/shuttle/syndicate/drop_pod - name = "circuit board (Syndicate Drop Pod)" + board_name = "Syndicate Drop Pod" build_path = /obj/machinery/computer/shuttle/syndicate/drop_pod + /obj/item/circuitboard/shuttle/golem_ship - name = "circuit Board (Golem Ship)" + board_name = "Golem Ship" build_path = /obj/machinery/computer/shuttle/golem_ship /obj/item/circuitboard/HolodeckControl - name = "Circuit board (Holodeck Control)" + board_name = "Holodeck Control" build_path = /obj/machinery/computer/HolodeckControl origin_tech = "programming=4" + /obj/item/circuitboard/aifixer - name = "Circuit board (AI Integrity Restorer)" + board_name = "AI Integrity Restorer" build_path = /obj/machinery/computer/aifixer origin_tech = "programming=2;biotech=2" + /obj/item/circuitboard/area_atmos - name = "Circuit board (Area Air Control)" + board_name = "Area Air Control" build_path = /obj/machinery/computer/area_atmos origin_tech = "programming=2" + /obj/item/circuitboard/telesci_console - name = "Circuit board (Telepad Control Console)" + board_name = "Telepad Control Console" build_path = /obj/machinery/computer/telescience origin_tech = "programming=3;bluespace=3;plasmatech=4" /obj/item/circuitboard/large_tank_control - name = "Circuit board (Atmospheric Tank Control)" + board_name = "Atmospheric Tank Control" build_path = /obj/machinery/computer/general_air_control/large_tank_control origin_tech = "programming=2;engineering=3;materials=2" /obj/item/circuitboard/turbine_computer - name = "circuit board (Turbine Computer)" + board_name = "Turbine Computer" build_path = /obj/machinery/computer/turbine_computer origin_tech = "programming=4;engineering=4;powerstorage=4" +/obj/item/circuitboard/supplycomp/multitool_act(mob/living/user, obj/item/I) + . = TRUE + var/catastasis // Why is it called this + var/opposite_catastasis + if(contraband_enabled) + catastasis = "BROAD" + opposite_catastasis = "STANDARD" + else + catastasis = "STANDARD" + opposite_catastasis = "BROAD" -/obj/item/circuitboard/supplycomp/attackby(obj/item/I as obj, mob/user as mob, params) - if(istype(I,/obj/item/multitool)) - var/catastasis = contraband_enabled - var/opposite_catastasis - if(catastasis) - opposite_catastasis = "STANDARD" - catastasis = "BROAD" - else - opposite_catastasis = "BROAD" - catastasis = "STANDARD" - - switch( alert("Current receiver spectrum is set to: [catastasis]","Multitool-Circuitboard interface","Switch to [opposite_catastasis]","Cancel") ) - //switch( alert("Current receiver spectrum is set to: " {(contraband_enabled) ? ("BROAD") : ("STANDARD")} , "Multitool-Circuitboard interface" , "Switch to " {(contraband_enabled) ? ("STANDARD") : ("BROAD")}, "Cancel") ) - if("Switch to STANDARD","Switch to BROAD") - contraband_enabled = !contraband_enabled - - if("Cancel") - return - else - to_chat(user, "DERP! BUG! Report this (And what you were doing to cause it) to Agouri") + var/choice = alert("Current receiver spectrum is set to: [catastasis]", "Multitool-Circuitboard interface", "Switch to [opposite_catastasis]", "Cancel") + if(choice == "Cancel") return - return ..() -/obj/item/circuitboard/rdconsole/attackby(obj/item/I as obj, mob/user as mob, params) - if(istype(I,/obj/item/card/id)||istype(I, /obj/item/pda)) + contraband_enabled = !contraband_enabled + playsound(src, 'sound/effects/pop.ogg', 50) + +/obj/item/circuitboard/rdconsole/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/card/id) || istype(I, /obj/item/pda)) if(allowed(user)) user.visible_message("[user] waves [user.p_their()] ID past [src]'s access protocol scanner.", "You swipe your ID past [src]'s access protocol scanner.") var/console_choice = input(user, "What do you want to configure the access to?", "Access Modification", "R&D Core") as null|anything in access_types - if(console_choice == null) + if(!console_choice) return switch(console_choice) if("R&D Core") - name = "Circuit Board (RD Console)" + board_name = "RD Console" build_path = /obj/machinery/computer/rdconsole/core - id = 1 if("Robotics") - name = "Circuit Board (RD Console - Robotics)" + board_name = "RD Console - Robotics" build_path = /obj/machinery/computer/rdconsole/robotics - id = 2 if("E.X.P.E.R.I-MENTOR") - name = "Circuit Board (RD Console - E.X.P.E.R.I-MENTOR)" + board_name = "RD Console - E.X.P.E.R.I-MENTOR" build_path = /obj/machinery/computer/rdconsole/experiment - id = 3 if("Mechanics") - name = "Circuit Board (RD Console - Mechanics)" + board_name = "RD Console - Mechanics" build_path = /obj/machinery/computer/rdconsole/mechanics - id = 4 if("Public") - name = "Circuit Board (RD Console - Public)" + board_name = "RD Console - Public" build_path = /obj/machinery/computer/rdconsole/public - id = 5 + format_board_name() to_chat(user, "Access protocols set to [console_choice].") else to_chat(user, "Access Denied") return return ..() -/obj/structure/computerframe/attackby(obj/item/P as obj, mob/user as mob, params) - switch(state) - if(0) - if(istype(P, /obj/item/wrench)) - playsound(loc, P.usesound, 50, 1) - if(do_after(user, 20 * P.toolspeed, target = src)) - to_chat(user, "You wrench the frame into place.") - anchored = 1 - state = 1 - return - if(1) - if(istype(P, /obj/item/wrench)) - playsound(loc, P.usesound, 50, 1) - if(do_after(user, 20 * P.toolspeed, target = src)) - to_chat(user, "You unfasten the frame.") - anchored = 0 - state = 0 - return - if(istype(P, /obj/item/circuitboard) && !circuit) - var/obj/item/circuitboard/B = P - if(B.board_type == "computer") - playsound(loc, B.usesound, 50, 1) - to_chat(user, "You place the circuit board inside the frame.") - icon_state = "1" - circuit = P - user.drop_item() - P.loc = src - else - to_chat(user, "This frame does not accept circuit boards of this type!") - return - if(istype(P, /obj/item/screwdriver) && circuit) - playsound(loc, P.usesound, 50, 1) - to_chat(user, "You screw the circuit board into place.") - state = 2 - icon_state = "2" - return - if(istype(P, /obj/item/crowbar) && circuit) - playsound(loc, P.usesound, 50, 1) - to_chat(user, "You remove the circuit board.") - state = 1 - icon_state = "0" - circuit.loc = loc - circuit = null - return - if(2) - if(istype(P, /obj/item/screwdriver) && circuit) - playsound(loc, P.usesound, 50, 1) - to_chat(user, "You unfasten the circuit board.") - state = 1 - icon_state = "1" - return - if(istype(P, /obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/C = P - if(C.get_amount() >= 5) - playsound(loc, C.usesound, 50, 1) - to_chat(user, "You start to add cables to the frame.") - if(do_after(user, 20 * C.toolspeed, target = src)) - if(state == 2 && C.get_amount() >= 5 && C.use(5)) - to_chat(user, "You add cables to the frame.") - state = 3 - icon_state = "3" - else - to_chat(user, "At some point during construction you lost some cable. Make sure you have five lengths before trying again.") - return - else - to_chat(user, "You need five lengths of cable to wire the frame.") - return - if(3) - if(istype(P, /obj/item/wirecutters)) - playsound(loc, P.usesound, 50, 1) - to_chat(user, "You remove the cables.") - state = 2 - icon_state = "2" - var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( loc ) - A.amount = 5 - return - if(istype(P, /obj/item/stack/sheet/glass)) - var/obj/item/stack/sheet/glass/G = P - if(G.get_amount() >= 2) - playsound(loc, G.usesound, 50, 1) - to_chat(user, "You start to add the glass panel to the frame.") - if(do_after(user, 20 * G.toolspeed, target = src)) - if(state == 3 && G.get_amount() >= 2 && G.use(2)) - to_chat(user, "You put in the glass panel.") - state = 4 - icon_state = "4" - else - to_chat(user, "At some point during construction you lost some glass. Make sure you have two sheets before trying again.") - return - else - to_chat(user, "You need two sheets of glass for this.") - return - if(4) - if(istype(P, /obj/item/crowbar)) - playsound(loc, P.usesound, 50, 1) - to_chat(user, "You remove the glass panel.") - state = 3 - icon_state = "3" - new /obj/item/stack/sheet/glass(loc, 2) - return - if(istype(P, /obj/item/screwdriver)) - playsound(loc, P.usesound, 50, 1) - to_chat(user, "You connect the monitor.") - var/B = new circuit.build_path (loc) - if(circuit.powernet) B:powernet = circuit.powernet - if(circuit.id) B:id = circuit.id - if(circuit.records) B:records = circuit.records - if(circuit.frequency) B:frequency = circuit.frequency - if(istype(circuit,/obj/item/circuitboard/supplycomp)) - var/obj/machinery/computer/supplycomp/SC = B - var/obj/item/circuitboard/supplycomp/C = circuit - SC.can_order_contraband = C.contraband_enabled - qdel(src) - return - if(user.a_intent == INTENT_HARM) - return ..() +// Construction | Deconstruction +#define STATE_EMPTY 1 // Add a circuitboard | Weld to destroy +#define STATE_CIRCUIT 2 // Screwdriver the cover closed | Crowbar the circuit +#define STATE_NOWIRES 3 // Add wires | Screwdriver the cover open +#define STATE_WIRES 4 // Add glass | Remove wires +#define STATE_GLASS 5 // Screwdriver to complete | Crowbar glass out +/obj/structure/computerframe + name = "computer frame" + icon = 'icons/obj/stock_parts.dmi' + icon_state = "comp_frame_1" + density = TRUE + anchored = TRUE + max_integrity = 100 + var/state = STATE_EMPTY + var/obj/item/circuitboard/circuit = null + +/obj/structure/computerframe/deconstruct(disassembled = TRUE) + if(!(flags & NODECONSTRUCT)) + drop_computer_parts() + return ..() // will qdel the frame + +/obj/structure/computerframe/obj_break(damage_flag) + deconstruct() + +/obj/structure/computerframe/proc/drop_computer_parts() + var/location = drop_location() + new /obj/item/stack/sheet/metal(location, 5) + if(circuit) + circuit.forceMove(location) + circuit = null + if(state >= STATE_WIRES) + var/obj/item/stack/cable_coil/C = new(location) + C.amount = 5 + if(state == STATE_GLASS) + new /obj/item/stack/sheet/glass(location, 2) + +/obj/structure/computerframe/update_icon() + . = ..() + icon_state = "comp_frame_[state]" /obj/structure/computerframe/welder_act(mob/user, obj/item/I) - if(state) + if(state != STATE_EMPTY) return . = TRUE if(!I.tool_use_check(user, 0)) return WELDER_ATTEMPT_SLICING_MESSAGE - if(I.use_tool(src, user, 50, volume = I.tool_volume) && !state) - to_chat(user, "You deconstruct [src].") + if(I.use_tool(src, user, 50, volume = I.tool_volume)) + WELDER_SLICING_SUCCESS_MESSAGE deconstruct(TRUE) + +/obj/structure/computerframe/wrench_act(mob/living/user, obj/item/I) + . = TRUE + if(!I.use_tool(src, user, 2 SECONDS, volume = I.tool_volume)) + return + + if(anchored) + to_chat(user, "You unfasten the frame.") + anchored = FALSE + else + to_chat(user, "You wrench the frame into place.") + anchored = TRUE + +/obj/structure/computerframe/crowbar_act(mob/living/user, obj/item/I) + . = TRUE + if(!I.use_tool(src, user)) + return + + if(state == STATE_CIRCUIT) + to_chat(user, "You remove the circuit board.") + state = STATE_EMPTY + name = initial(name) + circuit.forceMove(drop_location()) + circuit = null + else if(state == STATE_GLASS) + to_chat(user, "You remove the glass panel.") + state = STATE_WIRES + new /obj/item/stack/sheet/glass(drop_location(), 2) + else + return + + I.play_tool_sound(src) + update_icon() + +/obj/structure/computerframe/screwdriver_act(mob/living/user, obj/item/I) + . = TRUE + if(!I.use_tool(src, user)) + return + + switch(state) + if(STATE_CIRCUIT) + to_chat(user, "You screw the circuit board into place.") + state = STATE_NOWIRES + I.play_tool_sound(src) + update_icon() + if(STATE_NOWIRES) + to_chat(user, "You unfasten the circuit board.") + state = STATE_CIRCUIT + I.play_tool_sound(src) + update_icon() + if(STATE_GLASS) + to_chat(user, "You connect the monitor.") + I.play_tool_sound(src) + var/B = new circuit.build_path(loc) + if(istype(circuit, /obj/item/circuitboard/supplycomp)) + var/obj/machinery/computer/supplycomp/SC = B + var/obj/item/circuitboard/supplycomp/C = circuit + SC.can_order_contraband = C.contraband_enabled + qdel(src) + +/obj/structure/computerframe/wirecutter_act(mob/living/user, obj/item/I) + . = TRUE + if(!I.use_tool(src, user)) + return + + if(state == STATE_WIRES) + to_chat(user, "You remove the cables.") + var/obj/item/stack/cable_coil/C = new(drop_location()) + C.amount = 5 + state = STATE_NOWIRES + I.play_tool_sound(src) + update_icon() + +/obj/structure/computerframe/attackby(obj/item/I, mob/user, params) + switch(state) + if(STATE_EMPTY) + if(!istype(I, /obj/item/circuitboard)) + return ..() + + var/obj/item/circuitboard/B = I + if(B.board_type != "computer") + to_chat(user, "[src] does not accept circuit boards of this type!") + return + + B.play_tool_sound(src) + to_chat(user, "You place [B] inside [src].") + name += " ([B.board_name])" + state = STATE_CIRCUIT + user.drop_item() + B.forceMove(src) + circuit = B + update_icon() + return + + if(STATE_NOWIRES) + if(!istype(I, /obj/item/stack/cable_coil)) + return ..() + + var/obj/item/stack/cable_coil/C = I + if(C.get_amount() < 5) + to_chat(user, "You need five lengths of cable to wire the frame.") + return + + C.play_tool_sound(src) + to_chat(user, "You start to add cables to the frame.") + if(!do_after(user, 2 SECONDS * C.toolspeed, target = src)) + return + if(C.get_amount() < 5 || !C.use(5)) + to_chat(user, "At some point during construction you lost some cable. Make sure you have five lengths before trying again.") + return + + to_chat(user, "You add cables to the frame.") + state = STATE_WIRES + update_icon() + return + + if(STATE_WIRES) + if(!istype(I, /obj/item/stack/sheet/glass)) + return ..() + + var/obj/item/stack/sheet/glass/G = I + if(G.get_amount() < 2) + to_chat(user, "You need two sheets of glass for this.") + return + + G.play_tool_sound(src) + to_chat(user, "You start to add the glass panel to the frame.") + if(!do_after(user, 2 SECONDS * G.toolspeed, target = src)) + return + if(G.get_amount() < 2 || !G.use(2)) + to_chat(user, "At some point during construction you lost some glass. Make sure you have two sheets before trying again.") + return + + to_chat(user, "You put in the glass panel.") + state = STATE_GLASS + update_icon() + return + + return ..() + +#undef STATE_EMPTY +#undef STATE_CIRCUIT +#undef STATE_NOWIRES +#undef STATE_WIRES +#undef STATE_GLASS diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index f18d378fff4..1c394d261f6 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -130,6 +130,7 @@ if(circuit) //no circuit, no computer frame var/obj/structure/computerframe/A = new /obj/structure/computerframe(loc) var/obj/item/circuitboard/M = new circuit(A) + A.name += " ([M.board_name])" A.setDir(dir) A.circuit = M A.anchored = TRUE @@ -140,13 +141,12 @@ playsound(src, 'sound/effects/hit_on_shattered_glass.ogg', 70, TRUE) new /obj/item/shard(drop_location()) new /obj/item/shard(drop_location()) - A.state = 3 - A.icon_state = "3" + A.state = 4 else if(user) to_chat(user, "You disconnect the monitor.") - A.state = 4 - A.icon_state = "4" + A.state = 5 + A.update_icon() for(var/obj/C in src) C.forceMove(loc) qdel(src) diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index a4879448aa0..0705ccd150d 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -104,6 +104,7 @@ circuit = P user.drop_item() P.loc = src + name += " ([B.board_name])" icon_state = "box_2" state = 3 components = list() @@ -133,6 +134,7 @@ to_chat(user, "You remove the circuit board and other components.") for(var/obj/item/I in components) I.loc = src.loc + name = initial(name) desc = initial(desc) req_components = null components = null @@ -223,61 +225,58 @@ Note: Once everything is added to the public areas, will add MAT_METAL and MAT_G to destroy them and players will be able to make replacements. */ /obj/item/circuitboard/vendor - name = "circuit board (Booze-O-Mat Vendor)" + board_name = "Booze-O-Mat Vendor" board_type = "machine" origin_tech = "programming=1" build_path = /obj/machinery/vending/boozeomat req_components = list(/obj/item/vending_refill/boozeomat = 1) var/static/list/vending_names_paths = list( - /obj/machinery/vending/boozeomat = "Booze-O-Mat", - /obj/machinery/vending/coffee = "Solar's Best Hot Drinks", - /obj/machinery/vending/snack = "Getmore Chocolate Corp", - /obj/machinery/vending/chinese = "Mr. Chang", - /obj/machinery/vending/cola = "Robust Softdrinks", - /obj/machinery/vending/cigarette = "ShadyCigs Deluxe", - /obj/machinery/vending/hatdispenser = "Hatlord 9000", - /obj/machinery/vending/suitdispenser = "Suitlord 9000", - /obj/machinery/vending/shoedispenser = "Shoelord 9000", - /obj/machinery/vending/autodrobe = "AutoDrobe", - /obj/machinery/vending/clothing = "ClothesMate", - /obj/machinery/vending/medical = "NanoMed Plus", - /obj/machinery/vending/wallmed = "NanoMed", - /obj/machinery/vending/assist = "Vendomat", - /obj/machinery/vending/engivend = "Engi-Vend", - /obj/machinery/vending/hydronutrients = "NutriMax", - /obj/machinery/vending/hydroseeds = "MegaSeed Servitor", - /obj/machinery/vending/sustenance = "Sustenance Vendor", - /obj/machinery/vending/dinnerware = "Plasteel Chef's Dinnerware Vendor", - /obj/machinery/vending/cart = "PTech", - /obj/machinery/vending/robotics = "Robotech Deluxe", - /obj/machinery/vending/engineering = "Robco Tool Maker", - /obj/machinery/vending/sovietsoda = "BODA", - /obj/machinery/vending/security = "SecTech", - /obj/machinery/vending/crittercare = "CritterCare") + "Booze-O-Mat" = /obj/machinery/vending/boozeomat, + "Solar's Best Hot Drinks" = /obj/machinery/vending/coffee, + "Getmore Chocolate Corp" = /obj/machinery/vending/snack, + "Mr. Chang" = /obj/machinery/vending/chinese, + "Robust Softdrinks" = /obj/machinery/vending/cola, + "ShadyCigs Deluxe" = /obj/machinery/vending/cigarette, + "Hatlord 9000" = /obj/machinery/vending/hatdispenser, + "Suitlord 9000" = /obj/machinery/vending/suitdispenser, + "Shoelord 9000" = /obj/machinery/vending/shoedispenser, + "AutoDrobe" = /obj/machinery/vending/autodrobe, + "ClothesMate" = /obj/machinery/vending/clothing, + "NanoMed Plus" = /obj/machinery/vending/medical, + "NanoMed" = /obj/machinery/vending/wallmed, + "Vendomat" = /obj/machinery/vending/assist, + "YouTool" = /obj/machinery/vending/tool, + "Engi-Vend" = /obj/machinery/vending/engivend, + "NutriMax" = /obj/machinery/vending/hydronutrients, + "MegaSeed Servitor" = /obj/machinery/vending/hydroseeds, + "Sustenance Vendor" = /obj/machinery/vending/sustenance, + "Plasteel Chef's Dinnerware Vendor" = /obj/machinery/vending/dinnerware, + "PTech" = /obj/machinery/vending/cart, + "Robotech Deluxe" = /obj/machinery/vending/robotics, + "Robco Tool Maker" = /obj/machinery/vending/engineering, + "BODA" = /obj/machinery/vending/sovietsoda, + "SecTech" = /obj/machinery/vending/security, + "CritterCare" = /obj/machinery/vending/crittercare) /obj/item/circuitboard/vendor/screwdriver_act(mob/user, obj/item/I) . = TRUE if(!I.use_tool(src, user, 0, volume = I.tool_volume)) return - var/static/list/display_vending_names_paths - if(!display_vending_names_paths) - display_vending_names_paths = list() - for(var/path in vending_names_paths) - display_vending_names_paths[vending_names_paths[path]] = path - var/choice = input(user, "Choose a new brand","Select an Item") as null|anything in display_vending_names_paths - if(loc != user) - to_chat(user, "You need to keep [src] in your hands while doing that!") + var/choice = input(user, "Choose a new brand", "Select an Item") as null|anything in vending_names_paths + if(!choice) return - set_type(display_vending_names_paths[choice]) + set_type(choice) -/obj/item/circuitboard/vendor/proc/set_type(obj/machinery/vending/typepath) +/obj/item/circuitboard/vendor/proc/set_type(type) + var/obj/machinery/vending/typepath = vending_names_paths[type] build_path = typepath - name = "circuit board ([vending_names_paths[build_path]] Vendor)" + board_name = "[type] Vendor" + format_board_name() req_components = list(initial(typepath.refill_canister) = 1) /obj/item/circuitboard/smes - name = "circuit board (SMES)" + board_name = "SMES" build_path = /obj/machinery/power/smes board_type = "machine" origin_tech = "programming=3;powerstorage=3;engineering=3" @@ -287,7 +286,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/capacitor = 1) /obj/item/circuitboard/emitter - name = "circuit board (Emitter)" + board_name = "Emitter" build_path = /obj/machinery/power/emitter board_type = "machine" origin_tech = "programming=3;powerstorage=4;engineering=4" @@ -296,7 +295,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/manipulator = 1) /obj/item/circuitboard/power_compressor - name = "circuit board (Power Compressor)" + board_name = "Power Compressor" build_path = /obj/machinery/power/compressor board_type = "machine" origin_tech = "programming=4;powerstorage=4;engineering=4" @@ -305,7 +304,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/manipulator = 6) /obj/item/circuitboard/power_turbine - name = "circuit board (Power Turbine)" + board_name = "Power Turbine" build_path = /obj/machinery/power/turbine board_type = "machine" origin_tech = "programming=4;powerstorage=4;engineering=4" @@ -314,7 +313,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/capacitor = 6) /obj/item/circuitboard/thermomachine - name = "Thermomachine (Machine Board)" + board_name = "Thermomachine" build_path = /obj/machinery/atmospherics/unary/thermomachine board_type = "machine" origin_tech = "programming=3;plasmatech=3" @@ -325,14 +324,14 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/recharger - name = "circuit board (Recharger)" + board_name = "Recharger" build_path = /obj/machinery/recharger board_type = "machine" origin_tech = "powerstorage=3;materials=2" req_components = list(/obj/item/stock_parts/capacitor = 1) /obj/item/circuitboard/snow_machine - name = "circuit board (snow machine)" + board_name = "Snow Machine" build_path = /obj/machinery/snow_machine board_type = "machine" origin_tech = "programming=2;materials=2" @@ -341,7 +340,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/micro_laser = 1) /obj/item/circuitboard/biogenerator - name = "circuit board (Biogenerator)" + board_name = "Biogenerator" build_path = /obj/machinery/biogenerator board_type = "machine" origin_tech = "programming=2;biotech=3;materials=3" @@ -352,7 +351,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/plantgenes - name = "Plant DNA Manipulator (Machine Board)" + board_name = "Plant DNA Manipulator" build_path = /obj/machinery/plantgenes board_type = "machine" origin_tech = "programming=3;biotech=3" @@ -365,7 +364,7 @@ to destroy them and players will be able to make replacements. /obj/item/circuitboard/plantgenes/vault /obj/item/circuitboard/seed_extractor - name = "circuit board (Seed Extractor)" + board_name = "Seed Extractor" build_path = /obj/machinery/seed_extractor board_type = "machine" origin_tech = "programming=1" @@ -374,7 +373,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/manipulator = 1) /obj/item/circuitboard/hydroponics - name = "circuit board (Hydroponics Tray)" + board_name = "Hydroponics Tray" build_path = /obj/machinery/hydroponics/constructable board_type = "machine" origin_tech = "programming=1;biotech=2" @@ -384,7 +383,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/microwave - name = "circuit board (Microwave)" + board_name = "Microwave" build_path = /obj/machinery/kitchen_machine/microwave board_type = "machine" origin_tech = "programming=2;magnets=2" @@ -394,7 +393,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/oven - name = "circuit board (Oven)" + board_name = "Oven" build_path = /obj/machinery/kitchen_machine/oven board_type = "machine" origin_tech = "programming=2;magnets=2" @@ -404,7 +403,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/grill - name = "circuit board (Grill)" + board_name = "Grill" build_path = /obj/machinery/kitchen_machine/grill board_type = "machine" origin_tech = "programming=2;magnets=2" @@ -414,7 +413,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/candy_maker - name = "circuit board (Candy Maker)" + board_name = "Candy Maker" build_path = /obj/machinery/kitchen_machine/candy_maker board_type = "machine" origin_tech = "programming=2;magnets=2" @@ -424,7 +423,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/deepfryer - name = "circuit board (Deep Fryer)" + board_name = "Deep Fryer" build_path = /obj/machinery/cooker/deepfryer board_type = "machine" origin_tech = "programming=1" @@ -433,7 +432,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/cable_coil = 5) /obj/item/circuitboard/gibber - name = "circuit board (Gibber)" + board_name = "Gibber" build_path = /obj/machinery/gibber board_type = "machine" origin_tech = "programming=2;engineering=2" @@ -442,7 +441,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/manipulator = 1) /obj/item/circuitboard/tesla_coil - name = "circuit board (Tesla Coil)" + board_name = "Tesla Coil" build_path = /obj/machinery/power/tesla_coil board_type = "machine" origin_tech = "programming=3;magnets=3;powerstorage=3" @@ -450,7 +449,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/capacitor = 1) /obj/item/circuitboard/grounding_rod - name = "circuit board (Grounding Rod)" + board_name = "Grounding Rod" build_path = /obj/machinery/power/grounding_rod board_type = "machine" origin_tech = "programming=3;powerstorage=3;magnets=3;plasmatech=2" @@ -458,7 +457,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/capacitor = 1) /obj/item/circuitboard/processor - name = "circuit board (Food processor)" + board_name = "Food Processor" build_path = /obj/machinery/processor board_type = "machine" origin_tech = "programming=1" @@ -467,7 +466,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/manipulator = 1) /obj/item/circuitboard/recycler - name = "circuit board (Recycler)" + board_name = "Recycler" build_path = /obj/machinery/recycler board_type = "machine" origin_tech = "programming=2;engineering=2" @@ -476,51 +475,49 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/manipulator = 1) /obj/item/circuitboard/smartfridge - name = "circuit board (Smartfridge)" + board_name = "Smartfridge" build_path = /obj/machinery/smartfridge board_type = "machine" origin_tech = "programming=1" req_components = list( /obj/item/stock_parts/matter_bin = 1) - var/list/fridge_names_paths = list( - "\improper SmartFridge" = /obj/machinery/smartfridge, - "\improper MegaSeed Servitor" = /obj/machinery/smartfridge/seeds, - "\improper Refrigerated Medicine Storage" = /obj/machinery/smartfridge/medbay, - "\improper Slime Extract Storage" = /obj/machinery/smartfridge/secure/extract, - "\improper Secure Refrigerated Medicine Storage" = /obj/machinery/smartfridge/secure/medbay, - "\improper Smart Chemical Storage" = /obj/machinery/smartfridge/secure/chemistry, - "smart virus storage" = /obj/machinery/smartfridge/secure/chemistry/virology, - "\improper Drink Showcase" = /obj/machinery/smartfridge/drinks, - "disk compartmentalizer" = /obj/machinery/smartfridge/disks - ) + var/static/list/fridge_names_paths = list( + "SmartFridge" = /obj/machinery/smartfridge, + "MegaSeed Servitor" = /obj/machinery/smartfridge/seeds, + "Refrigerated Medicine Storage" = /obj/machinery/smartfridge/medbay, + "Slime Extract Storage" = /obj/machinery/smartfridge/secure/extract, + "Secure Refrigerated Medicine Storage" = /obj/machinery/smartfridge/secure/medbay, + "Smart Chemical Storage" = /obj/machinery/smartfridge/secure/chemistry, + "Smart Virus Storage" = /obj/machinery/smartfridge/secure/chemistry/virology, + "Drink Showcase" = /obj/machinery/smartfridge/drinks, + "Disk Compartmentalizer" = /obj/machinery/smartfridge/disks) - -/obj/item/circuitboard/smartfridge/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/screwdriver)) - set_type(null, user) +/obj/item/circuitboard/smartfridge/screwdriver_act(mob/living/user, obj/item/I) + . = TRUE + if(!I.use_tool(src, user, 0, volume = I.tool_volume)) return - return ..() + var/choice = input(user, "Circuit Setting", "What would you change the board setting to?") as null|anything in fridge_names_paths + if(!choice) + return + set_type(user, choice) -/obj/item/circuitboard/smartfridge/proc/set_type(typepath, mob/user) - var/new_name = "" - if(!typepath) - new_name = input("Circuit Setting", "What would you change the board setting to?") in fridge_names_paths - typepath = fridge_names_paths[new_name] +/obj/item/circuitboard/smartfridge/proc/set_type(mob/user, type) + if(!ispath(type)) + board_name = type + type = fridge_names_paths[type] else for(var/name in fridge_names_paths) - if(fridge_names_paths[name] == typepath) - new_name = name + if(fridge_names_paths[name] == type) + board_name = name break - build_path = typepath - name = new_name - if(findtextEx(new_name, "\improper")) - new_name = replacetext(new_name, "\improper", "") + build_path = type + format_board_name() if(user) - to_chat(user, "You set the board to [new_name].") + to_chat(user, "You set the board to [board_name].") /obj/item/circuitboard/monkey_recycler - name = "circuit board (Monkey Recycler)" + board_name = "Monkey Recycler" build_path = /obj/machinery/monkey_recycler board_type = "machine" origin_tech = "programming=1;biotech=2" @@ -529,7 +526,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/manipulator = 1) /obj/item/circuitboard/holopad - name = "circuit board (AI Holopad)" + board_name = "AI Holopad" build_path = /obj/machinery/hologram/holopad board_type = "machine" origin_tech = "programming=1" @@ -537,7 +534,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/capacitor = 1) /obj/item/circuitboard/chem_dispenser - name = "circuit board (Chem Dispenser)" + board_name = "Chem Dispenser" build_path = /obj/machinery/chem_dispenser board_type = "machine" origin_tech = "materials=4;programming=4;plasmatech=4;biotech=3" @@ -548,7 +545,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/cell = 1) /obj/item/circuitboard/chem_master - name = "circuit board (ChemMaster 3000)" + board_name = "ChemMaster 3000" build_path = /obj/machinery/chem_master board_type = "machine" origin_tech = "materials=3;programming=2;biotech=3" @@ -573,11 +570,11 @@ to destroy them and players will be able to make replacements. to_chat(user, "You change the circuit board setting to \"[new_name]\".") /obj/item/circuitboard/chem_master/condi_master - name = "circuit board (CondiMaster 3000)" + board_name = "CondiMaster 3000" build_path = /obj/machinery/chem_master/condimaster /obj/item/circuitboard/chem_heater - name = "circuit board (Chemical Heater)" + board_name = "Chemical Heater" build_path = /obj/machinery/chem_heater board_type = "machine" origin_tech = "programming=2;engineering=2;biotech=2" @@ -586,7 +583,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/reagentgrinder - name = "circuit board (All-In-One Grinder)" + board_name = "All-In-One Grinder" build_path = /obj/machinery/reagentgrinder/empty board_type = "machine" origin_tech = "materials=2;engineering=2;biotech=2" @@ -596,7 +593,7 @@ to destroy them and players will be able to make replacements. //Almost the same recipe as destructive analyzer to give people choices. /obj/item/circuitboard/experimentor - name = "circuit board (E.X.P.E.R.I-MENTOR)" + board_name = "E.X.P.E.R.I-MENTOR" build_path = /obj/machinery/r_n_d/experimentor board_type = "machine" origin_tech = "magnets=1;engineering=1;programming=1;biotech=1;bluespace=2" @@ -606,7 +603,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/micro_laser = 2) /obj/item/circuitboard/destructive_analyzer - name = "Circuit board (Destructive Analyzer)" + board_name = "Destructive Analyzer" build_path = /obj/machinery/r_n_d/destructive_analyzer board_type = "machine" origin_tech = "magnets=2;engineering=2;programming=2" @@ -616,7 +613,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/micro_laser = 1) /obj/item/circuitboard/autolathe - name = "Circuit board (Autolathe)" + board_name = "Autolathe" build_path = /obj/machinery/autolathe board_type = "machine" origin_tech = "engineering=2;programming=2" @@ -630,7 +627,7 @@ to destroy them and players will be able to make replacements. build_path = /obj/machinery/autolathe/syndicate /obj/item/circuitboard/protolathe - name = "Circuit board (Protolathe)" + board_name = "Protolathe" build_path = /obj/machinery/r_n_d/protolathe board_type = "machine" origin_tech = "engineering=2;programming=2" @@ -640,15 +637,15 @@ to destroy them and players will be able to make replacements. /obj/item/reagent_containers/glass/beaker = 2) /obj/item/circuitboard/chem_dispenser/soda - name = "Circuit board (Soda Machine)" + board_name = "Soda Machine" build_path = /obj/machinery/chem_dispenser/soda /obj/item/circuitboard/chem_dispenser/beer - name = "Circuit board (Beer Machine)" + board_name = "Beer Machine" build_path = /obj/machinery/chem_dispenser/beer /obj/item/circuitboard/circuit_imprinter - name = "Circuit board (Circuit Imprinter)" + board_name = "Circuit Imprinter" build_path = /obj/machinery/r_n_d/circuit_imprinter board_type = "machine" origin_tech = "engineering=2;programming=2" @@ -658,7 +655,7 @@ to destroy them and players will be able to make replacements. /obj/item/reagent_containers/glass/beaker = 2) /obj/item/circuitboard/pacman - name = "Circuit Board (PACMAN-type Generator)" + board_name = "PACMAN-type Generator" build_path = /obj/machinery/power/port_gen/pacman board_type = "machine" origin_tech = "programming=2;powerstorage=3;plasmatech=3;engineering=3" @@ -669,17 +666,17 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/capacitor = 1) /obj/item/circuitboard/pacman/super - name = "Circuit Board (SUPERPACMAN-type Generator)" + board_name = "SUPERPACMAN-type Generator" build_path = /obj/machinery/power/port_gen/pacman/super origin_tech = "programming=3;powerstorage=4;engineering=4" /obj/item/circuitboard/pacman/mrs - name = "Circuit Board (MRSPACMAN-type Generator)" + board_name = "MRSPACMAN-type Generator" build_path = /obj/machinery/power/port_gen/pacman/mrs origin_tech = "programming=3;powerstorage=4;engineering=4;plasmatech=4" /obj/item/circuitboard/rdserver - name = "Circuit Board (R&D Server)" + board_name = "R&D Server" build_path = /obj/machinery/r_n_d/server board_type = "machine" origin_tech = "programming=3" @@ -688,7 +685,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/scanning_module = 1) /obj/item/circuitboard/mechfab - name = "Circuit board (Exosuit Fabricator)" + board_name = "Exosuit Fabricator" build_path = /obj/machinery/mecha_part_fabricator board_type = "machine" origin_tech = "programming=2;engineering=2" @@ -699,7 +696,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/podfab - name = "Circuit board (Spacepod Fabricator)" + board_name = "Spacepod Fabricator" build_path = /obj/machinery/mecha_part_fabricator/spacepod board_type = "machine" origin_tech = "programming=2;engineering=2" @@ -711,7 +708,7 @@ to destroy them and players will be able to make replacements. /obj/item/circuitboard/clonepod - name = "Circuit board (Clone Pod)" + board_name = "Clone Pod" build_path = /obj/machinery/clonepod board_type = "machine" origin_tech = "programming=2;biotech=2" @@ -722,7 +719,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/clonescanner - name = "Circuit board (Cloning Scanner)" + board_name = "Cloning Scanner" build_path = /obj/machinery/dna_scannernew board_type = "machine" origin_tech = "programming=2;biotech=2" @@ -734,7 +731,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/cable_coil = 2,) /obj/item/circuitboard/mech_recharger - name = "circuit board (Mech Bay Recharger)" + board_name = "Mech Bay Recharger" build_path = /obj/machinery/mech_bay_recharge_port board_type = "machine" origin_tech = "programming=3;powerstorage=3;engineering=3" @@ -743,7 +740,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/capacitor = 5) /obj/item/circuitboard/teleporter_hub - name = "circuit board (Teleporter Hub)" + board_name = "Teleporter Hub" build_path = /obj/machinery/teleport/hub board_type = "machine" origin_tech = "programming=3;engineering=4;bluespace=4;materials=4" @@ -752,7 +749,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/matter_bin = 1) /obj/item/circuitboard/teleporter_station - name = "circuit board (Teleporter Station)" + board_name = "Teleporter Station" build_path = /obj/machinery/teleport/station board_type = "machine" origin_tech = "programming=4;engineering=4;bluespace=4;plasmatech=3" @@ -762,7 +759,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/teleporter_perma - name = "circuit board (Permanent Teleporter)" + board_name = "Permanent Teleporter" build_path = /obj/machinery/teleport/perma board_type = "machine" origin_tech = "programming=3;engineering=4;bluespace=4;materials=4" @@ -781,7 +778,7 @@ to destroy them and players will be able to make replacements. return ..() /obj/item/circuitboard/telesci_pad - name = "Circuit board (Telepad)" + board_name = "Telepad" build_path = /obj/machinery/telepad board_type = "machine" origin_tech = "programming=4;engineering=3;plasmatech=4;bluespace=4" @@ -792,7 +789,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/quantumpad - name = "circuit board (Quantum Pad)" + board_name = "Quantum Pad" build_path = /obj/machinery/quantumpad board_type = "machine" origin_tech = "programming=3;engineering=3;plasmatech=3;bluespace=4" @@ -803,7 +800,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/cable_coil = 1) /obj/item/circuitboard/sleeper - name = "circuit board (Sleeper)" + board_name = "Sleeper" build_path = /obj/machinery/sleeper board_type = "machine" origin_tech = "programming=3;biotech=2;engineering=3" @@ -814,16 +811,16 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 2) /obj/item/circuitboard/sleeper/syndicate - name = "circuit board (Sleeper Syndicate)" + board_name = "Sleeper - Syndicate" build_path = /obj/machinery/sleeper/syndie /obj/item/circuitboard/sleeper/survival - name = "circuit board (Sleeper Survival Pod)" + board_name = "Sleeper - Survival Pod" build_path = /obj/machinery/sleeper/survival_pod /obj/item/circuitboard/bodyscanner - name = "circuit board (Body Scanner)" + board_name = "Body Scanner" build_path = /obj/machinery/bodyscanner board_type = "machine" origin_tech = "programming=3;biotech=2;engineering=3" @@ -833,7 +830,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 2) /obj/item/circuitboard/cryo_tube - name = "circuit board (Cryotube)" + board_name = "Cryotube" build_path = /obj/machinery/atmospherics/unary/cryo_cell board_type = "machine" origin_tech = "programming=4;biotech=3;engineering=4;plasmatech=3" @@ -843,7 +840,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 4) /obj/item/circuitboard/cyborgrecharger - name = "circuit board (Cyborg Recharger)" + board_name = "Cyborg Recharger" build_path = /obj/machinery/recharge_station board_type = "machine" origin_tech = "powerstorage=3;engineering=3" @@ -854,21 +851,22 @@ to destroy them and players will be able to make replacements. // Telecomms circuit boards: /obj/item/circuitboard/tcomms/relay - name = "Circuit Board (Telecommunications Relay)" + board_name = "Telecommunications Relay" build_path = /obj/machinery/tcomms/relay board_type = "machine" origin_tech = "programming=2;engineering=2;bluespace=2" req_components = list(/obj/item/stock_parts/manipulator = 2, /obj/item/stack/cable_coil = 2) /obj/item/circuitboard/tcomms/core - name = "Circuit Board (Telecommunications Core)" + board_name = "Telecommunications Core" build_path = /obj/machinery/tcomms/core board_type = "machine" origin_tech = "programming=2;engineering=2" req_components = list(/obj/item/stock_parts/manipulator = 2, /obj/item/stack/cable_coil = 2) // End telecomms circuit boards + /obj/item/circuitboard/ore_redemption - name = "circuit board (Ore Redemption)" + board_name = "Ore Redemption" build_path = /obj/machinery/mineral/ore_redemption board_type = "machine" origin_tech = "programming=1;engineering=2" @@ -880,15 +878,15 @@ to destroy them and players will be able to make replacements. /obj/item/assembly/igniter = 1) /obj/item/circuitboard/ore_redemption/golem - name = "circuit board (Golem Ore Redemption)" + board_name = "Ore Redemption - Golem" build_path = /obj/machinery/mineral/ore_redemption/golem /obj/item/circuitboard/ore_redemption/labor - name = "circuit board (Labor Ore Redemption)" + board_name = "Ore Redemption - Labour" build_path = /obj/machinery/mineral/ore_redemption/labor /obj/item/circuitboard/mining_equipment_vendor - name = "circuit board (Mining Equipment Vendor)" + board_name = "Mining Equipment Vendor" build_path = /obj/machinery/mineral/equipment_vendor board_type = "machine" origin_tech = "programming=1;engineering=3" @@ -897,15 +895,15 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/matter_bin = 3) /obj/item/circuitboard/mining_equipment_vendor/golem - name = "circuit board (Mining Equipment Vendor)" + board_name = "Golem Equipment Vendor" build_path = /obj/machinery/mineral/equipment_vendor/golem /obj/item/circuitboard/mining_equipment_vendor/labor - name = "circuit board (Labor Equipment Vendor)" + board_name = "Labour Equipment Vendor" build_path = /obj/machinery/mineral/equipment_vendor/labor /obj/item/circuitboard/clawgame - name = "circuit board (Claw Game)" + board_name = "Claw Game" build_path = /obj/machinery/arcade/claw board_type = "machine" origin_tech = "programming=1" @@ -916,7 +914,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/prize_counter - name = "circuit board (Prize Counter)" + board_name = "Prize Counter" build_path = /obj/machinery/prize_counter board_type = "machine" origin_tech = "programming=1" @@ -927,7 +925,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/cable_coil = 1) /obj/item/circuitboard/gameboard - name = "circuit board (Virtual Gameboard)" + board_name = "Virtual Gameboard" build_path = /obj/machinery/gameboard board_type = "machine" origin_tech = "programming=1" diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 48e224c3d38..a67f068912f 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -170,12 +170,12 @@ dispense_item(I) /obj/item/circuitboard/cryopodcontrol - name = "Circuit board (Cryogenic Oversight Console)" + board_name = "Cryogenic Oversight Console" build_path = "/obj/machinery/computer/cryopod" origin_tech = "programming=1" /obj/item/circuitboard/robotstoragecontrol - name = "Circuit board (Robotic Storage Console)" + board_name = "Robotic Storage Console" build_path = "/obj/machinery/computer/cryopod/robot" origin_tech = "programming=1" diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 8ab3dd0b966..dbce1932045 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -331,26 +331,42 @@ if(default_deconstruction_screwdriver(user, "panel", "close", I)) I.play_tool_sound(user, I.tool_volume) +/** + * Tries to store the item into whatever slot it can go, returns true if the item is stored successfully. + * +**/ /obj/machinery/suit_storage_unit/proc/store_item(obj/item/I, mob/user) - . = FALSE if(istype(I, /obj/item/clothing/suit) && !suit) - suit = I - . = TRUE + if(try_store_item(I, user)) + suit = I + return TRUE if(istype(I, /obj/item/clothing/head) && !helmet) - helmet = I - . = TRUE + if(try_store_item(I, user)) + helmet = I + return TRUE if(istype(I, /obj/item/clothing/mask) && !mask) - mask = I - . = TRUE + if(try_store_item(I, user)) + mask = I + return TRUE if(istype(I, /obj/item/clothing/shoes) && !boots) - boots = I - . = TRUE - if((istype(I, /obj/item/tank) || I.w_class <= WEIGHT_CLASS_SMALL) && !storage && !.) - storage = I - . = TRUE - if(.) - user.drop_item() + if(try_store_item(I, user)) + boots = I + return TRUE + if((istype(I, /obj/item/tank) || I.w_class <= WEIGHT_CLASS_SMALL) && !storage) + if(try_store_item(I, user)) + storage = I + return TRUE + return FALSE + +/** + * Tries to store the item, returns true if it's moved successfully, false otherwise (because of nodrop etc) + * +**/ +/obj/machinery/suit_storage_unit/proc/try_store_item(obj/item/I, mob/user) + if(user.drop_item()) I.forceMove(src) + return TRUE + return FALSE /obj/machinery/suit_storage_unit/power_change() diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 15a69318610..88deaf8647b 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -101,16 +101,24 @@ var/force_no_power_icon_state = FALSE /obj/machinery/vending/Initialize(mapload) + . = ..() var/build_inv = FALSE if(!refill_canister) build_inv = TRUE - . = ..() + else + component_parts = list() + var/obj/item/circuitboard/vendor/V = new + V.set_type(replacetext(name, "\improper", "")) + component_parts += V + component_parts += new refill_canister + RefreshParts() + wires = new(src) if(build_inv) //non-constructable vending machine build_inventory(products, product_records) build_inventory(contraband, hidden_records) build_inventory(premium, coin_records) - for (var/datum/data/vending_product/R in (product_records + coin_records + hidden_records)) + for(var/datum/data/vending_product/R in (product_records + coin_records + hidden_records)) var/obj/item/I = R.product_path var/pp = replacetext(replacetext("[R.product_path]", "/obj/item/", ""), "/", "-") imagelist[pp] = "[icon2base64(icon(initial(I.icon), initial(I.icon_state)))]" @@ -887,14 +895,6 @@ ads_list = list("Only the finest!","Have some tools.","The most robust equipment.","The finest gear in space!") refill_canister = /obj/item/vending_refill/assist -/obj/machinery/vending/assist/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/assist(null) - RefreshParts() - return ..() /obj/machinery/vending/boozeomat name = "\improper Booze-O-Mat" @@ -934,15 +934,6 @@ /obj/machinery/vending/boozeomat/syndicate_access req_access = list(ACCESS_SYNDICATE) -/obj/machinery/vending/boozeomat/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/boozeomat(null) - RefreshParts() - return ..() - /obj/machinery/vending/coffee name = "\improper Hot Drinks machine" @@ -964,15 +955,6 @@ /obj/machinery/vending/coffee/free prices = list() -/obj/machinery/vending/coffee/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/coffee(null) - RefreshParts() - return ..() - /obj/machinery/vending/coffee/item_slot_check(mob/user, obj/item/I) if(!(istype(I, /obj/item/reagent_containers/glass) || istype(I, /obj/item/reagent_containers/food/drinks))) return FALSE @@ -1029,14 +1011,6 @@ /obj/machinery/vending/snack/free prices = list() -/obj/machinery/vending/snack/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/snack(null) - RefreshParts() - return ..() /obj/machinery/vending/chinese name = "\improper Mr. Chang" @@ -1052,14 +1026,6 @@ /obj/machinery/vending/chinese/free prices = list() -/obj/machinery/vending/chinese/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/chinese(null) - RefreshParts() - return ..() /obj/machinery/vending/cola name = "\improper Robust Softdrinks" @@ -1079,15 +1045,6 @@ /obj/machinery/vending/cola/free prices = list() -/obj/machinery/vending/cola/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/cola(null) - RefreshParts() - return ..() - /obj/machinery/vending/cart name = "\improper PTech" @@ -1107,14 +1064,6 @@ /obj/machinery/vending/cart/free prices = list() -/obj/machinery/vending/cart/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/cart(null) - RefreshParts() - return ..() /obj/machinery/vending/liberationstation name = "\improper Liberation Station" @@ -1161,6 +1110,7 @@ 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/cigarette name = "cigarette machine" desc = "If you want to get cancer, might as well do it in style." @@ -1190,6 +1140,7 @@ /obj/machinery/vending/cigarette/syndicate/free prices = list() + /obj/machinery/vending/cigarette/beach //Used in the lavaland_biodome_beach.dmm ruin name = "\improper ShadyCigs Ultra" desc = "Now with extra premium products!" @@ -1208,14 +1159,6 @@ /obj/item/lighter/zippo = 3) prices = list() -/obj/machinery/vending/cigarette/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/cigarette(null) - RefreshParts() - return ..() /obj/machinery/vending/medical name = "\improper NanoMed Plus" @@ -1242,14 +1185,6 @@ name = "\improper SyndiMed Plus" req_access = list(ACCESS_SYNDICATE) -/obj/machinery/vending/medical/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/medical(null) - RefreshParts() - return ..() /obj/machinery/vending/plasmaresearch name = "\improper Toximate 3000" @@ -1258,6 +1193,7 @@ /obj/item/wirecutters = 1, /obj/item/assembly/timer = 8) contraband = list(/obj/item/flashlight = 5, /obj/item/assembly/voice = 3, /obj/item/assembly/health = 3, /obj/item/assembly/infra = 3) + /obj/machinery/vending/wallmed name = "\improper NanoMed" desc = "Wall-mounted Medical Equipment dispenser." @@ -1271,14 +1207,6 @@ resistance_flags = FIRE_PROOF refill_canister = /obj/item/vending_refill/wallmed -/obj/machinery/vending/wallmed/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/wallmed(null) - RefreshParts() - return ..() /obj/machinery/vending/wallmed/syndicate name = "\improper SyndiMed Plus" @@ -1290,6 +1218,7 @@ products = list(/obj/item/stack/medical/bruise_pack = 2,/obj/item/stack/medical/ointment = 2,/obj/item/reagent_containers/hypospray/autoinjector = 4,/obj/item/healthanalyzer = 1) contraband = list(/obj/item/reagent_containers/syringe/charcoal = 4,/obj/item/reagent_containers/syringe/antiviral = 4,/obj/item/reagent_containers/food/pill/tox = 1) + /obj/machinery/vending/security name = "\improper SecTech" desc = "A security equipment vendor." @@ -1303,14 +1232,6 @@ contraband = list(/obj/item/clothing/glasses/sunglasses = 2,/obj/item/storage/fancy/donut_box = 2,/obj/item/hailer = 5) refill_canister = /obj/item/vending_refill/security -/obj/machinery/vending/security/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/security(null) - RefreshParts() - return ..() /obj/machinery/vending/hydronutrients name = "\improper NutriMax" @@ -1324,14 +1245,6 @@ contraband = list(/obj/item/reagent_containers/glass/bottle/ammonia = 10,/obj/item/reagent_containers/glass/bottle/diethylamine = 5) refill_canister = /obj/item/vending_refill/hydronutrients -/obj/machinery/vending/hydronutrients/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/hydronutrients(null) - RefreshParts() - return ..() /obj/machinery/vending/hydroseeds name = "\improper MegaSeed Servitor" @@ -1394,14 +1307,6 @@ premium = list(/obj/item/reagent_containers/spray/waterflower = 1) refill_canister = /obj/item/vending_refill/hydroseeds -/obj/machinery/vending/hydroseeds/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/hydroseeds(null) - RefreshParts() - return ..() /obj/machinery/vending/magivend name = "\improper MagiVend" @@ -1429,6 +1334,7 @@ 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/autodrobe name = "\improper AutoDrobe" desc = "A vending machine for costumes." @@ -1564,14 +1470,6 @@ /obj/item/clothing/head/cuban_hat = 1) refill_canister = /obj/item/vending_refill/autodrobe -/obj/machinery/vending/autodrobe/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/autodrobe(null) - RefreshParts() - return ..() /obj/machinery/vending/dinnerware name = "\improper Plasteel Chef's Dinnerware Vendor" @@ -1602,14 +1500,6 @@ contraband = list(/obj/item/kitchen/rollingpin = 2, /obj/item/kitchen/knife/butcher = 2) refill_canister = /obj/item/vending_refill/dinnerware -/obj/machinery/vending/dinnerware/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/dinnerware(null) - RefreshParts() - return ..() /obj/machinery/vending/sovietsoda name = "\improper BODA" @@ -1621,14 +1511,6 @@ resistance_flags = FIRE_PROOF refill_canister = /obj/item/vending_refill/sovietsoda -/obj/machinery/vending/sovietsoda/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/sovietsoda(null) - RefreshParts() - return ..() /obj/machinery/vending/tool name = "\improper YouTool" @@ -1639,9 +1521,11 @@ /obj/item/wrench = 5,/obj/item/analyzer = 5,/obj/item/t_scanner = 5,/obj/item/screwdriver = 5) contraband = list(/obj/item/weldingtool/hugetank = 2,/obj/item/clothing/gloves/color/fyellow = 2) premium = list(/obj/item/clothing/gloves/color/yellow = 1) + refill_canister = /obj/item/vending_refill/youtool armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 70) resistance_flags = FIRE_PROOF + /obj/machinery/vending/engivend name = "\improper Engi-Vend" desc = "Spare tool vending. What? Did you expect some witty description?" @@ -1653,14 +1537,6 @@ premium = list(/obj/item/storage/belt/utility = 3) refill_canister = /obj/item/vending_refill/engivend -/obj/machinery/vending/engivend/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/engivend(null) - RefreshParts() - return ..() /obj/machinery/vending/engineering name = "\improper Robco Tool Maker" @@ -1676,14 +1552,6 @@ /obj/item/stock_parts/matter_bin = 5,/obj/item/stock_parts/manipulator = 5) refill_canister = /obj/item/vending_refill/engineering -/obj/machinery/vending/engineering/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/engineering(null) - RefreshParts() - return ..() /obj/machinery/vending/robotics name = "\improper Robotech Deluxe" @@ -1697,14 +1565,6 @@ /obj/item/screwdriver = 5,/obj/item/crowbar = 5) refill_canister = /obj/item/vending_refill/robotics -/obj/machinery/vending/robotics/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/robotics(null) - RefreshParts() - return ..() /obj/machinery/vending/sustenance name = "\improper Sustenance Vendor" @@ -1721,14 +1581,6 @@ /obj/item/clothing/mask/breath = 6) refill_canister = /obj/item/vending_refill/sustenance -/obj/machinery/vending/sustenance/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/sustenance(null) - RefreshParts() - return ..() /obj/machinery/vending/hatdispenser name = "\improper Hatlord 9000" @@ -1745,14 +1597,6 @@ premium = list(/obj/item/clothing/head/soft/rainbow = 1) refill_canister = /obj/item/vending_refill/hatdispenser -/obj/machinery/vending/hatdispenser/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/hatdispenser(null) - RefreshParts() - return ..() /obj/machinery/vending/suitdispenser name = "\improper Suitlord 9000" @@ -1766,14 +1610,6 @@ premium = list(/obj/item/clothing/under/rainbow = 1) refill_canister = /obj/item/vending_refill/suitdispenser -/obj/machinery/vending/suitdispenser/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/suitdispenser(null) - RefreshParts() - return ..() /obj/machinery/vending/shoedispenser name = "\improper Shoelord 9000" @@ -1785,14 +1621,6 @@ premium = list(/obj/item/clothing/shoes/rainbow = 1) refill_canister = /obj/item/vending_refill/shoedispenser -/obj/machinery/vending/shoedispenser/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/shoedispenser(null) - RefreshParts() - return ..() /obj/machinery/vending/syndicigs name = "\improper Suspicious Cigarette Machine" @@ -1803,6 +1631,7 @@ icon_state = "cigs" products = list(/obj/item/storage/fancy/cigarettes/syndicate = 10,/obj/item/lighter/random = 5) + /obj/machinery/vending/syndisnack name = "\improper Getmore Chocolate Corp" desc = "A modified snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars" @@ -1812,6 +1641,7 @@ products = list(/obj/item/reagent_containers/food/snacks/chips =6,/obj/item/reagent_containers/food/snacks/sosjerky = 6, /obj/item/reagent_containers/food/snacks/syndicake = 6, /obj/item/reagent_containers/food/snacks/cheesiehonkers = 6) + //don't forget to change the refill size if you change the machine's contents! /obj/machinery/vending/clothing name = "\improper ClothesMate" //renamed to make the slogan rhyme @@ -1907,14 +1737,6 @@ refill_canister = /obj/item/vending_refill/clothing -/obj/machinery/vending/clothing/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/clothing(null) - RefreshParts() - return ..() /obj/machinery/vending/artvend name = "\improper ArtVend" @@ -1931,6 +1753,7 @@ contraband = list(/obj/item/toy/crayon/mime = 1,/obj/item/toy/crayon/rainbow = 1) premium = list(/obj/item/poster/random_contraband = 5) + /obj/machinery/vending/crittercare name = "\improper CritterCare" desc = "A vending machine for pet supplies." @@ -1955,11 +1778,3 @@ /obj/machinery/vending/crittercare/free prices = list() -/obj/machinery/vending/crittercare/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/crittercare(null) - RefreshParts() - return ..() diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index 884fd115fd4..96ee16ac81e 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -228,7 +228,7 @@ switch(mode) if(0) if(istype(target, /turf/simulated/wall)) - if(istype(target, /turf/simulated/wall/r_wall) && !canRwall) + if((istype(target, /turf/simulated/wall/r_wall) && !canRwall) || istype(target, /turf/simulated/wall/indestructible)) return 0 var/turf/simulated/wall/W = target occupant_message("Deconstructing [target]...") diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm index 4bb7f96e66f..52b3a2263fa 100644 --- a/code/game/mecha/mecha_parts.dm +++ b/code/game/mecha/mecha_parts.dm @@ -347,117 +347,121 @@ ///////// Circuitboards /obj/item/circuitboard/mecha - name = "Exosuit Circuit board" - icon = 'icons/obj/module.dmi' icon_state = "std_mod" - item_state = "electronic" board_type = "other" flags = CONDUCT - force = 5.0 - w_class = WEIGHT_CLASS_SMALL - throwforce = 5.0 + force = 5 + throwforce = 5 throw_speed = 3 throw_range = 15 + /obj/item/circuitboard/mecha/ripley origin_tech = "programming=2" +/obj/item/circuitboard/mecha/ripley/main + board_name = "Ripley Central Control Module" + icon_state = "mainboard" + /obj/item/circuitboard/mecha/ripley/peripherals - name = "Circuit board (Ripley Peripherals Control module)" + board_name = "Ripley Peripherals Control Module" icon_state = "mcontroller" -/obj/item/circuitboard/mecha/ripley/main - name = "Circuit board (Ripley Central Control module)" - icon_state = "mainboard" /obj/item/circuitboard/mecha/gygax origin_tech = "programming=4;combat=3;engineering=3" +/obj/item/circuitboard/mecha/gygax/main + board_name = "Gygax Central Control Module" + icon_state = "mainboard" + /obj/item/circuitboard/mecha/gygax/peripherals - name = "Circuit board (Gygax Peripherals Control module)" + board_name = "Gygax Peripherals Control Module" icon_state = "mcontroller" /obj/item/circuitboard/mecha/gygax/targeting - name = "Circuit board (Gygax Weapon Control and Targeting module)" + board_name = "Gygax Weapon Control and Targeting Module" icon_state = "mcontroller" origin_tech = "programming=4;combat=4" -/obj/item/circuitboard/mecha/gygax/main - name = "Circuit board (Gygax Central Control module)" - icon_state = "mainboard" /obj/item/circuitboard/mecha/durand origin_tech = "programming=4;combat=3;engineering=3" +/obj/item/circuitboard/mecha/durand/main + board_name = "Durand Central Control Module" + icon_state = "mainboard" + /obj/item/circuitboard/mecha/durand/peripherals - name = "Circuit board (Durand Peripherals Control module)" + board_name = "Durand Peripherals Control Module" icon_state = "mcontroller" /obj/item/circuitboard/mecha/durand/targeting - name = "Circuit board (Durand Weapon Control and Targeting module)" + board_name = "Durand Weapon Control and Targeting Module" icon_state = "mcontroller" origin_tech = "programming=4;combat=4;engineering=3" -/obj/item/circuitboard/mecha/durand/main - name = "Circuit board (Durand Central Control module)" - icon_state = "mainboard" /obj/item/circuitboard/mecha/phazon origin_tech = "programming=5;plasmatech=4" +/obj/item/circuitboard/mecha/phazon/main + board_name = "Phazon Central Control Module" + icon_state = "mainboard" + /obj/item/circuitboard/mecha/phazon/peripherals - name = "Circuit board (Phazon Peripherals Control module)" + board_name = "Phazon Peripherals Control Module" icon_state = "mcontroller" /obj/item/circuitboard/mecha/phazon/targeting - name = "Circuit board (Phazon Weapon Control and Targeting module)" + board_name = "Phazon Weapon Control and Targeting Module" icon_state = "mcontroller" -/obj/item/circuitboard/mecha/phazon/main - name = "Circuit board (Phazon Central Control module)" - icon_state = "mainboard" /obj/item/circuitboard/mecha/honker origin_tech = "programming=3;engineering=3" +/obj/item/circuitboard/mecha/honker/main + board_name = "H.O.N.K Central Control Module" + icon_state = "mainboard" + /obj/item/circuitboard/mecha/honker/peripherals - name = "Circuit board (H.O.N.K Peripherals Control module)" + board_name = "H.O.N.K Peripherals Control Module" icon_state = "mcontroller" /obj/item/circuitboard/mecha/honker/targeting - name = "Circuit board (H.O.N.K Weapon Control and Targeting module)" + board_name = "H.O.N.K Weapon Control and Targeting Module" icon_state = "mcontroller" -/obj/item/circuitboard/mecha/honker/main - name = "Circuit board (H.O.N.K Central Control module)" - icon_state = "mainboard" /obj/item/circuitboard/mecha/reticence origin_tech = "programming=3;engineering=3" +/obj/item/circuitboard/mecha/reticence/main + board_name = "Reticence Central Control Module" + icon_state = "mainboard" + /obj/item/circuitboard/mecha/reticence/peripherals - name = "circuit board (Reticence Peripherals Control module)" + board_name = "Reticence Peripherals Control Module" icon_state = "mcontroller" /obj/item/circuitboard/mecha/reticence/targeting - name = "circuit board (Reticence Weapon Control and Targeting module)" + board_name = "Reticence Weapon Control and Targeting Module" icon_state = "mcontroller" -/obj/item/circuitboard/mecha/reticence/main - name = "circuit board (Reticence Central Control module)" - icon_state = "mainboard" /obj/item/circuitboard/mecha/odysseus origin_tech = "programming=3;biotech=3" +/obj/item/circuitboard/mecha/odysseus/main + board_name = "Odysseus Central Control Module" + icon_state = "mainboard" + /obj/item/circuitboard/mecha/odysseus/peripherals - name = "Circuit board (Odysseus Peripherals Control module)" + board_name = "Odysseus Peripherals Control Module" icon_state = "mcontroller" -/obj/item/circuitboard/mecha/odysseus/main - name = "Circuit board (Odysseus Central Control module)" - icon_state = "mainboard" /obj/item/circuitboard/mecha/pod - name = "Circuit board (Space Pod Mainboard)" + board_name = "Space Pod Mainboard" icon_state = "mainboard" diff --git a/code/game/objects/items/weapons/vending_items.dm b/code/game/objects/items/weapons/vending_items.dm index e7743f961f1..c4d4d5090e5 100644 --- a/code/game/objects/items/weapons/vending_items.dm +++ b/code/game/objects/items/weapons/vending_items.dm @@ -114,6 +114,10 @@ machine_name = "Robco Tool Maker" icon_state = "refill_engi" +/obj/item/vending_refill/youtool + machine_name = "YouTool" + icon_state = "refill_engi" + /obj/item/vending_refill/engivend machine_name = "Engi-Vend" icon_state = "refill_engi" diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm index d2109bee2f0..2cbce40cde2 100644 --- a/code/game/turfs/simulated/minerals.dm +++ b/code/game/turfs/simulated/minerals.dm @@ -82,6 +82,7 @@ /turf/simulated/mineral/proc/gets_drilled() if(mineralType && (mineralAmt > 0)) new mineralType(src, mineralAmt) + SSticker.score?.score_ore_mined++ SSblackbox.record_feedback("tally", "ore_mined", mineralAmt, mineralType) for(var/obj/effect/temp_visual/mining_overlay/M in src) qdel(M) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index bb92b175c29..53615c3d2f7 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -278,11 +278,9 @@ var/action="" if(GLOB.configuration.general.allow_antag_hud) for(var/mob/dead/observer/g in get_ghosts()) - if(!g.client.holder) //Remove the verb from non-admin ghosts - g.verbs -= /mob/dead/observer/verb/toggle_antagHUD if(g.antagHUD) g.antagHUD = FALSE // Disable it on those that have it enabled - g.has_enabled_antagHUD = 2 // We'll allow them to respawn + g.has_enabled_antagHUD = FALSE // We'll allow them to respawn to_chat(g, "The Administrators have disabled AntagHUD ") GLOB.configuration.general.allow_antag_hud = FALSE to_chat(src, "AntagHUD usage has been disabled") @@ -290,7 +288,6 @@ else for(var/mob/dead/observer/g in get_ghosts()) if(!g.client.holder) // Add the verb back for all non-admin ghosts - g.verbs += /mob/dead/observer/verb/toggle_antagHUD to_chat(g, "The Administrators have enabled AntagHUD ")// Notify all observers they can now use AntagHUD GLOB.configuration.general.allow_antag_hud = TRUE @@ -321,7 +318,7 @@ to_chat(g, "The administrator has placed restrictions on joining the round if you use AntagHUD") to_chat(g, "Your AntagHUD has been disabled, you may choose to re-enabled it but will be under restrictions ") g.antagHUD = FALSE - g.has_enabled_antagHUD = 0 + g.has_enabled_antagHUD = FALSE action = "placed restrictions" GLOB.configuration.general.restrict_antag_hud_rejoin = TRUE to_chat(src, "AntagHUD restrictions have been enabled") diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index 8b2bfdbd786..4dfecc88b82 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -45,7 +45,7 @@ // Components component_parts = list() var/obj/item/circuitboard/smartfridge/board = new(null) - board.set_type(type) + board.set_type(null, type) component_parts += board component_parts += new /obj/item/stock_parts/matter_bin(null) RefreshParts() diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index 96ad7bcd00a..d415bdcb5a5 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -18,8 +18,6 @@ ..() pixel_x = rand(0, 16) - 8 pixel_y = rand(0, 8) - 8 - if(is_mining_level(z)) - SSticker.score.score_ore_mined++ //When ore spawns, increment score. Only include ore spawned on mining level (No Clown Planet) /obj/item/stack/ore/welder_act(mob/user, obj/item/I) . = TRUE diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index c99096a2796..953b13f0bda 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -26,7 +26,8 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) var/image/ghostimage = null //this mobs ghost image, for deleting and stuff var/ghostvision = TRUE //is the ghost able to see things humans can't? var/seedarkness = TRUE - var/data_hud_seen = FALSE //this should one of the defines in __DEFINES/hud.dm + /// Defines from __DEFINES/hud.dm go here based on which huds the ghost has activated. + var/list/data_hud_seen = list() var/ghost_orbit = GHOST_ORBIT_CIRCLE var/health_scan = FALSE //does the ghost have health scanner mode on? by default it should be off var/datum/orbit_menu/orbit_menu @@ -86,7 +87,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) real_name = name //starts ghosts off with all HUDs. - toggle_medHUD() + toggle_all_huds_on() ..() /mob/dead/observer/Destroy() @@ -162,8 +163,6 @@ Works together with spawning an observer, noted above. else GLOB.non_respawnable_keys[ckey] = 1 ghost.key = key - if(!(ghost.client && ghost.client.holder) && !GLOB.configuration.general.allow_antag_hud) // For new ghosts we remove the verb from even showing up if it's not allowed. - ghost.verbs -= /mob/dead/observer/verb/toggle_antagHUD // Poor guys, don't know what they are missing! return ghost /* @@ -310,87 +309,24 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp /mob/dead/observer/proc/show_me_the_hud(hud_index) var/datum/atom_hud/H = GLOB.huds[hud_index] H.add_hud_to(src) + data_hud_seen |= hud_index /mob/dead/observer/proc/remove_the_hud(hud_index) //remove old huds var/datum/atom_hud/H = GLOB.huds[hud_index] H.remove_hud_from(src) + data_hud_seen -= hud_index -/mob/dead/observer/verb/toggle_medHUD() +/mob/dead/observer/verb/open_hud_panel() set category = "Ghost" - set name = "Toggle All/Sec/Med/Diag HUDs" - set desc = "Toggles the HUDs." + set name = "Ghost HUD Panel" if(!client) return + GLOB.ghost_hud_panel.ui_interact(src) - switch(data_hud_seen) //give new huds - if(FALSE) - data_hud_seen = DATA_HUD_DIAGNOSTIC + DATA_HUD_SECURITY_ADVANCED + DATA_HUD_MEDICAL_ADVANCED - show_me_the_hud(DATA_HUD_DIAGNOSTIC) - show_me_the_hud(DATA_HUD_SECURITY_ADVANCED) - show_me_the_hud(DATA_HUD_MEDICAL_ADVANCED) - to_chat(src, "All HUDs enabled.") - if(DATA_HUD_DIAGNOSTIC + DATA_HUD_SECURITY_ADVANCED + DATA_HUD_MEDICAL_ADVANCED) - data_hud_seen = DATA_HUD_SECURITY_ADVANCED - remove_the_hud(DATA_HUD_DIAGNOSTIC) - remove_the_hud(DATA_HUD_MEDICAL_ADVANCED) - to_chat(src, "Security HUD set.") - if(DATA_HUD_SECURITY_ADVANCED) - data_hud_seen = DATA_HUD_MEDICAL_ADVANCED - remove_the_hud(DATA_HUD_SECURITY_ADVANCED) - show_me_the_hud(DATA_HUD_MEDICAL_ADVANCED) - to_chat(src, "Medical HUD set.") - if(DATA_HUD_MEDICAL_ADVANCED) - data_hud_seen = DATA_HUD_DIAGNOSTIC - remove_the_hud(DATA_HUD_MEDICAL_ADVANCED) - show_me_the_hud(DATA_HUD_DIAGNOSTIC) - to_chat(src, "Diagnostic HUD set.") - else - data_hud_seen = FALSE - remove_the_hud(DATA_HUD_MEDICAL_ADVANCED) - to_chat(src, "HUDs disabled.") - - -/mob/dead/observer/verb/toggle_antagHUD() - set category = "Ghost" - set name = "Toggle AntagHUD" - set desc = "Toggles AntagHUD allowing you to see who is the antagonist" - if(!GLOB.configuration.general.allow_antag_hud && !client.holder) - to_chat(src, "Admins have disabled this for this round.") - return - if(!client) - return - var/mob/dead/observer/M = src - if(jobban_isbanned(M, ROLEBAN_AHUD)) - to_chat(src, "You have been banned from using this feature") - return - - var/restricted_use = (!M.has_enabled_antagHUD && !check_rights(R_ADMIN|R_MOD, FALSE)) // Admins can freely toggle it - if(GLOB.configuration.general.restrict_antag_hud_rejoin && restricted_use) - var/response = alert(src, "If you turn this on, you will not be able to take any part in the round.", "Are you sure you want to turn this feature on?", "Yes", "No") - if(response == "No") - return - M.can_reenter_corpse = FALSE - if(M in GLOB.respawnable_list) - GLOB.respawnable_list -= M - - if(restricted_use) - M.has_enabled_antagHUD = TRUE - - for(var/datum/atom_hud/antag/H in (GLOB.huds)) - if(!M.antagHUD) - H.add_hud_to(usr) - else - H.remove_hud_from(usr) - if(!M.antagHUD) - to_chat(usr, "AntagHud Toggled ON") - create_log(MISC_LOG, "Enabled AntagHUD") - log_game("[key_name(usr)] has enabled AntagHUD.") - M.antagHUD = TRUE - else - to_chat(usr, "AntagHud Toggled OFF") - create_log(MISC_LOG, "Disabled AntagHUD") - log_game("[key_name(usr)] has disabled AntagHUD.") - M.antagHUD = FALSE +/mob/dead/observer/proc/toggle_all_huds_on() + show_me_the_hud(DATA_HUD_DIAGNOSTIC) + show_me_the_hud(DATA_HUD_SECURITY_ADVANCED) + show_me_the_hud(DATA_HUD_MEDICAL_ADVANCED) /mob/dead/observer/verb/set_dnr() set name = "Set DNR" diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 92ee3c2195d..cc85d785a86 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -433,7 +433,7 @@ else if(isobserver(M)) var/mob/dead/observer/O = M - if(O.data_hud_seen == DATA_HUD_SECURITY_ADVANCED || O.data_hud_seen == DATA_HUD_DIAGNOSTIC + DATA_HUD_SECURITY_ADVANCED + DATA_HUD_MEDICAL_ADVANCED) + if(DATA_HUD_SECURITY_ADVANCED in O.data_hud_seen) return (hudtype in list(EXAMINE_HUD_SECURITY_READ, EXAMINE_HUD_SKILLS)) return FALSE diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/empress.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/empress.dm index eb449c44417..ecfa1332630 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/empress.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/empress.dm @@ -24,7 +24,6 @@ projectiletype = /obj/item/projectile/terrorqueenspit/empress icon = 'icons/mob/terrorspider64.dmi' pixel_x = -16 - move_resist = MOVE_FORCE_STRONG // no more pushing a several hundred if not thousand pound spider mob_size = MOB_SIZE_LARGE icon_state = "terror_empress" icon_living = "terror_empress" diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm index a7b99aafc67..7b900d8a881 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm @@ -30,7 +30,6 @@ web_type = /obj/structure/spider/terrorweb/purple ai_spins_webs = FALSE gender = MALE - move_resist = MOVE_FORCE_STRONG // no more pushing a several hundred if not thousand pound spider /mob/living/simple_animal/hostile/poison/terror_spider/prince/death(gibbed) if(can_die() && !hasdied && spider_uo71) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/princess.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/princess.dm index 3e7e5c5194e..787d89b722f 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/princess.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/princess.dm @@ -19,7 +19,6 @@ maxHealth = 150 health = 150 spider_tier = TS_TIER_3 - move_resist = MOVE_FORCE_STRONG // no more pushing a several hundred if not thousand pound spider // Unlike queens, no ranged attack. ranged = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm index 63541db1e9b..eb55ff2a9b3 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm @@ -25,7 +25,6 @@ speed = 0 // '0' (also the default for human mobs) converts to 2.5 total delay, or 4 tiles/sec. spider_opens_doors = 2 ventcrawler = 0 - move_resist = MOVE_FORCE_STRONG // no more pushing a several hundred if not thousand pound spider ai_ventcrawls = FALSE environment_smash = ENVIRONMENT_SMASH_RWALLS idle_ventcrawl_chance = 0 // stick to the queen! diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm index 06db565cad4..cd87f2dd577 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm @@ -26,7 +26,6 @@ ai_spins_webs = FALSE ai_ventcrawls = FALSE idle_ventcrawl_chance = 0 - move_resist = MOVE_FORCE_STRONG // no more pushing a several hundred if not thousand pound spider force_threshold = 18 // outright immune to anything of force under 18, this means welders can't hurt it, only guns can ranged = 1 retreat_distance = 5 diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/red.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/red.dm index 1e92b5d65e5..a96486e473e 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/red.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/red.dm @@ -24,7 +24,6 @@ move_to_delay = 10 // at 20ticks/sec, this is 2 tile/sec movespeed speed = 2 // movement_delay() gives 4.5, or 0.45s between steps, which = about 2.2 tiles/second. Player is slightly faster than AI, but cannot move on diagonals. spider_opens_doors = 2 - move_resist = MOVE_FORCE_STRONG // no more pushing a several hundred if not thousand pound spider web_type = /obj/structure/spider/terrorweb/red var/enrage = 0 var/melee_damage_lower_rage0 = 15 diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm index 9f93bcab1ef..eed323d9ebe 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm @@ -40,6 +40,7 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list) // Movement pass_flags = PASSTABLE + move_resist = MOVE_FORCE_STRONG // no more pushing a several hundred if not thousand pound spider turns_per_move = 3 // number of turns before AI-controlled spiders wander around. No effect on actual player or AI movement speed! move_to_delay = 6 // AI spider speed at chasing down targets. Higher numbers mean slower speed. Divide 20 (server tick rate / second) by this to get tiles/sec. diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index cb39d6cc9c0..6bc7b9d454b 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -111,8 +111,8 @@ var/move_on_shuttle = 1 // Can move on the shuttle. - - var/has_enabled_antagHUD = 0 // Whether antagHUD was ever enabled. Not a true boolean - sometimes it is set to 2, because reasons. + /// Whether antagHUD has been enabled previously. + var/has_enabled_antagHUD = FALSE var/antagHUD = FALSE // Whether AntagHUD is active right now var/can_change_intents = 1 //all mobs can change intents by default. ///Override for sound_environments. If this is set the user will always hear a specific type of reverb (Instead of the area defined reverb) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index b20fa5fb888..7e1c22aa237 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -79,7 +79,7 @@ /proc/cannotPossess(A) var/mob/dead/observer/G = A - if(G.has_enabled_antagHUD == 1 && GLOB.configuration.general.restrict_antag_hud_rejoin) + if(G.has_enabled_antagHUD && GLOB.configuration.general.restrict_antag_hud_rejoin) return 1 return 0 diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 4410ff9b875..5d7d5caa919 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -192,8 +192,6 @@ client.prefs.real_name = random_name(client.prefs.gender,client.prefs.species) observer.real_name = client.prefs.real_name observer.name = observer.real_name - if(!client.holder && !GLOB.configuration.general.allow_antag_hud) // For new ghosts we remove the verb from even showing up if it's not allowed. - observer.verbs -= /mob/dead/observer/verb/toggle_antagHUD // Poor guys, don't know what they are missing! observer.key = key QDEL_NULL(mind) GLOB.respawnable_list += observer diff --git a/code/modules/reagents/chemistry/reagents/paradise_pop.dm b/code/modules/reagents/chemistry/reagents/paradise_pop.dm index c7c9fa46c75..c7b8dd6f5c5 100644 --- a/code/modules/reagents/chemistry/reagents/paradise_pop.dm +++ b/code/modules/reagents/chemistry/reagents/paradise_pop.dm @@ -29,7 +29,7 @@ /datum/reagent/consumable/drink/apple_pocalypse/on_mob_life(mob/living/M) if(prob(1)) var/turf/simulated/T = get_turf(M) - goonchem_vortex(T, 1, 0) + goonchem_vortex(T, TRUE, 0, TRUE) // Ignore the 0 volume to_chat(M, "You briefly feel super-massive, like a black hole. Probably just your imagination...") return ..() @@ -119,7 +119,7 @@ /datum/reagent/consumable/drink/grape_granade/on_mob_life(mob/living/M) if(prob(1)) var/turf/simulated/T = get_turf(M) - goonchem_vortex(T, 0, 0) + goonchem_vortex(T, FALSE, 0, TRUE) // Ignore the 0 volume M.emote("burp") to_chat(M, "You feel ready to burst! Oh wait, just a burp...") else if(prob(25)) diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index b743da3cecf..cb739a65a7b 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -53,18 +53,37 @@ for(var/j = 1, j <= rand(1, 3), j++) step(S, pick(NORTH,SOUTH,EAST,WEST)) -/proc/goonchem_vortex(turf/T, setting_type, volume) - if(setting_type) +/** + * Throws or pulls objects to/from a chem reaction + * + * Scales the amount of objects thrown with the volume, unless ignore_volume is TRUE + * + * Arguments: + * * T - The turf to use as the throw from/to point + * * pull - Do we want to pull objects towards T (TRUE) or push them away from it (FALSE) + * * volume - The volume of reagents. Used to scale the effect is ignore_volume = FALSE + * * ignore_volume - Do we want to ignore the volume of reagents and just throw regardless + */ +/proc/goonchem_vortex(turf/T, pull, volume, ignore_volume = FALSE) + if(pull) new /obj/effect/temp_visual/implosion(T) playsound(T, 'sound/effects/whoosh.ogg', 25, 1) //credit to Robinhood76 of Freesound.org for this. else new /obj/effect/temp_visual/shockwave(T) playsound(T, 'sound/effects/bang.ogg', 25, 1) - for(var/atom/movable/X in view(2 + setting_type + (volume > 30 ? 1 : 0), T)) + // PARADISE EDIT: Allow only a certain amount of atoms to be pulled per unit + var/units_per_atom = 5 + var/atoms_to_move = round(volume / units_per_atom) + var/moved_count = 0 + // The ternary below isnt exactly needed, but it makes code more readable because `pull` is a bool + for(var/atom/movable/X in view(2 + (pull ? 1 : 0) + (volume > 30 ? 1 : 0), T)) if(istype(X, /obj/effect)) continue //stop pulling smoke and hotspots please if(X && !X.anchored && X.move_resist <= MOVE_FORCE_DEFAULT) - if(setting_type) + if(pull) X.throw_at(T, 20 + round(volume * 2), 1 + round(volume / 10)) else X.throw_at(get_edge_target_turf(T, get_dir(T, X)), 20 + round(volume * 2), 1 + round(volume / 10)) + moved_count++ + if((moved_count >= atoms_to_move) && !ignore_volume) + break diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 850cd0b922b..b2b6ac3ef21 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -104,7 +104,7 @@ var/turf/T = get_turf(holder.my_atom) if(!T) return - goonchem_vortex(T, 0, created_volume) + goonchem_vortex(T, FALSE, created_volume) /datum/chemical_reaction/sorium_explosion/sorium name = "sorium_vortex" @@ -133,7 +133,7 @@ var/turf/simulated/T = get_turf(holder.my_atom) if(!T) return - goonchem_vortex(T, 1, created_volume) + goonchem_vortex(T, TRUE, created_volume) /datum/chemical_reaction/ldm_implosion/liquid_dark_matter name = "LDM Vortex" diff --git a/code/modules/station_goals/bluespace_tap.dm b/code/modules/station_goals/bluespace_tap.dm index 6eb4cb9572e..6e6898bde1f 100644 --- a/code/modules/station_goals/bluespace_tap.dm +++ b/code/modules/station_goals/bluespace_tap.dm @@ -42,7 +42,7 @@ product_cost = cost /obj/item/circuitboard/machine/bluespace_tap - name = "Bluespace Harvester (Machine Board)" + board_name = "Bluespace Harvester" build_path = /obj/machinery/power/bluespace_tap origin_tech = "engineering=2;combat=2;bluespace=3" req_components = list( diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index f97638cbd28..96cd520921e 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -225,7 +225,7 @@ last_fire_time = world.time / 10 /obj/item/circuitboard/machine/bsa/back - name = "Bluespace Artillery Generator (Machine Board)" + board_name = "Bluespace Artillery Generator" build_path = /obj/machinery/bsa/back origin_tech = "engineering=2;combat=2;bluespace=2" //No freebies! req_components = list( @@ -233,7 +233,7 @@ /obj/item/stack/cable_coil = 2) /obj/item/circuitboard/machine/bsa/middle - name = "Bluespace Artillery Fusor (Machine Board)" + board_name = "Bluespace Artillery Fusor" build_path = /obj/machinery/bsa/middle origin_tech = "engineering=2;combat=2;bluespace=2" req_components = list( @@ -241,7 +241,7 @@ /obj/item/stack/cable_coil = 2) /obj/item/circuitboard/machine/bsa/front - name = "Bluespace Artillery Bore (Machine Board)" + board_name = "Bluespace Artillery Bore" build_path = /obj/machinery/bsa/front origin_tech = "engineering=2;combat=2;bluespace=2" req_components = list( @@ -249,7 +249,7 @@ /obj/item/stack/cable_coil = 2) /obj/item/circuitboard/computer/bsa_control - name = "Bluespace Artillery Controls (Computer Board)" + board_name = "Bluespace Artillery Controls" build_path = /obj/machinery/computer/bsa_control origin_tech = "engineering=2;combat=2;bluespace=2" diff --git a/code/modules/station_goals/dna_vault.dm b/code/modules/station_goals/dna_vault.dm index 031471e968c..c9096042e85 100644 --- a/code/modules/station_goals/dna_vault.dm +++ b/code/modules/station_goals/dna_vault.dm @@ -121,7 +121,7 @@ GLOBAL_LIST_INIT(non_simple_animals, typecacheof(list(/mob/living/carbon/human/m /obj/item/circuitboard/machine/dna_vault - name = "DNA Vault (Machine Board)" + board_name = "DNA Vault" build_path = /obj/machinery/dna_vault origin_tech = "engineering=2;combat=2;bluespace=2" //No freebies! req_components = list( diff --git a/code/modules/station_goals/shield.dm b/code/modules/station_goals/shield.dm index 3defa561f4f..46dc31c78a4 100644 --- a/code/modules/station_goals/shield.dm +++ b/code/modules/station_goals/shield.dm @@ -35,7 +35,7 @@ return coverage.len /obj/item/circuitboard/computer/sat_control - name = "Satellite Network Control (Computer Board)" + board_name = "Satellite Network Control" build_path = /obj/machinery/computer/sat_control origin_tech = "engineering=3" diff --git a/code/modules/tgui/modules/ghost_hud_panel.dm b/code/modules/tgui/modules/ghost_hud_panel.dm new file mode 100644 index 00000000000..fe35872bc04 --- /dev/null +++ b/code/modules/tgui/modules/ghost_hud_panel.dm @@ -0,0 +1,73 @@ + +/// Stores an instance of [/datum/ui_module/ghost_hud_panel] so that ghosts can use this to open their HUD panel. +GLOBAL_DATUM_INIT(ghost_hud_panel, /datum/ui_module/ghost_hud_panel, new) + +/** + * # Ghost HUD panel + * + * Allows ghosts to view a TGUI window which contains toggles for all HUD types available to them. + */ +/datum/ui_module/ghost_hud_panel + name = "Ghost HUD Panel" + /// Associative list to get the appropriate hud type based on the string passed from TGUI. + var/list/hud_type_lookup = list( + "medical" = DATA_HUD_MEDICAL_ADVANCED, + "security" = DATA_HUD_SECURITY_ADVANCED, + "diagnostic" = DATA_HUD_DIAGNOSTIC + ) + +/datum/ui_module/ghost_hud_panel/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.observer_state) + ui = SStgui.try_update_ui(user, src, ui_key, ui) + if(!ui) + ui = new(user, src, ui_key, "GhostHudPanel", name, 250, 171, master_ui, state) + ui.set_autoupdate(FALSE) + ui.open() + +/datum/ui_module/ghost_hud_panel/ui_data(mob/dead/observer/ghost) + var/list/data = list() + for(var/hud in hud_type_lookup) + data[hud] = (hud_type_lookup[hud] in ghost.data_hud_seen) + data["ahud"] = ghost.antagHUD + return data + +/datum/ui_module/ghost_hud_panel/ui_act(action, list/params) + if(..()) + return + + var/mob/dead/observer/ghost = usr + . = TRUE + + switch(action) + if("hud_on") + var/hud_type = hud_type_lookup[params["hud_type"]] + ghost.show_me_the_hud(hud_type) + + if("hud_off") + var/hud_type = hud_type_lookup[params["hud_type"]] + ghost.remove_the_hud(hud_type) + + if("ahud_on") + if(!config.antag_hud_allowed && !ghost.client.holder) + to_chat(ghost, "Admins have disabled this for this round.") + return FALSE + if(jobban_isbanned(ghost, "AntagHUD")) + to_chat(ghost, "You have been banned from using this feature.") + return FALSE + // Check if this is the first time they're turning on Antag HUD. + if(!check_rights(R_ADMIN | R_MOD, FALSE) && !ghost.has_enabled_antagHUD && config.antag_hud_restricted) + var/response = alert(ghost, "If you turn this on, you will not be able to take any part in the round.", "Are you sure you want to enable antag HUD?", "Yes", "No") + if(response == "No") + return FALSE + + ghost.has_enabled_antagHUD = TRUE + ghost.can_reenter_corpse = FALSE + GLOB.respawnable_list -= ghost + + ghost.antagHUD = TRUE + for(var/datum/atom_hud/antag/H in GLOB.huds) + H.add_hud_to(ghost) + + if("ahud_off") + ghost.antagHUD = FALSE + for(var/datum/atom_hud/antag/H in GLOB.huds) + H.add_hud_to(ghost) diff --git a/icons/mob/actions/actions.dmi b/icons/mob/actions/actions.dmi index 6b509da187b..8fdb36290f6 100644 Binary files a/icons/mob/actions/actions.dmi and b/icons/mob/actions/actions.dmi differ diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index 86151e74123..6e0e68794f9 100644 Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ diff --git a/icons/obj/stock_parts.dmi b/icons/obj/stock_parts.dmi index f2bdd494f50..38ddb183e97 100644 Binary files a/icons/obj/stock_parts.dmi and b/icons/obj/stock_parts.dmi differ diff --git a/paradise.dme b/paradise.dme index 67a4d2cbfbe..93eb5e862ea 100644 --- a/paradise.dme +++ b/paradise.dme @@ -2473,6 +2473,7 @@ #include "code\modules\tgui\modules\crew_monitor.dm" #include "code\modules\tgui\modules\ert_manager.dm" #include "code\modules\tgui\modules\generic_crew_manifest.dm" +#include "code\modules\tgui\modules\ghost_hud_panel.dm" #include "code\modules\tgui\modules\law_manager.dm" #include "code\modules\tgui\modules\power_monitor.dm" #include "code\modules\tgui\modules\volume_mixer.dm" diff --git a/tgui/packages/tgui/interfaces/GhostHudPanel.js b/tgui/packages/tgui/interfaces/GhostHudPanel.js new file mode 100644 index 00000000000..766786067ef --- /dev/null +++ b/tgui/packages/tgui/interfaces/GhostHudPanel.js @@ -0,0 +1,53 @@ +import { useBackend } from "../backend"; +import { Button, Section, Flex, Divider } from "../components"; +import { Window } from "../layouts"; + +export const GhostHudPanel = (props, context) => { + const { data } = useBackend(context); + const { + security, + medical, + diagnostic, + ahud, + } = data; + return ( + + +
+ + + + + +
+
+
+ ); +}; + +const HudEntry = (props, context) => { + const { act } = useBackend(context); + const { + label, + type = null, + is_active, + act_on = 'hud_on', + act_off = 'hud_off', + } = props; + return ( + + + {label} + + +