diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm index b66fbdf3d5..21f2d38090 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm @@ -28,7 +28,7 @@ "g" = ( /obj/structure/reagent_dispensers/water_cooler{ name = "punch cooler"; - reagent_id = /datum/reagent/consumable/ethanol/bacchus_blessing + reagent_id = "bacchus_blessing" }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood{ diff --git a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm index 1464dd9529..e5038c0730 100644 --- a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm +++ b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm @@ -3410,7 +3410,7 @@ "lq" = ( /obj/structure/table, /obj/item/reagent_containers/glass/beaker{ - list_reagents = list(/datum/reagent/toxin/acid = 50) + list_reagents = list("sacid" = 50) }, /obj/item/paper/crumpled/bloody/ruins/thederelict/unfinished, /obj/item/pen, diff --git a/_maps/RandomRuins/StationRuins/Box/Engine/engine_sm_1x3.dmm b/_maps/RandomRuins/StationRuins/Box/Engine/engine_sm_1x3.dmm deleted file mode 100644 index 05e6e4b63f..0000000000 --- a/_maps/RandomRuins/StationRuins/Box/Engine/engine_sm_1x3.dmm +++ /dev/null @@ -1,2760 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"ab" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"ac" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"at" = ( -/obj/structure/closet/crate/bin, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/item/cartridge/atmos, -/turf/open/floor/engine, -/area/engine/engineering) -"av" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"aw" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"aA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"aC" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/item/tank/internals/emergency_oxygen/engi{ - pixel_x = 5 - }, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/glasses/meson/engine, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"aV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/engineering/glass/critical{ - heat_proof = 1; - name = "Supermatter Chamber"; - req_access_txt = "10" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/engine, -/area/engine/supermatter) -"aX" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 5 - }, -/turf/open/space, -/area/space/nearstation) -"aY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"bl" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/engine, -/area/engine/engineering) -"bo" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"bq" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 9 - }, -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"bH" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/binary/valve{ - dir = 4; - name = "Output to Waste" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"bI" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/turf/open/space, -/area/space/nearstation) -"bT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"bW" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"ck" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"cp" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"cN" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"cP" = ( -/obj/structure/table, -/obj/item/clothing/gloves/color/yellow, -/obj/item/storage/toolbox/electrical{ - pixel_y = 5 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/sign/poster/official/safety_eye_protection, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"cX" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 8; - name = "Gas to Cooling Loop" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"cY" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/obj/machinery/power/rad_collector/anchored, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"de" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/camera{ - c_tag = "Engineering Supermatter Port"; - dir = 4; - network = list("ss13","engine") - }, -/turf/open/floor/engine, -/area/engine/engineering) -"df" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/obj/machinery/power/rad_collector/anchored, -/turf/open/floor/engine, -/area/engine/supermatter) -"dl" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"dw" = ( -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/space/nearstation) -"dD" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/turf/open/space, -/area/space/nearstation) -"ej" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/components/binary/pump{ - name = "Cooling Loop Bypass" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"ey" = ( -/obj/structure/reflector/single/anchored{ - dir = 9 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"ez" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"fa" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"fj" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"fq" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 10 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"fK" = ( -/obj/machinery/light, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/engine, -/area/engine/engineering) -"fW" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"gf" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"gj" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 6 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"gx" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"gB" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 5 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"gQ" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"hy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"hJ" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"hK" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 5 - }, -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) -"ii" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 9 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"in" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"iC" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/artistic{ - icon_state = "yellow"; - item_state = "toolbox_yellow"; - name = "Cable Toolbox"; - pixel_y = 6 - }, -/obj/item/storage/toolbox/artistic{ - icon_state = "yellow"; - item_state = "toolbox_yellow"; - name = "Cable Toolbox"; - pixel_y = -4 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"iD" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"iJ" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "Gas to Filter" - }, -/obj/machinery/airalarm/engine{ - dir = 4; - pixel_x = -23 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/engine/supermatter) -"iU" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"jg" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"jp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/engine/supermatter) -"jr" = ( -/obj/structure/sign/warning/electricshock, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"js" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"jB" = ( -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"jZ" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"kA" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering/glass{ - name = "Supermatter Engine Room"; - req_access_txt = "10" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"kW" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -22 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"ln" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"lw" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"lE" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"lG" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 9 - }, -/turf/open/space, -/area/space/nearstation) -"lQ" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ - dir = 4 - }, -/obj/machinery/meter, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"mi" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"mj" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/obj/machinery/meter, -/turf/open/floor/engine, -/area/engine/engineering) -"mk" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"mE" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"mH" = ( -/obj/structure/sign/poster/official/safety_eye_protection, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"mU" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"mW" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 10 - }, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"mX" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/engine, -/area/engine/engineering) -"nd" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 4; - name = "Cooling Loop to Gas" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"nz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/engine, -/area/engine/engineering) -"nH" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"nR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"nV" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/item/clothing/suit/radiation, -/obj/item/clothing/head/radiation, -/obj/item/clothing/glasses/meson, -/obj/item/clothing/glasses/meson, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"nW" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/power/rad_collector/anchored, -/turf/open/floor/engine, -/area/engine/supermatter) -"ou" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"oC" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"oS" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering/glass{ - name = "Supermatter Engine Room"; - req_access_txt = "10" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"pb" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 9 - }, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"px" = ( -/obj/machinery/status_display/ai, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"pA" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"pL" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 6 - }, -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) -"pP" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/power/emitter/anchored{ - dir = 4; - state = 2 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"qc" = ( -/obj/structure/table, -/obj/item/pipe_dispenser, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"qe" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"qm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "Mix Bypass" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"qo" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"qr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"qA" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"rt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/engine, -/area/engine/engineering) -"ry" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"rJ" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/engine/engineering) -"rY" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 10 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"sm" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 6 - }, -/turf/open/space, -/area/space/nearstation) -"sn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"so" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/structure/window/plasma/reinforced{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"sq" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 8 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"sA" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - name = "Gas to Mix" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"td" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"te" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"ti" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 6 - }, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"tn" = ( -/obj/machinery/door/airlock/engineering/glass/critical{ - heat_proof = 1; - name = "Supermatter Chamber"; - req_access_txt = "10" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"tw" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"tE" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/power/rad_collector/anchored, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"un" = ( -/obj/structure/reflector/single/anchored{ - dir = 5 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"uz" = ( -/obj/structure/sign/warning/radiation, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"uC" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) -"uR" = ( -/obj/machinery/power/supermatter_crystal/engine, -/turf/open/floor/engine, -/area/engine/supermatter) -"vD" = ( -/obj/structure/girder, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"vN" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"vO" = ( -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"vX" = ( -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"wt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/closet/radiation, -/turf/open/floor/plasteel, -/area/engine/engineering) -"wz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"wG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -22 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"wS" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/turf/open/space, -/area/space/nearstation) -"xo" = ( -/obj/structure/reflector/box/anchored{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"xB" = ( -/turf/open/floor/engine, -/area/engine/engineering) -"yd" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"yf" = ( -/turf/open/space/basic, -/area/space/nearstation) -"yA" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) -"yD" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"yZ" = ( -/obj/machinery/camera{ - c_tag = "Engineering Supermatter Fore"; - dir = 1; - network = list("ss13","engine"); - pixel_x = 23 - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -26 - }, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/engine, -/area/engine/engineering) -"zf" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Atmos to Loop" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"zh" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/mechanical, -/obj/item/flashlight, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/item/pipe_dispenser, -/turf/open/floor/engine, -/area/engine/engineering) -"zF" = ( -/obj/structure/table, -/obj/item/stack/sheet/metal/fifty, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"zS" = ( -/turf/open/space/basic, -/area/space) -"Ab" = ( -/obj/item/crowbar/large, -/obj/structure/rack, -/obj/item/flashlight, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"Ah" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"AH" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering/glass{ - name = "Supermatter Engine Room"; - req_access_txt = "10" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Bc" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"Bl" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/item/clothing/suit/radiation, -/obj/item/clothing/head/radiation, -/obj/item/clothing/glasses/meson, -/obj/item/geiger_counter, -/obj/item/geiger_counter, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"BD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/machinery/atmospherics/components/binary/valve/digital/on{ - dir = 4; - name = "Output Release" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Cb" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/obj/machinery/meter, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"Cn" = ( -/obj/machinery/status_display, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"CH" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering/glass{ - name = "Supermatter Engine Room"; - req_access_txt = "10" - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"CT" = ( -/obj/machinery/atmospherics/components/binary/pump{ - name = "Gas to Chamber" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/engine/supermatter) -"CW" = ( -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Dj" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"Dz" = ( -/obj/machinery/atmospherics/pipe/manifold/orange/visible{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"DA" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"DC" = ( -/obj/structure/rack, -/obj/item/clothing/mask/gas{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas{ - pixel_x = -3; - pixel_y = -3 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"Ef" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Ei" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/door/airlock/external{ - name = "Engineering External Access"; - req_access_txt = "10;13" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"Es" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Ex" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Ey" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"EL" = ( -/turf/closed/wall, -/area/engine/engineering) -"EM" = ( -/obj/item/wrench, -/obj/structure/rack, -/obj/item/weldingtool/hugetank, -/obj/item/clothing/head/welding{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/item/clothing/head/welding{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/item/clothing/glasses/welding, -/obj/item/clothing/glasses/welding, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"Fr" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"FG" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"Gb" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 5 - }, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"Gl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "Engineering Supermatter Starboard"; - dir = 8; - network = list("ss13","engine") - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Gz" = ( -/obj/machinery/button/door{ - id = "engsm"; - name = "Radiation Shutters Control"; - pixel_y = -24; - req_access_txt = "10" - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/engine, -/area/engine/engineering) -"GB" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"GI" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"GK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"GX" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Hj" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Hn" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"Hw" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"Hz" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Ik" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"In" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"IE" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"IF" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/power/emitter/anchored{ - dir = 8; - state = 2 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"Jn" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"Jp" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/supermatter) -"JH" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"JK" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"JV" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering/glass{ - name = "Laser Room"; - req_access_txt = "10" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Ke" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical{ - pixel_y = 5 - }, -/obj/item/flashlight{ - pixel_x = 1; - pixel_y = 5 - }, -/obj/item/flashlight{ - pixel_x = 1; - pixel_y = 5 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"Kv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"KX" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"KZ" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 10 - }, -/turf/open/space, -/area/space/nearstation) -"Le" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 10 - }, -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) -"Lg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Lv" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"Lw" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"LJ" = ( -/obj/machinery/light, -/turf/open/floor/plating, -/area/engine/engineering) -"LS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"Ml" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - dir = 8; - filter_type = "n2" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Mr" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/green/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Mu" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"ME" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"MI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"MJ" = ( -/turf/open/floor/plating, -/area/engine/engineering) -"MK" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"MP" = ( -/turf/closed/wall/r_wall, -/area/engine/engineering) -"Ne" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"Np" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Nx" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"ND" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/airlock/external{ - name = "Engineering External Access"; - req_access_txt = "10;13" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"NK" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"NU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/camera{ - c_tag = "Engineering Supermatter Aft"; - network = list("ss13","engine"); - pixel_x = 23 - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/engine, -/area/engine/engineering) -"NZ" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"Oj" = ( -/turf/closed/wall/r_wall, -/area/space/nearstation) -"Ok" = ( -/turf/open/floor/plasteel, -/area/engine/engineering) -"OK" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Mix to Gas" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"OU" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/obj/machinery/meter, -/turf/open/floor/plasteel, -/area/engine/engineering) -"Pa" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "External Gas to Loop" - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/engine, -/area/engine/engineering) -"Ph" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"Py" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Qn" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible, -/obj/machinery/meter, -/turf/open/floor/engine, -/area/engine/engineering) -"Qu" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/engine, -/area/engine/engineering) -"QD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"QJ" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"Rh" = ( -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) -"RA" = ( -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"RV" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"Sn" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/turf/open/space, -/area/space/nearstation) -"SL" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"SR" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 6 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"SX" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"Tk" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/plating, -/area/engine/engineering) -"TB" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"TC" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"TO" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Ub" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"Uq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"Ur" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Uu" = ( -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"UM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/structure/window/plasma/reinforced{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"UN" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Vg" = ( -/obj/item/wrench, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 6 - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"Vn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"Vz" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"VP" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Wf" = ( -/obj/structure/sign/warning/fire, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"WB" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space/basic, -/area/space/nearstation) -"WI" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"WT" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Xy" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 6 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"XA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"XG" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/turf/open/space, -/area/space/nearstation) -"XK" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/item/radio/headset/headset_eng, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"XY" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"YB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"YD" = ( -/obj/structure/reflector/double/anchored{ - dir = 6 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"YF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"YX" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 8; - name = "Gas to Filter" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"YY" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 5 - }, -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"YZ" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space, -/area/space/nearstation) -"Zn" = ( -/obj/structure/sign/warning/vacuum/external{ - pixel_x = 32 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"ZH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"ZO" = ( -/obj/machinery/atmospherics/pipe/manifold/green/visible{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"ZT" = ( -/turf/template_noop, -/area/template_noop) - -(1,1,1) = {" -ZT -ZT -ZT -ZT -ZT -ZT -ZT -yf -Rh -yf -yf -Rh -yf -yf -Rh -yf -yf -yf -YZ -YZ -YZ -ZT -ZT -ZT -ZT -ZT -"} -(2,1,1) = {" -ZT -ZT -ZT -ZT -ZT -ZT -ZT -pL -aX -pL -yA -Sn -yA -yA -Sn -hK -yf -yf -YZ -Oj -YZ -ZT -ZT -ZT -ZT -ZT -"} -(3,1,1) = {" -ZT -ZT -ZT -ZT -ZT -ZT -ZT -bI -XG -bI -sm -dD -Sn -Sn -dD -lG -Rh -Rh -YZ -Oj -YZ -ZT -ZT -ZT -ZT -ZT -"} -(4,1,1) = {" -ZT -ZT -ZT -ZT -ZT -ZT -ZT -uC -XG -uC -Le -dD -yA -yA -dD -hK -yf -yf -YZ -Oj -YZ -ZT -ZT -ZT -ZT -ZT -"} -(5,1,1) = {" -ZT -ZT -ZT -ZT -ZT -ZT -ZT -bI -XG -bI -sm -dD -Sn -Sn -dD -lG -Rh -Rh -YZ -Oj -YZ -ZT -ZT -ZT -ZT -ZT -"} -(6,1,1) = {" -ZT -ZT -ZT -ZT -ZT -ZT -ZT -wS -XG -uC -Le -dD -yA -yA -dD -hK -yf -yf -YZ -Oj -YZ -ZT -ZT -ZT -ZT -ZT -"} -(7,1,1) = {" -ZT -ZT -ZT -ZT -EL -EL -MP -bI -XG -bI -sm -dD -Sn -Sn -dD -lG -Rh -Rh -YZ -Oj -YZ -yf -yf -yf -yf -zS -"} -(8,1,1) = {" -ZT -ZT -cP -Ke -EL -Tk -MP -wS -XG -uC -Le -dD -yA -yA -dD -hK -yf -yf -YZ -Oj -YZ -yf -yf -Rh -yf -yf -"} -(9,1,1) = {" -ZT -ZT -dl -Ok -ND -Zn -Ei -bI -KZ -lG -sm -dD -Sn -Sn -dD -lG -Rh -Rh -YZ -YZ -YZ -tw -Rh -Rh -Rh -yf -"} -(10,1,1) = {" -ZT -nR -AH -iD -MP -MP -MP -sq -aA -rJ -gf -rJ -rJ -td -yf -yf -yf -yf -Rh -yf -yf -yf -yf -Rh -yf -yf -"} -(11,1,1) = {" -oC -GB -UN -sn -sn -sn -de -GK -wG -TC -mj -fW -at -XA -td -MP -MP -MP -MP -MP -MP -yf -WB -YZ -WB -yf -"} -(12,1,1) = {" -cS -hJ -qe -ry -ry -ry -ry -cX -ry -ry -nd -ry -yD -Ex -ck -iC -Uu -kW -Uu -EM -MP -yf -YZ -Oj -YZ -yf -"} -(13,1,1) = {" -ME -qr -Hz -gj -bl -te -ez -Mr -DA -ej -Dz -jZ -gB -SR -SX -Vn -Vn -cp -Uu -Uu -MP -yf -YZ -Oj -YZ -yf -"} -(14,1,1) = {" -Ne -yd -bW -VP -Qu -Vg -KX -px -nW -Vz -cN -xB -WI -IE -JV -Bc -JH -Lv -XY -LJ -MP -Rh -YZ -Oj -YZ -Rh -"} -(15,1,1) = {" -MP -zh -QD -Hj -rt -lQ -KX -RA -tE -Vz -cN -Xy -Ml -Ef -iD -MJ -QJ -pP -pP -MJ -MP -yf -YZ -Oj -YZ -yf -"} -(16,1,1) = {" -MP -aC -bW -TO -fK -uz -RA -ti -YY -Vz -cN -JK -WT -Ef -MP -Lw -Uu -Uu -Uu -Uu -MP -Rh -YZ -Oj -YZ -yf -"} -(17,1,1) = {" -oS -fa -bW -ZO -yZ -qA -iJ -pb -so -jr -js -CW -YF -Py -iD -YD -Uu -Uu -ey -Uu -MP -yf -YZ -Oj -YZ -yf -"} -(18,1,1) = {" -iD -fa -bW -YX -Qu -aV -jp -tn -uR -Jp -NU -Hw -ac -ac -iD -xo -Uu -xo -vD -Uu -MP -yf -YZ -Oj -YZ -yf -"} -(19,1,1) = {" -oS -fa -bW -vO -Gz -lE -CT -Gb -UM -Wf -Mu -jB -Nx -aw -iD -Uu -Uu -Uu -un -Uu -MP -Rh -YZ -Oj -YZ -yf -"} -(20,1,1) = {" -MP -Bl -bW -iU -fK -RA -Wf -mW -bq -Vz -cN -JK -WT -Ef -MP -Lw -Uu -Uu -Uu -Uu -MP -Rh -YZ -Oj -YZ -yf -"} -(21,1,1) = {" -MP -nV -mE -vO -Pa -wz -fj -RA -cY -Vz -cN -vO -Np -Ef -iD -MJ -Dj -IF -Dj -MJ -MP -yf -YZ -Oj -YZ -yf -"} -(22,1,1) = {" -iD -fa -hy -vO -Pa -Ey -fj -Cn -df -Vz -cN -JK -lw -bH -JV -Bc -Ph -Ph -nH -LJ -MP -Rh -YZ -Oj -YZ -Rh -"} -(23,1,1) = {" -iD -vX -bo -GX -mk -Ik -SL -YB -RV -qm -MK -ii -rY -Qn -ab -ZH -ZH -MI -Uu -Uu -MP -Rh -YZ -Oj -YZ -yf -"} -(24,1,1) = {" -mH -bT -Lg -zf -ry -ry -ry -OK -ry -ry -sA -ry -mX -BD -Uq -zF -Uu -GI -Uu -Ab -MP -Rh -YZ -Oj -YZ -yf -"} -(25,1,1) = {" -iD -mU -in -Ur -Es -Kv -Gl -aY -Kv -Kv -Fr -vN -nz -In -Ub -MP -MP -MP -MP -MP -MP -yf -YZ -YZ -YZ -yf -"} -(26,1,1) = {" -wt -av -kA -qo -EL -MP -MP -Cb -Uu -Uu -pA -jg -qc -fq -LS -Hn -dw -yf -Rh -yf -yf -yf -yf -Rh -yf -yf -"} -(27,1,1) = {" -ZT -ZT -ZT -ou -DC -iD -Uu -mi -NK -NK -Ah -Uu -Jn -MP -dw -dw -dw -Rh -Rh -Rh -Rh -tw -Rh -Rh -Rh -Rh -"} -(28,1,1) = {" -ZT -ZT -ZT -OU -Ok -CH -GI -gx -TB -gQ -gQ -ln -XK -MP -yf -yf -Rh -yf -Rh -Oj -YZ -yf -yf -Rh -yf -yf -"} -(29,1,1) = {" -ZT -ZT -ZT -FG -NZ -MP -MP -MP -MP -MP -iD -iD -iD -MP -Rh -Rh -Rh -Rh -Rh -Oj -YZ -yf -yf -Rh -yf -zS -"} diff --git a/_maps/RandomRuins/StationRuins/Box/Engine/engine_sm_3x.dmm b/_maps/RandomRuins/StationRuins/Box/Engine/engine_sm_3x.dmm deleted file mode 100644 index 3356ebaa77..0000000000 --- a/_maps/RandomRuins/StationRuins/Box/Engine/engine_sm_3x.dmm +++ /dev/null @@ -1,2777 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"ab" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"ac" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"at" = ( -/obj/structure/closet/crate/bin, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/item/cartridge/atmos, -/turf/open/floor/engine, -/area/engine/engineering) -"av" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"aw" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"aA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"aC" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/item/tank/internals/emergency_oxygen/engi{ - pixel_x = 5 - }, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/glasses/meson/engine, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"aV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/engine/supermatter) -"aX" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 5 - }, -/turf/open/space, -/area/space/nearstation) -"aY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"bo" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"bH" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/binary/valve{ - dir = 4; - name = "Output to Waste" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"bI" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/turf/open/space, -/area/space/nearstation) -"bT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"bW" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"ck" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"cp" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"cP" = ( -/obj/structure/table, -/obj/item/clothing/gloves/color/yellow, -/obj/item/storage/toolbox/electrical{ - pixel_y = 5 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/sign/poster/official/safety_eye_protection, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"cX" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 8; - name = "Gas to Cooling Loop" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"de" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/camera{ - c_tag = "Engineering Supermatter Port"; - dir = 4; - network = list("ss13","engine") - }, -/turf/open/floor/engine, -/area/engine/engineering) -"df" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/engine/supermatter) -"dl" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"dw" = ( -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/space/nearstation) -"dD" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/turf/open/space, -/area/space/nearstation) -"ej" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/components/binary/pump{ - name = "Cooling Loop Bypass" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"ey" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/engine, -/area/engine/supermatter) -"ez" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"fa" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"fj" = ( -/obj/machinery/status_display, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"fq" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 10 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"fK" = ( -/obj/structure/sign/warning/radiation, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"fW" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"gf" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"gj" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 6 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"gx" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"gB" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 5 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"gQ" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"hy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"hJ" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"hK" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 5 - }, -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) -"ii" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 9 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"in" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"iC" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/artistic{ - icon_state = "yellow"; - item_state = "toolbox_yellow"; - name = "Cable Toolbox"; - pixel_y = 6 - }, -/obj/item/storage/toolbox/artistic{ - icon_state = "yellow"; - item_state = "toolbox_yellow"; - name = "Cable Toolbox"; - pixel_y = -4 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"iD" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"iJ" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 8 - }, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"iU" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/light, -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"jg" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"jp" = ( -/obj/machinery/door/airlock/engineering/glass/critical{ - heat_proof = 1; - name = "Supermatter Chamber"; - req_access_txt = "10" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"js" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 5 - }, -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/supermatter) -"jB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"jZ" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"kA" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering/glass{ - name = "Supermatter Engine Room"; - req_access_txt = "10" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"kW" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -22 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"ln" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"lw" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"lE" = ( -/obj/machinery/atmospherics/components/binary/pump{ - name = "Gas to Chamber" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/engine/supermatter) -"lG" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 9 - }, -/turf/open/space, -/area/space/nearstation) -"mi" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"mj" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/obj/machinery/meter, -/turf/open/floor/engine, -/area/engine/engineering) -"mE" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"mH" = ( -/obj/structure/sign/poster/official/safety_eye_protection, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"mU" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"mX" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/engine, -/area/engine/engineering) -"na" = ( -/obj/machinery/camera{ - c_tag = "Supermatter Chamber"; - network = list("engine"); - pixel_x = 23 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"nd" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 4; - name = "Cooling Loop to Gas" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"ni" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"nz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/engine, -/area/engine/engineering) -"nH" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"nR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"nV" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/item/clothing/suit/radiation, -/obj/item/clothing/head/radiation, -/obj/item/clothing/glasses/meson, -/obj/item/clothing/glasses/meson, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"nW" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/item/tank/internals/plasma, -/turf/open/floor/plating, -/area/engine/supermatter) -"ou" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"oC" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"oS" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering/glass{ - name = "Supermatter Engine Room"; - req_access_txt = "10" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"px" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/engine/supermatter) -"pA" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"pL" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 6 - }, -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) -"pP" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/power/emitter/anchored{ - dir = 4; - state = 2 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"qc" = ( -/obj/structure/table, -/obj/item/pipe_dispenser, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"qe" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"qm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "Mix Bypass" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"qo" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"qr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"qA" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "Gas to Filter" - }, -/obj/machinery/airalarm/engine{ - dir = 4; - pixel_x = -23 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/engine/supermatter) -"re" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/engine/supermatter) -"rt" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ - dir = 4 - }, -/obj/machinery/meter, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"ry" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"rJ" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/engine/engineering) -"rY" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 10 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"sm" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 6 - }, -/turf/open/space, -/area/space/nearstation) -"sn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"so" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"sq" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 8 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"sA" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - name = "Gas to Mix" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"td" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"te" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"tw" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"tE" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"un" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/supermatter) -"uC" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) -"uR" = ( -/obj/machinery/power/supermatter_crystal/engine, -/turf/open/floor/engine, -/area/engine/supermatter) -"vD" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 9 - }, -/obj/structure/sign/warning/fire, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"vN" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"vO" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"vX" = ( -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"wt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/closet/radiation, -/turf/open/floor/plasteel, -/area/engine/engineering) -"wz" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"wG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -22 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"wS" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/turf/open/space, -/area/space/nearstation) -"xo" = ( -/obj/structure/reflector/box/anchored{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"xB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"yd" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"yf" = ( -/turf/open/space/basic, -/area/space/nearstation) -"yA" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) -"yD" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"yZ" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"zf" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Atmos to Loop" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"zh" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/mechanical, -/obj/item/flashlight, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/item/pipe_dispenser, -/turf/open/floor/engine, -/area/engine/engineering) -"zF" = ( -/obj/structure/table, -/obj/item/stack/sheet/metal/fifty, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"zS" = ( -/turf/open/space/basic, -/area/space) -"Ab" = ( -/obj/item/crowbar/large, -/obj/structure/rack, -/obj/item/flashlight, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"Ah" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"AH" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering/glass{ - name = "Supermatter Engine Room"; - req_access_txt = "10" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Bc" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"Bk" = ( -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/structure/window/plasma/reinforced{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"Bl" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/item/clothing/suit/radiation, -/obj/item/clothing/head/radiation, -/obj/item/clothing/glasses/meson, -/obj/item/geiger_counter, -/obj/item/geiger_counter, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"BD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/machinery/atmospherics/components/binary/valve/digital/on{ - dir = 4; - name = "Output Release" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Cb" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/obj/machinery/meter, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"Cn" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/engine/supermatter) -"CH" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering/glass{ - name = "Supermatter Engine Room"; - req_access_txt = "10" - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"CT" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 10 - }, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"CW" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Dz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/orange/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"DA" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"DC" = ( -/obj/structure/rack, -/obj/item/clothing/mask/gas{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas{ - pixel_x = -3; - pixel_y = -3 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"Ef" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Ei" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/door/airlock/external{ - name = "Engineering External Access"; - req_access_txt = "10;13" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"Es" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Ex" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"EL" = ( -/turf/closed/wall, -/area/engine/engineering) -"EM" = ( -/obj/item/wrench, -/obj/structure/rack, -/obj/item/weldingtool/hugetank, -/obj/item/clothing/head/welding{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/item/clothing/head/welding{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/item/clothing/glasses/welding, -/obj/item/clothing/glasses/welding, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"EX" = ( -/obj/item/wrench, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 6 - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"Fr" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"FG" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"FL" = ( -/obj/structure/sign/warning/electricshock, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"Gl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "Engineering Supermatter Starboard"; - dir = 8; - network = list("ss13","engine") - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Gz" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"GB" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"GI" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"GK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"GX" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Hj" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Hn" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"Hw" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/camera{ - c_tag = "Engineering Supermatter Aft"; - network = list("ss13","engine"); - pixel_x = 23 - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"Hz" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Ik" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"In" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"IE" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"IF" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/power/emitter/anchored{ - dir = 8; - state = 2 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"Jn" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"JH" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"JK" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"JL" = ( -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"JV" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering/glass{ - name = "Laser Room"; - req_access_txt = "10" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Ke" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical{ - pixel_y = 5 - }, -/obj/item/flashlight{ - pixel_x = 1; - pixel_y = 5 - }, -/obj/item/flashlight{ - pixel_x = 1; - pixel_y = 5 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"Kv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"KX" = ( -/obj/machinery/status_display/ai, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"KZ" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 10 - }, -/turf/open/space, -/area/space/nearstation) -"Le" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 10 - }, -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) -"Lg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Lv" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"Lw" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"LE" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/button/door{ - id = "engsm"; - name = "Radiation Shutters Control"; - pixel_y = -24; - req_access_txt = "10" - }, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"LJ" = ( -/obj/machinery/light, -/turf/open/floor/plating, -/area/engine/engineering) -"LS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"Ml" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - dir = 8; - filter_type = "n2" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Mr" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/green/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"ME" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"MI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"MJ" = ( -/turf/open/floor/plating, -/area/engine/engineering) -"MK" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"MP" = ( -/turf/closed/wall/r_wall, -/area/engine/engineering) -"Ne" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"Np" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Nw" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/engine/supermatter) -"Nx" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"ND" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/airlock/external{ - name = "Engineering External Access"; - req_access_txt = "10;13" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"NK" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"NU" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/turf/open/floor/plating, -/area/engine/supermatter) -"NZ" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"Oj" = ( -/turf/closed/wall/r_wall, -/area/space/nearstation) -"Ok" = ( -/turf/open/floor/plasteel, -/area/engine/engineering) -"OK" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Mix to Gas" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"OR" = ( -/obj/structure/sign/warning/fire, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"OU" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/obj/machinery/meter, -/turf/open/floor/plasteel, -/area/engine/engineering) -"Pa" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "External Gas to Loop" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"Ph" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"Py" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Qn" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible, -/obj/machinery/meter, -/turf/open/floor/engine, -/area/engine/engineering) -"Qu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/engineering/glass/critical{ - heat_proof = 1; - name = "Supermatter Chamber"; - req_access_txt = "10" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/engine, -/area/engine/supermatter) -"QD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Rh" = ( -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) -"RA" = ( -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/obj/structure/window/plasma/reinforced{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/general/visible, -/turf/open/floor/engine, -/area/engine/supermatter) -"RV" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"Sn" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/turf/open/space, -/area/space/nearstation) -"SL" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"SR" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 6 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"SX" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"Tk" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/plating, -/area/engine/engineering) -"TB" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"TC" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"TO" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/light, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Ub" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"Uq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"Ur" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Uu" = ( -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"UN" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Vg" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"Vn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"VN" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "External Gas to Loop" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"VP" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Wf" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 10 - }, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"Ws" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"WB" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space/basic, -/area/space/nearstation) -"WI" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"WT" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Xy" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 6 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"XA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"XG" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/turf/open/space, -/area/space/nearstation) -"XK" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/item/radio/headset/headset_eng, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"XY" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"YB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"YF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"YX" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 8; - name = "Gas to Filter" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"YZ" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space, -/area/space/nearstation) -"Zn" = ( -/obj/structure/sign/warning/vacuum/external{ - pixel_x = 32 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"ZH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"ZO" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -26 - }, -/obj/machinery/camera{ - c_tag = "Engineering Supermatter Fore"; - dir = 1; - network = list("ss13","engine"); - pixel_x = 23 - }, -/obj/machinery/atmospherics/pipe/manifold/green/visible{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"ZT" = ( -/turf/template_noop, -/area/template_noop) - -(1,1,1) = {" -ZT -ZT -ZT -ZT -ZT -ZT -ZT -yf -Rh -yf -yf -Rh -yf -yf -Rh -yf -yf -yf -YZ -YZ -YZ -ZT -ZT -ZT -ZT -ZT -"} -(2,1,1) = {" -ZT -ZT -ZT -ZT -ZT -ZT -ZT -pL -aX -pL -yA -Sn -yA -yA -Sn -hK -yf -yf -YZ -Oj -YZ -ZT -ZT -ZT -ZT -ZT -"} -(3,1,1) = {" -ZT -ZT -ZT -ZT -ZT -ZT -ZT -bI -XG -bI -sm -dD -Sn -Sn -dD -lG -Rh -Rh -YZ -Oj -YZ -ZT -ZT -ZT -ZT -ZT -"} -(4,1,1) = {" -ZT -ZT -ZT -ZT -ZT -ZT -ZT -uC -XG -uC -Le -dD -yA -yA -dD -hK -yf -yf -YZ -Oj -YZ -ZT -ZT -ZT -ZT -ZT -"} -(5,1,1) = {" -ZT -ZT -ZT -ZT -ZT -ZT -ZT -bI -XG -bI -sm -dD -Sn -Sn -dD -lG -Rh -Rh -YZ -Oj -YZ -ZT -ZT -ZT -ZT -ZT -"} -(6,1,1) = {" -ZT -ZT -ZT -ZT -ZT -ZT -ZT -wS -XG -uC -Le -dD -yA -yA -dD -hK -yf -yf -YZ -Oj -YZ -ZT -ZT -ZT -ZT -ZT -"} -(7,1,1) = {" -ZT -ZT -ZT -ZT -EL -EL -MP -bI -XG -bI -sm -dD -Sn -Sn -dD -lG -Rh -Rh -YZ -Oj -YZ -yf -yf -yf -yf -zS -"} -(8,1,1) = {" -ZT -ZT -cP -Ke -EL -Tk -MP -wS -XG -uC -Le -dD -yA -yA -dD -hK -yf -yf -YZ -Oj -YZ -yf -yf -Rh -yf -yf -"} -(9,1,1) = {" -ZT -ZT -dl -Ok -ND -Zn -Ei -bI -KZ -lG -sm -dD -Sn -Sn -dD -lG -Rh -Rh -YZ -YZ -YZ -tw -Rh -Rh -Rh -yf -"} -(10,1,1) = {" -ZT -nR -AH -iD -MP -MP -MP -sq -aA -rJ -gf -rJ -rJ -td -yf -yf -yf -yf -Rh -yf -yf -yf -yf -Rh -yf -yf -"} -(11,1,1) = {" -oC -GB -UN -sn -sn -sn -de -GK -wG -TC -mj -fW -at -XA -td -MP -MP -MP -MP -MP -MP -yf -WB -YZ -WB -yf -"} -(12,1,1) = {" -cS -hJ -qe -ry -ry -ry -ry -cX -ry -ry -nd -ry -yD -Ex -ck -iC -Uu -kW -Uu -EM -MP -yf -YZ -Oj -YZ -yf -"} -(13,1,1) = {" -ME -qr -Hz -gj -te -te -ez -Mr -DA -ej -Dz -jZ -gB -SR -SX -Vn -Vn -cp -Uu -Uu -MP -yf -YZ -Oj -YZ -yf -"} -(14,1,1) = {" -Ne -yd -bW -VP -EX -Vg -KX -px -nW -Cn -fj -xB -WI -IE -JV -Bc -JH -Lv -XY -LJ -MP -Rh -YZ -Oj -YZ -Rh -"} -(15,1,1) = {" -MP -zh -QD -Hj -rt -Vg -JL -na -tE -tE -JL -Xy -Ml -Ef -iD -MJ -pP -pP -pP -MJ -MP -yf -YZ -Oj -YZ -yf -"} -(16,1,1) = {" -MP -aC -bW -TO -fK -JL -JL -Bk -Bk -Bk -FL -JK -WT -Ef -MP -Lw -Uu -Uu -Uu -Uu -MP -Rh -YZ -Oj -YZ -yf -"} -(17,1,1) = {" -oS -fa -bW -ZO -yZ -qA -iJ -so -uR -ey -js -CW -YF -Py -iD -Uu -xo -Uu -Uu -Uu -MP -yf -YZ -Oj -YZ -yf -"} -(18,1,1) = {" -iD -fa -bW -YX -Qu -aV -jp -so -uR -ey -NU -Hw -ac -ac -iD -Uu -Uu -xo -Uu -Uu -MP -yf -YZ -Oj -YZ -yf -"} -(19,1,1) = {" -oS -fa -bW -LE -Gz -lE -CT -so -uR -ey -un -jB -Nx -aw -iD -Uu -Uu -Uu -xo -Uu -MP -Rh -YZ -Oj -YZ -yf -"} -(20,1,1) = {" -MP -Bl -bW -iU -JL -OR -Wf -RA -RA -RA -vD -JK -WT -Ef -MP -Lw -Uu -Uu -Uu -Uu -MP -Rh -YZ -Oj -YZ -yf -"} -(21,1,1) = {" -MP -nV -mE -Ws -VN -wz -JL -tE -tE -tE -JL -vO -Np -Ef -iD -MJ -IF -IF -IF -MJ -MP -yf -YZ -Oj -YZ -yf -"} -(22,1,1) = {" -iD -fa -hy -Ws -Pa -wz -fj -Nw -df -re -KX -ni -lw -bH -JV -Bc -Ph -Ph -nH -LJ -MP -Rh -YZ -Oj -YZ -Rh -"} -(23,1,1) = {" -iD -vX -bo -GX -Ik -Ik -SL -YB -RV -qm -MK -ii -rY -Qn -ab -ZH -ZH -MI -Uu -Uu -MP -Rh -YZ -Oj -YZ -yf -"} -(24,1,1) = {" -mH -bT -Lg -zf -ry -ry -ry -OK -ry -ry -sA -ry -mX -BD -Uq -zF -Uu -GI -Uu -Ab -MP -Rh -YZ -Oj -YZ -yf -"} -(25,1,1) = {" -iD -mU -in -Ur -Es -Kv -Gl -aY -Kv -Kv -Fr -vN -nz -In -Ub -MP -MP -MP -MP -MP -MP -yf -YZ -YZ -YZ -yf -"} -(26,1,1) = {" -wt -av -kA -qo -EL -MP -MP -Cb -Uu -Uu -pA -jg -qc -fq -LS -Hn -dw -yf -Rh -yf -yf -yf -yf -Rh -yf -yf -"} -(27,1,1) = {" -ZT -ZT -ZT -ou -DC -iD -Uu -mi -NK -NK -Ah -Uu -Jn -MP -dw -dw -dw -Rh -Rh -Rh -Rh -tw -Rh -Rh -Rh -Rh -"} -(28,1,1) = {" -ZT -ZT -ZT -OU -Ok -CH -GI -gx -TB -gQ -gQ -ln -XK -MP -yf -yf -Rh -yf -Rh -Oj -YZ -yf -yf -Rh -yf -yf -"} -(29,1,1) = {" -ZT -ZT -ZT -FG -NZ -MP -MP -MP -MP -MP -iD -iD -iD -MP -Rh -Rh -Rh -Rh -Rh -Oj -YZ -yf -yf -Rh -yf -zS -"} diff --git a/_maps/RandomRuins/StationRuins/Box/Engine/engine_sm_5x5.dmm b/_maps/RandomRuins/StationRuins/Box/Engine/engine_sm_5x5.dmm deleted file mode 100644 index 3b3328a8f0..0000000000 --- a/_maps/RandomRuins/StationRuins/Box/Engine/engine_sm_5x5.dmm +++ /dev/null @@ -1,2827 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"ab" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"ac" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"at" = ( -/obj/structure/closet/crate/bin, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/item/cartridge/atmos, -/turf/open/floor/engine, -/area/engine/engineering) -"av" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"aw" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"aA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"aC" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/item/tank/internals/emergency_oxygen/engi{ - pixel_x = 5 - }, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/glasses/meson/engine, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"aV" = ( -/obj/machinery/door/airlock/engineering/glass/critical{ - heat_proof = 1; - name = "Supermatter Chamber"; - req_access_txt = "10" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"aX" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 5 - }, -/turf/open/space, -/area/space/nearstation) -"aY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"bo" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"bH" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"bI" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/turf/open/space, -/area/space/nearstation) -"bT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"bW" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"ck" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"cp" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"cP" = ( -/obj/structure/table, -/obj/item/clothing/gloves/color/yellow, -/obj/item/storage/toolbox/electrical{ - pixel_y = 5 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/sign/poster/official/safety_eye_protection, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"cX" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 8; - name = "Gas to Cooling Loop" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"de" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/camera{ - c_tag = "Engineering Supermatter Port"; - dir = 4; - network = list("ss13","engine") - }, -/turf/open/floor/engine, -/area/engine/engineering) -"df" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/engine/supermatter) -"dl" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"dw" = ( -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/space/nearstation) -"dD" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/turf/open/space, -/area/space/nearstation) -"ej" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/components/binary/pump{ - name = "Cooling Loop Bypass" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"ey" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/light, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"ez" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"fa" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"fj" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -26 - }, -/obj/machinery/camera{ - c_tag = "Engineering Supermatter Fore"; - dir = 1; - network = list("ss13","engine"); - pixel_x = 23 - }, -/obj/machinery/atmospherics/pipe/manifold/green/visible{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"fq" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 10 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"fW" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"gf" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"gj" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 8; - name = "Gas to Filter" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"gx" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"gB" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"gQ" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"hy" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"hJ" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"hK" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 5 - }, -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) -"ii" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"in" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"iC" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/artistic{ - icon_state = "yellow"; - item_state = "toolbox_yellow"; - name = "Cable Toolbox"; - pixel_y = 6 - }, -/obj/item/storage/toolbox/artistic{ - icon_state = "yellow"; - item_state = "toolbox_yellow"; - name = "Cable Toolbox"; - pixel_y = -4 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"iD" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"iJ" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/button/door{ - id = "engsm"; - name = "Radiation Shutters Control"; - pixel_y = -24; - req_access_txt = "10" - }, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"jg" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"jp" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/light, -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"js" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "External Gas to Loop" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"jB" = ( -/obj/structure/sign/warning/fire, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"jZ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"kA" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering/glass{ - name = "Supermatter Engine Room"; - req_access_txt = "10" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"kW" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -22 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"ln" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"lw" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"lE" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 5 - }, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"lG" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 9 - }, -/turf/open/space, -/area/space/nearstation) -"mi" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"mj" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/obj/machinery/meter, -/turf/open/floor/engine, -/area/engine/engineering) -"mG" = ( -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/structure/window/plasma/reinforced{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"mH" = ( -/obj/structure/sign/poster/official/safety_eye_protection, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"mU" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"mX" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"na" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 8 - }, -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/structure/window/plasma/reinforced{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"nd" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 4; - name = "Cooling Loop to Gas" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"nz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/engine, -/area/engine/engineering) -"nH" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"nR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"nV" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/item/clothing/suit/radiation, -/obj/item/clothing/head/radiation, -/obj/item/clothing/glasses/meson, -/obj/item/clothing/glasses/meson, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"nW" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/item/tank/internals/plasma, -/turf/open/floor/plating, -/area/engine/supermatter) -"ou" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"oC" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"oS" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering/glass{ - name = "Supermatter Engine Room"; - req_access_txt = "10" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"px" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/engine/supermatter) -"pA" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"pL" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 6 - }, -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) -"pP" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/power/emitter/anchored{ - dir = 4; - state = 2 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"qc" = ( -/obj/structure/table, -/obj/item/pipe_dispenser, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"qe" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"qm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "Mix Bypass" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"qo" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"qr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"qA" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 9 - }, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"qP" = ( -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/obj/structure/window/plasma/reinforced{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"re" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/engine/supermatter) -"rt" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"ry" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"rJ" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/engine/engineering) -"rY" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"sm" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 6 - }, -/turf/open/space, -/area/space/nearstation) -"sn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"so" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"sq" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 8 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"sA" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - name = "Gas to Mix" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"td" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"te" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"tn" = ( -/turf/open/floor/engine, -/area/engine/supermatter) -"tw" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"tE" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 4 - }, -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/obj/structure/window/plasma/reinforced{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"un" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 6 - }, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"uC" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) -"uR" = ( -/obj/machinery/power/supermatter_crystal/engine, -/turf/open/floor/engine, -/area/engine/supermatter) -"vD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"vN" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"vO" = ( -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"vX" = ( -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"wt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/closet/radiation, -/turf/open/floor/plasteel, -/area/engine/engineering) -"wz" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 10 - }, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"wG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -22 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"wS" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/turf/open/space, -/area/space/nearstation) -"xo" = ( -/obj/structure/reflector/box/anchored{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"xB" = ( -/obj/machinery/status_display, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"yd" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"yf" = ( -/turf/open/space/basic, -/area/space/nearstation) -"yA" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) -"yD" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"yZ" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "Gas to Filter" - }, -/obj/machinery/airalarm/engine{ - dir = 4; - pixel_x = -23 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/engine/supermatter) -"zf" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Atmos to Loop" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"zh" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/mechanical, -/obj/item/flashlight, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/item/pipe_dispenser, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"zF" = ( -/obj/structure/table, -/obj/item/stack/sheet/metal/fifty, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"zS" = ( -/turf/open/space/basic, -/area/space) -"Ab" = ( -/obj/item/crowbar/large, -/obj/structure/rack, -/obj/item/flashlight, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"Ah" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"AH" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering/glass{ - name = "Supermatter Engine Room"; - req_access_txt = "10" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Bc" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"Bk" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"Bl" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/item/clothing/suit/radiation, -/obj/item/clothing/head/radiation, -/obj/item/clothing/glasses/meson, -/obj/item/geiger_counter, -/obj/item/geiger_counter, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"BD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Cb" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/obj/machinery/meter, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"Cn" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/engine/supermatter) -"CH" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering/glass{ - name = "Supermatter Engine Room"; - req_access_txt = "10" - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"CT" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 8 - }, -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/structure/window/plasma/reinforced{ - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "Supermatter Chamber"; - network = list("engine"); - pixel_x = 23 - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"CW" = ( -/obj/structure/sign/warning/electricshock, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"Dj" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 4 - }, -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/obj/structure/window/plasma/reinforced{ - dir = 8 - }, -/obj/machinery/camera{ - c_tag = "Supermatter Chamber"; - network = list("engine"); - pixel_x = 23 - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"Dz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/manifold/orange/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"DA" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"DC" = ( -/obj/structure/rack, -/obj/item/clothing/mask/gas{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas{ - pixel_x = -3; - pixel_y = -3 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"Ef" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - dir = 8; - filter_type = "n2" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Ei" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/door/airlock/external{ - name = "Engineering External Access"; - req_access_txt = "10;13" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"Es" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Ex" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"EL" = ( -/turf/closed/wall, -/area/engine/engineering) -"EM" = ( -/obj/item/wrench, -/obj/structure/rack, -/obj/item/weldingtool/hugetank, -/obj/item/clothing/head/welding{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/item/clothing/head/welding{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/item/clothing/glasses/welding, -/obj/item/clothing/glasses/welding, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"Fr" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"FG" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"Gl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "Engineering Supermatter Starboard"; - dir = 8; - network = list("ss13","engine") - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Gz" = ( -/obj/machinery/atmospherics/components/binary/pump{ - name = "Gas to Chamber" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/engine/supermatter) -"GB" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"GI" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"GK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"GX" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Hj" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ - dir = 4 - }, -/obj/machinery/meter, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"Hn" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"Hw" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/supermatter) -"Hz" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 6 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Ik" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"In" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"IE" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"IF" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/power/emitter/anchored{ - dir = 8; - state = 2 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"Jn" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"JH" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"JV" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering/glass{ - name = "Laser Room"; - req_access_txt = "10" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Ke" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical{ - pixel_y = 5 - }, -/obj/item/flashlight{ - pixel_x = 1; - pixel_y = 5 - }, -/obj/item/flashlight{ - pixel_x = 1; - pixel_y = 5 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"Kv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"KX" = ( -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/structure/window/plasma/reinforced{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 5 - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"KZ" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 10 - }, -/turf/open/space, -/area/space/nearstation) -"Le" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 10 - }, -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) -"Lg" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Lv" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"Lw" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"LE" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"LJ" = ( -/obj/machinery/light, -/turf/open/floor/plating, -/area/engine/engineering) -"LS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"Ml" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 6 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Mr" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/green/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"ME" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"MI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"MJ" = ( -/turf/open/floor/plating, -/area/engine/engineering) -"MK" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"MP" = ( -/turf/closed/wall/r_wall, -/area/engine/engineering) -"Ne" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) -"Np" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Nw" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/engine/supermatter) -"Nx" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"ND" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/airlock/external{ - name = "Engineering External Access"; - req_access_txt = "10;13" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"NK" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"NU" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 9 - }, -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/obj/structure/window/plasma/reinforced{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"NZ" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"Oj" = ( -/turf/closed/wall/r_wall, -/area/space/nearstation) -"Ok" = ( -/turf/open/floor/plasteel, -/area/engine/engineering) -"OK" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Mix to Gas" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"OR" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"OU" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/obj/machinery/meter, -/turf/open/floor/plasteel, -/area/engine/engineering) -"Pa" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"Ph" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"Py" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Qn" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Qu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/engine/supermatter) -"QD" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"QJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/camera{ - c_tag = "Engineering Supermatter Aft"; - network = list("ss13","engine"); - pixel_x = 23 - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"Rh" = ( -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) -"RA" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/supermatter) -"RV" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/floor/engine, -/area/engine/engineering) -"Sn" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/turf/open/space, -/area/space/nearstation) -"SL" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"SR" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 5 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"SX" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"Tk" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/plating, -/area/engine/engineering) -"TB" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"TC" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"TO" = ( -/obj/structure/sign/warning/radiation, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"Ub" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"Uq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"Ur" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Uu" = ( -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"UM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"UN" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Vg" = ( -/obj/machinery/status_display/ai, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"Vn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"VP" = ( -/obj/item/wrench, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 6 - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"Ws" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "External Gas to Loop" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"WB" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space/basic, -/area/space/nearstation) -"WI" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"WT" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"XA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"XG" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/turf/open/space, -/area/space/nearstation) -"XK" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/item/radio/headset/headset_eng, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"XY" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"YB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"YD" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"YF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"YX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/engineering/glass/critical{ - heat_proof = 1; - name = "Supermatter Chamber"; - req_access_txt = "10" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/engine, -/area/engine/supermatter) -"YZ" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space, -/area/space/nearstation) -"Zn" = ( -/obj/structure/sign/warning/vacuum/external{ - pixel_x = 32 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"ZH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"ZO" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"ZT" = ( -/turf/template_noop, -/area/template_noop) - -(1,1,1) = {" -ZT -ZT -ZT -ZT -ZT -ZT -ZT -yf -Rh -yf -yf -Rh -yf -yf -Rh -yf -yf -yf -YZ -YZ -YZ -ZT -ZT -ZT -ZT -ZT -"} -(2,1,1) = {" -ZT -ZT -ZT -ZT -ZT -ZT -ZT -pL -aX -pL -yA -Sn -yA -yA -Sn -hK -yf -yf -YZ -Oj -YZ -ZT -ZT -ZT -ZT -ZT -"} -(3,1,1) = {" -ZT -ZT -ZT -ZT -ZT -ZT -ZT -bI -XG -bI -sm -dD -Sn -Sn -dD -lG -Rh -Rh -YZ -Oj -YZ -ZT -ZT -ZT -ZT -ZT -"} -(4,1,1) = {" -ZT -ZT -ZT -ZT -ZT -ZT -ZT -uC -XG -uC -Le -dD -yA -yA -dD -hK -yf -yf -YZ -Oj -YZ -ZT -ZT -ZT -ZT -ZT -"} -(5,1,1) = {" -ZT -ZT -ZT -ZT -ZT -ZT -ZT -bI -XG -bI -sm -dD -Sn -Sn -dD -lG -Rh -Rh -YZ -Oj -YZ -ZT -ZT -ZT -ZT -ZT -"} -(6,1,1) = {" -ZT -ZT -ZT -ZT -ZT -ZT -ZT -wS -XG -uC -Le -dD -yA -yA -dD -hK -yf -yf -YZ -Oj -YZ -ZT -ZT -ZT -ZT -ZT -"} -(7,1,1) = {" -ZT -ZT -ZT -ZT -EL -EL -MP -bI -XG -bI -sm -dD -Sn -Sn -dD -lG -Rh -Rh -YZ -Oj -YZ -yf -yf -yf -yf -zS -"} -(8,1,1) = {" -ZT -ZT -cP -Ke -EL -Tk -MP -wS -XG -uC -Le -dD -yA -yA -dD -hK -yf -yf -YZ -Oj -YZ -yf -yf -Rh -yf -yf -"} -(9,1,1) = {" -ZT -ZT -dl -Ok -ND -Zn -Ei -bI -KZ -lG -sm -dD -Sn -Sn -dD -lG -Rh -Rh -YZ -YZ -YZ -tw -Rh -Rh -Rh -yf -"} -(10,1,1) = {" -ZT -nR -AH -iD -MP -MP -MP -sq -aA -rJ -gf -rJ -rJ -td -yf -yf -yf -yf -Rh -yf -yf -yf -yf -Rh -yf -yf -"} -(11,1,1) = {" -oC -GB -UN -sn -sn -sn -de -GK -wG -TC -mj -fW -at -XA -td -MP -MP -MP -MP -MP -MP -yf -WB -YZ -WB -yf -"} -(12,1,1) = {" -cS -hJ -qe -ry -ry -ry -ry -cX -ry -ry -nd -ry -yD -Ex -ck -iC -Uu -kW -Uu -EM -MP -yf -YZ -Oj -YZ -yf -"} -(13,1,1) = {" -ME -qr -Hz -te -te -so -ez -Mr -DA -ej -Dz -jZ -gB -SR -SX -Vn -Vn -cp -Uu -Uu -MP -yf -YZ -Oj -YZ -yf -"} -(14,1,1) = {" -Ne -yd -bW -VP -rt -Vg -px -px -nW -Cn -Cn -xB -WI -IE -JV -Bc -JH -Lv -XY -LJ -MP -Rh -YZ -Oj -YZ -Rh -"} -(15,1,1) = {" -MP -zh -QD -Hj -rt -un -CT -na -na -mG -KX -vO -Ml -Ef -iD -MJ -pP -pP -pP -MJ -MP -yf -YZ -Oj -YZ -yf -"} -(16,1,1) = {" -MP -aC -ey -TO -vO -OR -Bk -Bk -Bk -Bk -Bk -vO -WT -UM -MP -Lw -Uu -Uu -Uu -Uu -MP -Rh -YZ -Oj -YZ -yf -"} -(17,1,1) = {" -oS -fa -fj -ZO -yZ -qA -tn -tn -tn -tn -tn -CW -YF -Py -iD -Uu -Uu -Uu -Uu -Uu -MP -yf -YZ -Oj -YZ -yf -"} -(18,1,1) = {" -iD -fa -gj -YX -Qu -aV -tn -tn -uR -tn -tn -Hw -QJ -ac -iD -Uu -xo -xo -xo -Uu -MP -yf -YZ -Oj -YZ -yf -"} -(19,1,1) = {" -oS -fa -iJ -LE -Gz -lE -tn -tn -tn -tn -tn -jB -Nx -aw -iD -Uu -Uu -Uu -Uu -Uu -MP -Rh -YZ -Oj -YZ -yf -"} -(20,1,1) = {" -MP -Bl -jp -vO -jB -OR -RA -RA -RA -RA -RA -vO -WT -UM -MP -Lw -Uu -Uu -Uu -Uu -MP -Rh -YZ -Oj -YZ -yf -"} -(21,1,1) = {" -MP -nV -hy -Ws -Pa -wz -Dj -tE -tE -qP -NU -vO -Np -YD -iD -MJ -IF -IF -IF -MJ -MP -yf -YZ -Oj -YZ -yf -"} -(22,1,1) = {" -iD -fa -hy -js -Pa -xB -Nw -Nw -df -re -re -Vg -lw -bH -JV -Bc -Ph -Ph -nH -LJ -MP -Rh -YZ -Oj -YZ -Rh -"} -(23,1,1) = {" -iD -vX -bo -GX -Ik -vD -SL -YB -RV -qm -MK -ii -rY -Qn -ab -ZH -ZH -MI -Uu -Uu -MP -Rh -YZ -Oj -YZ -yf -"} -(24,1,1) = {" -mH -bT -Lg -zf -ry -ry -ry -OK -ry -ry -sA -ry -mX -BD -Uq -zF -Uu -GI -Uu -Ab -MP -Rh -YZ -Oj -YZ -yf -"} -(25,1,1) = {" -iD -mU -in -Ur -Es -Kv -Gl -aY -Kv -Kv -Fr -vN -nz -In -Ub -MP -MP -MP -MP -MP -MP -yf -YZ -YZ -YZ -yf -"} -(26,1,1) = {" -wt -av -kA -qo -EL -MP -MP -Cb -Uu -Uu -pA -jg -qc -fq -LS -Hn -dw -yf -Rh -yf -yf -yf -yf -Rh -yf -yf -"} -(27,1,1) = {" -ZT -ZT -ZT -ou -DC -iD -Uu -mi -NK -NK -Ah -Uu -Jn -MP -dw -dw -dw -Rh -Rh -Rh -Rh -tw -Rh -Rh -Rh -Rh -"} -(28,1,1) = {" -ZT -ZT -ZT -OU -Ok -CH -GI -gx -TB -gQ -gQ -ln -XK -MP -yf -yf -Rh -yf -Rh -Oj -YZ -yf -yf -Rh -yf -yf -"} -(29,1,1) = {" -ZT -ZT -ZT -FG -NZ -MP -MP -MP -MP -MP -iD -iD -iD -MP -Rh -Rh -Rh -Rh -Rh -Oj -YZ -yf -yf -Rh -yf -zS -"} diff --git a/_maps/RandomZLevels/Cabin.dmm b/_maps/RandomZLevels/Cabin.dmm index 4d07c02565..f4a18fd87c 100644 --- a/_maps/RandomZLevels/Cabin.dmm +++ b/_maps/RandomZLevels/Cabin.dmm @@ -967,6 +967,10 @@ }, /turf/open/floor/plating, /area/awaymission/cabin) +"dw" = ( +/obj/effect/mapping_helpers/planet_z, +/turf/closed/indestructible/rock/snow, +/area/space) (1,1,1) = {" aa @@ -1223,7 +1227,7 @@ aa aa aa aa -aa +dw "} (2,1,1) = {" aa diff --git a/_maps/RandomZLevels/VR/snowdin_VR.dmm b/_maps/RandomZLevels/VR/snowdin_VR.dmm index bae0b05e3d..8f6eda450c 100644 --- a/_maps/RandomZLevels/VR/snowdin_VR.dmm +++ b/_maps/RandomZLevels/VR/snowdin_VR.dmm @@ -4,15 +4,9 @@ /turf/closed/indestructible/rock/snow, /area/awaymission/snowdin/cave/mountain) "ab" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/mob/living/simple_animal/hostile/netherworld/migo, -/turf/open/floor/plasteel, -/area/awaymission/snowdin/post/mining_dock) +/obj/effect/mapping_helpers/planet_z, +/turf/closed/indestructible/rock/snow, +/area/awaymission/snowdin/cave/mountain) "ac" = ( /turf/closed/indestructible/rock/snow, /area/awaymission/snowdin/cave/mountain) @@ -10273,6 +10267,16 @@ /obj/item/shard, /turf/open/floor/plating, /area/awaymission/snowdin/post/mining_dock) +"xA" = ( +/mob/living/simple_animal/hostile/netherworld/migo, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_dock) "xB" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -16009,7 +16013,7 @@ ac ac "} (2,1,1) = {" -ac +ab ac ac ac @@ -66514,7 +66518,7 @@ wD wT xe xs -ab +xA xI xN wL diff --git a/_maps/RandomZLevels/caves.dmm b/_maps/RandomZLevels/caves.dmm index 96c1a08b1f..d50480c381 100644 --- a/_maps/RandomZLevels/caves.dmm +++ b/_maps/RandomZLevels/caves.dmm @@ -2251,6 +2251,10 @@ initial_gas_mix = "n2=23;o2=14" }, /area/awaymission/caves/BMP_asteroid) +"gW" = ( +/obj/effect/mapping_helpers/planet_z, +/turf/closed/indestructible/rock, +/area/space/nearstation) "gX" = ( /obj/effect/baseturf_helper/lava, /turf/closed/mineral/volcanic, @@ -2532,7 +2536,7 @@ aa aa aa aa -aa +gW "} (2,1,1) = {" aa diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index 8c33326703..ddc8778ac1 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -7215,6 +7215,10 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/research) +"oV" = ( +/obj/effect/mapping_helpers/planet_z, +/turf/open/space, +/area/space) "vV" = ( /obj/machinery/door/airlock/external, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -7508,7 +7512,7 @@ aa aa aa aa -aa +oV "} (2,1,1) = {" aa diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm index 57e03061dd..525c8fcf7b 100644 --- a/_maps/RandomZLevels/snowdin.dmm +++ b/_maps/RandomZLevels/snowdin.dmm @@ -4,15 +4,9 @@ /turf/closed/indestructible/rock/snow, /area/awaymission/snowdin/cave/mountain) "ab" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/mob/living/simple_animal/hostile/netherworld/migo, -/turf/open/floor/plasteel, -/area/awaymission/snowdin/post/mining_dock) +/obj/effect/mapping_helpers/planet_z, +/turf/closed/indestructible/rock/snow, +/area/awaymission/snowdin/cave/mountain) "ac" = ( /turf/closed/indestructible/rock/snow, /area/awaymission/snowdin/cave/mountain) @@ -10337,6 +10331,16 @@ /obj/item/shard, /turf/open/floor/plating, /area/awaymission/snowdin/post/mining_dock) +"xA" = ( +/mob/living/simple_animal/hostile/netherworld/migo, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/awaymission/snowdin/post/mining_dock) "xB" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -16104,7 +16108,7 @@ ac ac "} (2,1,1) = {" -ac +ab ac ac ac @@ -66609,7 +66613,7 @@ wD wT xe xs -ab +xA xI xN wL diff --git a/_maps/RandomZLevels/spacebattle.dmm b/_maps/RandomZLevels/spacebattle.dmm index 66d7f556b4..21cd37f78f 100644 --- a/_maps/RandomZLevels/spacebattle.dmm +++ b/_maps/RandomZLevels/spacebattle.dmm @@ -5,16 +5,6 @@ "ab" = ( /turf/open/space, /area/space) -"ac" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/mob/living/simple_animal/hostile/syndicate/melee/sword, -/turf/open/floor/plasteel, -/area/awaymission/spacebattle/cruiser) "ad" = ( /obj/structure/shuttle/engine/propulsion/right{ dir = 1 @@ -2607,6 +2597,16 @@ /obj/effect/spawner/lootdrop/armory_contraband, /turf/open/floor/plating, /area/awaymission/spacebattle/cruiser) +"jK" = ( +/mob/living/simple_animal/hostile/syndicate/melee/sword, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/awaymission/spacebattle/cruiser) "jL" = ( /obj/machinery/door/poddoor{ id = "spacebattlearmory"; @@ -2894,6 +2894,10 @@ /obj/item/mecha_parts/mecha_equipment/weapon/energy/ion, /turf/open/floor/plating, /area/awaymission/spacebattle/cruiser) +"kM" = ( +/obj/effect/mapping_helpers/planet_z, +/turf/closed/mineral/random, +/area/space/nearstation) "vw" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/awaymission/spacebattle/syndicate5) @@ -3171,7 +3175,7 @@ aa aa aa aa -aa +kM "} (2,1,1) = {" aa @@ -35682,10 +35686,10 @@ eC cn fL cp -ac +jK fs fO -ac +jK eM eM eM diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm index 56018b943a..f6d46ef97d 100644 --- a/_maps/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/RandomZLevels/undergroundoutpost45.dmm @@ -25,9 +25,6 @@ "ag" = ( /turf/closed/wall/mineral/titanium, /area/awaymission/undergroundoutpost45/central) -"ah" = ( -/turf/open/space, -/area/space/nearstation) "aj" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel{ @@ -13948,6 +13945,10 @@ temperature = 363.9 }, /area/awaymission/undergroundoutpost45/caves) +"zi" = ( +/obj/effect/mapping_helpers/planet_z, +/turf/open/space, +/area/space/nearstation) "KE" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 @@ -14210,7 +14211,7 @@ aa aa aa aa -ah +zi "} (2,1,1) = {" aa diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index b6463f7147..92ceb0ac34 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -35,12 +35,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/bar) -"aad" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/engine, -/area/science/xenobiology) "aae" = ( /obj/effect/landmark/carpspawn, /turf/open/space, @@ -145,6 +139,7 @@ /obj/structure/sign/warning/electricshock{ pixel_y = 32 }, +/obj/machinery/seed_extractor, /turf/open/floor/plasteel, /area/security/prison) "aat" = ( @@ -173,10 +168,6 @@ "aay" = ( /turf/open/floor/plating, /area/security/prison) -"aaA" = ( -/obj/machinery/seed_extractor, -/turf/open/floor/plasteel, -/area/security/prison) "aaB" = ( /obj/structure/window/reinforced, /obj/machinery/hydroponics/soil, @@ -235,6 +226,10 @@ /turf/open/floor/plasteel, /area/security/prison) "aaN" = ( +/obj/structure/chair/sofa/left, +/turf/open/floor/plasteel, +/area/security/prison) +"aaO" = ( /obj/structure/chair/sofa/right, /turf/open/floor/plasteel, /area/security/prison) @@ -267,15 +262,12 @@ /area/space/nearstation) "aaV" = ( /obj/structure/table/wood, -/obj/item/storage/pill_bottle/dice, +/obj/item/toy/cards/deck, /turf/open/floor/plasteel, /area/security/prison) "aaW" = ( -/obj/effect/landmark/event_spawn, -/obj/structure/chair/comfy/brown{ - color = "#596479"; - dir = 4 - }, +/obj/structure/table/wood, +/obj/item/storage/pill_bottle/dice, /turf/open/floor/plasteel, /area/security/prison) "aaX" = ( @@ -358,6 +350,7 @@ /obj/structure/table, /obj/item/storage/box/firingpins, /obj/item/storage/box/firingpins, +/obj/item/key/security, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -460,13 +453,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/security/execution/transfer) -"abz" = ( -/obj/machinery/light/small{ - dir = 4; - light_color = "#d8b1b1" - }, -/turf/open/floor/engine, -/area/science/xenobiology) "abA" = ( /obj/machinery/light, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -1565,6 +1551,14 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/carpet, /area/crew_quarters/heads/hos) +"adO" = ( +/obj/effect/landmark/event_spawn, +/obj/structure/chair/comfy/brown{ + color = "#596479"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) "adP" = ( /obj/structure/cable{ icon_state = "2-8" @@ -1887,7 +1881,14 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/item/key/security, +/obj/item/gun/energy/pumpaction/blaster{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/gun/energy/pumpaction/blaster{ + pixel_x = 3; + pixel_y = -3 + }, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) "aet" = ( @@ -4903,9 +4904,6 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/plasteel, /area/security/brig) "akt" = ( @@ -4928,16 +4926,13 @@ /turf/open/floor/plasteel, /area/security/brig) "aku" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 }, -/turf/open/floor/plasteel, -/area/security/brig) -"akv" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/security/brig) "akw" = ( @@ -4965,6 +4960,11 @@ }, /turf/open/floor/plasteel, /area/security/courtroom) +"akz" = ( +/obj/machinery/vending/snack/random, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) "akA" = ( /obj/structure/chair{ dir = 8; @@ -5174,9 +5174,6 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/structure/cable{ - icon_state = "1-4" - }, /turf/open/floor/plasteel, /area/security/brig) "akX" = ( @@ -5200,40 +5197,6 @@ }, /turf/open/floor/plasteel, /area/security/brig) -"akY" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plating, -/area/security/brig) -"ala" = ( -/obj/machinery/door/window/brigdoor/security/cell{ - desc = "A rare fourth cell, known for faulty wiring..."; - id = "Cell 4"; - name = "Cell 4" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/security/brig) "alb" = ( /obj/structure/chair{ dir = 4; @@ -5445,6 +5408,11 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/security/courtroom) +"alE" = ( +/obj/machinery/vending/cigarette, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) "alF" = ( /obj/machinery/atmospherics/components/unary/tank/air, /turf/open/floor/plating, @@ -5676,13 +5644,6 @@ /obj/effect/turf_decal/tile/red, /turf/open/floor/plasteel, /area/security/brig) -"amp" = ( -/obj/structure/closet/secure_closet/brig{ - id = "Cell 4"; - name = "Cell 4 Locker" - }, -/turf/open/floor/plasteel, -/area/security/brig) "amr" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -6521,8 +6482,8 @@ /area/hallway/primary/fore) "aoC" = ( /obj/effect/turf_decal/tile/red, +/obj/structure, /obj/item/storage/box/drinkingglasses, -/obj/structure/table, /turf/open/floor/plasteel, /area/hallway/primary/fore) "aoD" = ( @@ -6540,14 +6501,14 @@ /area/hallway/primary/fore) "aoE" = ( /obj/effect/turf_decal/tile/red, +/obj/structure, /obj/item/storage/box/cups, -/obj/structure/table, /turf/open/floor/plasteel, /area/hallway/primary/fore) "aoF" = ( /obj/effect/turf_decal/tile/red, +/obj/structure, /obj/machinery/chem_dispenser/drinks, -/obj/structure/table, /turf/open/floor/plasteel, /area/hallway/primary/fore) "aoG" = ( @@ -6705,7 +6666,6 @@ "ape" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/engineering/abandoned{ - abandoned = 0; name = "Vacant Office B"; req_access_txt = "32" }, @@ -9240,6 +9200,9 @@ /area/crew_quarters/dorms) "aww" = ( /obj/effect/landmark/event_spawn, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plasteel, /area/security/brig) "awx" = ( @@ -9618,6 +9581,15 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/port/fore) +"axm" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fore) "axn" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -9650,6 +9622,9 @@ /turf/open/floor/plating, /area/maintenance/fore) "axr" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = -32 + }, /obj/structure/cable{ icon_state = "4-8" }, @@ -10057,29 +10032,41 @@ /turf/closed/wall/r_wall, /area/maintenance/port/fore) "ayA" = ( -/obj/machinery/door/airlock{ - name = "Theatre Backstage"; - req_access_txt = "46" - }, -/obj/machinery/door/firedoor, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "0-8" }, -/turf/open/floor/plasteel/white/side{ - dir = 4 +/obj/structure/cable{ + icon_state = "0-4" }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, /area/maintenance/fore) "ayC" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/maintenance/fore) "ayD" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plating, /area/maintenance/fore) "ayE" = ( /turf/closed/wall/r_wall, /area/maintenance/fore) +"ayF" = ( +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/fore) "ayG" = ( /turf/closed/wall/r_wall, /area/gateway) @@ -11326,21 +11313,18 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/nuke_storage) "aBU" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/wood, /area/crew_quarters/theatre) "aBV" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/light{ dir = 8; light_color = "#e8eaff" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/wood, /area/crew_quarters/theatre) "aBW" = ( @@ -13607,15 +13591,6 @@ /obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/ai_monitored/nuke_storage) -"aHG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) "aHH" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -14213,12 +14188,6 @@ /obj/machinery/disposal/bin, /turf/open/floor/plasteel, /area/storage/primary) -"aJe" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) "aJf" = ( /obj/machinery/camera{ c_tag = "EVA South"; @@ -14636,6 +14605,17 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/storage/primary) +"aKb" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/theatre) "aKc" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command{ @@ -14726,7 +14706,9 @@ /obj/item/radio/intercom{ pixel_y = 25 }, -/obj/machinery/camera, +/obj/machinery/camera{ + c_tag = "Theatre Stage" + }, /obj/structure/chair/comfy/brown{ dir = 4 }, @@ -14747,7 +14729,31 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/storage/primary) +"aKt" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/theatre) "aKu" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/theatre) +"aKv" = ( +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plasteel/dark, /area/crew_quarters/theatre) @@ -14755,6 +14761,12 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, /obj/machinery/door/firedoor, /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -14769,9 +14781,13 @@ /obj/machinery/door/airlock/public/glass{ name = "Central Access" }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/theatre) +"aKx" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "0-8" }, +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plasteel/dark, /area/crew_quarters/theatre) "aKy" = ( @@ -15072,6 +15088,9 @@ /turf/open/floor/plasteel, /area/hallway/primary/port) "aLl" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -15227,6 +15246,18 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"aLJ" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "aLK" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, @@ -19980,7 +20011,6 @@ /area/chapel/main) "aXX" = ( /obj/machinery/door/airlock/engineering/abandoned{ - abandoned = 0; name = "Vacant Office A"; req_access_txt = "32" }, @@ -21801,10 +21831,12 @@ /turf/open/floor/carpet, /area/crew_quarters/heads/captain) "bcQ" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, -/turf/open/floor/wood, +/turf/open/floor/carpet, /area/crew_quarters/heads/captain) "bcR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -21874,9 +21906,6 @@ /area/hallway/primary/starboard) "bdd" = ( /obj/machinery/vending/cola/random, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, /turf/open/floor/wood, /area/bridge/meeting_room) "bde" = ( @@ -21920,8 +21949,12 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/ai_upload) "bdi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Captain's Desk"; + departmentType = 5; + name = "Captain RC"; + pixel_x = -30 }, /turf/open/floor/wood, /area/crew_quarters/heads/captain) @@ -22835,9 +22868,6 @@ dir = 8; pixel_x = 27 }, -/obj/machinery/light{ - dir = 4 - }, /turf/open/floor/wood, /area/bridge/meeting_room) "bfs" = ( @@ -22876,13 +22906,6 @@ pixel_y = 7 }, /obj/item/pen, -/obj/machinery/requests_console{ - announcementConsole = 1; - department = "Captain's Desk"; - departmentType = 5; - name = "Captain RC"; - pixel_x = -30 - }, /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bfz" = ( @@ -22904,14 +22927,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/wood, /area/crew_quarters/heads/captain) -"bfC" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/carpet, -/area/crew_quarters/heads/captain) "bfD" = ( /obj/structure/cable{ icon_state = "1-2" @@ -23339,6 +23354,9 @@ /turf/open/floor/wood, /area/bridge/meeting_room) "bgM" = ( +/obj/machinery/light{ + dir = 4 + }, /obj/structure/cable{ icon_state = "4-8" }, @@ -23368,9 +23386,14 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "bgS" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Captain's Desk"; + departmentType = 5; + name = "Captain RC"; + pixel_x = -30 }, +/obj/structure/filingcabinet, /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bgT" = ( @@ -23378,9 +23401,6 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bgU" = ( @@ -23389,18 +23409,12 @@ }, /obj/effect/landmark/start/captain, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bgV" = ( /obj/structure/table/wood, /obj/item/book/manual/wiki/security_space_law, /obj/item/coin/plasma, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bgW" = ( @@ -23997,22 +24011,11 @@ pixel_x = -28 }, /obj/machinery/suit_storage_unit/captain, -/obj/machinery/light{ - light_color = "#c9d3e8" - }, -/turf/open/floor/wood, -/area/crew_quarters/heads/captain) -"bil" = ( -/obj/machinery/computer/card{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bim" = ( /obj/structure/table/wood, /obj/machinery/recharger, -/obj/item/melee/chainofcommand, /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bin" = ( @@ -28236,10 +28239,11 @@ /turf/open/floor/plasteel/dark, /area/hallway/primary/central) "bsb" = ( -/obj/structure/table, -/obj/item/hand_labeler, -/turf/open/floor/plasteel/dark, -/area/hallway/primary/central) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) "bsc" = ( /turf/open/floor/plasteel, /area/engine/gravity_generator) @@ -28247,16 +28251,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/dark, /area/hallway/primary/central) -"bsg" = ( -/obj/structure/table, -/obj/item/hand_labeler, -/obj/machinery/camera{ - c_tag = "Medbay Morgue"; - dir = 8; - network = list("ss13","medbay") - }, -/turf/open/floor/plasteel/dark, -/area/hallway/primary/central) "bsh" = ( /turf/closed/wall, /area/teleporter) @@ -34916,6 +34910,20 @@ }, /turf/open/floor/plasteel/white, /area/science/research) +"bHg" = ( +/obj/structure/sign/warning/fire{ + desc = "A sign that states the labeled room's number."; + dir = 5; + icon_state = "roomnum"; + name = "Room Number 7"; + pixel_y = 24 + }, +/obj/structure/chair/sofa/right, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) "bHh" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 @@ -45346,9 +45354,14 @@ /area/engine/engineering) "cgw" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/structure/closet/radiation, /turf/open/floor/plasteel, /area/engine/engineering) +"cgx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) "cgy" = ( /obj/machinery/light/small{ dir = 1 @@ -45418,8 +45431,32 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "cgI" = ( -/turf/template_noop, -/area/template_noop) +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"cgJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"cgK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"cgL" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Supermatter Engine Room"; + req_access_txt = "10" + }, +/turf/open/floor/engine, +/area/engine/engineering) "cgO" = ( /obj/structure/rack, /obj/item/lighter, @@ -45828,6 +45865,27 @@ /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, /turf/open/floor/plasteel, /area/engine/engineering) +"chF" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"chG" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) "chH" = ( /obj/structure/closet/firecloset, /turf/open/floor/plating, @@ -45916,6 +45974,36 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"chV" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/item/tank/internals/emergency_oxygen/engi{ + pixel_x = 5 + }, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/glasses/meson/engine, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"chX" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) "chY" = ( /obj/machinery/shieldgen, /turf/open/floor/plating, @@ -45998,6 +46086,24 @@ "cig" = ( /turf/closed/wall, /area/engine/engineering) +"cii" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/item/clothing/suit/radiation, +/obj/item/clothing/head/radiation, +/obj/item/clothing/glasses/meson, +/obj/item/geiger_counter, +/obj/item/geiger_counter, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) "cij" = ( /obj/machinery/modular_computer/console/preset/engineering, /obj/structure/cable{ @@ -46063,6 +46169,15 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/crew_quarters/heads/chief) +"cip" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/engine, +/area/engine/engineering) "ciq" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -46072,6 +46187,13 @@ }, /turf/open/floor/plating, /area/crew_quarters/heads/chief) +"cir" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) "cis" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plasteel, @@ -46216,6 +46338,16 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/engine/engineering) +"ciO" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/engine, +/area/engine/engineering) "ciP" = ( /obj/structure/cable{ icon_state = "0-2" @@ -46383,6 +46515,12 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/chief) +"cjh" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "cji" = ( /obj/structure/cable{ icon_state = "1-2" @@ -46668,7 +46806,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/closet/wardrobe/engineering_yellow, /turf/open/floor/plasteel, /area/engine/engineering) "cjT" = ( @@ -47536,6 +47673,15 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) +"cmm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "holoprivacy"; + name = "Holodeck Shutters" + }, +/turf/open/floor/plating, +/area/crew_quarters/fitness) "cmo" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance, @@ -47912,6 +48058,18 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/engine/engineering) +"cnx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) "cny" = ( /obj/effect/landmark/start/station_engineer, /turf/open/floor/plasteel, @@ -48170,6 +48328,19 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"coc" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Supermatter Engine Room"; + req_access_txt = "10" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"coj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/crew_quarters/dorms) "cop" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/incinerator_input{ dir = 1 @@ -48261,7 +48432,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/engine_smes) "coz" = ( @@ -48274,6 +48447,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, /turf/open/floor/plasteel, /area/engine/engine_smes) "coA" = ( @@ -48338,6 +48514,16 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"coK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) "coL" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -48350,6 +48536,18 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"coM" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/engine, +/area/engine/engineering) "coS" = ( /obj/structure/rack, /obj/item/gun/energy/laser{ @@ -48466,9 +48664,6 @@ /area/engine/engine_smes) "cpk" = ( /obj/effect/turf_decal/stripes/corner, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, /turf/open/floor/plasteel, /area/engine/engine_smes) "cpl" = ( @@ -48485,20 +48680,18 @@ dir = 1; pixel_y = -22 }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, /turf/open/floor/plasteel, /area/engine/engine_smes) "cpn" = ( /obj/machinery/light, /obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/engine/engine_smes) "cpo" = ( @@ -48538,6 +48731,52 @@ /obj/machinery/cell_charger, /turf/open/floor/plasteel, /area/engine/engineering) +"cpt" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/yellow, +/obj/item/storage/toolbox/electrical{ + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cpu" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Supermatter Engine Room"; + req_access_txt = "10" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cpv" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cpx" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cpy" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/engine/engineering) "cpA" = ( /obj/structure/cable{ icon_state = "1-2" @@ -48552,6 +48791,15 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel, /area/bridge) +"cpD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/engine/engineering) "cpE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 @@ -48666,6 +48914,133 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"cpZ" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 5 + }, +/obj/item/flashlight{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/item/flashlight{ + pixel_x = 1; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cqa" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cqb" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqd" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqe" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 6 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqf" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqg" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8; + name = "Gas to Filter" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqh" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/machinery/camera{ + c_tag = "Engineering Supermatter Fore"; + dir = 1; + network = list("ss13","engine"); + pixel_x = 23 + }, +/obj/machinery/atmospherics/pipe/manifold/green/visible{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqi" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqj" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/button/door{ + id = "engsm"; + name = "Radiation Shutters Control"; + pixel_y = -24; + req_access_txt = "10" + }, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cql" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqm" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/engine/engineering) "cqn" = ( /obj/structure/grille, /turf/open/floor/plating, @@ -48747,6 +49122,53 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"cqA" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access_txt = "10;13" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cqB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"cqC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cqD" = ( +/obj/structure/sign/warning/radiation, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"cqE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/engineering/glass/critical{ + heat_proof = 1; + name = "Supermatter Chamber"; + req_access_txt = "10" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/engine, +/area/engine/supermatter) +"cqF" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/closed/wall/r_wall, +/area/engine/supermatter) "cqG" = ( /obj/structure/rack, /obj/item/storage/box/rubbershot{ @@ -48843,10 +49265,70 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plasteel, /area/engine/engineering) +"cqS" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/closet/emcloset/anchored, +/turf/open/floor/plating, +/area/engine/engineering) +"cqT" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_x = 32 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cqU" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "cqY" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/engine/engineering) +"cqZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/engine/supermatter) +"cra" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Gas to Filter" + }, +/obj/machinery/airalarm/engine{ + dir = 4; + pixel_x = -23 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/engine/supermatter) +"crb" = ( +/obj/machinery/atmospherics/components/binary/pump{ + name = "Gas to Chamber" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/engine/supermatter) +"crc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"crd" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Supermatter Engine Room"; + req_access_txt = "10" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "crh" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -48911,6 +49393,36 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/engine/engineering) +"crs" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 6 + }, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"crt" = ( +/obj/machinery/door/airlock/engineering/glass/critical{ + heat_proof = 1; + name = "Supermatter Chamber"; + req_access_txt = "10" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cru" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"crv" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10 + }, +/turf/closed/wall/r_wall, +/area/engine/supermatter) "crw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 @@ -49001,6 +49513,44 @@ /obj/structure/lattice/catwalk, /turf/open/space, /area/solar/starboard/aft) +"crH" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/turf/open/space, +/area/space/nearstation) +"crI" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"crJ" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/turf/open/space, +/area/space/nearstation) +"crK" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ + dir = 8 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"crL" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"crM" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "crP" = ( /obj/machinery/light, /turf/open/floor/plasteel, @@ -49012,6 +49562,26 @@ }, /turf/open/floor/plating, /area/engine/engineering) +"crT" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/turf/open/space, +/area/space/nearstation) +"crU" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 + }, +/turf/open/space, +/area/space/nearstation) +"crV" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "crW" = ( /obj/machinery/light/small{ dir = 8 @@ -49030,11 +49600,39 @@ /obj/structure/transit_tube, /turf/open/floor/plating, /area/engine/engineering) +"crZ" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"csa" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/engine/engineering) +"csb" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 + }, +/turf/open/space, +/area/space/nearstation) "csc" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /turf/open/space, /area/maintenance/aft) +"csd" = ( +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cse" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "csg" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 @@ -49051,6 +49649,13 @@ }, /turf/open/space, /area/space/nearstation) +"csj" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/engine/engineering) "csk" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating/airless, @@ -49076,6 +49681,10 @@ /obj/structure/transit_tube/crossing/horizontal, /turf/open/space, /area/space/nearstation) +"csp" = ( +/obj/effect/landmark/event_spawn, +/turf/closed/wall, +/area/crew_quarters/fitness) "csq" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 @@ -49098,16 +49707,68 @@ /obj/machinery/meter, /turf/open/floor/plasteel, /area/maintenance/disposal/incinerator) +"css" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/space, +/area/space/nearstation) +"csu" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"csv" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 + }, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"csx" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/space, +/area/space/nearstation) "csy" = ( /obj/structure/disposalpipe/segment, /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"csA" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/engine/supermatter) "csD" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) +"csH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"csI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) "csM" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/simple/yellow/visible, @@ -49123,6 +49784,30 @@ /obj/structure/transit_tube/horizontal, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) +"csP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/green/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"csR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) "csT" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/landmark/xmastree, @@ -50806,14 +51491,6 @@ }, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) -"cwP" = ( -/obj/structure/fireplace, -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 23 - }, -/turf/open/floor/plating, -/area/maintenance/port) "cwT" = ( /obj/machinery/camera{ c_tag = "Arrivals Escape Pod 2"; @@ -50972,6 +51649,13 @@ }, /turf/open/floor/plating, /area/hallway/secondary/exit) +"cyi" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) "cyl" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 @@ -51123,14 +51807,6 @@ }, /turf/open/floor/plating, /area/engine/engineering) -"czi" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 8; - name = "8maintenance loot spawner" - }, -/turf/open/floor/plating, -/area/maintenance/port/aft) "czk" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 @@ -51141,6 +51817,23 @@ }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) +"czD" = ( +/obj/structure/extinguisher_cabinet, +/turf/closed/wall/r_wall, +/area/hallway/primary/central) +"czE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"czF" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "czG" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 @@ -51340,6 +52033,96 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"cAl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"cAm" = ( +/obj/machinery/power/supermatter_crystal/engine, +/turf/open/floor/engine, +/area/engine/supermatter) +"cAo" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cAp" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4; + name = "Cooling Loop to Gas" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cAq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/orange/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cAr" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Gas to Mix" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cAs" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cAt" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cAu" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/emitter/anchored{ + dir = 4; + state = 2 + }, +/turf/open/floor/plating, +/area/engine/engineering) "cAy" = ( /obj/structure/closet/secure_closet/freezer/kitchen/maintenance, /turf/open/floor/plating, @@ -51446,6 +52229,10 @@ }, /turf/open/floor/plating, /area/maintenance/fore/secondary) +"cAP" = ( +/obj/structure/sign/warning/fire, +/turf/closed/wall/r_wall, +/area/engine/supermatter) "cAQ" = ( /obj/structure/chair, /turf/open/floor/plating, @@ -51865,6 +52652,15 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/engine/air, /area/engine/atmos) +"cBR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) "cBS" = ( /obj/structure/cable{ icon_state = "1-2" @@ -52101,6 +52897,79 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"cDe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/closet/radiation, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cDg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDh" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/mechanical, +/obj/item/flashlight, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/item/pipe_dispenser, +/turf/open/floor/engine, +/area/engine/engineering) +"cDi" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/item/clothing/suit/radiation, +/obj/item/clothing/head/radiation, +/obj/item/clothing/glasses/meson, +/obj/item/clothing/glasses/meson, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDj" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) "cDl" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -52115,6 +52984,92 @@ /obj/machinery/vending/engivend, /turf/open/floor/plasteel, /area/engine/engineering) +"cDo" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cDp" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDr" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDs" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDv" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDw" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDx" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Atmos to Loop" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cDz" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "cDB" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -52122,6 +53077,70 @@ /obj/effect/landmark/start/station_engineer, /turf/open/floor/plasteel, /area/engine/engineering) +"cDC" = ( +/obj/item/wrench, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 6 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cDD" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + dir = 4 + }, +/obj/machinery/meter, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cDE" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "External Gas to Loop" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cDF" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "External Gas to Loop" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cDG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"cDH" = ( +/obj/structure/rack, +/obj/item/clothing/mask/gas{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas{ + pixel_x = -3; + pixel_y = -3 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"cDI" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "cDJ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/orange/visible{ @@ -52162,6 +53181,831 @@ /obj/structure/closet/radiation, /turf/open/floor/plasteel, /area/engine/engineering) +"cEa" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cEd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Engineering Supermatter Port"; + dir = 4; + network = list("ss13","engine") + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cEe" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"cEf" = ( +/obj/machinery/status_display/ai, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"cEg" = ( +/obj/machinery/status_display, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"cEh" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"cEi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Engineering Supermatter Starboard"; + dir = 8; + network = list("ss13","engine") + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cEk" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cEl" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"cEr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cEs" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8; + name = "Gas to Cooling Loop" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cEt" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/engine/supermatter) +"cEu" = ( +/obj/machinery/camera{ + c_tag = "Supermatter Chamber"; + network = list("engine"); + pixel_x = 23 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cEv" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/structure/window/plasma/reinforced{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cEw" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cEx" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cEy" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 4 + }, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/structure/window/plasma/reinforced{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cEz" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cEA" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/engine/supermatter) +"cEB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cEC" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Mix to Gas" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cED" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cEE" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 + }, +/turf/open/space, +/area/space/nearstation) +"cEK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"cEL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cEM" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/item/tank/internals/plasma, +/turf/open/floor/plating, +/area/engine/supermatter) +"cET" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/obj/effect/decal/cleanable/oil, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/engine/supermatter) +"cEU" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"cEW" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cFb" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/components/binary/pump{ + name = "Cooling Loop Bypass" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFe" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/structure/window/plasma/reinforced{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cFh" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/structure/window/plasma/reinforced{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/supermatter) +"cFj" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/engine/supermatter) +"cFk" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Mix Bypass" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFm" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"cFn" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/turf/open/space, +/area/space/nearstation) +"cFo" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 + }, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"cFu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/meter, +/turf/open/floor/engine, +/area/engine/engineering) +"cFw" = ( +/obj/structure/sign/warning/electricshock, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"cFy" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFz" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cFA" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cFF" = ( +/obj/machinery/vr_sleeper{ + dir = 8 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/crew_quarters/fitness) +"cFI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFJ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/floor/engine, +/area/engine/engineering) +"cFK" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 6 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Engineering Supermatter Aft"; + network = list("ss13","engine"); + pixel_x = 23 + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cFP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFT" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 9 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cFU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGd" = ( +/obj/structure/closet/crate/bin, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/item/cartridge/atmos, +/turf/open/floor/engine, +/area/engine/engineering) +"cGe" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGf" = ( +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 8; + filter_type = "n2" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGg" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGh" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/engine, +/area/engine/engineering) +"cGi" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/engine, +/area/engine/engineering) +"cGj" = ( +/obj/structure/table, +/obj/item/pipe_dispenser, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGk" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGl" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/item/radio/headset/headset_eng, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"cGs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"cGt" = ( +/obj/structure/closet/wardrobe/engineering_yellow, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGu" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 6 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGv" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGx" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible, +/obj/machinery/meter, +/turf/open/floor/engine, +/area/engine/engineering) +"cGC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/atmospherics/components/binary/valve/digital/on{ + dir = 4; + name = "Output Release" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"cGE" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 10 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cGH" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cGI" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Laser Room"; + req_access_txt = "10" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cGK" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cGL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"cGM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"cGR" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGS" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cGT" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGU" = ( +/obj/structure/reflector/double/anchored{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGV" = ( +/obj/structure/reflector/box/anchored{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGY" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cGZ" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"cHa" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cHb" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cHc" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cHd" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cHe" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cHg" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cHj" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/emitter/anchored{ + dir = 8; + state = 2 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cHn" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"cHo" = ( +/obj/structure/reflector/single/anchored{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cHp" = ( +/obj/structure/reflector/single/anchored{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cHr" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/engine/engineering) "cHD" = ( /obj/structure/cable{ icon_state = "1-2" @@ -52471,27 +54315,33 @@ }, /turf/open/floor/plating, /area/hallway/secondary/entry) -"cJn" = ( -/obj/structure/reagent_dispensers/watertank/high, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ +"cII" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/coin/silver, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"cIW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 1 +/obj/machinery/vending/kink, +/obj/machinery/light{ + dir = 4; + light_color = "#e8eaff" }, -/obj/effect/turf_decal/stripes/box, /turf/open/floor/plasteel, -/area/engine/atmos) -"cMk" = ( -/obj/machinery/vr_sleeper{ +/area/crew_quarters/fitness) +"cJl" = ( +/obj/structure/toilet{ dir = 8 }, -/turf/open/floor/plasteel, -/area/security/prison) +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/dorms) +"cMm" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) "cMC" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -52512,6 +54362,16 @@ }, /turf/open/floor/plasteel/dark, /area/engine/engineering) +"cMD" = ( +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"cMH" = ( +/turf/open/floor/engine, +/area/engine/supermatter) +"cMN" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/supermatter) "cMQ" = ( /obj/structure/cable{ icon_state = "0-2" @@ -52699,6 +54559,10 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"cPO" = ( +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) "cQw" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -52717,47 +54581,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"cRz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/button/door{ - id = "holoprivacy"; - name = "Holodeck Privacy"; - pixel_y = 24 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"cRD" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/structure/dresser, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/machinery/power/apc{ - areastring = "/area/crew_quarters/theatre"; - dir = 8; - name = "Theatre APC"; - pixel_x = -25 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/theatre) -"cSn" = ( -/obj/machinery/light_switch{ - pixel_y = 28 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/circuit, -/area/ai_monitored/nuke_storage) "cSA" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -52776,6 +54599,42 @@ }, /turf/open/floor/plasteel/dark/telecomms, /area/tcommsat/server) +"cSG" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"cSH" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 5 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cSI" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"cSJ" = ( +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"cSK" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 10 + }, +/turf/open/floor/engine, +/area/engine/engineering) "cSL" = ( /obj/machinery/button/door{ id = "atmos"; @@ -53144,60 +55003,10 @@ "cVb" = ( /turf/closed/wall, /area/hallway/secondary/service) -"cVp" = ( -/obj/structure/window/reinforced/tinted{ - dir = 8 - }, -/obj/structure/window/reinforced/tinted{ - dir = 4 - }, -/obj/structure/curtain, -/turf/open/floor/mineral/titanium/blue, -/area/crew_quarters/dorms) -"cVu" = ( -/obj/machinery/camera{ - c_tag = "Locker Room South"; - dir = 8 - }, -/obj/structure/closet/secure_closet/personal, -/turf/open/floor/plasteel, -/area/crew_quarters/locker) "cVK" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel/white, /area/science/circuit) -"cXx" = ( -/obj/machinery/door/airlock/security{ - name = "Labor Shuttle"; - req_access_txt = "2" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/security/processing) -"dbn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall/r_wall, -/area/engine/engine_smes) -"dbM" = ( -/turf/open/floor/plating, -/area/space/nearstation) -"dcG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/closet/wardrobe/pjs, -/obj/item/clothing/under/maid, -/obj/item/clothing/under/maid, -/obj/item/clothing/under/janimaid, -/obj/item/clothing/under/janimaid, -/obj/item/clothing/accessory/maidapron, -/obj/item/clothing/accessory/maidapron, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) "dfh" = ( /obj/machinery/power/apc{ areastring = "/area/science/circuit"; @@ -53212,257 +55021,63 @@ }, /turf/open/floor/plasteel, /area/science/circuit) -"dfI" = ( -/obj/machinery/door/firedoor, -/obj/structure/sign/departments/evac{ - pixel_y = -32 +"dfH" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/power/apc{ + areastring = "/area/security/main"; + dir = 4; + name = "Firing Range APC"; + pixel_x = 24 }, /turf/open/floor/plasteel, -/area/hallway/primary/starboard) +/area/security/prison) "dfL" = ( /obj/structure/reagent_dispensers/keg/gargle, /turf/open/floor/wood, /area/maintenance/bar) -"dgh" = ( -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/tile/green, -/obj/machinery/camera{ - c_tag = "VR Sleepers"; - dir = 1 - }, -/obj/machinery/light/small, -/turf/open/floor/plasteel/white/side{ - dir = 1 - }, -/area/crew_quarters/fitness) "dgz" = ( /turf/closed/wall, /area/crew_quarters/cryopod) -"dhx" = ( -/obj/structure/mirror{ - pixel_y = 32 - }, -/obj/structure/sink{ - dir = 1; - pixel_y = 25 - }, -/obj/machinery/light/small{ +"djq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/mineral/titanium/blue, +/turf/open/floor/plasteel, /area/crew_quarters/dorms) -"dkk" = ( -/obj/machinery/photocopier{ - pixel_x = -5; - pixel_y = -5 +"djB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/turf/open/floor/wood, -/area/library) +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/fore) "dok" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-22" - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay/central) -"doP" = ( -/obj/structure/chair/stool{ - pixel_y = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/crew_quarters/theatre) +/obj/machinery/portable_atmospherics/pump, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "dqu" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) -"dtE" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"dvc" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/cryopod) -"dvO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/closed/wall, -/area/science/circuit) -"dwc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, +"dqD" = ( /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"dxB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating, -/area/security/prison) -"dzi" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/carpet, -/area/crew_quarters/cryopod) -"dzy" = ( -/obj/machinery/door/airlock{ - name = "Shower Room" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/toilet) -"dHb" = ( -/obj/structure/chair/comfy/black{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"dKP" = ( -/turf/closed/wall, -/area/maintenance/bar) -"dKV" = ( -/obj/structure/chair/stool/bar, -/turf/open/floor/wood, -/area/maintenance/bar) -"dMu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) -"dMX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/structure/chair/comfy/brown, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"dMZ" = ( -/obj/structure/sign/poster/official/random{ - pixel_y = 32 - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"dRC" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/hydroponics) -"dSv" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/power/apc{ - areastring = "/area/crew_quarters/abandoned_gambling_den"; - name = "Abandoned Gambling Den APC"; - pixel_y = -24 - }, -/turf/open/floor/plating, -/area/crew_quarters/abandoned_gambling_den) -"dTe" = ( -/obj/structure/chair/comfy/beige{ - dir = 8 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/plasteel/grimy, -/area/hallway/secondary/entry) -"dTJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/obj/structure/chair/comfy/brown{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/heads/captain) -"eaI" = ( -/obj/structure/table/reinforced, -/obj/item/radio/intercom{ - pixel_x = -30 - }, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"edH" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"ego" = ( -/obj/machinery/atmospherics/components/binary/valve, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) -"egQ" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "kitchen"; - name = "kitchen shutters" - }, -/obj/item/reagent_containers/food/snacks/bluecherrycupcake{ - pixel_y = 5 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"egS" = ( -/obj/structure/table/wood/fancy, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4; - pixel_y = 5 - }, -/obj/item/reagent_containers/food/snacks/burger/plain, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"elw" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"epV" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Dorm6"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1; - pixel_y = -25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"eqm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"est" = ( +/obj/machinery/door/airlock/vault, +/obj/effect/mapping_helpers/airlock/locked, +/turf/closed/wall/r_wall, +/area/ai_monitored/nuke_storage) +"dqG" = ( /obj/machinery/light{ dir = 1 }, @@ -53476,13 +55091,277 @@ dir = 1 }, /area/hallway/secondary/entry) +"dsV" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/structure/closet/secure_closet/personal/cabinet{ + desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; + name = "Personal ID-Locked Closet"; + pixel_y = 15 + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms) +"duc" = ( +/obj/machinery/shower{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/dorms) +"dvc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/cryopod) +"dvO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/closed/wall, +/area/science/circuit) +"dyS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"dzi" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/carpet, +/area/crew_quarters/cryopod) +"dBt" = ( +/obj/structure/filingcabinet, +/obj/machinery/light{ + dir = 8; + light_color = "#e8eaff" + }, +/turf/open/floor/plasteel/dark, +/area/hallway/primary/central) +"dCk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/theatre) +"dEZ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/window/westleft{ + base_state = "right"; + dir = 4; + icon_state = "right"; + name = "Shooting Range" + }, +/turf/open/floor/plating, +/area/security/prison) +"dGY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/sign/poster/official/safety_eye_protection, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"dHx" = ( +/obj/structure/light_construct{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"dHP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"dIA" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"dIH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating, +/area/security/prison) +"dKe" = ( +/obj/machinery/atmospherics/components/binary/valve, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"dKg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "holoprivacy"; + name = "Holodeck Shutters" + }, +/turf/open/floor/plating, +/area/crew_quarters/fitness) +"dKP" = ( +/turf/closed/wall, +/area/maintenance/bar) +"dKV" = ( +/obj/structure/chair/stool/bar, +/turf/open/floor/wood, +/area/maintenance/bar) +"dLh" = ( +/obj/structure/table/wood, +/obj/item/instrument/trumpet, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"dMZ" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"dQy" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/security/prison) +"dQz" = ( +/obj/structure/reagent_dispensers/water_cooler, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"dSI" = ( +/obj/machinery/door/airlock{ + desc = "To keep the station within regulations, space IKEA requires one storage cupboard for their Nanotrasen partnership to continue."; + id_tag = "MaintDorm1"; + name = "Furniture Storage" + }, +/turf/open/floor/plasteel/dark, +/area/maintenance/port) +"dSM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/chair/comfy/brown, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"eaD" = ( +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plasteel, +/area/hydroponics) +"eaI" = ( +/obj/structure/table/reinforced, +/obj/item/radio/intercom{ + pixel_x = -30 + }, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"eeD" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + areastring = "/area/engine/gravity_generator"; + dir = 8; + name = "Gravity Generator APC"; + pixel_x = -25; + pixel_y = 1 + }, +/obj/structure/table, +/obj/item/paper/guides/jobs/engi/gravity_gen, +/obj/item/pen/blue, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"efo" = ( +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"ekY" = ( +/obj/structure/filingcabinet, +/obj/machinery/light{ + dir = 4; + light_color = "#e8eaff" + }, +/turf/open/floor/plasteel/dark, +/area/hallway/primary/central) +"epP" = ( +/obj/machinery/door/airlock/engineering{ + name = "Gravity Generator"; + req_access_txt = "11" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engine_smes) +"eqs" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/machinery/requests_console{ + department = "Bar"; + departmentType = 2; + pixel_x = -30; + pixel_y = 45; + receive_ore_updates = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"ese" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "evR" = ( /turf/open/floor/plating, /area/maintenance/bar) -"ewZ" = ( -/obj/structure/chair/sofa/right, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) +"eyC" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) "eyM" = ( /obj/machinery/mineral/ore_redemption{ input_dir = 2; @@ -53491,111 +55370,90 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel, /area/quartermaster/miningdock) +"eAE" = ( +/obj/structure/bookcase{ + name = "Forbidden Knowledge" + }, +/turf/open/floor/carpet, +/area/library) +"eBm" = ( +/obj/structure/chair/sofa/left, +/obj/structure/window{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"eDq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light/small, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"eDv" = ( +/turf/open/floor/carpet, +/area/crew_quarters/theatre) "eHI" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, /turf/open/floor/plasteel, /area/maintenance/disposal/incinerator) -"eLH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"eMQ" = ( -/obj/item/radio/intercom{ - pixel_y = 25 - }, -/obj/machinery/vending/wardrobe/curator_wardrobe, -/turf/open/floor/carpet, -/area/library) -"eND" = ( -/obj/structure/filingcabinet, -/obj/machinery/light{ - dir = 8; - light_color = "#e8eaff" - }, -/turf/open/floor/plasteel/dark, -/area/hallway/primary/central) -"eNK" = ( +"eIe" = ( /obj/structure/table/wood, -/obj/item/instrument/guitar, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"eNW" = ( -/turf/open/floor/plasteel/dark, -/area/crew_quarters/dorms) -"eOv" = ( -/obj/effect/landmark/event_spawn, -/turf/closed/wall, -/area/crew_quarters/fitness) -"eOy" = ( -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ +/obj/machinery/light{ dir = 4 }, +/obj/item/instrument/trombone, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"eJk" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel, +/area/security/brig) +"eJz" = ( +/obj/machinery/door/airlock{ + name = "Theatre Backstage"; + req_access_txt = "46" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"eMb" = ( +/obj/structure/grille, +/turf/closed/wall/r_wall, +/area/space/nearstation) +"eMV" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, /area/security/prison) -"ePO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4; - pixel_y = 5 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"eRk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/locker) -"eRn" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/closed/wall, -/area/quartermaster/warehouse) "eRz" = ( /obj/structure/lattice, /obj/structure/grille, /turf/open/space/basic, /area/space/nearstation) -"eUd" = ( -/obj/structure/cable{ - icon_state = "4-8" +"eTc" = ( +/obj/item/flashlight/lamp/green{ + pixel_x = -3; + pixel_y = 22 }, -/obj/structure/chair/comfy/brown{ - dir = 8 +/obj/structure/dresser{ + desc = "There's plenty of clothes here to change into! It has a surprising amount of variety, too."; + name = "Dresser"; + pixel_y = 7 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/turf/open/floor/plating, +/area/maintenance/port) +"eUR" = ( +/obj/structure/chair/stool{ + pixel_y = 8 }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "eVC" = ( /obj/effect/spawner/structure/window, /obj/machinery/door/firedoor, @@ -53611,45 +55469,93 @@ }, /turf/open/floor/plasteel, /area/quartermaster/miningdock) -"eXm" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"fbm" = ( -/obj/structure/chair/comfy/brown{ - dir = 4 +"eWl" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/structure/cable{ + icon_state = "1-2" }, /turf/open/floor/wood, -/area/crew_quarters/bar) -"fby" = ( -/obj/structure/cable{ - icon_state = "2-4" +/area/crew_quarters/theatre) +"eWv" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/light/small{ + dir = 8 }, -/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/security/prison) +"eWV" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red, /turf/open/floor/plasteel, -/area/engine/gravity_generator) +/area/hallway/primary/fore) +"eYr" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/space/nearstation) +"fcc" = ( +/obj/machinery/vr_sleeper{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 4 + }, +/area/crew_quarters/fitness) +"fcu" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/space, +/area/solar/port/aft) "fcG" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, /turf/closed/wall/r_wall, /area/science/mixing) -"fhP" = ( -/obj/machinery/light{ - dir = 8; - light_color = "#e8eaff" +"fey" = ( +/obj/structure/chair/sofa, +/obj/structure/window{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"ffm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/closed/wall, +/area/quartermaster/warehouse) +"ffU" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"fkx" = ( +/obj/machinery/door/firedoor, +/obj/structure/sign/departments/evac{ + pixel_y = 32 }, /turf/open/floor/plasteel, -/area/engine/gravity_generator) -"fjy" = ( -/obj/structure/lattice, -/turf/closed/wall/r_wall, -/area/crew_quarters/heads/captain) +/area/hallway/primary/starboard) "flc" = ( /obj/structure/table/reinforced, /obj/item/storage/fancy/donut_box, @@ -53668,67 +55574,20 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/service) -"fnJ" = ( -/obj/structure/sign/mining{ - pixel_y = 7 - }, -/turf/closed/wall, -/area/quartermaster/miningdock) -"frE" = ( -/obj/machinery/vr_sleeper{ - dir = 8 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/turf/open/floor/plasteel/white/corner{ - dir = 1 - }, -/area/crew_quarters/fitness) -"fsk" = ( -/obj/structure/lattice/catwalk, -/obj/item/stack/marker_beacon{ - anchored = 1; - icon_state = "markerburgundy-on"; - light_power = 3; - light_range = 3; - name = "Docking Beacon"; - picked_color = "Burgundy" - }, -/turf/open/floor/plating, -/area/space/nearstation) -"ftv" = ( -/obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 4; - name = "4maintenance loot spawner" - }, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) -"fuo" = ( -/obj/item/reagent_containers/glass/bucket, -/turf/open/floor/grass, -/area/security/prison) -"fvk" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) -"fvW" = ( -/obj/structure/chair/comfy/brown{ - dir = 8 - }, +"fpd" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/wood, -/area/crew_quarters/bar) +/turf/closed/wall, +/area/crew_quarters/dorms) +"fsQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"ftK" = ( +/obj/structure/bed, +/turf/open/floor/plating, +/area/maintenance/port) "fvY" = ( /obj/machinery/computer/cryopod{ pixel_y = 26 @@ -53738,28 +55597,54 @@ }, /turf/open/floor/carpet, /area/crew_quarters/cryopod) +"fwD" = ( +/obj/structure/sign/poster/official/ion_rifle, +/turf/closed/wall/r_wall, +/area/ai_monitored/security/armory) "fxa" = ( /obj/structure/chair/wood/normal, /turf/open/floor/wood{ icon_state = "wood-broken4" }, /area/maintenance/bar) -"fyq" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1; - pixel_x = 5 +"fyr" = ( +/obj/machinery/door/window/southright{ + name = "Target Storage" }, -/obj/machinery/light/small, -/turf/open/floor/mineral/titanium/blue, -/area/crew_quarters/toilet) -"fyM" = ( -/obj/structure/closet/wardrobe/cargotech, -/obj/item/radio/headset/headset_cargo, -/turf/open/floor/plasteel, -/area/quartermaster/storage) -"fzd" = ( -/turf/closed/wall, -/area/crew_quarters/abandoned_gambling_den) +/obj/item/target/alien, +/obj/item/target/alien, +/obj/item/target/syndicate, +/turf/open/floor/plating, +/area/security/prison) +"fBj" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4; + name = "Air In" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"fDV" = ( +/obj/machinery/computer/card{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"fEo" = ( +/obj/machinery/recharge_station, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"fFp" = ( +/obj/structure/table/wood/fancy/royalblue, +/obj/item/crowbar/red, +/turf/open/floor/plating, +/area/maintenance/port) "fGf" = ( /obj/machinery/smartfridge/disks{ pixel_y = 2 @@ -53770,42 +55655,30 @@ }, /turf/open/floor/plasteel, /area/hydroponics) -"fGl" = ( -/obj/effect/landmark/event_spawn, -/obj/structure/cable{ - icon_state = "1-2" +"fIK" = ( +/obj/structure/closet{ + name = "Costume Closet" }, -/turf/open/floor/plasteel, -/area/security/brig) -"fGC" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/airlock/vault, -/obj/effect/mapping_helpers/airlock/locked, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/nuke_storage) -"fHK" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"fIn" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/obj/machinery/meter, +/obj/item/clothing/head/russobluecamohat, +/obj/item/clothing/head/russobluecamohat, +/obj/item/clothing/head/russofurhat, +/obj/item/clothing/head/russofurhat, +/obj/item/clothing/head/russofurhat, +/obj/item/clothing/head/russofurhat, +/obj/item/clothing/under/mw2_russian_para, +/obj/item/clothing/under/mw2_russian_para, +/obj/item/clothing/under/mw2_russian_para, +/obj/item/clothing/under/mw2_russian_para, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"fJa" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4; - pixel_y = 5 - }, -/obj/structure/chair/sofa{ - dir = 1 +"fJA" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, /turf/open/floor/plasteel, /area/crew_quarters/fitness) @@ -53814,7 +55687,679 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel, /area/science/circuit) -"fLd" = ( +"fLb" = ( +/obj/structure/table/wood, +/obj/item/instrument/violin, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"fLn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/table, +/obj/item/storage/firstaid/regular{ + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"fLX" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"fOB" = ( +/obj/structure/chair/sofa{ + dir = 1 + }, +/obj/structure/window, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"fPz" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1; + pixel_x = 5 + }, +/obj/machinery/light/small, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/toilet) +"fRa" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/sign/warning/fire{ + desc = "A sign that states the labeled room's number."; + icon_state = "roomnum"; + name = "Room Number 1"; + pixel_x = -30; + pixel_y = -7 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"fSL" = ( +/obj/machinery/door/window/westleft{ + base_state = "right"; + icon_state = "right"; + name = "Unisex Showers" + }, +/turf/open/floor/plasteel/freezer, +/area/security/prison) +"fTg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"fXo" = ( +/obj/structure/sign/poster/contraband/lizard{ + pixel_x = -32 + }, +/obj/structure/sign/poster/contraband/lizard{ + pixel_x = -32 + }, +/obj/structure/sign/poster/contraband/lizard{ + pixel_x = -32 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"fXH" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/theatre) +"fZD" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/landmark/start/mime, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/crew_quarters/theatre) +"gbb" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/soda_cans/starkist{ + pixel_x = 5; + pixel_y = 7 + }, +/obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb{ + pixel_x = -3; + pixel_y = 2 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"gbq" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plating, +/area/construction) +"gbT" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"gfn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"gfD" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/carpet, +/area/crew_quarters/cryopod) +"gjl" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) +"gks" = ( +/turf/open/floor/grass, +/area/security/prison) +"gmc" = ( +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/effect/turf_decal/tile/green, +/obj/machinery/camera{ + c_tag = "VR Sleepers"; + dir = 1 + }, +/obj/machinery/light/small, +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/crew_quarters/fitness) +"gnM" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"gnW" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/turf/open/space, +/area/solar/starboard/aft) +"gqp" = ( +/obj/structure/frame/computer{ + dir = 1 + }, +/turf/open/floor/plating, +/area/space/nearstation) +"gqR" = ( +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"gro" = ( +/obj/machinery/door/airlock/engineering{ + name = "Gravity Generator"; + req_access_txt = "11" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"guh" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchen"; + name = "kitchen shutters" + }, +/obj/item/reagent_containers/food/snacks/cheesynachos{ + pixel_y = 5 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"gvC" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/turf/open/floor/carpet{ + icon_state = "carpetsymbol" + }, +/area/crew_quarters/theatre) +"gwd" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"gxH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"gzA" = ( +/obj/structure/table/wood/fancy, +/obj/machinery/light, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -3; + pixel_y = 20 + }, +/obj/item/reagent_containers/food/condiment/peppermill{ + dir = 1; + pixel_x = 3; + pixel_y = 20 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4; + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"gzJ" = ( +/obj/structure/sign/poster/official/cohiba_robusto_ad, +/turf/closed/wall, +/area/lawoffice) +"gBo" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"gBY" = ( +/obj/machinery/power/apc{ + areastring = "/area/maintenance/starboard/fore"; + dir = 1; + name = "Starboard Bow Maintenance APC"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"gDv" = ( +/obj/structure/table, +/obj/item/clothing/gloves/boxing/yellow, +/obj/item/clothing/gloves/boxing/green, +/obj/item/clothing/gloves/boxing/blue, +/obj/item/clothing/gloves/boxing/blue, +/obj/item/clothing/gloves/boxing, +/obj/item/clothing/gloves/boxing, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"gFY" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"gGD" = ( +/obj/structure/table, +/obj/item/hand_labeler, +/turf/open/floor/plasteel/dark, +/area/hallway/primary/central) +"gGK" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light_switch{ + pixel_y = -25 + }, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) +"gIT" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchen"; + name = "kitchen shutters" + }, +/obj/item/reagent_containers/food/snacks/bluecherrycupcake{ + pixel_y = 5 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) +"gJR" = ( +/obj/structure/table/wood, +/obj/item/instrument/guitar{ + pixel_x = -7 + }, +/obj/item/instrument/eguitar{ + pixel_x = 5 + }, +/obj/item/instrument/violin, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"gLH" = ( +/obj/machinery/door/airlock/external{ + name = "External Access"; + req_access_txt = "13" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"gMl" = ( +/obj/structure/chair/wood/normal{ + dir = 4 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"gOZ" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/crew_quarters/fitness) +"gTx" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Dorm5"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms) +"gUz" = ( +/obj/structure/sign/poster/official/safety_eye_protection, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"gWd" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/construction) +"gXs" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"gYK" = ( +/obj/machinery/light/small, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/dorms) +"gYR" = ( +/obj/item/radio/intercom{ + pixel_y = 25 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"gZG" = ( +/obj/structure/closet/crate/freezer/surplus_limbs, +/obj/item/reagent_containers/glass/beaker/synthflesh, +/turf/open/floor/plasteel/white/side{ + dir = 8 + }, +/area/medical/sleeper) +"hmv" = ( +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"hot" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/window, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"hvD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"hxw" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"hFk" = ( +/obj/structure/piano{ + icon_state = "piano" + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"hIi" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating, +/area/space/nearstation) +"hIJ" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"hKI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/fore) +"hKX" = ( +/obj/machinery/button/door{ + desc = "Alright, GAMER! Want to take your PWRGAME addiction to the MAX? Just smash this button with your chubby chetto encrusted hands an- oh, you broke the switch. Good job, idiot."; + id = "RIPFUN"; + name = "Powerful Gamer Toggle"; + normaldoorcontrol = 1; + pixel_x = -24; + pixel_y = 7; + specialfunctions = 4 + }, +/obj/structure/table_frame/wood, +/turf/open/floor/plating, +/area/maintenance/port) +"hMk" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "brig shutters" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/security/brig) +"hRa" = ( +/obj/structure/table/reinforced, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/cell_charger{ + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"hSS" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/coin/silver, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"hUC" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-06" + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/hallway/secondary/entry) +"hVk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/power/apc{ + areastring = "/area/quartermaster/warehouse"; + dir = 4; + name = "Cargo Warehouse APC"; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"hYH" = ( +/obj/machinery/door/airlock/security{ + name = "Labor Shuttle"; + req_access_txt = "2" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/processing) +"iaq" = ( +/obj/machinery/power/smes{ + charge = 5e+006 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"iiH" = ( +/obj/structure/table/wood/fancy, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/item/reagent_containers/food/drinks/britcup{ + desc = "Kingston's personal cup."; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"iiW" = ( +/turf/open/floor/wood, +/area/maintenance/bar) +"ijc" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"ilO" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"imi" = ( +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms) +"imH" = ( +/obj/structure/falsewall, +/turf/open/floor/plating, +/area/maintenance/bar) +"imK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/light_construct{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"ioS" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Holodeck Door" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/fitness) +"ipA" = ( +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"ipU" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/mirror{ + pixel_x = 25 + }, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/toilet) +"itE" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, +/obj/structure/curtain, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/dorms) +"itG" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"itP" = ( +/obj/structure/chair/comfy/brown{ + color = "#596479"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"ium" = ( +/mob/living/simple_animal/bot/cleanbot{ + name = "C.L.E.A.N." + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"ixv" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/space/nearstation) +"izv" = ( +/obj/machinery/vending/clothing, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"izL" = ( +/obj/machinery/door/firedoor, +/obj/structure/sign/departments/evac{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"iCE" = ( /obj/structure/table/wood, /obj/machinery/requests_console{ department = "Theatre"; @@ -53835,96 +56380,740 @@ dir = 4 }, /area/crew_quarters/theatre) -"fOc" = ( -/obj/structure/bed, -/obj/item/bedsheet/random, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 +"iEc" = ( +/obj/structure/safe, +/obj/item/clothing/head/bearpelt, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, +/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka, +/obj/effect/turf_decal/bot_white/left, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"fPs" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "kitchen"; - name = "kitchen shutters" - }, -/obj/item/reagent_containers/food/snacks/cheesynachos{ - pixel_y = 5 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"fQF" = ( -/obj/structure/sign/warning/fire{ - desc = "A sign that states the labeled room's number."; - dir = 5; - icon_state = "roomnum"; - name = "Room Number 7"; - pixel_y = 24 - }, -/obj/structure/chair/sofa/right, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"fSr" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/bin, /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/light, +/obj/item/gun/ballistic/revolver/nagant, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"iEJ" = ( +/obj/machinery/door/airlock/external{ + name = "Escape Pod One" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"iFt" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/dark, +/area/hallway/primary/central) +"iGV" = ( +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, /turf/open/floor/plasteel, +/area/security/prison) +"iHq" = ( +/obj/machinery/door/airlock{ + name = "Recharging Station" + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"iNn" = ( +/obj/machinery/camera{ + c_tag = "Kitchen Cold Room" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/reagent_dispensers/cooking_oil, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) +"iQA" = ( +/obj/structure/rack, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/effect/decal/cleanable/cobweb, +/obj/item/clothing/under/color/grey, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"iRI" = ( +/obj/structure/chair/comfy/beige{ + dir = 8 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel/grimy, +/area/hallway/secondary/entry) +"iSB" = ( +/obj/machinery/door/window/southleft{ + name = "Target Storage" + }, +/obj/item/target/clown, +/obj/item/target/clown, +/obj/item/target, +/obj/item/target, +/turf/open/floor/plating, +/area/security/prison) +"iTd" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; + name = "Personal ID-Locked Closet"; + pixel_y = 15 + }, +/turf/open/floor/carpet, /area/crew_quarters/dorms) -"fTg" = ( +"iTD" = ( +/obj/structure/table/wood/fancy, +/obj/item/reagent_containers/food/drinks/soda_cans/starkist{ + pixel_x = -3; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"iVU" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/firealarm{ - pixel_y = 24 +/obj/effect/spawner/structure/window, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/crew_quarters/cryopod) +"iWm" = ( +/obj/machinery/camera{ + c_tag = "Bar West"; + dir = 4 + }, +/obj/machinery/computer/arcade/orion_trail, +/obj/structure/sign/poster/official/foam_force_ad{ + pixel_x = -32 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"jav" = ( +/obj/structure/chair/sofa/right, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"jbf" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + areastring = "/area/hallway/secondary/service"; + dir = 1; + name = "Service Hall APC"; + pixel_y = 25 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) +"jcN" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"jde" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4; + pixel_y = 5 + }, +/obj/structure/chair/sofa{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"jgm" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/camera{ + c_tag = "Circuitry Lab"; + dir = 8; + network = list("ss13","rd") + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"jil" = ( +/obj/machinery/vr_sleeper{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/white/side{ + dir = 8 + }, +/area/crew_quarters/fitness) +"jlm" = ( +/obj/machinery/rnd/production/techfab/department/cargo, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"joc" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/dresser, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/power/apc{ + areastring = "/area/crew_quarters/theatre"; + dir = 8; + name = "Theatre APC"; + pixel_x = -25 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/theatre) +"joq" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/carpet{ + icon_state = "carpetsymbol" + }, +/area/crew_quarters/theatre) +"jqv" = ( +/obj/structure/chair/wood/normal{ + dir = 1 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar) +"jrE" = ( +/obj/structure/sign/poster/official/random{ + pixel_x = 32 }, /turf/open/floor/plasteel/white, -/area/medical/medbay/central) -"fVU" = ( +/area/science/circuit) +"jtp" = ( +/obj/structure/sign/poster/contraband/red_rum{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"jtY" = ( +/obj/machinery/door/airlock{ + name = "Unisex Restrooms" + }, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Holodeck Door" - }, /turf/open/floor/plasteel/dark, +/area/crew_quarters/bar) +"juV" = ( +/obj/effect/landmark/blobstart, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"jvm" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/space, +/area/solar/starboard/aft) +"jxp" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"jAD" = ( +/obj/structure/grille, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"jCq" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"jDh" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"jHt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"jJF" = ( +/obj/machinery/door/airlock/maintenance, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/wood, +/area/maintenance/port/aft) +"jKM" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/window{ + dir = 1 + }, +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/locker) +"jMa" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "holoprivacy"; + name = "Holodeck Shutters" + }, +/turf/open/floor/plating, /area/crew_quarters/fitness) -"fZD" = ( -/obj/structure/filingcabinet, -/obj/machinery/light{ - dir = 4; - light_color = "#e8eaff" +"jMY" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/artistic{ + icon_state = "yellow"; + item_state = "toolbox_yellow"; + name = "Cable Toolbox"; + pixel_y = 6 + }, +/obj/item/storage/toolbox/artistic{ + icon_state = "yellow"; + item_state = "toolbox_yellow"; + name = "Cable Toolbox"; + pixel_y = -4 }, /turf/open/floor/plasteel/dark, -/area/hallway/primary/central) -"gbq" = ( +/area/engine/engineering) +"jNS" = ( +/obj/structure/filingcabinet, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"jOF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/maintenance/port) +"jRc" = ( +/obj/structure/table, +/obj/item/storage/pill_bottle/dice{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/reagent_containers/food/snacks/cherrycupcake, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"jRs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"jSk" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/security/prison) +"jSO" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"jTp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"jUc" = ( +/obj/structure/closet/radiation, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"jVl" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 }, /turf/open/floor/plating, -/area/construction) -"gbT" = ( +/area/maintenance/starboard/aft) +"jYg" = ( +/obj/structure/table/wood/fancy, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -3; + pixel_y = 9 + }, +/obj/item/reagent_containers/food/condiment/peppermill{ + dir = 1; + pixel_x = 3; + pixel_y = 9 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"jYD" = ( +/obj/structure/closet{ + name = "Suit Closet" + }, +/obj/item/clothing/under/suit_jacket/white, +/obj/item/clothing/under/suit_jacket/tan, +/obj/item/clothing/under/suit_jacket/red, +/obj/item/clothing/under/suit_jacket/really_black, +/obj/item/clothing/under/suit_jacket/navy, +/obj/item/clothing/under/suit_jacket/green, +/obj/item/clothing/under/suit_jacket/female, +/obj/item/clothing/under/suit_jacket/checkered, +/obj/item/clothing/under/suit_jacket/charcoal, +/obj/item/clothing/under/suit_jacket/burgundy, +/obj/item/clothing/under/suit_jacket, +/obj/item/clothing/under/lawyer/black, +/obj/item/clothing/under/lawyer/blacksuit, +/obj/item/clothing/under/lawyer/blue, +/obj/item/clothing/under/lawyer/bluesuit, +/obj/item/clothing/under/lawyer/female, +/obj/item/clothing/under/lawyer/purpsuit, +/obj/item/clothing/under/lawyer/really_black, +/obj/item/clothing/under/lawyer/red, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"kcg" = ( +/obj/structure/reagent_dispensers/watertank/high, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/box, +/turf/open/floor/plasteel, +/area/engine/atmos) +"kgf" = ( +/obj/machinery/button/door{ + id = "maintdiy"; + name = "Shutters Control Button"; + pixel_x = -6; + pixel_y = 24 + }, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) +"khb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, /obj/structure/table, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/sheet/glass/fifty, +/obj/item/kitchen/rollingpin, +/obj/item/shovel/spade, +/obj/item/reagent_containers/glass/bucket, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) +"khB" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "13" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"kiH" = ( +/obj/machinery/door/airlock{ + name = "Bar Back Room" + }, +/turf/open/space/basic, +/area/crew_quarters/bar) +"kmf" = ( +/obj/machinery/vending/autodrobe/all_access, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"kmw" = ( +/obj/machinery/door/airlock{ + name = "Theatre Backstage"; + req_access_txt = "46" + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"knx" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Central Access" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "bridge blast door" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/dark, +/area/hallway/primary/central) +"knR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/security/prison) +"kob" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"ktc" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/hydroponics) +"kte" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "holoprivacy"; + name = "Holodeck Shutters" + }, +/turf/open/floor/plating, +/area/crew_quarters/fitness) +"kuT" = ( +/obj/effect/landmark/blobstart, +/turf/open/floor/plating, +/area/maintenance/department/electrical) +"kwj" = ( +/obj/machinery/door/airlock{ + name = "Instrument Storage" + }, +/turf/open/floor/plasteel/dark, +/area/maintenance/starboard/fore) +"kwW" = ( +/obj/structure/table/wood, +/obj/item/book/codex_gigas, +/obj/item/clothing/under/suit_jacket/red, +/obj/structure/destructible/cult/tome, +/turf/open/floor/carpet, +/area/library) +"kyA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating, +/area/space/nearstation) +"kyF" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/wood, +/area/maintenance/bar) +"kzT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/science/mixing) +"kBF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/security/prison) +"kCq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads/captain) +"kCK" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "holoprivacy"; + name = "Holodeck Shutters" + }, +/turf/open/floor/plating, +/area/crew_quarters/fitness) +"kDw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"kFf" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "bridge blast door" + }, +/turf/open/floor/plating, +/area/hallway/primary/central) +"kMg" = ( +/turf/open/space/basic, +/area/space/nearstation) +"kMO" = ( +/obj/machinery/shower{ + dir = 4 + }, +/obj/item/soap, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/dorms) +"kMY" = ( +/obj/machinery/door/airlock{ + desc = "Private study room where nerds are probably playing Dungeons and Dragons 13e, or a place for blood cult rituals."; + id_tag = "PrivateStudy"; + name = "Private Study" + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood, +/area/library) +"kOA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/button/door{ + id = "holoprivacy"; + name = "Holodeck Privacy"; + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"kPd" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) +"kQg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + alpha = 255; + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"kQk" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/obj/item/storage/toolbox/electrical, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) -"gdu" = ( +"kQq" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"kSb" = ( +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"kTe" = ( +/obj/structure/shuttle/engine/heater{ + dir = 1 + }, +/turf/closed/wall/mineral/titanium, +/area/space/nearstation) +"lev" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"lfx" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "maintdiy"; + name = "Security Shutters" + }, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) +"liD" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-22" + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"ljN" = ( /obj/structure/toilet{ dir = 4 }, @@ -53948,656 +57137,308 @@ }, /turf/open/floor/mineral/titanium/blue, /area/crew_quarters/toilet/locker) -"gfD" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/carpet, -/area/crew_quarters/cryopod) -"ggg" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable, -/turf/open/space, -/area/solar/starboard/aft) -"ghs" = ( +"lmT" = ( /obj/structure/table/wood/fancy, -/obj/machinery/light, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_x = -3; - pixel_y = 20 - }, -/obj/item/reagent_containers/food/condiment/peppermill{ - dir = 1; - pixel_x = 3; - pixel_y = 20 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ +/obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4; pixel_y = 5 }, +/obj/item/reagent_containers/food/snacks/burger/plain, /turf/open/floor/wood, /area/crew_quarters/bar) -"ghJ" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/sign/warning/fire{ - desc = "A sign that states the labeled room's number."; - icon_state = "roomnum"; - name = "Room Number 1"; - pixel_x = -30; - pixel_y = -7 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"ghY" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) -"gjf" = ( -/obj/machinery/vending/coffee, -/turf/open/floor/wood, -/area/bridge/meeting_room) -"gjl" = ( -/turf/closed/wall, -/area/quartermaster/warehouse) -"gjC" = ( -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"gtL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/closed/wall/r_wall, -/area/engine/gravity_generator) -"gwd" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"gwi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"gBo" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"gCe" = ( -/obj/effect/spawner/lootdrop/keg, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) -"gFD" = ( -/obj/structure/table/wood/fancy/royalblue, -/obj/item/crowbar/red, -/turf/open/floor/plating, -/area/maintenance/port) -"gIO" = ( -/obj/structure/bed, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/plating, -/area/security/prison) -"gJg" = ( -/turf/closed/wall/mineral/titanium, -/area/space/nearstation) -"gKk" = ( -/obj/machinery/vr_sleeper{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/white/side{ - dir = 4 - }, -/area/crew_quarters/fitness) -"gLH" = ( -/obj/machinery/door/airlock/external{ - name = "External Access"; - req_access_txt = "13" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/port/fore) -"gMl" = ( +"lnu" = ( /obj/structure/chair/wood/normal{ dir = 4 }, -/turf/open/floor/wood, +/turf/open/floor/wood{ + icon_state = "wood-broken6" + }, /area/maintenance/bar) -"gOZ" = ( -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" +"lqe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair/sofa, +/obj/item/radio/intercom{ + pixel_y = 25 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"lre" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-18" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"lrF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/hallway/primary/central) +"lrH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"ltC" = ( +/obj/effect/turf_decal/tile/red, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"lwn" = ( +/obj/structure/table, +/obj/item/book/manual/hydroponics_pod_people{ + pixel_x = -4; + pixel_y = 5 + }, +/obj/item/paper/guides/jobs/hydroponics{ + pixel_x = -5; + pixel_y = 3 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"lyB" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Firing Range"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"lzY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/engine/engine_smes) +"lAB" = ( +/obj/structure/sign/nanotrasen, +/turf/closed/wall, +/area/science/circuit) +"lAY" = ( +/obj/structure/closet/lasertag/red, +/obj/item/clothing/under/pj/red, +/obj/item/clothing/under/pj/red, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"lBk" = ( +/obj/structure/chair/sofa/left{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"lCi" = ( +/obj/docking_port/stationary/public_mining_dock{ + dir = 8 }, /turf/open/floor/plating, -/area/crew_quarters/fitness) -"gQn" = ( -/obj/machinery/light/small, -/turf/open/floor/mineral/titanium/blue, -/area/crew_quarters/dorms) -"gSH" = ( -/obj/structure/grille, -/turf/closed/wall/r_wall, +/area/construction/mining/aux_base) +"lDF" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1 + }, +/turf/open/space/basic, /area/space/nearstation) -"gVX" = ( +"lHE" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/poddoor/preopen{ + id = "maint2" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"lJX" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/plating, +/area/security/prison) +"lMg" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"lNn" = ( +/obj/structure/lattice, +/turf/closed/wall/r_wall, +/area/ai_monitored/nuke_storage) +"lNz" = ( +/obj/structure/sign/mining{ + pixel_y = 7 + }, +/turf/closed/wall, +/area/quartermaster/miningdock) +"lQG" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/science/circuit) +"lQR" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"lUd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/theatre) +"lUR" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"maz" = ( +/obj/machinery/door/airlock/command{ + name = "Captain's Office"; + req_access_txt = "20" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/space/basic, +/area/crew_quarters/heads/captain) +"maK" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/space/nearstation) +"mbl" = ( +/obj/structure/chair/sofa/left, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"mcQ" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/closet/wardrobe/black, +/obj/item/clothing/under/skirt/black, +/obj/item/clothing/head/beret/black, +/obj/item/clothing/head/beret/black, +/obj/item/clothing/under/trendy_fit, +/obj/item/clothing/under/trendy_fit, +/obj/item/clothing/under/sundress, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"mdp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"mdQ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"mgT" = ( +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"mjr" = ( +/obj/structure/reagent_dispensers/keg/milk, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"mnP" = ( +/obj/effect/turf_decal/bot, +/obj/structure/sign/poster/official/pda_ad{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"moa" = ( +/obj/structure/chair/comfy/black{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"mpA" = ( +/obj/structure/table/wood, +/obj/item/melee/chainofcommand, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) +"mpI" = ( +/obj/structure/table/wood, +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/bar) +"mqZ" = ( +/obj/structure/reagent_dispensers/keg/aphro/strong, +/obj/item/reagent_containers/glass/beaker, +/turf/open/floor/plating, +/area/maintenance/bar) +"mrR" = ( +/obj/effect/spawner/lootdrop/keg, +/turf/open/floor/wood, +/area/maintenance/bar) +"muq" = ( +/obj/structure/lattice, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, /turf/closed/wall/r_wall, -/area/engine/engine_smes) -"gVY" = ( -/obj/structure/reagent_dispensers/foamtank, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/box, -/turf/open/floor/plasteel, -/area/engine/atmos) -"gWd" = ( +/area/engine/gravity_generator) +"mvB" = ( /obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/construction) -"gXs" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"gZG" = ( -/obj/structure/closet/crate/freezer/surplus_limbs, -/obj/item/reagent_containers/glass/beaker/synthflesh, -/turf/open/floor/plasteel/white/side{ - dir = 8 - }, -/area/medical/sleeper) -"haz" = ( -/obj/machinery/autolathe{ - name = "public autolathe" - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"haX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "holoprivacy"; - name = "Holodeck Shutters" - }, -/turf/open/floor/plating, -/area/crew_quarters/fitness) -"hcd" = ( -/obj/machinery/smartfridge/organ/preloaded, -/turf/closed/wall, -/area/medical/sleeper) -"hdb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 + icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"hdp" = ( -/obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 3; - name = "3maintenance loot spawner" - }, -/obj/structure/light_construct{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) -"hfe" = ( -/obj/structure/sign/poster/contraband/smoke{ - desc = "This poster reminds us all that the Detective is a parasite. Year after year, they must get replacement lungs because of their addiction. "; - pixel_y = -32 - }, -/turf/open/floor/plasteel/grimy, -/area/security/detectives_office) -"hgX" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/light/small, -/obj/structure/extinguisher_cabinet{ - pixel_x = 5; - pixel_y = -32 - }, -/turf/open/floor/plasteel/white/side{ - dir = 1 - }, -/area/crew_quarters/fitness) -"hho" = ( -/obj/structure/lattice/catwalk, -/obj/item/stack/marker_beacon{ - anchored = 1; - icon_state = "markerburgundy-on"; - light_power = 3; - light_range = 3; - name = "Docking Beacon"; - picked_color = "Burgundy" - }, -/turf/open/space/basic, -/area/space/nearstation) -"hik" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/space, -/area/solar/starboard/aft) -"hjw" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall/r_wall, -/area/engine/gravity_generator) -"hkg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/dorms) -"hlY" = ( -/obj/machinery/door/airlock{ - name = "Recharging Station" - }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) -"hoo" = ( -/obj/effect/landmark/carpspawn, -/turf/open/space/basic, -/area/space) -"htr" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hydroponics) -"hvS" = ( -/obj/effect/landmark/stationroom/box/engine, -/turf/open/space/basic, -/area/space) -"hwu" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/grimy, -/area/security/detectives_office) -"hzw" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue, -/obj/structure/window{ - dir = 1 - }, -/obj/structure/window{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/locker) -"hzR" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"hKF" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/storage/tech) -"hMx" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"hRa" = ( -/obj/structure/table/reinforced, -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/cell_charger{ - pixel_y = 5 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"hRz" = ( -/obj/structure/chair/comfy/brown{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/prison) -"hRT" = ( -/obj/effect/landmark/blobstart, -/turf/open/floor/plating, -/area/maintenance/department/electrical) -"hRX" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"hSU" = ( -/obj/structure/chair/sofa/left, -/obj/structure/window{ - dir = 1 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"hVw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"hWn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/closed/wall/r_wall, -/area/engine/gravity_generator) -"hYW" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) -"hZH" = ( -/obj/machinery/hydroponics/constructable, -/obj/item/radio/intercom{ - name = "Station Intercom (General)"; - pixel_x = 29 - }, -/turf/open/floor/plasteel/dark, -/area/hydroponics) -"idX" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"iep" = ( -/obj/structure/mirror{ - pixel_y = 32 - }, -/obj/structure/sink{ - dir = 1; - pixel_y = 25 - }, -/obj/structure/toilet{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/crew_quarters/dorms) -"ier" = ( -/obj/machinery/button/door{ - id = "Room Two"; - name = "Door Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 7; - pixel_y = -24; - specialfunctions = 4 - }, -/obj/structure/chair/comfy/brown{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"igT" = ( -/obj/structure/table/wood/poker, -/obj/item/toy/cards/deck{ - pixel_y = 5 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"ihm" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/junction/flip, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"ihC" = ( -/obj/item/chair/wood, -/turf/open/floor/plating, -/area/maintenance/port) -"iiW" = ( -/turf/open/floor/wood, -/area/maintenance/bar) -"ikx" = ( -/turf/open/floor/plating/foam, -/area/space/nearstation) -"ilJ" = ( -/obj/effect/turf_decal/tile/red, -/obj/machinery/light{ - light_color = "#c9d3e8" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"imH" = ( -/obj/structure/falsewall, -/turf/open/floor/plating, -/area/maintenance/bar) -"ioB" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/effect/landmark/start/mime, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/white/side{ - dir = 4 - }, -/area/crew_quarters/theatre) -"ioG" = ( -/obj/machinery/vending/cola/red, -/turf/open/floor/plasteel/dark, -/area/hallway/primary/central) -"ioX" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"ipc" = ( -/obj/machinery/door/airlock/engineering{ - name = "Gravity Generator"; - req_access_txt = "11" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/engine/engine_smes) -"ipA" = ( -/turf/open/floor/plating, -/area/maintenance/department/medical/morgue) -"iqw" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red, -/turf/open/floor/plasteel, -/area/security/brig) -"isy" = ( -/obj/structure/urinal{ - pixel_y = 32 +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 23 }, /turf/open/floor/mineral/titanium/blue, /area/crew_quarters/toilet) -"itG" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"itT" = ( -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"ium" = ( -/mob/living/simple_animal/bot/cleanbot{ - name = "C.L.E.A.N." - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay/central) -"ivF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/obj/machinery/light{ - dir = 8; - light_color = "#e8eaff" - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"iyC" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-06" - }, -/turf/open/floor/plasteel/white/corner{ - dir = 1 - }, -/area/hallway/secondary/entry) -"izv" = ( -/obj/machinery/vending/clothing, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"iEx" = ( -/obj/structure/table/wood, -/obj/machinery/light{ - dir = 4 - }, -/obj/item/instrument/trombone, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"iEI" = ( -/obj/machinery/vending/autodrobe/all_access, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"iEJ" = ( -/obj/machinery/door/airlock/external{ - name = "Escape Pod One" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/turf/open/floor/plating, -/area/hallway/secondary/entry) -"iES" = ( -/obj/structure/fireplace, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"iFL" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"iMG" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-14" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) -"iNn" = ( -/obj/machinery/camera{ - c_tag = "Kitchen Cold Room" - }, +"mwm" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/reagent_dispensers/cooking_oil, -/turf/open/floor/plasteel/showroomfloor, -/area/crew_quarters/kitchen) -"iOt" = ( +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"mBv" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/binary/valve{ + dir = 4; + name = "Output to Waste" + }, +/turf/open/floor/engine, +/area/engine/engineering) +"mDU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port) +"mFJ" = ( /obj/structure/cable{ icon_state = "4-8" }, @@ -54612,206 +57453,19 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) -"iOV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/light_construct{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) -"iRJ" = ( +"mHC" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/power/apc{ - areastring = "/area/quartermaster/storage"; - name = "Cargo Bay APC"; - pixel_x = 1; - pixel_y = -24 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"iVU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/spawner/structure/window, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/crew_quarters/cryopod) -"iWa" = ( -/obj/structure/closet/crate, -/obj/item/book/manual/wiki/telescience, -/obj/item/book/manual/wiki/engineering_guide, -/obj/item/book/manual/wiki/engineering_construction, -/obj/item/book/manual/wiki/atmospherics, -/obj/item/book/manual/wiki/detective, -/obj/item/book/manual/wiki/tcomms, -/obj/item/book/manual/wiki/engineering_singulo_tesla, -/obj/item/book/manual/wiki/experimentor, -/obj/item/book/manual/wiki/research_and_development, -/obj/item/book/manual/wiki/robotics_cyborgs, -/obj/item/book/manual/wiki/security_space_law, -/obj/item/book/manual/wiki/medicine, -/obj/item/book/manual/wiki/medical_cloning, -/obj/item/book/manual/wiki/infections, -/obj/item/book/manual/ripley_build_and_repair, -/obj/item/book/manual/hydroponics_pod_people, -/obj/item/book/manual/wiki/toxins, -/obj/item/book/manual/wiki/grenades, -/obj/item/book{ - desc = "An undeniably handy book."; - icon_state = "bookknock"; - name = "A Simpleton's Guide to Safe-cracking with Stethoscopes" - }, -/turf/open/floor/wood, -/area/library) -"iWk" = ( -/obj/structure/bookcase{ - name = "Forbidden Knowledge" - }, -/turf/open/floor/carpet, -/area/library) -"iYz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/theatre) -"jaa" = ( -/obj/machinery/hydroponics/constructable, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/hydroponics) -"jbf" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/power/apc{ - areastring = "/area/hallway/secondary/service"; - dir = 1; - name = "Service Hall APC"; - pixel_y = 25 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/service) -"jdT" = ( -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"jeR" = ( -/obj/structure/chair/sofa/left, -/turf/open/floor/plasteel, -/area/security/prison) -"jeT" = ( -/obj/machinery/vending/clothing, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"jgm" = ( -/obj/structure/disposalpipe/segment{ dir = 10 }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "holoprivacy"; + name = "Holodeck Shutters" }, -/obj/machinery/camera{ - c_tag = "Circuitry Lab"; - dir = 8; - network = list("ss13","rd") - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"jgv" = ( -/obj/structure/chair/comfy/brown{ - color = "#596479"; - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/prison) -"jhF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light{ - dir = 4; - light_color = "#c1caff" - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"jiR" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/structure/window, -/obj/structure/window{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/plasteel, -/area/crew_quarters/locker) -"jlm" = ( -/obj/machinery/rnd/production/techfab/department/cargo, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"jly" = ( -/obj/structure/chair/stool{ - pixel_y = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/crew_quarters/theatre) -"jmC" = ( -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space/nearstation) -"jnm" = ( -/obj/machinery/power/smes{ - charge = 5e+006 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"job" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/turf/open/floor/plating, +/area/crew_quarters/fitness) +"mHW" = ( +/obj/machinery/vr_sleeper{ dir = 4 }, /obj/effect/turf_decal/tile/red{ @@ -54820,412 +57474,47 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, -/obj/machinery/door/window/westright{ - name = "Red Corner" - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/locker) -"jqv" = ( -/obj/structure/chair/wood/normal{ +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" +/turf/open/floor/plasteel/white/side{ + dir = 4 }, -/area/maintenance/bar) -"jrE" = ( -/obj/structure/sign/poster/official/random{ - pixel_x = 32 +/area/crew_quarters/fitness) +"mJU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 }, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) +"mKU" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 8; + name = "8maintenance loot spawner" + }, +/obj/item/radio/intercom{ + pixel_y = 25 + }, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) +"mMb" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-14" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"mNi" = ( +/obj/machinery/light_switch{ + pixel_x = -20 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/white, /area/science/circuit) -"jsy" = ( -/obj/structure/closet{ - name = "Suit Closet" - }, -/obj/item/clothing/under/suit_jacket/white, -/obj/item/clothing/under/suit_jacket/tan, -/obj/item/clothing/under/suit_jacket/red, -/obj/item/clothing/under/suit_jacket/really_black, -/obj/item/clothing/under/suit_jacket/navy, -/obj/item/clothing/under/suit_jacket/green, -/obj/item/clothing/under/suit_jacket/female, -/obj/item/clothing/under/suit_jacket/checkered, -/obj/item/clothing/under/suit_jacket/charcoal, -/obj/item/clothing/under/suit_jacket/burgundy, -/obj/item/clothing/under/suit_jacket, -/obj/item/clothing/under/lawyer/black, -/obj/item/clothing/under/lawyer/blacksuit, -/obj/item/clothing/under/lawyer/blue, -/obj/item/clothing/under/lawyer/bluesuit, -/obj/item/clothing/under/lawyer/female, -/obj/item/clothing/under/lawyer/purpsuit, -/obj/item/clothing/under/lawyer/really_black, -/obj/item/clothing/under/lawyer/red, -/turf/open/floor/plasteel, -/area/crew_quarters/locker) -"jtk" = ( -/obj/structure/chair/comfy/black{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"jtU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/security/execution/transfer) -"jvN" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"jwi" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/heads/captain) -"jzi" = ( -/obj/structure/grille, -/obj/structure/lattice, -/turf/open/floor/plating, -/area/space/nearstation) -"jzD" = ( -/obj/structure/piano{ - icon_state = "piano" - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"jAD" = ( -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"jBZ" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) -"jCq" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"jDY" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/hallway/primary/central) -"jFy" = ( -/obj/machinery/door/airlock{ - desc = "Private study room where nerds are probably playing Dungeons and Dragons 13e, or a place for blood cult rituals."; - id_tag = "PrivateStudy"; - name = "Private Study" - }, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood, -/area/library) -"jHt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"jHM" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/security/prison) -"jJF" = ( -/obj/machinery/door/airlock/maintenance, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/wood, -/area/maintenance/port/aft) -"jLM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"jMK" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/prison) -"jNo" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating, -/area/space/nearstation) -"jRy" = ( -/obj/machinery/door/airlock{ - name = "Instrument Storage" - }, -/turf/open/floor/plasteel/dark, -/area/maintenance/starboard/fore) -"jSa" = ( -/obj/item/electropack/shockcollar, -/obj/item/assembly/signaler, -/turf/open/floor/plating, -/area/security/prison) -"jSD" = ( -/obj/machinery/door/airlock/security{ - name = "Firing Range"; - req_access_txt = "2" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/security/prison) -"jSO" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"jVl" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"jXg" = ( -/obj/machinery/power/apc{ - areastring = "/area/ai_monitored/nuke_storage"; - dir = 1; - name = "Vault APC"; - pixel_y = 25 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/circuit, -/area/ai_monitored/nuke_storage) -"jYI" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"kay" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/snacks/bluecherrycupcake{ - pixel_y = 5 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"kcj" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"kdm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/security/prison) -"kel" = ( -/obj/effect/landmark/blobstart, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) -"kfE" = ( -/obj/machinery/computer/libraryconsole/bookmanagement, -/obj/structure/table, -/turf/open/floor/plasteel, -/area/security/prison) -"khb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/obj/structure/table, -/obj/item/kitchen/rollingpin, -/obj/item/shovel/spade, -/obj/item/reagent_containers/glass/bucket, -/turf/open/floor/plasteel, -/area/hallway/secondary/service) -"khA" = ( -/obj/structure/table, -/obj/item/instrument/guitar{ - pixel_x = -7 - }, -/obj/item/instrument/eguitar{ - pixel_x = 5 - }, -/obj/item/instrument/violin, -/obj/item/instrument/trombone, -/obj/item/instrument/saxophone, -/obj/item/instrument/piano_synth, -/obj/item/instrument/recorder, -/obj/item/instrument/accordion, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) -"khB" = ( -/obj/machinery/door/airlock/external{ - req_access_txt = "13" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) -"klu" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space) -"knx" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Central Access" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/door/poddoor/preopen{ - id = "bridge blast"; - name = "bridge blast door" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/dark, -/area/hallway/primary/central) -"kob" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"ksn" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/structure/window, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/locker) -"kuY" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/poddoor/preopen{ - id = "maint2" - }, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) -"kvb" = ( -/obj/structure/shuttle/engine/heater{ - dir = 1 - }, -/turf/closed/wall/mineral/titanium, -/area/space/nearstation) -"kvZ" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/nuke_storage) -"kwy" = ( -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/obj/machinery/requests_console{ - department = "Bar"; - departmentType = 2; - pixel_x = -30; - pixel_y = 45; - receive_ore_updates = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) -"kxc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/dark, -/area/hallway/primary/central) -"kyi" = ( +"mOL" = ( /obj/structure/bed, /obj/machinery/button/door{ - id = "Dorm5"; + id = "Dorm6"; name = "Cabin Bolt Control"; normaldoorcontrol = 1; pixel_y = -25; @@ -55235,36 +57524,284 @@ /obj/effect/spawner/lootdrop/bedsheet, /turf/open/floor/wood, /area/crew_quarters/dorms) -"kyF" = ( -/obj/effect/landmark/xeno_spawn, +"mPj" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/sign/departments/restroom{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"mPE" = ( +/obj/machinery/chem_dispenser/drinks, +/obj/structure/table/wood, /turf/open/floor/wood, /area/maintenance/bar) -"kzT" = ( +"mRe" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"mRj" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/hallway/primary/central) +"mTi" = ( +/obj/structure/table/wood/poker, +/obj/item/toy/cards/deck{ + pixel_y = 5 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"mTj" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"ncB" = ( +/obj/machinery/camera{ + c_tag = "Gravity Generator Room"; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"ncI" = ( +/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/structure/table, +/turf/open/floor/plasteel, +/area/security/prison) +"ndo" = ( +/obj/structure/chair/comfy/black{ + dir = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"neq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"neT" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"nfm" = ( +/obj/machinery/vending/autodrobe, +/turf/open/floor/wood, +/area/maintenance/bar) +"nhn" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"niE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall/r_wall, -/area/science/mixing) -"kCk" = ( -/obj/structure/mirror{ - pixel_y = 32 +/turf/closed/wall, +/area/maintenance/port) +"nlN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/structure/sink{ - dir = 1; - pixel_y = 25 +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"nnb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"noK" = ( +/obj/structure/girder, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"npV" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"nqP" = ( +/obj/machinery/vending/cola/red, +/turf/open/floor/plasteel/dark, +/area/hallway/primary/central) +"nuI" = ( +/obj/machinery/vending/coffee, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"nvw" = ( +/obj/machinery/photocopier{ + pixel_x = -5; + pixel_y = -5 + }, +/turf/open/floor/wood, +/area/library) +"nxv" = ( +/obj/machinery/power/apc{ + areastring = "/area/construction"; + name = "Construction Area APC"; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/construction) +"nxN" = ( +/turf/closed/wall/mineral/titanium, +/area/space/nearstation) +"nyF" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/wood, +/area/bridge/meeting_room) +"nzc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"nzh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"nDn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"nGt" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/turf/open/floor/mineral/titanium/blue, -/area/crew_quarters/toilet) -"kCW" = ( -/obj/machinery/portable_atmospherics/scrubber, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"kDD" = ( -/obj/structure/lattice, -/turf/closed/wall/r_wall, -/area/ai_monitored/nuke_storage) -"kHJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 +"nGN" = ( +/obj/structure/piano, +/obj/structure/window/reinforced, +/turf/open/floor/carpet, +/area/crew_quarters/theatre) +"nNY" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"nOD" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/light_construct{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"nRG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"nTu" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/security/prison) +"oaB" = ( +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/dorms) +"oaP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"oaT" = ( +/obj/structure/window, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"oce" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"odx" = ( +/obj/machinery/vending/kink, +/turf/open/floor/plating, +/area/maintenance/bar) +"odR" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ id = "holoprivacy"; @@ -55272,7 +57809,158 @@ }, /turf/open/floor/plating, /area/crew_quarters/fitness) -"kHK" = ( +"ogU" = ( +/obj/machinery/door/airlock/security{ + name = "Firing Range"; + req_access_txt = "2" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"ohe" = ( +/obj/machinery/hydroponics/constructable, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/turf/open/floor/plasteel/dark, +/area/hydroponics) +"olr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"ope" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/storage/tech) +"oqa" = ( +/obj/structure/lattice/catwalk, +/obj/item/stack/marker_beacon{ + anchored = 1; + icon_state = "markerburgundy-on"; + light_power = 3; + light_range = 3; + name = "Docking Beacon"; + picked_color = "Burgundy" + }, +/turf/open/space/basic, +/area/space/nearstation) +"osd" = ( +/obj/structure/sign/poster/contraband/tools, +/turf/closed/wall, +/area/storage/primary) +"ove" = ( +/obj/machinery/door/airlock/command{ + name = "Conference Room"; + req_access_txt = "19" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/space/basic, +/area/bridge/meeting_room) +"ovG" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/structure/sign/poster/official/love_ian{ + pixel_x = 32; + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"oxA" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"oAc" = ( +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"oAV" = ( +/obj/structure/table, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/item/clothing/glasses/sunglasses{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/clothing/glasses/sunglasses{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/clothing/ears/earmuffs{ + pixel_x = -3; + pixel_y = -2 + }, +/obj/item/clothing/ears/earmuffs{ + pixel_x = -3; + pixel_y = -2 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"oBB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating, +/area/space/nearstation) +"oDF" = ( +/obj/machinery/light, +/turf/open/floor/plating, +/area/engine/engineering) +"oFY" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) +"oGS" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4; + light_color = "#d8b1b1" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"oHU" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"oIt" = ( /obj/machinery/button/door{ desc = "Bolts the doors to the Private Study."; id = "PrivateStudy"; @@ -55284,93 +57972,76 @@ }, /turf/open/floor/wood, /area/library) -"kJr" = ( -/obj/effect/turf_decal/stripes/line{ +"oIx" = ( +/obj/machinery/button/door{ + id = "Room Two"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 7; + pixel_y = -24; + specialfunctions = 4 + }, +/obj/structure/chair/comfy/brown{ dir = 8 }, -/turf/open/floor/plating, -/area/security/prison) -"kJY" = ( -/obj/item/flashlight/lamp/green{ - pixel_x = -3; - pixel_y = 22 +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"oJs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 }, -/obj/structure/dresser{ - desc = "There's plenty of clothes here to change into! It has a surprising amount of variety, too."; - name = "Dresser"; - pixel_y = 7 +/turf/closed/wall/r_wall, +/area/engine/engine_smes) +"oKh" = ( +/obj/structure/chair/wood/normal{ + dir = 8 }, -/turf/open/floor/plating, -/area/maintenance/port) -"kKw" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/space, -/area/solar/port/aft) -"kLR" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - desc = "Privacy shutters for the Private Study. Stops people spying in on your game."; - id = "PrivateStudy1"; - name = "Private Study Privacy Shutters" - }, -/obj/effect/spawner/structure/window, /turf/open/floor/wood, -/area/library) -"kOf" = ( -/obj/structure/chair{ - dir = 8 +/area/maintenance/bar) +"oKy" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 }, -/obj/machinery/light/small{ - dir = 4; - light_color = "#d8b1b1" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"kPd" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) +"oLI" = ( /obj/structure/cable{ icon_state = "1-2" }, /turf/open/floor/plasteel, -/area/hallway/secondary/service) -"kQk" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" +/area/engine/gravity_generator) +"oNq" = ( +/obj/structure/mirror{ + pixel_y = 32 }, -/obj/item/storage/toolbox/electrical, +/obj/structure/sink{ + dir = 1; + pixel_y = 25 + }, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/toilet) +"oNN" = ( +/obj/item/electropack/shockcollar, +/obj/item/assembly/signaler, /turf/open/floor/plating, -/area/maintenance/department/medical/morgue) -"kQZ" = ( -/obj/effect/spawner/structure/window/reinforced, +/area/security/prison) +"oSk" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 + dir = 4 }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "holoprivacy"; - name = "Holodeck Shutters" +/obj/structure/cable{ + icon_state = "4-8" }, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/crew_quarters/theatre) +"oSW" = ( +/obj/structure/grille/broken, /turf/open/floor/plating, -/area/crew_quarters/fitness) -"kRk" = ( -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, -/obj/machinery/light{ - dir = 4; - light_color = "#e8eaff" - }, -/obj/structure/chair/sofa/right{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"kSb" = ( -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock) -"kSh" = ( +/area/space/nearstation) +"oTI" = ( /obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 @@ -55387,176 +58058,41 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel, /area/crew_quarters/dorms) -"kSB" = ( -/obj/machinery/atmospherics/components/unary/tank/air{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) -"kTz" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/dark, -/area/bridge/meeting_room) -"kWI" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/structure/window{ +"oUh" = ( +/obj/structure/disposalpipe/trunk{ dir = 1 }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/locker) -"lhg" = ( -/obj/machinery/vending/clothing, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/locker) -"lmi" = ( -/obj/structure/door_assembly/door_assembly_mai, -/obj/item/electronics/airlock, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/crew_quarters/abandoned_gambling_den) -"lnu" = ( -/obj/structure/chair/wood/normal{ - dir = 4 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, -/area/maintenance/bar) -"lwj" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/soda_cans/starkist{ - pixel_x = 5; - pixel_y = 7 - }, -/obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb{ - pixel_x = -3; - pixel_y = 2 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"lwp" = ( -/obj/structure/chair/stool{ - pixel_y = 8 - }, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/crew_quarters/theatre) -"lwY" = ( -/obj/machinery/door/window/westleft{ - base_state = "right"; - icon_state = "right"; - name = "Unisex Showers" - }, -/turf/open/floor/plasteel/freezer, -/area/security/prison) -"lxx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/bar) -"lAB" = ( -/obj/structure/sign/nanotrasen, -/turf/closed/wall, +/obj/machinery/disposal/bin, +/turf/open/floor/plasteel/white, /area/science/circuit) -"lBE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +"oVS" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, /obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/effect/turf_decal/tile/blue, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"lCi" = ( -/obj/docking_port/stationary/public_mining_dock{ - dir = 8 - }, -/turf/open/floor/plating, -/area/construction/mining/aux_base) -"lCB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating, -/area/space/nearstation) -"lCL" = ( -/turf/open/space/basic, -/area/space/nearstation) -"lFl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "holoprivacy"; - name = "Holodeck Shutters" - }, -/turf/open/floor/plating, -/area/crew_quarters/fitness) -"lLt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/space/nearstation) -"lLI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"lMg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"lMx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall, -/area/crew_quarters/dorms) -"lMY" = ( -/obj/structure/flora/ausbushes/fullgrass, -/obj/structure/flora/ausbushes/sparsegrass, -/obj/structure/flora/ausbushes/ppflowers, -/obj/structure/flora/ausbushes/ywflowers, -/obj/structure/flora/ausbushes/brflowers, -/obj/effect/spawner/structure/window, -/turf/open/floor/grass, -/area/crew_quarters/bar) -"lNB" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/structure/window, +/obj/structure/window{ dir = 4 }, -/turf/open/floor/plating, -/area/space/nearstation) -"lQG" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"oWe" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + desc = "Privacy shutters for the Private Study. Stops people spying in on your game."; + id = "PrivateStudy1"; + name = "Private Study Privacy Shutters" + }, /obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/science/circuit) -"lTq" = ( -/obj/structure/table, -/obj/item/folder/blue, -/turf/open/floor/plasteel/dark, -/area/hallway/primary/central) -"lYU" = ( +/turf/open/floor/wood, +/area/library) +"oZl" = ( /obj/effect/turf_decal/tile/red{ dir = 8 }, @@ -55566,28 +58102,111 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/fore) -"lYZ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "2-8" +"pbw" = ( +/obj/structure/chair{ + dir = 4 }, -/obj/structure/disposalpipe/junction, -/obj/effect/turf_decal/tile/neutral{ +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"pdg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/door/window/eastleft{ + name = "Blue Corner" + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ dir = 8 }, -/obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"maC" = ( -/obj/structure/table, -/obj/item/storage/pill_bottle/dice{ - pixel_x = 4; - pixel_y = 4 +/area/crew_quarters/locker) +"pet" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/item/reagent_containers/food/snacks/cherrycupcake, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"mbD" = ( +/turf/open/floor/plasteel, +/area/security/brig) +"pgY" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/junction/flip, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"phP" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/space, +/area/solar/starboard/aft) +"pmf" = ( +/obj/structure/reagent_dispensers/foamtank, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/box, +/turf/open/floor/plasteel, +/area/engine/atmos) +"pmj" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"pnl" = ( +/obj/machinery/light{ + dir = 4; + light_color = "#e8eaff" + }, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) +"pnx" = ( +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/circuit, +/area/ai_monitored/nuke_storage) +"pnS" = ( +/obj/structure/lattice/catwalk, +/obj/item/stack/marker_beacon{ + anchored = 1; + icon_state = "markerburgundy-on"; + light_power = 3; + light_range = 3; + name = "Docking Beacon"; + picked_color = "Burgundy" + }, +/turf/open/floor/plating, +/area/space/nearstation) +"poc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/mixing) +"puG" = ( /obj/structure/closet{ name = "Suit Closet" }, @@ -55611,712 +58230,17 @@ /obj/item/clothing/under/lawyer/really_black, /obj/item/clothing/under/lawyer/red, /turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"mfb" = ( -/obj/structure/toilet{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/crew_quarters/dorms) -"mjr" = ( -/obj/structure/reagent_dispensers/keg/milk, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"mlr" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/light_construct{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) -"moq" = ( -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"mpI" = ( -/obj/structure/table/wood, -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/maintenance/bar) -"mqa" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"mqZ" = ( -/obj/structure/reagent_dispensers/keg/aphro/strong, -/obj/item/reagent_containers/glass/beaker, -/turf/open/floor/plating, -/area/maintenance/bar) -"mrR" = ( -/obj/effect/spawner/lootdrop/keg, -/turf/open/floor/wood, -/area/maintenance/bar) -"mte" = ( -/obj/structure/extinguisher_cabinet, -/turf/closed/wall/r_wall, -/area/hallway/primary/central) -"mwb" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/space/nearstation) -"mwO" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"myt" = ( -/obj/structure/closet/secure_closet/personal/cabinet{ - desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; - name = "Personal ID-Locked Closet"; - pixel_y = 15 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"mCq" = ( -/turf/open/floor/plating, -/area/crew_quarters/abandoned_gambling_den) -"mEN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) -"mHC" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plating, -/area/crew_quarters/abandoned_gambling_den) -"mIS" = ( -/obj/structure/table, -/obj/item/clothing/gloves/boxing/yellow, -/obj/item/clothing/gloves/boxing/green, -/obj/item/clothing/gloves/boxing/blue, -/obj/item/clothing/gloves/boxing/blue, -/obj/item/clothing/gloves/boxing, -/obj/item/clothing/gloves/boxing, -/turf/open/floor/plasteel, /area/crew_quarters/locker) -"mNi" = ( -/obj/machinery/light_switch{ - pixel_x = -20 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"mPE" = ( -/obj/machinery/chem_dispenser/drinks, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/maintenance/bar) -"mQR" = ( -/obj/machinery/camera{ - c_tag = "Gravity Generator Room"; - dir = 8 - }, -/obj/machinery/light{ - dir = 4; - light_color = "#c1caff" - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"mRe" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"mTp" = ( -/obj/structure/chair/sofa/left, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"mXB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"ncj" = ( -/obj/effect/turf_decal/tile/blue, -/obj/structure/sign/poster/contraband/fun_police{ - pixel_x = 32 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"ndC" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"nea" = ( -/obj/machinery/recharge_station, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) -"neb" = ( -/obj/item/radio/intercom{ - pixel_y = 25 - }, -/turf/open/floor/plasteel, +"pAE" = ( +/obj/machinery/vending/cola/space_up, +/turf/open/floor/plasteel/dark, /area/hallway/primary/central) -"nel" = ( -/obj/effect/spawner/structure/window/reinforced, +"pGr" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "holoprivacy"; - name = "Holodeck Shutters" - }, -/turf/open/floor/plating, -/area/crew_quarters/fitness) -"new" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/security/prison) -"neC" = ( -/obj/structure/table/wood, -/obj/item/toy/cards/deck, -/turf/open/floor/plasteel, -/area/security/prison) -"nfm" = ( -/obj/machinery/vending/autodrobe, -/turf/open/floor/wood, -/area/maintenance/bar) -"nie" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Holodeck Door" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/fitness) -"nlt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"nmx" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel/dark, -/area/hallway/primary/central) -"nmS" = ( -/obj/structure/closet/athletic_mixed, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"nrR" = ( -/obj/machinery/door/airlock{ - name = "Unisex Restrooms" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/dark, -/area/hallway/primary/central) -"nsJ" = ( -/obj/machinery/door/airlock{ - desc = "Private study room where nerds are probably playing Dungeons and Dragons 13e, or a place for blood cult rituals."; - id_tag = "PrivateStudy"; - name = "Private Study" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/wood, -/area/library) -"ntf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"nuV" = ( -/obj/structure/chair/stool{ - pixel_y = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"nxv" = ( -/obj/machinery/power/apc{ - areastring = "/area/construction"; - name = "Construction Area APC"; - pixel_y = -24 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/construction) -"nyH" = ( -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, -/turf/open/floor/plating, -/area/crew_quarters/abandoned_gambling_den) -"nGt" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"nGS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue{ - alpha = 255; - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay/central) -"nIE" = ( -/obj/structure/sign/poster/contraband/tools, -/turf/closed/wall, -/area/storage/primary) -"nLf" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/bridge/meeting_room) -"nMx" = ( -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/vault, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/nuke_storage) -"nOS" = ( -/obj/structure/safe, -/obj/item/clothing/head/bearpelt, -/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, -/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, -/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka, -/obj/effect/turf_decal/bot_white/left, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/item/gun/ballistic/revolver/nagant, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/nuke_storage) -"nQr" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall, -/area/maintenance/port) -"nRG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"nTE" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/engine/gravity_generator) -"nWq" = ( -/obj/machinery/door/airlock/engineering{ - name = "Gravity Generator"; - req_access_txt = "11" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"nXa" = ( -/obj/machinery/light{ - dir = 4; - light_color = "#e8eaff" - }, -/turf/open/floor/plating, -/area/crew_quarters/abandoned_gambling_den) -"oce" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/science/mixing) -"odx" = ( -/obj/machinery/vending/kink, -/turf/open/floor/plating, -/area/maintenance/bar) -"oeJ" = ( -/obj/structure/table/wood, -/obj/item/instrument/violin, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"oeQ" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/hallway/primary/central) -"ohX" = ( -/obj/structure/table/wood, -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, -/turf/open/floor/wood, -/area/security/vacantoffice) -"olr" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"olv" = ( -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers, -/turf/open/floor/plasteel, -/area/security/brig) -"olw" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 4; - name = "4maintenance loot spawner" - }, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) -"oma" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"orw" = ( -/obj/structure/table, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/recharger, -/obj/item/gun/energy/laser/practice, -/obj/item/gun/energy/laser/practice, -/turf/open/floor/plasteel, -/area/security/prison) -"ory" = ( -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"otF" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 5; - pixel_y = -32 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"ouD" = ( -/obj/structure/reagent_dispensers/keg/semen, -/turf/open/floor/plating, -/area/maintenance/bar) -"oBp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plating, -/area/maintenance/port) -"oDy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-04" - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay/central) -"oFk" = ( -/obj/structure/closet/boxinggloves, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"oHU" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"oKh" = ( -/obj/structure/chair/wood/normal{ - dir = 8 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"oMY" = ( -/obj/machinery/button/door{ - desc = "Alright, GAMER! Want to take your PWRGAME addiction to the MAX? Just smash this button with your chubby chetto encrusted hands an- oh, you broke the switch. Good job, idiot."; - id = "RIPFUN"; - name = "Powerful Gamer Toggle"; - normaldoorcontrol = 1; - pixel_x = -24; - pixel_y = 7; - specialfunctions = 4 - }, -/obj/structure/table_frame/wood, -/turf/open/floor/plating, -/area/maintenance/port) -"oNb" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/item/reagent_containers/food/drinks/soda_cans/starkist{ - pixel_x = -3; - pixel_y = 5 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) -"oNQ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4; - light_color = "#c1caff" - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"oOb" = ( -/obj/structure/sign/poster/official/cohiba_robusto_ad, -/turf/closed/wall, -/area/lawoffice) -"oSO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/chair/sofa, -/obj/item/radio/intercom{ - pixel_y = 25 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"oUh" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"oXL" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/security/prison) -"oYc" = ( -/obj/machinery/light/small{ - dir = 4; - light_color = "#d8b1b1" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"phu" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4; - pixel_y = 5 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"phH" = ( -/turf/open/floor/grass, -/area/security/prison) -"phY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/locker) -"pjh" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light_switch{ - pixel_y = -25 - }, -/turf/open/floor/plating, -/area/crew_quarters/abandoned_gambling_den) -"poa" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"poc" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/science/mixing) -"ppY" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/structure/sign/poster/official/love_ian{ - pixel_x = 32; - pixel_y = -32 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"pqR" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"prP" = ( -/obj/structure/grille, -/turf/open/space/basic, -/area/space/nearstation) -"prU" = ( -/obj/item/radio/intercom{ - dir = 4; - name = "Station Intercom (General)"; - pixel_x = 27 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"ptV" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/heads/captain) -"puG" = ( -/obj/structure/rack, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/effect/decal/cleanable/cobweb, -/obj/item/clothing/under/color/grey, -/turf/open/floor/plating, -/area/maintenance/port/aft) -"pxD" = ( -/obj/structure/chair/sofa, -/obj/structure/window{ - dir = 1 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"pzk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/obj/structure/table, -/obj/item/coin/gold, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"pAl" = ( -/obj/machinery/light/small, -/obj/machinery/atmospherics/components/unary/tank/air{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) -"pFt" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/open/space, -/area/solar/starboard/aft) "pHl" = ( /obj/structure/table, /obj/item/storage/box/beakers{ @@ -56343,12 +58267,16 @@ }, /turf/open/floor/plasteel/white, /area/medical/sleeper) -"pHo" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +"pIA" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 }, -/turf/open/floor/plasteel, -/area/hydroponics) +/turf/open/floor/wood, +/area/crew_quarters/bar) +"pKz" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/closed/wall, +/area/maintenance/port) "pLn" = ( /obj/machinery/conveyor/inverted{ dir = 5; @@ -56356,40 +58284,193 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) -"pLt" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/light{ +"pMv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/power/apc{ - areastring = "/area/security/main"; - dir = 4; - name = "Firing Range APC"; - pixel_x = 24 +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-04" }, -/turf/open/floor/plasteel, -/area/security/prison) -"pNH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/window, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"pNj" = ( /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/starboard/fore) +"pNO" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"pQA" = ( +/obj/machinery/light/small, +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"pRx" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/computer/slot_machine, +/obj/item/coin/iron, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"pUo" = ( +/obj/structure/fireplace, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"pVa" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/wood, -/area/crew_quarters/theatre) -"pNI" = ( -/obj/effect/turf_decal/bot, -/obj/structure/sign/poster/official/pda_ad{ - pixel_y = -32 +/area/crew_quarters/heads/captain) +"pWH" = ( +/obj/structure/closet/crate, +/obj/item/book/manual/wiki/telescience, +/obj/item/book/manual/wiki/engineering_guide, +/obj/item/book/manual/wiki/engineering_construction, +/obj/item/book/manual/wiki/atmospherics, +/obj/item/book/manual/wiki/detective, +/obj/item/book/manual/wiki/tcomms, +/obj/item/book/manual/wiki/engineering_singulo_tesla, +/obj/item/book/manual/wiki/experimentor, +/obj/item/book/manual/wiki/research_and_development, +/obj/item/book/manual/wiki/robotics_cyborgs, +/obj/item/book/manual/wiki/security_space_law, +/obj/item/book/manual/wiki/medicine, +/obj/item/book/manual/wiki/medical_cloning, +/obj/item/book/manual/wiki/infections, +/obj/item/book/manual/ripley_build_and_repair, +/obj/item/book/manual/hydroponics_pod_people, +/obj/item/book/manual/wiki/toxins, +/obj/item/book/manual/wiki/grenades, +/obj/item/book{ + desc = "An undeniably handy book."; + icon_state = "bookknock"; + name = "A Simpleton's Guide to Safe-cracking with Stethoscopes" + }, +/turf/open/floor/wood, +/area/library) +"pWO" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 }, /turf/open/floor/plasteel, -/area/hallway/primary/central) -"pPE" = ( +/area/hallway/primary/starboard) +"qaZ" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"qcu" = ( +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"qdm" = ( +/obj/machinery/autolathe{ + name = "public autolathe" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"qet" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/sparsegrass, +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/flora/ausbushes/brflowers, +/obj/effect/spawner/structure/window, +/turf/open/floor/grass, +/area/crew_quarters/bar) +"qeQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"qeZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/bar) +"qnd" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/obj/structure/light_construct{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"qqY" = ( +/obj/effect/turf_decal/tile/blue{ + alpha = 255 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + alpha = 255; + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"quT" = ( +/obj/structure/lattice, +/obj/structure/grille/broken, +/turf/open/space/basic, +/area/space/nearstation) +"qvo" = ( +/obj/structure/chair/comfy/brown{ + color = "#66b266"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"qwZ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"qxb" = ( +/obj/machinery/vr_sleeper{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"qzE" = ( +/obj/machinery/door/airlock{ + name = "Shower Room" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/toilet) +"qGM" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -56397,128 +58478,109 @@ dir = 4 }, /obj/effect/turf_decal/tile/blue, -/obj/machinery/door/window/eastleft{ - name = "Blue Corner" +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"qIw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/obj/effect/turf_decal/tile/blue{ +/turf/open/floor/carpet, +/area/crew_quarters/cryopod) +"qIT" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4; + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"qIZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/effect/turf_decal/tile/blue{ +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ dir = 8 }, /turf/open/floor/plasteel, /area/crew_quarters/locker) -"pQr" = ( -/obj/structure/table, -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/item/clothing/glasses/sunglasses{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/clothing/glasses/sunglasses{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/clothing/ears/earmuffs{ - pixel_x = -3; - pixel_y = -2 - }, -/obj/item/clothing/ears/earmuffs{ - pixel_x = -3; - pixel_y = -2 - }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = 24 - }, -/turf/open/floor/plasteel, -/area/security/prison) -"pQD" = ( -/obj/structure/sign/poster/official/ion_rifle, -/turf/closed/wall/r_wall, -/area/ai_monitored/security/armory) -"pSf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"pTn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/power/terminal, -/turf/closed/wall/r_wall, -/area/engine/gravity_generator) -"pTR" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/item/radio/intercom{ - pixel_y = 25 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"pUl" = ( +"qKJ" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/door/airlock/command{ - name = "Command Access To Vault" - }, -/turf/open/floor/plasteel/dark, -/area/bridge/meeting_room) -"pZv" = ( -/obj/machinery/shower{ +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/turf/open/floor/mineral/titanium/blue, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, /area/crew_quarters/dorms) -"qbx" = ( -/obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/drinks/soda_cans/starkist{ - pixel_x = -3; - pixel_y = 5 +"qKZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/security/execution/transfer) +"qMf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "holoprivacy"; + name = "Holodeck Shutters" }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/crew_quarters/fitness) -"qeQ" = ( -/obj/effect/turf_decal/stripes/line{ +"qPl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/junction, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel, -/area/science/circuit) -"qje" = ( -/obj/effect/turf_decal/tile/green{ - dir = 1 +/area/crew_quarters/dorms) +"qPJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, -/obj/effect/turf_decal/tile/green{ +/obj/machinery/camera{ + c_tag = "Bar Backroom"; + dir = 2 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, /turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"qkC" = ( -/obj/machinery/power/apc{ - areastring = "/area/maintenance/starboard/fore"; - dir = 1; - name = "Starboard Bow Maintenance APC"; - pixel_y = 24 - }, +/area/engine/gravity_generator) +"qRq" = ( +/obj/structure/table, /obj/structure/cable{ - icon_state = "0-8" + icon_state = "0-2" }, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) -"qlr" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/recharger, +/obj/item/gun/energy/laser/practice, +/obj/item/gun/energy/laser/practice, +/turf/open/floor/plasteel, +/area/security/prison) +"qVa" = ( +/obj/structure/sign/poster/official/help_others{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) +"qXl" = ( /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -56537,322 +58599,157 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/locker) -"qlF" = ( -/obj/structure/lattice, -/turf/closed/wall, +"qYi" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating, /area/security/prison) -"qmM" = ( +"qZv" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, /obj/structure/cable{ icon_state = "4-8" }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"qoP" = ( -/obj/machinery/airalarm{ - pixel_y = 23 +"rak" = ( +/obj/structure/bed, +/obj/item/bedsheet/random, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 }, -/obj/structure/chair/sofa/left, /turf/open/floor/carpet, /area/crew_quarters/dorms) -"qpA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/sign/poster/official/cohiba_robusto_ad{ - pixel_y = -32 - }, -/turf/open/floor/plasteel/grimy, -/area/security/detectives_office) -"qux" = ( -/obj/structure/chair/sofa/left{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"quT" = ( -/obj/structure/lattice, -/obj/structure/grille/broken, -/turf/open/space/basic, -/area/space/nearstation) -"qvM" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/circuit, -/area/ai_monitored/nuke_storage) -"qwe" = ( -/turf/open/floor/plasteel/white/side{ - dir = 4 - }, -/area/crew_quarters/theatre) -"qwB" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/engineering/glass{ - name = "Gravity Generator"; - req_access_txt = "11" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel/dark, -/area/engine/gravity_generator) -"qxc" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/machinery/computer/slot_machine, -/obj/item/coin/iron, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) -"qAQ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/table, -/obj/item/storage/firstaid/regular{ - pixel_y = 5 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"qBc" = ( -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"qBe" = ( -/obj/structure/chair/comfy/black{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/bridge/meeting_room) -"qEv" = ( -/obj/structure/table/wood/fancy, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/reagent_containers/food/drinks/britcup{ - desc = "Kingston's personal cup."; - pixel_x = 5; - pixel_y = 5 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"qHB" = ( -/obj/structure/chair/stool{ - pixel_y = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/crew_quarters/theatre) -"qIf" = ( -/obj/machinery/door/airlock{ - name = "Unisex Restrooms" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/bar) -"qIw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/cryopod) -"qJZ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"qMu" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating, -/area/security/prison) -"qNs" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green{ - on = 0; - pixel_x = -7; - pixel_y = 12 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"qOf" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"qQJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/white/side{ - dir = 4 - }, -/area/crew_quarters/theatre) -"qUm" = ( -/obj/structure/filingcabinet/employment, -/turf/open/floor/wood, -/area/crew_quarters/heads/captain) -"qXH" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "rcD" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/closed/wall/r_wall, /area/science/circuit) -"reZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall/r_wall, -/area/engine/engine_smes) +"rfu" = ( +/obj/item/reagent_containers/glass/bucket, +/turf/open/floor/grass, +/area/security/prison) +"rfE" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/prison) "rfW" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel, /area/maintenance/disposal/incinerator) -"rgF" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, -/obj/item/coin/silver, +"rgv" = ( +/obj/structure/bed, +/obj/effect/spawner/lootdrop/bedsheet, /turf/open/floor/plating, -/area/maintenance/starboard/fore) -"rhb" = ( -/obj/machinery/vending/cola/space_up, -/turf/open/floor/plasteel/dark, -/area/hallway/primary/central) -"riA" = ( +/area/security/prison) +"rkR" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/crew_quarters/theatre) +"rmC" = ( +/obj/structure/fans/tiny/invisible, +/turf/open/space/basic, +/area/space) +"rmX" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/beer, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"rmY" = ( +/obj/machinery/light/small{ + dir = 4; + light_color = "#d8b1b1" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"rnY" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/space/nearstation) +"rrJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating, +/area/space/nearstation) +"ruS" = ( +/obj/structure/closet/athletic_mixed, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"rAJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /obj/effect/turf_decal/tile/red{ dir = 1 }, /obj/effect/turf_decal/tile/red{ dir = 8 }, -/obj/machinery/camera{ - c_tag = "Firing Range"; - dir = 1 +/obj/machinery/door/window/westright{ + name = "Red Corner" }, -/turf/open/floor/plasteel, -/area/security/prison) -"riB" = ( -/obj/machinery/door/firedoor, -/obj/structure/sign/departments/evac{ - pixel_y = 32 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"rmX" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/beer, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"rsv" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/space, -/area/solar/starboard/fore) -"rsX" = ( /obj/effect/turf_decal/tile/red, -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"rtT" = ( -/obj/structure/chair/comfy/brown{ - color = "#66b266"; - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/prison) -"rvZ" = ( -/obj/structure/target_stake, -/obj/item/target/syndicate, -/turf/open/floor/plating, -/area/security/prison) -"rxH" = ( -/obj/structure/girder, -/turf/open/floor/plating, -/area/space/nearstation) -"rzg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/heads/captain) +/turf/open/floor/plasteel, +/area/crew_quarters/locker) "rBq" = ( /obj/item/clothing/head/kitty, /obj/item/clothing/under/maid, /obj/item/clothing/mask/muzzle, /turf/open/floor/plating, /area/maintenance/bar) -"rEV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "holoprivacy"; - name = "Holodeck Shutters" +"rEQ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/turf/open/floor/plating, -/area/crew_quarters/fitness) -"rFc" = ( -/obj/machinery/door/airlock{ - desc = "To keep the station within regulations, space IKEA requires one storage cupboard for their Nanotrasen partnership to continue."; - id_tag = "MaintDorm1"; - name = "Furniture Storage" +/turf/open/floor/plasteel, +/area/hydroponics) +"rJv" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/maintenance/port) -"rKc" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "0-2" +/obj/structure/sign/poster/official/space_cops{ + pixel_x = -32 }, -/turf/open/space, -/area/solar/port/fore) +/turf/open/floor/plasteel, +/area/hallway/primary/fore) "rKP" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, /turf/open/floor/plating, /area/construction) -"rLr" = ( -/obj/structure/window, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"rLR" = ( -/obj/structure/sign/poster/contraband/space_up{ - pixel_x = -32; - pixel_y = 32 +"rKZ" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"rMc" = ( -/obj/structure/table/wood/fancy/black, -/obj/machinery/light/small, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) +/turf/open/floor/plasteel, +/area/security/prison) +"rLg" = ( +/turf/closed/wall/r_wall, +/area/hallway/primary/central) +"rMI" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/space, +/area/solar/port/fore) "rMN" = ( /obj/structure/bed, /obj/item/tank/internals/anesthetic, @@ -56875,38 +58772,29 @@ }, /turf/open/floor/plasteel, /area/science/mixing) -"rOm" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 23 - }, -/turf/open/floor/mineral/titanium/blue, -/area/crew_quarters/toilet) -"rTQ" = ( -/obj/machinery/vr_sleeper{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ +"rTD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/turf/open/floor/plasteel/white/side{ +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ dir = 8 }, -/area/crew_quarters/fitness) -"rUQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"rXv" = ( +/obj/machinery/hydroponics/constructable, +/obj/machinery/light{ + dir = 1 }, -/turf/open/floor/plating, -/area/space/nearstation) +/turf/open/floor/plasteel/dark, +/area/hydroponics) "saK" = ( /obj/structure/closet/crate, /obj/item/target/alien, @@ -56919,60 +58807,43 @@ /obj/item/gun/energy/laser/practice, /turf/open/floor/plasteel/white, /area/science/circuit) -"sdL" = ( +"sbs" = ( +/turf/open/floor/plating, +/area/space/nearstation) +"sfO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/closet/wardrobe/pjs, +/obj/item/clothing/under/maid, +/obj/item/clothing/under/maid, +/obj/item/clothing/under/janimaid, +/obj/item/clothing/under/janimaid, +/obj/item/clothing/accessory/maidapron, +/obj/item/clothing/accessory/maidapron, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"sfY" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/dark, -/area/bridge/meeting_room) -"sfa" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "1-2" + dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/wood, -/area/crew_quarters/theatre) -"sgV" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 4; - name = "Air In" - }, -/obj/effect/turf_decal/stripes/line{ +/area/crew_quarters/bar) +"shX" = ( +/obj/machinery/light{ dir = 8 }, /turf/open/floor/plating, -/area/maintenance/fore/secondary) -"sjm" = ( -/obj/structure/table/wood, -/obj/item/instrument/piano_synth, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"sjw" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ +/area/crew_quarters/abandoned_gambling_den) +"siG" = ( +/obj/machinery/vending/clothing, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/closet/wardrobe/black, -/obj/item/clothing/under/skirt/black, -/obj/item/clothing/head/beret/black, -/obj/item/clothing/head/beret/black, -/obj/item/clothing/under/trendy_fit, -/obj/item/clothing/under/trendy_fit, -/obj/item/clothing/under/sundress, /turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"sjT" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, -/turf/open/floor/plasteel, -/area/security/prison) +/area/crew_quarters/locker) "slk" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -56985,86 +58856,33 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) -"slp" = ( -/obj/effect/turf_decal/tile/blue{ - alpha = 255 - }, -/obj/effect/turf_decal/tile/blue{ +"sno" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/tile/blue{ - alpha = 255; - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay/central) -"smn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 +/obj/structure/sign/poster/official/cohiba_robusto_ad{ + pixel_y = -32 }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"srw" = ( /obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/nuke_storage) -"snG" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/space, -/area/solar/port/aft) -"spX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/heads/captain) -"sqa" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "applebush" + icon_state = "1-4" }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, -/area/hallway/primary/port) -"srq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/dark, -/area/bridge/meeting_room) -"ssL" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/open/space, -/area/solar/starboard/fore) -"suI" = ( -/obj/machinery/door/window/southleft{ - name = "Target Storage" - }, -/obj/item/target/clown, -/obj/item/target/clown, -/obj/item/target, -/obj/item/target, +/area/engine/gravity_generator) +"svt" = ( +/obj/structure/target_stake, +/obj/item/target/syndicate, /turf/open/floor/plating, /area/security/prison) -"svw" = ( -/obj/structure/chair{ - dir = 4 +"sxe" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/turf/open/floor/wood, +/area/crew_quarters/theatre) "sxs" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/table, @@ -57078,52 +58896,61 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/service) -"sxX" = ( -/obj/structure/cable{ - icon_state = "1-2" +"szF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating{ - icon_state = "panelscorched" +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"szH" = ( +/obj/machinery/shower{ + dir = 8 }, -/area/maintenance/starboard/fore) -"sAI" = ( -/obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_x = -3; - pixel_y = 9 - }, -/obj/item/reagent_containers/food/condiment/peppermill{ - dir = 1; - pixel_x = 3; - pixel_y = 9 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) +/turf/open/floor/plasteel/freezer, +/area/security/prison) "sAM" = ( /turf/open/floor/wood{ icon_state = "wood-broken6" }, /area/maintenance/bar) +"sBu" = ( +/obj/machinery/vr_sleeper{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 4 + }, +/area/crew_quarters/fitness) +"sCo" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/space, +/area/solar/starboard/fore) "sEt" = ( /turf/open/floor/wood{ icon_state = "wood-broken7" }, /area/maintenance/bar) -"sIe" = ( -/obj/structure/sign/poster/official/fruit_bowl{ - pixel_y = 32 +"sEJ" = ( +/obj/structure/cable{ + icon_state = "0-8" }, -/turf/open/floor/plasteel/white/corner{ - dir = 1 +/obj/machinery/power/apc{ + areastring = "/area/crew_quarters/abandoned_gambling_den"; + name = "Abandoned Gambling Den APC"; + pixel_y = -24 }, -/area/hallway/primary/starboard) -"sLr" = ( -/obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, -/obj/item/coin/silver, /turf/open/floor/plating, -/area/maintenance/starboard/fore) +/area/crew_quarters/abandoned_gambling_den) "sLv" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance, @@ -57132,17 +58959,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"sMa" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/vending/kink, -/obj/machinery/light{ - dir = 4; - light_color = "#e8eaff" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) "sOs" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -57150,6 +58966,29 @@ /obj/machinery/door/airlock/maintenance/abandoned, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"sOO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"sPj" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/coin/gold, +/obj/item/coin/gold, +/obj/item/coin/gold, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"sPA" = ( +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "sQX" = ( /turf/open/floor/plating, /area/space) @@ -57161,6 +59000,38 @@ /obj/structure/chair/office/light, /turf/open/floor/plasteel/white, /area/science/circuit) +"sTt" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"sVN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"sWr" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) "sWR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -57170,6 +59041,16 @@ }, /turf/open/floor/plasteel, /area/quartermaster/office) +"sXo" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Holodeck Door" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/fitness) "sXy" = ( /obj/machinery/door/airlock/external{ name = "Security External Airlock"; @@ -57184,38 +59065,141 @@ /obj/machinery/vending/boozeomat/all_access, /turf/closed/wall, /area/maintenance/bar) -"sYv" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/closed/wall/r_wall, -/area/engine/gravity_generator) -"sZa" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/camera{ - c_tag = "Bar Backroom"; - dir = 2 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"sZR" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/closed/wall/r_wall, -/area/engine/gravity_generator) "tal" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/hallway/secondary/service) -"tdF" = ( +"taU" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/window, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"tcE" = ( +/obj/structure/door_assembly/door_assembly_mai, +/obj/item/electronics/airlock, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) +"thl" = ( +/obj/machinery/smartfridge/organ/preloaded, +/turf/closed/wall, +/area/medical/sleeper) +"thY" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/fore/secondary) +"tku" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/crew_quarters/theatre) +"tkU" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/bar) +"tpb" = ( +/turf/open/floor/plating/foam, +/area/space/nearstation) +"tqg" = ( +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/open/floor/carpet, +/area/crew_quarters/cryopod) +"trb" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/courtroom) +"trk" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"trl" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4; + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"trM" = ( +/obj/structure/table, +/obj/item/instrument/guitar{ + pixel_x = -7 + }, +/obj/item/instrument/eguitar{ + pixel_x = 5 + }, +/obj/item/instrument/violin, +/obj/item/instrument/trombone, +/obj/item/instrument/saxophone, +/obj/item/instrument/piano_synth, +/obj/item/instrument/recorder, +/obj/item/instrument/accordion, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"tsY" = ( +/obj/structure/urinal{ + pixel_y = 32 + }, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/toilet) +"ttp" = ( +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/structure/sink{ + dir = 1; + pixel_y = 25 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/dorms) +"ttF" = ( +/obj/machinery/vr_sleeper{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/crew_quarters/fitness) +"tur" = ( +/obj/item/restraints/handcuffs/fake, +/turf/open/floor/plating, +/area/maintenance/bar) +"tyg" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -57226,40 +59210,724 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) -"thr" = ( -/obj/structure/frame/computer{ +"tDE" = ( +/obj/structure/grille, +/obj/structure/lattice, +/turf/open/floor/plating, +/area/space/nearstation) +"tEy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"tMl" = ( +/obj/effect/turf_decal/loading_area, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) +"tOq" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/mixing) +"tPS" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/carpet{ + icon_state = "carpetsymbol" + }, +/area/crew_quarters/theatre) +"tPT" = ( +/obj/machinery/chem_dispenser/drinks/beer, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/maintenance/bar) +"tQu" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"tRe" = ( +/obj/machinery/chem_master, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) +"tRF" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"tTh" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"tTt" = ( +/obj/structure/sign/departments/restroom, +/turf/closed/wall, +/area/crew_quarters/toilet) +"tVp" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"tVQ" = ( +/obj/structure/table, +/obj/item/folder/blue, +/turf/open/floor/plasteel/dark, +/area/hallway/primary/central) +"tXL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/maintenance/disposal/incinerator) +"tYn" = ( +/obj/structure/falsewall, +/turf/open/floor/plating, +/area/security/prison) +"uao" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"uaw" = ( +/obj/machinery/power/apc{ + areastring = "/area/storage/art"; + dir = 1; + name = "Maint bar"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"udn" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/obj/machinery/light{ + dir = 4; + light_color = "#e8eaff" + }, +/obj/structure/chair/sofa/right{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"udp" = ( +/obj/item/crowbar/large, +/obj/structure/rack, +/obj/item/flashlight, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"udS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"ueP" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"uhG" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"uhH" = ( +/obj/item/wrench, +/obj/structure/rack, +/obj/item/weldingtool/hugetank, +/obj/item/clothing/head/welding{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/item/clothing/head/welding{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/item/clothing/glasses/welding, +/obj/item/clothing/glasses/welding, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"uip" = ( +/obj/machinery/vending/clothing, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"uiR" = ( +/obj/structure/lattice, +/turf/closed/wall, +/area/security/prison) +"uiT" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 4; + name = "4maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"ujF" = ( +/obj/machinery/cryopod{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/cryopod) +"ukL" = ( +/obj/structure/closet/boxinggloves, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"ulP" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"unN" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/structure/window{ + dir = 1 + }, +/obj/structure/window{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"uoB" = ( +/obj/structure/table/reinforced, +/obj/item/multitool, +/obj/item/screwdriver, +/obj/machinery/camera{ + c_tag = "Circuitry Lab North"; + network = list("ss13","rd") + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"uqO" = ( +/obj/effect/turf_decal/tile/blue, +/obj/structure/sign/poster/contraband/fun_police{ + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"urH" = ( +/obj/machinery/door/airlock{ + name = "Unisex Restrooms" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/dark, +/area/hallway/primary/central) +"usD" = ( +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/crew_quarters/theatre) +"usO" = ( +/obj/machinery/vending/snack/random, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"uuG" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"uuT" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"uvZ" = ( +/obj/structure/mineral_door/wood, +/turf/open/floor/wood, +/area/maintenance/bar) +"uBW" = ( +/turf/closed/wall, +/area/crew_quarters/abandoned_gambling_den) +"uFF" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, /turf/open/floor/plating, /area/space/nearstation) -"tkU" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/maintenance/bar) -"tqg" = ( -/obj/machinery/cryopod{ +"uGq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/engine/engine_smes) +"uJq" = ( +/obj/machinery/vr_sleeper{ dir = 4 }, -/obj/machinery/firealarm{ - pixel_y = 24 +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/crew_quarters/fitness) +"uJI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"uNs" = ( +/obj/item/flashlight/lamp/green{ + pixel_x = -3; + pixel_y = 22 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4; + pixel_y = 5 + }, +/obj/structure/dresser{ + desc = "There's plenty of clothes here to change into! It has a surprising amount of variety, too."; + name = "Dresser"; + pixel_y = 7 }, /turf/open/floor/carpet, -/area/crew_quarters/cryopod) -"tqt" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/chair/comfy/brown{ +/area/crew_quarters/dorms) +"uNu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"uOb" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/item/radio/intercom{ + pixel_y = 25 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"uOn" = ( +/obj/structure/chair/office/light, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -24 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"uPT" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/maintenance/disposal/incinerator) +"uTQ" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 4; + name = "4maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"uUC" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/space, +/area/solar/port/aft) +"uVo" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green{ + on = 0; + pixel_x = -7; + pixel_y = 12 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"uVS" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"uWs" = ( +/obj/effect/turf_decal/tile/red, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"uXD" = ( +/obj/structure/grille, +/turf/open/space/basic, +/area/space/nearstation) +"vbc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"vbD" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command/glass{ + name = "EVA Storage"; + req_access_txt = "18" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/storage/eva) +"vbP" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/light/small, +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = -32 + }, +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/crew_quarters/fitness) +"vfe" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/hallway/primary/central) +"vgX" = ( +/obj/item/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 27 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"vhc" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/washing_machine, +/turf/open/floor/plasteel/freezer, +/area/security/prison) +"viT" = ( +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"vjm" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/rag, +/obj/machinery/light/small{ dir = 1 }, /turf/open/floor/wood, -/area/library) -"trb" = ( -/obj/machinery/light{ +/area/maintenance/bar) +"vnw" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 8; + name = "8maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"voH" = ( +/obj/structure/closet/wardrobe/cargotech, +/obj/item/radio/headset/headset_cargo, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"vpY" = ( +/obj/structure/closet/lasertag/blue, +/obj/item/clothing/under/pj/blue, +/obj/item/clothing/under/pj/blue, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"vqa" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/departments/custodian{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"vsM" = ( +/obj/machinery/power/apc/auto_name/south, +/obj/structure/cable, +/turf/open/floor/carpet, +/area/crew_quarters/cryopod) +"vtO" = ( +/obj/structure/sign/poster/official/twelve_gauge, +/turf/closed/wall/r_wall, +/area/ai_monitored/security/armory) +"vxh" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 8; + name = "8maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"vzp" = ( +/obj/structure/table/reinforced, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -24 + }, +/obj/item/stock_parts/cell/high, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"vzO" = ( +/obj/structure/chair/wood/normal{ + dir = 1 + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"vAP" = ( +/obj/structure/table/wood, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"vAZ" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, /turf/open/floor/plasteel, -/area/security/courtroom) -"tru" = ( +/area/hydroponics) +"vBb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"vBN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"vCb" = ( +/obj/machinery/rnd/production/techfab/department/service, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) +"vCt" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"vEA" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/table/wood, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -3; + pixel_y = 20 + }, +/obj/item/reagent_containers/food/condiment/peppermill{ + dir = 1; + pixel_x = 3; + pixel_y = 20 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/item/reagent_containers/food/drinks/britcup, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"vGp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/power/apc{ + areastring = "/area/quartermaster/storage"; + name = "Cargo Bay APC"; + pixel_x = 1; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/port) +"vHj" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Cryogenics " + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/crew_quarters/cryopod) +"vHY" = ( +/turf/open/floor/plating, +/area/science/mixing) +"vKR" = ( +/obj/machinery/computer/arcade/minesweeper{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"vMd" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"vOw" = ( +/obj/structure/table/wood, +/obj/item/instrument/guitar, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"vPl" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/space/nearstation) +"vPE" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"vQS" = ( +/obj/structure/sign/poster/contraband/smoke{ + desc = "This poster reminds us all that the Detective is a parasite. Year after year, they must get replacement lungs because of their addiction. "; + pixel_y = -32 + }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"vXW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/table, +/obj/item/coin/gold, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"wab" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"wbB" = ( /obj/machinery/airalarm{ dir = 4; pixel_x = -22 @@ -57281,149 +59949,7 @@ /obj/item/megaphone/clown, /turf/open/floor/plasteel, /area/crew_quarters/theatre) -"trY" = ( -/obj/structure/sign/poster/contraband/lizard{ - pixel_x = -32 - }, -/obj/structure/sign/poster/contraband/lizard{ - pixel_x = -32 - }, -/obj/structure/sign/poster/contraband/lizard{ - pixel_x = -32 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) -"tsr" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hydroponics) -"tuj" = ( -/obj/structure/light_construct{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) -"tur" = ( -/obj/item/restraints/handcuffs/fake, -/turf/open/floor/plating, -/area/maintenance/bar) -"tuN" = ( -/obj/structure/chair/sofa, -/obj/structure/window{ - dir = 1 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"tAb" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/command{ - name = "Captain's Vault Access"; - req_access_txt = "20" - }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/heads/captain) -"tAE" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/table/wood, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_x = -3; - pixel_y = 20 - }, -/obj/item/reagent_containers/food/condiment/peppermill{ - dir = 1; - pixel_x = 3; - pixel_y = 20 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/item/reagent_containers/food/drinks/britcup, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"tAV" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"tCi" = ( -/obj/machinery/vr_sleeper{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/turf/open/floor/plasteel/white/corner{ - dir = 4 - }, -/area/crew_quarters/fitness) -"tFt" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hydroponics) -"tGG" = ( -/obj/structure/table/wood, -/obj/item/book/codex_gigas, -/obj/item/clothing/under/suit_jacket/red, -/obj/structure/destructible/cult/tome, -/turf/open/floor/carpet, -/area/library) -"tHx" = ( -/obj/machinery/computer/arcade/minesweeper{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/security/prison) -"tIk" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "maintdiy"; - name = "Security Shutters" - }, -/turf/open/floor/plating, -/area/crew_quarters/abandoned_gambling_den) -"tIC" = ( -/obj/structure/table/wood, -/obj/item/instrument/guitar{ - pixel_x = -7 - }, -/obj/item/instrument/eguitar{ - pixel_x = 5 - }, -/obj/item/instrument/violin, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"tLl" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating, -/area/security/prison) -"tMl" = ( -/obj/effect/turf_decal/loading_area, -/turf/open/floor/plasteel/showroomfloor, -/area/crew_quarters/kitchen) -"tMS" = ( +"wcX" = ( /obj/structure/table, /obj/item/paper_bin{ pixel_y = 6 @@ -57431,698 +59957,26 @@ /obj/item/pen/fountain, /turf/open/floor/plasteel/dark, /area/hallway/primary/central) -"tNJ" = ( -/obj/effect/spawner/structure/window, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/crew_quarters/abandoned_gambling_den) -"tOd" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating, -/area/security/prison) -"tOq" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/science/mixing) -"tOU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/light/small, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"tPT" = ( -/obj/machinery/chem_dispenser/drinks/beer, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/maintenance/bar) -"tQk" = ( -/turf/open/floor/mineral/titanium/blue, -/area/crew_quarters/dorms) -"tRe" = ( -/obj/machinery/chem_master, -/turf/open/floor/plasteel/white, -/area/medical/medbay/central) -"tRF" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"tTW" = ( -/obj/effect/landmark/start/assistant, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"tUm" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plating, -/area/maintenance/port) -"tUw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"tWs" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plating, -/area/crew_quarters/abandoned_gambling_den) -"tWR" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"tXL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/closed/wall/r_wall, -/area/maintenance/disposal/incinerator) -"uaw" = ( -/obj/machinery/power/apc{ - areastring = "/area/storage/art"; - dir = 1; - name = "Maint bar"; - pixel_y = 24 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"udi" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/chair/comfy/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, +"wdQ" = ( +/obj/structure/fireplace, /obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"ued" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -22 - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"uhm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/power/apc{ - areastring = "/area/quartermaster/warehouse"; - dir = 4; - name = "Cargo Warehouse APC"; - pixel_x = 26 - }, -/obj/structure/cable{ - icon_state = "0-2" + dir = 8; + pixel_x = 23 }, /turf/open/floor/plating, /area/maintenance/port) -"ujF" = ( -/obj/machinery/cryopod{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/cryopod) -"uko" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/security/brig) -"ukP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"ukS" = ( -/obj/machinery/shower{ - dir = 4 - }, -/obj/item/soap, -/turf/open/floor/mineral/titanium/blue, -/area/crew_quarters/dorms) -"unl" = ( -/obj/item/flashlight/lamp/green{ - pixel_x = -3; - pixel_y = 22 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4; - pixel_y = 5 - }, -/obj/structure/dresser{ - desc = "There's plenty of clothes here to change into! It has a surprising amount of variety, too."; - name = "Dresser"; - pixel_y = 7 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"unu" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/washing_machine, -/turf/open/floor/plasteel/freezer, -/area/security/prison) -"unE" = ( -/obj/structure/fans/tiny/invisible, -/turf/open/space/basic, -/area/space) -"unY" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/departments/custodian{ - pixel_y = -32 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"uoB" = ( -/obj/structure/table/reinforced, -/obj/item/multitool, -/obj/item/screwdriver, -/obj/machinery/camera{ - c_tag = "Circuitry Lab North"; - network = list("ss13","rd") - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"upX" = ( -/obj/structure/chair/stool{ - pixel_y = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/crew_quarters/theatre) -"usO" = ( -/obj/machinery/vending/snack/random, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"uuG" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plating, -/area/maintenance/port/aft) -"uvZ" = ( -/obj/structure/mineral_door/wood, -/turf/open/floor/wood, -/area/maintenance/bar) -"uya" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/sign/departments/restroom{ - pixel_y = -32 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"uzk" = ( -/obj/structure/sign/departments/restroom, -/turf/closed/wall, -/area/crew_quarters/toilet) -"uDW" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"uNu" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"uPT" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/maintenance/disposal/incinerator) -"uTq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"uVq" = ( -/obj/machinery/light{ - dir = 1; - light_color = "#d1dfff" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"uVt" = ( -/obj/machinery/light/small{ - brightness = 3; - dir = 8 - }, -/turf/open/floor/plating, -/area/security/prison) -"uVS" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"uYE" = ( -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"uZM" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/structure/sign/poster/official/space_cops{ - pixel_x = -32 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"vbD" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command/glass{ - name = "EVA Storage"; - req_access_txt = "18" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ai_monitored/storage/eva) -"vbY" = ( -/obj/machinery/vr_sleeper{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/turf/open/floor/plasteel/white/corner{ - dir = 4 - }, -/area/crew_quarters/fitness) -"vdz" = ( -/obj/machinery/shower{ - dir = 8 - }, -/turf/open/floor/plasteel/freezer, -/area/security/prison) -"vdH" = ( -/obj/structure/bed, -/turf/open/floor/plating, -/area/maintenance/port) -"vgp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/closed/wall/r_wall, -/area/engine/gravity_generator) -"vjm" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/rag, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"vjq" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) -"vpm" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "holoprivacy"; - name = "Holodeck Shutters" - }, -/turf/open/floor/plating, -/area/crew_quarters/fitness) -"vpz" = ( -/obj/structure/sign/poster/official/twelve_gauge, -/turf/closed/wall/r_wall, -/area/ai_monitored/security/armory) -"vpY" = ( -/obj/structure/closet/lasertag/blue, -/obj/item/clothing/under/pj/blue, -/obj/item/clothing/under/pj/blue, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"vrM" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-18" - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"vsM" = ( -/obj/machinery/power/apc/auto_name/south, -/obj/structure/cable, -/turf/open/floor/carpet, -/area/crew_quarters/cryopod) -"vxh" = ( -/obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 8; - name = "8maintenance loot spawner" - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"vys" = ( -/obj/machinery/vr_sleeper{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/white/side{ - dir = 4 - }, -/area/crew_quarters/fitness) -"vzp" = ( -/obj/structure/table/reinforced, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = -24 - }, -/obj/item/stock_parts/cell/high, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"vzO" = ( -/obj/structure/chair/wood/normal{ - dir = 1 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"vzS" = ( -/obj/structure/table, -/obj/item/book/manual/hydroponics_pod_people{ - pixel_x = -4; - pixel_y = 5 - }, -/obj/item/paper/guides/jobs/hydroponics{ - pixel_x = -5; - pixel_y = 3 - }, -/turf/open/floor/plasteel, -/area/hydroponics) -"vCb" = ( -/obj/machinery/rnd/production/techfab/department/service, -/turf/open/floor/plasteel, -/area/hallway/secondary/service) -"vCt" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"vDq" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/space/nearstation) -"vFt" = ( -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"vGX" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/structure/closet/secure_closet/personal/cabinet{ - desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; - name = "Personal ID-Locked Closet"; - pixel_y = 15 - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"vHj" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Cryogenics " - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/crew_quarters/cryopod) -"vHv" = ( -/obj/structure/closet{ - name = "Costume Closet" - }, -/obj/item/clothing/head/russobluecamohat, -/obj/item/clothing/head/russobluecamohat, -/obj/item/clothing/head/russofurhat, -/obj/item/clothing/head/russofurhat, -/obj/item/clothing/head/russofurhat, -/obj/item/clothing/head/russofurhat, -/obj/item/clothing/under/mw2_russian_para, -/obj/item/clothing/under/mw2_russian_para, -/obj/item/clothing/under/mw2_russian_para, -/obj/item/clothing/under/mw2_russian_para, -/obj/item/clothing/shoes/jackboots, -/obj/item/clothing/shoes/jackboots, -/obj/item/clothing/shoes/jackboots, -/obj/item/clothing/shoes/jackboots, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) -"vHM" = ( -/obj/machinery/vr_sleeper{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/plasteel/white/corner{ - dir = 1 - }, -/area/crew_quarters/fitness) -"vHY" = ( -/turf/open/floor/plating, -/area/science/mixing) -"vLD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light, -/obj/machinery/camera/motion{ - c_tag = "Vault"; - dir = 1; - network = list("vault") - }, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/nuke_storage) -"vNh" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"vOq" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, -/obj/item/coin/gold, -/obj/item/coin/gold, -/obj/item/coin/gold, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"vPE" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"vRr" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/door/window/westleft{ - base_state = "right"; - dir = 4; - icon_state = "right"; - name = "Shooting Range" - }, -/turf/open/floor/plating, -/area/security/prison) -"vRX" = ( -/obj/machinery/power/apc{ - areastring = "/area/security/detectives_office"; - dir = 4; - name = "Detective's Office APC"; - pixel_x = 24 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plasteel/grimy, -/area/security/detectives_office) -"vUR" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/security/prison) -"vVP" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/power/apc{ - areastring = "/area/engine/gravity_generator"; - dir = 8; - name = "Gravity Generator APC"; - pixel_x = -25; - pixel_y = 1 - }, -/obj/structure/table, -/obj/item/paper/guides/jobs/engi/gravity_gen, -/obj/item/pen/blue, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/light{ - dir = 8; - light_color = "#e8eaff" - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"vWw" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel, -/area/security/prison) -"vYa" = ( -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"wcy" = ( -/obj/structure/reagent_dispensers/water_cooler, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) "wfR" = ( /obj/item/electropack/shockcollar, /obj/item/assembly/signaler, /turf/open/floor/plating, /area/maintenance/bar) -"wgb" = ( -/obj/structure/falsewall, -/turf/open/floor/plating, -/area/security/prison) +"wgV" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Holodeck Door" + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/fitness) "wkN" = ( /turf/closed/wall, /area/science/circuit) @@ -58132,15 +59986,6 @@ }, /turf/open/floor/carpet, /area/crew_quarters/cryopod) -"woX" = ( -/obj/machinery/door/window/southright{ - name = "Target Storage" - }, -/obj/item/target/alien, -/obj/item/target/alien, -/obj/item/target/syndicate, -/turf/open/floor/plating, -/area/security/prison) "wph" = ( /obj/docking_port/stationary{ area_type = /area/construction/mining/aux_base; @@ -58155,17 +60000,6 @@ }, /turf/open/floor/plating, /area/construction/mining/aux_base) -"wpo" = ( -/obj/machinery/camera{ - c_tag = "Bar West"; - dir = 4 - }, -/obj/machinery/computer/arcade/orion_trail, -/obj/structure/sign/poster/official/foam_force_ad{ - pixel_x = -32 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) "wrp" = ( /obj/machinery/light{ dir = 8 @@ -58175,167 +60009,74 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/service) -"wuB" = ( -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/turf/open/floor/wood, -/area/library) "wvX" = ( /obj/structure/table/reinforced, /obj/machinery/light, /obj/item/stack/sheet/metal/ten, /turf/open/floor/plasteel/white, /area/science/circuit) -"wwn" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) -"wwB" = ( -/turf/closed/wall/r_wall, -/area/hallway/primary/central) -"wwC" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, -/obj/structure/mirror{ - pixel_x = 25 - }, -/turf/open/floor/mineral/titanium/blue, -/area/crew_quarters/toilet) -"wyM" = ( -/obj/machinery/door/airlock{ - name = "Theatre Backstage"; - req_access_txt = "46" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"wAB" = ( -/obj/structure/chair/office/light, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = -24 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) "wBd" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, /turf/closed/wall, /area/hallway/secondary/service) -"wCa" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "holoprivacy"; - name = "Holodeck Shutters" +"wCs" = ( +/obj/machinery/door/airlock{ + name = "Theatre Backstage"; + req_access_txt = "46" }, -/turf/open/floor/plating, -/area/crew_quarters/fitness) -"wDR" = ( -/obj/structure/sign/poster/official/help_others{ - pixel_y = -32 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"wEp" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "bridge blast"; - name = "bridge blast door" - }, -/turf/open/floor/plating, -/area/hallway/primary/central) -"wFk" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/security/prison) -"wFX" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Holodeck Door" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/fitness) -"wGP" = ( /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-2" }, -/obj/structure/cable{ - icon_state = "2-8" +/turf/open/floor/plasteel/white/side{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 +/area/maintenance/fore) +"wDQ" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "applebush" }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel, -/area/crew_quarters/dorms) +/area/hallway/primary/port) "wHz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) -"wJz" = ( -/obj/machinery/light{ - dir = 8 - }, +"wJq" = ( +/obj/effect/landmark/carpspawn, +/turf/open/space/basic, +/area/space) +"wLe" = ( /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) -"wLT" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/closed/wall, -/area/maintenance/port) -"wNM" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 +"wNd" = ( +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"wSg" = ( +/obj/machinery/airalarm{ + pixel_y = 23 }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"wOT" = ( -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/plasteel, -/area/hydroponics) +/obj/structure/chair/sofa/left, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"wTu" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/circuit, +/area/ai_monitored/nuke_storage) +"wTC" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/turf/open/floor/wood, +/area/library) "wUY" = ( /obj/structure/table, /obj/item/stack/packageWrap, @@ -58343,73 +60084,91 @@ /obj/item/hand_labeler, /turf/open/floor/plasteel, /area/hallway/secondary/service) -"wVs" = ( -/obj/structure/table/wood, -/obj/item/instrument/trumpet, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"wXP" = ( -/obj/machinery/button/door{ - id = "maintdiy"; - name = "Shutters Control Button"; - pixel_x = -6; - pixel_y = 24 - }, -/turf/open/floor/plating, -/area/crew_quarters/abandoned_gambling_den) -"wZB" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"xbu" = ( -/obj/structure/chair/comfy/black{ +"wVp" = ( +/obj/machinery/camera{ + c_tag = "Locker Room South"; dir = 8 }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"xcg" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/structure/closet/secure_closet/personal, +/turf/open/floor/plasteel, +/area/crew_quarters/locker) +"wWo" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) +"wWF" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/engineering/glass{ + name = "Gravity Generator"; + req_access_txt = "11" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/dark, +/area/engine/gravity_generator) +"wZk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"wZI" = ( +/obj/effect/spawner/lootdrop/keg, /turf/open/floor/plating, -/area/space/nearstation) -"xdb" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 8; - name = "8maintenance loot spawner" - }, -/obj/item/radio/intercom{ - pixel_y = 25 - }, -/turf/open/floor/plating, -/area/crew_quarters/abandoned_gambling_den) -"xdV" = ( -/obj/machinery/door/airlock{ - name = "Theatre Backstage"; - req_access_txt = "46" +/area/maintenance/starboard/fore) +"xah" = ( +/obj/structure/chair/comfy/brown{ + dir = 1 }, /turf/open/floor/wood, -/area/crew_quarters/theatre) +/area/library) +"xbZ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/security/prison) +"xcw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "xgF" = ( /obj/structure/chair/stool/bar, /turf/open/floor/wood{ icon_state = "wood-broken5" }, /area/maintenance/bar) -"xhx" = ( -/obj/structure/cable{ - icon_state = "1-2" +"xgY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "2-4" +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"xgZ" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/turf/open/floor/wood, -/area/bridge/meeting_room) +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/plasteel, +/area/security/brig) "xhV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -58430,63 +60189,68 @@ }, /turf/open/floor/plating, /area/hallway/secondary/service) -"xkk" = ( -/obj/structure/piano, -/obj/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +"xlX" = ( +/obj/machinery/door/firedoor, +/turf/open/space/basic, +/area/space) +"xqV" = ( +/obj/structure/table/wood, +/obj/item/instrument/piano_synth, /turf/open/floor/wood, /area/crew_quarters/theatre) -"xlN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +"xwI" = ( +/obj/item/radio/intercom{ + pixel_y = 25 + }, +/obj/machinery/vending/wardrobe/curator_wardrobe, +/turf/open/floor/carpet, +/area/library) +"xyp" = ( +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/vault, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/nuke_storage) +"xzw" = ( /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plating, -/area/maintenance/port/aft) -"xpx" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = -32 }, /turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"xqW" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/door/poddoor/preopen{ - id = "Secure Gate"; - name = "brig shutters" - }, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "1-8" - }, +/area/hallway/primary/central) +"xzU" = ( +/obj/structure/reagent_dispensers/keg/semen, /turf/open/floor/plating, -/area/security/brig) -"xzh" = ( -/obj/effect/turf_decal/stripes/line{ +/area/maintenance/bar) +"xCs" = ( +/obj/structure/chair/sofa, +/obj/structure/window{ dir = 1 }, -/turf/open/floor/plating, -/area/space/nearstation) -"xzy" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hydroponics) +/obj/effect/landmark/start/assistant, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"xCE" = ( +/obj/structure/table/wood/fancy/black, +/obj/machinery/light/small, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "xEu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 @@ -58498,46 +60262,81 @@ /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"xIn" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/locker) -"xLZ" = ( -/obj/structure/closet/radiation, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"xMl" = ( -/obj/structure/chair/sofa{ - dir = 1 - }, -/obj/structure/window, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"xNY" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 1 - }, -/turf/open/space/basic, -/area/space/nearstation) -"xWM" = ( -/obj/structure/grille/broken, +"xIU" = ( +/obj/item/chair/wood, /turf/open/floor/plating, -/area/space/nearstation) -"xXY" = ( -/obj/structure/closet/lasertag/red, -/obj/item/clothing/under/pj/red, -/obj/item/clothing/under/pj/red, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"xYO" = ( -/obj/structure/sign/poster/contraband/red_rum{ +/area/maintenance/port) +"xNd" = ( +/obj/machinery/door/airlock{ + desc = "Private study room where nerds are probably playing Dungeons and Dragons 13e, or a place for blood cult rituals."; + id_tag = "PrivateStudy"; + name = "Private Study" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/wood, +/area/library) +"xPX" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"xWW" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/space, +/area/solar/starboard/fore) +"xXW" = ( +/obj/structure/mirror{ pixel_y = 32 }, -/turf/open/floor/plasteel, +/obj/structure/sink{ + dir = 1; + pixel_y = 25 + }, +/obj/structure/toilet{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/dorms) +"xZr" = ( +/obj/structure/sign/poster/official/fruit_bowl{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, /area/hallway/primary/starboard) +"xZN" = ( +/obj/machinery/power/apc{ + areastring = "/area/ai_monitored/nuke_storage"; + dir = 1; + name = "Vault APC"; + pixel_y = 25 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/circuit, +/area/ai_monitored/nuke_storage) +"yar" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "ycu" = ( /obj/structure/cable{ icon_state = "2-4" @@ -58549,18 +60348,47 @@ /obj/machinery/suit_storage_unit/rd, /turf/open/floor/plasteel, /area/science/mixing) -"yiN" = ( -/obj/effect/turf_decal/tile/green{ +"ydZ" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ dir = 1 }, -/obj/effect/turf_decal/tile/green{ - dir = 4 +/obj/effect/turf_decal/stripes/line{ + dir = 10 }, -/obj/effect/turf_decal/tile/green{ - dir = 8 +/obj/item/reagent_containers/food/drinks/soda_cans/starkist{ + pixel_x = -3; + pixel_y = 5 }, /turf/open/floor/plasteel, -/area/hallway/primary/starboard) +/area/crew_quarters/bar) +"yeR" = ( +/obj/structure/sign/poster/contraband/space_up{ + pixel_x = -32; + pixel_y = 32 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"yfs" = ( +/obj/machinery/power/apc{ + areastring = "/area/security/detectives_office"; + dir = 4; + name = "Detective's Office APC"; + pixel_x = 24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"yhO" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/snacks/bluecherrycupcake{ + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) (1,1,1) = {" aaa @@ -64582,11 +66410,11 @@ aaa aaa aaa aaa -fsk +pnS aaa aaa aaa -fsk +pnS aaa aaa aaa @@ -64599,7 +66427,7 @@ aaa aaa aaa aaa -hoo +wJq aaa aaa aaa @@ -64833,9 +66661,9 @@ aaa aaa aaa aaa -fsk +pnS aaa -fsk +pnS aaa aaa aaa @@ -64847,9 +66675,9 @@ gXs aaa aaa aaa -fsk +pnS aaa -fsk +pnS aaa aaa aaa @@ -65096,11 +66924,11 @@ gXs aaa aaa gXs -jmC +viT gXs gXs gXs -jmC +viT gXs aaa aaa @@ -65346,11 +67174,11 @@ aaa aaa aaa aaa -jmC -jmC +viT +viT gXs aag -jmC +viT gXs gXs aaa @@ -65360,11 +67188,11 @@ aaa aaa gXs gXs -jmC -jmC -klu +viT +viT +pNO aag -jmC +viT aaa aaa aaa @@ -65603,11 +67431,11 @@ aaa aaa aaa aaa -xcg -lLt +kyA +maK aaa -lLt -jNo +maK +hIi gXs aoV aaa @@ -65617,11 +67445,11 @@ aaa aaa aaa gXs -xcg -lLt +kyA +maK aaa -lLt -jNo +maK +hIi aaa aaa aaa @@ -65860,11 +67688,11 @@ aaa aaa aaa aaa -xzh +uFF aaa cpe aaa -vDq +eYr aaa aaa aaa @@ -65874,11 +67702,11 @@ aaa aaa aaa aaa -xzh +uFF aaa cwV aaa -vDq +eYr aaa aaa aaa @@ -66116,7 +67944,7 @@ aaa aaa aaa aae -lCL +kMg gXs aaa aaa @@ -66373,7 +68201,7 @@ aaa aaa aaa aaa -lCL +kMg gXs aaa aaa @@ -66630,7 +68458,7 @@ aaa aaa aaa aaa -lCL +kMg gXs aaa aaa @@ -66887,7 +68715,7 @@ aaa aaa aaa aaa -lCL +kMg gXs aaa cqq @@ -67144,7 +68972,7 @@ aaf aaf aaf aaa -lCL +kMg arB asE cyb @@ -67917,7 +69745,7 @@ apN apN apN apJ -iyC +hUC ayk awW aAD @@ -67941,7 +69769,7 @@ aaa aaa aaa arB -est +dqG ayk awW aAD @@ -69217,7 +71045,7 @@ aaa awW aOh ayl -tTW +cPO aRY awW aaa @@ -70513,7 +72341,7 @@ awW arB awZ aym -vrM +lre awW aaf aaa @@ -71794,7 +73622,7 @@ aUO aUy aWm aWf -ohX +vAP czK bhN bcl @@ -72812,7 +74640,7 @@ aHy ayl aKk aLA -dTe +iRI aNf aLA aQD @@ -74838,7 +76666,7 @@ ady ady ady ady -rKc +rMI ajq ajW akB @@ -74882,7 +76710,7 @@ aXQ aXQ aPz aPz -rFc +dSI aPz bhQ bjj @@ -75136,11 +76964,11 @@ aPA aXQ aZt aXQ -gdu +ljN aPz -kJY -ihC -oMY +eTc +xIU +hKX bhQ bjj bkF @@ -75396,10 +77224,10 @@ aXQ bbL aPz bdJ -gFD +fFp bgr -nQr -tUm +niE +mDU bkF aaa aaa @@ -75654,7 +77482,7 @@ aZw aPz bct bfa -vdH +ftK bhQ bjk bkE @@ -75909,10 +77737,10 @@ baO aZo baw aPz -cwP +wdQ cBn bgs -wLT +pKz bjk bkF aaa @@ -76213,7 +78041,7 @@ ccb ccb ccb aaa -snG +fcu aaa ccb ccb @@ -76408,7 +78236,7 @@ bxk aDo aDo aIX -nIE +osd aLE aLE aOp @@ -76422,7 +78250,7 @@ aQN aQN aQN aQN -kWI +jKM bbO aPA bgt @@ -76470,7 +78298,7 @@ aaa aaf aaa aaa -kKw +uUC aaa aaa aaf @@ -76485,7 +78313,7 @@ aaa aaa aaa aaa -hoo +wJq aaa aaa aaa @@ -76674,7 +78502,7 @@ aQN aQN aTz aUp -job +rAJ aXr aZx aQN @@ -76727,7 +78555,7 @@ aaf aaf aaf aaf -kKw +uUC aaf aaf aaf @@ -76936,7 +78764,7 @@ aXv aYS aQN aQN -kWI +jKM bbO aPA aSg @@ -77179,18 +79007,18 @@ aDo aDo aDo aIY -nIE +osd aLE aLE aOl aPA -lhg +siG aQN aTC aUs -phY +qIZ aXt -ksn +taU aQN aQN aPA @@ -77445,9 +79273,9 @@ aQV aQN aTC aUu -eRk +rTD aXt -ksn +taU aQN aQN aZB @@ -77700,11 +79528,11 @@ aOl aPA aQU aQN -hzw -qlr -pPE +unN +qXl +pdg aXw -jiR +oVS aQN aQN aZA @@ -78197,7 +80025,7 @@ alU ali ali atO -axo +axm ayz ayz ayz @@ -78208,14 +80036,14 @@ aBR aBR aBR aBR -aLm +aLJ aLE aOl aPA -xIn +jDh aQN aTD -mIS +gDv aUZ aYU aYU @@ -78456,14 +80284,14 @@ aaf avY axo arP -fLd -cRD +iCE +joc aGD -tru +wbB aCr -qBc -iFL -qBc +eDv +rkR +eDv aKu aLM aLF @@ -78473,14 +80301,14 @@ aPG aPG aPG aPG -jsy +puG aQW aQW aQW aQW -cVu +wVp aPA -oBp +jOF aYb aZE bjp @@ -78713,15 +80541,15 @@ aaa avY axo arP -qwe -ioB +usD +fZD aGr aHI -xdV -ePO -phu -qBc -aKu +kmw +qIT +trl +eDv +aKt aLL bDe aOl @@ -78971,14 +80799,14 @@ avY axo arP aCh -qQJ -iYz +oSk +dCk aHK aCr -tUw -mqa -qBc -aKu +lUd +wab +eDv +aKt aLN aLE aOl @@ -78991,13 +80819,13 @@ aWu aYc aZD aZD -uhm +hVk aZD aZD bff -iRJ +vGp aZE -fyM +voH bjr ama bmh @@ -79056,18 +80884,18 @@ bLv bLv bLv aaa -prP -prP -prP -prP -prP -prP -prP -prP -prP +uXD +uXD +uXD +uXD +uXD +uXD +uXD +uXD +uXD aaa aaa -hoo +wJq aaa aaa aaa @@ -79228,14 +81056,14 @@ avZ axp ayC azH -wyM +eJz aGv aCr aCr -tUw -mqa -qBc -aKu +lUd +wab +eDv +aKv aLN aLE aOl @@ -79245,7 +81073,7 @@ aRa aTF aPG aSX -eRn +ffm aZF aZF aZF @@ -79313,7 +81141,7 @@ cqK crl bLv aaa -prP +uXD ctv ctv ctv @@ -79321,7 +81149,7 @@ ctv ctv ctv ctv -prP +uXD aaa aaa aaa @@ -79482,16 +81310,16 @@ aGh aqR aqR awb -eLH -ayA -fHK -hRX +djB +wCs +eWl +eyC aBV -pNH -sfa -ioX -aHG -aJe +hot +nzc +jRs +aBU +aMr aKw aLP aMR @@ -79570,15 +81398,15 @@ cAQ crm bLv aaa -prP -prP -prP -prP -prP -prP -prP -prP -prP +uXD +uXD +uXD +uXD +uXD +uXD +uXD +uXD +uXD aaa aaa aaa @@ -79742,14 +81570,14 @@ awa axq ayD azI -gwi +dyS aBU -xkk -upX -qJZ -doP -qBc -aKu +nGN +gvC +lUd +tPS +eDv +aKb aLN aMQ aNT @@ -79795,7 +81623,7 @@ aoV bCq bHE bHE -puG +iQA cdb bCq bVE @@ -79837,9 +81665,9 @@ gXs aaa aaa aaa -prP -prP -prP +uXD +uXD +uXD aaa aaa aaa @@ -79996,17 +81824,17 @@ aaa aaa aag avY -jLM -ayD -oeJ +hKI +ayA +fLb aMr -qOf +sxe aDv -lwp -tUw -jly -qBc -aKu +gvC +lUd +tPS +eDv +aKt aLN aMS aOt @@ -80094,9 +81922,9 @@ gXs aaa aaa aaa -prP +uXD ctv -prP +uXD aaa aaa aaa @@ -80253,21 +82081,21 @@ aaa aaa aag avY -jLM -ayD -wVs +hKI +ayA +dLh aMr aMr aOH -lwp -vNh -qHB -qBc -aKu +gvC +tku +joq +eDv +aKt aLN aMS aOi -sqa +wDQ aPK aSl aTH @@ -80322,7 +82150,7 @@ mrR dKP odx rBq -ouD +xzU bCq bUs bLv @@ -80341,19 +82169,19 @@ aaf aaa aaf gXs -sYv +muq crn bij bij bij bij bij -hWn +vbc btG aaa -prP +uXD ctv -prP +uXD aaa aaa aaa @@ -80511,16 +82339,16 @@ aaa aag avY axs -ayD -sjm -eNK -iEx +ayF +xqV +vOw +eIe aOH -qBc -qBc -tAV -qBc -aKu +eDv +eDv +fXH +eDv +aKx aLN aMS aOi @@ -80549,7 +82377,7 @@ bbR btu bbR bOL -fnJ +lNz byF bwW bGm @@ -80591,26 +82419,26 @@ cjJ cjJ cjJ cjJ -gVX -reZ -reZ +oJs +uGq +uGq bij crn bij bij -sZR -ued +ilO +udS bnT bph bsc -fhP bsc -eXm +bsc +mdQ btG gXs -prP +uXD ctv -prP +uXD aaa aaa aaa @@ -80851,12 +82679,12 @@ cov cpj cpS cjJ -xLZ -ivF +jUc +mdQ btG -wAB -vVP -mwO +uOn +eeD +srw bnV bph bih @@ -80865,9 +82693,9 @@ bii bsc btG aaa -prP +uXD ctv -prP +uXD aaa aaa aaa @@ -81043,8 +82871,8 @@ aPK aSn aTK aPK -vRX -hwu +yfs +lev asW baW bLE @@ -81107,14 +82935,14 @@ cnN cox cpl cpU -ipc -edH -edH -nWq -edH -wZB -fby -qwB +epP +oLI +oLI +gro +oLI +oLI +qZv +wWF bph big bgN @@ -81122,9 +82950,9 @@ bkZ bsc btG aaa -prP +uXD ctv -prP +uXD aaa aaa aaa @@ -81261,7 +83089,7 @@ aaa acd acd acd -jHM +eMV acd acd aaa @@ -81305,7 +83133,7 @@ aYi aqW aqW bbQ -qpA +sno apd aZH aZK @@ -81365,12 +83193,12 @@ cow cpk cpT cjJ -xLZ -oNQ +jUc +qwZ btG -sZa -jhF -qmM +qPJ +nlN +lQR bnV bph bii @@ -81379,9 +83207,9 @@ bih bsc btG aaa -prP +uXD ctv -prP +uXD aaa aaa aaa @@ -81516,10 +83344,10 @@ abc abc afu abc -suI -qMu -kJr -dxB +iSB +kBF +knR +eWv acd aaa aaa @@ -81620,25 +83448,25 @@ clG cnP coz cpn -dbn -dbn +lzY +lzY bgO -hjw +sWr bgO -nTE -pTn -jnm +trk +bsb +iaq bnW bph bsc -mQR +ncB bsc -wNM +qwZ btG gXs -prP +uXD ctv -prP +uXD aaa aaa aaa @@ -81773,11 +83601,11 @@ aea aeH aft abc -woX -kdm -rvZ -vUR -jHM +fyr +xbZ +svt +dQy +eMV aaa aaa aiU @@ -81883,19 +83711,19 @@ aaf aaa aaa gXs -gtL +szF bgO bgO bgO bgO bgO bgO -vgp +wZk btG aaa -gSH +eMb ctv -prP +uXD aaa aaa aaa @@ -82019,7 +83847,7 @@ aaa aaa gXs gXs -dbM +sbs abc abu abu @@ -82031,10 +83859,10 @@ aeJ afw abc abc -kdm +xbZ aay -vUR -qlF +dQy +uiR aaf aaf aiU @@ -82102,7 +83930,7 @@ bCq bHD bJe bCq -czi +vnw bHE bHE bHE @@ -82150,7 +83978,7 @@ aaa aaa aaa aaa -prP +uXD ctv aaT aaa @@ -82288,9 +84116,9 @@ aeI afv agf abc -kdm +xbZ aay -vUR +dQy aiT aiT aiV @@ -82323,7 +84151,7 @@ aKA aLN aMS aOz -iMG +mMb aPQ aSa aSr @@ -82333,7 +84161,7 @@ aYZ bLE aqW aqW -hfe +vQS apd beA bqp @@ -82341,7 +84169,7 @@ cNG cNJ bLF aZK -haz +qdm bbR bqt cBq @@ -82407,8 +84235,8 @@ aaa aaa aaa aaa -prP -prP +uXD +uXD aaT aaa aaa @@ -82532,8 +84360,8 @@ aaa aaa aaa aai -jSa -uVt +oNN +lJX abe abw acc @@ -82545,9 +84373,9 @@ aeL afy agh abc -tOd -vRr -tLl +qYi +dEZ +dIH aiT ajs akb @@ -82789,7 +84617,7 @@ aaa aaa gXs aai -gIO +rgv aay abd abv @@ -82802,9 +84630,9 @@ aeK afx agg abc -orw -jMK -riA +qRq +npV +lyB aiU ajr aka @@ -83045,11 +84873,11 @@ aaa aaa aaf aaf -aai +ctv acd -wgb +tYn abg -jtU +qKZ aby aby aby @@ -83059,10 +84887,10 @@ aeN afA afA abc -vWw -wFk -oXL -cXx +nTu +fLX +rfE +hYH aju akd akK @@ -83129,14 +84957,14 @@ bCn bGq bGq bGq -tdF +tyg bLw bGq bGq bGq bLw bGq -tdF +tyg bTD bUx bVI @@ -83151,7 +84979,7 @@ bVI bVI bVI bTA -xlN +sOO bHE bHE bHE @@ -83166,25 +84994,25 @@ cpV cqw cqO crp -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaT +aaT +aaT +aaa aaa aaa aaa aaa -hvS aaa aaa aaa @@ -83305,7 +85133,7 @@ aai aai abf aat -tHx +vKR abx acd acC @@ -83314,12 +85142,12 @@ adF aef aeM afz -jSD +ogU aav -sjT -pLt -pQr -new +ueP +dfH +oAV +jSk ajt akc akJ @@ -83423,20 +85251,20 @@ cgR cgR cqN cro -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +cEl +cEE +cEl +cFm +csx +cFm +cFm +csx +csv +aaa +aaa +aaT +ctv +aaT aaa aaa aaa @@ -83632,7 +85460,7 @@ bqw aJq aJq aYl -ppY +ovG aLX aJq aJq @@ -83680,20 +85508,20 @@ ciN cji cDZ crr -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +crJ +crT +crJ +cFn +css +csx +csx +css +csb +aaf +aaf +aaT +ctv +aaT aaa aaa aaa @@ -83816,7 +85644,7 @@ aai aan aaw aaB -kfE +ncI aaJ aat abh @@ -83937,20 +85765,20 @@ cgR cDB cqP crq -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +crZ +crT +crZ +cFo +css +cFm +cFm +css +csv +aaa +aaa +aaT +ctv +aaT aaa aaa aaa @@ -84071,9 +85899,9 @@ aag aaa aak aap -fuo +rfu aaD -aau +aat aat aat aat @@ -84146,7 +85974,7 @@ bqy cBr bqy buK -pNI +mnP aJw aJq aJq @@ -84178,7 +86006,7 @@ bWB bWB cec bVI -iOt +mFJ ccw chY ciX @@ -84194,20 +86022,20 @@ cgR cqx cgR crp -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +crJ +crT +crJ +cFn +css +csx +csx +css +csb +aaf +aaf +aaT +ctv +aaT aaa aaa aaa @@ -84330,9 +86158,9 @@ aaj aao aax aaC -aaA aat aat +adO aat aei acd @@ -84451,20 +86279,20 @@ cpX cqz cqR ccw -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +crH +crT +crZ +cFo +css +cFm +cFm +css +csv +aaa +aaa +aaT +ctv +aaT aaa aaa aaa @@ -84585,12 +86413,12 @@ aag aaa aal aar -phH +gks aaF aat -aat +aaO aaW -aat +qvo abB acf abM @@ -84664,7 +86492,7 @@ bwi bmr aMm aJq -otF +xzw bCs bCs bEY @@ -84705,28 +86533,28 @@ coa coJ clJ clJ -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +cig +cig +ccw +crJ +crT +crJ +cFn +css +csx +csx +css +csb +aaf +aaf +aaT +ctv +aaT +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -84842,12 +86670,12 @@ aag aaf aaj aaq -eOy +iGV aaE aat aaN aaV -rtT +itP aat acd abL @@ -84926,7 +86754,7 @@ bCs bDv bEX bFb -hKF +ope bFa bKt bLx @@ -84960,30 +86788,30 @@ ccw ccw cnZ coH -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +cpt +cpZ +cig +cqS +ccw +crH +crT +crZ +cFo +css +cFm +cFm +css +csv +aaa +aaa +aaT +ctv +aaT +aaa +aaa +aaf +aaa +aaa aaa aaa aaa @@ -85098,13 +86926,13 @@ aaa aag aaa aal +aau aat aat aat aat -jeR -neC -jgv +rKZ +aat abD acd acd @@ -85122,9 +86950,9 @@ agj auj akl akO -uko -uko -xqW +pet +pet +hMk anw anz aox @@ -85217,30 +87045,30 @@ cmG cnt cob coL -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +cDo +cgR +cqA +cqT +csg +crJ +crU +csb +cFn +css +csx +csx +css +csb +aaf +aaf +aaT +aaT +aaT +gXs +aaf +aaf +aaf +aaa aaa aaa aaa @@ -85360,7 +87188,7 @@ aat aat aat aat -hRz +aat aat abC acd @@ -85382,7 +87210,7 @@ akN alw amg amR -anz +anw anR aow apg @@ -85404,7 +87232,7 @@ aGq aHO aJl ayW -neb +gYR aJq aOE aJn @@ -85417,7 +87245,7 @@ aYq aZO aZC baK -qBe +bbC bbC bdI bgK @@ -85473,31 +87301,31 @@ cTc cTe cfG cgw -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +coK +cpu +cMm +ccw +ccw +ccw +crK +cEK +csa +csj +csa +csa +cGr +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa aaa aaa aaa @@ -85674,10 +87502,10 @@ aYs aZQ bbi bde -nLf bcd bcd -xhx +bcd +gFY bcd bcd bcd @@ -85730,31 +87558,31 @@ clJ cmF cgR cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +chF +ciO +cqc +cqc +cqc +cEd +cEr +cEL +cFb +cFu +cFI +cGd +cGs +cGr +ccw +ccw +ccw +ccw +ccw +ccw +aaa +eRz +aaT +eRz +aaa aaa aaa aaa @@ -85869,14 +87697,14 @@ aaa aag aaf aai -cMk -cMk +qxb +qxb aaG -cMk +qxb aaP aaX -unu -lwY +vhc +fSL acd acD acY @@ -85932,7 +87760,7 @@ aZP bbh bcc bdd -gjf +nyF bfr bgM bif @@ -85986,32 +87814,32 @@ cTa ceZ clQ cgR -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +dGY +coM +cpv +cqb +cqb +cqb +cqb +cEs +cqb +cqb +cAp +cqb +cAo +cGt +cgx +jMY +csd +cHa +csd +uhH +ccw +aaa +aaT +ctv +aaT +aaa aaa aaa aaa @@ -86150,10 +87978,10 @@ aiz ajg akl akR -uko -uko -xqW -anz +pet +pet +hMk +anw anz aov aph @@ -86188,22 +88016,22 @@ aYu aYt bbk bbk -bfu +bbk bbk bfs -pUl +ove aZM aZM aaf aaf -lCL +kMg aaf -lCL +kMg aaf -lCL +kMg aaf -lCL -wwB +kMg +rLg aXf aJq bBi @@ -86243,32 +88071,32 @@ cTb cTd ckF ckF -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +cgK +cDg +cDp +cqe +cqB +cqB +cEe +csP +cAl +cFc +cAq +cFJ +cSH +cGu +cGH +fsQ +fsQ +cGR +csd +csd +ccw +aaa +aaT +ctv +aaT +aaa aaa aaa aaa @@ -86390,7 +88218,7 @@ aaa aaf aai abi -vdz +szH ach acK adf @@ -86448,19 +88276,19 @@ bce bdf beb aYv -kTz -kDD +tVp +lNn aaf aaf -lCL -lCL +kMg +kMg aaf -wwB -wwB -wwB -wwB -wwB -wwB +rLg +rLg +rLg +rLg +rLg +rLg aXf aJq byU @@ -86500,32 +88328,32 @@ cnA cev cfg cgU -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +cgJ +chG +cpx +cqd +cDC +cqU +cEf +cEt +cEM +csA +cEg +cFK +cGe +cGv +cGI +cGS +cHb +cHg +cHn +oDF +ccw +aaf +aaT +ctv +aaT +aaf aaa aaa aaa @@ -86705,19 +88533,19 @@ aZR bbm bec bfu -sdL +nnb aBa aBa aBa aBa aBa aBa -wwB -bsb -lTq -tMS -eND -wEp +rLg +gGD +tVQ +wcX +dBt +kFf aXf aJq bBi @@ -86757,32 +88585,32 @@ cig cig cTf cgR -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +ccw +cDh +cpy +cDv +cDD +cqU +cMD +cEu +cEz +cEz +cMD +cFL +cGf +kQq +cMm +ciZ +cHc +cAu +cAu +ciZ +ccw +aaa +aaT +ctv +aaT +aaa aaa aaa aaa @@ -86911,7 +88739,7 @@ cpg acv adi adi -pQD +fwD aeW agQ ahv @@ -86924,11 +88752,11 @@ akP aly amj amR -anz +anw anz aov aph -oOb +gzJ ard ard ard @@ -86962,7 +88790,7 @@ aZR aZR aZR bft -srq +oaP aBa aBT aDs @@ -86971,13 +88799,13 @@ aGb aBa bqD bsa -oeQ +vfe bsa bsa -wEp +kFf byS aJq -idX +yar bCs bCs bCs @@ -87014,32 +88842,32 @@ ckI clJ cmL cBO -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +ccw +chV +cpx +cqf +cqD +cMD +crs +cEv +cEv +cFe +cMD +cFM +czE +kQq +ccw +cGT +csd +csd +csd +csd +ccw +aaf +aaT +ctv +aaT +aaa aaa aaa aaa @@ -87168,7 +88996,7 @@ acl cxA acL adi -vpz +vtO agp agT ahx @@ -87178,12 +89006,12 @@ ajc ajI akl akT -fGl -uko -xqW +aww +pet +hMk anw anz -lYU +oZl apk anw anw @@ -87194,7 +89022,7 @@ avj awl axC ayY -uZM +rJv azZ azZ azZ @@ -87219,16 +89047,16 @@ bbm bdh bee bfv -vLD +nDn aBb -cSn +pnx aDr aEM aGa aHF bqF bsa -nmx +iFt buQ buQ bxI @@ -87271,34 +89099,34 @@ ckK clJ cmL cgR -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +cgL +chX +cpx +cqh +cqF +cra +crI +cEw +cEw +cEw +cFw +cFN +csH +csR +cMm +cGU +csd +csd +cHo +csd +ccw aaa -hoo +aaT +ctv +aaT +aaa +aaa +aae aaa aaa aaa @@ -87476,13 +89304,13 @@ bcf bdg bed bfv -kvZ -fGC -qvM +sVN +dqD +wTu alu aEM aGd -nMx +xyp bqE bqE bqE @@ -87528,32 +89356,32 @@ ckI clJ cmL cnv -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +cMm +chX +cpx +cqg +cqE +cqZ +crt +cMH +cAm +cMH +cMN +cFO +cSI +cSI +cMm +cGV +csd +cGV +noK +csd +ccw +aaa +aaT +ctv +aaT +aaa aaa aaa aaa @@ -87708,7 +89536,7 @@ avk awk axE ayZ -ncj +uqO aBu aAa aAa @@ -87733,18 +89561,18 @@ bbm bdh bef bfv -smn +jTp aBc -jXg +xZN aDt aEO aGc aHF aKG bsf -kxc -kxc -kxc +lrF +lrF +lrF bxK bwh bAh @@ -87785,32 +89613,32 @@ cfb ccw cmN cgR -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +cgL +chX +cpx +cqj +cSG +crb +cru +cEx +cEx +cEx +cAP +cFP +csI +cAt +cMm +csd +csd +csd +cHp +csd +ccw +aaf +aaT +ctv +aaT +aaa aaa aaa aaa @@ -87954,7 +89782,7 @@ aml amT anw anz -ilJ +ltC apl aqc aqc @@ -87990,19 +89818,19 @@ aZR aZR aZR bfw -rzg +uJI aBa aBW bjy aEP -nOS +iEc aBa bqG bsa -jDY +mRj bsa bsa -wEp +kFf bwb aJq bBr @@ -88042,32 +89870,32 @@ cfb clM cfz cgR -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +ccw +cii +cpx +cqi +cMD +cAP +crv +cEy +cEy +cFh +cMD +cFM +czE +kQq +ccw +cGT +csd +csd +csd +csd +ccw +aaf +aaT +ctv +aaT +aaa aaa aaa aaa @@ -88211,7 +90039,7 @@ amn amV anw anz -rsX +uWs aod aqf ahT @@ -88247,19 +90075,19 @@ aZR bbm beh bfx -spX +kDw aBa aBa aBa aBa aBa aBa -mte -bsg -lTq -tMS -fZD -wEp +czD +gGD +tVQ +wcX +ekY +kFf aJq aJq bBu @@ -88299,32 +90127,32 @@ cfb cfa cje cgR -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +ccw +cDi +cDr +cDw +cDE +cEa +cMD +cEz +cEz +cEz +cMD +cFR +cSJ +kQq +cMm +ciZ +cHd +cHj +cHd +ciZ +ccw +aaa +aaT +ctv +aaT +aaa aaa aaa aaa @@ -88504,19 +90332,19 @@ bcg aZU beg aYB -ptV -fjy +tVp +lNn aaf aaf -lCL -lCL +kMg +kMg aaf -wwB -wwB -wwB -wwB -wwB -wwB +rLg +rLg +rLg +rLg +rLg +rLg aJq aJq bBt @@ -88556,32 +90384,32 @@ ckL cmF cje cgR -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +cMm +chX +cpD +cDw +cDF +cEa +cEg +cEA +cET +cFj +cEf +cFS +cGg +mBv +cGI +cGS +cHe +cHe +cHr +oDF +ccw +aaf +aaT +ctv +aaT +aaf aaa aaa aaa @@ -88721,9 +90549,9 @@ ajJ akr akX alC -iqw +xgZ amX -elw +lUR anz aoB aod @@ -88758,22 +90586,22 @@ aYC aYA bbp bbp -bfx +bbp bbp bfz -tAb +maz aZV aZV aaf aaf -lCL +kMg aaf -lCL +kMg aaf -lCL +kMg aaf -lCL -wwB +kMg +rLg aJq aJq aXf @@ -88813,32 +90641,32 @@ ceq clQ cje cgR -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +cMm +cDj +cDs +cql +cDG +cDG +cEh +cEB +cEU +cFk +cAs +cFT +cSK +cGx +cGK +nzh +nzh +cGY +csd +csd +ccw +aaf +aaT +ctv +aaT +aaa aaa aaa aaa @@ -88980,9 +90808,9 @@ akW aiG amo amW -uYE +eWV anz -rsX +uWs aod aqe arf @@ -89016,9 +90844,9 @@ aZV bbo bch bdi -bbw bfy bgS +ffU bik aZV aZV @@ -89033,7 +90861,7 @@ bsh bqH aJq aJq -unY +vqa bCv bDJ bCt @@ -89070,32 +90898,32 @@ ckO ckH cja cny -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +gUz +cip +cnx +cDx +cqb +cqb +cqb +cEC +cqb +cqb +cAr +cqb +cGh +cGC +cey +ijc +csd +cEk +csd +udp +ccw +aaf +aaT +ctv +aaT +aaa aaa aaa aaa @@ -89233,9 +91061,9 @@ adR aiQ ajI akt -akQ -agj -agj +amS +aiX +aiX aiX anw anz @@ -89272,10 +91100,10 @@ aYD aZX baf bdk -jwi bek bfB bgU +pVa bdk bjF blc @@ -89327,32 +91155,32 @@ cfb clR cgR cgR -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +cMm +cir +cDt +cDy +cqC +crc +cEi +cED +crc +crc +cFy +cBR +cGi +cGD +cGL +ccw +ccw +ccw +ccw +ccw +ccw +aaa +aaT +aaT +aaT +aaa aaa aaa aaa @@ -89490,10 +91318,10 @@ cBV ajf ajK aks -akY -aly -amj aiX +nuI +anw +anw anw anz aoC @@ -89515,7 +91343,7 @@ vHj eVC dgz aJv -ioG +nqP aMg bHt aOE @@ -89530,10 +91358,10 @@ aZW aZG bej bdj -bej bfA bgT -bil +fDV +bej bej blb bmy @@ -89584,32 +91412,32 @@ ces clN ccm ckF -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +cDe +cDk +coc +cqa +cig +ccw +ccw +czF +csd +csd +cFz +cFU +cGj +cGE +cGM +cGZ +aag +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa aaa aaa aaa @@ -89745,13 +91573,13 @@ ahC aia aiP aiR -olv -akv -ala -aww -afM +eJk +akl aiX -uVq +akz +anz +anz +anz anz aoF apo @@ -89762,8 +91590,8 @@ atj aul auR atj -kcj -ghJ +gnM +fRa atj aAX azc @@ -89786,10 +91614,10 @@ aPR aZV baq baQ -dTJ +kCq bcQ -bfC bgV +mpA bim bjG aZV @@ -89844,29 +91672,29 @@ cgU cgU cis cjN -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +cDz +cDH +cMm +csd +crM +crV +crV +cFA +csd +cGk +ccw +aag +aag +aag +aaf +aaf +aaf +aaf +gXs +aaf +aaf +aaf +aaf aaa aaa aaa @@ -90004,10 +91832,10 @@ adR aiG ajL aku -akS -alw -amp aiX +alE +anA +anA anA anz aoE @@ -90022,8 +91850,8 @@ avt axL bbl azT -nlt -dwc +gxH +tEy aDG aFd auk @@ -90046,7 +91874,7 @@ baP bbZ bcP cBo -bgS +ffU bbw bbw aZV @@ -90076,7 +91904,7 @@ bOV bQj bRw bSF -gVY +pmf bTP bRA bWQ @@ -90101,29 +91929,29 @@ cfI cgQ cjS cjN -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +cqm +cgR +crd +cEk +crL +cEW +cse +cse +csu +cGl +ccw +aaa +aaa +aaf +aaa +aaf +ctv +aaT +aaa +aaa +aaf +aaa +aaa aaa aaa aaa @@ -90275,11 +92103,11 @@ arf arf arf arf -ukP -oma +dHP +djq awr awr -wwn +wWo aAh aAh aAh @@ -90316,7 +92144,7 @@ btL buY buY bqH -neb +gYR aJq aXf bCv @@ -90333,7 +92161,7 @@ bOV bQo bRz bSH -cJn +kcg bTP bRA bWQ @@ -90358,29 +92186,29 @@ ccw ccw cDl cjN -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI -cgI +cjh +cDI +ccw +ccw +ccw +ccw +ccw +cMm +cMm +cMm +ccw +aaf +aaf +aaf +aaf +aaf +ctv +aaT +aaa +aaa +aaf +aaa +aaa aaa aaa aaa @@ -90536,7 +92364,7 @@ avv awu awr aAd -uDW +qKJ aAh aDL aAh @@ -90590,7 +92418,7 @@ bOV bQj bRy bSG -gVY +pmf bUK bVT bWR @@ -90793,7 +92621,7 @@ awp axN awr awr -kSh +oTI aAh aDQ aAh @@ -90801,7 +92629,7 @@ aGl aAh aBy aAh -pTR +uOb aJq aOE aJn @@ -90814,7 +92642,7 @@ aYF aZV bbw bcn -qUm +jNS ben bfE bgX @@ -91044,13 +92872,13 @@ aqe arf ari asu -kyi +gTx aun avR -oma -dHb +djq +vMd awr -uya +mPj aAh aDM aGx @@ -91303,18 +93131,18 @@ arf arf arf arf -ukP +dHP axP azb aAi -wGP +sTt aCn -rOm -wwC +mvB +ipU aGm aHV aDM -nrR +urH aJq aJq aJq @@ -91345,9 +93173,9 @@ bva bwu bwu bwu -ihm +pgY bBB -rhb +pAE bzs bFp bGJ @@ -91563,8 +93391,8 @@ arf awq axO aza -jtk -pqR +moa +uhG aAh aAh aAh @@ -91813,7 +93641,7 @@ ajo aps aqk arf -vGX +dsV blU aHw avn @@ -91821,14 +93649,14 @@ awv axX aze awr -hMx +uuT aAh aDU aBz aBz aAh -isy -uzk +tsY +tTt aJq aJq aJq @@ -92072,7 +93900,7 @@ aqj arf ark asu -epV +mOL aun awt awr @@ -92081,10 +93909,10 @@ azX aAZ aCe aDT -mEN -mEN -dzy -fyq +mwm +mwm +qzE +fPz aAh aJC aJC @@ -92341,18 +94169,18 @@ aDP aBx aBx aAh -kCk -qIf +oNq +jtY aMq adq aQb aPZ aRu -wpo +iWm aKR -tIC +gJR aXi -maC +jRc baa aJC bcq @@ -92592,7 +94420,7 @@ awy awr awr avG -udi +tQu aAh aAh aAh @@ -92602,13 +94430,13 @@ aAh aAh aKR aKR -pxD +fey aPY -xMl +fOB aRx aKR -jzD -tuN +hFk +xCs aPY aZZ aQg @@ -92849,24 +94677,24 @@ awA axT axW aAl -tAE +vEA aJC aDR aFl -rLr +oaT aHZ aJC aKJ -rLR +yeR aKR -hSU -kay +eBm +yhO aQd aQa aKR -xbu -hSU -lwj +ndo +eBm +gbb bac aJC aYV @@ -93090,7 +94918,7 @@ aif aif aif bkV -fvk +thY alK aif aif @@ -93098,19 +94926,19 @@ anc anD aoI arf -myt +iTd asN aur avy -tWR +neT axS azk aAk -eUd +oxA aJC aDY aDY -rLr +oaT aKR aJk aKR @@ -93126,7 +94954,7 @@ aKR aKR bab aJC -xYO +jtp aYV ber bfF @@ -93338,13 +95166,13 @@ abp afo abp abp -hlY +iHq ahn aiA aiA aiA ahn -hYW +qaZ anF aod ahn @@ -93355,15 +95183,15 @@ ahn ahn ahn arf -iES -jdT +pUo +sPA aut arf aXF awr awr aAn -wcy +dQz aJC aEc aFk @@ -93373,19 +95201,19 @@ aJC aKr aKR aKR -fbm -fbm -hzR +pIA +pIA +jcN aKR aKR aKR -fbm +pIA aKR aKR bbx aYV aYV -wDR +qVa bfF bhd bis @@ -93591,11 +95419,11 @@ aaf aaf aaf abp -unE +rmC afp -unE +rmC abp -nea +fEo ahn aaa aaf @@ -93605,39 +95433,39 @@ ahn anE aod aoK -sgV +fBj aqp ahn -ukS -tQk -cVp -jdT -jdT -jdT -rMc +kMO +oaB +itE +sPA +sPA +sPA +xCE aun avz awr awr aAn -fSr +tTh aJC aJC -gjC -lxx +kiH +qeZ aJC aJC aKq aKR aNF -egS -ghs -lMY +lmT +gzA +qet aSH aKR -dMX -igT -moq +dSM +mTi +hmv aKR aQg aYV @@ -93663,7 +95491,7 @@ bvj bvj bvd bFu -hcd +thl bvj bvd bKH @@ -93865,19 +95693,19 @@ aoL apy aqq ahn -dhx -mfb +ttp +cJl arf -unl +uNs ast -jdT +sPA auv arf avA axW azo aAp -lYZ +qPl aBC aCt aEA @@ -93888,13 +95716,13 @@ aKN aKR aKR aOJ -fvW -dtE +nNY +hIJ aKR aKR aUg bFC -moq +hmv aKR bbx aYV @@ -93902,9 +95730,9 @@ aYV bet bfH bhf -slp +qqY bhh -slp +qqY bmJ bof bpu @@ -94130,11 +95958,11 @@ arf arf arf arf -hkg -eNW +fpd +imi azf aAo -lMx +coj aBB aBB aBB @@ -94144,12 +95972,12 @@ cNE aKM aMu aMu -poa -hdb +ese +sfY aMu aMu aMu -uTq +mdp aSq aKR bad @@ -94161,7 +95989,7 @@ bfG bhe bit bjS -nGS +kQg bli boe bli @@ -94376,24 +96204,24 @@ aag aag aag arf -iep -gQn +xXW +gYK arf -myt -qNs -lMx -sjw +iTd +uVo +coj +mcQ clO asZ aua -dcG +sfO awB att azh -vYa -vYa -gKk -vbY +mgT +mgT +uJq +fcc alP aGI aId @@ -94407,7 +96235,7 @@ aMx aMx aMx aMx -eqm +hvD aKR aZb aJC @@ -94618,11 +96446,11 @@ aaa aaa aaa aaa -xzh +uFF aaa aqG aaa -vDq +eYr aaa aaa aaa @@ -94633,24 +96461,24 @@ aaa aaa aaa arf -pZv -tQk -cVp -jdT -ier +duc +oaB +itE +sPA +oIx arf arm -vYa +mgT aya -vYa -vYa +mgT +mgT auB atZ azg azp -vYa +mgT aCu -dgh +gmc alP aGH aIc @@ -94875,11 +96703,11 @@ aaa aaa aaa aaa -lCB -lNB +oBB +ixv aaa -lNB -rUQ +ixv +rrJ aaa aaa aaa @@ -94893,21 +96721,21 @@ arf arf arf arf -iES -jYI +pUo +xgY aqs -hVw -vYa -vYa -vYa -vYa -pSf -vYa +gfn +mgT +mgT +mgT +mgT +vBb +mgT ayb -ndC -vYa +fJA +mgT aCv -frE +cFF alP aGJ aIe @@ -94921,7 +96749,7 @@ aXj aVy aSY aVy -oNb +ydZ acN bah aJC @@ -95132,11 +96960,11 @@ aaa aaa aaa aaa -jmC -jmC +viT +viT gXs -jmC -jmC +viT +viT aaa aaa aaa @@ -95149,22 +96977,22 @@ aaa aaa aaa arf -ewZ -jdT -tOU +jav +sPA +eDq arf -fQF -qbx -qux -vYa -vYa -pSf -vYa +bHg +iTD +lBk +mgT +mgT +vBb +mgT ayb -ndC -vYa -vys -tCi +fJA +mgT +mHW +sBu alP aGJ aIe @@ -95174,11 +97002,11 @@ aKQ aNu aJC aPw -kwy +eqs aQc aSZ aQc -vjq +jxp acN bag aJC @@ -95406,22 +97234,22 @@ aaa aaa aaa arf -qoP -prU -fOc +wSg +vgX +rak arf -oSO -sAI -fJa -vYa -svw -ntf -jvN -lBE -xpx -vYa +lqe +jYg +jde +mgT +pbw +neq +mTj +qGM +ulP +mgT aCu -hgX +vbP alP aGA aHS @@ -95443,7 +97271,7 @@ aYV aYV bet bfH -dok +liD bhh bhg bln @@ -95647,9 +97475,9 @@ aaa aaa aaa aaa -hho +oqa aaa -hho +oqa aaa aaa aaa @@ -95667,18 +97495,18 @@ arf arf arf arf -mTp -qEv -kRk -mXB -qAQ -pzk -vYa -sMa -iEI -jeT -rTQ -vHM +mbl +iiH +udn +vBN +fLn +vXW +mgT +cIW +kmf +uip +jil +ttF alP aGL aHM @@ -95923,18 +97751,18 @@ aaa aaa aaa gXs -kHJ -rEV -rEV -kQZ -fVU -vpm -vpm -fVU -nel -wCa -wCa -lFl +jMa +qMf +qMf +kte +wgV +odR +odR +wgV +kCK +cmm +cmm +dKg arj alP aGL @@ -96158,7 +97986,7 @@ aaa aaa aaa aaa -aaa +xlX aaa aaa aaa @@ -96209,7 +98037,7 @@ aVz aVz aYJ aJI -sIe +xZr aYV aYV aYV @@ -96726,7 +98554,7 @@ baj bbz aYV bdp -itT +pWO bfK bfK bfK @@ -96979,7 +98807,7 @@ aVD aVE aXm aVz -egQ +gIT bbz aYV bdp @@ -97465,17 +99293,17 @@ aaa aaa aaa aaa -haX -rEV -rEV -rEV -nie -vpm -vpm -wFX -wCa -wCa -wCa +mHC +qMf +qMf +qMf +sXo +odR +odR +ioS +cmm +cmm +cmm aCy arj alP @@ -97493,7 +99321,7 @@ aTO cCq aVz aVz -fPs +guh bbz aYV bdp @@ -97726,14 +99554,14 @@ aaa aaa aaa arj -cRz +kOA avD awC ayb -mbD -nmS -oFk -xXY +jYD +ruS +ukL +lAY vpY alP aGJ @@ -97779,7 +99607,7 @@ bCR bqQ bGX bCR -oDy +pMv bRN bIK bPq @@ -97985,13 +99813,13 @@ aaf arj auz avC -kOf +oGS aya -vYa -vYa -oYc -vYa -vYa +mgT +mgT +rmY +mgT +mgT gOZ aGJ avI @@ -98242,7 +100070,7 @@ alO arj arj arj -eOv +csp gOZ cVb cVb @@ -98754,10 +100582,10 @@ cxW anf aqv ayf -fIn -ego +hxw +dKe awE -dMu +pGr cVb vCb wUY @@ -99010,8 +100838,8 @@ aag alO anf alO -kSB -pAl +gqR +pQA alP anf aCG @@ -99027,11 +100855,11 @@ aIq aKK aMy aIp -jaa +rXv aQm -wOT -htr -htr +eaD +vAZ +vAZ aVK aRJ aRJ @@ -99273,10 +101101,10 @@ alP awF aCG alP -olw +uTQ aBE aCz -trY +fXo aCJ aGT aIn @@ -99286,10 +101114,10 @@ aMt aIp aOW aQm -dRC +ktc aSS aUj -pHo +uao aRJ aYQ cBg @@ -99523,7 +101351,7 @@ aoN apA aof arq -hdp +qnd atv auD alP @@ -99543,14 +101371,14 @@ aMA aIp aOX aQm -dRC +ktc aST aUk -pHo +uao aRJ aYQ bam -yiN +oAc aYV aYV aYV @@ -99767,10 +101595,10 @@ adU adU adU adU -ssL -rsv -rsv -rsv +xWW +sCo +sCo +sCo acx amv ane @@ -99800,14 +101628,14 @@ aMz aNQ aOX aQm -tFt -tsr -tsr -xzy +pmj +lrH +lrH +rEQ aRJ aYR ban -qje +efo aYV aYV bez @@ -100051,7 +101879,7 @@ aaa aFq aGX aIp -vzS +lwn aKU aME aNN @@ -100064,7 +101892,7 @@ aXo aXo aYO bap -qje +efo aYV bci beB @@ -100293,7 +102121,7 @@ aof aof aof aof -qkC +gBY aoP atw auF @@ -100301,7 +102129,7 @@ alP aoP auF azr -kel +juV atw alP alP @@ -100315,13 +102143,13 @@ aNQ aOZ aOX aOX -hZH +ohe aUz aVM aOX aYT bam -ory +qcu baR bcb bdl @@ -100378,7 +102206,7 @@ bAw bAw clp aag -jmC +viT aaa aaa aaa @@ -100556,7 +102384,7 @@ aty auF alP aAt -kuY +lHE alP alP alP @@ -100807,7 +102635,7 @@ aaa aaa apC anf -kel +juV alP atx auF @@ -100816,7 +102644,7 @@ auD auF apE aAs -khA +trM alP aCG aFr @@ -100869,15 +102697,15 @@ bOx bPx bJN bRT -aad +bEm bEm bJN bRT -aad +bEm bEm bJN bRT -aad +bEm bEm bDb cfr @@ -101069,12 +102897,12 @@ alP apE auG alP -rgF +hSS auF apE anf anf -jRy +kwj aCG aDZ aFu @@ -101338,8 +103166,8 @@ bbE aIr bav aLf -dkk -kLR +nvw +oWe aRO aQp aRN @@ -101403,11 +103231,11 @@ cQB czY cOT aaa -jmC -jmC -jmC -jmC -jmC +viT +viT +viT +viT +viT aaa aaa aaa @@ -101580,12 +103408,12 @@ apC alP alP alP -tuj +dHx auH avF awI ayc -mlr +nOD asw asw aCD @@ -101596,7 +103424,7 @@ aIu aJQ aIt aIt -kLR +oWe aRO aIt aRN @@ -101851,9 +103679,9 @@ anf aFu aIs aJP -wuB +xah aIt -nsJ +xNd aYW aYW aYW @@ -101920,10 +103748,10 @@ aaa aaa aaa aaa -ikx -mwb -xWM -rxH +tpb +rnY +oSW +vPl aaa aaa aaa @@ -102108,9 +103936,9 @@ aFu aFu aIw aJS -tqt +wTC aNP -jFy +kMY aOS aOS aOS @@ -102174,14 +104002,14 @@ cQB cAa cOT gXs -xNY -kvb +lDF +kTe aaa aaa -ikx -ikx -ikx -rxH +tpb +tpb +tpb +vPl aaa aaa aaa @@ -102358,7 +104186,7 @@ awJ anf alP aAv -gCe +wZI aCE aDZ aFu @@ -102367,7 +104195,7 @@ aIv aJR aIt aIt -kLR +oWe aRO aIt aPd @@ -102431,14 +104259,14 @@ czU czZ cOT aaa -jmC -dbM -dbM -ikx -ikx -ikx -thr -mwb +viT +sbs +sbs +tpb +tpb +tpb +gqp +rnY aaa aaa aaa @@ -102624,7 +104452,7 @@ aIx aJF aQq aNS -kLR +oWe aRO aIt aPd @@ -102688,14 +104516,14 @@ cgm czY cOT gXs -xNY -kvb -gJg -dbM -dbM +lDF +kTe +nxN +sbs +sbs aaa aaa -gJg +nxN aaa aaa aaa @@ -102885,12 +104713,12 @@ aFu aPf aQq aRP -kHK +oIt aIt aIt aWd aXV -iWa +pWH bbD aYV aXq @@ -102947,10 +104775,10 @@ cNW aaa aaa aaa -gJg -gJg -mwb -ikx +nxN +nxN +rnY +tpb gXs aaa aaa @@ -103121,8 +104949,8 @@ alO anf anf arw -ftv -sLr +uiT +cII anf alP awL @@ -103395,7 +105223,7 @@ aIy aJG cAz aFw -iWk +eAE aPg aQr aFu @@ -103462,10 +105290,10 @@ aaa aaa aaa aaa -jmC -jmC -jmC -jmC +viT +viT +viT +viT aaa aaa aaa @@ -103632,10 +105460,10 @@ aaa aaa gXs alP -qxc +pRx ayf -nuV -iOV +eUR +imK aFn aFn aBB @@ -103652,7 +105480,7 @@ aFw aLo aLb aFw -eMQ +xwI aYW aYW aRQ @@ -103886,13 +105714,13 @@ aaa aaa aaa aaa -fzd -fzd -fzd -fzd -tNJ -fzd -fzd +uBW +uBW +uBW +uBW +oFY +uBW +uBW atB alP alP @@ -103909,7 +105737,7 @@ aIz aJM aLa aFw -tGG +kwW aYW aQs aFu @@ -103953,15 +105781,15 @@ bOx bPI bJN bEm -abz +bEm bUi bJN bEm -abz +bEm bUi bJN bEm -abz +bEm bUi bDb aaf @@ -104143,21 +105971,21 @@ aaa aaa aaa aaa -fzd -xdb -mCq -wJz -mHC -tWs -lmi -ghY -sxX -ghY -jBZ +uBW +mKU +wLe +shX +mJU +cyi +tcE +dIA +pNj +dIA +nhn avI asA apE -vHv +fIK aCG aEf aFw @@ -104400,12 +106228,12 @@ aaa aaa aaa aaa -tIk -mCq -mCq -mCq -mCq -pjh +lfx +wLe +wLe +wLe +wLe +gGK asB asB asB @@ -104496,7 +106324,7 @@ cOe cBT aag gXs -jmC +viT aaa aaa aaa @@ -104657,12 +106485,12 @@ aaa aaa aaa aaa -tIk -mCq -mCq -mCq -mCq -dSv +lfx +wLe +wLe +wLe +wLe +sEJ asB atD auJ @@ -104914,12 +106742,12 @@ aaa aaa aaa aaa -fzd -mCq -mCq -mCq -mCq -mCq +uBW +wLe +wLe +wLe +wLe +wLe asB atC auI @@ -105003,7 +106831,7 @@ cNW cNW cNW cOe -qXH +xPX csy cko cAf @@ -105171,12 +106999,12 @@ aaa aaa aaa aaa -tIk -mCq -mCq -mCq -mCq -mCq +lfx +wLe +wLe +wLe +wLe +wLe asB atE auI @@ -105428,18 +107256,18 @@ aaa aaa aaa aaa -tIk -mCq -mCq -mCq -mCq -mCq +lfx +wLe +wLe +wLe +wLe +wLe asB asB asB avL awR -hRT +kuT azu aAz asB @@ -105513,7 +107341,7 @@ cgp chv ciJ cbf -lLI +xcw clr bnt cOe @@ -105685,12 +107513,12 @@ aaa aaa aaa aaa -fzd -wXP -mCq -nXa -mCq -nyH +uBW +kgf +wLe +pnl +wLe +oKy asB atG auL @@ -105942,12 +107770,12 @@ aaa aaa aaa aaa -fzd -fzd -fzd -fzd -fzd -fzd +uBW +uBW +uBW +uBW +uBW +uBW asB atF auK @@ -106233,9 +108061,9 @@ aXB aZh baB aCR -riB +fkx bdx -dfI +izL bgc bgc biX @@ -106549,13 +108377,13 @@ cOe cOe cOe sQX -jzi -jzi -jzi -jzi -jzi -jzi -jzi +tDE +tDE +tDE +tDE +tDE +tDE +tDE aaS aaS aba @@ -107307,7 +109135,7 @@ cbZ bSl cmo cNW -vOq +sPj cNW chC ciL @@ -108607,17 +110435,17 @@ cpi cpi cpi cqJ -ggg +gnW crk crk crk crk crk -pFt +phP cqJ -ggg +gnW crk -pFt +phP cpi cpi ctB @@ -108873,7 +110701,7 @@ crF aaa aaa aaa -hik +jvm aaa aaa aaa @@ -109612,7 +111440,7 @@ cNW cNW cNW cNW -vFt +dok clt cac cbh @@ -109878,7 +111706,7 @@ cbf cbf ceT cNW -kCW +wNd chH cNW aaf diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index c59e0698f9..b47944146f 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -1449,6 +1449,26 @@ }, /turf/open/floor/plating, /area/construction/mining/aux_base) +"agv" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 2; + pixel_y = 22 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/office) "agB" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -56068,6 +56088,8 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/item/gun/energy/pumpaction/blaster, +/obj/item/gun/energy/pumpaction/blaster, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "bRx" = ( @@ -120782,6 +120804,17 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) +"dWi" = ( +/obj/structure/table, +/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/security/prison) "dWm" = ( /obj/structure/reagent_dispensers/virusfood{ pixel_x = -32 @@ -126368,22 +126401,18 @@ }, /turf/open/floor/plasteel/dark, /area/library) +"euu" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/light/small, +/turf/open/floor/plasteel, +/area/maintenance/port/fore) "exE" = ( /obj/machinery/air_sensor/atmos/toxins_mixing_tank, /turf/open/floor/engine/vacuum, /area/science/mixing) -"eCJ" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/maintenance/port/fore) "eCM" = ( /obj/structure/cable/white{ icon_state = "4-8" @@ -126394,6 +126423,27 @@ }, /turf/open/floor/plasteel/white, /area/science/misc_lab) +"eHb" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"eIC" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/maintenance/port/fore) "eJc" = ( /obj/machinery/atmospherics/pipe/simple/general/visible, /turf/closed/wall/r_wall, @@ -126435,13 +126485,6 @@ }, /turf/open/floor/plasteel/dark, /area/science/mixing) -"ePi" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/plasteel, -/area/maintenance/port/fore) "eTv" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -126494,6 +126537,24 @@ }, /turf/open/floor/plasteel, /area/medical/medbay/central) +"flG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/computer/arcade{ + icon_state = "arcade"; + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/maintenance/starboard/fore) "fno" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -126519,16 +126580,6 @@ /obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior, /turf/open/floor/engine, /area/science/mixing) -"fCs" = ( -/obj/machinery/door/window/northright{ - name = "Coffin Storage" - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/closet/crate/coffin, -/turf/open/floor/plating, -/area/chapel/office) "fFK" = ( /obj/machinery/ore_silo, /obj/effect/turf_decal/tile/neutral{ @@ -126547,22 +126598,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/science/circuit) -"fLh" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/delivery, -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 3; - name = "3maintenance loot spawner" - }, -/turf/open/floor/plasteel, -/area/maintenance/port/aft) "fLR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 @@ -126579,31 +126614,6 @@ }, /turf/open/floor/plating, /area/maintenance/port) -"fXF" = ( -/obj/machinery/button/crematorium{ - id = "cremawheat"; - pixel_x = -26; - req_access_txt = "27" - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/table, -/obj/item/clothing/under/burial, -/obj/item/clothing/under/burial, -/obj/item/clothing/under/burial, -/obj/item/clothing/under/burial, -/obj/item/clothing/under/burial, -/obj/item/clothing/under/burial, -/turf/open/floor/plasteel/dark, -/area/chapel/office) "gbV" = ( /obj/machinery/atmospherics/components/binary/pump/on{ dir = 1 @@ -126616,56 +126626,49 @@ }, /turf/open/floor/engine, /area/science/mixing) -"giN" = ( -/obj/structure/window/reinforced{ +"gkl" = ( +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/structure/closet/crate/coffin, -/turf/open/floor/plating, -/area/chapel/office) -"gmj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall/r_wall, -/area/science/circuit) -"gut" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, /obj/effect/turf_decal/tile/neutral{ dir = 4 }, /obj/effect/turf_decal/tile/neutral, +/obj/machinery/light{ + dir = 8 + }, /turf/open/floor/plasteel/dark, /area/chapel/office) -"gBd" = ( +"gmj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/science/circuit) +"gug" = ( +/obj/machinery/light/small, /turf/open/floor/plasteel, /area/security/prison) -"gKo" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +"gER" = ( +/obj/structure/cable/white{ + icon_state = "4-8" }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/structure/cable/white{ + icon_state = "2-4" + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, /turf/open/floor/plasteel, -/area/maintenance/port/fore) +/area/maintenance/port/aft) "gKr" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, /turf/open/floor/circuit/green, /area/science/research/abandoned) -"gLe" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/hydroponics/soil, -/obj/item/seeds/grape, -/turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) "gNw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/table/glass, @@ -126723,13 +126726,6 @@ /obj/item/clothing/mask/muzzle, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) -"gVZ" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/maintenance/port/fore) "gXn" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ @@ -126740,6 +126736,10 @@ }, /turf/open/floor/plasteel, /area/maintenance/department/electrical) +"hds" = ( +/obj/structure/grille, +/turf/open/space, +/area/space/nearstation) "hdH" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/conveyor{ @@ -126757,10 +126757,21 @@ dir = 10 }, /area/science/circuit) -"hix" = ( -/obj/structure/sign/warning/vacuum, -/turf/closed/wall/r_wall, -/area/chapel/office) +"hig" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/maintenance/port/fore) "hrP" = ( /obj/structure/cable/white{ icon_state = "1-2" @@ -126782,13 +126793,19 @@ }, /turf/open/floor/plasteel, /area/maintenance/port/aft) -"hsy" = ( -/obj/machinery/vr_sleeper, -/obj/structure/cable/white{ - icon_state = "4-8" +"hsc" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/turf/open/floor/plasteel, -/area/security/prison) +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel/dark, +/area/chapel/office) "hFo" = ( /obj/structure/lattice, /obj/structure/disposalpipe/segment{ @@ -126820,6 +126837,9 @@ }, /turf/open/floor/plasteel, /area/security/prison) +"hJk" = ( +/turf/open/space, +/area/space) "hNZ" = ( /obj/structure/chair/office/light{ dir = 8 @@ -126839,50 +126859,30 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/medical/medbay/central) -"hTX" = ( +"hUt" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/chapel/office) +/turf/open/floor/plasteel, +/area/maintenance/port/aft) "iaF" = ( /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/science/research) -"iho" = ( -/obj/structure/sign/warning/nosmoking, -/turf/closed/wall, -/area/medical/surgery) "ijB" = ( /obj/structure/reagent_dispensers/keg/aphro/strong, /obj/item/reagent_containers/glass/beaker, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) -"ioW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/computer/arcade{ - icon_state = "arcade"; - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/maintenance/starboard/fore) "iwL" = ( /obj/machinery/status_display{ pixel_x = 32 @@ -126941,6 +126941,37 @@ }, /turf/open/floor/plasteel/dark, /area/science/mixing) +"iUn" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/closet/crate/coffin, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"iZm" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/computer/arcade{ + icon_state = "arcade"; + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/maintenance/starboard/fore) "jdO" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -126965,6 +126996,13 @@ }, /turf/open/floor/plasteel, /area/science/research/abandoned) +"jie" = ( +/obj/machinery/vr_sleeper, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/prison) "jjN" = ( /obj/structure/table/reinforced, /obj/machinery/camera{ @@ -127062,6 +127100,10 @@ /obj/machinery/chem_master, /turf/open/floor/plasteel/dark, /area/medical/medbay/central) +"jPL" = ( +/obj/structure/sign/warning/vacuum, +/turf/closed/wall/r_wall, +/area/chapel/office) "jRy" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -127082,6 +127124,16 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/science/mixing) +"jTP" = ( +/obj/machinery/door/window/northleft{ + name = "Mass Driver" + }, +/obj/machinery/mass_driver{ + id = "chapelgun"; + name = "Holy Driver" + }, +/turf/open/floor/plating, +/area/chapel/office) "kam" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/conveyor{ @@ -127090,48 +127142,11 @@ }, /turf/open/floor/plating, /area/quartermaster/storage) -"kiJ" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +"ktV" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 2 }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/computer/arcade{ - icon_state = "arcade"; - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/maintenance/starboard/fore) -"kqa" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/cobweb, -/obj/item/storage/crayons, -/obj/item/storage/crayons, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/security/prison) -"krb" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plating, /area/chapel/office) "kvf" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -127158,19 +127173,6 @@ }, /turf/open/floor/plasteel, /area/maintenance/port) -"kKn" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/window{ - req_one_access_txt = "48,50" - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/quartermaster/sorting) "kLu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -127186,11 +127188,27 @@ }, /turf/open/floor/plasteel/white, /area/science/mixing) +"kTU" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/wall/r_wall, +/area/chapel/office) +"lag" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "lak" = ( /turf/open/floor/plasteel/white/side{ dir = 10 }, /area/science/circuit) +"lem" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/hydroponics/soil, +/obj/item/seeds/grape, +/turf/open/floor/plasteel, +/area/hydroponics/garden/abandoned{ + name = "Maintenance Garden" + }) "loI" = ( /obj/machinery/autolathe, /obj/machinery/door/window/southleft{ @@ -127222,6 +127240,13 @@ }, /turf/open/floor/plasteel/dark, /area/science/mixing) +"lva" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel, +/area/maintenance/port/fore) "lyU" = ( /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix{ dir = 8 @@ -127277,20 +127302,6 @@ }, /turf/open/floor/plasteel, /area/science/circuit) -"lLY" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/closet/crate/coffin, -/turf/open/floor/plasteel/dark, -/area/chapel/office) "lOY" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 @@ -127349,16 +127360,38 @@ dir = 1 }, /area/science/circuit) -"mbd" = ( -/obj/structure/cable/white{ - icon_state = "4-8" +"lYm" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ - dir = 8 + dir = 4 + }, +/obj/effect/turf_decal/delivery, +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" }, /turf/open/floor/plasteel, /area/maintenance/port/aft) +"mhH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/office) "mkm" = ( /obj/machinery/atmospherics/components/binary/valve, /obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix{ @@ -127377,21 +127410,9 @@ }, /turf/open/floor/plasteel/dark, /area/science/mixing) -"mpP" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, +"mqT" = ( /turf/open/floor/plasteel, -/area/maintenance/port/fore) +/area/security/prison) "mvm" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -127418,23 +127439,31 @@ /obj/item/assembly/signaler, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) -"mPj" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 +"mIQ" = ( +/obj/machinery/button/crematorium{ + id = "cremawheat"; + pixel_x = -26; + req_access_txt = "27" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/turf/open/floor/plating, -/area/chapel/office) -"mPH" = ( /obj/structure/table, -/obj/machinery/computer/libraryconsole/bookmanagement, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/structure/cable/white{ - icon_state = "2-8" - }, -/turf/open/floor/plating, -/area/security/prison) +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/turf/open/floor/plasteel/dark, +/area/chapel/office) "mQE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -127458,35 +127487,38 @@ }, /turf/open/floor/engine, /area/science/mixing) -"nbW" = ( -/obj/structure/grille, -/turf/open/space, -/area/space/nearstation) "nyN" = ( /obj/machinery/vending/kink, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) -"nFW" = ( -/obj/machinery/door/poddoor{ - id = "chapelgun"; - name = "Chapel Launcher Door" - }, -/obj/structure/fans/tiny, -/turf/open/floor/plating, -/area/chapel/office) -"nNX" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/plasteel, -/area/maintenance/port/fore) "nSh" = ( /obj/machinery/atmospherics/pipe/simple/general/hidden, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) -"oHk" = ( +"nUj" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/maintenance/port/aft) +"nZa" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/window{ + req_one_access_txt = "48,50" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/quartermaster/sorting) +"oDr" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -127499,7 +127531,7 @@ }, /obj/machinery/computer/arcade{ icon_state = "arcade"; - dir = 1 + dir = 4 }, /turf/open/floor/plasteel/dark, /area/maintenance/starboard/fore) @@ -127601,39 +127633,6 @@ }, /turf/open/floor/wood, /area/bridge/showroom/corporate) -"oZY" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/maintenance/port/aft) -"pfC" = ( -/obj/machinery/seed_extractor, -/obj/item/reagent_containers/glass/bucket, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) -"pgU" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/hydroponics/soil, -/obj/item/seeds/lime{ - pixel_x = 6 - }, -/turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) "pmQ" = ( /obj/structure/table/reinforced, /obj/machinery/newscaster{ @@ -127644,22 +127643,6 @@ dir = 1 }, /area/science/circuit) -"pnK" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/machinery/keycard_auth{ - pixel_x = -25 - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "poI" = ( /obj/structure/bed, /obj/item/tank/internals/anesthetic, @@ -127691,6 +127674,36 @@ }, /turf/open/floor/plating, /area/science/research/abandoned) +"pDQ" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/maintenance/port/fore) +"pLz" = ( +/obj/structure/sign/warning/nosmoking, +/turf/closed/wall, +/area/medical/surgery) +"pPt" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/bodycontainer/morgue, +/turf/open/floor/plasteel/dark, +/area/chapel/office) "pQm" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -127708,47 +127721,7 @@ }, /turf/open/floor/plasteel, /area/science/research/abandoned) -"qhc" = ( -/obj/structure/table/reinforced, -/obj/item/integrated_electronics/analyzer, -/obj/item/integrated_electronics/debugger, -/obj/item/integrated_electronics/wirer, -/turf/open/floor/plasteel/white/side{ - dir = 9 - }, -/area/science/circuit) -"qnx" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input, -/turf/open/floor/engine/vacuum, -/area/science/mixing) -"qoc" = ( -/obj/machinery/door/window/northleft{ - name = "Mass Driver" - }, -/obj/machinery/mass_driver{ - id = "chapelgun"; - name = "Holy Driver" - }, -/turf/open/floor/plating, -/area/chapel/office) -"qpq" = ( -/turf/open/floor/plasteel/white/side{ - dir = 5 - }, -/area/science/circuit) -"qAV" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/light/small, -/turf/open/floor/plasteel, -/area/maintenance/port/fore) -"qBG" = ( -/obj/effect/spawner/lootdrop/keg, -/turf/open/floor/plating, -/area/crew_quarters/abandoned_gambling_den) -"ray" = ( +"qbg" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 }, @@ -127769,6 +127742,42 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/office) +"qhc" = ( +/obj/structure/table/reinforced, +/obj/item/integrated_electronics/analyzer, +/obj/item/integrated_electronics/debugger, +/obj/item/integrated_electronics/wirer, +/turf/open/floor/plasteel/white/side{ + dir = 9 + }, +/area/science/circuit) +"qkw" = ( +/obj/effect/landmark/barthpot, +/turf/open/floor/wood, +/area/library) +"qnx" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input, +/turf/open/floor/engine/vacuum, +/area/science/mixing) +"qpq" = ( +/turf/open/floor/plasteel/white/side{ + dir = 5 + }, +/area/science/circuit) +"qzY" = ( +/obj/machinery/door/window/northright{ + name = "Coffin Storage" + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/closet/crate/coffin, +/turf/open/floor/plating, +/area/chapel/office) +"qBG" = ( +/obj/effect/spawner/lootdrop/keg, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) "rhO" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 @@ -127777,42 +127786,23 @@ dir = 9 }, /area/science/circuit) -"rqh" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) "rCv" = ( /turf/open/floor/plasteel/white/side{ dir = 6 }, /area/science/circuit) -"rIi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +"rTc" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/chapel/office) -"rKU" = ( +/obj/machinery/vr_sleeper, /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/structure/cable/white{ - icon_state = "2-4" +/turf/open/floor/plating{ + icon_state = "platingdmg2" }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/maintenance/port/aft) +/area/security/prison) "rUD" = ( /obj/machinery/meter, /obj/machinery/atmospherics/pipe/manifold/general/visible{ @@ -127854,57 +127844,66 @@ /obj/effect/decal/remains/xeno, /turf/open/floor/engine/vacuum, /area/science/mixing) -"sfL" = ( -/turf/open/space, -/area/space) +"siB" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/closet/crate/coffin, +/turf/open/floor/plating, +/area/chapel/office) "svv" = ( /obj/machinery/door/poddoor/incinerator_toxmix, /turf/open/floor/engine/vacuum, /area/science/mixing) -"sww" = ( -/obj/effect/decal/cleanable/dirt, -/turf/closed/wall/r_wall, -/area/chapel/office) -"sCQ" = ( -/obj/effect/turf_decal/tile/neutral{ +"sBk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, /obj/effect/turf_decal/tile/neutral{ - dir = 8 + dir = 4 }, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/bodycontainer/morgue, -/turf/open/floor/plasteel/dark, -/area/chapel/office) -"sVX" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/turf/open/floor/plasteel{ + heat_capacity = 1e+006 }, -/obj/effect/turf_decal/tile/neutral{ +/area/maintenance/port/aft) +"tma" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/effect/turf_decal/tile/brown{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/tile/brown{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 +/obj/effect/turf_decal/tile/brown{ + dir = 8 }, -/obj/machinery/airalarm{ - dir = 2; - pixel_y = 22 +/obj/machinery/keycard_auth{ + pixel_x = -25 }, -/turf/open/floor/plasteel/dark, -/area/chapel/office) +/turf/open/floor/plasteel, +/area/quartermaster/qm) "tmi" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, /turf/open/floor/plasteel, /area/science/circuit) +"tra" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/plasteel/dark, +/area/chapel/office) "twt" = ( /obj/machinery/vr_sleeper, /obj/effect/turf_decal/tile/neutral{ @@ -127912,7 +127911,7 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) -"tBE" = ( +"tzT" = ( /obj/structure/cable/white{ icon_state = "1-2" }, @@ -127945,22 +127944,16 @@ /obj/machinery/chem_heater, /turf/open/floor/plasteel/white, /area/medical/medbay/central) -"tVN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +"umo" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/cobweb, +/obj/item/storage/crayons, +/obj/item/storage/crayons, +/obj/structure/cable/white{ + icon_state = "4-8" }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/chapel/office) +/turf/open/floor/plasteel, +/area/security/prison) "upk" = ( /obj/machinery/door/airlock/public/glass{ name = "Holodeck Access" @@ -127993,31 +127986,10 @@ }, /turf/open/floor/plasteel/white, /area/science/misc_lab) -"usi" = ( -/obj/structure/sign/warning/electricshock{ - pixel_y = 32 - }, -/obj/machinery/vr_sleeper, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plating{ - icon_state = "platingdmg2" - }, +"uNx" = ( +/obj/item/twohanded/required/kirbyplants/random, +/turf/open/floor/plasteel, /area/security/prison) -"uuP" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/plasteel/dark, -/area/chapel/office) "uNP" = ( /obj/machinery/atmospherics/pipe/simple/general/visible, /obj/effect/turf_decal/stripes/line{ @@ -128050,6 +128022,15 @@ /obj/item/clothing/under/color/grey, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) +"vph" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/maintenance/port/fore) "vAb" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -128059,14 +128040,27 @@ }, /turf/open/floor/plasteel/white, /area/science/mixing) -"vAW" = ( -/obj/machinery/light/small, -/turf/open/floor/plasteel, -/area/security/prison) "wei" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/science/circuit) +"wjb" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/hydroponics/soil, +/obj/item/seeds/lime{ + pixel_x = 6 + }, +/turf/open/floor/plasteel, +/area/hydroponics/garden/abandoned{ + name = "Maintenance Garden" + }) +"wsI" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/maintenance/port/fore) "wAA" = ( /obj/structure/sign/nanotrasen, /turf/closed/wall/r_wall, @@ -128082,10 +128076,28 @@ /obj/effect/turf_decal/tile/purple, /turf/open/floor/plasteel/white, /area/science/misc_lab) -"wIf" = ( -/obj/item/twohanded/required/kirbyplants/random, +"wJf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"wQz" = ( +/obj/machinery/seed_extractor, +/obj/item/reagent_containers/glass/bucket, +/obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/security/prison) +/area/hydroponics/garden/abandoned{ + name = "Maintenance Garden" + }) "xaf" = ( /obj/machinery/door/airlock/public/glass{ name = "Holodeck Access" @@ -128104,20 +128116,14 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) -"xdZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +"xdG" = ( +/obj/machinery/door/poddoor{ + id = "chapelgun"; + name = "Chapel Launcher Door" }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/plasteel{ - heat_capacity = 1e+006 - }, -/area/maintenance/port/aft) +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/chapel/office) "xmt" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 @@ -128127,10 +128133,6 @@ }, /turf/open/floor/plasteel/white, /area/science/mixing) -"xuu" = ( -/obj/effect/landmark/barthpot, -/turf/open/floor/wood, -/area/library) "xwK" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -157115,7 +157117,7 @@ arB aug alg alg -eCJ +pDQ aKg alf aMO @@ -157372,7 +157374,7 @@ aAb aAb aAb aAb -gKo +vph aKh alf aMN @@ -157630,7 +157632,7 @@ aCv aFJ aAb aIH -nNX +eIC alf aMP aDw @@ -158144,7 +158146,7 @@ aEB aFL aAb aIH -ePi +lva avm arB arB @@ -158396,7 +158398,7 @@ alf aAb aBj aCv -pfC +wQz aEC aFM aAb @@ -158527,7 +158529,7 @@ edL eep eff aad -rqh +lag aaa ajr aaa @@ -158653,7 +158655,7 @@ alg aAb aBk aCv -gLe +lem aEC aFN aAb @@ -158784,7 +158786,7 @@ edM eeq dLY aad -nbW +hds aaa aad aaa @@ -158915,7 +158917,7 @@ aED aFO aHm aII -qAV +euu aLz aMR aOq @@ -159172,7 +159174,7 @@ aEE aFP aHn aIJ -gVZ +wsI aLz aMS aOr @@ -159424,12 +159426,12 @@ ayX aAb aBn aCx -pgU +wjb aCv aFQ aAb -mpP -gVZ +hig +wsI aLz aMT aOs @@ -159802,7 +159804,7 @@ dXz dYt dON dOl -rKU +gER eaX dYu ect @@ -160058,8 +160060,8 @@ dON dON dON dON -xdZ -mbd +sBk +nUj ebc ebQ ecu @@ -160200,7 +160202,7 @@ aAb aAb aAb aIL -ePi +lva aLz aLz aLz @@ -160321,12 +160323,12 @@ dZN dZN dZN dZN -hix +jPL dZN dZN dLY aad -rqh +lag aad aad aaa @@ -160457,7 +160459,7 @@ aEG aFS aHp aIM -tBE +tzT aLB aFS aEG @@ -160572,20 +160574,20 @@ dWJ dLW dYu dZg -fLh -oZY +lYm +hUt dZN -gut -krb -ray -qoc -mPj -nFW +hsc +gkl +qbg +jTP +ktV +xdG aaa -sfL +hJk aaa aaa -sfL +hJk aaa aaa aaa @@ -160761,7 +160763,7 @@ caG chU cjt ckR -xuu +qkw cnR cpv cqQ @@ -160831,12 +160833,12 @@ dTw dTw dZN dZN -sww -sVX -hTX -hTX -fCs -giN +kTU +agv +eHb +eHb +qzY +siB dTw aad aad @@ -161080,17 +161082,17 @@ dRB dSz dTx dUi -lLY +iUn dVN -lLY +iUn dXB dYv dTw dZO -fXF -sCQ -tVN -uuP +mIQ +pPt +mhH +tra dTw dTw dTw @@ -161343,7 +161345,7 @@ dUj dXC dYw dZh -rIi +wJf eau edr ebS @@ -168165,7 +168167,7 @@ aCP avQ aFe aGp -kKn +nZa aJg aKF aLP @@ -170722,7 +170724,7 @@ aox apu aqy arb -ioW +flG aig auA avU @@ -171489,7 +171491,7 @@ akU alI amE anz -kiJ +oDr apw aqA apy @@ -172007,7 +172009,7 @@ aiC apy apy apu -oHk +iZm atw auD avW @@ -174932,7 +174934,7 @@ dkv dma dma dma -iho +pLz dsI dro dvz @@ -175368,7 +175370,7 @@ aaa aaa aad aQR -pnK +tma aUq aVR aXF @@ -179471,7 +179473,7 @@ aaa aaa aaa aaa -rqh +lag aFm aIc aFm @@ -179728,9 +179730,9 @@ aaa aaa aaa aaa -rqh +lag aFm -kqa +umo bbt aFm aMc @@ -179985,10 +179987,10 @@ aaa aaa aaa aaa -rqh +lag aFm -hsy -vAW +jie +gug aFm aKV aNy @@ -180244,10 +180246,10 @@ ajr ajr aad aFm -usi -gBd -wIf -gBd +rTc +mqT +uNx +mqT aNz aPh aQZ @@ -180501,7 +180503,7 @@ ajr aad aad aFn -mPH +dWi aJA aJA aMe diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 3516d61080..f2eab05785 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -3528,6 +3528,7 @@ pixel_x = -22 }, /obj/structure/rack, +/obj/item/storage/fancy/donut_box, /obj/item/gun/energy/e_gun/dragnet, /obj/item/gun/energy/e_gun/dragnet, /obj/effect/turf_decal/tile/neutral{ @@ -4003,7 +4004,8 @@ dir = 8 }, /obj/structure/rack, -/obj/item/storage/fancy/donut_box, +/obj/item/gun/energy/pumpaction/blaster, +/obj/item/gun/energy/pumpaction/blaster, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "ahJ" = ( @@ -27115,10 +27117,6 @@ /obj/effect/turf_decal/tile/neutral{ dir = 2 }, -/obj/structure/sign/departments/custodian{ - pixel_x = 32; - pixel_y = -32 - }, /turf/open/floor/plasteel, /area/hallway/primary/central) "baI" = ( @@ -83446,10 +83444,6 @@ }, /turf/open/floor/plasteel/white, /area/science/lab) -"iCn" = ( -/obj/machinery/vr_sleeper, -/turf/open/floor/plasteel, -/area/security/prison) "iLj" = ( /obj/structure/table, /turf/open/floor/plating, @@ -83468,16 +83462,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/dark, /area/crew_quarters/fitness/recreation) -"jhu" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/door/airlock/public/glass{ - id_tag = "permahydro"; - name = "Recreation Module" - }, -/turf/open/floor/plasteel, -/area/security/prison) "jwW" = ( /turf/closed/wall/mineral/plastitanium, /area/crew_quarters/fitness/recreation) @@ -83535,6 +83519,16 @@ "krD" = ( /turf/closed/wall, /area/science/circuit) +"kwg" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/public/glass{ + id_tag = "permahydro"; + name = "Recreation Module" + }, +/turf/open/floor/plasteel, +/area/security/prison) "kwI" = ( /obj/item/wrench, /obj/item/clothing/suit/apron, @@ -83595,6 +83589,10 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) +"kRT" = ( +/obj/machinery/vr_sleeper, +/turf/open/floor/plasteel, +/area/security/prison) "kVo" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -83614,6 +83612,13 @@ /obj/item/integrated_circuit_printer, /turf/open/floor/plasteel/white, /area/science/circuit) +"lmg" = ( +/obj/machinery/computer/arcade{ + icon_state = "arcade"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) "lsv" = ( /obj/machinery/power/apc{ areastring = "/area/science/circuit"; @@ -83662,10 +83667,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"lWL" = ( -/obj/machinery/smartfridge/organ/preloaded, -/turf/closed/wall, -/area/medical/surgery) "lWY" = ( /obj/machinery/door/airlock/hatch{ name = "Telecomms Server Room" @@ -83787,6 +83788,13 @@ /obj/item/storage/fancy/candle_box, /turf/open/floor/engine/cult, /area/library) +"oba" = ( +/obj/structure/chair/stool, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) "obb" = ( /obj/structure/target_stake, /obj/effect/turf_decal/stripes/line{ @@ -84055,20 +84063,6 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/cryopod) -"ram" = ( -/obj/machinery/computer/arcade{ - icon_state = "arcade"; - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/prison) -"roa" = ( -/obj/structure/chair/stool, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/security/prison) "rzX" = ( /obj/structure/chair/office/light{ dir = 1; @@ -84082,17 +84076,6 @@ }, /turf/open/floor/plasteel/white, /area/science/lab) -"rLV" = ( -/obj/structure/table, -/obj/item/folder, -/obj/item/paper/guides/jobs/hydroponics, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/item/pen, -/obj/item/storage/crayons, -/turf/open/floor/plasteel, -/area/security/prison) "rMS" = ( /obj/machinery/status_display/supply, /turf/closed/wall, @@ -84288,6 +84271,15 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) +"uHA" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/security/prison) "uJU" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -84372,6 +84364,10 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space) +"vPN" = ( +/obj/machinery/smartfridge/organ/preloaded, +/turf/closed/wall, +/area/medical/surgery) "wdu" = ( /obj/structure/grille, /obj/structure/lattice, @@ -84444,6 +84440,17 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/science/misc_lab) +"xcb" = ( +/obj/structure/table, +/obj/item/folder, +/obj/item/paper/guides/jobs/hydroponics, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/item/pen, +/obj/item/storage/crayons, +/turf/open/floor/plasteel, +/area/security/prison) "xeC" = ( /obj/machinery/light, /turf/open/floor/plasteel/dark, @@ -84500,15 +84507,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) -"xIi" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel, -/area/security/prison) "xVl" = ( /turf/closed/wall, /area/hallway/secondary/service) @@ -104239,7 +104237,7 @@ cia cia cpX cia -lWL +vPN cia ceu dyg @@ -106712,11 +106710,11 @@ aaa aaf aaf aay -rLV -xIi +xcb +uHA abC -jhu -xIi +kwg +uHA abC abC acr @@ -106970,10 +106968,10 @@ aaf aaa aax abl -roa -ram +oba +lmg aax -iCn +kRT aaR aaR aaI diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index 99c536bd3c..de42e1ac63 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -3571,6 +3571,14 @@ }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"Wt" = ( +/obj/effect/baseturf_helper/lava_land/surface, +/turf/closed/wall, +/area/mine/laborcamp/security) +"Wz" = ( +/obj/effect/mapping_helpers/planet_z, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) "WA" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 @@ -3622,6 +3630,26 @@ }, /turf/open/floor/plasteel, /area/mine/production) +"WF" = ( +/obj/effect/baseturf_helper/lava_land/surface, +/turf/closed/wall, +/area/mine/laborcamp) +"WH" = ( +/obj/effect/baseturf_helper/lava_land/surface, +/turf/closed/wall, +/area/mine/eva) +"WI" = ( +/obj/effect/baseturf_helper/lava_land/surface, +/turf/closed/wall, +/area/mine/production) +"WJ" = ( +/obj/effect/baseturf_helper/lava_land/surface, +/turf/closed/wall/r_wall, +/area/mine/maintenance) +"WK" = ( +/obj/effect/baseturf_helper/lava_land/surface, +/turf/closed/wall, +/area/mine/living_quarters) (1,1,1) = {" aa @@ -3878,7 +3906,7 @@ aj aj aj aj -aj +Wz "} (2,1,1) = {" aa @@ -8723,7 +8751,7 @@ aq WB aq bi -aq +WF WC aq bZ @@ -8984,7 +9012,7 @@ az az aq ca -ca +Wt ca aj aj @@ -12074,7 +12102,7 @@ ai cQ dk dA -cQ +WJ ed er eM @@ -13106,7 +13134,7 @@ dR ef es dZ -cM +WK fg cM cM @@ -20292,9 +20320,9 @@ bt bH bV cq -bf -bq +WH bq +WI db bP bP diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index b9462f214d..be4128208a 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -2812,6 +2812,7 @@ /obj/structure/table, /obj/item/storage/box/firingpins, /obj/item/storage/box/firingpins, +/obj/item/key/security, /obj/machinery/power/apc/highcap/five_k{ dir = 4; name = "Armory APC"; @@ -3847,7 +3848,8 @@ "akN" = ( /obj/effect/landmark/event_spawn, /obj/structure/rack, -/obj/item/key/security, +/obj/item/gun/energy/pumpaction/blaster, +/obj/item/gun/energy/pumpaction/blaster, /turf/open/floor/plasteel/dark, /area/security/armory) "akO" = ( @@ -24559,6 +24561,12 @@ /obj/machinery/shieldwallgen, /turf/open/floor/plating, /area/maintenance/department/cargo) +"bfQ" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/dark, +/area/security/prison) "bfY" = ( /obj/machinery/atmospherics/pipe/simple/cyan/hidden, /obj/effect/turf_decal/tile/neutral, @@ -40134,14 +40142,6 @@ /obj/structure/lattice/catwalk, /turf/open/space, /area/space/nearstation) -"bNE" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/department/chapel/monastery) "bNF" = ( /obj/item/stack/medical/bruise_pack, /turf/open/floor/plasteel/dark, @@ -46926,6 +46926,16 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/office) +"ceG" = ( +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/obj/structure/rack, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/chapel/monastery) "ceH" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 @@ -51962,6 +51972,12 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/library/lounge) +"cxW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/hallway/secondary/entry) "cxX" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -53143,9 +53159,6 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/office) -"dpc" = ( -/turf/open/floor/plasteel/white, -/area/hallway/secondary/entry) "dps" = ( /obj/machinery/status_display/ai, /turf/closed/wall, @@ -53378,6 +53391,18 @@ /obj/machinery/shieldwallgen/xenobiologyaccess, /turf/open/floor/plating, /area/maintenance/department/engine) +"dQj" = ( +/mob/living/simple_animal/bot/secbot{ + arrest_type = 1; + health = 45; + icon_state = "secbot1"; + idcheck = 1; + name = "Sergeant-at-Armsky"; + on = 1; + weaponscheck = 1 + }, +/turf/open/floor/plasteel/dark, +/area/security/armory) "dSp" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste{ dir = 1 @@ -53388,12 +53413,35 @@ /obj/item/chair, /turf/open/floor/wood, /area/maintenance/department/engine) +"dTz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-10" + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main/monastery) "dTV" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) +"dUI" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/hallway/secondary/entry) "dVI" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 4; @@ -53424,12 +53472,6 @@ }, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"dYe" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel/dark, -/area/security/prison) "dZj" = ( /obj/machinery/atmospherics/pipe/manifold/green/visible, /obj/machinery/airalarm/engine{ @@ -53453,6 +53495,10 @@ }, /turf/open/floor/plating, /area/lawoffice) +"ebT" = ( +/mob/living/simple_animal/hostile/retaliate/goose, +/turf/open/floor/wood, +/area/maintenance/department/crew_quarters/dorms) "edl" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -53505,13 +53551,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) -"eit" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) "eiV" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 4 @@ -53519,20 +53558,26 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) +"ejJ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/white, +/area/hallway/secondary/entry) "ekU" = ( /obj/effect/decal/cleanable/cobweb{ icon_state = "cobweb2" }, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"ekV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/white, +/area/hallway/secondary/entry) "elk" = ( /obj/structure/chair/office/dark, /turf/open/floor/wood, /area/lawoffice) -"epg" = ( -/obj/structure/lattice, -/turf/open/space, -/area/space) "epj" = ( /obj/machinery/cryopod{ dir = 8 @@ -53721,16 +53766,6 @@ icon_state = "platingdmg3" }, /area/maintenance/department/science) -"eNc" = ( -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 3; - name = "3maintenance loot spawner" - }, -/obj/structure/rack, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/department/chapel/monastery) "eNq" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -53755,6 +53790,12 @@ }, /turf/closed/wall, /area/maintenance/department/security/brig) +"eQa" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/maintenance/department/chapel/monastery) "eQN" = ( /obj/structure/chair/stool, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -53809,12 +53850,6 @@ }, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"eVT" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/hallway/secondary/entry) "eWi" = ( /obj/structure/cable{ icon_state = "0-4" @@ -53902,6 +53937,9 @@ }, /turf/open/floor/plasteel, /area/construction/mining/aux_base) +"ffK" = ( +/turf/open/space/basic, +/area/hallway/secondary/entry) "fhM" = ( /obj/item/storage/secure/safe{ pixel_x = -22 @@ -53928,6 +53966,16 @@ }, /turf/open/floor/plasteel/white, /area/science/explab) +"fjC" = ( +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/obj/structure/rack, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/chapel/monastery) "fjD" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 9 @@ -54153,6 +54201,17 @@ }, /turf/open/floor/engine, /area/engine/supermatter) +"fCC" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Monastery Transit" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white{ + heat_capacity = 1e+006 + }, +/area/hallway/secondary/entry) "fFv" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/firealarm{ @@ -54612,6 +54671,14 @@ /obj/item/clothing/glasses/welding, /turf/open/floor/plasteel/dark, /area/science/lab) +"gFw" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/chapel/monastery) "gGy" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -54725,6 +54792,17 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"gOI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/public/glass{ + name = "Monastery Transit" + }, +/turf/open/floor/plasteel/white{ + heat_capacity = 1e+006 + }, +/area/chapel/dock) "gPV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 @@ -54748,14 +54826,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/cargo) -"gTy" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/lattice, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) "gUb" = ( /obj/structure/chair/office/dark{ dir = 4 @@ -54787,6 +54857,14 @@ /obj/structure/grille, /turf/open/space/basic, /area/space/nearstation) +"haq" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Monastery Transit" + }, +/turf/open/floor/plasteel/white{ + heat_capacity = 1e+006 + }, +/area/chapel/dock) "haA" = ( /obj/structure/table, /obj/item/stack/sheet/metal/fifty, @@ -54996,14 +55074,12 @@ }, /turf/open/floor/plating, /area/maintenance/solars/port) -"hCb" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Monastery Transit" +"hCR" = ( +/obj/machinery/light/small, +/turf/open/floor/plating{ + icon_state = "panelscorched" }, -/turf/open/floor/plasteel/white{ - heat_capacity = 1e+006 - }, -/area/hallway/secondary/entry) +/area/maintenance/department/chapel/monastery) "hDG" = ( /obj/machinery/door/airlock/engineering{ name = "Auxillary Base Construction"; @@ -55387,6 +55463,9 @@ "iqc" = ( /turf/open/floor/plasteel/stairs/right, /area/maintenance/department/crew_quarters/dorms) +"irD" = ( +/turf/open/floor/plasteel/white, +/area/hallway/secondary/entry) "irM" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/line{ @@ -55426,18 +55505,6 @@ }, /turf/open/floor/plasteel/dark, /area/science/xenobiology) -"ivO" = ( -/mob/living/simple_animal/bot/secbot{ - arrest_type = 1; - health = 45; - icon_state = "secbot1"; - idcheck = 1; - name = "Sergeant-at-Armsky"; - on = 1; - weaponscheck = 1 - }, -/turf/open/floor/plasteel/dark, -/area/security/armory) "iwe" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /obj/effect/turf_decal/tile/blue{ @@ -55575,21 +55642,6 @@ }, /turf/open/floor/plasteel, /area/science/xenobiology) -"iLR" = ( -/obj/structure/table, -/obj/structure/bedsheetbin, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/structure/window/reinforced, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plasteel/cafeteria, -/area/security/prison) "iPj" = ( /obj/machinery/igniter{ id = "xenoigniter"; @@ -55620,19 +55672,6 @@ }, /turf/open/floor/plasteel/dark, /area/science/xenobiology) -"iPH" = ( -/obj/machinery/vr_sleeper{ - icon_state = "sleeper"; - dir = 8 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/turf/open/floor/plasteel/cafeteria, -/area/security/prison) "iPO" = ( /obj/machinery/door/poddoor/shutters{ id = "aux_base_shutters"; @@ -55685,12 +55724,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/cargo) -"iXx" = ( -/obj/machinery/light/small, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/department/chapel/monastery) "jcT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 @@ -55711,6 +55744,13 @@ dir = 1 }, /area/hallway/secondary/exit/departure_lounge) +"jfr" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "jgr" = ( /obj/machinery/door/airlock/grunge{ name = "Library" @@ -55973,10 +56013,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/science) -"jSa" = ( -/obj/machinery/door/airlock/maintenance, -/turf/open/floor/plating, -/area/chapel/main/monastery) "jTh" = ( /obj/structure/cable{ icon_state = "1-2" @@ -55998,6 +56034,14 @@ }, /turf/open/floor/carpet, /area/lawoffice) +"jTN" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/lattice, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "jTU" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/structure/cable/yellow{ @@ -56167,16 +56211,16 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/aft) -"koE" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space) "kpK" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, /turf/open/floor/plating, /area/maintenance/department/engine) +"kqV" = ( +/obj/structure/lattice, +/turf/open/space, +/area/space) "krU" = ( /obj/structure/chair{ dir = 4 @@ -56190,6 +56234,10 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) +"kuT" = ( +/obj/machinery/door/airlock/maintenance, +/turf/open/floor/plating, +/area/maintenance/department/engine) "kvj" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -56247,6 +56295,15 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"kzK" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/cafeteria, +/area/security/prison) "kAa" = ( /obj/structure/chair{ dir = 8 @@ -56350,23 +56407,9 @@ }, /turf/open/floor/plasteel/dark, /area/science/xenobiology) -"kGe" = ( -/obj/structure/transit_tube/horizontal, -/obj/structure/sign/departments/holy{ - pixel_x = -32 - }, -/turf/open/floor/plating, -/area/hallway/secondary/entry) -"kIc" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Monastery Transit" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white{ - heat_capacity = 1e+006 - }, +"kGc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white, /area/hallway/secondary/entry) "kIo" = ( /obj/structure/table, @@ -56402,6 +56445,16 @@ /obj/structure/closet, /turf/open/floor/plating, /area/maintenance/department/cargo) +"kLT" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/rack, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/chapel/monastery) "kNf" = ( /obj/machinery/door/window/northleft{ base_state = "right"; @@ -56469,11 +56522,6 @@ }, /turf/open/floor/plasteel/dark, /area/science/xenobiology) -"kSb" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space/basic, -/area/space) "kSF" = ( /obj/structure/cable{ icon_state = "1-4" @@ -56511,12 +56559,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"kVy" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel/white, -/area/hallway/secondary/entry) "kWQ" = ( /obj/machinery/atmospherics/pipe/simple/orange/visible, /obj/structure/cable/yellow{ @@ -56530,23 +56572,6 @@ }, /turf/open/floor/engine, /area/engine/engineering) -"kXx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-10" - }, -/turf/open/floor/plasteel/dark, -/area/chapel/main/monastery) "kYM" = ( /obj/structure/extinguisher_cabinet{ pixel_x = 27 @@ -56683,12 +56708,20 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/engine/engineering) -"lxI" = ( -/obj/effect/landmark/xeno_spawn, -/turf/open/floor/plating{ - icon_state = "platingdmg1" +"ltB" = ( +/obj/structure/cable{ + icon_state = "2-8" }, -/area/maintenance/department/chapel/monastery) +/turf/open/floor/plasteel/dark, +/area/security/prison) +"lxm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white{ + heat_capacity = 1e+006 + }, +/area/chapel/dock) "lzJ" = ( /obj/structure/closet/crate/bin, /turf/open/floor/carpet, @@ -56994,11 +57027,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/engine/engineering) -"mgU" = ( -/obj/effect/landmark/carpspawn, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space) "mhl" = ( /obj/machinery/power/emitter, /obj/machinery/light{ @@ -57032,6 +57060,12 @@ }, /turf/open/floor/engine, /area/engine/engineering) +"mjk" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/hallway/secondary/entry) "mjn" = ( /obj/machinery/jukebox, /turf/open/floor/plasteel/dark, @@ -57155,6 +57189,15 @@ /obj/item/gun/ballistic/shotgun/toy, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"mwl" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/cafeteria, +/area/security/prison) "mwG" = ( /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -57163,6 +57206,12 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/engine/engineering) +"mxu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/hallway/secondary/entry) "mxy" = ( /obj/machinery/power/terminal{ dir = 4 @@ -57296,14 +57345,6 @@ /obj/machinery/space_heater, /turf/open/floor/plating, /area/maintenance/department/science) -"mSY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white{ - heat_capacity = 1e+006 - }, -/area/chapel/dock) "mTS" = ( /obj/structure/cable{ icon_state = "4-8" @@ -57313,12 +57354,6 @@ }, /turf/open/floor/plasteel/dark, /area/science/xenobiology) -"mVD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/hallway/secondary/entry) "mVM" = ( /turf/open/floor/plating/airless, /area/space/nearstation) @@ -57396,12 +57431,6 @@ /obj/item/chair/stool, /turf/open/floor/carpet, /area/maintenance/department/crew_quarters/dorms) -"nho" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/hallway/secondary/entry) "nih" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/costume, @@ -57441,6 +57470,11 @@ /obj/item/stack/spacecash/c10, /turf/open/floor/plasteel/dark, /area/maintenance/department/crew_quarters/dorms) +"nog" = ( +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/chapel/monastery) "noC" = ( /obj/machinery/vending/kink, /turf/open/floor/wood, @@ -57672,11 +57706,6 @@ }, /turf/open/floor/engine, /area/science/explab) -"nKo" = ( -/obj/structure/lattice, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) "nLl" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -57803,12 +57832,20 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/hallway/secondary/exit/departure_lounge) +"nYM" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/white, +/area/hallway/secondary/entry) "nZw" = ( /obj/machinery/door/airlock/abandoned{ name = "Backup Laboratory" }, /turf/open/floor/plating, /area/maintenance/department/cargo) +"obh" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/department/chapel/monastery) "obj" = ( /obj/structure/cable{ icon_state = "4-8" @@ -57833,10 +57870,6 @@ initial_gas_mix = "o2=0.01;n2=0.01" }, /area/maintenance/department/science) -"odM" = ( -/obj/effect/landmark/barthpot, -/turf/open/floor/carpet, -/area/library/lounge) "oep" = ( /obj/structure/table/glass, /obj/item/paper_bin, @@ -57869,6 +57902,14 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"ogn" = ( +/obj/structure/lattice, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/open/space, +/area/space/nearstation) "ohR" = ( /obj/item/chair, /turf/open/floor/plating, @@ -57962,15 +58003,13 @@ }, /turf/open/floor/plating/airless, /area/space/nearstation) -"ovB" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 +"ovg" = ( +/obj/structure/transit_tube/horizontal, +/obj/structure/sign/departments/holy{ + pixel_x = -32 }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/plasteel/cafeteria, -/area/security/prison) +/turf/open/floor/plating, +/area/hallway/secondary/entry) "ovM" = ( /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ dir = 4 @@ -58007,10 +58046,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/storage/primary) -"ozO" = ( -/obj/machinery/door/airlock/maintenance, -/turf/open/floor/plating, -/area/maintenance/department/engine) "oAw" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -58380,12 +58415,6 @@ }, /turf/open/floor/plating, /area/science/explab) -"peE" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel/dark, -/area/security/prison) "pfz" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -58418,23 +58447,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/hallway/primary/aft) -"phS" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "garbage" - }, -/turf/open/floor/plating, -/area/maintenance/disposal) -"pia" = ( -/obj/effect/spawner/lootdrop/maintenance, -/obj/structure/rack, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/department/chapel/monastery) "pjH" = ( /obj/structure/cable{ icon_state = "1-2" @@ -58486,17 +58498,6 @@ }, /turf/open/floor/plasteel/white/corner, /area/hallway/secondary/exit/departure_lounge) -"ppY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Monastery Transit" - }, -/turf/open/floor/plasteel/white{ - heat_capacity = 1e+006 - }, -/area/chapel/dock) "prQ" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 @@ -58511,6 +58512,21 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/engine, /area/engine/supermatter) +"pua" = ( +/obj/structure/table, +/obj/structure/bedsheetbin, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/cafeteria, +/area/security/prison) "puw" = ( /obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, @@ -58560,9 +58576,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/medical/chemistry) -"pyw" = ( -/turf/open/space/basic, -/area/hallway/secondary/entry) "pBD" = ( /obj/structure/cable{ icon_state = "0-8" @@ -58589,6 +58602,12 @@ }, /turf/open/floor/plating, /area/engine/engineering) +"pDd" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/department/chapel/monastery) "pDP" = ( /obj/machinery/vending/assist, /obj/effect/turf_decal/tile/neutral{ @@ -58653,6 +58672,14 @@ /obj/structure/closet/crate, /turf/open/floor/plating, /area/maintenance/department/cargo) +"pKg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white{ + heat_capacity = 1e+006 + }, +/area/hallway/secondary/entry) "pMG" = ( /obj/structure/sink{ dir = 8; @@ -58901,10 +58928,6 @@ }, /turf/open/floor/engine, /area/engine/engineering) -"qni" = ( -/obj/machinery/smartfridge/organ/preloaded, -/turf/closed/wall, -/area/medical/surgery) "qnT" = ( /obj/machinery/iv_drip, /turf/open/floor/plating, @@ -59176,11 +59199,6 @@ }, /turf/open/floor/plasteel/dark, /area/science/xenobiology) -"qWo" = ( -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/maintenance/department/chapel/monastery) "qWG" = ( /obj/structure/closet/emcloset/anchored, /turf/open/floor/plating, @@ -59967,22 +59985,6 @@ }, /turf/open/space, /area/space/nearstation) -"tbF" = ( -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/lattice, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"tbY" = ( -/obj/structure/closet/emcloset, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel/white, -/area/hallway/secondary/entry) "tcY" = ( /obj/structure/cable{ icon_state = "4-8" @@ -60114,19 +60116,6 @@ }, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"tnP" = ( -/obj/machinery/seed_extractor, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/security/prison) "tnY" = ( /obj/machinery/button/door{ id = "aux_base_shutters"; @@ -60305,6 +60294,11 @@ icon_state = "panelscorched" }, /area/maintenance/department/engine) +"tSk" = ( +/obj/structure/lattice, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "tSL" = ( /turf/open/floor/plating{ icon_state = "panelscorched" @@ -60331,6 +60325,25 @@ }, /turf/open/floor/plasteel/white, /area/science/xenobiology) +"tZk" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Monastery Transit" + }, +/turf/open/floor/plasteel/white{ + heat_capacity = 1e+006 + }, +/area/hallway/secondary/entry) +"tZu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/hallway/secondary/entry) +"uau" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/hallway/secondary/entry) "uaC" = ( /obj/structure/chair/comfy/black{ dir = 8 @@ -60363,6 +60376,11 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/science/mixing) +"ucT" = ( +/obj/effect/landmark/carpspawn, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) "udl" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -60537,15 +60555,6 @@ /obj/machinery/light, /turf/open/floor/plasteel, /area/science/explab) -"utg" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/turf/open/floor/plasteel/cafeteria, -/area/security/prison) "uug" = ( /turf/open/floor/plating{ icon_state = "platingdmg1" @@ -60606,10 +60615,6 @@ /obj/machinery/field/generator, /turf/open/floor/plating, /area/maintenance/department/engine) -"uxI" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/white, -/area/hallway/secondary/entry) "uxP" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -60704,6 +60709,16 @@ }, /turf/closed/wall/r_wall, /area/engine/engineering) +"uJI" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/space/basic, +/area/space) +"uKS" = ( +/obj/machinery/smartfridge/organ/preloaded, +/turf/closed/wall, +/area/medical/surgery) "uLF" = ( /obj/structure/cable{ icon_state = "1-4" @@ -60740,6 +60755,10 @@ /obj/effect/turf_decal/plaque, /turf/open/floor/plating, /area/maintenance/department/engine) +"uNP" = ( +/obj/effect/landmark/barthpot, +/turf/open/floor/carpet, +/area/library/lounge) "uQR" = ( /obj/item/ammo_casing/shotgun/beanbag, /turf/open/floor/plating, @@ -60753,6 +60772,11 @@ }, /turf/open/floor/engine, /area/engine/engineering) +"uTY" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/chapel/monastery) "uUQ" = ( /obj/machinery/door/airlock/maintenance{ name = "Engineering Maintenance"; @@ -60779,6 +60803,19 @@ /obj/item/stamp/law, /turf/open/floor/carpet, /area/lawoffice) +"uWP" = ( +/obj/machinery/seed_extractor, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison) "uXG" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -60801,13 +60838,14 @@ }, /turf/open/floor/plating, /area/maintenance/solars/starboard) -"uZb" = ( -/obj/structure/lattice, -/obj/structure/window/reinforced{ - dir = 8 - }, +"uYk" = ( /obj/structure/window/reinforced, -/turf/open/space, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/lattice, +/obj/structure/lattice, +/turf/open/space/basic, /area/space/nearstation) "vay" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -60815,22 +60853,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) -"vaB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/white, -/area/hallway/secondary/entry) -"vco" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/department/chapel/monastery) -"veF" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/space/basic, -/area/space) "veM" = ( /obj/machinery/suit_storage_unit/rd, /obj/machinery/light{ @@ -60958,6 +60980,11 @@ initial_gas_mix = "o2=0.01;n2=0.01" }, /area/maintenance/department/science) +"vsc" = ( +/obj/structure/lattice, +/obj/structure/grille, +/turf/open/space/basic, +/area/space) "vsk" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -61050,12 +61077,6 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"vxZ" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/hallway/secondary/entry) "vzz" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -61128,6 +61149,13 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"vFZ" = ( +/obj/structure/closet/emcloset, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/white, +/area/hallway/secondary/entry) "vGg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 @@ -61451,6 +61479,19 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"wxa" = ( +/obj/machinery/vr_sleeper{ + icon_state = "sleeper"; + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/cafeteria, +/area/security/prison) "wxb" = ( /obj/structure/cable{ icon_state = "4-8" @@ -61498,14 +61539,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) -"wDe" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Monastery Transit" - }, -/turf/open/floor/plasteel/white{ - heat_capacity = 1e+006 - }, -/area/chapel/dock) "wDl" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/corner, @@ -61708,10 +61741,6 @@ icon_state = "platingdmg3" }, /area/maintenance/department/science) -"wUc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plasteel/white, -/area/hallway/secondary/entry) "wUf" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, @@ -61722,6 +61751,10 @@ icon_state = "panelscorched" }, /area/maintenance/department/security/brig) +"wUW" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/department/chapel/monastery) "wVC" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=Sci"; @@ -61746,25 +61779,10 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) -"wYJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/hallway/secondary/entry) "wYK" = ( /obj/machinery/power/supermatter_crystal/engine, /turf/open/floor/engine, /area/engine/supermatter) -"wZs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white{ - heat_capacity = 1e+006 - }, -/area/hallway/secondary/entry) "xah" = ( /obj/structure/cable{ icon_state = "1-2" @@ -61823,14 +61841,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood, /area/lawoffice) -"xeN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/white, -/area/hallway/secondary/entry) -"xgh" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/maintenance/department/chapel/monastery) "xgG" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -61861,6 +61871,10 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"xhW" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) "xja" = ( /obj/machinery/light/small{ dir = 4 @@ -61884,10 +61898,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel, /area/hallway/primary/aft) -"xjg" = ( -/mob/living/simple_animal/hostile/retaliate/goose, -/turf/open/floor/wood, -/area/maintenance/department/crew_quarters/dorms) "xjK" = ( /obj/item/radio/intercom{ name = "Station Intercom (General)"; @@ -62120,6 +62130,10 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/dark, /area/lawoffice) +"xNw" = ( +/obj/machinery/door/airlock/maintenance, +/turf/open/floor/plating, +/area/chapel/main/monastery) "xNx" = ( /obj/structure/lattice, /obj/structure/disposalpipe/junction/flip, @@ -62162,10 +62176,13 @@ /obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plasteel/freezer, /area/storage/emergency/port) -"xSd" = ( -/obj/machinery/light/small, +"xRE" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "garbage" + }, /turf/open/floor/plating, -/area/maintenance/department/chapel/monastery) +/area/maintenance/disposal) "xSX" = ( /obj/machinery/airalarm/unlocked{ pixel_y = 23 @@ -62179,16 +62196,6 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) -"xVt" = ( -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, -/obj/structure/rack, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/department/chapel/monastery) "xWl" = ( /obj/item/pen, /obj/item/paper_bin{ @@ -62200,11 +62207,6 @@ }, /turf/open/floor/plasteel, /area/science/xenobiology) -"xYV" = ( -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/department/chapel/monastery) "ybX" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance, @@ -79925,7 +79927,7 @@ ckT xhj xhj cwK -odM +uNP xhj cxn xhj @@ -80376,7 +80378,7 @@ aaa aaa aaa aaa -pyw +ffK bsl btL aZx @@ -80392,11 +80394,11 @@ aaa aaa aaa aaa -koE +xhW aqG bGE bKf -mSY +lxm bMw bNy bNw @@ -80633,7 +80635,7 @@ aaa aaa aaa aaa -pyw +ffK aZx bcX aZx @@ -80648,12 +80650,12 @@ aaa aaa aaa aaa -koE -koE +xhW +xhW aqG bGE bKf -mSY +lxm bMx bNz bHM @@ -80904,13 +80906,13 @@ aaa aaa aaa aaa -koE -koE -koE +xhW +xhW +xhW aqG bGE -wDe -ppY +haq +gOI bHM bNA bHM @@ -80947,7 +80949,7 @@ cvc cho cvk cdx -kXx +dTz csS cfm cwe @@ -81160,11 +81162,11 @@ bVp bVp bVp bVp -eit -gTy -eit -eit -tbF +jfr +jTN +jfr +jfr +uYk aZx bIY bLs @@ -81205,7 +81207,7 @@ ciF cuQ cfm cfm -jSa +xNw cfm cwe ckp @@ -81424,7 +81426,7 @@ aZx aZx aZx bIY -wZs +pKg aZx amC aaa @@ -81433,7 +81435,7 @@ aby aby abI bSn -uZb +ogn cqS bNs bQe @@ -81670,18 +81672,18 @@ aaa aaa bGI aZx -tbY -wYJ -xeN -xeN -xeN -wYJ -xeN -eVT -dpc -vxZ +vFZ +tZu +uau +uau +uau +tZu +uau +dUI +irD +mjk bIY -nho +mxu aZx amB aht @@ -81691,7 +81693,7 @@ aaa abI abI abI -uZb +ogn bNs bNs bNs @@ -81719,7 +81721,7 @@ chr chL cfm cfN -xSd +obh cfN cfN cfN @@ -81927,18 +81929,18 @@ aaa aaa bGI aZx -mVD -dpc -dpc -dpc -wUc -vaB -vaB -vaB -vaB -vaB -vaB -kVy +cxW +irD +irD +irD +ejJ +kGc +kGc +kGc +kGc +kGc +kGc +ekV aZx amC aaa @@ -81949,7 +81951,7 @@ aaa aaa abI aaa -veF +uJI bQR bNs bNs @@ -82184,8 +82186,8 @@ aaa aaa bGI aZx -mVD -dpc +cxW +irD aZx aZx aZx @@ -82441,19 +82443,19 @@ aaa aaa aqG aZx -mVD -dpc +cxW +irD aZx -koE -koE -koE -koE -koE -koE -koE -koE -koE -koE +xhW +xhW +xhW +xhW +xhW +xhW +xhW +xhW +xhW +xhW amD aaa aht @@ -82695,11 +82697,11 @@ bon aZx aaa aaa -koE +xhW aqG aZx -mVD -dpc +cxW +irD aZx bBV bDf @@ -82955,12 +82957,12 @@ aZx aZx aZx aZx -mVD -uxI +cxW +nYM bAI -epg +kqV abI -koE +xhW abI aaa bva @@ -83004,7 +83006,7 @@ cfN cfN cfN cfN -iXx +hCR cjm cfN cfN @@ -83134,7 +83136,7 @@ abI aen aet aeH -peE +bfQ afo afG aeU @@ -83212,8 +83214,8 @@ bbR bbR bbR aZx -kIc -hCb +fCC +tZk bAJ bBX bBX @@ -83261,9 +83263,9 @@ cfN cfN cfN cfN -xYV +nog cjm -koE +xhW aaa aaa aaa @@ -83390,8 +83392,8 @@ adR aaa aem aeu -tnP -dYe +uWP +ltB aeH afH aeH @@ -83471,7 +83473,7 @@ baK aZx bxY bzz -kGe +ovg bBX bDg bEj @@ -83518,10 +83520,10 @@ cfN cfN cfN cfN -qWo +uTY cjm cjm -koE +xhW aaa aaa aaa @@ -83761,22 +83763,22 @@ bIZ cba cbT bDi -ozO +kuT cwA cwA cwA cwA -vco +pDd cwA cwA cwA cwA -xYV -bNE -xYV -qWo -lxI -xVt +nog +gFw +nog +uTY +eQa +ceG cjm aht aaa @@ -83904,8 +83906,8 @@ adR aaa aem aeW -ovB -utg +mwl +kzK afr agy agc @@ -84021,19 +84023,19 @@ ccO bIZ cjm cjm -xgh -xgh +wUW +wUW cjm cjm cjm -xgh -xgh +wUW +wUW cjm cjm cjm cjm -eNc -pia +fjC +kLT cjm aht aaa @@ -84161,9 +84163,9 @@ adR aaa aem aeX -iLR -iPH -iPH +pua +wxa +wxa agy agd agp @@ -84276,10 +84278,10 @@ bva bNK bva bva -koE -mgU -kSb -kSb +xhW +ucT +vsc +vsc aht aht mau @@ -84545,11 +84547,11 @@ aaa aaa aaa aaa -kSb -kSb -koE -koE -nKo +vsc +vsc +xhW +xhW +tSk aaa aaa aaa @@ -85205,7 +85207,7 @@ aiM ajh ajR akN -ivO +dQj amj amX anH @@ -92217,7 +92219,7 @@ bFU bFU bIn bJt -qni +uKS bFU bFU bFU @@ -99335,7 +99337,7 @@ cBk jhD cBo alQ -xjg +ebT cBw noC aiS @@ -108107,7 +108109,7 @@ aaa aLm aLm aNU -phS +xRE dqY aRv sZh @@ -108364,7 +108366,7 @@ aaa aLm aME eFG -phS +xRE dqY aRw sqQ @@ -108621,7 +108623,7 @@ aaa aLo aMF aNV -phS +xRE cvf aQn sqQ @@ -108878,7 +108880,7 @@ aaa aLo aMG aNX -phS +xRE xer aRy aSn diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 9a94fd3f61..bdd7ac4179 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -2108,6 +2108,11 @@ }, /turf/closed/indestructible/riveted, /area/space) +"fy" = ( +/obj/machinery/igniter/on, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/tdome/arena_source) "fz" = ( /turf/open/floor/plasteel, /area/tdome/arena_source) @@ -4826,7 +4831,7 @@ pixel_x = 25; specialfunctions = 4 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "mb" = ( /obj/structure/table/reinforced, @@ -6418,6 +6423,15 @@ /obj/effect/turf_decal/tile/brown, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/two) +"oV" = ( +/obj/machinery/vr_sleeper{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood, +/area/centcom/holding) "oX" = ( /obj/structure/bookcase/random, /obj/machinery/light{ @@ -6787,7 +6801,7 @@ /obj/effect/turf_decal/tile/green{ dir = 8 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/plasteel/white, /area/centcom/holding) "pH" = ( /obj/structure/table/wood, @@ -7303,7 +7317,7 @@ color = "#596479"; dir = 1 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "qQ" = ( /obj/machinery/door/airlock/centcom{ @@ -8689,7 +8703,7 @@ damtype = "stamina"; force = 30 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "tX" = ( /obj/machinery/door/airlock{ @@ -8704,7 +8718,7 @@ /area/centcom/supplypod) "tZ" = ( /obj/structure/chair/wood/normal, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "uc" = ( /obj/effect/turf_decal/tile/green{ @@ -9317,7 +9331,7 @@ /obj/effect/turf_decal/tile/green{ dir = 8 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/plasteel/white, /area/centcom/holding) "vt" = ( /obj/structure/rack, @@ -9325,7 +9339,7 @@ damtype = "stamina"; force = 30 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "vu" = ( /obj/structure/chair/stool, @@ -10350,7 +10364,7 @@ /obj/machinery/light{ dir = 8 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/grass, /area/centcom/holding) "yg" = ( /obj/structure/chair, @@ -10598,7 +10612,7 @@ /obj/structure/table/wood/bar, /obj/structure/safe/floor, /obj/item/seeds/cherry/bomb, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "yN" = ( /obj/structure/table/reinforced, @@ -11045,9 +11059,6 @@ }, /turf/open/floor/plating, /area/syndicate_mothership) -"zT" = ( -/turf/open/indestructible/boss/air, -/area/centcom/holding) "zU" = ( /obj/structure/closet/crate/freezer, /turf/open/floor/plasteel/cafeteria, @@ -11332,7 +11343,7 @@ pixel_y = 25; specialfunctions = 4 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "AD" = ( /obj/machinery/door/airlock/centcom{ @@ -11573,12 +11584,12 @@ /obj/effect/turf_decal/tile/green{ dir = 8 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/plasteel/white, /area/centcom/holding) "Bs" = ( /obj/structure/table/wood, /obj/machinery/computer/libraryconsole/bookmanagement, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Bu" = ( /obj/structure/table/wood, @@ -12451,9 +12462,15 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/evac) +"CT" = ( +/obj/machinery/vr_sleeper{ + dir = 4 + }, +/turf/open/floor/wood, +/area/centcom/holding) "CV" = ( /obj/structure/chair/stool, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "CX" = ( /obj/structure/closet/secure_closet/security, @@ -12643,14 +12660,16 @@ "Di" = ( /turf/closed/indestructible/riveted, /area/ai_multicam_room) +"Dj" = ( +/obj/machinery/vr_sleeper{ + dir = 8 + }, +/turf/open/floor/wood, +/area/centcom/holding) "Dk" = ( /obj/structure/table, /turf/open/floor/plasteel/cafeteria, /area/syndicate_mothership) -"Dl" = ( -/obj/structure/mineral_door/paperframe, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "Do" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -13245,7 +13264,7 @@ /turf/open/floor/engine/cult, /area/wizard_station) "ED" = ( -/obj/machinery/vending/boozeomat/all_access, +/obj/machinery/vending/boozeomat, /turf/closed/indestructible{ icon = 'icons/turf/walls/wood_wall.dmi'; icon_state = "wood"; @@ -13457,21 +13476,21 @@ /obj/structure/table/wood, /obj/item/instrument/piano_synth, /obj/item/instrument/guitar, -/turf/open/indestructible/hotelwood, +/turf/open/floor/carpet/black, /area/centcom/holding) "Fb" = ( /obj/structure/piano, /obj/machinery/light{ dir = 8 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/carpet/black, /area/centcom/holding) "Fc" = ( /obj/structure/sign/barsign{ pixel_y = 32 }, /obj/structure/chair/stool, -/turf/open/indestructible/hotelwood, +/turf/open/floor/carpet/black, /area/centcom/holding) "Fg" = ( /obj/structure/flora/grass/brown, @@ -13488,11 +13507,11 @@ /obj/machinery/light{ dir = 1 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Fj" = ( /obj/machinery/vending/cigarette, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Fm" = ( /obj/machinery/shower{ @@ -13780,7 +13799,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "FX" = ( /turf/open/floor/plasteel/stairs, @@ -13954,7 +13973,7 @@ /obj/machinery/light{ dir = 1 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Gu" = ( /obj/machinery/door/airlock/silver{ @@ -14327,7 +14346,7 @@ /obj/structure/chair/wood/wings{ dir = 8 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Ha" = ( /obj/effect/turf_decal/tile/brown{ @@ -14413,7 +14432,7 @@ /obj/machinery/light{ dir = 4 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/grass, /area/centcom/holding) "Hn" = ( /obj/structure/sink{ @@ -14635,7 +14654,7 @@ /area/space) "HH" = ( /obj/machinery/light, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "HI" = ( /obj/structure/sink{ @@ -14759,7 +14778,7 @@ /obj/effect/turf_decal/tile/green{ dir = 8 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/plasteel/white, /area/centcom/holding) "HR" = ( /obj/structure/sink{ @@ -15099,6 +15118,11 @@ }, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) +"Is" = ( +/obj/machinery/igniter/on, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/tdome/arena) "It" = ( /turf/open/floor/plasteel, /area/tdome/arena) @@ -16198,7 +16222,7 @@ /obj/structure/window/reinforced{ dir = 1 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "KU" = ( /obj/structure/closet/emcloset, @@ -16555,7 +16579,7 @@ /obj/effect/mob_spawn/human/ghostcafe{ dir = 8 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Mt" = ( /obj/structure/window/reinforced{ @@ -16564,7 +16588,7 @@ /obj/structure/window/reinforced{ dir = 1 }, -/turf/open/indestructible/boss/air, +/turf/open/floor/carpet/black, /area/centcom/holding) "Mu" = ( /obj/machinery/light{ @@ -16580,7 +16604,7 @@ /obj/effect/turf_decal/tile/green{ dir = 8 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/plasteel/white, /area/centcom/holding) "Mv" = ( /obj/structure/table/reinforced, @@ -16596,7 +16620,7 @@ damtype = "stamina"; force = 30 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "My" = ( /obj/docking_port/stationary{ @@ -16665,11 +16689,11 @@ /obj/machinery/light/small{ dir = 1 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "MM" = ( /obj/structure/window/reinforced, -/turf/open/indestructible/boss/air, +/turf/open/floor/carpet/black, /area/centcom/holding) "MP" = ( /obj/machinery/light{ @@ -16681,7 +16705,7 @@ /obj/machinery/light{ dir = 4 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/carpet/black, /area/centcom/holding) "MS" = ( /obj/structure/table, @@ -16715,10 +16739,6 @@ smooth = 1 }, /area/centcom/holding) -"Nf" = ( -/obj/machinery/autoylathe, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "Ni" = ( /obj/structure/table/reinforced, /obj/item/clipboard, @@ -16732,7 +16752,7 @@ /obj/structure/window/reinforced{ dir = 1 }, -/turf/open/indestructible/boss/air, +/turf/open/floor/carpet/black, /area/centcom/holding) "Nk" = ( /obj/machinery/door/airlock/centcom{ @@ -16754,7 +16774,7 @@ /obj/item/storage/fancy/candle_box, /obj/item/storage/fancy/candle_box, /obj/item/storage/box/lights/mixed, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Nn" = ( /obj/structure/closet/secure_closet/hydroponics{ @@ -16770,7 +16790,7 @@ /obj/effect/turf_decal/tile/green{ dir = 8 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/plasteel/white, /area/centcom/holding) "Nu" = ( /turf/open/floor/wood, @@ -16783,6 +16803,13 @@ /obj/machinery/recharge_station, /turf/open/floor/plasteel/white, /area/centcom/holding) +"Ny" = ( +/obj/machinery/modular_computer/console/preset/research, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/wood, +/area/centcom/holding) "Nz" = ( /obj/effect/turf_decal/tile/brown{ dir = 8 @@ -16801,7 +16828,7 @@ /obj/item/reagent_containers/medspray/synthflesh, /obj/item/reagent_containers/medspray/synthflesh, /obj/item/reagent_containers/medspray/synthflesh, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "NF" = ( /obj/structure/ladder/unbreakable/binary, @@ -16833,13 +16860,13 @@ /obj/effect/turf_decal/tile/green{ dir = 8 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/plasteel/white, /area/centcom/holding) "NT" = ( /obj/structure/window/paperframe{ CanAtmosPass = 0 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "NU" = ( /obj/machinery/door/airlock/centcom{ @@ -16909,7 +16936,7 @@ /area/centcom/control) "Ol" = ( /obj/structure/table/wood/fancy, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Om" = ( /obj/effect/turf_decal/tile/brown, @@ -16978,7 +17005,7 @@ /obj/machinery/light{ dir = 1 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "OH" = ( /obj/effect/spawner/structure/window/reinforced, @@ -16988,7 +17015,7 @@ /obj/structure/mineral_door/paperframe{ name = "Dojo" }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "OM" = ( /obj/machinery/light{ @@ -17011,7 +17038,7 @@ /obj/item/clothing/under/kilt, /obj/structure/closet, /obj/item/clothing/under/roman, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "OV" = ( /obj/machinery/light{ @@ -17035,14 +17062,14 @@ /area/centcom/supplypod) "Ph" = ( /obj/structure/closet/crate/bin, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Pl" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ dir = 4 }, -/turf/open/indestructible/boss/air, +/turf/open/floor/carpet/black, /area/centcom/holding) "Pn" = ( /turf/closed/indestructible/fakedoor{ @@ -17053,7 +17080,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/turf/open/indestructible/boss/air, +/turf/open/floor/carpet/black, /area/centcom/holding) "Pq" = ( /obj/structure/urinal{ @@ -17094,11 +17121,20 @@ /obj/structure/window/reinforced{ dir = 4 }, -/turf/open/indestructible/boss/air, +/turf/open/floor/carpet/black, /area/centcom/holding) "PD" = ( /turf/open/floor/plasteel/cafeteria, /area/syndicate_mothership) +"PF" = ( +/obj/machinery/vr_sleeper{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood, +/area/centcom/holding) "PG" = ( /obj/structure/table/reinforced, /obj/item/camera, @@ -17116,7 +17152,7 @@ /obj/effect/turf_decal/tile/green{ dir = 8 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/plasteel/white, /area/centcom/holding) "PJ" = ( /obj/effect/turf_decal/stripes/line{ @@ -17126,7 +17162,7 @@ /area/syndicate_mothership) "PL" = ( /obj/machinery/autolathe, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "PM" = ( /obj/machinery/vending/clothing{ @@ -17146,7 +17182,7 @@ /obj/effect/turf_decal/tile/green{ dir = 8 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/plasteel/white, /area/centcom/holding) "PP" = ( /obj/machinery/door/airlock/external{ @@ -17180,7 +17216,7 @@ /area/holodeck/rec_center/firingrange) "PX" = ( /obj/machinery/computer/arcade/battle, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "PY" = ( /obj/effect/turf_decal/tile/green{ @@ -17193,7 +17229,7 @@ /obj/effect/turf_decal/tile/green{ dir = 8 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/plasteel/white, /area/centcom/holding) "PZ" = ( /obj/effect/turf_decal/delivery, @@ -17222,7 +17258,7 @@ /obj/structure/flora/ausbushes/ppflowers, /obj/structure/flora/ausbushes/palebush, /obj/structure/window/reinforced/fulltile, -/turf/open/indestructible/hotelwood, +/turf/open/floor/grass, /area/centcom/holding) "Qm" = ( /obj/singularity/wizard/mapped, @@ -17277,7 +17313,7 @@ pixel_y = -25; specialfunctions = 4 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "QH" = ( /obj/machinery/chem_master/condimaster{ @@ -17295,7 +17331,7 @@ /obj/effect/turf_decal/tile/green{ dir = 8 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/plasteel/white, /area/centcom/holding) "QI" = ( /obj/structure/toilet{ @@ -17312,7 +17348,7 @@ /obj/structure/flora/ausbushes/ppflowers, /obj/structure/flora/ausbushes/palebush, /obj/structure/window/reinforced/fulltile, -/turf/open/indestructible/hotelwood, +/turf/open/floor/grass, /area/centcom/holding) "QN" = ( /obj/machinery/light{ @@ -17367,7 +17403,7 @@ /area/holodeck/rec_center/basketball) "Ra" = ( /obj/machinery/door/window/eastright, -/turf/open/indestructible/boss/air, +/turf/open/floor/carpet/black, /area/centcom/holding) "Rb" = ( /obj/effect/turf_decal/stripes/corner{ @@ -17387,7 +17423,7 @@ /obj/effect/turf_decal/tile/green{ dir = 8 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/plasteel/white, /area/centcom/holding) "Re" = ( /obj/structure/mineral_door/paperframe, @@ -17407,7 +17443,7 @@ /obj/structure/chair/wood/normal{ dir = 1 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Rj" = ( /obj/machinery/vending/hydroseeds, @@ -17421,7 +17457,7 @@ /obj/effect/turf_decal/tile/green{ dir = 8 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/plasteel/white, /area/centcom/holding) "Rl" = ( /obj/structure/mirror{ @@ -17435,7 +17471,7 @@ /obj/structure/chair/wood/wings{ dir = 3 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Ro" = ( /obj/structure/closet{ @@ -17454,14 +17490,14 @@ /obj/item/tank/internals/plasmaman/belt/full, /obj/item/tank/internals/plasmaman/belt/full, /obj/item/tank/internals/plasmaman/belt/full, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Rq" = ( /obj/machinery/light{ dir = 1; light_color = "#cee5d2" }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Ru" = ( /obj/structure/fireplace, @@ -17508,7 +17544,7 @@ pixel_x = -3; pixel_y = 3 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "RR" = ( /turf/open/floor/plasteel, @@ -17522,13 +17558,13 @@ damtype = "stamina"; force = 30 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "RX" = ( /obj/structure/chair/comfy/brown{ color = "#596479" }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "RZ" = ( /obj/effect/turf_decal/tile/bar, @@ -17548,7 +17584,7 @@ /turf/open/floor/plasteel/dark, /area/syndicate_mothership) "Sd" = ( -/turf/open/indestructible/hotelwood, +/turf/open/floor/carpet/black, /area/centcom/holding) "Sf" = ( /obj/structure/chair{ @@ -17582,7 +17618,7 @@ /obj/machinery/defibrillator_mount/loaded{ pixel_y = 28 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Sw" = ( /obj/machinery/hydroponics/constructable, @@ -17599,7 +17635,7 @@ /obj/effect/turf_decal/tile/green{ dir = 8 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/plasteel/white, /area/centcom/holding) "Sy" = ( /obj/effect/turf_decal/tile/brown{ @@ -17681,7 +17717,7 @@ /obj/item/wallframe/newscaster, /obj/item/paper_bin, /obj/item/pen/fountain, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "SV" = ( /obj/effect/turf_decal/tile/bar, @@ -17703,11 +17739,11 @@ /obj/effect/turf_decal/tile/green{ dir = 8 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/plasteel/white, /area/centcom/holding) "SY" = ( /obj/structure/table/wood, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "SZ" = ( /obj/machinery/door/airlock/wood{ @@ -17718,7 +17754,7 @@ /area/centcom/holding) "Tb" = ( /obj/structure/closet/crate/freezer/blood, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Tc" = ( /obj/machinery/button/door{ @@ -17728,7 +17764,7 @@ pixel_y = -25; specialfunctions = 4 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Tj" = ( /obj/effect/turf_decal/tile/bar, @@ -17743,7 +17779,7 @@ /obj/item/candle/infinite{ pixel_y = 6 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "To" = ( /turf/open/indestructible/airblock, @@ -17753,9 +17789,8 @@ /obj/item/stack/sheet/glass/fifty, /obj/item/stack/sheet/metal/fifty, /obj/item/storage/toolbox/mechanical, -/obj/item/stack/sheet/plastic/fifty, /obj/item/multitool, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Tr" = ( /obj/structure/closet/chefcloset, @@ -17767,7 +17802,7 @@ /obj/structure/flora/ausbushes/ppflowers, /obj/structure/flora/ausbushes/palebush, /obj/structure/window/reinforced/fulltile, -/turf/open/indestructible/hotelwood, +/turf/open/floor/grass, /area/centcom/holding) "Tw" = ( /obj/structure/closet{ @@ -17784,7 +17819,7 @@ /obj/item/clothing/head/helmet/space/plasmaman, /obj/item/clothing/head/helmet/space/plasmaman, /obj/item/clothing/head/helmet/space/plasmaman, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Tz" = ( /obj/effect/light_emitter, @@ -17814,7 +17849,7 @@ /obj/structure/mirror{ pixel_y = 28 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "TM" = ( /mob/living/simple_animal/bot/medbot{ @@ -17823,7 +17858,7 @@ radio_key = null; stationary_mode = 1 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "TO" = ( /obj/effect/turf_decal/tile/bar, @@ -17843,11 +17878,11 @@ /area/syndicate_mothership) "Ud" = ( /obj/effect/landmark/holding_facility, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Uf" = ( /obj/structure/closet/secure_closet, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Ug" = ( /obj/machinery/door/poddoor/shuttledock{ @@ -17866,7 +17901,7 @@ damtype = "stamina"; force = 30 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Uj" = ( /obj/machinery/door/airlock/centcom{ @@ -17901,7 +17936,7 @@ /obj/effect/turf_decal/tile/green{ dir = 8 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/plasteel/white, /area/centcom/holding) "Un" = ( /obj/machinery/door/airlock/centcom{ @@ -17945,11 +17980,11 @@ desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; name = "Personal ID-Locked Closet" }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "UE" = ( /obj/structure/chair/stool/bar, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "UG" = ( /obj/structure/flora/tree/pine, @@ -17994,11 +18029,11 @@ /obj/structure/chair/wood/wings{ dir = 1 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "UV" = ( /obj/machinery/computer/arcade, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "UW" = ( /obj/effect/turf_decal/tile/brown{ @@ -18082,7 +18117,7 @@ /obj/structure/flora/ausbushes/palebush, /obj/structure/window/reinforced/fulltile, /obj/machinery/light, -/turf/open/indestructible/hotelwood, +/turf/open/floor/grass, /area/centcom/holding) "Vv" = ( /obj/structure/table, @@ -18132,14 +18167,7 @@ damtype = "stamina"; force = 30 }, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) -"VL" = ( -/obj/machinery/button/crematorium{ - id = "crematoriumGhostDojo"; - pixel_x = -25 - }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "VO" = ( /turf/closed/indestructible/riveted, @@ -18175,7 +18203,7 @@ /area/space) "Wb" = ( /obj/machinery/door/window/westleft, -/turf/open/indestructible/boss/air, +/turf/open/floor/carpet/black, /area/centcom/holding) "Wc" = ( /obj/machinery/door/airlock/centcom{ @@ -18207,10 +18235,6 @@ }, /turf/open/floor/plating, /area/syndicate_mothership) -"Wl" = ( -/obj/machinery/door/airlock/wood, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "Wr" = ( /turf/open/floor/plasteel/dark, /area/centcom/supplypod) @@ -18221,13 +18245,6 @@ }, /turf/open/floor/wood, /area/centcom/holding) -"Ww" = ( -/obj/structure/bodycontainer/crematorium{ - dir = 4; - id = "crematoriumGhostDojo" - }, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "WC" = ( /obj/structure/table/reinforced, /obj/item/pen, @@ -18268,7 +18285,7 @@ /obj/structure/extinguisher_cabinet{ pixel_y = 32 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "WN" = ( /obj/machinery/button/door{ @@ -18278,7 +18295,7 @@ pixel_y = 25; specialfunctions = 4 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "WO" = ( /obj/effect/turf_decal/tile/brown, @@ -18322,11 +18339,11 @@ /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/palebush, /obj/structure/window/reinforced/fulltile, -/turf/open/indestructible/hotelwood, +/turf/open/floor/grass, /area/centcom/holding) "Xe" = ( /obj/machinery/vending/autodrobe, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Xg" = ( /obj/effect/turf_decal/tile/red{ @@ -18340,6 +18357,9 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/basketball) +"Xk" = ( +/turf/open/floor/wood, +/area/centcom/holding) "Xl" = ( /obj/structure/closet/syndicate/personal, /obj/effect/turf_decal/stripes/line{ @@ -18350,7 +18370,7 @@ "Xn" = ( /obj/structure/bed, /obj/item/bedsheet/random, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Xo" = ( /obj/machinery/vending/dinnerware, @@ -18375,7 +18395,7 @@ /area/centcom/supplypod/loading/four) "Xs" = ( /obj/structure/chair/comfy/brown, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Xt" = ( /obj/machinery/door/airlock/centcom{ @@ -18398,7 +18418,13 @@ /area/holodeck/rec_center/firingrange) "Xw" = ( /obj/structure/table/wood/fancy/royalblue, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, +/area/centcom/holding) +"Xx" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood, /area/centcom/holding) "Xy" = ( /obj/machinery/door/airlock/external{ @@ -18420,7 +18446,7 @@ pixel_y = 25; specialfunctions = 4 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "XE" = ( /obj/machinery/door/airlock/centcom{ @@ -18437,12 +18463,12 @@ /obj/structure/chair/wood/wings{ dir = 4 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "XT" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/snacks/sashimi, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "XU" = ( /obj/machinery/computer/secure_data{ @@ -18453,7 +18479,7 @@ "XX" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/drinks/bottle/sake, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "XY" = ( /obj/machinery/door/poddoor/shutters{ @@ -18470,7 +18496,7 @@ pixel_y = -25; specialfunctions = 4 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Yc" = ( /obj/effect/turf_decal/stripes/line, @@ -18488,12 +18514,12 @@ /obj/machinery/defibrillator_mount/loaded{ pixel_y = 28 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Yf" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/snacks/chawanmushi, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Yg" = ( /obj/effect/turf_decal/stripes/corner{ @@ -18505,7 +18531,7 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -27 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Yi" = ( /obj/structure/dresser, @@ -18513,13 +18539,13 @@ /area/syndicate_mothership) "Ym" = ( /obj/machinery/computer/arcade/orion_trail, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Yo" = ( /obj/machinery/light{ dir = 8 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Ys" = ( /obj/structure/table/reinforced, @@ -18561,7 +18587,7 @@ /area/centcom/holding) "YL" = ( /obj/machinery/vending/clothing, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "YN" = ( /obj/structure/window/reinforced{ @@ -18574,7 +18600,7 @@ /obj/structure/chair/comfy/brown{ dir = 1 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "YQ" = ( /obj/structure/table, @@ -18585,7 +18611,7 @@ /obj/structure/window/reinforced{ dir = 1 }, -/turf/open/indestructible/boss/air, +/turf/open/floor/carpet/black, /area/centcom/holding) "YV" = ( /obj/machinery/light{ @@ -18596,7 +18622,10 @@ damtype = "stamina"; force = 30 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, +/area/centcom/holding) +"YW" = ( +/turf/open/floor/plating, /area/centcom/holding) "Za" = ( /obj/machinery/door/airlock/wood{ @@ -18611,7 +18640,7 @@ /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-10" }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Zi" = ( /turf/open/floor/plasteel, @@ -18650,7 +18679,7 @@ radio_key = null; stationary_mode = 1 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/wood, /area/centcom/holding) "Zz" = ( /obj/effect/landmark/start/nukeop_leader, @@ -18722,7 +18751,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/turf/open/indestructible/boss/air, +/turf/open/floor/carpet/black, /area/centcom/holding) "ZV" = ( /obj/effect/turf_decal/tile/brown, @@ -43105,31 +43134,31 @@ Rm Tn UT yd -Sd -Sd +Xk +Xk XM NT UV CV -Sd +Xk NT -Sd -Sd -Sd -Sd -Sd -Sd -Sd +CT +oV +CT +CT +CT +oV +CT Nd -VL -Ww -Sd +Xk +Xk +Xk Nd aa Nd Uf -Sd -Sd +Xk +Xk Nd aa aa @@ -43358,35 +43387,35 @@ Pq ZW ZW Za -Sd -Sd -Sd +Xk +Xk +Xk Tu -Sd -Sd +Xk +Xk Tn NT RQ -Sd -Sd +Xk +Xk NT -Sd -Sd -Sd -Sd -Sd -Sd -Sd +Xk +Xk +Xk +Xk +Xk +Xk +Xk Nd Gs -Sd +Xk HH Nd aa Nd MJ -Sd -Sd +Xk +YW Nd aa aa @@ -43615,35 +43644,35 @@ Pa ZW ZW Nd -Sd -Sd -Sd -Sd -Sd -Sd +Xk +Xk +Xk +Xk +Xk +Xk GY NT UV CV -Sd +Xk NT -Sd -MR -Sd -Sd -Sd -MR -Sd +Dj +PF +Dj +Xk +Dj +PF +Dj Nd -Sd -Sd -Sd +Xk +Xk +Xk Nd aa Nd ma -Sd -Sd +YW +Xk Nd aa aa @@ -43872,17 +43901,17 @@ SB ZW Nw Nd -Sd -Sd -Sd +Xk +Xk +Xk Ph -Sd +Xk Tu Vu Nd Gs -Sd -Sd +Xk +Xk Nd Nd Nd @@ -44129,34 +44158,34 @@ Nd Nd Nd Nd -Sd -Sd +Xk +Xk XM QL -Sd -Sd +Xk +Xk XM NT PX CV -Sd +Xk NT -Sd +Xk Yo -Sd -Sd -Sd +Xk +Xk +Xk Yo -Sd +Xk Nd -Sd -Sd +Xk +Xk Yo -Sd -Sd +Xk +Xk Yo -Sd -Sd +Xk +Xk WE Nd aa @@ -44382,38 +44411,38 @@ Nd Nd py Nd -Sd +Xk Yo -Sd -Wl -Sd -Sd +Xk +XL +Xk +Xk Tn Tu -Sd -Sd +Xk +Xk Tn NT Zh -Sd -Sd -Dl -Sd -Sd -Sd -Sd -Sd -Sd -Sd +Xk +Xk +Re +Xk +Xk +Xk +Xk +Xk +Xk +Xk Qu -Sd -Sd -Sd -Sd -Sd -Sd -Sd -Sd +Xk +Xk +Xk +Xk +Xk +Xk +Xk +Xk Zu Nd aa @@ -44632,45 +44661,45 @@ aa aa Nd PL -Sd +Xk Yo -Sd -Sd -Sd -Sd +Xk +Xk +Xk +Xk Yh -Sd +Xk Nd Nd Nd Gs -Sd +Xk GY Tu -Sd -Sd +Xk +Xk GY NT Ym CV -Sd +Xk NT -Sd -MR -Sd -Sd -Sd -MR -Sd +Xk +Xx +Xk +Xk +Xk +Xx +Xk Nd -Sd -Sd -Sd -Sd -Sd -Sd -Sd -Sd +Xk +Xk +Xk +Xk +Xk +Xk +Xk +Xk PM Nd aa @@ -44889,7 +44918,7 @@ aa aa Nd Tq -Sd +Xk MG YN Nd @@ -44900,17 +44929,17 @@ Nd Nd Fa KT -Sd -Sd -Sd -Sd -Sd -Sd +Xk +Xk +Xk +Xk +Xk +Xk HH Nd -Sd -Sd -Sd +Xk +Xk +Xk Nd Nd Nd @@ -45145,8 +45174,8 @@ aa aa aa Nd -Nf -Sd +Xk +Xk Rh Mm Nd @@ -45157,17 +45186,17 @@ Nd Fb Sd KT -Sd -Sd +Xk +Xk Sd Sd Sd Sd Sd Re -Sd -Sd -Sd +Xk +Xk +Xk NT vt YV @@ -45180,8 +45209,8 @@ UD tZ SY Nd -Sd -Sd +Xk +Xk Nd SY Ri @@ -45402,8 +45431,8 @@ aa aa aa Nd -Sd -Sd +Xk +Xk Rh ZT Nd @@ -45414,8 +45443,8 @@ Nd Fc Sd KT -Sd -Sd +Xk +Xk Sd Sd Sd @@ -45424,24 +45453,24 @@ Sd Nd Gs Zx -Sd +Xk OL -Sd -Sd -Sd -Sd -Sd -Sd +Xk +Xk +Xk +Xk +Xk +Xk Nd Gs -Sd -Sd +Xk +Xk lS -Sd -Sd +Xk +Xk RP -Sd -Sd +Xk +Xk HH Nd aa @@ -45671,34 +45700,34 @@ Nd MR Sd FW -Sd -Sd +Xk +Xk Sd Sd Sd Sd Sd Re -Sd -Sd -Sd +Xk +Xk +Xk NT So XM -Sd +Xk XM XM -Sd +Xk Nd Xn -Sd +Xk Ya Nd -Sd -Sd +Xk +Xk Nd XD -Sd +Xk Xn Nd aa @@ -45917,9 +45946,9 @@ aa aa Nd yM -Sd +Xk Yo -Sd +Xk Nd SG Fh @@ -45928,12 +45957,12 @@ Nd Nd Sd FX -Sd -Sd -Sd -Sd -Sd -Sd +Xk +Xk +Xk +Xk +Xk +Xk HH Nd WM @@ -45945,14 +45974,14 @@ Po Wb Po ZU -Sd +Xk Nd Nd Nd Nd Nd -Sd -Sd +Xk +Xk Nd Nd Nd @@ -46174,9 +46203,9 @@ aa aa Nd OG -Sd -Sd -Sd +Xk +Xk +Xk Nd zX Fh @@ -46186,30 +46215,30 @@ Nd Nd Nd Gs -Sd +Xk XM Tu -Sd -Sd +Xk +Xk XM NT -Sd +Xk Ud Ud NT YU -zT -zT -zT -MM Sd +Sd +Sd +MM +Xk Nd UD tZ SY Nd -Sd -Sd +Xk +Xk Nd SY Ri @@ -46431,9 +46460,9 @@ aa aa Nd TK -Sd -Sd -Sd +Xk +Xk +Xk Nd QA Fh @@ -46442,12 +46471,12 @@ ED Yo Yf UE -Sd -Sd +Xk +Xk Tn Xd -Sd -Sd +Xk +Xk Tn NT Ro @@ -46455,21 +46484,21 @@ Ud Ud NT YU -zT -zT -zT +Sd +Sd +Sd MM TM Nd Gs -Sd -Sd +Xk +Xk uh -Sd -Sd +Xk +Xk zW -Sd -Sd +Xk +Xk HH Nd aa @@ -46688,23 +46717,23 @@ aa aa Nd YL -Sd -Sd -Sd +Xk +Xk +Xk Nd Xo Fh Fh py -Sd +Xk SY UE -Sd -Sd +Xk +Xk GY Tu -Sd -Sd +Xk +Xk GY NT Tw @@ -46712,21 +46741,21 @@ Ud Ud NT YU -zT -zT -zT -MM Sd +Sd +Sd +MM +Xk Nd Xn -Sd +Xk Tc Nd -Sd -Sd +Xk +Xk Nd AC -Sd +Xk Xn Nd aa @@ -46945,22 +46974,22 @@ aa aa Nd Xe -Sd -Sd -Sd +Xk +Xk +Xk Nd TB Fh Fh BV -Sd +Xk XT UE -Sd -Sd -Sd +Xk +Xk +Xk Ph -Sd +Xk Qk Vu Nd @@ -46973,7 +47002,7 @@ PA Ra PA Pl -Sd +Xk Nd Nd Nd @@ -47201,43 +47230,43 @@ aa aa aa Nd -Gs -Sd -Sd -Sd +Ny +Xk +Xk +Xk Nd Vz Fh YJ QT -Sd +Xk SY UE -Sd -Sd -Sd -Sd -Sd -Sd +Xk +Xk +Xk +Xk +Xk +Xk XM NT -Sd -Sd -Sd +Xk +Xk +Xk NT Ye GY -Sd +Xk GY GY -Sd +Xk Nd Xs Ol YO Nd -Sd -Sd +Xk +Xk Nd RX Xw @@ -47460,44 +47489,44 @@ aa Nd Bs Ri -Sd -Sd +Xk +Xk XL Fh Fh Fh XL -Sd +Xk XX UE -Sd -Sd -Sd +Xk +Xk +Xk Tu -Sd -Sd +Xk +Xk Tn NT -Sd -Sd -Sd +Xk +Xk +Xk OL -Sd -Sd -Sd -Sd -Sd -Sd +Xk +Xk +Xk +Xk +Xk +Xk Nd Gs -Sd -Sd +Xk +Xk SZ -Sd -Sd +Xk +Xk Ws -Sd -Sd +Xk +Xk HH Nd aa @@ -47716,8 +47745,8 @@ aa aa Nd SU -Sd -MR +Xk +Xx Nm Nd SN @@ -47731,13 +47760,13 @@ Fi Tn UT Hm -Sd -Sd +Xk +Xk GY NT -Sd +Xk Ms -Sd +Xk NT vt Mx @@ -47750,8 +47779,8 @@ Ru Of QF Nd -Sd -Sd +Xk +Xk Nd WN Ur @@ -48005,12 +48034,12 @@ Nd Nd Kf WV -Sd +Xk Nd Nd Nd Nd -Sd +Xk zY Rv Nd @@ -60329,14 +60358,14 @@ GM HW HW Il -IF +Is IE IX Jh Jh Js IE -IF +Is JI JP JZ @@ -63927,14 +63956,14 @@ GM HW HW Il -IF +Is IJ IY Jk Jk Jt IJ -IF +Is JI JP Kc @@ -78151,14 +78180,14 @@ fa fn fr fx -fF +fy fE fL fN fN fS fE -fF +fy ab aa aa @@ -81749,14 +81778,14 @@ dA dA dA fx -fF +fy fJ fM fQ fQ fT fJ -fF +fy ab aa aa diff --git a/_maps/templates/shelter_1.dmm b/_maps/templates/shelter_1.dmm index 7f95fba10f..f5b2e141f4 100644 --- a/_maps/templates/shelter_1.dmm +++ b/_maps/templates/shelter_1.dmm @@ -50,7 +50,9 @@ /area/survivalpod) "l" = ( /obj/structure/tubes, -/obj/machinery/recharge_station, +/obj/structure/chair/comfy/black{ + dir = 8 + }, /turf/open/floor/pod, /area/survivalpod) "m" = ( diff --git a/_maps/templates/shelter_2.dmm b/_maps/templates/shelter_2.dmm index 825cb26e3a..80de4438da 100644 --- a/_maps/templates/shelter_2.dmm +++ b/_maps/templates/shelter_2.dmm @@ -67,7 +67,8 @@ layer = 3 }, /obj/machinery/door/window/survival_pod{ - dir = 1 + dir = 1; + icon_state = "windoor" }, /turf/open/floor/carpet/black, /area/survivalpod) @@ -132,6 +133,7 @@ /area/survivalpod) "u" = ( /obj/machinery/door/window/survival_pod{ + icon_state = "windoor"; dir = 1 }, /turf/open/floor/carpet/black, @@ -167,10 +169,10 @@ /area/survivalpod) "y" = ( /obj/structure/sink/kitchen{ + icon_state = "sink_alt"; dir = 4; pixel_x = -13 }, -/obj/machinery/recharge_station/upgraded, /turf/open/floor/carpet/black, /area/survivalpod) "z" = ( diff --git a/_maps/templates/shelter_3.dmm b/_maps/templates/shelter_3.dmm deleted file mode 100644 index bb400f29ac..0000000000 --- a/_maps/templates/shelter_3.dmm +++ /dev/null @@ -1,418 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/closed/wall/mineral/titanium/survival/pod, -/area/survivalpod) -"b" = ( -/obj/structure/sign/mining/survival{ - dir = 1 - }, -/turf/closed/wall/mineral/titanium/survival/pod, -/area/survivalpod) -"c" = ( -/turf/closed/wall/mineral/titanium/survival/nodiagonal, -/area/survivalpod) -"d" = ( -/obj/structure/sign/mining/survival{ - dir = 1 - }, -/turf/closed/wall/mineral/titanium/survival/nodiagonal, -/area/survivalpod) -"e" = ( -/obj/structure/sign/mining/survival{ - dir = 8 - }, -/turf/closed/wall/mineral/titanium/survival/nodiagonal, -/area/survivalpod) -"f" = ( -/obj/structure/table/wood/fancy/black, -/obj/machinery/chem_dispenser/drinks, -/turf/open/floor/pod/dark, -/area/survivalpod) -"g" = ( -/obj/structure/table/wood/fancy/black, -/obj/machinery/chem_dispenser/drinks/beer, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/survivalpod) -"h" = ( -/obj/machinery/vending/boozeomat, -/turf/open/floor/pod/dark, -/area/survivalpod) -"i" = ( -/obj/item/book/manual/wiki/barman_recipes, -/obj/item/reagent_containers/food/drinks/shaker, -/obj/item/reagent_containers/rag, -/obj/structure/table/wood/fancy/black, -/turf/open/floor/pod/dark, -/area/survivalpod) -"j" = ( -/obj/structure/table/wood/fancy/black, -/obj/item/clipboard, -/obj/item/toy/figure/bartender, -/turf/open/floor/pod/dark, -/area/survivalpod) -"k" = ( -/obj/structure/table/wood/fancy/black, -/obj/item/storage/fancy/cigarettes/cigars, -/obj/item/storage/fancy/cigarettes/cigars/cohiba{ - pixel_y = 4 - }, -/obj/item/storage/fancy/cigarettes/cigars/havana{ - pixel_y = 8 - }, -/turf/open/floor/pod/dark, -/area/survivalpod) -"l" = ( -/obj/structure/table/wood/fancy/black, -/obj/structure/reagent_dispensers/beerkeg, -/turf/open/floor/pod/dark, -/area/survivalpod) -"m" = ( -/obj/structure/closet/secure_closet/bar, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/survivalpod) -"n" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/pod/dark, -/area/survivalpod) -"o" = ( -/obj/structure/sign/mining/survival{ - dir = 4 - }, -/obj/structure/disposalpipe/junction{ - dir = 4 - }, -/turf/closed/wall/mineral/titanium/survival/pod, -/area/survivalpod) -"p" = ( -/obj/machinery/door/airlock/survival_pod/glass{ - req_access_txt = "25" - }, -/obj/structure/fans/tiny, -/turf/open/floor/pod/dark, -/area/survivalpod) -"q" = ( -/turf/open/floor/pod/dark, -/area/survivalpod) -"r" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall/mineral/titanium/survival/nodiagonal, -/area/survivalpod) -"s" = ( -/obj/structure/table/reinforced, -/obj/item/lighter{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/lighter, -/turf/open/floor/pod/dark, -/area/survivalpod) -"t" = ( -/obj/structure/table/reinforced, -/turf/open/floor/pod/dark, -/area/survivalpod) -"u" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/matches{ - pixel_x = -4; - pixel_y = 8 - }, -/turf/open/floor/pod/dark, -/area/survivalpod) -"v" = ( -/obj/machinery/door/window/survival_pod{ - req_access_txt = "25" - }, -/turf/open/floor/pod/dark, -/area/survivalpod) -"w" = ( -/obj/structure/sign/mining/survival{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/closed/wall/mineral/titanium/survival/nodiagonal, -/area/survivalpod) -"x" = ( -/obj/structure/chair/stool/bar, -/turf/open/floor/carpet/black, -/area/survivalpod) -"y" = ( -/turf/open/floor/carpet/black, -/area/survivalpod) -"z" = ( -/obj/machinery/vending/cigarette/beach, -/turf/open/floor/carpet/black, -/area/survivalpod) -"A" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/carpet/black, -/area/survivalpod) -"B" = ( -/obj/structure/sign/mining/survival{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/closed/wall/mineral/titanium/survival/nodiagonal, -/area/survivalpod) -"C" = ( -/obj/structure/window/reinforced/survival_pod{ - dir = 8 - }, -/obj/structure/window/reinforced/survival_pod{ - dir = 4 - }, -/obj/structure/window/reinforced/survival_pod{ - dir = 1 - }, -/obj/structure/window/reinforced/survival_pod, -/obj/structure/grille, -/turf/open/floor/pod/dark, -/area/survivalpod) -"D" = ( -/obj/structure/chair/comfy/black, -/turf/open/floor/carpet/black, -/area/survivalpod) -"E" = ( -/obj/machinery/door/airlock/survival_pod, -/turf/open/floor/pod/light, -/area/survivalpod) -"F" = ( -/obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/condiment/peppermill{ - pixel_x = -4; - pixel_y = 12 - }, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_x = 4; - pixel_y = 4 - }, -/turf/open/floor/carpet/black, -/area/survivalpod) -"G" = ( -/obj/structure/urinal{ - pixel_y = 24 - }, -/turf/open/floor/pod/light, -/area/survivalpod) -"H" = ( -/turf/open/floor/pod/light, -/area/survivalpod) -"I" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/survivalpod) -"J" = ( -/obj/structure/sign/mining/survival{ - dir = 4 - }, -/turf/closed/wall/mineral/titanium/survival/nodiagonal, -/area/survivalpod) -"K" = ( -/obj/structure/chair/comfy/black{ - dir = 1 - }, -/turf/open/floor/carpet/black, -/area/survivalpod) -"L" = ( -/obj/machinery/vending/snack/random, -/turf/open/floor/carpet/black, -/area/survivalpod) -"M" = ( -/obj/machinery/light, -/turf/open/floor/carpet/black, -/area/survivalpod) -"N" = ( -/obj/structure/toilet{ - dir = 8 - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/survivalpod) -"O" = ( -/obj/structure/sign/mining/survival{ - dir = 4 - }, -/turf/closed/wall/mineral/titanium/survival/pod, -/area/survivalpod) -"P" = ( -/obj/structure/sign/mining/survival, -/turf/closed/wall/mineral/titanium/survival/pod, -/area/survivalpod) -"Q" = ( -/obj/structure/sign/mining/survival, -/turf/closed/wall/mineral/titanium/survival/nodiagonal, -/area/survivalpod) -"R" = ( -/obj/machinery/door/airlock/survival_pod/glass, -/obj/structure/fans/tiny, -/turf/open/floor/carpet/black, -/area/survivalpod) -"T" = ( -/obj/machinery/recharge_station/fullupgrade, -/turf/open/floor/carpet/black, -/area/survivalpod) - -(1,1,1) = {" -a -e -p -e -c -e -C -e -C -e -a -"} -(2,1,1) = {" -b -f -q -s -T -y -D -F -K -L -P -"} -(3,1,1) = {" -c -g -q -t -x -y -y -y -y -M -c -"} -(4,1,1) = {" -d -h -q -t -x -y -D -F -K -y -Q -"} -(5,1,1) = {" -c -i -q -u -x -y -D -F -K -y -c -"} -(6,1,1) = {" -d -j -q -t -x -y -y -y -y -y -R -"} -(7,1,1) = {" -c -k -q -t -x -y -c -c -c -c -c -"} -(8,1,1) = {" -d -l -q -t -x -y -c -G -H -H -Q -"} -(9,1,1) = {" -c -m -q -v -y -y -E -H -c -E -c -"} -(10,1,1) = {" -b -n -q -t -z -A -c -I -c -N -P -"} -(11,1,1) = {" -a -o -r -w -r -B -c -J -c -O -a -"} diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index 41b5deb302..74a6796bd2 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -9,12 +9,13 @@ #define META_GAS_FUSION_POWER 7 //ATMOS //stuff you should probably leave well alone! -#define R_IDEAL_GAS_EQUATION 8.31 //kPa*L/(K*mol) -#define ONE_ATMOSPHERE 101.325 //kPa -#define TCMB 2.7 // -270.3degC -#define TCRYO 225 // -48.15degC -#define T0C 273.15 // 0degC -#define T20C 293.15 // 20degC +#define R_IDEAL_GAS_EQUATION 8.31446261815324 //kPa*L/(K*mol) +#define ONE_ATMOSPHERE 101.325 //kPa +#define TCMB 2.7 // -270.3degC +#define TCRYO 225 // -48.15degC +#define T0C 273.15 // 0degC +#define T20C 293.15 // 20degC +#define STEFANBOLTZMANN (5.670373*10e-8) // W/(m^2*K^4) #define MOLES_CELLSTANDARD (ONE_ATMOSPHERE*CELL_VOLUME/(T20C*R_IDEAL_GAS_EQUATION)) //moles in a 2.5 m^3 cell at 101.325 Pa and 20 degC #define M_CELL_WITH_RATIO (MOLES_CELLSTANDARD * 0.005) //compared against for superconductivity @@ -149,9 +150,9 @@ //OPEN TURF ATMOS #define OPENTURF_DEFAULT_ATMOS "o2=22;n2=82;TEMP=293.15" //the default air mix that open turfs spawn -#define TCOMMS_ATMOS "n2=100;TEMP=80" //-193,15°C telecommunications. also used for xenobiology slime killrooms +#define TCOMMS_ATMOS "n2=100;TEMP=80" //-193,15°C telecommunications. also used for xenobiology slime killrooms #define AIRLESS_ATMOS "TEMP=2.7" //space -#define FROZEN_ATMOS "o2=22;n2=82;TEMP=180" //-93.15°C snow and ice turfs +#define FROZEN_ATMOS "o2=22;n2=82;TEMP=180" //-93.15°C snow and ice turfs #define BURNMIX_ATMOS "o2=2500;plasma=5000;TEMP=370" //used in the holodeck burn test program //ATMOSPHERICS DEPARTMENT GAS TANK TURFS diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index e29be375e6..47b5c2f602 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -109,16 +109,8 @@ #define MEDIHOUND_SLEEPER (1<<0) #define EATING_NOISES (1<<1) #define DIGESTION_NOISES (1<<2) -#define BREAST_ENLARGEMENT (1<<3) -#define PENIS_ENLARGEMENT (1<<4) -#define FORCED_FEM (1<<5) -#define FORCED_MASC (1<<6) -#define HYPNO (1<<7) -#define NEVER_HYPNO (1<<8) -#define NO_APHRO (1<<9) -#define NO_ASS_SLAP (1<<10) -#define TOGGLES_CITADEL (EATING_NOISES|DIGESTION_NOISES|BREAST_ENLARGEMENT|PENIS_ENLARGEMENT) +#define TOGGLES_CITADEL (EATING_NOISES|DIGESTION_NOISES) //component stuff #define COMSIG_COMBAT_TOGGLED "combatmode_toggled" //called by combat mode toggle on all equipped items. args: (mob/user, combatmode) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index b0cc9030cb..7b2dd8663c 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -177,7 +177,6 @@ #define COMSIG_MOB_PRE_PLAYER_CHANGE "mob_pre_player_change" //sent to the target mob from base of /mob/transfer_ckey() and /mind/transfer_to(): (our_character, their_character) // #define COMPONENT_STOP_MIND_TRANSFER 1 #define COMSIG_MOB_UPDATE_SIGHT "mob_update_sight" //from base of /mob/update_sight(): () -#define COMSIG_MOB_ON_NEW_MIND "mob_on_new_mind" //called when a new mind is assigned to a mob: () #define COMSIG_MOB_SAY "mob_say" // from /mob/living/say(): (proc args list) #define COMPONENT_UPPERCASE_SPEECH 1 // used to access COMSIG_MOB_SAY argslist diff --git a/code/__DEFINES/dynamic.dm b/code/__DEFINES/dynamic.dm deleted file mode 100644 index 45c1ba9cb2..0000000000 --- a/code/__DEFINES/dynamic.dm +++ /dev/null @@ -1,14 +0,0 @@ -#define CURRENT_LIVING_PLAYERS 1 -#define CURRENT_LIVING_ANTAGS 2 -#define CURRENT_DEAD_PLAYERS 3 -#define CURRENT_OBSERVERS 4 - -#define NO_ASSASSIN (1<<0) -#define WAROPS_ALWAYS_ALLOWED (1<<1) - -#define ONLY_RULESET (1<<0) -#define HIGHLANDER_RULESET (1<<1) -#define TRAITOR_RULESET (1<<2) -#define MINOR_RULESET (1<<3) - -#define RULESET_STOP_PROCESSING 1 diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index 2756be76fb..f5ea8d835f 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -130,24 +130,33 @@ #define NECK (1<<11) #define FULL_BODY (~0) -//flags for alternate styles: These are hard sprited so don't set this if you didn't put the effort in -#define NORMAL_STYLE 0 -#define ALT_STYLE 1 - //flags for female outfits: How much the game can safely "take off" the uniform without it looking weird #define NO_FEMALE_UNIFORM 0 #define FEMALE_UNIFORM_FULL 1 #define FEMALE_UNIFORM_TOP 2 -//flags for outfits that have mutantrace variants: These are hard sprited too. -#define STYLE_DIGITIGRADE (1<<0) //jumpsuits, suits and shoes -#define STYLE_MUZZLE (1<<1) //hats or masks -#define STYLE_SNEK_TAURIC (1<<2) //taur-friendly suits -#define STYLE_PAW_TAURIC (1<<3) -#define STYLE_HOOF_TAURIC (1<<4) -#define STYLE_ALL_TAURIC (STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC|STYLE_HOOF_TAURIC) +//flags for alternate styles: These are hard sprited so don't set this if you didn't put the effort in +#define NORMAL_STYLE 0 +#define ALT_STYLE 1 + +#define NORMAL_SUIT_STYLE 0 +#define DIGITIGRADE_SUIT_STYLE 1 + +//Tauric Specific suits +#define NOT_TAURIC 0 +#define SNEK_TAURIC 1 +#define PAW_TAURIC 2 +#define HOOF_TAURIC 3 + +//Helmets/masks for muzzles or beaks +#define NORMAL_FACED 0 +#define MUZZLE_FACED 1 +#define BEAKED_FACED 2 + +//flags for outfits that have mutantrace variants (try not to use this): Currently only needed if you're trying to add tight fitting bootyshorts +#define NO_MUTANTRACE_VARIATION 0 +#define MUTANTRACE_VARIATION 1 -//digitigrade legs settings. #define NOT_DIGITIGRADE 0 #define FULL_DIGITIGRADE 1 #define SQUISHED_DIGITIGRADE 2 diff --git a/code/__DEFINES/maps.dm b/code/__DEFINES/maps.dm index 73e900226e..1b42217fe1 100644 --- a/code/__DEFINES/maps.dm +++ b/code/__DEFINES/maps.dm @@ -38,6 +38,8 @@ require only minor tweaks. #define ZTRAIT_SPACE_RUINS "Space Ruins" #define ZTRAIT_LAVA_RUINS "Lava Ruins" #define ZTRAIT_ISOLATED_RUINS "Isolated Ruins" //Placing ruins on z levels with this trait will use turf reservation instead of usual placement. +// prevents certain turfs from being stripped by a singularity +#define ZTRAIT_PLANET "Planet" // number - bombcap is multiplied by this before being applied to bombs #define ZTRAIT_BOMBCAP_MULTIPLIER "Bombcap Multiplier" @@ -58,18 +60,11 @@ require only minor tweaks. // CROSSLINKED - mixed in with the cross-linked space pool #define CROSSLINKED "Cross" -// string - type path of the z-level's baseturf (defaults to space) -#define ZTRAIT_BASETURF "Baseturf" - // default trait definitions, used by SSmapping #define ZTRAITS_CENTCOM list(ZTRAIT_CENTCOM = TRUE) #define ZTRAITS_STATION list(ZTRAIT_LINKAGE = CROSSLINKED, ZTRAIT_STATION = TRUE) #define ZTRAITS_SPACE list(ZTRAIT_LINKAGE = CROSSLINKED, ZTRAIT_SPACE_RUINS = TRUE) -#define ZTRAITS_LAVALAND list(\ - ZTRAIT_MINING = TRUE, \ - ZTRAIT_LAVA_RUINS = TRUE, \ - ZTRAIT_BOMBCAP_MULTIPLIER = 5, \ - ZTRAIT_BASETURF = /turf/open/lava/smooth/lava_land_surface) +#define ZTRAITS_LAVALAND list(ZTRAIT_MINING = TRUE, ZTRAIT_LAVA_RUINS = TRUE, ZTRAIT_BOMBCAP_MULTIPLIER = 5) #define ZTRAITS_REEBE list(ZTRAIT_REEBE = TRUE, ZTRAIT_BOMBCAP_MULTIPLIER = 0.5) #define DL_NAME "name" diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index d595abd3ec..29ff0a8fae 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -427,7 +427,6 @@ GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_S //Dummy mob reserve slots #define DUMMY_HUMAN_SLOT_PREFERENCES "dummy_preference_preview" -#define DUMMY_HUMAN_SLOT_HOLOFORM "dummy_holoform_generation" #define DUMMY_HUMAN_SLOT_ADMIN "admintools" #define DUMMY_HUMAN_SLOT_MANIFEST "dummy_manifest_generation" @@ -529,11 +528,3 @@ GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_S #define FOURSPACES "    " #define CRYOMOBS 'icons/obj/cryo_mobs.dmi' - -#define CUSTOM_HOLOFORM_DELAY 10 SECONDS //prevents spamming to make lag. it's pretty expensive to do this. - -#define HOLOFORM_FILTER_AI "FILTER_AI" -#define HOLOFORM_FILTER_PAI "FILTER_PAI" -#define HOLOFORM_FILTER_STATIC "FILTER_STATIC" - -#define CANT_REENTER_ROUND -1 diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 5c54843df2..c194e578c9 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -47,7 +47,6 @@ // Subsystems shutdown in the reverse of the order they initialize in // The numbers just define the ordering, they are meaningless otherwise. -#define INIT_ORDER_FAIL2TOPIC 22 #define INIT_ORDER_TITLE 20 #define INIT_ORDER_GARBAGE 19 #define INIT_ORDER_DBCORE 18 diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index b7a5975ad5..439b3d1493 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -134,7 +134,6 @@ #define TRAIT_NORUNNING "norunning" // You walk! #define TRAIT_NOMARROW "nomarrow" // You don't make blood, with chemicals or nanites. #define TRAIT_NOPULSE "nopulse" // Your heart doesn't beat. -#define TRAIT_EXEMPT_HEALTH_EVENTS "exempt-health-events" //non-mob traits @@ -161,18 +160,19 @@ #define TRAIT_TAGGER "tagger" #define TRAIT_PHOTOGRAPHER "photographer" #define TRAIT_MUSICIAN "musician" +#define TRAIT_CROCRIN_IMMUNE "crocin_immune" #define TRAIT_NYMPHO "nymphomania" #define TRAIT_MASO "masochism" #define TRAIT_EXHIBITIONIST "exhibitionist" #define TRAIT_HIGH_BLOOD "high_blood" +#define TRAIT_PHARMA "hepatic_pharmacokinesis" #define TRAIT_PARA "paraplegic" #define TRAIT_EMPATH "empath" #define TRAIT_FRIENDLY "friendly" +#define TRAIT_ASSBLASTUSA "assblastusa" #define TRAIT_CULT_EYES "cult_eyes" -#define TRAIT_AUTO_CATCH_ITEM "auto_catch_item" -#define TRAIT_CLOWN_MENTALITY "clown_mentality" // The future is now, clownman. #define TRAIT_FREESPRINT "free_sprinting" -#define TRAIT_NO_ALCOHOL "alcohol_intolerance" + // common trait sources #define TRAIT_GENERIC "generic" @@ -193,7 +193,6 @@ #define ABSTRACT_ITEM_TRAIT "abstract-item" #define STATUS_EFFECT_TRAIT "status-effect" #define ROUNDSTART_TRAIT "roundstart" //cannot be removed without admin intervention -#define GHOSTROLE_TRAIT "ghostrole" // unique trait sources, still defines #define STATUE_MUTE "statue" @@ -229,7 +228,6 @@ #define SLEEPING_CARP_TRAIT "sleeping_carp" #define RISING_BASS_TRAIT "rising_bass" #define ABDUCTOR_ANTAGONIST "abductor-antagonist" -#define NUKEOP_ANTAGONIST "nukeop-antagonist" #define MADE_UNCLONEABLE "made-uncloneable" #define NUKEOP_TRAIT "nuke-op" #define DEATHSQUAD_TRAIT "deathsquad" diff --git a/code/__DEFINES/vote.dm b/code/__DEFINES/vote.dm deleted file mode 100644 index 8fb2e6deab..0000000000 --- a/code/__DEFINES/vote.dm +++ /dev/null @@ -1,6 +0,0 @@ -#define PLURALITY_VOTING 0 -#define APPROVAL_VOTING 1 -#define RANKED_CHOICE_VOTING 2 -#define SCORE_VOTING 3 - -GLOBAL_LIST_INIT(vote_score_options,list("Bad","Poor","Acceptable","Good","Great")) diff --git a/code/__HELPERS/_logging.dm b/code/__HELPERS/_logging.dm index 4dd590d9a1..c259831f94 100644 --- a/code/__HELPERS/_logging.dm +++ b/code/__HELPERS/_logging.dm @@ -78,6 +78,7 @@ if (CONFIG_GET(flag/log_manifest)) WRITE_LOG(GLOB.world_manifest_log, "[ckey] \\ [body.real_name] \\ [mind.assigned_role] \\ [mind.special_role ? mind.special_role : "NONE"] \\ [latejoin ? "LATEJOIN":"ROUNDSTART"]") + /proc/log_say(text) if (CONFIG_GET(flag/log_say)) WRITE_LOG(GLOB.world_game_log, "SAY: [text]") @@ -120,6 +121,7 @@ if (CONFIG_GET(flag/log_vote)) WRITE_LOG(GLOB.world_game_log, "VOTE: [text]") + /proc/log_topic(text) WRITE_LOG(GLOB.world_game_log, "TOPIC: [text]") @@ -139,9 +141,6 @@ if (CONFIG_GET(flag/log_job_debug)) WRITE_LOG(GLOB.world_job_debug_log, "JOB: [text]") -/proc/log_subsystem(subsystem, text) - WRITE_LOG(GLOB.subsystem_log, "[subsystem]: [text]") - /* Log to both DD and the logfile. */ /proc/log_world(text) #ifdef USE_CUSTOM_ERROR_HANDLER @@ -158,8 +157,6 @@ WRITE_LOG(GLOB.config_error_log, text) SEND_TEXT(world.log, text) -/proc/log_mapping(text) - WRITE_LOG(GLOB.world_map_error_log, text) /* For logging round startup. */ /proc/start_log(log) diff --git a/code/__HELPERS/areas.dm b/code/__HELPERS/areas.dm index 4b52187e13..1f5b82f7bf 100644 --- a/code/__HELPERS/areas.dm +++ b/code/__HELPERS/areas.dm @@ -43,13 +43,6 @@ var/static/blacklisted_areas = typecacheof(list( /area/space, )) - - if(creator) - if(creator.create_area_cooldown >= world.time) - to_chat(creator, "You're trying to create a new area a little too fast.") - return - creator.create_area_cooldown = world.time + 10 - var/list/turfs = detect_room(get_turf(creator), area_or_turf_fail_types) if(!turfs) to_chat(creator, "The new area must be completely airtight and not a part of a shuttle.") diff --git a/code/__HELPERS/cmp.dm b/code/__HELPERS/cmp.dm index c95896d853..4a86f57fcd 100644 --- a/code/__HELPERS/cmp.dm +++ b/code/__HELPERS/cmp.dm @@ -97,9 +97,6 @@ GLOBAL_VAR_INIT(cmp_field, "name") /proc/cmp_numbered_displays_name_dsc(datum/numbered_display/A, datum/numbered_display/B) return sorttext(B.sample_object.name, A.sample_object.name) -/proc/cmp_reagents_asc(datum/reagent/a, datum/reagent/b) - return sorttext(initial(b.name),initial(a.name)) - /proc/cmp_quirk_asc(datum/quirk/A, datum/quirk/B) var/a_sign = num2sign(initial(A.value) * -1) var/b_sign = num2sign(initial(B.value) * -1) diff --git a/code/__HELPERS/custom_holoforms.dm b/code/__HELPERS/custom_holoforms.dm deleted file mode 100644 index 0e97314f1f..0000000000 --- a/code/__HELPERS/custom_holoforms.dm +++ /dev/null @@ -1,62 +0,0 @@ -// Generates a holoform appearance -// Equipment list is slot = path. -/proc/generate_custom_holoform_from_prefs(datum/preferences/prefs, list/equipment_by_slot, list/inhand_equipment, copy_job = FALSE, apply_loadout = FALSE) - ASSERT(prefs) - var/mob/living/carbon/human/dummy/mannequin = generate_or_wait_for_human_dummy(DUMMY_HUMAN_SLOT_HOLOFORM) - prefs.copy_to(mannequin) - if(apply_loadout && prefs.parent) - SSjob.equip_loadout(prefs.parent.mob, mannequin, bypass_prereqs = TRUE) - if(copy_job) - var/datum/job/highest = prefs.get_highest_job() - if(highest && !istype(highest, /datum/job/ai) && !istype(highest, /datum/job/cyborg)) - highest.equip(mannequin, TRUE, preference_source = prefs.parent) - - if(length(equipment_by_slot)) - for(var/slot in equipment_by_slot) - var/obj/item/I = new equipment_by_slot[slot] - mannequin.equip_to_slot_if_possible(I, slot, TRUE, TRUE, TRUE, TRUE) - if(length(inhand_equipment)) - for(var/path in inhand_equipment) - var/obj/item/I = new path - mannequin.equip_to_slot_if_possible(I, SLOT_HANDS, TRUE, TRUE, TRUE, TRUE) - - - var/icon/combined = new - for(var/d in GLOB.cardinals) - mannequin.setDir(d) - COMPILE_OVERLAYS(mannequin) - CHECK_TICK - var/icon/capture = getFlatIcon(mannequin) - CHECK_TICK - combined.Insert(capture, dir = d) - CHECK_TICK - - unset_busy_human_dummy(DUMMY_HUMAN_SLOT_HOLOFORM) - return combined - -/proc/process_holoform_icon_filter(icon/I, filter_type, clone = TRUE) - if(clone) - I = icon(I) //Clone - switch(filter_type) - if(HOLOFORM_FILTER_AI) - I = getHologramIcon(I) - if(HOLOFORM_FILTER_STATIC) - I = getStaticIcon(I) - if(HOLOFORM_FILTER_PAI) - I = getPAIHologramIcon(I) - return I - -//Errors go to user. -/proc/generate_custom_holoform_from_prefs_safe(datum/preferences/prefs, mob/user) - if(user) - if(user.client.prefs.last_custom_holoform > world.time - CUSTOM_HOLOFORM_DELAY) - to_chat(user, "You are attempting to set your custom holoform too fast!") - return - return generate_custom_holoform_from_prefs(prefs, null, null, TRUE, TRUE) - -//Prompts this client for custom holoform parameters. -/proc/user_interface_custom_holoform(client/C) - var/datum/preferences/target_prefs = C.prefs - ASSERT(target_prefs) - //In the future, maybe add custom path allowances a la admin create outfit but for now.. - return generate_custom_holoform_from_prefs_safe(target_prefs, C.mob) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 65c7145d8f..d76fc7731a 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -444,8 +444,12 @@ candidates -= M /proc/pollGhostCandidates(Question, jobbanType, datum/game_mode/gametypeCheck, be_special_flag = 0, poll_time = 300, ignore_category = null, flashwindow = TRUE) - var/datum/element/ghost_role_eligibility/eligibility = SSdcs.GetElement(/datum/element/ghost_role_eligibility) - var/list/candidates = eligibility.get_all_ghost_role_eligible() + var/list/candidates = list() + + for(var/mob/dead/observer/G in GLOB.player_list) + if(G.reenter_round_timeout < world.realtime) + candidates += G + return pollCandidates(Question, jobbanType, gametypeCheck, be_special_flag, poll_time, ignore_category, flashwindow, candidates) /proc/pollCandidates(Question, jobbanType, datum/game_mode/gametypeCheck, be_special_flag = 0, poll_time = 300, ignore_category = null, flashwindow = TRUE, list/group = null) diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index 1af3143d9d..5fb64004c0 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -939,7 +939,7 @@ world I.pixel_y++ add_overlay(I)//And finally add the overlay. -/proc/getHologramIcon(icon/A, safety = TRUE)//If safety is on, a new icon is not created. +/proc/getHologramIcon(icon/A, safety=1)//If safety is on, a new icon is not created. var/icon/flat_icon = safety ? A : new(A)//Has to be a new icon to not constantly change the same icon. flat_icon.ColorTone(rgb(125,180,225))//Let's make it bluish. flat_icon.ChangeOpacity(0.5)//Make it half transparent. @@ -947,14 +947,6 @@ world flat_icon.AddAlphaMask(alpha_mask)//Finally, let's mix in a distortion effect. return flat_icon -/proc/getPAIHologramIcon(icon/A, safety = TRUE) - var/icon/flat_icon = safety? A : new(A) - flat_icon.SetIntensity(0.75, 1, 0.75) - flat_icon.ChangeOpacity(0.7) - var/icon/alpha_mask = new('icons/effects/effects.dmi', "scanlineslow")//Scanline effect. - flat_icon.AddAlphaMask(alpha_mask)//Finally, let's mix in a distortion effect. - return flat_icon - //What the mob looks like as animated static //By vg's ComicIronic /proc/getStaticIcon(icon/A, safety = TRUE) diff --git a/code/__HELPERS/level_traits.dm b/code/__HELPERS/level_traits.dm index 3e6e88c8fa..55ee069321 100644 --- a/code/__HELPERS/level_traits.dm +++ b/code/__HELPERS/level_traits.dm @@ -12,3 +12,6 @@ #define is_reserved_level(z) SSmapping.level_trait(z, ZTRAIT_RESERVED) #define is_away_level(z) SSmapping.level_trait(z, ZTRAIT_AWAY) + +// If true, the singularity cannot strip away asteroid turf on this Z +#define is_planet_level(z) SSmapping.level_trait(z, ZTRAIT_PLANET) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index cdf0f604b8..ce8b2e4cf0 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -20,6 +20,8 @@ else return "000" +#define UNDIE_COLORABLE(U) (U?.has_color) + /proc/random_underwear(gender) if(!GLOB.underwear_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/underwear/bottom, GLOB.underwear_list, GLOB.underwear_m, GLOB.underwear_f) diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm index 49825bcb50..27f1a81fef 100644 --- a/code/__HELPERS/roundend.dm +++ b/code/__HELPERS/roundend.dm @@ -19,9 +19,6 @@ var/list/mob_data = list() if(isnewplayer(m)) continue - if (m.client && m.client.prefs && m.client.prefs.auto_ooc) - if (!(m.client.prefs.chat_toggles & CHAT_OOC)) - m.client.prefs.chat_toggles ^= CHAT_OOC if(m.mind) if(m.stat != DEAD && !isbrain(m) && !iscameramob(m)) num_survivors++ diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 74c32dd52f..29f5331fd3 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -758,6 +758,16 @@ GLOBAL_LIST_INIT(can_embed_types, typecacheof(list( /obj/item/stack/rods, /obj/item/pipe))) +/proc/can_embed(obj/item/W) + if(W.get_sharpness()) + return 1 + if(is_pointed(W)) + return 1 + + if(is_type_in_typecache(W, GLOB.can_embed_types)) + return 1 + + /* Checks if that loc and dir has an item on the wall */ diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index 914e45add5..c25ebf5b0a 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -115,6 +115,5 @@ GLOBAL_LIST_INIT(maintenance_loot, list( /obj/item/clothing/shoes/kindleKicks = 1, /obj/item/autosurgeon/penis = 1, /obj/item/autosurgeon/testicles = 1, - /obj/item/storage/box/marshmallow = 2, "" = 3 )) diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index 3577402b36..1707c3a536 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -61,6 +61,26 @@ GLOBAL_LIST_EMPTY(latejoiners) //CIT CHANGE - All latejoining people, for traito var/mob/M = i M.update_config_movespeed() +GLOBAL_LIST_INIT(noodle_taurs, list( + "Naga", + "Tentacle" + )) + +GLOBAL_LIST_INIT(paw_taurs, list( + "Fox", + "Wolf", + "Otie", + "Drake", + "Lab", + "Shepherd", + "Husky", + "Eevee", + "Panther", + "Horse", + "Cow", + "Tiger" + )) + //blood types GLOBAL_LIST_INIT(regular_bloods,list( "O-", diff --git a/code/_globalvars/logging.dm b/code/_globalvars/logging.dm index 01d5051dba..8e5da083e3 100644 --- a/code/_globalvars/logging.dm +++ b/code/_globalvars/logging.dm @@ -28,10 +28,6 @@ GLOBAL_VAR(world_job_debug_log) GLOBAL_PROTECT(world_job_debug_log) GLOBAL_VAR(world_virus_log) GLOBAL_PROTECT(world_virus_log) -GLOBAL_VAR(world_map_error_log) -GLOBAL_PROTECT(world_map_error_log) -GLOBAL_VAR(subsystem_log) -GLOBAL_PROTECT(subsystem_log) GLOBAL_LIST_EMPTY(bombers) GLOBAL_PROTECT(bombers) diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm index ec3593ee9d..af31e2b5a5 100644 --- a/code/_globalvars/misc.dm +++ b/code/_globalvars/misc.dm @@ -23,8 +23,6 @@ GLOBAL_VAR_INIT(bsa_unlock, FALSE) //BSA unlocked by head ID swipes GLOBAL_LIST_EMPTY(player_details) // ckey -> /datum/player_details -GLOBAL_LIST_EMPTY(clientless_round_timeouts) // ckey -> time that ckey can rejoin round - // All religion stuff GLOBAL_VAR(religion) GLOBAL_VAR(deity) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index e6b2a63673..f082f2ad16 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -98,19 +98,17 @@ take_damage(I.force, I.damtype, "melee", 1) /mob/living/attacked_by(obj/item/I, mob/living/user) - //CIT CHANGES START HERE - combatmode and resting checks - var/totitemdamage = I.force - if(iscarbon(user)) - var/mob/living/carbon/tempcarb = user - if(!tempcarb.combatmode) - totitemdamage *= 0.5 - if(user.resting) - totitemdamage *= 0.5 - //CIT CHANGES END HERE - if(user != src && check_shields(I, totitemdamage, "the [I.name]", MELEE_ATTACK, I.armour_penetration)) - return FALSE send_item_attack_message(I, user) if(I.force) + //CIT CHANGES START HERE - combatmode and resting checks + var/totitemdamage = I.force + if(iscarbon(user)) + var/mob/living/carbon/tempcarb = user + if(!tempcarb.combatmode) + totitemdamage *= 0.5 + if(user.resting) + totitemdamage *= 0.5 + //CIT CHANGES END HERE apply_damage(totitemdamage, I.damtype) //CIT CHANGE - replaces I.force with totitemdamage if(I.damtype == BRUTE && !HAS_TRAIT(src, TRAIT_NOMARROW)) if(prob(33)) diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 6ee7d51091..30e6883d24 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -91,8 +91,6 @@ var/obj/item/clothing/gloves/G = gloves if(istype(G) && G.Touch(A,0)) // for magic gloves return - if (istype(glasses) && glasses.ranged_attack(src,A,mouseparams)) - return for(var/datum/mutation/human/HM in dna.mutations) HM.on_ranged_attack(src, A, mouseparams) diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm index 730a3f17f4..a5d27819b8 100644 --- a/code/controllers/configuration/configuration.dm +++ b/code/controllers/configuration/configuration.dm @@ -14,7 +14,6 @@ var/list/modes // allowed modes var/list/gamemode_cache var/list/votable_modes // votable modes - var/list/storyteller_cache var/list/mode_names var/list/mode_reports var/list/mode_false_report_weight @@ -38,7 +37,6 @@ CRASH("/datum/controller/configuration/Load() called more than once!") InitEntries() LoadModes() - storyteller_cache = typecacheof(/datum/dynamic_storyteller, TRUE) if(fexists("[directory]/config.txt") && LoadEntries("config.txt") <= 1) var/list/legacy_configs = list("game_options.txt", "dbconfig.txt", "comms.txt") for(var/I in legacy_configs) @@ -229,13 +227,13 @@ for(var/T in gamemode_cache) // I wish I didn't have to instance the game modes in order to look up // their information, but it is the only way (at least that I know of). - // for future reference: just use initial() lol var/datum/game_mode/M = new T() if(M.config_tag) if(!(M.config_tag in modes)) // ensure each mode is added only once modes += M.config_tag mode_names[M.config_tag] = M.name + probabilities[M.config_tag] = M.probability mode_reports[M.config_tag] = M.generate_report() if(probabilities[M.config_tag]>0) mode_false_report_weight[M.config_tag] = M.false_report_weight @@ -319,14 +317,6 @@ return new T return new /datum/game_mode/extended() -/datum/controller/configuration/proc/pick_storyteller(storyteller_name) - for(var/T in storyteller_cache) - var/datum/dynamic_storyteller/S = T - var/name = initial(S.name) - if(name && name == storyteller_name) - return T - return /datum/dynamic_storyteller/classic - /datum/controller/configuration/proc/get_runnable_modes() var/list/datum/game_mode/runnable_modes = new var/list/probabilities = Get(/datum/config_entry/keyed_list/probability) @@ -341,9 +331,6 @@ if(probabilities[M.config_tag]<=0) qdel(M) continue - if(M.config_tag in SSvote.stored_modetier_results && SSvote.stored_modetier_results[M.config_tag] < Get(/datum/config_entry/number/dropped_modes)) - qdel(M) - continue if(min_pop[M.config_tag]) M.required_players = min_pop[M.config_tag] if(max_pop[M.config_tag]) diff --git a/code/controllers/configuration/entries/fail2topic.dm b/code/controllers/configuration/entries/fail2topic.dm deleted file mode 100644 index 7ed09b378a..0000000000 --- a/code/controllers/configuration/entries/fail2topic.dm +++ /dev/null @@ -1,19 +0,0 @@ -/datum/config_entry/number/fail2topic_rate_limit - config_entry_value = 10 //deciseconds - -/datum/config_entry/number/fail2topic_max_fails - config_entry_value = 5 - -/datum/config_entry/string/fail2topic_rule_name - config_entry_value = "_dd_fail2topic" - protection = CONFIG_ENTRY_LOCKED //affects physical server configuration, no touchies!! - -/datum/config_entry/flag/fail2topic_enabled - config_entry_value = TRUE - -/datum/config_entry/number/topic_max_size - config_entry_value = 8192 - -/datum/config_entry/keyed_list/topic_rate_limit_whitelist - key_mode = KEY_MODE_TEXT - value_mode = VALUE_MODE_FLAG diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 8b6bbe83b4..61b5788ef8 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -378,25 +378,17 @@ /datum/config_entry/keyed_list/box_random_engine key_mode = KEY_MODE_TEXT - value_mode = VALUE_MODE_NUM + value_mode = VALUE_MODE_FLAG lowercase = FALSE - splitter = "," + splitter = "-" /datum/config_entry/number/auto_transfer_delay config_entry_value = 72000 min_val = 0 -/datum/config_entry/flag/pai_custom_holoforms - /datum/config_entry/number/marauder_delay_non_reebe config_entry_value = 1800 min_val = 0 /datum/config_entry/flag/allow_clockwork_marauder_on_station config_entry_value = TRUE - -/datum/config_entry/flag/modetier_voting - config_entry_value = TRUE - -/datum/config_entry/number/dropped_modes - config_entry_value = 3 diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 7244212630..125da84a30 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -54,7 +54,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new var/static/restart_clear = 0 var/static/restart_timeout = 0 var/static/restart_count = 0 - + var/static/random_seed //current tick limit, assigned before running a subsystem. @@ -69,7 +69,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new if(!random_seed) random_seed = (TEST_RUN_PARAMETER in world.params) ? 29051994 : rand(1, 1e9) rand_seed(random_seed) - + var/list/_subsystems = list() subsystems = _subsystems if (Master != src) diff --git a/code/controllers/subsystem.dm b/code/controllers/subsystem.dm index 3be4f36270..4fe0812c56 100644 --- a/code/controllers/subsystem.dm +++ b/code/controllers/subsystem.dm @@ -155,8 +155,6 @@ if(SS_SLEEPING) state = SS_PAUSING -/datum/controller/subsystem/proc/subsystem_log(msg) - return log_subsystem(name, msg) //used to initialize the subsystem AFTER the map has loaded /datum/controller/subsystem/Initialize(start_timeofday) @@ -164,7 +162,7 @@ var/time = (REALTIMEOFDAY - start_timeofday) / 10 var/msg = "Initialized [name] subsystem within [time] second[time == 1 ? "" : "s"]!" to_chat(world, "[msg]") - log_subsystem("INIT", msg) + log_world(msg) return time //hook for printing stats to the "MC" statuspanel for admins to see performance and related stats etc. diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index 2a59558bcd..1bfdc79d27 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -315,7 +315,7 @@ SUBSYSTEM_DEF(air) var/starting_ats = active_turfs.len sleep(world.tick_lag) var/timer = world.timeofday - log_mapping("There are [starting_ats] active turfs at roundstart caused by a difference of the air between the adjacent turfs. You can see its coordinates using \"Mapping -> Show roundstart AT list\" verb (debug verbs required).") + warning("There are [starting_ats] active turfs at roundstart, this is a mapping error caused by a difference of the air between the adjacent turfs. You can see its coordinates using \"Mapping -> Show roundstart AT list\" verb (debug verbs required)") for(var/turf/T in active_turfs) GLOB.active_turfs_startlist += T diff --git a/code/controllers/subsystem/fail2topic.dm b/code/controllers/subsystem/fail2topic.dm deleted file mode 100644 index a589ae2462..0000000000 --- a/code/controllers/subsystem/fail2topic.dm +++ /dev/null @@ -1,113 +0,0 @@ -SUBSYSTEM_DEF(fail2topic) - name = "Fail2Topic" - init_order = INIT_ORDER_FAIL2TOPIC - flags = SS_BACKGROUND - runlevels = ALL - - var/list/rate_limiting = list() - var/list/fail_counts = list() - var/list/active_bans = list() - - var/rate_limit - var/max_fails - var/rule_name - var/enabled = FALSE - -/datum/controller/subsystem/fail2topic/Initialize(timeofday) - rate_limit = CONFIG_GET(number/fail2topic_rate_limit) - max_fails = CONFIG_GET(number/fail2topic_max_fails) - rule_name = CONFIG_GET(string/fail2topic_rule_name) - enabled = CONFIG_GET(flag/fail2topic_enabled) - - DropFirewallRule() // Clear the old bans if any still remain - - if (world.system_type == UNIX && enabled) - enabled = FALSE - subsystem_log("DISABLED - UNIX systems are not supported.") - if(!enabled) - flags |= SS_NO_FIRE - can_fire = FALSE - - return ..() - -/datum/controller/subsystem/fail2topic/fire() - while (rate_limiting.len) - var/ip = rate_limiting[1] - var/last_attempt = rate_limiting[ip] - - if (world.time - last_attempt > rate_limit) - rate_limiting -= ip - fail_counts -= ip - - if (MC_TICK_CHECK) - return - -/datum/controller/subsystem/fail2topic/Shutdown() - DropFirewallRule() - -/datum/controller/subsystem/fail2topic/proc/IsRateLimited(ip) - var/last_attempt = rate_limiting[ip] - - var/static/datum/config_entry/keyed_list/topic_rate_limit_whitelist/cached_whitelist_entry - if(!istype(cached_whitelist_entry)) - cached_whitelist_entry = CONFIG_GET(keyed_list/topic_rate_limit_whitelist) - - if(istype(cached_whitelist_entry)) - if(cached_whitelist_entry.config_entry_value[ip]) - return FALSE - - if (active_bans[ip]) - return TRUE - - rate_limiting[ip] = world.time - - if (isnull(last_attempt)) - return FALSE - - if (world.time - last_attempt > rate_limit) - fail_counts -= ip - return FALSE - else - var/failures = fail_counts[ip] - - if (isnull(failures)) - fail_counts[ip] = 1 - return TRUE - else if (failures > max_fails) - BanFromFirewall(ip) - return TRUE - else - fail_counts[ip] = failures + 1 - return TRUE - -/datum/controller/subsystem/fail2topic/proc/BanFromFirewall(ip) - if (!enabled) - return - - active_bans[ip] = world.time - fail_counts -= ip - rate_limiting -= ip - - . = shell("netsh advfirewall firewall add rule name=\"[rule_name]\" dir=in interface=any action=block remoteip=[ip]") - - if (.) - subsystem_log("Failed to ban [ip]. Exit code: [.].") - else if (isnull(.)) - subsystem_log("Failed to invoke shell to ban [ip].") - else - subsystem_log("Banned [ip].") - -/datum/controller/subsystem/fail2topic/proc/DropFirewallRule() - if (!enabled) - return - - active_bans = list() - - . = shell("netsh advfirewall firewall delete rule name=\"[rule_name]\"") - - if (.) - subsystem_log("Failed to drop firewall rule. Exit code: [.].") - else if (isnull(.)) - subsystem_log("Failed to invoke shell for firewall rule drop.") - else - subsystem_log("Firewall rule dropped.") diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 7597a9229a..af7ae825f4 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -658,7 +658,7 @@ SUBSYSTEM_DEF(job) message_admins(msg) CRASH(msg) -/datum/controller/subsystem/job/proc/equip_loadout(mob/dead/new_player/N, mob/living/M, equipbackpackstuff, bypass_prereqs = FALSE) +/datum/controller/subsystem/job/proc/equip_loadout(mob/dead/new_player/N, mob/living/M, equipbackpackstuff) var/mob/the_mob = N if(!the_mob) the_mob = M // cause this doesn't get assigned if player is a latejoiner @@ -671,7 +671,7 @@ SUBSYSTEM_DEF(job) if(!G) continue var/permitted = TRUE - if(!bypass_prereqs && G.restricted_roles && G.restricted_roles.len && !(M.mind.assigned_role in G.restricted_roles)) + if(G.restricted_roles && G.restricted_roles.len && !(M.mind.assigned_role in G.restricted_roles)) permitted = FALSE if(G.donoritem && !G.donator_ckey_check(the_mob.client.ckey)) permitted = FALSE diff --git a/code/controllers/subsystem/pai.dm b/code/controllers/subsystem/pai.dm index 5aa109b63a..18667053d4 100644 --- a/code/controllers/subsystem/pai.dm +++ b/code/controllers/subsystem/pai.dm @@ -8,7 +8,7 @@ SUBSYSTEM_DEF(pai) var/spam_delay = 100 var/list/pai_card_list = list() -/datum/controller/subsystem/pai/Topic(href, href_list) +/datum/controller/subsystem/pai/Topic(href, href_list[]) if(href_list["download"]) var/datum/paiCandidate/candidate = locate(href_list["candidate"]) in candidates var/obj/item/paicard/card = locate(href_list["device"]) in pai_card_list diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm index e43c8f21a2..8329493818 100644 --- a/code/controllers/subsystem/persistence.dm +++ b/code/controllers/subsystem/persistence.dm @@ -13,14 +13,13 @@ SUBSYSTEM_DEF(persistence) var/list/saved_messages = list() var/list/saved_modes = list(1,2,3) var/list/saved_dynamic_rules = list(list(),list(),list()) - var/list/saved_storytellers = list("foo","bar","baz","foo again","bar again") + var/list/saved_threat_levels = list(1,1,1) var/list/saved_maps var/list/saved_trophies = list() var/list/spawned_objects = list() var/list/antag_rep = list() var/list/antag_rep_change = list() var/list/picture_logging_information = list() - var/list/saved_votes = list() var/list/obj/structure/sign/picture_frame/photo_frames var/list/obj/item/storage/photo_album/photo_albums @@ -30,12 +29,9 @@ SUBSYSTEM_DEF(persistence) LoadChiselMessages() LoadTrophies() LoadRecentModes() - LoadRecentStorytellers() - LoadRecentRulesets() + LoadRecentThreats() LoadRecentMaps() LoadPhotoPersistence() - for(var/client/C in GLOB.clients) - LoadSavedVote(C.ckey) if(CONFIG_GET(flag/use_antag_rep)) LoadAntagReputation() LoadRandomizedRecipes() @@ -173,23 +169,14 @@ SUBSYSTEM_DEF(persistence) return saved_modes = json["data"] -/datum/controller/subsystem/persistence/proc/LoadRecentRulesets() - var/json_file = file("data/RecentRulesets.json") +/datum/controller/subsystem/persistence/proc/LoadRecentThreats() + var/json_file = file("data/RecentThreatLevels.json") if(!fexists(json_file)) return var/list/json = json_decode(file2text(json_file)) if(!json) return - saved_dynamic_rules = json["data"] - -/datum/controller/subsystem/persistence/proc/LoadRecentStorytellers() - var/json_file = file("data/RecentStorytellers.json") - if(!fexists(json_file)) - return - var/list/json = json_decode(file2text(json_file)) - if(!json) - return - saved_storytellers = json["data"] + saved_threat_levels = json["data"] /datum/controller/subsystem/persistence/proc/LoadRecentMaps() var/json_file = file("data/RecentMaps.json") @@ -210,15 +197,6 @@ SUBSYSTEM_DEF(persistence) return antag_rep = json_decode(json) -/datum/controller/subsystem/persistence/proc/LoadSavedVote(var/ckey) - var/json_file = file("data/player_saves/[copytext(ckey,1,2)]/[ckey]/SavedVotes.json") - if(!fexists(json_file)) - return - var/list/json = json_decode(file2text(json_file)) - if(!json) - return - saved_votes[ckey] = json["data"] - /datum/controller/subsystem/persistence/proc/SetUpTrophies(list/trophy_items) for(var/A in GLOB.trophy_cases) var/obj/structure/displaycase/trophy/T = A @@ -252,7 +230,7 @@ SUBSYSTEM_DEF(persistence) CollectRoundtype() if(istype(SSticker.mode, /datum/game_mode/dynamic)) var/datum/game_mode/dynamic/mode = SSticker.mode - CollectStoryteller(mode) + CollectThreatLevel(mode) CollectRulesets(mode) RecordMaps() SavePhotoPersistence() //THIS IS PERSISTENCE, NOT THE LOGGING PORTION. @@ -410,16 +388,13 @@ SUBSYSTEM_DEF(persistence) fdel(json_file) WRITE_FILE(json_file, json_encode(file_data)) -/datum/controller/subsystem/persistence/proc/CollectStoryteller(var/datum/game_mode/dynamic/mode) - saved_storytellers.len = 5 - saved_storytellers[5] = saved_storytellers[4] - saved_storytellers[4] = saved_storytellers[3] - saved_storytellers[3] = saved_storytellers[2] - saved_storytellers[2] = saved_storytellers[1] - saved_storytellers[1] = mode.storyteller.name - var/json_file = file("data/RecentStorytellers.json") +/datum/controller/subsystem/persistence/proc/CollectThreatLevel(var/datum/game_mode/dynamic/mode) + saved_threat_levels[3] = saved_threat_levels[2] + saved_threat_levels[2] = saved_threat_levels [1] + saved_threat_levels[1] = mode.threat_level + var/json_file = file("data/RecentThreatLevels.json") var/list/file_data = list() - file_data["data"] = saved_storytellers + file_data["data"] = saved_threat_levels fdel(json_file) WRITE_FILE(json_file, json_encode(file_data)) @@ -427,9 +402,8 @@ SUBSYSTEM_DEF(persistence) saved_dynamic_rules[3] = saved_dynamic_rules[2] saved_dynamic_rules[2] = saved_dynamic_rules[1] saved_dynamic_rules[1] = list() - for(var/r in mode.executed_rules) - var/datum/dynamic_ruleset/rule = r - saved_dynamic_rules[1] += rule.config_tag + for(var/datum/dynamic_ruleset/ruleset in mode.executed_rules) + saved_dynamic_rules[1] += ruleset.config_tag var/json_file = file("data/RecentRulesets.json") var/list/file_data = list() file_data["data"] = saved_dynamic_rules @@ -499,11 +473,3 @@ SUBSYSTEM_DEF(persistence) fdel(json_file) WRITE_FILE(json_file, json_encode(file_data)) - -/datum/controller/subsystem/persistence/proc/SaveSavedVotes() - for(var/ckey in saved_votes) - var/json_file = file("data/player_saves/[copytext(ckey,1,2)]/[ckey]/SavedVotes.json") - var/list/file_data = list() - file_data["data"] = saved_votes[ckey] - fdel(json_file) - WRITE_FILE(json_file, json_encode(file_data)) diff --git a/code/controllers/subsystem/processing/nanites.dm b/code/controllers/subsystem/processing/nanites.dm index 5b53f9f884..69bd5781de 100644 --- a/code/controllers/subsystem/processing/nanites.dm +++ b/code/controllers/subsystem/processing/nanites.dm @@ -6,7 +6,6 @@ PROCESSING_SUBSYSTEM_DEF(nanites) var/list/datum/nanite_cloud_backup/cloud_backups = list() var/list/mob/living/nanite_monitored_mobs = list() var/list/datum/nanite_program/relay/nanite_relays = list() - var/neural_network_count = 0 /datum/controller/subsystem/processing/nanites/proc/check_hardware(datum/nanite_cloud_backup/backup) if(QDELETED(backup.storage) || (backup.storage.stat & (NOPOWER|BROKEN))) diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index a52bcf4607..0b9284a144 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -17,7 +17,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks) /datum/controller/subsystem/processing/quirks/Initialize(timeofday) if(!quirks.len) SetupQuirks() - quirk_blacklist = list(list("Blind","Nearsighted"),list("Jolly","Depression","Apathetic"),list("Ageusia","Deviant Tastes"),list("Ananas Affinity","Ananas Aversion"),list("Alcohol Tolerance","Alcohol Intolerance"),list("Alcohol Intolerance","Drunken Resilience")) + quirk_blacklist = list(list("Blind","Nearsighted"),list("Jolly","Depression","Apathetic"),list("Ageusia","Deviant Tastes"),list("Ananas Affinity","Ananas Aversion")) return ..() /datum/controller/subsystem/processing/quirks/proc/SetupQuirks() @@ -46,8 +46,8 @@ PROCESSING_SUBSYSTEM_DEF(quirks) badquirk = TRUE if(badquirk) cli.prefs.save_character() - if (!silent && LAZYLEN(cut)) - to_chat(to_chat_target || user, "Some quirks have been cut from your character because of these quirks conflicting with your job assignment: [english_list(cut)].") + if(!silent && LAZYLEN(cut)) + to_chat(to_chat_target || user, "All of your non-neutral character quirks have been cut due to these quirks conflicting with your job assignment: [english_list(cut)].") /datum/controller/subsystem/processing/quirks/proc/quirk_path_by_name(name) return quirks[name] @@ -66,7 +66,6 @@ PROCESSING_SUBSYSTEM_DEF(quirks) /datum/controller/subsystem/processing/quirks/proc/filter_quirks(list/our_quirks, datum/job/job) var/list/cut = list() var/list/banned_names = list() - var/pointscut = 0 for(var/i in job.blacklisted_quirks) var/name = quirk_name_by_path(i) if(name) @@ -76,17 +75,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks) for(var/i in blacklisted) our_quirks -= i cut += i - pointscut += quirk_points_by_name(i) - if (pointscut != 0) - for (var/i in shuffle(our_quirks)) - if (quirk_points_by_name(i) < pointscut || (pointscut < 0) ? quirk_points_by_name(i) <= 0 : quirk_points_by_name(i) >= 0) - continue - else - our_quirks -= i - cut += i - pointscut += quirk_points_by_name(i) - if (pointscut >= 0) //with how it works, it needs to be above zero, not below, as points for positive is positive, and negative is negative, we only want it to break if it's above zero, ie. we cut more positive than negative - break + /* //Code to automatically reduce positive quirks until balance is even. var/points_used = total_points(our_quirks) if(points_used > 0) @@ -102,11 +91,10 @@ PROCESSING_SUBSYSTEM_DEF(quirks) */ //Nah, let's null all non-neutrals out. - if (pointscut != 0)// only if the pointscutting didn't work. - if(cut.len) - for(var/i in our_quirks) - if(quirk_points_by_name(i) != 0) - //cut += i -- Commented out: Only show the ones that triggered the quirk purge. - our_quirks -= i + if(cut.len) + for(var/i in our_quirks) + if(quirk_points_by_name(i) != 0) + //cut += i -- Commented out: Only show the ones that triggered the quirk purge. + our_quirks -= i return cut diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index b406a8ccad..fe40b3f01f 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -37,7 +37,7 @@ SUBSYSTEM_DEF(shuttle) var/points = 5000 //number of trade-points we have var/centcom_message = "" //Remarks from CentCom on how well you checked the last order. var/list/discoveredPlants = list() //Typepaths for unusual plants we've already sent CentCom, associated with their potencies - var/passive_supply_points_per_minute = 500 + var/passive_supply_points_per_minute = 750 var/list/supply_packs = list() var/list/shoppinglist = list() diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 0948e428ff..890725fbb1 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -221,12 +221,6 @@ SUBSYSTEM_DEF(ticker) var/init_start = world.timeofday //Create and announce mode var/list/datum/game_mode/runnable_modes - if(SSvote.mode && (SSvote.mode == "roundtype" || SSvote.mode == "dynamic" || SSvote.mode == "mode tiers")) - SSvote.result() - SSpersistence.SaveSavedVotes() - for(var/client/C in SSvote.voting) - C << browse(null, "window=vote;can_close=0") - SSvote.reset() if(GLOB.master_mode == "random" || GLOB.master_mode == "secret") runnable_modes = config.get_runnable_modes() @@ -407,9 +401,6 @@ SUBSYSTEM_DEF(ticker) qdel(player) living.notransform = TRUE if(living.client) - if (living.client.prefs && living.client.prefs.auto_ooc) - if (living.client.prefs.chat_toggles & CHAT_OOC) - living.client.prefs.chat_toggles ^= CHAT_OOC var/obj/screen/splash/S = new(living.client, TRUE) S.Fade(TRUE) livings += living @@ -489,11 +480,7 @@ SUBSYSTEM_DEF(ticker) SSticker.timeLeft = 900 SSticker.modevoted = TRUE var/dynamic = CONFIG_GET(flag/dynamic_voting) - if(dynamic) - SSvote.initiate_vote("dynamic","server",hideresults=TRUE,votesystem=SCORE_VOTING,forced=TRUE,vote_time = 20 MINUTES) - else - SSvote.initiate_vote("roundtype","server",hideresults=TRUE,votesystem=PLURALITY_VOTING,forced=TRUE, \ - vote_time = (CONFIG_GET(flag/modetier_voting) ? 1 MINUTES : 20 MINUTES)) + SSvote.initiate_vote(dynamic ? "dynamic" : "roundtype","server",TRUE) /datum/controller/subsystem/ticker/Recover() current_state = SSticker.current_state diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index f82954276e..dee10e4998 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -1,5 +1,3 @@ -#define VOTE_COOLDOWN 10 - SUBSYSTEM_DEF(vote) name = "Vote" wait = 10 @@ -10,55 +8,44 @@ SUBSYSTEM_DEF(vote) var/initiator = null var/started_time = null - var/end_time = 0 + var/time_remaining = 0 var/mode = null - var/vote_system = PLURALITY_VOTING var/question = null var/list/choices = list() - var/list/scores = list() - var/list/choice_descs = list() // optional descriptions var/list/voted = list() var/list/voting = list() - var/list/saved = list() var/list/generated_actions = list() - var/next_pop = 0 var/obfuscated = FALSE//CIT CHANGE - adds obfuscated/admin-only votes var/list/stored_gamemode_votes = list() //Basically the last voted gamemode is stored here for end-of-round use. - var/list/stored_modetier_results = list() // The aggregated tier list of the modes available in secret. - /datum/controller/subsystem/vote/fire() //called by master_controller if(mode) - if(end_time < world.time) + time_remaining = round((started_time + CONFIG_GET(number/vote_period) - world.time)/10) + + if(time_remaining < 0) result() - SSpersistence.SaveSavedVotes() for(var/client/C in voting) C << browse(null, "window=vote;can_close=0") - if(end_time < world.time) // result() can change this - reset() - else if(next_pop < world.time) + reset() + else var/datum/browser/client_popup for(var/client/C in voting) - client_popup = new(C, "vote", "Voting Panel", nwidth=600,nheight=700) + client_popup = new(C, "vote", "Voting Panel") client_popup.set_window_options("can_close=0") client_popup.set_content(interface(C)) client_popup.open(0) - next_pop = world.time+VOTE_COOLDOWN - /datum/controller/subsystem/vote/proc/reset() initiator = null - end_time = 0 + time_remaining = 0 mode = null question = null choices.Cut() - choice_descs.Cut() voted.Cut() voting.Cut() - scores.Cut() obfuscated = FALSE //CIT CHANGE - obfuscated votes remove_action_buttons() @@ -97,128 +84,17 @@ SUBSYSTEM_DEF(vote) . += option return . -/datum/controller/subsystem/vote/proc/calculate_condorcet_votes(var/blackbox_text) - // https://en.wikipedia.org/wiki/Schulze_method#Implementation - var/list/d[][] = new/list(choices.len,choices.len) // the basic vote matrix, how many times a beats b - for(var/ckey in voted) - var/list/this_vote = voted[ckey] - for(var/a in 1 to choices.len) - for(var/b in a+1 to choices.len) - var/a_rank = this_vote.Find(a) - var/b_rank = this_vote.Find(b) - a_rank = a_rank ? a_rank : choices.len+1 - b_rank = b_rank ? b_rank : choices.len+1 - if(a_rankopposite_pref) - p[i][j] = d[i][j] - else - p[i][j] = 0 - for(var/i in 1 to choices.len) - for(var/j in 1 to choices.len) - if(i != j) - for(var/k in 1 to choices.len) // YEAH O(n^3) !! - if(i != k && j != k) - p[j][k] = max(p[j][k],min(p[j][i], p[i][k])) - //one last pass, now that we've done the math - for(var/i in 1 to choices.len) - for(var/j in 1 to choices.len) - if(i != j) - SSblackbox.record_feedback("nested tally","voting",p[i][j],list(blackbox_text,"Shortest Paths",choices[i],choices[j])) - if(p[i][j] >= p[j][i]) - choices[choices[i]]++ // higher shortest path = better candidate, so we add to choices here - // choices[choices[i]] is the schulze ranking, here, rather than raw vote numbers - -/datum/controller/subsystem/vote/proc/calculate_majority_judgement_vote(var/blackbox_text) - // https://en.wikipedia.org/wiki/Majority_judgment - var/list/scores_by_choice = list() - for(var/choice in choices) - scores_by_choice[choice] = list() - for(var/ckey in voted) - var/list/this_vote = voted[ckey] - var/list/pretty_vote = list() - for(var/choice in this_vote) - sorted_insert(scores_by_choice[choice],this_vote[choice],/proc/cmp_numeric_asc) - // START BALLOT GATHERING - pretty_vote += choice - pretty_vote[choice] = GLOB.vote_score_options[this_vote[choice]] - SSblackbox.record_feedback("associative","voting_ballots",1,pretty_vote) - // END BALLOT GATHERING - for(var/score_name in scores_by_choice) - var/list/score = scores_by_choice[score_name] - for(var/indiv_score in score) - SSblackbox.record_feedback("nested tally","voting",1,list(blackbox_text,"Scores",score_name,GLOB.vote_score_options[indiv_score])) - if(score.len == 0) - scores_by_choice -= score_name - while(scores_by_choice.len > 1) - var/highest_median = 0 - for(var/score_name in scores_by_choice) // first get highest median - var/list/score = scores_by_choice[score_name] - if(!score.len) - scores_by_choice -= score_name - continue - var/median = score[max(1,round(score.len/2))] - if(median >= highest_median) - highest_median = median - for(var/score_name in scores_by_choice) // then, remove - var/list/score = scores_by_choice[score_name] - var/median = score[max(1,round(score.len/2))] - if(median < highest_median) - scores_by_choice -= score_name - for(var/score_name in scores_by_choice) // after removals - var/list/score = scores_by_choice[score_name] - if(score.len == 0) - choices[score_name] += 100 // we're in a tie situation--just go with the first one - return - var/median_pos = max(1,round(score.len/2)) - score.Cut(median_pos,median_pos+1) - choices[score_name]++ - -/datum/controller/subsystem/vote/proc/calculate_scores(var/blackbox_text) - var/list/scores_by_choice = list() - for(var/choice in choices) - scores_by_choice[choice] = list() - for(var/ckey in voted) - var/list/this_vote = voted[ckey] - for(var/choice in this_vote) - sorted_insert(scores_by_choice[choice],this_vote[choice],/proc/cmp_numeric_asc) - var/middle_score = round(GLOB.vote_score_options.len/2,1) - for(var/score_name in scores_by_choice) - var/list/score = scores_by_choice[score_name] - for(var/S in score) - scores[score_name] += S-middle_score - SSblackbox.record_feedback("nested tally","voting",scores[score_name],list(blackbox_text,"Total scores",score_name)) - - /datum/controller/subsystem/vote/proc/announce_result() - var/vote_title_text - var/text - if(question) - text += "[question]" - vote_title_text = "[question]" - else - text += "[capitalize(mode)] Vote" - vote_title_text = "[capitalize(mode)] Vote" - if(vote_system == RANKED_CHOICE_VOTING) - calculate_condorcet_votes(vote_title_text) - if(vote_system == SCORE_VOTING) - calculate_majority_judgement_vote(vote_title_text) var/list/winners = get_result() + var/text var/was_roundtype_vote = mode == "roundtype" || mode == "dynamic" if(winners.len > 0) + if(question) + text += "[question]" + else + text += "[capitalize(mode)] Vote" if(was_roundtype_vote) stored_gamemode_votes = list() - if(!obfuscated && vote_system == RANKED_CHOICE_VOTING) - text += "\nIt should be noted that this is not a raw tally of votes (impossible in ranked choice) but the score determined by the schulze method of voting, so the numbers will look weird!" for(var/i=1,i<=choices.len,i++) var/votes = choices[choices[i]] if(!votes) @@ -240,27 +116,17 @@ SUBSYSTEM_DEF(vote) log_vote(text) remove_action_buttons() to_chat(world, "\n[text]") - switch(vote_system) - if(APPROVAL_VOTING,PLURALITY_VOTING) - for(var/i=1,i<=choices.len,i++) - SSblackbox.record_feedback("nested tally","voting",choices[choices[i]],list(vote_title_text,choices[i])) - if(RANKED_CHOICE_VOTING) - for(var/i=1,i<=voted.len,i++) - var/list/myvote = voted[voted[i]] - for(var/j=1,j<=myvote.len,j++) - SSblackbox.record_feedback("nested tally","voting",1,list(vote_title_text,"[j]\th",choices[myvote[j]])) if(obfuscated) //CIT CHANGE - adds obfuscated votes. this messages admins with the vote's true results var/admintext = "Obfuscated results" - if(vote_system == RANKED_CHOICE_VOTING) - admintext += "\nIt should be noted that this is not a raw tally of votes (impossible in ranked choice) but the score determined by the schulze method of voting, so the numbers will look weird!" - else if(vote_system == SCORE_VOTING) - admintext += "\nIt should be noted that this is not a raw tally of votes but the number of runoffs done by majority judgement!" for(var/i=1,i<=choices.len,i++) var/votes = choices[choices[i]] admintext += "\n[choices[i]]: [votes]" message_admins(admintext) return . +#define PEACE "calm" +#define CHAOS "chaotic" + /datum/controller/subsystem/vote/proc/result() . = announce_result() var/restart = 0 @@ -273,12 +139,6 @@ SUBSYSTEM_DEF(vote) SSticker.save_mode(.) message_admins("The gamemode has been voted for, and has been changed to: [GLOB.master_mode]") log_admin("Gamemode has been voted for and switched to: [GLOB.master_mode].") - if(CONFIG_GET(flag/modetier_voting)) - reset() - started_time = 0 - initiate_vote("mode tiers","server",hideresults=FALSE,votesystem=RANKED_CHOICE_VOTING,forced=TRUE, vote_time = 30 MINUTES) - to_chat(world,"The vote will end right as the round starts.") - return . if("restart") if(. == "Restart Round") restart = 1 @@ -289,20 +149,36 @@ SUBSYSTEM_DEF(vote) restart = 1 else GLOB.master_mode = . - if("mode tiers") - stored_modetier_results = choices.Copy() if("dynamic") if(SSticker.current_state > GAME_STATE_PREGAME)//Don't change the mode if the round already started. return message_admins("A vote has tried to change the gamemode, but the game has already started. Aborting.") - if(. == "Secret") - GLOB.master_mode = "secret" - SSticker.save_mode(.) - message_admins("The gamemode has been voted for, and has been changed to: [GLOB.master_mode]") - log_admin("Gamemode has been voted for and switched to: [GLOB.master_mode].") - else - GLOB.master_mode = "dynamic" - var/datum/dynamic_storyteller/S = config.pick_storyteller(.) - GLOB.dynamic_storyteller_type = S + GLOB.master_mode = "dynamic" + if("extended" in choices) + if(. == "extended") + GLOB.dynamic_forced_extended = TRUE // we still do the rest of the stuff + choices[PEACE] += choices["extended"] + var/mean = 0 + var/voters = 0 + for(var/client/c in GLOB.clients) + var/vote = c.prefs.preferred_chaos + if(vote) + voters += 1 + switch(vote) + if(CHAOS_NONE) + mean -= 0.1 + if(CHAOS_LOW) + mean -= 0.05 + if(CHAOS_HIGH) + mean += 0.05 + if(CHAOS_MAX) + mean += 0.1 + mean/=voters + if(voted.len != 0) + mean += (choices[PEACE]*-1+choices[CHAOS])/voted.len + GLOB.dynamic_curve_centre = mean*20 + GLOB.dynamic_curve_width = CLAMP(2-abs(mean*5),0.5,4) + to_chat(world,"Dynamic curve centre set to [GLOB.dynamic_curve_centre] and width set to [GLOB.dynamic_curve_width].") + log_admin("Dynamic curve centre set to [GLOB.dynamic_curve_centre] and width set to [GLOB.dynamic_curve_width]") if("map") var/datum/map_config/VM = config.maplist[.] message_admins("The map has been voted for and will change to: [VM.map_name]") @@ -320,58 +196,27 @@ SUBSYSTEM_DEF(vote) else to_chat(world, "Notice:Restart vote will not restart the server automatically because there are active admins on.") message_admins("A restart vote has passed, but there are active admins on with +server, so it has been canceled. If you wish, you may restart the server.") - + return . -/datum/controller/subsystem/vote/proc/submit_vote(vote, score = 0) +/datum/controller/subsystem/vote/proc/submit_vote(vote) if(mode) if(CONFIG_GET(flag/no_dead_vote) && usr.stat == DEAD && !usr.client.holder) return 0 - if(vote && ISINRANGE(vote, 1, choices.len)) - switch(vote_system) - if(PLURALITY_VOTING) - if(usr.ckey in voted) - choices[choices[voted[usr.ckey]]]-- - voted[usr.ckey] = vote - choices[choices[vote]]++ - return vote - else - voted += usr.ckey - voted[usr.ckey] = vote - choices[choices[vote]]++ //check this - return vote - if(APPROVAL_VOTING) - if(usr.ckey in voted) - if(vote in voted[usr.ckey]) - voted[usr.ckey] -= vote - choices[choices[vote]]-- - else - voted[usr.ckey] += vote - choices[choices[vote]]++ - else - voted += usr.ckey - voted[usr.ckey] = list(vote) - choices[choices[vote]]++ - return vote - if(RANKED_CHOICE_VOTING) - if(usr.ckey in voted) - if(vote in voted[usr.ckey]) - voted[usr.ckey] -= vote - else - voted += usr.ckey - voted[usr.ckey] = list() - voted[usr.ckey] += vote - saved -= usr.ckey - if(SCORE_VOTING) - if(!(usr.ckey in voted)) - voted += usr.ckey - voted[usr.ckey] = list() - voted[usr.ckey][choices[vote]] = score - saved -= usr.ckey + if(!(usr.ckey in voted)) + if(vote && 1<=vote && vote<=choices.len) + voted += usr.ckey + voted[usr.ckey] = vote + choices[choices[vote]]++ //check this + return vote + else if(vote && 1<=vote && vote<=choices.len) + choices[choices[voted[usr.ckey]]]-- + voted[usr.ckey] = vote + choices[choices[vote]]++ + return vote return 0 -/datum/controller/subsystem/vote/proc/initiate_vote(vote_type, initiator_key, hideresults, votesystem = PLURALITY_VOTING, forced = FALSE,vote_time = -1)//CIT CHANGE - adds hideresults argument to votes to allow for obfuscated votes - vote_system = votesystem +/datum/controller/subsystem/vote/proc/initiate_vote(vote_type, initiator_key, hideresults)//CIT CHANGE - adds hideresults argument to votes to allow for obfuscated votes if(!mode) if(started_time) var/next_allowed_time = (started_time + CONFIG_GET(number/vote_delay)) @@ -411,25 +256,12 @@ SUBSYSTEM_DEF(vote) choices |= M if("roundtype") //CIT CHANGE - adds the roundstart secret/extended vote choices.Add("secret", "extended") - if("mode tiers") - var/list/modes_to_add = config.votable_modes - var/list/probabilities = CONFIG_GET(keyed_list/probability) - for(var/tag in modes_to_add) - if(probabilities[tag] <= 0) - modes_to_add -= tag - choices.Add(modes_to_add) if("dynamic") - for(var/T in config.storyteller_cache) - var/datum/dynamic_storyteller/S = T - var/recent_rounds = 0 - for(var/i in 1 to SSpersistence.saved_storytellers.len) - if(SSpersistence.saved_storytellers[i] == initial(S.name)) - recent_rounds++ - if(recent_rounds < initial(S.weight)) - choices.Add(initial(S.name)) - choice_descs.Add(initial(S.desc)) - choices.Add("Secret") - choice_descs.Add("Standard secret. Switches mode if it wins.") + var/saved_threats = SSpersistence.saved_threat_levels + if((saved_threats[1]+saved_threats[2]+saved_threats[3])>150) + choices.Add("extended",PEACE,CHAOS) + else + choices.Add(PEACE,CHAOS) if("custom") question = stripped_input(usr,"What is the vote for?") if(!question) @@ -448,11 +280,9 @@ SUBSYSTEM_DEF(vote) if(mode == "custom") text += "\n[question]" log_vote(text) - var/vp = vote_time - if(vp == -1) - vp = CONFIG_GET(number/vote_period) + var/vp = CONFIG_GET(number/vote_period) to_chat(world, "\n[text]\nType vote or click here to place your votes.\nYou have [DisplayTimeText(vp)] to vote.") - end_time = started_time+vp + time_remaining = round(vp/10) for(var/c in GLOB.clients) SEND_SOUND(c, sound('sound/misc/server-ready.ogg')) var/client/C = c @@ -462,11 +292,6 @@ SUBSYSTEM_DEF(vote) C.player_details.player_actions += V V.Grant(C.mob) generated_actions += V - if(forced) - var/datum/browser/popup = new(C, "vote", "Voting Panel",nwidth=600,nheight=700) - popup.set_window_options("can_close=0") - popup.set_content(SSvote.interface(C)) - popup.open(0) return 1 return 0 @@ -486,71 +311,14 @@ SUBSYSTEM_DEF(vote) . += "

Vote: '[question]'

" else . += "

Vote: [capitalize(mode)]

" - switch(vote_system) - if(PLURALITY_VOTING) - . += "

Vote one.

" - if(APPROVAL_VOTING) - . += "

Vote any number of choices.

" - if(RANKED_CHOICE_VOTING) - . += "

Vote by order of preference. Revoting will demote to the bottom. 1 is your favorite, and higher numbers are worse.

" - if(SCORE_VOTING) - . += "

Grade the candidates by how much you like them.

" - . += "

No-votes have no power--your opinion is only heard if you vote!

" - . += "Time Left: [DisplayTimeText(end_time-world.time)]

" - if(RANKED_CHOICE_VOTING) - var/list/myvote = voted[C.ckey] - for(var/i=1,i<=choices.len,i++) - var/vote = (myvote ? (myvote.Find(i)) : 0) - if(vote) - . += "
  • [choices[i]] ([vote])
  • " - else - . += "
  • [choices[i]]
  • " - if(choice_descs.len >= i) - . += "
  • [choice_descs[i]]
  • " - . += "
    " - if(!(C.ckey in saved)) - . += "(Save vote)" - else - . += "(Saved!)" - . += "(Load vote from save)" - . += "(Reset votes)" - if(SCORE_VOTING) - var/list/myvote = voted[C.ckey] - for(var/i=1,i<=choices.len,i++) - . += "
  • [choices[i]]" - for(var/r in 1 to GLOB.vote_score_options.len) - . += " " - if((choices[i] in myvote) && myvote[choices[i]] == r) - . +="([GLOB.vote_score_options[r]])" - else - . +="[GLOB.vote_score_options[r]]" - . += "" - . += "
  • " - if(choice_descs.len >= i) - . += "
  • [choice_descs[i]]
  • " - . += "
    " - if(!(C.ckey in saved)) - . += "(Save vote)" - else - . += "(Saved!)" - . += "(Load vote from save)" - . += "(Reset votes)" + . += "Time Left: [time_remaining] s

    " if(admin) . += "(Cancel Vote) " else @@ -608,31 +376,8 @@ SUBSYSTEM_DEF(vote) if("custom") if(usr.client.holder) initiate_vote("custom",usr.key) - if("reset") - if(usr.ckey in voted) - voted -= usr.ckey - if("save") - if(usr.ckey in voted) - if(!(usr.ckey in SSpersistence.saved_votes)) - SSpersistence.saved_votes[usr.ckey] = list() - SSpersistence.saved_votes[usr.ckey][mode] = voted[usr.ckey] - saved += usr.ckey - if("load") - if(!(usr.ckey in SSpersistence.saved_votes)) - SSpersistence.LoadSavedVote(usr.ckey) - if(!(usr.ckey in SSpersistence.saved_votes)) - SSpersistence.saved_votes[usr.ckey] = list() - if(usr.ckey in voted) - SSpersistence.saved_votes[usr.ckey][mode] = voted[usr.ckey] - else - SSpersistence.saved_votes[usr.ckey][mode] = list() - voted[usr.ckey] = SSpersistence.saved_votes[usr.ckey][mode] - saved += usr.ckey else - if(vote_system == SCORE_VOTING) - submit_vote(round(text2num(href_list["vote"])),round(text2num(href_list["score"]))) - else - submit_vote(round(text2num(href_list["vote"]))) + submit_vote(round(text2num(href_list["vote"]))) usr.vote() /datum/controller/subsystem/vote/proc/remove_action_buttons() @@ -647,7 +392,7 @@ SUBSYSTEM_DEF(vote) set category = "OOC" set name = "Vote" - var/datum/browser/popup = new(src, "vote", "Voting Panel",nwidth=600,nheight=700) + var/datum/browser/popup = new(src, "vote", "Voting Panel") popup.set_window_options("can_close=0") popup.set_content(SSvote.interface(client)) popup.open(0) @@ -674,3 +419,6 @@ SUBSYSTEM_DEF(vote) var/datum/player_details/P = GLOB.player_details[owner.ckey] if(P) P.player_actions -= src + +#undef PEACE +#undef CHAOS diff --git a/code/datums/action.dm b/code/datums/action.dm index cb56c26b91..77aa729eb1 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -141,17 +141,6 @@ current_button.add_overlay(mutable_appearance(icon_icon, button_icon_state)) current_button.button_icon_state = button_icon_state -/datum/action/ghost - icon_icon = 'icons/mob/mob.dmi' - button_icon_state = "ghost" - name = "Ghostize" - desc = "Turn into a ghost and freely come back to your body." - -/datum/action/ghost/Trigger() - if(!..()) - return 0 - var/mob/M = target - M.ghostize(1) //Presets for item actions /datum/action/item_action diff --git a/code/datums/components/butchering.dm b/code/datums/components/butchering.dm index 06169f64bf..d5af47ea1f 100644 --- a/code/datums/components/butchering.dm +++ b/code/datums/components/butchering.dm @@ -32,7 +32,7 @@ if(ishuman(M) && source.force && source.get_sharpness()) var/mob/living/carbon/human/H = M - if((H.health <= H.crit_threshold || (user.pulling == H && user.grab_state >= GRAB_NECK) || H.IsSleeping()) && user.zone_selected == BODY_ZONE_PRECISE_MOUTH) // Only sleeping, neck grabbed, or crit, can be sliced. + if((H.health <= H.crit_threshold || (user.pulling == H && user.grab_state >= GRAB_NECK) || H.IsSleeping()) && user.zone_selected == BODY_ZONE_HEAD) // Only sleeping, neck grabbed, or crit, can be sliced. if(H.has_status_effect(/datum/status_effect/neck_slice)) user.show_message("[H]'s neck has already been already cut, you can't make the bleeding any worse!", 1, \ "Their neck has already been already cut, you can't make the bleeding any worse!") @@ -120,4 +120,4 @@ if(eater.safety_mode || (eater.stat & (BROKEN|NOPOWER))) //I'm so sorry. return if(L.stat == DEAD && (L.butcher_results || L.guaranteed_butcher_results)) - Butcher(parent, L) + Butcher(parent, L) \ No newline at end of file diff --git a/code/datums/components/nanites.dm b/code/datums/components/nanites.dm index 89c4deb2e9..0ef13b514b 100644 --- a/code/datums/components/nanites.dm +++ b/code/datums/components/nanites.dm @@ -11,9 +11,8 @@ var/list/datum/nanite_program/programs = list() var/max_programs = NANITE_PROGRAM_LIMIT - var/stealth = FALSE //if TRUE, does not appear on HUDs and health scans - var/diagnostics = TRUE //if TRUE, displays program list when scanned by nanite scanners - + var/stealth = FALSE //if TRUE, does not appear on HUDs and health scans, and does not display the program list on nanite scans + /datum/component/nanites/Initialize(amount = 100, cloud = 0) if(!isliving(parent) && !istype(parent, /datum/nanite_cloud_backup)) return COMPONENT_INCOMPATIBLE @@ -253,8 +252,8 @@ to_chat(user, "Cloud ID: [cloud_id ? cloud_id : "Disabled"]") to_chat(user, "================") to_chat(user, "Program List:") - if(!diagnostics) - to_chat(user, "Diagnostics Disabled") + if(stealth) + to_chat(user, "%#$ENCRYPTED&^@") else for(var/X in programs) var/datum/nanite_program/NP = X diff --git a/code/datums/components/storage/concrete/_concrete.dm b/code/datums/components/storage/concrete/_concrete.dm index accc8cadaf..f7ca711421 100644 --- a/code/datums/components/storage/concrete/_concrete.dm +++ b/code/datums/components/storage/concrete/_concrete.dm @@ -66,7 +66,7 @@ /datum/component/storage/concrete/_insert_physical_item(obj/item/I, override = FALSE) . = TRUE var/atom/real_location = real_location() - if(I.loc != real_location && real_location) + if(I.loc != real_location) I.forceMove(real_location) refresh_mob_views() diff --git a/code/datums/components/storage/concrete/pockets.dm b/code/datums/components/storage/concrete/pockets.dm index 9c8622d16e..7e4a561422 100644 --- a/code/datums/components/storage/concrete/pockets.dm +++ b/code/datums/components/storage/concrete/pockets.dm @@ -87,12 +87,3 @@ /datum/component/storage/concrete/pockets/pocketprotector/real_location() // if the component is reparented to a jumpsuit, the items still go in the protector return original_parent - -/datum/component/storage/concrete/pockets/small/rushelmet - max_items = 1 - quickdraw = TRUE - -/datum/component/storage/concrete/pockets/small/rushelmet/Initialize() - . = ..() - can_hold = typecacheof(list(/obj/item/reagent_containers/glass/bottle, - /obj/item/ammo_box/a762)) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index dfaa6f061d..feac1de972 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -947,25 +947,21 @@ if(A.reagents) var/chosen_id - switch(alert(usr, "Choose a method.", "Add Reagents", "Search", "Choose from a list", "I'm feeling lucky")) - if("Search") + var/list/reagent_options = sortList(GLOB.chemical_reagents_list) + switch(alert(usr, "Choose a method.", "Add Reagents", "Enter ID", "Choose ID")) + if("Enter ID") var/valid_id while(!valid_id) - chosen_id = input(usr, "Enter the ID of the reagent you want to add.", "Search reagents") as null|text - if(isnull(chosen_id)) //Get me out of here! + chosen_id = stripped_input(usr, "Enter the ID of the reagent you want to add.") + if(!chosen_id) //Get me out of here! break - if(!ispath(text2path(chosen_id))) - chosen_id = pick_closest_path(chosen_id, make_types_fancy(subtypesof(/datum/reagent))) - if(ispath(chosen_id)) - valid_id = TRUE - else - valid_id = TRUE + for(var/ID in reagent_options) + if(ID == chosen_id) + valid_id = 1 if(!valid_id) to_chat(usr, "A reagent with that ID doesn't exist!") - if("Choose from a list") - chosen_id = input(usr, "Choose a reagent to add.", "Choose a reagent.") as null|anything in subtypesof(/datum/reagent) - if("I'm feeling lucky") - chosen_id = pick(subtypesof(/datum/reagent)) + if("Choose ID") + chosen_id = input(usr, "Choose a reagent to add.", "Choose a reagent.") as null|anything in reagent_options if(chosen_id) var/amount = input(usr, "Choose the amount to add.", "Choose the amount.", A.reagents.maximum_volume) as num if(amount) diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index 056f99c7a4..8a6966666e 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -103,7 +103,7 @@ if(!(spread_flags & DISEASE_SPREAD_AIRBORNE) && !force_spread) return - if(affected_mob.reagents.has_reagent(/datum/reagent/medicine/spaceacillin) || (affected_mob.satiety > 0 && prob(affected_mob.satiety/10))) + if(affected_mob.reagents.has_reagent("spaceacillin") || (affected_mob.satiety > 0 && prob(affected_mob.satiety/10))) return var/spread_range = 2 diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index a844254ef9..8d5e915b31 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -36,41 +36,37 @@ // The order goes from easy to cure to hard to cure. Keep in mind that sentient diseases pick two cures from tier 6 and up, ensure they wont react away in bodies. var/static/list/advance_cures = list( list( // level 1 - /datum/reagent/copper, /datum/reagent/silver, /datum/reagent/iodine, /datum/reagent/iron, /datum/reagent/carbon + "copper", "silver", "iodine", "iron", "carbon" ), list( // level 2 - /datum/reagent/potassium, /datum/reagent/consumable/ethanol, /datum/reagent/lithium, - /datum/reagent/silicon, /datum/reagent/bromine + "potassium", "ethanol", "lithium", "silicon", "bromine" ), list( // level 3 - /datum/reagent/consumable/sodiumchloride, /datum/reagent/consumable/sugar, /datum/reagent/consumable/orangejuice, - /datum/reagent/consumable/tomatojuice, /datum/reagent/consumable/milk + "sodiumchloride", "sugar", "orangejuice", "tomatojuice", "milk" ), list( //level 4 - /datum/reagent/medicine/spaceacillin, /datum/reagent/medicine/salglu_solution, - /datum/reagent/medicine/epinephrine, /datum/reagent/medicine/charcoal + "spaceacillin", "salglu_solution", "epinephrine", "charcoal" ), list( //level 5 - /datum/reagent/oil, /datum/reagent/medicine/synaptizine, /datum/reagent/medicine/mannitol, - /datum/reagent/drug/space_drugs, /datum/reagent/cryptobiolin + "oil", "synaptizine", "mannitol", "space_drugs", "cryptobiolin" ), list( // level 6 - /datum/reagent/phenol, /datum/reagent/medicine/inacusiate, /datum/reagent/medicine/oculine, /datum/reagent/medicine/antihol + "phenol", "inacusiate", "oculine", "antihol" ), list( // level 7 - /datum/reagent/medicine/leporazine, /datum/reagent/toxin/mindbreaker, /datum/reagent/medicine/corazone + "leporazine", "mindbreaker", "corazone" ), list( // level 8 - /datum/reagent/pax, /datum/reagent/drug/happiness, /datum/reagent/medicine/ephedrine + "pax", "happiness", "ephedrine" ), list( // level 9 - /datum/reagent/toxin/lipolicide, /datum/reagent/medicine/sal_acid + "lipolicide", "sal_acid" ), list( // level 10 - /datum/reagent/medicine/haloperidol, /datum/reagent/drug/aranesp, /datum/reagent/medicine/diphenhydramine + "haloperidol", "aranesp", "diphenhydramine" ), list( //level 11 - /datum/reagent/medicine/modafinil, /datum/reagent/toxin/anacea + "modafinil", "anacea" ) ) diff --git a/code/datums/diseases/advance/symptoms/choking.dm b/code/datums/diseases/advance/symptoms/choking.dm index 069c62cf3f..a54b132de1 100644 --- a/code/datums/diseases/advance/symptoms/choking.dm +++ b/code/datums/diseases/advance/symptoms/choking.dm @@ -138,7 +138,7 @@ Bonus var/get_damage = rand(15,21) * power M.adjustOxyLoss(get_damage) if(paralysis) - M.reagents.add_reagent_list(list(/datum/reagent/toxin/pancuronium = 3, /datum/reagent/toxin/sodium_thiopental = 3)) + M.reagents.add_reagent_list(list("pancuronium" = 3, "sodium_thiopental" = 3)) return 1 /datum/symptom/asphyxiation/proc/Asphyxiate_death(mob/living/M, datum/disease/advance/A) diff --git a/code/datums/diseases/advance/symptoms/fire.dm b/code/datums/diseases/advance/symptoms/fire.dm index 6429db9439..f85024a7a9 100644 --- a/code/datums/diseases/advance/symptoms/fire.dm +++ b/code/datums/diseases/advance/symptoms/fire.dm @@ -156,7 +156,7 @@ Bonus M.adjust_fire_stacks(get_stacks) M.adjustFireLoss(get_stacks/2) if(chems) - M.reagents.add_reagent(/datum/reagent/clf3, 2 * power) + M.reagents.add_reagent("clf3", 2 * power) return 1 /datum/symptom/alkali/proc/Alkali_fire_stage_5(mob/living/M, datum/disease/advance/A) @@ -164,5 +164,5 @@ Bonus M.adjust_fire_stacks(get_stacks) M.adjustFireLoss(get_stacks) if(chems) - M.reagents.add_reagent_list(list(/datum/reagent/napalm = 4 * power, /datum/reagent/clf3 = 4 * power)) + M.reagents.add_reagent_list(list("napalm" = 4 * power, "clf3" = 4 * power)) return 1 diff --git a/code/datums/diseases/advance/symptoms/flesh_eating.dm b/code/datums/diseases/advance/symptoms/flesh_eating.dm index d1e9d3fdca..c38acc8e9e 100644 --- a/code/datums/diseases/advance/symptoms/flesh_eating.dm +++ b/code/datums/diseases/advance/symptoms/flesh_eating.dm @@ -124,7 +124,7 @@ Bonus var/get_damage = rand(6,10) M.adjustBruteLoss(get_damage) if(chems) - M.reagents.add_reagent_list(list(/datum/reagent/toxin/heparin = 2, /datum/reagent/toxin/lipolicide = 2)) + M.reagents.add_reagent_list(list("heparin" = 2, "lipolicide" = 2)) if(zombie) - M.reagents.add_reagent(/datum/reagent/romerol, 1) + M.reagents.add_reagent("romerol", 1) return 1 \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index d41e0bf225..8b205db756 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -117,9 +117,8 @@ power = 2 /datum/symptom/heal/chem/Heal(mob/living/M, datum/disease/advance/A, actual_power) - for(var/E in M.reagents.reagent_list) //Not just toxins! - var/datum/reagent/R = E - M.reagents.remove_reagent(R.type, actual_power) + for(var/datum/reagent/R in M.reagents.reagent_list) //Not just toxins! + M.reagents.remove_reagent(R.id, actual_power) if(food_conversion) M.nutrition += 0.3 if(prob(2)) @@ -330,11 +329,11 @@ if(M.fire_stacks < 0) M.fire_stacks = min(M.fire_stacks + 1 * absorption_coeff, 0) . += power - if(M.reagents.has_reagent(/datum/reagent/water/holywater)) - M.reagents.remove_reagent(/datum/reagent/water/holywater, 0.5 * absorption_coeff) + if(M.reagents.has_reagent("holywater")) + M.reagents.remove_reagent("holywater", 0.5 * absorption_coeff) . += power * 0.75 - else if(M.reagents.has_reagent(/datum/reagent/water)) - M.reagents.remove_reagent(/datum/reagent/water, 0.5 * absorption_coeff) + else if(M.reagents.has_reagent("water")) + M.reagents.remove_reagent("water", 0.5 * absorption_coeff) . += power * 0.5 /datum/symptom/heal/water/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power) @@ -393,7 +392,7 @@ plasmamount = environment.gases[/datum/gas/plasma] if(plasmamount && plasmamount > GLOB.meta_gas_visibility[/datum/gas/plasma]) //if there's enough plasma in the air to see . += power * 0.5 - if(M.reagents.has_reagent(/datum/reagent/toxin/plasma)) + if(M.reagents.has_reagent("plasma")) . += power * 0.75 /datum/symptom/heal/plasma/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power) diff --git a/code/datums/diseases/advance/symptoms/sensory.dm b/code/datums/diseases/advance/symptoms/sensory.dm index 1f8cc8d7af..2705e0b168 100644 --- a/code/datums/diseases/advance/symptoms/sensory.dm +++ b/code/datums/diseases/advance/symptoms/sensory.dm @@ -44,10 +44,10 @@ if(A.stage >= 4) M.drowsyness = max(0, M.drowsyness - 2) - if(M.reagents.has_reagent(/datum/reagent/toxin/mindbreaker)) - M.reagents.remove_reagent(/datum/reagent/toxin/mindbreaker, 5) - if(M.reagents.has_reagent(/datum/reagent/toxin/histamine)) - M.reagents.remove_reagent(/datum/reagent/toxin/histamine, 5) + if(M.reagents.has_reagent("mindbreaker")) + M.reagents.remove_reagent("mindbreaker", 5) + if(M.reagents.has_reagent("histamine")) + M.reagents.remove_reagent("histamine", 5) M.hallucination = max(0, M.hallucination - 10) if(A.stage >= 5) diff --git a/code/datums/diseases/anxiety.dm b/code/datums/diseases/anxiety.dm index 20ecceb224..2d96157bb0 100644 --- a/code/datums/diseases/anxiety.dm +++ b/code/datums/diseases/anxiety.dm @@ -5,7 +5,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Ethanol" - cures = list(/datum/reagent/consumable/ethanol) + cures = list("ethanol") agent = "Excess Lepidopticides" viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) desc = "If left untreated subject will regurgitate butterflies." diff --git a/code/datums/diseases/beesease.dm b/code/datums/diseases/beesease.dm index edd6f151c9..ab64fd515c 100644 --- a/code/datums/diseases/beesease.dm +++ b/code/datums/diseases/beesease.dm @@ -5,7 +5,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Sugar" - cures = list(/datum/reagent/consumable/sugar) + cures = list("sugar") agent = "Apidae Infection" viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) desc = "If left untreated subject will regurgitate bees." diff --git a/code/datums/diseases/brainrot.dm b/code/datums/diseases/brainrot.dm index 1028d1fff4..98ae74270b 100644 --- a/code/datums/diseases/brainrot.dm +++ b/code/datums/diseases/brainrot.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Mannitol" - cures = list(/datum/reagent/medicine/mannitol) + cures = list("mannitol") agent = "Cryptococcus Cosmosis" viable_mobtypes = list(/mob/living/carbon/human) cure_chance = 15//higher chance to cure, since two reagents are required diff --git a/code/datums/diseases/cold.dm b/code/datums/diseases/cold.dm index 8bbb05e17c..22d45ffb29 100644 --- a/code/datums/diseases/cold.dm +++ b/code/datums/diseases/cold.dm @@ -2,7 +2,7 @@ name = "The Cold" max_stages = 3 cure_text = "Rest & Spaceacillin" - cures = list(/datum/reagent/medicine/spaceacillin) + cures = list("spaceacillin") agent = "XY-rhinovirus" viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) permeability_mod = 0.5 diff --git a/code/datums/diseases/cold9.dm b/code/datums/diseases/cold9.dm index eea3147107..da5e67a4fb 100644 --- a/code/datums/diseases/cold9.dm +++ b/code/datums/diseases/cold9.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Common Cold Anti-bodies & Spaceacillin" - cures = list(/datum/reagent/medicine/spaceacillin) + cures = list("spaceacillin") agent = "ICE9-rhinovirus" viable_mobtypes = list(/mob/living/carbon/human) desc = "If left untreated the subject will slow, as if partly frozen." diff --git a/code/datums/diseases/dna_spread.dm b/code/datums/diseases/dna_spread.dm index 972a7f4e18..267dd711a3 100644 --- a/code/datums/diseases/dna_spread.dm +++ b/code/datums/diseases/dna_spread.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Mutadone" - cures = list(/datum/reagent/medicine/mutadone) + cures = list("mutadone") disease_flags = CAN_CARRY|CAN_RESIST|CURABLE agent = "S4E1 retrovirus" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/diseases/fake_gbs.dm b/code/datums/diseases/fake_gbs.dm index 70bcc67d21..add60c73f1 100644 --- a/code/datums/diseases/fake_gbs.dm +++ b/code/datums/diseases/fake_gbs.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Synaptizine & Sulfur" - cures = list(/datum/reagent/medicine/synaptizine,/datum/reagent/sulfur) + cures = list("synaptizine","sulfur") agent = "Gravitokinetic Bipotential SADS-" viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) desc = "If left untreated death will occur." diff --git a/code/datums/diseases/flu.dm b/code/datums/diseases/flu.dm index 4fc646a590..e1943937ba 100644 --- a/code/datums/diseases/flu.dm +++ b/code/datums/diseases/flu.dm @@ -3,7 +3,7 @@ max_stages = 3 spread_text = "Airborne" cure_text = "Spaceacillin" - cures = list(/datum/reagent/medicine/spaceacillin) + cures = list("spaceacillin") cure_chance = 10 agent = "H13N1 flu virion" viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) diff --git a/code/datums/diseases/fluspanish.dm b/code/datums/diseases/fluspanish.dm index 1557ddfbd8..9577ca43d0 100644 --- a/code/datums/diseases/fluspanish.dm +++ b/code/datums/diseases/fluspanish.dm @@ -3,7 +3,7 @@ max_stages = 3 spread_text = "Airborne" cure_text = "Spaceacillin & Anti-bodies to the common flu" - cures = list(/datum/reagent/medicine/spaceacillin) + cures = list("spaceacillin") cure_chance = 10 agent = "1nqu1s1t10n flu virion" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/diseases/gbs.dm b/code/datums/diseases/gbs.dm index 8a6eab6048..0487b1c815 100644 --- a/code/datums/diseases/gbs.dm +++ b/code/datums/diseases/gbs.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Synaptizine & Sulfur" - cures = list(/datum/reagent/medicine/synaptizine,/datum/reagent/sulfur) + cures = list("synaptizine","sulfur") cure_chance = 15//higher chance to cure, since two reagents are required agent = "Gravitokinetic Bipotential SADS+" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/diseases/heart_failure.dm b/code/datums/diseases/heart_failure.dm index 196cd95f69..2389052a54 100644 --- a/code/datums/diseases/heart_failure.dm +++ b/code/datums/diseases/heart_failure.dm @@ -58,7 +58,7 @@ H.visible_message("[H] clutches at [H.p_their()] chest as if [H.p_their()] heart is stopping!") H.adjustStaminaLoss(60) H.set_heartattack(TRUE) - H.reagents.add_reagent(/datum/reagent/medicine/corazone, 3) // To give the victim a final chance to shock their heart before losing consciousness + H.reagents.add_reagent("corazone", 3) // To give the victim a final chance to shock their heart before losing consciousness cure() else diff --git a/code/datums/diseases/magnitis.dm b/code/datums/diseases/magnitis.dm index cb00f571aa..7c5f05c440 100644 --- a/code/datums/diseases/magnitis.dm +++ b/code/datums/diseases/magnitis.dm @@ -3,7 +3,7 @@ max_stages = 4 spread_text = "Airborne" cure_text = "Iron" - cures = list(/datum/reagent/iron) + cures = list("iron") agent = "Fukkos Miracos" viable_mobtypes = list(/mob/living/carbon/human) disease_flags = CAN_CARRY|CAN_RESIST|CURABLE diff --git a/code/datums/diseases/parrotpossession.dm b/code/datums/diseases/parrotpossession.dm index 68e962055a..d9c4b324f6 100644 --- a/code/datums/diseases/parrotpossession.dm +++ b/code/datums/diseases/parrotpossession.dm @@ -5,7 +5,7 @@ spread_flags = DISEASE_SPREAD_SPECIAL disease_flags = CURABLE cure_text = "Holy Water." - cures = list(/datum/reagent/water/holywater) + cures = list("holywater") cure_chance = 20 agent = "Avian Vengence" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/diseases/pierrot_throat.dm b/code/datums/diseases/pierrot_throat.dm index 392e1bc85f..b2241d59ba 100644 --- a/code/datums/diseases/pierrot_throat.dm +++ b/code/datums/diseases/pierrot_throat.dm @@ -3,7 +3,7 @@ max_stages = 4 spread_text = "Airborne" cure_text = "Banana products, especially banana bread." - cures = list(/datum/reagent/consumable/banana) + cures = list("banana") cure_chance = 75 agent = "H0NI<42 Virus" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/diseases/retrovirus.dm b/code/datums/diseases/retrovirus.dm index 5854249e54..fe099e495b 100644 --- a/code/datums/diseases/retrovirus.dm +++ b/code/datums/diseases/retrovirus.dm @@ -17,7 +17,7 @@ ..() agent = "Virus class [pick("A","B","C","D","E","F")][pick("A","B","C","D","E","F")]-[rand(50,300)]" if(prob(40)) - cures = list(/datum/reagent/medicine/mutadone) + cures = list("mutadone") else restcure = 1 diff --git a/code/datums/diseases/rhumba_beat.dm b/code/datums/diseases/rhumba_beat.dm index da6e7da8df..52e9c2e19f 100644 --- a/code/datums/diseases/rhumba_beat.dm +++ b/code/datums/diseases/rhumba_beat.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Chick Chicky Boom!" - cures = list(/datum/reagent/toxin/plasma) + cures = list("plasma") agent = "Unknown" viable_mobtypes = list(/mob/living/carbon/human) permeability_mod = 1 diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index 1c214c8516..083a1f9c6c 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -93,7 +93,7 @@ /datum/disease/transformation/jungle_fever name = "Jungle Fever" cure_text = "Death." - cures = list(/datum/reagent/medicine/adminordrazine) + cures = list("adminordrazine") spread_text = "Monkey Bites" spread_flags = DISEASE_SPREAD_SPECIAL viable_mobtypes = list(/mob/living/carbon/monkey, /mob/living/carbon/human) @@ -156,7 +156,7 @@ name = "Robotic Transformation" cure_text = "An injection of copper." - cures = list(/datum/reagent/copper) + cures = list("copper") cure_chance = 5 agent = "R2D2 Nanomachines" desc = "This disease, actually acute nanomachine infection, converts the victim into a cyborg." @@ -189,7 +189,7 @@ name = "Xenomorph Transformation" cure_text = "Spaceacillin & Glycerol" - cures = list(/datum/reagent/medicine/spaceacillin, /datum/reagent/glycerol) + cures = list("spaceacillin", "glycerol") cure_chance = 5 agent = "Rip-LEY Alien Microbes" desc = "This disease changes the victim into a xenomorph." @@ -218,7 +218,7 @@ /datum/disease/transformation/slime name = "Advanced Mutation Transformation" cure_text = "frost oil" - cures = list(/datum/reagent/consumable/frostoil) + cures = list("frostoil") cure_chance = 80 agent = "Advanced Mutation Toxin" desc = "This highly concentrated extract converts anything into more of itself." @@ -247,7 +247,7 @@ /datum/disease/transformation/corgi name = "The Barkening" cure_text = "Death" - cures = list(/datum/reagent/medicine/adminordrazine) + cures = list("adminordrazine") agent = "Fell Doge Majicks" desc = "This disease transforms the victim into a corgi." severity = DISEASE_SEVERITY_BIOHAZARD @@ -272,7 +272,7 @@ /datum/disease/transformation/morph name = "Gluttony's Blessing" cure_text = "nothing" - cures = list(/datum/reagent/medicine/adminordrazine) + cures = list("adminordrazine") agent = "Gluttony's Blessing" desc = "A 'gift' from somewhere terrible." stage_prob = 20 @@ -289,7 +289,7 @@ /datum/disease/transformation/gondola name = "Gondola Transformation" cure_text = "Condensed Capsaicin, ingested or injected." //getting pepper sprayed doesn't help - cures = list(/datum/reagent/consumable/condensedcapsaicin) //beats the hippie crap right out of your system + cures = list("condensedcapsaicin") //beats the hippie crap right out of your system cure_chance = 80 stage_prob = 5 agent = "Tranquility" @@ -310,17 +310,17 @@ if (prob(5)) affected_mob.emote("smile") if (prob(20)) - affected_mob.reagents.add_reagent(/datum/reagent/pax, 5) + affected_mob.reagents.add_reagent_list(list("pax" = 5)) if(3) if (prob(5)) affected_mob.emote("smile") if (prob(20)) - affected_mob.reagents.add_reagent(/datum/reagent/pax, 5) + affected_mob.reagents.add_reagent_list(list("pax" = 5)) if(4) if (prob(5)) affected_mob.emote("smile") if (prob(20)) - affected_mob.reagents.add_reagent(/datum/reagent/pax, 5) + affected_mob.reagents.add_reagent_list(list("pax" = 5)) if (prob(2)) to_chat(affected_mob, "You let go of what you were holding.") var/obj/item/I = affected_mob.get_active_held_item() diff --git a/code/datums/diseases/tuberculosis.dm b/code/datums/diseases/tuberculosis.dm index 23902603ce..788107c4b6 100644 --- a/code/datums/diseases/tuberculosis.dm +++ b/code/datums/diseases/tuberculosis.dm @@ -4,7 +4,7 @@ max_stages = 5 spread_text = "Airborne" cure_text = "Spaceacillin & salbutamol" - cures = list(/datum/reagent/medicine/spaceacillin, /datum/reagent/medicine/salbutamol) + cures = list("spaceacillin", "salbutamol") agent = "Fungal Tubercle bacillus Cosmosis" viable_mobtypes = list(/mob/living/carbon/human) cure_chance = 5//like hell are you getting out of hell diff --git a/code/datums/diseases/wizarditis.dm b/code/datums/diseases/wizarditis.dm index 244cc819d8..b288046380 100644 --- a/code/datums/diseases/wizarditis.dm +++ b/code/datums/diseases/wizarditis.dm @@ -3,7 +3,7 @@ max_stages = 4 spread_text = "Airborne" cure_text = "The Manly Dorf" - cures = list(/datum/reagent/consumable/ethanol/manly_dorf) + cures = list("manlydorf") cure_chance = 100 agent = "Rincewindus Vulgaris" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/elements/_element.dm b/code/datums/elements/_element.dm index 17e2b12232..8f9b97db22 100644 --- a/code/datums/elements/_element.dm +++ b/code/datums/elements/_element.dm @@ -11,7 +11,7 @@ if(type == /datum/element) return ELEMENT_INCOMPATIBLE if(element_flags & ELEMENT_DETACH) - RegisterSignal(target, COMSIG_PARENT_QDELETING, .proc/Detach, override = TRUE) + RegisterSignal(target, COMSIG_PARENT_QDELETING, .proc/Detach) /datum/element/proc/Detach(datum/source, force) UnregisterSignal(source, COMSIG_PARENT_QDELETING) @@ -36,4 +36,4 @@ */ /datum/proc/RemoveElement(eletype, ...) var/datum/element/ele = SSdcs.GetElement(arglist(args)) - ele.Detach(src) + ele.Detach(src) \ No newline at end of file diff --git a/code/datums/elements/ghost_role_eligibility.dm b/code/datums/elements/ghost_role_eligibility.dm deleted file mode 100644 index 8ecb579bc8..0000000000 --- a/code/datums/elements/ghost_role_eligibility.dm +++ /dev/null @@ -1,54 +0,0 @@ -/datum/element/ghost_role_eligibility - element_flags = ELEMENT_DETACH - var/list/timeouts = list() - var/list/mob/eligible_mobs = list() - -/datum/element/ghost_role_eligibility/Attach(datum/target,penalize = FALSE) - . = ..() - if(!ismob(target)) - return ELEMENT_INCOMPATIBLE - var/mob/M = target - if(!(M in eligible_mobs)) - eligible_mobs += M - if(penalize) //penalizing them from making a ghost role / midround antag comeback right away. - var/penalty = CONFIG_GET(number/suicide_reenter_round_timer) MINUTES - var/roundstart_quit_limit = CONFIG_GET(number/roundstart_suicide_time_limit) MINUTES - if(world.time < roundstart_quit_limit) //add up the time difference to their antag rolling penalty if they quit before half a (ingame) hour even passed. - penalty += roundstart_quit_limit - world.time - if(penalty) - penalty += world.realtime - if(penalty - SSshuttle.realtimeofstart > SSshuttle.auto_call + SSshuttle.emergencyCallTime + SSshuttle.emergencyDockTime + SSshuttle.emergencyEscapeTime) - penalty = CANT_REENTER_ROUND - if(!(M.ckey in timeouts)) - timeouts += M.ckey - timeouts[M.ckey] = 0 - timeouts[M.ckey] = max(timeouts[M.ckey],penalty) - -/datum/element/ghost_role_eligibility/Detach(mob/M) - . = ..() - if(M in eligible_mobs) - eligible_mobs -= M - -/datum/element/ghost_role_eligibility/proc/get_all_ghost_role_eligible(silent = FALSE) - var/list/candidates = list() - for(var/m in eligible_mobs) - var/mob/M = m - if(M.can_reenter_round(TRUE)) - candidates += M - return candidates - -/mob/proc/can_reenter_round(silent = FALSE) - var/datum/element/ghost_role_eligibility/eli = SSdcs.GetElement(/datum/element/ghost_role_eligibility) - return eli.can_reenter_round(src,silent) - -/datum/element/ghost_role_eligibility/proc/can_reenter_round(var/mob/M,silent = FALSE) - if(!(M in eligible_mobs)) - return FALSE - if(!(M.ckey in timeouts)) - return TRUE - var/timeout = timeouts[M.ckey] - if(timeout != CANT_REENTER_ROUND && timeout <= world.realtime) - return TRUE - if(!silent && M.client) - to_chat(M, "You are unable to reenter the round[timeout != CANT_REENTER_ROUND ? " yet. Your ghost role blacklist will expire in [DisplayTimeText(timeout - world.realtime)]" : ""].") - return FALSE diff --git a/code/datums/elements/wuv.dm b/code/datums/elements/wuv.dm deleted file mode 100644 index 84f327500f..0000000000 --- a/code/datums/elements/wuv.dm +++ /dev/null @@ -1,60 +0,0 @@ - -/datum/element/wuv //D'awwwww - element_flags = ELEMENT_BESPOKE - id_arg_index = 2 - //the for the me emote proc call when petted. - var/pet_emote - //whether the emote is visible or audible - var/pet_type - //same as above, except when harmed. "You are going into orbit, you stupid mutt!" - var/punt_emote - //same as pet_type - var/punt_type - //mood typepath for the moodlet signal when petted. - var/pet_moodlet - //same as above but for harm - var/punt_moodlet - -/datum/element/wuv/Attach(datum/target, pet, pet_t, pet_mood, punt, punt_t, punt_mood) - . = ..() - - if(!isliving(target)) - return ELEMENT_INCOMPATIBLE - - pet_emote = pet - pet_type = pet_t - punt_emote = punt - punt_type = punt_t - pet_moodlet = pet_mood - punt_moodlet = punt_mood - - RegisterSignal(target, COMSIG_MOB_ATTACK_HAND, .proc/on_attack_hand) - -/datum/element/wuv/proc/on_attack_hand(datum/source, mob/user) - var/mob/living/L = source - - if(L.stat == DEAD) - return - //we want to delay the effect to be displayed after the mob is petted, not before. - switch(user.a_intent) - if(INTENT_HARM, INTENT_DISARM) - addtimer(CALLBACK(src, .proc/kick_the_dog, source, user), 1) - if(INTENT_HELP) - addtimer(CALLBACK(src, .proc/pet_the_dog, source, user), 1) - -/datum/element/wuv/proc/pet_the_dog(mob/target, mob/user) - if(!QDELETED(target) || !QDELETED(user) || target.stat != CONSCIOUS) - return - new /obj/effect/temp_visual/heart(target.loc) - if(pet_emote) - target.emote("me", pet_type, pet_emote) - if(pet_moodlet && !CHECK_BITFIELD(target.flags_1, HOLOGRAM_1)) //prevents unlimited happiness petting park exploit. - SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, target, pet_moodlet, target) - -/datum/element/wuv/proc/kick_the_dog(mob/target, mob/user) - if(!QDELETED(target) || !QDELETED(user) || target.stat != CONSCIOUS) - return - if(punt_emote) - target.emote("me", punt_type, punt_emote) - if(punt_moodlet && !CHECK_BITFIELD(target.flags_1, HOLOGRAM_1)) - SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, target, punt_moodlet, target) diff --git a/code/datums/emotes.dm b/code/datums/emotes.dm index 599c492d4c..f0fca5db5a 100644 --- a/code/datums/emotes.dm +++ b/code/datums/emotes.dm @@ -136,10 +136,9 @@ /datum/emote/sound var/sound //Sound to play when emote is called var/vary = FALSE //used for the honk borg emote - var/volume = 50 mob_type_allowed_typecache = list(/mob/living/brain, /mob/living/silicon) /datum/emote/sound/run_emote(mob/user, params) . = ..() if(.) - playsound(user.loc, sound, volume, vary) + playsound(user.loc, sound, 50, vary) diff --git a/code/datums/martial/rising_bass.dm b/code/datums/martial/rising_bass.dm index 9e00c90a92..a3b71c6784 100644 --- a/code/datums/martial/rising_bass.dm +++ b/code/datums/martial/rising_bass.dm @@ -150,9 +150,7 @@ if(!.) return ADD_TRAIT(H, TRAIT_NOGUNS, RISING_BASS_TRAIT) - ADD_TRAIT(H, TRAIT_AUTO_CATCH_ITEM, RISING_BASS_TRAIT) /datum/martial_art/the_rising_bass/on_remove(mob/living/carbon/human/H) . = ..() - REMOVE_TRAIT(H, TRAIT_NOGUNS, RISING_BASS_TRAIT) - REMOVE_TRAIT(H, TRAIT_AUTO_CATCH_ITEM, RISING_BASS_TRAIT) \ No newline at end of file + REMOVE_TRAIT(H, TRAIT_NOGUNS, RISING_BASS_TRAIT) \ No newline at end of file diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 8ae45ff720..d1b4e51a7d 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -135,12 +135,8 @@ if(L.client && L.client.prefs) L.canbearoused = L.client.prefs.arousable //Technically this should make taking over a character mean the body gain the new minds setting... L.update_arousal_hud() //Removes the old icon - if (L.client.prefs.auto_ooc) - if (L.client.prefs.chat_toggles & CHAT_OOC) - L.client.prefs.chat_toggles ^= CHAT_OOC SEND_SIGNAL(src, COMSIG_MIND_TRANSFER, new_character, old_character) - SEND_SIGNAL(new_character, COMSIG_MOB_ON_NEW_MIND) /datum/mind/proc/store_memory(new_text) if((length(memory) + length(new_text)) <= MAX_MESSAGE_LEN) @@ -525,7 +521,7 @@ if(!objective) to_chat(usr,"Invalid objective.") return - qdel(objective) //TODO: Needs cleaning objective destroys (whatever that means) + //qdel(objective) Needs cleaning objective destroys message_admins("[key_name_admin(usr)] removed an objective for [current]: [objective.explanation_text]") log_admin("[key_name(usr)] removed an objective for [current]: [objective.explanation_text]") @@ -748,7 +744,6 @@ else mind = new /datum/mind(key) SSticker.minds += mind - SEND_SIGNAL(src, COMSIG_MOB_ON_NEW_MIND) if(!mind.name) mind.name = real_name mind.current = src diff --git a/code/datums/mood_events/generic_positive_events.dm b/code/datums/mood_events/generic_positive_events.dm index 98a8eade59..94fd08535f 100644 --- a/code/datums/mood_events/generic_positive_events.dm +++ b/code/datums/mood_events/generic_positive_events.dm @@ -23,13 +23,10 @@ mood_change = 3 timeout = 3000 -/datum/mood_event/pet_animal - description = "Animals are adorable! I can't stop petting them!\n" - mood_change = 2 - timeout = 5 MINUTES - -/datum/mood_event/pet_animal/add_effects(mob/animal) - description = "\The [animal.name] is adorable! I can't stop petting [animal.p_them()]!\n" +/datum/mood_event/pet_corgi + description = "Corgis are adorable! I can't stop petting them!\n" + mood_change = 3 + timeout = 3000 /datum/mood_event/honk description = "Maybe clowns aren't so bad after all. Honk!\n" diff --git a/code/datums/radiation_wave.dm b/code/datums/radiation_wave.dm index 4795f8da60..8555e4cf3f 100644 --- a/code/datums/radiation_wave.dm +++ b/code/datums/radiation_wave.dm @@ -3,7 +3,6 @@ var/turf/master_turf //The center of the wave var/steps=0 //How far we've moved var/intensity //How strong it was originaly - var/remaining_contam //How much contaminated material it still has var/range_modifier //Higher than 1 makes it drop off faster, 0.5 makes it drop off half etc var/move_dir //The direction of movement var/list/__dirs //The directions to the side of the wave, stored for easy looping @@ -19,7 +18,6 @@ __dirs+=turn(dir, -90) intensity = _intensity - remaining_contam = intensity range_modifier = _range_modifier can_contaminate = _can_contaminate @@ -48,9 +46,8 @@ qdel(src) return - if(radiate(atoms, FLOOR(min(strength,remaining_contam), 1))) - //oof ow ouch - remaining_contam = max(0,remaining_contam-((min(strength,remaining_contam)-RAD_MINIMUM_CONTAMINATION) * RAD_CONTAMINATION_STR_COEFFICIENT)) + radiate(atoms, FLOOR(strength, 1)) + check_obstructions(atoms) // reduce our overall strength if there are radiation insulators /datum/radiation_wave/proc/get_rad_atoms() @@ -92,8 +89,7 @@ intensity *= (1-((1-thing.rad_insulation)/width)) /datum/radiation_wave/proc/radiate(list/atoms, strength) - var/can_contam = strength >= RAD_MINIMUM_CONTAMINATION - var/list/contam_atoms = list() + var/contamination_chance = (strength-RAD_MINIMUM_CONTAMINATION) * RAD_CONTAMINATION_CHANCE_COEFFICIENT * min(1, 1/(steps*range_modifier)) for(var/k in 1 to atoms.len) var/atom/thing = atoms[k] if(!thing) @@ -113,14 +109,8 @@ )) if(!can_contaminate || blacklisted[thing.type]) continue - if(CHECK_BITFIELD(thing.rad_flags, RAD_NO_CONTAMINATE) || SEND_SIGNAL(thing, COMSIG_ATOM_RAD_CONTAMINATING, strength) & COMPONENT_BLOCK_CONTAMINATION) - continue - contam_atoms += thing - var/did_contam = 0 - if(length(can_contam)) - var/rad_strength = ((strength-RAD_MINIMUM_CONTAMINATION) * RAD_CONTAMINATION_STR_COEFFICIENT)/contam_atoms.len - for(var/k in 1 to contam_atoms.len) - var/atom/thing = contam_atoms[k] + if(prob(contamination_chance)) // Only stronk rads get to have little baby rads + if(CHECK_BITFIELD(thing.rad_flags, RAD_NO_CONTAMINATE) || SEND_SIGNAL(thing, COMSIG_ATOM_RAD_CONTAMINATING, strength) & COMPONENT_BLOCK_CONTAMINATION) + continue + var/rad_strength = (strength-RAD_MINIMUM_CONTAMINATION) * RAD_CONTAMINATION_STR_COEFFICIENT thing.AddComponent(/datum/component/radioactive, rad_strength, source) - did_contam = 1 - return did_contam diff --git a/code/datums/recipe.dm b/code/datums/recipe.dm index c4d0d6f9c6..0ceb4443de 100644 --- a/code/datums/recipe.dm +++ b/code/datums/recipe.dm @@ -88,7 +88,7 @@ var/obj/result_obj = new result(container) for (var/obj/O in (container.contents-result_obj)) if (O.reagents) - O.reagents.del_reagent(/datum/reagent/consumable/nutriment) + O.reagents.del_reagent("nutriment") O.reagents.update_total() O.reagents.trans_to(result_obj, O.reagents.total_volume) qdel(O) diff --git a/code/datums/ruins/station.dm b/code/datums/ruins/station.dm index e637b6178f..156356788f 100644 --- a/code/datums/ruins/station.dm +++ b/code/datums/ruins/station.dm @@ -8,29 +8,14 @@ /datum/map_template/ruin/station/box/engine id = "engine_sm" suffix = "Box/Engine/engine_sm.dmm" - name = "Box SM" - -/datum/map_template/ruin/station/box/engine/onebythree - id = "engine_sm_1x3" - suffix = "Box/Engine/engine_sm_1x3.dmm" - name = "Box SM 1x3" - -/datum/map_template/ruin/station/box/engine/fivebyfive - id = "engine_sm_5x5" - suffix = "Box/Engine/engine_sm_5x5.dmm" - name = "Box SM 5x5" - -/datum/map_template/ruin/station/box/engine/threesm - id = "engine_sm_3x" - suffix = "Box/Engine/engine_sm_3x.dmm" - name = "Box SM 3x" + name = "Engine SM" /datum/map_template/ruin/station/box/engine/singulo id = "engine_singulo" suffix = "Box/Engine/engine_singulo.dmm" - name = "Box Singulo" + name = "Engine Singulo" /datum/map_template/ruin/station/box/engine/tesla id = "engine_tesla" suffix = "Box/Engine/engine_tesla.dmm" - name = "Box Tesla" + name = "Engine Tesla" \ No newline at end of file diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index 5dab98d5ca..5c4fc61827 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -292,7 +292,6 @@ var/mob/living/carbon/C = owner for(var/X in C.bodyparts) var/obj/item/bodypart/BP = X - BP.max_damage *= 10 BP.brute_dam *= 10 BP.burn_dam *= 10 owner.toxloss *= 10 @@ -378,7 +377,6 @@ var/obj/item/bodypart/BP = X BP.brute_dam *= 0.1 BP.burn_dam *= 0.1 - BP.max_damage /= 10 owner.toxloss *= 0.1 owner.oxyloss *= 0.1 owner.cloneloss *= 0.1 diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index 036d8193fb..f5f012e7f9 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -99,12 +99,6 @@ id = "Mesmerize" alert_type = /obj/screen/alert/status_effect/mesmerized -/datum/status_effect/no_combat_mode/mesmerize/on_apply() - ADD_TRAIT(owner, TRAIT_MUTE, "mesmerize") - -/datum/status_effect/no_combat_mode/mesmerize/on_remove() - REMOVE_TRAIT(owner, TRAIT_MUTE, "mesmerize") - /obj/screen/alert/status_effect/mesmerized name = "Mesmerized" desc = "You cant tear your sight from who is in front of you...Their gaze is simply too enthralling.." @@ -308,7 +302,7 @@ /datum/status_effect/cultghost/tick() if(owner.reagents) - owner.reagents.del_reagent(/datum/reagent/water/holywater) //can't be deconverted + owner.reagents.del_reagent("holywater") //can't be deconverted /datum/status_effect/crusher_mark id = "crusher_mark" diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index c5217d8e4b..3319259381 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -289,7 +289,7 @@ medical_record_text = "Patient suffers from acute Reality Dissociation Syndrome and experiences vivid hallucinations." /datum/quirk/insanity/on_process() - if(quirk_holder.reagents.has_reagent(/datum/reagent/toxin/mindbreaker)) + if(quirk_holder.reagents.has_reagent("mindbreaker")) quirk_holder.hallucination = 0 return if(prob(2)) //we'll all be mad soon enough diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm index 8be3174f50..eae2db6a5f 100644 --- a/code/datums/traits/neutral.dm +++ b/code/datums/traits/neutral.dm @@ -88,6 +88,15 @@ if(quirk_holder) quirk_holder.remove_client_colour(/datum/client_colour/monochrome) +/datum/quirk/crocrin_immunity + name = "Crocin Immunity" + desc = "You're one of the few people in the galaxy who are genetically immune to Crocin and Hexacrocin products and their addictive properties! However, you can still get brain damage from Hexacrocin addiction." + mob_trait = TRAIT_CROCRIN_IMMUNE + value = 0 + gain_text = "You feel more prudish." + lose_text = "You don't feel as prudish as before." + medical_record_text = "Patient exhibits a special gene that makes them immune to aphrodisiacs." + /datum/quirk/libido name = "Nymphomania" desc = "You're always feeling a bit in heat. Also, you get aroused faster than usual." @@ -122,29 +131,22 @@ gain_text = "You feel like exposing yourself to the world." lose_text = "Indecent exposure doesn't sound as charming to you anymore." -/datum/quirk/coldblooded - name = "Cold-blooded" - desc = "Your body doesn't create its own internal heat, requiring external heat regulation." +/datum/quirk/pharmacokinesis //Prevents unwanted organ additions. + name = "Acute hepatic pharmacokinesis" + desc = "You've a rare genetic disorder that causes Incubus draft and Sucubus milk to be absorbed by your liver instead." value = 0 - medical_record_text = "Patient is ectothermic." - mob_trait = TRAIT_COLDBLOODED - gain_text = "You feel cold-blooded." - lose_text = "You feel more warm-blooded." + mob_trait = TRAIT_PHARMA + lose_text = "Your liver feels different." + medical_record_text = "Non-invasive tests report that the patient's metabolism is indeed incompatible with a certain \"stimulants\"." + var/active = FALSE + var/power = 0 + var/cachedmoveCalc = 1 -/datum/quirk/alcohol_intolerance - name = "Alcohol Intolerance" - desc = "You take toxin damage from alcohol rather than getting drunk." +/datum/quirk/assblastusa + name = "Buns of Steel" + desc = "You've never skipped ass day. With this trait, you are completely immune to all forms of ass slapping and anyone who tries to slap your rock hard ass usually gets a broken hand." + mob_trait = TRAIT_ASSBLASTUSA value = 0 - mob_trait = TRAIT_NO_ALCOHOL - medical_record_text = "Patient's body does not react properly to ethyl alcohol." - -/datum/quirk/alcohol_intolerance/add() - var/mob/living/carbon/human/H = quirk_holder - var/datum/species/species = H.dna.species - species.disliked_food |= ALCOHOL - -/datum/quirk/alcohol_intolerance/remove() - var/mob/living/carbon/human/H = quirk_holder - if(H) - var/datum/species/species = H.dna.species - species.disliked_food &= ~ALCOHOL + medical_record_text = "Patient never skipped ass day." + gain_text = "Your ass rivals those of golems." + lose_text = "Your butt feels more squishy and slappable." \ No newline at end of file diff --git a/code/datums/world_topic.dm b/code/datums/world_topic.dm index 9e2efd1d4e..e3e296e936 100644 --- a/code/datums/world_topic.dm +++ b/code/datums/world_topic.dm @@ -25,16 +25,16 @@ var/key_valid var/require_comms_key = FALSE -/datum/world_topic/proc/TryRun(list/input, addr) +/datum/world_topic/proc/TryRun(list/input) key_valid = config && (CONFIG_GET(string/comms_key) == input["key"]) if(require_comms_key && !key_valid) return "Bad Key" input -= "key" - . = Run(input, addr) + . = Run(input) if(islist(.)) . = list2params(.) -/datum/world_topic/proc/Run(list/input, addr) +/datum/world_topic/proc/Run(list/input) CRASH("Run() not implemented for [type]!") // TOPICS @@ -43,7 +43,7 @@ keyword = "ping" log = FALSE -/datum/world_topic/ping/Run(list/input, addr) +/datum/world_topic/ping/Run(list/input) . = 0 for (var/client/C in GLOB.clients) ++. @@ -52,7 +52,7 @@ keyword = "playing" log = FALSE -/datum/world_topic/playing/Run(list/input, addr) +/datum/world_topic/playing/Run(list/input) return GLOB.player_list.len /datum/world_topic/pr_announce @@ -60,7 +60,7 @@ require_comms_key = TRUE var/static/list/PRcounts = list() //PR id -> number of times announced this round -/datum/world_topic/pr_announce/Run(list/input, addr) +/datum/world_topic/pr_announce/Run(list/input) var/list/payload = json_decode(input["payload"]) var/id = "[payload["pull_request"]["id"]]" if(!PRcounts[id]) @@ -78,14 +78,14 @@ keyword = "Ahelp" require_comms_key = TRUE -/datum/world_topic/ahelp_relay/Run(list/input, addr) +/datum/world_topic/ahelp_relay/Run(list/input) relay_msg_admins("HELP: [input["source"]] [input["message_sender"]]: [input["message"]]") /datum/world_topic/comms_console keyword = "Comms_Console" require_comms_key = TRUE -/datum/world_topic/comms_console/Run(list/input, addr) +/datum/world_topic/comms_console/Run(list/input) minor_announce(input["message"], "Incoming message from [input["message_sender"]]") for(var/obj/machinery/computer/communications/CM in GLOB.machines) CM.overrideCooldown() @@ -94,17 +94,17 @@ keyword = "News_Report" require_comms_key = TRUE -/datum/world_topic/news_report/Run(list/input, addr) +/datum/world_topic/news_report/Run(list/input) minor_announce(input["message"], "Breaking Update From [input["message_sender"]]") /datum/world_topic/server_hop keyword = "server_hop" -/datum/world_topic/server_hop/Run(list/input, addr) +/datum/world_topic/server_hop/Run(list/input) var/expected_key = input[keyword] for(var/mob/dead/observer/O in GLOB.player_list) if(O.key == expected_key) - if(O.client?.address == addr) + if(O.client) new /obj/screen/splash(O.client, TRUE) break @@ -112,14 +112,14 @@ keyword = "adminmsg" require_comms_key = TRUE -/datum/world_topic/adminmsg/Run(list/input, addr) +/datum/world_topic/adminmsg/Run(list/input) return IrcPm(input[keyword], input["msg"], input["sender"]) /datum/world_topic/namecheck keyword = "namecheck" require_comms_key = TRUE -/datum/world_topic/namecheck/Run(list/input, addr) +/datum/world_topic/namecheck/Run(list/input) //Oh this is a hack, someone refactor the functionality out of the chat command PLS var/datum/tgs_chat_command/namecheck/NC = new var/datum/tgs_chat_user/user = new @@ -131,17 +131,13 @@ keyword = "adminwho" require_comms_key = TRUE -/datum/world_topic/adminwho/Run(list/input, addr) +/datum/world_topic/adminwho/Run(list/input) return ircadminwho() /datum/world_topic/status keyword = "status" -/datum/world_topic/status/Run(list/input, addr) - if(!key_valid) //If we have a key, then it's safe to trust that this isn't a malicious packet. Also prevents the extra info from leaking - if(GLOB.topic_status_lastcache <= world.time + 5) - return GLOB.topic_status_cache - GLOB.topic_status_lastcache = world.time +/datum/world_topic/status/Run(list/input) . = list() .["version"] = GLOB.game_version .["mode"] = "hidden" //CIT CHANGE - hides the gamemode in topic() calls to prevent meta'ing the gamemode @@ -184,6 +180,4 @@ // Shuttle status, see /__DEFINES/stat.dm .["shuttle_timer"] = SSshuttle.emergency.timeLeft() // Shuttle timer, in seconds - - if(!key_valid) - GLOB.topic_status_cache = . + diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 36b701aae1..66570205e3 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -47,7 +47,7 @@ /atom/New(loc, ...) //atom creation method that preloads variables at creation if(GLOB.use_preloader && (src.type == GLOB._preloader.target_path))//in case the instanciated atom is creating other atoms in New() - world.preloader_load(src) + GLOB._preloader.load(src) if(datum_flags & DF_USE_TAG) GenerateTag() @@ -166,7 +166,7 @@ return FALSE -/atom/proc/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) +/atom/proc/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) SEND_SIGNAL(src, COMSIG_ATOM_HULK_ATTACK, user) if(does_attack_animation) user.changeNext_move(CLICK_CD_MELEE) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 7c57de74a4..ef20b6e35e 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -515,10 +515,10 @@ step(src, AM.dir) ..() -/atom/movable/proc/safe_throw_at(atom/target, range, speed, mob/thrower, spin=TRUE, diagonals_first = FALSE, var/datum/callback/callback, messy_throw = TRUE) - return throw_at(target, range, speed, thrower, spin, diagonals_first, callback, messy_throw) +/atom/movable/proc/safe_throw_at(atom/target, range, speed, mob/thrower, spin=TRUE, diagonals_first = FALSE, var/datum/callback/callback) + return throw_at(target, range, speed, thrower, spin, diagonals_first, callback) -/atom/movable/proc/throw_at(atom/target, range, speed, mob/thrower, spin=TRUE, diagonals_first = FALSE, var/datum/callback/callback, messy_throw = TRUE) //If this returns FALSE then callback will not be called. +/atom/movable/proc/throw_at(atom/target, range, speed, mob/thrower, spin=TRUE, diagonals_first = FALSE, var/datum/callback/callback) //If this returns FALSE then callback will not be called. . = FALSE if (!target || speed <= 0) return diff --git a/code/game/gamemodes/bloodsucker/bloodsucker.dm b/code/game/gamemodes/bloodsucker/bloodsucker.dm index ca2ebfe00d..e784fd836d 100644 --- a/code/game/gamemodes/bloodsucker/bloodsucker.dm +++ b/code/game/gamemodes/bloodsucker/bloodsucker.dm @@ -9,8 +9,6 @@ var/list/vassal_allowed_antags = list(/datum/antagonist/brother, /datum/antagonist/traitor, /datum/antagonist/traitor/internal_affairs, /datum/antagonist/survivalist, \ /datum/antagonist/rev, /datum/antagonist/nukeop, /datum/antagonist/pirate, /datum/antagonist/cult, /datum/antagonist/abductee) // The antags you're allowed to be if turning Vassal. -/proc/isvamp(mob/living/M) - return istype(M) && M.mind && M.mind.has_antag_datum(/datum/antagonist/bloodsucker) /datum/game_mode/bloodsucker name = "bloodsucker" diff --git a/code/game/gamemodes/clown_ops/clown_ops.dm b/code/game/gamemodes/clown_ops/clown_ops.dm index 11898701fa..49a336e16a 100644 --- a/code/game/gamemodes/clown_ops/clown_ops.dm +++ b/code/game/gamemodes/clown_ops/clown_ops.dm @@ -57,6 +57,7 @@ ..() if(visualsOnly) return + H.dna.add_mutation(CLOWNMUT) H.dna.add_mutation(SMILE) /datum/outfit/syndicate/clownop/leader diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index 0945875ac9..9b52ddda1e 100644 --- a/code/game/gamemodes/clown_ops/clown_weapons.dm +++ b/code/game/gamemodes/clown_ops/clown_weapons.dm @@ -8,7 +8,7 @@ spray_range = 1 stream_range = 1 volume = 30 - list_reagents = list(/datum/reagent/lube = 30) + list_reagents = list("lube" = 30) //COMBAT CLOWN SHOES //Clown shoes with combat stats and noslip. Of course they still squeak. @@ -165,7 +165,7 @@ customfoodfilling = FALSE seed = null tastes = list("explosives" = 10) - list_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("vitamin" = 1) /obj/item/grown/bananapeel/bombanana desc = "A peel from a banana. Why is it beeping?" diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm index 821c819664..075184046d 100644 --- a/code/game/gamemodes/dynamic/dynamic.dm +++ b/code/game/gamemodes/dynamic/dynamic.dm @@ -1,3 +1,14 @@ +#define CURRENT_LIVING_PLAYERS 1 +#define CURRENT_LIVING_ANTAGS 2 +#define CURRENT_DEAD_PLAYERS 3 +#define CURRENT_OBSERVERS 4 + +#define ONLY_RULESET 1 +#define HIGHLANDER_RULESET 2 +#define TRAITOR_RULESET 4 +#define MINOR_RULESET 8 + +#define RULESET_STOP_PROCESSING 1 // -- Injection delays GLOBAL_VAR_INIT(dynamic_latejoin_delay_min, (10 MINUTES)) @@ -41,8 +52,6 @@ GLOBAL_LIST_EMPTY(dynamic_forced_roundstart_ruleset) // Forced threat level, setting this to zero or higher forces the roundstart threat to the value. GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) -GLOBAL_VAR_INIT(dynamic_storyteller_type, null) - /datum/game_mode/dynamic name = "dynamic mode" config_tag = "dynamic" @@ -51,8 +60,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, null) announce_text = "Dynamic mode!" // This needs to be changed maybe reroll_friendly = FALSE; - // Current storyteller - var/datum/dynamic_storyteller/storyteller = null + // Threat logging vars /// The "threat cap", threat shouldn't normally go above this and is used in ruleset calculations var/threat_level = 0 @@ -156,7 +164,6 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, null) dat += "Threat to Spend: [threat] \[Adjust\] \[View Log\]
    " dat += "
    " - dat += "Storyteller: [storyteller.name]
    " dat += "Parameters: centre = [GLOB.dynamic_curve_centre] ; width = [GLOB.dynamic_curve_width].
    " dat += "On average, [peaceful_percentage]% of the rounds are more peaceful.
    " dat += "Forced extended: [GLOB.dynamic_forced_extended ? "On" : "Off"]
    " @@ -171,7 +178,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, null) dat += "[DR.ruletype] - [DR.name]
    " else dat += "none.
    " - dat += "
    Injection Timers: ([storyteller.get_injection_chance(TRUE)]% chance)
    " + dat += "
    Injection Timers: ([get_injection_chance(TRUE)]% chance)
    " dat += "Latejoin: [(latejoin_injection_cooldown-world.time)>60*10 ? "[round((latejoin_injection_cooldown-world.time)/60/10,0.1)] minutes" : "[(latejoin_injection_cooldown-world.time)] seconds"] \[Now!\]
    " dat += "Midround: [(midround_injection_cooldown-world.time)>60*10 ? "[round((midround_injection_cooldown-world.time)/60/10,0.1)] minutes" : "[(midround_injection_cooldown-world.time)] seconds"] \[Now!\]
    " dat += "Event: [(event_injection_cooldown-world.time)>60*10 ? "[round((event_injection_cooldown-world.time)/60/10,0.1)] minutes" : "[(event_injection_cooldown-world.time)] seconds"] \[Now!\]
    " @@ -329,9 +336,6 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, null) SSblackbox.record_feedback("tally","dynamic_threat",peaceful_percentage,"Percent of same-vote rounds that are more peaceful") /datum/game_mode/dynamic/can_start() - storyteller = new GLOB.dynamic_storyteller_type // this is where all the initialization happens - storyteller.on_start() - SSblackbox.record_feedback("text","dynamic_storyteller",1,storyteller.name) message_admins("Dynamic mode parameters for the round:") message_admins("Centre is [GLOB.dynamic_curve_centre], Width is [GLOB.dynamic_curve_width], Forced extended is [GLOB.dynamic_forced_extended ? "Enabled" : "Disabled"], No stacking is [GLOB.dynamic_no_stacking ? "Enabled" : "Disabled"].") message_admins("Stacking limit is [GLOB.dynamic_stacking_limit], Classic secret is [GLOB.dynamic_classic_secret ? "Enabled" : "Disabled"], High population limit is [GLOB.dynamic_high_pop_limit].") @@ -341,12 +345,19 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, null) if(GLOB.dynamic_forced_threat_level >= 0) threat_level = round(GLOB.dynamic_forced_threat_level, 0.1) threat = threat_level - SSblackbox.record_feedback("tally","dynamic_threat",threat_level,"Threat level (forced)") + SSblackbox.record_feedback("tally","dynamic_threat",threat_level,"Threat level (forced by admins)") else generate_threat() - storyteller.start_injection_cooldowns() + var/latejoin_injection_cooldown_middle = 0.5*(GLOB.dynamic_first_latejoin_delay_max + GLOB.dynamic_first_latejoin_delay_min) + latejoin_injection_cooldown = round(CLAMP(EXP_DISTRIBUTION(latejoin_injection_cooldown_middle), GLOB.dynamic_first_latejoin_delay_min, GLOB.dynamic_first_latejoin_delay_max)) + world.time + var/midround_injection_cooldown_middle = 0.5*(GLOB.dynamic_first_midround_delay_min + GLOB.dynamic_first_midround_delay_max) + midround_injection_cooldown = round(CLAMP(EXP_DISTRIBUTION(midround_injection_cooldown_middle), GLOB.dynamic_first_midround_delay_min, GLOB.dynamic_first_midround_delay_max)) + world.time + + var/event_injection_cooldown_middle = 0.5*(GLOB.dynamic_event_delay_max + GLOB.dynamic_event_delay_min) + event_injection_cooldown = (round(CLAMP(EXP_DISTRIBUTION(event_injection_cooldown_middle), GLOB.dynamic_event_delay_min, GLOB.dynamic_event_delay_max)) + world.time) + log_game("DYNAMIC: Dynamic Mode initialized with a Threat Level of... [threat_level]!") initial_threat_level = threat_level return TRUE @@ -380,7 +391,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, null) log_game("DYNAMIC: [roundstart_rules.len] rules.") return TRUE SSblackbox.record_feedback("tally","dynamic",roundstart_rules.len,"Roundstart rules considered") - SSblackbox.record_feedback("tally","dynamic",roundstart_pop_ready,"Players readied up") + SSblackbox.record_feedback("tally","dynamic",roundstart_rules.len,"Players readied up") if(GLOB.dynamic_forced_roundstart_ruleset.len > 0) rigged_roundstart() else @@ -418,7 +429,13 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, null) if (GLOB.dynamic_forced_extended) log_game("DYNAMIC: Starting a round of forced extended.") return TRUE - var/list/drafted_rules = storyteller.roundstart_draft() + var/list/drafted_rules = list() + for (var/datum/dynamic_ruleset/roundstart/rule in roundstart_rules) + if (rule.acceptable(roundstart_pop_ready, threat_level) && threat >= rule.cost) // If we got the population and threat required + rule.candidates = candidates.Copy() + rule.trim_candidates() + if (rule.ready() && rule.candidates.len > 0) + drafted_rules[rule] = rule.weight if(!drafted_rules.len) message_admins("Not enough threat level for roundstart antags!") log_game("DYNAMIC: Not enough threat level for roundstart antags!") @@ -636,6 +653,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, null) if (rule.persistent) current_rules += rule return TRUE + rule.clean_up() stack_trace("The [rule.ruletype] rule \"[rule.name]\" failed to execute.") return FALSE @@ -649,41 +667,62 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, null) current_rules -= rule SSblackbox.record_feedback("tally","dynamic",1,"Rulesets finished") SSblackbox.record_feedback("associative","dynamic_rulesets_finished",1,rule.get_blackbox_info()) - - storyteller.do_process() - + if (midround_injection_cooldown < world.time) if (GLOB.dynamic_forced_extended) return // Somehow it managed to trigger midround multiple times so this was moved here. // There is no way this should be able to trigger an injection twice now. - midround_injection_cooldown = storyteller.get_midround_cooldown() + world.time + var/midround_injection_cooldown_middle = 0.5*(GLOB.dynamic_midround_delay_max + GLOB.dynamic_midround_delay_min) + midround_injection_cooldown = (round(CLAMP(EXP_DISTRIBUTION(midround_injection_cooldown_middle), GLOB.dynamic_midround_delay_min, GLOB.dynamic_midround_delay_max)) + world.time) // Time to inject some threat into the round if(EMERGENCY_ESCAPED_OR_ENDGAMED) // Unless the shuttle is gone return - if((world.realtime - SSshuttle.realtimeofstart) > SSshuttle.auto_call) // no rules after shuttle is auto-called - return message_admins("DYNAMIC: Checking for midround injection.") log_game("DYNAMIC: Checking for midround injection.") update_playercounts() - if (prob(storyteller.get_injection_chance())) + if (get_injection_chance()) SSblackbox.record_feedback("tally","dynamic",1,"Attempted midround injections") - var/list/drafted_rules = storyteller.midround_draft() + var/cur_threat_frac = threat/threat_level + var/list/drafted_rules = list() + var/antag_num = current_players[CURRENT_LIVING_ANTAGS].len + for (var/datum/dynamic_ruleset/midround/rule in midround_rules) + // if there are antags OR the rule is an antag rule, antag_acceptable will be true. + if (rule.acceptable(current_players[CURRENT_LIVING_PLAYERS].len, threat_level) && threat >= rule.cost) + // Classic secret : only autotraitor/minor roles + if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET) || (rule.flags & MINOR_RULESET))) + continue + rule.trim_candidates() + if (rule.ready()) + if(!antag_num) + drafted_rules[rule] = round(rule.get_weight() + (rule.cost * cur_threat_frac)) + else + drafted_rules[rule] = rule.get_weight() + else if(threat < rule.cost) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough threat to spend") if (drafted_rules.len > 0) SSblackbox.record_feedback("tally","dynamic",1,"Successful midround injections") picking_midround_latejoin_rule(drafted_rules) - // get_injection_chance can do things on fail + else + midround_injection_cooldown = (midround_injection_cooldown + world.time)/2 if(event_injection_cooldown < world.time) SSblackbox.record_feedback("tally","dynamic",1,"Attempted event injections") - event_injection_cooldown = storyteller.get_event_cooldown() + world.time + var/event_injection_cooldown_middle = 0.5*(GLOB.dynamic_event_delay_max + GLOB.dynamic_event_delay_min) + event_injection_cooldown = (round(CLAMP(EXP_DISTRIBUTION(event_injection_cooldown_middle), GLOB.dynamic_event_delay_min, GLOB.dynamic_event_delay_max)) + world.time) message_admins("DYNAMIC: Doing event injection.") log_game("DYNAMIC: Doing event injection.") update_playercounts() - var/list/drafted_rules = storyteller.event_draft() + var/list/drafted_rules = list() + for(var/datum/dynamic_ruleset/event/rule in events) + if(rule.acceptable(current_players[CURRENT_LIVING_PLAYERS].len, threat_level) && threat >= rule.cost) + if(rule.ready()) + drafted_rules[rule] = rule.get_weight() + else if(threat < rule.cost) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough threat to spend") if(drafted_rules.len > 0) SSblackbox.record_feedback("tally","dynamic",1,"Successful event injections") picking_midround_latejoin_rule(drafted_rules) @@ -702,13 +741,38 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, null) if (M.mind && (M.mind.special_role || M.mind.antag_datums?.len > 0)) current_players[CURRENT_LIVING_ANTAGS].Add(M) else - if (isobserver(M)) + if (istype(M,/mob/dead/observer)) var/mob/dead/observer/O = M if (O.started_as_observer) // Observers current_players[CURRENT_OBSERVERS].Add(M) continue current_players[CURRENT_DEAD_PLAYERS].Add(M) // Players who actually died (and admins who ghosted, would be nice to avoid counting them somehow) +/// Gets the chance for latejoin and midround injection, the dry_run argument is only used for forced injection. +/datum/game_mode/dynamic/proc/get_injection_chance(dry_run = FALSE) + if(forced_injection) + forced_injection = !dry_run + return 100 + var/chance = 0 + // If the high pop override is in effect, we reduce the impact of population on the antag injection chance + var/high_pop_factor = (current_players[CURRENT_LIVING_PLAYERS].len >= GLOB.dynamic_high_pop_limit) + var/max_pop_per_antag = max(5,15 - round(threat_level/10) - round(current_players[CURRENT_LIVING_PLAYERS].len/(high_pop_factor ? 10 : 5))) + if (!current_players[CURRENT_LIVING_ANTAGS].len) + chance += 80 // No antags at all? let's boost those odds! + else + var/current_pop_per_antag = current_players[CURRENT_LIVING_PLAYERS].len / current_players[CURRENT_LIVING_ANTAGS].len + if (current_pop_per_antag > max_pop_per_antag) + chance += min(50, 25+10*(current_pop_per_antag-max_pop_per_antag)) + else + chance += 25-10*(max_pop_per_antag-current_pop_per_antag) + if (current_players[CURRENT_DEAD_PLAYERS].len > current_players[CURRENT_LIVING_PLAYERS].len) + chance -= 30 // More than half the crew died? ew, let's calm down on antags + if (threat > 70) + chance += 15 + if (threat < 30) + chance -= 15 + return round(max(0,chance)) + /// Removes type from the list /datum/game_mode/dynamic/proc/remove_from_list(list/type_list, type) for(var/I in type_list) @@ -739,8 +803,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, null) return if(EMERGENCY_ESCAPED_OR_ENDGAMED) // No more rules after the shuttle has left return - if((world.realtime - SSshuttle.realtimeofstart) > SSshuttle.auto_call) // no rules after shuttle is auto-called - return + update_playercounts() if (forced_latejoin_rule) @@ -751,12 +814,28 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, null) picking_midround_latejoin_rule(list(forced_latejoin_rule), forced = TRUE) forced_latejoin_rule = null - else if (latejoin_injection_cooldown < world.time && prob(storyteller.get_injection_chance())) + else if (latejoin_injection_cooldown < world.time && prob(get_injection_chance())) SSblackbox.record_feedback("tally","dynamic",1,"Attempted latejoin injections") - var/list/drafted_rules = storyteller.latejoin_draft(newPlayer) + var/list/drafted_rules = list() + for (var/datum/dynamic_ruleset/latejoin/rule in latejoin_rules) + if (rule.acceptable(current_players[CURRENT_LIVING_PLAYERS].len, threat_level) && threat >= rule.cost) + // Classic secret : only autotraitor/minor roles + if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET) || (rule.flags & MINOR_RULESET))) + continue + // No stacking : only one round-ender, unless threat level > stacking_limit. + if (threat_level > GLOB.dynamic_stacking_limit && GLOB.dynamic_no_stacking) + if(rule.flags & HIGHLANDER_RULESET && highlander_executed) + continue + + rule.candidates = list(newPlayer) + rule.trim_candidates() + if (rule.ready()) + drafted_rules[rule] = rule.get_weight() + if (drafted_rules.len > 0 && picking_midround_latejoin_rule(drafted_rules)) SSblackbox.record_feedback("tally","dynamic",1,"Successful latejoin injections") - latejoin_injection_cooldown = storyteller.get_latejoin_cooldown() + world.time + var/latejoin_injection_cooldown_middle = 0.5*(GLOB.dynamic_latejoin_delay_max + GLOB.dynamic_latejoin_delay_min) + latejoin_injection_cooldown = round(CLAMP(EXP_DISTRIBUTION(latejoin_injection_cooldown_middle), GLOB.dynamic_latejoin_delay_min, GLOB.dynamic_latejoin_delay_max)) + world.time /// Refund threat, but no more than threat_level. /datum/game_mode/dynamic/proc/refund_threat(regain) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets.dm b/code/game/gamemodes/dynamic/dynamic_rulesets.dm index 2f143f7233..7f6ea088a1 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets.dm @@ -80,13 +80,9 @@ /// Delay for when execute will get called from the time of post_setup (roundstart) or process (midround/latejoin). /// Make sure your ruleset works with execute being called during the game when using this, and that the clean_up proc reverts it properly in case of faliure. var/delay = 0 - /// List of tags for use in storytellers. - var/list/property_weights = list() /// Whether or not recent-round weight values are taken into account for this ruleset. /// Weight reduction uses the same values as secret's recent-round mode weight reduction. var/always_max_weight = FALSE - /// Weight reduction by recent-rounds. Saved on new. - var/weight_mult = 1 /datum/dynamic_ruleset/New() ..() @@ -100,11 +96,13 @@ var/high_population_requirements = CONFIG_GET(keyed_list/dynamic_high_population_requirement) var/list/repeated_mode_adjust = CONFIG_GET(number_list/repeated_mode_adjust) if(config_tag in weights) + var/weight_mult = 1 if(!always_max_weight && SSpersistence.saved_dynamic_rules.len == 3 && repeated_mode_adjust.len == 3) var/saved_dynamic_rules = SSpersistence.saved_dynamic_rules for(var/i in 1 to 3) if(config_tag in saved_dynamic_rules[i]) weight_mult -= (repeated_mode_adjust[i]/100) + weight = weights[config_tag] * weight_mult if(config_tag in costs) cost = costs[config_tag] if(config_tag in requirementses) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm index 23e94c4065..b6cd313bfc 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm @@ -58,7 +58,6 @@ cost = 10 blocking_rules = list(/datum/dynamic_ruleset/roundstart/nuclear,/datum/dynamic_ruleset/midround/from_ghosts/nuclear) requirements = list(70,60,50,50,40,40,40,30,20,15) - property_weights = list("story_potential" = 1, "trust" = 1, "chaos" = 1) high_population_requirement = 15 /datum/dynamic_ruleset/event/pirates/ready(forced = FALSE) @@ -82,7 +81,6 @@ cost = 10 requirements = list(70,60,50,50,40,40,40,30,20,15) high_population_requirement = 15 - property_weights = list("chaos" = 1, "valid" = 1) ////////////////////////////////////////////// // // @@ -102,7 +100,6 @@ requirements = list(5,5,5,5,5,5,5,5,5,5) // yes, can happen on fake-extended high_population_requirement = 5 repeatable = TRUE - property_weights = list("chaos" = 1, "extended" = 2) /datum/dynamic_ruleset/event/ventclog/ready() if(mode.threat_level > 30 && mode.threat >= 5 && prob(20)) @@ -136,11 +133,10 @@ required_enemies = list(1,1,0,0,0,0,0,0,0,0) weight = 4 // no repeatable weight decrease. too variable to be unfun multiple times in one round - cost = 1 + cost = 3 requirements = list(5,5,5,5,5,5,5,5,5,5) high_population_requirement = 5 repeatable = TRUE - property_weights = list("story_potential" = 1, "extended" = 1) always_max_weight = TRUE ////////////////////////////////////////////// @@ -160,7 +156,6 @@ repeatable_weight_decrease = 2 requirements = list(60,50,40,30,30,30,30,30,30,30) high_population_requirement = 30 - property_weights = list("extended" = -2) /datum/dynamic_ruleset/event/meteor_wave/ready() if(mode.threat_level > 40 && mode.threat >= 25 && prob(20)) @@ -195,7 +190,6 @@ requirements = list(5,5,5,5,5,5,5,5,5,5) high_population_requirement = 5 repeatable = TRUE - property_weights = list("extended" = 1) /datum/dynamic_ruleset/event/anomaly_flux name = "Anomaly: Hyper-Energetic Flux" @@ -209,7 +203,6 @@ requirements = list(5,5,5,5,5,5,5,5,5,5) high_population_requirement = 10 repeatable = TRUE - property_weights = list("extended" = 1) /datum/dynamic_ruleset/event/anomaly_gravitational name = "Anomaly: Gravitational" @@ -221,7 +214,6 @@ requirements = list(5,5,5,5,5,5,5,5,5,5) high_population_requirement = 5 repeatable = TRUE - property_weights = list("extended" = 1) /datum/dynamic_ruleset/event/anomaly_pyroclastic name = "Anomaly: Pyroclastic" @@ -235,7 +227,6 @@ requirements = list(10,10,10,10,10,10,10,10,10,10) high_population_requirement = 10 repeatable = TRUE - property_weights = list("extended" = 1) /datum/dynamic_ruleset/event/anomaly_vortex name = "Anomaly: Vortex" @@ -249,7 +240,6 @@ requirements = list(10,10,10,10,10,10,10,10,10,10) high_population_requirement = 10 repeatable = TRUE - property_weights = list("extended" = 1) ////////////////////////////////////////////// // // @@ -269,7 +259,6 @@ requirements = list(10,10,10,10,10,10,10,10,10,10) high_population_requirement = 10 repeatable = TRUE - property_weights = list("extended" = -1, "chaos" = 1) /datum/dynamic_ruleset/event/carp_migration name = "Carp Migration" @@ -281,7 +270,6 @@ requirements = list(10,10,10,10,10,10,10,10,10,10) high_population_requirement = 10 repeatable = TRUE - property_weights = list("extended" = 1) /datum/dynamic_ruleset/event/communications_blackout name = "Communications Blackout" @@ -295,7 +283,6 @@ requirements = list(5,5,5,5,5,5,5,5,5,5) high_population_requirement = 5 repeatable = TRUE - property_weights = list("extended" = 1, "chaos" = 1) /datum/dynamic_ruleset/event/processor_overload name = "Processor Overload" @@ -309,7 +296,6 @@ requirements = list(5,5,5,5,5,5,5,5,5,5) high_population_requirement = 5 repeatable = TRUE - property_weights = list("extended" = 1, "chaos" = 1) always_max_weight = TRUE /datum/dynamic_ruleset/event/space_dust @@ -324,7 +310,6 @@ requirements = list(5,5,5,5,5,5,5,5,5,5) high_population_requirement = 5 repeatable = TRUE - property_weights = list("extended" = 1) always_max_weight = TRUE /datum/dynamic_ruleset/event/major_dust @@ -339,7 +324,6 @@ requirements = list(10,10,10,10,10,10,10,10,10,10) high_population_requirement = 10 repeatable = TRUE - property_weights = list("extended" = 1) /datum/dynamic_ruleset/event/electrical_storm name = "Electrical Storm" @@ -353,7 +337,6 @@ requirements = list(5,5,5,5,5,5,5,5,5,5) high_population_requirement = 5 repeatable = TRUE - property_weights = list("extended" = 1) /datum/dynamic_ruleset/event/heart_attack name = "Random Heart Attack" @@ -367,7 +350,6 @@ requirements = list(101,101,101,5,5,5,5,5,5,5) high_population_requirement = 5 repeatable = TRUE - property_weights = list("extended" = 1) always_max_weight = TRUE /datum/dynamic_ruleset/event/radiation_storm @@ -380,4 +362,3 @@ required_enemies = list(1,1,1,1,1,1,1,1,1,1) requirements = list(5,5,5,5,5,5,5,5,5,5) high_population_requirement = 5 - property_weights = list("extended" = 1,"chaos" = 1) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm index f4e9971a05..fe9347d9d5 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm @@ -69,15 +69,8 @@ high_population_requirement = 15 repeatable = TRUE flags = TRAITOR_RULESET - property_weights = list("story_potential" = 2, "trust" = -1, "extended" = 1) always_max_weight = TRUE -/datum/dynamic_ruleset/latejoin/infiltrator/execute() - . = ..() - for(var/datum/mind/M in assigned) - log_admin("[M.name] was made into a traitor by dynamic.") - message_admins("[M.name] was made into a traitor by dynamic.") - ////////////////////////////////////////////// // // // REVOLUTIONARY PROVOCATEUR // @@ -101,7 +94,6 @@ requirements = list(101,101,70,40,40,40,40,40,40,40) high_population_requirement = 40 flags = HIGHLANDER_RULESET - property_weights = list("trust" = -2, "chaos" = 2, "extended" = -2, "valid" = 2, "conversion" = 1) var/required_heads_of_staff = 3 var/finished = FALSE var/datum/team/revolution/revolution @@ -131,8 +123,6 @@ revolution.update_objectives() revolution.update_heads() SSshuttle.registerHostileEnvironment(src) - log_admin("[M.name] was made into a revolutionary by dynamic.") - message_admins("[M.name] was made into a revolutionary by dynamic.") return TRUE else log_game("DYNAMIC: [ruletype] [name] discarded [M.name] from head revolutionary due to ineligibility.") @@ -197,31 +187,30 @@ ////////////////////////////////////////////// // // -// BLOODSUCKERS // +// VAMPIRE // // // ////////////////////////////////////////////// -/datum/dynamic_ruleset/latejoin/bloodsucker - name = "Bloodsucker Infiltrator" - config_tag = "latejoin_bloodsucker" - antag_datum = ANTAG_DATUM_BLOODSUCKER - antag_flag = ROLE_TRAITOR +/* +/datum/dynamic_ruleset/latejoin/vampire + name = "vampire" + config_tag = "vampire_latejoin" + antag_flag = ROLE_VAMPIRE + antag_datum = ANTAG_DATUM_VAMPIRE + protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain") restricted_roles = list("AI", "Cyborg") - protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") required_candidates = 1 - weight = 3 - cost = 10 - property_weights = list("story_potential" = 2, "extended" = 2, "trust" = -2, "valid" = 1) - requirements = list(70,65,60,55,50,45,40,35,30,30) - high_population_requirement = 30 + weight = 5 + cost = 15 + requirements = list(80,70,60,50,40,20,20,15,15,15) repeatable = TRUE + high_population_requirement = 15 -/datum/dynamic_ruleset/latejoin/bloodsucker/execute() +/datum/dynamic_ruleset/latejoin/vampire/pre_execute() var/mob/M = pick(candidates) + candidates -= M assigned += M.mind - M.mind.special_role = antag_flag - if(mode.make_bloodsucker(M.mind)) - mode.bloodsuckers += M - log_admin("[M.name] was made into a bloodsucker by dynamic.") - message_admins("[M.name] was made into a bloodsucker by dynamic.") + M.mind.restricted_roles = restricted_roles + M.mind.special_role = ROLE_VAMPIRE return TRUE +*/ diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index 92a02f5920..91ac73d142 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -17,10 +17,10 @@ var/list/living_antags = list() var/list/dead_players = list() var/list/list_observers = list() - var/list/ghost_eligible = list() /datum/dynamic_ruleset/midround/from_ghosts weight = 0 + required_type = /mob/dead/observer /// Whether the ruleset should call generate_ruleset_body or not. var/makeBody = TRUE @@ -34,8 +34,6 @@ living_players = trim_list(mode.current_players[CURRENT_LIVING_PLAYERS]) living_antags = trim_list(mode.current_players[CURRENT_LIVING_ANTAGS]) list_observers = trim_list(mode.current_players[CURRENT_OBSERVERS]) - var/datum/element/ghost_role_eligibility/eligibility = SSdcs.GetElement(/datum/element/ghost_role_eligibility) - ghost_eligible = trim_list(eligibility.get_all_ghost_role_eligible()) /datum/dynamic_ruleset/midround/proc/trim_list(list/L = list()) var/list/trimmed_list = L.Copy() @@ -72,25 +70,6 @@ continue return trimmed_list -/datum/dynamic_ruleset/midround/from_ghosts/trim_list(list/L = list()) - var/list/trimmed_list = L.Copy() - for(var/mob/M in trimmed_list) - if (!M.client) // Are they connected? - trimmed_list.Remove(M) - continue - if(!mode.check_age(M.client, minimum_required_age)) - trimmed_list.Remove(M) - continue - if(antag_flag_override) - if(!(antag_flag_override in M.client.prefs.be_special) || jobban_isbanned(M.ckey, antag_flag_override)) - trimmed_list.Remove(M) - continue - else - if(!(antag_flag in M.client.prefs.be_special) || jobban_isbanned(M.ckey, antag_flag)) - trimmed_list.Remove(M) - continue - return trimmed_list - // You can then for example prompt dead players in execute() to join as strike teams or whatever // Or autotator someone @@ -112,15 +91,11 @@ return FALSE return TRUE -/datum/dynamic_ruleset/midround/from_ghosts/ready(forced = FALSE) - if (required_candidates > ghost_eligible.len) - SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough ghosts") - return FALSE - return ..() - - /datum/dynamic_ruleset/midround/from_ghosts/execute() - var/application_successful = send_applications(ghost_eligible) + var/list/possible_candidates = list() + possible_candidates.Add(dead_players) + possible_candidates.Add(list_observers) + var/application_successful = send_applications(possible_candidates) return assigned.len > 0 && application_successful /// This sends a poll to ghosts if they want to be a ghost spawn from a ruleset. @@ -133,12 +108,8 @@ candidates = pollGhostCandidates("The mode is looking for volunteers to become a [name]", antag_flag, SSticker.mode, antag_flag, poll_time = 300) - if(!candidates || candidates.len < required_candidates) + if(!candidates || candidates.len <= required_candidates) message_admins("The ruleset [name] did not receive enough applications.") - if(candidates) - message_admins("Only received [candidates.len], needed [required_candidates].") - else - message_admins("There were no candidates.") log_game("DYNAMIC: The ruleset [name] did not receive enough applications.") return FALSE @@ -209,7 +180,6 @@ repeatable = TRUE high_population_requirement = 15 flags = TRAITOR_RULESET - property_weights = list("story_potential" = 2, "trust" = -1, "extended" = 1) always_max_weight = TRUE /datum/dynamic_ruleset/midround/autotraitor/acceptable(population = 0, threat = 0) @@ -244,8 +214,6 @@ living_players -= M var/datum/antagonist/traitor/newTraitor = new M.mind.add_antag_datum(newTraitor) - log_admin("[M] was made into a traitor by dynamic.") - message_admins("[M] was made into a traitor by dynamic.") return TRUE @@ -269,7 +237,6 @@ requirements = list(101,101,70,50,50,50,40,30,30,30) high_population_requirement = 30 required_type = /mob/living/silicon/ai - property_weights = list("story_potential" = 2, "trust" = 1, "chaos" = 2) var/ion_announce = 33 var/removeDontImproveChance = 10 @@ -294,8 +261,6 @@ var/datum/antagonist/traitor/AI = new M.mind.special_role = antag_flag M.mind.add_antag_datum(AI) - log_admin("[M] was made into a malf AI by dynamic.") - message_admins("[M] was made into a malf AI by dynamic.") if(prob(ion_announce)) priority_announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", "ionstorm") if(prob(removeDontImproveChance)) @@ -324,10 +289,12 @@ requirements = list(90,90,70,50,50,50,50,40,30,30) high_population_requirement = 30 repeatable = TRUE - property_weights = list("story_potential" = 2, "trust" = 1, "chaos" = 2, "extended" = -2) var/datum/mind/wizard /datum/dynamic_ruleset/midround/from_ghosts/wizard/ready(forced = FALSE) + if (required_candidates > (dead_players.len + list_observers.len)) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough ghosts") + return FALSE if(GLOB.wizardstart.len == 0) log_admin("Cannot accept Wizard ruleset. Couldn't find any wizard spawn points.") message_admins("Cannot accept Wizard ruleset. Couldn't find any wizard spawn points.") @@ -370,7 +337,6 @@ cost = 35 requirements = list(90,90,90,80,70,60,50,40,40,40) high_population_requirement = 40 - property_weights = list("story_potential" = 2, "trust" = 2, "chaos" = 2, "extended" = -2, "valid" = 2) var/operative_cap = list(2,2,3,3,4,5,5,5,5,5) var/datum/team/nuclear/nuke_team flags = HIGHLANDER_RULESET @@ -388,6 +354,12 @@ required_candidates = operative_cap[indice_pop] return ..() +/datum/dynamic_ruleset/midround/from_ghosts/nuclear/ready(forced = FALSE) + if (required_candidates > (dead_players.len + list_observers.len)) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough ghosts") + return FALSE + return ..() + /datum/dynamic_ruleset/midround/from_ghosts/nuclear/finish_setup(mob/new_character, index) new_character.mind.special_role = "Nuclear Operative" new_character.mind.assigned_role = "Nuclear Operative" @@ -418,7 +390,12 @@ requirements = list(101,101,101,80,60,50,50,50,50,50) high_population_requirement = 50 repeatable = TRUE - property_weights = list("story_potential" = -1, "trust" = 2, "chaos" = 2, "extended" = -2, "valid" = 2) + +/datum/dynamic_ruleset/midround/from_ghosts/blob/ready(forced = FALSE) + if (required_candidates > (dead_players.len + list_observers.len)) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough ghosts") + return FALSE + return ..() /datum/dynamic_ruleset/midround/from_ghosts/blob/generate_ruleset_body(mob/applicant) var/body = applicant.become_overmind() @@ -444,9 +421,14 @@ high_population_requirement = 50 repeatable_weight_decrease = 2 repeatable = TRUE - property_weights = list("story_potential" = -1, "trust" = 1, "chaos" = 2, "extended" = -2, "valid" = 2) var/list/vents = list() +/datum/dynamic_ruleset/midround/from_ghosts/xenomorph/ready(forced = FALSE) + if (required_candidates > (dead_players.len + list_observers.len)) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough ghosts") + return FALSE + return ..() + /datum/dynamic_ruleset/midround/from_ghosts/xenomorph/execute() // 50% chance of being incremented by one required_candidates += prob(50) @@ -494,7 +476,6 @@ high_population_requirement = 50 repeatable_weight_decrease = 2 repeatable = TRUE - property_weights = list("story_potential" = 1, "trust" = 1, "extended" = 1, "valid" = 2, "integrity" = 2) var/list/spawn_locs = list() /datum/dynamic_ruleset/midround/from_ghosts/nightmare/execute() @@ -540,9 +521,14 @@ weight = 4 cost = 5 requirements = list(30,30,20,20,15,10,10,10,10,5) // yes, it can even happen in "extended"! - property_weights = list("story_potential" = 1, "extended" = 1, "valid" = -2) high_population_requirement = 5 +/datum/dynamic_ruleset/midround/from_ghosts/sentient_disease/ready(forced = FALSE) + if (required_candidates > (dead_players.len + list_observers.len)) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough ghosts") + return FALSE + return ..() + /datum/dynamic_ruleset/midround/from_ghosts/sentient_disease/generate_ruleset_body(mob/applicant) var/mob/camera/disease/virus = new /mob/camera/disease(SSmapping.get_station_center()) applicant.transfer_ckey(virus, FALSE) @@ -569,18 +555,17 @@ cost = 5 requirements = list(30,30,30,30,20,15,15,15,15,15) high_population_requirement = 15 - property_weights = list("story_potential" = -2, "extended" = -1) var/list/spawn_locs = list() -/datum/dynamic_ruleset/midround/from_ghosts/revenant/acceptable(population = 0,threat = 0) +/datum/dynamic_ruleset/midround/from_ghosts/revenant/ready(forced = FALSE) var/deadMobs = 0 for(var/mob/M in GLOB.dead_mob_list) deadMobs++ if(deadMobs < REVENANT_SPAWN_THRESHOLD) return FALSE - return ..() - -/datum/dynamic_ruleset/midround/from_ghosts/revenant/ready(forced = FALSE) + if(required_candidates > (dead_players.len + list_observers.len)) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough ghosts") + return FALSE for(var/mob/living/L in GLOB.dead_mob_list) //look for any dead bodies var/turf/T = get_turf(L) if(T && is_station_level(T.z)) @@ -622,11 +607,13 @@ weight = 4 cost = 15 requirements = list(101,101,101,90,80,70,60,50,40,30) - property_weights = list("story_potential" = -2, "extended" = -2, "integrity" = 2, "valid" = 2, "trust" = 2) high_population_requirement = 30 var/list/spawn_locs = list() /datum/dynamic_ruleset/midround/from_ghosts/slaughter_demon/ready(forced = FALSE) + if(required_candidates > (dead_players.len + list_observers.len)) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough ghosts") + return FALSE for(var/obj/effect/landmark/carpspawn/L in GLOB.landmarks_list) if(isturf(L.loc)) spawn_locs += L.loc @@ -672,11 +659,13 @@ blocking_rules = list(/datum/dynamic_ruleset/roundstart/nuclear,/datum/dynamic_ruleset/midround/from_ghosts/nuclear) high_population_requirement = 15 var/datum/team/abductor_team/team - property_weights = list("story_potential" = 1, "extended" = -2, "valid" = 1, "trust" = -1, "chaos" = 2) repeatable_weight_decrease = 4 repeatable = TRUE /datum/dynamic_ruleset/midround/from_ghosts/abductors/ready(forced = FALSE) + if(required_candidates > (dead_players.len + list_observers.len)) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough ghosts") + return FALSE team = new /datum/team/abductor_team if(team.team_number > ABDUCTOR_MAX_TEAMS) return FALSE @@ -710,11 +699,13 @@ cost = 15 requirements = list(101,101,101,90,80,70,60,50,40,30) high_population_requirement = 30 - property_weights = list("story_potential" = 1, "extended" = -2, "valid" = 2) var/list/spawn_locs = list() var/spawn_loc /datum/dynamic_ruleset/midround/from_ghosts/ninja/ready(forced = FALSE) + if(required_candidates > (dead_players.len + list_observers.len)) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough ghosts") + return FALSE if(!spawn_loc) var/list/spawn_locs = list() for(var/obj/effect/landmark/carpspawn/L in GLOB.landmarks_list) @@ -754,3 +745,31 @@ #undef ABDUCTOR_MAX_TEAMS #undef REVENANT_SPAWN_THRESHOLD + +////////////////////////////////////////////// +// // +// BLOODSUCKERS // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/latejoin/bloodsucker + name = "Bloodsucker Infiltrator" + config_tag = "latejoin_bloodsucker" + antag_datum = ANTAG_DATUM_BLOODSUCKER + antag_flag = ROLE_TRAITOR + restricted_roles = list("AI", "Cyborg") + protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") + required_candidates = 1 + weight = 3 + cost = 10 + requirements = list(90,80,70,60,55,50,45,40,35,30) + high_population_requirement = 30 + repeatable = TRUE + +/datum/dynamic_ruleset/latejoin/bloodsucker/execute() + var/mob/M = pick(candidates) + assigned += M.mind + M.mind.special_role = antag_flag + if(mode.make_bloodsucker(M.mind)) + mode.bloodsuckers += M + return TRUE diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm index abd40a1756..e5bb0af464 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -21,7 +21,6 @@ requirements = list(50,50,50,50,50,50,50,50,50,50) high_population_requirement = 40 antag_cap = list(1,1,1,1,2,2,2,2,3,3) - property_weights = list("story_potential" = 2, "trust" = -1, "extended" = 1, "valid" = 1) always_max_weight = TRUE var/autotraitor_cooldown = 450 // 15 minutes (ticks once per 2 sec) @@ -62,7 +61,6 @@ requirements = list(101,101,101,101,101,101,101,101,101,101) high_population_requirement = 101 antag_cap = list(2,2,2,2,2,2,2,2,2,2) // Can pick 3 per team, but rare enough it doesn't matter. - property_weights = list("story_potential" = 1, "trust" = -1, "extended" = 1, "valid" = 1) var/list/datum/team/brother_team/pre_brother_teams = list() var/const/min_team_size = 2 @@ -110,7 +108,6 @@ cost = 15 scaling_cost = 15 requirements = list(101,101,101,101,101,101,101,101,101,101) - property_weights = list("trust" = -2, "valid" = 2) high_population_requirement = 10 antag_cap = list(1,1,1,1,1,2,2,2,2,3) var/team_mode_probability = 30 @@ -163,7 +160,6 @@ cost = 30 requirements = list(101,101,101,60,50,50,50,50,50,50) high_population_requirement = 50 - property_weights = list("story_potential" = 2, "trust" = 1, "chaos" = 2, "extended" = -2, "valid" = 2) var/list/roundstart_wizards = list() /datum/dynamic_ruleset/roundstart/wizard/acceptable(population=0, threat=0) @@ -226,7 +222,6 @@ weight = 3 cost = 30 requirements = list(101,101,101,80,70,60,50,50,50,50) - property_weights = list("story_potential" = -1, "trust" = -1, "chaos" = 1, "conversion" = 1, "extended" = -2, "valid" = 2) high_population_requirement = 50 flags = HIGHLANDER_RULESET antag_cap = list(2,2,2,3,3,4,4,4,4,4) @@ -288,7 +283,6 @@ high_population_requirement = 50 flags = HIGHLANDER_RULESET antag_cap = list(1,1,2,3,4,5,5,5,5,5) - property_weights = list("story_potential" = 2, "trust" = 2, "chaos" = 2, "extended" = -2, "valid" = 2) var/datum/team/nuclear/nuke_team /datum/dynamic_ruleset/roundstart/nuclear/ready(forced = FALSE) @@ -379,7 +373,6 @@ flags = HIGHLANDER_RULESET // I give up, just there should be enough heads with 35 players... minimum_players = 35 - property_weights = list("trust" = -2, "chaos" = 2, "extended" = -2, "valid" = 2, "conversion" = 1) var/datum/team/revolution/revolution var/finished = FALSE @@ -497,7 +490,6 @@ weight = 3 cost = 0 requirements = list(101,101,101,101,101,101,101,101,101,101) - property_weights = list("extended" = 2) high_population_requirement = 101 /datum/dynamic_ruleset/roundstart/extended/pre_execute() @@ -525,7 +517,6 @@ high_population_requirement = 50 flags = HIGHLANDER_RULESET antag_cap = list(2,3,3,4,4,4,4,4,4,4) - property_weights = list("trust" = 2, "chaos" = 2, "extended" = -2, "conversion" = 1, "valid" = 2) var/ark_time /datum/dynamic_ruleset/roundstart/clockcult/pre_execute() @@ -625,8 +616,6 @@ antag_leader_datum = /datum/antagonist/nukeop/leader/clownop requirements = list(101,101,101,101,101,101,101,101,101,101) high_population_requirement = 101 - property_weights = list("trust" = 2, "chaos" = 2, "extended" = -2, "story_potential" = 2, "valid" = 2) - /datum/dynamic_ruleset/roundstart/nuclear/clown_ops/pre_execute() . = ..() @@ -658,7 +647,6 @@ requirements = list(101,101,101,101,101,101,101,101,101,101) high_population_requirement = 101 antag_cap = list(1,1,1,2,2,2,3,3,3,4) - property_weights = list("extended" = 1) /datum/dynamic_ruleset/roundstart/devil/pre_execute() var/num_devils = antag_cap[indice_pop] @@ -710,7 +698,6 @@ cost = 0 requirements = list(101,101,101,101,101,101,101,101,101,101) high_population_requirement = 101 - property_weights = list("extended" = -2, "chaos" = 2, "conversion" = 1, "valid" = 2) var/players_per_carrier = 30 var/monkeys_to_win = 1 var/escaped_monkeys = 0 @@ -772,7 +759,6 @@ cost = 0 requirements = list(101,101,101,101,101,101,101,101,101,101) high_population_requirement = 101 - property_weights = list("extended" = -2, "chaos" = 2, "trust" = 2) var/meteordelay = 2000 var/nometeors = 0 var/rampupdelta = 5 @@ -813,8 +799,7 @@ weight = 2 cost = 15 scaling_cost = 10 - property_weights = list("story_potential" = 1, "extended" = 1, "trust" = -2, "valid" = 1) - requirements = list(70,65,60,55,50,50,50,50,50,50) + requirements = list(90,80,70,60,50,50,50,50,50,50) high_population_requirement = 50 antag_cap = list(1,1,1,1,1,2,2,2,2,2) diff --git a/code/game/gamemodes/dynamic/dynamic_storytellers.dm b/code/game/gamemodes/dynamic/dynamic_storytellers.dm deleted file mode 100644 index afa6ed8ba7..0000000000 --- a/code/game/gamemodes/dynamic/dynamic_storytellers.dm +++ /dev/null @@ -1,235 +0,0 @@ -/datum/dynamic_storyteller - var/name = "none" - var/desc = "A coder's idiocy." - var/list/property_weights = list() - var/curve_centre = 0 - var/curve_width = 1.8 - var/forced_threat_level = -1 - var/flags = 0 - var/weight = 3 // how many rounds need to have been recently played for this storyteller to be left out of the vote - var/datum/game_mode/dynamic/mode = null - -/** -Property weights are: -"story_potential" -- essentially how many different ways the antag can be played. -"trust" -- How much it makes the crew trust each other. Negative values means they're suspicious. Team antags are like this. -"chaos" -- How chaotic it makes the round. Has some overlap with "valid" and somewhat contradicts "extended". -"valid" -- How likely the non-antag-enemy crew are to get involved, e.g. nukies encouraging the warden to - let everyone into the armory, wizard moving around and being a nuisance, nightmare busting lights. -"extended" -- How much the antag is conducive to a long round. Nukies and cults are bad for this; Wizard is less bad; and so on. -"conversion" -- Basically a bool. Conversion antags, well, convert. It's its own class for a good reason. -*/ - -/datum/dynamic_storyteller/New() - ..() - if (istype(SSticker.mode, /datum/game_mode/dynamic)) - mode = SSticker.mode - GLOB.dynamic_curve_centre = curve_centre - GLOB.dynamic_curve_width = curve_width - GLOB.dynamic_forced_threat_level = forced_threat_level - -/datum/dynamic_storyteller/proc/start_injection_cooldowns() - var/latejoin_injection_cooldown_middle = 0.5*(GLOB.dynamic_first_latejoin_delay_max + GLOB.dynamic_first_latejoin_delay_min) - mode.latejoin_injection_cooldown = round(CLAMP(EXP_DISTRIBUTION(latejoin_injection_cooldown_middle), GLOB.dynamic_first_latejoin_delay_min, GLOB.dynamic_first_latejoin_delay_max)) + world.time - - var/midround_injection_cooldown_middle = 0.5*(GLOB.dynamic_first_midround_delay_min + GLOB.dynamic_first_midround_delay_max) - mode.midround_injection_cooldown = round(CLAMP(EXP_DISTRIBUTION(midround_injection_cooldown_middle), GLOB.dynamic_first_midround_delay_min, GLOB.dynamic_first_midround_delay_max)) + world.time - - var/event_injection_cooldown_middle = 0.5*(GLOB.dynamic_event_delay_max + GLOB.dynamic_event_delay_min) - mode.event_injection_cooldown = (round(CLAMP(EXP_DISTRIBUTION(event_injection_cooldown_middle), GLOB.dynamic_event_delay_min, GLOB.dynamic_event_delay_max)) + world.time) - -/datum/dynamic_storyteller/proc/do_process() - return - -/datum/dynamic_storyteller/proc/on_start() - return - -/datum/dynamic_storyteller/proc/get_midround_cooldown() - var/midround_injection_cooldown_middle = 0.5*(GLOB.dynamic_midround_delay_max + GLOB.dynamic_midround_delay_min) - return round(CLAMP(EXP_DISTRIBUTION(midround_injection_cooldown_middle), GLOB.dynamic_midround_delay_min, GLOB.dynamic_midround_delay_max)) - -/datum/dynamic_storyteller/proc/get_event_cooldown() - var/event_injection_cooldown_middle = 0.5*(GLOB.dynamic_event_delay_max + GLOB.dynamic_event_delay_min) - return round(CLAMP(EXP_DISTRIBUTION(event_injection_cooldown_middle), GLOB.dynamic_event_delay_min, GLOB.dynamic_event_delay_max)) - -/datum/dynamic_storyteller/proc/get_latejoin_cooldown() - var/latejoin_injection_cooldown_middle = 0.5*(GLOB.dynamic_latejoin_delay_max + GLOB.dynamic_latejoin_delay_min) - return round(CLAMP(EXP_DISTRIBUTION(latejoin_injection_cooldown_middle), GLOB.dynamic_latejoin_delay_min, GLOB.dynamic_latejoin_delay_max)) - -/datum/dynamic_storyteller/proc/get_injection_chance(dry_run = FALSE) - if(mode.forced_injection) - mode.forced_injection = !dry_run - return 100 - var/chance = 0 - // If the high pop override is in effect, we reduce the impact of population on the antag injection chance - var/high_pop_factor = (mode.current_players[CURRENT_LIVING_PLAYERS].len >= GLOB.dynamic_high_pop_limit) - var/max_pop_per_antag = max(5,15 - round(mode.threat_level/10) - round(mode.current_players[CURRENT_LIVING_PLAYERS].len/(high_pop_factor ? 10 : 5))) - if (!mode.current_players[CURRENT_LIVING_ANTAGS].len) - chance += 80 // No antags at all? let's boost those odds! - else - var/current_pop_per_antag = mode.current_players[CURRENT_LIVING_PLAYERS].len / mode.current_players[CURRENT_LIVING_ANTAGS].len - if (current_pop_per_antag > max_pop_per_antag) - chance += min(50, 25+10*(current_pop_per_antag-max_pop_per_antag)) - else - chance += 25-10*(max_pop_per_antag-current_pop_per_antag) - if (mode.current_players[CURRENT_DEAD_PLAYERS].len > mode.current_players[CURRENT_LIVING_PLAYERS].len) - chance -= 30 // More than half the crew died? ew, let's calm down on antags - if (mode.threat > 70) - chance += 15 - if (mode.threat < 30) - chance -= 15 - return round(max(0,chance)) - -/datum/dynamic_storyteller/proc/roundstart_draft() - var/list/drafted_rules = list() - for (var/datum/dynamic_ruleset/roundstart/rule in mode.roundstart_rules) - if (rule.acceptable(mode.roundstart_pop_ready, mode.threat_level) && mode.threat >= rule.cost) // If we got the population and threat required - rule.candidates = mode.candidates.Copy() - rule.trim_candidates() - if (rule.ready() && rule.candidates.len > 0) - var/property_weight = 0 - for(var/property in property_weights) - if(property in rule.property_weights) // just treat it as 0 if it's not in there - property_weight += rule.property_weights[property] * property_weights[property] - drafted_rules[rule] = (rule.get_weight() + property_weight)*rule.weight_mult - return drafted_rules - -/datum/dynamic_storyteller/proc/midround_draft() - var/list/drafted_rules = list() - for (var/datum/dynamic_ruleset/midround/rule in mode.midround_rules) - // if there are antags OR the rule is an antag rule, antag_acceptable will be true. - if (rule.acceptable(mode.current_players[CURRENT_LIVING_PLAYERS].len, mode.threat_level) && mode.threat >= rule.cost) - // Classic secret : only autotraitor/minor roles - if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET) || (rule.flags & MINOR_RULESET))) - continue - rule.trim_candidates() - if (rule.ready()) - var/property_weight = 0 - for(var/property in property_weights) - if(property in rule.property_weights) - property_weight += rule.property_weights[property] * property_weights[property] - drafted_rules[rule] = (rule.get_weight() + property_weight)*rule.weight_mult - else if(mode.threat < rule.cost) - SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough threat to spend") - return drafted_rules - -/datum/dynamic_storyteller/proc/latejoin_draft(mob/living/carbon/human/newPlayer) - var/list/drafted_rules = list() - for (var/datum/dynamic_ruleset/latejoin/rule in mode.latejoin_rules) - if (rule.acceptable(mode.current_players[CURRENT_LIVING_PLAYERS].len, mode.threat_level) && mode.threat >= rule.cost) - // Classic secret : only autotraitor/minor roles - if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET) || (rule.flags & MINOR_RULESET))) - continue - // No stacking : only one round-ender, unless threat level > stacking_limit. - if (mode.threat_level > GLOB.dynamic_stacking_limit && GLOB.dynamic_no_stacking) - if(rule.flags & HIGHLANDER_RULESET && mode.highlander_executed) - continue - - rule.candidates = list(newPlayer) - rule.trim_candidates() - if (rule.ready()) - var/property_weight = 0 - for(var/property in property_weights) - if(property in rule.property_weights) - property_weight += rule.property_weights[property] * property_weights[property] - drafted_rules[rule] = (rule.get_weight() + property_weight)*rule.weight_mult - else if(mode.threat < rule.cost) - SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough threat to spend") - return drafted_rules - -/datum/dynamic_storyteller/proc/event_draft() - var/list/drafted_rules = list() - for(var/datum/dynamic_ruleset/event/rule in mode.events) - if(rule.acceptable(mode.current_players[CURRENT_LIVING_PLAYERS].len, mode.threat_level) && mode.threat >= rule.cost) - if(rule.ready()) - var/property_weight = 0 - for(var/property in property_weights) - if(property in rule.property_weights) - property_weight += rule.property_weights[property] * property_weights[property] - drafted_rules[rule] = (rule.get_weight() + property_weight)*rule.weight_mult - else if(mode.threat < rule.cost) - SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough threat to spend") - return drafted_rules - - -/datum/dynamic_storyteller/cowabunga - name = "Chaotic" - curve_centre = 10 - desc = "Chaos: high. Variation: high. Likely antags: clock cult, revs, wizard." - property_weights = list("extended" = -1, "chaos" = 10) - weight = 2 - flags = WAROPS_ALWAYS_ALLOWED - var/refund_cooldown - -/datum/dynamic_storyteller/cowabunga/get_midround_cooldown() - return ..() / 4 - -/datum/dynamic_storyteller/cowabunga/get_latejoin_cooldown() - return ..() / 4 - -/datum/dynamic_storyteller/cowabunga/do_process() - if(refund_cooldown < world.time) - mode.refund_threat(10) - mode.log_threat("Cowabunga it is. Refunded 10 threat. Threat is now [mode.threat].") - refund_cooldown = world.time + 300 SECONDS - -/datum/dynamic_storyteller/team - name = "Teamwork" - desc = "Chaos: high. Variation: low. Likely antags: nukies, clockwork cult, wizard, blob, xenomorph." - curve_centre = 2 - curve_width = 1.5 - weight = 2 - flags = WAROPS_ALWAYS_ALLOWED - property_weights = list("valid" = 3, "trust" = 5) - -/datum/dynamic_storyteller/team/get_injection_chance(dry_run = FALSE) - return (mode.current_players[CURRENT_LIVING_ANTAGS].len ? 0 : ..()) - -/datum/dynamic_storyteller/conversion - name = "Conversion" - desc = "Chaos: high. Variation: medium. Likely antags: cults, bloodsuckers, revs." - curve_centre = 3 - curve_width = 1 - weight = 2 - flags = WAROPS_ALWAYS_ALLOWED - property_weights = list("valid" = 1, "conversion" = 20) - -/datum/dynamic_storyteller/classic - name = "Random" - desc = "Chaos: varies. Variation: highest. No special weights attached." - weight = 6 - curve_width = 4 - -/datum/dynamic_storyteller/memes - name = "Story" - desc = "Chaos: varies. Variation: high. Likely antags: abductors, nukies, wizard, traitor." - curve_width = 4 - property_weights = list("story_potential" = 10) - -/datum/dynamic_storyteller/suspicion - name = "Intrigue" - desc = "Chaos: low. Variation: high. Likely antags: traitor, bloodsucker. Rare: revs, blood cult." - curve_width = 4 - property_weights = list("trust" = -5) - -/datum/dynamic_storyteller/liteextended - name = "Calm" - desc = "Chaos: low. Variation: medium. Likely antags: bloodsuckers, traitors, sentient disease, revenant." - curve_centre = -5 - curve_width = 0.5 - flags = NO_ASSASSIN - weight = 2 - property_weights = list("extended" = 1, "chaos" = -1, "valid" = -1, "story_potential" = 1, "conversion" = -10) - -/datum/dynamic_storyteller/liteextended/get_injection_chance(dry_run = FALSE) - return ..()/2 - -/datum/dynamic_storyteller/extended - name = "Extended" - desc = "Chaos: none. Variation: none. Likely antags: none." - curve_centre = -20 - weight = 2 - curve_width = 0.5 - -/datum/dynamic_storyteller/extended/on_start() - GLOB.dynamic_forced_extended = TRUE diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 4fd4a7929d..520721560a 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -14,14 +14,14 @@ circuit = /obj/item/circuitboard/machine/sleeper req_access = list(ACCESS_CMO) //Used for reagent deletion and addition of non medicines var/efficiency = 1 - var/min_health = 30 + var/min_health = -25 var/list/available_chems var/controls_inside = FALSE var/list/possible_chems = list( - list(/datum/reagent/medicine/epinephrine, /datum/reagent/medicine/morphine, /datum/reagent/medicine/salbutamol, /datum/reagent/medicine/bicaridine, /datum/reagent/medicine/kelotane), - list(/datum/reagent/medicine/oculine,/datum/reagent/medicine/inacusiate), - list(/datum/reagent/medicine/antitoxin, /datum/reagent/medicine/mutadone, /datum/reagent/medicine/mannitol, /datum/reagent/medicine/pen_acid), - list(/datum/reagent/medicine/omnizine) + list("epinephrine", "morphine", "salbutamol", "bicaridine", "kelotane"), + list("oculine","inacusiate"), + list("antitoxin", "mutadone", "mannitol", "pen_acid"), + list("omnizine") ) var/list/chem_buttons //Used when emagged to scramble which chem is used, eg: antitoxin -> morphine var/scrambled_chems = FALSE //Are chem buttons scrambled? used as a warning @@ -106,7 +106,7 @@ return if(is_operational() && occupant) var/datum/reagent/R = pick(reagents.reagent_list) - inject_chem(R.type, occupant) + inject_chem(R.id, occupant) open_machine() //Is this too much? if(severity == EMP_HEAVY) @@ -217,9 +217,9 @@ for(var/chem in available_chems) var/datum/reagent/R = reagents.has_reagent(chem) R = GLOB.chemical_reagents_list[chem] - data["synthchems"] += list(list("name" = R.name, "id" = R.type, "synth_allowed" = synth_allowed(chem))) + data["synthchems"] += list(list("name" = R.name, "id" = R.id, "synth_allowed" = synth_allowed(chem))) for(var/datum/reagent/R in reagents.reagent_list) - data["chems"] += list(list("name" = R.name, "id" = R.type, "vol" = R.volume, "purity" = R.purity, "allowed" = chem_allowed(R.type))) + data["chems"] += list(list("name" = R.name, "id" = R.id, "vol" = R.volume, "purity" = R.purity, "allowed" = chem_allowed(R.id))) data["occupant"] = list() var/mob/living/mob_occupant = occupant @@ -289,23 +289,23 @@ open_machine() . = TRUE if("inject") - var/chem = text2path(params["chem"]) + var/chem = params["chem"] var/amount = text2num(params["volume"]) - if(!is_operational() || !mob_occupant || isnull(chem)) + if(!is_operational() || !mob_occupant) return - if(mob_occupant.health < min_health && chem != /datum/reagent/medicine/epinephrine) + if(mob_occupant.health < min_health && chem != "epinephrine") return if(inject_chem(chem, usr, amount)) . = TRUE if(scrambled_chems && prob(5)) to_chat(usr, "Chemical system re-route detected, results may not be as expected!") if("synth") - var/chem = text2path(params["chem"]) + var/chem = params["chem"] if(!is_operational()) return reagents.add_reagent(chem_buttons[chem], 10) //other_purity = 0.75 for when the mechanics are in if("purge") - var/chem = text2path(params["chem"]) + var/chem = params["chem"] if(allowed(usr)) if(!is_operational()) return @@ -342,7 +342,7 @@ if(!mob_occupant || !mob_occupant.reagents) return var/amount = mob_occupant.reagents.get_reagent_amount(chem) + 10 <= 20 * efficiency - var/occ_health = mob_occupant.health > min_health || chem == /datum/reagent/medicine/epinephrine + var/occ_health = mob_occupant.health > min_health || chem == "epinephrine" return amount && occ_health /obj/machinery/sleeper/proc/synth_allowed(chem) diff --git a/code/game/machinery/bloodbankgen.dm b/code/game/machinery/bloodbankgen.dm index 948e9b98f9..c92e55084d 100644 --- a/code/game/machinery/bloodbankgen.dm +++ b/code/game/machinery/bloodbankgen.dm @@ -123,15 +123,15 @@ if(reagents.total_volume >= reagents.maximum_volume || !bag || !bag.reagents.total_volume) beep_stop_pumping() return - var/blood_amount = bag.reagents.get_reagent_amount(/datum/reagent/blood) + var/blood_amount = bag.reagents.get_reagent_amount("blood") //monitor the machine and blood bag's reagents storage. var/amount = min(blood_amount, min(transfer_amount, reagents.maximum_volume - reagents.total_volume)) if(!amount) beep_stop_pumping() return var/bonus = bag.blood_type == "SY" ? 0 : 5 * efficiency //no infinite loops using synthetics. - reagents.add_reagent(/datum/reagent/blood/synthetics, amount + bonus) - bag.reagents.remove_reagent(/datum/reagent/blood, amount) + reagents.add_reagent("syntheticblood", amount + bonus) + bag.reagents.remove_reagent("blood", amount) update_icon() if(filling) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 97b260f3bf..e683d67be2 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -155,8 +155,6 @@ mess = TRUE update_icon() return FALSE - if(isvamp(clonemind)) //If the mind is a bloodsucker - return FALSE attempting = TRUE //One at a time!! countdown.start() diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index 7330ae26e7..394cc4593d 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -88,7 +88,7 @@ occupant_status += "" occupant_status += "
    Health:
    [viable_occupant.health] %
    " occupant_status += "
    Radiation Level:
    [viable_occupant.radiation/(RAD_MOB_SAFE/100)] %
    " - var/rejuvenators = viable_occupant.reagents.get_reagent_amount(/datum/reagent/medicine/potass_iodide) + var/rejuvenators = viable_occupant.reagents.get_reagent_amount("potass_iodide") occupant_status += "
    Rejuvenators:
    [rejuvenators] units
    " occupant_status += "
    Unique Enzymes :
    [viable_occupant.dna.unique_enzymes]
    " occupant_status += "
    Last Operation:
    [last_change ? last_change : "----"]
    " @@ -342,9 +342,9 @@ current_screen = href_list["text"] if("rejuv") if(viable_occupant && viable_occupant.reagents) - var/potassiodide_amount = viable_occupant.reagents.get_reagent_amount(/datum/reagent/medicine/potass_iodide) + var/potassiodide_amount = viable_occupant.reagents.get_reagent_amount("potass_iodide") var/can_add = max(min(REJUVENATORS_MAX - potassiodide_amount, REJUVENATORS_INJECT), 0) - viable_occupant.reagents.add_reagent(/datum/reagent/medicine/potass_iodide, can_add) + viable_occupant.reagents.add_reagent("potass_iodide", can_add) if("setbufferlabel") var/text = sanitize(input(usr, "Input a new label:", "Input an Text", null) as text|null) if(num && text) diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index e9d3006b06..98dd91d3bd 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -491,4 +491,4 @@ //Attacks/effects. /obj/machinery/cryopod/blob_act() - return //Sorta gamey, but we don't really want these to be destroyed. + return //Sorta gamey, but we don't really want these to be destroyed. \ No newline at end of file diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 03c1bb3bc8..52b52eb288 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -180,7 +180,7 @@ limit-- while(!FoundDoor && limit) if (!FoundDoor) - log_mapping("[src] at [AREACOORD(src)] failed to find a valid airlock to cyclelink with!") + log_world("### MAP WARNING, [src] at [AREACOORD(src)] failed to find a valid airlock to cyclelink with!") return FoundDoor.cyclelinkedairlock = src cyclelinkedairlock = FoundDoor diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm index 65f7602215..1c25c7b242 100644 --- a/code/game/machinery/doppler_array.dm +++ b/code/game/machinery/doppler_array.dm @@ -7,51 +7,26 @@ GLOBAL_LIST_EMPTY(doppler_arrays) icon_state = "tdoppler" density = TRUE var/integrated = FALSE - var/list_limit = 100 - var/cooldown = 10 - var/next_announce = 0 var/max_dist = 150 verb_say = "states coldly" - var/list/message_log = list() /obj/machinery/doppler_array/Initialize() . = ..() GLOB.doppler_arrays += src /obj/machinery/doppler_array/ComponentInitialize() - . = ..() AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE,null,null,CALLBACK(src,.proc/rot_message)) /obj/machinery/doppler_array/Destroy() GLOB.doppler_arrays -= src return ..() -/obj/machinery/doppler_array/ui_interact(mob/user) +/obj/machinery/doppler_array/examine(mob/user) . = ..() - if(stat) - return FALSE + . += "Its dish is facing to the [dir2text(dir)]." - var/list/dat = list() - for(var/i in 1 to LAZYLEN(message_log)) - dat += "Log recording #[i]: [message_log[i]]

    " - dat += "Delete logs
    " - dat += "
    " - dat += "(Refresh)
    " - dat += "" - var/datum/browser/popup = new(user, "computer", name, 400, 500) - popup.set_content(dat.Join(" ")) - popup.open() - -/obj/machinery/doppler_array/Topic(href, href_list) - if(..()) - return - if(href_list["delete_log"]) - LAZYCLEARLIST(message_log) - if(href_list["refresh"]) - updateUsrDialog() - - updateUsrDialog() - return +/obj/machinery/doppler_array/process() + return PROCESS_KILL /obj/machinery/doppler_array/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/wrench)) @@ -71,18 +46,15 @@ GLOBAL_LIST_EMPTY(doppler_arrays) to_chat(user, "You adjust [src]'s dish to face to the [dir2text(dir)].") playsound(src, 'sound/items/screwdriver2.ogg', 50, 1) -/obj/machinery/doppler_array/proc/sense_explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, - took, orig_dev_range, orig_heavy_range, orig_light_range) +/obj/machinery/doppler_array/proc/sense_explosion(turf/epicenter,devastation_range,heavy_impact_range,light_impact_range, + took,orig_dev_range,orig_heavy_range,orig_light_range) if(stat & NOPOWER) return FALSE var/turf/zone = get_turf(src) + if(zone.z != epicenter.z) return FALSE - if(next_announce > world.time) - return FALSE - next_announce = world.time + cooldown - var/distance = get_dist(epicenter, zone) var/direct = get_dir(zone, epicenter) @@ -108,19 +80,8 @@ GLOBAL_LIST_EMPTY(doppler_arrays) else for(var/message in messages) say(message) - if(LAZYLEN(message_log) > list_limit) - say("Storage buffer is full! Clearing buffers...") - LAZYCLEARLIST(message_log) - LAZYADD(message_log, messages.Join(" ")) return TRUE -/obj/machinery/doppler_array/examine(mob/user) - . = ..() - . += "Its dish is facing to the [dir2text(dir)]." - -/obj/machinery/doppler_array/process() - return PROCESS_KILL - /obj/machinery/doppler_array/power_change() if(stat & BROKEN) icon_state = "[initial(icon_state)]-broken" diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 8f7fce8e3e..71f39608b5 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -256,6 +256,7 @@ return return ..() + /obj/machinery/firealarm/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) . = ..() if(.) //damage received diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index b1783ba940..1e7d720ee9 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -500,7 +500,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ else return FALSE -/obj/machinery/holopad/proc/move_hologram(mob/living/user, turf/new_turf, direction) +/obj/machinery/holopad/proc/move_hologram(mob/living/user, turf/new_turf) if(LAZYLEN(masters) && masters[user]) var/obj/effect/overlay/holo_pad_hologram/holo = masters[user] var/transfered = FALSE @@ -512,8 +512,6 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ transfered = TRUE //All is good. holo.forceMove(new_turf) - if(direction) - holo.setDir(direction) if(!transfered) update_holoray(user,new_turf) return TRUE diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index 6d19776d86..aee1cf4f69 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -222,21 +222,5 @@ . += "\t[attached ? attached : "No one"] is attached." -/obj/machinery/iv_drip/telescopic - name = "telescopic IV drip" - desc = "An IV drip with an advanced infusion pump that can both drain blood into and inject liquids from attached containers. Blood packs are processed at an accelerated rate. This one is telescopic, and can be picked up and put down." - icon_state = "iv_drip" - -/obj/machinery/iv_drip/telescopic/update_icon() - ..() - icon_state = icon_state + "_tele" - -/obj/machinery/iv_drip/telescopic/AltClick(mob/user) - if (attached || beaker || !user.canUseTopic(src, BE_CLOSE)) - return ..() - new /obj/item/tele_iv(get_turf(src)) - qdel(src) - return TRUE - #undef IV_TAKING -#undef IV_INJECTING +#undef IV_INJECTING \ No newline at end of file diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm index bf9400219b..794509801b 100644 --- a/code/game/machinery/limbgrower.dm +++ b/code/game/machinery/limbgrower.dm @@ -89,7 +89,7 @@ selected_category = href_list["category"] if(href_list["disposeI"]) //Get rid of a reagent incase you add the wrong one by mistake - reagents.del_reagent(text2path(href_list["disposeI"])) + reagents.del_reagent(href_list["disposeI"]) if(href_list["make"]) @@ -100,10 +100,10 @@ return - var/synth_cost = being_built.reagents_list[/datum/reagent/medicine/synthflesh]*prod_coeff + var/synth_cost = being_built.reagents_list["synthflesh"]*prod_coeff var/power = max(2000, synth_cost/5) - if(reagents.has_reagent(/datum/reagent/medicine/synthflesh, being_built.reagents_list[/datum/reagent/medicine/synthflesh]*prod_coeff)) + if(reagents.has_reagent("synthflesh", being_built.reagents_list["synthflesh"]*prod_coeff)) busy = TRUE use_power(power) flick("limbgrower_fill",src) @@ -117,8 +117,8 @@ return /obj/machinery/limbgrower/proc/build_item() - if(reagents.has_reagent(/datum/reagent/medicine/synthflesh, being_built.reagents_list[/datum/reagent/medicine/synthflesh]*prod_coeff)) //sanity check, if this happens we are in big trouble - reagents.remove_reagent(/datum/reagent/medicine/synthflesh, being_built.reagents_list[/datum/reagent/medicine/synthflesh]*prod_coeff) + if(reagents.has_reagent("synthflesh", being_built.reagents_list["synthflesh"]*prod_coeff)) //sanity check, if this happens we are in big trouble + reagents.remove_reagent("synthflesh",being_built.reagents_list["synthflesh"]*prod_coeff) var/buildpath = being_built.build_path if(ispath(buildpath, /obj/item/bodypart)) //This feels like spatgheti code, but i need to initilise a limb somehow build_limb(buildpath) @@ -198,7 +198,7 @@ for(var/datum/reagent/R in reagents.reagent_list) dat += "[R.name]: [R.volume]" - dat += "Purge
    " + dat += "Purge
    " dat += "" return dat @@ -208,12 +208,12 @@ return dat /obj/machinery/limbgrower/proc/can_build(datum/design/D) - return (reagents.has_reagent(/datum/reagent/medicine/synthflesh, D.reagents_list[/datum/reagent/medicine/synthflesh]*prod_coeff)) //Return whether the machine has enough synthflesh to produce the design + return (reagents.has_reagent("synthflesh", D.reagents_list["synthflesh"]*prod_coeff)) //Return whether the machine has enough synthflesh to produce the design /obj/machinery/limbgrower/proc/get_design_cost(datum/design/D) var/dat if(D.reagents_list["synthflesh"]) - dat += "[D.reagents_list[/datum/reagent/medicine/synthflesh] * prod_coeff] Synthetic flesh " + dat += "[D.reagents_list["synthflesh"] * prod_coeff] Synthetic flesh " return dat /obj/machinery/limbgrower/emag_act(mob/user) diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index c0f563d44d..4ed541ef10 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -18,28 +18,6 @@ . = ..() update_icon() -/obj/machinery/recharge_station/upgraded - -/obj/machinery/recharge_station/upgraded/Initialize() - . = ..() - component_parts = list() - component_parts += new /obj/item/circuitboard/machine/cyborgrecharger(null) - component_parts += new /obj/item/stock_parts/capacitor/super(null) - component_parts += new /obj/item/stock_parts/manipulator/pico(null) - component_parts += new /obj/item/stock_parts/cell/hyper(null) - RefreshParts() - -/obj/machinery/recharge_station/fullupgrade - -/obj/machinery/recharge_station/fullupgrade/Initialize() - . = ..() - component_parts = list() - component_parts += new /obj/item/circuitboard/machine/cyborgrecharger(null) - component_parts += new /obj/item/stock_parts/capacitor/quadratic(null) - component_parts += new /obj/item/stock_parts/manipulator/femto(null) - component_parts += new /obj/item/stock_parts/cell/bluespace(null) - RefreshParts() - /obj/machinery/recharge_station/RefreshParts() recharge_speed = 0 repairs = 0 diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 4d6c94ac88..ae3fdb15b4 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -191,11 +191,11 @@ if(!R || !patient || !SG || !(SG in chassis.equipment)) return 0 var/to_inject = min(R.volume, inject_amount) - if(to_inject && patient.reagents.get_reagent_amount(R.type) + to_inject <= inject_amount*2) + if(to_inject && patient.reagents.get_reagent_amount(R.id) + to_inject <= inject_amount*2) occupant_message("Injecting [patient] with [to_inject] units of [R.name].") log_message("Injecting [patient] with [to_inject] units of [R.name].") log_combat(chassis.occupant, patient, "injected", "[name] ([R] - [to_inject] units)") - SG.reagents.trans_id_to(patient,R.type,to_inject) + SG.reagents.trans_id_to(patient,R.id,to_inject) update_equip_info() return @@ -228,8 +228,8 @@ M.AdjustStun(-80) M.AdjustKnockdown(-80) M.AdjustUnconscious(-80) - if(M.reagents.get_reagent_amount(/datum/reagent/medicine/epinephrine) < 5) - M.reagents.add_reagent(/datum/reagent/medicine/epinephrine, 5) + if(M.reagents.get_reagent_amount("epinephrine") < 5) + M.reagents.add_reagent("epinephrine", 5) chassis.use_power(energy_drain) update_equip_info() @@ -259,7 +259,7 @@ . = ..() create_reagents(max_volume, NO_REACT) syringes = new - known_reagents = list(/datum/reagent/medicine/epinephrine = "Epinephrine", /datum/reagent/medicine/charcoal = "Charcoal") + known_reagents = list("epinephrine"="Epinephrine","charcoal"="Charcoal") processed_reagents = new /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/detach() @@ -330,7 +330,8 @@ if(M.can_inject(null, 1)) if(mechsyringe.reagents) for(var/datum/reagent/A in mechsyringe.reagents.reagent_list) - R += "[A.name] ([num2text(A.volume)]" + R += A.id + " (" + R += num2text(A.volume) + ")," mechsyringe.icon_state = initial(mechsyringe.icon_state) mechsyringe.icon = initial(mechsyringe.icon) mechsyringe.reagents.reaction(M, INJECT) @@ -444,7 +445,7 @@ var/output for(var/datum/reagent/R in reagents.reagent_list) if(R.volume > 0) - output += "[R]: [round(R.volume,0.001)] - Purge Reagent
    " + output += "[R]: [round(R.volume,0.001)] - Purge Reagent
    " if(output) output += "Total: [round(reagents.total_volume,0.001)]/[reagents.maximum_volume] - Purge All" return output || "None" @@ -480,7 +481,7 @@ return 0 occupant_message("Analyzing reagents...") for(var/datum/reagent/R in A.reagents.reagent_list) - if(R.can_synth && add_known_reagent(R.type,R.name)) + if(R.can_synth && add_known_reagent(R.id,R.name)) occupant_message("Reagent analyzed, identified as [R.name] and added to database.") send_byjax(chassis.occupant,"msyringegun.browser","reagents_form",get_reagents_form()) occupant_message("Analyzis complete.") diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index 30576a739d..36708fcf90 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -171,7 +171,7 @@ /obj/item/mecha_parts/mecha_equipment/extinguisher/Initialize() . = ..() create_reagents(1000) - reagents.add_reagent(/datum/reagent/water, 1000) + reagents.add_reagent("water", 1000) /obj/item/mecha_parts/mecha_equipment/extinguisher/action(atom/target) //copypasted from extinguisher. TODO: Rewrite from scratch. if(!action_checks(target) || get_dist(chassis, target)>3) @@ -262,14 +262,14 @@ occupant_message("Deconstructing [W]...") if(do_after_cooldown(W)) chassis.spark_system.start() - W.ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + W.ScrapeAway() playsound(W, 'sound/items/deconstruct.ogg', 50, 1) else if(isfloorturf(target)) var/turf/open/floor/F = target occupant_message("Deconstructing [F]...") if(do_after_cooldown(target)) chassis.spark_system.start() - F.ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + F.ScrapeAway() playsound(F, 'sound/items/deconstruct.ogg', 50, 1) else if (istype(target, /obj/machinery/door/airlock)) occupant_message("Deconstructing [target]...") @@ -282,7 +282,7 @@ var/turf/open/space/S = target occupant_message("Building Floor...") if(do_after_cooldown(S)) - S.PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) + S.PlaceOnTop(/turf/open/floor/plating) playsound(S, 'sound/items/deconstruct.ogg', 50, 1) chassis.spark_system.start() else if(isfloorturf(target)) diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm index dd335e8b37..62a62b569d 100644 --- a/code/game/mecha/mecha_defense.dm +++ b/code/game/mecha/mecha_defense.dm @@ -286,10 +286,10 @@ /obj/mecha/proc/mech_toxin_damage(mob/living/target) playsound(src, 'sound/effects/spray2.ogg', 50, 1) if(target.reagents) - if(target.reagents.get_reagent_amount(/datum/reagent/cryptobiolin) + force < force*2) - target.reagents.add_reagent(/datum/reagent/cryptobiolin, force/2) - if(target.reagents.get_reagent_amount(/datum/reagent/toxin) + force < force*2) - target.reagents.add_reagent(/datum/reagent/toxin, force/2.5) + if(target.reagents.get_reagent_amount("cryptobiolin") + force < force*2) + target.reagents.add_reagent("cryptobiolin", force/2) + if(target.reagents.get_reagent_amount("toxin") + force < force*2) + target.reagents.add_reagent("toxin", force/2.5) /obj/mecha/mech_melee_attack(obj/mecha/M) diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 416644cada..9c3df5395f 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -107,7 +107,7 @@ //Wrapper procs that handle sanity and user feedback /atom/movable/proc/user_buckle_mob(mob/living/M, mob/user, check_loc = TRUE) - if(!in_range(user, src) || !isturf(user.loc) || user.incapacitated() || M.anchored || !user.can_buckle_others(M, src)) + if(!in_range(user, src) || !isturf(user.loc) || user.incapacitated() || M.anchored) return FALSE add_fingerprint(user) diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index 0c52f57ae9..a4d0da1bbe 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -9,7 +9,7 @@ /obj/effect/decal/cleanable/blood/gibs/xeno color = BLOOD_COLOR_XENO - gibs_reagent_id = /datum/reagent/liquidgibs/xeno + gibs_reagent_id = "liquidxenogibs" gibs_bloodtype = "X*" /obj/effect/decal/cleanable/blood/gibs/xeno/Initialize(mapload, list/datum/disease/diseases) diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index 9680dc2034..03eeca7d0b 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -6,7 +6,7 @@ random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") mergeable_decal = FALSE var/body_colors = "#e3ba84" //a default color just in case. - var/gibs_reagent_id = /datum/reagent/liquidgibs + var/gibs_reagent_id = "liquidgibs" var/gibs_bloodtype = "A+" /obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases) @@ -120,6 +120,7 @@ //Lizards /obj/effect/decal/cleanable/blood/gibs/human/lizard body_colors = "117720" + gibs_reagent_id = "liquidgibs" gibs_bloodtype = "L" /obj/effect/decal/cleanable/blood/gibs/human/lizard/Initialize(mapload, list/datum/disease/diseases) @@ -147,7 +148,7 @@ // Slime Gibs /obj/effect/decal/cleanable/blood/gibs/slime desc = "They look gooey and gruesome." - gibs_reagent_id = /datum/reagent/liquidgibs/slime + gibs_reagent_id = "liquidslimegibs" gibs_bloodtype = "GEL" /obj/effect/decal/cleanable/blood/gibs/slime/Initialize(mapload, list/datum/disease/diseases) @@ -186,7 +187,7 @@ /obj/effect/decal/cleanable/blood/gibs/synth desc = "They look sludgy and disgusting." - gibs_reagent_id = /datum/reagent/liquidgibs/synth + gibs_reagent_id = "liquidsyntheticgibs" gibs_bloodtype = "SY" /obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases) @@ -197,7 +198,7 @@ /obj/effect/decal/cleanable/blood/gibs/ipc desc = "They look sharp yet oozing." body_colors = "00ff00" - gibs_reagent_id = /datum/reagent/liquidgibs/oil + gibs_reagent_id = "liquidoilgibs" gibs_bloodtype = "HF" /obj/effect/decal/cleanable/blood/gibs/ipc/Initialize(mapload, list/datum/disease/diseases) diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index 6466ab594f..6f92e94759 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/misc.dm @@ -13,7 +13,7 @@ /obj/effect/decal/cleanable/ash/Initialize() . = ..() - reagents.add_reagent(/datum/reagent/ash, 30) + reagents.add_reagent("ash", 30) pixel_x = rand(-5, 5) pixel_y = rand(-5, 5) @@ -27,7 +27,7 @@ /obj/effect/decal/cleanable/ash/large/Initialize() . = ..() - reagents.add_reagent(/datum/reagent/ash, 30) //double the amount of ash. + reagents.add_reagent("ash", 30) //double the amount of ash. /obj/effect/decal/cleanable/glass name = "tiny shards" @@ -131,10 +131,12 @@ playsound(get_turf(src), 'sound/items/drink.ogg', 50, 1) //slurp H.visible_message("[H] extends a small proboscis into the vomit pool, sucking it with a slurping sound.") if(reagents) - for(var/datum/reagent/consumable/R in reagents.reagent_list) - if(R.nutriment_factor > 0) - H.nutrition += R.nutriment_factor * R.volume - reagents.del_reagent(R.type) + for(var/datum/reagent/R in reagents.reagent_list) + if (istype(R, /datum/reagent/consumable)) + var/datum/reagent/consumable/nutri_check = R + if(nutri_check.nutriment_factor >0) + H.nutrition += nutri_check.nutriment_factor * nutri_check.volume + reagents.remove_reagent(nutri_check.id,nutri_check.volume) reagents.trans_to(H, reagents.total_volume) qdel(src) diff --git a/code/game/objects/effects/decals/cleanable/robots.dm b/code/game/objects/effects/decals/cleanable/robots.dm index 3e94abbf93..02bf51bdd9 100644 --- a/code/game/objects/effects/decals/cleanable/robots.dm +++ b/code/game/objects/effects/decals/cleanable/robots.dm @@ -13,7 +13,7 @@ /obj/effect/decal/cleanable/robot_debris/Initialize(mapload, list/datum/disease/diseases) . = ..() - reagents.add_reagent(/datum/reagent/liquidgibs, 5) + reagents.add_reagent("liquidoilgibs", 5) /obj/effect/decal/cleanable/robot_debris/proc/streak(list/directions) set waitfor = 0 @@ -53,8 +53,8 @@ /obj/effect/decal/cleanable/oil/Initialize() . = ..() - reagents.add_reagent(/datum/reagent/oil, 30) - reagents.add_reagent(/datum/reagent/liquidgibs/oil, 5) + reagents.add_reagent("oil", 30) + reagents.add_reagent("liquidoilgibs", 5) /obj/effect/decal/cleanable/oil/streak random_icon_states = list("streak1", "streak2", "streak3", "streak4", "streak5") diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index da9c210234..10ee73915c 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -55,7 +55,7 @@ var/obj/effect/decal/cleanable/plasma/P = (locate(/obj/effect/decal/cleanable/plasma) in get_turf(src)) if(!P) P = new(loc) - P.reagents.add_reagent(/datum/reagent/stable_plasma, absorbed_plasma) + P.reagents.add_reagent("stable_plasma", absorbed_plasma) flick("[icon_state]-disolve", src) QDEL_IN(src, 5) @@ -123,7 +123,7 @@ if(metal) var/turf/T = get_turf(src) if(isspaceturf(T)) //Block up any exposed space - T.PlaceOnTop(/turf/open/floor/plating/foam, flags = CHANGETURF_INHERIT_AIR) + T.PlaceOnTop(/turf/open/floor/plating/foam) for(var/direction in GLOB.cardinals) var/turf/cardinal_turf = get_step(T, direction) if(get_area(cardinal_turf) != get_area(T)) //We're at an area boundary, so let's block off this turf! diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 0d4ca3d311..e01010baa5 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -435,7 +435,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player) //------Station Rooms Landmarks------------// /obj/effect/landmark/stationroom - var/list/templates = list() + var/list/template_names = list() layer = BULLET_HOLE_LAYER /obj/effect/landmark/stationroom/New() @@ -452,11 +452,11 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player) if(!T) return FALSE if(!template_name) - for(var/t in templates) + for(var/t in template_names) if(!SSmapping.station_room_templates[t]) log_world("Station room spawner placed at ([T.x], [T.y], [T.z]) has invalid ruin name of \"[t]\" in its list") - templates -= t - template_name = pickweight(templates) + template_names -= t + template_name = safepick(template_names) if(!template_name) GLOB.stationroom_landmarks -= src qdel(src) @@ -474,10 +474,10 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player) // The landmark for the Engine on Box /obj/effect/landmark/stationroom/box/engine - templates = list("Engine SM" = 3, "Engine Singulo" = 3, "Engine Tesla" = 3) + template_names = list("Engine SM", "Engine Singulo", "Engine Tesla") icon = 'icons/rooms/box/engine.dmi' /obj/effect/landmark/stationroom/box/engine/New() . = ..() - templates = CONFIG_GET(keyed_list/box_random_engine) + template_names = CONFIG_GET(keyed_list/box_random_engine) \ No newline at end of file diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index 91133234d6..08f698e018 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -136,7 +136,7 @@ victim.put_in_hands(chainsaw, forced = TRUE) chainsaw.attack_self(victim) chainsaw.wield(victim) - victim.reagents.add_reagent(/datum/reagent/medicine/adminordrazine,25) + victim.reagents.add_reagent("adminordrazine",25) to_chat(victim, "KILL, KILL, KILL! YOU HAVE NO ALLIES ANYMORE, KILL THEM ALL!") victim.client.color = pure_red diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index b50acb33af..c5d198c05f 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -52,7 +52,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/interaction_flags_item = INTERACT_ITEM_ATTACK_HAND_PICKUP //Citadel Edit for digitigrade stuff - var/mutantrace_variation = NONE //Are there special sprites for specific situations? Don't use this unless you need to. + var/mutantrace_variation = NO_MUTANTRACE_VARIATION //Are there special sprites for specific situations? Don't use this unless you need to. var/item_color = null //this needs deprecating, soonish @@ -578,22 +578,21 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) itempush = 0 //too light to push anything return A.hitby(src, 0, itempush) -/obj/item/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback, messy_throw = TRUE) +/obj/item/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback) thrownby = thrower - callback = CALLBACK(src, .proc/after_throw, callback, (spin && messy_throw)) //replace their callback with our own + callback = CALLBACK(src, .proc/after_throw, callback) //replace their callback with our own . = ..(target, range, speed, thrower, spin, diagonals_first, callback) -/obj/item/proc/after_throw(datum/callback/callback, messy_throw) +/obj/item/proc/after_throw(datum/callback/callback) if (callback) //call the original callback . = callback.Invoke() throw_speed = initial(throw_speed) //explosions change this. item_flags &= ~IN_INVENTORY - if(messy_throw) - var/matrix/M = matrix(transform) - M.Turn(rand(-170, 170)) - transform = M - pixel_x = rand(-8, 8) - pixel_y = rand(-8, 8) + var/matrix/M = matrix(transform) + M.Turn(rand(-170, 170)) + transform = M + pixel_x = rand(-8, 8) + pixel_y = rand(-8, 8) /obj/item/proc/remove_item_from_storage(atom/newLoc) //please use this if you're going to snowflake an item out of a obj/item/storage if(!newLoc) diff --git a/code/game/objects/items/RSF.dm b/code/game/objects/items/RSF.dm index ba0766de00..a68f2ecff6 100644 --- a/code/game/objects/items/RSF.dm +++ b/code/game/objects/items/RSF.dm @@ -182,7 +182,7 @@ RSF to_chat(user, "Fabricating Cookie..") var/obj/item/reagent_containers/food/snacks/cookie/S = new /obj/item/reagent_containers/food/snacks/cookie(T) if(toxin) - S.reagents.add_reagent(/datum/reagent/toxin/chloralhydrate, 10) + S.reagents.add_reagent("chloralhydrate", 10) if (iscyborg(user)) var/mob/living/silicon/robot/R = user R.cell.charge -= 100 diff --git a/code/game/objects/items/airlock_painter.dm b/code/game/objects/items/airlock_painter.dm index 083246396b..d8a21de35a 100644 --- a/code/game/objects/items/airlock_painter.dm +++ b/code/game/objects/items/airlock_painter.dm @@ -68,7 +68,7 @@ // make some colorful reagent, and apply it to the lungs L.create_reagents(10) - L.reagents.add_reagent(/datum/reagent/colorful_reagent, 10) + L.reagents.add_reagent("colorful_reagent", 10) L.reagents.reaction(L, TOUCH, 1) // TODO maybe add some colorful vomit? @@ -81,7 +81,7 @@ return (TOXLOSS|OXYLOSS) else if(can_use(user) && !L) user.visible_message("[user] is spraying toner on [user.p_them()]self from [src]! It looks like [user.p_theyre()] trying to commit suicide.") - user.reagents.add_reagent(/datum/reagent/colorful_reagent, 1) + user.reagents.add_reagent("colorful_reagent", 1) user.reagents.reaction(user, TOUCH, 1) return TOXLOSS diff --git a/code/game/objects/items/apc_frame.dm b/code/game/objects/items/apc_frame.dm index c725148d9a..25ae182253 100644 --- a/code/game/objects/items/apc_frame.dm +++ b/code/game/objects/items/apc_frame.dm @@ -120,4 +120,4 @@ flags_1 = CONDUCT_1 w_class = WEIGHT_CLASS_SMALL materials = list(MAT_METAL=50, MAT_GLASS=50) - grind_results = list(/datum/reagent/iron = 10, /datum/reagent/silicon = 10) + grind_results = list("iron" = 10, "silicon" = 10) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 3838f90f9b..cf8d38d9c9 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -25,7 +25,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/smoketime = 5 w_class = WEIGHT_CLASS_TINY heat = 1000 - grind_results = list(/datum/reagent/phosphorus = 2) + grind_results = list("phosphorus" = 2) /obj/item/match/process() smoketime-- @@ -113,7 +113,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/lastHolder = null var/smoketime = 300 var/chem_volume = 30 - var/list/list_reagents = list(/datum/reagent/drug/nicotine = 15) + var/list/list_reagents = list("nicotine" = 15) heat = 1000 /obj/item/clothing/mask/cigarette/suicide_act(mob/user) @@ -169,15 +169,15 @@ CIGARETTE PACKETS ARE IN FANCY.DM hitsound = 'sound/items/welder.ogg' damtype = "fire" force = 4 - if(reagents.get_reagent_amount(/datum/reagent/toxin/plasma)) // the plasma explodes when exposed to fire + if(reagents.get_reagent_amount("plasma")) // the plasma explodes when exposed to fire var/datum/effect_system/reagents_explosion/e = new() - e.set_up(round(reagents.get_reagent_amount(/datum/reagent/toxin/plasma) / 2.5, 1), get_turf(src), 0, 0) + e.set_up(round(reagents.get_reagent_amount("plasma") / 2.5, 1), get_turf(src), 0, 0) e.start() qdel(src) return - if(reagents.get_reagent_amount(/datum/reagent/fuel)) // the fuel explodes, too, but much less violently + if(reagents.get_reagent_amount("welding_fuel")) // the fuel explodes, too, but much less violently var/datum/effect_system/reagents_explosion/e = new() - e.set_up(round(reagents.get_reagent_amount(/datum/reagent/fuel) / 5, 1), get_turf(src), 0, 0) + e.set_up(round(reagents.get_reagent_amount("welding_fuel") / 5, 1), get_turf(src), 0, 0) e.start() qdel(src) return @@ -268,29 +268,29 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/cigarette/uplift desc = "An Uplift Smooth brand cigarette." - list_reagents = list(/datum/reagent/drug/nicotine = 7.5, /datum/reagent/consumable/menthol = 7.5) + list_reagents = list("nicotine" = 7.5, "menthol" = 7.5) /obj/item/clothing/mask/cigarette/robust desc = "A Robust brand cigarette." /obj/item/clothing/mask/cigarette/robustgold desc = "A Robust Gold brand cigarette." - list_reagents = list(/datum/reagent/drug/nicotine = 15, /datum/reagent/gold = 1) + list_reagents = list("nicotine" = 15, "gold" = 1) /obj/item/clothing/mask/cigarette/carp desc = "A Carp Classic brand cigarette." /obj/item/clothing/mask/cigarette/syndicate desc = "An unknown brand cigarette." - list_reagents = list(/datum/reagent/drug/nicotine = 15, /datum/reagent/medicine/omnizine = 15) + list_reagents = list("nicotine" = 15, "omnizine" = 15) /obj/item/clothing/mask/cigarette/shadyjims desc = "A Shady Jim's Super Slims cigarette." - list_reagents = list(/datum/reagent/drug/nicotine = 15, /datum/reagent/toxin/lipolicide = 4, /datum/reagent/ammonia = 2, /datum/reagent/toxin/plantbgone = 1, /datum/reagent/toxin = 1.5) + list_reagents = list("nicotine" = 15, "lipolicide" = 4, "ammonia" = 2, "plantbgone" = 1, "toxin" = 1.5) /obj/item/clothing/mask/cigarette/xeno desc = "A Xeno Filtered brand cigarette." - list_reagents = list (/datum/reagent/drug/nicotine = 20, /datum/reagent/medicine/regen_jelly = 15, /datum/reagent/drug/krokodil = 4) + list_reagents = list ("nicotine" = 20, "regen_jelly" = 15, "krokodil" = 4) // Rollies. @@ -313,17 +313,17 @@ CIGARETTE PACKETS ARE IN FANCY.DM src.pixel_y = rand(-5, 5) /obj/item/clothing/mask/cigarette/rollie/nicotine - list_reagents = list(/datum/reagent/drug/nicotine = 15) + list_reagents = list("nicotine" = 15) /obj/item/clothing/mask/cigarette/rollie/trippy - list_reagents = list(/datum/reagent/drug/nicotine = 15, /datum/reagent/drug/mushroomhallucinogen = 35) + list_reagents = list("nicotine" = 15, "mushroomhallucinogen" = 35) starts_lit = TRUE /obj/item/clothing/mask/cigarette/rollie/cannabis - list_reagents = list(/datum/reagent/drug/space_drugs = 15, /datum/reagent/toxin/lipolicide = 35) + list_reagents = list("space_drugs" = 15, "lipolicide" = 35) /obj/item/clothing/mask/cigarette/rollie/mindbreaker - list_reagents = list(/datum/reagent/toxin/mindbreaker = 35, /datum/reagent/toxin/lipolicide = 15) + list_reagents = list("mindbreaker" = 35, "lipolicide" = 15) /obj/item/cigbutt/roach name = "roach" @@ -377,7 +377,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon_state = "cigbutt" w_class = WEIGHT_CLASS_TINY throwforce = 0 - grind_results = list(/datum/reagent/carbon = 2) + grind_results = list("carbon" = 2) /obj/item/cigbutt/cigarbutt name = "cigar butt" @@ -506,7 +506,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM heat = 1500 resistance_flags = FIRE_PROOF light_color = LIGHT_COLOR_FIRE - grind_results = list(/datum/reagent/iron = 1, /datum/reagent/fuel = 5, /datum/reagent/oil = 5) + grind_results = list("iron" = 1, "welding_fuel" = 5, "oil" = 5) /obj/item/lighter/Initialize() . = ..() @@ -665,7 +665,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM heat = 3000 //Blue flame! light_color = LIGHT_COLOR_CYAN overlay_state = "slime" - grind_results = list(/datum/reagent/iron = 1, /datum/reagent/fuel = 5, /datum/reagent/medicine/pyroxadone = 5) + grind_results = list("iron" = 1, "welding_fuel" = 5, "pyroxadone" = 5) /////////// @@ -719,7 +719,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/vape/Initialize(mapload, param_color) . = ..() create_reagents(chem_volume, NO_REACT) // so it doesn't react until you light it - reagents.add_reagent(/datum/reagent/drug/nicotine, 50) + reagents.add_reagent("nicotine", 50) if(!icon_state) if(!param_color) param_color = pick("red","blue","black","white","green","purple","yellow","orange") @@ -810,14 +810,14 @@ CIGARETTE PACKETS ARE IN FANCY.DM reagents.reaction(C, INGEST, fraction) if(!reagents.trans_to(C, REAGENTS_METABOLISM)) reagents.remove_any(REAGENTS_METABOLISM) - if(reagents.get_reagent_amount(/datum/reagent/fuel)) + if(reagents.get_reagent_amount("welding_fuel")) //HOT STUFF C.fire_stacks = 2 C.IgniteMob() - if(reagents.get_reagent_amount(/datum/reagent/toxin/plasma)) // the plasma explodes when exposed to fire + if(reagents.get_reagent_amount("plasma")) // the plasma explodes when exposed to fire var/datum/effect_system/reagents_explosion/e = new() - e.set_up(round(reagents.get_reagent_amount(/datum/reagent/toxin/plasma) / 2.5, 1), get_turf(src), 0, 0) + e.set_up(round(reagents.get_reagent_amount("plasma") / 2.5, 1), get_turf(src), 0, 0) e.start() qdel(src) return @@ -863,205 +863,3 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(reagents && reagents.total_volume) hand_reagents() - -/////////////// -/////BONGS///// -/////////////// - -/obj/item/bong - name = "bong" - desc = "A water bong used for smoking dried plants." - icon = 'icons/obj/bongs.dmi' - icon_state = null - item_state = null - w_class = WEIGHT_CLASS_NORMAL - light_color = "#FFCC66" - var/icon_off = "bong" - var/icon_on = "bong_lit" - var/chem_volume = 100 - var/last_used_time //for cooldown - var/firecharges = 0 //used for counting how many hits can be taken before the flame goes out - var/list/list_reagents = list() //For the base reagents bongs could get - - -/obj/item/bong/Initialize() - . = ..() - create_reagents(chem_volume, NO_REACT) // so it doesn't react until you light it - reagents.add_reagent_list(list_reagents) - icon_state = icon_off - -/obj/item/bong/attackby(obj/item/O, mob/user, params) - . = ..() - //If we're using a dried plant.. - if(istype(O,/obj/item/reagent_containers/food/snacks)) - var/obj/item/reagent_containers/food/snacks/DP = O - if (DP.dry) - //Nothing if our bong is full - if (reagents.holder_full()) - user.show_message("The bowl is full!", MSG_VISUAL) - return - - //Transfer reagents and remove the plant - user.show_message("You stuff the [DP] into the [src]'s bowl.", MSG_VISUAL) - DP.reagents.trans_to(src, 100) - qdel(DP) - return - else - user.show_message("[DP] must be dried first!", MSG_VISUAL) - return - - if (O.get_temperature() <= 500) - return - if (reagents && reagents.total_volume) //if there's stuff in the bong - var/lighting_text = O.ignition_effect(src, user) - if(lighting_text) - //Logic regarding igniting it on - if (firecharges == 0) - user.show_message("You light the [src] with the [O]!", MSG_VISUAL) - bongturnon() - else - user.show_message("You rekindle [src]'s flame with the [O]!", MSG_VISUAL) - - firecharges = 1 - return - else - user.show_message("There's nothing to light up in the bowl.", MSG_VISUAL) - return - -/obj/item/bong/CtrlShiftClick(mob/user) //empty reagents on alt click - ..() - if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user))) - return - - if (reagents && reagents.total_volume) - user.show_message("You empty the [src].", MSG_VISUAL) - reagents.clear_reagents() - if(firecharges) - firecharges = 0 - bongturnoff() - else - user.show_message("The [src] is already empty.", MSG_VISUAL) - -/obj/item/bong/AltClick(mob/user) - ..() - if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user))) - return - - if(firecharges) - firecharges = 0 - bongturnoff() - user.show_message("You quench the flame.", MSG_VISUAL) - return TRUE - -/obj/item/bong/examine(mob/user) - . = ..() - if(!reagents.total_volume) - . += "The bowl is empty." - else if (reagents.total_volume > 80) - . += "The bowl is filled to the brim." - else if (reagents.total_volume > 40) - . += "The bowl has plenty weed in it." - else - . += "The bowl has some weed in it." - - . += "Ctrl+Shift-click to empty." - . += "Alt-click to extinguish." - -/obj/item/bong/ignition_effect(atom/A, mob/user) - if(firecharges) - . = "[user] lights [A] off of the [src]." - else - . = "" - -/obj/item/bong/attack(mob/living/carbon/M, mob/living/carbon/user, obj/target) - //if it's lit up, some stuff in the bowl and the user is a target, and we're not on cooldown - - if (M != user) - return ..() - - if(user.is_mouth_covered(head_only = 1)) - to_chat(user, "Remove your headgear first.") - return ..() - - if(user.is_mouth_covered(mask_only = 1)) - to_chat(user, "Remove your mask first.") - return ..() - - if (!reagents.total_volume) - to_chat(user, "There's nothing in the bowl.") - return ..() - - if (!firecharges) - to_chat(user, "You have to light it up first.") - return ..() - - if (last_used_time + 30 >= world.time) - return ..() - var/hit_strength - var/noise - var/hittext = "" - //if the intent is help then you take a small hit, else a big one - if (user.a_intent == INTENT_HARM) - hit_strength = 2 - noise = 100 - hittext = "big hit" - else - hit_strength = 1 - noise = 70 - hittext = "hit" - //bubbling sound - playsound(user.loc,'sound/effects/bonghit.ogg', noise, 1) - - last_used_time = world.time - - //message - user.visible_message("[user] begins to take a [hittext] from the [src]!", \ - "You begin to take a [hittext] from [src].") - - //we take a hit here, after an uninterrupted delay - if(!do_after(user, 25, target = user)) - return - if (!(reagents && reagents.total_volume)) - return - - var/fraction = 12 * hit_strength - - var/datum/effect_system/smoke_spread/chem/smoke_machine/s = new - s.set_up(reagents, hit_strength, 18, user.loc) - s.start() - - reagents.reaction(user, INGEST, fraction) - if(!reagents.trans_to(user, fraction)) - reagents.remove_any(fraction) - - if (hit_strength == 2 && prob(15)) - user.emote("cough") - user.adjustOxyLoss(15) - - user.visible_message("[user] takes a [hittext] from the [src]!", \ - "You take a [hittext] from [src].") - - firecharges = firecharges - 1 - if (!firecharges) - bongturnoff() - if (!reagents.total_volume) - firecharges = 0 - bongturnoff() - - - -/obj/item/bong/proc/bongturnon() - icon_state = icon_on - set_light(3, 0.8) - -/obj/item/bong/proc/bongturnoff() - icon_state = icon_off - set_light(0, 0.0) - - - -/obj/item/bong/coconut - name = "coconut bong" - icon_off = "coconut_bong" - icon_on = "coconut_bong_lit" - desc = "A water bong used for smoking dried plants. This one's made out of a coconut and some bamboo." \ No newline at end of file diff --git a/code/game/objects/items/circuitboards/circuitboard.dm b/code/game/objects/items/circuitboards/circuitboard.dm index 5f87f9ffd9..8106733ac6 100644 --- a/code/game/objects/items/circuitboards/circuitboard.dm +++ b/code/game/objects/items/circuitboards/circuitboard.dm @@ -12,7 +12,7 @@ righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' materials = list(MAT_GLASS=1000) w_class = WEIGHT_CLASS_SMALL - grind_results = list(/datum/reagent/silicon = 20) + grind_results = list("silicon" = 20) var/build_path = null /obj/item/circuitboard/proc/apply_default_parts(obj/machinery/M) diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index 65a5dbdb14..10a2b2c807 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -260,8 +260,9 @@ var/position = vending_names_paths.Find(build_path) position = (position == vending_names_paths.len) ? 1 : (position + 1) var/typepath = vending_names_paths[position] - set_type(typepath) + to_chat(user, "You set the board to \"[vending_names_paths[typepath]]\".") + set_type(typepath) else return ..() @@ -1000,16 +1001,3 @@ /obj/item/stock_parts/capacitor = 1, /obj/item/stack/cable_coil = 5, /obj/item/reagent_containers/glass/beaker = 6) //So it can hold lots of chems - -/obj/item/circuitboard/machine/kinkmate - name = "Kinkmate Vendor (Machine Board)" - build_path = /obj/machinery/vending/kink - req_components = list(/obj/item/vending_refill/kink = 1) - -/obj/item/circuitboard/machine/autoylathe - name = "Autoylathe (Machine Board)" - build_path = /obj/machinery/autoylathe - req_components = list( - /obj/item/stock_parts/matter_bin = 3, - /obj/item/stock_parts/manipulator = 1, - /obj/item/stack/sheet/glass = 1) diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm index 26c992b0bc..0ff54d884f 100644 --- a/code/game/objects/items/clown_items.dm +++ b/code/game/objects/items/clown_items.dm @@ -23,7 +23,7 @@ throwforce = 0 throw_speed = 3 throw_range = 7 - grind_results = list(/datum/reagent/lye = 10) + grind_results = list("lye" = 10) var/cleanspeed = 50 //slower than mop force_string = "robust... against germs" @@ -180,4 +180,4 @@ name = "Canned Laughter" desc = "Just looking at this makes you want to giggle." icon_state = "laughter" - list_reagents = list(/datum/reagent/consumable/laughter = 50) \ No newline at end of file + list_reagents = list("laughter" = 50) \ No newline at end of file diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 143354b496..41ab418cf2 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -59,7 +59,7 @@ var/edible = TRUE // That doesn't mean eating it is a good idea - var/list/reagent_contents = list(/datum/reagent/consumable/nutriment = 1) + var/list/reagent_contents = list("nutriment" = 1) // If the user can toggle the colour, a la vanilla spraycan var/can_change_colour = FALSE @@ -485,63 +485,63 @@ icon_state = "crayonred" paint_color = "#DA0000" item_color = "red" - reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/red = 1) + reagent_contents = list("nutriment" = 1, "redcrayonpowder" = 1) /obj/item/toy/crayon/orange icon_state = "crayonorange" paint_color = "#FF9300" item_color = "orange" - reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/orange = 1) + reagent_contents = list("nutriment" = 1, "orangecrayonpowder" = 1) /obj/item/toy/crayon/yellow icon_state = "crayonyellow" paint_color = "#FFF200" item_color = "yellow" - reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/yellow = 1) + reagent_contents = list("nutriment" = 1, "yellowcrayonpowder" = 1) /obj/item/toy/crayon/green icon_state = "crayongreen" paint_color = "#A8E61D" item_color = "green" - reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/green = 1) + reagent_contents = list("nutriment" = 1, "greencrayonpowder" = 1) /obj/item/toy/crayon/blue icon_state = "crayonblue" paint_color = "#00B7EF" item_color = "blue" - reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/blue = 1) + reagent_contents = list("nutriment" = 1, "bluecrayonpowder" = 1) /obj/item/toy/crayon/purple icon_state = "crayonpurple" paint_color = "#DA00FF" item_color = "purple" - reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/purple = 1) + reagent_contents = list("nutriment" = 1, "purplecrayonpowder" = 1) /obj/item/toy/crayon/black icon_state = "crayonblack" paint_color = "#1C1C1C" //Not completely black because total black looks bad. So Mostly Black. item_color = "black" - reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/black = 1) + reagent_contents = list("nutriment" = 1, "blackcrayonpowder" = 1) /obj/item/toy/crayon/white icon_state = "crayonwhite" paint_color = "#FFFFFF" item_color = "white" - reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/white = 1) + reagent_contents = list("nutriment" = 1, "whitecrayonpowder" = 1) /obj/item/toy/crayon/mime icon_state = "crayonmime" desc = "A very sad-looking crayon." paint_color = "#FFFFFF" item_color = "mime" - reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/invisible = 1) + reagent_contents = list("nutriment" = 1, "invisiblecrayonpowder" = 1) charges = -1 /obj/item/toy/crayon/rainbow icon_state = "crayonrainbow" paint_color = "#FFF000" item_color = "rainbow" - reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent = 1) + reagent_contents = list("nutriment" = 1, "colorful_reagent" = 1) drawtype = RANDOM_ANY // just the default starter. charges = -1 @@ -621,7 +621,7 @@ can_change_colour = TRUE gang = TRUE //Gang check is true for all things upon the honored hierarchy of spraycans, except those that are FALSE. - reagent_contents = list(/datum/reagent/fuel = 1, /datum/reagent/consumable/ethanol = 1) + reagent_contents = list("welding_fuel" = 1, "ethanol" = 1) pre_noise = TRUE post_noise = FALSE @@ -778,7 +778,7 @@ volume_multiplier = 25 charges = 100 - reagent_contents = list(/datum/reagent/clf3 = 1) + reagent_contents = list("clf3" = 1) actually_paints = FALSE paint_color = "#000000" @@ -791,7 +791,7 @@ use_overlays = FALSE gang = FALSE - reagent_contents = list(/datum/reagent/lube = 1, /datum/reagent/consumable/banana = 1) + reagent_contents = list("lube" = 1, "banana" = 1) volume_multiplier = 5 /obj/item/toy/crayon/spraycan/lubecan/isValidSurface(surface) @@ -811,7 +811,7 @@ pre_noise = FALSE post_noise = FALSE - reagent_contents = list(/datum/reagent/consumable/nothing = 1, /datum/reagent/toxin/mutetoxin = 1) + reagent_contents = list("nothing" = 1, "mutetoxin" = 1) /obj/item/toy/crayon/spraycan/gang charges = 20 // Charges back to 20, which is the default value for them. diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index ccffa413a6..d97c07bf87 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -700,10 +700,10 @@ GLOBAL_LIST_EMPTY(PDAs) U << browse(null, "window=pda") return -/obj/item/pda/proc/remove_id(mob/user) - if(issilicon(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) +/obj/item/pda/proc/remove_id() + if(issilicon(usr) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) return - do_remove_id(user) + do_remove_id(usr) /obj/item/pda/proc/do_remove_id(mob/user) if(!id) @@ -827,23 +827,23 @@ GLOBAL_LIST_EMPTY(PDAs) /obj/item/pda/proc/create_message(mob/living/U, obj/item/pda/P) send_message(U,list(P)) -/obj/item/pda/AltClick(mob/user) +/obj/item/pda/AltClick() . = ..() if(id) - remove_id(user) + remove_id() playsound(src, 'sound/machines/terminal_eject_disc.ogg', 50, 1) else - remove_pen(user) + remove_pen() playsound(src, 'sound/machines/button4.ogg', 50, 1) return TRUE -/obj/item/pda/CtrlClick(mob/user) +/obj/item/pda/CtrlClick() ..() if(isturf(loc)) //stops the user from dragging the PDA by ctrl-clicking it. return - remove_pen(user) + remove_pen() /obj/item/pda/verb/verb_toggle_light() set category = "Object" @@ -857,7 +857,7 @@ GLOBAL_LIST_EMPTY(PDAs) set src in usr if(id) - remove_id(usr) + remove_id() else to_chat(usr, "This PDA does not have an ID in it!") @@ -896,7 +896,7 @@ GLOBAL_LIST_EMPTY(PDAs) /obj/item/pda/proc/id_check(mob/user, obj/item/card/id/I) if(!I) if(id && (src in user.contents)) - remove_id(user) + remove_id() return TRUE else var/obj/item/card/id/C = user.get_active_held_item() diff --git a/code/game/objects/items/devices/dogborg_sleeper.dm b/code/game/objects/items/devices/dogborg_sleeper.dm index 748c494737..9b4842b291 100644 --- a/code/game/objects/items/devices/dogborg_sleeper.dm +++ b/code/game/objects/items/devices/dogborg_sleeper.dm @@ -12,8 +12,7 @@ var/cleaning = FALSE var/cleaning_cycles = 10 var/patient_laststat = null - var/list/injection_chems = list(/datum/reagent/medicine/antitoxin, /datum/reagent/medicine/epinephrine, - /datum/reagent/medicine/salbutamol, /datum/reagent/medicine/bicaridine, /datum/reagent/medicine/kelotane) + var/list/injection_chems = list("antitoxin", "epinephrine", "salbutamol", "bicaridine", "kelotane") var/eject_port = "ingestion" var/escape_in_progress = FALSE var/message_cooldown @@ -184,7 +183,7 @@ data["chem"] = list() for(var/chem in injection_chems) var/datum/reagent/R = GLOB.chemical_reagents_list[chem] - data["chem"] += list(list("name" = R.name, "id" = R.type)) + data["chem"] += list(list("name" = R.name, "id" = R.id)) data["occupant"] = list() var/mob/living/mob_occupant = patient @@ -228,8 +227,8 @@ go_out(null, usr) . = TRUE if("inject") - var/chem = text2path(params["chem"]) - if(!patient || !chem) + var/chem = params["chem"] + if(!patient) return inject_chem(chem, usr) . = TRUE diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 7313ba8ff2..c861ac1512 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -267,7 +267,7 @@ var/produce_heat = 1500 heat = 1000 light_color = LIGHT_COLOR_FLARE - grind_results = list(/datum/reagent/sulfur = 15) + grind_results = list("sulfur" = 15) /obj/item/flashlight/flare/New() fuel = rand(800, 1000) // Sorry for changing this so much but I keep under-estimating how long X number of ticks last in seconds. @@ -430,7 +430,7 @@ color = LIGHT_COLOR_GREEN icon_state = "glowstick" item_state = "glowstick" - grind_results = list(/datum/reagent/phenol = 15, /datum/reagent/hydrogen = 10, /datum/reagent/oxygen = 5) //Meth-in-a-stick + grind_results = list("phenol" = 15, "hydrogen" = 10, "oxygen" = 5) //Meth-in-a-stick rad_flags = RAD_NO_CONTAMINATE var/fuel = 0 diff --git a/code/game/objects/items/devices/forcefieldprojector.dm b/code/game/objects/items/devices/forcefieldprojector.dm index bf9c5daccd..0c73d829ff 100644 --- a/code/game/objects/items/devices/forcefieldprojector.dm +++ b/code/game/objects/items/devices/forcefieldprojector.dm @@ -2,7 +2,7 @@ name = "forcefield projector" desc = "An experimental device that can create several forcefields at a distance." icon = 'icons/obj/device.dmi' - icon_state = "signmaker_forcefield" + icon_state = "signmaker_engi" slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL item_flags = NOBLUDGEON diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index 3ee4a14a91..7dc2f1d60b 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -8,8 +8,7 @@ w_class = WEIGHT_CLASS_SMALL slot_flags = ITEM_SLOT_BELT var/mob/living/silicon/pai/pai - resistance_flags = FIRE_PROOF | ACID_PROOF - max_integrity = 200 + resistance_flags = FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE /obj/item/paicard/suicide_act(mob/living/user) user.visible_message("[user] is staring sadly at [src]! [user.p_they()] can't keep living without real human intimacy!") @@ -46,8 +45,6 @@ dat += "Radio Uplink
    " dat += "Transmit: [(pai.radio.wires.is_cut(WIRE_TX)) ? "Disabled" : "Enabled"]
    " dat += "Receive: [(pai.radio.wires.is_cut(WIRE_RX)) ? "Disabled" : "Enabled"]
    " - if(pai.radio_short) - dat += "Reset radio short: \[RESET\]
    " else dat += "Radio Uplink
    " dat += "Radio firmware not loaded. Please install a pAI personality to load firmware.
    " @@ -85,6 +82,7 @@ pai.master = M.real_name pai.master_dna = M.dna.unique_enzymes to_chat(pai, "You have been bound to a new master.") + pai.emittersemicd = FALSE if(href_list["wipe"]) var/confirm = input("Are you CERTAIN you wish to delete the current personality? This action cannot be undone.", "Personality Wipe") in list("Yes", "No") if(confirm == "Yes") @@ -98,8 +96,6 @@ var/wire = text2num(href_list["wires"]) if(pai.radio) pai.radio.wires.cut(wire) - if(href_list["reset_radio_short"]) - pai.unshort_radio() if(href_list["setlaws"]) var/newlaws = copytext(sanitize(input("Enter any additional directives you would like your pAI personality to follow. Note that these directives will not override the personality's allegiance to its imprinted master. Conflicting directives will be ignored.", "pAI Directive Configuration", pai.laws.supplied[1]) as message),1,MAX_MESSAGE_LEN) if(newlaws && pai) diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index f468121048..b74b0fa3d4 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -10,23 +10,22 @@ slot_flags = ITEM_SLOT_BACK w_class = WEIGHT_CLASS_HUGE materials = list(MAT_METAL=10000, MAT_GLASS=2500) - + var/on = TRUE var/code = 2 var/frequency = FREQ_ELECTROPACK - var/on = TRUE - var/shock_cooldown = FALSE + var/shock_cooldown = 0 -/obj/item/electropack/suicide_act(mob/living/carbon/user) +/obj/item/electropack/suicide_act(mob/user) user.visible_message("[user] hooks [user.p_them()]self to the electropack and spams the trigger! It looks like [user.p_theyre()] trying to commit suicide!") return (FIRELOSS) /obj/item/electropack/Initialize() . = ..() - set_frequency(frequency) + SSradio.add_object(src, frequency, RADIO_SIGNALER) /obj/item/electropack/Destroy() SSradio.remove_object(src, frequency) - . = ..() + return ..() //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/item/electropack/attack_hand(mob/user) @@ -37,7 +36,7 @@ return return ..() -/obj/item/electropack/attackby(obj/item/W, mob/living/user, params) +/obj/item/electropack/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/clothing/head/helmet)) var/obj/item/assembly/shock_kit/A = new /obj/item/assembly/shock_kit(user) A.icon = 'icons/obj/assemblies.dmi' @@ -58,47 +57,43 @@ return ..() /obj/item/electropack/Topic(href, href_list) + //..() var/mob/living/carbon/C = usr if(usr.stat || usr.restrained() || C.back == src) return - - if(!usr.canUseTopic(src, BE_CLOSE)) + if((ishuman(usr) && usr.contents.Find(src)) || usr.contents.Find(master) || (in_range(src, usr) && isturf(loc))) + usr.set_machine(src) + if(href_list["freq"]) + SSradio.remove_object(src, frequency) + frequency = sanitize_frequency(frequency + text2num(href_list["freq"])) + SSradio.add_object(src, frequency, RADIO_SIGNALER) + else + if(href_list["code"]) + code += text2num(href_list["code"]) + code = round(code) + code = min(100, code) + code = max(1, code) + else + if(href_list["power"]) + on = !( on ) + icon_state = "electropack[on]" + if(!( master )) + if(ismob(loc)) + attack_self(loc) + else + for(var/mob/M in viewers(1, src)) + if(M.client) + attack_self(M) + else + if(ismob(master.loc)) + attack_self(master.loc) + else + for(var/mob/M in viewers(1, master)) + if(M.client) + attack_self(M) + else usr << browse(null, "window=radio") - onclose(usr, "radio") return - - if(href_list["set"]) - if(href_list["set"] == "freq") - var/new_freq = input(usr, "Input a new receiving frequency", "Electropack Frequency", format_frequency(frequency)) as num|null - if(!usr.canUseTopic(src, BE_CLOSE)) - return - new_freq = unformat_frequency(new_freq) - new_freq = sanitize_frequency(new_freq, TRUE) - set_frequency(new_freq) - - if(href_list["set"] == "code") - var/new_code = input(usr, "Input a new receiving code", "Electropack Code", code) as num|null - if(!usr.canUseTopic(src, BE_CLOSE)) - return - new_code = round(new_code) - new_code = CLAMP(new_code, 1, 100) - code = new_code - - if(href_list["set"] == "power") - if(!usr.canUseTopic(src, BE_CLOSE)) - return - on = !(on) - icon_state = "electropack[on]" - - if(usr) - attack_self(usr) - - return - -/obj/item/electropack/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - frequency = new_frequency - SSradio.add_object(src, frequency, RADIO_SIGNALER) return /obj/item/electropack/receive_signal(datum/signal/signal) @@ -106,10 +101,10 @@ return if(isliving(loc) && on) - if(shock_cooldown == TRUE) + if(shock_cooldown != 0) return - shock_cooldown = TRUE - addtimer(VARSET_CALLBACK(src, shock_cooldown, FALSE), 100) + shock_cooldown = 1 + addtimer(VARSET_CALLBACK(src, shock_cooldown, 0), 100) var/mob/living/L = loc step(L, pick(GLOB.cardinals)) @@ -124,22 +119,25 @@ master.receive_signal() return -/obj/item/electropack/ui_interact(mob/user) +/obj/item/electropack/attack_self(mob/user) + if(!ishuman(user)) return - user.set_machine(src) - var/dat = {" - -Turned [on ? "On" : "Off"] - Toggle
    + var/dat = {"Turned [on ? "On" : "Off"] - +Toggle
    Frequency/Code for electropack:
    Frequency: -[format_frequency(src.frequency)] -Set
    +- +- [format_frequency(frequency)] ++ ++
    Code: -[src.code] -Set
    +- +- [code] ++ ++
    "} user << browse(dat, "window=radio") onclose(user, "radio") diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 069c921914..00381b9838 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -262,7 +262,7 @@ SLIME SCANNER temp_message += " Subject has abnormal brain fuctions." //Astrogen shenanigans - if(H.reagents.has_reagent(/datum/reagent/fermi/astral)) + if(H.reagents.has_reagent("astral")) if(H.mind) temp_message += " Warning: subject may be possesed." else @@ -465,9 +465,9 @@ SLIME SCANNER else msg += "Subject is not addicted to any reagents.\n" - var/datum/reagent/impure/fermiTox/F = M.reagents.has_reagent(/datum/reagent/impure/fermiTox) - if(istype(F)) - switch(F.volume) + if(M.reagents.has_reagent("fermiTox")) + var/datum/reagent/fermiTox = M.reagents.has_reagent("fermiTox") + switch(fermiTox.volume) if(5 to 10) msg += "Subject contains a low amount of toxic isomers.\n" if(10 to 25) @@ -519,7 +519,7 @@ SLIME SCANNER throw_range = 7 tool_behaviour = TOOL_ANALYZER materials = list(MAT_METAL=30, MAT_GLASS=20) - grind_results = list(/datum/reagent/mercury = 5, /datum/reagent/iron = 5, /datum/reagent/silicon = 5) + grind_results = list("mercury" = 5, "iron" = 5, "silicon" = 5) var/cooldown = FALSE var/cooldown_time = 250 var/accuracy // 0 is the best accuracy. diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm index 4585685cde..b69d32617f 100644 --- a/code/game/objects/items/extinguisher.dm +++ b/code/game/objects/items/extinguisher.dm @@ -17,7 +17,7 @@ resistance_flags = FIRE_PROOF var/max_water = 50 var/last_use = 1 - var/chem = /datum/reagent/water + var/chem = "water" var/safety = TRUE var/refilling = FALSE var/tanktype = /obj/structure/reagent_dispensers/watertank diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm index b5fee4e8d7..76d3a9fbf5 100644 --- a/code/game/objects/items/grenades/chem_grenade.dm +++ b/code/game/objects/items/grenades/chem_grenade.dm @@ -332,9 +332,9 @@ var/obj/item/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent(/datum/reagent/aluminium, 30) - B2.reagents.add_reagent(/datum/reagent/foaming_agent, 10) - B2.reagents.add_reagent(/datum/reagent/toxin/acid/fluacid, 10) + B1.reagents.add_reagent("aluminium", 30) + B2.reagents.add_reagent("foaming_agent", 10) + B2.reagents.add_reagent("facid", 10) beakers += B1 beakers += B2 @@ -350,9 +350,9 @@ var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent(/datum/reagent/aluminium, 75) - B2.reagents.add_reagent(/datum/reagent/smart_foaming_agent, 25) - B2.reagents.add_reagent(/datum/reagent/toxin/acid/fluacid, 25) + B1.reagents.add_reagent("aluminium", 75) + B2.reagents.add_reagent("smart_foaming_agent", 25) + B2.reagents.add_reagent("facid", 25) beakers += B1 beakers += B2 @@ -368,9 +368,9 @@ var/obj/item/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent(/datum/reagent/phosphorus, 25) - B2.reagents.add_reagent(/datum/reagent/stable_plasma, 25) - B2.reagents.add_reagent(/datum/reagent/toxin/acid, 25) + B1.reagents.add_reagent("phosphorus", 25) + B2.reagents.add_reagent("stable_plasma", 25) + B2.reagents.add_reagent("sacid", 25) beakers += B1 beakers += B2 @@ -386,10 +386,10 @@ var/obj/item/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent(/datum/reagent/toxin/plantbgone, 25) - B1.reagents.add_reagent(/datum/reagent/potassium, 25) - B2.reagents.add_reagent(/datum/reagent/phosphorus, 25) - B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 25) + B1.reagents.add_reagent("plantbgone", 25) + B1.reagents.add_reagent("potassium", 25) + B2.reagents.add_reagent("phosphorus", 25) + B2.reagents.add_reagent("sugar", 25) beakers += B1 beakers += B2 @@ -405,9 +405,9 @@ var/obj/item/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent(/datum/reagent/fluorosurfactant, 40) - B2.reagents.add_reagent(/datum/reagent/water, 40) - B2.reagents.add_reagent(/datum/reagent/space_cleaner, 10) + B1.reagents.add_reagent("fluorosurfactant", 40) + B2.reagents.add_reagent("water", 40) + B2.reagents.add_reagent("cleaner", 10) beakers += B1 beakers += B2 @@ -423,9 +423,9 @@ var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src) - B1.reagents.add_reagent(/datum/reagent/fluorosurfactant, 40) - B2.reagents.add_reagent(/datum/reagent/water, 40) - B2.reagents.add_reagent(/datum/reagent/space_cleaner/ez_clean, 60) //ensures a t h i c c distribution + B1.reagents.add_reagent("fluorosurfactant", 40) + B2.reagents.add_reagent("water", 40) + B2.reagents.add_reagent("ez_clean", 60) //ensures a t h i c c distribution beakers += B1 beakers += B2 @@ -442,10 +442,10 @@ var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src) - B1.reagents.add_reagent(/datum/reagent/consumable/condensedcapsaicin, 60) - B1.reagents.add_reagent(/datum/reagent/potassium, 40) - B2.reagents.add_reagent(/datum/reagent/phosphorus, 40) - B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 40) + B1.reagents.add_reagent("condensedcapsaicin", 60) + B1.reagents.add_reagent("potassium", 40) + B2.reagents.add_reagent("phosphorus", 40) + B2.reagents.add_reagent("sugar", 40) beakers += B1 beakers += B2 @@ -461,11 +461,11 @@ var/obj/item/reagent_containers/glass/beaker/bluespace/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/bluespace/B2 = new(src) - B1.reagents.add_reagent(/datum/reagent/toxin/acid/fluacid, 290) - B1.reagents.add_reagent(/datum/reagent/potassium, 10) - B2.reagents.add_reagent(/datum/reagent/phosphorus, 10) - B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 10) - B2.reagents.add_reagent(/datum/reagent/toxin/acid/fluacid, 280) + B1.reagents.add_reagent("facid", 290) + B1.reagents.add_reagent("potassium", 10) + B2.reagents.add_reagent("phosphorus", 10) + B2.reagents.add_reagent("sugar", 10) + B2.reagents.add_reagent("facid", 280) beakers += B1 beakers += B2 @@ -481,10 +481,10 @@ var/obj/item/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent(/datum/reagent/colorful_reagent, 25) - B1.reagents.add_reagent(/datum/reagent/potassium, 25) - B2.reagents.add_reagent(/datum/reagent/phosphorus, 25) - B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 25) + B1.reagents.add_reagent("colorful_reagent", 25) + B1.reagents.add_reagent("potassium", 25) + B2.reagents.add_reagent("phosphorus", 25) + B2.reagents.add_reagent("sugar", 25) beakers += B1 beakers += B2 @@ -493,7 +493,7 @@ name = "generic glitter grenade" desc = "You shouldn't see this description." stage = READY - var/glitter_type = /datum/reagent/glitter + var/glitter_type = "glitter" /obj/item/grenade/chem_grenade/glitter/Initialize() . = ..() @@ -501,9 +501,9 @@ var/obj/item/reagent_containers/glass/beaker/B2 = new(src) B1.reagents.add_reagent(glitter_type, 25) - B1.reagents.add_reagent(/datum/reagent/potassium, 25) - B2.reagents.add_reagent(/datum/reagent/phosphorus, 25) - B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 25) + B1.reagents.add_reagent("potassium", 25) + B2.reagents.add_reagent("phosphorus", 25) + B2.reagents.add_reagent("sugar", 25) beakers += B1 beakers += B2 @@ -511,17 +511,17 @@ /obj/item/grenade/chem_grenade/glitter/pink name = "pink glitter bomb" desc = "For that HOT glittery look." - glitter_type = /datum/reagent/glitter/pink + glitter_type = "pink_glitter" /obj/item/grenade/chem_grenade/glitter/blue name = "blue glitter bomb" desc = "For that COOL glittery look." - glitter_type = /datum/reagent/glitter/blue + glitter_type = "blue_glitter" /obj/item/grenade/chem_grenade/glitter/white name = "white glitter bomb" desc = "For that somnolent glittery look." - glitter_type = /datum/reagent/glitter/white + glitter_type = "white_glitter" /obj/item/grenade/chem_grenade/clf3 name = "clf3 grenade" @@ -533,10 +533,10 @@ var/obj/item/reagent_containers/glass/beaker/bluespace/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/bluespace/B2 = new(src) - B1.reagents.add_reagent(/datum/reagent/fluorosurfactant, 250) - B1.reagents.add_reagent(/datum/reagent/clf3, 50) - B2.reagents.add_reagent(/datum/reagent/water, 250) - B2.reagents.add_reagent(/datum/reagent/clf3, 50) + B1.reagents.add_reagent("fluorosurfactant", 250) + B1.reagents.add_reagent("clf3", 50) + B2.reagents.add_reagent("water", 250) + B2.reagents.add_reagent("clf3", 50) beakers += B1 beakers += B2 @@ -551,13 +551,13 @@ var/obj/item/reagent_containers/glass/beaker/bluespace/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/bluespace/B2 = new(src) - B1.reagents.add_reagent(/datum/reagent/cryptobiolin, 75) - B1.reagents.add_reagent(/datum/reagent/water, 50) - B1.reagents.add_reagent(/datum/reagent/toxin/mutetoxin, 50) - B1.reagents.add_reagent(/datum/reagent/toxin/spore, 75) - B1.reagents.add_reagent(/datum/reagent/toxin/itching_powder, 50) - B2.reagents.add_reagent(/datum/reagent/fluorosurfactant, 150) - B2.reagents.add_reagent(/datum/reagent/toxin/mutagen, 150) + B1.reagents.add_reagent("cryptobiolin", 75) + B1.reagents.add_reagent("water", 50) + B1.reagents.add_reagent("mutetoxin", 50) + B1.reagents.add_reagent("spore", 75) + B1.reagents.add_reagent("itching_powder", 50) + B2.reagents.add_reagent("fluorosurfactant", 150) + B2.reagents.add_reagent("mutagen", 150) beakers += B1 beakers += B2 @@ -571,11 +571,11 @@ var/obj/item/reagent_containers/glass/beaker/bluespace/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/bluespace/B2 = new(src) - B1.reagents.add_reagent(/datum/reagent/potassium, 50) - B1.reagents.add_reagent(/datum/reagent/phosphorus, 50) - B1.reagents.add_reagent(/datum/reagent/fungalspores, 200) - B2.reagents.add_reagent(/datum/reagent/blood, 250) - B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 50) + B1.reagents.add_reagent("potassium", 50) + B1.reagents.add_reagent("phosphorus", 50) + B1.reagents.add_reagent("fungalspores", 200) + B2.reagents.add_reagent("blood", 250) + B2.reagents.add_reagent("sugar", 50) beakers += B1 beakers += B2 @@ -591,8 +591,8 @@ var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src) - B1.reagents.add_reagent(/datum/reagent/potassium, 100) - B2.reagents.add_reagent(/datum/reagent/water/holywater, 100) + B1.reagents.add_reagent("potassium", 100) + B2.reagents.add_reagent("holywater", 100) beakers += B1 beakers += B2 diff --git a/code/game/objects/items/grenades/clusterbuster.dm b/code/game/objects/items/grenades/clusterbuster.dm index c16b4a30a1..923361de3c 100644 --- a/code/game/objects/items/grenades/clusterbuster.dm +++ b/code/game/objects/items/grenades/clusterbuster.dm @@ -94,11 +94,11 @@ var/chem = pick(slime_chems) var/amount = 5 if(chem == "lesser plasma") //In the rare case we get another rainbow. - chem = /datum/reagent/toxin/plasma + chem = "plasma" amount = 4 if(chem == "holy water and uranium") - chem = /datum/reagent/uranium - reagents.add_reagent(/datum/reagent/water/holywater) + chem = "uranium" + reagents.add_reagent("holywater") reagents.add_reagent(chem,amount) /obj/effect/payload_spawner/random_slime/spawn_payload(type, numspawned) diff --git a/code/game/objects/items/grenades/flashbang.dm b/code/game/objects/items/grenades/flashbang.dm index 724cfc8f9d..66897fa722 100644 --- a/code/game/objects/items/grenades/flashbang.dm +++ b/code/game/objects/items/grenades/flashbang.dm @@ -20,10 +20,10 @@ /obj/item/grenade/flashbang/proc/flashbang_mobs(turf/source, range) var/list/banged = get_hearers_in_view(range, source) var/list/flashed = viewers(range, source) - for(var/mob/living/l in banged) - bang(l, source) - for(var/mob/living/l in flashed) - flash(l, source) + for(var/i in banged) + bang(i, source) + for(var/i in flashed) + flash(i, source) /obj/item/grenade/flashbang/proc/bang(mob/living/M, turf/source) if(M.stat == DEAD) //They're dead! diff --git a/code/game/objects/items/holosign_creator.dm b/code/game/objects/items/holosign_creator.dm index e92c9b2d2e..78881d901e 100644 --- a/code/game/objects/items/holosign_creator.dm +++ b/code/game/objects/items/holosign_creator.dm @@ -78,17 +78,9 @@ /obj/item/holosign_creator/atmos name = "ATMOS holofan projector" - desc = "A holographic projector that creates holographic fans that prevent changes in atmosphere conditions. Somehow." - icon_state = "signmaker_atmos" - holosign_type = /obj/structure/holosign/barrier/atmos - creation_time = 0 - max_signs = 3 - -/obj/item/holosign_creator/firelock - name = "ATMOS holofirelock projector" - desc = "A holographic projector that creates holographic barriers that prevent changes in temperature conditions." + desc = "A holographic projector that creates holographic barriers that prevent changes in atmosphere conditions." icon_state = "signmaker_engi" - holosign_type = /obj/structure/holosign/barrier/firelock + holosign_type = /obj/structure/holosign/barrier/atmos creation_time = 0 max_signs = 3 diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index 5367f3461c..7a83893f8b 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -308,7 +308,7 @@ block_chance = 50 var/shield_icon = "shield-red" -/obj/item/nullrod/staff/worn_overlays(isinhands, icon_file, style_flags = NONE) +/obj/item/nullrod/staff/worn_overlays(isinhands) . = list() if(isinhands) . += mutable_appearance('icons/effects/effects.dmi', shield_icon, MOB_LAYER + 0.01) @@ -479,10 +479,10 @@ possessed = TRUE - var/list/mob/candidates = pollGhostCandidates("Do you want to play as the spirit of [user.real_name]'s blade?", ROLE_PAI, null, FALSE, 100, POLL_IGNORE_POSSESSED_BLADE) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the spirit of [user.real_name]'s blade?", ROLE_PAI, null, FALSE, 100, POLL_IGNORE_POSSESSED_BLADE) if(LAZYLEN(candidates)) - var/mob/C = pick(candidates) + var/mob/dead/observer/C = pick(candidates) var/mob/living/simple_animal/shade/S = new(src) S.real_name = name S.name = name @@ -789,7 +789,7 @@ praying = TRUE if(do_after(user, 20, target = M)) - M.reagents?.add_reagent(/datum/reagent/water/holywater, 5) + M.reagents?.add_reagent("holywater", 5) to_chat(M, "[user]'s prayer to [deity_name] has eased your pain!") M.adjustToxLoss(-5, TRUE, TRUE) M.adjustOxyLoss(-5) diff --git a/code/game/objects/items/hot_potato.dm b/code/game/objects/items/hot_potato.dm index 16ac2ad692..40f2741a17 100644 --- a/code/game/objects/items/hot_potato.dm +++ b/code/game/objects/items/hot_potato.dm @@ -75,7 +75,7 @@ L.SetKnockdown(0) L.SetSleeping(0) L.SetUnconscious(0) - L.reagents.add_reagent(/datum/reagent/medicine/muscle_stimulant, CLAMP(5 - L.reagents.get_reagent_amount(/datum/reagent/medicine/muscle_stimulant), 0, 5)) //If you don't have legs or get bola'd, tough luck! + L.reagents.add_reagent("muscle_stimulant", CLAMP(5 - L.reagents.get_reagent_amount("muscle_stimulant"), 0, 5)) //If you don't have legs or get bola'd, tough luck! colorize(L) /obj/item/hot_potato/examine(mob/user) diff --git a/code/game/objects/items/implants/implant_misc.dm b/code/game/objects/items/implants/implant_misc.dm index 6cdc5ee824..75b0c67798 100644 --- a/code/game/objects/items/implants/implant_misc.dm +++ b/code/game/objects/items/implants/implant_misc.dm @@ -33,7 +33,7 @@ /obj/item/implant/adrenalin/activate() . = ..() uses-- - imp_in.do_adrenaline(150, TRUE, 0, 0, TRUE, list(/datum/reagent/medicine/inaprovaline = 3, /datum/reagent/medicine/synaptizine = 10, /datum/reagent/medicine/regen_jelly = 10, /datum/reagent/medicine/stimulants = 10), "You feel a sudden surge of energy!") + imp_in.do_adrenaline(150, TRUE, 0, 0, TRUE, list("inaprovaline" = 3, "synaptizine" = 10, "regen_jelly" = 10, "stimulants" = 10), "You feel a sudden surge of energy!") to_chat(imp_in, "You feel a sudden surge of energy!") if(!uses) qdel(src) diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index 6665d91c2b..ef2aa825e7 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -41,10 +41,10 @@ if(forkload) if(M == user) M.visible_message("[user] eats a delicious forkful of omelette!") - M.reagents.add_reagent(forkload.type, 1) + M.reagents.add_reagent(forkload.id, 1) else M.visible_message("[user] feeds [M] a delicious forkful of omelette!") - M.reagents.add_reagent(forkload.type, 1) + M.reagents.add_reagent(forkload.id, 1) icon_state = "fork" forkload = null diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index 4d60716d0c..16262d61c3 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -339,7 +339,7 @@ . = ..() . += "Alt-click to recolor it." -/obj/item/melee/transforming/energy/sword/cx/worn_overlays(isinhands, icon_file, style_flags = NONE) +/obj/item/melee/transforming/energy/sword/cx/worn_overlays(isinhands, icon_file) . = ..() if(active) if(isinhands) @@ -374,7 +374,7 @@ It appears to have a wooden grip and a shaved down guard." icon_state = "cxsword_hilt_traitor" force_on = 30 - armour_penetration = 35 + armour_penetration = 50 embedding = list("embedded_pain_multiplier" = 10, "embed_chance" = 75, "embedded_fall_chance" = 0, "embedded_impact_pain_multiplier" = 10) block_chance = 50 hitsound_on = 'sound/weapons/blade1.ogg' diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 4242fb6c4b..d8abff70a6 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -216,11 +216,10 @@ return else if(last_hit < world.time) - if(target.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) - playsound(target, 'sound/weapons/genhit.ogg', 50, 1) - return if(ishuman(target)) var/mob/living/carbon/human/H = target + if (H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) + return if(check_martial_counter(H, user)) return playsound(get_turf(src), 'sound/effects/woodhit.ogg', 75, 1, -1) diff --git a/code/game/objects/items/mop.dm b/code/game/objects/items/mop.dm index a8b28f2544..5d384a9346 100644 --- a/code/game/objects/items/mop.dm +++ b/code/game/objects/items/mop.dm @@ -25,7 +25,7 @@ /obj/item/mop/proc/clean(turf/A) - if(reagents.has_reagent(/datum/reagent/water, 1) || reagents.has_reagent(/datum/reagent/water/holywater, 1) || reagents.has_reagent(/datum/reagent/consumable/ethanol/vodka, 1) || reagents.has_reagent(/datum/reagent/space_cleaner, 1)) + if(reagents.has_reagent("water", 1) || reagents.has_reagent("holywater", 1) || reagents.has_reagent("vodka", 1) || reagents.has_reagent("cleaner", 1)) SEND_SIGNAL(A, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM) A.clean_blood() for(var/obj/effect/O in A) @@ -98,7 +98,7 @@ stamusage = 1 var/refill_enabled = TRUE //Self-refill toggle for when a janitor decides to mop with something other than water. var/refill_rate = 1 //Rate per process() tick mop refills itself - var/refill_reagent = /datum/reagent/water //Determins what reagent to use for refilling, just in case someone wanted to make a HOLY MOP OF PURGING + var/refill_reagent = "water" //Determins what reagent to use for refilling, just in case someone wanted to make a HOLY MOP OF PURGING /obj/item/mop/advanced/New() ..() diff --git a/code/game/objects/items/powerfist.dm b/code/game/objects/items/powerfist.dm index 648f465a22..27ed0f82e3 100644 --- a/code/game/objects/items/powerfist.dm +++ b/code/game/objects/items/powerfist.dm @@ -50,6 +50,7 @@ if(tank) updateTank(tank, 1, user) + /obj/item/melee/powerfist/proc/updateTank(obj/item/tank/internals/thetank, removing = 0, mob/living/carbon/human/user) if(removing) if(!tank) @@ -70,42 +71,26 @@ /obj/item/melee/powerfist/attack(mob/living/target, mob/living/user) - if(!tank) - to_chat(user, "\The [src] can't operate without a source of gas!") - return - var/datum/gas_mixture/gasused = tank.air_contents.remove(gasperfist * fisto_setting) - var/turf/T = get_turf(src) - if(!T) - return - T.assume_air(gasused) - T.air_update_turf() - if(!gasused) - to_chat(user, "\The [src]'s tank is empty!") - target.apply_damage((force / 5), BRUTE) - playsound(loc, 'sound/weapons/punch1.ogg', 50, 1) - target.visible_message("[user]'s powerfist lets out a dull thunk as [user.p_they()] punch[user.p_es()] [target.name]!", \ - "[user]'s punches you!") - return - if(gasused.total_moles() < gasperfist * fisto_setting) - to_chat(user, "\The [src]'s piston-ram lets out a weak hiss, it needs more gas!") - playsound(loc, 'sound/weapons/punch4.ogg', 50, 1) - target.apply_damage((force / 2), BRUTE) - target.visible_message("[user]'s powerfist lets out a weak hiss as [user.p_they()] punch[user.p_es()] [target.name]!", \ - "[user]'s punch strikes with force!") - return - target.apply_damage(force * fisto_setting, BRUTE) - target.visible_message("[user]'s powerfist lets out a loud hiss as [user.p_they()] punch[user.p_es()] [target.name]!", \ - "You cry out in pain as [user]'s punch flings you backwards!") - new /obj/effect/temp_visual/kinetic_blast(target.loc) - playsound(loc, 'sound/weapons/resonator_blast.ogg', 50, 1) - playsound(loc, 'sound/weapons/genhit2.ogg', 50, 1) + if(!tank) + to_chat(user, "\The [src] can't operate without a source of gas!") + return + if(tank && !tank.air_contents.remove(gasperfist * fisto_setting)) + to_chat(user, "\The [src]'s piston-ram lets out a weak hiss, it needs more gas!") + playsound(loc, 'sound/effects/refill.ogg', 50, 1) + return + target.apply_damage(force * fisto_setting, BRUTE) + target.visible_message("[user]'s powerfist lets out a loud hiss as [user.p_they()] punch[user.p_es()] [target.name]!", \ + "You cry out in pain as [user]'s punch flings you backwards!") + new /obj/effect/temp_visual/kinetic_blast(target.loc) + playsound(loc, 'sound/weapons/resonator_blast.ogg', 50, 1) + playsound(loc, 'sound/weapons/genhit2.ogg', 50, 1) - var/atom/throw_target = get_edge_target_turf(target, get_dir(src, get_step_away(target, src))) + var/atom/throw_target = get_edge_target_turf(target, get_dir(src, get_step_away(target, src))) - target.throw_at(throw_target, 5 * fisto_setting, 0.5 + (fisto_setting / 2)) + target.throw_at(throw_target, 5 * fisto_setting, 0.2) - log_combat(user, target, "power fisted", src) + log_combat(user, target, "power fisted", src) - user.changeNext_move(CLICK_CD_MELEE * click_delay) + user.changeNext_move(CLICK_CD_MELEE * click_delay) - return + return diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm index 5fd9600a97..ddc49a456c 100644 --- a/code/game/objects/items/religion.dm +++ b/code/game/objects/items/religion.dm @@ -98,7 +98,7 @@ /obj/item/banner/medical/special_inspiration(mob/living/carbon/human/H) H.adjustToxLoss(-15) H.setOxyLoss(0) - H.reagents.add_reagent(/datum/reagent/medicine/inaprovaline, 5) + H.reagents.add_reagent("inaprovaline", 5) /obj/item/banner/science name = "sciencia banner" diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index a0d58709c8..77bc7ed810 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -11,9 +11,11 @@ var/charge_cost = 30 /obj/item/borg/stun/attack(mob/living/M, mob/living/user) - if(M.check_shields(src, 0, "[M]'s [name]", MELEE_ATTACK)) - playsound(M, 'sound/weapons/genhit.ogg', 50, 1) - return FALSE + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.check_shields(src, 0, "[M]'s [name]", MELEE_ATTACK)) + playsound(M, 'sound/weapons/genhit.ogg', 50, 1) + return FALSE if(iscyborg(user)) var/mob/living/silicon/robot/R = user if(!R.cell.use(charge_cost)) @@ -814,93 +816,3 @@ return else to_chat(user, "Your gripper cannot hold \the [target].") - -/obj/item/weapon/gripper/mining - name = "shelter capsule deployer" - desc = "A simple grasping tool for carrying and deploying shelter capsules." - icon_state = "gripper_mining" - can_hold = list( - /obj/item/survivalcapsule - ) - -/obj/item/weapon/gripper/mining/attack_self() - if(wrapped) - wrapped.forceMove(get_turf(wrapped)) - wrapped.attack_self() - wrapped = null - return - -/obj/item/gun/energy/plasmacutter/cyborg - name = "cyborg plasma cutter" - desc = "A basic variation of the plasma cutter, compressed into a cyborg chassis. Less effective than normal plasma cutters." - force = 15 - ammo_type = list(/obj/item/ammo_casing/energy/plasma/weak) - can_charge = FALSE - selfcharge = EGUN_SELFCHARGE_BORG - cell_type = /obj/item/stock_parts/cell/secborg - charge_delay = 5 - -/obj/item/cyborg_clamp - name = "cyborg loading clamp" - desc = "Equipment for supply cyborgs. Lifts objects and loads them into cargo. Will not carry living beings." - icon = 'icons/mecha/mecha_equipment.dmi' - icon_state = "mecha_clamp" - tool_behaviour = TOOL_RETRACTOR - item_flags = NOBLUDGEON - flags_1 = NONE - var/cargo_capacity = 8 - var/cargo = list() - -/obj/item/cyborg_clamp/attack(mob/M, mob/user, def_zone) - return - -/obj/item/cyborg_clamp/afterattack(atom/movable/target, mob/user, proximity) - . = ..() - if(!proximity) - return FALSE - if(isobj(target)) - var/obj/O = target - if(!O.anchored) - if(contents.len < cargo_capacity) - user.visible_message("[user] lifts [target] and starts to load it into its cargo compartment.") - O.anchored = TRUE - if(do_mob(user, O, 20)) - for(var/mob/chump in target.GetAllContents()) - to_chat(user, "Error: Living entity detected in [target]. Cannot load.") - O.anchored = initial(O.anchored) - return - for(var/obj/item/disk/nuclear/diskie in target.GetAllContents()) - to_chat(user, "Error: Nuclear class authorization device detected in [target]. Cannot load.") - O.anchored = initial(O.anchored) - return - if(contents.len < cargo_capacity) //check both before and after - cargo += O - O.forceMove(src) - O.anchored = FALSE - to_chat(user, "[target] successfully loaded.") - playsound(loc, 'sound/effects/bin_close.ogg', 50, 0) - else - to_chat(user, "Not enough room in cargo compartment! Maximum of [cargo_capacity] objects!") - O.anchored = initial(O.anchored) - return - else - O.anchored = initial(O.anchored) - else - to_chat(user, "Not enough room in cargo compartment! Maximum of eight objects!") - else - to_chat(user, "[target] is firmly secured!") - -/obj/item/cyborg_clamp/attack_self(mob/user) - var/obj/chosen_cargo = input(user, "Drop what?") as null|anything in cargo - if(!chosen_cargo) - return - chosen_cargo.forceMove(get_turf(chosen_cargo)) - cargo -= chosen_cargo - user.visible_message("[user] unloads [chosen_cargo] from its cargo.") - playsound(loc, 'sound/effects/bin_close.ogg', 50, 0) - -/obj/item/card/id/miningborg - name = "mining point card" - desc = "A robotic ID strip used for claiming and transferring mining points. Must be held in an active slot to transfer points." - access = list(ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM) - icon_state = "data_1" \ No newline at end of file diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 8c743cc3de..bf363f959c 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -173,64 +173,32 @@ R.module.basic_modules += S R.module.add_module(S, FALSE, TRUE) -/obj/item/borg/upgrade/premiumka - name = "mining cyborg premium KA" - desc = "A premium kinetic accelerator replacement for the mining module's standard kinetic accelerator." +/obj/item/borg/upgrade/soh + name = "mining cyborg satchel of holding" + desc = "A satchel of holding replacement for mining cyborg's ore satchel module." icon_state = "cyborg_upgrade3" require_module = 1 module_type = list(/obj/item/robot_module/miner) -/obj/item/borg/upgrade/premiumka/action(mob/living/silicon/robot/R, user = usr) +/obj/item/borg/upgrade/soh/action(mob/living/silicon/robot/R) . = ..() if(.) - for(var/obj/item/gun/energy/kinetic_accelerator/cyborg/KA in R.module) - for(var/obj/item/borg/upgrade/modkit/M in KA.modkits) - M.uninstall(src) - R.module.remove_module(KA, TRUE) + for(var/obj/item/storage/bag/ore/cyborg/S in R.module) + R.module.remove_module(S, TRUE) - var/obj/item/gun/energy/kinetic_accelerator/premiumka/cyborg/PKA = new /obj/item/gun/energy/kinetic_accelerator/premiumka/cyborg(R.module) - R.module.basic_modules += PKA - R.module.add_module(PKA, FALSE, TRUE) + var/obj/item/storage/bag/ore/holding/H = new /obj/item/storage/bag/ore/holding(R.module) + R.module.basic_modules += H + R.module.add_module(H, FALSE, TRUE) -/obj/item/borg/upgrade/premiumka/deactivate(mob/living/silicon/robot/R, user = usr) +/obj/item/borg/upgrade/soh/deactivate(mob/living/silicon/robot/R, user = usr) . = ..() if (.) - for(var/obj/item/gun/energy/kinetic_accelerator/premiumka/cyborg/PKA in R.module) - for(var/obj/item/borg/upgrade/modkit/M in PKA.modkits) - M.uninstall(src) - R.module.remove_module(PKA, TRUE) + for(var/obj/item/storage/bag/ore/holding/H in R.module) + R.module.remove_module(H, TRUE) - var/obj/item/gun/energy/kinetic_accelerator/cyborg/KA = new (R.module) - R.module.basic_modules += KA - R.module.add_module(KA, FALSE, TRUE) - - -/obj/item/borg/upgrade/advcutter - name = "mining cyborg advanced plasma cutter" - desc = "An upgrade for the mining cyborgs plasma cutter, bringing it to advanced operation." - icon_state = "cyborg_upgrade3" - require_module = 1 - module_type = list(/obj/item/robot_module/miner) - -/obj/item/borg/upgrade/advcutter/action(mob/living/silicon/robot/R, user = usr) - . = ..() - if(.) - for(var/obj/item/gun/energy/plasmacutter/cyborg/C in R.module) - C.name = "advanced cyborg plasma cutter" - C.desc = "An improved version of the cyborg plasma cutter. Baring functionality identical to the standard hand held version." - C.icon_state = "adv_plasmacutter" - for(var/obj/item/ammo_casing/energy/plasma/weak/L in C.ammo_type) - L.projectile_type = /obj/item/projectile/plasma/adv - -/obj/item/borg/upgrade/advcutter/deactivate(mob/living/silicon/robot/R, user = usr) - . = ..() - if (.) - for(var/obj/item/gun/energy/plasmacutter/cyborg/C in R.module) - C.name = initial(name) - C.desc = initial(desc) - C.icon_state = initial(icon_state) - for(var/obj/item/ammo_casing/energy/plasma/weak/L in C.ammo_type) - L.projectile_type = initial(L.projectile_type) + var/obj/item/storage/bag/ore/cyborg/S = new (R.module) + R.module.basic_modules += S + R.module.add_module(S, FALSE, TRUE) /obj/item/borg/upgrade/tboh name = "janitor cyborg trash bag of holding" @@ -466,15 +434,15 @@ name = "medical cyborg expanded hypospray" desc = "An upgrade to the Medical module's hypospray, allowing it \ to treat a wider range of conditions and problems." - additional_reagents = list(/datum/reagent/medicine/mannitol, /datum/reagent/medicine/oculine, /datum/reagent/medicine/inacusiate, - /datum/reagent/medicine/mutadone, /datum/reagent/medicine/haloperidol) + additional_reagents = list("mannitol", "oculine", "inacusiate", + "mutadone", "haloperidol") /obj/item/borg/upgrade/hypospray/high_strength name = "medical cyborg high-strength hypospray" desc = "An upgrade to the Medical module's hypospray, containing \ stronger versions of existing chemicals." - additional_reagents = list(/datum/reagent/medicine/oxandrolone, /datum/reagent/medicine/sal_acid, - /datum/reagent/medicine/rezadone, /datum/reagent/medicine/pen_acid) + additional_reagents = list("oxandrolone", "sal_acid", "rezadone", + "pen_acid") /obj/item/borg/upgrade/piercing_hypospray name = "cyborg piercing hypospray" diff --git a/code/game/objects/items/stacks/bscrystal.dm b/code/game/objects/items/stacks/bscrystal.dm index a660e76da1..49a735af9c 100644 --- a/code/game/objects/items/stacks/bscrystal.dm +++ b/code/game/objects/items/stacks/bscrystal.dm @@ -10,7 +10,7 @@ points = 50 var/blink_range = 8 // The teleport range when crushed/thrown at someone. refined_type = /obj/item/stack/sheet/bluespace_crystal - grind_results = list(/datum/reagent/bluespace = 20) + grind_results = list("bluespace" = 20) /obj/item/stack/ore/bluespace_crystal/refined name = "refined bluespace crystal" @@ -53,7 +53,7 @@ blink_range = 4 // Not as good as the organic stuff! points = 0 //nice try refined_type = null - grind_results = list(/datum/reagent/bluespace = 10, /datum/reagent/silicon = 20) + grind_results = list("bluespace" = 10, "silicon" = 20) //Polycrystals, aka stacks /obj/item/stack/sheet/bluespace_crystal @@ -66,7 +66,7 @@ materials = list(MAT_BLUESPACE=MINERAL_MATERIAL_AMOUNT) attack_verb = list("bluespace polybashed", "bluespace polybattered", "bluespace polybludgeoned", "bluespace polythrashed", "bluespace polysmashed") novariants = TRUE - grind_results = list(/datum/reagent/bluespace = 20) + grind_results = list("bluespace" = 20) point_value = 30 var/crystal_type = /obj/item/stack/ore/bluespace_crystal/refined diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 14c20af6b3..178bdd8a5e 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -57,7 +57,7 @@ righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' var/heal_brute = 20 self_delay = 20 - grind_results = list(/datum/reagent/medicine/styptic_powder = 10) + grind_results = list("styptic_powder" = 10) /obj/item/stack/medical/bruise_pack/heal(mob/living/M, mob/user) if(M.stat == DEAD) @@ -140,7 +140,7 @@ righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' var/heal_burn = 20 self_delay = 20 - grind_results = list(/datum/reagent/medicine/silver_sulfadiazine = 10) + grind_results = list("silver_sulfadiazine" = 10) /obj/item/stack/medical/ointment/heal(mob/living/M, mob/user) if(M.stat == DEAD) diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm index c42cfbe571..c2c6015747 100644 --- a/code/game/objects/items/stacks/sheets/light.dm +++ b/code/game/objects/items/stacks/sheets/light.dm @@ -11,7 +11,7 @@ throw_range = 7 flags_1 = CONDUCT_1 max_amount = 60 - grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/copper = 5) + grind_results = list("silicon" = 20, "copper" = 5) /obj/item/stack/light_w/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/stack/sheet/metal)) diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index d89793f08e..fe42f88f56 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -108,7 +108,7 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \ sheettype = "diamond" materials = list(MAT_DIAMOND=MINERAL_MATERIAL_AMOUNT) novariants = TRUE - grind_results = list(/datum/reagent/carbon = 20) + grind_results = list("carbon" = 20) point_value = 25 merge_type = /obj/item/stack/sheet/mineral/diamond @@ -135,7 +135,7 @@ GLOBAL_LIST_INIT(diamond_recipes, list ( \ sheettype = "uranium" materials = list(MAT_URANIUM=MINERAL_MATERIAL_AMOUNT) novariants = TRUE - grind_results = list(/datum/reagent/uranium = 20) + grind_results = list("uranium" = 20) point_value = 20 merge_type = /obj/item/stack/sheet/mineral/uranium @@ -162,7 +162,7 @@ GLOBAL_LIST_INIT(uranium_recipes, list ( \ resistance_flags = FLAMMABLE max_integrity = 100 materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT) - grind_results = list(/datum/reagent/toxin/plasma = 20) + grind_results = list("plasma" = 20) point_value = 20 merge_type = /obj/item/stack/sheet/mineral/plasma @@ -203,7 +203,7 @@ GLOBAL_LIST_INIT(plasma_recipes, list ( \ singular_name = "gold bar" sheettype = "gold" materials = list(MAT_GOLD=MINERAL_MATERIAL_AMOUNT) - grind_results = list(/datum/reagent/gold = 20) + grind_results = list("gold" = 20) point_value = 20 merge_type = /obj/item/stack/sheet/mineral/gold @@ -232,7 +232,7 @@ GLOBAL_LIST_INIT(gold_recipes, list ( \ singular_name = "silver bar" sheettype = "silver" materials = list(MAT_SILVER=MINERAL_MATERIAL_AMOUNT) - grind_results = list(/datum/reagent/silver = 20) + grind_results = list("silver" = 20) point_value = 20 merge_type = /obj/item/stack/sheet/mineral/silver tableVariant = /obj/structure/table/optable @@ -262,7 +262,7 @@ GLOBAL_LIST_INIT(silver_recipes, list ( \ sheettype = "bananium" materials = list(MAT_BANANIUM=MINERAL_MATERIAL_AMOUNT) novariants = TRUE - grind_results = list(/datum/reagent/consumable/banana = 20) + grind_results = list("banana" = 20) point_value = 50 merge_type = /obj/item/stack/sheet/mineral/bananium @@ -342,7 +342,7 @@ GLOBAL_LIST_INIT(plastitanium_recipes, list ( \ singular_name = "snow block" force = 1 throwforce = 2 - grind_results = list(/datum/reagent/consumable/ice = 20) + grind_results = list("ice" = 20) merge_type = /obj/item/stack/sheet/mineral/snow GLOBAL_LIST_INIT(snow_recipes, list ( \ @@ -422,7 +422,7 @@ GLOBAL_LIST_INIT(abductor_recipes, list ( \ icon_state = "slag" singular_name = "coal lump" merge_type = /obj/item/stack/sheet/mineral/coal - grind_results = list(/datum/reagent/carbon = 20) + grind_results = list("carbon" = 20) /obj/item/stack/sheet/mineral/coal/attackby(obj/item/W, mob/user, params) if(W.get_temperature() > 300)//If the temperature of the object is over 300, then ignite diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 89536ab53e..4fc31ea674 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -106,7 +106,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ flags_1 = CONDUCT_1 resistance_flags = FIRE_PROOF merge_type = /obj/item/stack/sheet/metal - grind_results = list(/datum/reagent/iron = 20) + grind_results = list("iron" = 20) point_value = 2 tableVariant = /obj/structure/table @@ -168,7 +168,7 @@ GLOBAL_LIST_INIT(plasteel_recipes, list ( \ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 80) resistance_flags = FIRE_PROOF merge_type = /obj/item/stack/sheet/plasteel - grind_results = list(/datum/reagent/iron = 20, /datum/reagent/toxin/plasma = 20) + grind_results = list("iron" = 20, "plasma" = 20) point_value = 23 tableVariant = /obj/structure/table/reinforced @@ -238,7 +238,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \ resistance_flags = FLAMMABLE merge_type = /obj/item/stack/sheet/mineral/wood novariants = TRUE - grind_results = list(/datum/reagent/carbon = 20) + grind_results = list("carbon" = 20) /obj/item/stack/sheet/mineral/wood/attackby(obj/item/W, mob/user, params) // NOTE: sheet_types.dm is where the WOOD stack lives. Maybe move this over there. @@ -296,7 +296,7 @@ GLOBAL_LIST_INIT(bamboo_recipes, list ( \ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 0) resistance_flags = FLAMMABLE merge_type = /obj/item/stack/sheet/mineral/bamboo - grind_results = list(/datum/reagent/carbon = 5) + grind_results = list("carbon" = 5) /obj/item/stack/sheet/mineral/bamboo/Initialize(mapload, new_amount, merge = TRUE) recipes = GLOB.bamboo_recipes @@ -398,64 +398,39 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \ * Cardboard */ GLOBAL_LIST_INIT(cardboard_recipes, list ( \ - new/datum/stack_recipe("box", /obj/item/storage/box), \ - new/datum/stack_recipe("cardborg suit", /obj/item/clothing/suit/cardborg, 3), \ - new/datum/stack_recipe("cardborg helmet", /obj/item/clothing/head/cardborg), \ - new/datum/stack_recipe("large box", /obj/structure/closet/cardboard, 4), \ - new/datum/stack_recipe("cardboard cutout", /obj/item/cardboard_cutout, 5), \ - new/datum/stack_recipe("pizza box", /obj/item/pizzabox), \ - new/datum/stack_recipe("folder", /obj/item/folder), \ - // holy fuck why are there so many boxes - new/datum/stack_recipe_list("fancy boxes", list ( \ - new /datum/stack_recipe("donut box", /obj/item/storage/fancy/donut_box), \ - new /datum/stack_recipe("egg box", /obj/item/storage/fancy/egg_box), \ - new /datum/stack_recipe("donk-pockets box", /obj/item/storage/box/donkpockets), \ - new /datum/stack_recipe("monkey cube box", /obj/item/storage/box/monkeycubes), \ - new /datum/stack_recipe("box (internals)", /obj/item/storage/box/otwo), \ - null, \ - new /datum/stack_recipe("security-styled box", /obj/item/storage/box/seclooking), \ - new /datum/stack_recipe("buckshot shell box", /obj/item/storage/box/lethalshot), \ - new /datum/stack_recipe("rubber shot shell box", /obj/item/storage/box/rubbershot), \ - new /datum/stack_recipe("beanbag shell box", /obj/item/storage/box/beanbag), \ - new /datum/stack_recipe("slug shell box", /obj/item/storage/box/lethalslugs), \ - new /datum/stack_recipe("stunslug shell box", /obj/item/storage/box/stunslug), \ - new /datum/stack_recipe("tech shell box", /obj/item/storage/box/techsslug), \ - new /datum/stack_recipe("incendiary ammo box", /obj/item/storage/box/fireshot), \ - new /datum/stack_recipe("loose ammo box", /obj/item/storage/box/ammoshells), \ - new /datum/stack_recipe("firing pins box", /obj/item/storage/box/firingpins), \ - null, \ - new /datum/stack_recipe("flashbang box", /obj/item/storage/box/flashbangs), \ - new /datum/stack_recipe("flashes box", /obj/item/storage/box/flashes), \ - new /datum/stack_recipe("handcuffs box", /obj/item/storage/box/handcuffs), \ - new /datum/stack_recipe("ID card box", /obj/item/storage/box/ids), \ - new /datum/stack_recipe("PDA box", /obj/item/storage/box/PDAs), \ - null, \ - new /datum/stack_recipe("pill bottle box", /obj/item/storage/box/pillbottles), \ - new /datum/stack_recipe("beaker box", /obj/item/storage/box/beakers), \ - new /datum/stack_recipe("syringe box", /obj/item/storage/box/syringes), \ - new /datum/stack_recipe("latex gloves box", /obj/item/storage/box/gloves), \ - new /datum/stack_recipe("sterile masks box", /obj/item/storage/box/masks), \ - new /datum/stack_recipe("body bag box", /obj/item/storage/box/bodybags), \ - new /datum/stack_recipe("prescription glasses box", /obj/item/storage/box/rxglasses), \ - null, \ - new /datum/stack_recipe("disk box", /obj/item/storage/box/disks), \ - new /datum/stack_recipe("light tubes box", /obj/item/storage/box/lights/tubes), \ - new /datum/stack_recipe("light bulbs box", /obj/item/storage/box/lights/bulbs), \ - new /datum/stack_recipe("mixed lights box", /obj/item/storage/box/lights/mixed), \ - new /datum/stack_recipe("power cell box", /obj/item/storage/box/cells), \ - new /datum/stack_recipe("mouse traps box", /obj/item/storage/box/mousetraps), \ - new /datum/stack_recipe("candle box", /obj/item/storage/fancy/candle_box), \ - null, \ - new /datum/stack_recipe("box (brown)", /obj/item/storage/box/brown), \ - new /datum/stack_recipe("box (green)", /obj/item/storage/box/green), \ - new /datum/stack_recipe("box (blue)", /obj/item/storage/box/blue), \ - new /datum/stack_recipe("box (red)", /obj/item/storage/box/red), \ - new /datum/stack_recipe("box (yellow)", /obj/item/storage/box/yellow), \ - new /datum/stack_recipe("box (pink)", /obj/item/storage/box/pink), \ - new /datum/stack_recipe("box (purple)", /obj/item/storage/box/purple), \ - )), - null, \ -)) + new/datum/stack_recipe("box", /obj/item/storage/box), \ + new/datum/stack_recipe("sec box", /obj/item/storage/box/seclooking), \ + new/datum/stack_recipe("light tubes", /obj/item/storage/box/lights/tubes), \ + new/datum/stack_recipe("light bulbs", /obj/item/storage/box/lights/bulbs), \ + new/datum/stack_recipe("mouse traps", /obj/item/storage/box/mousetraps), \ + new/datum/stack_recipe("pizza box", /obj/item/pizzabox), \ + new/datum/stack_recipe("power cell", /obj/item/storage/box/cells), \ + new/datum/stack_recipe("02", /obj/item/storage/box/otwo), \ + null, \ + new/datum/stack_recipe("lethal ammo box", /obj/item/storage/box/lethalshot), \ + new/datum/stack_recipe("rubber shot ammo box", /obj/item/storage/box/rubbershot), \ + new/datum/stack_recipe("bean bag ammo box", /obj/item/storage/box/beanbag), \ + new/datum/stack_recipe("12g ammo box", /obj/item/storage/box/lethalslugs), \ + new/datum/stack_recipe("stun slug ammo box", /obj/item/storage/box/stunslug), \ + new/datum/stack_recipe("tech shell ammo box", /obj/item/storage/box/techsslug), \ + new/datum/stack_recipe("incendiary ammo box", /obj/item/storage/box/fireshot), \ + new/datum/stack_recipe("firing pins", /obj/item/storage/box/firingpins), \ + new/datum/stack_recipe("loose ammo", /obj/item/storage/box/ammoshells), \ + null, \ + new/datum/stack_recipe("cardborg suit", /obj/item/clothing/suit/cardborg, 3), \ + new/datum/stack_recipe("cardborg helmet", /obj/item/clothing/head/cardborg), \ + new/datum/stack_recipe("folder", /obj/item/folder), \ + new/datum/stack_recipe("large box", /obj/structure/closet/cardboard, 4), \ + new/datum/stack_recipe("cardboard cutout", /obj/item/cardboard_cutout, 5), \ + null, \ + new/datum/stack_recipe("colored brown", /obj/item/storage/box/brown), \ + new/datum/stack_recipe("colored green", /obj/item/storage/box/green), \ + new/datum/stack_recipe("colored red", /obj/item/storage/box/blue), \ + new/datum/stack_recipe("colored blue", /obj/item/storage/box/red), \ + new/datum/stack_recipe("colored yellow", /obj/item/storage/box/yellow), \ + new/datum/stack_recipe("colored pink", /obj/item/storage/box/pink), \ + new/datum/stack_recipe("colored purple", /obj/item/storage/box/purple), \ + )) /obj/item/stack/sheet/cardboard //BubbleWrap //it's cardboard you fuck name = "cardboard" @@ -481,7 +456,7 @@ GLOBAL_LIST_INIT(cardboard_recipes, list ( \ var/atom/droploc = drop_location() if(use(1)) playsound(I, 'sound/items/bikehorn.ogg', 50, 1, -1) - to_chat(user, "You stamp the cardboard! It's a clown box! Honk!") + to_chat(user, "You stamp the cardboard! Its a clown box! Honk!") if (amount >= 0) new/obj/item/storage/box/clown(droploc) //bugfix else @@ -511,7 +486,7 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list ( \ sheettype = "runed" merge_type = /obj/item/stack/sheet/runed_metal novariants = TRUE - grind_results = list(/datum/reagent/iron = 5, /datum/reagent/blood = 15) + grind_results = list("iron" = 5, "blood" = 15) /obj/item/stack/sheet/runed_metal/ratvar_act() new /obj/item/stack/tile/brass(loc, amount) @@ -546,30 +521,31 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list ( \ */ GLOBAL_LIST_INIT(brass_recipes, list ( \ new/datum/stack_recipe("wall gear", /obj/structure/destructible/clockwork/wall_gear, 3, time = 10, one_per_turf = TRUE, on_floor = TRUE), \ - null, \ + null, new/datum/stack_recipe("brass pinion airlock", /obj/machinery/door/airlock/clockwork, 5, time = 50, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("brass pinion airlock - windowed", /obj/machinery/door/airlock/clockwork/brass, 5, time = 50, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("brass windoor", /obj/machinery/door/window/clockwork, 2, time = 30, on_floor = TRUE, window_checks = TRUE), \ - null, \ + null, new/datum/stack_recipe("brass reflector", /obj/structure/destructible/clockwork/reflector, 10, time = 100, one_per_turf = TRUE, on_floor = TRUE, window_checks = TRUE), \ - null, \ + null, new/datum/stack_recipe("brass window - directional", /obj/structure/window/reinforced/clockwork/unanchored, time = 0, on_floor = TRUE, window_checks = TRUE), \ new/datum/stack_recipe("brass window - fulltile", /obj/structure/window/reinforced/clockwork/fulltile/unanchored, 2, time = 0, on_floor = TRUE, window_checks = TRUE), \ new/datum/stack_recipe("brass chair", /obj/structure/chair/brass, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("brass bar stool", /obj/structure/chair/stool/bar/brass, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("brass stool", /obj/structure/chair/stool/brass, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("brass table frame", /obj/structure/table_frame/brass, 1, time = 5, one_per_turf = TRUE, on_floor = TRUE), \ - null, \ + null, new/datum/stack_recipe("sender - pressure sensor", /obj/structure/destructible/clockwork/trap/trigger/pressure_sensor, 2, time = 20, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("sender - mech sensor", /obj/structure/destructible/clockwork/trap/trigger/pressure_sensor/mech, 2, time = 20, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("sender - lever", /obj/structure/destructible/clockwork/trap/trigger/lever, 1, time = 10, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("sender - repeater", /obj/structure/destructible/clockwork/trap/trigger/repeater, 2, time = 20, one_per_turf = TRUE, on_floor = TRUE), \ - null, \ + null, new/datum/stack_recipe("receiver - brass skewer", /obj/structure/destructible/clockwork/trap/brass_skewer, 2, time = 20, one_per_turf = TRUE, on_floor = TRUE, placement_checks = STACK_CHECK_ADJACENT), \ new/datum/stack_recipe("receiver - steam vent", /obj/structure/destructible/clockwork/trap/steam_vent, 3, time = 30, one_per_turf = TRUE, on_floor = TRUE, placement_checks = STACK_CHECK_CARDINALS), \ new/datum/stack_recipe("receiver - power nullifier", /obj/structure/destructible/clockwork/trap/power_nullifier, 5, time = 20, one_per_turf = TRUE, on_floor = TRUE, placement_checks = STACK_CHECK_CARDINALS), \ - null, \ + null, new/datum/stack_recipe("brass flask", /obj/item/reagent_containers/food/drinks/bottle/holyoil/empty), \ + )) /obj/item/stack/tile/brass @@ -586,7 +562,7 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \ throw_range = 3 turf_type = /turf/open/floor/clockwork novariants = FALSE - grind_results = list(/datum/reagent/iron = 5, /datum/reagent/teslium = 15, /datum/reagent/fuel/holyoil = 1) + grind_results = list("iron" = 5, "teslium" = 15, "holyoil" = 1) merge_type = /obj/item/stack/tile/brass tableVariant = /obj/structure/table/reinforced/brass @@ -639,7 +615,7 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \ throw_range = 3 turf_type = /turf/open/floor/bronze novariants = FALSE - grind_results = list(/datum/reagent/iron = 5, /datum/reagent/copper = 3) //we have no "tin" reagent so this is the closest thing + grind_results = list("iron" = 5, "copper" = 3) //we have no "tin" reagent so this is the closest thing merge_type = /obj/item/stack/tile/bronze tableVariant = /obj/structure/table/bronze @@ -693,12 +669,11 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \ w_class = WEIGHT_CLASS_NORMAL throw_speed = 1 throw_range = 3 - grind_results = list(/datum/reagent/carbon = 10) + grind_results = list("carbon" = 10) merge_type = /obj/item/stack/sheet/bone GLOBAL_LIST_INIT(plastic_recipes, list( - new /datum/stack_recipe("see-through plastic flaps", /obj/structure/plasticflaps, 5, one_per_turf = TRUE, on_floor = TRUE, time = 40), \ - new /datum/stack_recipe("opaque plastic flaps", /obj/structure/plasticflaps/opaque, 5, one_per_turf = TRUE, on_floor = TRUE, time = 40), \ + new /datum/stack_recipe("plastic flaps", /obj/structure/plasticflaps, 5, one_per_turf = TRUE, on_floor = TRUE, time = 40), \ new /datum/stack_recipe("water bottle", /obj/item/reagent_containers/glass/beaker/waterbottle/empty), \ new /datum/stack_recipe("large water bottle", /obj/item/reagent_containers/glass/beaker/waterbottle/large/empty,3), \ new /datum/stack_recipe("large trash cart", /obj/structure/closet/crate/bin,50),\ diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 4180681754..e8bd50f19b 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -192,15 +192,9 @@ var/obj/O if(R.max_res_amount > 1) //Is it a stack? O = new R.result_type(usr.drop_location(), R.res_amount * multiplier) - else if(ispath(R.result_type, /turf)) - var/turf/T = usr.drop_location() - if(!isturf(T)) - return - T.PlaceOnTop(R.result_type, flags = CHANGETURF_INHERIT_AIR) else O = new R.result_type(usr.drop_location()) - if(O) - O.setDir(usr.dir) + O.setDir(usr.dir) use(R.req_amount * multiplier) //START: oh fuck i'm so sorry @@ -445,4 +439,4 @@ /datum/stack_recipe_list/New(title, recipes) src.title = title - src.recipes = recipes + src.recipes = recipes \ No newline at end of file diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index 7664da6ce4..eafa79798e 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -110,7 +110,6 @@ var/spam_protection = FALSE //If this is TRUE, the holder won't receive any messages when they fail to pick up ore through crossing it var/mob/listeningTo rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE - var/range = null /obj/item/storage/bag/ore/ComponentInitialize() . = ..() @@ -131,8 +130,7 @@ /obj/item/storage/bag/ore/dropped() . = ..() - if(listeningTo) - UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED) + UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED) listeningTo = null /obj/item/storage/bag/ore/proc/Pickup_ores(mob/living/user) @@ -143,21 +141,12 @@ return if (istype(user.pulling, /obj/structure/ore_box)) box = user.pulling - if(issilicon(user)) - var/mob/living/silicon/robot/borgo = user - for(var/obj/item/cyborg_clamp/C in borgo.module.modules) - for(var/obj/structure/ore_box/B in C) - box = B - var/datum/component/storage/STR = GetComponent(/datum/component/storage) if(STR) for(var/A in tile) if (!is_type_in_typecache(A, STR.can_hold)) continue if (box) - if(range) - for(var/obj/item/stack/ore/ore in range(range, user)) - user.transferItemToLoc(ore, box) user.transferItemToLoc(A, box) show_message = TRUE else if(SEND_SIGNAL(src, COMSIG_TRY_STORAGE_INSERT, A, user, TRUE)) @@ -179,7 +168,6 @@ /obj/item/storage/bag/ore/cyborg name = "cyborg mining satchel" - range = 1 /obj/item/storage/bag/ore/cyborg/ComponentInitialize() . = ..() diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 0961726e6e..3a4579d3f8 100755 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -24,7 +24,7 @@ add_overlay(M) ..() -/obj/item/storage/belt/worn_overlays(isinhands, icon_file, style_flags = NONE) +/obj/item/storage/belt/worn_overlays(isinhands, icon_file) . = ..() if(!isinhands && worn_overlays) for(var/obj/item/I in contents) @@ -61,7 +61,6 @@ /obj/item/radio, /obj/item/clothing/gloves, /obj/item/holosign_creator, - /obj/item/forcefield_projector, /obj/item/assembly/signaler )) STR.can_hold = can_hold @@ -459,7 +458,8 @@ /obj/item/extinguisher/mini, /obj/item/radio, /obj/item/clothing/gloves, - /obj/item/holosign_creator, + /obj/item/holosign_creator/atmos, + /obj/item/holosign_creator/engineering, /obj/item/forcefield_projector, /obj/item/assembly/signaler, /obj/item/lightreplacer, @@ -571,7 +571,6 @@ /obj/item/reagent_containers/spray, /obj/item/soap, /obj/item/holosign_creator, - /obj/item/forcefield_projector, /obj/item/key/janitor, /obj/item/clothing/gloves, /obj/item/melee/flyswatter, @@ -583,7 +582,7 @@ /obj/item/storage/belt/bandolier name = "bandolier" - desc = "A bandolier for holding ammunition." + desc = "A bandolier for holding shotgun ammunition." icon_state = "bandolier" item_state = "bandolier" @@ -593,7 +592,7 @@ STR.max_items = 18 STR.display_numerical_stacking = TRUE STR.can_hold = typecacheof(list( - /obj/item/ammo_casing + /obj/item/ammo_casing/shotgun )) /obj/item/storage/belt/bandolier/durathread diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index e47021c1f6..c658eee3d5 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -163,16 +163,16 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", for(var/obj/effect/rune/R in orange(2,user)) R.invisibility = 0 if(user.mind && (user.mind.isholy)) - if(A.reagents && A.reagents.has_reagent(/datum/reagent/water)) // blesses all the water in the holder + if(A.reagents && A.reagents.has_reagent("water")) // blesses all the water in the holder to_chat(user, "You bless [A].") - var/water2holy = A.reagents.get_reagent_amount(/datum/reagent/water) - A.reagents.del_reagent(/datum/reagent/water) - A.reagents.add_reagent(/datum/reagent/water/holywater,water2holy) - if(A.reagents && A.reagents.has_reagent(/datum/reagent/fuel/unholywater)) // yeah yeah, copy pasted code - sue me + var/water2holy = A.reagents.get_reagent_amount("water") + A.reagents.del_reagent("water") + A.reagents.add_reagent("holywater",water2holy) + if(A.reagents && A.reagents.has_reagent("unholywater")) // yeah yeah, copy pasted code - sue me to_chat(user, "You purify [A].") - var/unholy2clean = A.reagents.get_reagent_amount(/datum/reagent/fuel/unholywater) - A.reagents.del_reagent(/datum/reagent/fuel/unholywater) - A.reagents.add_reagent(/datum/reagent/water/holywater,unholy2clean) + var/unholy2clean = A.reagents.get_reagent_amount("unholywater") + A.reagents.del_reagent("unholywater") + A.reagents.add_reagent("holywater",unholy2clean) if(istype(A, /obj/item/twohanded/required/cult_bastard) && !iscultist(user)) var/obj/item/twohanded/required/cult_bastard/sword = A to_chat(user, "You begin to exorcise [sword].") diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index 4b2b3e2203..e214db3c71 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -1259,12 +1259,3 @@ var/obj/item/stack/sheet/cardboard/I = new(user.drop_location()) qdel(src) user.put_in_hands(I) - -/obj/item/storage/box/marshmallow - name = "box of marshmallows" - desc = "A box of marshmallows." - illustration = "marshmallow" - -/obj/item/storage/box/marshmallow/PopulateContents() - for (var/i in 1 to 5) - new /obj/item/reagent_containers/food/snacks/marshmallow(src) \ No newline at end of file diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm index 0ff20f16c5..8c96e567d1 100644 --- a/code/game/objects/items/storage/firstaid.dm +++ b/code/game/objects/items/storage/firstaid.dm @@ -205,7 +205,7 @@ new /obj/item/healthanalyzer/advanced(src) new /obj/item/reagent_containers/syringe/lethal/choral(src) // what the fuck does anyone use this piece of shit for new /obj/item/clothing/glasses/hud/health/night(src) - + /* * Pill Bottles */ @@ -439,8 +439,8 @@ if(empty) return new /obj/item/hypospray/mkii/tricord(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/tricord(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/tricord(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord(src) /obj/item/storage/hypospraykit/fire name = "burn treatment hypospray kit" @@ -452,8 +452,8 @@ if(empty) return new /obj/item/hypospray/mkii/burn(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/kelotane(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/kelotane(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane(src) /obj/item/storage/hypospraykit/toxin name = "toxin treatment hypospray kit" @@ -464,8 +464,8 @@ if(empty) return new /obj/item/hypospray/mkii/toxin(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/antitoxin(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/antitoxin(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin(src) /obj/item/storage/hypospraykit/o2 name = "oxygen deprivation hypospray kit" @@ -476,8 +476,8 @@ if(empty) return new /obj/item/hypospray/mkii/oxygen(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/dexalin(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/dexalin(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin(src) /obj/item/storage/hypospraykit/enlarge name = "organomegaly trauma hypospray kit" @@ -488,12 +488,12 @@ if(empty) return new /obj/item/hypospray/mkii/enlarge(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/breastreduction(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/breastreduction(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/breastreduction(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/penisreduction(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/penisreduction(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/penisreduction(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/breastreduction(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/breastreduction(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/breastreduction(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/penisreduction(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/penisreduction(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/penisreduction(src) /obj/item/storage/hypospraykit/brute name = "brute trauma hypospray kit" @@ -504,8 +504,8 @@ if(empty) return new /obj/item/hypospray/mkii/brute(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/bicaridine(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/bicaridine(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine(src) /obj/item/storage/hypospraykit/tactical name = "combat hypospray kit" @@ -517,8 +517,8 @@ return new /obj/item/defibrillator/compact/combat/loaded(src) new /obj/item/hypospray/mkii/CMO/combat(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/combat(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/combat(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat(src) /obj/item/storage/hypospraykit/cmo name = "deluxe hypospray kit" @@ -537,11 +537,11 @@ if(empty) return new /obj/item/hypospray/mkii/CMO(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/tricord(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/charcoal(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/salglu(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/dexalin(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/synthflesh(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/tricord(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/charcoal(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/salglu(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/dexalin(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/synthflesh(src) /obj/item/storage/box/vials name = "box of hypovials" diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index 70c3a5dd4b..1e37de2581 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -225,31 +225,16 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) STR.max_items = 10 /obj/item/storage/toolbox/artistic/PopulateContents() - new /obj/item/storage/crayons(src) - new /obj/item/crowbar(src) - new /obj/item/stack/cable_coil/red(src) - new /obj/item/stack/cable_coil/yellow(src) - new /obj/item/stack/cable_coil/blue(src) - new /obj/item/stack/cable_coil/green(src) - new /obj/item/stack/cable_coil/pink(src) - new /obj/item/stack/cable_coil/orange(src) - new /obj/item/stack/cable_coil/cyan(src) - new /obj/item/stack/cable_coil/white(src) - -/obj/item/storage/toolbox/ammo - name = "ammo box" - desc = "It contains a few clips." - icon_state = "ammobox" - item_state = "ammobox" - -/obj/item/storage/toolbox/ammo/PopulateContents() - new /obj/item/ammo_box/a762(src) - new /obj/item/ammo_box/a762(src) - new /obj/item/ammo_box/a762(src) - new /obj/item/ammo_box/a762(src) - new /obj/item/ammo_box/a762(src) - new /obj/item/ammo_box/a762(src) - new /obj/item/ammo_box/a762(src) + new/obj/item/storage/crayons(src) + new/obj/item/crowbar(src) + new/obj/item/stack/cable_coil/red(src) + new/obj/item/stack/cable_coil/yellow(src) + new/obj/item/stack/cable_coil/blue(src) + new/obj/item/stack/cable_coil/green(src) + new/obj/item/stack/cable_coil/pink(src) + new/obj/item/stack/cable_coil/orange(src) + new/obj/item/stack/cable_coil/cyan(src) + new/obj/item/stack/cable_coil/white(src) /obj/item/storage/toolbox/gold_real name = "golden toolbox" @@ -329,4 +314,4 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) generate_rubber_toolbox_icon() icon = GLOB.rubber_toolbox_icons[icon_state] . = ..() - AddComponent(/datum/component/bouncy) + AddComponent(/datum/component/bouncy) \ No newline at end of file diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm index 6972587263..484b9862ff 100644 --- a/code/game/objects/items/stunbaton.dm +++ b/code/game/objects/items/stunbaton.dm @@ -36,7 +36,7 @@ . = ..() if(preload_cell_type) if(!ispath(preload_cell_type,/obj/item/stock_parts/cell)) - log_mapping("[src] at [AREACOORD(src)] had an invalid preload_cell_type: [preload_cell_type].") + log_world("### MAP WARNING, [src] at [AREACOORD(src)] had an invalid preload_cell_type: [preload_cell_type].") else cell = new preload_cell_type(src) update_icon() @@ -168,9 +168,11 @@ /obj/item/melee/baton/proc/baton_stun(mob/living/L, mob/user) - if(L.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) //No message; check_shields() handles that - playsound(L, 'sound/weapons/genhit.ogg', 50, 1) - return FALSE + if(ishuman(L)) + var/mob/living/carbon/human/H = L + if(H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) //No message; check_shields() handles that + playsound(L, 'sound/weapons/genhit.ogg', 50, 1) + return FALSE var/stunpwr = stunforce var/obj/item/stock_parts/cell/our_cell = get_cell() if(!our_cell) diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index c1cbf534ca..f3be8cefc8 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -148,7 +148,7 @@ /obj/item/watertank/janitor/Initialize() . = ..() - reagents.add_reagent(/datum/reagent/space_cleaner, 500) + reagents.add_reagent("cleaner", 500) /obj/item/reagent_containers/spray/mister/janitor name = "janitor spray nozzle" @@ -184,7 +184,7 @@ /obj/item/watertank/atmos/Initialize() . = ..() - reagents.add_reagent(/datum/reagent/water, 200) + reagents.add_reagent("water", 200) /obj/item/watertank/atmos/make_noz() return new /obj/item/extinguisher/mini/nozzle(src) @@ -376,7 +376,7 @@ filling.color = mix_color_from_reagents(reagents.reagent_list) add_overlay(filling) -/obj/item/reagent_containers/chemtank/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) //apply chemcolor and level +/obj/item/reagent_containers/chemtank/worn_overlays(var/isinhands = FALSE) //apply chemcolor and level . = list() //inhands + reagent_filling if(!isinhands && reagents.total_volume) @@ -436,13 +436,13 @@ /obj/item/watertank/op/Initialize() . = ..() - reagents.add_reagent(/datum/reagent/toxin/mutagen,350) - reagents.add_reagent(/datum/reagent/napalm,125) - reagents.add_reagent(/datum/reagent/fuel,125) - reagents.add_reagent(/datum/reagent/clf3,300) - reagents.add_reagent(/datum/reagent/cryptobiolin,350) - reagents.add_reagent(/datum/reagent/toxin/plasma,250) - reagents.add_reagent(/datum/reagent/consumable/condensedcapsaicin,500) + reagents.add_reagent("mutagen",350) + reagents.add_reagent("napalm",125) + reagents.add_reagent("welding_fuel",125) + reagents.add_reagent("clf3",300) + reagents.add_reagent("cryptobiolin",350) + reagents.add_reagent("plasma",250) + reagents.add_reagent("condensedcapsaicin",500) /obj/item/reagent_containers/spray/mister/op desc = "A mister nozzle attached to several extended water tanks. It suspiciously has a compressor in the system and is labelled entirely in New Cyrillic." diff --git a/code/game/objects/items/telescopic_iv.dm b/code/game/objects/items/telescopic_iv.dm deleted file mode 100644 index 9b0b714ea5..0000000000 --- a/code/game/objects/items/telescopic_iv.dm +++ /dev/null @@ -1,17 +0,0 @@ -/obj/item/tele_iv - name = "telescopic IV drip" - desc = "An IV drip with an advanced infusion pump that can both drain blood into and inject liquids from attached containers. Blood packs are processed at an accelerated rate. This one is telescopic, and can be picked up and put down." - icon = 'icons/obj/iv_drip.dmi' - icon_state = "tele_iv" - -/obj/item/tele_iv/attack_self(mob/user) - deploy_iv(user, user.loc) - -/obj/item/tele_iv/afterattack(atom/target, mob/user, proximity) - . = ..() - if(proximity && isopenturf(target) && user.CanReach(target)) - deploy_iv(user, target) - -/obj/item/tele_iv/proc/deploy_iv(mob/user, atom/location) - new /obj/machinery/iv_drip/telescopic(location) - qdel(src) diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm index 599577a85b..91a94e05c3 100644 --- a/code/game/objects/items/tools/screwdriver.dm +++ b/code/game/objects/items/tools/screwdriver.dm @@ -53,7 +53,7 @@ base_overlay.appearance_flags = RESET_COLOR add_overlay(base_overlay) -/obj/item/screwdriver/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) +/obj/item/screwdriver/worn_overlays(isinhands = FALSE, icon_file) . = list() if(isinhands && random_color) var/mutable_appearance/M = mutable_appearance(icon_file, "screwdriver_head") diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index a74ce67128..65b240c528 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -37,7 +37,7 @@ /obj/item/weldingtool/Initialize() . = ..() create_reagents(max_fuel) - reagents.add_reagent(/datum/reagent/fuel, max_fuel) + reagents.add_reagent("welding_fuel", max_fuel) update_icon() @@ -97,7 +97,7 @@ /obj/item/weldingtool/proc/explode() var/turf/T = get_turf(loc) - var/plasmaAmount = reagents.get_reagent_amount(/datum/reagent/toxin/plasma) + var/plasmaAmount = reagents.get_reagent_amount("plasma") dyn_explosion(T, plasmaAmount/5)//20 plasma in a standard welder has a 4 power explosion. no breaches, but enough to kill/dismember holder qdel(src) @@ -142,7 +142,7 @@ /obj/item/weldingtool/attack_self(mob/user) - if(src.reagents.has_reagent(/datum/reagent/toxin/plasma)) + if(src.reagents.has_reagent("plasma")) message_admins("[ADMIN_LOOKUPFLW(user)] activated a rigged welder at [AREACOORD(user)].") explode() switched_on(user) @@ -154,7 +154,7 @@ // Returns the amount of fuel in the welder /obj/item/weldingtool/proc/get_fuel() - return reagents.get_reagent_amount(/datum/reagent/fuel) + return reagents.get_reagent_amount("welding_fuel") // Uses fuel from the welding tool. @@ -165,7 +165,7 @@ if(used) burned_fuel_for = 0 if(get_fuel() >= used) - reagents.remove_reagent(/datum/reagent/fuel, used) + reagents.remove_reagent("welding_fuel", used) check_fuel() return TRUE else @@ -333,7 +333,7 @@ /obj/item/weldingtool/abductor/process() if(get_fuel() <= max_fuel) - reagents.add_reagent(/datum/reagent/fuel, 1) + reagents.add_reagent("welding_fuel", 1) ..() /obj/item/weldingtool/hugetank @@ -377,7 +377,7 @@ ..() if(get_fuel() < max_fuel && nextrefueltick < world.time) nextrefueltick = world.time + 10 - reagents.add_reagent(/datum/reagent/fuel, 1) + reagents.add_reagent("welding_fuel", 1) /obj/item/weldingtool/advanced name = "advanced welding tool" @@ -390,7 +390,7 @@ /obj/item/weldingtool/advanced/process() if(get_fuel() <= max_fuel) - reagents.add_reagent(/datum/reagent/fuel, 1) + reagents.add_reagent("welding_fuel", 1) ..() #undef WELDER_FUEL_BURN_INTERVAL diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index cf891f5a47..08c43f0437 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -353,7 +353,7 @@ update_light() return TRUE -/obj/item/toy/sword/cx/worn_overlays(isinhands, icon_file, style_flags = NONE) +/obj/item/toy/sword/cx/worn_overlays(isinhands, icon_file) . = ..() if(active) if(isinhands) diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index 97f53d3ca7..b2158eb1c8 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -70,12 +70,12 @@ name = "crushed can" icon_state = "cola" resistance_flags = NONE - grind_results = list(/datum/reagent/aluminium = 10) + grind_results = list("aluminium" = 10) /obj/item/trash/boritos name = "boritos bag" icon_state = "boritos" - grind_results = list(/datum/reagent/aluminium = 1) //from the mylar bag + grind_results = list("aluminium" = 1) //from the mylar bag /obj/item/trash/attack(mob/M, mob/living/user) return diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index b9862c3423..dd7d46d0d7 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -556,7 +556,7 @@ update_light() return TRUE -/obj/item/twohanded/dualsaber/hypereutactic/worn_overlays(isinhands, icon_file, style_flags = NONE) +/obj/item/twohanded/dualsaber/hypereutactic/worn_overlays(isinhands, icon_file) . = ..() if(isinhands) var/mutable_appearance/gem_inhand = mutable_appearance(icon_file, "hypereutactic_gem") @@ -781,11 +781,6 @@ throwforce = 20 throw_speed = 4 attack_verb = list("gored") - var/clonechance = 50 - var/clonedamage = 12 - var/clonespeed = 0 - var/clone_replication_chance = 30 - var/clone_lifespan = 100 /obj/item/twohanded/spear/grey_tide/afterattack(atom/movable/AM, mob/living/user, proximity) . = ..() @@ -796,11 +791,10 @@ var/mob/living/L = AM if(istype (L, /mob/living/simple_animal/hostile/illusion)) return - if(!L.stat && prob(clonechance)) + if(!L.stat && prob(50)) var/mob/living/simple_animal/hostile/illusion/M = new(user.loc) M.faction = user.faction.Copy() - M.set_varspeed(clonespeed) - M.Copy_Parent(user, clone_lifespan, user.health/2.5, clonedamage, clone_replication_chance) + M.Copy_Parent(user, 100, user.health/2.5, 12, 30) M.GiveTarget(L) /obj/item/twohanded/pitchfork @@ -878,7 +872,7 @@ user.visible_message("[user] blasts \the [target] with \the [src]!") playsound(target, 'sound/magic/disintegrate.ogg', 100, 1) W.break_wall() - W.ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + W.ScrapeAway() return //HF blade @@ -1016,4 +1010,4 @@ var/client/C = user.client C.change_view(CONFIG_GET(string/default_view)) user.client.pixel_x = 0 - user.client.pixel_y = 0 + user.client.pixel_y = 0 \ No newline at end of file diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 14ac2f037e..f5dfa690db 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -80,12 +80,13 @@ SEND_SIGNAL(src, COMSIG_OBJ_SETANCHORED, anchorvalue) anchored = anchorvalue -/obj/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback, messy_throw) - . = ..() +/obj/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback) + ..() if(obj_flags & FROZEN) visible_message("[src] shatters into a million pieces!") qdel(src) + /obj/assume_air(datum/gas_mixture/giver) if(loc) return loc.assume_air(giver) diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index 9fa4d730b6..e61a17b4ec 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -88,28 +88,6 @@ else return ..() -/obj/structure/chair/alt_attack_hand(mob/living/user) - if(Adjacent(user) && istype(user)) - if(!item_chair || !user.can_hold_items() || !has_buckled_mobs() || buckled_mobs.len > 1 || dir != user.dir || flags_1 & NODECONSTRUCT_1) - return TRUE - if(!user.canUseTopic(src, BE_CLOSE, ismonkey(user))) - to_chat(user, "You can't do that right now!") - return TRUE - if(user.getStaminaLoss() >= STAMINA_SOFTCRIT) - to_chat(user, "You're too exhausted for that.") - return TRUE - var/mob/living/poordude = buckled_mobs[1] - if(!istype(poordude)) - return TRUE - user.visible_message("[user] pulls [src] out from under [poordude].", "You pull [src] out from under [poordude].") - var/C = new item_chair(loc) - user.put_in_hands(C) - poordude.Knockdown(20)//rip in peace - user.adjustStaminaLoss(5) - unbuckle_all_mobs(TRUE) - qdel(src) - return TRUE - /obj/structure/chair/attack_tk(mob/user) if(!anchored || has_buckled_mobs() || !isturf(user.loc)) ..() diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 9935fc8ec5..82a0c4d32f 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -252,7 +252,7 @@ LINEN BINS add_overlay(g_mouth) add_overlay(g_eyes) -/obj/item/bedsheet/gondola/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) +/obj/item/bedsheet/gondola/worn_overlays(isinhands = FALSE, icon_file) . = ..() if(!isinhands) . += mutable_appearance(icon_file, g_mouth) diff --git a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm index 645d1e5d7a..aad68b2166 100644 --- a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm +++ b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm @@ -22,9 +22,7 @@ if(opened || move_delay || user.stat || user.IsStun() || user.IsKnockdown() || user.IsUnconscious() || !isturf(loc) || !has_gravity(loc)) return move_delay = TRUE - var/oldloc = loc - step(src, direction) - if(oldloc != loc) + if(step(src, direction)) addtimer(CALLBACK(src, .proc/ResetMoveDelay), (use_mob_movespeed ? user.movement_delay() : CONFIG_GET(number/movedelay/walk_delay)) * move_speed_multiplier) else ResetMoveDelay() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index c26dc78e52..8da50d488f 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -12,12 +12,18 @@ new /obj/item/clothing/head/hardhat/white(src) new /obj/item/clothing/head/hardhat/weldhat/white(src) new /obj/item/clothing/gloves/color/yellow(src) + new /obj/item/clothing/shoes/sneakers/brown(src) new /obj/item/tank/jetpack/suit(src) new /obj/item/cartridge/ce(src) new /obj/item/radio/headset/heads/ce(src) + new /obj/item/storage/toolbox/mechanical(src) + new /obj/item/clothing/suit/hazardvest(src) new /obj/item/megaphone/command(src) new /obj/item/areaeditor/blueprints(src) + new /obj/item/airlock_painter(src) new /obj/item/holosign_creator/engineering(src) + new /obj/item/clothing/mask/gas(src) + new /obj/item/multitool(src) new /obj/item/assembly/flash/handheld(src) new /obj/item/clothing/glasses/meson/engine(src) new /obj/item/door_remote/chief_engineer(src) @@ -61,7 +67,7 @@ for(var/i in 1 to 3) new /obj/item/clothing/head/welding(src) for(var/i in 1 to 3) - new /obj/item/weldingtool/largetank(src) + new /obj/item/weldingtool(src) /obj/structure/closet/secure_closet/engineering_personal name = "engineer's locker" @@ -78,6 +84,7 @@ new /obj/item/clothing/glasses/meson/engine(src) new /obj/item/storage/box/emptysandbags(src) + /obj/structure/closet/secure_closet/atmospherics name = "\proper atmospheric technician's locker" req_access = list(ACCESS_ATMOSPHERICS) @@ -91,39 +98,8 @@ new /obj/item/tank/internals/emergency_oxygen/engi(src) new /obj/item/analyzer(src) new /obj/item/holosign_creator/atmos(src) - new /obj/item/holosign_creator/firelock(src) new /obj/item/watertank/atmos(src) new /obj/item/clothing/suit/fire/atmos(src) new /obj/item/clothing/head/hardhat/atmos(src) new /obj/item/clothing/glasses/meson/engine/tray(src) new /obj/item/extinguisher/advanced(src) - -/* - * Empty lockers - * Some of the lockers are filled with junk, and sometimes its nice to just fill it with your own set-up for your own map gimmicks. - */ - -/obj/structure/closet/secure_closet/engineering_chief/empty - -/obj/structure/closet/secure_closet/engineering_chief/empty/PopulateContents() - return - -/obj/structure/closet/secure_closet/engineering_electrical/empty - -/obj/structure/closet/secure_closet/engineering_electrical/empty/PopulateContents() - return - -/obj/structure/closet/secure_closet/engineering_welding/empty - -/obj/structure/closet/secure_closet/engineering_welding/empty/PopulateContents() - return - -/obj/structure/closet/secure_closet/engineering_personal/empty - -/obj/structure/closet/secure_closet/engineering_personal/empty/PopulateContents() - return - -/obj/structure/closet/secure_closet/atmospherics/empty - -/obj/structure/closet/secure_closet/atmospherics/empty/PopulateContents() - return diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 8b078802f0..771b4bc04e 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -237,12 +237,6 @@ start_showpiece_type = /obj/item/clothing/mask/facehugger/lamarr req_access = list(ACCESS_RD) -/obj/structure/displaycase/clown - desc = "In the event of clown, honk glass." - alert = TRUE - start_showpiece_type = /obj/item/bikehorn - req_access = list(ACCESS_CENT_GENERAL) - /obj/structure/displaycase/trophy name = "trophy display case" desc = "Store your trophies of accomplishment in here, and they will stay forever." diff --git a/code/game/objects/structures/divine.dm b/code/game/objects/structures/divine.dm index 1da8a26b52..e7a0ac2d04 100644 --- a/code/game/objects/structures/divine.dm +++ b/code/game/objects/structures/divine.dm @@ -39,7 +39,7 @@ return last_process = world.time to_chat(user, "The water feels warm and soothing as you touch it. The fountain immediately dries up shortly afterwards.") - user.reagents.add_reagent(/datum/reagent/medicine/omnizine/godblood,20) + user.reagents.add_reagent("godblood",20) update_icon() addtimer(CALLBACK(src, /atom/.proc/update_icon), time_between_uses) diff --git a/code/game/objects/structures/dresser.dm b/code/game/objects/structures/dresser.dm index 7f0c3c6eb8..05e62c196f 100644 --- a/code/game/objects/structures/dresser.dm +++ b/code/game/objects/structures/dresser.dm @@ -30,11 +30,11 @@ return var/list/undergarment_choices = list("Underwear", "Underwear Color", "Undershirt", "Undershirt Color", "Socks", "Socks Color") - if(!(GLOB.underwear_list[H.underwear]?.has_color)) + if(!UNDIE_COLORABLE(GLOB.underwear_list[H.underwear])) undergarment_choices -= "Underwear Color" - if(!(GLOB.undershirt_list[H.undershirt]?.has_color)) + if(!UNDIE_COLORABLE(GLOB.undershirt_list[H.undershirt])) undergarment_choices -= "Undershirt Color" - if(!(GLOB.socks_list[H.socks]?.has_color)) + if(!UNDIE_COLORABLE(GLOB.socks_list[H.socks])) undergarment_choices -= "Socks Color" var/choice = input(H, "Underwear, Undershirt, or Socks?", "Changing") as null|anything in undergarment_choices diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index 0cce1de41b..fdc85475fb 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -30,8 +30,6 @@ new/obj/structure/fluff/empty_terrarium(get_turf(src)) return ..() -/obj/effect/mob_spawn/human/seed_vault/special(mob/living/carbon/human/new_spawn) - ADD_TRAIT(new_spawn,TRAIT_EXEMPT_HEALTH_EVENTS,GHOSTROLE_TRAIT) //Ash walker eggs: Spawns in ash walker dens in lavaland. Ghosts become unbreathing lizards that worship the Necropolis and are advised to retrieve corpses to create more ash walkers. /obj/effect/mob_spawn/human/ash_walker @@ -253,9 +251,6 @@ new/obj/structure/fluff/empty_cryostasis_sleeper(get_turf(src)) return ..() -/obj/effect/mob_spawn/human/hermit/special(mob/living/carbon/human/new_spawn) - ADD_TRAIT(new_spawn,TRAIT_EXEMPT_HEALTH_EVENTS,GHOSTROLE_TRAIT) - //Broken rejuvenation pod: Spawns in animal hospitals in lavaland. Ghosts become disoriented interns and are advised to search for help. /obj/effect/mob_spawn/human/doctor/alive/lavaland name = "broken rejuvenation pod" @@ -358,9 +353,6 @@ new/obj/structure/fluff/empty_sleeper/syndicate(get_turf(src)) ..() -/obj/effect/mob_spawn/human/hotel_staff/special(mob/living/carbon/human/new_spawn) - ADD_TRAIT(new_spawn,TRAIT_EXEMPT_HEALTH_EVENTS,GHOSTROLE_TRAIT) - /obj/effect/mob_spawn/human/demonic_friend name = "Essence of friendship" desc = "Oh boy! Oh boy! A friend!" @@ -605,7 +597,7 @@ rank = "Gunner" /obj/effect/mob_spawn/human/ghostcafe - name = "Ghost Cafe Sleeper" + name = "ghost cafe sleeper" uses = -1 icon = 'icons/obj/machines/sleeper.dmi' icon_state = "sleeper" @@ -619,24 +611,6 @@ skip_reentry_check = TRUE banType = "ghostcafe" -/datum/action/toggle_dead_chat_mob - icon_icon = 'icons/mob/mob.dmi' - button_icon_state = "ghost" - name = "Toggle deadchat" - desc = "Turn off or on your ability to hear ghosts." - -/datum/action/toggle_dead_chat_mob/Trigger() - if(!..()) - return 0 - var/mob/M = target - if(HAS_TRAIT_FROM(M,TRAIT_SIXTHSENSE,GHOSTROLE_TRAIT)) - REMOVE_TRAIT(M,TRAIT_SIXTHSENSE,GHOSTROLE_TRAIT) - to_chat(M,"You're no longer hearing deadchat.") - else - ADD_TRAIT(M,TRAIT_SIXTHSENSE,GHOSTROLE_TRAIT) - to_chat(M,"You're once again longer hearing deadchat.") - - /obj/effect/mob_spawn/human/ghostcafe/special(mob/living/carbon/human/new_spawn) if(new_spawn.client) new_spawn.client.prefs.copy_to(new_spawn) @@ -644,23 +618,12 @@ O.equip(new_spawn, FALSE, new_spawn.client) SSjob.equip_loadout(null, new_spawn, FALSE) SSquirks.AssignQuirks(new_spawn, new_spawn.client, TRUE, TRUE, null, FALSE, new_spawn) - new_spawn.AddElement(/datum/element/ghost_role_eligibility) - ADD_TRAIT(new_spawn, TRAIT_SIXTHSENSE, GHOSTROLE_TRAIT) - ADD_TRAIT(new_spawn,TRAIT_EXEMPT_HEALTH_EVENTS,GHOSTROLE_TRAIT) - ADD_TRAIT(new_spawn,TRAIT_PACIFISM,GHOSTROLE_TRAIT) - to_chat(new_spawn,"You may be sharing your cafe with some ninja-captured individuals, so make sure to only interact with the ghosts you hear as a ghost!") - to_chat(new_spawn,"You can turn yourself into a ghost and freely reenter your body with the ghost action.") - var/datum/action/ghost/G = new(new_spawn) - G.Grant(new_spawn) - var/datum/action/toggle_dead_chat_mob/D = new(new_spawn) - D.Grant(new_spawn) /datum/outfit/ghostcafe name = "ID, jumpsuit and shoes" uniform = /obj/item/clothing/under/color/random shoes = /obj/item/clothing/shoes/sneakers/black id = /obj/item/card/id - r_hand = /obj/item/storage/box/syndie_kit/chameleon/ghostcafe /datum/outfit/ghostcafe/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source) @@ -676,18 +639,4 @@ uniform = /obj/item/clothing/under/color/random else uniform = /obj/item/clothing/under/skirt/color/random - -/obj/item/storage/box/syndie_kit/chameleon/ghostcafe - name = "ghost cafe costuming kit" - desc = "Look just the way you did in life - or better!" - -/obj/item/storage/box/syndie_kit/chameleon/ghostcafe/PopulateContents() // Doesn't contain a PDA, for isolation reasons. - new /obj/item/clothing/under/chameleon(src) - new /obj/item/clothing/suit/chameleon(src) - new /obj/item/clothing/gloves/chameleon(src) - new /obj/item/clothing/shoes/chameleon(src) - new /obj/item/clothing/glasses/chameleon(src) - new /obj/item/clothing/head/chameleon(src) - new /obj/item/clothing/mask/chameleon(src) - new /obj/item/storage/backpack/chameleon(src) - new /obj/item/clothing/neck/cloak/chameleon(src) + diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 205e87329b..c0519f2504 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -84,7 +84,7 @@ /obj/structure/grille/attack_animal(mob/user) . = ..() - if(!shock(user, 70) && !QDELETED(src)) //Last hit still shocks but shouldn't deal damage to the grille) + if(!shock(user, 70)) take_damage(rand(5,10), BRUTE, "melee", 1) /obj/structure/grille/attack_paw(mob/user) diff --git a/code/game/objects/structures/holosign.dm b/code/game/objects/structures/holosign.dm index 69ad9f1567..1f007b6993 100644 --- a/code/game/objects/structures/holosign.dm +++ b/code/game/objects/structures/holosign.dm @@ -69,9 +69,9 @@ rad_insulation = RAD_LIGHT_INSULATION /obj/structure/holosign/barrier/atmos - name = "holo fan" - desc = "A holographic barrier resembling a tiny fan. Though it does not prevent solid objects from passing through, gas is kept out. Somehow." - icon_state = "holo_fan" + name = "holo firelock" + desc = "A holographic barrier resembling a firelock. Though it does not prevent solid objects from passing through, gas is kept out." + icon_state = "holo_firelock" density = FALSE anchored = TRUE CanAtmosPass = ATMOS_PASS_NO @@ -81,18 +81,6 @@ . = ..() air_update_turf(TRUE) -/obj/structure/holosign/barrier/firelock - name = "holo firelock" - desc = "A holographic barrier resembling a firelock. Though it does not prevent solid objects or gas from passing through, temperature changes are kept out." - icon_state = "holo_firelock" - density = FALSE - anchored = TRUE - alpha = 150 - resistance_flags = FIRE_PROOF - -/obj/structure/holosign/barrier/firelock/blocksTemperature() - return TRUE - /obj/structure/holosign/barrier/cyborg name = "Energy Field" desc = "A fragile energy field that blocks movement. Excels at blocking lethal projectiles." diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index c41d6d32af..b946a06432 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -18,7 +18,7 @@ // flags = CONDUCT_1 /obj/structure/lattice/examine(mob/user) - . = ..() + ..() . += deconstruction_hints(user) /obj/structure/lattice/proc/deconstruction_hints(mob/user) @@ -60,7 +60,7 @@ to_chat(user, "You build a floor.") var/turf/T = src.loc if(isspaceturf(T)) - T.PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) + T.PlaceOnTop(/turf/open/floor/plating) qdel(src) return TRUE return FALSE diff --git a/code/game/objects/structures/stairs.dm b/code/game/objects/structures/stairs.dm index f2c4e628e0..bd657fe1e8 100644 --- a/code/game/objects/structures/stairs.dm +++ b/code/game/objects/structures/stairs.dm @@ -102,13 +102,13 @@ /obj/structure/stairs/proc/force_open_above() var/turf/open/openspace/T = get_step_multiz(get_turf(src), UP) if(T && !istype(T)) - T.ChangeTurf(/turf/open/openspace, flags = CHANGETURF_INHERIT_AIR) + T.ChangeTurf(/turf/open/openspace) /obj/structure/stairs/proc/on_multiz_new(turf/source, dir) if(dir == UP) var/turf/open/openspace/T = get_step_multiz(get_turf(src), UP) if(T && !istype(T)) - T.ChangeTurf(/turf/open/openspace, flags = CHANGETURF_INHERIT_AIR) + T.ChangeTurf(/turf/open/openspace) /obj/structure/stairs/intercept_zImpact(atom/movable/AM, levels = 1) . = ..() diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 3c6a277307..99f8875aef 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -182,17 +182,6 @@ else return ..() -/obj/structure/table/alt_attack_hand(mob/user) - if(user && Adjacent(user) && !user.incapacitated()) - user.setClickCooldown(4) - if(istype(user) && user.a_intent == INTENT_HARM) - user.visible_message("[user] slams [user.p_their()] palms down on [src].", "You slam your palms down on [src].") - playsound(src, 'sound/weapons/sonic_jackhammer.ogg', 50, 1) - else - user.visible_message("[user] slaps [user.p_their()] hands on [src].", "You slap your hands on [src].") - playsound(src, 'sound/weapons/tap.ogg', 50, 1) - user.do_attack_animation(src) - return TRUE /obj/structure/table/deconstruct(disassembled = TRUE, wrench_disassembly = 0) if(!(flags_1 & NODECONSTRUCT_1)) diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index a8f95e30da..76c8f7f11f 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -5,8 +5,6 @@ icon_state = "toilet00" density = FALSE anchored = TRUE - can_buckle = TRUE - buckle_lying = 0 var/open = FALSE //if the lid is up var/cistern = 0 //if the cistern bit is open var/w_items = 0 //the combined w_class of all the items in the cistern @@ -103,7 +101,7 @@ if (!open) return var/obj/item/reagent_containers/RG = I - RG.reagents.add_reagent(/datum/reagent/water, min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this)) + RG.reagents.add_reagent("water", min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this)) to_chat(user, "You fill [RG] from [src]. Gross.") else return ..() @@ -201,7 +199,7 @@ icon = 'icons/obj/items_and_weapons.dmi' icon_state = "urinalcake" w_class = WEIGHT_CLASS_TINY - list_reagents = list(/datum/reagent/chlorine = 3, /datum/reagent/ammonia = 1) + list_reagents = list("chlorine" = 3, "ammonia" = 1) /obj/item/reagent_containers/food/urinalcake/attack_self(mob/living/user) user.visible_message("[user] squishes [src]!", "You squish [src].", "You hear a squish.") @@ -463,7 +461,7 @@ desc = "A sink used for washing one's hands and face." anchored = TRUE var/busy = FALSE //Something's being washed at the moment - var/dispensedreagent = /datum/reagent/water // for whenever plumbing happens + var/dispensedreagent = "water" // for whenever plumbing happens /obj/structure/sink/attack_hand(mob/living/user) @@ -538,7 +536,7 @@ return if(istype(O, /obj/item/mop)) - O.reagents.add_reagent(dispensedreagent, 5) + O.reagents.add_reagent("[dispensedreagent]", 5) to_chat(user, "You wet [O] in [src].") playsound(loc, 'sound/effects/slosh.ogg', 25, 1) return @@ -684,4 +682,4 @@ else playsound(loc, 'sound/weapons/tap.ogg', 50, 1) if(BURN) - playsound(loc, 'sound/items/welder.ogg', 80, 1) + playsound(loc, 'sound/items/welder.ogg', 80, 1) \ No newline at end of file diff --git a/code/game/turfs/baseturf_skipover.dm b/code/game/turfs/baseturf_skipover.dm index 4df8c86e62..644714f8ed 100644 --- a/code/game/turfs/baseturf_skipover.dm +++ b/code/game/turfs/baseturf_skipover.dm @@ -10,9 +10,4 @@ /turf/baseturf_skipover/shuttle name = "Shuttle baseturf skipover" - desc = "Acts as the bottom of the shuttle, if this isn't here the shuttle floor is broken through." - -/turf/baseturf_bottom - name = "Z-level baseturf placeholder" - desc = "Marker for z-level baseturf, usually resolves to space." - baseturfs = /turf/baseturf_bottom + desc = "Acts as the bottom of the shuttle, if this isn't here the shuttle floor is broken through." \ No newline at end of file diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm index bc4cd8df33..6a055bbd35 100644 --- a/code/game/turfs/change_turf.dm +++ b/code/game/turfs/change_turf.dm @@ -1,7 +1,6 @@ // This is a list of turf types we dont want to assign to baseturfs unless through initialization or explicitly GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( /turf/open/space, - /turf/baseturf_bottom ))) /turf/proc/empty(turf_type=/turf/open/space, baseturf_type, list/ignore_typecache, flags) @@ -57,20 +56,12 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( // Creates a new turf // new_baseturfs can be either a single type or list of types, formated the same as baseturfs. see turf.dm /turf/proc/ChangeTurf(path, list/new_baseturfs, flags) - switch(path) - if(null) - return - if(/turf/baseturf_bottom) - path = SSmapping.level_trait(z, ZTRAIT_BASETURF) || /turf/open/space - if (!ispath(path)) - path = text2path(path) - if (!ispath(path)) - warning("Z-level [z] has invalid baseturf '[SSmapping.level_trait(z, ZTRAIT_BASETURF)]'") - path = /turf/open/space - if(/turf/open/space/basic) - // basic doesn't initialize and this will cause issues - // no warning though because this can happen naturaly as a result of it being built on top of - path = /turf/open/space + if(!path) + return + if(path == /turf/open/space/basic) + // basic doesn't initialize and this will cause issues + // no warning though because this can happen naturaly as a result of it being built on top of + path = /turf/open/space if(!GLOB.use_preloader && path == type && !(flags & CHANGETURF_FORCEOP)) // Don't no-op if the map loader requires it to be reconstructed return src if(flags & CHANGETURF_SKIP) @@ -137,15 +128,16 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( /turf/open/ChangeTurf(path, list/new_baseturfs, flags) if ((flags & CHANGETURF_INHERIT_AIR) && ispath(path, /turf/open)) SSair.remove_from_active(src) - var/datum/gas_mixture/stashed_air = new() - stashed_air.copy_from(air) + var/stashed_air = air + air = null // so that it doesn't get deleted . = ..() - if (!.) // changeturf failed or didn't do anything - QDEL_NULL(stashed_air) + if (!. || . == src) // changeturf failed or didn't do anything + air = stashed_air return var/turf/open/newTurf = . - newTurf.air.copy_from(stashed_air) - QDEL_NULL(stashed_air) + if (!istype(newTurf.air, /datum/gas_mixture/immutable/space)) + QDEL_NULL(newTurf.air) + newTurf.air = stashed_air SSair.add_to_active(newTurf) else if(ispath(path,/turf/closed)) @@ -223,7 +215,7 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( newT.assemble_baseturfs(initial(fake_turf_type.baseturfs)) // The baseturfs list is created like roundstart if(!length(newT.baseturfs)) newT.baseturfs = list(baseturfs) - newT.baseturfs -= GLOB.blacklisted_automated_baseturfs + newT.baseturfs -= newT.baseturfs & GLOB.blacklisted_automated_baseturfs newT.baseturfs.Insert(1, old_baseturfs) // The old baseturfs are put underneath return newT if(!length(baseturfs)) @@ -323,5 +315,5 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( SSair.add_to_active(src) /turf/proc/ReplaceWithLattice() - ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + ScrapeAway() new /obj/structure/lattice(locate(x, y, z)) diff --git a/code/game/turfs/closed.dm b/code/game/turfs/closed.dm index 9e593cafce..6297cadc63 100644 --- a/code/game/turfs/closed.dm +++ b/code/game/turfs/closed.dm @@ -23,7 +23,7 @@ icon = 'icons/turf/walls.dmi' explosion_block = 50 -/turf/closed/indestructible/TerraformTurf(path, new_baseturf, flags, defer_change = FALSE, ignore_air = FALSE) +/turf/closed/indestructible/TerraformTurf(path, defer_change = FALSE, ignore_air = FALSE) return /turf/closed/indestructible/acid_act(acidpwr, acid_volume, acid_id) diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index 577c45a7f0..4bdb13effc 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -58,7 +58,7 @@ /turf/open/indestructible/singularity_act() return -/turf/open/indestructible/TerraformTurf(path, new_baseturf, flags, defer_change = FALSE, ignore_air = FALSE) +/turf/open/indestructible/TerraformTurf(path, defer_change = FALSE, ignore_air = FALSE) return /turf/open/indestructible/sound diff --git a/code/game/turfs/openspace/openspace.dm b/code/game/turfs/openspace/openspace.dm index 66507e7053..e68aabcd08 100644 --- a/code/game/turfs/openspace/openspace.dm +++ b/code/game/turfs/openspace/openspace.dm @@ -106,7 +106,7 @@ qdel(L) playsound(src, 'sound/weapons/genhit.ogg', 50, 1) to_chat(user, "You build a floor.") - PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) + PlaceOnTop(/turf/open/floor/plating) else to_chat(user, "You need one floor tile to build a floor!") else diff --git a/code/game/turfs/simulated/chasm.dm b/code/game/turfs/simulated/chasm.dm index dab0c1c376..0a7b507488 100644 --- a/code/game/turfs/simulated/chasm.dm +++ b/code/game/turfs/simulated/chasm.dm @@ -38,7 +38,7 @@ switch(passed_mode) if(RCD_FLOORWALL) to_chat(user, "You build a floor.") - PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) + PlaceOnTop(/turf/open/floor/plating) return TRUE return FALSE @@ -70,7 +70,7 @@ playsound(src, 'sound/weapons/genhit.ogg', 50, 1) to_chat(user, "You build a floor.") // Create a floor, which has this chasm underneath it - PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) + PlaceOnTop(/turf/open/floor/plating) else to_chat(user, "You need one floor tile to build a floor!") else diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index f9153ff8bf..d14a4c7385 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -62,29 +62,29 @@ if(severity != 1 && shielded && target != src) return if(target == src) - ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + ScrapeAway() return if(target != null) severity = 3 switch(severity) if(1) - ScrapeAway(2, flags = CHANGETURF_INHERIT_AIR) + ScrapeAway(2) if(2) switch(pick(1,2;75,3)) if(1) if(!length(baseturfs) || !ispath(baseturfs[baseturfs.len-1], /turf/open/floor)) - ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + ScrapeAway() ReplaceWithLattice() else - ScrapeAway(2, flags = CHANGETURF_INHERIT_AIR) + ScrapeAway(2) if(prob(33)) new /obj/item/stack/sheet/metal(src) if(2) - ScrapeAway(2, flags = CHANGETURF_INHERIT_AIR) + ScrapeAway(2) if(3) if(prob(80)) - ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + ScrapeAway() else break_tile() hotspot_expose(1000,CELL_VOLUME) @@ -135,7 +135,7 @@ burnt = 1 /turf/open/floor/proc/make_plating() - return ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + return ScrapeAway() /turf/open/floor/ChangeTurf(path, new_baseturf, flags) if(!isfloorturf(src)) @@ -177,7 +177,7 @@ I.play_tool_sound(src, 80) return remove_tile(user, silent) -/turf/open/floor/proc/remove_tile(mob/user, silent = FALSE, make_tile = TRUE, forced = FALSE) +/turf/open/floor/proc/remove_tile(mob/user, silent = FALSE, make_tile = TRUE) if(broken || burnt) broken = 0 burnt = 0 @@ -191,33 +191,37 @@ return make_plating() /turf/open/floor/singularity_pull(S, current_size) - . = ..() - switch(current_size) - if(STAGE_THREE) - if(floor_tile && prob(30)) - remove_tile() - if(STAGE_FOUR) - if(floor_tile && prob(50)) - remove_tile() - if(STAGE_FIVE to INFINITY) + ..() + if(current_size == STAGE_THREE) + if(prob(30)) if(floor_tile) - if(prob(70)) - remove_tile() - else if(prob(50)) - ReplaceWithLattice() + new floor_tile(src) + make_plating() + else if(current_size == STAGE_FOUR) + if(prob(50)) + if(floor_tile) + new floor_tile(src) + make_plating() + else if(current_size >= STAGE_FIVE) + if(floor_tile) + if(prob(70)) + new floor_tile(src) + make_plating() + else if(prob(50)) + ReplaceWithLattice() /turf/open/floor/narsie_act(force, ignore_mobs, probability = 20) . = ..() if(.) - ChangeTurf(/turf/open/floor/engine/cult, flags = CHANGETURF_INHERIT_AIR) + ChangeTurf(/turf/open/floor/engine/cult) /turf/open/floor/ratvar_act(force, ignore_mobs) . = ..() if(.) - ChangeTurf(/turf/open/floor/clockwork, flags = CHANGETURF_INHERIT_AIR) + ChangeTurf(/turf/open/floor/clockwork) /turf/open/floor/acid_melt() - ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + ScrapeAway() /turf/open/floor/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) switch(the_rcd.mode) @@ -263,7 +267,7 @@ A.autoclose = TRUE return TRUE if(RCD_DECONSTRUCT) - if(ScrapeAway(flags = CHANGETURF_INHERIT_AIR) == src) + if(ScrapeAway() == src) return FALSE to_chat(user, "You deconstruct [src].") return TRUE diff --git a/code/game/turfs/simulated/floor/fancy_floor.dm b/code/game/turfs/simulated/floor/fancy_floor.dm index f38a8a3d9b..82f1a88253 100644 --- a/code/game/turfs/simulated/floor/fancy_floor.dm +++ b/code/game/turfs/simulated/floor/fancy_floor.dm @@ -44,7 +44,7 @@ C.play_tool_sound(src, 80) return remove_tile(user, silent, (C.tool_behaviour == TOOL_SCREWDRIVER)) -/turf/open/floor/wood/remove_tile(mob/user, silent = FALSE, make_tile = TRUE, forced = FALSE) +/turf/open/floor/wood/remove_tile(mob/user, silent = FALSE, make_tile = TRUE) if(broken || burnt) broken = 0 burnt = 0 diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm index 8e0eace9cd..ae67edf073 100644 --- a/code/game/turfs/simulated/floor/plating.dm +++ b/code/game/turfs/simulated/floor/plating.dm @@ -11,7 +11,7 @@ name = "plating" icon_state = "plating" intact = FALSE - baseturfs = /turf/baseturf_bottom + baseturfs = /turf/open/space footstep = FOOTSTEP_PLATING barefootstep = FOOTSTEP_HARD_BAREFOOT clawfootstep = FOOTSTEP_HARD_CLAW @@ -61,7 +61,7 @@ to_chat(user, "You begin reinforcing the floor...") if(do_after(user, 30, target = src)) if (R.get_amount() >= 2 && !istype(src, /turf/open/floor/engine)) - PlaceOnTop(/turf/open/floor/engine, flags = CHANGETURF_INHERIT_AIR) + PlaceOnTop(/turf/open/floor/engine) playsound(src, 'sound/items/deconstruct.ogg', 80, 1) R.use(2) to_chat(user, "You reinforce the floor.") @@ -76,7 +76,7 @@ var/obj/item/stack/tile/W = C if(!W.use(1)) return - var/turf/open/floor/T = PlaceOnTop(W.turf_type, flags = CHANGETURF_INHERIT_AIR) + var/turf/open/floor/T = PlaceOnTop(W.turf_type) if(istype(W, /obj/item/stack/tile/light)) //TODO: get rid of this ugly check somehow var/obj/item/stack/tile/light/L = W var/turf/open/floor/light/F = T @@ -117,7 +117,7 @@ qdel(L) to_chat(user, "You reinforce the foamed plating with tiling.") playsound(src, 'sound/weapons/Genhit.ogg', 50, TRUE) - ChangeTurf(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) + ChangeTurf(/turf/open/floor/plating) else playsound(src, 'sound/weapons/tap.ogg', 100, TRUE) //The attack sound is muffled by the foam itself user.changeNext_move(CLICK_CD_MELEE) @@ -125,7 +125,7 @@ if(prob(I.force * 20 - 25)) user.visible_message("[user] smashes through [src]!", \ "You smash through [src] with [I]!") - ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + ScrapeAway() else to_chat(user, "You hit [src], to no effect!") @@ -136,13 +136,13 @@ /turf/open/floor/plating/foam/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) if(passed_mode == RCD_FLOORWALL) to_chat(user, "You build a floor.") - ChangeTurf(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) + ChangeTurf(/turf/open/floor/plating) return TRUE return FALSE /turf/open/floor/plating/foam/ex_act() ..() - ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + ScrapeAway() /turf/open/floor/plating/foam/tool_act(mob/living/user, obj/item/I, tool_type) return diff --git a/code/game/turfs/simulated/floor/plating/asteroid.dm b/code/game/turfs/simulated/floor/plating/asteroid.dm index ecc8ee5e8d..9f2da57312 100644 --- a/code/game/turfs/simulated/floor/plating/asteroid.dm +++ b/code/game/turfs/simulated/floor/plating/asteroid.dm @@ -76,6 +76,11 @@ for(var/obj/item/stack/ore/O in src) SEND_SIGNAL(W, COMSIG_PARENT_ATTACKBY, O) +/turf/open/floor/plating/asteroid/singularity_act() + if(is_planet_level(z)) + return ..() + ScrapeAway() + /turf/open/floor/plating/asteroid/ex_act(severity, target) . = SEND_SIGNAL(src, COMSIG_ATOM_EX_ACT, severity, target) contents_explosion(severity, target) @@ -127,7 +132,6 @@ /turf/open/floor/plating/asteroid/airless initial_gas_mix = AIRLESS_ATMOS - baseturfs = /turf/open/floor/plating/asteroid/airless turf_type = /turf/open/floor/plating/asteroid/airless diff --git a/code/game/turfs/simulated/floor/reinf_floor.dm b/code/game/turfs/simulated/floor/reinf_floor.dm index 7816341a0a..b04f89f8be 100644 --- a/code/game/turfs/simulated/floor/reinf_floor.dm +++ b/code/game/turfs/simulated/floor/reinf_floor.dm @@ -43,7 +43,7 @@ return TRUE if(floor_tile) new floor_tile(src, 2) - ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + ScrapeAway() return TRUE /turf/open/floor/engine/acid_act(acidpwr, acid_volume) @@ -56,36 +56,34 @@ if(severity != 1 && shielded && target != src) return if(target == src) - ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + ScrapeAway() return switch(severity) if(1) if(prob(80)) if(!length(baseturfs) || !ispath(baseturfs[baseturfs.len-1], /turf/open/floor)) - ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + ScrapeAway() ReplaceWithLattice() else - ScrapeAway(2, flags = CHANGETURF_INHERIT_AIR) + ScrapeAway(2) else if(prob(50)) - ScrapeAway(2, flags = CHANGETURF_INHERIT_AIR) + ScrapeAway(2) else - ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + ScrapeAway() if(2) if(prob(50)) - ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + ScrapeAway() /turf/open/floor/engine/singularity_pull(S, current_size) ..() - if(current_size >= STAGE_FIVE && prob(30)) + if(current_size >= STAGE_FIVE) if(floor_tile) - remove_tile(forced = TRUE) - else + if(prob(30)) + new floor_tile(src) + make_plating() + else if(prob(30)) ReplaceWithLattice() -/turf/open/floor/engine/remove_tile(mob/user, silent = FALSE, make_tile = TRUE, forced = FALSE) - if(forced) - return ..() - /turf/open/floor/engine/attack_paw(mob/user) return attack_hand(user) diff --git a/code/game/turfs/simulated/lava.dm b/code/game/turfs/simulated/lava.dm index 2f8ae0cb93..362b410cbb 100644 --- a/code/game/turfs/simulated/lava.dm +++ b/code/game/turfs/simulated/lava.dm @@ -54,7 +54,7 @@ switch(passed_mode) if(RCD_FLOORWALL) to_chat(user, "You build a floor.") - PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) + PlaceOnTop(/turf/open/floor/plating) return TRUE return FALSE diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm index 73c1c465cd..aeadceb2e5 100644 --- a/code/game/turfs/simulated/minerals.dm +++ b/code/game/turfs/simulated/minerals.dm @@ -47,8 +47,7 @@ return ..() -/turf/closed/mineral/attackby(obj/item/pickaxe/I, mob/user, params) - var/stored_dir = user.dir +/turf/closed/mineral/attackby(obj/item/I, mob/user, params) if (!user.IsAdvancedToolUser()) to_chat(usr, "You don't have the dexterity to do this!") return @@ -64,12 +63,7 @@ to_chat(user, "You start picking...") if(I.use_tool(src, user, 40, volume=50)) - var/range = I.digrange //Store the current digrange so people don't cheese digspeed swapping for faster mining if(ismineralturf(src)) - if(I.digrange > 0) - for(var/turf/closed/mineral/M in range(user,range)) - if(get_dir(user,M)&stored_dir) - M.gets_drilled() to_chat(user, "You finish cutting into the rock.") gets_drilled(user) SSblackbox.record_feedback("tally", "pick_used_mining", 1, I.type) diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index 5278374abd..f38f13e657 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -125,7 +125,7 @@ qdel(L) playsound(src, 'sound/weapons/genhit.ogg', 50, 1) to_chat(user, "You build a floor.") - PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) + PlaceOnTop(/turf/open/floor/plating) else to_chat(user, "You need one floor tile to build a floor!") else @@ -212,7 +212,7 @@ switch(passed_mode) if(RCD_FLOORWALL) to_chat(user, "You build a floor.") - PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) + PlaceOnTop(/turf/open/floor/plating) return TRUE return FALSE diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index e81b3d1062..d618e457b0 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -9,7 +9,7 @@ // A list will be created in initialization that figures out the baseturf's baseturf etc. // In the case of a list it is sorted from bottom layer to top. // This shouldn't be modified directly, use the helper procs. - var/list/baseturfs = /turf/baseturf_bottom + var/list/baseturfs = /turf/open/space var/temperature = T20C var/to_be_destroyed = 0 //Used for fire, if a melting temperature was reached, it will be destroyed @@ -391,7 +391,7 @@ continue if(O.invisibility == INVISIBILITY_MAXIMUM) O.singularity_act() - ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + ScrapeAway() return(2) /turf/proc/can_have_cabling() @@ -554,12 +554,14 @@ clear_reagents_to_vomit_pool(C,V) /proc/clear_reagents_to_vomit_pool(mob/living/carbon/M, obj/effect/decal/cleanable/vomit/V) - for(var/datum/reagent/consumable/R in M.reagents.reagent_list) //clears the stomach of anything that might be digested as food - if(R.nutriment_factor > 0) - M.reagents.del_reagent(R.type) M.reagents.trans_to(V, M.reagents.total_volume / 10) + for(var/datum/reagent/R in M.reagents.reagent_list) //clears the stomach of anything that might be digested as food + if(istype(R, /datum/reagent/consumable)) + var/datum/reagent/consumable/nutri_check = R + if(nutri_check.nutriment_factor >0) + M.reagents.remove_reagent(R.id,R.volume) //Whatever happens after high temperature fire dies out or thermite reaction works. //Should return new turf /turf/proc/Melt() - return ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + return ScrapeAway() diff --git a/code/game/world.dm b/code/game/world.dm index e68372d768..25b8c4d9f3 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -2,9 +2,6 @@ GLOBAL_VAR(restart_counter) -GLOBAL_VAR(topic_status_lastcache) -GLOBAL_LIST(topic_status_cache) - //This happens after the Master subsystem new(s) (it's a global datum) //So subsystems globals exist, but are not initialised /world/New() @@ -111,11 +108,9 @@ GLOBAL_LIST(topic_status_cache) GLOB.world_href_log = "[GLOB.log_directory]/hrefs.log" GLOB.sql_error_log = "[GLOB.log_directory]/sql.log" GLOB.world_qdel_log = "[GLOB.log_directory]/qdel.log" - GLOB.world_map_error_log = "[GLOB.log_directory]/map_errors.log" GLOB.world_runtime_log = "[GLOB.log_directory]/runtime.log" GLOB.query_debug_log = "[GLOB.log_directory]/query_debug.log" GLOB.world_job_debug_log = "[GLOB.log_directory]/job_debug.log" - GLOB.subsystem_log = "[GLOB.log_directory]/subsystem.log" #ifdef UNIT_TESTS GLOB.test_log = file("[GLOB.log_directory]/tests.log") @@ -130,7 +125,6 @@ GLOBAL_LIST(topic_status_cache) start_log(GLOB.world_qdel_log) start_log(GLOB.world_runtime_log) start_log(GLOB.world_job_debug_log) - start_log(GLOB.subsystem_log) GLOB.changelog_hash = md5('html/changelog.html') //for telling if the changelog has changed recently if(fexists(GLOB.config_error_log)) @@ -148,14 +142,6 @@ GLOBAL_LIST(topic_status_cache) /world/Topic(T, addr, master, key) TGS_TOPIC //redirect to server tools if necessary - if(!SSfail2topic) - return "Server not initialized." - else if(SSfail2topic.IsRateLimited(addr)) - return "Rate limited." - - if(length(T) > CONFIG_GET(number/topic_max_size)) - return "Payload too large!" - var/static/list/topic_handlers = TopicHandlers() var/list/input = params2list(T) @@ -172,7 +158,7 @@ GLOBAL_LIST(topic_status_cache) return handler = new handler() - return handler.TryRun(input, addr) + return handler.TryRun(input) /world/proc/AnnouncePR(announcement, list/payload) var/static/list/PRcounts = list() //PR id -> number of times announced this round diff --git a/code/modules/admin/IsBanned.dm b/code/modules/admin/IsBanned.dm index 03670009f8..839292871c 100644 --- a/code/modules/admin/IsBanned.dm +++ b/code/modules/admin/IsBanned.dm @@ -16,16 +16,8 @@ if (text2num(computer_id) == 2147483647) //this cid causes stickybans to go haywire log_access("Failed Login (invalid cid): [key] [address]-[computer_id]") return list("reason"="invalid login data", "desc"="Error: Could not check ban status, Please try again. Error message: Your computer provided an invalid Computer ID.)") - - if (type == "world") - return ..() //shunt world topic banchecks to purely to byond's internal ban system - + var/admin = 0 var/ckey = ckey(key) - var/client/C = GLOB.directory[ckey] - if (C && ckey == C.ckey && computer_id == C.computer_id && address == C.address) - return //don't recheck connected clients. - - var/admin = FALSE if(GLOB.admin_datums[ckey] || GLOB.deadmins[ckey]) admin = 1 @@ -134,6 +126,7 @@ bannedckey = ban["ckey"] var/newmatch = FALSE + var/client/C = GLOB.directory[ckey] var/cachedban = SSstickyban.cache[bannedckey] //rogue ban in the process of being reverted. diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 1cecbbd0e5..895f8c9f88 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -693,7 +693,7 @@ var/prev_dynamic_voting = CONFIG_GET(flag/dynamic_voting) CONFIG_SET(flag/dynamic_voting,!prev_dynamic_voting) if (!prev_dynamic_voting) - to_chat(world, "Vote is now a ranked choice of dynamic storytellers.") + to_chat(world, "Vote is now between extended and dynamic chaos.") else to_chat(world, "Vote is now between extended and secret.") log_admin("[key_name(usr)] [prev_dynamic_voting ? "disabled" : "enabled"] dynamic voting.") diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 8a7269ccad..c3ffd10174 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -438,8 +438,6 @@ GLOBAL_PROTECT(admin_verbs_hideable) set category = "Admin" set name = "Stealth Mode" if(holder) - if(!check_rights(R_STEALTH, 0)) - return if(holder.fakekey) holder.fakekey = null if(isobserver(mob)) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index f08112939a..53fdb315b5 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -492,7 +492,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) message_admins("[key_name_admin(usr)] assumed direct control of [M].") log_admin("[key_name(usr)] assumed direct control of [M].") var/mob/adminmob = src.mob - adminmob.transfer_ckey(M, send_signal = FALSE) + M.ckey = src.ckey if( isobserver(adminmob) ) qdel(adminmob) SSblackbox.record_feedback("tally", "admin_verb", 1, "Assume Direct Control") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index acd320856a..2b8d365e15 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -35,9 +35,6 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list( /client/proc/cmd_admin_grantfullaccess, /client/proc/cmd_admin_areatest_all, /client/proc/cmd_admin_areatest_station, - #ifdef TESTING - /client/proc/see_dirty_varedits, - #endif /client/proc/cmd_admin_test_atmos_controllers, /client/proc/cmd_admin_rejuvenate, /datum/admins/proc/show_traitor_panel, @@ -87,24 +84,8 @@ GLOBAL_PROTECT(admin_verbs_debug_mapping) SSblackbox.record_feedback("tally", "admin_verb", 1, "Show Camera Range") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! SSblackbox.record_feedback("tally", "admin_verb", 1, "Show Camera Range") -#ifdef TESTING -GLOBAL_LIST_EMPTY(dirty_vars) -/client/proc/see_dirty_varedits() - set category = "Mapping" - set name = "Dirty Varedits" - - var/list/dat = list() - dat += "

    Abandon all hope ye who enter here



    " - for(var/thing in GLOB.dirty_vars) - dat += "[thing]
    " - CHECK_TICK - var/datum/browser/popup = new(usr, "dirty_vars", "Dirty Varedits", 900, 750) - popup.set_content(dat.Join()) - popup.open() -#endif - /client/proc/sec_camera_report() set category = "Mapping" set name = "Camera Report" diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 7675f858ee..09a8f692d8 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -137,9 +137,9 @@ /datum/admins/proc/makeWizard() - var/list/mob/candidates = pollGhostCandidates("Do you wish to be considered for the position of a Wizard Foundation 'diplomat'?", ROLE_WIZARD, null) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to be considered for the position of a Wizard Foundation 'diplomat'?", ROLE_WIZARD, null) - var/mob/selected = pick_n_take(candidates) + var/mob/dead/observer/selected = pick_n_take(candidates) var/mob/living/carbon/human/new_character = makeBody(selected) new_character.mind.make_Wizard() @@ -214,9 +214,9 @@ /datum/admins/proc/makeNukeTeam() var/datum/game_mode/nuclear/temp = new - var/list/mob/candidates = pollGhostCandidates("Do you wish to be considered for a nuke team being sent in?", ROLE_OPERATIVE, temp) - var/list/mob/chosen = list() - var/mob/theghost = null + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to be considered for a nuke team being sent in?", ROLE_OPERATIVE, temp) + var/list/mob/dead/observer/chosen = list() + var/mob/dead/observer/theghost = null if(candidates.len) var/numagents = 5 @@ -378,7 +378,7 @@ ertemplate.enforce_human = prefs["enforce_human"]["value"] == "Yes" ? TRUE : FALSE ertemplate.opendoors = prefs["open_armory"]["value"] == "Yes" ? TRUE : FALSE - var/list/mob/candidates = pollGhostCandidates("Do you wish to be considered for [ertemplate.polldesc] ?", "deathsquad", null) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to be considered for [ertemplate.polldesc] ?", "deathsquad", null) var/teamSpawned = FALSE if(candidates.len > 0) @@ -404,7 +404,7 @@ numagents-- continue // This guy's unlucky, not enough spawn points, we skip him. var/spawnloc = spawnpoints[numagents] - var/mob/chosen_candidate = pick(candidates) + var/mob/dead/observer/chosen_candidate = pick(candidates) candidates -= chosen_candidate if(!chosen_candidate.key) continue diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm index dc6d12453d..433f52306b 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm @@ -484,9 +484,11 @@ user.do_attack_animation(L) - if(L.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) - playsound(L, 'sound/weapons/genhit.ogg', 50, TRUE) - return FALSE + if(ishuman(L)) + var/mob/living/carbon/human/H = L + if(H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) + playsound(H, 'sound/weapons/genhit.ogg', 50, TRUE) + return FALSE switch (mode) if(BATON_STUN) @@ -795,7 +797,7 @@ icon_state = "bed" can_buckle = 1 - var/static/list/injected_reagents = list(/datum/reagent/medicine/corazone) + var/static/list/injected_reagents = list("corazone") /obj/structure/table/optable/abductor/Crossed(atom/movable/AM) . = ..() diff --git a/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm b/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm index 182fcea0c2..3cb90d64bb 100644 --- a/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm +++ b/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm @@ -143,9 +143,9 @@ create_reagents(10) if(overmind && overmind.blob_reagent_datum) - reagents.add_reagent(overmind.blob_reagent_datum.type, 10) + reagents.add_reagent(overmind.blob_reagent_datum.id, 10) else - reagents.add_reagent(/datum/reagent/toxin/spore, 10) + reagents.add_reagent("spore", 10) // Attach the smoke spreader and setup/start it. S.attach(location) diff --git a/code/modules/antagonists/blob/blob/blobs/shield.dm b/code/modules/antagonists/blob/blob/blobs/shield.dm index da165adef2..33e7e4392f 100644 --- a/code/modules/antagonists/blob/blob/blobs/shield.dm +++ b/code/modules/antagonists/blob/blob/blobs/shield.dm @@ -3,7 +3,6 @@ icon = 'icons/mob/blob.dmi' icon_state = "blob_shield" desc = "A solid wall of slightly twitching tendrils." - var/damaged_desc = "A wall of twitching tendrils." max_integrity = 150 brute_resist = 0.25 explosion_block = 3 @@ -22,10 +21,10 @@ /obj/structure/blob/shield/update_icon() ..() - if(obj_integrity < max_integrity * 0.5) - icon_state = "[initial(icon_state)]_damaged" - name = "weakened [initial(name)]" - desc = "[damaged_desc]" + if(obj_integrity <= 70) + icon_state = "blob_shield_damaged" + name = "weakened strong blob" + desc = "A wall of twitching tendrils." atmosblock = FALSE if(!weakened) armor = armor.setRating("melee" = 15, "bullet" = 15, "laser" = 5, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 90) @@ -38,27 +37,4 @@ if(weakened) armor = armor.setRating("melee" = 25, "bullet" = 25, "laser" = 15, "energy" = 10, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 90) weakened = FALSE - air_update_turf(1) - -/obj/structure/blob/shield/reflective - name = "reflective blob" - desc = "A solid wall of slightly twitching tendrils with a reflective glow." - damaged_desc = "A wall of twitching tendrils with a reflective glow." - icon_state = "blob_glow" - flags_1 = CHECK_RICOCHET_1 - point_return = 8 - max_integrity = 50 - brute_resist = 1 - explosion_block = 2 - -/obj/structure/blob/shield/reflective/handle_ricochet(obj/item/projectile/P) - var/turf/p_turf = get_turf(P) - var/face_direction = get_dir(src, p_turf) - var/face_angle = dir2angle(face_direction) - var/incidence_s = GET_ANGLE_OF_INCIDENCE(face_angle, (P.Angle + 180)) - if(abs(incidence_s) > 90 && abs(incidence_s) < 270) - return FALSE - var/new_angle_s = SIMPLIFY_DEGREES(face_angle + incidence_s) - P.setAngle(new_angle_s) - visible_message("[P] reflects off [src]!") - return TRUE \ No newline at end of file + air_update_turf(1) \ No newline at end of file diff --git a/code/modules/antagonists/blob/blob/powers.dm b/code/modules/antagonists/blob/blob/powers.dm index aeb1392432..e49d186362 100644 --- a/code/modules/antagonists/blob/blob/powers.dm +++ b/code/modules/antagonists/blob/blob/powers.dm @@ -113,22 +113,12 @@ /mob/camera/blob/verb/create_shield_power() set category = "Blob" - set name = "Create/Upgrade Shield Blob (15)" - set desc = "Create a shield blob, which will block fire and is hard to kill. Using this on an existing shield blob turns it into a reflective blob, capable of reflecting most projectiles but making it much weaker than usual to brute attacks." + set name = "Create Shield Blob (15)" + set desc = "Create a shield blob, which will block fire and is hard to kill." create_shield() /mob/camera/blob/proc/create_shield(turf/T) - var/obj/structure/blob/shield/S = locate(/obj/structure/blob/shield) in T - if(S) - if(!can_buy(15)) - return - if(S.obj_integrity < S.max_integrity * 0.5) - to_chat(src, "This shield blob is too damaged to be modified properly!") - return - to_chat(src, "You secrete a reflective ooze over the shield blob, allowing it to reflect projectiles at the cost of reduced intregrity.") - S.change_to(/obj/structure/blob/shield/reflective, src) - else - createSpecial(15, /obj/structure/blob/shield, 0, 0, T) + createSpecial(15, /obj/structure/blob/shield, 0, 0, T) /mob/camera/blob/verb/create_resource() set category = "Blob" @@ -166,7 +156,7 @@ if(!can_buy(40)) return - var/list/mob/candidates = pollGhostCandidates("Do you want to play as a [blob_reagent_datum.name] blobbernaut?", ROLE_BLOB, null, ROLE_BLOB, 50) //players must answer rapidly + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as a [blob_reagent_datum.name] blobbernaut?", ROLE_BLOB, null, ROLE_BLOB, 50) //players must answer rapidly if(LAZYLEN(candidates)) //if we got at least one candidate, they're a blobbernaut now. B.max_integrity = initial(B.max_integrity) * 0.25 //factories that produced a blobbernaut have much lower health B.obj_integrity = min(B.obj_integrity, B.max_integrity) @@ -181,7 +171,7 @@ blobber.update_icons() blobber.adjustHealth(blobber.maxHealth * 0.5) blob_mobs += blobber - var/mob/C = pick(candidates) + var/mob/dead/observer/C = pick(candidates) C.transfer_ckey(blobber) SEND_SOUND(blobber, sound('sound/effects/blobattack.ogg')) SEND_SOUND(blobber, sound('sound/effects/attackblob.ogg')) @@ -369,7 +359,7 @@ to_chat(src, "You can expand, which will attack people, damage objects, or place a Normal Blob if the tile is clear.") to_chat(src, "Normal Blobs will expand your reach and can be upgraded into special blobs that perform certain functions.") to_chat(src, "You can upgrade normal blobs into the following types of blob:") - to_chat(src, "Shield Blobs are strong and expensive blobs which take more damage. In additon, they are fireproof and can block air, use these to protect yourself from station fires. Upgrading them again will result in a reflective blob, capable of reflecting most projectiles at the cost of the strong blob's extra health.") + to_chat(src, "Shield Blobs are strong and expensive blobs which take more damage. In additon, they are fireproof and can block air, use these to protect yourself from station fires.") to_chat(src, "Resource Blobs are blobs which produce more resources for you, build as many of these as possible to consume the station. This type of blob must be placed near node blobs or your core to work.") to_chat(src, "Factory Blobs are blobs that spawn blob spores which will attack nearby enemies. This type of blob must be placed near node blobs or your core to work.") to_chat(src, "Blobbernauts can be produced from factories for a cost, and are hard to kill, powerful, and moderately smart. The factory used to create one will become fragile and briefly unable to produce spores.") diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm index bbb8aeca30..9174692b49 100644 --- a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm +++ b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm @@ -84,8 +84,8 @@ //It is called from your coffin on close (by you only) if(poweron_masquerade == TRUE || owner.current.AmStaked()) return FALSE - owner.current.adjustStaminaLoss(-2 + (regenRate * 8) * mult, 0) // Humans lose stamina damage really quickly. Vamps should heal more. - owner.current.adjustCloneLoss(-0.1 * (regenRate * 2) * mult, 0) + owner.current.adjustStaminaLoss(-2 + (regenRate * -10) * mult, 0) // Humans lose stamina damage really quickly. Vamps should heal more. + owner.current.adjustCloneLoss(-1 * (regenRate * 4) * mult, 0) owner.current.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1 * (regenRate * 4) * mult) //adjustBrainLoss(-1 * (regenRate * 4) * mult, 0) // No Bleeding if(ishuman(owner.current)) //NOTE Current bleeding is horrible, not to count the amount of blood ballistics delete. @@ -97,7 +97,7 @@ var/fireheal = 0 // BURN: Heal in Coffin while Fakedeath, or when damage above maxhealth (you can never fully heal fire) var/amInCoffinWhileTorpor = istype(C.loc, /obj/structure/closet/crate/coffin) && (mult == 0 || HAS_TRAIT(C, TRAIT_DEATHCOMA)) // Check for mult 0 OR death coma. (mult 0 means we're testing from coffin) if(amInCoffinWhileTorpor) - mult *= 4 // Increase multiplier if we're sleeping in a coffin. + mult *= 5 // Increase multiplier if we're sleeping in a coffin. fireheal = min(C.getFireLoss_nonProsthetic(), regenRate) // NOTE: Burn damage ONLY heals in torpor. costMult = 0.25 C.ExtinguishMob() @@ -118,8 +118,6 @@ if(bruteheal + fireheal + toxinheal > 0) // Just a check? Don't heal/spend, and return. if(mult == 0) return TRUE - if(owner.current.stat >= UNCONSCIOUS) //Faster regeneration while unconcious, so you dont have to wait all day - mult *= 2 // We have damage. Let's heal (one time) C.adjustBruteLoss(-bruteheal * mult, forced = TRUE)// Heal BRUTE / BURN in random portions throughout the body. C.adjustFireLoss(-fireheal * mult, forced = TRUE) @@ -189,19 +187,19 @@ /datum/antagonist/bloodsucker/proc/HandleDeath() // FINAL DEATH // Fire Damage? (above double health) - if(owner.current.getFireLoss_nonProsthetic() >= owner.current.getMaxHealth() * 1.5) + if (owner.current.getFireLoss_nonProsthetic() >= owner.current.getMaxHealth() * 2) FinalDeath() return // Staked while "Temp Death" or Asleep - if(owner.current.StakeCanKillMe() && owner.current.AmStaked()) + if (owner.current.StakeCanKillMe() && owner.current.AmStaked()) FinalDeath() return // Not "Alive"? - if(!owner.current || !isliving(owner.current) || isbrain(owner.current) || !get_turf(owner.current)) + if (!owner.current || !isliving(owner.current) || isbrain(owner.current) || !get_turf(owner.current)) FinalDeath() return // Missing Brain or Heart? - if(!owner.current.HaveBloodsuckerBodyparts()) + if (!owner.current.HaveBloodsuckerBodyparts()) FinalDeath() return // Disable Powers: Masquerade * NOTE * This should happen as a FLAW! @@ -214,21 +212,21 @@ var/total_toxloss = owner.current.getToxLoss() //This is neater than just putting it in total_damage var/total_damage = total_brute + total_burn + total_toxloss // Died? Convert to Torpor (fake death) - if(owner.current.stat >= DEAD) + if (owner.current.stat >= DEAD) Torpor_Begin() to_chat(owner, "Your immortal body will not yet relinquish your soul to the abyss. You enter Torpor.") - sleep(30) //To avoid spam if (poweron_masquerade == TRUE) to_chat(owner, "Your wounds will not heal until you disable the Masquerade power.") // End Torpor: else // No damage, OR toxin healed AND brute healed and NOT in coffin (since you cannot heal burn) - if(total_damage <= 0 || total_toxloss <= 0 && total_brute <= 0 && !istype(owner.current.loc, /obj/structure/closet/crate/coffin)) + if (total_damage <= 0 || total_toxloss <= 0 && total_brute <= 0 && !istype(owner.current.loc, /obj/structure/closet/crate/coffin)) // Not Daytime, Not in Torpor - if(!SSticker.mode.is_daylight() && HAS_TRAIT_FROM(owner.current, TRAIT_DEATHCOMA, "bloodsucker")) + if (!SSticker.mode.is_daylight() && HAS_TRAIT_FROM(owner.current, TRAIT_DEATHCOMA, "bloodsucker")) Torpor_End() // Fake Unconscious - if(poweron_masquerade == TRUE && total_damage >= owner.current.getMaxHealth() - HEALTH_THRESHOLD_FULLCRIT) + if (poweron_masquerade == TRUE && total_damage >= owner.current.getMaxHealth() - HEALTH_THRESHOLD_FULLCRIT) owner.current.Unconscious(20,1) + //HEALTH_THRESHOLD_CRIT 0 //HEALTH_THRESHOLD_FULLCRIT -30 //HEALTH_THRESHOLD_DEAD -100 @@ -243,8 +241,8 @@ owner.current.update_sight() owner.current.reload_fullscreen() // Disable ALL Powers - for(var/datum/action/bloodsucker/power in powers) - if(power.active && !power.can_use_in_torpor) + for (var/datum/action/bloodsucker/power in powers) + if (power.active && !power.can_use_in_torpor) power.DeactivatePower() @@ -283,7 +281,7 @@ // Free my Vassals! FreeAllVassals() // Elders get Dusted - if(vamplevel >= 4) // (vamptitle) + if (vamplevel >= 4) // (vamptitle) owner.current.visible_message("[owner.current]'s skin crackles and dries, their skin and bones withering to dust. A hollow cry whips from what is now a sandy pile of remains.", \ "Your soul escapes your withering body as the abyss welcomes you to your Final Death.", \ "You hear a dry, crackling sound.") @@ -308,7 +306,7 @@ if (!isliving(src)) return var/mob/living/L = src - if(!L.AmBloodsucker()) + if (!L.AmBloodsucker()) return // We're a vamp? Try to eat food... var/datum/antagonist/bloodsucker/bloodsuckerdatum = mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER) @@ -317,7 +315,7 @@ /datum/antagonist/bloodsucker/proc/handle_eat_human_food(var/food_nutrition) // Called from snacks.dm and drinks.dm set waitfor = FALSE - if(!owner.current || !iscarbon(owner.current)) + if (!owner.current || !iscarbon(owner.current)) return var/mob/living/carbon/C = owner.current // Remove Nutrition, Give Bad Food diff --git a/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm b/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm index 844b523135..febf53c324 100644 --- a/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm +++ b/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm @@ -35,8 +35,8 @@ var/warn_sun_burn = FALSE // So we only get the sun burn message once per day. var/had_toxlover = FALSE // LISTS - var/static/list/defaultTraits = list (TRAIT_STABLEHEART, TRAIT_NOBREATH, TRAIT_SLEEPIMMUNE, TRAIT_NOCRITDAMAGE, TRAIT_RESISTCOLD, TRAIT_RADIMMUNE, TRAIT_NIGHT_VISION, \ - TRAIT_NOSOFTCRIT, TRAIT_NOHARDCRIT, TRAIT_AGEUSIA, TRAIT_COLDBLOODED, TRAIT_NONATURALHEAL, TRAIT_NOMARROW, TRAIT_NOPULSE, TRAIT_VIRUSIMMUNE) + var/static/list/defaultTraits = list (TRAIT_STABLEHEART, TRAIT_NOBREATH, TRAIT_SLEEPIMMUNE, TRAIT_NOCRITDAMAGE, TRAIT_RESISTCOLD, TRAIT_RADIMMUNE, TRAIT_VIRUSIMMUNE, TRAIT_NIGHT_VISION, \ + TRAIT_NOSOFTCRIT, TRAIT_NOHARDCRIT, TRAIT_AGEUSIA, TRAIT_COLDBLOODED, TRAIT_NONATURALHEAL, TRAIT_NOMARROW, TRAIT_NOPULSE, TRAIT_NOCLONE) // NOTES: TRAIT_AGEUSIA <-- Doesn't like flavors. // REMOVED: TRAIT_NODEATH // TO ADD: @@ -183,7 +183,7 @@ BuyPower(new /datum/action/bloodsucker/masquerade) BuyPower(new /datum/action/bloodsucker/veil) // Traits - for(var/T in defaultTraits) + for (var/T in defaultTraits) ADD_TRAIT(owner.current, T, "bloodsucker") if(HAS_TRAIT(owner.current, TRAIT_TOXINLOVER)) //No slime bonuses here, no thank you had_toxlover = TRUE @@ -200,10 +200,10 @@ var/mob/living/carbon/human/H = owner.current var/datum/species/S = H.dna.species // Make Changes - H.physiology.brute_mod *= 0.8 // <-------------------- Start small, but burn mod increases based on rank! - H.physiology.cold_mod = 0 - H.physiology.stun_mod *= 0.35 - H.physiology.siemens_coeff *= 0.75 //base electrocution coefficient 1 + S.brutemod *= 0.5 // <-------------------- Start small, but burn mod increases based on rank! + S.coldmod = 0 + S.stunmod *= 0.25 + S.siemens_coeff *= 0.75 //base electrocution coefficient 1 //S.heatmod += 0.5 // Heat shouldn't affect. Only Fire. //S.punchstunthreshold = 8 //damage at which punches from this race will stun 9 S.punchdamagelow += 1 //lowest possible punch damage 0 @@ -319,10 +319,12 @@ datum/antagonist/bloodsucker/proc/SpendRank() if(ishuman(owner.current)) var/mob/living/carbon/human/H = owner.current var/datum/species/S = H.dna.species + S.burnmod *= 0.025 // Slightly more burn damage + S.stunmod *= 0.95 // Slightly less stun time. S.punchdamagelow += 0.5 S.punchdamagehigh += 0.5 // NOTE: This affects the hitting power of Brawn. // More Health - owner.current.setMaxHealth(owner.current.maxHealth + 10) + owner.current.setMaxHealth(owner.current.maxHealth + 5) // Vamp Stats regenRate += 0.05 // Points of brute healed (starts at 0.3) feedAmount += 2 // Increase how quickly I munch down vics (15) @@ -334,7 +336,7 @@ datum/antagonist/bloodsucker/proc/SpendRank() // Assign True Reputation if(vamplevel == 4) SelectReputation(am_fledgling = FALSE, forced = TRUE) - to_chat(owner.current, "You are now a rank [vamplevel] Bloodsucker. Your strength, health, feed rate, regen rate, and maximum blood have all increased!") + to_chat(owner.current, "You are now a rank [vamplevel] Bloodsucker. Your strength, resistence, health, feed rate, regen rate, and maximum blood have all increased!") to_chat(owner.current, "Your existing powers have all ranked up as well!") update_hud(TRUE) owner.current.playsound_local(null, 'sound/effects/pope_entry.ogg', 25, 1) // Play THIS sound for user only. The "null" is where turf would go if a location was needed. Null puts it right in their head. diff --git a/code/modules/antagonists/bloodsucker/datum_vassal.dm b/code/modules/antagonists/bloodsucker/datum_vassal.dm index 716b7ff223..71ee0bcc1d 100644 --- a/code/modules/antagonists/bloodsucker/datum_vassal.dm +++ b/code/modules/antagonists/bloodsucker/datum_vassal.dm @@ -56,6 +56,11 @@ var/obj/item/organ/eyes/vassal/E = new E.Insert(owner.current) +/obj/item/organ/eyes/vassal/ + lighting_alpha = 180 // LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE <--- This is too low a value at 128. We need to SEE what the darkness is so we can hide in it. + see_in_dark = 12 + flash_protect = -1 //These eyes are weaker to flashes, but let you see in the dark + /datum/antagonist/vassal/proc/remove_thrall_eyes() var/obj/item/organ/eyes/E = new E.Insert(owner.current) diff --git a/code/modules/antagonists/bloodsucker/items/bloodsucker_organs.dm b/code/modules/antagonists/bloodsucker/items/bloodsucker_organs.dm index e4e26fe034..5a905857c5 100644 --- a/code/modules/antagonists/bloodsucker/items/bloodsucker_organs.dm +++ b/code/modules/antagonists/bloodsucker/items/bloodsucker_organs.dm @@ -51,11 +51,6 @@ return "no" // Bloodsuckers don't have a heartbeat at all when stopped (default is "an unstable") // EYES // -/obj/item/organ/eyes/vassal/ - lighting_alpha = 180 // LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE <--- This is too low a value at 128. We need to SEE what the darkness is so we can hide in it. - see_in_dark = 12 - flash_protect = -1 //These eyes are weaker to flashes, but let you see in the dark - /obj/item/organ/eyes/vassal/bloodsucker flash_protect = 2 //Eye healing isnt working properly sight_flags = SEE_MOBS // Taken from augmented_eyesight.dm diff --git a/code/modules/antagonists/bloodsucker/items/bloodsucker_stake.dm b/code/modules/antagonists/bloodsucker/items/bloodsucker_stake.dm index b7c90523b6..9db4cae1ff 100644 --- a/code/modules/antagonists/bloodsucker/items/bloodsucker_stake.dm +++ b/code/modules/antagonists/bloodsucker/items/bloodsucker_stake.dm @@ -78,7 +78,7 @@ var/mob/living/carbon/C = target // Needs to be Down/Slipped in some way to Stake. if(!C.can_be_staked() || target == user) - to_chat(user, "You can't stake [target] when they are moving about! They have to be laying down or grabbed by the neck!") + to_chat(user, "You cant stake [target] when they are moving moving about! They have to be laying down!") return // Oops! Can't. if(HAS_TRAIT(C, TRAIT_PIERCEIMMUNE)) @@ -113,7 +113,7 @@ // Can this target be staked? If someone stands up before this is complete, it fails. Best used on someone stationary. /mob/living/carbon/proc/can_be_staked() //return resting || IsKnockdown() || IsUnconscious() || (stat && (stat != SOFT_CRIT || pulledby)) || (has_trait(TRAIT_FAKEDEATH)) || resting || IsStun() || IsFrozen() || (pulledby && pulledby.grab_state >= GRAB_NECK) - return (resting || lying || IsUnconscious() || pulledby && pulledby.grab_state >= GRAB_NECK) + return (src.resting || src.lying) // ABOVE: Taken from update_mobility() in living.dm /obj/item/stake/hardened diff --git a/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm b/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm index f66ce4a208..f73912d0f5 100644 --- a/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm +++ b/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm @@ -130,7 +130,7 @@ /obj/structure/bloodsucker/vassalrack/MouseDrop_T(atom/movable/O, mob/user) if(!O.Adjacent(src) || O == user || !isliving(O) || !isliving(user) || useLock || has_buckled_mobs() || user.incapacitated()) return - if(!anchored && isvamp(user)) + if(!anchored && user.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER)) to_chat(user, "Until this rack is secured in place, it cannot serve its purpose.") return // PULL TARGET: Remember if I was pullin this guy, so we can restore this @@ -183,7 +183,7 @@ /obj/structure/bloodsucker/vassalrack/user_unbuckle_mob(mob/living/M, mob/user) // Attempt Unbuckle - if(!isvamp(user)) + if(!user.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER)) if(M == user) M.visible_message("[user] tries to release themself from the rack!",\ "You attempt to release yourself from the rack!") // For sound if not seen --> "You hear a squishy wet noise.") @@ -275,7 +275,7 @@ // All done! if(convert_progress <= 0) // FAIL: Can't be Vassal - if(!SSticker.mode.can_make_vassal(target, user, display_warning=FALSE) || HAS_TRAIT(target, TRAIT_MINDSHIELD)) // If I'm an unconvertable Antag ONLY + if(!SSticker.mode.can_make_vassal(target, user, display_warning=FALSE) && HAS_TRAIT(target, TRAIT_MINDSHIELD)) // If I'm an unconvertable Antag ONLY to_chat(user, "[target] doesn't respond to your persuasion. It doesn't appear they can be converted to follow you, they either have a mindshield or their external loyalties are too difficult for you to break.\[ALT+click to release\]") convert_progress ++ // Pop it back up some. Avoids wasting Blood on a lost cause. // SUCCESS: All done! @@ -453,7 +453,7 @@ /obj/structure/bloodsucker/candelabrum/examine(mob/user) . = ..() - if((isvamp()) || isobserver(user)) + if((user.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER)) || isobserver(user)) . += {"This is a magical candle which drains at the sanity of mortals who are not under your command while it is active."} . += {"You can alt click on it from any range to turn it on remotely, or simply be next to it and click on it to turn it on and off normally."} /* if(user.mind.has_antag_datum(ANTAG_DATUM_VASSAL) @@ -461,13 +461,15 @@ You can turn it on and off by clicking on it while you are next to it"} */ /obj/structure/bloodsucker/candelabrum/attack_hand(mob/user) + var/datum/antagonist/bloodsucker/V = user.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER) //I wish there was a better way to do this var/datum/antagonist/vassal/T = user.mind.has_antag_datum(ANTAG_DATUM_VASSAL) - if(isvamp(user) || istype(T)) + if(istype(V) || istype(T)) toggle() /obj/structure/bloodsucker/candelabrum/AltClick(mob/user) + var/datum/antagonist/bloodsucker/V = user.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER) // Bloodsuckers can turn their candles on from a distance. SPOOOOKY. - if(isvamp(user)) + if(istype(V)) toggle() /obj/structure/bloodsucker/candelabrum/proc/toggle(mob/user) @@ -484,7 +486,8 @@ if(lit) for(var/mob/living/carbon/human/H in viewers(7, src)) var/datum/antagonist/vassal/T = H.mind.has_antag_datum(ANTAG_DATUM_VASSAL) - if(isvamp(H) || T) //We dont want vassals or vampires affected by this + var/datum/antagonist/bloodsucker/V = H.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER) + if(V || T) //We dont want vassals or vampires affected by this return H.hallucination = 20 SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "vampcandle", /datum/mood_event/vampcandle) diff --git a/code/modules/antagonists/bloodsucker/powers/bs_cloak.dm b/code/modules/antagonists/bloodsucker/powers/bs_cloak.dm index 9126638fea..cea942e26d 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_cloak.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_cloak.dm @@ -9,9 +9,8 @@ bloodsucker_can_buy = TRUE amToggle = TRUE warn_constant_cost = TRUE - var/was_running - var/light_min = 0.2 // If lum is above this, no good. + var/light_min = 0.5 // If lum is above this, no good. /datum/action/bloodsucker/cloak/CheckCanUse(display_error) . = ..() @@ -27,16 +26,18 @@ /datum/action/bloodsucker/cloak/ActivatePower() var/datum/antagonist/bloodsucker/bloodsuckerdatum = owner.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER) var/mob/living/user = owner - was_running = (user.m_intent == MOVE_INTENT_RUN) + var/was_running = (user.m_intent == MOVE_INTENT_RUN) if(was_running) user.toggle_move_intent() ADD_TRAIT(user, TRAIT_NORUNNING, "cloak of darkness") while(bloodsuckerdatum && ContinueActive(user) || user.m_intent == MOVE_INTENT_RUN) // Pay Blood Toll (if awake) - owner.alpha = max(20, owner.alpha - min(75, 10 + 5 * level_current)) + owner.alpha = max(0, owner.alpha - min(75, 20 + 15 * level_current)) bloodsuckerdatum.AddBloodVolume(-0.2) sleep(5) // Check every few ticks that we haven't disabled this power // Return to Running (if you were before) + if(was_running && user.m_intent != MOVE_INTENT_RUN) + user.toggle_move_intent() /datum/action/bloodsucker/cloak/ContinueActive(mob/living/user, mob/living/target) if (!..()) @@ -54,5 +55,3 @@ ..() REMOVE_TRAIT(user, TRAIT_NORUNNING, "cloak of darkness") user.alpha = 255 - if(was_running && user.m_intent != MOVE_INTENT_RUN) - user.toggle_move_intent() diff --git a/code/modules/antagonists/bloodsucker/powers/bs_masquerade.dm b/code/modules/antagonists/bloodsucker/powers/bs_masquerade.dm index 0435ddccd5..6ee17b3014 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_masquerade.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_masquerade.dm @@ -51,17 +51,14 @@ REMOVE_TRAIT(user, TRAIT_COLDBLOODED, "bloodsucker") REMOVE_TRAIT(user, TRAIT_NOHARDCRIT, "bloodsucker") REMOVE_TRAIT(user, TRAIT_NOSOFTCRIT, "bloodsucker") - REMOVE_TRAIT(user, TRAIT_VIRUSIMMUNE, "bloodsucker") var/obj/item/organ/heart/vampheart/H = user.getorganslot(ORGAN_SLOT_HEART) - var/obj/item/organ/eyes/vassal/bloodsucker/E = user.getorganslot(ORGAN_SLOT_EYES) - E.flash_protect = 0 - + // WE ARE ALIVE! // bloodsuckerdatum.poweron_masquerade = TRUE while(bloodsuckerdatum && ContinueActive(user)) // HEART - if(istype(H)) + if (istype(H)) H.FakeStart() // PASSIVE (done from LIFE) @@ -70,7 +67,7 @@ // Don't Heal // Pay Blood Toll (if awake) - if(user.stat == CONSCIOUS) + if (user.stat == CONSCIOUS) bloodsuckerdatum.AddBloodVolume(-0.2) sleep(20) // Check every few ticks that we haven't disabled this power @@ -92,13 +89,9 @@ ADD_TRAIT(user, TRAIT_COLDBLOODED, "bloodsucker") ADD_TRAIT(user, TRAIT_NOHARDCRIT, "bloodsucker") ADD_TRAIT(user, TRAIT_NOSOFTCRIT, "bloodsucker") - ADD_TRAIT(user, TRAIT_VIRUSIMMUNE, "bloodsucker") // HEART var/obj/item/organ/heart/H = user.getorganslot(ORGAN_SLOT_HEART) - var/obj/item/organ/eyes/vassal/bloodsucker/E = user.getorganslot(ORGAN_SLOT_EYES) H.Stop() - E.flash_protect = 2 - to_chat(user, "Your heart beats one final time, while your skin dries out and your icy pallor returns.") diff --git a/code/modules/antagonists/bloodsucker/powers/bs_mesmerize.dm b/code/modules/antagonists/bloodsucker/powers/bs_mesmerize.dm index 7962c7d403..94bc0e11d0 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_mesmerize.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_mesmerize.dm @@ -89,14 +89,17 @@ if(istype(target)) target.Stun(40) //Utterly useless without this, its okay since there are so many checks to go through + target.silent = 45 //Shhhh little lamb target.apply_status_effect(STATUS_EFFECT_MESMERIZE, 45) //So you cant rotate with combat mode, plus fancy status alert if(do_mob(user, target, 40, 0, TRUE, extra_checks=CALLBACK(src, .proc/ContinueActive, user, target))) PowerActivatedSuccessfully() // PAY COST! BEGIN COOLDOWN! var/power_time = 90 + level_current * 12 - target.apply_status_effect(STATUS_EFFECT_MESMERIZE, power_time + 80) + target.silent = power_time + 20 + target.apply_status_effect(STATUS_EFFECT_MESMERIZE, 100 + level_current * 15) to_chat(user, "[target] is fixed in place by your hypnotic gaze.") target.Stun(power_time) + //target.silent += power_time / 10 // Silent isn't based on ticks. target.next_move = world.time + power_time // <--- Use direct change instead. We want an unmodified delay to their next move // target.changeNext_move(power_time) // check click.dm target.notransform = TRUE // <--- Fuck it. We tried using next_move, but they could STILL resist. We're just doing a hard freeze. spawn(power_time) diff --git a/code/modules/antagonists/bloodsucker/powers/bs_trespass.dm b/code/modules/antagonists/bloodsucker/powers/bs_trespass.dm index 159c7b20b7..c650a6af15 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_trespass.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_trespass.dm @@ -89,7 +89,13 @@ user.invisibility = INVISIBILITY_MAXIMUM // LOSE CUFFS - + if(user.handcuffed) + var/obj/O = user.handcuffed + user.dropItemToGround(O) + if(user.legcuffed) + var/obj/O = user.legcuffed + user.dropItemToGround(O) + // Wait... sleep(mist_delay / 2) diff --git a/code/modules/antagonists/changeling/powers/adrenaline.dm b/code/modules/antagonists/changeling/powers/adrenaline.dm index ba40388844..256d3e89e3 100644 --- a/code/modules/antagonists/changeling/powers/adrenaline.dm +++ b/code/modules/antagonists/changeling/powers/adrenaline.dm @@ -13,5 +13,5 @@ //Recover from stuns. /obj/effect/proc_holder/changeling/adrenaline/sting_action(mob/living/user) - user.do_adrenaline(0, FALSE, 70, 0, TRUE, list(/datum/reagent/medicine/epinephrine = 3, /datum/reagent/drug/methamphetamine/changeling = 10, /datum/reagent/medicine/mannitol = 10, /datum/reagent/medicine/regen_jelly = 10, /datum/reagent/medicine/changelingadrenaline = 5), "Energy rushes through us.", 0, 0.75, 0) + user.do_adrenaline(0, FALSE, 70, 0, TRUE, list("epinephrine" = 3, "changelingmeth" = 10, "mannitol" = 10, "regen_jelly" = 10, "changelingadrenaline" = 5), "Energy rushes through us.", 0, 0.75, 0) return TRUE \ No newline at end of file diff --git a/code/modules/antagonists/changeling/powers/linglink.dm b/code/modules/antagonists/changeling/powers/linglink.dm index 332f543545..971c811074 100644 --- a/code/modules/antagonists/changeling/powers/linglink.dm +++ b/code/modules/antagonists/changeling/powers/linglink.dm @@ -58,7 +58,7 @@ target.mind.linglink = 1 target.say("[MODE_TOKEN_CHANGELING] AAAAARRRRGGGGGHHHHH!!") to_chat(target, "You can now communicate in the changeling hivemind, say \"[MODE_TOKEN_CHANGELING] message\" to communicate!") - target.reagents.add_reagent(/datum/reagent/medicine/salbutamol, 40) // So they don't choke to death while you interrogate them + target.reagents.add_reagent("salbutamol", 40) // So they don't choke to death while you interrogate them sleep(1800) SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]", "[i]")) if(!do_mob(user, target, 20)) diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index b2ab5caef8..92a4f28308 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -500,7 +500,7 @@ /obj/item/clothing/suit/space/changeling/process() if(ishuman(loc)) var/mob/living/carbon/human/H = loc - H.reagents.add_reagent(/datum/reagent/medicine/salbutamol, REAGENTS_METABOLISM) + H.reagents.add_reagent("salbutamol", REAGENTS_METABOLISM) /obj/item/clothing/head/helmet/space/changeling name = "flesh mass" diff --git a/code/modules/antagonists/changeling/powers/panacea.dm b/code/modules/antagonists/changeling/powers/panacea.dm index 2a0451bc76..8d571d21e3 100644 --- a/code/modules/antagonists/changeling/powers/panacea.dm +++ b/code/modules/antagonists/changeling/powers/panacea.dm @@ -28,10 +28,10 @@ C.vomit(0, toxic = TRUE) O.forceMove(get_turf(user)) - user.reagents.add_reagent(/datum/reagent/medicine/mutadone, 10) - user.reagents.add_reagent(/datum/reagent/medicine/pen_acid/pen_jelly, 20) - user.reagents.add_reagent(/datum/reagent/medicine/antihol, 10) - user.reagents.add_reagent(/datum/reagent/medicine/mannitol, 25) + user.reagents.add_reagent("mutadone", 10) + user.reagents.add_reagent("pen_jelly", 20) + user.reagents.add_reagent("antihol", 10) + user.reagents.add_reagent("mannitol", 25) if(isliving(user)) var/mob/living/L = user diff --git a/code/modules/antagonists/changeling/powers/tiny_prick.dm b/code/modules/antagonists/changeling/powers/tiny_prick.dm index dc7887eee3..c58d934d6d 100644 --- a/code/modules/antagonists/changeling/powers/tiny_prick.dm +++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm @@ -104,11 +104,11 @@ var/mob/living/carbon/C = target . = TRUE if(istype(C)) - if(C.reagents.has_reagent(/datum/reagent/changeling_string)) - C.reagents.add_reagent(/datum/reagent/changeling_string,120) + if(C.reagents.has_reagent("changeling_sting_real")) + C.reagents.add_reagent("changeling_sting_real",120) log_combat(user, target, "stung", "transformation sting", ", extending the duration.") else - C.reagents.add_reagent(/datum/reagent/changeling_string,120,list("desired_dna" = selected_dna.dna)) + C.reagents.add_reagent("changeling_sting_real",120,list("desired_dna" = selected_dna.dna)) log_combat(user, target, "stung", "transformation sting", " new identity is '[selected_dna.dna.real_name]'") @@ -243,8 +243,8 @@ /obj/effect/proc_holder/changeling/sting/LSD/sting_action(mob/user, mob/target) log_combat(user, target, "stung", "LSD sting") if(target.reagents) - target.reagents.add_reagent(/datum/reagent/blob/regenerative_materia, 5) - target.reagents.add_reagent(/datum/reagent/toxin/mindbreaker, 5) + target.reagents.add_reagent("regenerative_materia", 5) + target.reagents.add_reagent("mindbreaker", 5) return TRUE /obj/effect/proc_holder/changeling/sting/cryo @@ -262,5 +262,5 @@ /obj/effect/proc_holder/changeling/sting/cryo/sting_action(mob/user, mob/target) log_combat(user, target, "stung", "cryo sting") if(target.reagents) - target.reagents.add_reagent(/datum/reagent/consumable/frostoil, 30) + target.reagents.add_reagent("frostoil", 30) return TRUE diff --git a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm index 9f2ddfda47..1f616b7dbc 100644 --- a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm +++ b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm @@ -100,7 +100,7 @@ var/burndamage = L.getFireLoss() var/oxydamage = L.getOxyLoss() var/totaldamage = brutedamage + burndamage + oxydamage - if(!totaldamage && (!L.reagents || !L.reagents.has_reagent(/datum/reagent/water/holywater))) + if(!totaldamage && (!L.reagents || !L.reagents.has_reagent("holywater"))) to_chat(ranged_ability_user, "\"[L] is unhurt and untainted.\"") return TRUE @@ -108,7 +108,7 @@ to_chat(ranged_ability_user, "You bathe [L == ranged_ability_user ? "yourself":"[L]"] in Inath-neq's power!") var/targetturf = get_turf(L) - var/has_holy_water = (L.reagents && L.reagents.has_reagent(/datum/reagent/water/holywater)) + var/has_holy_water = (L.reagents && L.reagents.has_reagent("holywater")) var/healseverity = max(round(totaldamage*0.05, 1), 1) //shows the general severity of the damage you just healed, 1 glow per 20 for(var/i in 1 to healseverity) new /obj/effect/temp_visual/heal(targetturf, "#1E8CE1") @@ -129,7 +129,7 @@ playsound(targetturf, 'sound/magic/staff_healing.ogg', 50, 1) if(has_holy_water) - L.reagents.del_reagent(/datum/reagent/water/holywater) + L.reagents.remove_reagent("holywater", 1000) remove_ranged_ability() diff --git a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm index e01156ba44..88cf420420 100644 --- a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm +++ b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm @@ -7,7 +7,7 @@ w_class = WEIGHT_CLASS_NORMAL resistance_flags = FIRE_PROOF | ACID_PROOF flags_inv = HIDEEARS|HIDEHAIR|HIDEFACE|HIDESNOUT - mutantrace_variation = STYLE_MUZZLE + mutantrace_variation = MUTANTRACE_VARIATION armor = list("melee" = 50, "bullet" = 70, "laser" = -25, "energy" = 0, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) /obj/item/clothing/head/helmet/clockwork/Initialize() diff --git a/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm index b12c72b4af..d4d5349c70 100644 --- a/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm +++ b/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm @@ -103,7 +103,7 @@ . = ..() addtimer(CALLBACK(src, .proc/check_on_mob, user), 1) //dropped is called before the item is out of the slot, so we need to check slightly later -/obj/item/clockwork/slab/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) +/obj/item/clockwork/slab/worn_overlays(isinhands = FALSE, icon_file) . = list() if(isinhands && item_state && inhand_overlay) var/mutable_appearance/M = mutable_appearance(icon_file, "slab_[inhand_overlay]") diff --git a/code/modules/antagonists/clockcult/clock_items/replica_fabricator.dm b/code/modules/antagonists/clockcult/clock_items/replica_fabricator.dm index 501bcdc1c4..0365ae63af 100644 --- a/code/modules/antagonists/clockcult/clock_items/replica_fabricator.dm +++ b/code/modules/antagonists/clockcult/clock_items/replica_fabricator.dm @@ -139,7 +139,7 @@ var/new_thing_type = fabrication_values["new_obj_type"] if(isturf(target)) //if our target is a turf, we're just going to ChangeTurf it and assume it'll work out. var/turf/T = target - T.ChangeTurf(new_thing_type, flags = CHANGETURF_INHERIT_AIR) + T.ChangeTurf(new_thing_type) else if(new_thing_type) if(fabrication_values["dir_in_new"]) diff --git a/code/modules/antagonists/clockcult/clock_structures/wall_gear.dm b/code/modules/antagonists/clockcult/clock_structures/wall_gear.dm index d823f19d4a..32b1b61dd1 100644 --- a/code/modules/antagonists/clockcult/clock_structures/wall_gear.dm +++ b/code/modules/antagonists/clockcult/clock_structures/wall_gear.dm @@ -59,7 +59,7 @@ if(anchored) T.PlaceOnTop(/turf/closed/wall/clockwork) else - T.PlaceOnTop(/turf/open/floor/clockwork, flags = CHANGETURF_INHERIT_AIR) + T.PlaceOnTop(/turf/open/floor/clockwork) new /obj/structure/falsewall/brass(T) qdel(src) else diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index f5be94a0e7..b4ddb9dbff 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -331,7 +331,7 @@ flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDEEARS|HIDEEYES|HIDESNOUT armor = list("melee" = 30, "bullet" = 30, "laser" = 30,"energy" = 20, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 10) flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH - mutantrace_variation = STYLE_MUZZLE + mutantrace_variation = MUTANTRACE_VARIATION /obj/item/clothing/suit/magusred name = "magus robes" @@ -424,7 +424,7 @@ return 1 return 0 -/obj/item/clothing/suit/hooded/cultrobes/cult_shield/worn_overlays(isinhands, icon_file, style_flags = NONE) +/obj/item/clothing/suit/hooded/cultrobes/cult_shield/worn_overlays(isinhands) . = list() if(!isinhands && current_charges) . += mutable_appearance('icons/effects/cult_effects.dmi', "shield-cult", MOB_LAYER + 0.01) @@ -487,7 +487,7 @@ icon = 'icons/obj/drinks.dmi' icon_state = "holyflask" color = "#333333" - list_reagents = list(/datum/reagent/fuel/unholywater = 50) + list_reagents = list("unholywater" = 50) /obj/item/shuttle_curse name = "cursed orb" @@ -797,7 +797,7 @@ if(ishuman(target)) var/mob/living/carbon/human/H = target if(H.stat != DEAD) - H.reagents.add_reagent(/datum/reagent/fuel/unholywater, 4) + H.reagents.add_reagent("unholywater", 4) if(isshade(target) || isconstruct(target)) var/mob/living/simple_animal/M = target if(M.health+5 < M.maxHealth) @@ -898,7 +898,7 @@ if(ishuman(target)) var/mob/living/carbon/human/H = target if(H.stat != DEAD) - H.reagents.add_reagent(/datum/reagent/fuel/unholywater, 7) + H.reagents.add_reagent("unholywater", 7) if(isshade(target) || isconstruct(target)) var/mob/living/simple_animal/M = target if(M.health+15 < M.maxHealth) diff --git a/code/modules/antagonists/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm index 6f340b9271..f38f379abe 100644 --- a/code/modules/antagonists/cult/cult_structures.dm +++ b/code/modules/antagonists/cult/cult_structures.dm @@ -239,9 +239,9 @@ var/turf/T = safepick(validturfs) if(T) if(istype(T, /turf/open/floor/plating)) - T.PlaceOnTop(/turf/open/floor/engine/cult, flags = CHANGETURF_INHERIT_AIR) + T.PlaceOnTop(/turf/open/floor/engine/cult) else - T.ChangeTurf(/turf/open/floor/engine/cult, flags = CHANGETURF_INHERIT_AIR) + T.ChangeTurf(/turf/open/floor/engine/cult) else var/turf/open/floor/engine/cult/F = safepick(cultturfs) if(F) diff --git a/code/modules/antagonists/cult/ritual.dm b/code/modules/antagonists/cult/ritual.dm index ba2a96289d..ff12a835ef 100644 --- a/code/modules/antagonists/cult/ritual.dm +++ b/code/modules/antagonists/cult/ritual.dm @@ -24,11 +24,11 @@ This file contains the cult dagger and rune list code /obj/item/melee/cultblade/dagger/attack(mob/living/M, mob/living/user) if(iscultist(M)) - if(M.reagents && M.reagents.has_reagent(/datum/reagent/water/holywater)) //allows cultists to be rescued from the clutches of ordained religion + if(M.reagents && M.reagents.has_reagent("holywater")) //allows cultists to be rescued from the clutches of ordained religion to_chat(user, "You remove the taint from [M]." ) - var/holy2unholy = M.reagents.get_reagent_amount(/datum/reagent/water/holywater) - M.reagents.del_reagent(/datum/reagent/water/holywater) - M.reagents.add_reagent(/datum/reagent/fuel/unholywater,holy2unholy) + var/holy2unholy = M.reagents.get_reagent_amount("holywater") + M.reagents.del_reagent("holywater") + M.reagents.add_reagent("unholywater",holy2unholy) log_combat(user, M, "smacked", src, " removing the holy water from them") return FALSE . = ..() diff --git a/code/modules/antagonists/devil/devil.dm b/code/modules/antagonists/devil/devil.dm index 951fe4e18a..2e38734b6f 100644 --- a/code/modules/antagonists/devil/devil.dm +++ b/code/modules/antagonists/devil/devil.dm @@ -384,14 +384,14 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", if(BANISH_WATER) if(iscarbon(body)) var/mob/living/carbon/H = body - return H.reagents.has_reagent(/datum/reagent/water/holywater) + return H.reagents.has_reagent("holy water") return 0 if(BANISH_COFFIN) return (body && istype(body.loc, /obj/structure/closet/crate/coffin)) if(BANISH_FORMALDYHIDE) if(iscarbon(body)) var/mob/living/carbon/H = body - return H.reagents.has_reagent(/datum/reagent/toxin/formaldehyde) + return H.reagents.has_reagent("formaldehyde") return 0 if(BANISH_RUNES) if(body) diff --git a/code/modules/antagonists/nukeop/clownop.dm b/code/modules/antagonists/nukeop/clownop.dm index 58b492b578..43e62c4638 100644 --- a/code/modules/antagonists/nukeop/clownop.dm +++ b/code/modules/antagonists/nukeop/clownop.dm @@ -5,14 +5,6 @@ antagpanel_category = "ClownOp" nukeop_outfit = /datum/outfit/syndicate/clownop -/datum/antagonist/nukeop/clownop/on_gain() - . = ..() - ADD_TRAIT(owner, TRAIT_CLOWN_MENTALITY, NUKEOP_ANTAGONIST) - -/datum/antagonist/nukeop/clownop/on_removal() - REMOVE_TRAIT(owner, TRAIT_CLOWN_MENTALITY, NUKEOP_ANTAGONIST) - return ..() - /datum/antagonist/nukeop/leader/clownop name = "Clown Operative Leader" roundend_category = "clown operatives" diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm index b5ce5538e9..0a223f8b10 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm @@ -76,10 +76,9 @@ GLOBAL_VAR_INIT(war_declared, FALSE) CONFIG_SET(number/shuttle_refuel_delay, max(CONFIG_GET(number/shuttle_refuel_delay), CHALLENGE_SHUTTLE_DELAY)) if(istype(SSticker.mode, /datum/game_mode/dynamic)) var/datum/game_mode/dynamic/mode = SSticker.mode - if(!(mode.storyteller.flags & WAROPS_ALWAYS_ALLOWED)) - var/threat_spent = CONFIG_GET(number/dynamic_warops_cost) - mode.spend_threat(threat_spent) - mode.log_threat("Nuke ops spent [threat_spent] on war ops.") + var/threat_spent = CONFIG_GET(number/dynamic_warops_cost) + mode.spend_threat(threat_spent) + mode.log_threat("Nuke ops spent [threat_spent] on war ops.") SSblackbox.record_feedback("amount", "nuclear_challenge_mode", 1) qdel(src) @@ -102,13 +101,12 @@ GLOBAL_VAR_INIT(war_declared, FALSE) return FALSE if(istype(SSticker.mode, /datum/game_mode/dynamic)) var/datum/game_mode/dynamic/mode = SSticker.mode - if(!(mode.storyteller.flags & WAROPS_ALWAYS_ALLOWED)) - if(mode.threat_level < CONFIG_GET(number/dynamic_warops_requirement)) - to_chat(user, "Due to the dynamic space in which the station resides, you are too deep into Nanotrasen territory to reasonably go loud.") - return FALSE - else if(mode.threat < CONFIG_GET(number/dynamic_warops_cost)) - to_chat(user, "Due to recent threats on the station, Nanotrasen is looking too closely for a war declaration to be wise.") - return FALSE + if(mode.threat_level < CONFIG_GET(number/dynamic_warops_requirement)) + to_chat(user, "Due to the dynamic space in which the station resides, you are too deep into Nanotrasen territory to reasonably go loud.") + return FALSE + else if(mode.threat < CONFIG_GET(number/dynamic_warops_cost)) + to_chat(user, "Due to recent threats on the station, Nanotrasen is looking too closely for a war declaration to be wise.") + return FALSE return TRUE /obj/item/nuclear_challenge/clownops diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index 2186e8b49e..e1c50a7cf5 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -513,7 +513,7 @@ /obj/machinery/nuclearbomb/beer/proc/fizzbuzz() var/datum/reagents/R = new/datum/reagents(1000) R.my_atom = src - R.add_reagent(/datum/reagent/consumable/ethanol/beer, 100) + R.add_reagent("beer", 100) var/datum/effect_system/foam_spread/foam = new foam.set_up(200, get_turf(src), R) diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index b98fa04504..b5291b1b7d 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -1,467 +1,466 @@ -//Revenants: based off of wraiths from Goon -//"Ghosts" that are invisible and move like ghosts, cannot take damage while invisible -//Don't hear deadchat and are NOT normal ghosts -//Admin-spawn or random event - -#define INVISIBILITY_REVENANT 50 -#define REVENANT_NAME_FILE "revenant_names.json" - -/mob/living/simple_animal/revenant - name = "revenant" - desc = "A malevolent spirit." - icon = 'icons/mob/mob.dmi' - icon_state = "revenant_idle" - var/icon_idle = "revenant_idle" - var/icon_reveal = "revenant_revealed" - var/icon_stun = "revenant_stun" - var/icon_drain = "revenant_draining" - var/stasis = FALSE - mob_biotypes = list(MOB_SPIRIT) - incorporeal_move = INCORPOREAL_MOVE_JAUNT - invisibility = INVISIBILITY_REVENANT - health = INFINITY //Revenants don't use health, they use essence instead - maxHealth = INFINITY - layer = GHOST_LAYER - healable = FALSE - spacewalk = TRUE - sight = SEE_SELF - throwforce = 0 - blood_volume = 0 - - see_in_dark = 8 - lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE - response_help = "passes through" - response_disarm = "swings through" - response_harm = "punches through" - unsuitable_atmos_damage = 0 - damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) //I don't know how you'd apply those, but revenants no-sell them anyway. - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - minbodytemp = 0 - maxbodytemp = INFINITY - harm_intent_damage = 0 - friendly = "touches" - status_flags = 0 - wander = FALSE - density = FALSE - movement_type = FLYING - anchored = TRUE - mob_size = MOB_SIZE_TINY - pass_flags = PASSTABLE | PASSGRILLE | PASSMOB - speed = 1 - unique_name = TRUE - hud_possible = list(ANTAG_HUD) - hud_type = /datum/hud/revenant - - var/essence = 75 //The resource, and health, of revenants. - var/essence_regen_cap = 75 //The regeneration cap of essence (go figure); regenerates every Life() tick up to this amount. - var/essence_regenerating = TRUE //If the revenant regenerates essence or not - var/essence_regen_amount = 5 //How much essence regenerates - var/essence_accumulated = 0 //How much essence the revenant has stolen - var/revealed = FALSE //If the revenant can take damage from normal sources. - var/unreveal_time = 0 //How long the revenant is revealed for, is about 2 seconds times this var. - var/unstun_time = 0 //How long the revenant is stunned for, is about 2 seconds times this var. - var/inhibited = FALSE //If the revenant's abilities are blocked by a chaplain's power. - var/essence_drained = 0 //How much essence the revenant will drain from the corpse it's feasting on. - var/draining = FALSE //If the revenant is draining someone. - var/list/drained_mobs = list() //Cannot harvest the same mob twice - var/perfectsouls = 0 //How many perfect, regen-cap increasing souls the revenant has. //TODO, add objective for getting a perfect soul(s?) - var/generated_objectives_and_spells = FALSE - -/mob/living/simple_animal/revenant/Initialize(mapload) - . = ..() - AddSpell(new /obj/effect/proc_holder/spell/targeted/night_vision/revenant(null)) - AddSpell(new /obj/effect/proc_holder/spell/targeted/telepathy/revenant(null)) - AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/defile(null)) - AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/overload(null)) - AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/blight(null)) - AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/malfunction(null)) - random_revenant_name() - -/mob/living/simple_animal/revenant/proc/random_revenant_name() - var/built_name = "" - built_name += pick(strings(REVENANT_NAME_FILE, "spirit_type")) - built_name += " of " - built_name += pick(strings(REVENANT_NAME_FILE, "adverb")) - built_name += pick(strings(REVENANT_NAME_FILE, "theme")) - name = built_name - -/mob/living/simple_animal/revenant/Login() - ..() - to_chat(src, "You are a revenant.") - to_chat(src, "Your formerly mundane spirit has been infused with alien energies and empowered into a revenant.") - to_chat(src, "You are not dead, not alive, but somewhere in between. You are capable of limited interaction with both worlds.") - to_chat(src, "You are invincible and invisible to everyone but other ghosts. Most abilities will reveal you, rendering you vulnerable.") - to_chat(src, "To function, you are to drain the life essence from humans. This essence is a resource, as well as your health, and will power all of your abilities.") - to_chat(src, "You do not remember anything of your past lives, nor will you remember anything about this one after your death.") - to_chat(src, "Be sure to read the wiki page to learn more.") - if(!generated_objectives_and_spells) - generated_objectives_and_spells = TRUE - mind.assigned_role = ROLE_REVENANT - mind.special_role = ROLE_REVENANT - SEND_SOUND(src, sound('sound/effects/ghost.ogg')) - mind.add_antag_datum(/datum/antagonist/revenant) - -//Life, Stat, Hud Updates, and Say -/mob/living/simple_animal/revenant/Life() - if(stasis) - return - if(revealed && essence <= 0) - death() - if(unreveal_time && world.time >= unreveal_time) - unreveal_time = 0 - revealed = FALSE - incorporeal_move = INCORPOREAL_MOVE_JAUNT - invisibility = INVISIBILITY_REVENANT - to_chat(src, "You are once more concealed.") - if(unstun_time && world.time >= unstun_time) - unstun_time = 0 - notransform = FALSE - to_chat(src, "You can move again!") - if(essence_regenerating && !inhibited && essence < essence_regen_cap) //While inhibited, essence will not regenerate - essence = min(essence_regen_cap, essence+essence_regen_amount) - update_action_buttons_icon() //because we update something required by our spells in life, we need to update our buttons - update_spooky_icon() - update_health_hud() - ..() - -/mob/living/simple_animal/revenant/Stat() - ..() - if(statpanel("Status")) - stat(null, "Current essence: [essence]/[essence_regen_cap]E") - stat(null, "Stolen essence: [essence_accumulated]E") - stat(null, "Stolen perfect souls: [perfectsouls]") - -/mob/living/simple_animal/revenant/update_health_hud() - if(hud_used) - var/essencecolor = "#8F48C6" - if(essence > essence_regen_cap) - essencecolor = "#9A5ACB" //oh boy you've got a lot of essence - else if(!essence) - essencecolor = "#1D2953" //oh jeez you're dying - hud_used.healths.maptext = "
    [essence]E
    " - -/mob/living/simple_animal/revenant/med_hud_set_health() - return //we use no hud - -/mob/living/simple_animal/revenant/med_hud_set_status() - return //we use no hud - -/mob/living/simple_animal/revenant/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null) - if(!message) - return - src.log_talk(message, LOG_SAY) - var/rendered = "[src] says, \"[message]\"" - for(var/mob/M in GLOB.mob_list) - if(isrevenant(M)) - to_chat(M, rendered) - else if(isobserver(M)) - var/link = FOLLOW_LINK(M, src) - to_chat(M, "[link] [rendered]") - return - - -//Immunities - -/mob/living/simple_animal/revenant/ex_act(severity, target) - return 1 //Immune to the effects of explosions. - -/mob/living/simple_animal/revenant/blob_act(obj/structure/blob/B) - return //blah blah blobs aren't in tune with the spirit world, or something. - -/mob/living/simple_animal/revenant/singularity_act() - return //don't walk into the singularity expecting to find corpses, okay? - -/mob/living/simple_animal/revenant/narsie_act() - return //most humans will now be either bones or harvesters, but we're still un-alive. - -/mob/living/simple_animal/revenant/ratvar_act() - return //clocks get out reee - -//damage, gibbing, and dying -/mob/living/simple_animal/revenant/attackby(obj/item/W, mob/living/user, params) - . = ..() - if(istype(W, /obj/item/nullrod)) - visible_message("[src] violently flinches!", \ - "As \the [W] passes through you, you feel your essence draining away!") - adjustBruteLoss(25) //hella effective - inhibited = TRUE - update_action_buttons_icon() - addtimer(CALLBACK(src, .proc/reset_inhibit), 30) - -/mob/living/simple_animal/revenant/proc/reset_inhibit() - inhibited = FALSE - update_action_buttons_icon() - -/mob/living/simple_animal/revenant/adjustHealth(amount, updating_health = TRUE, forced = FALSE) - if(!forced && !revealed) - return FALSE - . = amount - essence = max(0, essence-amount) - if(updating_health) - update_health_hud() - if(!essence) - death() - -/mob/living/simple_animal/revenant/dust(just_ash, drop_items, force) - death() - -/mob/living/simple_animal/revenant/gib() - death() - -/mob/living/simple_animal/revenant/death() - if(!revealed || stasis) //Revenants cannot die if they aren't revealed //or are already dead - return 0 - stasis = TRUE - to_chat(src, "NO! No... it's too late, you can feel your essence [pick("breaking apart", "drifting away")]...") - notransform = TRUE - revealed = TRUE - invisibility = 0 - playsound(src, 'sound/effects/screech.ogg', 100, 1) - visible_message("[src] lets out a waning screech as violet mist swirls around its dissolving body!") - icon_state = "revenant_draining" - for(var/i = alpha, i > 0, i -= 10) - stoplag() - alpha = i - visible_message("[src]'s body breaks apart into a fine pile of blue dust.") - var/reforming_essence = essence_regen_cap //retain the gained essence capacity - var/obj/item/ectoplasm/revenant/R = new(get_turf(src)) - R.essence = max(reforming_essence - 15 * perfectsouls, 75) //minus any perfect souls - R.old_key = client.key //If the essence reforms, the old revenant is put back in the body - R.revenant = src - invisibility = INVISIBILITY_ABSTRACT - revealed = FALSE - ghostize(0)//Don't re-enter invisible corpse - - -//reveal, stun, icon updates, cast checks, and essence changing -/mob/living/simple_animal/revenant/proc/reveal(time) - if(!src) - return - if(time <= 0) - return - revealed = TRUE - invisibility = 0 - incorporeal_move = FALSE - if(!unreveal_time) - to_chat(src, "You have been revealed!") - unreveal_time = world.time + time - else - to_chat(src, "You have been revealed!") - unreveal_time = unreveal_time + time - update_spooky_icon() - -/mob/living/simple_animal/revenant/proc/stun(time) - if(!src) - return - if(time <= 0) - return - notransform = TRUE - if(!unstun_time) - to_chat(src, "You cannot move!") - unstun_time = world.time + time - else - to_chat(src, "You cannot move!") - unstun_time = unstun_time + time - update_spooky_icon() - -/mob/living/simple_animal/revenant/proc/update_spooky_icon() - if(revealed) - if(notransform) - if(draining) - icon_state = icon_drain - else - icon_state = icon_stun - else - icon_state = icon_reveal - else - icon_state = icon_idle - -/mob/living/simple_animal/revenant/proc/castcheck(essence_cost) - if(!src) - return - var/turf/T = get_turf(src) - if(isclosedturf(T)) - to_chat(src, "You cannot use abilities from inside of a wall.") - return FALSE - for(var/obj/O in T) - if(O.density && !O.CanPass(src, T)) - to_chat(src, "You cannot use abilities inside of a dense object.") - return FALSE - if(inhibited) - to_chat(src, "Your powers have been suppressed by nulling energy!") - return FALSE - if(!change_essence_amount(essence_cost, TRUE)) - to_chat(src, "You lack the essence to use that ability.") - return FALSE - return TRUE - -/mob/living/simple_animal/revenant/proc/change_essence_amount(essence_amt, silent = FALSE, source = null) - if(!src) - return - if(essence + essence_amt <= 0) - return - essence = max(0, essence+essence_amt) - update_action_buttons_icon() - update_health_hud() - if(essence_amt > 0) - essence_accumulated = max(0, essence_accumulated+essence_amt) - if(!silent) - if(essence_amt > 0) - to_chat(src, "Gained [essence_amt]E[source ? " from [source]":""].") - else - to_chat(src, "Lost [essence_amt]E[source ? " from [source]":""].") - return 1 - -/mob/living/simple_animal/revenant/proc/death_reset() - revealed = FALSE - unreveal_time = 0 - notransform = 0 - unstun_time = 0 - inhibited = FALSE - draining = FALSE - incorporeal_move = INCORPOREAL_MOVE_JAUNT - invisibility = INVISIBILITY_REVENANT - alpha=255 - stasis = FALSE - - -//reforming -/obj/item/ectoplasm/revenant - name = "glimmering residue" - desc = "A pile of fine blue dust. Small tendrils of violet mist swirl around it." - icon = 'icons/effects/effects.dmi' - icon_state = "revenantEctoplasm" - w_class = WEIGHT_CLASS_SMALL - var/essence = 75 //the maximum essence of the reforming revenant - var/reforming = TRUE - var/inert = FALSE - var/old_key //key of the previous revenant, will have first pick on reform. - var/mob/living/simple_animal/revenant/revenant - -/obj/item/ectoplasm/revenant/New() - ..() - addtimer(CALLBACK(src, .proc/try_reform), 600) - -/obj/item/ectoplasm/revenant/proc/scatter() - qdel(src) - -/obj/item/ectoplasm/revenant/proc/try_reform() - if(reforming) - reforming = FALSE - reform() - else - inert = TRUE - visible_message("[src] settles down and seems lifeless.") - -/obj/item/ectoplasm/revenant/attack_self(mob/user) - if(!reforming || inert) - return ..() - user.visible_message("[user] scatters [src] in all directions.", \ - "You scatter [src] across the area. The particles slowly fade away.") - user.dropItemToGround(src) - scatter() - -/obj/item/ectoplasm/revenant/throw_impact(atom/hit_atom) - ..() - if(inert) - return - visible_message("[src] breaks into particles upon impact, which fade away to nothingness.") - scatter() - -/obj/item/ectoplasm/revenant/examine(mob/user) - . = ..() - if(inert) - . += "It seems inert." - else if(reforming) - . += "It is shifting and distorted. It would be wise to destroy this." - -/obj/item/ectoplasm/revenant/proc/reform() - if(QDELETED(src) || QDELETED(revenant) || inert) - return - var/key_of_revenant = FALSE - message_admins("Revenant ectoplasm was left undestroyed for 1 minute and is reforming into a new revenant.") - forceMove(drop_location()) //In case it's in a backpack or someone's hand - revenant.forceMove(loc) - if(old_key) - for(var/mob/M in GLOB.dead_mob_list) - if(M.client && M.client.key == old_key) //Only recreates the mob if the mob the client is in is dead - M.transfer_ckey(revenant.key, FALSE) - key_of_revenant = TRUE - break - if(!key_of_revenant) - message_admins("The new revenant's old client either could not be found or is in a new, living mob - grabbing a random candidate instead...") - var/list/candidates = pollCandidatesForMob("Do you want to be [revenant.name] (reforming)?", ROLE_REVENANT, null, ROLE_REVENANT, 50, revenant) - if(!LAZYLEN(candidates)) - qdel(revenant) - message_admins("No candidates were found for the new revenant. Oh well!") - inert = TRUE - visible_message("[src] settles down and seems lifeless.") - return - var/mob/dead/observer/C = pick(candidates) - C.transfer_ckey(revenant.key, FALSE) - if(!revenant.key) - qdel(revenant) - message_admins("No ckey was found for the new revenant. Oh well!") - inert = TRUE - visible_message("[src] settles down and seems lifeless.") - return - - message_admins("[key_of_revenant] has been [old_key == revenant.key ? "re":""]made into a revenant by reforming ectoplasm.") - log_game("[key_of_revenant] was [old_key == revenant.key ? "re":""]made as a revenant by reforming ectoplasm.") - visible_message("[src] suddenly rises into the air before fading away.") - - revenant.essence = essence - revenant.essence_regen_cap = essence - revenant.death_reset() - revenant = null - qdel(src) - -/obj/item/ectoplasm/revenant/suicide_act(mob/user) - user.visible_message("[user] is inhaling [src]! It looks like [user.p_theyre()] trying to visit the shadow realm!") - scatter() - return (OXYLOSS) - -/obj/item/ectoplasm/revenant/Destroy() - if(!QDELETED(revenant)) - qdel(revenant) - ..() - -//objectives -/datum/objective/revenant - var/targetAmount = 100 - -/datum/objective/revenant/New() - targetAmount = rand(350,600) - explanation_text = "Absorb [targetAmount] points of essence from humans." - ..() - -/datum/objective/revenant/check_completion() - if(!isrevenant(owner.current)) - return FALSE - var/mob/living/simple_animal/revenant/R = owner.current - if(!R || R.stat == DEAD) - return FALSE - var/essence_stolen = R.essence_accumulated - if(essence_stolen < targetAmount) - return FALSE - return TRUE - -/datum/objective/revenantFluff - -/datum/objective/revenantFluff/New() - var/list/explanationTexts = list("Assist and exacerbate existing threats at critical moments.", \ - "Avoid killing in plain sight.", \ - "Cause as much chaos and anger as you can without being killed.", \ - "Damage and render as much of the station rusted and unusable as possible.", \ - "Disable and cause malfunctions in as many machines as possible.", \ - "Ensure that any holy weapons are rendered unusable.", \ - "Hinder the crew while attempting to avoid being noticed.", \ - "Make the crew as miserable as possible.", \ - "Make the clown as miserable as possible.", \ - "Make the captain as miserable as possible.", \ - "Prevent the use of energy weapons where possible.") - explanation_text = pick(explanationTexts) - ..() - -/datum/objective/revenantFluff/check_completion() - return TRUE +//Revenants: based off of wraiths from Goon +//"Ghosts" that are invisible and move like ghosts, cannot take damage while invisible +//Don't hear deadchat and are NOT normal ghosts +//Admin-spawn or random event + +#define INVISIBILITY_REVENANT 50 +#define REVENANT_NAME_FILE "revenant_names.json" + +/mob/living/simple_animal/revenant + name = "revenant" + desc = "A malevolent spirit." + icon = 'icons/mob/mob.dmi' + icon_state = "revenant_idle" + var/icon_idle = "revenant_idle" + var/icon_reveal = "revenant_revealed" + var/icon_stun = "revenant_stun" + var/icon_drain = "revenant_draining" + var/stasis = FALSE + mob_biotypes = list(MOB_SPIRIT) + incorporeal_move = INCORPOREAL_MOVE_JAUNT + invisibility = INVISIBILITY_REVENANT + health = INFINITY //Revenants don't use health, they use essence instead + maxHealth = INFINITY + layer = GHOST_LAYER + healable = FALSE + spacewalk = TRUE + sight = SEE_SELF + throwforce = 0 + + see_in_dark = 8 + lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE + response_help = "passes through" + response_disarm = "swings through" + response_harm = "punches through" + unsuitable_atmos_damage = 0 + damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) //I don't know how you'd apply those, but revenants no-sell them anyway. + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + minbodytemp = 0 + maxbodytemp = INFINITY + harm_intent_damage = 0 + friendly = "touches" + status_flags = 0 + wander = FALSE + density = FALSE + movement_type = FLYING + anchored = TRUE + mob_size = MOB_SIZE_TINY + pass_flags = PASSTABLE | PASSGRILLE | PASSMOB + speed = 1 + unique_name = TRUE + hud_possible = list(ANTAG_HUD) + hud_type = /datum/hud/revenant + + var/essence = 75 //The resource, and health, of revenants. + var/essence_regen_cap = 75 //The regeneration cap of essence (go figure); regenerates every Life() tick up to this amount. + var/essence_regenerating = TRUE //If the revenant regenerates essence or not + var/essence_regen_amount = 5 //How much essence regenerates + var/essence_accumulated = 0 //How much essence the revenant has stolen + var/revealed = FALSE //If the revenant can take damage from normal sources. + var/unreveal_time = 0 //How long the revenant is revealed for, is about 2 seconds times this var. + var/unstun_time = 0 //How long the revenant is stunned for, is about 2 seconds times this var. + var/inhibited = FALSE //If the revenant's abilities are blocked by a chaplain's power. + var/essence_drained = 0 //How much essence the revenant will drain from the corpse it's feasting on. + var/draining = FALSE //If the revenant is draining someone. + var/list/drained_mobs = list() //Cannot harvest the same mob twice + var/perfectsouls = 0 //How many perfect, regen-cap increasing souls the revenant has. //TODO, add objective for getting a perfect soul(s?) + var/generated_objectives_and_spells = FALSE + +/mob/living/simple_animal/revenant/Initialize(mapload) + . = ..() + AddSpell(new /obj/effect/proc_holder/spell/targeted/night_vision/revenant(null)) + AddSpell(new /obj/effect/proc_holder/spell/targeted/telepathy/revenant(null)) + AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/defile(null)) + AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/overload(null)) + AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/blight(null)) + AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/malfunction(null)) + random_revenant_name() + +/mob/living/simple_animal/revenant/proc/random_revenant_name() + var/built_name = "" + built_name += pick(strings(REVENANT_NAME_FILE, "spirit_type")) + built_name += " of " + built_name += pick(strings(REVENANT_NAME_FILE, "adverb")) + built_name += pick(strings(REVENANT_NAME_FILE, "theme")) + name = built_name + +/mob/living/simple_animal/revenant/Login() + ..() + to_chat(src, "You are a revenant.") + to_chat(src, "Your formerly mundane spirit has been infused with alien energies and empowered into a revenant.") + to_chat(src, "You are not dead, not alive, but somewhere in between. You are capable of limited interaction with both worlds.") + to_chat(src, "You are invincible and invisible to everyone but other ghosts. Most abilities will reveal you, rendering you vulnerable.") + to_chat(src, "To function, you are to drain the life essence from humans. This essence is a resource, as well as your health, and will power all of your abilities.") + to_chat(src, "You do not remember anything of your past lives, nor will you remember anything about this one after your death.") + to_chat(src, "Be sure to read the wiki page to learn more.") + if(!generated_objectives_and_spells) + generated_objectives_and_spells = TRUE + mind.assigned_role = ROLE_REVENANT + mind.special_role = ROLE_REVENANT + SEND_SOUND(src, sound('sound/effects/ghost.ogg')) + mind.add_antag_datum(/datum/antagonist/revenant) + +//Life, Stat, Hud Updates, and Say +/mob/living/simple_animal/revenant/Life() + if(stasis) + return + if(revealed && essence <= 0) + death() + if(unreveal_time && world.time >= unreveal_time) + unreveal_time = 0 + revealed = FALSE + incorporeal_move = INCORPOREAL_MOVE_JAUNT + invisibility = INVISIBILITY_REVENANT + to_chat(src, "You are once more concealed.") + if(unstun_time && world.time >= unstun_time) + unstun_time = 0 + notransform = FALSE + to_chat(src, "You can move again!") + if(essence_regenerating && !inhibited && essence < essence_regen_cap) //While inhibited, essence will not regenerate + essence = min(essence_regen_cap, essence+essence_regen_amount) + update_action_buttons_icon() //because we update something required by our spells in life, we need to update our buttons + update_spooky_icon() + update_health_hud() + ..() + +/mob/living/simple_animal/revenant/Stat() + ..() + if(statpanel("Status")) + stat(null, "Current essence: [essence]/[essence_regen_cap]E") + stat(null, "Stolen essence: [essence_accumulated]E") + stat(null, "Stolen perfect souls: [perfectsouls]") + +/mob/living/simple_animal/revenant/update_health_hud() + if(hud_used) + var/essencecolor = "#8F48C6" + if(essence > essence_regen_cap) + essencecolor = "#9A5ACB" //oh boy you've got a lot of essence + else if(!essence) + essencecolor = "#1D2953" //oh jeez you're dying + hud_used.healths.maptext = "
    [essence]E
    " + +/mob/living/simple_animal/revenant/med_hud_set_health() + return //we use no hud + +/mob/living/simple_animal/revenant/med_hud_set_status() + return //we use no hud + +/mob/living/simple_animal/revenant/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null) + if(!message) + return + src.log_talk(message, LOG_SAY) + var/rendered = "[src] says, \"[message]\"" + for(var/mob/M in GLOB.mob_list) + if(isrevenant(M)) + to_chat(M, rendered) + else if(isobserver(M)) + var/link = FOLLOW_LINK(M, src) + to_chat(M, "[link] [rendered]") + return + + +//Immunities + +/mob/living/simple_animal/revenant/ex_act(severity, target) + return 1 //Immune to the effects of explosions. + +/mob/living/simple_animal/revenant/blob_act(obj/structure/blob/B) + return //blah blah blobs aren't in tune with the spirit world, or something. + +/mob/living/simple_animal/revenant/singularity_act() + return //don't walk into the singularity expecting to find corpses, okay? + +/mob/living/simple_animal/revenant/narsie_act() + return //most humans will now be either bones or harvesters, but we're still un-alive. + +/mob/living/simple_animal/revenant/ratvar_act() + return //clocks get out reee + +//damage, gibbing, and dying +/mob/living/simple_animal/revenant/attackby(obj/item/W, mob/living/user, params) + . = ..() + if(istype(W, /obj/item/nullrod)) + visible_message("[src] violently flinches!", \ + "As \the [W] passes through you, you feel your essence draining away!") + adjustBruteLoss(25) //hella effective + inhibited = TRUE + update_action_buttons_icon() + addtimer(CALLBACK(src, .proc/reset_inhibit), 30) + +/mob/living/simple_animal/revenant/proc/reset_inhibit() + inhibited = FALSE + update_action_buttons_icon() + +/mob/living/simple_animal/revenant/adjustHealth(amount, updating_health = TRUE, forced = FALSE) + if(!forced && !revealed) + return FALSE + . = amount + essence = max(0, essence-amount) + if(updating_health) + update_health_hud() + if(!essence) + death() + +/mob/living/simple_animal/revenant/dust(just_ash, drop_items, force) + death() + +/mob/living/simple_animal/revenant/gib() + death() + +/mob/living/simple_animal/revenant/death() + if(!revealed || stasis) //Revenants cannot die if they aren't revealed //or are already dead + return 0 + stasis = TRUE + to_chat(src, "NO! No... it's too late, you can feel your essence [pick("breaking apart", "drifting away")]...") + notransform = TRUE + revealed = TRUE + invisibility = 0 + playsound(src, 'sound/effects/screech.ogg', 100, 1) + visible_message("[src] lets out a waning screech as violet mist swirls around its dissolving body!") + icon_state = "revenant_draining" + for(var/i = alpha, i > 0, i -= 10) + stoplag() + alpha = i + visible_message("[src]'s body breaks apart into a fine pile of blue dust.") + var/reforming_essence = essence_regen_cap //retain the gained essence capacity + var/obj/item/ectoplasm/revenant/R = new(get_turf(src)) + R.essence = max(reforming_essence - 15 * perfectsouls, 75) //minus any perfect souls + R.old_key = client.key //If the essence reforms, the old revenant is put back in the body + R.revenant = src + invisibility = INVISIBILITY_ABSTRACT + revealed = FALSE + ghostize(0)//Don't re-enter invisible corpse + + +//reveal, stun, icon updates, cast checks, and essence changing +/mob/living/simple_animal/revenant/proc/reveal(time) + if(!src) + return + if(time <= 0) + return + revealed = TRUE + invisibility = 0 + incorporeal_move = FALSE + if(!unreveal_time) + to_chat(src, "You have been revealed!") + unreveal_time = world.time + time + else + to_chat(src, "You have been revealed!") + unreveal_time = unreveal_time + time + update_spooky_icon() + +/mob/living/simple_animal/revenant/proc/stun(time) + if(!src) + return + if(time <= 0) + return + notransform = TRUE + if(!unstun_time) + to_chat(src, "You cannot move!") + unstun_time = world.time + time + else + to_chat(src, "You cannot move!") + unstun_time = unstun_time + time + update_spooky_icon() + +/mob/living/simple_animal/revenant/proc/update_spooky_icon() + if(revealed) + if(notransform) + if(draining) + icon_state = icon_drain + else + icon_state = icon_stun + else + icon_state = icon_reveal + else + icon_state = icon_idle + +/mob/living/simple_animal/revenant/proc/castcheck(essence_cost) + if(!src) + return + var/turf/T = get_turf(src) + if(isclosedturf(T)) + to_chat(src, "You cannot use abilities from inside of a wall.") + return FALSE + for(var/obj/O in T) + if(O.density && !O.CanPass(src, T)) + to_chat(src, "You cannot use abilities inside of a dense object.") + return FALSE + if(inhibited) + to_chat(src, "Your powers have been suppressed by nulling energy!") + return FALSE + if(!change_essence_amount(essence_cost, TRUE)) + to_chat(src, "You lack the essence to use that ability.") + return FALSE + return TRUE + +/mob/living/simple_animal/revenant/proc/change_essence_amount(essence_amt, silent = FALSE, source = null) + if(!src) + return + if(essence + essence_amt <= 0) + return + essence = max(0, essence+essence_amt) + update_action_buttons_icon() + update_health_hud() + if(essence_amt > 0) + essence_accumulated = max(0, essence_accumulated+essence_amt) + if(!silent) + if(essence_amt > 0) + to_chat(src, "Gained [essence_amt]E[source ? " from [source]":""].") + else + to_chat(src, "Lost [essence_amt]E[source ? " from [source]":""].") + return 1 + +/mob/living/simple_animal/revenant/proc/death_reset() + revealed = FALSE + unreveal_time = 0 + notransform = 0 + unstun_time = 0 + inhibited = FALSE + draining = FALSE + incorporeal_move = INCORPOREAL_MOVE_JAUNT + invisibility = INVISIBILITY_REVENANT + alpha=255 + stasis = FALSE + + +//reforming +/obj/item/ectoplasm/revenant + name = "glimmering residue" + desc = "A pile of fine blue dust. Small tendrils of violet mist swirl around it." + icon = 'icons/effects/effects.dmi' + icon_state = "revenantEctoplasm" + w_class = WEIGHT_CLASS_SMALL + var/essence = 75 //the maximum essence of the reforming revenant + var/reforming = TRUE + var/inert = FALSE + var/old_key //key of the previous revenant, will have first pick on reform. + var/mob/living/simple_animal/revenant/revenant + +/obj/item/ectoplasm/revenant/New() + ..() + addtimer(CALLBACK(src, .proc/try_reform), 600) + +/obj/item/ectoplasm/revenant/proc/scatter() + qdel(src) + +/obj/item/ectoplasm/revenant/proc/try_reform() + if(reforming) + reforming = FALSE + reform() + else + inert = TRUE + visible_message("[src] settles down and seems lifeless.") + +/obj/item/ectoplasm/revenant/attack_self(mob/user) + if(!reforming || inert) + return ..() + user.visible_message("[user] scatters [src] in all directions.", \ + "You scatter [src] across the area. The particles slowly fade away.") + user.dropItemToGround(src) + scatter() + +/obj/item/ectoplasm/revenant/throw_impact(atom/hit_atom) + ..() + if(inert) + return + visible_message("[src] breaks into particles upon impact, which fade away to nothingness.") + scatter() + +/obj/item/ectoplasm/revenant/examine(mob/user) + . = ..() + if(inert) + . += "It seems inert." + else if(reforming) + . += "It is shifting and distorted. It would be wise to destroy this." + +/obj/item/ectoplasm/revenant/proc/reform() + if(QDELETED(src) || QDELETED(revenant) || inert) + return + var/key_of_revenant = FALSE + message_admins("Revenant ectoplasm was left undestroyed for 1 minute and is reforming into a new revenant.") + forceMove(drop_location()) //In case it's in a backpack or someone's hand + revenant.forceMove(loc) + if(old_key) + for(var/mob/M in GLOB.dead_mob_list) + if(M.client && M.client.key == old_key) //Only recreates the mob if the mob the client is in is dead + M.transfer_ckey(revenant.key, FALSE) + key_of_revenant = TRUE + break + if(!key_of_revenant) + message_admins("The new revenant's old client either could not be found or is in a new, living mob - grabbing a random candidate instead...") + var/list/candidates = pollCandidatesForMob("Do you want to be [revenant.name] (reforming)?", ROLE_REVENANT, null, ROLE_REVENANT, 50, revenant) + if(!LAZYLEN(candidates)) + qdel(revenant) + message_admins("No candidates were found for the new revenant. Oh well!") + inert = TRUE + visible_message("[src] settles down and seems lifeless.") + return + var/mob/dead/observer/C = pick(candidates) + C.transfer_ckey(revenant.key, FALSE) + if(!revenant.key) + qdel(revenant) + message_admins("No ckey was found for the new revenant. Oh well!") + inert = TRUE + visible_message("[src] settles down and seems lifeless.") + return + + message_admins("[key_of_revenant] has been [old_key == revenant.key ? "re":""]made into a revenant by reforming ectoplasm.") + log_game("[key_of_revenant] was [old_key == revenant.key ? "re":""]made as a revenant by reforming ectoplasm.") + visible_message("[src] suddenly rises into the air before fading away.") + + revenant.essence = essence + revenant.essence_regen_cap = essence + revenant.death_reset() + revenant = null + qdel(src) + +/obj/item/ectoplasm/revenant/suicide_act(mob/user) + user.visible_message("[user] is inhaling [src]! It looks like [user.p_theyre()] trying to visit the shadow realm!") + scatter() + return (OXYLOSS) + +/obj/item/ectoplasm/revenant/Destroy() + if(!QDELETED(revenant)) + qdel(revenant) + ..() + +//objectives +/datum/objective/revenant + var/targetAmount = 100 + +/datum/objective/revenant/New() + targetAmount = rand(350,600) + explanation_text = "Absorb [targetAmount] points of essence from humans." + ..() + +/datum/objective/revenant/check_completion() + if(!isrevenant(owner.current)) + return FALSE + var/mob/living/simple_animal/revenant/R = owner.current + if(!R || R.stat == DEAD) + return FALSE + var/essence_stolen = R.essence_accumulated + if(essence_stolen < targetAmount) + return FALSE + return TRUE + +/datum/objective/revenantFluff + +/datum/objective/revenantFluff/New() + var/list/explanationTexts = list("Assist and exacerbate existing threats at critical moments.", \ + "Avoid killing in plain sight.", \ + "Cause as much chaos and anger as you can without being killed.", \ + "Damage and render as much of the station rusted and unusable as possible.", \ + "Disable and cause malfunctions in as many machines as possible.", \ + "Ensure that any holy weapons are rendered unusable.", \ + "Hinder the crew while attempting to avoid being noticed.", \ + "Make the crew as miserable as possible.", \ + "Make the clown as miserable as possible.", \ + "Make the captain as miserable as possible.", \ + "Prevent the use of energy weapons where possible.") + explanation_text = pick(explanationTexts) + ..() + +/datum/objective/revenantFluff/check_completion() + return TRUE diff --git a/code/modules/antagonists/revenant/revenant_abilities.dm b/code/modules/antagonists/revenant/revenant_abilities.dm index d2e71615e3..d6582a294f 100644 --- a/code/modules/antagonists/revenant/revenant_abilities.dm +++ b/code/modules/antagonists/revenant/revenant_abilities.dm @@ -353,7 +353,7 @@ to_chat(H, "You feel [pick("suddenly sick", "a surge of nausea", "like your skin is wrong")].") else if(mob.reagents) - mob.reagents.add_reagent(/datum/reagent/toxin/plasma, 5) + mob.reagents.add_reagent("plasma", 5) else mob.adjustToxLoss(5) for(var/obj/structure/spacevine/vine in T) //Fucking with botanists, the ability. diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index 595ce5bb90..ac19df3631 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -80,8 +80,6 @@ if(istype(SSticker.mode,/datum/game_mode/dynamic)) mode = SSticker.mode is_dynamic = TRUE - if(mode.storyteller.flags & NO_ASSASSIN) - is_hijacker = FALSE if(GLOB.joined_player_list.len>=GLOB.dynamic_high_pop_limit) is_hijacker = (prob(10) && mode.threat_level > CONFIG_GET(number/dynamic_hijack_high_population_requirement)) else @@ -182,7 +180,7 @@ destroy_objective.owner = owner destroy_objective.find_target() add_objective(destroy_objective) - else if(prob(30) || (is_dynamic && (mode.storyteller.flags & NO_ASSASSIN))) + else if(prob(30)) var/datum/objective/maroon/maroon_objective = new maroon_objective.owner = owner maroon_objective.find_target() diff --git a/code/modules/assembly/playback.dm b/code/modules/assembly/playback.dm deleted file mode 100644 index 088f186adc..0000000000 --- a/code/modules/assembly/playback.dm +++ /dev/null @@ -1,50 +0,0 @@ -/obj/item/assembly/playback - name = "playback device" - desc = "A small electronic device able to record a voice sample, and repeat that sample when it receive a signal." - icon_state = "radio" - materials = list(MAT_METAL=500, MAT_GLASS=50) - flags_1 = HEAR_1 - attachable = TRUE - verb_say = "beeps" - verb_ask = "beeps" - verb_exclaim = "beeps" - var/listening = FALSE - var/recorded = "" //the activation message - var/languages - -/obj/item/assembly/playback/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode, atom/movable/source) - . = ..() - if(speaker == src) - return - - if(listening && !radio_freq) - record_speech(speaker, raw_message, message_language) - -/obj/item/assembly/playback/proc/record_speech(atom/movable/speaker, raw_message, datum/language/message_language) - recorded = raw_message - listening = FALSE - languages = message_language - say("Activation message is '[recorded]'.", language = message_language) - -/obj/item/assembly/playback/activate() - if(recorded == "") // Why say anything when there isn't anything to say - return FALSE - say("[recorded]", language = languages) // Repeat the message in the language it was said in - return TRUE - -/obj/item/assembly/playback/proc/record() - if(!secured || holder) - return FALSE - listening = !listening - say("[listening ? "Now" : "No longer"] recording input.") - return TRUE - -/obj/item/assembly/playback/attack_self(mob/user) - if(!user) - return FALSE - record() - return TRUE - -/obj/item/assembly/playback/toggle_secure() - . = ..() - listening = FALSE \ No newline at end of file diff --git a/code/modules/assembly/voice.dm b/code/modules/assembly/voice.dm index 36a58b2a70..f72f726988 100644 --- a/code/modules/assembly/voice.dm +++ b/code/modules/assembly/voice.dm @@ -15,7 +15,6 @@ verb_exclaim = "beeps" var/listening = FALSE var/recorded = "" //the activation message - var/languages // The Message's language var/mode = 1 var/static/list/modes = list("inclusive", "exclusive", @@ -34,25 +33,23 @@ if(listening && !radio_freq) record_speech(speaker, raw_message, message_language) else - if(message_language == languages) // If it isn't in the same language as the message, don't try to find the message - if(check_activation(speaker, raw_message)) - addtimer(CALLBACK(src, .proc/pulse, 0), 10) + if(check_activation(speaker, raw_message)) + addtimer(CALLBACK(src, .proc/pulse, 0), 10) /obj/item/assembly/voice/proc/record_speech(atom/movable/speaker, raw_message, datum/language/message_language) - languages = message_language // Assign the message's language to a variable to use it elsewhere switch(mode) if(INCLUSIVE_MODE) recorded = raw_message listening = FALSE - say("Activation message is '[recorded]'.", language = languages) // Say the message in the language it was said in + say("Activation message is '[recorded]'.", message_language) if(EXCLUSIVE_MODE) recorded = raw_message listening = FALSE - say("Activation message is '[recorded]'.", language = languages) + say("Activation message is '[recorded]'.", message_language) if(RECOGNIZER_MODE) recorded = speaker.GetVoice() listening = FALSE - say("Your voice pattern is saved.", language = languages) + say("Your voice pattern is saved.", message_language) if(VOICE_SENSOR_MODE) if(length(raw_message)) addtimer(CALLBACK(src, .proc/pulse, 0), 10) diff --git a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm index 389f1a69f3..196bf70fdc 100644 --- a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm +++ b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm @@ -358,9 +358,6 @@ SSair.excited_groups -= src ////////////////////////SUPERCONDUCTIVITY///////////////////////////// -/atom/movable/proc/blocksTemperature() - return FALSE - /turf/proc/conductivity_directions() if(archived_cycle < SSair.times_fired) archive() @@ -375,9 +372,6 @@ . |= direction /turf/proc/neighbor_conduct_with_src(turf/open/other) - for (var/atom/movable/G in src) - if (G.blocksTemperature()) - return if(!other.blocks_air) //Open but neighbor is solid other.temperature_share_open_to_solid(src) else //Both tiles are solid @@ -388,9 +382,7 @@ if(blocks_air) ..() return - for (var/atom/movable/G in src) - if (G.blocksTemperature()) - return + if(!other.blocks_air) //Both tiles are open var/turf/open/T = other T.air.temperature_share(air, WINDOW_HEAT_TRANSFER_COEFFICIENT) @@ -409,8 +401,10 @@ if(!neighbor.thermal_conductivity) continue + if(neighbor.archived_cycle < SSair.times_fired) neighbor.archive() + neighbor.neighbor_conduct_with_src(src) neighbor.consider_superconductivity() diff --git a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm index 6bafba9abc..07ee17a1bd 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm @@ -61,6 +61,8 @@ //Actually transfer the gas var/datum/gas_mixture/removed = air2.remove(transfer_moles) + removed.react(src) + update_parents() return removed diff --git a/code/modules/atmospherics/machinery/datum_pipeline.dm b/code/modules/atmospherics/machinery/datum_pipeline.dm index db8a8e90ad..19f3f58708 100644 --- a/code/modules/atmospherics/machinery/datum_pipeline.dm +++ b/code/modules/atmospherics/machinery/datum_pipeline.dm @@ -57,10 +57,10 @@ if(item.parent) var/static/pipenetwarnings = 10 if(pipenetwarnings > 0) - log_mapping("build_pipeline(): [item.type] added to a pipenet while still having one. (pipes leading to the same spot stacking in one turf) Nearby: ([item.x], [item.y], [item.z]).") + warning("build_pipeline(): [item.type] added to a pipenet while still having one. (pipes leading to the same spot stacking in one turf) Nearby: ([item.x], [item.y], [item.z])") pipenetwarnings -= 1 if(pipenetwarnings == 0) - log_mapping("build_pipeline(): further messages about pipenets will be suppressed") + warning("build_pipeline(): further messages about pipenets will be suppressed") members += item possible_expansions += item @@ -154,6 +154,11 @@ var/partial_heat_capacity = total_heat_capacity*(share_volume/air.volume) var/target_temperature var/target_heat_capacity + // first calculate heat from radiation. there's an implied "* 1 tick" here. + // 0.05 magic multiplicand is, first, 0.1 deciseconds; second, half of the radiation's going right back into the gas. + var/share_constant = STEFANBOLTZMANN*(share_volume**(2/3))*0.05 + // Minimizing temp to 4 billion is mostly to prevent -infinity temperatures. + var/heat = share_constant*(min(air.temperature,4000000000)**4) if(isopenturf(target)) @@ -165,8 +170,8 @@ if((modeled_location.heat_capacity>0) && (partial_heat_capacity>0)) var/delta_temperature = air.temperature - target_temperature - - var/heat = thermal_conductivity*delta_temperature* \ + heat -= share_constant*(min(target_temperature,4000000000)**4) + heat += thermal_conductivity*delta_temperature* \ (partial_heat_capacity*target_heat_capacity/(partial_heat_capacity+target_heat_capacity)) air.temperature -= heat/total_heat_capacity @@ -183,7 +188,8 @@ var/sharer_temperature_delta = 0 if((sharer_heat_capacity>0) && (partial_heat_capacity>0)) - var/heat = thermal_conductivity*delta_temperature* \ + heat -= share_constant*(min(target_temperature,4000000000)**4) + heat += thermal_conductivity*delta_temperature* \ (partial_heat_capacity*sharer_heat_capacity/(partial_heat_capacity+sharer_heat_capacity)) self_temperature_delta = -heat/total_heat_capacity @@ -199,10 +205,12 @@ if((target.heat_capacity>0) && (partial_heat_capacity>0)) var/delta_temperature = air.temperature - target.temperature - var/heat = thermal_conductivity*delta_temperature* \ + heat -= share_constant*(min(target.temperature,4000000000)**4) + heat += thermal_conductivity*delta_temperature* \ (partial_heat_capacity*target.heat_capacity/(partial_heat_capacity+target.heat_capacity)) air.temperature -= heat/total_heat_capacity + air.temperature = CLAMP(air.temperature,TCMB,INFINITY) // i have no idea why TCMB needs to be the min but i ain't changing it update = TRUE /datum/pipeline/proc/return_air() diff --git a/code/modules/atmospherics/machinery/other/meter.dm b/code/modules/atmospherics/machinery/other/meter.dm index 329c77ba14..d0c78d21b3 100644 --- a/code/modules/atmospherics/machinery/other/meter.dm +++ b/code/modules/atmospherics/machinery/other/meter.dm @@ -56,7 +56,7 @@ pixel_y = (new_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y /obj/machinery/meter/process_atmos() - if(!(target?.flags_1 & INITIALIZED_1)) + if(!target) icon_state = "meterX" return 0 diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm index b087859a47..79aa957d97 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm @@ -26,9 +26,7 @@ var/turf/T = loc if(istype(T)) - if(islava(T)) - environment_temperature = 5000 - else if(T.blocks_air) + if(T.blocks_air) environment_temperature = T.temperature else var/turf/open/OT = T diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index 85ac20ca0d..aa1abe56b4 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -175,7 +175,7 @@ if(C.reagents.total_volume >= C.volume) to_chat(user, "[C] is full.") return - C.reagents.add_reagent(/datum/reagent/toxin/plasma, rand(5, 10)) + C.reagents.add_reagent("plasma", rand(5, 10)) user.visible_message("[user] scoops some plasma from the [src] with \the [C].", "You scoop out some plasma from the [src] using \the [C].") /turf/open/lava/plasma/burn_stuff(AM) @@ -488,7 +488,8 @@ /obj/item/grenade/clusterbuster/smoke = 15, /obj/item/clothing/under/chameleon = 13, /obj/item/clothing/shoes/chameleon/noslip = 10, - /obj/item/borg/upgrade/ddrill = 3) + /obj/item/borg/upgrade/ddrill = 3, + /obj/item/borg/upgrade/soh = 3) /obj/effect/spawner/lootdrop/snowdin/dungeonmid name = "dungeon mid" diff --git a/code/modules/buildmode/submodes/basic.dm b/code/modules/buildmode/submodes/basic.dm index fe3d831d81..4f7b176691 100644 --- a/code/modules/buildmode/submodes/basic.dm +++ b/code/modules/buildmode/submodes/basic.dm @@ -22,9 +22,9 @@ if(istype(object,/turf) && left_click && !alt_click && !ctrl_click) var/turf/T = object if(isspaceturf(object)) - T.PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) + T.PlaceOnTop(/turf/open/floor/plating) else if(isplatingturf(object)) - T.PlaceOnTop(/turf/open/floor/plasteel, flags = CHANGETURF_INHERIT_AIR) + T.PlaceOnTop(/turf/open/floor/plasteel) else if(isfloorturf(object)) T.PlaceOnTop(/turf/closed/wall) else if(iswallturf(object)) @@ -35,7 +35,7 @@ log_admin("Build Mode: [key_name(c)] deleted [object] at [AREACOORD(object)]") if(isturf(object)) var/turf/T = object - T.ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + T.ScrapeAway() else if(isobj(object)) qdel(object) return diff --git a/code/modules/cargo/bounties/reagent.dm b/code/modules/cargo/bounties/reagent.dm index ca76c80df7..5137d0a6f3 100644 --- a/code/modules/cargo/bounties/reagent.dm +++ b/code/modules/cargo/bounties/reagent.dm @@ -12,7 +12,7 @@ /datum/bounty/reagent/applies_to(obj/O) if(!istype(O, /obj/item/reagent_containers)) return FALSE - if(!O.reagents || !O.reagents.has_reagent(wanted_reagent.type)) + if(!O.reagents || !O.reagents.has_reagent(wanted_reagent.id)) return FALSE if(O.flags_1 & HOLOGRAM_1) return FALSE @@ -21,7 +21,7 @@ /datum/bounty/reagent/ship(obj/O) if(!applies_to(O)) return - shipped_volume += O.reagents.get_reagent_amount(wanted_reagent.type) + shipped_volume += O.reagents.get_reagent_amount(wanted_reagent.id) if(shipped_volume > required_volume) shipped_volume = required_volume @@ -29,7 +29,7 @@ if(!istype(other_bounty, /datum/bounty/reagent)) return TRUE var/datum/bounty/reagent/R = other_bounty - return wanted_reagent.type != R.wanted_reagent.type + return wanted_reagent.id != R.wanted_reagent.id /datum/bounty/reagent/simple_drink name = "Simple Drink" diff --git a/code/modules/cargo/packs/armory.dm b/code/modules/cargo/packs/armory.dm index 259ea2d7e3..58677814a6 100644 --- a/code/modules/cargo/packs/armory.dm +++ b/code/modules/cargo/packs/armory.dm @@ -93,12 +93,9 @@ /datum/supply_pack/security/armory/trackingimp name = "Tracking Implants Crate" - desc = "Contains four tracking implants and three tracking speedloaders of tracing .38 ammo. Requires Armory access to open." - cost = 1100 - contains = list(/obj/item/storage/box/trackimp, - /obj/item/ammo_box/c38/trac, - /obj/item/ammo_box/c38/trac, - /obj/item/ammo_box/c38/trac) + desc = "Contains four tracking implants. Requires Armory access to open." + cost = 1050 + contains = list(/obj/item/storage/box/trackimp) crate_name = "tracking implant crate" /datum/supply_pack/security/armory/fire @@ -175,32 +172,6 @@ /obj/item/storage/box/beanbag) crate_name = "riot shotgun crate" -/datum/supply_pack/security/armory/russian - name = "Russian Surplus Crate" - desc = "Hello Comrade, we have the most modern russian military equipment the black market can offer, for the right price of course. Sadly we couldnt remove the lock so it requires Armory access to open." - cost = 5000 - contraband = TRUE - contains = list(/obj/item/reagent_containers/food/snacks/rationpack, - /obj/item/ammo_box/a762, - /obj/item/storage/toolbox/ammo, - /obj/item/clothing/suit/armor/vest/russian, - /obj/item/clothing/head/helmet/rus_helmet, - /obj/item/clothing/shoes/russian, - /obj/item/clothing/gloves/combat, - /obj/item/clothing/under/syndicate/rus_army, - /obj/item/clothing/under/soviet, - /obj/item/clothing/mask/russian_balaclava, - /obj/item/clothing/head/helmet/rus_ushanka, - /obj/item/clothing/suit/armor/vest/russian_coat, - /obj/item/gun/ballistic/shotgun/boltaction, - /obj/item/gun/ballistic/shotgun/boltaction) - crate_name = "surplus military crate" - -/datum/supply_pack/security/armory/russian/fill(obj/structure/closet/crate/C) - for(var/i in 1 to 10) - var/item = pick(contains) - new item(C) - /datum/supply_pack/security/armory/swat name = "SWAT Crate" desc = "Contains two fullbody sets of tough, fireproof, pressurized suits designed in a joint effort by IS-ERI and Nanotrasen. Each set contains a suit, helmet, mask, combat belt, and combat gloves. Requires Armory access to open." @@ -252,7 +223,7 @@ /obj/item/ammo_box/magazine/wt550m9) crate_name = "auto rifle ammo crate" -/datum/supply_pack/security/armory/wt550ammo_nonlethal // Takes around 12 shots to stamcrit someone +/datum/supply_pack/security/armory/wt550ammo_nonlethal // Takes around 12 shots to stun crit someone name = "WT-550 Semi-Auto SMG Non-Lethal Ammo Crate" desc = "Contains four 20-round magazines for the WT-550 Semi-Auto SMG. Each magazine is designed to facilitate rapid tactical reloads. Requires Armory access to open." cost = 1000 diff --git a/code/modules/cargo/packs/emergency.dm b/code/modules/cargo/packs/emergency.dm index 747e820f52..30153ef077 100644 --- a/code/modules/cargo/packs/emergency.dm +++ b/code/modules/cargo/packs/emergency.dm @@ -23,21 +23,6 @@ crate_name = "Biker Kit" crate_type = /obj/structure/closet/crate/large -/datum/supply_pack/emergency/bio - name = "Biological Emergency Crate" - desc = "This crate holds 2 full bio suits which will protect you from viruses, along with a bio bag and two spaceacillin syringes." - cost = 2000 - contains = list(/obj/item/clothing/head/bio_hood, - /obj/item/clothing/head/bio_hood, - /obj/item/clothing/suit/bio_suit, - /obj/item/clothing/suit/bio_suit, - /obj/item/storage/bag/bio, - /obj/item/reagent_containers/syringe/antiviral, - /obj/item/reagent_containers/syringe/antiviral, - /obj/item/clothing/gloves/color/latex/nitrile, - /obj/item/clothing/gloves/color/latex/nitrile) - crate_name = "bio suit crate" - /datum/supply_pack/emergency/equipment name = "Emergency Bot/Internals Crate" desc = "Explosions got you down? These supplies are guaranteed to patch up holes, in stations and people alike! Comes with two floorbots, two medbots, five oxygen masks and five small oxygen tanks." @@ -127,8 +112,8 @@ crate_type = /obj/structure/closet/crate/internals /datum/supply_pack/emergency/soft_suit - name = "Emergency Space Suit" - desc = "Are there bombs going off left and right? Are there meteors shooting around the station? Well then! Here's two fragile space suits for emergencies. Comes with air and masks." + name = "Emergency Space Suit " + desc = "Are there bombs going off left and right? Are there meteors shooting around the station? Well then! Here's two fragile space suit for emergencies. Comes with air and masks." cost = 1200 contains = list(/obj/item/tank/internals/air, /obj/item/tank/internals/air, @@ -141,18 +126,6 @@ crate_name = "emergency crate" crate_type = /obj/structure/closet/crate/internals -/datum/supply_pack/emergency/bomb - name = "Explosive Emergency Crate" - desc = "Science gone bonkers? Beeping behind the airlock? Buy now and be the hero the station des... I mean needs! (Time not included.)" - cost = 1500 - contains = list(/obj/item/clothing/head/bomb_hood, - /obj/item/clothing/suit/bomb_suit, - /obj/item/clothing/mask/gas, - /obj/item/screwdriver, - /obj/item/wirecutters, - /obj/item/multitool) - crate_name = "bomb suit crate" - /datum/supply_pack/emergency/firefighting name = "Firefighting Crate" desc = "Only you can prevent station fires. Partner up with two firefighter suits, gas masks, flashlights, large oxygen tanks, extinguishers, and hardhats!" @@ -334,3 +307,4 @@ /obj/item/reagent_containers/spray/plantbgone) crate_name = "weed control crate" crate_type = /obj/structure/closet/crate/secure/hydroponics + diff --git a/code/modules/cargo/packs/livestock.dm b/code/modules/cargo/packs/livestock.dm index ebfb96ec23..1b55c0540a 100644 --- a/code/modules/cargo/packs/livestock.dm +++ b/code/modules/cargo/packs/livestock.dm @@ -25,20 +25,6 @@ new /obj/item/reagent_containers/food/snacks/grown/wheat(.) -/datum/supply_pack/critter/parrot - name = "Bird Crate" - desc = "Contains five expert telecommunication birds." - cost = 4000 - contains = list(/mob/living/simple_animal/parrot) - crate_name = "parrot crate" - -/datum/supply_pack/critter/parrot/generate() - . = ..() - for(var/i in 1 to 4) - new /mob/living/simple_animal/parrot(.) - if(prob(1)) - new /mob/living/simple_animal/parrot/clock_hawk(.) - /datum/supply_pack/critter/butterfly name = "Butterflies Crate" desc = "Not a very dangerous insect, but they do give off a better image than, say, flies or cockroaches."//is that a motherfucking worm reference diff --git a/code/modules/cargo/packs/medical.dm b/code/modules/cargo/packs/medical.dm index a60afe4f7a..1e5097fd11 100644 --- a/code/modules/cargo/packs/medical.dm +++ b/code/modules/cargo/packs/medical.dm @@ -57,27 +57,6 @@ crate_name = "blood freezer" crate_type = /obj/structure/closet/crate/freezer -/datum/supply_pack/medical/chemical - name = "Chemical Starter Kit Crate" - desc = "Contains twelve different chemicals, for all the fun experiments you can make." - cost = 1700 - contains = list(/obj/item/reagent_containers/glass/bottle/hydrogen, - /obj/item/reagent_containers/glass/bottle/carbon, - /obj/item/reagent_containers/glass/bottle/nitrogen, - /obj/item/reagent_containers/glass/bottle/oxygen, - /obj/item/reagent_containers/glass/bottle/fluorine, - /obj/item/reagent_containers/glass/bottle/phosphorus, - /obj/item/reagent_containers/glass/bottle/silicon, - /obj/item/reagent_containers/glass/bottle/chlorine, - /obj/item/reagent_containers/glass/bottle/radium, - /obj/item/reagent_containers/glass/bottle/sacid, - /obj/item/reagent_containers/glass/bottle/ethanol, - /obj/item/reagent_containers/glass/bottle/potassium, - /obj/item/clothing/glasses/science, - /obj/item/reagent_containers/dropper, - /obj/item/storage/box/beakers) - crate_name = "chemical crate" - /datum/supply_pack/medical/defibs name = "Defibrillator Crate" desc = "Contains two defibrillators for bringing the recently deceased back to life." @@ -250,7 +229,7 @@ /datum/supply_pack/medical/anitvirus name = "Virus Containment Crate" - desc = "Viro let out a death plague Mk II again? Someone didn't wash their hands? Old plagues born anew? Well, this crate is for you! Hope you cure it before it breaks out of the station... This crate needs medical access to open and has two bio suits, a box of needles and beakers, five spaceacillin needles, and a medibot." + desc = "Viro let out a death plague Mk II again? Someone didnt wash their hands? Old plagues born anew? Well this crate is for you! Hope you cure it before it breaks out of the station... This crate needs medical access to open and has two bio suits, a box of needles and beakers, five spaceacillin needles, and a medibot." cost = 3000 access = ACCESS_MEDICAL contains = list(/mob/living/simple_animal/bot/medbot, @@ -266,4 +245,4 @@ /obj/item/storage/box/syringes, /obj/item/storage/box/beakers) crate_name = "virus containment unit crate" - crate_type = /obj/structure/closet/crate/secure/plasma + crate_type = /obj/structure/closet/crate/secure/plasma \ No newline at end of file diff --git a/code/modules/cargo/packs/misc.dm b/code/modules/cargo/packs/misc.dm index f8656ef761..aa680e1b1e 100644 --- a/code/modules/cargo/packs/misc.dm +++ b/code/modules/cargo/packs/misc.dm @@ -13,16 +13,17 @@ //////////////////// Paperwork and Writing Supplies ////////////////////////// ////////////////////////////////////////////////////////////////////////////// +/* I did it Kevin /datum/supply_pack/misc/abandonedcrate - name = "Loot Box" - desc = "Try your luck with these highly secure loot boxes! Solve the lock, win great prizes! WARNING: EXPLOSIVE FAILURE." + name = "Abandoned Crate" + desc = "Someone keeps finding these locked crates out in the boonies. How about you take a crack at it, we've had our fill. WARNING: EXPLOSIVE" contraband = TRUE - cost = 15000 + cost = 12800 contains = list(/obj/structure/closet/crate/secure/loot) crate_name = "abandoned crate" crate_type = /obj/structure/closet/crate/large dangerous = TRUE - +*/ /datum/supply_pack/misc/artsupply name = "Art Supplies" desc = "Make some happy little accidents with six canvasses, two easels, two boxes of crayons, and a rainbow crayon!" @@ -281,7 +282,8 @@ /obj/item/storage/book/bible/booze, /obj/item/storage/book/bible/booze, /obj/item/clothing/suit/hooded/chaplain_hoodie, - /obj/item/clothing/suit/hooded/chaplain_hoodie) + /obj/item/clothing/suit/hooded/chaplain_hoodie + ) crate_name = "religious supplies crate" /datum/supply_pack/misc/funeral diff --git a/code/modules/cargo/packs/organic.dm b/code/modules/cargo/packs/organic.dm index dd0f987d25..4a90af6fd0 100644 --- a/code/modules/cargo/packs/organic.dm +++ b/code/modules/cargo/packs/organic.dm @@ -47,26 +47,6 @@ /obj/item/storage/fancy/donut_box) crate_name = "candy crate" -/datum/supply_pack/organic/randomized/chef - name = "Excellent Meat Crate" - desc = "The best cuts in the whole galaxy." - cost = 2000 - contains = list(/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime, - /obj/item/reagent_containers/food/snacks/meat/slab/killertomato, - /obj/item/reagent_containers/food/snacks/meat/slab/bear, - /obj/item/reagent_containers/food/snacks/meat/slab/xeno, - /obj/item/reagent_containers/food/snacks/meat/slab/spider, - /obj/item/reagent_containers/food/snacks/meat/rawbacon, - /obj/item/reagent_containers/food/snacks/spiderleg, - /obj/item/reagent_containers/food/snacks/carpmeat, - /obj/item/reagent_containers/food/snacks/meat/slab/human) - crate_name = "food crate" - -/datum/supply_pack/organic/randomized/chef/fill(obj/structure/closet/crate/C) - for(var/i in 1 to 15) - var/item = pick(contains) - new item(C) - /datum/supply_pack/organic/exoticseeds name = "Exotic Seeds Crate" desc = "Any entrepreneuring botanist's dream. Contains twelve different seeds, including three replica-pod seeds and two mystery seeds!" @@ -112,26 +92,6 @@ /obj/item/reagent_containers/food/snacks/grown/banana) crate_name = "food crate" -/datum/supply_pack/organic/randomized/chef/fruits - name = "Fruit Crate" - desc = "Rich in vitamins, may contain oranges." - cost = 1500 - contains = list(/obj/item/reagent_containers/food/snacks/grown/citrus/lime, - /obj/item/reagent_containers/food/snacks/grown/citrus/orange, - /obj/item/reagent_containers/food/snacks/grown/banana, - /obj/item/reagent_containers/food/snacks/grown/watermelon, - /obj/item/reagent_containers/food/snacks/grown/apple, - /obj/item/reagent_containers/food/snacks/grown/berries, - /obj/item/reagent_containers/food/snacks/grown/citrus/lemon, - /obj/item/reagent_containers/food/snacks/grown/pineapple, - /obj/item/reagent_containers/food/snacks/grown/cherries, - /obj/item/reagent_containers/food/snacks/grown/grapes, - /obj/item/reagent_containers/food/snacks/grown/grapes/green, - /obj/item/reagent_containers/food/snacks/grown/eggplant, - /obj/item/reagent_containers/food/snacks/grown/peach, - /obj/item/reagent_containers/food/snacks/grown/strawberry) - crate_name = "food crate" - /datum/supply_pack/organic/fiestatortilla name = "Fiesta Crate" desc = "Spice up the kitchen with this fiesta themed food order! Contains 8 tortilla based food items, as well as a sombrero, moustache, and cloak!" @@ -151,6 +111,71 @@ /obj/item/reagent_containers/glass/bottle/capsaicin) crate_name = "fiesta crate" +/datum/supply_pack/organic/fruit_1 + name = "Fruit Basic Crate" + desc = "Getting scurvy on the station? Well heres your fixing! Contains three of each - bananas, watermelons, limes, lemons, oranges and even three pineapple." + cost = 2250 + contains = list(/obj/item/reagent_containers/food/snacks/grown/watermelon, + /obj/item/reagent_containers/food/snacks/grown/watermelon, + /obj/item/reagent_containers/food/snacks/grown/watermelon, + /obj/item/reagent_containers/food/snacks/grown/pineapple, + /obj/item/reagent_containers/food/snacks/grown/pineapple, + /obj/item/reagent_containers/food/snacks/grown/pineapple, + /obj/item/reagent_containers/food/snacks/grown/citrus/lime, + /obj/item/reagent_containers/food/snacks/grown/citrus/lime, + /obj/item/reagent_containers/food/snacks/grown/citrus/lime, + /obj/item/reagent_containers/food/snacks/grown/citrus/orange, + /obj/item/reagent_containers/food/snacks/grown/citrus/orange, + /obj/item/reagent_containers/food/snacks/grown/citrus/orange, + /obj/item/reagent_containers/food/snacks/grown/citrus/lemon, + /obj/item/reagent_containers/food/snacks/grown/citrus/lemon, + /obj/item/reagent_containers/food/snacks/grown/citrus/lemon, + /obj/item/reagent_containers/food/snacks/grown/banana, + /obj/item/reagent_containers/food/snacks/grown/banana, + /obj/item/reagent_containers/food/snacks/grown/banana) + crate_name = "fruit crate" + +/datum/supply_pack/organic/fruit_2 + name = "Fruit Delux Crate" + desc = "Getting tired of the basic fruits and want to have something a bit more decadent! This crate is for you! Contains three of each - bunches of berries, apples, pineapples, cherries, green & red grapes, eggplants, bananas, peaches, and lastly seven strawberry. Includes one serving tray." + cost = 3500 + contains = list(/obj/item/reagent_containers/food/snacks/grown/berries, + /obj/item/reagent_containers/food/snacks/grown/berries, + /obj/item/reagent_containers/food/snacks/grown/berries, + /obj/item/reagent_containers/food/snacks/grown/apple, + /obj/item/reagent_containers/food/snacks/grown/apple, + /obj/item/reagent_containers/food/snacks/grown/apple, + /obj/item/reagent_containers/food/snacks/grown/pineapple, + /obj/item/reagent_containers/food/snacks/grown/pineapple, + /obj/item/reagent_containers/food/snacks/grown/pineapple, + /obj/item/reagent_containers/food/snacks/grown/cherries, + /obj/item/reagent_containers/food/snacks/grown/cherries, + /obj/item/reagent_containers/food/snacks/grown/cherries, + /obj/item/reagent_containers/food/snacks/grown/grapes, + /obj/item/reagent_containers/food/snacks/grown/grapes, + /obj/item/reagent_containers/food/snacks/grown/grapes, + /obj/item/reagent_containers/food/snacks/grown/grapes/green, + /obj/item/reagent_containers/food/snacks/grown/grapes/green, + /obj/item/reagent_containers/food/snacks/grown/grapes/green, + /obj/item/reagent_containers/food/snacks/grown/banana, + /obj/item/reagent_containers/food/snacks/grown/banana, + /obj/item/reagent_containers/food/snacks/grown/banana, + /obj/item/reagent_containers/food/snacks/grown/eggplant, + /obj/item/reagent_containers/food/snacks/grown/eggplant, + /obj/item/reagent_containers/food/snacks/grown/eggplant, + /obj/item/reagent_containers/food/snacks/grown/peach, + /obj/item/reagent_containers/food/snacks/grown/peach, + /obj/item/reagent_containers/food/snacks/grown/peach, + /obj/item/reagent_containers/food/snacks/grown/strawberry, + /obj/item/reagent_containers/food/snacks/grown/strawberry, + /obj/item/reagent_containers/food/snacks/grown/strawberry, + /obj/item/reagent_containers/food/snacks/grown/strawberry, + /obj/item/reagent_containers/food/snacks/grown/strawberry, + /obj/item/reagent_containers/food/snacks/grown/strawberry, + /obj/item/reagent_containers/food/snacks/grown/strawberry, + /obj/item/storage/bag/tray) + crate_name = "fruit crate" + /datum/supply_pack/organic/grill name = "Grilling Starter Kit" desc = "Hey dad I'm Hungry. Hi Hungry I'm THE NEW GRILLING STARTER KIT ONLY 5000 BUX GET NOW! Contains a cooking grill and five fuel coal sheets." @@ -258,19 +283,6 @@ considered \[REDACTED\] and returned at your leisure. Note that objects the anomaly produces are specifically attuned exactly to the individual opening the anomaly; regardless \ of species, the individual will find the object edible and it will taste great according to their personal definitions, which vary significantly based on person and species.") -/datum/supply_pack/organic/randomized/chef/vegetables - name = "Vegetables Crate" - desc = "Grown in vats." - cost = 1300 - contains = list(/obj/item/reagent_containers/food/snacks/grown/chili, - /obj/item/reagent_containers/food/snacks/grown/corn, - /obj/item/reagent_containers/food/snacks/grown/tomato, - /obj/item/reagent_containers/food/snacks/grown/potato, - /obj/item/reagent_containers/food/snacks/grown/carrot, - /obj/item/reagent_containers/food/snacks/grown/mushroom/chanterelle, - /obj/item/reagent_containers/food/snacks/grown/onion, - /obj/item/reagent_containers/food/snacks/grown/pumpkin) - crate_name = "food crate" ////////////////////////////////////////////////////////////////////////////// //////////////////////////// Hydroponics ///////////////////////////////////// @@ -360,8 +372,6 @@ /obj/item/hatchet, /obj/item/cultivator, /obj/item/plant_analyzer, - /obj/item/clothing/gloves/botanic_leather, - /obj/item/clothing/suit/apron, /obj/item/flashlight, /obj/item/seeds/carrot, /obj/item/seeds/carrot, diff --git a/code/modules/cargo/packs/science.dm b/code/modules/cargo/packs/science.dm index f14bc37371..981e343045 100644 --- a/code/modules/cargo/packs/science.dm +++ b/code/modules/cargo/packs/science.dm @@ -54,7 +54,7 @@ /datum/supply_pack/science/robotics/mecha_odysseus name = "Circuit Crate (Odysseus)" desc = "Ever wanted to build your own giant medical robot? Well, now you can! Contains the Odysseus main control board and Odysseus peripherals board. Requires Robotics access to open." - cost = 1500 + cost = 2500 access = ACCESS_ROBOTICS contains = list(/obj/item/circuitboard/mecha/odysseus/peripherals, /obj/item/circuitboard/mecha/odysseus/main) @@ -64,7 +64,7 @@ /datum/supply_pack/science/robotics/mecha_ripley name = "Circuit Crate (Ripley APLU)" desc = "Rip apart rocks and xenomorphs alike with the Ripley APLU. Contains the Main Ripley control board, as well as the Ripley Peripherals board. Requires Robotics access to open." - cost = 1200 + cost = 3000 access = ACCESS_ROBOTICS contains = list(/obj/item/book/manual/ripley_build_and_repair, /obj/item/circuitboard/mecha/ripley/main, @@ -153,13 +153,6 @@ crate_name = "robotics assembly crate" crate_type = /obj/structure/closet/crate/secure/science -/datum/supply_pack/science/rped - name = "RPED crate" - desc = "Need to rebuild the ORM but science got annihilated after a bomb test? Buy this for the most advanced parts NT can give you." - cost = 1500 - contains = list(/obj/item/storage/part_replacer/cargo) - crate_name = "\improper RPED crate" - /datum/supply_pack/science/shieldwalls name = "Shield Generator Crate" desc = "These high powered Shield Wall Generators are guaranteed to keep any unwanted lifeforms on the outside, where they belong! Contains four shield wall generators. Requires Teleporter access to open." @@ -195,7 +188,7 @@ /datum/supply_pack/science/tablets name = "Tablet Crate" desc = "What's a computer? Contains five cargo tablets." - cost = 1500 + cost = 3000 contains = list(/obj/item/modular_computer/tablet/preset/cargo, /obj/item/modular_computer/tablet/preset/cargo, /obj/item/modular_computer/tablet/preset/cargo, diff --git a/code/modules/cargo/packs/security.dm b/code/modules/cargo/packs/security.dm index 69967d65d1..0bda316ca3 100644 --- a/code/modules/cargo/packs/security.dm +++ b/code/modules/cargo/packs/security.dm @@ -11,23 +11,6 @@ access = ACCESS_SECURITY crate_type = /obj/structure/closet/crate/secure/gear -/datum/supply_pack/security/ammo - name = "Ammo Crate - General Purpose" - desc = "Contains two 20-round magazines for the WT-550 Auto Rifle, three boxes of buckshot ammo, three boxes of rubber ammo and special .38 speedloarders. Requires Security access to open." - cost = 2500 - contains = list(/obj/item/ammo_box/magazine/wt550m9, - /obj/item/ammo_box/magazine/wt550m9, - /obj/item/storage/box/lethalshot, - /obj/item/storage/box/lethalshot, - /obj/item/storage/box/lethalshot, - /obj/item/storage/box/rubbershot, - /obj/item/storage/box/rubbershot, - /obj/item/storage/box/rubbershot, - /obj/item/ammo_box/c38/trac, - /obj/item/ammo_box/c38/hotshot, - /obj/item/ammo_box/c38/iceblox) - crate_name = "ammo crate" - /datum/supply_pack/security/armor name = "Armor Crate" desc = "Three vests of well-rounded, decently-protective armor. Requires Security access to open." @@ -163,13 +146,6 @@ /obj/item/storage/box/handcuffs) crate_name = "security supply crate" -/datum/supply_pack/security/vending/security - name = "SecTech Supply Crate" - desc = "Officer Paul bought all the donuts? Then refill the security vendor with ths crate." - cost = 1500 - contains = list(/obj/machinery/vending/security) - crate_name = "SecTech supply crate" - /datum/supply_pack/security/firingpins name = "Standard Firing Pins Crate" desc = "Upgrade your arsenal with 10 standard firing pins. Requires Security access to open." diff --git a/code/modules/cargo/packs/service.dm b/code/modules/cargo/packs/service.dm index 01524b1910..8fd5b6eb58 100644 --- a/code/modules/cargo/packs/service.dm +++ b/code/modules/cargo/packs/service.dm @@ -103,7 +103,7 @@ /datum/supply_pack/service/cutlery name = "Kitchen Cutlery Deluxe Set" - desc = "Need to slice and dice away those \"Tomatoes\"? Well we got what you need! From a nice set of knifes, forks, plates, glasses, and a whetstone for when you got some grizzle that is a bit harder to slice then normal." + desc = "Need to slice and dice away those ''Tomatoes''? Well we got what you need! From a nice set of knifes, forks, plates, glasses, and a whetstone for when you got some grizzle that is a bit harder to slice then normal." cost = 10000 contraband = TRUE contains = list(/obj/item/sharpener, //Deluxe for a reason @@ -127,16 +127,6 @@ /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass) crate_name = "kitchen cutlery deluxe set" -/datum/supply_pack/service/replacementdb - name = "Replacement Defensive Bar Shotgun" - desc = "Someone stole the Bartender's twin-barreled possession? Give them another one at a significant markup. Comes with one unused double-barrel shotgun, shells not included. Requires bartender access to open." - cost = 2200 - access = ACCESS_BAR - contraband = TRUE - contains = list(/obj/item/gun/ballistic/revolver/doublebarrel) - crate_name = "replacement double-barrel crate" - crate_type = /obj/structure/closet/crate/secure - ////////////////////////////////////////////////////////////////////////////// /////////////////////////////// Janitor ////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm index 361b2a7517..a54584d6cc 100644 --- a/code/modules/client/client_defines.dm +++ b/code/modules/client/client_defines.dm @@ -79,4 +79,4 @@ var/client_keysend_amount = 0 var/next_keysend_reset = 0 var/next_keysend_trip_reset = 0 - var/keysend_tripped = FALSE + var/keysend_tripped = FALSE \ No newline at end of file diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 7b7cf3413e..00cc01105d 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -21,10 +21,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/last_ip var/last_id - var/icon/custom_holoform_icon - var/list/cached_holoform_icons - var/last_custom_holoform = 0 - //Cooldowns for saving/loading. These are four are all separate due to loading code calling these one after another var/saveprefcooldown var/loadprefcooldown @@ -199,9 +195,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/auto_fit_viewport = TRUE var/uplink_spawn_loc = UPLINK_PDA - - var/sprint_spacebar = FALSE - var/sprint_toggle = FALSE var/list/exp = list() var/list/menuoptions @@ -252,7 +245,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Character Appearance" dat += "Loadout" dat += "Game Preferences" - dat += "Content Preferences" if(!path) dat += "
    Please create an account to save your preferences
    " @@ -729,13 +721,13 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "" dat += "
    " dat += "

    Clothing & Equipment

    " dat += "Underwear:[underwear]" - if(GLOB.underwear_list[underwear]?.has_color) + if(UNDIE_COLORABLE(GLOB.underwear_list[underwear])) dat += "Underwear Color:     Change
    " dat += "Undershirt:[undershirt]" - if(GLOB.undershirt_list[undershirt]?.has_color) + if(UNDIE_COLORABLE(GLOB.undershirt_list[undershirt])) dat += "Undershirt Color:     Change
    " dat += "Socks:[socks]" - if(GLOB.socks_list[socks]?.has_color) + if(UNDIE_COLORABLE(GLOB.socks_list[socks])) dat += "Socks Color:     Change
    " dat += "Backpack:[backbag]" dat += "Jumpsuit:
    [jumpsuit_style]
    " @@ -842,9 +834,13 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat +="
    " dat += "

    Citadel Preferences

    " //Because fuck me if preferences can't be fucking modularized and expected to update in a reasonable timeframe. + dat += "Arousal:[arousable == TRUE ? "Enabled" : "Disabled"]
    " + dat += "Voracious MediHound sleepers: [(cit_toggles & MEDIHOUND_SLEEPER) ? "Yes" : "No"]
    " + dat += "Hear Vore Sounds: [(cit_toggles & EATING_NOISES) ? "Yes" : "No"]
    " + dat += "Hear Vore Digestion Sounds: [(cit_toggles & DIGESTION_NOISES) ? "Yes" : "No"]
    " + dat += "Lewdchem:[lewdchem == TRUE ? "Enabled" : "Disabled"]
    " dat += "Widescreen: [widescreenpref ? "Enabled ([CONFIG_GET(string/default_view)])" : "Disabled (15x15)"]
    " dat += "Auto stand: [autostand ? "Enabled" : "Disabled"]
    " - dat += "Auto OOC: [auto_ooc ? "Enabled" : "Disabled"]
    " dat += "Screen Shake: [(screenshake==100) ? "Full" : ((screenshake==0) ? "None" : "[screenshake]")]
    " if (user && user.client && !user.client.prefs.screenshake==0) dat += "Damage Screen Shake: [(damagescreenshake==1) ? "On" : ((damagescreenshake==0) ? "Off" : "Only when down")]
    " @@ -896,8 +892,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "
    " dat += "Ambient Occlusion: [ambientocclusion ? "Enabled" : "Disabled"]
    " dat += "Fit Viewport: [auto_fit_viewport ? "Auto" : "Manual"]
    " - dat += "Sprint Key: [sprint_spacebar ? "Space" : "Shift"]
    " - dat += "Toggle Sprint: [sprint_toggle ? "Enabled" : "Disabled"]
    " if (CONFIG_GET(flag/maprotation) && CONFIG_GET(flag/tgstyle_maprotation)) var/p_map = preferred_map @@ -997,26 +991,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "" dat += "
    [gear.description]
    " - if(4) // Content preferences - dat += "" - dat +="
    " - dat += "

    Fetish content prefs

    " - dat += "Arousal:[arousable == TRUE ? "Enabled" : "Disabled"]
    " - dat += "Voracious MediHound sleepers: [(cit_toggles & MEDIHOUND_SLEEPER) ? "Yes" : "No"]
    " - dat += "Hear Vore Sounds: [(cit_toggles & EATING_NOISES) ? "Yes" : "No"]
    " - dat += "Hear Vore Digestion Sounds: [(cit_toggles & DIGESTION_NOISES) ? "Yes" : "No"]
    " - dat += "Forced Feminization: [(cit_toggles & FORCED_FEM) ? "Allowed" : "Disallowed"]
    " - dat += "Forced Masculinization: [(cit_toggles & FORCED_MASC) ? "Allowed" : "Disallowed"]
    " - dat += "Lewd Hypno: [(cit_toggles & HYPNO) ? "Allowed" : "Disallowed"]
    " - dat += "
    " - dat += "

    Other content prefs

    " - dat += "Breast Enlargement: [(cit_toggles & BREAST_ENLARGEMENT) ? "Allowed" : "Disallowed"]
    " - dat += "Penis Enlargement: [(cit_toggles & PENIS_ENLARGEMENT) ? "Allowed" : "Disallowed"]
    " - dat += "Hypno: [(cit_toggles & NEVER_HYPNO) ? "Disallowed" : "Allowed"]
    " - dat += "Aphrodisiacs: [(cit_toggles & NO_APHRO) ? "Disallowed" : "Allowed"]
    " - dat += "Ass Slapping: [(cit_toggles & NO_ASS_SLAP) ? "Disallowed" : "Allowed"]
    " - dat += "
    " - dat += "
    " @@ -2062,6 +2036,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["genitals_use_skintone"] = !features["genitals_use_skintone"] if("arousable") arousable = !arousable + if("lewdchem") + lewdchem = !lewdchem if("has_cock") features["has_cock"] = !features["has_cock"] if(features["has_cock"] == FALSE) @@ -2093,8 +2069,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) user.client.change_view(CONFIG_GET(string/default_view)) if("autostand") autostand = !autostand - if("auto_ooc") - auto_ooc = !auto_ooc if ("screenshake") var/desiredshake = input(user, "Set the amount of screenshake you want. \n(0 = disabled, 100 = full, 200 = maximum.)", "Character Preference", screenshake) as null|num if (!isnull(desiredshake)) @@ -2210,31 +2184,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("toggledigestionnoise") cit_toggles ^= DIGESTION_NOISES - - if("breast_enlargement") - cit_toggles ^= BREAST_ENLARGEMENT - - if("penis_enlargement") - cit_toggles ^= PENIS_ENLARGEMENT - - if("feminization") - cit_toggles ^= FORCED_FEM - - if("masculinization") - cit_toggles ^= FORCED_MASC - - if("hypno") - cit_toggles ^= HYPNO - - if("never_hypno") - cit_toggles ^= NEVER_HYPNO - - if("aphro") - cit_toggles ^= NO_APHRO - - if("ass_slap") - cit_toggles ^= NO_ASS_SLAP - //END CITADEL EDIT if("ambientocclusion") @@ -2248,12 +2197,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(auto_fit_viewport && parent) parent.fit_viewport() - if("sprint_key") - sprint_spacebar = !sprint_spacebar - - if("sprint_toggle") - sprint_toggle = !sprint_toggle - if("save") save_preferences() save_character() @@ -2426,11 +2369,3 @@ GLOBAL_LIST_EMPTY(preferences_datums) return else custom_names[name_id] = sanitized_name - -/datum/preferences/proc/get_filtered_holoform(filter_type) - if(!custom_holoform_icon) - return - LAZYINITLIST(cached_holoform_icons) - if(!cached_holoform_icons[filter_type]) - cached_holoform_icons[filter_type] = process_holoform_icon_filter(custom_holoform_icon, filter_type) - return cached_holoform_icons[filter_type] diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 2472cbef78..c88d246b96 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -5,7 +5,7 @@ // You do not need to raise this if you are adding new values that have sane defaults. // Only raise this value when changing the meaning/format/name/layout of an existing value // where you would want the updater procs below to run -#define SAVEFILE_VERSION_MAX 25 +#define SAVEFILE_VERSION_MAX 24 /* SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn @@ -113,11 +113,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car var/datum/quirk/exhibitionism/E var/quirk_name = initial(E.name) all_quirks += quirk_name - if(current_version < 25) - var/digi - S["feature_lizard_legs"] >> digi - if(digi == "Digitigrade Legs") - WRITE_FILE(S["feature_lizard_legs"], "Digitigrade") /datum/preferences/proc/load_path(ckey,filename="preferences.sav") if(!ckey) @@ -172,8 +167,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["parallax"] >> parallax S["ambientocclusion"] >> ambientocclusion S["auto_fit_viewport"] >> auto_fit_viewport - S["sprint_spacebar"] >> sprint_spacebar - S["sprint_toggle"] >> sprint_toggle S["menuoptions"] >> menuoptions S["enable_tips"] >> enable_tips S["tip_delay"] >> tip_delay @@ -188,8 +181,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["widescreenpref"] >> widescreenpref S["autostand"] >> autostand S["cit_toggles"] >> cit_toggles + S["lewdchem"] >> lewdchem S["preferred_chaos"] >> preferred_chaos - S["auto_ooc"] >> auto_ooc //try to fix any outdated data if necessary @@ -211,8 +204,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car parallax = sanitize_integer(parallax, PARALLAX_INSANE, PARALLAX_DISABLE, null) ambientocclusion = sanitize_integer(ambientocclusion, 0, 1, initial(ambientocclusion)) auto_fit_viewport = sanitize_integer(auto_fit_viewport, 0, 1, initial(auto_fit_viewport)) - sprint_spacebar = sanitize_integer(sprint_spacebar, 0, 1, initial(sprint_spacebar)) - sprint_toggle = sanitize_integer(sprint_toggle, 0, 1, initial(sprint_toggle)) ghost_form = sanitize_inlist(ghost_form, GLOB.ghost_forms, initial(ghost_form)) ghost_orbit = sanitize_inlist(ghost_orbit, GLOB.ghost_orbits, initial(ghost_orbit)) ghost_accs = sanitize_inlist(ghost_accs, GLOB.ghost_accs_options, GHOST_ACCS_DEFAULT_OPTION) @@ -228,7 +219,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car widescreenpref = sanitize_integer(widescreenpref, 0, 1, initial(widescreenpref)) autostand = sanitize_integer(autostand, 0, 1, initial(autostand)) cit_toggles = sanitize_integer(cit_toggles, 0, 65535, initial(cit_toggles)) - auto_ooc = sanitize_integer(auto_ooc, 0, 1, initial(auto_ooc)) + return 1 @@ -273,8 +264,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["parallax"], parallax) WRITE_FILE(S["ambientocclusion"], ambientocclusion) WRITE_FILE(S["auto_fit_viewport"], auto_fit_viewport) - WRITE_FILE(S["sprint_spacebar"], sprint_spacebar) - WRITE_FILE(S["sprint_toggle"], sprint_toggle) WRITE_FILE(S["menuoptions"], menuoptions) WRITE_FILE(S["enable_tips"], enable_tips) WRITE_FILE(S["tip_delay"], tip_delay) @@ -289,8 +278,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["widescreenpref"], widescreenpref) WRITE_FILE(S["autostand"], autostand) WRITE_FILE(S["cit_toggles"], cit_toggles) + WRITE_FILE(S["lewdchem"], lewdchem) WRITE_FILE(S["preferred_chaos"], preferred_chaos) - WRITE_FILE(S["auto_ooc"], auto_ooc) return 1 @@ -514,7 +503,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car features["frills"] = sanitize_inlist(features["frills"], GLOB.frills_list) features["spines"] = sanitize_inlist(features["spines"], GLOB.spines_list) features["body_markings"] = sanitize_inlist(features["body_markings"], GLOB.body_markings_list) - features["legs"] = sanitize_inlist(features["legs"], GLOB.legs_list, "Plantigrade") + features["feature_lizard_legs"] = sanitize_inlist(features["legs"], GLOB.legs_list) features["deco_wings"] = sanitize_inlist(features["deco_wings"], GLOB.deco_wings_list, "None") features["insect_fluff"] = sanitize_inlist(features["insect_fluff"], GLOB.insect_fluffs_list) features["insect_markings"] = sanitize_inlist(features["insect_markings"], GLOB.insect_markings_list, "None") @@ -528,21 +517,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car all_quirks = SANITIZE_LIST(all_quirks) - for(var/V in all_quirks) // quirk migration - switch(V) - if("Acute hepatic pharmacokinesis") - DISABLE_BITFIELD(cit_toggles, PENIS_ENLARGEMENT) - DISABLE_BITFIELD(cit_toggles, BREAST_ENLARGEMENT) - ENABLE_BITFIELD(cit_toggles,FORCED_FEM) - ENABLE_BITFIELD(cit_toggles,FORCED_MASC) - all_quirks -= V - if("Crocin Immunity") - ENABLE_BITFIELD(cit_toggles,NO_APHRO) - all_quirks -= V - if("Buns of Steel") - ENABLE_BITFIELD(cit_toggles,NO_ASS_SLAP) - all_quirks -= V - cit_character_pref_load(S) return 1 diff --git a/code/modules/client/verbs/looc.dm b/code/modules/client/verbs/looc.dm index 38cfd84b9c..b371372dfe 100644 --- a/code/modules/client/verbs/looc.dm +++ b/code/modules/client/verbs/looc.dm @@ -10,7 +10,9 @@ GLOBAL_VAR_INIT(normal_looc_colour, "#6699CC") to_chat(usr, " Speech is currently admin-disabled.") return - if(!mob) + if(!mob) return + if(IsGuestKey(key)) + to_chat(src, "Guests may not use OOC.") return msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN) diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index b67fe2b462..8b2a34a089 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -220,14 +220,10 @@ var/obj/item/I = target I.item_state = initial(picked_item.item_state) I.item_color = initial(picked_item.item_color) - var/obj/item/clothing/CL = target - var/obj/item/clothing/PCL = new picked_item - if(istype(CL) && istype(PCL)) - CL.flags_cover = PCL.flags_cover - CL.flags_inv = PCL.flags_inv - CL.mutantrace_variation = PCL.mutantrace_variation - CL.alternate_worn_icon = PCL.alternate_worn_icon - qdel(PCL) + if(istype(I, /obj/item/clothing) && istype(initial(picked_item), /obj/item/clothing)) + var/obj/item/clothing/CL = I + var/obj/item/clothing/PCL = picked_item + CL.flags_cover = initial(PCL.flags_cover) target.icon = initial(picked_item.icon) /datum/action/item_action/chameleon/change/pda/update_item(obj/item/pda/picked_item) @@ -638,7 +634,6 @@ /obj/item/clothing/neck/cloak/chameleon name = "black tie" desc = "A neosilk clip-on tie." - icon = 'icons/obj/clothing/neck.dmi' icon_state = "blacktie" item_color = "blacktie" resistance_flags = NONE diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 4d441e7e2b..60b8e1565e 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -57,6 +57,7 @@ //No idea what this is but eh -tori var/force_alternate_icon = FALSE + /obj/item/clothing/Initialize() . = ..() if(CHECK_BITFIELD(clothing_flags, VOICEBOX_TOGGLABLE)) @@ -81,7 +82,7 @@ /obj/item/reagent_containers/food/snacks/clothing name = "oops" desc = "If you're reading this it means I messed up. This is related to moths eating clothes and I didn't know a better way to do it than making a new food object." - list_reagents = list(/datum/reagent/consumable/nutriment = 1) + list_reagents = list("nutriment" = 1) tastes = list("dust" = 1, "lint" = 1) /obj/item/clothing/attack(mob/M, mob/user, def_zone) @@ -297,33 +298,6 @@ BLIND // can't see anything user.regenerate_icons() return TRUE -/obj/item/clothing/neck/AltClick(mob/user) - . = ..() - if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user))) - return - // Polychrome stuff: - if(hasprimary | hassecondary | hastertiary) - var/choice = input(user,"polychromic thread options", "Clothing Recolor") as null|anything in list("[hasprimary ? "Primary Color" : ""]", "[hassecondary ? "Secondary Color" : ""]", "[hastertiary ? "Tertiary Color" : ""]") //generates a list depending on the enabled overlays - switch(choice) //Lets the list's options actually lead to something - if("Primary Color") - var/primary_color_input = input(usr,"","Choose Primary Color",primary_color) as color|null //color input menu, the "|null" adds a cancel button to it. - if(primary_color_input) //Checks if the color selected is NULL, rejects it if it is NULL. - primary_color = sanitize_hexcolor(primary_color_input, desired_format=6, include_crunch=1) //formats the selected color properly - update_icon() //updates the item icon - user.regenerate_icons() //updates the worn icon. Probably a bad idea, but it works. - if("Secondary Color") - var/secondary_color_input = input(usr,"","Choose Secondary Color",secondary_color) as color|null - if(secondary_color_input) - secondary_color = sanitize_hexcolor(secondary_color_input, desired_format=6, include_crunch=1) - update_icon() - user.regenerate_icons() - if("Tertiary Color") - var/tertiary_color_input = input(usr,"","Choose Tertiary Color",tertiary_color) as color|null - if(tertiary_color_input) - tertiary_color = sanitize_hexcolor(tertiary_color_input, desired_format=6, include_crunch=1) - update_icon() - user.regenerate_icons() - return TRUE /obj/item/clothing/under/verb/jumpsuit_adjust() set name = "Adjust Jumpsuit Style" diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index d91a2b9a2c..1a178158d8 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -54,9 +54,6 @@ H.blur_eyes(5) eyes.applyOrganDamage(5) -/obj/item/clothing/glasses/proc/ranged_attack(mob/living/carbon/human/user,atom/A, params) - return FALSE - /obj/item/clothing/glasses/meson name = "optical meson scanner" desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting conditions." @@ -303,7 +300,7 @@ add_atom_colour("#[user.eye_color]", FIXED_COLOUR_PRIORITY) colored_before = TRUE -/obj/item/clothing/glasses/sunglasses/blindfold/white/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) +/obj/item/clothing/glasses/sunglasses/blindfold/white/worn_overlays(isinhands = FALSE, file2use) . = list() if(!isinhands && ishuman(loc) && !colored_before) var/mob/living/carbon/human/H = loc diff --git a/code/modules/clothing/glasses/disablerglasses.dm b/code/modules/clothing/glasses/disablerglasses.dm deleted file mode 100644 index a46e4c8339..0000000000 --- a/code/modules/clothing/glasses/disablerglasses.dm +++ /dev/null @@ -1,15 +0,0 @@ -/obj/item/clothing/glasses/hud/security/sunglasses/disablers - name = "true stunglasses" - desc = "Made for only the best of shitsec. Wear 'em like you're gonna robust all of those fuckers." - var/beamtype = /obj/item/projectile/beam/disabler //change for adminbus - -/obj/item/clothing/glasses/hud/security/sunglasses/disablers/ranged_attack(mob/living/carbon/human/user,atom/A, params) - user.changeNext_move(CLICK_CD_RANGE) - var/obj/item/projectile/beam/disabler/LE = new beamtype( loc ) - playsound(usr.loc, 'sound/weapons/taser2.ogg', 75, 1) - LE.firer = src - LE.def_zone = user.get_organ_target() - LE.preparePixelProjectile(A, src, params) - LE.fire() - return TRUE - //shamelessly copied \ No newline at end of file diff --git a/code/modules/clothing/glasses/engine_goggles.dm b/code/modules/clothing/glasses/engine_goggles.dm index 0132fa8596..47706a3e1e 100644 --- a/code/modules/clothing/glasses/engine_goggles.dm +++ b/code/modules/clothing/glasses/engine_goggles.dm @@ -90,7 +90,7 @@ for(var/i in rad_places) var/turf/place = i - if(get_dist(user, place) >= range*8) //Rads are easier to see than wires under the floor + if(get_dist(user, place) >= range*2) //Rads are easier to see than wires under the floor continue var/strength = round(rad_places[i] / 1000, 0.1) var/image/pic = new(loc = place) @@ -139,6 +139,7 @@ item_state = "trayson-t-ray" desc = "Used by engineering staff to see underfloor objects such as cables and pipes." range = 2 + modes = list(MODE_NONE = MODE_TRAY, MODE_TRAY = MODE_NONE) /obj/item/clothing/glasses/meson/engine/tray/prescription @@ -151,6 +152,7 @@ icon_state = "trayson-shuttle" item_state = "trayson-shuttle" desc = "Used to see the boundaries of shuttle regions." + modes = list(MODE_NONE = MODE_SHUTTLE, MODE_SHUTTLE = MODE_NONE) #undef MODE_NONE diff --git a/code/modules/clothing/glasses/phantomthief.dm b/code/modules/clothing/glasses/phantomthief.dm index 96f5cfc201..f5a15f7900 100644 --- a/code/modules/clothing/glasses/phantomthief.dm +++ b/code/modules/clothing/glasses/phantomthief.dm @@ -26,7 +26,7 @@ /obj/item/clothing/glasses/phantomthief/syndicate/proc/injectadrenaline(mob/user, combatmodestate) if(istype(user) && combatmodestate && world.time >= nextadrenalinepop) nextadrenalinepop = world.time + 5 MINUTES - user.reagents.add_reagent(/datum/reagent/syndicateadrenals, 5) + user.reagents.add_reagent("syndicateadrenals", 5) user.playsound_local(user, 'sound/misc/adrenalinject.ogg', 100, 0, pressure_affected = FALSE) /obj/item/clothing/glasses/phantomthief/syndicate/equipped(mob/user, slot) diff --git a/code/modules/clothing/gloves/_gloves.dm b/code/modules/clothing/gloves/_gloves.dm index 87d9f359eb..ac491c2bc5 100644 --- a/code/modules/clothing/gloves/_gloves.dm +++ b/code/modules/clothing/gloves/_gloves.dm @@ -24,7 +24,7 @@ user.visible_message("\the [src] are forcing [user]'s hands around [user.p_their()] neck! It looks like the gloves are possessed!") return OXYLOSS -/obj/item/clothing/gloves/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) +/obj/item/clothing/gloves/worn_overlays(isinhands = FALSE) . = list() if(!isinhands) if(damaged_clothes) diff --git a/code/modules/clothing/head/_head.dm b/code/modules/clothing/head/_head.dm index a875561056..ec6db20cc4 100644 --- a/code/modules/clothing/head/_head.dm +++ b/code/modules/clothing/head/_head.dm @@ -8,6 +8,8 @@ var/blockTracking = 0 //For AI tracking var/can_toggle = null dynamic_hair_suffix = "+generic" + var/muzzle_var = NORMAL_STYLE + mutantrace_variation = NO_MUTANTRACE_VARIATION //not all hats have muzzles /obj/item/clothing/head/Initialize() . = ..() @@ -15,6 +17,30 @@ var/mob/living/carbon/human/H = loc H.update_hair() +/obj/item/clothing/head/equipped(mob/user, slot) + ..() + if(ishuman(user)) + var/mob/living/carbon/human/H = user + var/datum/species/pref_species = H.dna.species + + if(mutantrace_variation) + if("mam_snouts" in pref_species.default_features) + if(H.dna.features["mam_snouts"] != "None") + muzzle_var = ALT_STYLE + else + muzzle_var = NORMAL_STYLE + + else if("snout" in pref_species.default_features) + if(H.dna.features["snout"] != "None") + muzzle_var = ALT_STYLE + else + muzzle_var = NORMAL_STYLE + + else + muzzle_var = NORMAL_STYLE + + H.update_inv_head() + ///Special throw_impact for hats to frisbee hats at people to place them on their heads. /obj/item/clothing/head/throw_impact(atom/hit_atom, datum/thrownthing/thrownthing) . = ..() @@ -48,7 +74,7 @@ -/obj/item/clothing/head/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) +/obj/item/clothing/head/worn_overlays(isinhands = FALSE) . = list() if(!isinhands) if(damaged_clothes) diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 51822cab77..19f03dfd0a 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -91,7 +91,7 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT cold_protection = HEAD min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT - mutantrace_variation = STYLE_MUZZLE + mutantrace_variation = MUTANTRACE_VARIATION /obj/item/clothing/head/hardhat/weldhat name = "welding hard hat" @@ -125,7 +125,7 @@ playsound(src, 'sound/mecha/mechmove03.ogg', 50, TRUE) //Visors don't just come from nothing update_icon() -/obj/item/clothing/head/hardhat/weldhat/worn_overlays(isinhands, icon_file, style_flags = NONE) +/obj/item/clothing/head/hardhat/weldhat/worn_overlays(isinhands) . = ..() if(!isinhands) . += mutable_appearance('icons/mob/head.dmi', "weldhelmet") diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index c2992b7651..be6e270e45 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -76,7 +76,7 @@ flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH visor_flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH dog_fashion = null - mutantrace_variation = STYLE_MUZZLE + mutantrace_variation = MUTANTRACE_VARIATION /obj/item/clothing/head/helmet/attack_self(mob/user) if(can_toggle && !user.incapacitated()) @@ -217,7 +217,7 @@ flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH strip_delay = 80 dog_fashion = null - mutantrace_variation = STYLE_MUZZLE + mutantrace_variation = MUTANTRACE_VARIATION /obj/item/clothing/head/helmet/knight/Initialize(mapload) @@ -246,7 +246,7 @@ icon_state = "skull" item_state = "skull" strip_delay = 100 - mutantrace_variation = STYLE_MUZZLE + mutantrace_variation = MUTANTRACE_VARIATION //LightToggle @@ -337,28 +337,10 @@ var/datum/action/A = X A.UpdateButtonIcon() + /obj/item/clothing/head/helmet/durathread name = "makeshift helmet" desc = "A hardhat with strips of leather and durathread for additional blunt protection." icon_state = "durathread" item_state = "durathread" armor = list("melee" = 25, "bullet" = 10, "laser" = 20,"energy" = 10, "bomb" = 30, "bio" = 15, "rad" = 20, "fire" = 100, "acid" = 50) - -/obj/item/clothing/head/helmet/rus_helmet - name = "russian helmet" - desc = "It can hold a bottle of vodka." - icon_state = "rus_helmet" - item_state = "rus_helmet" - armor = list("melee" = 30, "bullet" = 25, "laser" = 20,"energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 20, "fire" = 30, "acid" = 50) - pocket_storage_component_path = /datum/component/storage/concrete/pockets/small/rushelmet - -/obj/item/clothing/head/helmet/rus_ushanka - name = "battle ushanka" - desc = "100% bear." - icon_state = "rus_ushanka" - item_state = "rus_ushanka" - clothing_flags = THICKMATERIAL - body_parts_covered = HEAD - cold_protection = HEAD - min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT - armor = list("melee" = 10, "bullet" = 5, "laser" = 5,"energy" = 5, "bomb" = 5, "bio" = 50, "rad" = 20, "fire" = -10, "acid" = 0) diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 4c6a0fa3b6..3fa5d56d1e 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -66,7 +66,7 @@ item_state = "syndicate-helm-black-red" desc = "A plastic replica of a Syndicate agent's space helmet. You'll look just like a real murderous Syndicate agent in this! This is a toy, it is not made for use in space!" flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT - mutantrace_variation = STYLE_MUZZLE + mutantrace_variation = MUTANTRACE_VARIATION /obj/item/clothing/head/cueball name = "cueball helmet" @@ -392,33 +392,3 @@ desc = "A green Christmas Hat! How festive!" icon_state = "christmashatg" item_state = "christmashatg" - -/obj/item/clothing/head/cowboyhat - name = "cowboy hat" - desc = "A standard brown cowboy hat, yeehaw." - icon_state = "cowboyhat" - item_state= "cowboyhat" - -/obj/item/clothing/head/cowboyhat/black - name = "black cowboy hat" - desc = "A a black cowboy hat, perfect for any outlaw" - icon_state = "cowboyhat_black" - item_state= "cowboyhat_black" - -/obj/item/clothing/head/cowboyhat/white - name = "white cowboy hat" - desc = "A white cowboy hat, perfect for your every day rancher" - icon_state = "cowboyhat_white" - item_state= "cowboyhat_white" - -/obj/item/clothing/head/cowboyhat/pink - name = "pink cowboy hat" - desc = "A pink cowboy? more like cowgirl hat, just don't be a buckle bunny." - icon_state = "cowboyhat_pink" - item_state= "cowboyhat_pink" - -/obj/item/clothing/head/cowboyhat/sec - name = "security cowboy hat" - desc = "A security cowboy hat, perfect for any true lawman" - icon_state = "cowboyhat_sec" - item_state= "cowboyhat_sec" \ No newline at end of file diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index a18d68cc72..127bf4c773 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -28,7 +28,7 @@ visor_flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE visor_flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH resistance_flags = FIRE_PROOF - mutantrace_variation = STYLE_MUZZLE + mutantrace_variation = MUTANTRACE_VARIATION /obj/item/clothing/head/welding/attack_self(mob/user) weldingvisortoggle(user) @@ -206,7 +206,7 @@ M.color = hair_color add_overlay(M) -/obj/item/clothing/head/wig/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) +/obj/item/clothing/head/wig/worn_overlays(isinhands = FALSE, file2use) . = list() if(!isinhands) var/datum/sprite_accessory/S = GLOB.hair_styles_list[hair_style] diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm index 3b2edce795..c00e6f72e0 100644 --- a/code/modules/clothing/masks/_masks.dm +++ b/code/modules/clothing/masks/_masks.dm @@ -8,6 +8,9 @@ var/modifies_speech = FALSE var/mask_adjusted = 0 var/adjusted_flags = null + var/muzzle_var = NORMAL_STYLE + mutantrace_variation = NO_MUTANTRACE_VARIATION //most masks have overrides, but not all probably. + /obj/item/clothing/mask/attack_self(mob/user) if(CHECK_BITFIELD(clothing_flags, VOICEBOX_TOGGLABLE)) @@ -21,6 +24,28 @@ RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech) else UnregisterSignal(M, COMSIG_MOB_SAY) + if(!ishuman(M)) + return + var/mob/living/carbon/human/H = M + var/datum/species/pref_species = H.dna.species + + if(mutantrace_variation) + if("mam_snouts" in pref_species.default_features) + if(H.dna.features["mam_snouts"] != "None") + muzzle_var = ALT_STYLE + else + muzzle_var = NORMAL_STYLE + + else if("snout" in pref_species.default_features) + if(H.dna.features["snout"] != "None") + muzzle_var = ALT_STYLE + else + muzzle_var = NORMAL_STYLE + + else + muzzle_var = NORMAL_STYLE + + H.update_inv_wear_mask() /obj/item/clothing/mask/dropped(mob/M) . = ..() @@ -28,7 +53,7 @@ /obj/item/clothing/mask/proc/handle_speech() -/obj/item/clothing/mask/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) +/obj/item/clothing/mask/worn_overlays(isinhands = FALSE) . = list() if(!isinhands) if(body_parts_covered & HEAD) diff --git a/code/modules/clothing/masks/boxing.dm b/code/modules/clothing/masks/boxing.dm index dc151cdd42..3960bdadeb 100644 --- a/code/modules/clothing/masks/boxing.dm +++ b/code/modules/clothing/masks/boxing.dm @@ -7,7 +7,7 @@ visor_flags_inv = HIDEFACE|HIDEFACIALHAIR w_class = WEIGHT_CLASS_SMALL actions_types = list(/datum/action/item_action/adjust) - mutantrace_variation = STYLE_MUZZLE + mutantrace_variation = MUTANTRACE_VARIATION /obj/item/clothing/mask/balaclava/attack_self(mob/user) adjustmask(user) @@ -19,7 +19,7 @@ item_state = "luchag" flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR w_class = WEIGHT_CLASS_SMALL - mutantrace_variation = STYLE_MUZZLE + mutantrace_variation = MUTANTRACE_VARIATION modifies_speech = TRUE /obj/item/clothing/mask/luchador/handle_speech(datum/source, list/speech_args) @@ -57,12 +57,3 @@ desc = "Worn by robust fighters who are willing to do anything to win." icon_state = "luchar" item_state = "luchar" - -/obj/item/clothing/mask/russian_balaclava - name = "russian balaclava" - desc = "Protects your face from snow." - icon_state = "rus_balaclava" - item_state = "rus_balaclava" - flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR - visor_flags_inv = HIDEFACE|HIDEFACIALHAIR - w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm index b979e2e526..f4335d17e8 100644 --- a/code/modules/clothing/masks/breath.dm +++ b/code/modules/clothing/masks/breath.dm @@ -13,7 +13,7 @@ flags_cover = MASKCOVERSMOUTH visor_flags_cover = MASKCOVERSMOUTH resistance_flags = NONE - mutantrace_variation = STYLE_MUZZLE + mutantrace_variation = MUTANTRACE_VARIATION /obj/item/clothing/mask/breath/suicide_act(mob/living/carbon/user) user.visible_message("[user] is wrapping \the [src]'s tube around [user.p_their()] neck! It looks like [user.p_theyre()] trying to commit suicide!") diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 5aedf7045d..c613d1a91e 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -10,7 +10,7 @@ permeability_coefficient = 0.01 flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH resistance_flags = NONE - mutantrace_variation = STYLE_MUZZLE + mutantrace_variation = MUTANTRACE_VARIATION /obj/item/clothing/mask/gas/glass name = "glass gas mask" diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 894ea2562f..4b8f16a77f 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -7,7 +7,7 @@ w_class = WEIGHT_CLASS_SMALL gas_transfer_coefficient = 0.9 equip_delay_other = 20 - mutantrace_variation = STYLE_MUZZLE + mutantrace_variation = MUTANTRACE_VARIATION /obj/item/clothing/mask/muzzle/attack_paw(mob/user) if(iscarbon(user)) @@ -31,7 +31,7 @@ permeability_coefficient = 0.01 armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 25, "rad" = 0, "fire" = 0, "acid" = 0) actions_types = list(/datum/action/item_action/adjust) - mutantrace_variation = STYLE_MUZZLE + mutantrace_variation = MUTANTRACE_VARIATION /obj/item/clothing/mask/surgical/attack_self(mob/user) adjustmask(user) @@ -41,7 +41,7 @@ desc = "Warning: moustache is fake." icon_state = "fake-moustache" flags_inv = HIDEFACE - mutantrace_variation = STYLE_MUZZLE + mutantrace_variation = MUTANTRACE_VARIATION /obj/item/clothing/mask/fakemoustache/italian name = "italian moustache" @@ -71,7 +71,7 @@ name = "joy mask" desc = "Express your happiness or hide your sorrows with this laughing face with crying tears of joy cutout." icon_state = "joy" - mutantrace_variation = STYLE_MUZZLE + mutantrace_variation = MUTANTRACE_VARIATION /obj/item/clothing/mask/pig name = "pig mask" @@ -242,7 +242,7 @@ slot_flags = ITEM_SLOT_MASK adjusted_flags = ITEM_SLOT_HEAD icon_state = "bandbotany" - mutantrace_variation = STYLE_MUZZLE + mutantrace_variation = MUTANTRACE_VARIATION /obj/item/clothing/mask/bandana/attack_self(mob/user) adjustmask(user) diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm index 9a46b6b759..e863dc8860 100644 --- a/code/modules/clothing/neck/_neck.dm +++ b/code/modules/clothing/neck/_neck.dm @@ -6,7 +6,7 @@ strip_delay = 40 equip_delay_other = 40 -/obj/item/clothing/neck/worn_overlays(isinhands = FALSE, icon_flag, style_flags = NONE) +/obj/item/clothing/neck/worn_overlays(isinhands = FALSE) . = list() if(!isinhands) if(body_parts_covered & HEAD) @@ -192,7 +192,7 @@ tagname = copytext(sanitize(input(user, "Would you like to change the name on the tag?", "Name your new pet", "Spot") as null|text),1,MAX_NAME_LEN) name = "[initial(name)] - [tagname]" -/obj/item/clothing/neck/petcollar/worn_overlays(isinhands, icon_file, style_flags = NONE) +/obj/item/clothing/neck/petcollar/worn_overlays(isinhands, icon_file) . = ..() if(hasprimary | hassecondary | hastertiary) if(!isinhands) //prevents the worn sprites from showing up if you're just holding them diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 4c8f9bdab2..29fd06dcaf 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -53,7 +53,7 @@ return var/obj/item/reagent_containers/glass/bucket/bucket = H.get_item_for_held_index(1) - bucket.reagents.add_reagent(/datum/reagent/water,70) + bucket.reagents.add_reagent("water",70) /datum/outfit/laser_tag name = "Laser Tag Red" diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index eaaf4b90ce..a8406e3b12 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -15,7 +15,9 @@ var/offset = 0 var/equipped_before_drop = FALSE - mutantrace_variation = STYLE_DIGITIGRADE + //CITADEL EDIT Enables digitigrade shoe styles + var/adjusted = NORMAL_STYLE + mutantrace_variation = MUTANTRACE_VARIATION var/last_bloodtype = "" //used to track the last bloodtype to have graced these shoes; makes for better performing footprint shenanigans var/last_blood_DNA = "" //same as last one @@ -49,7 +51,7 @@ last_bloodtype = blood_dna[blood_dna[blood_dna.len]]//trust me this works last_blood_DNA = blood_dna[blood_dna.len] -/obj/item/clothing/shoes/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) +/obj/item/clothing/shoes/worn_overlays(isinhands = FALSE) . = list() if(!isinhands) var/bloody = FALSE @@ -61,12 +63,23 @@ if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe") if(bloody) - var/file2use = style_flags & STYLE_DIGITIGRADE ? 'icons/mob/feet_digi.dmi' : 'icons/effects/blood.dmi' - . += mutable_appearance(file2use, "shoeblood", color = blood_DNA_to_color()) + if(adjusted == NORMAL_STYLE) + . += mutable_appearance('icons/effects/blood.dmi', "shoeblood", color = blood_DNA_to_color()) + else + . += mutable_appearance('icons/mob/feet_digi.dmi', "shoeblood", color = blood_DNA_to_color()) /obj/item/clothing/shoes/equipped(mob/user, slot) . = ..() + if(mutantrace_variation && ishuman(user)) + var/mob/living/carbon/human/H = user + if(DIGITIGRADE in H.dna.species.species_traits) + adjusted = ALT_STYLE + H.update_inv_shoes() + else if(adjusted == ALT_STYLE) + adjusted = NORMAL_STYLE + H.update_inv_shoes() + if(offset && slot_flags & slotdefine2slotbit(slot)) user.pixel_y += offset worn_y_dimension -= (offset * 2) diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index c0e566cc0e..3d318db761 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -89,12 +89,12 @@ /obj/item/clothing/shoes/clown_shoes/equipped(mob/user, slot) . = ..() - if(user.mind && HAS_TRAIT(user.mind, TRAIT_CLOWN_MENTALITY)) + if(user.mind && user.mind.assigned_role == "Clown") SEND_SIGNAL(user, COMSIG_CLEAR_MOOD_EVENT, "noshoes") /obj/item/clothing/shoes/clown_shoes/dropped(mob/user) . = ..() - if(user.mind && HAS_TRAIT(user.mind, TRAIT_CLOWN_MENTALITY)) + if(user.mind && user.mind.assigned_role == "Clown") SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "noshoes", /datum/mood_event/noshoes) /obj/item/clothing/shoes/clown_shoes/jester @@ -327,13 +327,6 @@ lightCycle = 0 active = FALSE -/obj/item/clothing/shoes/russian - name = "russian boots" - desc = "Comfy shoes." - icon_state = "rus_shoes" - item_state = "rus_shoes" - pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes - // kevin is into feet /obj/item/clothing/shoes/wraps name = "gilded leg wraps" @@ -354,14 +347,4 @@ /obj/item/clothing/shoes/wraps/blue name = "blue leg wraps" desc = "Ankle coverings. Hang ten, brother." - icon_state = "bluecuffs" - -/obj/item/clothing/shoes/cowboyboots - name = "cowboy boots" - desc = "A standard pair of brown cowboy boots." - icon_state = "cowboyboots" - -/obj/item/clothing/shoes/cowboyboots/black - name = "black cowboy boots" - desc = "A pair of black cowboy boots, pretty easy to scuff up." - icon_state = "cowboyboots_black" + icon_state = "bluecuffs" \ No newline at end of file diff --git a/code/modules/clothing/shoes/taeclowndo.dm b/code/modules/clothing/shoes/taeclowndo.dm index 7c891dbde4..f2bbdf0ceb 100644 --- a/code/modules/clothing/shoes/taeclowndo.dm +++ b/code/modules/clothing/shoes/taeclowndo.dm @@ -13,7 +13,7 @@ if(!ishuman(user)) return var/mob/living/carbon/human/H = user - if(!(HAS_TRAIT(H, TRAIT_CLUMSY)) && !(H.mind && HAS_TRAIT(H.mind, TRAIT_CLOWN_MENTALITY))) + if(!(HAS_TRAIT(H, TRAIT_CLUMSY)) && !(H.mind && H.mind.assigned_role == "Clown")) return if(slot == SLOT_SHOES) spells = new diff --git a/code/modules/clothing/shoes/vg_shoes.dm b/code/modules/clothing/shoes/vg_shoes.dm index 53b093dc72..627a061181 100644 --- a/code/modules/clothing/shoes/vg_shoes.dm +++ b/code/modules/clothing/shoes/vg_shoes.dm @@ -5,7 +5,7 @@ icon_state = "leather" item_color = "leather" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/shoes/magboots/deathsquad desc = "Very expensive and advanced magnetic boots, used only by the elite during extravehicular activity to ensure the user remains safely attached to the vehicle." @@ -14,7 +14,7 @@ magboot_state = "DS-magboots" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/shoes/magboots/atmos desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle. These are painted in the colors of an atmospheric technician." @@ -23,102 +23,102 @@ icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' magboot_state = "atmosmagboots" resistance_flags = FIRE_PROOF - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/shoes/simonshoes name = "Simon's Shoes" desc = "Simon's Shoes." icon_state = "simonshoes" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/shoes/kneesocks name = "kneesocks" desc = "A pair of girly knee-high socks." icon_state = "kneesock" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/shoes/jestershoes name = "Jester Shoes" desc = "As worn by the clowns of old." icon_state = "jestershoes" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/shoes/aviatorboots name = "Aviator Boots" desc = "Boots suitable for just about any occasion." icon_state = "aviator_boots" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/shoes/libertyshoes name = "Liberty Shoes" desc = "Freedom isn't free, neither were these shoes." icon_state = "libertyshoes" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/shoes/megaboots name = "DRN-001 Boots" desc = "Large armored boots, very weak to large spikes." icon_state = "megaboots" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/shoes/protoboots name = "Prototype Boots" desc = "Functionally identical to the DRN-001 model's boots, but in red." icon_state = "protoboots" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/shoes/megaxboots name = "Maverick Hunter boots" desc = "Regardless of how much stronger these boots are than the DRN-001 model's, they're still extremely easy to pierce with a large spike." icon_state = "megaxboots" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/shoes/joeboots name = "Sniper Boots" desc = "Nearly identical to the Prototype's boots, except in black." icon_state = "joeboots" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/shoes/doomguy name = "Doomguy's boots" desc = "If you look closely, you might see skull fragments still buried in these boots." icon_state = "doom" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/shoes/rottenshoes name = "rotten shoes" desc = "These shoes seem perfect for sneaking around." icon_state = "rottenshoes" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/shoes/sandal/slippers name = "magic slippers" icon_state = "slippers" desc = "For the wizard that puts comfort first. Who's going to laugh?" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/shoes/slippers_worn name = "worn bunny slippers" desc = "Fluffy..." icon_state = "slippers_worn" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/shoes/jackboots/neorussian name = "neo-Russian boots" desc = "Tovarish, no one will realize you stepped on a pile of shit if your pair already looks like shit." icon_state = "nr_boots" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NONE \ No newline at end of file + mutantrace_variation = NO_MUTANTRACE_VARIATION \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm index f49c26ce49..57866b5131 100644 --- a/code/modules/clothing/spacesuits/_spacesuits.dm +++ b/code/modules/clothing/spacesuits/_spacesuits.dm @@ -21,7 +21,7 @@ flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH resistance_flags = NONE dog_fashion = null - mutantrace_variation = STYLE_MUZZLE + mutantrace_variation = MUTANTRACE_VARIATION rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE /obj/item/clothing/suit/space @@ -46,4 +46,4 @@ equip_delay_other = 80 resistance_flags = NONE rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE //rated for cosmic radation :honk: - mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC + tauric = TRUE //Citadel Add for tauric hardsuits diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm index a8387c5ccc..5a53e2776a 100644 --- a/code/modules/clothing/spacesuits/chronosuit.dm +++ b/code/modules/clothing/spacesuits/chronosuit.dm @@ -26,7 +26,6 @@ actions_types = list(/datum/action/item_action/toggle) armor = list("melee" = 60, "bullet" = 60, "laser" = 60, "energy" = 60, "bomb" = 30, "bio" = 90, "rad" = 90, "fire" = 100, "acid" = 1000) resistance_flags = FIRE_PROOF | ACID_PROOF - mutantrace_variation = STYLE_DIGITIGRADE var/list/chronosafe_items = list(/obj/item/chrono_eraser, /obj/item/gun/energy/chrono_gun) var/obj/item/clothing/head/helmet/space/chronos/helmet = null var/obj/effect/chronos_cam/camera = null diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 984c19e202..9a5c919720 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -180,7 +180,7 @@ armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 75, "fire" = 100, "acid" = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine resistance_flags = FIRE_PROOF - mutantrace_variation = STYLE_DIGITIGRADE|STYLE_ALL_TAURIC + tauric = TRUE //Citadel Add for tauric hardsuits //Atmospherics /obj/item/clothing/head/helmet/space/hardsuit/engine/atmos @@ -202,6 +202,7 @@ heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/atmos + tauric = TRUE //Citadel Add for tauric hardsuits //Chief Engineer's hardsuit @@ -225,6 +226,7 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/elite jetpack = /obj/item/tank/jetpack/suit + tauric = TRUE //Citadel Add for tauric hardsuits //Mining hardsuit /obj/item/clothing/head/helmet/space/hardsuit/mining @@ -255,7 +257,7 @@ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/bag/ore, /obj/item/pickaxe) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/mining heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - mutantrace_variation = STYLE_DIGITIGRADE|STYLE_ALL_TAURIC + tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/suit/space/hardsuit/mining/Initialize() . = ..() @@ -351,7 +353,7 @@ allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi jetpack = /obj/item/tank/jetpack/suit - mutantrace_variation = STYLE_DIGITIGRADE|STYLE_ALL_TAURIC + tauric = TRUE //Citadel Add for tauric hardsuits //Elite Syndie suit /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite @@ -368,6 +370,7 @@ on = FALSE resistance_flags = FIRE_PROOF | ACID_PROOF + /obj/item/clothing/suit/space/hardsuit/syndi/elite name = "elite syndicate hardsuit" desc = "An elite version of the syndicate hardsuit, with improved armour and fireproofing. It is in travel mode." @@ -379,8 +382,7 @@ heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | ACID_PROOF - mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC - + tauric = TRUE //Citadel Add for tauric hardsuits //The Owl Hardsuit /obj/item/clothing/head/helmet/space/hardsuit/syndi/owl @@ -402,7 +404,6 @@ item_state = "s_suit" item_color = "owl" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/owl - mutantrace_variation = STYLE_DIGITIGRADE //Wizard hardsuit @@ -429,7 +430,6 @@ heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/wizard - mutantrace_variation = STYLE_DIGITIGRADE /obj/item/clothing/suit/space/hardsuit/wizard/Initialize() . = ..() @@ -455,7 +455,7 @@ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/firstaid, /obj/item/healthanalyzer, /obj/item/stack/medical) armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/medical - mutantrace_variation = STYLE_DIGITIGRADE|STYLE_ALL_TAURIC + tauric = TRUE //Citadel Add for tauric hardsuits //Research Director hardsuit /obj/item/clothing/head/helmet/space/hardsuit/rd @@ -497,6 +497,7 @@ /obj/item/hand_tele, /obj/item/aicard) armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 100, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 80) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/rd + tauric = TRUE //Citadel Add for tauric hardsuits //Security hardsuit /obj/item/clothing/head/helmet/space/hardsuit/security @@ -514,7 +515,7 @@ item_state = "sec_hardsuit" armor = list("melee" = 35, "bullet" = 15, "laser" = 30, "energy" = 10, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security - mutantrace_variation = STYLE_DIGITIGRADE|STYLE_ALL_TAURIC + tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/suit/space/hardsuit/security/Initialize() . = ..() @@ -535,6 +536,7 @@ armor = list("melee" = 45, "bullet" = 25, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 100, "rad" = 50, "fire" = 95, "acid" = 95) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/hos jetpack = /obj/item/tank/jetpack/suit + tauric = TRUE //Citadel Add for tauric hardsuits //Captain /obj/item/clothing/head/helmet/space/hardsuit/captain @@ -562,6 +564,7 @@ heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT //this needed to be added a long fucking time ago helmettype = /obj/item/clothing/head/helmet/space/hardsuit/captain + tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/suit/space/hardsuit/captain/Initialize() . = ..() @@ -583,12 +586,12 @@ item_state = "clown_hardsuit" armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 75, "fire" = 60, "acid" = 30) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/clown - mutantrace_variation = STYLE_DIGITIGRADE /obj/item/clothing/suit/space/hardsuit/clown/mob_can_equip(mob/M, slot) if(!..() || !ishuman(M)) return FALSE - if(M.mind && HAS_TRAIT(M.mind, TRAIT_CLOWN_MENTALITY)) + var/mob/living/carbon/human/H = M + if(H.mind.assigned_role == "Clown") return TRUE else return FALSE @@ -612,7 +615,6 @@ slowdown = 3 helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ancient resistance_flags = FIRE_PROOF - mutantrace_variation = STYLE_DIGITIGRADE var/footstep = 1 var/mob/listeningTo @@ -626,9 +628,7 @@ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage, /obj/item/construction/rcd, /obj/item/pipe_dispenser) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ancient/mason max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT - clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | IMMUTABLE_SLOW resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF - flags_1 = TESLA_IGNORE_1 /obj/item/clothing/head/helmet/space/hardsuit/ancient/mason name = "M.A.S.O.N RIG helmet" @@ -638,13 +638,12 @@ armor = list("melee" = 20, "bullet" = 15, "laser" = 15, "energy" = 45, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) item_color = "ancient" brightness_on = 16 + clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT | ALLOWINTERNALS | SCAN_REAGENTS flash_protect = 5 //We will not be flash by bombs tint = 1 var/obj/machinery/doppler_array/integrated/bomb_radar max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT - clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT | ALLOWINTERNALS | SCAN_REAGENTS resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF - flags_1 = TESLA_IGNORE_1 /obj/item/clothing/head/helmet/space/hardsuit/ancient/mason/Initialize() . = ..() @@ -711,6 +710,7 @@ var/recharge_rate = 1 //How quickly the shield recharges once it starts charging var/shield_state = "shield-old" var/shield_on = "shield-old" + tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/suit/space/hardsuit/shielded/Initialize() . = ..() @@ -750,11 +750,13 @@ var/mob/living/carbon/human/C = loc C.update_inv_wear_suit() -/obj/item/clothing/suit/space/hardsuit/shielded/worn_overlays(isinhands, icon_file, style_flags = NONE) - . = ..() +/obj/item/clothing/suit/space/hardsuit/shielded/worn_overlays(isinhands) + . = list() if(!isinhands) - var/file2use = style_flags & STYLE_ALL_TAURIC ? 'modular_citadel/icons/mob/64x32_effects.dmi' : 'icons/effects/effects.dmi' - . += mutable_appearance(file2use, shield_state, MOB_LAYER + 0.01) + if(taurmode >= SNEK_TAURIC) + . += mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', shield_state, MOB_LAYER + 0.01) + else + . += mutable_appearance('icons/effects/effects.dmi', shield_state, MOB_LAYER + 0.01) /obj/item/clothing/head/helmet/space/hardsuit/shielded resistance_flags = FIRE_PROOF | ACID_PROOF @@ -824,7 +826,7 @@ allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi slowdown = 0 - mutantrace_variation = STYLE_DIGITIGRADE|STYLE_ALL_TAURIC + tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/suit/space/hardsuit/shielded/syndi/Initialize() jetpack = new /obj/item/tank/jetpack/suit(src) @@ -853,6 +855,7 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/swat dog_fashion = /datum/dog_fashion/back/deathsquad + tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/head/helmet/space/hardsuit/shielded/swat name = "death commando helmet" @@ -883,7 +886,7 @@ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator) var/energy_color = "#35FFF0" var/obj/item/clothing/suit/space/hardsuit/lavaknight/linkedsuit = null - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/head/helmet/space/hardsuit/lavaknight/Initialize() . = ..() @@ -913,7 +916,7 @@ add_overlay(helm_overlay) -/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) +/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/worn_overlays(isinhands = FALSE, icon_file) . = ..() if(!isinhands) var/mutable_appearance/energy_overlay = mutable_appearance(icon_file, "knight_cydonia_overlay", ABOVE_LIGHTING_LAYER) @@ -932,6 +935,8 @@ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/bag/ore, /obj/item/pickaxe) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/lavaknight heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS + tauric = TRUE //Citadel Add for tauric hardsuits + var/energy_color = "#35FFF0" /obj/item/clothing/suit/space/hardsuit/lavaknight/Initialize() @@ -950,7 +955,7 @@ add_overlay(suit_overlay) -/obj/item/clothing/suit/space/hardsuit/lavaknight/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) +/obj/item/clothing/suit/space/hardsuit/lavaknight/worn_overlays(isinhands = FALSE, icon_file) . = ..() if(!isinhands) var/mutable_appearance/energy_overlay = mutable_appearance(icon_file, "knight_cydonia_overlay", ABOVE_LIGHTING_LAYER) diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index b9b51e5d1c..88e17d158c 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -53,7 +53,6 @@ Contains: armor = list("melee" = 40, "bullet" = 30, "laser" = 30,"energy" = 30, "bomb" = 50, "bio" = 90, "rad" = 20, "fire" = 100, "acid" = 100) strip_delay = 120 resistance_flags = FIRE_PROOF | ACID_PROOF - mutantrace_variation = STYLE_DIGITIGRADE /obj/item/clothing/head/helmet/space/beret name = "officer's beret" @@ -66,7 +65,7 @@ Contains: strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | ACID_PROOF - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/space/officer name = "officer's jacket" @@ -82,7 +81,6 @@ Contains: strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | ACID_PROOF - mutantrace_variation = STYLE_DIGITIGRADE //NASA Voidsuit /obj/item/clothing/head/helmet/space/nasavoid @@ -97,7 +95,6 @@ Contains: item_state = "void" desc = "An old, NASA CentCom branch designed, dark red space suit." allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/multitool) - mutantrace_variation = STYLE_DIGITIGRADE /obj/item/clothing/head/helmet/space/nasavoid/old name = "Engineering Void Helmet" @@ -119,7 +116,7 @@ Contains: desc = "Ho ho ho. Merrry X-mas!" icon_state = "santahat" flags_cover = HEADCOVERSEYES - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION dog_fashion = /datum/dog_fashion/head/santa @@ -130,7 +127,6 @@ Contains: item_state = "santa" slowdown = 0 allowed = list(/obj/item) //for stuffing exta special presents - mutantrace_variation = STYLE_DIGITIGRADE //Space pirate outfit @@ -144,14 +140,14 @@ Contains: strip_delay = 40 equip_delay_other = 20 flags_cover = HEADCOVERSEYES - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/head/helmet/space/pirate/bandana name = "royal bandana" desc = "A space-proof bandanna crafted with reflective kevlar." icon_state = "bandana" item_state = "bandana" - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/space/pirate name = "royal waistcoat " @@ -165,7 +161,6 @@ Contains: armor = list("melee" = 30, "bullet" = 50, "laser" = 30,"energy" = 15, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 60, "acid" = 75) strip_delay = 40 equip_delay_other = 20 - mutantrace_variation = STYLE_DIGITIGRADE //Emergency Response Team suits /obj/item/clothing/head/helmet/space/hardsuit/ert @@ -194,6 +189,7 @@ Contains: slowdown = 0 strip_delay = 130 resistance_flags = ACID_PROOF + tauric = TRUE //Citadel Add for tauric hardsuits //ERT Security /obj/item/clothing/head/helmet/space/hardsuit/ert/sec @@ -255,7 +251,6 @@ Contains: helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/alert armor = list("melee" = 70, "bullet" = 55, "laser" = 50, "energy" = 50, "bomb" = 65, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) resistance_flags = FIRE_PROOF | ACID_PROOF - mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC //ERT Security /obj/item/clothing/head/helmet/space/hardsuit/ert/alert/sec @@ -303,6 +298,7 @@ Contains: item_state = "s_suit" desc = "A lightweight space suit with the basic ability to protect the wearer from the vacuum of space during emergencies." armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 65) + tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/head/helmet/space/eva name = "EVA helmet" @@ -321,7 +317,7 @@ Contains: strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = ACID_PROOF | FIRE_PROOF - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/space/freedom name = "eagle suit" @@ -334,7 +330,6 @@ Contains: max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = ACID_PROOF | FIRE_PROOF slowdown = 0 - mutantrace_variation = STYLE_DIGITIGRADE //Carpsuit, bestsuit, lovesuit /obj/item/clothing/head/helmet/space/hardsuit/carp @@ -345,7 +340,7 @@ Contains: armor = list("melee" = -20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 75, "fire" = 60, "acid" = 75) //As whimpy as a space carp brightness_on = 0 //luminosity when on actions_types = list() - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/head/helmet/space/hardsuit/carp/Initialize() . = ..() @@ -361,7 +356,6 @@ Contains: armor = list("melee" = -20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 75, "fire" = 60, "acid" = 75) //As whimpy whimpy whoo allowed = list(/obj/item/tank/internals, /obj/item/gun/ballistic/automatic/speargun) //I'm giving you a hint here helmettype = /obj/item/clothing/head/helmet/space/hardsuit/carp - mutantrace_variation = STYLE_DIGITIGRADE /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal name = "paranormal response unit helmet" @@ -372,7 +366,7 @@ Contains: max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT actions_types = list() resistance_flags = FIRE_PROOF - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/space/hardsuit/ert/paranormal/Initialize() . = ..() @@ -386,6 +380,7 @@ Contains: helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF + tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/suit/space/hardsuit/ert/paranormal/Initialize() . = ..() @@ -432,6 +427,7 @@ Contains: slowdown = 2 armor = list("melee" = 5, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 10, "fire" = 0, "acid" = 0) strip_delay = 65 + tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/suit/space/fragile/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) if(!torn && prob(50)) diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index fee8dbce33..7c829e7570 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -12,6 +12,7 @@ var/next_extinguish = 0 var/extinguish_cooldown = 100 var/extinguishes_left = 10 + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/space/eva/plasmaman/examine(mob/user) . = ..() @@ -46,7 +47,7 @@ var/on = FALSE var/light_overlay = "envirohelm-light" actions_types = list(/datum/action/item_action/toggle_helmet_light) - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/head/helmet/space/plasmaman/attack_self(mob/user) if(!light_overlay) @@ -67,7 +68,7 @@ var/datum/action/A=X A.UpdateButtonIcon() -/obj/item/clothing/head/helmet/space/plasmaman/worn_overlays(isinhands, icon_file, style_flags = NONE) +/obj/item/clothing/head/helmet/space/plasmaman/worn_overlays(isinhands, icon_file) . = ..() if(!isinhands && on) . += mutable_appearance(icon_file, light_overlay) diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm index 178e707125..e6710ee8f9 100644 --- a/code/modules/clothing/spacesuits/syndi.dm +++ b/code/modules/clothing/spacesuits/syndi.dm @@ -14,7 +14,7 @@ w_class = WEIGHT_CLASS_NORMAL allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) armor = list("melee" = 40, "bullet" = 50, "laser" = 30,"energy" = 15, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 80, "acid" = 85) - mutantrace_variation = STYLE_DIGITIGRADE + //Green syndicate space suit /obj/item/clothing/head/helmet/space/syndicate/green @@ -50,7 +50,6 @@ name = "orange space suit" icon_state = "syndicate-orange" item_state = "syndicate-orange" - mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC //Blue syndicate space suit /obj/item/clothing/head/helmet/space/syndicate/blue @@ -110,6 +109,7 @@ name = "green space suit" icon_state = "syndicate-black-med" item_state = "syndicate-black" + tauric = TRUE //Citadel Add for tauric hardsuits //Black-orange syndicate space suit @@ -134,7 +134,6 @@ name = "black and red space suit" icon_state = "syndicate-black-red" item_state = "syndicate-black-red" - mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC //Black with yellow/red engineering syndicate space suit diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index d05afc15e0..faec9e2f4c 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -9,16 +9,56 @@ var/blood_overlay_type = "suit" var/togglename = null var/suittoggled = FALSE - mutantrace_variation = STYLE_DIGITIGRADE -/obj/item/clothing/suit/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) - . = ..() + var/adjusted = NORMAL_STYLE + mutantrace_variation = MUTANTRACE_VARIATION + var/tauric = FALSE //Citadel Add for tauric hardsuits + var/taurmode = NOT_TAURIC + var/dimension_x = 32 + var/dimension_y = 32 + var/center = FALSE //Should we center the sprite? + +/obj/item/clothing/suit/equipped(mob/user, slot) + ..() + if(ishuman(user)) + var/mob/living/carbon/human/H = user + + if(mutantrace_variation) + if(DIGITIGRADE in H.dna.species.species_traits) + adjusted = ALT_STYLE + H.update_inv_wear_suit() + else if(adjusted == ALT_STYLE) + adjusted = NORMAL_STYLE + + if(("taur" in H.dna.species.mutant_bodyparts) && (H.dna.features["taur"] != "None")) + if(H.dna.features["taur"] in GLOB.noodle_taurs) + taurmode = SNEK_TAURIC + if(tauric == TRUE) + center = TRUE + dimension_x = 64 + else if(H.dna.features["taur"] in GLOB.paw_taurs) + taurmode = PAW_TAURIC + if(tauric == TRUE) + center = TRUE + dimension_x = 64 + else + taurmode = NOT_TAURIC + if(tauric == TRUE) + center = FALSE + dimension_x = 32 + H.update_inv_wear_suit() + + +/obj/item/clothing/suit/worn_overlays(isinhands = FALSE) + . = list() if(!isinhands) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damaged[blood_overlay_type]") if(blood_DNA) - var/file2use = (style_flags & STYLE_ALL_TAURIC) ? 'modular_citadel/icons/mob/64x32_effects.dmi' : 'icons/effects/blood.dmi' - . += mutable_appearance(file2use, "[blood_overlay_type]blood", color = blood_DNA_to_color()) + if(tauric && taurmode >= SNEK_TAURIC) + . += mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "[blood_overlay_type]blood", color = blood_DNA_to_color()) + else + . += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood", color = blood_DNA_to_color()) var/mob/living/carbon/human/M = loc if(ishuman(M) && M.w_uniform) var/obj/item/clothing/under/U = M.w_uniform diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index e536d307ef..19050dc36f 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -248,20 +248,3 @@ max_integrity = 200 resistance_flags = FLAMMABLE armor = list("melee" = 20, "bullet" = 10, "laser" = 30, "energy" = 5, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50) - -/obj/item/clothing/suit/armor/vest/russian - name = "russian vest" - desc = "A bulletproof vest with forest camo. Good thing there's plenty of forests to hide in around here, right?" - icon_state = "rus_armor" - item_state = "rus_armor" - armor = list("melee" = 25, "bullet" = 30, "laser" = 0, "energy" = 15, "bomb" = 10, "bio" = 0, "rad" = 20, "fire" = 20, "acid" = 50) -/obj/item/clothing/suit/armor/vest/russian_coat - name = "russian battle coat" - desc = "Used in extremly cold fronts, made out of real bears." - icon_state = "rus_coat" - item_state = "rus_coat" - clothing_flags = THICKMATERIAL - body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT - armor = list("melee" = 25, "bullet" = 20, "laser" = 20, "energy" = 10, "bomb" = 20, "bio" = 50, "rad" = 20, "fire" = -10, "acid" = 50) diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index 5729daa741..5d0a9b9914 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -9,7 +9,7 @@ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDEFACE|HIDESNOUT resistance_flags = ACID_PROOF flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH - mutantrace_variation = STYLE_MUZZLE + mutantrace_variation = MUTANTRACE_VARIATION /obj/item/clothing/suit/bio_suit name = "bio suit" @@ -28,7 +28,7 @@ strip_delay = 70 equip_delay_other = 70 resistance_flags = ACID_PROOF - mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC + tauric = TRUE //Citadel Add for tauric hardsuits //Standard biosuit, orange stripe /obj/item/clothing/head/bio_hood/general diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 816f0edeba..4318839845 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -207,7 +207,7 @@ item_state = "techpriest" body_parts_covered = CHEST|GROIN|LEGS|ARMS hoodtype = /obj/item/clothing/head/hooded/techpriest - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/head/hooded/techpriest name = "techpriest's hood" @@ -216,4 +216,4 @@ item_state = "techpriesthood" body_parts_covered = HEAD flags_inv = HIDEHAIR|HIDEEARS - mutantrace_variation = STYLE_MUZZLE + mutantrace_variation = MUTANTRACE_VARIATION diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 4862512468..4e155cd341 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -864,7 +864,7 @@ blood_overlay_type = "armor" body_parts_covered = CHEST resistance_flags = NONE - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 5, "bio" = 0, "rad" = 0, "fire" = -5, "acid" = -15) //nylon sucks against acid /obj/item/clothing/suit/assu_suit diff --git a/code/modules/clothing/suits/toggles.dm b/code/modules/clothing/suits/toggles.dm index 79b221a807..559d3006a1 100644 --- a/code/modules/clothing/suits/toggles.dm +++ b/code/modules/clothing/suits/toggles.dm @@ -179,7 +179,8 @@ RemoveHelmet() /obj/item/clothing/suit/space/hardsuit/proc/ToggleHelmet() - var/mob/living/carbon/human/H = loc + var/mob/living/carbon/human/H = src.loc + var/datum/species/pref_species = H.dna.species if(!helmettype) return if(!helmet) @@ -193,6 +194,18 @@ to_chat(H, "You're already wearing something on your head!") return else if(H.equip_to_slot_if_possible(helmet,SLOT_HEAD,0,0,1)) + if(helmet.mutantrace_variation) + if("mam_snouts" in pref_species.default_features) + if(H.dna.features["mam_snouts"] != "None") + helmet.muzzle_var = ALT_STYLE + + else if("snout" in pref_species.default_features) + if(H.dna.features["snout"] != "None") + helmet.muzzle_var = ALT_STYLE + else + helmet.muzzle_var = NORMAL_STYLE + H.update_inv_head() + to_chat(H, "You engage the helmet on the hardsuit.") suittoggled = TRUE H.update_inv_wear_suit() diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index a6c272e550..fbdca6ddbc 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -21,7 +21,7 @@ allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/extinguisher, /obj/item/crowbar) slowdown = 1 armor = list("melee" = 15, "bullet" = 5, "laser" = 20, "energy" = 10, "bomb" = 20, "bio" = 10, "rad" = 20, "fire" = 100, "acid" = 50) - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAUR clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT @@ -30,12 +30,11 @@ strip_delay = 60 equip_delay_other = 60 resistance_flags = FIRE_PROOF + tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/suit/fire/firefighter icon_state = "firesuit" item_state = "firefighter" - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAUR - mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC /obj/item/clothing/suit/fire/heavy @@ -51,8 +50,6 @@ icon_state = "atmos_firesuit" item_state = "firesuit_atmos" max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAUR - mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC /* * Bomb protection @@ -74,7 +71,7 @@ equip_delay_other = 70 flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH resistance_flags = NONE - mutantrace_variation = STYLE_MUZZLE + mutantrace_variation = MUTANTRACE_VARIATION /obj/item/clothing/suit/bomb_suit @@ -97,7 +94,7 @@ strip_delay = 70 equip_delay_other = 70 resistance_flags = NONE - mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC + tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/head/bomb_hood/security @@ -134,7 +131,7 @@ flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH resistance_flags = NONE rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE - mutantrace_variation = STYLE_MUZZLE + mutantrace_variation = MUTANTRACE_VARIATION /obj/item/clothing/suit/radiation name = "radiation suit" @@ -154,4 +151,4 @@ flags_inv = HIDEJUMPSUIT|HIDETAUR resistance_flags = NONE rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE - mutantrace_variation = STYLE_DIGITIGRADE|STYLE_ALL_TAURIC + tauric = TRUE //Citadel Add for tauric hardsuits diff --git a/code/modules/clothing/suits/vg_suits.dm b/code/modules/clothing/suits/vg_suits.dm index be6cd9938e..08fe029f9e 100644 --- a/code/modules/clothing/suits/vg_suits.dm +++ b/code/modules/clothing/suits/vg_suits.dm @@ -9,7 +9,7 @@ siemens_coefficient = 0.5 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/armor/xcomsquaddie/dredd name = "Judge Armor" @@ -18,7 +18,7 @@ item_state = "dredd-suit" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/armor/xcomarmor @@ -32,7 +32,7 @@ siemens_coefficient = 0.5 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/armor/vest/neorussian name = "neo-Russian vest" @@ -41,7 +41,7 @@ item_state = "nr_vest" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/armor/doomguy name = "Doomguy's armor" @@ -53,7 +53,7 @@ armor = list(melee = 50, bullet = 30, laser = 20, energy = 20, bomb = 30, bio = 0, rad = 0) icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/kaminacape @@ -63,7 +63,7 @@ body_parts_covered = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/officercoat name = "Officer's Coat" @@ -71,7 +71,7 @@ icon_state = "officersuit" body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/soldiercoat name = "Soldier's Coat" @@ -79,7 +79,7 @@ icon_state = "soldiersuit" body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/russofurcoat name = "russian fur coat" @@ -89,7 +89,7 @@ body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/doshjacket name = "Plasterer's Jacket" @@ -98,7 +98,7 @@ body_parts_covered = CHEST|GROIN|ARMS icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/maidapron name = "Apron" @@ -107,7 +107,7 @@ body_parts_covered = CHEST|GROIN icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/clownpiece name = "small fairy wings" @@ -116,7 +116,7 @@ body_parts_covered = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/clownpiece/flying name = "small fairy wings" @@ -124,7 +124,7 @@ icon_state = "clownpiece-fly" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/raincoat name = "Raincoat" @@ -133,6 +133,6 @@ body_parts_covered =CHEST|GROIN|LEGS|ARMS|HANDS icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index 0322613c11..bb5f909521 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -11,12 +11,13 @@ var/sensor_mode = NO_SENSORS var/can_adjust = TRUE var/adjusted = NORMAL_STYLE + var/suit_style = NORMAL_SUIT_STYLE var/alt_covers_chest = FALSE // for adjusted/rolled-down jumpsuits, FALSE = exposes chest and arms, TRUE = exposes arms only var/obj/item/clothing/accessory/attached_accessory var/mutable_appearance/accessory_overlay - mutantrace_variation = STYLE_DIGITIGRADE + mutantrace_variation = MUTANTRACE_VARIATION //Are there special sprites for specific situations? Don't use this unless you need to. -/obj/item/clothing/under/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) +/obj/item/clothing/under/worn_overlays(isinhands = FALSE) . = list() if(!isinhands) if(damaged_clothes) @@ -48,6 +49,8 @@ if(random_sensor) //make the sensor mode favor higher levels, except coords. sensor_mode = pick(SENSOR_OFF, SENSOR_LIVING, SENSOR_LIVING, SENSOR_VITALS, SENSOR_VITALS, SENSOR_VITALS, SENSOR_COORDS, SENSOR_COORDS) + adjusted = NORMAL_STYLE + suit_style = NORMAL_SUIT_STYLE ..() /obj/item/clothing/under/equipped(mob/user, slot) @@ -58,6 +61,14 @@ if(!alt_covers_chest) body_parts_covered |= CHEST + if(mutantrace_variation && ishuman(user)) + var/mob/living/carbon/human/H = user + if(DIGITIGRADE in H.dna.species.species_traits) + suit_style = DIGITIGRADE_SUIT_STYLE + else + suit_style = NORMAL_SUIT_STYLE + H.update_inv_w_uniform() + if(attached_accessory && slot != SLOT_HANDS && ishuman(user)) var/mob/living/carbon/human/H = user attached_accessory.on_uniform_equip(src, user) diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm index e42049ef6b..c6796d64c9 100644 --- a/code/modules/clothing/under/jobs/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian.dm @@ -69,6 +69,7 @@ item_state = "lb_suit" item_color = "cargo" body_parts_covered = CHEST|GROIN|ARMS + mutantrace_variation = MUTANTRACE_VARIATION alt_covers_chest = TRUE /obj/item/clothing/under/rank/cargotech/skirt @@ -131,7 +132,7 @@ item_color = "blueclown" fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/rank/greenclown name = "green clown suit" @@ -141,7 +142,7 @@ item_color = "greenclown" fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/rank/yellowclown name = "yellow clown suit" @@ -151,7 +152,7 @@ item_color = "yellowclown" fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/rank/purpleclown name = "purple clown suit" @@ -161,7 +162,7 @@ item_color = "purpleclown" fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/rank/orangeclown name = "orange clown suit" @@ -171,7 +172,7 @@ item_color = "orangeclown" fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/rank/rainbowclown name = "rainbow clown suit" @@ -181,7 +182,7 @@ item_color = "rainbowclown" fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/rank/clown/Initialize() . = ..() diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 06aa5aeb0c..58df911412 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -467,33 +467,6 @@ fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE -/obj/item/clothing/under/sundresswhite - name = "white sundress" - desc = "Makes you want to frolic in a field of lillies." - icon_state = "sundress_white" - item_color = "sundress_white" - body_parts_covered = CHEST|GROIN - fitted = FEMALE_UNIFORM_TOP - can_adjust = FALSE - -/obj/item/clothing/under/greendress - name = "green dress" - desc = "A tight green dress" - icon_state = "dress_green" - item_color = "dress_green" - body_parts_covered = CHEST|GROIN - fitted = FEMALE_UNIFORM_TOP - can_adjust = FALSE - -/obj/item/clothing/under/pinkdress - name = "pink dress" - desc = "A tight pink dress" - icon_state = "dress_pink" - item_color = "dress_pink" - body_parts_covered = CHEST|GROIN - fitted = FEMALE_UNIFORM_TOP - can_adjust = FALSE - /obj/item/clothing/under/captainparade name = "captain's parade uniform" desc = "A captain's luxury-wear, for special occasions." @@ -536,24 +509,6 @@ fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE -/obj/item/clothing/under/westernbustle - name = "western bustle dress" - desc = "Filled with Western fire." - icon_state = "western_bustle" - item_state = "wcoat" - item_color = "western_bustle" - fitted = FEMALE_UNIFORM_TOP - can_adjust = FALSE - -/obj/item/clothing/under/flamenco - name = "flamenco dress" - desc = "Filled with Latin fire." - icon_state = "flamenco" - item_state = "wcoat" - item_color = "flamenco" - fitted = FEMALE_UNIFORM_TOP - can_adjust = FALSE - /obj/item/clothing/under/stripeddress name = "striped dress" desc = "Fashion in space." @@ -574,44 +529,6 @@ fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE -/obj/item/clothing/under/flowerdress - name = "flower dress" - desc = "Lovely dress" - icon_state = "flower_dress" - item_state = "sailordress" - item_color = "flower_dress" - body_parts_covered = CHEST|GROIN - fitted = FEMALE_UNIFORM_TOP - can_adjust = FALSE - -/obj/item/clothing/under/sweptskirt - name = "swept skirt" - desc = "Formal skirt" - icon_state = "skirt_swept" - item_color = "skirt_swept" - body_parts_covered = GROIN - fitted = FEMALE_UNIFORM_TOP - can_adjust = FALSE - -/obj/item/clothing/under/corset - name = "black corset" - desc = "Nanotrasen is not resposible for any organ damage" - icon_state = "corset" - item_color = "corset" - body_parts_covered = CHEST|GROIN - fitted = FEMALE_UNIFORM_TOP - can_adjust = FALSE - -/obj/item/clothing/under/croptop - name = "crop top" - desc = "We've saved money by giving you half a shirt!" - icon_state = "sailor_dress" - item_state = "sailordress" - item_color = "sailor_dress" - body_parts_covered = CHEST|GROIN|ARMS - fitted = FEMALE_UNIFORM_TOP - can_adjust = FALSE - /obj/item/clothing/under/redeveninggown name = "red evening gown" desc = "Fancy dress for space bar singers." @@ -750,7 +667,7 @@ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 0, "fire" = 95, "acid" = 95) slowdown = 1 body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION can_adjust = FALSE strip_delay = 80 var/next_extinguish = 0 diff --git a/code/modules/clothing/under/pants.dm b/code/modules/clothing/under/pants.dm index 97bb4c48bc..05616337db 100644 --- a/code/modules/clothing/under/pants.dm +++ b/code/modules/clothing/under/pants.dm @@ -75,34 +75,3 @@ desc = "A pair of woodland camouflage pants. Probably not the best choice for a space station." icon_state = "camopants" item_color = "camopants" - -/obj/item/clothing/under/pants/jeanripped - name = "ripped jeans" - desc = "If you're wearing this you're poor or a rebel" - icon_state = "jean_ripped" - item_color = "jean_ripped" - -/obj/item/clothing/under/pants/jeanshort - name = "jean shorts" - desc = "These are really just jeans cut in half" - icon_state = "jean_shorts" - item_color = "jean_shorts" - -/obj/item/clothing/under/pants/denimskirt - name = "denim skirt" - desc = "These are really just a jean leg hole cut from a pair" - icon_state = "denim_skirt" - item_color = "denim_skirt" - -/obj/item/clothing/under/pants/chaps - name = "black chaps" - body_parts_covered = LEGS - desc = "Yeehaw" - icon_state = "chaps" - item_color = "chaps" - -/obj/item/clothing/under/pants/yoga - name = "yoga pants" - desc = "Comfy!" - icon_state = "yoga_pants" - item_color = "yoga_pants" diff --git a/code/modules/clothing/under/polychromic_clothes.dm b/code/modules/clothing/under/polychromic_clothes.dm index 53011d42d1..9649d93eed 100644 --- a/code/modules/clothing/under/polychromic_clothes.dm +++ b/code/modules/clothing/under/polychromic_clothes.dm @@ -25,9 +25,9 @@ secondary_color = "#FFFFFF" tertiary_color = "#808080" can_adjust = FALSE - mutantrace_variation = NONE //Not all clothes are currently digi-compatible (only the shorts are as of time of writing) + mutantrace_variation = NO_MUTANTRACE_VARIATION //Not all clothes are currently digi-compatible (only the shorts are as of time of writing) -/obj/item/clothing/under/polychromic/worn_overlays(isinhands, icon_file, style_flags = NONE) //this is where the main magic happens. +/obj/item/clothing/under/polychromic/worn_overlays(isinhands, icon_file) //this is where the main magic happens. . = ..() if(hasprimary | hassecondary | hastertiary) if(!isinhands) //prevents the worn sprites from showing up if you're just holding them @@ -86,7 +86,7 @@ secondary_color = "#808080" tertiary_color = "#808080" body_parts_covered = CHEST|GROIN|ARMS - mutantrace_variation = STYLE_DIGITIGRADE //to enable digitigrade wearing + mutantrace_variation = MUTANTRACE_VARIATION //to enable digitigrade wearing /obj/item/clothing/under/polychromic/jumpsuit name = "polychromic tri-tone jumpsuit" diff --git a/code/modules/clothing/under/shorts.dm b/code/modules/clothing/under/shorts.dm index a615081f24..67ef30f0cc 100644 --- a/code/modules/clothing/under/shorts.dm +++ b/code/modules/clothing/under/shorts.dm @@ -4,6 +4,7 @@ gender = PLURAL body_parts_covered = GROIN fitted = NO_FEMALE_UNIFORM + mutantrace_variation = MUTANTRACE_VARIATION can_adjust = FALSE /obj/item/clothing/under/shorts/red diff --git a/code/modules/clothing/under/syndicate.dm b/code/modules/clothing/under/syndicate.dm index 69db08d19d..4e3e1aa0cc 100644 --- a/code/modules/clothing/under/syndicate.dm +++ b/code/modules/clothing/under/syndicate.dm @@ -68,18 +68,9 @@ item_color = "syndicate_combat" can_adjust = FALSE -/obj/item/clothing/under/syndicate/rus_army - name = "advanced military tracksuit" - desc = "Military grade tracksuits for frontline squatting." - icon_state = "rus_under" - item_color = "rus_under" - can_adjust = FALSE - armor = list("melee" = 5, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) - resistance_flags = NONE - /obj/item/clothing/under/syndicate/baseball name = "major league, number unknown" - desc = "A major league outfit with the number faded number on the back. Seems rather robust for just a game..." + desc = "A major league outfit with the number faded number on the back. Seems rather robust for just a game" icon_state = "syndicatebaseball" item_state = "syndicatebaseball" item_color = "syndicatebaseball" diff --git a/code/modules/clothing/under/vg_under.dm b/code/modules/clothing/under/vg_under.dm index 555ed3b795..f416f2ecc5 100644 --- a/code/modules/clothing/under/vg_under.dm +++ b/code/modules/clothing/under/vg_under.dm @@ -9,7 +9,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/stripper_green name = "green stripper outfit" @@ -19,7 +19,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/wedding/bride_orange name = "orange wedding dress" @@ -30,7 +30,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/wedding/bride_purple name = "purple wedding dress" @@ -41,7 +41,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/wedding/bride_blue name = "blue wedding dress" @@ -52,7 +52,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/wedding/bride_red name = "red wedding dress" @@ -63,7 +63,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/wedding/bride_white name = "white wedding dress" @@ -74,7 +74,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/mankini name = "pink mankini" @@ -84,7 +84,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /* /obj/item/clothing/under/psysuit @@ -129,7 +129,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/russobluecamooutfit name = "russian blue camo" @@ -140,7 +140,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/stilsuit name = "stillsuit" @@ -151,7 +151,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/aviatoruniform name = "aviator uniform" @@ -162,7 +162,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/bikersuit name = "biker's outfit" @@ -172,7 +172,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/jacketsuit name = "richard's outfit" @@ -183,7 +183,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION obj/item/clothing/under/mega name = "\improper DRN-001 suit" @@ -194,7 +194,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/proto name = "The Prototype Suit" @@ -205,7 +205,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/megax name = "\improper Maverick Hunter regalia" @@ -216,7 +216,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/joe name = "The Sniper Suit" @@ -227,7 +227,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/roll name = "\improper DRN-002 Dress" @@ -238,7 +238,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/gokugidown name = "turtle hermit undershirt" @@ -249,7 +249,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/gokugi name = "turtle hermit outfit" @@ -260,7 +260,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/doomguy name = "\improper Doomguy's pants" @@ -271,7 +271,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/vault13 name = "vault 13 Jumpsuit" @@ -282,7 +282,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/vault name = "vault jumpsuit" @@ -293,7 +293,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/clownpiece name = "Clownpiece's Pierrot suit" @@ -304,7 +304,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/cia name = "casual IAA outfit" @@ -315,7 +315,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/greaser name = "greaser outfit" @@ -325,7 +325,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/greaser/New() var/greaser_colour = "default" @@ -344,7 +344,7 @@ obj/item/clothing/under/mega item_color = "greaser_[greaser_colour]" can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/wintercasualwear @@ -356,7 +356,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/casualwear name = "spring casualwear" @@ -367,7 +367,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/keyholesweater name = "keyhole sweater" @@ -378,7 +378,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/casualhoodie name = "casual hoodie" @@ -389,7 +389,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/casualhoodie/skirt icon_state = "hoodieskirt" @@ -397,7 +397,7 @@ obj/item/clothing/under/mega item_color = "hoodieskirt" can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /* /obj/item/clothing/under/mummy_rags @@ -432,5 +432,5 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION diff --git a/code/modules/crafting/recipes/recipes_misc.dm b/code/modules/crafting/recipes/recipes_misc.dm index 38ae3560e5..70dd4d1370 100644 --- a/code/modules/crafting/recipes/recipes_misc.dm +++ b/code/modules/crafting/recipes/recipes_misc.dm @@ -358,11 +358,3 @@ time = 100 category = CAT_MISC always_availible = FALSE // Disabled til learned - -/datum/crafting_recipe/coconut_bong - name = "Coconut Bong" - result = /obj/item/bong/coconut - reqs = list(/obj/item/stack/sheet/mineral/bamboo = 2, - /obj/item/reagent_containers/food/snacks/grown/coconut = 1) - time = 70 - category = CAT_MISC \ No newline at end of file diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index 00e3698e1e..07a399a1b6 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -37,8 +37,6 @@ continue if(!H.client) continue - if(HAS_TRAIT(H,TRAIT_EXEMPT_HEALTH_EVENTS)) - continue if(H.stat == DEAD) continue if(HAS_TRAIT(H, TRAIT_VIRUSIMMUNE)) //Don't pick someone who's virus immune, only for it to not do anything. diff --git a/code/modules/events/heart_attack.dm b/code/modules/events/heart_attack.dm index a47a8b81b4..8db2d98bf0 100644 --- a/code/modules/events/heart_attack.dm +++ b/code/modules/events/heart_attack.dm @@ -9,7 +9,7 @@ /datum/round_event/heart_attack/start() var/list/heart_attack_contestants = list() for(var/mob/living/carbon/human/H in shuffle(GLOB.player_list)) - if(!H.client || H.stat == DEAD || H.InCritical() || !H.can_heartattack() || H.has_status_effect(STATUS_EFFECT_EXERCISED) || (/datum/disease/heart_failure in H.diseases) || H.undergoing_cardiac_arrest() || HAS_TRAIT(H,TRAIT_EXEMPT_HEALTH_EVENTS)) + if(!H.client || H.stat == DEAD || H.InCritical() || !H.can_heartattack() || H.has_status_effect(STATUS_EFFECT_EXERCISED) || (/datum/disease/heart_failure in H.diseases) || H.undergoing_cardiac_arrest()) continue if(H.satiety <= -60) //Multiple junk food items recently heart_attack_contestants[H] = 3 diff --git a/code/modules/events/holiday/vday.dm b/code/modules/events/holiday/vday.dm index 13c516960a..0f1a7452df 100644 --- a/code/modules/events/holiday/vday.dm +++ b/code/modules/events/holiday/vday.dm @@ -157,7 +157,7 @@ icon = 'icons/obj/holiday_misc.dmi' icon_state = "candyheart" desc = "A heart-shaped candy that reads: " - list_reagents = list(/datum/reagent/consumable/sugar = 2) + list_reagents = list("sugar" = 2) junkiness = 5 /obj/item/reagent_containers/food/snacks/candyheart/New() diff --git a/code/modules/events/holiday/xmas.dm b/code/modules/events/holiday/xmas.dm index ea63ee611f..65d96ad150 100644 --- a/code/modules/events/holiday/xmas.dm +++ b/code/modules/events/holiday/xmas.dm @@ -75,7 +75,7 @@ /datum/round_event/santa/start() var/list/candidates = pollGhostCandidates("Santa is coming to town! Do you want to be Santa?", poll_time=150) if(LAZYLEN(candidates)) - var/mob/C = pick(candidates) + var/mob/dead/observer/C = pick(candidates) santa = new /mob/living/carbon/human(pick(GLOB.blobstart)) C.transfer_ckey(santa, FALSE) diff --git a/code/modules/events/mass_hallucination.dm b/code/modules/events/mass_hallucination.dm index 0553f69b5b..2b0c16ebfc 100644 --- a/code/modules/events/mass_hallucination.dm +++ b/code/modules/events/mass_hallucination.dm @@ -35,6 +35,4 @@ /datum/hallucination/delusion, /datum/hallucination/oh_yeah) for(var/mob/living/carbon/C in GLOB.alive_mob_list) - if (HAS_TRAIT(C,TRAIT_EXEMPT_HEALTH_EVENTS)) - continue new picked_hallucination(C, TRUE) \ No newline at end of file diff --git a/code/modules/events/spontaneous_appendicitis.dm b/code/modules/events/spontaneous_appendicitis.dm index 8ee943beb9..901337cd52 100644 --- a/code/modules/events/spontaneous_appendicitis.dm +++ b/code/modules/events/spontaneous_appendicitis.dm @@ -15,8 +15,6 @@ continue if(H.stat == DEAD) continue - if (HAS_TRAIT(H,TRAIT_EXEMPT_HEALTH_EVENTS)) - continue if(!H.getorgan(/obj/item/organ/appendix)) //Don't give the disease to some who lacks it, only for it to be auto-cured continue if(!(MOB_ORGANIC in H.mob_biotypes)) //biotype sleeper bugs strike again, once again making appendicitis pick a target that can't take it diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index 9075f693db..79487a024c 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -15,46 +15,48 @@ var/randomProbability = 1 var/reagentsAmount = 100 var/list/saferChems = list( - /datum/reagent/water, - /datum/reagent/carbon, - /datum/reagent/consumable/flour, - /datum/reagent/space_cleaner, - /datum/reagent/consumable/nutriment, - /datum/reagent/consumable/condensedcapsaicin, - /datum/reagent/drug/mushroomhallucinogen, - /datum/reagent/lube, - /datum/reagent/glitter/pink, - /datum/reagent/cryptobiolin, - /datum/reagent/toxin/plantbgone, - /datum/reagent/blood, - /datum/reagent/medicine/charcoal, - /datum/reagent/drug/space_drugs, - /datum/reagent/medicine/morphine, - /datum/reagent/water/holywater, - /datum/reagent/consumable/ethanol, - /datum/reagent/consumable/hot_coco, - /datum/reagent/toxin/acid, - /datum/reagent/toxin/mindbreaker, - /datum/reagent/toxin/rotatium, - /datum/reagent/bluespace, - /datum/reagent/pax, - /datum/reagent/consumable/laughter, - /datum/reagent/concentrated_barbers_aid, - /datum/reagent/colorful_reagent, - /datum/reagent/peaceborg_confuse, - /datum/reagent/peaceborg_tire, - /datum/reagent/consumable/sodiumchloride, - /datum/reagent/consumable/ethanol/beer, - /datum/reagent/hair_dye, - /datum/reagent/consumable/sugar, - /datum/reagent/glitter/white, - /datum/reagent/growthserum, - /datum/reagent/consumable/cornoil, - /datum/reagent/uranium, - /datum/reagent/carpet, - /datum/reagent/firefighting_foam, - /datum/reagent/consumable/tearjuice, - /datum/reagent/medicine/strange_reagent + "water", + "carbon", + "flour", + "cleaner", + "nutriment", + "condensedcapsaicin", + "mushroomhallucinogen", + "lube", + "pink_glitter", + "cryptobiolin", + "plantbgone", + "blood", + "charcoal", + "space_drugs", + "morphine", + "holywater", + "ethanol", + "hot_coco", + "sacid", + "mindbreaker", + "rotatium", + "bluespace", + "pax", + "laughter", + "concentrated_barbers_aid", + "colorful_reagent", + "dizzysolution", + "tiresolution", + "sodiumchloride", + "beer", + "hair_dye", + "sugar", + "white_glitter", + "growthserum", + "cornoil", + "uranium", + "carpet", + "firefighting_foam", + "semen", + "femcum", + "tearjuice", + "strange_reagent" ) //needs to be chemid unit checked at some point @@ -163,7 +165,7 @@ if(vent && vent.loc && !vent.welded) var/datum/reagents/R = new/datum/reagents(1000) R.my_atom = vent - R.add_reagent(/datum/reagent/consumable/ethanol/beer, reagentsAmount) + R.add_reagent("beer", reagentsAmount) var/datum/effect_system/foam_spread/foam = new foam.set_up(200, get_turf(vent), R) @@ -178,7 +180,7 @@ if(vent && vent.loc && !vent.welded) var/datum/reagents/R = new/datum/reagents(1000) R.my_atom = vent - R.add_reagent(/datum/reagent/consumable/semen, reagentsAmount) + R.add_reagent("semen", reagentsAmount) var/datum/effect_system/foam_spread/foam = new foam.set_up(200, get_turf(vent), R) @@ -193,7 +195,7 @@ if(vent && vent.loc && !vent.welded) var/datum/reagents/R = new/datum/reagents(1000) R.my_atom = vent - R.add_reagent(/datum/reagent/consumable/femcum, reagentsAmount) + R.add_reagent("femcum", reagentsAmount) var/datum/effect_system/foam_spread/foam = new foam.set_up(200, get_turf(vent), R) diff --git a/code/modules/events/wizard/invincible.dm b/code/modules/events/wizard/invincible.dm index 6ba9b44ee1..209bdd26c1 100644 --- a/code/modules/events/wizard/invincible.dm +++ b/code/modules/events/wizard/invincible.dm @@ -8,5 +8,5 @@ /datum/round_event/wizard/invincible/start() for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) - H.reagents.add_reagent(/datum/reagent/medicine/adminordrazine, 40) //100 ticks of absolute invinciblity (barring gibs) + H.reagents.add_reagent("adminordrazine", 40) //100 ticks of absolute invinciblity (barring gibs) to_chat(H, "You feel invincible, nothing can hurt you!") \ No newline at end of file diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 7111ae416b..92f412dd89 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -194,7 +194,7 @@ name = "robust coffee" desc = "Careful, the beverage you're about to enjoy is extremely hot." icon_state = "coffee" - list_reagents = list(/datum/reagent/consumable/coffee = 30) + list_reagents = list("coffee" = 30) spillable = TRUE resistance_flags = FREEZE_PROOF isGlass = FALSE @@ -211,7 +211,7 @@ name = "ice cup" desc = "Careful, cold ice, do not chew." icon_state = "coffee" - list_reagents = list(/datum/reagent/consumable/ice = 30) + list_reagents = list("ice" = 30) spillable = TRUE isGlass = FALSE @@ -231,12 +231,12 @@ /obj/item/reagent_containers/food/drinks/mug/tea name = "Duke Purple tea" desc = "An insult to Duke Purple is an insult to the Space Queen! Any proper gentleman will fight you, if you sully this tea." - list_reagents = list(/datum/reagent/consumable/tea = 30) + list_reagents = list("tea" = 30) /obj/item/reagent_containers/food/drinks/mug/coco name = "Dutch hot coco" desc = "Made in Space South America." - list_reagents = list(/datum/reagent/consumable/hot_coco = 30, /datum/reagent/consumable/sugar = 5) + list_reagents = list("hot_coco" = 30, "sugar" = 5) foodtype = SUGAR resistance_flags = FREEZE_PROOF @@ -244,7 +244,7 @@ name = "cup ramen" desc = "Just add 10ml of water, self heats! A taste that reminds you of your school years." icon_state = "ramen" - list_reagents = list(/datum/reagent/consumable/dry_ramen = 30) + list_reagents = list("dry_ramen" = 30) foodtype = GRAIN isGlass = FALSE @@ -252,20 +252,20 @@ name = "space beer" desc = "Beer. In space." icon_state = "beer" - list_reagents = list(/datum/reagent/consumable/ethanol/beer = 30) + list_reagents = list("beer" = 30) foodtype = GRAIN | ALCOHOL /obj/item/reagent_containers/food/drinks/beer/light name = "Carp Lite" desc = "Brewed with \"Pure Ice Asteroid Spring Water\"." - list_reagents = list(/datum/reagent/consumable/ethanol/beer/light = 30) + list_reagents = list("light_beer" = 30) /obj/item/reagent_containers/food/drinks/ale name = "Magm-Ale" desc = "A true dorf's drink of choice." icon_state = "alebottle" item_state = "beer" - list_reagents = list(/datum/reagent/consumable/ethanol/ale = 30) + list_reagents = list("ale" = 30) foodtype = GRAIN | ALCOHOL /obj/item/reagent_containers/food/drinks/sillycup @@ -382,7 +382,7 @@ name = "detective's flask" desc = "The detective's only true friend." icon_state = "detflask" - list_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 30) + list_reagents = list("whiskey" = 30) /obj/item/reagent_containers/food/drinks/britcup name = "cup" @@ -431,26 +431,27 @@ name = "Space Cola" desc = "Cola. in space." icon_state = "cola" - list_reagents = list(/datum/reagent/consumable/space_cola = 30) + list_reagents = list("cola" = 30) foodtype = SUGAR /obj/item/reagent_containers/food/drinks/soda_cans/tonic name = "T-Borg's tonic water" desc = "Quinine tastes funny, but at least it'll keep that Space Malaria away." icon_state = "tonic" - list_reagents = list(/datum/reagent/consumable/tonic = 50) + list_reagents = list("tonic" = 50) + foodtype = ALCOHOL /obj/item/reagent_containers/food/drinks/soda_cans/sodawater name = "soda water" desc = "A can of soda water. Why not make a scotch and soda?" icon_state = "sodawater" - list_reagents = list(/datum/reagent/consumable/sodawater = 50) + list_reagents = list("sodawater" = 50) /obj/item/reagent_containers/food/drinks/soda_cans/lemon_lime name = "orange soda" desc = "You wanted ORANGE. It gave you Lemon Lime." icon_state = "lemon-lime" - list_reagents = list(/datum/reagent/consumable/lemon_lime = 30) + list_reagents = list("lemon_lime" = 30) foodtype = FRUIT /obj/item/reagent_containers/food/drinks/soda_cans/lemon_lime/Initialize() @@ -461,73 +462,73 @@ name = "Space-Up!" desc = "Tastes like a hull breach in your mouth." icon_state = "space-up" - list_reagents = list(/datum/reagent/consumable/space_up = 30) + list_reagents = list("space_up" = 30) foodtype = SUGAR | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/starkist name = "Star-kist" desc = "The taste of a star in liquid form. And, a bit of tuna...?" icon_state = "starkist" - list_reagents = list(/datum/reagent/consumable/space_cola = 15, /datum/reagent/consumable/orangejuice = 15) + list_reagents = list("cola" = 15, "orangejuice" = 15) foodtype = SUGAR | FRUIT | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/space_mountain_wind name = "Space Mountain Wind" desc = "Blows right through you like a space wind." icon_state = "space_mountain_wind" - list_reagents = list(/datum/reagent/consumable/spacemountainwind = 30) + list_reagents = list("spacemountainwind" = 30) foodtype = SUGAR | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/thirteenloko name = "Thirteen Loko" desc = "The CMO has advised crew members that consumption of Thirteen Loko may result in seizures, blindness, drunkenness, or even death. Please Drink Responsibly." icon_state = "thirteen_loko" - list_reagents = list(/datum/reagent/consumable/ethanol/thirteenloko = 30) + list_reagents = list("thirteenloko" = 30) foodtype = SUGAR | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb name = "Dr. Gibb" desc = "A delicious mixture of 42 different flavors." icon_state = "dr_gibb" - list_reagents = list(/datum/reagent/consumable/dr_gibb = 30) + list_reagents = list("dr_gibb" = 30) foodtype = SUGAR | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/pwr_game name = "Pwr Game" desc = "The only drink with the PWR that true gamers crave." icon_state = "purple_can" - list_reagents = list(/datum/reagent/consumable/pwr_game = 30) + list_reagents = list("pwr_game" = 30) /obj/item/reagent_containers/food/drinks/soda_cans/shamblers name = "Shambler's juice" desc = "~Shake me up some of that Shambler's Juice!~" icon_state = "shamblers" - list_reagents = list(/datum/reagent/consumable/shamblers = 30) + list_reagents = list("shamblers" = 30) foodtype = SUGAR | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/buzz_fuzz name = "Buzz Fuzz" desc = "The sister drink of Shambler's Juice! Uses real honey, making it a sweet tooth's dream drink. The slogan reads ''A Hive of Flavour'', there's also a label about how it is adddicting." icon_state = "honeysoda_can" - list_reagents = list(/datum/reagent/consumable/buzz_fuzz = 25, /datum/reagent/consumable/honey = 5) + list_reagents = list("buzz_fuzz" = 25, "honey" = 5) foodtype = SUGAR | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/grey_bull name = "Grey Bull" desc = "Grey Bull, it gives you gloves!" icon_state = "energy_drink" - list_reagents = list(/datum/reagent/consumable/grey_bull = 20) + list_reagents = list("grey_bull" = 20) foodtype = SUGAR | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/air name = "canned air" desc = "There is no air shortage. Do not drink." icon_state = "air" - list_reagents = list(/datum/reagent/nitrogen = 24, /datum/reagent/oxygen = 6) + list_reagents = list("nitrogen" = 24, "oxygen" = 6) /obj/item/reagent_containers/food/drinks/soda_cans/monkey_energy name = "Monkey Energy" desc = "Unleash the ape!" icon_state = "monkey_energy" - list_reagents = list(/datum/reagent/consumable/monkey_energy = 50) + list_reagents = list("monkey_energy" = 50) foodtype = SUGAR | JUNKFOOD diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index 757af11b62..271ff93b15 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -131,87 +131,88 @@ name = "Griffeater gin" desc = "A bottle of high quality gin, produced in the New London Space Station." icon_state = "ginbottle" - list_reagents = list(/datum/reagent/consumable/ethanol/gin = 100) + list_reagents = list("gin" = 100) /obj/item/reagent_containers/food/drinks/bottle/gin/empty - list_reagents = null + list_reagents = list("gin" = 0) /obj/item/reagent_containers/food/drinks/bottle/whiskey name = "Uncle Git's special reserve" desc = "A premium single-malt whiskey, gently matured inside the tunnels of a nuclear shelter. TUNNEL WHISKEY RULES." icon_state = "whiskeybottle" - list_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 100) + list_reagents = list("whiskey" = 100) /obj/item/reagent_containers/food/drinks/bottle/whiskey/empty - list_reagents = null + list_reagents = list("whiskey" = 0) /obj/item/reagent_containers/food/drinks/bottle/vodka name = "Tunguska triple distilled" desc = "Aah, vodka. Prime choice of drink AND fuel by Russians worldwide." icon_state = "vodkabottle" - list_reagents = list(/datum/reagent/consumable/ethanol/vodka = 100) + list_reagents = list("vodka" = 100) /obj/item/reagent_containers/food/drinks/bottle/vodka/empty - list_reagents = null + list_reagents = list("vodka" = 0) /obj/item/reagent_containers/food/drinks/bottle/vodka/badminka name = "Badminka vodka" desc = "The label's written in Cyrillic. All you can make out is the name and a word that looks vaguely like 'Vodka'." icon_state = "badminka" + list_reagents = list("vodka" = 100) /obj/item/reagent_containers/food/drinks/bottle/tequila name = "Caccavo guaranteed quality tequila" desc = "Made from premium petroleum distillates, pure thalidomide and other fine quality ingredients!" icon_state = "tequilabottle" - list_reagents = list(/datum/reagent/consumable/ethanol/tequila = 100) + list_reagents = list("tequila" = 100) /obj/item/reagent_containers/food/drinks/bottle/tequila/empty - list_reagents = null + list_reagents = list("tequila" = 0) /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing name = "bottle of nothing" desc = "A bottle filled with nothing." icon_state = "bottleofnothing" - list_reagents = list(/datum/reagent/consumable/nothing = 100) + list_reagents = list("nothing" = 100) foodtype = NONE /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing/empty - list_reagents = null + list_reagents = list("nothing" = 0) /obj/item/reagent_containers/food/drinks/bottle/patron name = "Wrapp Artiste Patron" desc = "Silver laced tequila, served in space night clubs across the galaxy." icon_state = "patronbottle" - list_reagents = list(/datum/reagent/consumable/ethanol/patron = 100) + list_reagents = list("patron" = 100) /obj/item/reagent_containers/food/drinks/bottle/patron/empty - list_reagents = null + list_reagents = list("patron" = 0) /obj/item/reagent_containers/food/drinks/bottle/rum name = "Captain Pete's Cuban spiced rum" desc = "This isn't just rum, oh no. It's practically GRIFF in a bottle." icon_state = "rumbottle" - list_reagents = list(/datum/reagent/consumable/ethanol/rum = 100) + list_reagents = list("rum" = 100) /obj/item/reagent_containers/food/drinks/bottle/rum/empty - list_reagents = null + list_reagents = list("rum" = 0) /obj/item/reagent_containers/food/drinks/bottle/holywater name = "flask of holy water" desc = "A flask of the chaplain's holy water." icon_state = "holyflask" - list_reagents = list(/datum/reagent/water/holywater = 100) + list_reagents = list("holywater" = 100) foodtype = NONE /obj/item/reagent_containers/food/drinks/bottle/holywater/hell desc = "A flask of holy water...it's been sitting in the Necropolis a while though." - list_reagents = list(/datum/reagent/hellwater = 100) + list_reagents = list("hell_water" = 100) /obj/item/reagent_containers/food/drinks/bottle/holyoil name = "flask of zelus oil" desc = "A brass flask of Zelus oil, a viscous fluid scenting of brass. Can be thrown to deal damage from afar." icon_state = "zelusflask" - list_reagents = list(/datum/reagent/fuel/holyoil = 30) + list_reagents = list("holyoil" = 30) volume = 30 foodtype = NONE force = 18 @@ -219,63 +220,63 @@ knockdown_duration = 18 /obj/item/reagent_containers/food/drinks/bottle/holyoil/empty - list_reagents = null + list_reagents = list("holyoil" = 0) /obj/item/reagent_containers/food/drinks/bottle/vermouth name = "Goldeneye vermouth" desc = "Sweet, sweet dryness~" icon_state = "vermouthbottle" - list_reagents = list(/datum/reagent/consumable/ethanol/vermouth = 100) + list_reagents = list("vermouth" = 100) /obj/item/reagent_containers/food/drinks/bottle/vermouth/empty - list_reagents = null + list_reagents = list("vermouth" = 0) /obj/item/reagent_containers/food/drinks/bottle/kahlua name = "Robert Robust's coffee liqueur" desc = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936, HONK." icon_state = "kahluabottle" - list_reagents = list(/datum/reagent/consumable/ethanol/kahlua = 100) + list_reagents = list("kahlua" = 100) foodtype = VEGETABLES /obj/item/reagent_containers/food/drinks/bottle/kahlua/empty - list_reagents = null + list_reagents = list("kahlua" = 0) /obj/item/reagent_containers/food/drinks/bottle/goldschlager name = "College Girl goldschlager" desc = "Because they are the only ones who will drink 100 proof cinnamon schnapps." icon_state = "goldschlagerbottle" - list_reagents = list(/datum/reagent/consumable/ethanol/goldschlager = 100) + list_reagents = list("goldschlager" = 100) /obj/item/reagent_containers/food/drinks/bottle/goldschlager/empty - list_reagents = null + list_reagents = list("goldschlager" = 0) /obj/item/reagent_containers/food/drinks/bottle/cognac name = "Chateau de Baton premium cognac" desc = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing. You might as well not scream 'SHITCURITY' this time." icon_state = "cognacbottle" - list_reagents = list(/datum/reagent/consumable/ethanol/cognac = 100) + list_reagents = list("cognac" = 100) /obj/item/reagent_containers/food/drinks/bottle/cognac/empty - list_reagents = null + list_reagents = list("cognac" = 0) /obj/item/reagent_containers/food/drinks/bottle/wine name = "Doublebeard's bearded special wine" desc = "A faint aura of unease and asspainery surrounds the bottle." icon_state = "winebottle" - list_reagents = list(/datum/reagent/consumable/ethanol/wine = 100) + list_reagents = list("wine" = 100) foodtype = FRUIT | ALCOHOL /obj/item/reagent_containers/food/drinks/bottle/wine/empty - list_reagents = null + list_reagents = list("wine" = 0) /obj/item/reagent_containers/food/drinks/bottle/absinthe name = "extra-strong absinthe" desc = "An strong alcoholic drink brewed and distributed by" icon_state = "absinthebottle" - list_reagents = list(/datum/reagent/consumable/ethanol/absinthe = 100) + list_reagents = list("absinthe" = 100) /obj/item/reagent_containers/food/drinks/bottle/absinthe/empty - list_reagents = null + list_reagents = list("absinthe" = 0) /obj/item/reagent_containers/food/drinks/bottle/absinthe/Initialize() . = ..() @@ -328,7 +329,7 @@ name = "bottle of lizard wine" desc = "An alcoholic beverage from Space China, made by infusing lizard tails in ethanol. Inexplicably popular among command staff." icon_state = "lizardwine" - list_reagents = list(/datum/reagent/consumable/ethanol/lizardwine = 100) + list_reagents = list("lizardwine" = 100) foodtype = FRUIT | ALCOHOL /obj/item/reagent_containers/food/drinks/bottle/hcider @@ -336,28 +337,28 @@ desc = "Apple juice for adults." icon_state = "hcider" volume = 50 - list_reagents = list(/datum/reagent/consumable/ethanol/hcider = 50) + list_reagents = list("hcider" = 50) /obj/item/reagent_containers/food/drinks/bottle/hcider/empty - list_reagents = null + list_reagents = list("hcider" = 0) /obj/item/reagent_containers/food/drinks/bottle/grappa name = "Phillipes well-aged Grappa" desc = "Bottle of Grappa." icon_state = "grappabottle" - list_reagents = list(/datum/reagent/consumable/ethanol/grappa = 100) + list_reagents = list("grappa" = 100) /obj/item/reagent_containers/food/drinks/bottle/grappa/empty - list_reagents = null + list_reagents = list("grappa" = 0) /obj/item/reagent_containers/food/drinks/bottle/sake name = "Ryo's traditional sake" desc = "Sweet as can be, and burns like fire going down." icon_state = "sakebottle" - list_reagents = list(/datum/reagent/consumable/ethanol/sake = 100) + list_reagents = list("sake" = 100) /obj/item/reagent_containers/food/drinks/bottle/sake/empty - list_reagents = null + list_reagents = list("sake" = 0) /obj/item/reagent_containers/food/drinks/bottle/sake/Initialize() . = ..() @@ -374,48 +375,48 @@ name = "Fernet Bronca" desc = "A bottle of pure Fernet Bronca, produced in Cordoba Space Station" icon_state = "fernetbottle" - list_reagents = list(/datum/reagent/consumable/ethanol/fernet = 100) + list_reagents = list("fernet" = 100) /obj/item/reagent_containers/food/drinks/bottle/fernet/empty - list_reagents = null + list_reagents = list("fernet" = 0) /obj/item/reagent_containers/food/drinks/bottle/applejack name = "Buckin' Bronco's Applejack" desc = "Kicks like a horse, tastes like an apple!" icon_state = "applejack_bottle" - list_reagents = list(/datum/reagent/consumable/ethanol/applejack = 100) + list_reagents = list("applejack" = 100) foodtype = FRUIT /obj/item/reagent_containers/food/drinks/bottle/applejack/empty - list_reagents = null + list_reagents = list("applejack" = 0) /obj/item/reagent_containers/food/drinks/bottle/champagne name = "Eau d' Dandy Brut Champagne" desc = "Finely sourced from only the most pretentious French vineyards." icon_state = "champagne_bottle" - list_reagents = list(/datum/reagent/consumable/ethanol/champagne = 100) + list_reagents = list("champagne" = 100) /obj/item/reagent_containers/food/drinks/bottle/champagne/empty - list_reagents = null + list_reagents = list("champagne" = 0) /obj/item/reagent_containers/food/drinks/bottle/blazaam name = "Ginbad's Blazaam" desc = "You feel like you should give the bottle a good rub before opening." icon_state = "blazaambottle" - list_reagents = list(/datum/reagent/consumable/ethanol/blazaam = 100) + list_reagents = list("blazaam" = 100) /obj/item/reagent_containers/food/drinks/bottle/blazaam/empty - list_reagents = null + list_reagents = list("blazaam" = 0) /obj/item/reagent_containers/food/drinks/bottle/trappist name = "Mont de Requin Trappistes Bleu" desc = "Brewed in space-Belgium. Fancy!" icon_state = "trappistbottle" volume = 50 - list_reagents = list(/datum/reagent/consumable/ethanol/trappist = 50) + list_reagents = list("trappist" = 50) /obj/item/reagent_containers/food/drinks/bottle/trappist/empty - list_reagents = null + list_reagents = list("trappist" = 0) //////////////////////////JUICES AND STUFF /////////////////////// @@ -427,7 +428,7 @@ lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' isGlass = FALSE - list_reagents = list(/datum/reagent/consumable/orangejuice = 100) + list_reagents = list("orangejuice" = 100) foodtype = FRUIT| BREAKFAST /obj/item/reagent_containers/food/drinks/bottle/cream @@ -438,7 +439,7 @@ lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' isGlass = FALSE - list_reagents = list(/datum/reagent/consumable/cream = 100) + list_reagents = list("cream" = 100) foodtype = DAIRY /obj/item/reagent_containers/food/drinks/bottle/tomatojuice @@ -449,7 +450,7 @@ lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' isGlass = FALSE - list_reagents = list(/datum/reagent/consumable/tomatojuice = 100) + list_reagents = list("tomatojuice" = 100) foodtype = VEGETABLES /obj/item/reagent_containers/food/drinks/bottle/limejuice @@ -460,7 +461,7 @@ lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' isGlass = FALSE - list_reagents = list(/datum/reagent/consumable/limejuice = 100) + list_reagents = list("limejuice" = 100) foodtype = FRUIT /obj/item/reagent_containers/food/drinks/bottle/menthol @@ -471,18 +472,18 @@ lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' isGlass = FALSE - list_reagents = list(/datum/reagent/consumable/menthol = 100) + list_reagents = list("menthol" = 100) /obj/item/reagent_containers/food/drinks/bottle/grenadine name = "Jester Grenadine" desc = "Contains 0% real cherries!" icon_state = "grenadine" isGlass = TRUE - list_reagents = list(/datum/reagent/consumable/grenadine = 100) + list_reagents = list("grenadine" = 100) foodtype = FRUIT /obj/item/reagent_containers/food/drinks/bottle/grenadine/empty - list_reagents = null + list_reagents = list("grenadine" = 0) ////////////////////////// MOLOTOV /////////////////////// /obj/item/reagent_containers/food/drinks/bottle/molotov diff --git a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm index 0d769932db..1e5c2eaf60 100644 --- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm @@ -81,19 +81,19 @@ /obj/item/reagent_containers/food/drinks/drinkingglass/filled/soda name = "Soda Water" - list_reagents = list(/datum/reagent/consumable/sodawater = 50) + list_reagents = list("sodawater" = 50) /obj/item/reagent_containers/food/drinks/drinkingglass/filled/cola name = "Space Cola" - list_reagents = list(/datum/reagent/consumable/space_cola = 50) + list_reagents = list("cola" = 50) /obj/item/reagent_containers/food/drinks/drinkingglass/filled/nuka_cola name = "Nuka Cola" - list_reagents = list(/datum/reagent/consumable/nuka_cola = 50) + list_reagents = list("nuka_cola" = 50) /obj/item/reagent_containers/food/drinks/drinkingglass/filled/syndicatebomb name = "Syndicat Bomb" - list_reagents = list(/datum/reagent/consumable/ethanol/syndicatebomb = 50) + list_reagents = list("syndicatebomb" = 50) /obj/item/reagent_containers/food/drinks/drinkingglass/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/reagent_containers/food/snacks/egg)) //breaking eggs @@ -103,7 +103,7 @@ to_chat(user, "[src] is full.") else to_chat(user, "You break [E] in [src].") - reagents.add_reagent(/datum/reagent/consumable/eggyolk, 5) + reagents.add_reagent("eggyolk", 5) qdel(E) return else diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index d8dafb7b8e..7288d91f2d 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -15,18 +15,19 @@ volume = 50 //Possible_states has the reagent id as key and a list of, in order, the icon_state, the name and the desc as values. Used in the on_reagent_change(changetype) to change names, descs and sprites. var/list/possible_states = list( - /datum/reagent/consumable/ketchup = list("ketchup", "ketchup bottle", "You feel more American already."), - /datum/reagent/consumable/capsaicin = list("hotsauce", "hotsauce bottle", "You can almost TASTE the stomach ulcers now!"), - /datum/reagent/consumable/enzyme = list("enzyme", "universal enzyme bottle", "Used in cooking various dishes"), - /datum/reagent/consumable/soysauce = list("soysauce", "soy sauce bottle", "A salty soy-based flavoring"), - /datum/reagent/consumable/frostoil = list("coldsauce", "coldsauce bottle", "Leaves the tongue numb in its passage"), - /datum/reagent/consumable/sodiumchloride = list("saltshakersmall", "salt shaker", "Salt. From space oceans, presumably"), - /datum/reagent/consumable/blackpepper = list("peppermillsmall", "pepper mill", "Often used to flavor food or make people sneeze"), - /datum/reagent/consumable/cornoil = list("oliveoil", "corn oil bottle", "A delicious oil used in cooking. Made from corn"), - /datum/reagent/consumable/sugar = list("emptycondiment", "sugar bottle", "Tasty spacey sugar!"), - /datum/reagent/consumable/mayonnaise = list("mayonnaise", "mayonnaise jar", "An oily condiment made from egg yolks."), - /datum/reagent/consumable/bbqsauce = list("bbqsauce", "BBQ sauce", "Hand wipes not included."), - /datum/reagent/consumable/peanut_butter = list("peanutbutter", "peanut butter jar", "A deliciously and sticky spread made from peanuts.")) + "ketchup" = list("ketchup", "ketchup bottle", "You feel more American already."), + "mustard" = list("mustard", "mustard bottle", "A spice mixed with enzymes and water."), + "capsaicin" = list("hotsauce", "hotsauce bottle", "You can almost TASTE the stomach ulcers now!"), + "enzyme" = list("enzyme", "universal enzyme bottle", "Used in cooking various dishes"), + "soysauce" = list("soysauce", "soy sauce bottle", "A salty soy-based flavoring"), + "frostoil" = list("coldsauce", "coldsauce bottle", "Leaves the tongue numb in its passage"), + "sodiumchloride" = list("saltshakersmall", "salt shaker", "Salt. From space oceans, presumably"), + "blackpepper" = list("peppermillsmall", "pepper mill", "Often used to flavor food or make people sneeze"), + "cornoil" = list("oliveoil", "corn oil bottle", "A delicious oil used in cooking. Made from corn"), + "sugar" = list("emptycondiment", "sugar bottle", "Tasty spacey sugar!"), + "mayonnaise" = list("mayonnaise", "mayonnaise jar", "An oily condiment made from egg yolks."), + "bbqsauce" = list("condi_bbq", "BBQ sauce", "Hand wipes not included."), + "peanut_butter" = list("peanutbutter", "peanut butter jar", "A deliciously and sticky spread made from peanuts.")) var/originalname = "condiment" //Can't use initial(name) for this. This stores the name set by condimasters. /obj/item/reagent_containers/food/condiment/suicide_act(mob/living/carbon/user) @@ -116,12 +117,12 @@ name = "universal enzyme" desc = "Used in cooking various dishes." icon_state = "enzyme" - list_reagents = list(/datum/reagent/consumable/enzyme = 50) + list_reagents = list("enzyme" = 50) /obj/item/reagent_containers/food/condiment/sugar name = "sugar bottle" desc = "Tasty spacey sugar!" - list_reagents = list(/datum/reagent/consumable/sugar = 50) + list_reagents = list("sugar" = 50) /obj/item/reagent_containers/food/condiment/saltshaker //Separate from above since it's a small shaker rather then name = "salt shaker" // a large one. @@ -130,7 +131,7 @@ possible_transfer_amounts = list(1,20) //for clown turning the lid off amount_per_transfer_from_this = 1 volume = 20 - list_reagents = list(/datum/reagent/consumable/sodiumchloride = 20) + list_reagents = list("sodiumchloride" = 20) possible_states = list() /obj/item/reagent_containers/food/condiment/saltshaker/on_reagent_change(changetype) @@ -153,11 +154,11 @@ if(!proximity) return if(isturf(target)) - if(!reagents.has_reagent(/datum/reagent/consumable/sodiumchloride, 2)) + if(!reagents.has_reagent("sodiumchloride", 2)) to_chat(user, "You don't have enough salt to make a pile!") return user.visible_message("[user] shakes some salt onto [target].", "You shake some salt onto [target].") - reagents.remove_reagent(/datum/reagent/consumable/sodiumchloride, 2) + reagents.remove_reagent("sodiumchloride", 2) new/obj/effect/decal/cleanable/salt(target) return @@ -168,7 +169,7 @@ possible_transfer_amounts = list(1,20) //for clown turning the lid off amount_per_transfer_from_this = 1 volume = 20 - list_reagents = list(/datum/reagent/consumable/blackpepper = 20) + list_reagents = list("blackpepper" = 20) possible_states = list() /obj/item/reagent_containers/food/condiment/peppermill/on_reagent_change(changetype) @@ -184,7 +185,7 @@ item_state = "carton" lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' - list_reagents = list(/datum/reagent/consumable/milk = 50) + list_reagents = list("milk" = 50) possible_states = list() /obj/item/reagent_containers/food/condiment/flour @@ -192,7 +193,7 @@ desc = "A big bag of flour. Good for baking!" icon_state = "flour" item_state = "flour" - list_reagents = list(/datum/reagent/consumable/flour = 30) + list_reagents = list("flour" = 30) possible_states = list() /obj/item/reagent_containers/food/condiment/soymilk @@ -202,7 +203,7 @@ item_state = "carton" lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' - list_reagents = list(/datum/reagent/consumable/soymilk = 50) + list_reagents = list("soymilk" = 50) possible_states = list() /obj/item/reagent_containers/food/condiment/rice @@ -210,21 +211,21 @@ desc = "A big bag of rice. Good for cooking!" icon_state = "rice" item_state = "flour" - list_reagents = list(/datum/reagent/consumable/rice = 30) + list_reagents = list("rice" = 30) possible_states = list() /obj/item/reagent_containers/food/condiment/soysauce name = "soy sauce" desc = "A salty soy-based flavoring." icon_state = "soysauce" - list_reagents = list(/datum/reagent/consumable/soysauce = 50) + list_reagents = list("soysauce" = 50) possible_states = list() /obj/item/reagent_containers/food/condiment/mayonnaise name = "mayonnaise" desc = "An oily condiment made from egg yolks." icon_state = "mayonnaise" - list_reagents = list(/datum/reagent/consumable/mayonnaise = 50) + list_reagents = list("mayonnaise" = 50) possible_states = list() @@ -238,17 +239,7 @@ volume = 10 amount_per_transfer_from_this = 10 possible_transfer_amounts = list() - possible_states = list(/datum/reagent/consumable/ketchup = list("condi_ketchup", "Ketchup", "You feel more American already."), - /datum/reagent/consumable/capsaicin = list("condi_hotsauce", "Hotsauce", "You can almost TASTE the stomach ulcers now!"), - /datum/reagent/consumable/soysauce = list("condi_soysauce", "Soy Sauce", "A salty soy-based flavoring"), - /datum/reagent/consumable/frostoil = list("condi_frostoil", "Coldsauce", "Leaves the tongue numb in it's passage"), - /datum/reagent/consumable/sodiumchloride = list("condi_salt", "Salt Shaker", "Salt. From space oceans, presumably"), - /datum/reagent/consumable/blackpepper = list("condi_pepper", "Pepper Mill", "Often used to flavor food or make people sneeze"), - /datum/reagent/consumable/cornoil = list("condi_cornoil", "Corn Oil", "A delicious oil used in cooking. Made from corn"), - /datum/reagent/consumable/sugar = list("condi_sugar", "Sugar", "Tasty spacey sugar!"), - /datum/reagent/consumable/astrotame = list("condi_astrotame", "Astrotame", "The sweetness of a thousand sugars but none of the calories."), - /datum/reagent/consumable/mustard = list("condi_mustard", "Mustard", "A spice mixed with enzymes and water."), - /datum/reagent/consumable/bbqsauce = list("condi_bbq", "BBQ sauce", "Hand wipes not included.")) + possible_states = list("ketchup" = list("condi_ketchup", "Ketchup", "You feel more American already."), "capsaicin" = list("condi_hotsauce", "Hotsauce", "You can almost TASTE the stomach ulcers now!"), "soysauce" = list("condi_soysauce", "Soy Sauce", "A salty soy-based flavoring"), "frostoil" = list("condi_frostoil", "Coldsauce", "Leaves the tongue numb in it's passage"), "sodiumchloride" = list("condi_salt", "Salt Shaker", "Salt. From space oceans, presumably"), "blackpepper" = list("condi_pepper", "Pepper Mill", "Often used to flavor food or make people sneeze"), "cornoil" = list("condi_cornoil", "Corn Oil", "A delicious oil used in cooking. Made from corn"), "sugar" = list("condi_sugar", "Sugar", "Tasty spacey sugar!"), "astrotame" = list("condi_astrotame", "Astrotame", "The sweetness of a thousand sugars but none of the calories.")) /obj/item/reagent_containers/food/condiment/pack/attack(mob/M, mob/user, def_zone) //Can't feed these to people directly. return @@ -291,26 +282,26 @@ /obj/item/reagent_containers/food/condiment/pack/ketchup name = "ketchup pack" originalname = "ketchup" - list_reagents = list(/datum/reagent/consumable/ketchup = 10) + list_reagents = list("ketchup" = 10) //Mustard /obj/item/reagent_containers/food/condiment/pack/mustard name = "mustard pack" originalname = "mustard" - list_reagents = list(/datum/reagent/consumable/mustard = 10) + list_reagents = list("mustard" = 10) //Hot sauce /obj/item/reagent_containers/food/condiment/pack/hotsauce name = "hotsauce pack" originalname = "hotsauce" - list_reagents = list(/datum/reagent/consumable/capsaicin = 10) + list_reagents = list("capsaicin" = 10) /obj/item/reagent_containers/food/condiment/pack/astrotame name = "astrotame pack" originalname = "astrotame" - list_reagents = list(/datum/reagent/consumable/astrotame = 5) + list_reagents = list("astrotame" = 5) /obj/item/reagent_containers/food/condiment/pack/bbqsauce name = "bbq sauce pack" originalname = "bbq sauce" - list_reagents = list(/datum/reagent/consumable/bbqsauce = 10) + list_reagents = list("bbqsauce" = 10) diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm index 016e37a5c4..239273e421 100644 --- a/code/modules/food_and_drinks/food/customizables.dm +++ b/code/modules/food_and_drinks/food/customizables.dm @@ -189,7 +189,7 @@ desc = "Delicious food on a stick." ingredients_placement = INGREDIENTS_LINE trash = /obj/item/stack/rods - list_reagents = list(/datum/reagent/consumable/nutriment = 1) + list_reagents = list("nutriment" = 1) ingMax = 6 icon_state = "rod" @@ -304,7 +304,7 @@ else if(contents.len >= 20) to_chat(user, "You can't add more ingredients to [src]!") else - if(reagents.has_reagent(/datum/reagent/water, 10)) //are we starting a soup or a salad? + if(reagents.has_reagent("water", 10)) //are we starting a soup or a salad? var/obj/item/reagent_containers/food/snacks/customizable/A = new/obj/item/reagent_containers/food/snacks/customizable/soup(get_turf(src)) A.initialize_custom_food(src, S, user) else diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index c068c1aa40..97e8423e78 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -19,9 +19,11 @@ Here is an example of the new formatting for anyone who wants to add more food i name = "Xenoburger" //Name that displays in the UI. desc = "Smells caustic. Tastes like heresy." //Duh icon_state = "xburger" //Refers to an icon in food.dmi - list_reagents = list(/datum/reagent/xenomicrobes = 10, - /datum/reagent/consumable/nutriment = 2) //What's inside the snack. - bitesize = 3 //This is the amount each bite consumes. +/obj/item/reagent_containers/food/snacks/xenoburger/Initialize() //Don't mess with this. | nO I WILL MESS WITH THIS + . = ..() //Same here. + reagents.add_reagent("xenomicrobes", 10) //This is what is in the food item. you may copy/paste + reagents.add_reagent("nutriment", 2) //this line of code for all the contents. + bitesize = 3 //This is the amount each bite consumes. ``` All foods are distributed among various categories. Use common sense. @@ -60,7 +62,7 @@ All foods are distributed among various categories. Use common sense. if(list_reagents) for(var/rid in list_reagents) var/amount = list_reagents[rid] - if(rid == /datum/reagent/consumable/nutriment || rid == /datum/reagent/consumable/nutriment/vitamin) + if(rid == "nutriment" || rid == "vitamin") reagents.add_reagent(rid, amount, tastes.Copy()) else reagents.add_reagent(rid, amount) @@ -206,7 +208,7 @@ All foods are distributed among various categories. Use common sense. if(bonus_reagents && bonus_reagents.len) for(var/r_id in bonus_reagents) var/amount = bonus_reagents[r_id] - if(r_id == /datum/reagent/consumable/nutriment || r_id == /datum/reagent/consumable/nutriment/vitamin) + if(r_id == "nutriment" || r_id == "vitamin") reagents.add_reagent(r_id, amount, tastes) else reagents.add_reagent(r_id, amount) @@ -285,7 +287,7 @@ All foods are distributed among various categories. Use common sense. if(S.bonus_reagents && S.bonus_reagents.len) for(var/r_id in S.bonus_reagents) var/amount = S.bonus_reagents[r_id] * cooking_efficiency - if(r_id == /datum/reagent/consumable/nutriment || r_id == /datum/reagent/consumable/nutriment/vitamin) + if(r_id == "nutriment" || r_id == "vitamin") S.reagents.add_reagent(r_id, amount, tastes) else S.reagents.add_reagent(r_id, amount) diff --git a/code/modules/food_and_drinks/food/snacks/dough.dm b/code/modules/food_and_drinks/food/snacks/dough.dm index e071fb3df7..6ae8836b28 100644 --- a/code/modules/food_and_drinks/food/snacks/dough.dm +++ b/code/modules/food_and_drinks/food/snacks/dough.dm @@ -8,7 +8,7 @@ icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "dough" cooked_type = /obj/item/reagent_containers/food/snacks/store/bread/plain - list_reagents = list(/datum/reagent/consumable/nutriment = 6) + list_reagents = list("nutriment" = 6) w_class = WEIGHT_CLASS_NORMAL tastes = list("dough" = 1) foodtype = GRAIN @@ -36,7 +36,7 @@ slice_path = /obj/item/reagent_containers/food/snacks/doughslice slices_num = 3 cooked_type = /obj/item/reagent_containers/food/snacks/pizzabread - list_reagents = list(/datum/reagent/consumable/nutriment = 6) + list_reagents = list("nutriment" = 6) w_class = WEIGHT_CLASS_NORMAL tastes = list("dough" = 1) foodtype = GRAIN @@ -47,7 +47,7 @@ icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "pizzabread" custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/pizza - list_reagents = list(/datum/reagent/consumable/nutriment = 7) + list_reagents = list("nutriment" = 7) w_class = WEIGHT_CLASS_NORMAL tastes = list("bread" = 1) foodtype = GRAIN @@ -69,7 +69,7 @@ desc = "A base for any self-respecting burger." icon = 'icons/obj/food/burgerbread.dmi' icon_state = "bun" - list_reagents = list(/datum/reagent/consumable/nutriment = 1) + list_reagents = list("nutriment" = 1) custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/burger filling_color = "#CD853F" tastes = list("bun" = 1) // the bun tastes of bun. @@ -81,7 +81,7 @@ icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "cakebatter" cooked_type = /obj/item/reagent_containers/food/snacks/store/cake/plain - list_reagents = list(/datum/reagent/consumable/nutriment = 9) + list_reagents = list("nutriment" = 9) w_class = WEIGHT_CLASS_NORMAL tastes = list("batter" = 1) foodtype = GRAIN | DAIRY @@ -106,7 +106,7 @@ slice_path = /obj/item/reagent_containers/food/snacks/rawpastrybase slices_num = 3 cooked_type = /obj/item/reagent_containers/food/snacks/pie/plain - list_reagents = list(/datum/reagent/consumable/nutriment = 9) + list_reagents = list("nutriment" = 9) w_class = WEIGHT_CLASS_NORMAL tastes = list("dough" = 1) foodtype = GRAIN | DAIRY @@ -118,7 +118,7 @@ icon_state = "rawpastrybase" cooked_type = /obj/item/reagent_containers/food/snacks/pastrybase filling_color = "#CD853F" - list_reagents = list(/datum/reagent/consumable/nutriment = 1) + list_reagents = list("nutriment" = 1) tastes = list("raw pastry" = 1) foodtype = GRAIN | DAIRY @@ -127,7 +127,7 @@ desc = "A base for any self-respecting pastry." icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "pastrybase" - list_reagents = list(/datum/reagent/consumable/nutriment = 1) + list_reagents = list("nutriment" = 1) filling_color = "#CD853F" tastes = list("pastry" = 1) foodtype = GRAIN | DAIRY diff --git a/code/modules/food_and_drinks/food/snacks/meat.dm b/code/modules/food_and_drinks/food/snacks/meat.dm index 28fb2edf61..8f02cd81b4 100644 --- a/code/modules/food_and_drinks/food/snacks/meat.dm +++ b/code/modules/food_and_drinks/food/snacks/meat.dm @@ -8,7 +8,7 @@ icon_state = "meat" dried_type = /obj/item/reagent_containers/food/snacks/sosjerky/healthy bitesize = 3 - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/cooking_oil = 2) //Meat has fats that a food processor can process into cooking oil + list_reagents = list("nutriment" = 3, "cooking_oil" = 2) //Meat has fats that a food processor can process into cooking oil cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/plain slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/plain slices_num = 3 @@ -63,7 +63,7 @@ icon_state = "crabmeatraw" cooked_type = /obj/item/reagent_containers/food/snacks/meat/crab bitesize = 3 - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/cooking_oil = 3) + list_reagents = list("nutriment" = 1, "cooking_oil" = 3) filling_color = "#EAD079" tastes = list("raw crab" = 1) foodtype = RAW | MEAT @@ -72,8 +72,8 @@ name = "crab meat" desc = "Some deliciously cooked crab meat." icon_state = "crabmeat" - list_reagents = list(/datum/reagent/consumable/nutriment = 2) - bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/cooking_oil = 2) + list_reagents = list("nutriment" = 2) + bonus_reagents = list("nutriment" = 3, "vitamin" = 2, "cooking_oil" = 2) filling_color = "#DFB73A" tastes = list("crab" = 1) foodtype = MEAT @@ -88,7 +88,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime icon_state = "slimemeat" desc = "Because jello wasn't offensive enough to vegans." - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/toxin/slimejelly = 3) + list_reagents = list("nutriment" = 3, "slimejelly" = 3) filling_color = "#00FFFF" tastes = list("slime" = 1, "jelly" = 1) foodtype = MEAT | RAW | TOXIC @@ -96,7 +96,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/golem icon_state = "golemmeat" desc = "Edible rocks, welcome to the future." - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/iron = 3) + list_reagents = list("nutriment" = 3, "iron" = 3) filling_color = "#A9A9A9" tastes = list("rock" = 1) foodtype = MEAT | RAW | GROSS @@ -131,7 +131,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/fly icon_state = "flymeat" desc = "Nothing says tasty like maggot filled radioactive mutant flesh." - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/uranium = 3) + list_reagents = list("nutriment" = 3, "uranium" = 3) tastes = list("maggots" = 1, "the inside of a reactor" = 1) foodtype = MEAT | RAW | GROSS @@ -214,7 +214,7 @@ name = "killer tomato meat" desc = "A slice from a huge tomato." icon_state = "tomatomeat" - list_reagents = list(/datum/reagent/consumable/nutriment = 2) + list_reagents = list("nutriment" = 2) filling_color = "#FF0000" cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/killertomato slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/killertomato @@ -225,7 +225,7 @@ name = "bear meat" desc = "A very manly slab of meat." icon_state = "bearmeat" - list_reagents = list(/datum/reagent/consumable/nutriment = 12, /datum/reagent/medicine/morphine = 5, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/cooking_oil = 6) + list_reagents = list("nutriment" = 12, "morphine" = 5, "vitamin" = 2, "cooking_oil" = 6) filling_color = "#FFB6C1" cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/bear slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/bear @@ -236,7 +236,7 @@ name = "xeno meat" desc = "A slab of meat." icon_state = "xenomeat" - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 3, "vitamin" = 1) bitesize = 4 filling_color = "#32CD32" cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/xeno @@ -248,7 +248,7 @@ name = "spider meat" desc = "A slab of spider meat." icon_state = "spidermeat" - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/toxin = 3, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 3, "toxin" = 3, "vitamin" = 1) filling_color = "#7CFC00" cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/spider slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/spider @@ -258,7 +258,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/goliath name = "goliath meat" desc = "A slab of goliath meat. It's not very edible now, but it cooks great in lava." - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/toxin = 5, /datum/reagent/consumable/cooking_oil = 3) + list_reagents = list("nutriment" = 3, "toxin" = 5, "cooking_oil" = 3) icon_state = "goliathmeat" tastes = list("meat" = 1) foodtype = RAW | MEAT | TOXIC @@ -271,7 +271,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/meatwheat name = "meatwheat clump" desc = "This doesn't look like meat, but your standards aren't that high to begin with." - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/blood = 5, /datum/reagent/consumable/cooking_oil = 1) + list_reagents = list("nutriment" = 3, "vitamin" = 2, "blood" = 5, "cooking_oil" = 1) filling_color = rgb(150, 0, 0) icon_state = "meatwheat_clump" bitesize = 4 @@ -281,7 +281,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/gorilla name = "gorilla meat" desc = "Much meatier than monkey meat." - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/consumable/cooking_oil = 5) //Plenty of fat! + list_reagents = list("nutriment" = 5, "vitamin" = 1, "cooking_oil" = 5) //Plenty of fat! /obj/item/reagent_containers/food/snacks/meat/rawbacon name = "raw piece of bacon" @@ -289,7 +289,7 @@ icon_state = "bacon" cooked_type = /obj/item/reagent_containers/food/snacks/meat/bacon bitesize = 2 - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/cooking_oil = 3) + list_reagents = list("nutriment" = 1, "cooking_oil" = 3) filling_color = "#B22222" tastes = list("bacon" = 1) foodtype = RAW | MEAT @@ -298,8 +298,8 @@ name = "piece of bacon" desc = "A delicious piece of bacon." icon_state = "baconcooked" - list_reagents = list(/datum/reagent/consumable/nutriment = 2) - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/consumable/cooking_oil = 2) + list_reagents = list("nutriment" = 2) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1, "cooking_oil" = 2) filling_color = "#854817" tastes = list("bacon" = 1) foodtype = MEAT | BREAKFAST @@ -307,7 +307,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/gondola name = "gondola meat" desc = "According to legends of old, consuming raw gondola flesh grants one inner peace." - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/tranquility = 5, /datum/reagent/consumable/cooking_oil = 3) + list_reagents = list("nutriment" = 3, "tranquility" = 5, "cooking_oil" = 3) tastes = list("meat" = 4, "tranquility" = 1) filling_color = "#9A6750" cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/gondola @@ -321,8 +321,8 @@ name = "steak" desc = "A piece of hot spicy meat." icon_state = "meatsteak" - list_reagents = list(/datum/reagent/consumable/nutriment = 5) - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 5) + bonus_reagents = list("nutriment" = 2, "vitamin" = 1) trash = /obj/item/trash/plate filling_color = "#B22222" foodtype = MEAT @@ -383,7 +383,7 @@ icon_state = "rawcutlet" cooked_type = /obj/item/reagent_containers/food/snacks/meat/cutlet/plain bitesize = 2 - list_reagents = list(/datum/reagent/consumable/nutriment = 1) + list_reagents = list("nutriment" = 1) filling_color = "#B22222" tastes = list("meat" = 1) var/meat_type = "meat" @@ -447,8 +447,8 @@ desc = "A cooked meat cutlet." icon_state = "cutlet" bitesize = 2 - list_reagents = list(/datum/reagent/consumable/nutriment = 2) - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 2) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) filling_color = "#B22222" tastes = list("meat" = 1) foodtype = MEAT diff --git a/code/modules/food_and_drinks/food/snacks_bread.dm b/code/modules/food_and_drinks/food/snacks_bread.dm index b18dfc7968..628b883e73 100644 --- a/code/modules/food_and_drinks/food/snacks_bread.dm +++ b/code/modules/food_and_drinks/food/snacks_bread.dm @@ -12,7 +12,7 @@ bitesize = 2 custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/sandwich filling_color = "#FFA500" - list_reagents = list(/datum/reagent/consumable/nutriment = 2) + list_reagents = list("nutriment" = 2) slot_flags = ITEM_SLOT_HEAD customfoodfilling = 0 //to avoid infinite bread-ception foodtype = GRAIN @@ -22,8 +22,8 @@ name = "bread" desc = "Some plain old earthen bread." icon_state = "bread" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 7) - list_reagents = list(/datum/reagent/consumable/nutriment = 10) + bonus_reagents = list("nutriment" = 7) + list_reagents = list("nutriment" = 10) custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/bread slice_path = /obj/item/reagent_containers/food/snacks/breadslice/plain tastes = list("bread" = 10) @@ -41,8 +41,8 @@ desc = "The culinary base of every self-respecting eloquen/tg/entleman." icon_state = "meatbread" slice_path = /obj/item/reagent_containers/food/snacks/breadslice/meat - bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 10) - list_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 5, "vitamin" = 10) + list_reagents = list("nutriment" = 30, "vitamin" = 5) tastes = list("bread" = 10, "meat" = 10) foodtype = GRAIN | MEAT @@ -57,8 +57,8 @@ desc = "The culinary base of every self-respecting eloquen/tg/entleman. Extra Heretical." icon_state = "xenomeatbread" slice_path = /obj/item/reagent_containers/food/snacks/breadslice/xenomeat - bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 10) - list_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 5, "vitamin" = 10) + list_reagents = list("nutriment" = 30, "vitamin" = 5) tastes = list("bread" = 10, "acid" = 10) foodtype = GRAIN | MEAT @@ -67,7 +67,7 @@ desc = "A slice of delicious meatbread. Extra Heretical." icon_state = "xenobreadslice" filling_color = "#32CD32" - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 6, "vitamin" = 1) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/store/bread/spidermeat @@ -75,8 +75,8 @@ desc = "Reassuringly green meatloaf made from spider meat." icon_state = "spidermeatbread" slice_path = /obj/item/reagent_containers/food/snacks/breadslice/spidermeat - bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 10) - list_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/toxin = 15, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 5, "vitamin" = 10) + list_reagents = list("nutriment" = 30, "toxin" = 15, "vitamin" = 5) tastes = list("bread" = 10, "cobwebs" = 5) foodtype = GRAIN | MEAT | TOXIC @@ -85,7 +85,7 @@ desc = "A slice of meatloaf made from an animal that most likely still wants you dead." icon_state = "xenobreadslice" filling_color = "#7CFC00" - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/toxin = 3, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 6, "toxin" = 3, "vitamin" = 1) foodtype = GRAIN | MEAT | TOXIC /obj/item/reagent_containers/food/snacks/store/bread/banana @@ -93,8 +93,8 @@ desc = "A heavenly and filling treat." icon_state = "bananabread" slice_path = /obj/item/reagent_containers/food/snacks/breadslice/banana - bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/banana = 20) - list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/banana = 20) + bonus_reagents = list("nutriment" = 5, "banana" = 20) + list_reagents = list("nutriment" = 20, "banana" = 20) tastes = list("bread" = 10) // bananjuice will also flavour foodtype = GRAIN | FRUIT @@ -104,7 +104,7 @@ desc = "A slice of delicious banana bread." icon_state = "bananabreadslice" filling_color = "#FFD700" - list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/banana = 4) + list_reagents = list("nutriment" = 4, "banana" = 4) foodtype = GRAIN | FRUIT /obj/item/reagent_containers/food/snacks/store/bread/tofu @@ -112,8 +112,8 @@ desc = "Like meatbread but for vegetarians. Not guaranteed to give superpowers." icon_state = "tofubread" slice_path = /obj/item/reagent_containers/food/snacks/breadslice/tofu - bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 10) - list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 5, "vitamin" = 10) + list_reagents = list("nutriment" = 20, "vitamin" = 5) tastes = list("bread" = 10, "tofu" = 10) foodtype = GRAIN | VEGETABLES @@ -122,7 +122,7 @@ desc = "A slice of delicious tofubread." icon_state = "tofubreadslice" filling_color = "#FF8C00" - list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 4, "vitamin" = 1) foodtype = GRAIN | VEGETABLES /obj/item/reagent_containers/food/snacks/store/bread/creamcheese @@ -130,8 +130,8 @@ desc = "Yum yum yum!" icon_state = "creamcheesebread" slice_path = /obj/item/reagent_containers/food/snacks/breadslice/creamcheese - bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 5, "vitamin" = 5) + list_reagents = list("nutriment" = 20, "vitamin" = 5) tastes = list("bread" = 10, "cheese" = 10) foodtype = GRAIN | DAIRY @@ -140,7 +140,7 @@ desc = "A slice of yum!" icon_state = "creamcheesebreadslice" filling_color = "#FF8C00" - list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 4, "vitamin" = 1) foodtype = GRAIN | DAIRY /obj/item/reagent_containers/food/snacks/store/bread/mimana @@ -148,8 +148,8 @@ desc = "Best eaten in silence." icon_state = "mimanabread" slice_path = /obj/item/reagent_containers/food/snacks/breadslice/mimana - bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/toxin/mutetoxin = 5, /datum/reagent/consumable/nothing = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 5, "vitamin" = 5) + list_reagents = list("nutriment" = 20, "mutetoxin" = 5, "nothing" = 5, "vitamin" = 5) tastes = list("bread" = 10, "silence" = 10) foodtype = GRAIN | FRUIT @@ -158,7 +158,7 @@ desc = "A slice of silence!" icon_state = "mimanabreadslice" filling_color = "#C0C0C0" - list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/toxin/mutetoxin = 1, /datum/reagent/consumable/nothing = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 2, "mutetoxin" = 1, "nothing" = 1, "vitamin" = 1) foodtype = GRAIN | FRUIT /obj/item/reagent_containers/food/snacks/breadslice/custom @@ -172,8 +172,8 @@ desc = "Bon appetit!" icon = 'icons/obj/food/burgerbread.dmi' icon_state = "baguette" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 2, "vitamin" = 2) + list_reagents = list("nutriment" = 6, "vitamin" = 1) bitesize = 3 w_class = WEIGHT_CLASS_NORMAL tastes = list("bread" = 1) @@ -189,12 +189,12 @@ GLOBAL_VAR_INIT(frying_hardmode, TRUE) GLOBAL_VAR_INIT(frying_bad_chem_add_volume, TRUE) GLOBAL_LIST_INIT(frying_bad_chems, list( -/datum/reagent/toxin/bad_food = 10, -/datum/reagent/clf3 = 2, -/datum/reagent/drug/aranesp = 2, -/datum/reagent/blackpowder = 10, -/datum/reagent/phlogiston = 3, -/datum/reagent/toxin/cyanide = 3, +"bad_food" = 10, +"clf3" = 2, +"aranesp" = 2, +"blackpowder" = 10, +"phlogiston" = 3, +"cyanide" = 3, )) /obj/item/reagent_containers/food/snacks/deepfryholder/Initialize(mapload, obj/item/fried) @@ -268,8 +268,8 @@ GLOBAL_LIST_INIT(frying_bad_chems, list( icon_state = "butteredtoast" bitesize = 3 filling_color = "#FFA500" - list_reagents = list(/datum/reagent/consumable/nutriment = 4) - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 4) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) tastes = list("butter" = 1, "toast" = 1) foodtype = GRAIN | BREAKFAST @@ -279,8 +279,8 @@ GLOBAL_LIST_INIT(frying_bad_chems, list( icon = 'icons/obj/food/food.dmi' icon_state = "butterbiscuit" filling_color = "#F0E68C" - list_reagents = list(/datum/reagent/consumable/nutriment = 5) - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 5) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) tastes = list("butter" = 1, "biscuit" = 1) foodtype = GRAIN | BREAKFAST @@ -291,8 +291,8 @@ GLOBAL_LIST_INIT(frying_bad_chems, list( icon_state = "butterdog" bitesize = 1 filling_color = "#F1F49A" - list_reagents = list(/datum/reagent/consumable/nutriment = 5) - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 5) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) tastes = list("butter", "exotic butter") /obj/item/reagent_containers/food/snacks/butterdog/ComponentInitialize() diff --git a/code/modules/food_and_drinks/food/snacks_burgers.dm b/code/modules/food_and_drinks/food/snacks_burgers.dm index 35b17e67f0..8b6d6212f1 100644 --- a/code/modules/food_and_drinks/food/snacks_burgers.dm +++ b/code/modules/food_and_drinks/food/snacks_burgers.dm @@ -3,14 +3,14 @@ icon = 'icons/obj/food/burgerbread.dmi' icon_state = "hburger" bitesize = 3 - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 6, "vitamin" = 1) tastes = list("bun" = 4) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/plain name = "burger" desc = "The cornerstone of every nutritious breakfast." - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("vitamin" = 1) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/plain/Initialize() @@ -31,7 +31,7 @@ var/subjectjob = null name = "human burger" desc = "A bloody burger." - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("vitamin" = 4) foodtype = MEAT | GRAIN | GROSS /obj/item/reagent_containers/food/snacks/burger/human/CheckParts(list/parts_list) @@ -50,13 +50,13 @@ /obj/item/reagent_containers/food/snacks/burger/corgi name = "corgi burger" desc = "You monster." - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("vitamin" = 1) foodtype = GRAIN | MEAT | GROSS /obj/item/reagent_containers/food/snacks/burger/appendix name = "appendix burger" desc = "Tastes like appendicitis." - bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 6) + bonus_reagents = list("nutriment" = 6, "vitamin" = 6) icon_state = "appendixburger" tastes = list("bun" = 4, "grass" = 2) foodtype = GRAIN | MEAT | GROSS @@ -65,7 +65,7 @@ name = "fillet -o- carp sandwich" desc = "Almost like a carp is yelling somewhere... Give me back that fillet -o- carp, give me that carp." icon_state = "fishburger" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 3) + bonus_reagents = list("nutriment" = 2, "vitamin" = 3) tastes = list("bun" = 4, "fish" = 4) foodtype = GRAIN | MEAT @@ -73,7 +73,7 @@ name = "tofu burger" desc = "What.. is that meat?" icon_state = "tofuburger" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 2, "vitamin" = 2) tastes = list("bun" = 4, "tofu" = 4) foodtype = GRAIN | VEGETABLES @@ -81,8 +81,8 @@ name = "roburger" desc = "The lettuce is the only organic component. Beep." icon_state = "roburger" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/nanomachines = 2, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/nanomachines = 5, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 2, "nanomachines" = 2, "vitamin" = 5) + list_reagents = list("nutriment" = 6, "nanomachines" = 5, "vitamin" = 1) tastes = list("bun" = 4, "lettuce" = 2, "sludge" = 1) foodtype = GRAIN | TOXIC @@ -91,8 +91,8 @@ desc = "This massive patty looks like poison. Beep." icon_state = "roburger" volume = 120 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/nanomachines = 70, /datum/reagent/consumable/nutriment/vitamin = 10) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/nanomachines = 70, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 5, "nanomachines" = 70, "vitamin" = 10) + list_reagents = list("nutriment" = 6, "nanomachines" = 70, "vitamin" = 5) tastes = list("bun" = 4, "lettuce" = 2, "sludge" = 1) foodtype = GRAIN | TOXIC @@ -100,7 +100,7 @@ name = "xenoburger" desc = "Smells caustic. Tastes like heresy." icon_state = "xburger" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 6) + bonus_reagents = list("nutriment" = 2, "vitamin" = 6) tastes = list("bun" = 4, "acid" = 4) foodtype = GRAIN | MEAT @@ -108,29 +108,29 @@ name = "bearger" desc = "Best served rawr." icon_state = "bearger" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 6) + bonus_reagents = list("nutriment" = 3, "vitamin" = 6) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/clown name = "clown burger" desc = "This tastes funny..." icon_state = "clownburger" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/consumable/banana = 6) + bonus_reagents = list("nutriment" = 4, "vitamin" = 6, "banana" = 6) foodtype = GRAIN | FRUIT /obj/item/reagent_containers/food/snacks/burger/mime name = "mime burger" desc = "Its taste defies language." icon_state = "mimeburger" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/consumable/nothing = 6) + bonus_reagents = list("nutriment" = 4, "vitamin" = 6, "nothing" = 6) foodtype = GRAIN /obj/item/reagent_containers/food/snacks/burger/brain name = "brainburger" desc = "A strange looking burger. It looks almost sentient." icon_state = "brainburger" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/medicine/mannitol = 6, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/medicine/mannitol = 5, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 6, "mannitol" = 6, "vitamin" = 5) + list_reagents = list("nutriment" = 6, "mannitol" = 5, "vitamin" = 1) tastes = list("bun" = 4, "brains" = 2) foodtype = GRAIN | MEAT | GROSS @@ -139,7 +139,7 @@ name = "ghost burger" desc = "Too Spooky!" icon_state = "ghostburger" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 12) + bonus_reagents = list("nutriment" = 5, "vitamin" = 12) tastes = list("bun" = 4, "ectoplasm" = 2) foodtype = GRAIN alpha = 170 @@ -188,7 +188,7 @@ desc = "Perfect for hiding the fact it's burnt to a crisp." icon_state = "cburger" color = "#DA0000FF" - bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/red = 10, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("redcrayonpowder" = 10, "vitamin" = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/orange @@ -196,7 +196,7 @@ desc = "Contains 0% juice." icon_state = "cburger" color = "#FF9300FF" - bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/orange = 10, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("orangecrayonpowder" = 10, "vitamin" = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/yellow @@ -204,7 +204,7 @@ desc = "Bright to the last bite." icon_state = "cburger" color = "#FFF200FF" - bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/yellow = 10, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("yellowcrayonpowder" = 10, "vitamin" = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/green @@ -212,7 +212,7 @@ desc = "It's not tainted meat, it's painted meat!" icon_state = "cburger" color = "#A8E61DFF" - bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/green = 10, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("greencrayonpowder" = 10, "vitamin" = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/blue @@ -220,7 +220,7 @@ desc = "Is this blue rare?" icon_state = "cburger" color = "#00B7EFFF" - bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/blue = 10, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("bluecrayonpowder" = 10, "vitamin" = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/purple @@ -228,7 +228,7 @@ desc = "Regal and low class at the same time." icon_state = "cburger" color = "#DA00FFFF" - bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/purple = 10, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("purplecrayonpowder" = 10, "vitamin" = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/black @@ -236,7 +236,7 @@ desc = "This is overcooked." icon_state = "cburger" color = "#1C1C1C" - bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/black = 10, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("blackcrayonpowder" = 10, "vitamin" = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/white @@ -244,14 +244,14 @@ desc = "Delicous Titanium!" icon_state = "cburger" color = "#FFFFFF" - bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/white = 10, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("whitecrayonpowder" = 10, "vitamin" = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/spell name = "spell burger" desc = "This is absolutely Ei Nath." icon_state = "spellburger" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 10) + bonus_reagents = list("nutriment" = 6, "vitamin" = 10) tastes = list("bun" = 4, "magic" = 2) foodtype = GRAIN | MEAT @@ -259,8 +259,8 @@ name = "big bite burger" desc = "Forget the Big Mac. THIS is the future!" icon_state = "bigbiteburger" - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 6) - list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("vitamin" = 6) + list_reagents = list("nutriment" = 10, "vitamin" = 2) w_class = WEIGHT_CLASS_NORMAL foodtype = GRAIN | MEAT @@ -272,21 +272,21 @@ foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/jelly/slime - bonus_reagents = list(/datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("slimejelly" = 5, "vitamin" = 5) + list_reagents = list("nutriment" = 6, "slimejelly" = 5, "vitamin" = 1) foodtype = GRAIN | TOXIC /obj/item/reagent_containers/food/snacks/burger/jelly/cherry - bonus_reagents = list(/datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("cherryjelly" = 5, "vitamin" = 5) + list_reagents = list("nutriment" = 6, "cherryjelly" = 5, "vitamin" = 1) foodtype = GRAIN | FRUIT /obj/item/reagent_containers/food/snacks/burger/superbite name = "super bite burger" desc = "This is a mountain of a burger. FOOD!" icon_state = "superbiteburger" - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 10) - list_reagents = list(/datum/reagent/consumable/nutriment = 40, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("vitamin" = 10) + list_reagents = list("nutriment" = 40, "vitamin" = 5) w_class = WEIGHT_CLASS_NORMAL bitesize = 7 volume = 100 @@ -297,29 +297,29 @@ name = "five alarm burger" desc = "HOT! HOT!" icon_state = "fivealarmburger" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/capsaicin = 5, /datum/reagent/consumable/condensedcapsaicin = 5, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 2, "vitamin" = 5) + list_reagents = list("nutriment" = 6, "capsaicin" = 5, "condensedcapsaicin" = 5, "vitamin" = 1) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/rat name = "rat burger" desc = "Pretty much what you'd expect..." icon_state = "ratburger" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) foodtype = GRAIN | MEAT | GROSS /obj/item/reagent_containers/food/snacks/burger/baseball name = "home run baseball burger" desc = "It's still warm. The steam coming off of it looks like baseball." icon_state = "baseball" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) foodtype = GRAIN | GROSS /obj/item/reagent_containers/food/snacks/burger/baconburger name = "bacon burger" desc = "The perfect combination of all things American." icon_state = "baconburger" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 8, "vitamin" = 1) tastes = list("bun" = 4, "bacon" = 2) foodtype = GRAIN | MEAT @@ -327,7 +327,7 @@ name = "soylent burger" desc = "A eco-friendly burger made using upcycled low value biomass." icon_state = "soylentburger" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 3) + bonus_reagents = list("nutriment" = 5, "vitamin" = 3) tastes = list("bun" = 2, "assistant" = 4) foodtype = GRAIN | MEAT | DAIRY @@ -335,7 +335,7 @@ name = "mcrib" desc = "An elusive rib shaped burger with limited availablity across the galaxy. Not as good as you remember it." icon_state = "mcrib" - bonus_reagents = list(/datum/reagent/consumable/bbqsauce = 5, /datum/reagent/consumable/nutriment/vitamin = 3) + bonus_reagents = list("bbqsauce" = 5, "vitamin" = 3) tastes = list("bun" = 2, "pork patty" = 4) foodtype = GRAIN | MEAT @@ -344,7 +344,7 @@ desc = "A cheap and greasy imitation of an eggs benedict." icon_state = "mcguffin" tastes = list("muffin" = 2, "bacon" = 3) - bonus_reagents = list(/datum/reagent/consumable/eggyolk = 3, /datum/reagent/consumable/nutriment = 1) + bonus_reagents = list("eggyolk" = 3, "nutriment" = 1) foodtype = GRAIN | MEAT | BREAKFAST /obj/item/reagent_containers/food/snacks/burger/chicken @@ -352,7 +352,7 @@ desc = "A delicious chicken sandwich, it is said the proceeds from this treat helps criminalize homosexuality on the space frontier." icon_state = "chickenburger" tastes = list("bun" = 2, "chicken" = 4, "God's covenant" = 1) - bonus_reagents = list(/datum/reagent/consumable/mayonnaise = 3, /datum/reagent/consumable/cooking_oil = 2, /datum/reagent/consumable/nutriment = 2) + bonus_reagents = list("mayonnaise" = 3, "cooking_oil" = 2, "nutriment" = 2) foodtype = GRAIN | MEAT | FRIED /obj/item/reagent_containers/food/snacks/burger/cheese @@ -360,7 +360,7 @@ desc = "This noble burger stands proudly clad in golden cheese." icon_state = "cheeseburger" tastes = list("bun" = 2, "beef patty" = 4, "cheese" = 3) - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1) + bonus_reagents = list("nutriment" = 1) foodtype = GRAIN | MEAT | DAIRY /obj/item/reagent_containers/food/snacks/burger/cheese/Initialize() diff --git a/code/modules/food_and_drinks/food/snacks_cake.dm b/code/modules/food_and_drinks/food/snacks_cake.dm index bb37ec9b5d..dd4dad4d9b 100644 --- a/code/modules/food_and_drinks/food/snacks_cake.dm +++ b/code/modules/food_and_drinks/food/snacks_cake.dm @@ -4,14 +4,14 @@ slices_num = 5 bitesize = 3 volume = 80 - list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list("nutriment" = 20, "vitamin" = 5) tastes = list("cake" = 1) foodtype = GRAIN | DAIRY /obj/item/reagent_containers/food/snacks/cakeslice icon = 'icons/obj/food/piecake.dmi' trash = /obj/item/trash/plate - list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 4, "vitamin" = 1) customfoodfilling = 0 //to avoid infinite cake-ception tastes = list("cake" = 1) foodtype = GRAIN | DAIRY @@ -21,7 +21,7 @@ desc = "A plain cake, not a lie." icon_state = "plaincake" custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/cake - bonus_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 10, "vitamin" = 2) tastes = list("sweetness" = 2,"cake" = 5) foodtype = GRAIN | DAIRY | SUGAR @@ -40,8 +40,8 @@ icon_state = "carrotcake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/carrot slices_num = 5 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/medicine/oculine = 5, /datum/reagent/consumable/nutriment/vitamin = 10) - list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/medicine/oculine = 10, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 3, "oculine" = 5, "vitamin" = 10) + list_reagents = list("nutriment" = 20, "oculine" = 10, "vitamin" = 5) tastes = list("cake" = 5, "sweetness" = 2, "carrot" = 1) foodtype = GRAIN | DAIRY | VEGETABLES | SUGAR @@ -50,7 +50,7 @@ desc = "Carrotty slice of Carrot Cake, carrots are good for your eyes! Also not a lie." icon_state = "carrotcake_slice" filling_color = "#FFA500" - list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/medicine/oculine = 2, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 4, "oculine" = 2, "vitamin" = 1) tastes = list("cake" = 5, "sweetness" = 2, "carrot" = 1) foodtype = GRAIN | DAIRY | VEGETABLES | SUGAR @@ -60,8 +60,8 @@ icon_state = "braincake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/brain slices_num = 5 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/medicine/mannitol = 10, /datum/reagent/consumable/nutriment/vitamin = 10) - list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/medicine/mannitol = 10, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 5, "mannitol" = 10, "vitamin" = 10) + list_reagents = list("nutriment" = 20, "mannitol" = 10, "vitamin" = 5) tastes = list("cake" = 5, "sweetness" = 2, "brains" = 1) foodtype = GRAIN | DAIRY | MEAT | GROSS | SUGAR @@ -71,7 +71,7 @@ desc = "Lemme tell you something about prions. THEY'RE DELICIOUS." icon_state = "braincakeslice" filling_color = "#FF69B4" - list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/medicine/mannitol = 2, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 4, "mannitol" = 2, "vitamin" = 1) tastes = list("cake" = 5, "sweetness" = 2, "brains" = 1) foodtype = GRAIN | DAIRY | MEAT | GROSS | SUGAR @@ -81,7 +81,7 @@ icon_state = "cheesecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/cheese slices_num = 5 - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 10) + bonus_reagents = list("vitamin" = 10) tastes = list("cake" = 4, "cream cheese" = 3) foodtype = GRAIN | DAIRY @@ -99,7 +99,7 @@ icon_state = "orangecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/orange slices_num = 5 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10) + bonus_reagents = list("nutriment" = 3, "vitamin" = 10) tastes = list("cake" = 5, "sweetness" = 2, "oranges" = 2) foodtype = GRAIN | DAIRY | FRUIT | SUGAR @@ -117,7 +117,7 @@ icon_state = "limecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/lime slices_num = 5 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10) + bonus_reagents = list("nutriment" = 3, "vitamin" = 10) tastes = list("cake" = 5, "sweetness" = 2, "unbearable sourness" = 2) foodtype = GRAIN | DAIRY | FRUIT | SUGAR @@ -135,7 +135,7 @@ icon_state = "lemoncake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/lemon slices_num = 5 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10) + bonus_reagents = list("nutriment" = 3, "vitamin" = 10) tastes = list("cake" = 5, "sweetness" = 2, "sourness" = 2) foodtype = GRAIN | DAIRY | FRUIT | SUGAR @@ -153,7 +153,7 @@ icon_state = "chocolatecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/chocolate slices_num = 5 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10) + bonus_reagents = list("nutriment" = 3, "vitamin" = 10) tastes = list("cake" = 5, "sweetness" = 1, "chocolate" = 4) foodtype = GRAIN | DAIRY | JUNKFOOD | SUGAR @@ -171,8 +171,8 @@ icon_state = "birthdaycake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/birthday slices_num = 5 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/sprinkles = 10, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/sprinkles = 10, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 7, "sprinkles" = 10, "vitamin" = 5) + list_reagents = list("nutriment" = 20, "sprinkles" = 10, "vitamin" = 5) tastes = list("cake" = 5, "sweetness" = 1) foodtype = GRAIN | DAIRY | JUNKFOOD | SUGAR @@ -181,7 +181,7 @@ desc = "A slice of your birthday." icon_state = "birthdaycakeslice" filling_color = "#DC143C" - list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/sprinkles = 2, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 4, "sprinkles" = 2, "vitamin" = 1) tastes = list("cake" = 5, "sweetness" = 1) foodtype = GRAIN | DAIRY | JUNKFOOD | SUGAR @@ -191,7 +191,7 @@ icon_state = "applecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/apple slices_num = 5 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10) + bonus_reagents = list("nutriment" = 3, "vitamin" = 10) tastes = list("cake" = 5, "sweetness" = 1, "apple" = 1) foodtype = GRAIN | DAIRY | FRUIT | SUGAR @@ -214,7 +214,7 @@ desc = "A cake made of slimes. Probably not electrified." icon_state = "slimecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/slimecake - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) + bonus_reagents = list("nutriment" = 1, "vitamin" = 3) tastes = list("cake" = 5, "sweetness" = 1, "slime" = 1) foodtype = GRAIN | DAIRY | SUGAR @@ -231,7 +231,7 @@ desc = "A hollow cake with real pumpkin." icon_state = "pumpkinspicecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/pumpkinspice - bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 3, "vitamin" = 5) tastes = list("cake" = 5, "sweetness" = 1, "pumpkin" = 1) foodtype = GRAIN | DAIRY | VEGETABLES | SUGAR @@ -248,7 +248,7 @@ desc = "A plain cake, filled with assortment of blackberries and strawberries!" icon_state = "blackbarry_strawberries_cake_vanilla_cake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/bsvc - bonus_reagents = list(/datum/reagent/consumable/nutriment = 14, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 14, "vitamin" = 4) tastes = list("blackbarry" = 2, "strawberries" = 2, "vanilla" = 2, "sweetness" = 2, "cake" = 3) foodtype = GRAIN | DAIRY | FRUIT | SUGAR @@ -265,7 +265,7 @@ desc = "A plain cake, filled with assortment of blackberries and strawberries!" icon_state = "blackbarry_strawberries_cake_coco_cake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/bscc - bonus_reagents = list(/datum/reagent/consumable/nutriment = 14, /datum/reagent/consumable/nutriment/vitamin = 4, /datum/reagent/consumable/coco = 5) + bonus_reagents = list("nutriment" = 14, "vitamin" = 4, "cocoa" = 5) tastes = list("blackberry" = 2, "strawberries" = 2, "chocolate" = 2, "sweetness" = 2,"cake" = 3) foodtype = GRAIN | DAIRY | FRUIT | SUGAR @@ -282,7 +282,7 @@ desc = "A cake made for angels and chaplains alike! Contains holy water." icon_state = "holy_cake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/holy_cake_slice - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3, /datum/reagent/water/holywater = 10) + bonus_reagents = list("nutriment" = 1, "vitamin" = 3, "holy_water" = 10) tastes = list("cake" = 5, "sweetness" = 1, "clouds" = 1) foodtype = GRAIN | DAIRY | SUGAR @@ -300,7 +300,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake icon_state = "pound_cake" slices_num = 7 //Its ment to feed the party slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/pound_cake_slice - bonus_reagents = list(/datum/reagent/consumable/nutriment = 60) + bonus_reagents = list("nutriment" = 60) tastes = list("cake" = 5, "sweetness" = 1, "batter" = 1) foodtype = GRAIN | DAIRY | SUGAR | JUNKFOOD @@ -317,7 +317,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake desc = "A cake that is made with electronic boards and leaks acid..." icon_state = "hardware_cake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/hardware_cake_slice - bonus_reagents = list(/datum/reagent/toxin/acid = 15, /datum/reagent/oil = 15) + bonus_reagents = list("sacid" = 15, "oil" = 15) tastes = list("acid" = 1, "metal" = 1, "regret" = 10) foodtype = GRAIN | GROSS @@ -334,7 +334,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake desc = "A vanilla frosted cake." icon_state = "vanillacake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/vanilla_slice - bonus_reagents = list(/datum/reagent/consumable/sugar = 15, /datum/reagent/consumable/vanilla = 15) + bonus_reagents = list("sugar" = 15, "vanilla" = 15) tastes = list("cake" = 1, "sugar" = 1, "vanilla" = 10) foodtype = GRAIN | SUGAR | DAIRY @@ -351,7 +351,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake desc = "A funny cake with a clown face on it." icon_state = "clowncake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/clown_slice - bonus_reagents = list(/datum/reagent/consumable/sugar = 15, /datum/reagent/consumable/laughter = 15) + bonus_reagents = list("sugar" = 15, "laugher" = 15) tastes = list("cake" = 1, "sugar" = 1, "joy" = 10) foodtype = GRAIN | SUGAR | DAIRY @@ -368,7 +368,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake desc = "A peach filled cake." icon_state = "peachcake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/peach_slice - bonus_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/peachjuice = 15) + bonus_reagents = list("sugar" = 5, "peachjuice" = 15) tastes = list("cake" = 1, "sugar" = 1, "peachjuice" = 10) foodtype = GRAIN | SUGAR | DAIRY @@ -385,7 +385,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake desc = "A spaceman's trumpet frosted cake." icon_state = "trumpetcake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/trumpet - bonus_reagents = list(/datum/reagent/medicine/polypyr = 15, /datum/reagent/consumable/cream = 5, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/berryjuice = 5) + bonus_reagents = list("polypyr" = 15, "cream" = 5, "vitamin" = 5, "berryjuice" = 5) filling_color = "#7A3D80" tastes = list("cake" = 4, "violets" = 2, "jam" = 2) foodtype = GRAIN | DAIRY | FRUIT | SUGAR diff --git a/code/modules/food_and_drinks/food/snacks_egg.dm b/code/modules/food_and_drinks/food/snacks_egg.dm index 183e64ff7e..0d51db04ce 100644 --- a/code/modules/food_and_drinks/food/snacks_egg.dm +++ b/code/modules/food_and_drinks/food/snacks_egg.dm @@ -5,8 +5,8 @@ name = "chocolate egg" desc = "Such, sweet, fattening food." icon_state = "chocolateegg" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/sugar = 2, /datum/reagent/consumable/coco = 2) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list("nutriment" = 4, "sugar" = 2, "cocoa" = 2) filling_color = "#A0522D" tastes = list("chocolate" = 4, "sweetness" = 1) foodtype = JUNKFOOD | SUGAR @@ -15,7 +15,7 @@ name = "egg" desc = "An egg!" icon_state = "egg" - list_reagents = list(/datum/reagent/consumable/eggyolk = 5) + list_reagents = list("eggyolk" = 5) cooked_type = /obj/item/reagent_containers/food/snacks/boiledegg filling_color = "#F0E68C" foodtype = MEAT @@ -89,10 +89,10 @@ name = "fried egg" desc = "A fried egg, with a touch of salt and pepper." icon_state = "friedegg" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) bitesize = 1 filling_color = "#FFFFF0" - list_reagents = list(/datum/reagent/consumable/nutriment = 3) + list_reagents = list("nutriment" = 3) tastes = list("egg" = 4, "salt" = 1, "pepper" = 1) foodtype = MEAT | FRIED | BREAKFAST @@ -100,9 +100,9 @@ name = "boiled egg" desc = "A hard boiled egg." icon_state = "egg" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) filling_color = "#FFFFF0" - list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 2, "vitamin" = 1) tastes = list("egg" = 1) foodtype = MEAT | BREAKFAST @@ -111,8 +111,8 @@ desc = "That's all you can say!" icon_state = "omelette" trash = /obj/item/trash/plate - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + list_reagents = list("nutriment" = 8, "vitamin" = 1) bitesize = 1 w_class = WEIGHT_CLASS_NORMAL tastes = list("egg" = 1, "cheese" = 1) @@ -129,7 +129,7 @@ "You take a piece of omelette with your fork.") var/datum/reagent/R = pick(reagents.reagent_list) - reagents.remove_reagent(R.type, 1) + reagents.remove_reagent(R.id, 1) F.forkload = R if(reagents.total_volume <= 0) qdel(src) @@ -140,9 +140,9 @@ name = "eggs benedict" desc = "There is only one egg on this, how rude." icon_state = "benedict" - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("vitamin" = 4) trash = /obj/item/trash/plate w_class = WEIGHT_CLASS_NORMAL - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list("nutriment" = 6, "vitamin" = 4) tastes = list("egg" = 1, "bacon" = 1, "bun" = 1) foodtype = MEAT | BREAKFAST diff --git a/code/modules/food_and_drinks/food/snacks_frozen.dm b/code/modules/food_and_drinks/food/snacks_frozen.dm index 5cef5b6fb6..4a4c5ddb88 100644 --- a/code/modules/food_and_drinks/food/snacks_frozen.dm +++ b/code/modules/food_and_drinks/food/snacks_frozen.dm @@ -3,8 +3,8 @@ desc = "Portable Ice-cream in its own packaging." icon = 'icons/obj/food/food.dmi' icon_state = "icecreamsandwich" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/ice = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/ice = 2) + bonus_reagents = list("nutriment" = 1, "ice" = 2) + list_reagents = list("nutriment" = 2, "ice" = 2) tastes = list("ice cream" = 1) foodtype = GRAIN | DAIRY @@ -12,8 +12,8 @@ name = "sundae" desc = "A classic dessert." icon_state = "sundae" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/banana = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 2, "vitamin" = 1) + list_reagents = list("nutriment" = 6, "banana" = 5, "vitamin" = 2) filling_color = "#FFFACD" tastes = list("ice cream" = 1, "banana" = 1) foodtype = FRUIT | DAIRY | SUGAR @@ -22,8 +22,8 @@ name = "honkdae" desc = "The clown's favorite dessert." icon_state = "honkdae" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/banana = 10, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 2, "vitamin" = 2) + list_reagents = list("nutriment" = 6, "banana" = 10, "vitamin" = 4) filling_color = "#FFFACD" tastes = list("ice cream" = 1, "banana" = 1, "a bad joke" = 1) foodtype = FRUIT | DAIRY | SUGAR @@ -33,8 +33,8 @@ trash = /obj/item/reagent_containers/food/drinks/drinkingglass desc = "A long glass dish filled with ice-cream, chocolate and a banana down the middle. A timeless classic by any standards." icon_state = "banana_split" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 3) - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/banana = 10, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 5, "vitamin" = 3) + list_reagents = list("nutriment" = 3, "banana" = 10, "vitamin" = 2) filling_color = "#FFFACD" tastes = list("ice cream" = 1, "banana" = 1, "charries" = 1) foodtype = FRUIT | DAIRY | SUGAR @@ -44,8 +44,8 @@ trash = /obj/item/reagent_containers/food/drinks/drinkingglass desc = "A glass filled with cream, soda and ice-cream with a cherry on top." icon_state = "cola_float" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 3, "vitamin" = 1) + list_reagents = list("nutriment" = 3, "vitamin" = 2) filling_color = "#FFFACD" tastes = list("ice cream" = 1, "space coal" = 1, "cherries" = 1) foodtype = FRUIT | DAIRY | SUGAR @@ -55,8 +55,8 @@ trash = /obj/item/reagent_containers/food/drinks/drinkingglass desc = "Cherries mixed with ice-cream, known for its filling tastes" icon_state = "cherryshake" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/cherryshake = 15) + bonus_reagents = list("nutriment" = 3, "vitamin" = 1) + list_reagents = list("nutriment" = 3, "vitamin" = 2, "cherryshake" = 15) filling_color = "#FFFACD" tastes = list("ice cream" = 1, "charries" = 1) foodtype = FRUIT | DAIRY | SUGAR @@ -66,8 +66,8 @@ trash = /obj/item/reagent_containers/food/drinks/drinkingglass desc = "Cherries mixed with ice-cream, known for its filling tastes. This one is a exotic blue!" icon_state = "bluecherryshake" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/bluecherryshake = 10) + bonus_reagents = list("nutriment" = 3, "vitamin" = 1) + list_reagents = list("nutriment" = 3, "vitamin" = 2, "bluecherryshake" = 10) filling_color = "#FFFACD" tastes = list("ice cream" = 1, "blue cherries" = 1) foodtype = FRUIT | DAIRY | SUGAR @@ -76,8 +76,8 @@ name = "space freezy" desc = "The best icecream in space." icon_state = "spacefreezy" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/bluecherryjelly = 5, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 2, "vitamin" = 2) + list_reagents = list("nutriment" = 6, "bluecherryjelly" = 5, "vitamin" = 4) filling_color = "#87CEFA" tastes = list("blue cherries" = 2, "ice cream" = 2) foodtype = FRUIT | DAIRY @@ -91,8 +91,8 @@ icon = 'icons/obj/food/snowcones.dmi' icon_state = "flavorless_sc" trash = /obj/item/reagent_containers/food/drinks/sillycup //We dont eat paper cups - bonus_reagents = list(/datum/reagent/water = 10) //Base line will allways give water - list_reagents = list(/datum/reagent/water = 1) // We dont get food for water/juices + bonus_reagents = list("water" = 10) //Base line will allways give water + list_reagents = list("water" = 1) // We dont get food for water/juices filling_color = "#FFFFFF" //Ice is white tastes = list("ice" = 1, "water" = 1) foodtype = SUGAR //We use SUGAR as a base line to act in as junkfood, other wise we use fruit @@ -101,7 +101,7 @@ name = "lime snowcone" desc = "Lime syrup drizzled over a snowball in a paper cup." icon_state = "lime_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/limejuice = 5) + list_reagents = list("nutriment" = 1, "limejuice" = 5) tastes = list("ice" = 1, "water" = 1, "limes" = 5) foodtype = FRUIT @@ -109,7 +109,7 @@ name = "lemon snowcone" desc = "Lemon syrup drizzled over a snowball in a paper cup." icon_state = "lemon_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/lemonjuice = 5) + list_reagents = list("nutriment" = 1, "lemonjuice" = 5) tastes = list("ice" = 1, "water" = 1, "lemons" = 5) foodtype = FRUIT @@ -117,7 +117,7 @@ name = "apple snowcone" desc = "Apple syrup drizzled over a snowball in a paper cup." icon_state = "amber_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/applejuice = 5) + list_reagents = list("nutriment" = 1, "applejuice" = 5) tastes = list("ice" = 1, "water" = 1, "apples" = 5) foodtype = FRUIT @@ -125,7 +125,7 @@ name = "grape snowcone" desc = "Grape syrup drizzled over a snowball in a paper cup." icon_state = "grape_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/grapejuice = 5) + list_reagents = list("nutriment" = 1, "grapejuice" = 5) tastes = list("ice" = 1, "water" = 1, "grape" = 5) foodtype = FRUIT @@ -133,7 +133,7 @@ name = "orange snowcone" desc = "Orange syrup drizzled over a snowball in a paper cup." icon_state = "orange_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/orangejuice = 5) + list_reagents = list("nutriment" = 1, "orangejuice" = 5) tastes = list("ice" = 1, "water" = 1, "orange" = 5) foodtype = FRUIT @@ -141,7 +141,7 @@ name = "bluecherry snowcone" desc = "Bluecherry syrup drizzled over a snowball in a paper cup, how rare!" icon_state = "blue_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/bluecherryjelly = 5) + list_reagents = list("nutriment" = 1, "bluecherryjelly" = 5) tastes = list("ice" = 1, "water" = 1, "blue" = 5, "cherries" = 5) foodtype = FRUIT @@ -149,7 +149,7 @@ name = "cherry snowcone" desc = "Cherry syrup drizzled over a snowball in a paper cup." icon_state = "red_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/cherryjelly = 5) + list_reagents = list("nutriment" = 1, "cherryjelly" = 5) tastes = list("ice" = 1, "water" = 1, "red" = 5, "cherries" = 5) foodtype = FRUIT @@ -157,7 +157,7 @@ name = "kiwi snowcone" desc = "A kiwi snowball in a paper cup." icon_state = "kiwi_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 6) + list_reagents = list("nutriment" = 3, "vitamin" = 6) tastes = list("ice" = 1, "space" = 3, "kiwi" = 5) foodtype = FRUIT @@ -165,7 +165,7 @@ name = "peach snowcone" desc = "A peach snowball in a paper cup." icon_state = "peach_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/peachjuice = 10) + list_reagents = list("nutriment" = 1, "peachjuice" = 10) tastes = list("ice" = 1, "water" = 1, " peach" = 5) foodtype = FRUIT @@ -173,7 +173,7 @@ name = "strawberry snowcone" desc = "A strawberry snowball in a paper cup." icon_state = "blue_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/berryjuice = 10) + list_reagents = list("nutriment" = 1, "berryjuice" = 10) tastes = list("ice" = 1, "water" = 1, " strawberry" = 5) foodtype = FRUIT @@ -181,7 +181,7 @@ name = "berry snowcone" desc = "Berry syrup drizzled over a snowball in a paper cup." icon_state = "berry_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/berryjuice = 5) + list_reagents = list("nutriment" = 1, "berryjuice" = 5) tastes = list("ice" = 1, "water" = 1, "berries" = 5) foodtype = FRUIT @@ -189,7 +189,7 @@ name = "fruit salad snowcone" desc = "A delightful mix of citrus syrups drizzled over a snowball in a paper cup." icon_state = "fruitsalad_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/lemonjuice = 5, /datum/reagent/consumable/limejuice = 5, /datum/reagent/consumable/orangejuice = 5) + list_reagents = list("nutriment" = 1, "lemonjuice" = 5, "limejuice" = 5, "orangejuice" = 5) tastes = list("ice" = 1, "water" = 1, "oranges" = 5, "limes" = 5, "lemons" = 5, "citrus" = 5, "salad" = 5) foodtype = FRUIT @@ -197,7 +197,7 @@ name = "pineapple snowcone" desc = "Pineapple syrup drizzled over a snowball in a paper cup." icon_state = "pineapple_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/water = 10) + list_reagents = list("nutriment" = 1, "water" = 10) tastes = list("ice" = 1, "water" = 1, "pineapples" = 5) foodtype = PINEAPPLE //Pineapple to allow all that like pineapple to enjoy @@ -205,47 +205,47 @@ name = "mime snowcone" desc = "..." icon_state = "mime_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nothing = 5) + list_reagents = list("nutriment" = 1, "nothing" = 5) tastes = list("ice" = 1, "water" = 1, "nothing" = 5) /obj/item/reagent_containers/food/snacks/snowcones/clown name = "clown snowcone" desc = "Laughter drizzled over a snowball in a paper cup." icon_state = "clown_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/laughter = 5) + list_reagents = list("nutriment" = 1, "laughter" = 5) tastes = list("ice" = 1, "water" = 1, "jokes" = 5, "brainfreeze" = 5, "joy" = 5) /obj/item/reagent_containers/food/snacks/snowcones/soda name = "space cola snowcone" desc = "Space Cola drizzled over a snowball in a paper cup." icon_state = "soda_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/space_cola = 5) + list_reagents = list("nutriment" = 1, "space_cola" = 5) tastes = list("ice" = 1, "water" = 1, "cola" = 5) /obj/item/reagent_containers/food/snacks/snowcones/spacemountainwind name = "Space Mountain Wind snowcone" desc = "Space Mountain Wind drizzled over a snowball in a paper cup." icon_state = "kiwi_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/spacemountainwind = 5) + list_reagents = list("nutriment" = 1, "spacemountainwind" = 5) tastes = list("ice" = 1, "water" = 1, "mountain wind" = 5) /obj/item/reagent_containers/food/snacks/snowcones/pwrgame name = "pwrgame snowcone" desc = "Pwrgame soda drizzled over a snowball in a paper cup." icon_state = "pwrgame_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/pwr_game = 5) + list_reagents = list("nutriment" = 1, "pwr_game" = 5) tastes = list("ice" = 1, "water" = 1, "valid" = 5, "salt" = 5, "wats" = 5) /obj/item/reagent_containers/food/snacks/snowcones/honey name = "honey snowcone" desc = "Honey drizzled over a snowball in a paper cup." icon_state = "amber_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/honey = 5) + list_reagents = list("nutriment" = 1, "honey" = 5) tastes = list("ice" = 1, "water" = 1, "flowers" = 5, "sweetness" = 5, "wax" = 1) /obj/item/reagent_containers/food/snacks/snowcones/rainbow name = "rainbow snowcone" desc = "A very colorful snowball in a paper cup." icon_state = "rainbow_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/laughter = 25) - tastes = list("ice" = 1, "water" = 1, "sunlight" = 5, "light" = 5, "slime" = 5, "paint" = 3, "clouds" = 3) + list_reagents = list("nutriment" = 5, "laughter" = 25) + tastes = list("ice" = 1, "water" = 1, "sunlight" = 5, "light" = 5, "slime" = 5, "paint" = 3, "clouds" = 3) \ No newline at end of file diff --git a/code/modules/food_and_drinks/food/snacks_meat.dm b/code/modules/food_and_drinks/food/snacks_meat.dm index 5103418e6b..cf499c9d15 100644 --- a/code/modules/food_and_drinks/food/snacks_meat.dm +++ b/code/modules/food_and_drinks/food/snacks_meat.dm @@ -8,10 +8,10 @@ desc = "A grifftastic sandwich that burns your tongue and then leaves it numb!" icon_state = "cubancarp" trash = /obj/item/trash/plate - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 1, "vitamin" = 4) bitesize = 3 filling_color = "#CD853F" - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/capsaicin = 1) + list_reagents = list("nutriment" = 6, "capsaicin" = 1) tastes = list("fish" = 4, "batter" = 1, "hot peppers" = 1) foodtype = MEAT @@ -19,7 +19,7 @@ name = "carp fillet" desc = "A fillet of spess carp meat." icon_state = "fishfillet" - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/toxin/carpotoxin = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list("nutriment" = 3, "carpotoxin" = 2, "vitamin" = 2) bitesize = 6 filling_color = "#FA8072" tastes = list("fish" = 1) @@ -37,8 +37,8 @@ name = "fish fingers" desc = "A finger of fish." icon_state = "fishfingers" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 4) + bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + list_reagents = list("nutriment" = 4) bitesize = 1 filling_color = "#CD853F" tastes = list("fish" = 1, "breadcrumbs" = 1) @@ -48,8 +48,8 @@ name = "fish and chips" desc = "I do say so myself chap." icon_state = "fishandchips" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 6) + bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + list_reagents = list("nutriment" = 6) filling_color = "#FA8072" tastes = list("fish" = 1, "chips" = 1) foodtype = MEAT | VEGETABLES | FRIED @@ -59,8 +59,8 @@ desc = "A small cylindrical kudzu skin, filled with rice and fish." icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_basic" - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 4) + bonus_reagents = list("vitamin" = 2) + list_reagents = list("nutriment" = 4) bitesize = 10 filling_color = "#F2EEEA" //rgb(242, 238, 234) tastes = list("fish" = 1, "rice" = 2, "salt" = 1) @@ -71,8 +71,8 @@ desc = "A peace of carp lightly placed on some rice." icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_adv" - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 6) + bonus_reagents = list("vitamin" = 2) + list_reagents = list("nutriment" = 6) bitesize = 10 filling_color = "#F2EEEA" //rgb(242, 238, 234) tastes = list("fish" = 2, "rice" = 2, "salt" = 1) @@ -83,8 +83,8 @@ desc = "A well prepared peace of the best of the carp fillet placed on rice. Looks fancy and fresh!" icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_pro" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 2, "vitamin" = 2) + list_reagents = list("nutriment" = 6, "vitamin" = 2) bitesize = 10 filling_color = "#F2EEEA" //rgb(242, 238, 234) tastes = list("fish" = 3, "rice" = 2, "salt" = 1) @@ -97,7 +97,7 @@ name = "tofu" desc = "We all love tofu." icon_state = "tofu" - list_reagents = list(/datum/reagent/consumable/nutriment = 2) + list_reagents = list("nutriment" = 2) filling_color = "#F0E68C" tastes = list("tofu" = 1) foodtype = VEGETABLES @@ -106,7 +106,7 @@ name = "spider leg" desc = "A still twitching leg of a giant spider... you don't really want to eat this, do you?" icon_state = "spiderleg" - list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/toxin = 2) + list_reagents = list("nutriment" = 2, "toxin" = 2) cooked_type = /obj/item/reagent_containers/food/snacks/boiledspiderleg filling_color = "#000000" tastes = list("cobwebs" = 1) @@ -117,8 +117,8 @@ desc = "Now you can feel like a real tourist vacationing in Ireland." icon_state = "cornedbeef" trash = /obj/item/trash/plate - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) - list_reagents = list(/datum/reagent/consumable/nutriment = 5) + bonus_reagents = list("nutriment" = 1, "vitamin" = 4) + list_reagents = list("nutriment" = 5) tastes = list("meat" = 1, "cabbage" = 1) foodtype = MEAT | VEGETABLES @@ -127,8 +127,8 @@ desc = "Because eating bear wasn't manly enough." icon_state = "bearsteak" trash = /obj/item/trash/plate - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 6) - list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/ethanol/manly_dorf = 5) + bonus_reagents = list("nutriment" = 2, "vitamin" = 6) + list_reagents = list("nutriment" = 2, "vitamin" = 5, "manlydorf" = 5) tastes = list("meat" = 1, "salmon" = 1) foodtype = MEAT | ALCOHOL @@ -136,7 +136,7 @@ name = "faggot" desc = "A great meal all round. Not a cord of wood." icon_state = "faggot" - list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 4, "vitamin" = 1) filling_color = "#800000" tastes = list("meat" = 1) foodtype = MEAT @@ -146,8 +146,8 @@ desc = "A piece of mixed, long meat." icon_state = "sausage" filling_color = "#CD5C5C" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list("nutriment" = 6, "vitamin" = 1) tastes = list("meat" = 1) foodtype = MEAT | BREAKFAST var/roasted = FALSE @@ -160,35 +160,35 @@ trash = /obj/item/stack/rods icon_state = "kebab" w_class = WEIGHT_CLASS_NORMAL - list_reagents = list(/datum/reagent/consumable/nutriment = 8) + list_reagents = list("nutriment" = 8) tastes = list("meat" = 3, "metal" = 1) foodtype = MEAT /obj/item/reagent_containers/food/snacks/kebab/human name = "human-kebab" desc = "A human meat, on a stick." - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 6) + bonus_reagents = list("nutriment" = 1, "vitamin" = 6) tastes = list("tender meat" = 3, "metal" = 1) foodtype = MEAT | GROSS /obj/item/reagent_containers/food/snacks/kebab/monkey name = "meat-kebab" desc = "Delicious meat, on a stick." - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 1, "vitamin" = 2) tastes = list("meat" = 3, "metal" = 1) foodtype = MEAT /obj/item/reagent_containers/food/snacks/kebab/tofu name = "tofu-kebab" desc = "Vegan meat, on a stick." - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1) + bonus_reagents = list("nutriment" = 1) tastes = list("tofu" = 3, "metal" = 1) foodtype = VEGETABLES /obj/item/reagent_containers/food/snacks/kebab/tail name = "lizard-tail kebab" desc = "Severed lizard tail on a stick." - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 1, "vitamin" = 4) tastes = list("meat" = 8, "metal" = 4, "scales" = 1) foodtype = MEAT @@ -196,7 +196,7 @@ name = "raw khinkali" desc = "One hundred khinkalis? Do I look like a pig?" icon_state = "khinkali" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 1, "vitamin" = 1) cooked_type = /obj/item/reagent_containers/food/snacks/khinkali tastes = list("meat" = 1, "onions" = 1, "garlic" = 1) foodtype = MEAT @@ -205,7 +205,7 @@ name = "khinkali" desc = "One hundred khinkalis? Do I look like a pig?" icon_state = "khinkali" - list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list("nutriment" = 4, "vitamin" = 2) bitesize = 3 filling_color = "#F0F0F0" tastes = list("meat" = 1, "onions" = 1, "garlic" = 1) @@ -216,7 +216,7 @@ desc = "Just add water!" icon_state = "monkeycube" bitesize = 12 - list_reagents = list(/datum/reagent/consumable/nutriment = 2) + list_reagents = list("nutriment" = 2) filling_color = "#CD853F" tastes = list("the jungle" = 1, "bananas" = 1) foodtype = MEAT | SUGAR @@ -244,10 +244,10 @@ name = "enchiladas" desc = "Viva La Mexico!" icon_state = "enchiladas" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 1, "vitamin" = 2) bitesize = 4 filling_color = "#FFA07A" - list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/capsaicin = 6) + list_reagents = list("nutriment" = 8, "capsaicin" = 6) tastes = list("hot peppers" = 1, "meat" = 3, "cheese" = 1, "sour cream" = 1) foodtype = MEAT @@ -256,8 +256,8 @@ desc = "Even non-vegetarians will LOVE this!" icon_state = "stewedsoymeat" trash = /obj/item/trash/plate - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 8) + bonus_reagents = list("nutriment" = 1) + list_reagents = list("nutriment" = 8) filling_color = "#D2691E" tastes = list("soy" = 1, "vegetables" = 1) foodtype = VEGETABLES @@ -271,8 +271,8 @@ desc = "A giant spider's leg that's still twitching after being cooked. Gross!" icon_state = "spiderlegcooked" trash = /obj/item/trash/plate - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/capsaicin = 2, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/capsaicin = 2) + bonus_reagents = list("nutriment" = 1, "capsaicin" = 2, "vitamin" = 2) + list_reagents = list("nutriment" = 3, "capsaicin" = 2) filling_color = "#000000" tastes = list("hot peppers" = 1, "cobwebs" = 1) foodtype = MEAT @@ -282,8 +282,8 @@ desc = "Would you eat them on a train? Would you eat them on a plane? Would you eat them on a state of the art corporate deathtrap floating through space?" icon_state = "spidereggsham" trash = /obj/item/trash/plate - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) - list_reagents = list(/datum/reagent/consumable/nutriment = 6) + bonus_reagents = list("nutriment" = 1, "vitamin" = 3) + list_reagents = list("nutriment" = 6) bitesize = 4 filling_color = "#7FFF00" tastes = list("meat" = 1, "the colour green" = 1) @@ -293,8 +293,8 @@ name = "carp sashimi" desc = "Celebrate surviving attack from hostile alien lifeforms by hospitalising yourself." icon_state = "sashimi" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/capsaicin = 4, /datum/reagent/consumable/nutriment/vitamin = 4) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/capsaicin = 5) + bonus_reagents = list("nutriment" = 1, "capsaicin" = 4, "vitamin" = 4) + list_reagents = list("nutriment" = 6, "capsaicin" = 5) filling_color = "#FA8072" tastes = list("fish" = 1, "hot peppers" = 1) foodtype = MEAT | TOXIC @@ -302,8 +302,8 @@ /obj/item/reagent_containers/food/snacks/nugget name = "chicken nugget" filling_color = "#B22222" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 2) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list("nutriment" = 2) tastes = list("\"chicken\"" = 1) foodtype = MEAT @@ -317,8 +317,8 @@ name = "pig in a blanket" desc = "A tiny sausage wrapped in a flakey, buttery roll. Free this pig from its blanket prison by eating it." icon_state = "pigblanket" - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 1) - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 6, "vitamin" = 1) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) filling_color = "#800000" tastes = list("meat" = 1, "butter" = 1) @@ -328,14 +328,14 @@ icon_state = "dorndog" trash = /obj/item/trash/plate/alt tastes = list("hotdog" = 2, "mustard and ketchup" = 1, "fryed bread" = 1) - bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/mustard = 5, /datum/reagent/consumable/ketchup = 5) + bonus_reagents = list("nutriment" = 6, "vitamin" = 2, "mustard" = 5, "ketchup" = 5) /obj/item/reagent_containers/food/snacks/kebab/rat name = "rat-kebab" desc = "Not so delicious rat meat, on a stick." icon_state = "ratkebab" w_class = WEIGHT_CLASS_NORMAL - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list("nutriment" = 6, "vitamin" = 2) tastes = list("rat meat" = 1, "metal" = 1) foodtype = MEAT | GROSS @@ -343,20 +343,20 @@ name = "double rat-kebab" icon_state = "doubleratkebab" tastes = list("rat meat" = 2, "metal" = 1) - bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 6, "vitamin" = 2) /obj/item/reagent_containers/food/snacks/kebab/fiesta name = "fiesta skewer" icon_state = "fiestaskewer" tastes = list("tex-mex" = 3, "cumin" = 2) - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/capsaicin = 3) + bonus_reagents = list("vitamin" = 5, "capsaicin" = 3) /obj/item/reagent_containers/food/snacks/bbqribs name = "bbq ribs" desc = "BBQ ribs, slathered in a healthy coating of BBQ sauce. The least vegan thing to ever exist." icon_state = "ribs" w_class = WEIGHT_CLASS_NORMAL - list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/bbqsauce = 5) - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 8, "vitamin" = 2, "bbqsauce" = 5) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) tastes = list("meat" = 3, "smokey sauce" = 1) foodtype = MEAT \ No newline at end of file diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index a85623cabd..58a0ab4382 100644 --- a/code/modules/food_and_drinks/food/snacks_other.dm +++ b/code/modules/food_and_drinks/food/snacks_other.dm @@ -7,7 +7,7 @@ icon_state = "cheesewheel" slice_path = /obj/item/reagent_containers/food/snacks/cheesewedge slices_num = 5 - list_reagents = list(/datum/reagent/consumable/nutriment = 15, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list("nutriment" = 15, "vitamin" = 5) w_class = WEIGHT_CLASS_NORMAL tastes = list("cheese" = 1) foodtype = DAIRY @@ -17,7 +17,7 @@ desc = "A wedge of delicious Cheddar. The cheese wheel it was cut from can't have gone far." icon_state = "cheesewedge" filling_color = "#FFD700" - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 3, "vitamin" = 1) tastes = list("cheese" = 1) foodtype = DAIRY @@ -28,13 +28,13 @@ filling_color = "#FF1493" tastes = list("watermelon" = 1) foodtype = FRUIT - juice_results = list(/datum/reagent/consumable/watermelonjuice = 5) + juice_results = list("watermelonjuice" = 5) /obj/item/reagent_containers/food/snacks/candy_corn name = "candy corn" desc = "It's a handful of candy corn. Can be stored in a detective's hat." icon_state = "candy_corn" - list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/sugar = 2) + list_reagents = list("nutriment" = 4, "sugar" = 2) filling_color = "#FF8C00" tastes = list("candy corn" = 1) foodtype = JUNKFOOD | SUGAR @@ -43,7 +43,7 @@ name = "chocolate bar" desc = "Such, sweet, fattening food." icon_state = "chocolatebar" - list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/sugar = 2, /datum/reagent/consumable/coco = 2) + list_reagents = list("nutriment" = 2, "sugar" = 2, "cocoa" = 2) filling_color = "#A0522D" tastes = list("chocolate" = 1) foodtype = JUNKFOOD | SUGAR @@ -53,7 +53,7 @@ name = "huge mushroom slice" desc = "A slice from a huge mushroom." icon_state = "hugemushroomslice" - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 3, "vitamin" = 1) tastes = list("mushroom" = 1) foodtype = VEGETABLES @@ -62,7 +62,7 @@ desc = "Now let's find some cinema." icon_state = "popcorn" trash = /obj/item/trash/popcorn - list_reagents = list(/datum/reagent/consumable/nutriment = 2) + list_reagents = list("nutriment" = 2) bitesize = 0.1 //this snack is supposed to be eating during looooong time. And this it not dinner food! --rastaf0 filling_color = "#FFEFD5" tastes = list("popcorn" = 3, "butter" = 1) @@ -76,8 +76,8 @@ name = "loaded baked potato" desc = "Totally baked." icon_state = "loadedbakedpotato" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 6) + bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + list_reagents = list("nutriment" = 6) filling_color = "#D2B48C" tastes = list("potato" = 1) foodtype = VEGETABLES | DAIRY @@ -87,7 +87,7 @@ desc = "AKA: French Fries, Freedom Fries, etc." icon_state = "fries" trash = /obj/item/trash/plate - list_reagents = list(/datum/reagent/consumable/nutriment = 4) + list_reagents = list("nutriment" = 4) filling_color = "#FFD700" tastes = list("fries" = 3, "salt" = 1) foodtype = VEGETABLES | GRAIN | FRIED @@ -97,7 +97,7 @@ name = "tator tot" desc = "A large fried potato nugget that may or may not try to valid you." icon_state = "tatortot" - list_reagents = list(/datum/reagent/consumable/nutriment = 4) + list_reagents = list("nutriment" = 4) filling_color = "FFD700" tastes = list("potato" = 3, "valids" = 1) foodtype = FRIED | VEGETABLES @@ -108,7 +108,7 @@ desc = "Dope from a soy." icon_state = "soydope" trash = /obj/item/trash/plate - list_reagents = list(/datum/reagent/consumable/nutriment = 2) + list_reagents = list("nutriment" = 2) filling_color = "#DEB887" tastes = list("soy" = 1) foodtype = VEGETABLES @@ -119,8 +119,8 @@ desc = "Fries. Covered in cheese. Duh." icon_state = "cheesyfries" trash = /obj/item/trash/plate - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 6) + bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + list_reagents = list("nutriment" = 6) filling_color = "#FFD700" tastes = list("fries" = 3, "cheese" = 1) foodtype = VEGETABLES | GRAIN @@ -129,7 +129,7 @@ name = "burned mess" desc = "Someone should be demoted from cook for this." icon_state = "badrecipe" - list_reagents = list(/datum/reagent/toxin/bad_food = 30) + list_reagents = list("bad_food" = 30) filling_color = "#8B4513" foodtype = GROSS dunkable = TRUE @@ -139,7 +139,7 @@ desc = "Tasty fries from fresh Carrots." icon_state = "carrotfries" trash = /obj/item/trash/plate - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/medicine/oculine = 3, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list("nutriment" = 3, "oculine" = 3, "vitamin" = 2) filling_color = "#FFA500" tastes = list("carrots" = 3, "salt" = 1) foodtype = VEGETABLES @@ -149,8 +149,8 @@ desc = "An apple coated in sugary sweetness." icon_state = "candiedapple" bitesize = 3 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/sugar = 3) - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/sugar = 2) + bonus_reagents = list("nutriment" = 2, "sugar" = 3) + list_reagents = list("nutriment" = 3, "sugar" = 2) filling_color = "#FF4500" tastes = list("apple" = 2, "sweetness" = 2) foodtype = JUNKFOOD | FRUIT | SUGAR @@ -161,7 +161,7 @@ icon_state = "mint" bitesize = 1 trash = /obj/item/trash/plate - list_reagents = list(/datum/reagent/toxin/minttoxin = 2) + list_reagents = list("minttoxin" = 2) filling_color = "#800000" foodtype = TOXIC | SUGAR @@ -169,8 +169,8 @@ name = "egg wrap" desc = "The precursor to Pigs in a Blanket." icon_state = "eggwrap" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) - list_reagents = list(/datum/reagent/consumable/nutriment = 5) + bonus_reagents = list("nutriment" = 1, "vitamin" = 3) + list_reagents = list("nutriment" = 5) filling_color = "#F0E68C" tastes = list("egg" = 1) foodtype = MEAT | GRAIN @@ -179,8 +179,8 @@ name = "tin of beans" desc = "Musical fruit in a slightly less musical container." icon_state = "beans" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 10) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list("nutriment" = 10) filling_color = "#B22222" tastes = list("beans" = 1) foodtype = VEGETABLES @@ -189,7 +189,7 @@ name = "spider eggs" desc = "A cluster of juicy spider eggs. A great side dish for when you care not for your health." icon_state = "spidereggs" - list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/toxin = 2) + list_reagents = list("nutriment" = 2, "toxin" = 2) filling_color = "#008000" tastes = list("cobwebs" = 1) foodtype = MEAT | TOXIC @@ -198,7 +198,7 @@ name = "spiderling" desc = "It's slightly twitching in your hand. Ew..." icon_state = "spiderling" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/toxin = 4) + list_reagents = list("nutriment" = 1, "toxin" = 4) filling_color = "#00800" tastes = list("cobwebs" = 1, "guts" = 2) foodtype = MEAT | TOXIC @@ -207,7 +207,7 @@ name = "spider lollipop" desc = "Still gross, but at least it has a mountain of sugar on it." icon_state = "spiderlollipop" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/toxin = 1, /datum/reagent/iron = 10, /datum/reagent/consumable/sugar = 5, /datum/reagent/medicine/omnizine = 2) //lollipop, but vitamins = toxins + list_reagents = list("nutriment" = 1, "toxin" = 1, "iron" = 10, "sugar" = 5, "omnizine" = 2) //lollipop, but vitamins = toxins filling_color = "#00800" tastes = list("cobwebs" = 1, "sugar" = 2) foodtype = JUNKFOOD | SUGAR @@ -217,7 +217,7 @@ desc = "Spider eggs wrapped in a thin salted Kudzu pod" icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_egg" - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list("nutriment" = 6, "vitamin" = 2) filling_color = "#FF3333" // R225 G051 B051 tastes = list("seaweed" = 1, "cobwebs" = 1, "salty" = 2) foodtype = MEAT | VEGETABLES @@ -226,8 +226,8 @@ name = "chocolate coin" desc = "A completely edible but nonflippable festive coin." icon_state = "chococoin" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/coco = 1) + bonus_reagents = list("nutriment" = 1, "sugar" = 1) + list_reagents = list("nutriment" = 3, "cocoa" = 1) filling_color = "#A0522D" tastes = list("chocolate" = 1) foodtype = JUNKFOOD | SUGAR @@ -236,8 +236,8 @@ name = "fudge dice" desc = "A little cube of chocolate that tends to have a less intense taste if you eat too many at once." icon_state = "chocodice" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/coco = 1) + bonus_reagents = list("nutriment" = 1, "sugar" = 1) + list_reagents = list("nutriment" = 3, "cocoa" = 1) filling_color = "#A0522D" trash = /obj/item/dice/fudge tastes = list("fudge" = 1) @@ -247,8 +247,8 @@ name = "chocolate orange" desc = "A festive chocolate orange." icon_state = "chocoorange" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/sugar = 1) + bonus_reagents = list("nutriment" = 1, "sugar" = 1) + list_reagents = list("nutriment" = 3, "sugar" = 1) filling_color = "#A0522D" tastes = list("chocolate" = 3, "oranges" = 1) foodtype = JUNKFOOD | SUGAR @@ -258,8 +258,8 @@ desc = "The only good recipe for eggplant." icon_state = "eggplantparm" trash = /obj/item/trash/plate - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 1, "vitamin" = 3) + list_reagents = list("nutriment" = 6, "vitamin" = 2) filling_color = "#BA55D3" tastes = list("eggplant" = 3, "cheese" = 1) foodtype = VEGETABLES | DAIRY @@ -269,7 +269,7 @@ desc = "The base for all your burritos." icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "tortilla" - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 3, "vitamin" = 1) filling_color = "#FFEFD5" tastes = list("tortilla" = 1) foodtype = GRAIN @@ -278,8 +278,8 @@ name = "burrito" desc = "Tortilla wrapped goodness." icon_state = "burrito" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 2, "vitamin" = 2) + list_reagents = list("nutriment" = 4, "vitamin" = 1) filling_color = "#FFEFD5" tastes = list("torilla" = 2, "meat" = 3) foodtype = GRAIN | MEAT @@ -288,8 +288,8 @@ name = "cheesy burrito" desc = "It's a burrito filled with cheese." icon_state = "cheesyburrito" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + list_reagents = list("nutriment" = 4, "vitamin" = 2) filling_color = "#FFD800" tastes = list("torilla" = 2, "meat" = 3, "cheese" = 1) foodtype = GRAIN | MEAT | DAIRY @@ -298,8 +298,8 @@ name = "carne asada burrito" desc = "The best burrito for meat lovers." icon_state = "carneburrito" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 2, "vitamin" = 1) + list_reagents = list("nutriment" = 5, "vitamin" = 1) filling_color = "#A0522D" tastes = list("torilla" = 2, "meat" = 4) foodtype = GRAIN | MEAT @@ -308,8 +308,8 @@ name = "fuego plasma burrito" desc = "A super spicy burrito." icon_state = "fuegoburrito" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 3) - list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/capsaicin = 5, /datum/reagent/consumable/nutriment/vitamin = 3) + bonus_reagents = list("nutriment" = 2, "vitamin" = 3) + list_reagents = list("nutriment" = 4, "capsaicin" = 5, "vitamin" = 3) filling_color = "#FF2000" tastes = list("torilla" = 2, "meat" = 3, "hot peppers" = 1) foodtype = GRAIN | MEAT @@ -319,7 +319,7 @@ desc = "Made with roasted sweet potatoes!" icon_state = "yakiimo" trash = /obj/item/trash/plate - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list("nutriment" = 5, "vitamin" = 4) filling_color = "#8B1105" tastes = list("sweet potato" = 1) foodtype = GRAIN | VEGETABLES | SUGAR @@ -329,7 +329,7 @@ desc = "Sweet and crunchy." icon_state = "roastparsnip" trash = /obj/item/trash/plate - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list("nutriment" = 3, "vitamin" = 4) filling_color = "#FF5500" tastes = list("parsnip" = 1) foodtype = VEGETABLES @@ -338,8 +338,8 @@ name = "melon fruit bowl" desc = "For people who wants edible fruit bowls." icon_state = "melonfruitbowl" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 2, "vitamin" = 2) + list_reagents = list("nutriment" = 6, "vitamin" = 4) filling_color = "#FF5500" w_class = WEIGHT_CLASS_NORMAL tastes = list("melon" = 1) @@ -349,8 +349,8 @@ name = "nachos" desc = "Chips from Space Mexico." icon_state = "nachos" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list("nutriment" = 6, "vitamin" = 2) filling_color = "#F4A460" tastes = list("nachos" = 1) foodtype = VEGETABLES | FRIED @@ -359,8 +359,8 @@ name = "cheesy nachos" desc = "The delicious combination of nachos and melting cheese." icon_state = "cheesynachos" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 3) + bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + list_reagents = list("nutriment" = 6, "vitamin" = 3) filling_color = "#FFD700" tastes = list("nachos" = 2, "cheese" = 1) foodtype = VEGETABLES | FRIED | DAIRY @@ -369,8 +369,8 @@ name = "Cuban nachos" desc = "That's some dangerously spicy nachos." icon_state = "cubannachos" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 3) - list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/capsaicin = 8, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 2, "vitamin" = 3) + list_reagents = list("nutriment" = 7, "capsaicin" = 8, "vitamin" = 4) filling_color = "#DC143C" tastes = list("nachos" = 2, "hot pepper" = 1) foodtype = VEGETABLES | FRIED | DAIRY @@ -379,8 +379,8 @@ name = "melon keg" desc = "Who knew vodka was a fruit?" icon_state = "melonkeg" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 3) - list_reagents = list(/datum/reagent/consumable/nutriment = 9, /datum/reagent/consumable/ethanol/vodka = 15, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 3, "vitamin" = 3) + list_reagents = list("nutriment" = 9, "vodka" = 15, "vitamin" = 4) filling_color = "#FFD700" volume = 80 bitesize = 5 @@ -391,8 +391,8 @@ name = "honey nut bar" desc = "Oats and nuts compressed together into a bar, held together with a honey glaze." icon_state = "honeybar" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/honey = 2, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/honey = 5) + bonus_reagents = list("nutriment" = 2, "honey" = 2, "vitamin" = 2) + list_reagents = list("nutriment" = 5, "honey" = 5) filling_color = "#F2CE91" tastes = list("oats" = 3, "nuts" = 2, "honey" = 1) foodtype = FRUIT | SUGAR @@ -401,8 +401,8 @@ name = "stuffed legion" desc = "The former skull of a damned human, filled with goliath meat. It has a decorative lava pool made of ketchup and hotsauce." icon_state = "stuffed_legion" - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 3, /datum/reagent/consumable/capsaicin = 1, /datum/reagent/medicine/tricordrazine = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/capsaicin = 2, /datum/reagent/medicine/tricordrazine = 10) + bonus_reagents = list("vitamin" = 3, "capsaicin" = 1, "tricordrazine" = 5) + list_reagents = list("nutriment" = 5, "vitamin" = 5, "capsaicin" = 2, "tricordrazine" = 10) tastes = list("death" = 2, "rock" = 1, "meat" = 1, "hot peppers" = 1) foodtype = MEAT @@ -410,8 +410,8 @@ name = "Powercrepe" desc = "With great power, comes great crepes. It looks like a pancake filled with jelly but packs quite a punch." icon_state = "powercrepe" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 3, /datum/reagent/iron = 10) - list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/cherryjelly = 5) + bonus_reagents = list("nutriment" = 5, "vitamin" = 3, "iron" = 10) + list_reagents = list("nutriment" = 10, "vitamin" = 5, "cherryjelly" = 5) force = 20 throwforce = 10 block_chance = 50 @@ -426,7 +426,7 @@ desc = "A delicious lollipop. Makes for a great Valentine's present." icon = 'icons/obj/lollipop.dmi' icon_state = "lollipop_stick" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/iron = 10, /datum/reagent/consumable/sugar = 5, /datum/reagent/medicine/omnizine = 2) //Honk + list_reagents = list("nutriment" = 1, "vitamin" = 1, "iron" = 10, "sugar" = 5, "omnizine" = 2) //Honk var/mutable_appearance/head var/headcolor = rgb(0, 0, 0) tastes = list("candy" = 1) @@ -468,7 +468,7 @@ desc = "A colorful, sugary gumball." icon = 'icons/obj/lollipop.dmi' icon_state = "gumball" - list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/medicine/bicaridine = 2, /datum/reagent/medicine/kelotane = 2) //Kek + list_reagents = list("sugar" = 5, "bicaridine" = 2, "kelotane" = 2) //Kek tastes = list("candy") foodtype = JUNKFOOD @@ -495,8 +495,8 @@ name = "taco" desc = "A traditional taco with meat, cheese, and lettuce." icon_state = "taco" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 3, "vitamin" = 2) + list_reagents = list("nutriment" = 4, "vitamin" = 2) filling_color = "F0D830" tastes = list("taco" = 4, "meat" = 2, "cheese" = 2, "lettuce" = 1) foodtype = MEAT | DAIRY | GRAIN | VEGETABLES @@ -504,8 +504,8 @@ /obj/item/reagent_containers/food/snacks/taco/plain desc = "A traditional taco with meat and cheese, minus the rabbit food." icon_state = "taco_plain" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 2, "vitamin" = 2) + list_reagents = list("nutriment" = 3, "vitamin" = 1) tastes = list("taco" = 4, "meat" = 2, "cheese" = 2) foodtype = MEAT | DAIRY | GRAIN @@ -513,8 +513,8 @@ name = "Bran Requests Cereal" desc = "A dry cereal that satiates your requests for bran. Tastes uniquely like raisins and salt." icon_state = "bran_requests" - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/sodiumchloride = 5) - bonus_reagents = list(/datum/reagent/consumable/sodiumchloride = 10) + list_reagents = list("nutriment" = 3, "vitamin" = 2, "sodiumchloride" = 5) + bonus_reagents = list("sodiumchloride" = 10) tastes = list("bran" = 4, "raisins" = 3, "salt" = 1) foodtype = GRAIN | FRUIT @@ -522,7 +522,7 @@ name = "stick of butter" desc = "A stick of delicious, golden, fatty goodness." icon_state = "butter" - list_reagents = list(/datum/reagent/consumable/nutriment = 5) + list_reagents = list("nutriment" = 5) filling_color = "#FFD700" tastes = list("butter" = 1) foodtype = DAIRY @@ -531,7 +531,7 @@ name = "onion rings" desc = "Onion slices coated in batter." icon_state = "onionrings" - list_reagents = list(/datum/reagent/consumable/nutriment = 3) + list_reagents = list("nutriment" = 3) filling_color = "#C0C9A0" gender = PLURAL tastes = list("batter" = 3, "onion" = 1) @@ -549,7 +549,7 @@ name = "chocolate" desc = "A tiny and sweet chocolate. Has a 'strawberry' filling!" icon_state = "tiny_chocolate" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/coco = 1, /datum/reagent/drug/aphrodisiac = 1) + list_reagents = list("nutriment" = 1, "sugar" = 1, "cocoa" = 1, "aphro" = 1) filling_color = "#A0522D" tastes = list("chocolate" = 1) foodtype = JUNKFOOD | SUGAR @@ -559,7 +559,7 @@ desc = "A ball of rice with some light salt and a wrap of Kudzu skin." icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "riceball" - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/sodiumchloride = 2) + list_reagents = list("nutriment" = 6, "sodiumchloride" = 2) tastes = list("rice" = 3, "salt" = 1) foodtype = GRAIN @@ -567,7 +567,7 @@ name = "Canned Peaches" desc = "Just a nice can of ripe peaches swimming in their own juices." icon_state = "peachcan" - list_reagents = list(/datum/reagent/consumable/peachjuice = 20, /datum/reagent/consumable/sugar = 8, /datum/reagent/consumable/nutriment = 2) + list_reagents = list("peachjuice" = 20, "sugar" = 8, "nutriment" = 2) filling_color = "#ffdf26" w_class = WEIGHT_CLASS_NORMAL tastes = list("peaches" = 7, "tin" = 1) @@ -583,7 +583,7 @@ name = "Chocolate dipped strawberries" desc = "A strawberry dipped in a bit of chocolate." icon_state = "chocolatestrawberry" - list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/nutriment = 2) + list_reagents = list("sugar" = 5, "nutriment" = 2) filling_color = "#ffdf26" tastes = list("strawberries" = 5, "chocolate" = 3) foodtype = FRUIT | SUGAR @@ -593,7 +593,7 @@ name = "Chocolate dipped banana" desc = "A banana dipped in a bit of chocolate and held on a stick." icon_state = "banana_coco" - list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("sugar" = 5, "nutriment" = 3, "vitamin" = 1) filling_color = "#ffdf26" tastes = list("banana" = 5, "chocolate" = 3) foodtype = FRUIT | SUGAR @@ -605,72 +605,8 @@ icon_state = "boritos" trash = /obj/item/trash/boritos bitesize = 2 - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/cooking_oil = 2, /datum/reagent/consumable/sodiumchloride = 3) + list_reagents = list("nutriment" = 3, "cooking_oil" = 2, "sodiumchloride" = 3) filling_color = "#ECA735" tastes = list("fried corn" = 1) foodtype = JUNKFOOD | FRIED - dunkable = TRUE - -/obj/item/reagent_containers/food/snacks/marshmallow - name = "marshmallow" - desc = "A marshmallow filled with fluffy marshmallow fluff." - icon_state = "marshmallow" - list_reagents = list("sugar" = 5, "nutriment" = 2) - filling_color = "#fafafa" - w_class = WEIGHT_CLASS_TINY - tastes = list("marshmallow" = 2) - foodtype = SUGAR | JUNKFOOD - var/burned = 0 - -/obj/item/reagent_containers/food/snacks/marshmallow/attackby(obj/item/I, mob/user) - switch (I.get_temperature()) - if (355 to 1500) - if (prob(30)) - burnmallow() - if (1500 to 2000) - if (prob(50)) - burnmallow() - else - burnmallow(TRUE) - if (2000 to 3000) - if (prob(10)) - burnmallow() - else - burnmallow(TRUE) - if (3000 to INFINITY) - burnmallow(TRUE) - return ..() - -/obj/item/reagent_containers/food/snacks/marshmallow/proc/burnmallow(reallyburned = FALSE) - if (reallyburned && burned == 1) - icon_state = "marshmallowrburned" - else if (burned == 0) - icon_state = "marshmallowburned" - -/obj/item/reagent_containers/food/snacks/marshmallow/examine(mob/user) - . = ..() - if (burned == 2) - . += "It looks very burned." - if (burned == 1) - . += "It looks just right for eating!" - -/obj/item/reagent_containers/food/snacks/marshmallow/fire_act(temp,volume) - switch (temp) - if (355 to 1500) - if (prob(30)) - burnmallow() - if (1500 to 2000) - if (prob(50)) - burnmallow() - else - burnmallow(TRUE) - if (2000 to 3000) - if (prob(10)) - burnmallow() - else - burnmallow(TRUE) - if (3000 to 7000) - burnmallow(TRUE) - if (7000 to INFINITY) - burn() - ..() + dunkable = TRUE \ No newline at end of file diff --git a/code/modules/food_and_drinks/food/snacks_pastry.dm b/code/modules/food_and_drinks/food/snacks_pastry.dm index 516c8b2c31..de5d577193 100644 --- a/code/modules/food_and_drinks/food/snacks_pastry.dm +++ b/code/modules/food_and_drinks/food/snacks_pastry.dm @@ -8,8 +8,8 @@ icon = 'icons/obj/food/donut.dmi' icon_state = "donut" bitesize = 5 - bonus_reagents = list(/datum/reagent/consumable/sugar = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/sugar = 2) + bonus_reagents = list("sugar" = 1) + list_reagents = list("nutriment" = 3, "sprinkles" = 1, "sugar" = 2) filling_color = "#D2691E" tastes = list("donut" = 1) foodtype = JUNKFOOD | GRAIN | FRIED | SUGAR | BREAKFAST @@ -30,7 +30,7 @@ is_decorated = TRUE name = "[decorated_adjective] [name]" icon_state = decorated_icon //delish~! - reagents.add_reagent(/datum/reagent/consumable/sprinkles, 1) + reagents.add_reagent("sprinkles", 1) filling_color = "#FF69B4" return TRUE @@ -58,18 +58,15 @@ /obj/item/reagent_containers/food/snacks/donut/chaos/Initialize() . = ..() - extra_reagent = pick(/datum/reagent/consumable/nutriment, /datum/reagent/consumable/capsaicin, /datum/reagent/consumable/frostoil, - /datum/reagent/drug/krokodil, /datum/reagent/toxin/plasma, /datum/reagent/consumable/coco, - /datum/reagent/toxin/slimejelly, /datum/reagent/consumable/banana, /datum/reagent/consumable/berryjuice, - /datum/reagent/medicine/omnizine) + extra_reagent = pick("nutriment", "capsaicin", "frostoil", "krokodil", "plasma", "cocoa", "slimejelly", "banana", "berryjuice", "omnizine") reagents.add_reagent(extra_reagent, 3) /obj/item/reagent_containers/food/snacks/donut/meat name = "Meat Donut" desc = "Tastes as gross as it looks." icon_state = "donut_meat" - bonus_reagents = list(/datum/reagent/consumable/ketchup = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/ketchup = 2) + bonus_reagents = list("ketchup" = 1) + list_reagents = list("nutriment" = 3, "ketchup" = 2) tastes = list("meat" = 1) foodtype = JUNKFOOD | MEAT | GROSS | FRIED | BREAKFAST @@ -77,7 +74,7 @@ name = "pink donut" desc = "Goes great with a soy latte." icon_state = "donut_pink" - bonus_reagents = list(/datum/reagent/consumable/berryjuice = 3, /datum/reagent/consumable/sprinkles = 1) //Extra sprinkles to reward frosting + bonus_reagents = list("berryjuice" = 3, "sprinkles" = 1) //Extra sprinkles to reward frosting filling_color = "#E57d9A" decorated_icon = "donut_homer" @@ -85,7 +82,7 @@ name = "spaceman's donut" desc = "Goes great with a cold beaker of malk." icon_state = "donut_purple" - bonus_reagents = list(/datum/reagent/medicine/polypyr = 3, /datum/reagent/consumable/sprinkles = 1) + bonus_reagents = list("polypyr" = 3, "sprinkles" = 1) tastes = list("donut" = 3, "violets" = 1) is_decorated = TRUE filling_color = "#8739BF" @@ -94,7 +91,7 @@ name = "apple donut" desc = "Goes great with a shot of cinnamon schnapps." icon_state = "donut_green" - bonus_reagents = list(/datum/reagent/consumable/applejuice = 3, /datum/reagent/consumable/sprinkles = 1) + bonus_reagents = list("applejuice" = 3, "sprinkles" = 1) tastes = list("donut" = 3, "green apples" = 1) is_decorated = TRUE filling_color = "#6ABE30" @@ -103,7 +100,7 @@ name = "caramel donut" desc = "Goes great with a mug of hot coco." icon_state = "donut_beige" - bonus_reagents = list(/datum/reagent/consumable/caramel = 3, /datum/reagent/consumable/sprinkles = 1) + bonus_reagents = list("caramel" = 3, "sprinkles" = 1) tastes = list("donut" = 3, "buttery sweetness" = 1) is_decorated = TRUE filling_color = "#D4AD5B" @@ -112,7 +109,7 @@ name = "chocolate donut" desc = "Goes great with a glass of warm milk." icon_state = "donut_choc" - bonus_reagents = list(/datum/reagent/consumable/hot_coco = 3, /datum/reagent/consumable/sprinkles = 1) //the coco reagent is just bitter. + bonus_reagents = list("hot_coco" = 3, "sprinkles" = 1) //the coco reagent is just bitter. tastes = list("donut" = 4, "bitterness" = 1) decorated_icon = "donut_choc_sprinkles" filling_color = "#4F230D" @@ -121,7 +118,7 @@ name = "blumpkin donut" desc = "Goes great with a mug of soothing drunken blumpkin." icon_state = "donut_blue" - bonus_reagents = list(/datum/reagent/consumable/blumpkinjuice = 3, /datum/reagent/consumable/sprinkles = 1) + bonus_reagents = list("blumpkinjuice" = 3, "sprinkles" = 1) tastes = list("donut" = 2, "blumpkin" = 1) is_decorated = TRUE filling_color = "#2788C4" @@ -130,7 +127,7 @@ name = "bungo donut" desc = "Goes great with a mason jar of hippie's delight." icon_state = "donut_yellow" - bonus_reagents = list(/datum/reagent/consumable/bungojuice = 3, /datum/reagent/consumable/sprinkles = 1) + bonus_reagents = list("bungojuice" = 3, "sprinkles" = 1) tastes = list("donut" = 3, "tropical sweetness" = 1) is_decorated = TRUE filling_color = "#DEC128" @@ -139,7 +136,7 @@ name = "matcha donut" desc = "Goes great with a cup of tea." icon_state = "donut_olive" - bonus_reagents = list(/datum/reagent/toxin/teapowder = 3, /datum/reagent/consumable/sprinkles = 1) + bonus_reagents = list("teapowder = 3", "sprinkles" = 1) tastes = list("donut" = 3, "matcha" = 1) is_decorated = TRUE filling_color = "#879630" @@ -151,7 +148,7 @@ desc = "You jelly?" icon_state = "jelly" decorated_icon = "jelly_homer" - bonus_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("sugar" = 1, "vitamin" = 1) extra_reagent = "berryjuice" tastes = list("jelly" = 1, "donut" = 3) foodtype = JUNKFOOD | GRAIN | FRIED | FRUIT | SUGAR | BREAKFAST @@ -159,7 +156,7 @@ /obj/item/reagent_containers/food/snacks/donut/jelly/Initialize() . = ..() if(extra_reagent) - reagents.add_reagent(extra_reagent, 3) + reagents.add_reagent("[extra_reagent]", 3) /obj/item/reagent_containers/food/snacks/donut/jelly/plain //use this ingame to avoid inheritance related crafting issues. @@ -167,7 +164,7 @@ name = "pink jelly donut" desc = "Goes great with a soy latte." icon_state = "jelly_pink" - bonus_reagents = list(/datum/reagent/consumable/berryjuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //Extra sprinkles to reward frosting. + bonus_reagents = list("berryjuice" = 3, "sprinkles" = 1, "vitamin" = 1) //Extra sprinkles to reward frosting. filling_color = "#E57d9A" decorated_icon = "jelly_homer" @@ -175,7 +172,7 @@ name = "spaceman's jelly donut" desc = "Goes great with a cold beaker of malk." icon_state = "jelly_purple" - bonus_reagents = list(/datum/reagent/medicine/polypyr = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("polypyr" = 3, "sprinkles" = 1, "vitamin" = 1) tastes = list("jelly" = 1, "donut" = 3, "violets" = 1) is_decorated = TRUE filling_color = "#8739BF" @@ -184,7 +181,7 @@ name = "apple jelly donut" desc = "Goes great with a shot of cinnamon schnapps." icon_state = "jelly_green" - bonus_reagents = list(/datum/reagent/consumable/applejuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("applejuice" = 3, "sprinkles" = 1, "vitamin" = 1) tastes = list("jelly" = 1, "donut" = 3, "green apples" = 1) is_decorated = TRUE filling_color = "#6ABE30" @@ -193,7 +190,7 @@ name = "caramel jelly donut" desc = "Goes great with a mug of hot coco." icon_state = "jelly_beige" - bonus_reagents = list(/datum/reagent/consumable/caramel = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("caramel" = 3, "sprinkles" = 1, "vitamin" = 1) tastes = list("jelly" = 1, "donut" = 3, "buttery sweetness" = 1) is_decorated = TRUE filling_color = "#D4AD5B" @@ -202,7 +199,7 @@ name = "chocolate jelly donut" desc = "Goes great with a glass of warm milk." icon_state = "jelly_choc" - bonus_reagents = list(/datum/reagent/consumable/hot_coco = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //the coco reagent is just bitter. + bonus_reagents = list("hot_coco" = 3, "sprinkles" = 1, "vitamin" = 1) //the coco reagent is just bitter. tastes = list("jelly" = 1, "donut" = 4, "bitterness" = 1) decorated_icon = "jelly_choc_sprinkles" filling_color = "#4F230D" @@ -211,7 +208,7 @@ name = "blumpkin jelly donut" desc = "Goes great with a mug of soothing drunken blumpkin." icon_state = "jelly_blue" - bonus_reagents = list(/datum/reagent/consumable/blumpkinjuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("blumpkinjuice" = 3, "sprinkles" = 1, "vitamin" = 1) tastes = list("jelly" = 1, "donut" = 2, "blumpkin" = 1) is_decorated = TRUE filling_color = "#2788C4" @@ -220,7 +217,7 @@ name = "bungo jelly donut" desc = "Goes great with a mason jar of hippie's delight." icon_state = "jelly_yellow" - bonus_reagents = list(/datum/reagent/consumable/bungojuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("bungojuice" = 3, "sprinkles" = 1, "vitamin" = 1) tastes = list("jelly" = 1, "donut" = 3, "tropical sweetness" = 1) is_decorated = TRUE filling_color = "#DEC128" @@ -229,7 +226,7 @@ name = "matcha jelly donut" desc = "Goes great with a cup of tea." icon_state = "jelly_olive" - bonus_reagents = list(/datum/reagent/toxin/teapowder = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("teapowder" = 3, "sprinkles" = 1, "vitamin" = 1) tastes = list("jelly" = 1, "donut" = 3, "matcha" = 1) is_decorated = TRUE filling_color = "#879630" @@ -249,14 +246,14 @@ name = "pink jelly donut" desc = "Goes great with a soy latte." icon_state = "jelly_pink" - bonus_reagents = list(/datum/reagent/consumable/berryjuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //Extra sprinkles to reward frosting + bonus_reagents = list("berryjuice" = 3, "sprinkles" = 1, "vitamin" = 1) //Extra sprinkles to reward frosting filling_color = "#E57d9A" /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/trumpet name = "spaceman's jelly donut" desc = "Goes great with a cold beaker of malk." icon_state = "jelly_purple" - bonus_reagents = list(/datum/reagent/medicine/polypyr = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("polypyr" = 3, "sprinkles" = 1, "vitamin" = 1) tastes = list("jelly" = 1, "donut" = 3, "violets" = 1) is_decorated = TRUE filling_color = "#8739BF" @@ -265,7 +262,7 @@ name = "apple jelly donut" desc = "Goes great with a shot of cinnamon schnapps." icon_state = "jelly_green" - bonus_reagents = list(/datum/reagent/consumable/applejuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("applejuice" = 3, "sprinkles" = 1, "vitamin" = 1) tastes = list("jelly" = 1, "donut" = 3, "green apples" = 1) is_decorated = TRUE filling_color = "#6ABE30" @@ -274,7 +271,7 @@ name = "caramel jelly donut" desc = "Goes great with a mug of hot coco." icon_state = "jelly_beige" - bonus_reagents = list(/datum/reagent/consumable/caramel = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("caramel" = 3, "sprinkles" = 1, "vitamin" = 1) tastes = list("jelly" = 1, "donut" = 3, "buttery sweetness" = 1) is_decorated = TRUE filling_color = "#D4AD5B" @@ -283,7 +280,7 @@ name = "chocolate jelly donut" desc = "Goes great with a glass of warm milk." icon_state = "jelly_choc" - bonus_reagents = list(/datum/reagent/consumable/hot_coco = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //the coco reagent is just bitter. + bonus_reagents = list("hot_coco" = 3, "sprinkles" = 1, "vitamin" = 1) //the coco reagent is just bitter. tastes = list("jelly" = 1, "donut" = 4, "bitterness" = 1) decorated_icon = "jelly_choc_sprinkles" filling_color = "#4F230D" @@ -292,7 +289,7 @@ name = "blumpkin jelly donut" desc = "Goes great with a mug of soothing drunken blumpkin." icon_state = "jelly_blue" - bonus_reagents = list(/datum/reagent/consumable/blumpkinjuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("blumpkinjuice" = 3, "sprinkles" = 1, "vitamin" = 1) tastes = list("jelly" = 1, "donut" = 2, "blumpkin" = 1) is_decorated = TRUE filling_color = "#2788C4" @@ -301,7 +298,7 @@ name = "bungo jelly donut" desc = "Goes great with a mason jar of hippie's delight." icon_state = "jelly_yellow" - bonus_reagents = list(/datum/reagent/consumable/bungojuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("bungojuice" = 3, "sprinkles" = 1, "vitamin" = 1) tastes = list("jelly" = 1, "donut" = 3, "tropical sweetness" = 1) is_decorated = TRUE filling_color = "#DEC128" @@ -310,7 +307,7 @@ name = "matcha jelly donut" desc = "Goes great with a cup of tea." icon_state = "jelly_olive" - bonus_reagents = list(/datum/reagent/toxin/teapowder = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("teapowder" = 3, "sprinkles" = 1, "vitamin" = 1) tastes = list("jelly" = 1, "donut" = 3, "matcha" = 1) is_decorated = TRUE filling_color = "#879630" @@ -320,8 +317,8 @@ desc = "A sugar glazed donut." icon_state = "donut_glaze" bitesize = 10 - bonus_reagents = list(/datum/reagent/consumable/sugar = 3) - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/sugar = 8) + bonus_reagents = list("sugar" = 3) + list_reagents = list("nutriment" = 3, "sugar" = 8) filling_color = "#FFFFFF" tastes = list("donut" = 1, "salt" = 3) foodtype = JUNKFOOD | GRAIN | FRIED | SUGAR @@ -332,8 +329,8 @@ name = "muffin" desc = "A delicious and spongy little cake." icon_state = "muffin" - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 6) + bonus_reagents = list("vitamin" = 1) + list_reagents = list("nutriment" = 6) filling_color = "#F4A460" tastes = list("muffin" = 1) foodtype = GRAIN | SUGAR | BREAKFAST @@ -357,8 +354,8 @@ name = "chawanmushi" desc = "A legendary egg custard that makes friends out of enemies. Probably too hot for a cat to eat." icon_state = "chawanmushi" - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 5) + bonus_reagents = list("vitamin" = 1) + list_reagents = list("nutriment" = 5) filling_color = "#FFE4E1" tastes = list("custard" = 1) foodtype = GRAIN | MEAT | VEGETABLES @@ -370,8 +367,8 @@ desc = "Mmm, waffles." icon_state = "waffles" trash = /obj/item/trash/waffles - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("vitamin" = 1) + list_reagents = list("nutriment" = 8, "vitamin" = 1) filling_color = "#D2691E" tastes = list("waffles" = 1) foodtype = GRAIN | SUGAR | BREAKFAST @@ -381,8 +378,8 @@ desc = "Not made of people. Honest." //Totally people. icon_state = "soylent_green" trash = /obj/item/trash/waffles - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("vitamin" = 1) + list_reagents = list("nutriment" = 10, "vitamin" = 1) filling_color = "#9ACD32" tastes = list("waffles" = 7, "people" = 1) foodtype = GRAIN | MEAT @@ -392,8 +389,8 @@ desc = "Not made of people. Honest." //Actually honest for once. icon_state = "soylent_yellow" trash = /obj/item/trash/waffles - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("vitamin" = 1) + list_reagents = list("nutriment" = 10, "vitamin" = 1) filling_color = "#9ACD32" tastes = list("waffles" = 7, "the colour green" = 1) foodtype = GRAIN @@ -404,8 +401,8 @@ icon_state = "rofflewaffles" trash = /obj/item/trash/waffles bitesize = 4 - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/drug/mushroomhallucinogen = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("vitamin" = 2) + list_reagents = list("nutriment" = 8, "mushroomhallucinogen" = 2, "vitamin" = 2) filling_color = "#00BFFF" tastes = list("waffle" = 1, "mushrooms" = 1) foodtype = GRAIN | VEGETABLES | SUGAR | BREAKFAST @@ -417,8 +414,8 @@ desc = "COOKIE!!!" icon_state = "COOKIE!!!" bitesize = 1 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 1) + bonus_reagents = list("nutriment" = 1) + list_reagents = list("nutriment" = 1) filling_color = "#F0E68C" tastes = list("cookie" = 1) foodtype = GRAIN | SUGAR @@ -428,7 +425,7 @@ name = "\improper Donk-pocket" desc = "The food of choice for the seasoned traitor." icon_state = "donkpocket" - list_reagents = list(/datum/reagent/consumable/nutriment = 4) + list_reagents = list("nutriment" = 4) cooked_type = /obj/item/reagent_containers/food/snacks/donkpocket/warm filling_color = "#CD853F" tastes = list("meat" = 2, "dough" = 2, "laziness" = 1) @@ -437,8 +434,8 @@ /obj/item/reagent_containers/food/snacks/donkpocket/warm name = "warm Donk-pocket" desc = "The heated food of choice for the seasoned traitor." - bonus_reagents = list(/datum/reagent/medicine/omnizine = 3) - list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/medicine/omnizine = 3) + bonus_reagents = list("omnizine" = 3) + list_reagents = list("nutriment" = 4, "omnizine" = 3) cooked_type = null tastes = list("meat" = 2, "dough" = 2, "laziness" = 1) foodtype = GRAIN @@ -447,7 +444,7 @@ name = "\improper Dank-pocket" desc = "The food of choice for the seasoned botanist." icon_state = "dankpocket" - list_reagents = list(/datum/reagent/toxin/lipolicide = 3, /datum/reagent/drug/space_drugs = 3, /datum/reagent/consumable/nutriment = 4) + list_reagents = list("lipolicide" = 3, "space_drugs" = 3, "nutriment" = 4) filling_color = "#00FF00" tastes = list("meat" = 2, "dough" = 2) foodtype = GRAIN | VEGETABLES @@ -456,8 +453,8 @@ name = "fortune cookie" desc = "A true prophecy in each cookie!" icon_state = "fortune_cookie" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 3) + bonus_reagents = list("nutriment" = 2) + list_reagents = list("nutriment" = 3) filling_color = "#F4A460" tastes = list("cookie" = 1) foodtype = GRAIN | SUGAR @@ -466,8 +463,8 @@ name = "poppy pretzel" desc = "It's all twisted up!" icon_state = "poppypretzel" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 5) + bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + list_reagents = list("nutriment" = 5) filling_color = "#F0E68C" tastes = list("pretzel" = 1) foodtype = GRAIN | SUGAR @@ -476,8 +473,8 @@ name = "plump helmet biscuit" desc = "This is a finely-prepared plump helmet biscuit. The ingredients are exceptionally minced plump helmet, and well-minced dwarven wheat flour." icon_state = "phelmbiscuit" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 5) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list("nutriment" = 5) filling_color = "#F0E68C" tastes = list("mushroom" = 1, "biscuit" = 1) foodtype = GRAIN | VEGETABLES @@ -487,18 +484,18 @@ if(fey) name = "exceptional plump helmet biscuit" desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!" - bonus_reagents = list(/datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("omnizine" = 5, "nutriment" = 1, "vitamin" = 1) . = ..() if(fey) - reagents.add_reagent(/datum/reagent/medicine/omnizine, 5) + reagents.add_reagent("omnizine", 5) /obj/item/reagent_containers/food/snacks/cracker name = "cracker" desc = "It's a salted cracker." icon_state = "cracker" bitesize = 1 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 1) + bonus_reagents = list("nutriment" = 1) + list_reagents = list("nutriment" = 1) filling_color = "#F0E68C" tastes = list("cracker" = 1) foodtype = GRAIN @@ -508,8 +505,8 @@ desc = "Fresh footlong ready to go down on." icon_state = "hotdog" bitesize = 3 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/ketchup = 3, /datum/reagent/consumable/nutriment/vitamin = 3) + bonus_reagents = list("nutriment" = 1, "vitamin" = 3) + list_reagents = list("nutriment" = 6, "ketchup" = 3, "vitamin" = 3) filling_color = "#8B0000" tastes = list("bun" = 3, "meat" = 2) foodtype = GRAIN | MEAT | VEGETABLES @@ -518,8 +515,8 @@ name = "meat bun" desc = "Has the potential to not be Dog." icon_state = "meatbun" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + list_reagents = list("nutriment" = 6, "vitamin" = 2) filling_color = "#8B0000" tastes = list("bun" = 3, "meat" = 2) foodtype = GRAIN | MEAT | VEGETABLES @@ -528,7 +525,7 @@ name = "khachapuri" desc = "Bread with egg and cheese?" icon_state = "khachapuri" - list_reagents = list(/datum/reagent/consumable/nutriment = 12, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list("nutriment" = 12, "vitamin" = 2) filling_color = "#FFFF4D" tastes = list("bread" = 1, "egg" = 1, "cheese" = 1) foodtype = GRAIN | MEAT | DAIRY @@ -537,8 +534,8 @@ name = "sugar cookie" desc = "Just like your little sister used to make." icon_state = "sugarcookie" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 3) - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/sugar = 3) + bonus_reagents = list("nutriment" = 1, "sugar" = 3) + list_reagents = list("nutriment" = 3, "sugar" = 3) filling_color = "#CD853F" tastes = list("sweetness" = 1) foodtype = GRAIN | JUNKFOOD | SUGAR @@ -548,8 +545,8 @@ name = "chocolate cornet" desc = "Which side's the head, the fat end or the thin end?" icon_state = "chococornet" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list("nutriment" = 5, "vitamin" = 1) filling_color = "#FFE4C4" tastes = list("biscuit" = 3, "chocolate" = 1) foodtype = GRAIN | JUNKFOOD @@ -558,8 +555,8 @@ name = "oatmeal cookie" desc = "The best of both cookie and oat." icon_state = "oatmealcookie" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list("nutriment" = 5, "vitamin" = 1) filling_color = "#D2691E" tastes = list("cookie" = 2, "oat" = 1) foodtype = GRAIN @@ -569,8 +566,8 @@ name = "raisin cookie" desc = "Why would you put raisins on a cookie?" icon_state = "raisincookie" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list("nutriment" = 5, "vitamin" = 1) filling_color = "#F0E68C" tastes = list("cookie" = 1, "raisins" = 1) foodtype = GRAIN | FRUIT @@ -580,8 +577,8 @@ name = "cherry cupcake" desc = "A sweet cupcake with cherry bits." icon_state = "cherrycupcake" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list("nutriment" = 5, "vitamin" = 1) filling_color = "#F0E68C" tastes = list("cake" = 3, "cherry" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -590,8 +587,8 @@ name = "blue cherry cupcake" desc = "Blue cherries inside a delicious cupcake." icon_state = "bluecherrycupcake" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 1, "vitamin" = 3) + list_reagents = list("nutriment" = 5, "vitamin" = 1) filling_color = "#F0E68C" tastes = list("cake" = 3, "blue cherry" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -600,8 +597,8 @@ name = "strawberry cupcake" desc = "Strawberry inside a delicious cupcake." icon_state = "strawberrycupcake" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 1, "vitamin" = 3) + list_reagents = list("nutriment" = 5, "vitamin" = 1) filling_color = "#F0E68C" tastes = list("cake" = 2, "strawberry" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -610,8 +607,8 @@ name = "honey bun" desc = "A sticky pastry bun glazed with honey." icon_state = "honeybun" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/honey = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/honey = 5) + bonus_reagents = list("nutriment" = 1, "honey" = 1) + list_reagents = list("nutriment" = 5, "honey" = 5) filling_color = "#F2CE91" tastes = list("pastry" = 1, "sweetness" = 1) foodtype = GRAIN | SUGAR @@ -623,8 +620,8 @@ desc = "A fluffy pancake. The softer, superior relative of the waffle." icon_state = "pancakes_1" item_state = "pancakes" - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("vitamin" = 1) + list_reagents = list("nutriment" = 4, "vitamin" = 1) filling_color = "#D2691E" tastes = list("pancakes" = 1) foodtype = GRAIN | SUGAR | BREAKFAST @@ -634,8 +631,8 @@ desc = "A fluffy and delicious blueberry pancake." icon_state = "bbpancakes_1" item_state = "bbpancakes" - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 3) + bonus_reagents = list("vitamin" = 2) + list_reagents = list("nutriment" = 6, "vitamin" = 3) tastes = list("pancakes" = 1, "blueberries" = 1) /obj/item/reagent_containers/food/snacks/pancakes/chocolatechip @@ -643,8 +640,8 @@ desc = "A fluffy and delicious chocolate chip pancake." icon_state = "ccpancakes_1" item_state = "ccpancakes" - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 3) + bonus_reagents = list("vitamin" = 2) + list_reagents = list("nutriment" = 6, "vitamin" = 3) tastes = list("pancakes" = 1, "chocolate" = 1) /obj/item/reagent_containers/food/snacks/pancakes/Initialize() diff --git a/code/modules/food_and_drinks/food/snacks_pie.dm b/code/modules/food_and_drinks/food/snacks_pie.dm index 357a921c66..bc66d353e1 100644 --- a/code/modules/food_and_drinks/food/snacks_pie.dm +++ b/code/modules/food_and_drinks/food/snacks_pie.dm @@ -5,7 +5,7 @@ bitesize = 3 w_class = WEIGHT_CLASS_NORMAL volume = 80 - list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list("nutriment" = 10, "vitamin" = 2) tastes = list("pie" = 1) foodtype = GRAIN @@ -14,7 +14,7 @@ desc = "A simple pie, still delicious." icon_state = "pie" custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/pie - bonus_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 8, "vitamin" = 1) tastes = list("pie" = 1) foodtype = GRAIN @@ -23,8 +23,8 @@ desc = "Just like back home, on clown planet! HONK!" icon_state = "pie" trash = /obj/item/trash/plate - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/banana = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 2, "vitamin" = 2) + list_reagents = list("nutriment" = 6, "banana" = 5, "vitamin" = 2) tastes = list("pie" = 1) foodtype = GRAIN | DAIRY | SUGAR var/stunning = TRUE @@ -61,7 +61,7 @@ qdel(src) /obj/item/reagent_containers/food/snacks/pie/cream/nostun - list_reagents = list(/datum/reagent/consumable/laughter = 15) + list_reagents = list("laughter" = 15) stunning = FALSE /obj/item/reagent_containers/food/snacks/pie/cream/body @@ -90,8 +90,8 @@ name = "berry clafoutis" desc = "No black birds, this is a good sign." icon_state = "berryclafoutis" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/berryjuice = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + list_reagents = list("nutriment" = 10, "berryjuice" = 5, "vitamin" = 2) tastes = list("pie" = 1, "blackberries" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -99,8 +99,8 @@ name = "beary pie" desc = "No brown bears, this is a good sign." icon_state = "bearypie" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 3) - list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 3) + bonus_reagents = list("nutriment" = 2, "vitamin" = 3) + list_reagents = list("nutriment" = 2, "vitamin" = 3) tastes = list("pie" = 1, "meat" = 1, "salmon" = 1) foodtype = GRAIN | SUGAR @@ -108,7 +108,7 @@ name = "meat-pie" icon_state = "meatpie" desc = "An old barber recipe, very delicious!" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 1, "vitamin" = 5) tastes = list("pie" = 1, "meat" = 1) foodtype = GRAIN | MEAT @@ -117,7 +117,7 @@ name = "tofu-pie" icon_state = "meatpie" desc = "A delicious tofu pie." - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 1, "vitamin" = 2) tastes = list("pie" = 1, "tofu" = 1) foodtype = GRAIN @@ -127,8 +127,8 @@ desc = "Sweet and tasty poison pie." icon_state = "amanita_pie" bitesize = 4 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/toxin/amatoxin = 3, /datum/reagent/drug/mushroomhallucinogen = 1, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 1, "vitamin" = 4) + list_reagents = list("nutriment" = 6, "amatoxin" = 3, "mushroomhallucinogen" = 1, "vitamin" = 4) tastes = list("pie" = 1, "mushroom" = 1) foodtype = GRAIN | VEGETABLES | TOXIC | GROSS @@ -137,7 +137,7 @@ name = "plump pie" desc = "I bet you love stuff made out of plump helmets!" icon_state = "plump_pie" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 1, "vitamin" = 4) tastes = list("pie" = 1, "mushroom" = 1) foodtype = GRAIN | VEGETABLES @@ -148,9 +148,9 @@ if(fey) name = "exceptional plump pie" desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump pie!" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 1, "omnizine" = 5, "vitamin" = 4) if(fey) - reagents.add_reagent(/datum/reagent/medicine/omnizine, 5) + reagents.add_reagent("omnizine", 5) /obj/item/reagent_containers/food/snacks/pie/xemeatpie @@ -158,7 +158,7 @@ icon_state = "xenomeatpie" desc = "A delicious meatpie. Probably heretical." trash = /obj/item/trash/plate - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 1, "vitamin" = 5) tastes = list("pie" = 1, "meat" = 1, "acid" = 1) foodtype = GRAIN | MEAT @@ -167,7 +167,7 @@ name = "apple pie" desc = "A pie containing sweet sweet love...or apple." icon_state = "applepie" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) + bonus_reagents = list("nutriment" = 1, "vitamin" = 3) tastes = list("pie" = 1, "apple" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -175,7 +175,7 @@ name = "cherry pie" desc = "Taste so good, make a grown man cry." icon_state = "cherrypie" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 1, "vitamin" = 2) tastes = list("pie" = 7, "Nicole Paige Brooks" = 2) foodtype = GRAIN | FRUIT | SUGAR @@ -186,7 +186,7 @@ icon_state = "pumpkinpie" slice_path = /obj/item/reagent_containers/food/snacks/pumpkinpieslice slices_num = 5 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 1, "vitamin" = 5) tastes = list("pie" = 1, "pumpkin" = 1) foodtype = GRAIN | VEGETABLES @@ -197,7 +197,7 @@ icon_state = "pumpkinpieslice" trash = /obj/item/trash/plate filling_color = "#FFA500" - list_reagents = list(/datum/reagent/consumable/nutriment = 2) + list_reagents = list("nutriment" = 2) tastes = list("pie" = 1, "pumpkin" = 1) foodtype = GRAIN | VEGETABLES @@ -205,8 +205,8 @@ name = "golden apple streusel tart" desc = "A tasty dessert that won't make it through a metal detector." icon_state = "gappletart" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) - list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/gold = 5, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 1, "vitamin" = 4) + list_reagents = list("nutriment" = 8, "gold" = 5, "vitamin" = 4) tastes = list("pie" = 1, "apple" = 1, "expensive metal" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -214,8 +214,8 @@ name = "grape tart" desc = "A tasty dessert that reminds you of the wine you didn't make." icon_state = "grapetart" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) - list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 1, "vitamin" = 4) + list_reagents = list("nutriment" = 4, "vitamin" = 4) tastes = list("pie" = 1, "grape" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -223,8 +223,8 @@ name = "mime tart" desc = "..." icon_state = "mimetart" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4, /datum/reagent/consumable/nothing = 10) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 1, "vitamin" = 4, "nothing" = 10) + list_reagents = list("nutriment" = 5, "vitamin" = 5) tastes = list("pie" = 1, "nothing" = 1) foodtype = GRAIN @@ -232,8 +232,8 @@ name = "berry tart" desc = "A tasty dessert of many different small barries on a thin pie crust." icon_state = "berrytart" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 1, "vitamin" = 4) + list_reagents = list("nutriment" = 3, "vitamin" = 5) tastes = list("pie" = 1, "berries" = 2) foodtype = GRAIN | FRUIT @@ -241,8 +241,8 @@ name = "chocolate lava tart" desc = "A tasty dessert made of chocaloate, with a liquid core." icon_state = "cocolavatart" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) - list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 1, "vitamin" = 4) + list_reagents = list("nutriment" = 4, "vitamin" = 4) tastes = list("pie" = 1, "grape" = 1) foodtype = GRAIN | SUGAR @@ -252,7 +252,7 @@ icon_state = "blumpkinpie" slice_path = /obj/item/reagent_containers/food/snacks/blumpkinpieslice slices_num = 5 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 6) + bonus_reagents = list("nutriment" = 3, "vitamin" = 6) tastes = list("pie" = 1, "a mouthful of pool water" = 1) foodtype = GRAIN | VEGETABLES @@ -263,7 +263,7 @@ icon_state = "blumpkinpieslice" trash = /obj/item/trash/plate filling_color = "#1E90FF" - list_reagents = list(/datum/reagent/consumable/nutriment = 2) + list_reagents = list("nutriment" = 2) tastes = list("pie" = 1, "a mouthful of pool water" = 1) foodtype = GRAIN | VEGETABLES @@ -273,7 +273,7 @@ icon_state = "dulcedebatata" slice_path = /obj/item/reagent_containers/food/snacks/dulcedebatataslice slices_num = 5 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 8) + bonus_reagents = list("nutriment" = 4, "vitamin" = 8) tastes = list("jelly" = 1, "sweet potato" = 1) foodtype = GRAIN | VEGETABLES | SUGAR @@ -284,7 +284,7 @@ icon_state = "dulcedebatataslice" trash = /obj/item/trash/plate filling_color = "#8B4513" - list_reagents = list(/datum/reagent/consumable/nutriment = 2) + list_reagents = list("nutriment" = 2) tastes = list("jelly" = 1, "sweet potato" = 1) foodtype = GRAIN | VEGETABLES | SUGAR @@ -292,7 +292,7 @@ name = "frosty pie" desc = "Tastes like blue and cold." icon_state = "frostypie" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 6) + bonus_reagents = list("nutriment" = 4, "vitamin" = 6) tastes = list("mint" = 1, "pie" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -302,7 +302,7 @@ icon_state = "baklava" slice_path = /obj/item/reagent_containers/food/snacks/baklavaslice slices_num = 6 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 6) + bonus_reagents = list("nutriment" = 2, "vitamin" = 6) tastes = list("nuts" = 1, "pie" = 1) foodtype = GRAIN @@ -313,7 +313,7 @@ icon_state = "baklavaslice" trash = /obj/item/trash/plate filling_color = "#1E90FF" - list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list("nutriment" = 2, "vitamin" = 4) tastes = list("nuts" = 1, "pie" = 1) foodtype = GRAIN @@ -321,7 +321,7 @@ name = "strawberry pie" desc = "A strawberry pie." icon_state = "strawberrypie" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 6) + bonus_reagents = list("nutriment" = 6, "vitamin" = 6) tastes = list("strawberry" = 1, "pie" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -329,6 +329,6 @@ name = "peach pie" desc = "A pie with peach filling." icon_state = "strawberrypie" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/consumable/peachjuice = 15) + bonus_reagents = list("nutriment" = 5, "vitamin" = 6, "peachjuice" = 15) tastes = list("peach" = 1, "pie" = 1) foodtype = GRAIN | FRUIT diff --git a/code/modules/food_and_drinks/food/snacks_pizza.dm b/code/modules/food_and_drinks/food/snacks_pizza.dm index ebc67a28c1..74fd7dda65 100644 --- a/code/modules/food_and_drinks/food/snacks_pizza.dm +++ b/code/modules/food_and_drinks/food/snacks_pizza.dm @@ -6,13 +6,13 @@ w_class = WEIGHT_CLASS_NORMAL slices_num = 6 volume = 80 - list_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list("nutriment" = 30, "tomatojuice" = 6, "vitamin" = 5) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1) foodtype = GRAIN | DAIRY | VEGETABLES /obj/item/reagent_containers/food/snacks/pizzaslice icon = 'icons/obj/food/pizzaspaghetti.dmi' - list_reagents = list(/datum/reagent/consumable/nutriment = 5) + list_reagents = list("nutriment" = 5) foodtype = GRAIN | DAIRY | VEGETABLES /obj/item/reagent_containers/food/snacks/pizza/margherita @@ -20,7 +20,7 @@ desc = "The most cheezy pizza in galaxy." icon_state = "pizzamargherita" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/margherita - bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 5, "vitamin" = 5) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1) foodtype = GRAIN | VEGETABLES @@ -41,8 +41,8 @@ desc = "Greasy pizza with delicious meat." icon_state = "meatpizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/meat - bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 8) - list_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/consumable/nutriment/vitamin = 8) + bonus_reagents = list("nutriment" = 5, "vitamin" = 8) + list_reagents = list("nutriment" = 30, "tomatojuice" = 6, "vitamin" = 8) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1) foodtype = GRAIN | VEGETABLES| DAIRY | MEAT @@ -59,8 +59,8 @@ desc = "Very special pizza." icon_state = "mushroompizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/mushroom - bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 5, "vitamin" = 5) + list_reagents = list("nutriment" = 30, "vitamin" = 5) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "mushroom" = 1) foodtype = GRAIN | VEGETABLES | DAIRY @@ -77,8 +77,8 @@ desc = "No one of Tomatos Sapiens were harmed during making this pizza." icon_state = "vegetablepizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/vegetable - bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/medicine/oculine = 12, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 5, "vitamin" = 5) + list_reagents = list("nutriment" = 25, "tomatojuice" = 6, "oculine" = 12, "vitamin" = 5) tastes = list("crust" = 1, "tomato" = 2, "cheese" = 1, "carrot" = 1) foodtype = GRAIN | VEGETABLES | DAIRY @@ -95,8 +95,8 @@ desc = "Who thought this would be a good idea?" icon_state = "donkpocketpizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/donkpocket - bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/medicine/omnizine = 10, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 5, "vitamin" = 5) + list_reagents = list("nutriment" = 25, "tomatojuice" = 6, "omnizine" = 10, "vitamin" = 5) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1, "laziness" = 1) foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD @@ -113,8 +113,8 @@ desc = "The hippie's pizza of choice." icon_state = "dankpizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/dank - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 6) - list_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/consumable/doctor_delight = 5, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 2, "vitamin" = 6) + list_reagents = list("nutriment" = 25, "doctorsdelight" = 5, "tomatojuice" = 6, "vitamin" = 5) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1) foodtype = GRAIN | VEGETABLES | FRUIT | DAIRY @@ -131,7 +131,7 @@ desc = "You can really smell the sassiness." icon_state = "sassysagepizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/sassysage - bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 6) + bonus_reagents = list("nutriment" = 6, "vitamin" = 6) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1) foodtype = GRAIN | VEGETABLES | DAIRY @@ -148,7 +148,7 @@ desc = "The pizza equivalent of Einstein's riddle." icon_state = "pineapplepizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/pineapple - bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 6) + bonus_reagents = list("nutriment" = 6, "vitamin" = 6) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "pineapple" = 6, "ham" = 2) foodtype = PINEAPPLE //Over powering tast of gods fruit @@ -162,7 +162,7 @@ /obj/item/reagent_containers/food/snacks/pizza/pineapple/anomaly desc = "A anomaly made pizza with pineapple..." - bonus_reagents = list(/datum/reagent/consumable/nutriment = 16, /datum/reagent/consumable/nutriment/vitamin = 16) + bonus_reagents = list("nutriment" = 16, "vitamin" = 16) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "pineapple" = 6, "ham" = 2, "good" = 10) /obj/item/reagent_containers/food/snacks/pizzaslice/pineapple/anomaly @@ -174,7 +174,7 @@ desc = "Hello, you've reached Arnold's pizza shop. I'm not here now, I'm out killing pepperoni." icon_state = "arnoldpizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/arnold - bonus_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/iron = 10, /datum/reagent/medicine/omnizine = 30) + bonus_reagents = list("nutriment" = 30, "vitamin" = 6, "iron" = 10, "omnizine" = 30) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "pepperoni" = 2, "9 millimeter bullets" = 2) /obj/item/reagent_containers/food/snacks/proc/try_break_off(mob/living/M, mob/living/user) //maybe i give you a pizza maybe i break off your arm diff --git a/code/modules/food_and_drinks/food/snacks_salad.dm b/code/modules/food_and_drinks/food/snacks_salad.dm index e272733235..f5fcec0ac5 100644 --- a/code/modules/food_and_drinks/food/snacks_salad.dm +++ b/code/modules/food_and_drinks/food/snacks_salad.dm @@ -5,7 +5,7 @@ trash = /obj/item/reagent_containers/glass/bowl bitesize = 3 w_class = WEIGHT_CLASS_NORMAL - list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list("nutriment" = 7, "vitamin" = 2) tastes = list("leaves" = 1) foodtype = VEGETABLES @@ -17,8 +17,8 @@ name = "\improper Aesir salad" desc = "Probably too incredible for mortal men to fully enjoy." icon_state = "aesirsalad" - bonus_reagents = list(/datum/reagent/medicine/omnizine = 2, /datum/reagent/consumable/nutriment/vitamin = 6) - list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/medicine/omnizine = 8, /datum/reagent/consumable/nutriment/vitamin = 6) + bonus_reagents = list("omnizine" = 2, "vitamin" = 6) + list_reagents = list("nutriment" = 8, "omnizine" = 8, "vitamin" = 6) tastes = list("leaves" = 1) foodtype = VEGETABLES @@ -26,8 +26,8 @@ name = "herb salad" desc = "A tasty salad with apples on top." icon_state = "herbsalad" - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 4) - list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("vitamin" = 4) + list_reagents = list("nutriment" = 8, "vitamin" = 2) tastes = list("leaves" = 1, "apple" = 1) foodtype = VEGETABLES | FRUIT @@ -35,8 +35,8 @@ name = "valid salad" desc = "It's just an herb salad with meatballs and fried potato slices. Nothing suspicious about it." icon_state = "validsalad" - bonus_reagents = list(/datum/reagent/consumable/doctor_delight = 5, /datum/reagent/consumable/nutriment/vitamin = 4) - list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/doctor_delight = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("doctorsdelight" = 5, "vitamin" = 4) + list_reagents = list("nutriment" = 8, "doctorsdelight" = 5, "vitamin" = 2) tastes = list("leaves" = 1, "potato" = 1, "meat" = 1, "valids" = 1) foodtype = VEGETABLES | MEAT | FRIED | JUNKFOOD | FRUIT @@ -44,8 +44,8 @@ name = "oatmeal" desc = "A nice bowl of oatmeal." icon_state = "oatmeal" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4) - list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/milk = 10, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 4, "vitamin" = 4) + list_reagents = list("nutriment" = 7, "milk" = 10, "vitamin" = 2) tastes = list("oats" = 1, "milk" = 1) foodtype = DAIRY | GRAIN | BREAKFAST @@ -53,7 +53,7 @@ name = "fruit salad" desc = "Your standard fruit salad." icon_state = "fruitsalad" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 2, "vitamin" = 4) tastes = list("fruit" = 1) foodtype = FRUIT | BREAKFAST @@ -61,8 +61,8 @@ name = "jungle salad" desc = "Exotic fruits in a bowl." icon_state = "junglesalad" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4) - list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/banana = 5, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 4, "vitamin" = 4) + list_reagents = list("nutriment" = 7, "banana" = 5, "vitamin" = 4) tastes = list("fruit" = 1, "the jungle" = 1) foodtype = FRUIT | BREAKFAST @@ -70,8 +70,8 @@ name = "citrus delight" desc = "Citrus overload!" icon_state = "citrusdelight" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4) - list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 4, "vitamin" = 4) + list_reagents = list("nutriment" = 7, "vitamin" = 5) tastes = list("sourness" = 1, "leaves" = 1) foodtype = FRUIT | BREAKFAST @@ -80,7 +80,7 @@ desc = "A bowl of raw rice." icon_state = "ricebowl" cooked_type = /obj/item/reagent_containers/food/snacks/salad/boiledrice - list_reagents = list(/datum/reagent/consumable/nutriment = 4) + list_reagents = list("nutriment" = 4) tastes = list("rice" = 1) foodtype = GRAIN | RAW @@ -88,8 +88,8 @@ name = "boiled rice" desc = "A warm bowl of rice." icon_state = "boiledrice" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list("nutriment" = 5, "vitamin" = 1) tastes = list("rice" = 1) foodtype = GRAIN | BREAKFAST @@ -97,7 +97,7 @@ name = "rice pudding" desc = "Everybody loves rice pudding!" icon_state = "ricepudding" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 4, "vitamin" = 2) tastes = list("rice" = 1, "sweetness" = 1) foodtype = GRAIN | DAIRY @@ -105,7 +105,7 @@ name = "rice and pork" desc = "Well, it looks like pork..." icon_state = "riceporkbowl" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 4, "vitamin" = 4) tastes = list("rice" = 1, "meat" = 1) foodtype = GRAIN | MEAT @@ -113,6 +113,6 @@ name = "egg bowl" desc = "A bowl of rice with a fried egg." icon_state = "eggbowl" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 4, "vitamin" = 4) tastes = list("rice" = 1, "egg" = 1) foodtype = GRAIN | MEAT //EGG = MEAT -NinjaNomNom 2017 diff --git a/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm b/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm index 3cc4cfe63f..17a710ada2 100644 --- a/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm +++ b/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm @@ -4,8 +4,8 @@ icon = 'icons/obj/food/burgerbread.dmi' icon_state = "sandwich" trash = /obj/item/trash/plate - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list("nutriment" = 6, "vitamin" = 1) cooked_type = /obj/item/reagent_containers/food/snacks/toastedsandwich tastes = list("meat" = 2, "cheese" = 1, "bread" = 2, "lettuce" = 1) foodtype = GRAIN | VEGETABLES @@ -16,8 +16,8 @@ icon = 'icons/obj/food/burgerbread.dmi' icon_state = "toastedsandwich" trash = /obj/item/trash/plate - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/carbon = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/carbon = 2) + bonus_reagents = list("nutriment" = 1, "carbon" = 2) + list_reagents = list("nutriment" = 6, "carbon" = 2) tastes = list("toast" = 1) foodtype = GRAIN @@ -27,8 +27,8 @@ icon = 'icons/obj/food/burgerbread.dmi' icon_state = "toastedsandwich" trash = /obj/item/trash/plate - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list("nutriment" = 7, "vitamin" = 1) tastes = list("toast" = 1, "cheese" = 1) foodtype = GRAIN | DAIRY @@ -43,13 +43,13 @@ foodtype = GRAIN /obj/item/reagent_containers/food/snacks/jellysandwich/slime - bonus_reagents = list(/datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("slimejelly" = 5, "vitamin" = 2) + list_reagents = list("nutriment" = 2, "slimejelly" = 5, "vitamin" = 2) foodtype = GRAIN | TOXIC /obj/item/reagent_containers/food/snacks/jellysandwich/cherry - bonus_reagents = list(/datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("cherryjelly" = 5, "vitamin" = 2) + list_reagents = list("nutriment" = 2, "cherryjelly" = 5, "vitamin" = 2) foodtype = GRAIN | FRUIT /obj/item/reagent_containers/food/snacks/jellysandwich/pbj @@ -59,13 +59,13 @@ tastes = list("bread" = 1, "jelly" = 1, "peanuts" = 1) /obj/item/reagent_containers/food/snacks/jellysandwich/pbj/cherry - bonus_reagents = list(/datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("cherryjelly" = 5, "peanut_butter" = 5, "vitamin" = 2) + list_reagents = list("nutriment" = 2, "cherryjelly" = 5, "peanut_butter" = 5, "vitamin" = 2) foodtype = GRAIN | FRUIT /obj/item/reagent_containers/food/snacks/jellysandwich/pbj/slime - bonus_reagents = list(/datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("slimejelly" = 5, "peanut_butter" = 5, "vitamin" = 2) + list_reagents = list("nutriment" = 2, "slimejelly" = 5, "peanut_butter" = 5, "vitamin" = 2) foodtype = GRAIN | TOXIC /obj/item/reagent_containers/food/snacks/peanutbutter_sandwich @@ -75,8 +75,8 @@ icon_state = "peanutbuttersandwich" trash = /obj/item/trash/plate bitesize = 3 - bonus_reagents = list(/datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("peanut_butter" = 5, "vitamin" = 2) + list_reagents = list("nutriment" = 2, "peanut_butter" = 5, "vitamin" = 2) foodtype = GRAIN /obj/item/reagent_containers/food/snacks/notasandwich @@ -85,8 +85,8 @@ icon = 'icons/obj/food/burgerbread.dmi' icon_state = "notasandwich" trash = /obj/item/trash/plate - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 6) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 6) + bonus_reagents = list("vitamin" = 6) + list_reagents = list("nutriment" = 6, "vitamin" = 6) tastes = list("nothing suspicious" = 1) foodtype = GRAIN | GROSS @@ -101,13 +101,13 @@ foodtype = GRAIN /obj/item/reagent_containers/food/snacks/jelliedtoast/cherry - bonus_reagents = list(/datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("cherryjelly" = 5, "vitamin" = 2) + list_reagents = list("nutriment" = 1, "cherryjelly" = 5, "vitamin" = 2) foodtype = GRAIN | FRUIT | SUGAR /obj/item/reagent_containers/food/snacks/jelliedtoast/slime - bonus_reagents = list(/datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("slimejelly" = 5, "vitamin" = 2) + list_reagents = list("nutriment" = 1, "slimejelly" = 5, "vitamin" = 2) foodtype = GRAIN | TOXIC | SUGAR /obj/item/reagent_containers/food/snacks/peanut_buttertoast @@ -117,8 +117,8 @@ icon_state = "peanutbuttertoast" trash = /obj/item/trash/plate bitesize = 3 - bonus_reagents = list(/datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("peanut_butter" = 5, "vitamin" = 2) + list_reagents = list("nutriment" = 1, "peanut_butter" = 5, "vitamin" = 2) tastes = list("toast" = 1, "peanuts" = 1) foodtype = GRAIN @@ -128,8 +128,8 @@ desc = "This seems awfully bitter." icon = 'icons/obj/food/burgerbread.dmi' icon_state = "twobread" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + list_reagents = list("nutriment" = 2, "vitamin" = 2) tastes = list("bread" = 2) foodtype = GRAIN @@ -139,6 +139,6 @@ icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "tunasandwich" trash = /obj/item/trash/plate - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) + bonus_reagents = list("nutriment" = 1, "vitamin" = 3) tastes = list("tuna" = 4, "mayonnaise" = 2, "bread" = 2) foodtype = GRAIN | MEAT diff --git a/code/modules/food_and_drinks/food/snacks_soup.dm b/code/modules/food_and_drinks/food/snacks_soup.dm index a0e1ebcb39..47c9f02fb9 100644 --- a/code/modules/food_and_drinks/food/snacks_soup.dm +++ b/code/modules/food_and_drinks/food/snacks_soup.dm @@ -4,7 +4,7 @@ trash = /obj/item/reagent_containers/glass/bowl bitesize = 5 volume = 80 - list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/water = 5, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list("nutriment" = 8, "water" = 5, "vitamin" = 4) tastes = list("tasteless soup" = 1) foodtype = VEGETABLES @@ -16,7 +16,7 @@ name = "wish soup" desc = "I wish this was soup." icon_state = "wishsoup" - list_reagents = list(/datum/reagent/water = 10) + list_reagents = list("water" = 10) tastes = list("wishes" = 1) /obj/item/reagent_containers/food/snacks/soup/wish/Initialize() @@ -24,17 +24,17 @@ var/wish_true = prob(25) if(wish_true) desc = "A wish come true!" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 9, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 9, "vitamin" = 1) if(wish_true) - reagents.add_reagent(/datum/reagent/consumable/nutriment, 9) - reagents.add_reagent(/datum/reagent/consumable/nutriment/vitamin, 1) + reagents.add_reagent("nutriment", 9) + reagents.add_reagent("vitamin", 1) foodtype = VEGETABLES /obj/item/reagent_containers/food/snacks/soup/meatball name = "meatball soup" desc = "You've got balls kid, BALLS!" icon_state = "meatballsoup" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 1, "vitamin" = 5) tastes = list("meat" = 1) foodtype = MEAT @@ -42,8 +42,8 @@ name = "slime soup" desc = "If no water is available, you may substitute tears." icon_state = "slimesoup" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/toxin/slimejelly = 5, /datum/reagent/water = 5, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 1, "slimejelly" = 5, "vitamin" = 5) + list_reagents = list("nutriment" = 5, "slimejelly" = 5, "water" = 5, "vitamin" = 4) tastes = list("slime" = 1) foodtype = TOXIC | SUGAR @@ -51,8 +51,8 @@ name = "tomato soup" desc = "Smells like copper." icon_state = "tomatosoup" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 6) - list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/blood = 10, /datum/reagent/water = 5, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 1, "vitamin" = 6) + list_reagents = list("nutriment" = 2, "blood" = 10, "water" = 5, "vitamin" = 4) tastes = list("iron" = 1) foodtype = GROSS @@ -61,8 +61,8 @@ desc = "A savory dish of alien wing wang in soy." icon_state = "wingfangchu" trash = /obj/item/reagent_containers/glass/bowl - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/soysauce = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + list_reagents = list("nutriment" = 6, "soysauce" = 5, "vitamin" = 2) tastes = list("soy" = 1) foodtype = MEAT @@ -70,8 +70,8 @@ name = "clown's tears" desc = "Not very funny." icon_state = "clownstears" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/banana = 5, /datum/reagent/consumable/nutriment/vitamin = 8, /datum/reagent/consumable/clownstears = 10) - list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/banana = 5, /datum/reagent/water = 5, /datum/reagent/consumable/nutriment/vitamin = 8, /datum/reagent/consumable/clownstears = 10) + bonus_reagents = list("nutriment" = 1, "banana" = 5, "vitamin" = 8, "clownstears" = 10) + list_reagents = list("nutriment" = 4, "banana" = 5, "water" = 5, "vitamin" = 8, "clownstears" = 10) tastes = list("a bad joke" = 1) foodtype = FRUIT | SUGAR @@ -79,7 +79,7 @@ name = "vegetable soup" desc = "A true vegan meal." icon_state = "vegetablesoup" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 1, "vitamin" = 4) tastes = list("vegetables" = 1) foodtype = VEGETABLES @@ -87,7 +87,7 @@ name = "nettle soup" desc = "To think, the botanist would've beat you to death with one of these." icon_state = "nettlesoup" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 1, "omnizine" = 5, "vitamin" = 5) tastes = list("nettles" = 1) foodtype = VEGETABLES @@ -96,23 +96,21 @@ desc = "The mystery is, why aren't you eating it?" icon_state = "mysterysoup" var/extra_reagent = null - list_reagents = list(/datum/reagent/consumable/nutriment = 6) + list_reagents = list("nutriment" = 6) tastes = list("chaos" = 1) /obj/item/reagent_containers/food/snacks/soup/mystery/Initialize() . = ..() - extra_reagent = pick(/datum/reagent/consumable/capsaicin, /datum/reagent/consumable/frostoil, - /datum/reagent/medicine/omnizine, /datum/reagent/consumable/banana, /datum/reagent/blood, - /datum/reagent/toxin/slimejelly, /datum/reagent/toxin, /datum/reagent/carbon, /datum/reagent/medicine/oculine) - bonus_reagents = list(extra_reagent = 5, /datum/reagent/consumable/nutriment = 6) - reagents.add_reagent(extra_reagent, 5) + extra_reagent = pick("capsaicin", "frostoil", "omnizine", "banana", "blood", "slimejelly", "toxin", "banana", "carbon", "oculine") + bonus_reagents = list("[extra_reagent]" = 5, "nutriment" = 6) + reagents.add_reagent("[extra_reagent]", 5) /obj/item/reagent_containers/food/snacks/soup/hotchili name = "hot chili" desc = "A five alarm Texan Chili!" icon_state = "hotchili" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/tomatojuice = 2, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/capsaicin = 1, /datum/reagent/consumable/tomatojuice = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 1, "tomatojuice" = 2, "vitamin" = 2) + list_reagents = list("nutriment" = 5, "capsaicin" = 1, "tomatojuice" = 2, "vitamin" = 2) tastes = list("hot peppers" = 1) foodtype = VEGETABLES @@ -120,8 +118,8 @@ name = "cold chili" desc = "This slush is barely a liquid!" icon_state = "coldchili" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/tomatojuice = 2, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/frostoil = 1, /datum/reagent/consumable/tomatojuice = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 1, "tomatojuice" = 2, "vitamin" = 2) + list_reagents = list("nutriment" = 5, "frostoil" = 1, "tomatojuice" = 2, "vitamin" = 2) tastes = list("tomato" = 1, "mint" = 1) foodtype = VEGETABLES @@ -129,8 +127,8 @@ name = "monkey's delight" desc = "A delicious soup with dumplings and hunks of monkey meat simmered to perfection, in a broth that tastes faintly of bananas." icon_state = "monkeysdelight" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/banana = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 1, "vitamin" = 5) + list_reagents = list("nutriment" = 10, "banana" = 5, "vitamin" = 5) tastes = list("the jungle" = 1, "banana" = 1) foodtype = FRUIT @@ -138,8 +136,8 @@ name = "tomato soup" desc = "Drinking this feels like being a vampire! A tomato vampire..." icon_state = "tomatosoup" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/tomatojuice = 10, /datum/reagent/consumable/nutriment/vitamin = 3) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/tomatojuice = 10, /datum/reagent/consumable/nutriment/vitamin = 3) + bonus_reagents = list("nutriment" = 1, "tomatojuice" = 10, "vitamin" = 3) + list_reagents = list("nutriment" = 5, "tomatojuice" = 10, "vitamin" = 3) tastes = list("tomato" = 1) foodtype = VEGETABLES @@ -147,7 +145,7 @@ name = "eyeball soup" desc = "It looks back at you..." icon_state = "eyeballsoup" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/liquidgibs = 3) + bonus_reagents = list("nutriment" = 1, "liquidgibs" = 3) tastes = list("tomato" = 1, "squirming" = 1) foodtype = MEAT | GROSS @@ -155,7 +153,7 @@ name = "milosoup" desc = "The universes best soup! Yum!!!" icon_state = "milosoup" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) + bonus_reagents = list("nutriment" = 1, "vitamin" = 3) tastes = list("milo" = 1) // wtf is milo foodtype = GROSS @@ -163,8 +161,8 @@ name = "chantrelle soup" desc = "A delicious and hearty mushroom soup." icon_state = "mushroomsoup" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 1, "vitamin" = 5) + list_reagents = list("nutriment" = 8, "vitamin" = 4) tastes = list("mushroom" = 1) foodtype = VEGETABLES @@ -172,7 +170,7 @@ name = "beet soup" desc = "Wait, how do you spell it again..?" icon_state = "beetsoup" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 1, "vitamin" = 5) foodtype = VEGETABLES /obj/item/reagent_containers/food/snacks/soup/beet/Initialize() @@ -186,8 +184,8 @@ desc = "Jello gelatin, from Alfred Hubbard's cookbook." icon_state = "spacylibertyduff" bitesize = 3 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/drug/mushroomhallucinogen = 6) + bonus_reagents = list("nutriment" = 1, "vitamin" = 5) + list_reagents = list("nutriment" = 6, "mushroomhallucinogen" = 6) tastes = list("jelly" = 1, "mushroom" = 1) foodtype = VEGETABLES @@ -196,8 +194,8 @@ desc = "Looks curiously toxic." icon_state = "amanitajelly" bitesize = 3 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/drug/mushroomhallucinogen = 3, /datum/reagent/toxin/amatoxin = 6) + bonus_reagents = list("nutriment" = 1, "vitamin" = 5) + list_reagents = list("nutriment" = 6, "mushroomhallucinogen" = 3, "amatoxin" = 6) tastes = list("jelly" = 1, "mushroom" = 1) foodtype = VEGETABLES | TOXIC @@ -205,8 +203,8 @@ name = "stew" desc = "A nice and warm stew. Healthy and strong." icon_state = "stew" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/tomatojuice = 5, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/medicine/oculine = 5, /datum/reagent/consumable/tomatojuice = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 1, "tomatojuice" = 5, "vitamin" = 5) + list_reagents = list("nutriment" = 10, "oculine" = 5, "tomatojuice" = 5, "vitamin" = 5) bitesize = 7 volume = 100 tastes = list("tomato" = 1, "carrot" = 1) @@ -216,7 +214,7 @@ name = "sweet potato soup" desc = "Delicious sweet potato in soup form." icon_state = "sweetpotatosoup" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 5) + bonus_reagents = list("nutriment" = 4, "vitamin" = 5) tastes = list("sweet potato" = 1) foodtype = VEGETABLES | SUGAR @@ -224,7 +222,7 @@ name = "red beet soup" desc = "Quite a delicacy." icon_state = "redbeetsoup" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 6) + bonus_reagents = list("nutriment" = 4, "vitamin" = 6) tastes = list("beet" = 1) foodtype = VEGETABLES @@ -232,8 +230,8 @@ name = "electron soup" desc = "A gastronomic curiosity of ethereal origin. It is famed for the minature weather system formed over a properly prepared soup." icon_state = "electronsoup" - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/liquidelectricity = 5) - tastes = list("mushroom" = 1, "electrons" = 4, "shockingly good" = 1) + list_reagents = list("nutriment" = 3, "liquidelectricity" = 5) + tastes = list("mushroom" = 1, "electrons" = 4, "shockingly good") filling_color = "#CC2B52" foodtype = VEGETABLES | TOXIC @@ -241,8 +239,8 @@ name = "bungo curry" desc = "A spicy vegetable curry made with the humble bungo fruit, Exotic!" icon_state = "bungocurry" - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 11) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/capsaicin = 5) + bonus_reagents = list("vitamin" = 11) + list_reagents = list("nutriment" = 6, "capsaicin" = 5) tastes = list("bungo" = 2, "hot curry" = 4, "tropical sweetness" = 1) filling_color = "#E6A625" foodtype = VEGETABLES | FRUIT | DAIRY diff --git a/code/modules/food_and_drinks/food/snacks_spaghetti.dm b/code/modules/food_and_drinks/food/snacks_spaghetti.dm index d54ba6f030..70a1922050 100644 --- a/code/modules/food_and_drinks/food/snacks_spaghetti.dm +++ b/code/modules/food_and_drinks/food/snacks_spaghetti.dm @@ -4,7 +4,7 @@ desc = "Now that's a nic'e pasta!" icon = 'icons/obj/food/pizzaspaghetti.dmi' icon_state = "spaghetti" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 1, "vitamin" = 1) cooked_type = /obj/item/reagent_containers/food/snacks/boiledspaghetti filling_color = "#F0E68C" tastes = list("pasta" = 1) @@ -16,8 +16,8 @@ icon = 'icons/obj/food/pizzaspaghetti.dmi' icon_state = "spaghettiboiled" trash = /obj/item/trash/plate - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 2) + list_reagents = list("nutriment" = 2, "vitamin" = 1) custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/pasta filling_color = "#F0E68C" tastes = list("pasta" = 1) @@ -30,8 +30,8 @@ icon_state = "pastatomato" trash = /obj/item/trash/plate bitesize = 4 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/tomatojuice = 10, /datum/reagent/consumable/nutriment/vitamin = 4) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/tomatojuice = 10, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 1, "tomatojuice" = 10, "vitamin" = 4) + list_reagents = list("nutriment" = 6, "tomatojuice" = 10, "vitamin" = 4) filling_color = "#DC143C" tastes = list("pasta" = 1, "tomato" = 1) foodtype = GRAIN | VEGETABLES @@ -43,8 +43,8 @@ icon_state = "copypasta" trash = /obj/item/trash/plate bitesize = 4 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) - list_reagents = list(/datum/reagent/consumable/nutriment = 12, /datum/reagent/consumable/tomatojuice = 20, /datum/reagent/consumable/nutriment/vitamin = 8) + bonus_reagents = list("nutriment" = 1, "vitamin" = 4) + list_reagents = list("nutriment" = 12, "tomatojuice" = 20, "vitamin" = 8) filling_color = "#DC143C" tastes = list("pasta" = 1, "tomato" = 1) foodtype = GRAIN | VEGETABLES @@ -55,8 +55,8 @@ icon = 'icons/obj/food/pizzaspaghetti.dmi' icon_state = "meatballspaghetti" trash = /obj/item/trash/plate - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) - list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 4) + bonus_reagents = list("nutriment" = 1, "vitamin" = 4) + list_reagents = list("nutriment" = 8, "vitamin" = 4) filling_color = "#F0E68C" tastes = list("pasta" = 1, "tomato" = 1, "meat" = 1) foodtype = GRAIN | MEAT @@ -67,8 +67,8 @@ icon = 'icons/obj/food/pizzaspaghetti.dmi' icon_state = "spesslaw" trash = /obj/item/trash/plate - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 6) - list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 6) + bonus_reagents = list("nutriment" = 1, "vitamin" = 6) + list_reagents = list("nutriment" = 8, "vitamin" = 6) filling_color = "#F0E68C" tastes = list("pasta" = 1, "tomato" = 1, "meat" = 1) foodtype = GRAIN @@ -79,8 +79,8 @@ icon = 'icons/obj/food/pizzaspaghetti.dmi' icon_state = "chowmein" trash = /obj/item/trash/plate - bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 4) - list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/nutriment/vitamin = 6) + bonus_reagents = list("nutriment" = 3, "vitamin" = 4) + list_reagents = list("nutriment" = 7, "vitamin" = 6) tastes = list("noodle" = 1, "tomato" = 1) foodtype = GRAIN @@ -90,7 +90,7 @@ icon = 'icons/obj/food/pizzaspaghetti.dmi' icon_state = "beefnoodle" trash = /obj/item/reagent_containers/glass/bowl - bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/liquidgibs = 3) + bonus_reagents = list("nutriment" = 5, "vitamin" = 6, "liquidgibs" = 3) tastes = list("noodle" = 1, "meat" = 1) foodtype = GRAIN | MEAT @@ -100,6 +100,6 @@ icon = 'icons/obj/food/pizzaspaghetti.dmi' icon_state = "butternoodles" trash = /obj/item/trash/plate - bonus_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 8, "vitamin" = 1) tastes = list("noodle" = 1, "butter" = 1) foodtype = GRAIN | DAIRY diff --git a/code/modules/food_and_drinks/food/snacks_sushi.dm b/code/modules/food_and_drinks/food/snacks_sushi.dm index d16ca79001..a4cbc5e344 100644 --- a/code/modules/food_and_drinks/food/snacks_sushi.dm +++ b/code/modules/food_and_drinks/food/snacks_sushi.dm @@ -5,7 +5,7 @@ desc = "A bowl of sticky rice for making sushi." icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushi_rice" - list_reagents = list(/datum/reagent/consumable/sodiumchloride = 5) + list_reagents = list("sodiumchloride" = 5) tastes = list("rice" = 5, "salt" = 1) foodtype = GRAIN @@ -14,7 +14,7 @@ desc = "A thin, light salt sheet of plant mater. This is commenly used in sushi recipes," icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sea_weed" - list_reagents = list(/datum/reagent/consumable/sodiumchloride = 2) + list_reagents = list("sodiumchloride" = 2) tastes = list("plants" = 2, "salt" = 1) foodtype = VEGETABLES @@ -24,7 +24,7 @@ icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "tuna_can" //trash = /obj/item/trash/tuna_used //I dont know if I like this idea - A Masked Cat - list_reagents = list(/datum/reagent/consumable/sodiumchloride = 5, /datum/reagent/mercury = 2) + list_reagents = list("sodiumchloride" = 5, "mercury" = 2) tastes = list("tuna" = 15, "mercury" = 1, "salt" = 3) foodtype = MEAT @@ -34,8 +34,8 @@ desc = "A small cylindrical filled with rice and fish." icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_basic" - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 1) + bonus_reagents = list("vitamin" = 2) + list_reagents = list("nutriment" = 1) bitesize = 1 filling_color = "#F2EEEA" //rgb(242, 238, 234) tastes = list("fish" = 1, "rice" = 1, "salt" = 1) @@ -46,8 +46,8 @@ desc = "A pice of carp lightly placed on some rice." icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_adv" - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 2) + bonus_reagents = list("vitamin" = 2) + list_reagents = list("nutriment" = 2) bitesize = 1 filling_color = "#F2EEEA" //rgb(242, 238, 234) tastes = list("fish" = 1, "rice" = 1, "salt" = 1) @@ -58,8 +58,8 @@ desc = "A well prepared pice of the best of the carp fillet placed on rice. Looks fancy and fresh!" icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_pro" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + list_reagents = list("nutriment" = 8, "vitamin" = 1) bitesize = 1 filling_color = "#F2EEEA" //rgb(242, 238, 234) tastes = list("fish" = 1, "rice" = 1, "salt" = 1) @@ -70,7 +70,7 @@ desc = "Spider eggs wrapped in a thin salted Kudzu pod" icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_egg" - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list("nutriment" = 3, "vitamin" = 2) filling_color = "#FF3333" // R225 G051 B051 tastes = list("seaweed" = 1, "salty" = 2) foodtype = MEAT | VEGETABLES @@ -80,7 +80,7 @@ desc = "A ball of rice with some light salt and a wrap of Kudzu skin." icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "riceball" - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/sodiumchloride = 2) + list_reagents = list("nutriment" = 5, "sodiumchloride" = 2) tastes = list("rice" = 4, "salt" = 1) foodtype = GRAIN @@ -88,8 +88,8 @@ name = "carp sashimi" desc = "Celebrate surviving attack from hostile alien lifeforms by hospitalising yourself." icon_state = "sashimi" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/capsaicin = 4, /datum/reagent/consumable/nutriment/vitamin = 4) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/capsaicin = 5) + bonus_reagents = list("nutriment" = 1, "capsaicin" = 4, "vitamin" = 4) + list_reagents = list("nutriment" = 6, "capsaicin" = 5) filling_color = "#FA8072" tastes = list("fish" = 1, "hot peppers" = 1) foodtype = MEAT | TOXIC \ No newline at end of file diff --git a/code/modules/food_and_drinks/food/snacks_vend.dm b/code/modules/food_and_drinks/food/snacks_vend.dm index 239dd433b0..8f661b868e 100644 --- a/code/modules/food_and_drinks/food/snacks_vend.dm +++ b/code/modules/food_and_drinks/food/snacks_vend.dm @@ -7,7 +7,7 @@ desc = "Nougat love it or hate it." icon_state = "candy" trash = /obj/item/trash/candy - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 3, /datum/reagent/consumable/coco = 3) + list_reagents = list("nutriment" = 1, "sugar" = 3, "cocoa" = 3) junkiness = 25 filling_color = "#D2691E" tastes = list("candy" = 1) @@ -18,7 +18,7 @@ icon_state = "sosjerky" desc = "Beef jerky made from the finest space cows." trash = /obj/item/trash/sosjerky - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 3, /datum/reagent/consumable/sodiumchloride = 2) + list_reagents = list("nutriment" = 1, "sugar" = 3, "sodiumchloride" = 2) junkiness = 25 filling_color = "#8B0000" tastes = list("dried meat" = 1) @@ -27,7 +27,7 @@ /obj/item/reagent_containers/food/snacks/sosjerky/healthy name = "homemade beef jerky" desc = "Homemade beef jerky made from the finest space cows." - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list("nutriment" = 3, "vitamin" = 1) junkiness = 0 /obj/item/reagent_containers/food/snacks/chips @@ -36,7 +36,7 @@ icon_state = "chips" trash = /obj/item/trash/chips bitesize = 1 - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 3, /datum/reagent/consumable/sodiumchloride = 1) + list_reagents = list("nutriment" = 1, "sugar" = 3, "sodiumchloride" = 1) junkiness = 20 filling_color = "#FFD700" tastes = list("salt" = 1, "crisps" = 1) @@ -47,7 +47,7 @@ icon_state = "4no_raisins" desc = "Best raisins in the universe. Not sure why." trash = /obj/item/trash/raisins - list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/sugar = 4) + list_reagents = list("nutriment" = 2, "sugar" = 4) junkiness = 25 filling_color = "#8B0000" tastes = list("dried raisins" = 1) @@ -56,7 +56,7 @@ /obj/item/reagent_containers/food/snacks/no_raisin/healthy name = "homemade raisins" desc = "Homemade raisins, the best in all of spess." - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list("nutriment" = 3, "vitamin" = 2) junkiness = 0 foodtype = FRUIT @@ -64,7 +64,7 @@ name = "space twinkie" icon_state = "space_twinkie" desc = "Guaranteed to survive longer than you will." - list_reagents = list(/datum/reagent/consumable/sugar = 4) + list_reagents = list("sugar" = 4) junkiness = 25 filling_color = "#FFD700" foodtype = JUNKFOOD | GRAIN | SUGAR @@ -74,7 +74,7 @@ desc = "Bite sized cheesie snacks that will honk all over your mouth." icon_state = "cheesie_honkers" trash = /obj/item/trash/cheesie - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 3) + list_reagents = list("nutriment" = 1, "sugar" = 3) junkiness = 25 filling_color = "#FFD700" tastes = list("cheese" = 5, "crisps" = 2) @@ -85,7 +85,7 @@ icon_state = "syndi_cakes" desc = "An extremely moist snack cake that tastes just as good after being nuked." trash = /obj/item/trash/syndi_cakes - list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/doctor_delight = 5) + list_reagents = list("nutriment" = 4, "doctorsdelight" = 5) filling_color = "#F5F5DC" tastes = list("sweetness" = 3, "cake" = 1) foodtype = GRAIN | FRUIT | VEGETABLES diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm index 27ee54815f..1bc2e4bb89 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -52,7 +52,7 @@ God bless America. /obj/machinery/deepfryer/Initialize() . = ..() create_reagents(50, OPENCONTAINER) - reagents.add_reagent(/datum/reagent/consumable/cooking_oil, 25) + reagents.add_reagent("cooking_oil", 25) component_parts = list() component_parts += new /obj/item/circuitboard/machine/deep_fryer(null) component_parts += new /obj/item/stock_parts/micro_laser(null) @@ -81,9 +81,9 @@ God bless America. qdel(I) return if(istype(I,/obj/item/clothing/head/mob_holder)) - to_chat(user, "This does not fit in the fryer.") // TODO: Deepfrying instakills mobs, spawns a whole deep-fried mob. + to_chat(user, "This does not fit in the fryer.") // TODO: Deepfrying instakills mobs, spawns a whole deep-fried mob. return - if(!reagents.has_reagent(/datum/reagent/consumable/cooking_oil)) + if(!reagents.has_reagent("cooking_oil")) to_chat(user, "[src] has no cooking oil to fry with!") return if(I.resistance_flags & INDESTRUCTIBLE) @@ -107,7 +107,7 @@ God bless America. /obj/machinery/deepfryer/process() ..() - var/datum/reagent/consumable/cooking_oil/C = reagents.has_reagent(/datum/reagent/consumable/cooking_oil) + var/datum/reagent/consumable/cooking_oil/C = reagents.has_reagent("cooking_oil") if(!C) return reagents.chem_temp = C.fry_temperature diff --git a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm index 68cc84c639..4dda9dd773 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm @@ -35,16 +35,16 @@ dat += "Portion: [portion]
    " for(var/datum/reagent/R in reagents.reagent_list) dat += "[R.name]: [R.volume] " - dat += "Purge" + dat += "Purge" if (glasses > 0) - dat += "Pour in a glass" - dat += "Add to the mixer
    " + dat += "Pour in a glass" + dat += "Add to the mixer
    " dat += "
    MIXER CONTENTS
    " for(var/datum/reagent/R in mixer.reagents.reagent_list) dat += "[R.name]: [R.volume] " - dat += "Transfer back" + dat += "Transfer back" if (glasses > 0) - dat += "Pour in a glass" + dat += "Pour in a glass" dat += "
    " dat += "

    STORED FOOD
    " for(var/V in stored_food) diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm index e5c5a4f933..e02c3c1334 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm @@ -176,7 +176,7 @@ newmeat.name = "[sourcename] [newmeat.name]" if(istype(newmeat)) newmeat.subjectname = sourcename - newmeat.reagents.add_reagent (/datum/reagent/consumable/nutriment, sourcenutriment / meat_produced) // Thehehe. Fat guys go first + newmeat.reagents.add_reagent ("nutriment", sourcenutriment / meat_produced) // Thehehe. Fat guys go first if(sourcejob) newmeat.subjectjob = sourcejob allmeat[i] = newmeat diff --git a/code/modules/food_and_drinks/kitchen_machinery/grill.dm b/code/modules/food_and_drinks/kitchen_machinery/grill.dm index c52389cd56..449da2afe3 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/grill.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/grill.dm @@ -52,10 +52,10 @@ grill_loop.start() return else - if(I.reagents.has_reagent(/datum/reagent/consumable/monkey_energy)) - grill_fuel += (20 * (I.reagents.get_reagent_amount(/datum/reagent/consumable/monkey_energy))) + if(I.reagents.has_reagent("monkey_energy")) + grill_fuel += (20 * (I.reagents.get_reagent_amount("monkey_energy"))) to_chat(user, "You pour the Monkey Energy in [src].") - I.reagents.remove_reagent("monkey_energy", I.reagents.get_reagent_amount(/datum/reagent/consumable/monkey_energy)) + I.reagents.remove_reagent("monkey_energy", I.reagents.get_reagent_amount("monkey_energy")) update_icon() return ..() diff --git a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm index 71becf0542..8db6956da9 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm @@ -25,37 +25,37 @@ var/flavour_name = "vanilla" var/obj/item/reagent_containers/beaker = null var/static/list/icecream_vat_reagents = list( - /datum/reagent/consumable/milk = 6, - /datum/reagent/consumable/flour = 6, - /datum/reagent/consumable/sugar = 6, - /datum/reagent/consumable/ice = 6, - /datum/reagent/consumable/coco = 6, - /datum/reagent/consumable/vanilla = 6, - /datum/reagent/consumable/berryjuice = 6, - /datum/reagent/consumable/ethanol/singulo = 6, - /datum/reagent/consumable/peachjuice = 6, - /datum/reagent/consumable/grapejuice = 6) + "milk" = 6, + "flour" = 6, + "sugar" = 6, + "ice" = 6, + "cocoa" = 6, + "vanilla" = 6, + "berryjuice" = 6, + "singulo" = 6, + "peachjuice" = 6, + "grapejuice" = 6) /obj/machinery/icecream_vat/proc/get_ingredient_list(type) switch(type) if(ICECREAM_CHOCOLATE) - return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/coco) + return list("milk", "ice", "cocoa") if(ICECREAM_STRAWBERRY) - return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/berryjuice) + return list("milk", "ice", "berryjuice") if(ICECREAM_CUSTOM) - return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice) + return list("milk", "ice") if(ICECREAM_PEACH) - return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/peachjuice) + return list("milk", "ice", "peachjuice") if(ICECREAM_GRAPE) - return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/grapejuice) + return list("milk", "ice", "grapejuice") if(ICECREAM_BLUE) - return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/ethanol/singulo) + return list("milk", "ice", "singulo") if(CONE_WAFFLE) - return list(/datum/reagent/consumable/flour, /datum/reagent/consumable/sugar) + return list("flour", "sugar") if(CONE_CHOC) - return list(/datum/reagent/consumable/flour, /datum/reagent/consumable/sugar, /datum/reagent/consumable/coco) + return list("flour", "sugar", "cocoa") else //ICECREAM_VANILLA - return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/vanilla) + return list("milk", "ice", "vanilla") /obj/machinery/icecream_vat/proc/get_flavour_name(flavour_type) @@ -113,7 +113,7 @@ dat += "VAT CONTENT
    " for(var/datum/reagent/R in reagents.reagent_list) dat += "[R.name]: [R.volume]" - dat += "Purge
    " + dat += "Purge
    " dat += "Refresh Close" var/datum/browser/popup = new(user, "icecreamvat","Icecream Vat", 700, 500, src) @@ -132,7 +132,7 @@ else I.add_ice_cream(flavour_name) if(I.reagents.total_volume < 10) - I.reagents.add_reagent(/datum/reagent/consumable/sugar, 10 - I.reagents.total_volume) + I.reagents.add_reagent("sugar", 10 - I.reagents.total_volume) updateDialog() else to_chat(user, "There is not enough ice cream left!") @@ -228,7 +228,7 @@ desc = "Delicious waffle cone, but no ice cream." icon = 'icons/obj/kitchen.dmi' icon_state = "icecream_cone_waffle" //default for admin-spawned cones, href_list["cone"] should overwrite this all the time - list_reagents = list(/datum/reagent/consumable/nutriment = 4) + list_reagents = list("nutriment" = 4) tastes = list("cream" = 2, "waffle" = 1) var/ice_creamed = 0 var/cone_type @@ -244,9 +244,9 @@ icon_state = "icecream_cone_[cone_name]" switch (cone_type) if ("waffle") - reagents.add_reagent(/datum/reagent/consumable/nutriment, 1) + reagents.add_reagent("nutriment", 1) if ("chocolate") - reagents.add_reagent(/datum/reagent/consumable/coco, 1) // chocolate ain't as nutritious kids + reagents.add_reagent("cocoa", 1) // chocolate ain't as nutritious kids desc = "Delicious [cone_name] cone, but no ice cream." @@ -256,31 +256,31 @@ switch (flavour_name) // adding the actual reagents advertised in the ingredient list if ("vanilla") desc = "A delicious [cone_type] cone filled with vanilla ice cream. All the other ice creams take content from it." - reagents.add_reagent(/datum/reagent/consumable/vanilla, 3) + reagents.add_reagent("vanilla", 3) filling_color = "#ECE1C1" if ("chocolate") desc = "A delicious [cone_type] cone filled with chocolate ice cream. Surprisingly, made with real cocoa." - reagents.add_reagent(/datum/reagent/consumable/coco, 3) + reagents.add_reagent("cocoa", 3) filling_color = "#93673B" if ("strawberry") desc = "A delicious [cone_type] cone filled with strawberry ice cream. Definitely not made with real strawberries." - reagents.add_reagent(/datum/reagent/consumable/berryjuice, 3) + reagents.add_reagent("berryjuice", 3) filling_color = "#EFB4B4" if ("peach") desc = "A delicious [cone_type] cone filled with peach ice cream. Definitely made with real peaches!" - reagents.add_reagent(/datum/reagent/consumable/peachjuice, 3) + reagents.add_reagent("peachjuice", 3) filling_color = "#E78108" if ("grape") desc = "A delicious [cone_type] cone filled with grape ice cream. Surprisingly, made with real pink grape, likely not real sugarcanes used." - reagents.add_reagent(/datum/reagent/consumable/grapejuice, 3) + reagents.add_reagent("grapejuice", 3) filling_color = "#FF1493" if ("blue") desc = "A delicious [cone_type] cone filled with blue ice cream. Made with real... blue?" - reagents.add_reagent(/datum/reagent/consumable/ethanol/singulo, 3) + reagents.add_reagent("singulo", 3) filling_color = "#ACBCED" if ("mob") desc = "A suspicious [cone_type] cone filled with bright red ice cream. That's probably not strawberry..." - reagents.add_reagent(/datum/reagent/liquidgibs, 3) + reagents.add_reagent("liquidgibs", 3) filling_color = "#EFB4B4" if ("custom") if(R && R.total_volume >= 4) //consumable reagents have stronger taste so higher volume will allow non-food flavourings to break through better. diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm index e4d36b29d2..4efac6f508 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm @@ -134,8 +134,8 @@ if(istype(O, /obj/item/reagent_containers/spray)) var/obj/item/reagent_containers/spray/clean_spray = O - if(clean_spray.reagents.has_reagent(/datum/reagent/space_cleaner, clean_spray.amount_per_transfer_from_this)) - clean_spray.reagents.remove_reagent(/datum/reagent/space_cleaner, clean_spray.amount_per_transfer_from_this,1) + if(clean_spray.reagents.has_reagent("cleaner", clean_spray.amount_per_transfer_from_this)) + clean_spray.reagents.remove_reagent("cleaner", clean_spray.amount_per_transfer_from_this,1) playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6) user.visible_message("[user] has cleaned \the [src].", "You clean \the [src].") dirty = 0 diff --git a/code/modules/food_and_drinks/pizzabox.dm b/code/modules/food_and_drinks/pizzabox.dm index da67eaa9cf..355660ecec 100644 --- a/code/modules/food_and_drinks/pizzabox.dm +++ b/code/modules/food_and_drinks/pizzabox.dm @@ -86,7 +86,7 @@ tag_overlay.pixel_y = boxes.len * 3 add_overlay(tag_overlay) -/obj/item/pizzabox/worn_overlays(isinhands, icon_file, style_flags = NONE) +/obj/item/pizzabox/worn_overlays(isinhands, icon_file) . = list() var/current_offset = 2 if(isinhands) diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm index 9df650500a..9dbddfb519 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -2,385 +2,385 @@ /datum/chemical_reaction/goldschlager name = "Goldschlager" - id = /datum/reagent/consumable/ethanol/goldschlager - results = list(/datum/reagent/consumable/ethanol/goldschlager = 10) - required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 10, /datum/reagent/gold = 1) + id = "goldschlager" + results = list("goldschlager" = 10) + required_reagents = list("vodka" = 10, "gold" = 1) /datum/chemical_reaction/patron name = "Patron" - id = /datum/reagent/consumable/ethanol/patron - results = list(/datum/reagent/consumable/ethanol/patron = 10) - required_reagents = list(/datum/reagent/consumable/ethanol/tequila = 10, /datum/reagent/silver = 1) + id = "patron" + results = list("patron" = 10) + required_reagents = list("tequila" = 10, "silver" = 1) /datum/chemical_reaction/bilk name = "Bilk" - id = /datum/reagent/consumable/ethanol/bilk - results = list(/datum/reagent/consumable/ethanol/bilk = 2) - required_reagents = list(/datum/reagent/consumable/milk = 1, /datum/reagent/consumable/ethanol/beer = 1) + id = "bilk" + results = list("bilk" = 2) + required_reagents = list("milk" = 1, "beer" = 1) /datum/chemical_reaction/icetea name = "Iced Tea" - id = /datum/reagent/consumable/icetea - results = list(/datum/reagent/consumable/icetea = 4) - required_reagents = list(/datum/reagent/consumable/ice = 1, /datum/reagent/consumable/tea = 3) + id = "icetea" + results = list("icetea" = 4) + required_reagents = list("ice" = 1, "tea" = 3) /datum/chemical_reaction/icecoffee name = "Iced Coffee" - id = /datum/reagent/consumable/icecoffee - results = list(/datum/reagent/consumable/icecoffee = 4) - required_reagents = list(/datum/reagent/consumable/ice = 1, /datum/reagent/consumable/coffee = 3) + id = "icecoffee" + results = list("icecoffee" = 4) + required_reagents = list("ice" = 1, "coffee" = 3) /datum/chemical_reaction/nuka_cola name = "Nuka Cola" - id = /datum/reagent/consumable/nuka_cola - results = list(/datum/reagent/consumable/nuka_cola = 6) - required_reagents = list(/datum/reagent/uranium = 1, /datum/reagent/consumable/space_cola = 6) + id = "nuka_cola" + results = list("nuka_cola" = 6) + required_reagents = list("uranium" = 1, "cola" = 6) /datum/chemical_reaction/moonshine name = "Moonshine" - id = /datum/reagent/consumable/ethanol/moonshine - results = list(/datum/reagent/consumable/ethanol/moonshine = 10) - required_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/sugar = 5) - required_catalysts = list(/datum/reagent/consumable/enzyme = 5) + id = "moonshine" + results = list("moonshine" = 10) + required_reagents = list("nutriment" = 5, "sugar" = 5) + required_catalysts = list("enzyme" = 5) /datum/chemical_reaction/wine name = "Wine" - id = /datum/reagent/consumable/ethanol/wine - results = list(/datum/reagent/consumable/ethanol/wine = 10) - required_reagents = list(/datum/reagent/consumable/grapejuice = 10) - required_catalysts = list(/datum/reagent/consumable/enzyme = 5) + id = "wine" + results = list("wine" = 10) + required_reagents = list("grapejuice" = 10) + required_catalysts = list("enzyme" = 5) /datum/chemical_reaction/spacebeer name = "Space Beer" - id = /datum/reagent/consumable/ethanol/beer - results = list(/datum/reagent/consumable/ethanol/beer = 10) - required_reagents = list(/datum/reagent/consumable/flour = 10) - required_catalysts = list(/datum/reagent/consumable/enzyme = 5) + id = "spacebeer" + results = list("beer" = 10) + required_reagents = list("flour" = 10) + required_catalysts = list("enzyme" = 5) /datum/chemical_reaction/vodka name = "Vodka" - id = /datum/reagent/consumable/ethanol/vodka - results = list(/datum/reagent/consumable/ethanol/vodka = 10) - required_reagents = list(/datum/reagent/consumable/potato_juice = 10) - required_catalysts = list(/datum/reagent/consumable/enzyme = 5) + id = "vodka" + results = list("vodka" = 10) + required_reagents = list("potato" = 10) + required_catalysts = list("enzyme" = 5) /datum/chemical_reaction/kahlua name = "Kahlua" - id = /datum/reagent/consumable/ethanol/kahlua - results = list(/datum/reagent/consumable/ethanol/kahlua = 5) - required_reagents = list(/datum/reagent/consumable/coffee = 5, /datum/reagent/consumable/sugar = 5) - required_catalysts = list(/datum/reagent/consumable/enzyme = 5) + id = "kahlua" + results = list("kahlua" = 5) + required_reagents = list("coffee" = 5, "sugar" = 5) + required_catalysts = list("enzyme" = 5) /datum/chemical_reaction/gin_tonic name = "Gin and Tonic" - id = /datum/reagent/consumable/ethanol/gintonic - results = list(/datum/reagent/consumable/ethanol/gintonic = 3) - required_reagents = list(/datum/reagent/consumable/ethanol/gin = 2, /datum/reagent/consumable/tonic = 1) + id = "gintonic" + results = list("gintonic" = 3) + required_reagents = list("gin" = 2, "tonic" = 1) /datum/chemical_reaction/rum_coke name = "Rum and Coke" - id = /datum/reagent/consumable/ethanol/rum_coke - results = list(/datum/reagent/consumable/ethanol/rum_coke = 3) - required_reagents = list(/datum/reagent/consumable/ethanol/rum = 2, /datum/reagent/consumable/space_cola = 1) + id = "rumcoke" + results = list("rumcoke" = 3) + required_reagents = list("rum" = 2, "cola" = 1) /datum/chemical_reaction/cuba_libre name = "Cuba Libre" - id = /datum/reagent/consumable/ethanol/cuba_libre - results = list(/datum/reagent/consumable/ethanol/cuba_libre = 4) - required_reagents = list(/datum/reagent/consumable/ethanol/rum_coke = 3, /datum/reagent/consumable/limejuice = 1) + id = "cubalibre" + results = list("cubalibre" = 4) + required_reagents = list("rumcoke" = 3, "limejuice" = 1) /datum/chemical_reaction/martini name = "Classic Martini" - id = /datum/reagent/consumable/ethanol/martini - results = list(/datum/reagent/consumable/ethanol/martini = 3) - required_reagents = list(/datum/reagent/consumable/ethanol/gin = 2, /datum/reagent/consumable/ethanol/vermouth = 1) + id = "martini" + results = list("martini" = 3) + required_reagents = list("gin" = 2, "vermouth" = 1) /datum/chemical_reaction/vodkamartini name = "Vodka Martini" - id = /datum/reagent/consumable/ethanol/vodkamartini - results = list(/datum/reagent/consumable/ethanol/vodkamartini = 3) - required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 2, /datum/reagent/consumable/ethanol/vermouth = 1) + id = "vodkamartini" + results = list("vodkamartini" = 3) + required_reagents = list("vodka" = 2, "vermouth" = 1) /datum/chemical_reaction/white_russian name = "White Russian" - id = /datum/reagent/consumable/ethanol/white_russian - results = list(/datum/reagent/consumable/ethanol/white_russian = 5) - required_reagents = list(/datum/reagent/consumable/ethanol/black_russian = 3, /datum/reagent/consumable/cream = 2) + id = "whiterussian" + results = list("whiterussian" = 5) + required_reagents = list("blackrussian" = 3, "cream" = 2) /datum/chemical_reaction/whiskey_cola name = "Whiskey Cola" - id = /datum/reagent/consumable/ethanol/whiskey_cola - results = list(/datum/reagent/consumable/ethanol/whiskey_cola = 3) - required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 2, /datum/reagent/consumable/space_cola = 1) + id = "whiskeycola" + results = list("whiskeycola" = 3) + required_reagents = list("whiskey" = 2, "cola" = 1) /datum/chemical_reaction/screwdriver name = "Screwdriver" - id = /datum/reagent/consumable/ethanol/screwdrivercocktail - results = list(/datum/reagent/consumable/ethanol/screwdrivercocktail = 3) - required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 2, /datum/reagent/consumable/orangejuice = 1) + id = "screwdrivercocktail" + results = list("screwdrivercocktail" = 3) + required_reagents = list("vodka" = 2, "orangejuice" = 1) /datum/chemical_reaction/bloody_mary name = "Bloody Mary" - id = /datum/reagent/consumable/ethanol/bloody_mary - results = list(/datum/reagent/consumable/ethanol/bloody_mary = 4) - required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/tomatojuice = 2, /datum/reagent/consumable/limejuice = 1) + id = "bloodymary" + results = list("bloodymary" = 4) + required_reagents = list("vodka" = 1, "tomatojuice" = 2, "limejuice" = 1) /datum/chemical_reaction/gargle_blaster name = "Pan-Galactic Gargle Blaster" - id = /datum/reagent/consumable/ethanol/gargle_blaster - results = list(/datum/reagent/consumable/ethanol/gargle_blaster = 5) - required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/ethanol/gin = 1, /datum/reagent/consumable/ethanol/whiskey = 1, /datum/reagent/consumable/ethanol/cognac = 1, /datum/reagent/consumable/limejuice = 1) + id = "gargleblaster" + results = list("gargleblaster" = 5) + required_reagents = list("vodka" = 1, "gin" = 1, "whiskey" = 1, "cognac" = 1, "limejuice" = 1) /datum/chemical_reaction/brave_bull name = "Brave Bull" - id = /datum/reagent/consumable/ethanol/brave_bull - results = list(/datum/reagent/consumable/ethanol/brave_bull = 3) - required_reagents = list(/datum/reagent/consumable/ethanol/tequila = 2, /datum/reagent/consumable/ethanol/kahlua = 1) + id = "bravebull" + results = list("bravebull" = 3) + required_reagents = list("tequila" = 2, "kahlua" = 1) /datum/chemical_reaction/tequila_sunrise name = "Tequila Sunrise" - id = /datum/reagent/consumable/ethanol/tequila_sunrise - results = list(/datum/reagent/consumable/ethanol/tequila_sunrise = 5) - required_reagents = list(/datum/reagent/consumable/ethanol/tequila = 2, /datum/reagent/consumable/orangejuice = 2, /datum/reagent/consumable/grenadine = 1) + id = "tequilasunrise" + results = list("tequilasunrise" = 5) + required_reagents = list("tequila" = 2, "orangejuice" = 2, "grenadine" = 1) /datum/chemical_reaction/toxins_special name = "Toxins Special" - id = /datum/reagent/consumable/ethanol/toxins_special - results = list(/datum/reagent/consumable/ethanol/toxins_special = 5) - required_reagents = list(/datum/reagent/consumable/ethanol/rum = 2, /datum/reagent/consumable/ethanol/vermouth = 1, /datum/reagent/toxin/plasma = 2) + id = "toxinsspecial" + results = list("toxinsspecial" = 5) + required_reagents = list("rum" = 2, "vermouth" = 1, "plasma" = 2) /datum/chemical_reaction/beepsky_smash name = "Beepksy Smash" - id = /datum/reagent/consumable/ethanol/beepsky_smash - results = list(/datum/reagent/consumable/ethanol/beepsky_smash = 5) - required_reagents = list(/datum/reagent/consumable/limejuice = 2, /datum/reagent/consumable/ethanol/quadruple_sec = 2, /datum/reagent/iron = 1) + id = "beepksysmash" + results = list("beepskysmash" = 5) + required_reagents = list("limejuice" = 2, "quadruple_sec" = 2, "iron" = 1) /datum/chemical_reaction/doctor_delight name = "The Doctor's Delight" - id = /datum/reagent/consumable/doctor_delight - results = list(/datum/reagent/consumable/doctor_delight = 5) - required_reagents = list(/datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/tomatojuice = 1, /datum/reagent/consumable/orangejuice = 1, /datum/reagent/consumable/cream = 1, /datum/reagent/medicine/cryoxadone = 1) + id = "doctordelight" + results = list("doctorsdelight" = 5) + required_reagents = list("limejuice" = 1, "tomatojuice" = 1, "orangejuice" = 1, "cream" = 1, "cryoxadone" = 1) /datum/chemical_reaction/irish_cream name = "Irish Cream" - id = /datum/reagent/consumable/ethanol/irish_cream - results = list(/datum/reagent/consumable/ethanol/irish_cream = 3) - required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 2, /datum/reagent/consumable/cream = 1) + id = "irishcream" + results = list("irishcream" = 3) + required_reagents = list("whiskey" = 2, "cream" = 1) /datum/chemical_reaction/manly_dorf name = "The Manly Dorf" - id = /datum/reagent/consumable/ethanol/manly_dorf - results = list(/datum/reagent/consumable/ethanol/manly_dorf = 3) - required_reagents = list (/datum/reagent/consumable/ethanol/beer = 1, /datum/reagent/consumable/ethanol/ale = 2) + id = "manlydorf" + results = list("manlydorf" = 3) + required_reagents = list ("beer" = 1, "ale" = 2) /datum/chemical_reaction/greenbeer name = "Green Beer" - id = /datum/reagent/consumable/ethanol/beer/green - results = list(/datum/reagent/consumable/ethanol/beer/green = 10) - required_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/green = 1, /datum/reagent/consumable/ethanol/beer = 10) + id = "greenbeer" + results = list("greenbeer" = 10) + required_reagents = list("greencrayonpowder" = 1, "beer" = 10) /datum/chemical_reaction/hooch name = "Hooch" - id = /datum/reagent/consumable/ethanol/hooch - results = list(/datum/reagent/consumable/ethanol/hooch = 3) - required_reagents = list (/datum/reagent/consumable/ethanol = 2, /datum/reagent/fuel = 1) - required_catalysts = list(/datum/reagent/consumable/enzyme = 1) + id = "hooch" + results = list("hooch" = 3) + required_reagents = list ("ethanol" = 2, "welding_fuel" = 1) + required_catalysts = list("enzyme" = 1) /datum/chemical_reaction/irish_coffee name = "Irish Coffee" - id = /datum/reagent/consumable/ethanol/irishcoffee - results = list(/datum/reagent/consumable/ethanol/irishcoffee = 2) - required_reagents = list(/datum/reagent/consumable/ethanol/irish_cream = 1, /datum/reagent/consumable/coffee = 1) + id = "irishcoffee" + results = list("irishcoffee" = 2) + required_reagents = list("irishcream" = 1, "coffee" = 1) /datum/chemical_reaction/b52 name = "B-52" - id = /datum/reagent/consumable/ethanol/b52 - results = list(/datum/reagent/consumable/ethanol/b52 = 3) - required_reagents = list(/datum/reagent/consumable/ethanol/irish_cream = 1, /datum/reagent/consumable/ethanol/kahlua = 1, /datum/reagent/consumable/ethanol/cognac = 1) + id = "b52" + results = list("b52" = 3) + required_reagents = list("irishcream" = 1, "kahlua" = 1, "cognac" = 1) /datum/chemical_reaction/atomicbomb name = "Atomic Bomb" - id = /datum/reagent/consumable/ethanol/atomicbomb - results = list(/datum/reagent/consumable/ethanol/atomicbomb = 10) - required_reagents = list(/datum/reagent/consumable/ethanol/b52 = 10, /datum/reagent/uranium = 1) + id = "atomicbomb" + results = list("atomicbomb" = 10) + required_reagents = list("b52" = 10, "uranium" = 1) /datum/chemical_reaction/margarita name = "Margarita" - id = /datum/reagent/consumable/ethanol/margarita - results = list(/datum/reagent/consumable/ethanol/margarita = 3) - required_reagents = list(/datum/reagent/consumable/ethanol/tequila = 2, /datum/reagent/consumable/limejuice = 1) + id = "margarita" + results = list("margarita" = 3) + required_reagents = list("tequila" = 2, "limejuice" = 1) /datum/chemical_reaction/longislandicedtea name = "Long Island Iced Tea" - id = /datum/reagent/consumable/ethanol/longislandicedtea - results = list(/datum/reagent/consumable/ethanol/longislandicedtea = 4) - required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/ethanol/gin = 1, /datum/reagent/consumable/ethanol/tequila = 1, /datum/reagent/consumable/ethanol/cuba_libre = 1) + id = "longislandicedtea" + results = list("longislandicedtea" = 4) + required_reagents = list("vodka" = 1, "gin" = 1, "tequila" = 1, "cubalibre" = 1) /datum/chemical_reaction/threemileisland name = "Three Mile Island Iced Tea" - id = /datum/reagent/consumable/ethanol/threemileisland - results = list(/datum/reagent/consumable/ethanol/threemileisland = 10) - required_reagents = list(/datum/reagent/consumable/ethanol/longislandicedtea = 10, /datum/reagent/uranium = 1) + id = "threemileisland" + results = list("threemileisland" = 10) + required_reagents = list("longislandicedtea" = 10, "uranium" = 1) /datum/chemical_reaction/whiskeysoda name = "Whiskey Soda" - id = /datum/reagent/consumable/ethanol/whiskeysoda - results = list(/datum/reagent/consumable/ethanol/whiskeysoda = 3) - required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 2, /datum/reagent/consumable/sodawater = 1) + id = "whiskeysoda" + results = list("whiskeysoda" = 3) + required_reagents = list("whiskey" = 2, "sodawater" = 1) /datum/chemical_reaction/black_russian name = "Black Russian" - id = /datum/reagent/consumable/ethanol/black_russian - results = list(/datum/reagent/consumable/ethanol/black_russian = 5) - required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 3, /datum/reagent/consumable/ethanol/kahlua = 2) + id = "blackrussian" + results = list("blackrussian" = 5) + required_reagents = list("vodka" = 3, "kahlua" = 2) /datum/chemical_reaction/manhattan name = "Manhattan" - id = /datum/reagent/consumable/ethanol/manhattan - results = list(/datum/reagent/consumable/ethanol/manhattan = 3) - required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 2, /datum/reagent/consumable/ethanol/vermouth = 1) + id = "manhattan" + results = list("manhattan" = 3) + required_reagents = list("whiskey" = 2, "vermouth" = 1) /datum/chemical_reaction/manhattan_proj name = "Manhattan Project" - id = /datum/reagent/consumable/ethanol/manhattan_proj - results = list(/datum/reagent/consumable/ethanol/manhattan_proj = 10) - required_reagents = list(/datum/reagent/consumable/ethanol/manhattan = 10, /datum/reagent/uranium = 1) + id = "manhattan_proj" + results = list("manhattan_proj" = 10) + required_reagents = list("manhattan" = 10, "uranium" = 1) /datum/chemical_reaction/vodka_tonic name = "Vodka and Tonic" - id = /datum/reagent/consumable/ethanol/vodkatonic - results = list(/datum/reagent/consumable/ethanol/vodkatonic = 3) - required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 2, /datum/reagent/consumable/tonic = 1) + id = "vodkatonic" + results = list("vodkatonic" = 3) + required_reagents = list("vodka" = 2, "tonic" = 1) /datum/chemical_reaction/gin_fizz name = "Gin Fizz" - id = /datum/reagent/consumable/ethanol/ginfizz - results = list(/datum/reagent/consumable/ethanol/ginfizz = 4) - required_reagents = list(/datum/reagent/consumable/ethanol/gin = 2, /datum/reagent/consumable/sodawater = 1, /datum/reagent/consumable/limejuice = 1) + id = "ginfizz" + results = list("ginfizz" = 4) + required_reagents = list("gin" = 2, "sodawater" = 1, "limejuice" = 1) /datum/chemical_reaction/bahama_mama name = "Bahama mama" - id = /datum/reagent/consumable/ethanol/bahama_mama - results = list(/datum/reagent/consumable/ethanol/bahama_mama = 6) - required_reagents = list(/datum/reagent/consumable/ethanol/rum = 2, /datum/reagent/consumable/orangejuice = 2, /datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/ice = 1) + id = "bahama_mama" + results = list("bahama_mama" = 6) + required_reagents = list("rum" = 2, "orangejuice" = 2, "limejuice" = 1, "ice" = 1) /datum/chemical_reaction/singulo name = "Singulo" - id = /datum/reagent/consumable/ethanol/singulo - results = list(/datum/reagent/consumable/ethanol/singulo = 10) - required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 5, /datum/reagent/radium = 1, /datum/reagent/consumable/ethanol/wine = 5) + id = "singulo" + results = list("singulo" = 10) + required_reagents = list("vodka" = 5, "radium" = 1, "wine" = 5) /datum/chemical_reaction/alliescocktail name = "Allies Cocktail" - id = /datum/reagent/consumable/ethanol/alliescocktail - results = list(/datum/reagent/consumable/ethanol/alliescocktail = 2) - required_reagents = list(/datum/reagent/consumable/ethanol/martini = 1, /datum/reagent/consumable/ethanol/vodka = 1) + id = "alliescocktail" + results = list("alliescocktail" = 2) + required_reagents = list("martini" = 1, "vodka" = 1) /datum/chemical_reaction/demonsblood name = "Demons Blood" - id = /datum/reagent/consumable/ethanol/demonsblood - results = list(/datum/reagent/consumable/ethanol/demonsblood = 4) - required_reagents = list(/datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/spacemountainwind = 1, /datum/reagent/blood = 1, /datum/reagent/consumable/dr_gibb = 1) + id = "demonsblood" + results = list("demonsblood" = 4) + required_reagents = list("rum" = 1, "spacemountainwind" = 1, "blood" = 1, "dr_gibb" = 1) /datum/chemical_reaction/booger name = "Booger" - id = /datum/reagent/consumable/ethanol/booger - results = list(/datum/reagent/consumable/ethanol/booger = 4) - required_reagents = list(/datum/reagent/consumable/cream = 1, /datum/reagent/consumable/banana = 1, /datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/watermelonjuice = 1) + id = "booger" + results = list("booger" = 4) + required_reagents = list("cream" = 1, "banana" = 1, "rum" = 1, "watermelonjuice" = 1) /datum/chemical_reaction/antifreeze name = "Anti-freeze" - id = /datum/reagent/consumable/ethanol/antifreeze - results = list(/datum/reagent/consumable/ethanol/antifreeze = 4) - required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 2, /datum/reagent/consumable/cream = 1, /datum/reagent/consumable/ice = 1) + id = "antifreeze" + results = list("antifreeze" = 4) + required_reagents = list("vodka" = 2, "cream" = 1, "ice" = 1) /datum/chemical_reaction/barefoot name = "Barefoot" - id = /datum/reagent/consumable/ethanol/barefoot - results = list(/datum/reagent/consumable/ethanol/barefoot = 3) - required_reagents = list(/datum/reagent/consumable/berryjuice = 1, /datum/reagent/consumable/cream = 1, /datum/reagent/consumable/ethanol/vermouth = 1) + id = "barefoot" + results = list("barefoot" = 3) + required_reagents = list("berryjuice" = 1, "cream" = 1, "vermouth" = 1) ////DRINKS THAT REQUIRED IMPROVED SPRITES BELOW:: -Agouri///// /datum/chemical_reaction/sbiten name = "Sbiten" - id = /datum/reagent/consumable/ethanol/sbiten - results = list(/datum/reagent/consumable/ethanol/sbiten = 10) - required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 10, /datum/reagent/consumable/capsaicin = 1) + id = "sbiten" + results = list("sbiten" = 10) + required_reagents = list("vodka" = 10, "capsaicin" = 1) /datum/chemical_reaction/red_mead name = "Red Mead" - id = /datum/reagent/consumable/ethanol/red_mead - results = list(/datum/reagent/consumable/ethanol/red_mead = 2) - required_reagents = list(/datum/reagent/blood = 1, /datum/reagent/consumable/ethanol/mead = 1) + id = "red_mead" + results = list("red_mead" = 2) + required_reagents = list("blood" = 1, "mead" = 1) /datum/chemical_reaction/mead name = "Mead" - id = /datum/reagent/consumable/ethanol/mead - results = list(/datum/reagent/consumable/ethanol/mead = 2) - required_reagents = list(/datum/reagent/consumable/honey = 2) - required_catalysts = list(/datum/reagent/consumable/enzyme = 5) + id = "mead" + results = list("mead" = 2) + required_reagents = list("honey" = 2) + required_catalysts = list("enzyme" = 5) /datum/chemical_reaction/iced_beer name = "Iced Beer" - id = /datum/reagent/consumable/ethanol/iced_beer - results = list(/datum/reagent/consumable/ethanol/iced_beer = 6) - required_reagents = list(/datum/reagent/consumable/ethanol/beer = 5, /datum/reagent/consumable/ice = 1) + id = "iced_beer" + results = list("iced_beer" = 6) + required_reagents = list("beer" = 5, "ice" = 1) /datum/chemical_reaction/grog name = "Grog" - id = /datum/reagent/consumable/ethanol/grog - results = list(/datum/reagent/consumable/ethanol/grog = 2) - required_reagents = list(/datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/water = 1) + id = "grog" + results = list("grog" = 2) + required_reagents = list("rum" = 1, "water" = 1) /datum/chemical_reaction/soy_latte name = "Soy Latte" - id = /datum/reagent/consumable/soy_latte - results = list(/datum/reagent/consumable/soy_latte = 2) - required_reagents = list(/datum/reagent/consumable/coffee = 1, /datum/reagent/consumable/soymilk = 1) + id = "soy_latte" + results = list("soy_latte" = 2) + required_reagents = list("coffee" = 1, "soymilk" = 1) /datum/chemical_reaction/cafe_latte name = "Cafe Latte" - id = /datum/reagent/consumable/cafe_latte - results = list(/datum/reagent/consumable/cafe_latte = 2) - required_reagents = list(/datum/reagent/consumable/coffee = 1, /datum/reagent/consumable/milk = 1) + id = "cafe_latte" + results = list("cafe_latte" = 2) + required_reagents = list("coffee" = 1, "milk" = 1) /datum/chemical_reaction/acidspit name = "Acid Spit" - id = /datum/reagent/consumable/ethanol/acid_spit - results = list(/datum/reagent/consumable/ethanol/acid_spit = 6) - required_reagents = list(/datum/reagent/toxin/acid = 1, /datum/reagent/consumable/ethanol/wine = 5) + id = "acidspit" + results = list("acidspit" = 6) + required_reagents = list("sacid" = 1, "wine" = 5) /datum/chemical_reaction/amasec name = "Amasec" - id = /datum/reagent/consumable/ethanol/amasec - results = list(/datum/reagent/consumable/ethanol/amasec = 10) - required_reagents = list(/datum/reagent/iron = 1, /datum/reagent/consumable/ethanol/wine = 5, /datum/reagent/consumable/ethanol/vodka = 5) + id = "amasec" + results = list("amasec" = 10) + required_reagents = list("iron" = 1, "wine" = 5, "vodka" = 5) /datum/chemical_reaction/changelingsting name = "Changeling Sting" - id = /datum/reagent/consumable/ethanol/changelingsting - results = list(/datum/reagent/consumable/ethanol/changelingsting = 5) - required_reagents = list(/datum/reagent/consumable/ethanol/screwdrivercocktail = 1, /datum/reagent/consumable/lemon_lime = 2) + id = "changelingsting" + results = list("changelingsting" = 5) + required_reagents = list("screwdrivercocktail" = 1, "lemon_lime" = 2) /datum/chemical_reaction/aloe name = "Aloe" - id = /datum/reagent/consumable/ethanol/aloe - results = list(/datum/reagent/consumable/ethanol/aloe = 2) - required_reagents = list(/datum/reagent/consumable/ethanol/irish_cream = 1, /datum/reagent/consumable/watermelonjuice = 1) + id = "aloe" + results = list("aloe" = 2) + required_reagents = list("irishcream" = 1, "watermelonjuice" = 1) /datum/chemical_reaction/andalusia name = "Andalusia" - id = /datum/reagent/consumable/ethanol/andalusia - results = list(/datum/reagent/consumable/ethanol/andalusia = 3) - required_reagents = list(/datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/ethanol/whiskey = 1, /datum/reagent/consumable/lemonjuice = 1) + id = "andalusia" + results = list("andalusia" = 3) + required_reagents = list("rum" = 1, "whiskey" = 1, "lemonjuice" = 1) /datum/chemical_reaction/neurotoxin name = "Neurotoxin" - id = /datum/reagent/consumable/ethanol/neurotoxin - results = list(/datum/reagent/consumable/ethanol/neurotoxin = 2) - required_reagents = list(/datum/reagent/consumable/ethanol/gargle_blaster = 1, /datum/reagent/medicine/morphine = 1) + id = "neurotoxin" + results = list("neurotoxin" = 2) + required_reagents = list("gargleblaster" = 1, "morphine" = 1) //FermiChem vars: Easy to make, but hard to make potent OptimalTempMin = 100 // Lower area of bell curve for determining heat based rate reactions OptimalTempMax = 950 // Upper end for above @@ -404,8 +404,8 @@ var/datum/reagent/consumable/ethanol/neurotoxin/Nt = locate(/datum/reagent/consumable/ethanol/neurotoxin) in my_atom.reagents.reagent_list var/cached_volume = Nt.volume if(Nt.purity < 0.5) - holder.remove_reagent(type, cached_volume) - holder.add_reagent(/datum/reagent/consumable/ethanol/neuroweak, cached_volume) + holder.remove_reagent(src.id, cached_volume) + holder.add_reagent("neuroweak", cached_volume) */ /datum/chemical_reaction/neurotoxin/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)//reduced size @@ -414,415 +414,415 @@ /datum/chemical_reaction/snowwhite name = "Snow White" - id = /datum/reagent/consumable/ethanol/snowwhite - results = list(/datum/reagent/consumable/ethanol/snowwhite = 2) - required_reagents = list(/datum/reagent/consumable/ethanol/beer = 1, /datum/reagent/consumable/lemon_lime = 1) + id = "snowwhite" + results = list("snowwhite" = 2) + required_reagents = list("beer" = 1, "lemon_lime" = 1) /datum/chemical_reaction/irishcarbomb name = "Irish Car Bomb" - id = /datum/reagent/consumable/ethanol/irishcarbomb - results = list(/datum/reagent/consumable/ethanol/irishcarbomb = 2) - required_reagents = list(/datum/reagent/consumable/ethanol/ale = 1, /datum/reagent/consumable/ethanol/irish_cream = 1) + id = "irishcarbomb" + results = list("irishcarbomb" = 2) + required_reagents = list("ale" = 1, "irishcream" = 1) /datum/chemical_reaction/syndicatebomb name = "Syndicate Bomb" - id = /datum/reagent/consumable/ethanol/syndicatebomb - results = list(/datum/reagent/consumable/ethanol/syndicatebomb = 2) - required_reagents = list(/datum/reagent/consumable/ethanol/beer = 1, /datum/reagent/consumable/ethanol/whiskey_cola = 1) + id = "syndicatebomb" + results = list("syndicatebomb" = 2) + required_reagents = list("beer" = 1, "whiskeycola" = 1) /datum/chemical_reaction/erikasurprise name = "Erika Surprise" - id = /datum/reagent/consumable/ethanol/erikasurprise - results = list(/datum/reagent/consumable/ethanol/erikasurprise = 5) - required_reagents = list(/datum/reagent/consumable/ethanol/ale = 1, /datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/ethanol/whiskey = 1, /datum/reagent/consumable/banana = 1, /datum/reagent/consumable/ice = 1) + id = "erikasurprise" + results = list("erikasurprise" = 5) + required_reagents = list("ale" = 1, "limejuice" = 1, "whiskey" = 1, "banana" = 1, "ice" = 1) /datum/chemical_reaction/devilskiss name = "Devils Kiss" - id = /datum/reagent/consumable/ethanol/devilskiss - results = list(/datum/reagent/consumable/ethanol/devilskiss = 3) - required_reagents = list(/datum/reagent/blood = 1, /datum/reagent/consumable/ethanol/kahlua = 1, /datum/reagent/consumable/ethanol/rum = 1) + id = "devilskiss" + results = list("devilskiss" = 3) + required_reagents = list("blood" = 1, "kahlua" = 1, "rum" = 1) /datum/chemical_reaction/hippiesdelight name = "Hippies Delight" - id = /datum/reagent/consumable/ethanol/hippies_delight - results = list(/datum/reagent/consumable/ethanol/hippies_delight = 2) - required_reagents = list(/datum/reagent/drug/mushroomhallucinogen = 1, /datum/reagent/consumable/ethanol/gargle_blaster = 1) + id = "hippiesdelight" + results = list("hippiesdelight" = 2) + required_reagents = list("mushroomhallucinogen" = 1, "gargleblaster" = 1) /datum/chemical_reaction/bananahonk name = "Banana Honk" - id = /datum/reagent/consumable/ethanol/bananahonk - results = list(/datum/reagent/consumable/ethanol/bananahonk = 2) - required_reagents = list(/datum/reagent/consumable/laughter = 1, /datum/reagent/consumable/cream = 1) + id = "bananahonk" + results = list("bananahonk" = 2) + required_reagents = list("laughter" = 1, "cream" = 1) /datum/chemical_reaction/silencer name = "Silencer" - id = /datum/reagent/consumable/ethanol/silencer - results = list(/datum/reagent/consumable/ethanol/silencer = 3) - required_reagents = list(/datum/reagent/consumable/nothing = 1, /datum/reagent/consumable/cream = 1, /datum/reagent/consumable/sugar = 1) + id = "silencer" + results = list("silencer" = 3) + required_reagents = list("nothing" = 1, "cream" = 1, "sugar" = 1) /datum/chemical_reaction/driestmartini name = "Driest Martini" - id = /datum/reagent/consumable/ethanol/driestmartini - results = list(/datum/reagent/consumable/ethanol/driestmartini = 2) - required_reagents = list(/datum/reagent/consumable/nothing = 1, /datum/reagent/consumable/ethanol/gin = 1) + id = "driestmartini" + results = list("driestmartini" = 2) + required_reagents = list("nothing" = 1, "gin" = 1) /datum/chemical_reaction/thirteenloko name = "Thirteen Loko" - id = /datum/reagent/consumable/ethanol/thirteenloko - results = list(/datum/reagent/consumable/ethanol/thirteenloko = 3) - required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/coffee = 1, /datum/reagent/consumable/limejuice = 1) + id = "thirteenloko" + results = list("thirteenloko" = 3) + required_reagents = list("vodka" = 1, "coffee" = 1, "limejuice" = 1) /datum/chemical_reaction/chocolatepudding name = "Chocolate Pudding" - id = /datum/reagent/consumable/chocolatepudding - results = list(/datum/reagent/consumable/chocolatepudding = 20) - required_reagents = list(/datum/reagent/consumable/milk/chocolate_milk = 10, /datum/reagent/consumable/eggyolk = 5) + id = "chocolatepudding" + results = list("chocolatepudding" = 20) + required_reagents = list("chocolate_milk" = 10, "eggyolk" = 5) /datum/chemical_reaction/vanillapudding name = "Vanilla Pudding" - id = /datum/reagent/consumable/vanillapudding - results = list(/datum/reagent/consumable/vanillapudding = 20) - required_reagents = list(/datum/reagent/consumable/vanilla = 5, /datum/reagent/consumable/milk = 5, /datum/reagent/consumable/eggyolk = 5) + id = "vanillapudding" + results = list("vanillapudding" = 20) + required_reagents = list("vanilla" = 5, "milk" = 5, "eggyolk" = 5) /datum/chemical_reaction/drunkenblumpkin name = "Drunken Blumpkin" - id = /datum/reagent/consumable/ethanol/drunkenblumpkin - results = list(/datum/reagent/consumable/ethanol/drunkenblumpkin = 4) - required_reagents = list(/datum/reagent/consumable/blumpkinjuice = 1, /datum/reagent/consumable/ethanol/irish_cream = 2, /datum/reagent/consumable/ice = 1) + id = "drunkenblumpkin" + results = list("drunkenblumpkin" = 4) + required_reagents = list("blumpkinjuice" = 1, "irishcream" = 2, "ice" = 1) /datum/chemical_reaction/pumpkin_latte name = "Pumpkin space latte" - id = /datum/reagent/consumable/pumpkin_latte - results = list(/datum/reagent/consumable/pumpkin_latte = 15) - required_reagents = list(/datum/reagent/consumable/pumpkinjuice = 5, /datum/reagent/consumable/coffee = 5, /datum/reagent/consumable/cream = 5) + id = "pumpkin_latte" + results = list("pumpkin_latte" = 15) + required_reagents = list("pumpkinjuice" = 5, "coffee" = 5, "cream" = 5) /datum/chemical_reaction/gibbfloats name = "Gibb Floats" - id = /datum/reagent/consumable/gibbfloats - results = list(/datum/reagent/consumable/gibbfloats = 15) - required_reagents = list(/datum/reagent/consumable/dr_gibb = 5, /datum/reagent/consumable/ice = 5, /datum/reagent/consumable/cream = 5) + id = "gibbfloats" + results = list("gibbfloats" = 15) + required_reagents = list("dr_gibb" = 5, "ice" = 5, "cream" = 5) /datum/chemical_reaction/triple_citrus name = "triple_citrus" - id = /datum/reagent/consumable/triple_citrus - results = list(/datum/reagent/consumable/triple_citrus = 5) - required_reagents = list(/datum/reagent/consumable/lemonjuice = 1, /datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/orangejuice = 1) + id = "triple_citrus" + results = list("triple_citrus" = 5) + required_reagents = list("lemonjuice" = 1, "limejuice" = 1, "orangejuice" = 1) /datum/chemical_reaction/grape_soda name = "grape soda" - id = /datum/reagent/consumable/grape_soda - results = list(/datum/reagent/consumable/grape_soda = 2) - required_reagents = list(/datum/reagent/consumable/grapejuice = 1, /datum/reagent/consumable/sodawater = 1) + id = "grapesoda" + results = list("grapesoda" = 2) + required_reagents = list("grapejuice" = 1, "sodawater" = 1) /datum/chemical_reaction/grappa name = "grappa" - id = /datum/reagent/consumable/ethanol/grappa - results = list(/datum/reagent/consumable/ethanol/grappa = 10) - required_reagents = list (/datum/reagent/consumable/ethanol/wine = 10) - required_catalysts = list (/datum/reagent/consumable/enzyme = 5) + id = "grappa" + results = list("grappa" = 10) + required_reagents = list ("wine" = 10) + required_catalysts = list ("enzyme" = 5) /datum/chemical_reaction/whiskey_sour name = "Whiskey Sour" - id = /datum/reagent/consumable/ethanol/whiskey_sour - results = list(/datum/reagent/consumable/ethanol/whiskey_sour = 3) - required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 1, /datum/reagent/consumable/lemonjuice = 1, /datum/reagent/consumable/sugar = 1) + id = "whiskey_sour" + results = list("whiskey_sour" = 3) + required_reagents = list("whiskey" = 1, "lemonjuice" = 1, "sugar" = 1) mix_message = "The mixture darkens to a rich gold hue." /datum/chemical_reaction/fetching_fizz name = "Fetching Fizz" - id = /datum/reagent/consumable/ethanol/fetching_fizz - results = list(/datum/reagent/consumable/ethanol/fetching_fizz = 3) - required_reagents = list(/datum/reagent/consumable/nuka_cola = 1, /datum/reagent/iron = 1) //Manufacturable from only the mining station + id = "fetching_fizz" + results = list("fetching_fizz" = 3) + required_reagents = list("nuka_cola" = 1, "iron" = 1) //Manufacturable from only the mining station mix_message = "The mixture slightly vibrates before settling." /datum/chemical_reaction/hearty_punch name = "Hearty Punch" - id = /datum/reagent/consumable/ethanol/hearty_punch - results = list(/datum/reagent/consumable/ethanol/hearty_punch = 1) //Very little, for balance reasons - required_reagents = list(/datum/reagent/consumable/ethanol/brave_bull = 5, /datum/reagent/consumable/ethanol/syndicatebomb = 5, /datum/reagent/consumable/ethanol/absinthe = 5) + id = "hearty_punch" + results = list("hearty_punch" = 1) //Very little, for balance reasons + required_reagents = list("bravebull" = 5, "syndicatebomb" = 5, "absinthe" = 5) mix_message = "The mixture darkens to a healthy crimson." required_temp = 315 //Piping hot! /datum/chemical_reaction/bacchus_blessing name = "Bacchus' Blessing" - id = /datum/reagent/consumable/ethanol/bacchus_blessing - results = list(/datum/reagent/consumable/ethanol/bacchus_blessing = 4) - required_reagents = list(/datum/reagent/consumable/ethanol/hooch = 1, /datum/reagent/consumable/ethanol/absinthe = 1, /datum/reagent/consumable/ethanol/manly_dorf = 1, /datum/reagent/consumable/ethanol/syndicatebomb = 1) + id = "bacchus_blessing" + results = list("bacchus_blessing" = 4) + required_reagents = list("hooch" = 1, "absinthe" = 1, "manlydorf" = 1, "syndicatebomb" = 1) mix_message = "The mixture turns to a sickening froth." /datum/chemical_reaction/lemonade name = "Lemonade" - id = /datum/reagent/consumable/lemonade - results = list(/datum/reagent/consumable/lemonade = 5) - required_reagents = list(/datum/reagent/consumable/lemonjuice = 2, /datum/reagent/water = 2, /datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/ice = 1) + id = "lemonade" + results = list("lemonade" = 5) + required_reagents = list("lemonjuice" = 2, "water" = 2, "sugar" = 1, "ice" = 1) mix_message = "You're suddenly reminded of home." /datum/chemical_reaction/arnold_palmer name = "Arnold Palmer" - id = /datum/reagent/consumable/tea/arnold_palmer - results = list(/datum/reagent/consumable/tea/arnold_palmer = 2) - required_reagents = list(/datum/reagent/consumable/tea = 1, /datum/reagent/consumable/lemonade = 1) + id = "arnold_palmer" + results = list("arnold_palmer" = 2) + required_reagents = list("tea" = 1, "lemonade" = 1) mix_message = "The smells of fresh green grass and sand traps waft through the air as the mixture turns a friendly yellow-orange." /datum/chemical_reaction/chocolate_milk name = "chocolate milk" - id = /datum/reagent/consumable/milk/chocolate_milk - results = list(/datum/reagent/consumable/milk/chocolate_milk = 2) - required_reagents = list(/datum/reagent/consumable/milk = 1, /datum/reagent/consumable/coco = 1) + id = "chocolate_milk" + results = list("chocolate_milk" = 2) + required_reagents = list("milk" = 1, "cocoa" = 1) mix_message = "The color changes as the mixture blends smoothly." /datum/chemical_reaction/eggnog name = "eggnog" - id = /datum/reagent/consumable/ethanol/eggnog - results = list(/datum/reagent/consumable/ethanol/eggnog = 15) - required_reagents = list(/datum/reagent/consumable/ethanol/rum = 5, /datum/reagent/consumable/cream = 5, /datum/reagent/consumable/eggyolk = 5) + id = "eggnog" + results = list("eggnog" = 15) + required_reagents = list("rum" = 5, "cream" = 5, "eggyolk" = 5) /datum/chemical_reaction/narsour name = "Nar'sour" - id = /datum/reagent/consumable/ethanol/narsour - results = list(/datum/reagent/consumable/ethanol/narsour = 1) - required_reagents = list(/datum/reagent/blood = 1, /datum/reagent/consumable/lemonjuice = 1, /datum/reagent/consumable/ethanol/demonsblood = 1) + id = "narsour" + results = list("narsour" = 1) + required_reagents = list("blood" = 1, "lemonjuice" = 1, "demonsblood" = 1) mix_message = "The mixture develops a sinister glow." mix_sound = 'sound/effects/singlebeat.ogg' /datum/chemical_reaction/quadruplesec name = "Quadruple Sec" - id = /datum/reagent/consumable/ethanol/quadruple_sec - results = list(/datum/reagent/consumable/ethanol/quadruple_sec = 15) - required_reagents = list(/datum/reagent/consumable/ethanol/triple_sec = 5, /datum/reagent/consumable/triple_citrus = 5, /datum/reagent/consumable/ethanol/creme_de_menthe = 5) + id = "quadruple_sec" + results = list("quadruple_sec" = 15) + required_reagents = list("triple_sec" = 5, "triple_citrus" = 5, "creme_de_menthe" = 5) mix_message = "The snap of a taser emanates clearly from the mixture as it settles." mix_sound = 'sound/weapons/taser.ogg' /datum/chemical_reaction/grasshopper name = "Grasshopper" - id = /datum/reagent/consumable/ethanol/grasshopper - results = list(/datum/reagent/consumable/ethanol/grasshopper = 15) - required_reagents = list(/datum/reagent/consumable/cream = 5, /datum/reagent/consumable/ethanol/creme_de_menthe = 5, /datum/reagent/consumable/ethanol/creme_de_cacao = 5) + id = "grasshopper" + results = list("grasshopper" = 15) + required_reagents = list("cream" = 5, "creme_de_menthe" = 5, "creme_de_cacao" = 5) mix_message = "A vibrant green bubbles forth as the mixture emulsifies." /datum/chemical_reaction/stinger name = "Stinger" - id = /datum/reagent/consumable/ethanol/stinger - results = list(/datum/reagent/consumable/ethanol/stinger = 15) - required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 10, /datum/reagent/consumable/ethanol/creme_de_menthe = 5) + id = "stinger" + results = list("stinger" = 15) + required_reagents = list("whiskey" = 10, "creme_de_menthe" = 5 ) /datum/chemical_reaction/quintuplesec name = "Quintuple Sec" - id = /datum/reagent/consumable/ethanol/quintuple_sec - results = list(/datum/reagent/consumable/ethanol/quintuple_sec = 15) - required_reagents = list(/datum/reagent/consumable/ethanol/quadruple_sec = 5, /datum/reagent/consumable/clownstears = 5, /datum/reagent/consumable/ethanol/syndicatebomb = 5) + id = "quintuple_sec" + results = list("quintuple_sec" = 15) + required_reagents = list("quadruple_sec" = 5, "clownstears" = 5, "syndicatebomb" = 5) mix_message = "Judgement is upon you." mix_message = 'sound/items/airhorn2.ogg' /datum/chemical_reaction/bastion_bourbon name = "Bastion Bourbon" - id = /datum/reagent/consumable/ethanol/bastion_bourbon - results = list(/datum/reagent/consumable/ethanol/bastion_bourbon = 2) - required_reagents = list(/datum/reagent/consumable/tea = 1, /datum/reagent/consumable/ethanol/creme_de_menthe = 1, /datum/reagent/consumable/triple_citrus = 1, /datum/reagent/consumable/berryjuice = 1) //herbal and minty, with a hint of citrus and berry + id = "bastion_bourbon" + results = list("bastion_bourbon" = 2) + required_reagents = list("tea" = 1, "creme_de_menthe" = 1, "triple_citrus" = 1, "berryjuice" = 1) //herbal and minty, with a hint of citrus and berry mix_message = "You catch an aroma of hot tea and fruits as the mix blends into a blue-green color." /datum/chemical_reaction/squirt_cider name = "Squirt Cider" - id = /datum/reagent/consumable/ethanol/squirt_cider - results = list(/datum/reagent/consumable/ethanol/squirt_cider = 1) - required_reagents = list(/datum/reagent/water = 1, /datum/reagent/consumable/tomatojuice = 1, /datum/reagent/consumable/nutriment = 1) + id = "squirt_cider" + results = list("squirt_cider" = 1) + required_reagents = list("water" = 1, "tomatojuice" = 1, "nutriment" = 1) mix_message = "The mix swirls and turns a bright red that reminds you of an apple's skin." /datum/chemical_reaction/fringe_weaver name = "Fringe Weaver" - id = /datum/reagent/consumable/ethanol/fringe_weaver - results = list(/datum/reagent/consumable/ethanol/fringe_weaver = 10) - required_reagents = list(/datum/reagent/consumable/ethanol = 9, /datum/reagent/consumable/sugar = 1) //9 karmotrine, 1 adelhyde + id = "fringe_weaver" + results = list("fringe_weaver" = 10) + required_reagents = list("ethanol" = 9, "sugar" = 1) //9 karmotrine, 1 adelhyde mix_message = "The mix turns a pleasant cream color and foams up." /datum/chemical_reaction/sugar_rush name = "Sugar Rush" - id = /datum/reagent/consumable/ethanol/sugar_rush - results = list(/datum/reagent/consumable/ethanol/sugar_rush = 4) - required_reagents = list(/datum/reagent/consumable/sugar = 2, /datum/reagent/consumable/lemonjuice = 1, /datum/reagent/consumable/ethanol/wine = 1) //2 adelhyde (sweet), 1 powdered delta (sour), 1 karmotrine (alcohol) + id = "sugar_rush" + results = list("sugar_rush" = 4) + required_reagents = list("sugar" = 2, "lemonjuice" = 1, "wine" = 1) //2 adelhyde (sweet), 1 powdered delta (sour), 1 karmotrine (alcohol) mix_message = "The mixture bubbles and brightens into a girly pink." /datum/chemical_reaction/crevice_spike name = "Crevice Spike" - id = /datum/reagent/consumable/ethanol/crevice_spike - results = list(/datum/reagent/consumable/ethanol/crevice_spike = 6) - required_reagents = list(/datum/reagent/consumable/limejuice = 2, /datum/reagent/consumable/capsaicin = 4) //2 powdered delta (sour), 4 flanergide (spicy) + id = "crevice_spike" + results = list("crevice_spike" = 6) + required_reagents = list("limejuice" = 2, "capsaicin" = 4) //2 powdered delta (sour), 4 flanergide (spicy) mix_message = "The mixture stings your eyes as it settles." /datum/chemical_reaction/sake name = "sake" - id = /datum/reagent/consumable/ethanol/sake - results = list(/datum/reagent/consumable/ethanol/sake = 10) - required_reagents = list(/datum/reagent/consumable/rice = 10) - required_catalysts = list(/datum/reagent/consumable/enzyme = 5) + id = "sake" + results = list("sake" = 10) + required_reagents = list("rice" = 10) + required_catalysts = list("enzyme" = 5) mix_message = "The rice grains ferment into a clear, sweet-smelling liquid." /datum/chemical_reaction/peppermint_patty name = "Peppermint Patty" - id = /datum/reagent/consumable/ethanol/peppermint_patty - results = list(/datum/reagent/consumable/ethanol/peppermint_patty = 10) - required_reagents = list(/datum/reagent/consumable/hot_coco = 6, /datum/reagent/consumable/ethanol/creme_de_cacao = 1, /datum/reagent/consumable/ethanol/creme_de_menthe = 1, /datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/menthol = 1) + id = "peppermint_patty" + results = list("peppermint_patty" = 10) + required_reagents = list("hot_coco" = 6, "creme_de_cacao" = 1, "creme_de_menthe" = 1, "vodka" = 1, "menthol" = 1) mix_message = "The coco turns mint green just as the strong scent hits your nose." /datum/chemical_reaction/alexander name = "Alexander" - id = /datum/reagent/consumable/ethanol/alexander - results = list(/datum/reagent/consumable/ethanol/alexander = 3) - required_reagents = list(/datum/reagent/consumable/ethanol/cognac = 1, /datum/reagent/consumable/ethanol/creme_de_cacao = 1, /datum/reagent/consumable/cream = 1) + id = "alexander" + results = list("alexander" = 3) + required_reagents = list("cognac" = 1, "creme_de_cacao" = 1, "cream" = 1) /datum/chemical_reaction/sidecar name = "Sidecar" - id = /datum/reagent/consumable/ethanol/sidecar - results = list(/datum/reagent/consumable/ethanol/sidecar = 4) - required_reagents = list(/datum/reagent/consumable/ethanol/cognac = 2, /datum/reagent/consumable/ethanol/triple_sec = 1, /datum/reagent/consumable/lemonjuice = 1) + id = "sidecar" + results = list("sidecar" = 4) + required_reagents = list("cognac" = 2, "triple_sec" = 1, "lemonjuice" = 1) /datum/chemical_reaction/between_the_sheets name = "Between the Sheets" - id = /datum/reagent/consumable/ethanol/between_the_sheets - results = list(/datum/reagent/consumable/ethanol/between_the_sheets = 5) - required_reagents = list(/datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/ethanol/sidecar = 4) + id = "between_the_sheets" + results = list("between_the_sheets" = 5) + required_reagents = list("rum" = 1, "sidecar" = 4) /datum/chemical_reaction/kamikaze name = "Kamikaze" - id = /datum/reagent/consumable/ethanol/kamikaze - results = list(/datum/reagent/consumable/ethanol/kamikaze = 3) - required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/ethanol/triple_sec = 1, /datum/reagent/consumable/limejuice = 1) + id = "kamikaze" + results = list("kamikaze" = 3) + required_reagents = list("vodka" = 1, "triple_sec" = 1, "limejuice" = 1) /datum/chemical_reaction/mojito name = "Mojito" - id = /datum/reagent/consumable/ethanol/mojito - results = list(/datum/reagent/consumable/ethanol/mojito = 5) - required_reagents = list(/datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/sodawater = 1, /datum/reagent/consumable/menthol = 1) + id = "mojito" + results = list("mojito" = 5) + required_reagents = list("rum" = 1, "sugar" = 1, "limejuice" = 1, "sodawater" = 1, "menthol" = 1) /datum/chemical_reaction/fernet_cola name = "Fernet Cola" - id = /datum/reagent/consumable/ethanol/fernet_cola - results = list(/datum/reagent/consumable/ethanol/fernet_cola = 2) - required_reagents = list(/datum/reagent/consumable/ethanol/fernet = 1, /datum/reagent/consumable/space_cola = 1) + id = "fernet_cola" + results = list("fernet_cola" = 2) + required_reagents = list("fernet" = 1, "cola" = 1) /datum/chemical_reaction/fanciulli name = "Fanciulli" - id = /datum/reagent/consumable/ethanol/fanciulli - results = list(/datum/reagent/consumable/ethanol/fanciulli = 2) - required_reagents = list(/datum/reagent/consumable/ethanol/manhattan = 1, /datum/reagent/consumable/ethanol/fernet = 1) + id = "fanciulli" + results = list("fanciulli" = 2) + required_reagents = list("manhattan" = 1, "fernet" = 1) /datum/chemical_reaction/branca_menta name = "Branca Menta" - id = /datum/reagent/consumable/ethanol/branca_menta - results = list(/datum/reagent/consumable/ethanol/branca_menta = 3) - required_reagents = list(/datum/reagent/consumable/ethanol/fernet = 1, /datum/reagent/consumable/ethanol/creme_de_menthe = 1, /datum/reagent/consumable/ice = 1) + id = "branca_menta" + results = list("branca_menta" = 3) + required_reagents = list("fernet" = 1, "creme_de_menthe" = 1, "ice" = 1) /datum/chemical_reaction/pwrgame name = "Power Gamer" - id = /datum/reagent/consumable/pwr_game - results = list(/datum/reagent/consumable/pwr_game = 5) - required_reagents = list(/datum/reagent/consumable/sodawater = 1, /datum/reagent/colorful_reagent/crayonpowder/black = 1, /datum/reagent/consumable/sodiumchloride = 1) + id = "pwr_game" + results = list("pwr_game" = 5) + required_reagents = list("sodawater" = 1, "blackcrayonpowder" = 1, "sodiumchloride" = 1) /datum/chemical_reaction/pinkmilk name = "Strawberry Milk" - id = /datum/reagent/consumable/pinkmilk - results = list(/datum/reagent/consumable/pinkmilk = 5) - required_reagents = list(/datum/reagent/drug/aphrodisiacplus = 1, /datum/reagent/consumable/milk = 1) + id = "pinkmilk" + results = list("pinkmilk" = 5) + required_reagents = list("aphro+" = 1, "milk" = 1) /datum/chemical_reaction/pinktea name = "Strawberry Tea" - id = /datum/reagent/consumable/pinktea - results = list(/datum/reagent/consumable/pinktea = 5) - required_reagents = list(/datum/reagent/drug/aphrodisiac = 1, /datum/reagent/consumable/tea/arnold_palmer = 1, /datum/reagent/consumable/sugar = 1) + id = "pinktea" + results = list("pinktea" = 5) + required_reagents = list("aphro" = 1, "arnold_palmer" = 1, "sugar" = 1) /datum/chemical_reaction/blank_paper name = "Blank Paper" - id = /datum/reagent/consumable/ethanol/blank_paper - results = list(/datum/reagent/consumable/ethanol/blank_paper = 3) - required_reagents = list(/datum/reagent/consumable/ethanol/silencer = 1, /datum/reagent/consumable/nothing = 1, /datum/reagent/consumable/nuka_cola = 1) + id = "blank_paper" + results = list("blank_paper" = 3) + required_reagents = list("silencer" = 1, "nothing" = 1, "nuka_cola" = 1) /datum/chemical_reaction/wizz_fizz name = "Wizz Fizz" - id = /datum/reagent/consumable/ethanol/wizz_fizz - results = list(/datum/reagent/consumable/ethanol/wizz_fizz = 3) - required_reagents = list(/datum/reagent/consumable/ethanol/triple_sec = 1, /datum/reagent/consumable/sodawater = 1, /datum/reagent/consumable/ethanol/champagne = 1) + id = "wizz_fizz" + results = list("wizz_fizz" = 3) + required_reagents = list("triple_sec" = 1, "sodawater" = 1, "champagne" = 1) mix_message = "The beverage starts to froth with an almost mystical zeal!" mix_sound = 'sound/effects/bubbles2.ogg' /datum/chemical_reaction/bug_spray name = "Bug Spray" - id = /datum/reagent/consumable/ethanol/bug_spray - results = list(/datum/reagent/consumable/ethanol/bug_spray = 5) - required_reagents = list(/datum/reagent/consumable/ethanol/triple_sec = 2, /datum/reagent/consumable/lemon_lime = 1, /datum/reagent/consumable/ethanol/rum = 2, /datum/reagent/consumable/ethanol/vodka = 1) + id = "bug_spray" + results = list("bug_spray" = 5) + required_reagents = list("triple_sec" = 2, "lemon_lime" = 1, "rum" = 2, "vodka" = 1) mix_message = "The faint aroma of summer camping trips wafts through the air; but what's that buzzing noise?" mix_sound = 'sound/creatures/bee.ogg' /datum/chemical_reaction/jack_rose name = "Jack Rose" - id = /datum/reagent/consumable/ethanol/jack_rose - results = list(/datum/reagent/consumable/ethanol/jack_rose = 4) - required_reagents = list(/datum/reagent/consumable/grenadine = 1, /datum/reagent/consumable/ethanol/applejack = 2, /datum/reagent/consumable/limejuice = 1) + id = "jack_rose" + results = list("jack_rose" = 4) + required_reagents = list("grenadine" = 1, "applejack" = 2, "limejuice" = 1) mix_message = "As the grenadine incorporates, the beverage takes on a mellow, red-orange glow." /datum/chemical_reaction/turbo name = "Turbo" - id = /datum/reagent/consumable/ethanol/turbo - results = list(/datum/reagent/consumable/ethanol/turbo = 5) - required_reagents = list(/datum/reagent/consumable/ethanol/moonshine = 2, /datum/reagent/nitrous_oxide = 1, /datum/reagent/consumable/ethanol/sugar_rush = 1, /datum/reagent/consumable/pwr_game = 1) + id = "turbo" + results = list("turbo" = 5) + required_reagents = list("moonshine" = 2, "nitrous_oxide" = 1, "sugar_rush" = 1, "pwr_game" = 1) /datum/chemical_reaction/old_timer name = "Old Timer" - id = /datum/reagent/consumable/ethanol/old_timer - results = list(/datum/reagent/consumable/ethanol/old_timer = 6) - required_reagents = list(/datum/reagent/consumable/ethanol/whiskeysoda = 3, /datum/reagent/consumable/parsnipjuice = 2, /datum/reagent/consumable/ethanol/alexander = 1) + id = "old_timer" + results = list("old_timer" = 6) + required_reagents = list("whiskeysoda" = 3, "parsnipjuice" = 2, "alexander" = 1) /datum/chemical_reaction/rubberneck name = "Rubberneck" - id = /datum/reagent/consumable/ethanol/rubberneck - results = list(/datum/reagent/consumable/ethanol/rubberneck = 10) - required_reagents = list(/datum/reagent/consumable/ethanol = 4, /datum/reagent/consumable/grey_bull = 5, /datum/reagent/consumable/astrotame = 1) + id = "rubberneck" + results = list("rubberneck" = 10) + required_reagents = list("ethanol" = 4, "grey_bull" = 5, "astrotame" = 1) /datum/chemical_reaction/duplex name = "Duplex" - id = /datum/reagent/consumable/ethanol/duplex - results = list(/datum/reagent/consumable/ethanol/duplex = 4) - required_reagents = list(/datum/reagent/consumable/ethanol/hcider = 2, /datum/reagent/consumable/applejuice = 1, /datum/reagent/consumable/berryjuice = 1) + id = "duplex" + results = list("duplex" = 4) + required_reagents = list("hcider" = 2, "applejuice" = 1, "berryjuice" = 1) /datum/chemical_reaction/trappist name = "Trappist" - id = /datum/reagent/consumable/ethanol/trappist - results = list(/datum/reagent/consumable/ethanol/trappist = 5) - required_reagents = list(/datum/reagent/consumable/ethanol/ale = 2, /datum/reagent/water/holywater = 2, /datum/reagent/consumable/sugar = 1) + id = "trappist" + results = list("trappist" = 5) + required_reagents = list("ale" = 2, "holywater" = 2, "sugar" = 1) /datum/chemical_reaction/cream_soda name = "Cream Soda" - id = /datum/reagent/consumable/cream_soda - results = list(/datum/reagent/consumable/cream_soda = 4) - required_reagents = list(/datum/reagent/consumable/sugar = 2, /datum/reagent/consumable/sodawater = 2, /datum/reagent/consumable/vanilla = 1) + id = "cream_soda" + results = list("cream_soda" = 4) + required_reagents = list("sugar" = 2, "sodawater" = 2, "vanilla" = 1) /datum/chemical_reaction/blazaam name = "Blazaam" - id = /datum/reagent/consumable/ethanol/blazaam - results = list(/datum/reagent/consumable/ethanol/blazaam = 3) - required_reagents = list(/datum/reagent/consumable/ethanol/gin = 2, /datum/reagent/consumable/peachjuice = 1, /datum/reagent/bluespace = 1) + id = "blazaam" + results = list("blazaam" = 3) + required_reagents = list("gin" = 2, "peachjuice" = 1, "bluespace" = 1) /datum/chemical_reaction/planet_cracker name = "Planet Cracker" - id = /datum/reagent/consumable/ethanol/planet_cracker - results = list(/datum/reagent/consumable/ethanol/planet_cracker = 4) - required_reagents = list(/datum/reagent/consumable/ethanol/champagne = 2, /datum/reagent/consumable/ethanol/lizardwine = 2, /datum/reagent/consumable/eggyolk = 1, /datum/reagent/gold = 1) + id = "planet_cracker" + results = list("planet_cracker" = 4) + required_reagents = list("champagne" = 2, "lizardwine" = 2, "eggyolk" = 1, "gold" = 1) mix_message = "The liquid's color starts shifting as the nanogold is alternately corroded and redeposited." /datum/chemical_reaction/red_queen name = "Red Queen" - id = /datum/reagent/consumable/red_queen - results = list(/datum/reagent/consumable/red_queen = 10) - required_reagents = list(/datum/reagent/consumable/tea = 6, /datum/reagent/mercury = 2, /datum/reagent/consumable/blackpepper = 1, /datum/reagent/growthserum = 1) + id = "red_queen" + results = list("red_queen" = 10) + required_reagents = list("tea" = 6, "mercury" = 2, "blackpepper" = 1, "growthserum" = 1) /datum/chemical_reaction/catnip_tea name = "Catnip Tea" - id = /datum/reagent/consumable/catnip_tea - results = list(/datum/reagent/consumable/catnip_tea = 3) - required_reagents = list(/datum/reagent/consumable/tea = 5, /datum/reagent/pax/catnip = 2) + id = "catnip_tea" + results = list("catnip_tea" = 3) + required_reagents = list("tea" = 5, "catnip" = 2) /datum/chemical_reaction/commander_and_chief name = "Commander and Chief" - id = /datum/reagent/consumable/ethanol/commander_and_chief - results = list(/datum/reagent/consumable/ethanol/commander_and_chief = 50) - required_reagents = list(/datum/reagent/consumable/ethanol/alliescocktail = 50, /datum/reagent/consumable/ethanol/champagne = 20, /datum/reagent/consumable/doctor_delight = 10, /datum/reagent/consumable/ethanol/quintuple_sec = 10, /datum/reagent/consumable/ethanol/screwdrivercocktail = 10) + id = "commander_and_chief" + results = list("commander_and_chief" = 50) + required_reagents = list("alliescocktail" = 50, "champagne" = 20, "doctorsdelight" = 10, "quintuple_sec" = 10, "screwdrivercocktail" = 10) mix_message = "When your powers combine, I am Captain Pl-..." diff --git a/code/modules/food_and_drinks/recipes/food_mixtures.dm b/code/modules/food_and_drinks/recipes/food_mixtures.dm index 130640ee8a..404f3a6061 100644 --- a/code/modules/food_and_drinks/recipes/food_mixtures.dm +++ b/code/modules/food_and_drinks/recipes/food_mixtures.dm @@ -11,8 +11,8 @@ /datum/chemical_reaction/tofu name = "Tofu" id = "tofu" - required_reagents = list(/datum/reagent/consumable/soymilk = 10) - required_catalysts = list(/datum/reagent/consumable/enzyme = 5) + required_reagents = list("soymilk" = 10) + required_catalysts = list("enzyme" = 5) mob_react = FALSE /datum/chemical_reaction/tofu/on_reaction(datum/reagents/holder, created_volume) @@ -24,7 +24,7 @@ /datum/chemical_reaction/chocolate_bar name = "Chocolate Bar" id = "chocolate_bar" - required_reagents = list(/datum/reagent/consumable/soymilk = 2, /datum/reagent/consumable/coco = 2, /datum/reagent/consumable/sugar = 2) + required_reagents = list("soymilk" = 2, "cocoa" = 2, "sugar" = 2) /datum/chemical_reaction/chocolate_bar/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) @@ -35,8 +35,8 @@ /datum/chemical_reaction/chocolate_bar2 name = "Chocolate Bar" - id = "chocolate_bar2" - required_reagents = list(/datum/reagent/consumable/milk/chocolate_milk = 4, /datum/reagent/consumable/sugar = 2) + id = "chocolate_bar" + required_reagents = list("chocolate_milk" = 4, "sugar" = 2) mob_react = FALSE /datum/chemical_reaction/chocolate_bar2/on_reaction(datum/reagents/holder, created_volume) @@ -47,48 +47,56 @@ /datum/chemical_reaction/hot_coco name = "Hot Coco" - id = /datum/reagent/consumable/hot_coco - results = list(/datum/reagent/consumable/hot_coco = 5) - required_reagents = list(/datum/reagent/water = 5, /datum/reagent/consumable/coco = 1) + id = "hot_coco" + results = list("hot_coco" = 5) + required_reagents = list("water" = 5, "cocoa" = 1) /datum/chemical_reaction/coffee name = "Coffee" - id = /datum/reagent/consumable/coffee - results = list(/datum/reagent/consumable/coffee = 5) - required_reagents = list(/datum/reagent/toxin/coffeepowder = 1, /datum/reagent/water = 5) + id = "coffee" + results = list("coffee" = 5) + required_reagents = list("coffeepowder" = 1, "water" = 5) /datum/chemical_reaction/tea name = "Tea" - id = /datum/reagent/consumable/tea - results = list(/datum/reagent/consumable/tea = 5) - required_reagents = list(/datum/reagent/toxin/teapowder = 1, /datum/reagent/water = 5) + id = "tea" + results = list("tea" = 5) + required_reagents = list("teapowder" = 1, "water" = 5) /datum/chemical_reaction/soysauce name = "Soy Sauce" - id = /datum/reagent/consumable/soysauce - results = list(/datum/reagent/consumable/soysauce = 5) - required_reagents = list(/datum/reagent/consumable/soymilk = 4, /datum/reagent/toxin/acid = 1) + id = "soysauce" + results = list("soysauce" = 5) + required_reagents = list("soymilk" = 4, "sacid" = 1) /datum/chemical_reaction/corn_syrup name = "corn_syrup" - id = /datum/reagent/consumable/corn_syrup - results = list(/datum/reagent/consumable/corn_syrup = 5) - required_reagents = list(/datum/reagent/consumable/corn_starch = 1, /datum/reagent/toxin/acid = 1) + id = "corn_syrup" + results = list("corn_syrup" = 5) + required_reagents = list("corn_starch" = 1, "sacid" = 1) required_temp = 374 /datum/chemical_reaction/caramel name = "Caramel" - id = /datum/reagent/consumable/caramel - results = list(/datum/reagent/consumable/caramel = 1) - required_reagents = list(/datum/reagent/consumable/sugar = 1) + id = "caramel" + results = list("caramel" = 1) + required_reagents = list("sugar" = 1) required_temp = 413 mob_react = FALSE +/datum/chemical_reaction/caramel_burned + name = "Caramel burned" + id = "caramel_burned" + results = list("carbon" = 1) + required_reagents = list("caramel" = 1) + required_temp = 483 + mob_react = FALSE + /datum/chemical_reaction/cheesewheel name = "Cheesewheel" id = "cheesewheel" - required_reagents = list(/datum/reagent/consumable/milk = 40) - required_catalysts = list(/datum/reagent/consumable/enzyme = 5) + required_reagents = list("milk" = 40) + required_catalysts = list("enzyme" = 5) /datum/chemical_reaction/cheesewheel/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) @@ -98,7 +106,7 @@ /datum/chemical_reaction/synthmeat name = "synthmeat" id = "synthmeat" - required_reagents = list(/datum/reagent/blood = 5, /datum/reagent/medicine/cryoxadone = 1) + required_reagents = list("blood" = 5, "cryoxadone" = 1) mob_react = FALSE /datum/chemical_reaction/synthmeat/on_reaction(datum/reagents/holder, created_volume) @@ -108,20 +116,20 @@ /datum/chemical_reaction/hot_ramen name = "Hot Ramen" - id = /datum/reagent/consumable/hot_ramen - results = list(/datum/reagent/consumable/hot_ramen = 3) - required_reagents = list(/datum/reagent/water = 1, /datum/reagent/consumable/dry_ramen = 3) + id = "hot_ramen" + results = list("hot_ramen" = 3) + required_reagents = list("water" = 1, "dry_ramen" = 3) /datum/chemical_reaction/hell_ramen name = "Hell Ramen" - id = /datum/reagent/consumable/hell_ramen - results = list(/datum/reagent/consumable/hell_ramen = 6) - required_reagents = list(/datum/reagent/consumable/capsaicin = 1, /datum/reagent/consumable/hot_ramen = 6) + id = "hell_ramen" + results = list("hell_ramen" = 6) + required_reagents = list("capsaicin" = 1, "hot_ramen" = 6) /datum/chemical_reaction/imitationcarpmeat name = "Imitation Carpmeat" id = "imitationcarpmeat" - required_reagents = list(/datum/reagent/toxin/carpotoxin = 5) + required_reagents = list("carpotoxin" = 5) required_container = /obj/item/reagent_containers/food/snacks/tofu mix_message = "The mixture becomes similar to carp meat." @@ -134,7 +142,7 @@ /datum/chemical_reaction/dough name = "Dough" id = "dough" - required_reagents = list(/datum/reagent/water = 10, /datum/reagent/consumable/flour = 15) + required_reagents = list("water" = 10, "flour" = 15) mix_message = "The ingredients form a dough." /datum/chemical_reaction/dough/on_reaction(datum/reagents/holder, created_volume) @@ -145,7 +153,7 @@ /datum/chemical_reaction/cakebatter name = "Cake Batter" id = "cakebatter" - required_reagents = list(/datum/reagent/consumable/eggyolk = 15, /datum/reagent/consumable/flour = 15, /datum/reagent/consumable/sugar = 5) + required_reagents = list("eggyolk" = 15, "flour" = 15, "sugar" = 5) mix_message = "The ingredients form a cake batter." /datum/chemical_reaction/cakebatter/on_reaction(datum/reagents/holder, created_volume) @@ -155,12 +163,12 @@ /datum/chemical_reaction/cakebatter/vegan id = "vegancakebatter" - required_reagents = list(/datum/reagent/consumable/soymilk = 15, /datum/reagent/consumable/flour = 15, /datum/reagent/consumable/sugar = 5) + required_reagents = list("soymilk" = 15, "flour" = 15, "sugar" = 5) /datum/chemical_reaction/ricebowl name = "Rice Bowl" id = "ricebowl" - required_reagents = list(/datum/reagent/consumable/rice = 10, /datum/reagent/water = 10) + required_reagents = list("rice" = 10, "water" = 10) required_container = /obj/item/reagent_containers/glass/bowl mix_message = "The rice absorbs the water." @@ -172,6 +180,6 @@ /datum/chemical_reaction/bbqsauce name = "BBQ Sauce" - id = /datum/reagent/consumable/bbqsauce - results = list(/datum/reagent/consumable/bbqsauce = 5) - required_reagents = list(/datum/reagent/ash = 1, /datum/reagent/consumable/tomatojuice = 1, /datum/reagent/medicine/salglu_solution = 3, /datum/reagent/consumable/blackpepper = 1) + id = "bbqsauce" + results = list("bbqsauce" = 5) + required_reagents = list("ash" = 1, "tomatojuice" = 1, "salglu_solution" = 3, "blackpepper" = 1) \ No newline at end of file diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm index f0fe936d05..7977a715d8 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm @@ -108,7 +108,7 @@ datum/crafting_recipe/food/donut/meat /datum/crafting_recipe/food/donut/bungo name = "Bungo Donut" reqs = list( - /datum/reagent/consumable/bungojuice = 3, + /obj/item/reagent_containers/food/snacks/grown/bungofruit = 1, /obj/item/reagent_containers/food/snacks/donut/plain = 1 ) result = /obj/item/reagent_containers/food/snacks/donut/bungo @@ -175,7 +175,7 @@ datum/crafting_recipe/food/donut/meat /datum/crafting_recipe/food/donut/jelly/bungo name = "Bungo Jelly Donut" reqs = list( - /datum/reagent/consumable/bungojuice = 3, + /obj/item/reagent_containers/food/snacks/grown/bungofruit = 1, /obj/item/reagent_containers/food/snacks/donut/jelly/plain = 1 ) result = /obj/item/reagent_containers/food/snacks/donut/jelly/bungo @@ -242,7 +242,7 @@ datum/crafting_recipe/food/donut/meat /datum/crafting_recipe/food/donut/slimejelly/bungo name = "Bungo Slime Donut" reqs = list( - /datum/reagent/consumable/bungojuice = 3, + /obj/item/reagent_containers/food/snacks/grown/bungofruit = 1, /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/plain = 1 ) result = /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/bungo diff --git a/code/modules/goonchat/browserOutput.dm b/code/modules/goonchat/browserOutput.dm index 6f1e19d5e0..c273690571 100644 --- a/code/modules/goonchat/browserOutput.dm +++ b/code/modules/goonchat/browserOutput.dm @@ -8,8 +8,6 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("tmp/iconCache.sav")) //Cache of ico //On client, created on login /datum/chatOutput var/client/owner //client ref - var/total_checks = 0 - var/last_check = 0 var/loaded = FALSE // Has the client loaded the browser output area? var/list/messageQueue //If they haven't loaded chat, this is where messages will go until they do var/cookieSent = FALSE // Has the client sent a cookie for analysis @@ -152,18 +150,6 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("tmp/iconCache.sav")) //Cache of ico //Called by client, sent data to investigate (cookie history so far) /datum/chatOutput/proc/analyzeClientData(cookie = "") - //Spam check - if(world.time > last_check + (3 SECONDS)) - last_check = world.time - total_checks = 0 - - total_checks += 1 - - if(total_checks > SPAM_TRIGGER_AUTOMUTE) - message_admins("[key_name(owner)] kicked for goonchat topic spam") - qdel(owner) - return - if(!cookie) return @@ -172,22 +158,13 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("tmp/iconCache.sav")) //Cache of ico if (connData && islist(connData) && connData.len > 0 && connData["connData"]) connectionHistory = connData["connData"] //lol fuck var/list/found = new() - if(connectionHistory.len > 5) - message_admins("[key_name(src.owner)] was kicked for an invalid ban cookie)") - qdel(owner) - return - - for(var/i in min(connectionHistory.len, 5) to 1 step -1) - if(QDELETED(owner)) - //he got cleaned up before we were done - return + for(var/i in connectionHistory.len to 1 step -1) var/list/row = src.connectionHistory[i] if (!row || row.len < 3 || (!row["ckey"] || !row["compid"] || !row["ip"])) //Passed malformed history object return if (world.IsBanned(row["ckey"], row["ip"], row["compid"], real_bans_only=TRUE)) found = row break - CHECK_TICK //Uh oh this fucker has a history of playing on a banned account!! if (found.len > 0) diff --git a/code/modules/goonchat/browserassets/js/browserOutput.js b/code/modules/goonchat/browserassets/js/browserOutput.js index 823ad107d2..abd05d29ed 100644 --- a/code/modules/goonchat/browserassets/js/browserOutput.js +++ b/code/modules/goonchat/browserassets/js/browserOutput.js @@ -421,8 +421,8 @@ function handleClientData(ckey, ip, compid) { return; //Record already exists } } - //Lets make sure we obey our limit (can connect from server with higher limit) - while (opts.clientData.length >= opts.clientDataLimit) { + + if (opts.clientData.length >= opts.clientDataLimit) { opts.clientData.shift(); } } else { diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm index 1898fe4b01..3cb05a8f7e 100644 --- a/code/modules/holiday/easter.dm +++ b/code/modules/holiday/easter.dm @@ -163,7 +163,7 @@ icon_state = "briochecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/brioche slices_num = 6 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 10, "vitamin" = 2) /obj/item/reagent_containers/food/snacks/cakeslice/brioche name = "brioche cake slice" @@ -184,10 +184,10 @@ name = "scotch egg" desc = "A boiled egg wrapped in a delicious, seasoned meatball." icon_state = "scotchegg" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list("nutriment" = 2, "vitamin" = 2) bitesize = 3 filling_color = "#FFFFF0" - list_reagents = list(/datum/reagent/consumable/nutriment = 6) + list_reagents = list("nutriment" = 6) /datum/crafting_recipe/food/scotchegg name = "Scotch egg" @@ -204,8 +204,8 @@ name = "Mammi" desc = "A bowl of mushy bread and milk. It reminds you, not too fondly, of a bowel movement." icon_state = "mammi" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list("nutriment" = 3, "vitamin" = 1) + list_reagents = list("nutriment" = 8, "vitamin" = 1) /datum/crafting_recipe/food/mammi name = "Mammi" @@ -221,8 +221,8 @@ name = "chocolate bunny" desc = "Contains less than 10% real rabbit!" icon_state = "chocolatebunny" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/sugar = 2, /datum/reagent/consumable/coco = 2) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list("nutriment" = 4, "sugar" = 2, "cocoa" = 2) filling_color = "#A0522D" /datum/crafting_recipe/food/chocolatebunny diff --git a/code/modules/holiday/halloween/jacqueen.dm b/code/modules/holiday/halloween/jacqueen.dm index bd4c26e0f2..d71e7c0f6a 100644 --- a/code/modules/holiday/halloween/jacqueen.dm +++ b/code/modules/holiday/halloween/jacqueen.dm @@ -95,7 +95,7 @@ last_poof = world.realtime var/datum/reagents/R = new/datum/reagents(100)//Hey, just in case. var/datum/effect_system/smoke_spread/chem/s = new() - R.add_reagent(/datum/reagent/fermi/secretcatchem, 10) + R.add_reagent("secretcatchem", 10) s.set_up(R, 0, loc) s.start() visible_message("[src] disappears in a puff of smoke!") @@ -181,7 +181,7 @@ visible_message("[src] raises an eyebrown, \"It's 4 candies for that [gender]! Thems the rules!\"") return visible_message("[src] waves their arms around, \"Off comes your head, a pumpkin taking it's stead!\"") - C.reagents.add_reagent(/datum/reagent/mutationtoxin/pumpkinhead, 5) + C.reagents.add_reagent("pumpkinmutationtoxin", 5) sleep(20) poof() return @@ -340,7 +340,7 @@ C.equip_to_slot(jaqc_latern, SLOT_HEAD, 1, 1) if(4) visible_message("[src] waves their arms around, \"In your body there's something amiss, you'll find it's a chem made by my sis!\"") - C.reagents.add_reagent(/datum/reagent/fermi/eigenstate, 30) + C.reagents.add_reagent("eigenstate", 30) if(5) visible_message("[src] waves their arms around, \"A new familiar for me, and you'll see it's thee!\"") C.reagents.add_reagent("secretcatchem", 30) @@ -411,6 +411,7 @@ /datum/reagent/mutationtoxin/pumpkinhead name = "Pumpkin head mutation toxin" + id = "pumpkinmutationtoxin" race = /datum/species/dullahan/pumpkin mutationtext = "The pain subsides. You feel your head roll off your shoulders... and you smell pumpkin." //I couldn't get the replace head sprite with a pumpkin to work so, it is what it is. diff --git a/code/modules/holodeck/computer.dm b/code/modules/holodeck/computer.dm index d551222836..889706744a 100644 --- a/code/modules/holodeck/computer.dm +++ b/code/modules/holodeck/computer.dm @@ -59,7 +59,9 @@ return var/area/AS = get_area(src) if(istype(AS, /area/holodeck)) - log_mapping("Holodeck computer cannot be in a holodeck, This would cause circular power dependency.") + log_world("### MAPPING ERROR") + log_world("Holodeck computer cannot be in a holodeck.") + log_world("This would cause circular power dependency.") qdel(src) return else diff --git a/code/modules/hydroponics/beekeeping/beebox.dm b/code/modules/hydroponics/beekeeping/beebox.dm index a058601c39..3c4ed776b7 100644 --- a/code/modules/hydroponics/beekeeping/beebox.dm +++ b/code/modules/hydroponics/beekeeping/beebox.dm @@ -65,7 +65,7 @@ var/datum/reagent/R = null if(random_reagent) R = pick(subtypesof(/datum/reagent)) - R = GLOB.chemical_reagents_list[R] + R = GLOB.chemical_reagents_list[initial(R.id)] queen_bee = new(src) queen_bee.beehome = src @@ -95,7 +95,7 @@ bee_resources = max(bee_resources-BEE_RESOURCE_HONEYCOMB_COST, 0) var/obj/item/reagent_containers/honeycomb/HC = new(src) if(queen_bee.beegent) - HC.set_reagent(queen_bee.beegent.type) + HC.set_reagent(queen_bee.beegent.id) honeycombs += HC if(bees.len < get_max_bees()) diff --git a/code/modules/hydroponics/beekeeping/honeycomb.dm b/code/modules/hydroponics/beekeeping/honeycomb.dm index 5bb2936c1e..e7faff0209 100644 --- a/code/modules/hydroponics/beekeeping/honeycomb.dm +++ b/code/modules/hydroponics/beekeeping/honeycomb.dm @@ -9,7 +9,7 @@ disease_amount = 0 volume = 10 amount_per_transfer_from_this = 0 - list_reagents = list(/datum/reagent/consumable/honey = 5) + list_reagents = list("honey" = 5) grind_results = list() var/honey_color = "" @@ -31,10 +31,10 @@ /obj/item/reagent_containers/honeycomb/proc/set_reagent(reagent) var/datum/reagent/R = GLOB.chemical_reagents_list[reagent] - if(R) + if(istype(R)) name = "honeycomb ([R.name])" honey_color = R.color - reagents.add_reagent(reagent,5) + reagents.add_reagent(R.id,5) else honey_color = "" update_icon() \ No newline at end of file diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index ac750a0492..fb40e4eebd 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -210,9 +210,9 @@ var/S = 0 for(var/obj/item/reagent_containers/food/snacks/grown/I in contents) S += 5 - if(I.reagents.get_reagent_amount(/datum/reagent/consumable/nutriment) < 0.1) + if(I.reagents.get_reagent_amount("nutriment") < 0.1) points += 1*productivity - else points += I.reagents.get_reagent_amount(/datum/reagent/consumable/nutriment)*10*productivity + else points += I.reagents.get_reagent_amount("nutriment")*10*productivity qdel(I) if(S) processing = TRUE diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm index ab6625b46d..e9001322d3 100644 --- a/code/modules/hydroponics/fermenting_barrel.dm +++ b/code/modules/hydroponics/fermenting_barrel.dm @@ -33,7 +33,7 @@ data["tastes"] = list(fruit.wine_flavor = 1) else data["tastes"] = list(fruit.tastes[1] = 1) - reagents.add_reagent(/datum/reagent/consumable/ethanol/fruit_wine, amount, data) + reagents.add_reagent("fruit_wine", amount, data) qdel(fruit) playsound(src, 'sound/effects/bubbles.ogg', 50, TRUE) diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index 77199b3496..3376bac1cc 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -240,7 +240,7 @@ dat += "
    " else dat += "No trait-related genes detected in sample.
    " - if(can_insert && istype(disk.gene, /datum/plant_gene/trait) && !seed.is_gene_forbidden(disk.gene.type)) + if(can_insert && istype(disk.gene, /datum/plant_gene/trait)) dat += "Insert: [disk.gene.get_name()]" dat += "" else diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 91ccce7cfd..660f1e17e4 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -144,20 +144,20 @@ return TRUE /obj/item/reagent_containers/food/snacks/grown/on_grind() - var/nutriment = reagents.get_reagent_amount(/datum/reagent/consumable/nutriment) + var/nutriment = reagents.get_reagent_amount("nutriment") if(grind_results&&grind_results.len) for(var/i in 1 to grind_results.len) grind_results[grind_results[i]] = nutriment - reagents.del_reagent(/datum/reagent/consumable/nutriment) - reagents.del_reagent(/datum/reagent/consumable/nutriment/vitamin) + reagents.del_reagent("nutriment") + reagents.del_reagent("vitamin") /obj/item/reagent_containers/food/snacks/grown/on_juice() - var/nutriment = reagents.get_reagent_amount(/datum/reagent/consumable/nutriment) + var/nutriment = reagents.get_reagent_amount("nutriment") if(juice_results&&juice_results.len) for(var/i in 1 to juice_results.len) juice_results[juice_results[i]] = nutriment - reagents.del_reagent(/datum/reagent/consumable/nutriment) - reagents.del_reagent(/datum/reagent/consumable/nutriment/vitamin) + reagents.del_reagent("nutriment") + reagents.del_reagent("vitamin") // For item-containing growns such as eggy or gatfruit /obj/item/reagent_containers/food/snacks/grown/shell/attack_self(mob/user) diff --git a/code/modules/hydroponics/grown/ambrosia.dm b/code/modules/hydroponics/grown/ambrosia.dm index e84025208a..a3b93db1ea 100644 --- a/code/modules/hydroponics/grown/ambrosia.dm +++ b/code/modules/hydroponics/grown/ambrosia.dm @@ -25,7 +25,7 @@ icon_dead = "ambrosia-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/ambrosia/deus) - reagents_add = list(/datum/reagent/drug/space_drugs = 0.15, /datum/reagent/medicine/bicaridine = 0.1, /datum/reagent/medicine/kelotane = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05, /datum/reagent/toxin = 0.1) + reagents_add = list("space_drugs" = 0.15, "bicaridine" = 0.1, "kelotane" = 0.1, "vitamin" = 0.04, "nutriment" = 0.05, "toxin" = 0.1) /obj/item/reagent_containers/food/snacks/grown/ambrosia/vulgaris seed = /obj/item/seeds/ambrosia @@ -42,7 +42,7 @@ plantname = "Ambrosia Deus" product = /obj/item/reagent_containers/food/snacks/grown/ambrosia/deus mutatelist = list(/obj/item/seeds/ambrosia/gaia) - reagents_add = list(/datum/reagent/medicine/omnizine = 0.15, /datum/reagent/medicine/synaptizine = 0.15, /datum/reagent/drug/space_drugs = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05) + reagents_add = list("omnizine" = 0.15, "synaptizine" = 0.15, "space_drugs" = 0.1, "vitamin" = 0.04, "nutriment" = 0.05) rarity = 40 /obj/item/reagent_containers/food/snacks/grown/ambrosia/deus @@ -62,7 +62,7 @@ plantname = "Ambrosia Gaia" product = /obj/item/reagent_containers/food/snacks/grown/ambrosia/gaia mutatelist = list(/obj/item/seeds/ambrosia/deus) - reagents_add = list(/datum/reagent/medicine/earthsblood = 0.05, /datum/reagent/consumable/nutriment = 0.06, /datum/reagent/consumable/nutriment/vitamin = 0.05) + reagents_add = list("earthsblood" = 0.05, "nutriment" = 0.06, "vitamin" = 0.05) rarity = 30 //These are some pretty good plants right here genes = list() weed_rate = 4 diff --git a/code/modules/hydroponics/grown/apple.dm b/code/modules/hydroponics/grown/apple.dm index f8e58aee1b..007c0b2454 100644 --- a/code/modules/hydroponics/grown/apple.dm +++ b/code/modules/hydroponics/grown/apple.dm @@ -14,7 +14,7 @@ icon_dead = "apple-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/apple/gold) - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) /obj/item/reagent_containers/food/snacks/grown/apple seed = /obj/item/seeds/apple @@ -24,9 +24,9 @@ filling_color = "#FF4500" bitesize = 100 // Always eat the apple in one bite foodtype = FRUIT - juice_results = list(/datum/reagent/consumable/applejuice = 0) + juice_results = list("applejuice" = 0) tastes = list("apple" = 1) - distill_reagent = /datum/reagent/consumable/ethanol/hcider + distill_reagent = "hcider" // Gold Apple /obj/item/seeds/apple/gold @@ -39,7 +39,7 @@ maturation = 10 production = 10 mutatelist = list() - reagents_add = list(/datum/reagent/gold = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("gold" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) rarity = 40 // Alchemy! /obj/item/reagent_containers/food/snacks/grown/apple/gold diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm index 7668d17ac1..b25f76c1c8 100644 --- a/code/modules/hydroponics/grown/banana.dm +++ b/code/modules/hydroponics/grown/banana.dm @@ -12,7 +12,7 @@ icon_dead = "banana-dead" genes = list(/datum/plant_gene/trait/slip, /datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/banana/mime, /obj/item/seeds/banana/bluespace, /obj/item/seeds/banana/exotic_banana) - reagents_add = list(/datum/reagent/consumable/banana = 0.1, /datum/reagent/potassium = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.02) + reagents_add = list("banana" = 0.1, "potassium" = 0.1, "vitamin" = 0.04, "nutriment" = 0.02) /obj/item/reagent_containers/food/snacks/grown/banana seed = /obj/item/seeds/banana @@ -24,8 +24,8 @@ filling_color = "#FFFF00" bitesize = 5 foodtype = FRUIT - juice_results = list(/datum/reagent/consumable/banana = 0) - distill_reagent = /datum/reagent/consumable/ethanol/bananahonk + juice_results = list("banana" = 0) + distill_reagent = "bananahonk" /obj/item/reagent_containers/food/snacks/grown/banana/suicide_act(mob/user) user.visible_message("[user] is aiming [src] at [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!") @@ -70,7 +70,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/banana/mime growthstages = 4 mutatelist = list() - reagents_add = list(/datum/reagent/consumable/nothing = 0.1, /datum/reagent/toxin/mutetoxin = 0.1, /datum/reagent/consumable/nutriment = 0.02) + reagents_add = list("nothing" = 0.1, "mutetoxin" = 0.1, "nutriment" = 0.02) rarity = 15 /obj/item/reagent_containers/food/snacks/grown/banana/mime @@ -80,7 +80,7 @@ icon_state = "mimana" trash = /obj/item/grown/bananapeel/mimanapeel filling_color = "#FFFFEE" - distill_reagent = /datum/reagent/consumable/ethanol/silencer + distill_reagent = "silencer" /obj/item/grown/bananapeel/mimanapeel seed = /obj/item/seeds/banana/mime @@ -100,7 +100,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/banana/bluespace mutatelist = list() genes = list(/datum/plant_gene/trait/slip, /datum/plant_gene/trait/teleport, /datum/plant_gene/trait/repeated_harvest) - reagents_add = list(/datum/reagent/bluespace = 0.2, /datum/reagent/consumable/banana = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.02) + reagents_add = list("bluespace" = 0.2, "banana" = 0.1, "vitamin" = 0.04, "nutriment" = 0.02) rarity = 30 /obj/item/reagent_containers/food/snacks/grown/banana/bluespace @@ -137,9 +137,9 @@ name = "banana spider" desc = "You do not know what it is, but you can bet the clown would love it." icon_state = "exoticbanana" - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list("nutriment" = 3, "vitamin" = 2) foodtype = GROSS | MEAT | RAW | FRUIT - grind_results = list(/datum/reagent/blood = 20, /datum/reagent/liquidgibs = 5) + grind_results = list("blood" = 20, "liquidgibs" = 5) var/awakening = 0 /obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable/attack_self(mob/user) diff --git a/code/modules/hydroponics/grown/beans.dm b/code/modules/hydroponics/grown/beans.dm index 3e5fee411f..4338e3b070 100644 --- a/code/modules/hydroponics/grown/beans.dm +++ b/code/modules/hydroponics/grown/beans.dm @@ -15,7 +15,7 @@ icon_dead = "soybean-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/soya/koi) - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05, /datum/reagent/consumable/cooking_oil = 0.03) //Vegetable oil! + reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05, "cooking_oil" = 0.03) //Vegetable oil! /obj/item/reagent_containers/food/snacks/grown/soybeans seed = /obj/item/seeds/soya @@ -26,7 +26,7 @@ filling_color = "#F0E68C" bitesize_mod = 2 foodtype = VEGETABLES - grind_results = list(/datum/reagent/consumable/soymilk = 0) + grind_results = list("soymilk" = 0) tastes = list("soy" = 1) wine_power = 20 @@ -40,7 +40,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/koibeans potency = 10 mutatelist = list() - reagents_add = list(/datum/reagent/toxin/carpotoxin = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05) + reagents_add = list("carpotoxin" = 0.1, "vitamin" = 0.04, "nutriment" = 0.05) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/koibeans diff --git a/code/modules/hydroponics/grown/berries.dm b/code/modules/hydroponics/grown/berries.dm index 0646ae1a8c..94dbc74499 100644 --- a/code/modules/hydroponics/grown/berries.dm +++ b/code/modules/hydroponics/grown/berries.dm @@ -15,7 +15,7 @@ icon_dead = "berry-dead" // Same for the dead icon genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/berry/glow, /obj/item/seeds/berry/poison) - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) /obj/item/reagent_containers/food/snacks/grown/berries seed = /obj/item/seeds/berry @@ -26,9 +26,9 @@ filling_color = "#FF00FF" bitesize_mod = 2 foodtype = FRUIT - juice_results = list(/datum/reagent/consumable/berryjuice = 0) + juice_results = list("berryjuice" = 0) tastes = list("berry" = 1) - distill_reagent = /datum/reagent/consumable/ethanol/gin + distill_reagent = "gin" // Poison Berries /obj/item/seeds/berry/poison @@ -39,7 +39,7 @@ plantname = "Poison-Berry Bush" product = /obj/item/reagent_containers/food/snacks/grown/berries/poison mutatelist = list(/obj/item/seeds/berry/death) - reagents_add = list(/datum/reagent/toxin/cyanide = 0.15, /datum/reagent/toxin/staminatoxin = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("cyanide" = 0.15, "tirizene" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) rarity = 10 // Mildly poisonous berries are common in reality /obj/item/reagent_containers/food/snacks/grown/berries/poison @@ -49,7 +49,7 @@ icon_state = "poisonberrypile" filling_color = "#C71585" foodtype = FRUIT | TOXIC - juice_results = list(/datum/reagent/consumable/poisonberryjuice = 0) + juice_results = list("poisonberryjuice" = 0) tastes = list("poison-berry" = 1) distill_reagent = null wine_power = 35 @@ -65,7 +65,7 @@ lifespan = 30 potency = 50 mutatelist = list() - reagents_add = list(/datum/reagent/toxin/coniine = 0.08, /datum/reagent/toxin/staminatoxin = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("coniine" = 0.08, "tirizene" = 0.1, "vitamin" = 0.04, "nutriment" = 0.1) rarity = 30 /obj/item/reagent_containers/food/snacks/grown/berries/death @@ -91,7 +91,7 @@ endurance = 25 mutatelist = list() genes = list(/datum/plant_gene/trait/glow/white, /datum/plant_gene/trait/noreact, /datum/plant_gene/trait/repeated_harvest) - reagents_add = list(/datum/reagent/uranium = 0.25, /datum/reagent/iodine = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("uranium" = 0.25, "iodine" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/berries/glow @@ -124,7 +124,7 @@ icon_harvest = "cherry-harvest" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/cherry/blue, /obj/item/seeds/cherry/bulb) - reagents_add = list(/datum/reagent/consumable/nutriment = 0.07, /datum/reagent/consumable/sugar = 0.07) + reagents_add = list("nutriment" = 0.07, "sugar" = 0.07) /obj/item/reagent_containers/food/snacks/grown/cherries seed = /obj/item/seeds/cherry @@ -135,7 +135,7 @@ filling_color = "#FF0000" bitesize_mod = 2 foodtype = FRUIT - grind_results = list(/datum/reagent/consumable/cherryjelly = 0) + grind_results = list("cherryjelly" = 0) tastes = list("cherry" = 1) wine_power = 30 @@ -148,7 +148,7 @@ plantname = "Blue Cherry Tree" product = /obj/item/reagent_containers/food/snacks/grown/bluecherries mutatelist = list() - reagents_add = list(/datum/reagent/consumable/nutriment = 0.07, /datum/reagent/consumable/sugar = 0.07) + reagents_add = list("nutriment" = 0.07, "sugar" = 0.07) rarity = 10 /obj/item/reagent_containers/food/snacks/grown/bluecherries @@ -159,7 +159,7 @@ filling_color = "#6495ED" bitesize_mod = 2 foodtype = FRUIT - grind_results = list(/datum/reagent/consumable/bluecherryjelly = 0) + grind_results = list("bluecherryjelly" = 0) tastes = list("blue cherry" = 1) wine_power = 50 @@ -173,7 +173,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/cherrybulbs genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/pink) mutatelist = list() - reagents_add = list(/datum/reagent/consumable/nutriment = 0.07, /datum/reagent/consumable/sugar = 0.07) + reagents_add = list("nutriment" = 0.07, "sugar" = 0.07) rarity = 10 /obj/item/reagent_containers/food/snacks/grown/cherrybulbs @@ -184,7 +184,7 @@ filling_color = "#FF0000" bitesize_mod = 2 foodtype = FRUIT - grind_results = list(/datum/reagent/consumable/cherryjelly = 0) + grind_results = list("cherryjelly" = 0) tastes = list("cherry" = 1) wine_power = 50 @@ -207,7 +207,7 @@ icon_dead = "grape-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/grape/green) - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/sugar = 0.1) + reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1, "sugar" = 0.1) /obj/item/reagent_containers/food/snacks/grown/grapes seed = /obj/item/seeds/grape @@ -218,9 +218,9 @@ filling_color = "#FF1493" bitesize_mod = 2 foodtype = FRUIT - juice_results = list(/datum/reagent/consumable/grapejuice = 0) + juice_results = list("grapejuice" = 0) tastes = list("grape" = 1) - distill_reagent = /datum/reagent/consumable/ethanol/wine + distill_reagent = "wine" // Green Grapes /obj/item/seeds/grape/green @@ -230,7 +230,7 @@ species = "greengrape" plantname = "Green-Grape Vine" product = /obj/item/reagent_containers/food/snacks/grown/grapes/green - reagents_add = list(/datum/reagent/medicine/kelotane = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/sugar = 0.1) + reagents_add = list("kelotane" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1, "sugar" = 0.1) // No rarity: technically it's a beneficial mutant, but it's not exactly "new"... mutatelist = list() @@ -240,7 +240,7 @@ icon_state = "greengrapes" filling_color = "#7FFF00" tastes = list("green grape" = 1) - distill_reagent = /datum/reagent/consumable/ethanol/cognac + distill_reagent = "cognac" // Strawberry /obj/item/seeds/strawberry @@ -254,7 +254,7 @@ growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' icon_grow = "strawberry-grow" icon_dead = "berry-dead" - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.07, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/sugar = 0.2) + reagents_add = list("vitamin" = 0.07, "nutriment" = 0.1, "sugar" = 0.2) mutatelist = list() /obj/item/reagent_containers/food/snacks/grown/strawberry diff --git a/code/modules/hydroponics/grown/cannabis.dm b/code/modules/hydroponics/grown/cannabis.dm index 621e79fb77..6ce3558bc3 100644 --- a/code/modules/hydroponics/grown/cannabis.dm +++ b/code/modules/hydroponics/grown/cannabis.dm @@ -17,7 +17,7 @@ /obj/item/seeds/cannabis/death, /obj/item/seeds/cannabis/white, /obj/item/seeds/cannabis/ultimate) - reagents_add = list(/datum/reagent/drug/space_drugs = 0.15, /datum/reagent/toxin/lipolicide = 0.35) // gives u the munchies + reagents_add = list("space_drugs" = 0.15, "lipolicide" = 0.35) // gives u the munchies /obj/item/seeds/cannabis/rainbow @@ -28,7 +28,7 @@ plantname = "Rainbow Weed" product = /obj/item/reagent_containers/food/snacks/grown/cannabis/rainbow mutatelist = list() - reagents_add = list(/datum/reagent/toxin/mindbreaker = 0.15, /datum/reagent/toxin/lipolicide = 0.35) + reagents_add = list("mindbreaker" = 0.15, "lipolicide" = 0.35) rarity = 40 /obj/item/seeds/cannabis/death @@ -39,7 +39,7 @@ plantname = "Deathweed" product = /obj/item/reagent_containers/food/snacks/grown/cannabis/death mutatelist = list() - reagents_add = list(/datum/reagent/toxin/cyanide = 0.35, /datum/reagent/drug/space_drugs = 0.15, /datum/reagent/toxin/lipolicide = 0.15) + reagents_add = list("cyanide" = 0.35, "space_drugs" = 0.15, "lipolicide" = 0.15) rarity = 40 /obj/item/seeds/cannabis/white @@ -50,7 +50,7 @@ plantname = "Lifeweed" product = /obj/item/reagent_containers/food/snacks/grown/cannabis/white mutatelist = list() - reagents_add = list(/datum/reagent/medicine/omnizine = 0.35, /datum/reagent/drug/space_drugs = 0.15, /datum/reagent/toxin/lipolicide = 0.15) + reagents_add = list("omnizine" = 0.35, "space_drugs" = 0.15, "lipolicide" = 0.15) rarity = 40 @@ -63,21 +63,21 @@ product = /obj/item/reagent_containers/food/snacks/grown/cannabis/ultimate genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/green) mutatelist = list() - reagents_add = list(/datum/reagent/drug/space_drugs = 0.3, - /datum/reagent/toxin/mindbreaker = 0.3, - /datum/reagent/mercury = 0.15, - /datum/reagent/lithium = 0.15, - /datum/reagent/medicine/atropine = 0.15, - /datum/reagent/medicine/haloperidol = 0.15, - /datum/reagent/drug/methamphetamine = 0.15, - /datum/reagent/consumable/capsaicin = 0.15, - /datum/reagent/barbers_aid = 0.15, - /datum/reagent/drug/bath_salts = 0.15, - /datum/reagent/toxin/itching_powder = 0.15, - /datum/reagent/drug/crank = 0.15, - /datum/reagent/drug/krokodil = 0.15, - /datum/reagent/toxin/histamine = 0.15, - /datum/reagent/toxin/lipolicide = 0.15) + reagents_add = list("space_drugs" = 0.3, + "mindbreaker" = 0.3, + "mercury" = 0.15, + "lithium" = 0.15, + "atropine" = 0.15, + "haloperidol" = 0.15, + "methamphetamine" = 0.15, + "capsaicin" = 0.15, + "barbers_aid" = 0.15, + "bath_salts" = 0.15, + "itching_powder" = 0.15, + "crank" = 0.15, + "krokodil" = 0.15, + "histamine" = 0.15, + "lipolicide" = 0.15) rarity = 69 diff --git a/code/modules/hydroponics/grown/cereals.dm b/code/modules/hydroponics/grown/cereals.dm index c5a7e0797a..c53cd6718a 100644 --- a/code/modules/hydroponics/grown/cereals.dm +++ b/code/modules/hydroponics/grown/cereals.dm @@ -11,7 +11,7 @@ potency = 15 icon_dead = "wheat-dead" mutatelist = list(/obj/item/seeds/wheat/oat, /obj/item/seeds/wheat/meat) - reagents_add = list(/datum/reagent/consumable/nutriment = 0.04) + reagents_add = list("nutriment" = 0.04) /obj/item/reagent_containers/food/snacks/grown/wheat seed = /obj/item/seeds/wheat @@ -22,9 +22,9 @@ filling_color = "#F0E68C" bitesize_mod = 2 foodtype = GRAIN - grind_results = list(/datum/reagent/consumable/flour = 0) + grind_results = list("flour" = 0) tastes = list("wheat" = 1) - distill_reagent = /datum/reagent/consumable/ethanol/beer + distill_reagent = "beer" // Oat /obj/item/seeds/wheat/oat @@ -45,9 +45,9 @@ filling_color = "#556B2F" bitesize_mod = 2 foodtype = GRAIN - grind_results = list(/datum/reagent/consumable/flour = 0) + grind_results = list("flour" = 0) tastes = list("oat" = 1) - distill_reagent = /datum/reagent/consumable/ethanol/ale + distill_reagent = "ale" // Rice /obj/item/seeds/wheat/rice @@ -69,9 +69,9 @@ filling_color = "#FAFAD2" bitesize_mod = 2 foodtype = GRAIN - grind_results = list(/datum/reagent/consumable/rice = 0) + grind_results = list("rice" = 0) tastes = list("rice" = 1) - distill_reagent = /datum/reagent/consumable/ethanol/sake + distill_reagent = "sake" //Meatwheat - grows into synthetic meat /obj/item/seeds/wheat/meat @@ -92,7 +92,7 @@ bitesize_mod = 2 seed = /obj/item/seeds/wheat/meat foodtype = MEAT | GRAIN - grind_results = list(/datum/reagent/consumable/flour = 0, /datum/reagent/blood = 0) + grind_results = list("flour" = 0, "blood" = 0) tastes = list("meatwheat" = 1) can_distill = FALSE diff --git a/code/modules/hydroponics/grown/chili.dm b/code/modules/hydroponics/grown/chili.dm index 0522b5fd45..6325daacdc 100644 --- a/code/modules/hydroponics/grown/chili.dm +++ b/code/modules/hydroponics/grown/chili.dm @@ -16,7 +16,7 @@ icon_dead = "chili-dead" // Same for the dead icon genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/chili/ice, /obj/item/seeds/chili/ghost) - reagents_add = list(/datum/reagent/consumable/capsaicin = 0.25, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.04) + reagents_add = list("capsaicin" = 0.25, "vitamin" = 0.04, "nutriment" = 0.04) /obj/item/reagent_containers/food/snacks/grown/chili seed = /obj/item/seeds/chili @@ -41,7 +41,7 @@ production = 4 rarity = 20 mutatelist = list() - reagents_add = list(/datum/reagent/consumable/frostoil = 0.25, /datum/reagent/consumable/nutriment/vitamin = 0.02, /datum/reagent/consumable/nutriment = 0.02) + reagents_add = list("frostoil" = 0.25, "vitamin" = 0.02, "nutriment" = 0.02) /obj/item/reagent_containers/food/snacks/grown/icepepper seed = /obj/item/seeds/chili/ice @@ -67,7 +67,7 @@ yield = 3 rarity = 20 mutatelist = list() - reagents_add = list(/datum/reagent/consumable/condensedcapsaicin = 0.3, /datum/reagent/consumable/capsaicin = 0.55, /datum/reagent/consumable/nutriment = 0.04) + reagents_add = list("condensedcapsaicin" = 0.3, "capsaicin" = 0.55, "nutriment" = 0.04) /obj/item/reagent_containers/food/snacks/grown/ghost_chili seed = /obj/item/seeds/chili/ghost diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm index 851753da46..66d03c777c 100644 --- a/code/modules/hydroponics/grown/citrus.dm +++ b/code/modules/hydroponics/grown/citrus.dm @@ -23,7 +23,7 @@ growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/orange) - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05) + reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05) /obj/item/reagent_containers/food/snacks/grown/citrus/lime seed = /obj/item/seeds/lime @@ -31,7 +31,7 @@ desc = "It's so sour, your face will twist." icon_state = "lime" filling_color = "#00FF00" - juice_results = list(/datum/reagent/consumable/limejuice = 0) + juice_results = list("limejuice" = 0) // Electric Lime /obj/item/seeds/lime/electric @@ -70,7 +70,7 @@ icon_dead = "lime-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/lime, /obj/item/seeds/orange_3d) - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05) + reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05) /obj/item/reagent_containers/food/snacks/grown/citrus/orange seed = /obj/item/seeds/orange @@ -78,8 +78,8 @@ desc = "It's a tangy fruit." icon_state = "orange" filling_color = "#FFA500" - juice_results = list(/datum/reagent/consumable/orangejuice = 0) - distill_reagent = /datum/reagent/consumable/ethanol/triple_sec + juice_results = list("orangejuice" = 0) + distill_reagent = "triple_sec" //3D Orange @@ -98,7 +98,7 @@ icon_grow = "lime-grow" icon_dead = "lime-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05, /datum/reagent/medicine/haloperidol = 0.15) + reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05, "haloperidol" = 0.15) /obj/item/reagent_containers/food/snacks/grown/citrus/orange_3d seed = /obj/item/seeds/orange_3d @@ -106,8 +106,8 @@ desc = "You can hardly wrap your head around this thing." icon_state = "orang" filling_color = "#FFA500" - juice_results = list(/datum/reagent/consumable/orangejuice = 0) - distill_reagent = /datum/reagent/consumable/ethanol/triple_sec + juice_results = list("orangejuice" = 0) + distill_reagent = "triple_sec" tastes = list("polygons" = 1, "oranges" = 1) /obj/item/reagent_containers/food/snacks/grown/citrus/orange_3d/pickup(mob/user) @@ -134,7 +134,7 @@ icon_dead = "lime-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/firelemon) - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05) + reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05) /obj/item/reagent_containers/food/snacks/grown/citrus/lemon seed = /obj/item/seeds/lemon @@ -142,7 +142,7 @@ desc = "When life gives you lemons, make lemonade." icon_state = "lemon" filling_color = "#FFD700" - juice_results = list(/datum/reagent/consumable/lemonjuice = 0) + juice_results = list("lemonjuice" = 0) // Combustible lemon /obj/item/seeds/firelemon //combustible lemon is too long so firelemon @@ -159,7 +159,7 @@ lifespan = 55 endurance = 45 yield = 4 - reagents_add = list(/datum/reagent/consumable/nutriment = 0.05) + reagents_add = list("nutriment" = 0.05) /obj/item/reagent_containers/food/snacks/grown/firelemon seed = /obj/item/seeds/firelemon diff --git a/code/modules/hydroponics/grown/cocoa_vanilla.dm b/code/modules/hydroponics/grown/cocoa_vanilla.dm index 9ac705aa83..44373515c6 100644 --- a/code/modules/hydroponics/grown/cocoa_vanilla.dm +++ b/code/modules/hydroponics/grown/cocoa_vanilla.dm @@ -16,7 +16,7 @@ icon_dead = "cocoapod-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/cocoapod/vanillapod, /obj/item/seeds/cocoapod/bungotree) - reagents_add = list(/datum/reagent/consumable/coco = 0.25, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("cocoa" = 0.25, "nutriment" = 0.1) /obj/item/reagent_containers/food/snacks/grown/cocoapod seed = /obj/item/seeds/cocoapod @@ -27,7 +27,7 @@ bitesize_mod = 2 foodtype = FRUIT tastes = list("cocoa" = 1) - distill_reagent = /datum/reagent/consumable/ethanol/creme_de_cacao + distill_reagent = "creme_de_cacao" // Vanilla Pod /obj/item/seeds/cocoapod/vanillapod @@ -39,7 +39,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/vanillapod genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list() - reagents_add = list(/datum/reagent/consumable/vanilla = 0.25, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("vanilla" = 0.25, "nutriment" = 0.1) /obj/item/reagent_containers/food/snacks/grown/vanillapod seed = /obj/item/seeds/cocoapod/vanillapod @@ -49,7 +49,7 @@ filling_color = "#FFD700" foodtype = FRUIT tastes = list("vanilla" = 1) - distill_reagent = /datum/reagent/consumable/vanilla //Takes longer, but you can get even more vanilla from it. + distill_reagent = "vanilla" //Takes longer, but you can get even more vanilla from it. /obj/item/seeds/cocoapod/bungotree name = "pack of bungo tree seeds" @@ -64,7 +64,7 @@ production = 7 genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list() - reagents_add = list(/datum/reagent/consumable/enzyme = 0.1, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("enzyme" = 0.1, "nutriment" = 0.1) growthstages = 4 growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' icon_grow = "bungotree-grow" @@ -79,7 +79,6 @@ trash = /obj/item/reagent_containers/food/snacks/grown/bungopit filling_color = "#E8C22F" foodtype = FRUIT - juice_results = list(/datum/reagent/consumable/bungojuice = 0) tastes = list("bungo" = 2, "tropical fruitiness" = 1) distill_reagent = null @@ -98,7 +97,7 @@ /obj/item/reagent_containers/food/snacks/grown/bungopit/Initialize() . =..() reagents.clear_reagents() - reagents.add_reagent(/datum/reagent/toxin/bungotoxin, seed.potency * 0.10) //More than this will kill at too low potency - reagents.add_reagent(/datum/reagent/consumable/nutriment, seed.potency * 0.04) + reagents.add_reagent("bungotoxin", seed.potency * 0.10) //More than this will kill at too low potency + reagents.add_reagent("nutriment", seed.potency * 0.04) diff --git a/code/modules/hydroponics/grown/corn.dm b/code/modules/hydroponics/grown/corn.dm index 6c852c426d..0e5b5272ed 100644 --- a/code/modules/hydroponics/grown/corn.dm +++ b/code/modules/hydroponics/grown/corn.dm @@ -13,7 +13,7 @@ icon_grow = "corn-grow" // Uses one growth icons set for all the subtypes icon_dead = "corn-dead" // Same for the dead icon mutatelist = list(/obj/item/seeds/corn/snapcorn) - reagents_add = list(/datum/reagent/consumable/cornoil = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("cornoil" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) /obj/item/reagent_containers/food/snacks/grown/corn seed = /obj/item/seeds/corn @@ -25,9 +25,9 @@ trash = /obj/item/grown/corncob bitesize_mod = 2 foodtype = VEGETABLES - juice_results = list(/datum/reagent/consumable/corn_starch = 0) + juice_results = list("corn_starch" = 0) tastes = list("corn" = 1) - distill_reagent = /datum/reagent/consumable/ethanol/whiskey + distill_reagent = "whiskey" /obj/item/grown/corncob name = "corn cob" diff --git a/code/modules/hydroponics/grown/eggplant.dm b/code/modules/hydroponics/grown/eggplant.dm index f893ad9e57..7c01a68f0a 100644 --- a/code/modules/hydroponics/grown/eggplant.dm +++ b/code/modules/hydroponics/grown/eggplant.dm @@ -13,7 +13,7 @@ icon_dead = "eggplant-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/eggplant/eggy) - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) /obj/item/reagent_containers/food/snacks/grown/eggplant seed = /obj/item/seeds/eggplant @@ -36,7 +36,7 @@ lifespan = 75 production = 12 mutatelist = list() - reagents_add = list(/datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("nutriment" = 0.1) /obj/item/reagent_containers/food/snacks/grown/shell/eggy seed = /obj/item/seeds/eggplant/eggy @@ -47,4 +47,4 @@ filling_color = "#F8F8FF" bitesize_mod = 2 foodtype = MEAT - distill_reagent = /datum/reagent/consumable/ethanol/eggnog + distill_reagent = "eggnog" diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm index 8cdf403b00..beecb258a7 100644 --- a/code/modules/hydroponics/grown/flowers.dm +++ b/code/modules/hydroponics/grown/flowers.dm @@ -15,7 +15,7 @@ icon_grow = "poppy-grow" icon_dead = "poppy-dead" mutatelist = list(/obj/item/seeds/poppy/geranium, /obj/item/seeds/poppy/lily) - reagents_add = list(/datum/reagent/medicine/bicaridine = 0.2, /datum/reagent/consumable/nutriment = 0.05) + reagents_add = list("bicaridine" = 0.2, "nutriment" = 0.05) /obj/item/reagent_containers/food/snacks/grown/poppy seed = /obj/item/seeds/poppy @@ -27,7 +27,7 @@ bitesize_mod = 3 tastes = list("sesame seeds" = 1) foodtype = VEGETABLES | GROSS - distill_reagent = /datum/reagent/consumable/ethanol/vermouth + distill_reagent = "vermouth" // Lily /obj/item/seeds/poppy/lily @@ -68,7 +68,7 @@ icon_dead = "spacemanstrumpet-dead" mutatelist = list() genes = list(/datum/plant_gene/reagent/polypyr) - reagents_add = list(/datum/reagent/consumable/nutriment = 0.05) + reagents_add = list("nutriment" = 0.05) rarity = 30 /obj/item/seeds/poppy/lily/trumpet/Initialize() @@ -119,7 +119,7 @@ growthstages = 4 genes = list(/datum/plant_gene/trait/plant_type/weed_hardy) growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' - reagents_add = list(/datum/reagent/consumable/nutriment = 0.04) + reagents_add = list("nutriment" = 0.04) /obj/item/reagent_containers/food/snacks/grown/harebell seed = /obj/item/seeds/harebell @@ -130,7 +130,7 @@ slot_flags = ITEM_SLOT_HEAD filling_color = "#E6E6FA" bitesize_mod = 3 - distill_reagent = /datum/reagent/consumable/ethanol/vermouth + distill_reagent = "vermouth" // Sunflower /obj/item/seeds/sunflower @@ -148,7 +148,7 @@ icon_grow = "sunflower-grow" icon_dead = "sunflower-dead" mutatelist = list(/obj/item/seeds/sunflower/moonflower, /obj/item/seeds/sunflower/novaflower) - reagents_add = list(/datum/reagent/consumable/cooking_oil = 0.08, /datum/reagent/consumable/nutriment = 0.04) + reagents_add = list("cornoil" = 0.08, "nutriment" = 0.04) /obj/item/grown/sunflower // FLOWER POWER! seed = /obj/item/seeds/sunflower @@ -184,7 +184,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/moonflower genes = list(/datum/plant_gene/trait/glow/purple) mutatelist = list() - reagents_add = list(/datum/reagent/consumable/ethanol/moonshine = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.02, /datum/reagent/consumable/nutriment = 0.02) + reagents_add = list("moonshine" = 0.2, "vitamin" = 0.02, "nutriment" = 0.02) rarity = 15 /obj/item/reagent_containers/food/snacks/grown/moonflower @@ -195,7 +195,7 @@ slot_flags = ITEM_SLOT_HEAD filling_color = "#E6E6FA" bitesize_mod = 2 - distill_reagent = /datum/reagent/consumable/ethanol/absinthe //It's made from flowers. + distill_reagent = "absinthe" //It's made from flowers. tastes = list("glowbugs" = 1) // Novaflower @@ -209,7 +209,7 @@ icon_dead = "sunflower-dead" product = /obj/item/grown/novaflower mutatelist = list() - reagents_add = list(/datum/reagent/consumable/condensedcapsaicin = 0.25, /datum/reagent/consumable/capsaicin = 0.3, /datum/reagent/consumable/nutriment = 0) + reagents_add = list("condensedcapsaicin" = 0.25, "capsaicin" = 0.3, "nutriment" = 0) rarity = 20 /obj/item/grown/novaflower @@ -227,7 +227,7 @@ throw_speed = 1 throw_range = 3 attack_verb = list("roasted", "scorched", "burned") - grind_results = list(/datum/reagent/consumable/capsaicin = 0, /datum/reagent/consumable/condensedcapsaicin = 0) + grind_results = list("capsaicin" = 0, "condensedcapsaicin" = 0) tastes = list("cooked sunflower" = 1) /obj/item/grown/novaflower/add_juice() @@ -277,7 +277,7 @@ icon_grow = "bee_balm-grow" icon_dead = "bee_balm-dead" mutatelist = list(/obj/item/seeds/poppy/geranium, /obj/item/seeds/bee_balm/honey) //Lower odds of becoming honey - reagents_add = list(/datum/reagent/medicine/spaceacillin = 0.1, /datum/reagent/space_cleaner/sterilizine = 0.05) + reagents_add = list("spaceacillin" = 0.1, "sterilizine" = 0.05) /obj/item/reagent_containers/food/snacks/grown/bee_balm seed = /obj/item/seeds/bee_balm @@ -305,7 +305,7 @@ growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' icon_grow = "bee_balmalt-grow" icon_dead = "bee_balmalt-dead" - reagents_add = list(/datum/reagent/consumable/honey = 0.1, /datum/reagent/lye = 0.3) //To make wax + reagents_add = list("honey" = 0.1, "lye" = 0.3) //To make wax rarity = 30 /obj/item/reagent_containers/food/snacks/grown/bee_balm/honey @@ -316,4 +316,4 @@ filling_color = "#FF6347" bitesize_mod = 8 tastes = list("wax" = 1) - foodtype = SUGAR + foodtype = SUGAR \ No newline at end of file diff --git a/code/modules/hydroponics/grown/grass_carpet.dm b/code/modules/hydroponics/grown/grass_carpet.dm index 3b5159465c..8fc141e152 100644 --- a/code/modules/hydroponics/grown/grass_carpet.dm +++ b/code/modules/hydroponics/grown/grass_carpet.dm @@ -16,7 +16,7 @@ icon_dead = "grass-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/grass/carpet, /obj/item/seeds/grass/fairy) - reagents_add = list(/datum/reagent/consumable/nutriment = 0.02, /datum/reagent/hydrogen = 0.05) + reagents_add = list("nutriment" = 0.02, "hydrogen" = 0.05) /obj/item/reagent_containers/food/snacks/grown/grass seed = /obj/item/seeds/grass @@ -27,7 +27,7 @@ bitesize_mod = 2 var/stacktype = /obj/item/stack/tile/grass var/tile_coefficient = 0.02 // 1/50 - distill_reagent = /datum/reagent/consumable/ethanol/beer/light + wine_power = 15 /obj/item/reagent_containers/food/snacks/grown/grass/attack_self(mob/user) to_chat(user, "You prepare the astroturf.") @@ -51,7 +51,7 @@ icon_grow = "fairygrass-grow" icon_dead = "fairygrass-dead" genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/blue) - reagents_add = list(/datum/reagent/consumable/nutriment = 0.02, /datum/reagent/hydrogen = 0.05, /datum/reagent/drug/space_drugs = 0.15) + reagents_add = list("nutriment" = 0.02, "hydrogen" = 0.05, "space_drugs" = 0.15) /obj/item/reagent_containers/food/snacks/grown/grass/fairy seed = /obj/item/seeds/grass/fairy @@ -66,9 +66,9 @@ for(var/datum/plant_gene/trait/glow/gene in seed.genes) G = gene break - + stacktype = initial(stacktype) - + if(G) switch(G.type) if(/datum/plant_gene/trait/glow/white) @@ -85,10 +85,10 @@ stacktype = /obj/item/stack/tile/fairygrass/purple if(/datum/plant_gene/trait/glow/pink) stacktype = /obj/item/stack/tile/fairygrass/pink - + . = ..() - + // Carpet diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm index 5f1fdcdaa9..6ceb69536d 100644 --- a/code/modules/hydroponics/grown/kudzu.dm +++ b/code/modules/hydroponics/grown/kudzu.dm @@ -14,7 +14,7 @@ growthstages = 4 rarity = 30 var/list/mutations = list() - reagents_add = list(/datum/reagent/medicine/charcoal = 0.04, /datum/reagent/consumable/nutriment = 0.02) + reagents_add = list("charcoal" = 0.04, "nutriment" = 0.02) /obj/item/seeds/kudzu/Copy() var/obj/item/seeds/kudzu/S = ..() @@ -58,7 +58,7 @@ /obj/item/seeds/kudzu/on_chem_reaction(datum/reagents/S) var/list/temp_mut_list = list() - if(S.has_reagent(/datum/reagent/space_cleaner/sterilizine, 5)) + if(S.has_reagent("sterilizine", 5)) for(var/datum/spacevine_mutation/SM in mutations) if(SM.quality == NEGATIVE) temp_mut_list += SM @@ -66,7 +66,7 @@ mutations.Remove(pick(temp_mut_list)) temp_mut_list.Cut() - if(S.has_reagent(/datum/reagent/fuel, 5)) + if(S.has_reagent("welding_fuel", 5)) for(var/datum/spacevine_mutation/SM in mutations) if(SM.quality == POSITIVE) temp_mut_list += SM @@ -74,7 +74,7 @@ mutations.Remove(pick(temp_mut_list)) temp_mut_list.Cut() - if(S.has_reagent(/datum/reagent/phenol, 5)) + if(S.has_reagent("phenol", 5)) for(var/datum/spacevine_mutation/SM in mutations) if(SM.quality == MINOR_NEGATIVE) temp_mut_list += SM @@ -82,16 +82,16 @@ mutations.Remove(pick(temp_mut_list)) temp_mut_list.Cut() - if(S.has_reagent(/datum/reagent/blood, 15)) + if(S.has_reagent("blood", 15)) adjust_production(rand(15, -5)) - if(S.has_reagent(/datum/reagent/toxin/amatoxin, 5)) + if(S.has_reagent("amatoxin", 5)) adjust_production(rand(5, -15)) - if(S.has_reagent(/datum/reagent/toxin/plasma, 5)) + if(S.has_reagent("plasma", 5)) adjust_potency(rand(5, -15)) - if(S.has_reagent(/datum/reagent/water/holywater, 10)) + if(S.has_reagent("holywater", 10)) adjust_potency(rand(15, -5)) diff --git a/code/modules/hydroponics/grown/melon.dm b/code/modules/hydroponics/grown/melon.dm index 940508f66b..e85a36f4b6 100644 --- a/code/modules/hydroponics/grown/melon.dm +++ b/code/modules/hydroponics/grown/melon.dm @@ -12,7 +12,7 @@ icon_dead = "watermelon-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/watermelon/holy) - reagents_add = list(/datum/reagent/water = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.2) + reagents_add = list("water" = 0.2, "vitamin" = 0.04, "nutriment" = 0.2) /obj/item/seeds/watermelon/suicide_act(mob/user) user.visible_message("[user] is swallowing [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -33,7 +33,7 @@ filling_color = "#008000" bitesize_mod = 3 foodtype = FRUIT - juice_results = list(/datum/reagent/consumable/watermelonjuice = 0) + juice_results = list("watermelonjuice" = 0) wine_power = 40 // Holymelon @@ -46,7 +46,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/holymelon genes = list(/datum/plant_gene/trait/glow/yellow) mutatelist = list() - reagents_add = list(/datum/reagent/water/holywater = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("holywater" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/holymelon diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm index e0a2453353..b37e494233 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -12,7 +12,7 @@ yield = 6 potency = 10 growthstages = 3 - grind_results = list(/datum/reagent/mustardgrind = 1) + grind_results = list("mustardgrind" = 1) growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' genes = list(/datum/plant_gene/trait/plant_type/weed_hardy) mutatelist = list(/obj/item/seeds/starthistle/corpse_flower, /obj/item/seeds/galaxythistle) @@ -80,7 +80,7 @@ growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' genes = list(/datum/plant_gene/trait/plant_type/weed_hardy, /datum/plant_gene/trait/invasive) mutatelist = list() - reagents_add = list(/datum/reagent/consumable/nutriment = 0.05, /datum/reagent/medicine/silibinin = 0.1) + reagents_add = list("nutriment" = 0.05, "silibinin" = 0.1) /obj/item/seeds/galaxythistle/Initialize() ..() @@ -116,7 +116,7 @@ growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/replicapod) - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) /obj/item/reagent_containers/food/snacks/grown/cabbage seed = /obj/item/seeds/cabbage @@ -142,7 +142,7 @@ maturation = 3 yield = 4 growthstages = 2 - reagents_add = list(/datum/reagent/consumable/sugar = 0.25) + reagents_add = list("sugar" = 0.25) mutatelist = list(/obj/item/seeds/bamboo) /obj/item/reagent_containers/food/snacks/grown/sugarcane @@ -153,7 +153,7 @@ filling_color = "#FFD700" bitesize_mod = 2 foodtype = VEGETABLES | SUGAR - distill_reagent = /datum/reagent/consumable/ethanol/rum + distill_reagent = "rum" // Gatfruit /obj/item/seeds/gatfruit @@ -173,7 +173,7 @@ growthstages = 2 rarity = 60 // Obtainable only with xenobio+superluck. growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' - reagents_add = list(/datum/reagent/sulfur = 0.1, /datum/reagent/carbon = 0.1, /datum/reagent/nitrogen = 0.07, /datum/reagent/potassium = 0.05) + reagents_add = list("sulfur" = 0.1, "carbon" = 0.1, "nitrogen" = 0.07, "potassium" = 0.05) /obj/item/reagent_containers/food/snacks/grown/shell/gatfruit seed = /obj/item/seeds/gatfruit @@ -195,7 +195,7 @@ plantname = "Cherry Bomb Tree" product = /obj/item/reagent_containers/food/snacks/grown/cherry_bomb mutatelist = list() - reagents_add = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/sugar = 0.1, /datum/reagent/blackpowder = 0.7) + reagents_add = list("nutriment" = 0.1, "sugar" = 0.1, "blackpowder" = 0.7) rarity = 60 //See above /obj/item/reagent_containers/food/snacks/grown/cherry_bomb @@ -232,7 +232,7 @@ /obj/item/reagent_containers/food/snacks/grown/cherry_bomb/proc/detonate() reagents.chem_temp = 1000 //Sets off the black powder reagents.handle_reactions() - + // Lavaland cactus /obj/item/seeds/lavaland/cactus @@ -244,279 +244,3 @@ product = /obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' growthstages = 2 - - -// Coconut -/obj/item/seeds/coconut - name = "pack of coconut seeds" - desc = "They're seeds that grow into coconut palm trees." - icon_state = "seed-coconut" - species = "coconut" - plantname = "Coconut Palm Tree" - product = /obj/item/reagent_containers/food/snacks/grown/coconut - lifespan = 50 - endurance = 30 - potency = 35 - growing_icon = 'icons/obj/hydroponics/growing.dmi' - icon_dead = "coconut-dead" - genes = list(/datum/plant_gene/trait/repeated_harvest) - forbiddengenes = list(/datum/plant_gene/trait/squash, /datum/plant_gene/trait/stinging) - reagents_add = list(/datum/reagent/consumable/coconutmilk = 0.3) - -/obj/item/reagent_containers/food/snacks/grown/coconut - seed = /obj/item/seeds/coconut - name = "coconut" - desc = "Hard shell of a nut containing delicious milk inside. Perhaps try using something sharp?" - icon_state = "coconut" - item_state = "coconut" - possible_transfer_amounts = list(5, 10, 15, 20, 25, 30, 50) - spillable = FALSE - resistance_flags = ACID_PROOF - volume = 150 //so it won't cut reagents despite having the capacity for them - w_class = WEIGHT_CLASS_SMALL - force = 5 - throwforce = 5 - hitsound = 'sound/weapons/klonk.ogg' - attack_verb = list("klonked", "donked", "bonked") - var/opened = FALSE - var/carved = FALSE - var/chopped = FALSE - var/straw = FALSE - var/fused = FALSE - var/fusedactive = FALSE - var/defused = FALSE - -/obj/item/reagent_containers/food/snacks/grown/coconut/Initialize(mapload, obj/item/seeds/new_seed) - . = ..() - var/newvolume = 50 + round(seed.potency,10) - if (seed.get_gene(/datum/plant_gene/trait/maxchem)) - newvolume = newvolume + 50 - volume = newvolume - reagents.maximum_volume = newvolume - reagents.update_total() - - transform *= TRANSFORM_USING_VARIABLE(40, 100) + 0.5 //temporary fix for size? - -/obj/item/reagent_containers/food/snacks/grown/coconut/attack_self(mob/user) - if (!opened) - return - - if(!possible_transfer_amounts.len) - return - var/i=0 - for(var/A in possible_transfer_amounts) - i++ - if(A != amount_per_transfer_from_this) - continue - if(i[src]'s transfer amount is now [amount_per_transfer_from_this] units.") - return - -/obj/item/reagent_containers/food/snacks/grown/coconut/attackby(obj/item/W, mob/user, params) - //DEFUSING NADE LOGIC - if (W.tool_behaviour == TOOL_WIRECUTTER && fused) - user.show_message("You cut the fuse!", MSG_VISUAL) - playsound(user, W.hitsound, 50, 1, -1) - icon_state = "coconut_carved" - desc = "A coconut. This one's got a hole in it." - name = "coconut" - defused = TRUE - fused = FALSE - fusedactive = FALSE - if(!seed.get_gene(/datum/plant_gene/trait/glow)) - set_light(0, 0.0) - return - //IGNITING NADE LOGIC - if(!fusedactive && fused) - var/lighting_text = W.ignition_effect(src, user) - if(lighting_text) - user.visible_message("[user] ignites [src]'s fuse!", "You ignite the [src]'s fuse!") - fusedactive = TRUE - defused = FALSE - playsound(src, 'sound/effects/fuse.ogg', 100, 0) - message_admins("[ADMIN_LOOKUPFLW(user)] ignited a coconut bomb for detonation at [ADMIN_VERBOSEJMP(user)] [pretty_string_from_reagent_list(reagents.reagent_list)]") - log_game("[key_name(user)] primed a coconut grenade for detonation at [AREACOORD(user)].") - addtimer(CALLBACK(src, .proc/prime), 5 SECONDS) - icon_state = "coconut_grenade_active" - desc = "RUN!" - if(!seed.get_gene(/datum/plant_gene/trait/glow)) - light_color = "#FFCC66" //for the fuse - set_light(3, 0.8) - return - - //ADDING A FUSE, NADE LOGIC - if (istype(W,/obj/item/stack/sheet/cloth) || istype(W,/obj/item/stack/sheet/durathread)) - if (carved && !straw && !fused) - user.show_message("You add a fuse to the coconut!", 1) - W.use(1) - fused = TRUE - icon_state = "coconut_grenade" - desc = "A makeshift bomb made out of a coconut. You estimate the fuse is long enough for 5 seconds." - name = "coconut bomb" - return - //ADDING STRAW LOGIC - if (istype(W,/obj/item/stack/sheet/mineral/bamboo) && opened && !straw && fused) - user.show_message("You add a bamboo straw to the coconut!", 1) - straw = TRUE - W.use(1) - icon_state += "_straw" - desc = "You can already feel like you're on a tropical vacation." - return - //OPENING THE NUT LOGIC - if (!carved && !chopped) - var/screwdrivered = W.tool_behaviour == TOOL_SCREWDRIVER - if(screwdrivered || W.sharpness) - user.show_message("You [screwdrivered ? "make a hole in the coconut" : "slice the coconut open"]!", 1) - carved = TRUE - opened = TRUE - spillable = !screwdrivered - reagent_flags = OPENCONTAINER - ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER) - icon_state = screwdrivered ? "coconut_carved" : "coconut_chopped" - desc = "A coconut. [screwdrivered ? "This one's got a hole in it" : "This one's sliced open, with all its delicious contents for your eyes to savour"]." - playsound(user, W.hitsound, 50, 1, -1) - return - return ..() - -/obj/item/reagent_containers/food/snacks/grown/coconut/attack(mob/living/M, mob/user, obj/target) - if(M && user.a_intent == INTENT_HARM && !spillable) - var/obj/item/bodypart/affecting = user.zone_selected //Find what the player is aiming at - if (affecting == BODY_ZONE_HEAD && prob(15)) - //smash the nut open - var/armor_block = min(90, M.run_armor_check(affecting, "melee", null, null,armour_penetration)) // For normal attack damage - M.apply_damage(force, BRUTE, affecting, armor_block) - - //Sound - playsound(user, hitsound, 100, 1, -1) - - //Attack logs - log_combat(user, M, "attacked", src) - - //Display an attack message. - if(M != user) - M.visible_message("[user] has cracked open a [name] on [M]'s head!", \ - "[user] has cracked open a [name] on [M]'s head!") - else - user.visible_message("[M] cracks open a [name] on their [M.p_them()] head!", \ - "[M] cracks open a [name] on [M.p_their()] head!") - - //The coconut breaks open so splash its reagents - spillable = TRUE - SplashReagents(M) - - //Lastly we remove the nut - qdel(src) - else - . = ..() - return - - if(fusedactive) - return - - if(!opened) - return - - if(!canconsume(M, user)) - return - - if(!reagents || !reagents.total_volume) - to_chat(user, "[src] is empty!") - return - - if(user.a_intent == INTENT_HARM && spillable) - var/R - M.visible_message("[user] splashes the contents of [src] onto [M]!", \ - "[user] splashes the contents of [src] onto [M]!") - if(reagents) - for(var/datum/reagent/A in reagents.reagent_list) - R += A.type + " (" - R += num2text(A.volume) + ")," - if(isturf(target) && reagents.reagent_list.len && thrownby) - log_combat(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]") - message_admins("[ADMIN_LOOKUPFLW(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] at [ADMIN_VERBOSEJMP(target)].") - reagents.reaction(M, TOUCH) - log_combat(user, M, "splashed", R) - reagents.clear_reagents() - else - if(M != user) - M.visible_message("[user] attempts to feed something to [M].", \ - "[user] attempts to feed something to you.") - if(!do_mob(user, M)) - return - if(!reagents || !reagents.total_volume) - return // The drink might be empty after the delay, such as by spam-feeding - M.visible_message("[user] feeds something to [M].", "[user] feeds something to you.") - log_combat(user, M, "fed", reagents.log_list()) - else - to_chat(user, "You swallow a gulp of [src].") - var/fraction = min(5/reagents.total_volume, 1) - reagents.reaction(M, INGEST, fraction) - addtimer(CALLBACK(reagents, /datum/reagents.proc/trans_to, M, 5), 5) - playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) - -/obj/item/reagent_containers/food/snacks/grown/coconut/afterattack(obj/target, mob/user, proximity) - . = ..() - if(fusedactive) - return - - if((!proximity) || !check_allowed_items(target,target_self=1)) - return - - if(target.is_refillable()) //Something like a glass. Player probably wants to transfer TO it. - if(!reagents.total_volume) - to_chat(user, "[src] is empty!") - return - - if(target.reagents.holder_full()) - to_chat(user, "[target] is full.") - return - - var/trans = reagents.trans_to(target, amount_per_transfer_from_this) - to_chat(user, "You transfer [trans] unit\s of the solution to [target].") - - else if(target.is_drainable()) //A dispenser. Transfer FROM it TO us. - if(!target.reagents.total_volume) - to_chat(user, "[target] is empty and can't be refilled!") - return - - if(reagents.holder_full()) - to_chat(user, "[src] is full.") - return - - var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) - to_chat(user, "You fill [src] with [trans] unit\s of the contents of [target].") - - else if(reagents.total_volume) - if(user.a_intent == INTENT_HARM && spillable == TRUE) - user.visible_message("[user] splashes the contents of [src] onto [target]!", \ - "You splash the contents of [src] onto [target].") - reagents.reaction(target, TOUCH) - reagents.clear_reagents() - -/obj/item/reagent_containers/food/snacks/grown/coconut/dropped(mob/user) - . = ..() - transform *= TRANSFORM_USING_VARIABLE(40, 100) + 0.5 //temporary fix for size? - -/obj/item/reagent_containers/food/snacks/grown/coconut/proc/prime() - if (defused) - return - var/turf/T = get_turf(src) - reagents.chem_temp = 1000 - //Disable seperated contents when the grenade primes - if (seed.get_gene(/datum/plant_gene/trait/noreact)) - DISABLE_BITFIELD(reagents.reagents_holder_flags, NO_REACT) - reagents.handle_reactions() - log_game("Coconut bomb detonation at [AREACOORD(T)], location [loc]") - qdel(src) - -/obj/item/reagent_containers/food/snacks/grown/coconut/ex_act(severity) - qdel(src) - -/obj/item/reagent_containers/food/snacks/grown/coconut/deconstruct(disassembled = TRUE) - if(!disassembled && fused) - prime() - if(!QDELETED(src)) - qdel(src) diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm index 7e43911c5c..c8e97c78de 100644 --- a/code/modules/hydroponics/grown/mushrooms.dm +++ b/code/modules/hydroponics/grown/mushrooms.dm @@ -21,7 +21,7 @@ growthstages = 4 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' - reagents_add = list(/datum/reagent/medicine/morphine = 0.35, /datum/reagent/medicine/charcoal = 0.35, /datum/reagent/consumable/nutriment = 0) + reagents_add = list("morphine" = 0.35, "charcoal" = 0.35, "nutriment" = 0) /obj/item/reagent_containers/food/snacks/grown/mushroom/reishi seed = /obj/item/seeds/reishi @@ -47,7 +47,7 @@ genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' mutatelist = list(/obj/item/seeds/angel) - reagents_add = list(/datum/reagent/drug/mushroomhallucinogen = 0.04, /datum/reagent/toxin/amatoxin = 0.35, /datum/reagent/consumable/nutriment = 0, /datum/reagent/growthserum = 0.1) + reagents_add = list("mushroomhallucinogen" = 0.04, "amatoxin" = 0.35, "nutriment" = 0, "growthserum" = 0.1) /obj/item/reagent_containers/food/snacks/grown/mushroom/amanita seed = /obj/item/seeds/amanita @@ -73,7 +73,7 @@ growthstages = 3 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' - reagents_add = list(/datum/reagent/drug/mushroomhallucinogen = 0.04, /datum/reagent/toxin/amatoxin = 0.1, /datum/reagent/consumable/nutriment = 0, /datum/reagent/toxin/amanitin = 0.2) + reagents_add = list("mushroomhallucinogen" = 0.04, "amatoxin" = 0.1, "nutriment" = 0, "amanitin" = 0.2) rarity = 30 /obj/item/reagent_containers/food/snacks/grown/mushroom/angel @@ -99,7 +99,7 @@ growthstages = 3 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' - reagents_add = list(/datum/reagent/drug/mushroomhallucinogen = 0.25, /datum/reagent/consumable/nutriment = 0.02) + reagents_add = list("mushroomhallucinogen" = 0.25, "nutriment" = 0.02) /obj/item/reagent_containers/food/snacks/grown/mushroom/libertycap seed = /obj/item/seeds/liberty @@ -125,7 +125,7 @@ genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' mutatelist = list(/obj/item/seeds/plump/walkingmushroom) - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) /obj/item/reagent_containers/food/snacks/grown/mushroom/plumphelmet seed = /obj/item/seeds/plump @@ -133,7 +133,7 @@ desc = "Plumus Hellmus: Plump, soft and s-so inviting~" icon_state = "plumphelmet" filling_color = "#9370DB" - distill_reagent = /datum/reagent/consumable/ethanol/manly_dorf + distill_reagent = "manlydorf" // Walking Mushroom /obj/item/seeds/plump/walkingmushroom @@ -149,7 +149,7 @@ yield = 1 growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' mutatelist = list() - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.05, /datum/reagent/consumable/nutriment = 0.15) + reagents_add = list("vitamin" = 0.05, "nutriment" = 0.15) rarity = 30 /obj/item/reagent_containers/food/snacks/grown/mushroom/walkingmushroom @@ -190,7 +190,7 @@ growthstages = 3 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' - reagents_add = list(/datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("nutriment" = 0.1) mutatelist = list(/obj/item/seeds/chanterelle/jupitercup) /obj/item/reagent_containers/food/snacks/grown/mushroom/chanterelle @@ -215,7 +215,7 @@ growthstages = 2 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/reagent/liquidelectricity, /datum/plant_gene/trait/plant_type/carnivory) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' - reagents_add = list(/datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("nutriment" = 0.1) /obj/item/seeds/chanterelle/jupitercup/Initialize() ..() @@ -248,7 +248,7 @@ genes = list(/datum/plant_gene/trait/glow, /datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' mutatelist = list(/obj/item/seeds/glowshroom/glowcap, /obj/item/seeds/glowshroom/shadowshroom) - reagents_add = list(/datum/reagent/radium = 0.1, /datum/reagent/phosphorus = 0.1, /datum/reagent/consumable/nutriment = 0.04) + reagents_add = list("radium" = 0.1, "phosphorus" = 0.1, "nutriment" = 0.04) /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom seed = /obj/item/seeds/glowshroom @@ -293,7 +293,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap genes = list(/datum/plant_gene/trait/glow/red, /datum/plant_gene/trait/cell_charge, /datum/plant_gene/trait/plant_type/fungal_metabolism) mutatelist = list() - reagents_add = list(/datum/reagent/teslium = 0.1, /datum/reagent/consumable/nutriment = 0.04) + reagents_add = list("teslium" = 0.1, "nutriment" = 0.04) rarity = 30 /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap @@ -318,7 +318,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom genes = list(/datum/plant_gene/trait/glow/shadow, /datum/plant_gene/trait/plant_type/fungal_metabolism) mutatelist = list() - reagents_add = list(/datum/reagent/radium = 0.2, /datum/reagent/consumable/nutriment = 0.04) + reagents_add = list("radium" = 0.2, "nutriment" = 0.04) rarity = 30 /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom @@ -350,7 +350,7 @@ potency = 15 growthstages = 3 rarity = 20 - reagents_add = list(/datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("nutriment" = 0.1) resistance_flags = FIRE_PROOF /obj/item/seeds/lavaland/polypore diff --git a/code/modules/hydroponics/grown/nettle.dm b/code/modules/hydroponics/grown/nettle.dm index c3bd82c624..dbcce2830b 100644 --- a/code/modules/hydroponics/grown/nettle.dm +++ b/code/modules/hydroponics/grown/nettle.dm @@ -11,7 +11,7 @@ growthstages = 5 genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/plant_type/weed_hardy) mutatelist = list(/obj/item/seeds/nettle/death) - reagents_add = list(/datum/reagent/toxin/acid = 0.5) + reagents_add = list("sacid" = 0.5) /obj/item/seeds/nettle/death name = "pack of death-nettle seeds" @@ -25,7 +25,7 @@ yield = 2 genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/plant_type/weed_hardy, /datum/plant_gene/trait/stinging) mutatelist = list() - reagents_add = list(/datum/reagent/toxin/acid/fluacid = 0.5, /datum/reagent/toxin/acid = 0.5) + reagents_add = list("facid" = 0.5, "sacid" = 0.5) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/nettle // "snack" diff --git a/code/modules/hydroponics/grown/onion.dm b/code/modules/hydroponics/grown/onion.dm index 2ebaa6d5e2..9cb8d1a63c 100644 --- a/code/modules/hydroponics/grown/onion.dm +++ b/code/modules/hydroponics/grown/onion.dm @@ -13,7 +13,7 @@ growthstages = 3 weed_chance = 3 growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) mutatelist = list(/obj/item/seeds/onion/red) /obj/item/reagent_containers/food/snacks/grown/onion @@ -36,7 +36,7 @@ plantname = "Red Onion Sprouts" weed_chance = 1 product = /obj/item/reagent_containers/food/snacks/grown/onion/red - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/tearjuice = 0.05) + reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1, "tearjuice" = 0.05) /obj/item/reagent_containers/food/snacks/grown/onion/red seed = /obj/item/seeds/onion/red @@ -61,7 +61,7 @@ name = "onion slices" desc = "Rings, not for wearing." icon_state = "onionslice" - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list("nutriment" = 5, "vitamin" = 2) filling_color = "#C0C9A0" gender = PLURAL cooked_type = /obj/item/reagent_containers/food/snacks/onionrings @@ -71,4 +71,4 @@ desc = "They shine like exceptionally low quality amethyst." icon_state = "onionslice_red" filling_color = "#C29ACF" - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/tearjuice = 2.5) + list_reagents = list("nutriment" = 5, "vitamin" = 2, "tearjuice" = 2.5) diff --git a/code/modules/hydroponics/grown/peach.dm b/code/modules/hydroponics/grown/peach.dm index 1f48ab5512..6fbf933bd1 100644 --- a/code/modules/hydroponics/grown/peach.dm +++ b/code/modules/hydroponics/grown/peach.dm @@ -13,7 +13,7 @@ icon_grow = "peach-grow" icon_dead = "peach-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) /obj/item/reagent_containers/food/snacks/grown/peach seed = /obj/item/seeds/peach @@ -23,5 +23,5 @@ filling_color = "#FF4500" bitesize = 25 foodtype = FRUIT - juice_results = list(/datum/reagent/consumable/peachjuice = 0) + juice_results = list("peachjuice" = 0) tastes = list("peach" = 1) diff --git a/code/modules/hydroponics/grown/peanuts.dm b/code/modules/hydroponics/grown/peanuts.dm index 3ac1497148..2423300cc4 100644 --- a/code/modules/hydroponics/grown/peanuts.dm +++ b/code/modules/hydroponics/grown/peanuts.dm @@ -8,7 +8,7 @@ yield = 6 growthstages = 4 growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.02, /datum/reagent/consumable/nutriment = 0.15, /datum/reagent/consumable/cooking_oil = 0.03) + reagents_add = list("vitamin" = 0.02, "nutriment" = 0.15, "cooking_oil" = 0.03) /obj/item/reagent_containers/food/snacks/grown/peanut seed = /obj/item/seeds/peanutseed @@ -26,5 +26,5 @@ desc = "A handful of roasted peanuts, with or without salt." icon_state = "roasted_peanuts" foodtype = VEGETABLES - list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 1) - juice_results = list(/datum/reagent/consumable/peanut_butter = 3) \ No newline at end of file + list_reagents = list("nutriment" = 6, "vitamin" = 1) + juice_results = list("peanut_butter" = 3) \ No newline at end of file diff --git a/code/modules/hydroponics/grown/pineapple.dm b/code/modules/hydroponics/grown/pineapple.dm index 40b3a67573..e52c261217 100644 --- a/code/modules/hydroponics/grown/pineapple.dm +++ b/code/modules/hydroponics/grown/pineapple.dm @@ -12,7 +12,7 @@ growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/apple) - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.02, /datum/reagent/consumable/nutriment = 0.2, /datum/reagent/water = 0.04) + reagents_add = list("vitamin" = 0.02, "nutriment" = 0.2, "water" = 0.04) /obj/item/reagent_containers/food/snacks/grown/pineapple seed = /obj/item/seeds/pineapple diff --git a/code/modules/hydroponics/grown/potato.dm b/code/modules/hydroponics/grown/potato.dm index fad916030d..50341dfa3a 100644 --- a/code/modules/hydroponics/grown/potato.dm +++ b/code/modules/hydroponics/grown/potato.dm @@ -16,7 +16,7 @@ icon_dead = "potato-dead" genes = list(/datum/plant_gene/trait/battery) mutatelist = list(/obj/item/seeds/potato/sweet) - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) /obj/item/reagent_containers/food/snacks/grown/potato seed = /obj/item/seeds/potato @@ -26,8 +26,8 @@ filling_color = "#E9967A" bitesize = 100 foodtype = VEGETABLES - juice_results = list(/datum/reagent/consumable/potato_juice = 0) - distill_reagent = /datum/reagent/consumable/ethanol/vodka + juice_results = list("potato" = 0) + distill_reagent = "vodka" /obj/item/reagent_containers/food/snacks/grown/potato/wedges name = "potato wedges" @@ -57,11 +57,11 @@ plantname = "Sweet Potato Plants" product = /obj/item/reagent_containers/food/snacks/grown/potato/sweet mutatelist = list() - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.1, /datum/reagent/consumable/sugar = 0.1, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("vitamin" = 0.1, "sugar" = 0.1, "nutriment" = 0.1) /obj/item/reagent_containers/food/snacks/grown/potato/sweet seed = /obj/item/seeds/potato/sweet name = "sweet potato" desc = "It's sweet." icon_state = "sweetpotato" - distill_reagent = /datum/reagent/consumable/ethanol/sbiten + distill_reagent = "sbiten" diff --git a/code/modules/hydroponics/grown/pumpkin.dm b/code/modules/hydroponics/grown/pumpkin.dm index 6254fb5bcc..46dc49a169 100644 --- a/code/modules/hydroponics/grown/pumpkin.dm +++ b/code/modules/hydroponics/grown/pumpkin.dm @@ -14,7 +14,7 @@ icon_dead = "pumpkin-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/pumpkin/blumpkin) - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.2) + reagents_add = list("vitamin" = 0.04, "nutriment" = 0.2) /obj/item/reagent_containers/food/snacks/grown/pumpkin seed = /obj/item/seeds/pumpkin @@ -24,7 +24,7 @@ filling_color = "#FFA500" bitesize_mod = 2 foodtype = FRUIT - juice_results = list(/datum/reagent/consumable/pumpkinjuice = 0) + juice_results = list("pumpkinjuice" = 0) wine_power = 20 /obj/item/reagent_containers/food/snacks/grown/pumpkin/attackby(obj/item/W as obj, mob/user as mob, params) @@ -45,7 +45,7 @@ plantname = "Blumpkin Vines" product = /obj/item/reagent_containers/food/snacks/grown/blumpkin mutatelist = list() - reagents_add = list(/datum/reagent/ammonia = 0.2, /datum/reagent/chlorine = 0.1, /datum/reagent/consumable/nutriment = 0.2) + reagents_add = list("ammonia" = 0.2, "chlorine" = 0.1, "nutriment" = 0.2) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/blumpkin @@ -56,5 +56,5 @@ filling_color = "#87CEFA" bitesize_mod = 2 foodtype = FRUIT - juice_results = list(/datum/reagent/consumable/blumpkinjuice = 0) + juice_results = list("blumpkinjuice" = 0) wine_power = 50 diff --git a/code/modules/hydroponics/grown/replicapod.dm b/code/modules/hydroponics/grown/replicapod.dm index 3769f9eacc..bac480bee6 100644 --- a/code/modules/hydroponics/grown/replicapod.dm +++ b/code/modules/hydroponics/grown/replicapod.dm @@ -31,7 +31,7 @@ /obj/item/seeds/replicapod/on_reagent_change(changetype) if(changetype == ADD_REAGENT) - var/datum/reagent/blood/B = reagents.has_reagent(/datum/reagent/blood) + var/datum/reagent/blood/B = reagents.has_reagent("blood") if(B) if(B.data["mind"] && B.data["cloneable"]) mind = B.data["mind"] @@ -47,7 +47,7 @@ else visible_message("The [src] rejects the sample!") - if(!reagents.has_reagent(/datum/reagent/blood)) + if(!reagents.has_reagent("blood")) mind = null ckey = null realName = null diff --git a/code/modules/hydroponics/grown/root.dm b/code/modules/hydroponics/grown/root.dm index ac171b4e45..e28043e4b1 100644 --- a/code/modules/hydroponics/grown/root.dm +++ b/code/modules/hydroponics/grown/root.dm @@ -12,7 +12,7 @@ growthstages = 3 growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' mutatelist = list(/obj/item/seeds/carrot/parsnip) - reagents_add = list(/datum/reagent/medicine/oculine = 0.25, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05) + reagents_add = list("oculine" = 0.25, "vitamin" = 0.04, "nutriment" = 0.05) /obj/item/reagent_containers/food/snacks/grown/carrot seed = /obj/item/seeds/carrot @@ -22,7 +22,7 @@ filling_color = "#FFA500" bitesize_mod = 2 foodtype = VEGETABLES - juice_results = list(/datum/reagent/consumable/carrotjuice = 0) + juice_results = list("carrotjuice" = 0) wine_power = 30 /obj/item/reagent_containers/food/snacks/grown/carrot/attackby(obj/item/I, mob/user, params) @@ -45,7 +45,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/parsnip icon_dead = "carrot-dead" mutatelist = list() - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.05, /datum/reagent/consumable/nutriment = 0.05) + reagents_add = list("vitamin" = 0.05, "nutriment" = 0.05) /obj/item/reagent_containers/food/snacks/grown/parsnip seed = /obj/item/seeds/carrot/parsnip @@ -54,7 +54,7 @@ icon_state = "parsnip" bitesize_mod = 2 foodtype = VEGETABLES - juice_results = list(/datum/reagent/consumable/parsnipjuice = 0) + juice_results = list("parsnipjuice" = 0) wine_power = 35 @@ -72,7 +72,7 @@ growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' icon_dead = "whitebeet-dead" mutatelist = list(/obj/item/seeds/redbeet) - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/sugar = 0.2, /datum/reagent/consumable/nutriment = 0.05) + reagents_add = list("vitamin" = 0.04, "sugar" = 0.2, "nutriment" = 0.05) /obj/item/reagent_containers/food/snacks/grown/whitebeet seed = /obj/item/seeds/whitebeet @@ -98,7 +98,7 @@ growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' icon_dead = "whitebeet-dead" genes = list(/datum/plant_gene/trait/maxchem) - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.05, /datum/reagent/consumable/nutriment = 0.05) + reagents_add = list("vitamin" = 0.05, "nutriment" = 0.05) /obj/item/reagent_containers/food/snacks/grown/redbeet seed = /obj/item/seeds/redbeet diff --git a/code/modules/hydroponics/grown/tea_coffee.dm b/code/modules/hydroponics/grown/tea_coffee.dm index 44e11c372d..bdb5bdb3f9 100644 --- a/code/modules/hydroponics/grown/tea_coffee.dm +++ b/code/modules/hydroponics/grown/tea_coffee.dm @@ -14,7 +14,7 @@ icon_dead = "tea-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/tea/astra) - reagents_add = list(/datum/reagent/toxin/teapowder = 0.1) + reagents_add = list("teapowder" = 0.1) /obj/item/reagent_containers/food/snacks/grown/tea seed = /obj/item/seeds/tea @@ -22,7 +22,7 @@ desc = "These aromatic tips of the tea plant can be dried to make tea." icon_state = "tea_aspera_leaves" filling_color = "#008000" - grind_results = list(/datum/reagent/toxin/teapowder = 0) + grind_results = list("teapowder" = 0) dry_grind = TRUE can_distill = FALSE @@ -34,7 +34,7 @@ plantname = "Tea Astra Plant" product = /obj/item/reagent_containers/food/snacks/grown/tea/astra mutatelist = list(/obj/item/seeds/tea/catnip) - reagents_add = list(/datum/reagent/medicine/synaptizine = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/toxin/teapowder = 0.1) + reagents_add = list("synaptizine" = 0.1, "vitamin" = 0.04, "teapowder" = 0.1) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/tea/astra @@ -42,7 +42,7 @@ name = "Tea Astra tips" icon_state = "tea_astra_leaves" filling_color = "#4582B4" - grind_results = list(/datum/reagent/toxin/teapowder = 0, /datum/reagent/medicine/salglu_solution = 0) + grind_results = list("teapowder" = 0, "salglu_solution" = 0) // Kitty drugs /obj/item/seeds/tea/catnip @@ -52,7 +52,7 @@ species = "catnip" plantname = "Catnip Plant" product = /obj/item/reagent_containers/food/snacks/grown/tea/catnip - reagents_add = list(/datum/reagent/pax/catnip = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.06, /datum/reagent/toxin/teapowder = 0.3) + reagents_add = list("catnip" = 0.1, "vitamin" = 0.06, "teapowder" = 0.3) rarity = 50 /obj/item/reagent_containers/food/snacks/grown/tea/catnip @@ -60,7 +60,7 @@ name = "Catnip buds" icon_state = "catnip" filling_color = "#4582B4" - grind_results = list(/datum/reagent/pax/catnip = 2, /datum/reagent/water = 1) + grind_results = list("catnp" = 2, "water" = 1) // Coffee /obj/item/seeds/coffee @@ -79,7 +79,7 @@ icon_dead = "coffee-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/coffee/robusta) - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/toxin/coffeepowder = 0.1) + reagents_add = list("vitamin" = 0.04, "coffeepowder" = 0.1) /obj/item/reagent_containers/food/snacks/grown/coffee seed = /obj/item/seeds/coffee @@ -89,8 +89,8 @@ filling_color = "#DC143C" bitesize_mod = 2 dry_grind = TRUE - grind_results = list(/datum/reagent/toxin/coffeepowder = 0) - distill_reagent = /datum/reagent/consumable/ethanol/kahlua + grind_results = list("coffeepowder" = 0) + distill_reagent = "kahlua" // Coffee Robusta /obj/item/seeds/coffee/robusta @@ -101,7 +101,7 @@ plantname = "Coffee Robusta Bush" product = /obj/item/reagent_containers/food/snacks/grown/coffee/robusta mutatelist = list() - reagents_add = list(/datum/reagent/medicine/ephedrine = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/toxin/coffeepowder = 0.1) + reagents_add = list("ephedrine" = 0.1, "vitamin" = 0.04, "coffeepowder" = 0.1) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/coffee/robusta @@ -109,4 +109,4 @@ name = "coffee robusta beans" desc = "Increases robustness by 37 percent!" icon_state = "coffee_robusta" - grind_results = list(/datum/reagent/toxin/coffeepowder = 0, /datum/reagent/medicine/morphine = 0) + grind_results = list("coffeepowder" = 0, "morphine" = 0) diff --git a/code/modules/hydroponics/grown/tobacco.dm b/code/modules/hydroponics/grown/tobacco.dm index 1e2d25d825..684271fa6b 100644 --- a/code/modules/hydroponics/grown/tobacco.dm +++ b/code/modules/hydroponics/grown/tobacco.dm @@ -13,7 +13,7 @@ growthstages = 3 icon_dead = "tobacco-dead" mutatelist = list(/obj/item/seeds/tobacco/space) - reagents_add = list(/datum/reagent/drug/nicotine = 0.03, /datum/reagent/consumable/nutriment = 0.03) + reagents_add = list("nicotine" = 0.03, "nutriment" = 0.03) /obj/item/reagent_containers/food/snacks/grown/tobacco seed = /obj/item/seeds/tobacco @@ -21,7 +21,7 @@ desc = "Dry them out to make some smokes." icon_state = "tobacco_leaves" filling_color = "#008000" - distill_reagent = /datum/reagent/consumable/ethanol/creme_de_menthe //Menthol, I guess. + distill_reagent = "creme_de_menthe" //Menthol, I guess. // Space Tobacco /obj/item/seeds/tobacco/space @@ -32,7 +32,7 @@ plantname = "Space Tobacco Plant" product = /obj/item/reagent_containers/food/snacks/grown/tobacco/space mutatelist = list() - reagents_add = list(/datum/reagent/medicine/salbutamol = 0.05, /datum/reagent/drug/nicotine = 0.08, /datum/reagent/consumable/nutriment = 0.03) + reagents_add = list("salbutamol" = 0.05, "nicotine" = 0.08, "nutriment" = 0.03) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/tobacco/space diff --git a/code/modules/hydroponics/grown/tomato.dm b/code/modules/hydroponics/grown/tomato.dm index 53c3389695..d07f5d4d08 100644 --- a/code/modules/hydroponics/grown/tomato.dm +++ b/code/modules/hydroponics/grown/tomato.dm @@ -12,7 +12,7 @@ icon_dead = "tomato-dead" genes = list(/datum/plant_gene/trait/squash, /datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/tomato/blue, /obj/item/seeds/tomato/blood, /obj/item/seeds/tomato/killer) - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) /obj/item/reagent_containers/food/snacks/grown/tomato seed = /obj/item/seeds/tomato @@ -23,9 +23,9 @@ filling_color = "#FF6347" bitesize_mod = 2 foodtype = FRUIT - grind_results = list(/datum/reagent/consumable/ketchup = 0) - juice_results = list(/datum/reagent/consumable/tomatojuice = 0) - distill_reagent = /datum/reagent/consumable/enzyme + grind_results = list("ketchup" = 0) + juice_results = list("tomatojuice" = 0) + distill_reagent = "enzyme" // Blood Tomato /obj/item/seeds/tomato/blood @@ -36,7 +36,7 @@ plantname = "Blood-Tomato Plants" product = /obj/item/reagent_containers/food/snacks/grown/tomato/blood mutatelist = list() - reagents_add = list(/datum/reagent/blood = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("blood" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/tomato/blood @@ -47,8 +47,8 @@ splat_type = /obj/effect/gibspawner/generic filling_color = "#FF0000" foodtype = FRUIT | GROSS - grind_results = list(/datum/reagent/consumable/ketchup = 0, /datum/reagent/blood = 0) - distill_reagent = /datum/reagent/consumable/ethanol/bloody_mary + grind_results = list("ketchup" = 0, "blood" = 0) + distill_reagent = "bloodymary" // Blue Tomato /obj/item/seeds/tomato/blue @@ -62,7 +62,7 @@ icon_grow = "bluetomato-grow" mutatelist = list(/obj/item/seeds/tomato/blue/bluespace) genes = list(/datum/plant_gene/trait/slip, /datum/plant_gene/trait/repeated_harvest) - reagents_add = list(/datum/reagent/lube = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("lube" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/tomato/blue @@ -72,7 +72,7 @@ icon_state = "bluetomato" splat_type = /obj/effect/decal/cleanable/oil filling_color = "#0000FF" - distill_reagent = /datum/reagent/consumable/laughter + distill_reagent = "laughter" // Bluespace Tomato /obj/item/seeds/tomato/blue/bluespace @@ -85,7 +85,7 @@ yield = 2 mutatelist = list() genes = list(/datum/plant_gene/trait/squash, /datum/plant_gene/trait/slip, /datum/plant_gene/trait/teleport, /datum/plant_gene/trait/repeated_harvest) - reagents_add = list(/datum/reagent/lube = 0.2, /datum/reagent/bluespace = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("lube" = 0.2, "bluespace" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) rarity = 50 /obj/item/reagent_containers/food/snacks/grown/tomato/blue/bluespace @@ -120,7 +120,7 @@ icon_state = "killertomato" var/awakening = 0 filling_color = "#FF0000" - distill_reagent = /datum/reagent/consumable/ethanol/demonsblood + distill_reagent = "demonsblood" /obj/item/reagent_containers/food/snacks/grown/tomato/killer/attack(mob/M, mob/user, def_zone) if(awakening) diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 9655b13862..1ea0068a1a 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -24,7 +24,7 @@ lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi' volume = 100 - list_reagents = list(/datum/reagent/toxin/plantbgone/weedkiller = 100) + list_reagents = list("weedkiller" = 100) /obj/item/reagent_containers/spray/weedspray/suicide_act(mob/user) user.visible_message("[user] is huffing [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -39,7 +39,7 @@ lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi' volume = 100 - list_reagents = list(/datum/reagent/toxin/pestkiller = 100) + list_reagents = list("pestkiller" = 100) /obj/item/reagent_containers/spray/pestspray/suicide_act(mob/user) user.visible_message("[user] is huffing [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -164,17 +164,17 @@ /obj/item/reagent_containers/glass/bottle/nutrient/ez name = "bottle of E-Z-Nutrient" desc = "Contains a fertilizer that causes mild mutations with each harvest." - list_reagents = list(/datum/reagent/plantnutriment/eznutriment = 50) + list_reagents = list("eznutriment" = 50) /obj/item/reagent_containers/glass/bottle/nutrient/l4z name = "bottle of Left 4 Zed" desc = "Contains a fertilizer that limits plant yields to no more than one and causes significant mutations in plants." - list_reagents = list(/datum/reagent/plantnutriment/left4zednutriment = 50) + list_reagents = list("left4zednutriment" = 50) /obj/item/reagent_containers/glass/bottle/nutrient/rh name = "bottle of Robust Harvest" desc = "Contains a fertilizer that increases the yield of a plant by 30% while causing no mutations." - list_reagents = list(/datum/reagent/plantnutriment/robustharvestnutriment = 50) + list_reagents = list("robustharvestnutriment" = 50) /obj/item/reagent_containers/glass/bottle/nutrient/empty name = "bottle" @@ -187,9 +187,9 @@ /obj/item/reagent_containers/glass/bottle/killer/weedkiller name = "bottle of weed killer" desc = "Contains a herbicide." - list_reagents = list(/datum/reagent/toxin/plantbgone/weedkiller = 50) + list_reagents = list("weedkiller" = 50) /obj/item/reagent_containers/glass/bottle/killer/pestkiller name = "bottle of pest spray" desc = "Contains a pesticide." - list_reagents = list(/datum/reagent/toxin/pestkiller = 50) \ No newline at end of file + list_reagents = list("pestkiller" = 50) \ No newline at end of file diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 0b6834c408..59a9725383 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -470,7 +470,7 @@ myseed.on_chem_reaction(S) //In case seeds have some special interactions with special chems, currently only used by vines // Requires 5 mutagen to possibly change species.// Poor man's mutagen. - if(S.has_reagent(/datum/reagent/toxin/mutagen, 5) || S.has_reagent(/datum/reagent/radium, 10) || S.has_reagent(/datum/reagent/uranium, 10)) + if(S.has_reagent("mutagen", 5) || S.has_reagent("radium", 10) || S.has_reagent("uranium", 10)) switch(rand(100)) if(91 to 100) adjustHealth(-10) @@ -491,214 +491,214 @@ to_chat(user, "Nothing happens...") // 2 or 1 units is enough to change the yield and other stats.// Can change the yield and other stats, but requires more than mutagen - else if(S.has_reagent(/datum/reagent/toxin/mutagen, 2) || S.has_reagent(/datum/reagent/radium, 5) || S.has_reagent(/datum/reagent/uranium, 5)) + else if(S.has_reagent("mutagen", 2) || S.has_reagent("radium", 5) || S.has_reagent("uranium", 5)) hardmutate() - else if(S.has_reagent(/datum/reagent/toxin/mutagen, 1) || S.has_reagent(/datum/reagent/radium, 2) || S.has_reagent(/datum/reagent/uranium, 2)) + else if(S.has_reagent("mutagen", 1) || S.has_reagent("radium", 2) || S.has_reagent("uranium", 2)) mutate() // After handling the mutating, we now handle the damage from adding crude radioactives... - if(S.has_reagent(/datum/reagent/uranium, 1)) - adjustHealth(-round(S.get_reagent_amount(/datum/reagent/uranium) * 1)) - adjustToxic(round(S.get_reagent_amount(/datum/reagent/uranium) * 2)) - if(S.has_reagent(/datum/reagent/radium, 1)) - adjustHealth(-round(S.get_reagent_amount(/datum/reagent/radium) * 1)) - adjustToxic(round(S.get_reagent_amount(/datum/reagent/radium) * 3)) // Radium is harsher (OOC: also easier to produce) + if(S.has_reagent("uranium", 1)) + adjustHealth(-round(S.get_reagent_amount("uranium") * 1)) + adjustToxic(round(S.get_reagent_amount("uranium") * 2)) + if(S.has_reagent("radium", 1)) + adjustHealth(-round(S.get_reagent_amount("radium") * 1)) + adjustToxic(round(S.get_reagent_amount("radium") * 3)) // Radium is harsher (OOC: also easier to produce) // Nutriments - if(S.has_reagent(/datum/reagent/plantnutriment/eznutriment, 1)) + if(S.has_reagent("eznutriment", 1)) yieldmod = 1 mutmod = 1 - adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/eznutriment) * 1)) + adjustNutri(round(S.get_reagent_amount("eznutriment") * 1)) - if(S.has_reagent(/datum/reagent/plantnutriment/left4zednutriment, 1)) + if(S.has_reagent("left4zednutriment", 1)) yieldmod = 0 mutmod = 2 - adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/left4zednutriment) * 1)) + adjustNutri(round(S.get_reagent_amount("left4zednutriment") * 1)) - if(S.has_reagent(/datum/reagent/plantnutriment/robustharvestnutriment, 1)) + if(S.has_reagent("robustharvestnutriment", 1)) yieldmod = 1.3 mutmod = 0 - adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/robustharvestnutriment) *1 )) + adjustNutri(round(S.get_reagent_amount("robustharvestnutriment") *1 )) // Ambrosia Gaia produces earthsblood. - if(S.has_reagent(/datum/reagent/medicine/earthsblood)) - self_sufficiency_progress += S.get_reagent_amount(/datum/reagent/medicine/earthsblood) + if(S.has_reagent("earthsblood")) + self_sufficiency_progress += S.get_reagent_amount("earthsblood") if(self_sufficiency_progress >= self_sufficiency_req) become_self_sufficient() else if(!self_sustaining) to_chat(user, "[src] warms as it might on a spring day under a genuine Sun.") // Antitoxin binds shit pretty well. So the tox goes significantly down - if(S.has_reagent(/datum/reagent/medicine/charcoal, 1)) - adjustToxic(-round(S.get_reagent_amount(/datum/reagent/medicine/charcoal) * 2)) + if(S.has_reagent("charcoal", 1)) + adjustToxic(-round(S.get_reagent_amount("charcoal") * 2)) // Toxins, not good for anything - if(S.has_reagent(/datum/reagent/toxin, 1)) - adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin) * 2)) + if(S.has_reagent("toxin", 1)) + adjustToxic(round(S.get_reagent_amount("toxin") * 2)) // Milk is good for humans, but bad for plants. The sugars canot be used by plants, and the milk fat fucks up growth. Not shrooms though. I can't deal with this now... - if(S.has_reagent(/datum/reagent/consumable/milk, 1)) - adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/milk) * 0.1)) - adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/milk) * 0.9)) + if(S.has_reagent("milk", 1)) + adjustNutri(round(S.get_reagent_amount("milk") * 0.1)) + adjustWater(round(S.get_reagent_amount("milk") * 0.9)) // Beer is a chemical composition of alcohol and various other things. It's a shitty nutrient but hey, it's still one. Also alcohol is bad, mmmkay? - if(S.has_reagent(/datum/reagent/consumable/ethanol/beer, 1)) - adjustHealth(-round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.05)) - adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.25)) - adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.7)) + if(S.has_reagent("beer", 1)) + adjustHealth(-round(S.get_reagent_amount("beer") * 0.05)) + adjustNutri(round(S.get_reagent_amount("beer") * 0.25)) + adjustWater(round(S.get_reagent_amount("beer") * 0.7)) // Fluorine one of the most corrosive and deadly gasses - if(S.has_reagent(/datum/reagent/fluorine, 1)) - adjustHealth(-round(S.get_reagent_amount(/datum/reagent/fluorine) * 2)) - adjustToxic(round(S.get_reagent_amount(/datum/reagent/fluorine) * 2.5)) - adjustWater(-round(S.get_reagent_amount(/datum/reagent/fluorine) * 0.5)) + if(S.has_reagent("fluorine", 1)) + adjustHealth(-round(S.get_reagent_amount("fluorine") * 2)) + adjustToxic(round(S.get_reagent_amount("fluorine") * 2.5)) + adjustWater(-round(S.get_reagent_amount("fluorine") * 0.5)) adjustWeeds(-rand(1,4)) // Chlorine one of the most corrosive and deadly gasses - if(S.has_reagent(/datum/reagent/chlorine, 1)) - adjustHealth(-round(S.get_reagent_amount(/datum/reagent/chlorine) * 1)) - adjustToxic(round(S.get_reagent_amount(/datum/reagent/chlorine) * 1.5)) - adjustWater(-round(S.get_reagent_amount(/datum/reagent/chlorine) * 0.5)) + if(S.has_reagent("chlorine", 1)) + adjustHealth(-round(S.get_reagent_amount("chlorine") * 1)) + adjustToxic(round(S.get_reagent_amount("chlorine") * 1.5)) + adjustWater(-round(S.get_reagent_amount("chlorine") * 0.5)) adjustWeeds(-rand(1,3)) // White Phosphorous + water -> phosphoric acid. That's not a good thing really. // Phosphoric salts are beneficial though. And even if the plant suffers, in the long run the tray gets some nutrients. The benefit isn't worth that much. - if(S.has_reagent(/datum/reagent/phosphorus, 1)) - adjustHealth(-round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.75)) - adjustNutri(round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.1)) - adjustWater(-round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.5)) + if(S.has_reagent("phosphorus", 1)) + adjustHealth(-round(S.get_reagent_amount("phosphorus") * 0.75)) + adjustNutri(round(S.get_reagent_amount("phosphorus") * 0.1)) + adjustWater(-round(S.get_reagent_amount("phosphorus") * 0.5)) adjustWeeds(-rand(1,2)) // Plants should not have sugar, they can't use it and it prevents them getting water/nutients, it is good for mold though... - if(S.has_reagent(/datum/reagent/consumable/sugar, 1)) + if(S.has_reagent("sugar", 1)) adjustWeeds(rand(1,2)) adjustPests(rand(1,2)) - adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/sugar) * 0.1)) + adjustNutri(round(S.get_reagent_amount("sugar") * 0.1)) // It is water! - if(S.has_reagent(/datum/reagent/water, 1)) - adjustWater(round(S.get_reagent_amount(/datum/reagent/water) * 1)) + if(S.has_reagent("water", 1)) + adjustWater(round(S.get_reagent_amount("water") * 1)) // Holy water. Mostly the same as water, it also heals the plant a little with the power of the spirits~ - if(S.has_reagent(/datum/reagent/water/holywater, 1)) - adjustWater(round(S.get_reagent_amount(/datum/reagent/water/holywater) * 1)) - adjustHealth(round(S.get_reagent_amount(/datum/reagent/water/holywater) * 0.1)) + if(S.has_reagent("holywater", 1)) + adjustWater(round(S.get_reagent_amount("holywater") * 1)) + adjustHealth(round(S.get_reagent_amount("holywater") * 0.1)) // A variety of nutrients are dissolved in club soda, without sugar. // These nutrients include carbon, oxygen, hydrogen, phosphorous, potassium, sulfur and sodium, all of which are needed for healthy plant growth. - if(S.has_reagent(/datum/reagent/consumable/sodawater, 1)) - adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 1)) - adjustHealth(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 0.1)) - adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 0.1)) + if(S.has_reagent("sodawater", 1)) + adjustWater(round(S.get_reagent_amount("sodawater") * 1)) + adjustHealth(round(S.get_reagent_amount("sodawater") * 0.1)) + adjustNutri(round(S.get_reagent_amount("sodawater") * 0.1)) // Sulphuric Acid - if(S.has_reagent(/datum/reagent/toxin/acid, 1)) - adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/acid) * 1)) - adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/acid) * 1.5)) + if(S.has_reagent("sacid", 1)) + adjustHealth(-round(S.get_reagent_amount("sacid") * 1)) + adjustToxic(round(S.get_reagent_amount("sacid") * 1.5)) adjustWeeds(-rand(1,2)) // Acid - if(S.has_reagent(/datum/reagent/toxin/acid/fluacid, 1)) - adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/acid/fluacid) * 2)) - adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/acid/fluacid) * 3)) + if(S.has_reagent("facid", 1)) + adjustHealth(-round(S.get_reagent_amount("facid") * 2)) + adjustToxic(round(S.get_reagent_amount("facid") * 3)) adjustWeeds(-rand(1,4)) // Plant-B-Gone is just as bad - if(S.has_reagent(/datum/reagent/toxin/plantbgone, 1)) - adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone) * 5)) - adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone) * 6)) + if(S.has_reagent("plantbgone", 1)) + adjustHealth(-round(S.get_reagent_amount("plantbgone") * 5)) + adjustToxic(round(S.get_reagent_amount("plantbgone") * 6)) adjustWeeds(-rand(4,8)) // Napalm, not known for being good for anything organic - if(S.has_reagent(/datum/reagent/napalm, 1)) + if(S.has_reagent("napalm", 1)) if(!(myseed.resistance_flags & FIRE_PROOF)) - adjustHealth(-round(S.get_reagent_amount(/datum/reagent/napalm) * 6)) - adjustToxic(round(S.get_reagent_amount(/datum/reagent/napalm) * 7)) + adjustHealth(-round(S.get_reagent_amount("napalm") * 6)) + adjustToxic(round(S.get_reagent_amount("napalm") * 7)) adjustWeeds(-rand(5,9)) //Weed Spray - if(S.has_reagent(/datum/reagent/toxin/plantbgone/weedkiller, 1)) - adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone/weedkiller) * 0.5)) + if(S.has_reagent("weedkiller", 1)) + adjustToxic(round(S.get_reagent_amount("weedkiller") * 0.5)) //old toxicity was 4, each spray is default 10 (minimal of 5) so 5 and 2.5 are the new ammounts adjustWeeds(-rand(1,2)) //Pest Spray - if(S.has_reagent(/datum/reagent/toxin/pestkiller, 1)) - adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/pestkiller) * 0.5)) + if(S.has_reagent("pestkiller", 1)) + adjustToxic(round(S.get_reagent_amount("pestkiller") * 0.5)) adjustPests(-rand(1,2)) // Healing - if(S.has_reagent(/datum/reagent/medicine/cryoxadone, 1)) - adjustHealth(round(S.get_reagent_amount(/datum/reagent/medicine/cryoxadone) * 3)) - adjustToxic(-round(S.get_reagent_amount(/datum/reagent/medicine/cryoxadone) * 3)) + if(S.has_reagent("cryoxadone", 1)) + adjustHealth(round(S.get_reagent_amount("cryoxadone") * 3)) + adjustToxic(-round(S.get_reagent_amount("cryoxadone") * 3)) // Ammonia is bad ass. - if(S.has_reagent(/datum/reagent/ammonia, 1)) - adjustHealth(round(S.get_reagent_amount(/datum/reagent/ammonia) * 0.5)) - adjustNutri(round(S.get_reagent_amount(/datum/reagent/ammonia) * 1)) + if(S.has_reagent("ammonia", 1)) + adjustHealth(round(S.get_reagent_amount("ammonia") * 0.5)) + adjustNutri(round(S.get_reagent_amount("ammonia") * 1)) if(myseed) - myseed.adjust_yield(round(S.get_reagent_amount(/datum/reagent/ammonia) * 0.01)) + myseed.adjust_yield(round(S.get_reagent_amount("ammonia") * 0.01)) // Saltpetre is used for gardening IRL, to simplify highly, it speeds up growth and strengthens plants - if(S.has_reagent(/datum/reagent/saltpetre, 1)) - var/salt = S.get_reagent_amount(/datum/reagent/saltpetre) + if(S.has_reagent("saltpetre", 1)) + var/salt = S.get_reagent_amount("saltpetre") adjustHealth(round(salt * 0.25)) if (myseed) myseed.adjust_production(-round(salt/100)-prob(salt%100)) myseed.adjust_potency(round(salt*0.5)) // Ash is also used IRL in gardening, as a fertilizer enhancer and weed killer - if(S.has_reagent(/datum/reagent/ash, 1)) - adjustHealth(round(S.get_reagent_amount(/datum/reagent/ash) * 0.25)) - adjustNutri(round(S.get_reagent_amount(/datum/reagent/ash) * 0.5)) + if(S.has_reagent("ash", 1)) + adjustHealth(round(S.get_reagent_amount("ash") * 0.25)) + adjustNutri(round(S.get_reagent_amount("ash") * 0.5)) adjustWeeds(-1) // Diethylamine is more bad ass, and pests get hurt by the corrosive nature of it, not the plant. - if(S.has_reagent(/datum/reagent/diethylamine, 1)) - adjustHealth(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 1)) - adjustNutri(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 2)) + if(S.has_reagent("diethylamine", 1)) + adjustHealth(round(S.get_reagent_amount("diethylamine") * 1)) + adjustNutri(round(S.get_reagent_amount("diethylamine") * 2)) if(myseed) - myseed.adjust_yield(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 0.02)) + myseed.adjust_yield(round(S.get_reagent_amount("diethylamine") * 0.02)) adjustPests(-rand(1,2)) // Nutriment Compost, effectively - if(S.has_reagent(/datum/reagent/consumable/nutriment, 1)) - adjustHealth(round(S.get_reagent_amount(/datum/reagent/consumable/nutriment) * 0.5)) - adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/nutriment) * 1)) + if(S.has_reagent("nutriment", 1)) + adjustHealth(round(S.get_reagent_amount("nutriment") * 0.5)) + adjustNutri(round(S.get_reagent_amount("nutriment") * 1)) // Virusfood Compost for EVERYTHING - if(S.has_reagent(/datum/reagent/toxin/mutagen/mutagenvirusfood, 1)) - adjustNutri(round(S.get_reagent_amount(/datum/reagent/toxin/mutagen/mutagenvirusfood) * 0.5)) - adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/mutagen/mutagenvirusfood) * 0.5)) + if(S.has_reagent("virusfood", 1)) + adjustNutri(round(S.get_reagent_amount("virusfood") * 0.5)) + adjustHealth(-round(S.get_reagent_amount("virusfood") * 0.5)) // Blood - if(S.has_reagent(/datum/reagent/blood, 1)) - adjustNutri(round(S.get_reagent_amount(/datum/reagent/blood) * 1)) + if(S.has_reagent("blood", 1)) + adjustNutri(round(S.get_reagent_amount("blood") * 1)) adjustPests(rand(2,4)) // Strange reagent - if(S.has_reagent(/datum/reagent/medicine/strange_reagent, 1)) + if(S.has_reagent("strangereagent", 1)) spawnplant() // Honey, Pests are dieing of sugar, so is the plant - if(S.has_reagent(/datum/reagent/consumable/honey, 1)) + if(S.has_reagent("honey", 1)) adjustPests(-rand(2,5)) - adjustHealth(-round(S.get_reagent_amount(/datum/reagent/consumable/honey) * 1)) + adjustHealth(-round(S.get_reagent_amount("honey") * 1)) // Buzz Fuzz, a drink seemingly made for plants... - if(S.has_reagent(/datum/reagent/consumable/buzz_fuzz, 1)) + if(S.has_reagent("buzz_fuzz", 1)) adjustPests(-rand(2,5)) - adjustHealth(round(S.get_reagent_amount(/datum/reagent/consumable/buzz_fuzz) * 0.1)) - adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/buzz_fuzz) * 0.5)) + adjustHealth(round(S.get_reagent_amount("buzz_fuzz") * 0.1)) + adjustNutri(round(S.get_reagent_amount("buzz_fuzz") * 0.5)) // Adminordrazine the best stuff there is. For testing/debugging. - if(S.has_reagent(/datum/reagent/medicine/adminordrazine, 1)) - adjustWater(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1)) - adjustHealth(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1)) - adjustNutri(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1)) + if(S.has_reagent("adminordrazine", 1)) + adjustWater(round(S.get_reagent_amount("adminordrazine") * 1)) + adjustHealth(round(S.get_reagent_amount("adminordrazine") * 1)) + adjustNutri(round(S.get_reagent_amount("adminordrazine") * 1)) adjustPests(-rand(1,5)) adjustWeeds(-rand(1,5)) - if(S.has_reagent(/datum/reagent/medicine/adminordrazine, 5)) + if(S.has_reagent("adminordrazine", 5)) switch(rand(100)) if(66 to 100) mutatespecie() diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm index 99fd873995..3597ed5be6 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -129,7 +129,7 @@ name = "UNKNOWN" var/datum/reagent/R = GLOB.chemical_reagents_list[reag_id] - if(R && R.type == reagent_id) + if(R && R.id == reagent_id) name = R.name /datum/plant_gene/reagent/New(reag_id = null, reag_rate = 0) @@ -228,7 +228,7 @@ var/obj/item/seeds/seed = G.seed var/stun_len = seed.potency * rate - if(!istype(G, /obj/item/grown/bananapeel) && (!G.reagents || !G.reagents.has_reagent(/datum/reagent/lube))) + if(!istype(G, /obj/item/grown/bananapeel) && (!G.reagents || !G.reagents.has_reagent("lube"))) stun_len /= 3 G.AddComponent(/datum/component/slippery, min(stun_len,140), NONE, CALLBACK(src, .proc/handle_slip, G)) @@ -412,7 +412,7 @@ pocell.name = "[G.name] battery" pocell.desc = "A rechargeable plant-based power cell. This one has a rating of [DisplayEnergy(pocell.maxcharge)], and you should not swallow it." - if(G.reagents.has_reagent(/datum/reagent/toxin/plasma, 2)) + if(G.reagents.has_reagent("plasma", 2)) pocell.rigged = TRUE qdel(G) diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index b35665c8e6..4132719389 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -27,7 +27,6 @@ var/rarity = 0 // How rare the plant is. Used for giving points to cargo when shipping off to CentCom. var/list/mutatelist = list() // The type of plants that this plant can mutate into. var/list/genes = list() // Plant genes are stored here, see plant_genes.dm for more info. - var/list/forbiddengenes = list() var/list/reagents_add = list() // A list of reagents to add to product. // Format: "reagent_id" = potency multiplier @@ -97,10 +96,6 @@ S.reagents_add = reagents_add.Copy() // Faster than grabbing the list from genes. return S -obj/item/seeds/proc/is_gene_forbidden(typepath) - return (typepath in forbiddengenes) - - /obj/item/seeds/proc/get_gene(typepath) return (locate(typepath) in genes) @@ -200,7 +195,7 @@ obj/item/seeds/proc/is_gene_forbidden(typepath) var/list/data = null if(rid == "blood") // Hack to make blood in plants always O- data = list("blood_type" = "O-") - if(rid == /datum/reagent/consumable/nutriment || rid == /datum/reagent/consumable/nutriment/vitamin) + if(rid == "nutriment" || rid == "vitamin") // apple tastes of apple. data = T.tastes @@ -453,7 +448,7 @@ obj/item/seeds/proc/is_gene_forbidden(typepath) for(var/i in 1 to amount_random_traits) var/random_trait = pick((subtypesof(/datum/plant_gene/trait)-typesof(/datum/plant_gene/trait/plant_type))) var/datum/plant_gene/trait/T = new random_trait - if(T.can_add(src) && !is_gene_forbidden(random_trait)) + if(T.can_add(src)) genes += T else qdel(T) diff --git a/code/modules/integrated_electronics/passive/power.dm b/code/modules/integrated_electronics/passive/power.dm index 4b6b8723dd..40ed235863 100644 --- a/code/modules/integrated_electronics/passive/power.dm +++ b/code/modules/integrated_electronics/passive/power.dm @@ -96,8 +96,7 @@ activators = list("push ref" = IC_PINTYPE_PULSE_IN) spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH var/volume = 60 - var/list/fuel = list(/datum/reagent/toxin/plasma = 50000, /datum/reagent/fuel = 15000, /datum/reagent/carbon = 10000, - /datum/reagent/consumable/ethanol = 10000, /datum/reagent/consumable/nutriment = 8000) + var/list/fuel = list("plasma" = 50000, "welding_fuel" = 15000, "carbon" = 10000, "ethanol" = 10000, "nutriment" = 8000) var/multi = 1 var/lfwb =TRUE @@ -120,7 +119,7 @@ if(assembly) if(assembly.battery) var/bp = 5000 - if(reagents.get_reagent_amount(/datum/reagent/blood)) //only blood is powerful enough to power the station(c) + if(reagents.get_reagent_amount("blood")) //only blood is powerful enough to power the station(c) var/datum/reagent/blood/B = locate() in reagents.reagent_list if(lfwb) if(B && B.data["cloneable"]) @@ -128,7 +127,7 @@ if(M && (M.stat != DEAD) && (M.client)) bp = 500000 if((assembly.battery.maxcharge-assembly.battery.charge) / GLOB.CELLRATE > bp) - if(reagents.remove_reagent(/datum/reagent/blood, 1)) + if(reagents.remove_reagent("blood", 1)) assembly.give_power(bp) for(var/I in fuel) if((assembly.battery.maxcharge-assembly.battery.charge) / GLOB.CELLRATE > fuel[I]) diff --git a/code/modules/integrated_electronics/subtypes/reagents.dm b/code/modules/integrated_electronics/subtypes/reagents.dm index 0fc9f58db8..027a03650a 100644 --- a/code/modules/integrated_electronics/subtypes/reagents.dm +++ b/code/modules/integrated_electronics/subtypes/reagents.dm @@ -424,7 +424,7 @@ if(1) var/cont[0] for(var/datum/reagent/RE in reagents.reagent_list) - cont += RE.type + cont += RE.id set_pin_data(IC_OUTPUT, 3, cont) push_data() if(2) @@ -492,11 +492,11 @@ for(var/datum/reagent/G in source.reagents.reagent_list) if(!direction_mode) - if(G.type in demand) - source.reagents.trans_id_to(target, G.type, transfer_amount) + if(G.id in demand) + source.reagents.trans_id_to(target, G.id, transfer_amount) else - if(!(G.type in demand)) - source.reagents.trans_id_to(target, G.type, transfer_amount) + if(!(G.id in demand)) + source.reagents.trans_id_to(target, G.id, transfer_amount) activate_pin(2) push_data() diff --git a/code/modules/jobs/job_types/clown.dm b/code/modules/jobs/job_types/clown.dm index f8a7e70473..922b335a39 100644 --- a/code/modules/jobs/job_types/clown.dm +++ b/code/modules/jobs/job_types/clown.dm @@ -14,8 +14,6 @@ access = list(ACCESS_THEATRE) minimal_access = list(ACCESS_THEATRE) - mind_traits = list(TRAIT_CLOWN_MENTALITY) - display_order = JOB_DISPLAY_ORDER_CLOWN /datum/outfit/job/clown diff --git a/code/modules/jobs/job_types/cyborg.dm b/code/modules/jobs/job_types/cyborg.dm index f84bd0d8d6..29c4c3d833 100644 --- a/code/modules/jobs/job_types/cyborg.dm +++ b/code/modules/jobs/job_types/cyborg.dm @@ -5,7 +5,7 @@ department_flag = ENGSEC faction = "Station" total_positions = 0 - spawn_positions = 3 + spawn_positions = 1 supervisors = "your laws and the AI" //Nodrak selection_color = "#ddffdd" minimal_player_age = 21 diff --git a/code/modules/jobs/jobs.dm b/code/modules/jobs/jobs.dm index ca4280a2a1..23d20cd27a 100644 --- a/code/modules/jobs/jobs.dm +++ b/code/modules/jobs/jobs.dm @@ -71,7 +71,7 @@ GLOBAL_LIST_INIT(exp_jobsmap, list( GLOBAL_LIST_INIT(exp_specialmap, list( EXP_TYPE_LIVING = list(), // all living mobs EXP_TYPE_ANTAG = list(), - EXP_TYPE_SPECIAL = list("Lifebringer","Ash Walker","Exile","Servant Golem","Free Golem","Hermit","Translocated Vet","Escaped Prisoner","Hotel Staff","SuperFriend","Space Syndicate","Ancient Crew","Space Doctor","Space Bartender","Beach Bum","Skeleton","Zombie","Space Bar Patron","Lavaland Syndicate","Ghost Role", "Ghost Cafe Visitor"), // Ghost roles + EXP_TYPE_SPECIAL = list("Lifebringer","Ash Walker","Exile","Servant Golem","Free Golem","Hermit","Translocated Vet","Escaped Prisoner","Hotel Staff","SuperFriend","Space Syndicate","Ancient Crew","Space Doctor","Space Bartender","Beach Bum","Skeleton","Zombie","Space Bar Patron","Lavaland Syndicate","Ghost Role"), // Ghost roles EXP_TYPE_GHOST = list() // dead people, observers )) GLOBAL_PROTECT(exp_jobsmap) diff --git a/code/modules/keybindings/bindings_human.dm b/code/modules/keybindings/bindings_human.dm index ed033935b2..a9eafacef6 100644 --- a/code/modules/keybindings/bindings_human.dm +++ b/code/modules/keybindings/bindings_human.dm @@ -58,23 +58,13 @@ return switch(_key) if("Shift") - if(!user.prefs.sprint_spacebar) - user.prefs.sprint_toggle ? togglesprint() : sprint_hotkey(TRUE) //Yes, this looks hacky. Yes, this works. - return - if("Space") - if(user.prefs.sprint_spacebar) - user.prefs.sprint_toggle ? togglesprint() : sprint_hotkey(TRUE) + sprint_hotkey(TRUE) return return ..() /mob/living/carbon/human/key_up(_key, client/user) switch(_key) if("Shift") - if(!user.prefs.sprint_spacebar && !user.prefs.sprint_toggle) - sprint_hotkey(FALSE) - return - if("Space") - if(user.prefs.sprint_spacebar && !user.prefs.sprint_toggle) - sprint_hotkey(FALSE) + sprint_hotkey(FALSE) return return ..() diff --git a/code/modules/language/language_holder.dm b/code/modules/language/language_holder.dm index 00f63510b6..c1a336eb69 100644 --- a/code/modules/language/language_holder.dm +++ b/code/modules/language/language_holder.dm @@ -134,7 +134,7 @@ /datum/language_holder/synthetic languages = list(/datum/language/common) - shadow_languages = list(/datum/language/common, /datum/language/machine, /datum/language/draconic, /datum/language/slime) + shadow_languages = list(/datum/language/common, /datum/language/machine, /datum/language/draconic) /datum/language_holder/empty languages = list() diff --git a/code/modules/library/soapstone.dm b/code/modules/library/soapstone.dm index 0d7ae7107b..295fc816e2 100644 --- a/code/modules/library/soapstone.dm +++ b/code/modules/library/soapstone.dm @@ -117,7 +117,6 @@ anchored = TRUE max_integrity = 30 layer = LATTICE_LAYER - light_power = 0.3 var/hidden_message var/creator_key diff --git a/code/modules/mapping/map_template.dm b/code/modules/mapping/map_template.dm index 3e361179de..1f55f18823 100644 --- a/code/modules/mapping/map_template.dm +++ b/code/modules/mapping/map_template.dm @@ -70,7 +70,7 @@ //initialize things that are normally initialized after map load parsed.initTemplateBounds() smooth_zlevel(world.maxz) - log_game("Z-level [name] loaded at [x],[y],[world.maxz]") + log_game("Z-level [name] loaded at at [x],[y],[world.maxz]") return level @@ -84,13 +84,6 @@ if(T.y+height > world.maxy) return - var/list/border = block(locate(max(T.x-1, 1), max(T.y-1, 1), T.z), - locate(min(T.x+width+1, world.maxx), min(T.y+height+1, world.maxy), T.z)) - for(var/L in border) - var/turf/turf_to_disable = L - SSair.remove_from_active(turf_to_disable) //stop processing turfs along the border to prevent runtimes, we return it in initTemplateBounds() - turf_to_disable.atmos_adjacent_turfs?.Cut() - // Accept cached maps, but don't save them automatically - we don't want // ruins clogging up memory for the whole round. var/datum/parsed_map/parsed = cached_map || new(file(mappath)) @@ -107,7 +100,7 @@ //initialize things that are normally initialized after map load parsed.initTemplateBounds() - log_game("[name] loaded at [T.x],[T.y],[T.z]") + log_game("[name] loaded at at [T.x],[T.y],[T.z]") return bounds /datum/map_template/proc/get_affected_turfs(turf/T, centered = FALSE) diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm index a7f84fd71f..e2459d780a 100644 --- a/code/modules/mapping/mapping_helpers.dm +++ b/code/modules/mapping/mapping_helpers.dm @@ -18,7 +18,7 @@ /obj/effect/baseturf_helper/LateInitialize() if(!baseturf_to_replace) - baseturf_to_replace = typecacheof(list(/turf/open/space,/turf/baseturf_bottom)) + baseturf_to_replace = typecacheof(/turf/open/space) else if(!length(baseturf_to_replace)) baseturf_to_replace = list(baseturf_to_replace = TRUE) else if(baseturf_to_replace[baseturf_to_replace[1]] != TRUE) // It's not associative @@ -45,6 +45,7 @@ thing.PlaceOnBottom(null, baseturf) else if(baseturf_to_replace[thing.baseturfs]) thing.assemble_baseturfs(baseturf) + return else thing.PlaceOnBottom(null, baseturf) @@ -106,16 +107,16 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper/Initialize(mapload) . = ..() if(!mapload) - log_mapping("[src] spawned outside of mapload!") + log_world("### MAP WARNING, [src] spawned outside of mapload!") return var/obj/machinery/door/airlock/airlock = locate(/obj/machinery/door/airlock) in loc if(airlock) if(airlock.cyclelinkeddir) - log_mapping("[src] at [AREACOORD(src)] tried to set [airlock] cyclelinkeddir, but it's already set!") + log_world("### MAP WARNING, [src] at [AREACOORD(src)] tried to set [airlock] cyclelinkeddir, but it's already set!") else airlock.cyclelinkeddir = dir else - log_mapping("[src] failed to find an airlock at [AREACOORD(src)]") + log_world("### MAP WARNING, [src] failed to find an airlock at [AREACOORD(src)]") /obj/effect/mapping_helpers/airlock/locked @@ -125,16 +126,16 @@ /obj/effect/mapping_helpers/airlock/locked/Initialize(mapload) . = ..() if(!mapload) - log_mapping("[src] spawned outside of mapload!") + log_world("### MAP WARNING, [src] spawned outside of mapload!") return var/obj/machinery/door/airlock/airlock = locate(/obj/machinery/door/airlock) in loc if(airlock) if(airlock.locked) - log_mapping("[src] at [AREACOORD(src)] tried to bolt [airlock] but it's already locked!") + log_world("### MAP WARNING, [src] at [AREACOORD(src)] tried to bolt [airlock] but it's already locked!") else airlock.locked = TRUE else - log_mapping("[src] failed to find an airlock at [AREACOORD(src)]") + log_world("### MAP WARNING, [src] failed to find an airlock at [AREACOORD(src)]") /obj/effect/mapping_helpers/airlock/unres name = "airlock unresctricted side helper" @@ -143,13 +144,13 @@ /obj/effect/mapping_helpers/airlock/unres/Initialize(mapload) . = ..() if(!mapload) - log_mapping("[src] spawned outside of mapload!") + log_world("### MAP WARNING, [src] spawned outside of mapload!") return var/obj/machinery/door/airlock/airlock = locate(/obj/machinery/door/airlock) in loc if(airlock) airlock.unres_sides ^= dir else - log_mapping("[src] failed to find an airlock at [AREACOORD(src)]") + log_world("### MAP WARNING, [src] failed to find an airlock at [AREACOORD(src)]") //needs to do its thing before spawn_rivers() is called @@ -163,6 +164,17 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava) var/turf/T = get_turf(src) T.flags_1 |= NO_LAVA_GEN_1 +/// Adds the map it is on to the z_is_planet list +/obj/effect/mapping_helpers/planet_z + name = "planet z helper" + layer = POINT_LAYER + +/obj/effect/mapping_helpers/planet_z/Initialize() + . = ..() + var/datum/space_level/S = SSmapping.get_level(z) + S.traits[ZTRAIT_PLANET] = TRUE + + //This helper applies components to things on the map directly. /obj/effect/mapping_helpers/component_injector name = "Component Injector" diff --git a/code/modules/mapping/preloader.dm b/code/modules/mapping/preloader.dm index 4b61663f66..e6fa2421a0 100644 --- a/code/modules/mapping/preloader.dm +++ b/code/modules/mapping/preloader.dm @@ -8,26 +8,18 @@ GLOBAL_DATUM_INIT(_preloader, /datum/map_preloader, new) var/list/attributes var/target_path -/world/proc/preloader_setup(list/the_attributes, path) +/datum/map_preloader/proc/setup(list/the_attributes, path) if(the_attributes.len) GLOB.use_preloader = TRUE - var/datum/map_preloader/preloader_local = GLOB._preloader - preloader_local.attributes = the_attributes - preloader_local.target_path = path + attributes = the_attributes + target_path = path -/world/proc/preloader_load(atom/what) +/datum/map_preloader/proc/load(atom/what) GLOB.use_preloader = FALSE - var/datum/map_preloader/preloader_local = GLOB._preloader - for(var/attribute in preloader_local.attributes) - var/value = preloader_local.attributes[attribute] + for(var/attribute in attributes) + var/value = attributes[attribute] if(islist(value)) value = deepCopyList(value) - #ifdef TESTING - if(what.vars[attribute] == value) - var/message = "[what.type] at [AREACOORD(what)] - VAR: [attribute] = [isnull(value) ? "null" : (isnum(value) ? value : "\"[value]\"")]" - log_mapping("DIRTY VAR: [message]") - GLOB.dirty_vars += message - #endif what.vars[attribute] = value /area/template_noop diff --git a/code/modules/mapping/reader.dm b/code/modules/mapping/reader.dm index 9b27691dd3..22be4aa246 100644 --- a/code/modules/mapping/reader.dm +++ b/code/modules/mapping/reader.dm @@ -306,8 +306,8 @@ //first instance the /area and remove it from the members list index = members.len if(members[index] != /area/template_noop) + GLOB._preloader.setup(members_attributes[index])//preloader for assigning set variables on atom creation var/atype = members[index] - world.preloader_setup(members_attributes[index], atype)//preloader for assigning set variables on atom creation var/atom/instance = areaCache[atype] if (!instance) instance = GLOB.areas_by_type[atype] @@ -318,7 +318,7 @@ instance.contents.Add(crds) if(GLOB.use_preloader && instance) - world.preloader_load(instance) + GLOB._preloader.load(instance) //then instance the /turf and, if multiple tiles are presents, simulates the DMM underlays piling effect @@ -354,7 +354,7 @@ //Instance an atom at (x,y,z) and gives it the variables in attributes /datum/parsed_map/proc/instance_atom(path,list/attributes, turf/crds, no_changeturf, placeOnTop) - world.preloader_setup(attributes, path) + GLOB._preloader.setup(attributes, path) if(crds) if(ispath(path, /turf)) @@ -368,7 +368,7 @@ . = create_atom(path, crds)//first preloader pass if(GLOB.use_preloader && .)//second preloader pass, for those atoms that don't ..() in New() - world.preloader_load(.) + GLOB._preloader.load(.) //custom CHECK_TICK here because we don't want things created while we're sleeping to not initialize if(TICK_CHECK) diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index bdca4bb7df..559ffc0673 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -14,7 +14,7 @@ flags_inv = HIDEJUMPSUIT|HIDETAUR allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe) resistance_flags = FIRE_PROOF - mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC + tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/head/hooded/explorer @@ -29,7 +29,6 @@ resistance_flags = FIRE_PROOF /obj/item/clothing/suit/hooded/explorer/standard - hoodtype = /obj/item/clothing/head/hooded/explorer/standard /obj/item/clothing/head/hooded/explorer/standard @@ -71,7 +70,7 @@ clothing_flags = THICKMATERIAL //not spaceproof max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | LAVA_PROOF - mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC + tauric = TRUE //Citadel Add for tauric hardsuits slowdown = 0 armor = list("melee" = 70, "bullet" = 40, "laser" = 10, "energy" = 10, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe) @@ -117,7 +116,7 @@ glass_overlay.appearance_flags = RESET_COLOR add_overlay(glass_overlay) -/obj/item/clothing/head/helmet/space/hostile_environment/worn_overlays(isinhands, icon_file, style_flags = NONE) +/obj/item/clothing/head/helmet/space/hostile_environment/worn_overlays(isinhands) . = ..() if(!isinhands) var/mutable_appearance/M = mutable_appearance('icons/mob/head.dmi', "hostile_env_glass") diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm index b2c0c1cc87..eb3e6a5b58 100644 --- a/code/modules/mining/equipment/kinetic_crusher.dm +++ b/code/modules/mining/equipment/kinetic_crusher.dm @@ -29,15 +29,6 @@ var/light_on = FALSE var/brightness_on = 7 -/obj/item/twohanded/kinetic_crusher/cyborg //probably give this a unique sprite later - desc = "An integrated version of the standard kinetic crusher with a grinded down axe head to dissuade mis-use against crewmen. Deals damage equal to the standard crusher against creatures, however." - force = 10 //wouldn't want to give a borg a 20 brute melee weapon unemagged now would we - detonation_damage = 60 - wielded = 1 - -/obj/item/twohanded/kinetic_crusher/cyborg/unwield() - return - /obj/item/twohanded/kinetic_crusher/Initialize() . = ..() AddComponent(/datum/component/butchering, 60, 110) //technically it's huge and bulky, but this provides an incentive to use it diff --git a/code/modules/mining/equipment/mining_tools.dm b/code/modules/mining/equipment/mining_tools.dm index d776628def..e02f38b7e3 100644 --- a/code/modules/mining/equipment/mining_tools.dm +++ b/code/modules/mining/equipment/mining_tools.dm @@ -16,20 +16,6 @@ toolspeed = 1 usesound = list('sound/effects/picaxe1.ogg', 'sound/effects/picaxe2.ogg', 'sound/effects/picaxe3.ogg') attack_verb = list("hit", "pierced", "sliced", "attacked") - var/digrange = 1 - -/obj/item/pickaxe/attack_self(mob/user) - if(initial(digrange) > 0) - if(digrange == 0) - digrange = initial(digrange) - toolspeed = initial(toolspeed) - to_chat(user, "You increase the tools dig range, decreasing its mining speed.") - else - digrange = 0 - toolspeed = toolspeed/2 - to_chat(user, "You decrease the tools dig range, increasing its mining speed.") - else - to_chat(user, "Tool does not have a configureable dig range.") /obj/item/pickaxe/suicide_act(mob/living/user) user.visible_message("[user] begins digging into [user.p_their()] chest! It looks like [user.p_theyre()] trying to commit suicide!") @@ -80,7 +66,6 @@ name = "cyborg mining drill" desc = "An integrated electric mining drill." flags_1 = NONE - toolspeed = 0.5 /obj/item/pickaxe/drill/cyborg/Initialize() . = ..() @@ -89,25 +74,23 @@ /obj/item/pickaxe/drill/diamonddrill name = "diamond-tipped mining drill" icon_state = "diamonddrill" - toolspeed = 0.4 + toolspeed = 0.2 desc = "Yours is the drill that will pierce the heavens!" /obj/item/pickaxe/drill/cyborg/diamond //This is the BORG version! name = "diamond-tipped cyborg mining drill" //To inherit the NODROP_1 flag, and easier to change borg specific drill mechanics. icon_state = "diamonddrill" - toolspeed = 0.4 - digrange = 2 + toolspeed = 0.1 /obj/item/pickaxe/drill/jackhammer name = "sonic jackhammer" icon_state = "jackhammer" item_state = "jackhammer" w_class = WEIGHT_CLASS_HUGE - toolspeed = 0.2 //the epitome of powertools. extremely fast mining, laughs at puny walls + toolspeed = 0.1 //the epitome of powertools. extremely fast mining, laughs at puny walls usesound = 'sound/weapons/sonic_jackhammer.ogg' hitsound = 'sound/weapons/sonic_jackhammer.ogg' desc = "Cracks rocks with sonic blasts, and doubles as a demolition power tool for smashing walls." - digrange = 2 /obj/item/shovel name = "shovel" diff --git a/code/modules/mining/equipment/regenerative_core.dm b/code/modules/mining/equipment/regenerative_core.dm index 1e4244165f..b6c765dbb0 100644 --- a/code/modules/mining/equipment/regenerative_core.dm +++ b/code/modules/mining/equipment/regenerative_core.dm @@ -74,9 +74,6 @@ if(inert) to_chat(user, "[src] has decayed and can no longer be used to heal.") return - if(isvamp(user)) - to_chat(user, "[src] breaks down as it fails to heal your unholy self") - return else if(H.stat == DEAD) to_chat(user, "[src] are useless on the dead.") diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index 10b33cd473..356c4913b9 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -67,18 +67,11 @@ new /obj/effect/particle_effect/smoke(get_turf(src)) qdel(src) -//Non-default pods - /obj/item/survivalcapsule/luxury name = "luxury bluespace shelter capsule" desc = "An exorbitantly expensive luxury suite stored within a pocket of bluespace." template_id = "shelter_beta" -/obj/item/survivalcapsule/luxuryelite - name = "luxury elite bar capsule" - desc = "A luxury bar in a capsule. Bartender required and not included." - template_id = "shelter_charlie" - //Pod objects //Window diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm index ea0174d2a5..4077f21ea9 100644 --- a/code/modules/mining/lavaland/ash_flora.dm +++ b/code/modules/mining/lavaland/ash_flora.dm @@ -148,7 +148,7 @@ desc = "Some shavings from a tall mushroom. With enough, might serve as a bowl." icon = 'icons/obj/lavaland/ash_flora.dmi' icon_state = "mushroom_shavings" - list_reagents = list(/datum/reagent/consumable/sugar = 3, /datum/reagent/consumable/ethanol = 2, /datum/reagent/stabilizing_agent = 3, /datum/reagent/toxin/minttoxin = 2) + list_reagents = list("sugar" = 3, "ethanol" = 2, "stabilizing_agent" = 3, "minttoxin" = 2) w_class = WEIGHT_CLASS_TINY resistance_flags = FLAMMABLE max_integrity = 100 @@ -166,7 +166,7 @@ /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf name = "mushroom leaf" desc = "A leaf, from a mushroom." - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/vitfro = 2, /datum/reagent/drug/nicotine = 2) + list_reagents = list("nutriment" = 3, "vitfro" = 2, "nicotine" = 2) icon_state = "mushroom_leaf" seed = /obj/item/seeds/lavaland/porcini wine_power = 40 @@ -174,7 +174,7 @@ /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_cap name = "mushroom cap" desc = "The cap of a large mushroom." - list_reagents = list(/datum/reagent/toxin/mindbreaker = 2, /datum/reagent/consumable/entpoly = 4, /datum/reagent/drug/mushroomhallucinogen = 2) + list_reagents = list("mindbreaker" = 2, "entpoly" = 4, "mushroomhallucinogen" = 2) icon_state = "mushroom_cap" seed = /obj/item/seeds/lavaland/inocybe wine_power = 70 @@ -182,14 +182,14 @@ /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_stem name = "mushroom stem" desc = "A long mushroom stem. It's slightly glowing." - list_reagents = list(/datum/reagent/consumable/tinlux = 2, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/drug/space_drugs = 1) + list_reagents = list("tinlux" = 2, "vitamin" = 1, "space_drugs" = 1) icon_state = "mushroom_stem" seed = /obj/item/seeds/lavaland/ember wine_power = 60 /obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit name = "cactus fruit" - list_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/vitfro = 6) + list_reagents = list("vitamin" = 2, "nutriment" = 2, "vitfro" = 6) desc = "A cactus fruit covered in a thick, reddish skin. And some ash." icon_state = "cactus_fruit" seed = /obj/item/seeds/lavaland/cactus @@ -218,7 +218,7 @@ else if(contents.len >= 20) to_chat(user, "You can't add more ingredients to [src]!") else - if(reagents.has_reagent(/datum/reagent/water, 10)) //are we starting a soup or a salad? + if(reagents.has_reagent("water", 10)) //are we starting a soup or a salad? var/obj/item/reagent_containers/food/snacks/customizable/A = new/obj/item/reagent_containers/food/snacks/customizable/soup/ashsoup(get_turf(src)) A.initialize_custom_food(src, S, user) else diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 11190009cc..ab3b20ac9f 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -559,7 +559,7 @@ /obj/item/reagent_containers/glass/bottle/potion/flight name = "strange elixir" desc = "A flask with an almost-holy aura emitting from it. The label on the bottle says: 'erqo'hyy tvi'rf lbh jv'atf'." - list_reagents = list(/datum/reagent/flightpotion = 5) + list_reagents = list("flightpotion" = 5) /obj/item/reagent_containers/glass/bottle/potion/update_icon() if(reagents.total_volume) @@ -569,6 +569,7 @@ /datum/reagent/flightpotion name = "Flight Potion" + id = "flightpotion" description = "Strange mutagenic compound of unknown origins." reagent_state = LIQUID color = "#FFEBEB" @@ -843,7 +844,7 @@ switch(random) if(1) to_chat(user, "Your appearance morphs to that of a very small humanoid ash dragon! You get to look like a freak without the cool abilities.") - H.dna.features = list("mcolor" = "A02720", "tail_lizard" = "Dark Tiger", "tail_human" = "None", "snout" = "Sharp", "horns" = "Curled", "ears" = "None", "wings" = "None", "frills" = "None", "spines" = "Long", "body_markings" = "Dark Tiger Body", "legs" = "Digitigrade") + H.dna.features = list("mcolor" = "A02720", "tail_lizard" = "Dark Tiger", "tail_human" = "None", "snout" = "Sharp", "horns" = "Curled", "ears" = "None", "wings" = "None", "frills" = "None", "spines" = "Long", "body_markings" = "Dark Tiger Body", "legs" = "Digitigrade Legs") H.eye_color = "fee5a3" H.set_species(/datum/species/lizard) if(2) @@ -925,7 +926,7 @@ timer = world.time + create_delay + 1 if(do_after(user, create_delay, target = T)) var/old_name = T.name - if(T.TerraformTurf(turf_type, flags = CHANGETURF_INHERIT_AIR)) + if(T.TerraformTurf(turf_type)) user.visible_message("[user] turns \the [old_name] into [transform_string]!") message_admins("[ADMIN_LOOKUPFLW(user)] fired the lava staff at [ADMIN_VERBOSEJMP(T)]") log_game("[key_name(user)] fired the lava staff at [AREACOORD(T)].") @@ -936,7 +937,7 @@ qdel(L) else var/old_name = T.name - if(T.TerraformTurf(reset_turf_type, flags = CHANGETURF_INHERIT_AIR)) + if(T.TerraformTurf(reset_turf_type)) user.visible_message("[user] turns \the [old_name] into [reset_string]!") timer = world.time + reset_cooldown playsound(T,'sound/magic/fireball.ogg', 200, 1) diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index b5f7bbf8ab..79da476719 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -50,7 +50,7 @@ /obj/machinery/mineral/ore_redemption/examine(mob/user) . = ..() if(in_range(user, src) || isobserver(user)) - . += "The status display reads: Smelting [sheet_per_ore] sheet(s) per piece of ore.
    Reward point generation at [point_upgrade*100]%.
    Ore pickup speed at [ore_pickup_rate].
    " + . += "The status display reads: Smelting [sheet_per_ore] sheet(s) per piece of ore.
    Ore pickup speed at [ore_pickup_rate].
    " /obj/machinery/mineral/ore_redemption/proc/smelt_ore(obj/item/stack/ore/O) var/datum/component/material_container/mat_container = materials.mat_container @@ -63,7 +63,7 @@ ore_buffer -= O if(O && O.refined_type) - points += O.points * point_upgrade * O.amount + points += O.points * O.amount var/material_amount = mat_container.get_item_material_amount(O) diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index 54f8e11b07..a8e867cef0 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -54,7 +54,6 @@ new /datum/data/mining_equipment("Super Resonator", /obj/item/resonator/upgraded, 2500), new /datum/data/mining_equipment("Jump Boots", /obj/item/clothing/shoes/bhop, 2500), new /datum/data/mining_equipment("Luxury Shelter Capsule", /obj/item/survivalcapsule/luxury, 3000), - new /datum/data/mining_equipment("Luxury Bar Capsule", /obj/item/survivalcapsule/luxuryelite, 10000), new /datum/data/mining_equipment("Nanotrasen Minebot", /mob/living/simple_animal/hostile/mining_drone, 800), new /datum/data/mining_equipment("Minebot Melee Upgrade", /obj/item/mine_bot_upgrade, 400), new /datum/data/mining_equipment("Minebot Armor Upgrade", /obj/item/mine_bot_upgrade/health, 400), @@ -302,7 +301,7 @@ /obj/item/storage/backpack/duffelbag/mining_cloned name = "mining replacement kit" - desc = "A large bag that has advance tools and a spare jumpsuit, boots, and gloves for a newly cloned miner to get back in the field. Even has a new ID!" + desc = "A large bag that has advance tools and a spare jumpsuit, boots, and gloves for a newly cloned miner to get back in the field. Even as a new Id!" /obj/item/storage/backpack/duffelbag/mining_cloned/PopulateContents() new /obj/item/pickaxe/mini(src) diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index 291664ce3e..c3a33f36f5 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -358,7 +358,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_gold_heads" value = 50 materials = list(MAT_GOLD = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list(/datum/reagent/gold = 4) + grind_results = list("gold" = 4) /obj/item/coin/silver name = "silver coin" @@ -366,7 +366,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_silver_heads" value = 20 materials = list(MAT_SILVER = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list(/datum/reagent/silver = 4) + grind_results = list("silver" = 4) /obj/item/coin/diamond name = "diamond coin" @@ -374,7 +374,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_diamond_heads" value = 500 materials = list(MAT_DIAMOND = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list(/datum/reagent/carbon = 4) + grind_results = list("carbon" = 4) /obj/item/coin/iron name = "iron coin" @@ -382,7 +382,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_iron_heads" value = 1 materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list(/datum/reagent/iron = 4) + grind_results = list("iron" = 4) /obj/item/coin/plasma name = "plasma coin" @@ -390,7 +390,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_plasma_heads" value = 100 materials = list(MAT_PLASMA = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list(/datum/reagent/toxin/plasma = 4) + grind_results = list("plasma" = 4) /obj/item/coin/uranium name = "uranium coin" @@ -398,7 +398,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_uranium_heads" value = 80 materials = list(MAT_URANIUM = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list(/datum/reagent/uranium = 4) + grind_results = list("uranium" = 4) /obj/item/coin/bananium name = "bananium coin" @@ -406,7 +406,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_bananium_heads" value = 1000 //makes the clown cry materials = list(MAT_BANANIUM = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list(/datum/reagent/consumable/banana = 4) + grind_results = list("banana" = 4) /obj/item/coin/adamantine name = "adamantine coin" @@ -427,7 +427,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ sideslist = list("heads") materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT*0.2) value = 1 - grind_results = list(/datum/reagent/iron = 4) + grind_results = list("iron" = 4) /obj/item/coin/antagtoken name = "antag token" @@ -436,7 +436,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ desc = "A novelty coin that helps the heart know what hard evidence cannot prove." sideslist = list("valid", "salad") value = 0 - grind_results = list(/datum/reagent/consumable/sodiumchloride = 4) + grind_results = list("sodiumchloride" = 4) /obj/item/coin/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/stack/cable_coil)) diff --git a/code/modules/mining/point_bank.dm b/code/modules/mining/point_bank.dm deleted file mode 100644 index 8d0bb4e1e4..0000000000 --- a/code/modules/mining/point_bank.dm +++ /dev/null @@ -1,49 +0,0 @@ -/obj/machinery/point_bank - name = "mining point bank" - desc = "A wall mounted machine that can be used to store and transfer mining points. Sharing is caring!" - icon = 'icons/obj/machines/mining_machines.dmi' - icon_state = "ore_redemption" - density = FALSE - req_access = list(ACCESS_MINERAL_STOREROOM) - circuit = null - layer = BELOW_OBJ_LAYER - var/points = 0 - -/obj/machinery/point_bank/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) - ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) - if(!ui) - ui = new(user, src, ui_key, "point_bank", "Point Bank", 200, 100, master_ui, state) - ui.open() - -/obj/machinery/point_bank/ui_data(mob/user) - var/list/data = list() - data["totalPoints"] = points - return data - -/obj/machinery/mineral/ore_redemption/ui_act(action, params) - if(..()) - return - switch(action) - if("Claim") - var/mob/M = usr - var/obj/item/card/id/I = M.get_idcard(TRUE) - if(points) - if(I) - I.mining_points += points - points = 0 - else - to_chat(usr, "No ID detected.") - else - to_chat(usr, "No points to claim.") - return TRUE - -/obj/machinery/point_bank/power_change() - ..() - update_icon() - -/obj/machinery/point_bank/update_icon() - if(powered()) - icon_state = initial(icon_state) - else - icon_state = "[initial(icon_state)]-off" - return \ No newline at end of file diff --git a/code/modules/mining/shelters.dm b/code/modules/mining/shelters.dm index 3e0968eebb..a8b4eab8d2 100644 --- a/code/modules/mining/shelters.dm +++ b/code/modules/mining/shelters.dm @@ -58,18 +58,3 @@ . = ..() whitelisted_turfs = typecacheof(/turf/closed/mineral) banned_objects = typecacheof(/obj/structure/stone_tile) - -/datum/map_template/shelter/charlie - name = "Shelter Charlie" - shelter_id = "shelter_charlie" - description = "A luxury elite bar which holds an entire bar \ - along with two vending machines, tables, and a restroom that \ - also has a sink. This isn't a survival capsule and so you can \ - expect that this won't save you if you're bleeding out to \ - death." - mappath = "_maps/templates/shelter_3.dmm" - -/datum/map_template/shelter/charlie/New() - . = ..() - whitelisted_turfs = typecacheof(/turf/closed/mineral) - banned_objects = typecacheof(/obj/structure/stone_tile) \ No newline at end of file diff --git a/code/modules/mob/dead/new_player/preferences_setup.dm b/code/modules/mob/dead/new_player/preferences_setup.dm index 5b664dc01a..7aae26526e 100644 --- a/code/modules/mob/dead/new_player/preferences_setup.dm +++ b/code/modules/mob/dead/new_player/preferences_setup.dm @@ -27,7 +27,12 @@ /datum/preferences/proc/update_preview_icon(equip_job = TRUE) // Determine what job is marked as 'High' priority, and dress them up as such. - var/datum/job/previewJob = get_highest_job() + var/datum/job/previewJob + var/highest_pref = 0 + for(var/job in job_preferences) + if(job_preferences["[job]"] > highest_pref) + previewJob = SSjob.GetJob(job) + highest_pref = job_preferences["[job]"] if(previewJob) // Silicons only need a very basic preview since there is no customization for them. @@ -52,11 +57,3 @@ parent.show_character_previews(new /mutable_appearance(mannequin)) unset_busy_human_dummy(DUMMY_HUMAN_SLOT_PREFERENCES) -/datum/preferences/proc/get_highest_job() - var/highest_pref = 0 - var/datum/job/highest_job - for(var/job in job_preferences) - if(job_preferences["[job]"] > highest_pref) - highest_job = SSjob.GetJob(job) - highest_pref = job_preferences["[job]"] - return highest_job diff --git a/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm b/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm index 241ec8118e..dd66f68e5d 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm @@ -74,5 +74,4 @@ /datum/sprite_accessory/underwear icon = 'icons/mob/underwear.dmi' - var/has_color = FALSE - var/has_digitigrade = FALSE \ No newline at end of file + var/has_color = FALSE \ No newline at end of file diff --git a/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm b/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm index b31a41bcc7..15640a2699 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm @@ -27,33 +27,28 @@ extra2 = TRUE center = TRUE dimension_x = 64 - var/taur_mode = NONE //Must be a single specific tauric suit variation bitflag. Don't do FLAG_1|FLAG_2 - var/alt_taur_mode = NONE //Same as above. + var/taur_mode = NOT_TAURIC color_src = MATRIXED /datum/sprite_accessory/taur/none - dimension_x = 32 - center = FALSE name = "None" icon_state = "None" /datum/sprite_accessory/taur/cow name = "Cow" icon_state = "cow" - taur_mode = STYLE_HOOF_TAURIC - alt_taur_mode = STYLE_PAW_TAURIC + taur_mode = HOOF_TAURIC /datum/sprite_accessory/taur/deer name = "Deer" icon_state = "deer" - taur_mode = STYLE_HOOF_TAURIC - alt_taur_mode = STYLE_PAW_TAURIC + taur_mode = HOOF_TAURIC color_src = MUTCOLORS /datum/sprite_accessory/taur/drake name = "Drake" icon_state = "drake" - taur_mode = STYLE_PAW_TAURIC + taur_mode = PAW_TAURIC /datum/sprite_accessory/taur/drider name = "Drider" @@ -63,68 +58,67 @@ /datum/sprite_accessory/taur/eevee name = "Eevee" icon_state = "eevee" - taur_mode = STYLE_PAW_TAURIC + taur_mode = PAW_TAURIC color_src = MUTCOLORS /datum/sprite_accessory/taur/fox name = "Fox" icon_state = "fox" - taur_mode = STYLE_PAW_TAURIC + taur_mode = PAW_TAURIC /datum/sprite_accessory/taur/husky name = "Husky" icon_state = "husky" - taur_mode = STYLE_PAW_TAURIC + taur_mode = PAW_TAURIC /datum/sprite_accessory/taur/horse name = "Horse" icon_state = "horse" - taur_mode = STYLE_HOOF_TAURIC - alt_taur_mode = STYLE_PAW_TAURIC + taur_mode = HOOF_TAURIC /datum/sprite_accessory/taur/lab name = "Lab" icon_state = "lab" - taur_mode = STYLE_PAW_TAURIC + taur_mode = PAW_TAURIC /datum/sprite_accessory/taur/naga name = "Naga" icon_state = "naga" - taur_mode = STYLE_SNEK_TAURIC + taur_mode = SNEK_TAURIC /datum/sprite_accessory/taur/otie name = "Otie" icon_state = "otie" - taur_mode = STYLE_PAW_TAURIC + taur_mode = PAW_TAURIC /datum/sprite_accessory/taur/pede name = "Scolipede" icon_state = "pede" - taur_mode = STYLE_PAW_TAURIC + taur_mode = PAW_TAURIC color_src = MUTCOLORS /datum/sprite_accessory/taur/panther name = "Panther" icon_state = "panther" - taur_mode = STYLE_PAW_TAURIC + taur_mode = PAW_TAURIC /datum/sprite_accessory/taur/shepherd name = "Shepherd" icon_state = "shepherd" - taur_mode = STYLE_PAW_TAURIC + taur_mode = PAW_TAURIC /datum/sprite_accessory/taur/tentacle name = "Tentacle" icon_state = "tentacle" - taur_mode = STYLE_SNEK_TAURIC + taur_mode = SNEK_TAURIC color_src = MUTCOLORS /datum/sprite_accessory/taur/tiger name = "Tiger" icon_state = "tiger" - taur_mode = STYLE_PAW_TAURIC + taur_mode = PAW_TAURIC /datum/sprite_accessory/taur/wolf name = "Wolf" icon_state = "wolf" - taur_mode = STYLE_PAW_TAURIC + taur_mode = PAW_TAURIC diff --git a/code/modules/mob/dead/new_player/sprite_accessories/socks.dm b/code/modules/mob/dead/new_player/sprite_accessories/socks.dm index 19ec677a72..0a35f0cd26 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/socks.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/socks.dm @@ -2,9 +2,6 @@ // Socks Definitions // /////////////////////// -/datum/sprite_accessory/underwear/socks - has_digitigrade = TRUE - /datum/sprite_accessory/underwear/socks/nude name = "Nude" icon_state = null diff --git a/code/modules/mob/dead/new_player/sprite_accessories/undershirt.dm b/code/modules/mob/dead/new_player/sprite_accessories/undershirt.dm index 58c64dc7d0..fb40563ccf 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/undershirt.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/undershirt.dm @@ -310,40 +310,4 @@ name = "Tube Top" icon_state = "tubetop" has_color = TRUE - gender = FEMALE - -/datum/sprite_accessory/underwear/top/cowboyshirt - name = "Cowboy Shirt Black" - icon_state = "cowboyshirt" - -/datum/sprite_accessory/underwear/top/cowboyshirt/s - name = "Cowboy Shirt Shortsleeved Black" - icon_state = "cowboyshirt_s" - -/datum/sprite_accessory/underwear/top/cowboyshirt/white - name = "Cowboy Shirt White" - icon_state = "cowboyshirt_white" - -/datum/sprite_accessory/underwear/top/cowboyshirt/white/s - name = "Cowboy Shirt Shortsleeved White" - icon_state = "cowboyshirt_whites" - -/datum/sprite_accessory/underwear/top/cowboyshirt/navy - name = "Cowboy Shirt Navy" - icon_state = "cowboyshirt_navy" - -/datum/sprite_accessory/underwear/top/cowboyshirt/navy/s - name = "Cowboy Shirt Shortsleeved Navy" - icon_state = "cowboyshirt_navys" - -/datum/sprite_accessory/underwear/top/cowboyshirt/red - name = "Cowboy Shirt Red" - icon_state = "cowboyshirt_red" - -/datum/sprite_accessory/underwear/top/cowboyshirt/red/s - name = "Cowboy Shirt Shortsleeved Red" - icon_state = "cowboyshirt_reds" - - - - + gender = FEMALE \ No newline at end of file diff --git a/code/modules/mob/dead/new_player/sprite_accessories/underwear.dm b/code/modules/mob/dead/new_player/sprite_accessories/underwear.dm index 9441b5120a..3356804cb3 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/underwear.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/underwear.dm @@ -28,49 +28,41 @@ name = "Boxers" icon_state = "boxers" has_color = TRUE - has_digitigrade = TRUE gender = MALE /datum/sprite_accessory/underwear/bottom/male_bee name = "Boxers - Bee" icon_state = "bee_shorts" - has_digitigrade = TRUE gender = MALE /datum/sprite_accessory/underwear/bottom/male_hearts name = "Boxers - Heart" icon_state = "boxers_heart" - has_digitigrade = TRUE gender = MALE /datum/sprite_accessory/underwear/bottom/male_stripe name = "Boxers - Striped" icon_state = "boxers_striped" - has_digitigrade = TRUE gender = MALE /datum/sprite_accessory/underwear/bottom/male_commie name = "Boxers - Striped Communist" icon_state = "boxers_commie" - has_digitigrade = TRUE gender = MALE /datum/sprite_accessory/underwear/bottom/male_usastripe name = "Boxers - Striped Freedom" icon_state = "boxers_assblastusa" - has_digitigrade = TRUE gender = MALE /datum/sprite_accessory/underwear/bottom/male_uk name = "Boxers - Striped UK" icon_state = "boxers_uk" - has_digitigrade = TRUE gender = MALE /datum/sprite_accessory/underwear/bottom/boxer_briefs name = "Boxer Briefs" icon_state = "boxer_briefs" - has_digitigrade = TRUE has_color = TRUE /datum/sprite_accessory/underwear/bottom/panties @@ -148,7 +140,6 @@ /datum/sprite_accessory/underwear/bottom/longjon name = "Long John Bottoms" icon_state = "ljonb" - has_digitigrade = TRUE has_color = TRUE /datum/sprite_accessory/underwear/bottom/swimsuit_red diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index d234aafca6..2b9b01dc18 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -3,6 +3,8 @@ GLOBAL_LIST_EMPTY(ghost_images_simple) //this is a list of all ghost images as t GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) +#define CANT_REENTER_ROUND -1 + /mob/dead/observer name = "ghost" desc = "It's a g-g-g-g-ghooooost!" //jinkies! @@ -19,6 +21,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) hud_type = /datum/hud/ghost movement_type = GROUND | FLYING var/can_reenter_corpse + var/reenter_round_timeout = 0 // used to prevent people from coming back through ghost roles/midround antags as they suicide/cryo for a duration set by CONFIG_GET(number/suicide_reenter_round_timer) and CONFIG_GET(number/roundstart_suicide_time_limit) var/datum/hud/living/carbon/hud = null // hud var/bootime = 0 var/started_as_observer //This variable is set to 1 when you enter the game as an observer. @@ -134,7 +137,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) AA.onNewMob(src) . = ..() - AddElement(/datum/element/ghost_role_eligibility) + grant_all_languages() /mob/dead/observer/get_photo_description(obj/item/camera/camera) @@ -269,12 +272,16 @@ Works together with spawning an observer, noted above. var/mob/dead/observer/ghost = new(src) // Transfer safety to observer spawning proc. SStgui.on_transfer(src, ghost) // Transfer NanoUIs. ghost.can_reenter_corpse = can_reenter_corpse - if (client && client.prefs && client.prefs.auto_ooc) - if (!(client.prefs.chat_toggles & CHAT_OOC)) - client.prefs.chat_toggles ^= CHAT_OOC + if(penalize) //penalizing them from making a ghost role / midround antag comeback right away. + var/penalty = CONFIG_GET(number/suicide_reenter_round_timer) MINUTES + var/roundstart_quit_limit = CONFIG_GET(number/roundstart_suicide_time_limit) MINUTES + if(world.time < roundstart_quit_limit) //add up the time difference to their antag rolling penalty if they quit before half a (ingame) hour even passed. + penalty += roundstart_quit_limit - world.time + if(penalty) + ghost.reenter_round_timeout = world.realtime + penalty + if(ghost.reenter_round_timeout - SSshuttle.realtimeofstart > SSshuttle.auto_call + SSshuttle.emergencyCallTime + SSshuttle.emergencyDockTime + SSshuttle.emergencyEscapeTime) + ghost.reenter_round_timeout = CANT_REENTER_ROUND transfer_ckey(ghost, FALSE) - ghost.AddElement(/datum/element/ghost_role_eligibility,penalize) // technically already run earlier, but this adds the penalty - // needs to be done AFTER the ckey transfer, too return ghost /* @@ -331,7 +338,12 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp return ghostize(0, penalize = TRUE) - +/mob/dead/observer/proc/can_reenter_round(silent = FALSE) + if(reenter_round_timeout != CANT_REENTER_ROUND && reenter_round_timeout <= world.realtime) + return TRUE + if(!silent) + to_chat(src, "You are unable to reenter the round[reenter_round_timeout != CANT_REENTER_ROUND ? " yet. Your ghost role blacklist will expire in [DisplayTimeText(reenter_round_timeout - world.realtime)]" : ""].") + return FALSE /mob/dead/observer/Move(NewLoc, direct) if(updatedir) @@ -477,32 +489,6 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp pixel_y = 0 animate(src, pixel_y = 2, time = 10, loop = -1) -/mob/dead/observer/verb/observe() - set name = "Observe" - set category = "Ghost" - - var/list/creatures = getpois() - - reset_perspective(null) - - var/eye_name = null - - eye_name = input("Please, select a player!", "Observe", null, null) as null|anything in creatures - - if (!eye_name) - return - - var/mob/mob_eye = creatures[eye_name] - //Istype so we filter out points of interest that are not mobs - if(client && mob_eye && istype(mob_eye)) - client.eye = mob_eye - if(mob_eye.hud_used) - client.screen = list() - LAZYINITLIST(mob_eye.observers) - mob_eye.observers |= src - mob_eye.hud_used.show_hud(mob_eye.hud_used.hud_version, src) - observetarget = mob_eye - /mob/dead/observer/verb/jumptomob() //Moves the ghost instead of just changing the ghosts's eye -Nodrak set category = "Ghost" set name = "Jump to Mob" @@ -833,6 +819,32 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp client.screen = list() hud_used.show_hud(hud_used.hud_version) +/mob/dead/observer/verb/observe() + set name = "Observe" + set category = "OOC" + + var/list/creatures = getpois() + + reset_perspective(null) + + var/eye_name = null + + eye_name = input("Please, select a player!", "Observe", null, null) as null|anything in creatures + + if (!eye_name) + return + + var/mob/mob_eye = creatures[eye_name] + //Istype so we filter out points of interest that are not mobs + if(client && mob_eye && istype(mob_eye)) + client.eye = mob_eye + if(mob_eye.hud_used) + client.screen = list() + LAZYINITLIST(mob_eye.observers) + mob_eye.observers |= src + mob_eye.hud_used.show_hud(mob_eye.hud_used.hud_version, src) + observetarget = mob_eye + /mob/dead/observer/verb/register_pai_candidate() set category = "Ghost" set name = "pAI Setup" @@ -886,3 +898,5 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp spawners_menu = new(src) spawners_menu.ui_interact(src) + +#undef CANT_REENTER_ROUND \ No newline at end of file diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index ade8158e02..8195b3d84b 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -155,7 +155,7 @@ if(iscarbon(AM)) var/mob/living/carbon/C = AM if(blood_id == C.get_blood_id())//both mobs have the same blood substance - if(blood_id == /datum/reagent/blood || blood_id == /datum/reagent/blood/jellyblood) //normal blood + if(blood_id == "blood" || blood_id == "jellyblood") //normal blood if(blood_data["viruses"]) for(var/thing in blood_data["viruses"]) var/datum/disease/D = thing @@ -175,7 +175,7 @@ return /mob/living/carbon/get_blood_data(blood_id) - if(blood_id == /datum/reagent/blood || /datum/reagent/blood/jellyblood) //actual blood reagent + if(blood_id == "blood" || blood_id == "jellyblood") //actual blood reagent var/blood_data = list() //set the blood data blood_data["donor"] = src @@ -191,7 +191,7 @@ blood_data["resistances"] = disease_resistances.Copy() var/list/temp_chem = list() for(var/datum/reagent/R in reagents.reagent_list) - temp_chem[R.type] = R.volume + temp_chem[R.id] = R.volume blood_data["trace_chem"] = list2params(temp_chem) if(mind) blood_data["mind"] = mind @@ -226,21 +226,21 @@ /mob/living/simple_animal/get_blood_id() if(blood_volume) - return /datum/reagent/blood + return "blood" /mob/living/carbon/monkey/get_blood_id() if(!(HAS_TRAIT(src, TRAIT_NOCLONE))) - return /datum/reagent/blood + return "blood" /mob/living/carbon/get_blood_id() if(isjellyperson(src)) - return /datum/reagent/blood/jellyblood + return "jellyblood" if(dna?.species?.exotic_blood) return dna.species.exotic_blood else if((NOBLOOD in dna.species.species_traits) || (HAS_TRAIT(src, TRAIT_NOCLONE))) return else - return /datum/reagent/blood + return "blood" // This is has more potential uses, and is probably faster than the old proc. /proc/get_safe_blood(bloodtype) diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm index 4ed539adc2..d1ace36b8c 100644 --- a/code/modules/mob/living/bloodcrawl.dm +++ b/code/modules/mob/living/bloodcrawl.dm @@ -73,7 +73,7 @@ if(victim.stat == CONSCIOUS) src.visible_message("[victim] kicks free of the blood pool just before entering it!", null, "You hear splashing and struggling.") - else if(victim.reagents && victim.reagents.has_reagent(/datum/reagent/consumable/ethanol/demonsblood)) + else if(victim.reagents && victim.reagents.has_reagent("demonsblood")) visible_message("Something prevents [victim] from entering the pool!", "A strange force is blocking [victim] from entering!", "You hear a splash and a thud.") else victim.forceMove(src) @@ -104,7 +104,7 @@ if(!victim) return FALSE - if(victim.reagents && victim.reagents.has_reagent(/datum/reagent/consumable/ethanol/devilskiss)) + if(victim.reagents && victim.reagents.has_reagent("devilskiss")) to_chat(src, "AAH! THEIR FLESH! IT BURNS!") adjustBruteLoss(25) //I can't use adjustHealth() here because bloodcrawl affects /mob/living and adjustHealth() only affects simple mobs var/found_bloodpool = FALSE diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index f2ea4f2b01..48e79a9050 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -102,16 +102,16 @@ if(istype(O, /obj/item/organ_storage)) //BUG_PROBABLE_CAUSE return //Borg organ bags shouldn't be killing brains - if((organ_flags & ORGAN_FAILING) && O.is_drainable() && O.reagents.has_reagent(/datum/reagent/medicine/neurine)) //Neurine fixes dead brains + if((organ_flags & ORGAN_FAILING) && O.is_drainable() && O.reagents.has_reagent("neurine")) //Neurine fixes dead brains . = TRUE //don't do attack animation. var/cached_Bdamage = brainmob?.health - var/datum/reagent/medicine/neurine/N = reagents.has_reagent(/datum/reagent/medicine/neurine) - var/datum/reagent/medicine/mannitol/M1 = reagents.has_reagent(/datum/reagent/medicine/mannitol) + var/datum/reagent/medicine/neurine/N = reagents.has_reagent("neurine") + var/datum/reagent/medicine/mannitol/M1 = reagents.has_reagent("mannitol") - if(O.reagents.has_reagent(/datum/reagent/medicine/mannitol))//Just a quick way to bolster the effects if someone mixes up a batch. + if(O.reagents.has_reagent("mannitol"))//Just a quick way to bolster the effects if someone mixes up a batch. N.volume *= (M1.volume*0.5) - if(!O.reagents.has_reagent(/datum/reagent/medicine/neurine, 10)) + if(!O.reagents.has_reagent("neurine", 10)) to_chat(user, "There's not enough neurine in [O] to restore [src]!") return @@ -134,14 +134,14 @@ gain_trauma_type(BRAIN_TRAUMA_SPECIAL) return - if((organ_flags & ORGAN_FAILING) && O.is_drainable() && O.reagents.has_reagent(/datum/reagent/medicine/mannitol)) //attempt to heal the brain + if((organ_flags & ORGAN_FAILING) && O.is_drainable() && O.reagents.has_reagent("mannitol")) //attempt to heal the brain . = TRUE //don't do attack animation. - var/datum/reagent/medicine/mannitol/M = reagents.has_reagent(/datum/reagent/medicine/mannitol) + var/datum/reagent/medicine/mannitol/M = reagents.has_reagent("mannitol") if(brain_death || brainmob?.health <= HEALTH_THRESHOLD_DEAD) //if the brain is fucked anyway, do nothing to_chat(user, "[src] is far too damaged, you'll have to use neurine on it!") return - if(!O.reagents.has_reagent(/datum/reagent/medicine/mannitol, 10)) + if(!O.reagents.has_reagent("mannitol", 10)) to_chat(user, "There's not enough mannitol in [O] to restore [src]!") return diff --git a/code/modules/mob/living/carbon/alien/alien_defense.dm b/code/modules/mob/living/carbon/alien/alien_defense.dm index bdc691ce49..b9e27c0637 100644 --- a/code/modules/mob/living/carbon/alien/alien_defense.dm +++ b/code/modules/mob/living/carbon/alien/alien_defense.dm @@ -6,21 +6,21 @@ return 2 //no ears /mob/living/carbon/alien/hitby(atom/movable/AM, skipcatch, hitpush) - return ..(AM, skipcatch = TRUE, hitpush = FALSE) + ..(AM, skipcatch = TRUE, hitpush = FALSE) -/mob/living/carbon/alien/can_embed(obj/item/I) - return FALSE /*Code for aliens attacking aliens. Because aliens act on a hivemind, I don't see them as very aggressive with each other. As such, they can either help or harm other aliens. Help works like the human help command while harm is a simple nibble. In all, this is a lot like the monkey code. /N */ /mob/living/carbon/alien/attack_alien(mob/living/carbon/alien/M) - . = ..() - if(!.) // the attack was blocked or was help/grab intent + if(isturf(loc) && istype(loc.loc, /area/start)) + to_chat(M, "No attacking people at spawn, you jackass.") return + switch(M.a_intent) - if (INTENT_HELP) + + if ("help") if(!recoveringstam) resting = 0 AdjustStun(-60) @@ -28,7 +28,11 @@ In all, this is a lot like the monkey code. /N AdjustUnconscious(-60) AdjustSleeping(-100) visible_message("[M.name] nuzzles [src] trying to wake [p_them()] up!") - if(INTENT_DISARM, INTENT_HARM) + + if ("grab") + grabbedby(M) + + else if(health > 0) M.do_attack_animation(src, ATTACK_EFFECT_BITE) playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1) @@ -46,31 +50,28 @@ In all, this is a lot like the monkey code. /N /mob/living/carbon/alien/attack_hand(mob/living/carbon/human/M) - . = ..() - if(.) //To allow surgery to return properly. - return + if(..()) //to allow surgery to return properly. + return 0 + switch(M.a_intent) - if(INTENT_HELP) + if("help") help_shake_act(M) - if(INTENT_GRAB) + if("grab") grabbedby(M) - if (INTENT_HARM) - if(HAS_TRAIT(M, TRAIT_PACIFISM)) - to_chat(M, "You don't want to hurt [src]!") - return TRUE + if ("harm") M.do_attack_animation(src, ATTACK_EFFECT_PUNCH) - if(INTENT_DISARM) - if(HAS_TRAIT(M, TRAIT_PACIFISM)) - to_chat(M, "You don't want to hurt [src]!") - return TRUE + return 1 + if("disarm") M.do_attack_animation(src, ATTACK_EFFECT_DISARM) + return 1 + return 0 /mob/living/carbon/alien/attack_paw(mob/living/carbon/monkey/M) - . = ..() - if(.) //successful monkey bite. - var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) - apply_damage(rand(1, 3), BRUTE, affecting) + if(..()) + if (stat != DEAD) + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) + apply_damage(rand(1, 3), BRUTE, affecting) /mob/living/carbon/alien/attack_animal(mob/living/simple_animal/M) @@ -92,15 +93,13 @@ In all, this is a lot like the monkey code. /N adjustStaminaLoss(damage) /mob/living/carbon/alien/attack_slime(mob/living/simple_animal/slime/M) - . = ..() - if(!.) //unsuccessful slime attack - return - var/damage = rand(5, 35) - if(M.is_adult) - damage = rand(10, 40) - adjustBruteLoss(damage) - log_combat(M, src, "attacked") - updatehealth() + if(..()) //successful slime attack + var/damage = rand(5, 35) + if(M.is_adult) + damage = rand(10, 40) + adjustBruteLoss(damage) + log_combat(M, src, "attacked") + updatehealth() /mob/living/carbon/alien/ex_act(severity, target, origin) if(origin && istype(origin, /datum/spacevine_mutation) && isvineimmune(src)) diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm index d1ed09665b..fe682b5c99 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -63,7 +63,12 @@ if(A) if(isliving(A)) var/mob/living/L = A - if(!L.check_shields(src, 0, "the [name]", attack_type = LEAP_ATTACK)) + var/blocked = FALSE + if(ishuman(A)) + var/mob/living/carbon/human/H = A + if(H.check_shields(src, 0, "the [name]", attack_type = LEAP_ATTACK)) + blocked = TRUE + if(!blocked) L.visible_message("[src] pounces on [L]!", "[src] pounces on you!") L.Knockdown(100) sleep(2)//Runtime prevention (infinite bump() calls on hulks) diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm index 1d613db07a..b3839a6033 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm @@ -5,11 +5,9 @@ else ..() -/mob/living/carbon/alien/humanoid/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) +/mob/living/carbon/alien/humanoid/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) if(user.a_intent == INTENT_HARM) - . = ..(user, TRUE) - if(.) - return + ..(user, 1) adjustBruteLoss(15) var/hitverb = "punched" if(mob_size < MOB_SIZE_LARGE) @@ -23,46 +21,46 @@ return 1 /mob/living/carbon/alien/humanoid/attack_hand(mob/living/carbon/human/M) - . = ..() - if(.) //To allow surgery to return properly. - return - switch(M.a_intent) - if (INTENT_HARM) - var/damage = rand(1, 9) - if (prob(90)) - playsound(loc, "punch", 25, 1, -1) - visible_message("[M] has punched [src]!", \ - "[M] has punched [src]!", null, COMBAT_MESSAGE_RANGE) - if ((stat != DEAD) && (damage > 9 || prob(5)))//Regular humans have a very small chance of knocking an alien down. - Unconscious(40) - visible_message("[M] has knocked [src] down!", \ - "[M] has knocked [src] down!") - var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) - apply_damage(damage, BRUTE, affecting) - log_combat(M, src, "attacked") - else - playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - visible_message("[M] has attempted to punch [src]!", \ - "[M] has attempted to punch [src]!", null, COMBAT_MESSAGE_RANGE) - - if (INTENT_DISARM) - if (!lying) - if (prob(5)) - Unconscious(40) - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - log_combat(M, src, "pushed") - visible_message("[M] has pushed down [src]!", \ - "[M] has pushed down [src]!") + if(..()) + switch(M.a_intent) + if ("harm") + var/damage = rand(1, 9) + if (prob(90)) + playsound(loc, "punch", 25, 1, -1) + visible_message("[M] has punched [src]!", \ + "[M] has punched [src]!", null, COMBAT_MESSAGE_RANGE) + if ((stat != DEAD) && (damage > 9 || prob(5)))//Regular humans have a very small chance of knocking an alien down. + Unconscious(40) + visible_message("[M] has knocked [src] down!", \ + "[M] has knocked [src] down!") + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) + apply_damage(damage, BRUTE, affecting) + log_combat(M, src, "attacked") else - if (prob(50)) - dropItemToGround(get_active_held_item()) + playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) + visible_message("[M] has attempted to punch [src]!", \ + "[M] has attempted to punch [src]!", null, COMBAT_MESSAGE_RANGE) + + if ("disarm") + if (!lying) + if (prob(5)) + Unconscious(40) playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - visible_message("[M] has disarmed [src]!", \ - "[M] has disarmed [src]!", null, COMBAT_MESSAGE_RANGE) + log_combat(M, src, "pushed") + visible_message("[M] has pushed down [src]!", \ + "[M] has pushed down [src]!") else - playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - visible_message("[M] has attempted to disarm [src]!",\ - "[M] has attempted to disarm [src]!", null, COMBAT_MESSAGE_RANGE) + if (prob(50)) + dropItemToGround(get_active_held_item()) + playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + visible_message("[M] has disarmed [src]!", \ + "[M] has disarmed [src]!", null, COMBAT_MESSAGE_RANGE) + else + playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) + visible_message("[M] has attempted to disarm [src]!",\ + "[M] has attempted to disarm [src]!", null, COMBAT_MESSAGE_RANGE) + + /mob/living/carbon/alien/humanoid/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect) if(!no_effect && !visual_effect_icon) diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 8e1e5aab8d..e1e079cbae 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -14,9 +14,10 @@ var/max_grown = 100 var/time_of_birth - rotate_on_lying = FALSE + rotate_on_lying = 0 bodyparts = list(/obj/item/bodypart/chest/larva, /obj/item/bodypart/head/larva) + //This is fine right now, if we're adding organ specific damage this needs to be updated /mob/living/carbon/alien/larva/Initialize() diff --git a/code/modules/mob/living/carbon/alien/larva/larva_defense.dm b/code/modules/mob/living/carbon/alien/larva/larva_defense.dm index 7dabcf5abf..69c1be707d 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva_defense.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva_defense.dm @@ -1,33 +1,26 @@ /mob/living/carbon/alien/larva/attack_hand(mob/living/carbon/human/M) - . = ..() - if(. || M.a_intent == INTENT_HELP || M.a_intent == INTENT_GRAB) - return - var/damage = rand(1, 9) - if (prob(90)) - playsound(loc, "punch", 25, 1, -1) - log_combat(M, src, "attacked") - visible_message("[M] has kicked [src]!", \ - "[M] has kicked [src]!", null, COMBAT_MESSAGE_RANGE) - if ((stat != DEAD) && (damage > 4.9)) - Unconscious(rand(100,200)) + if(..()) + var/damage = rand(1, 9) + if (prob(90)) + playsound(loc, "punch", 25, 1, -1) + log_combat(M, src, "attacked") + visible_message("[M] has kicked [src]!", \ + "[M] has kicked [src]!", null, COMBAT_MESSAGE_RANGE) + if ((stat != DEAD) && (damage > 4.9)) + Unconscious(rand(100,200)) - var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) - apply_damage(damage, BRUTE, affecting) - else - playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - visible_message("[M] has attempted to kick [src]!", \ - "[M] has attempted to kick [src]!", null, COMBAT_MESSAGE_RANGE) + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) + apply_damage(damage, BRUTE, affecting) + else + playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) + visible_message("[M] has attempted to kick [src]!", \ + "[M] has attempted to kick [src]!", null, COMBAT_MESSAGE_RANGE) -/mob/living/carbon/alien/larva/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) +/mob/living/carbon/alien/larva/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) if(user.a_intent == INTENT_HARM) - . = ..(user, TRUE) - if(.) - return - playsound(loc, "punch", 25, 1, -1) - visible_message("[user] has pummeled [src]!", \ - "[user] has pummeled [src]!", null, COMBAT_MESSAGE_RANGE) + ..(user, 1) adjustBruteLoss(5 + rand(1,9)) new /datum/forced_movement(src, get_step_away(user,src, 30), 1) return 1 diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm index 35751e4b86..e4e8f06cfa 100644 --- a/code/modules/mob/living/carbon/alien/organs.dm +++ b/code/modules/mob/living/carbon/alien/organs.dm @@ -27,7 +27,7 @@ /obj/item/organ/alien/prepare_eat() var/obj/S = ..() - S.reagents.add_reagent(/datum/reagent/toxin/acid, 10) + S.reagents.add_reagent("sacid", 10) return S @@ -46,7 +46,7 @@ /obj/item/organ/alien/plasmavessel/prepare_eat() var/obj/S = ..() - S.reagents.add_reagent(/datum/reagent/toxin/plasma, storedPlasma/10) + S.reagents.add_reagent("plasma", storedPlasma/10) return S /obj/item/organ/alien/plasmavessel/large diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index e74f2e54a9..0bfd23cbff 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -18,7 +18,7 @@ /obj/item/organ/body_egg/alien_embryo/prepare_eat() var/obj/S = ..() - S.reagents.add_reagent(/datum/reagent/toxin/acid, 10) + S.reagents.add_reagent("sacid", 10) return S /obj/item/organ/body_egg/alien_embryo/on_life() @@ -103,17 +103,15 @@ new_xeno.notransform = 0 new_xeno.invisibility = 0 - var/mob/living/carbon/old_owner = owner if(kill_on_sucess) //ITS TOO LATE new_xeno.visible_message("[new_xeno] bursts out of [owner]!", "You exit [owner], your previous host.", "You hear organic matter ripping and tearing!") owner.apply_damage(rand(100,300),BRUTE,zone,FALSE) //Random high damage to torso so health sensors don't metagame. - var/obj/item/bodypart/B = owner.get_bodypart(zone) - B.drop_organs(owner) //Lets still make the death gruesome and impossible to just simply defib someone. + owner.spill_organs(TRUE,FALSE,TRUE) //Lets still make the death gruesome and impossible to just simply defib someone. owner.death(FALSE) //Just in case some freak occurance occurs where you somehow survive all your organs being removed from you and the 100-300 brute damage. else //When it is removed via surgery at a late stage, rather than forced. new_xeno.visible_message("[new_xeno] wriggles out of [owner]!", "You exit [owner], your previous host.") owner.adjustBruteLoss(40) - old_owner.cut_overlay(overlay) + owner.cut_overlay(overlay) qdel(src) diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index 8baeb93195..1cea4a6e82 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -21,7 +21,7 @@ flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH layer = MOB_LAYER max_integrity = 100 - mutantrace_variation = STYLE_MUZZLE + mutantrace_variation = MUTANTRACE_VARIATION var/stat = CONSCIOUS //UNCONSCIOUS is the idle state in this case diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 2d58eb6a7e..52cf82a06a 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -157,7 +157,6 @@ if(getStaminaLoss() >= STAMINA_SOFTCRIT) to_chat(src, "You're too exhausted.") return - var/random_turn = a_intent == INTENT_HARM //END OF CIT CHANGES var/obj/item/I = src.get_active_held_item() @@ -182,7 +181,7 @@ if(HAS_TRAIT(src, TRAIT_PACIFISM)) to_chat(src, "You gently let go of [throwable_mob].") return - + adjustStaminaLossBuffered(25)//CIT CHANGE - throwing an entire person shall be very tiring var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors var/turf/end_T = get_turf(target) @@ -205,7 +204,7 @@ do_attack_animation(target, no_effect = 1) playsound(loc, 'sound/weapons/punchmiss.ogg', 50, 1, -1) newtonian_move(get_dir(target, src)) - thrown_thing.throw_at(target, thrown_thing.throw_range, thrown_thing.throw_speed, src, null, null, null, random_turn) + thrown_thing.throw_at(target, thrown_thing.throw_range, thrown_thing.throw_speed, src) @@ -518,7 +517,7 @@ add_splatter_floor(T) if(stun) adjustBruteLoss(3) - else if(src.reagents.has_reagent(/datum/reagent/consumable/ethanol/blazaam)) + else if(src.reagents.has_reagent("blazaam")) if(T) T.add_vomit_floor(src, VOMIT_PURPLE) else @@ -988,4 +987,4 @@ if(H.clothing_flags & SCAN_REAGENTS) return TRUE if(isclothing(wear_mask) && (wear_mask.clothing_flags & SCAN_REAGENTS)) - return TRUE \ No newline at end of file + return TRUE diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 161b5875b1..06575aa802 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -48,42 +48,41 @@ if(affecting && affecting.dismemberable && affecting.get_damage() >= (affecting.max_damage - P.dismemberment)) affecting.dismember(P.damtype) -/mob/living/carbon/catch_item(obj/item/I, skip_throw_mode_check = FALSE) - . = ..() - if(!HAS_TRAIT(src, TRAIT_AUTO_CATCH_ITEM) && !skip_throw_mode_check && !in_throw_mode) +/mob/living/carbon/proc/can_catch_item(skip_throw_mode_check) + . = FALSE + if(mind) + if(mind.martial_art && mind.martial_art.dodge_chance == 100) + return TRUE + if(!skip_throw_mode_check && !in_throw_mode) return - if(get_active_held_item() || restrained()) + if(get_active_held_item()) return - I.attack_hand(src) - if(get_active_held_item() == I) //if our attack_hand() picks up the item... - visible_message("[src] catches [I]!") //catch that sucker! - throw_mode_off() - return TRUE + if(restrained()) + return + return TRUE + +/mob/living/carbon/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked = FALSE) + if(!skipcatch) //ugly, but easy + if(can_catch_item()) + if(istype(AM, /obj/item)) + var/obj/item/I = AM + if (mind) + if (mind.martial_art && mind.martial_art.dodge_chance == 100) //autocatch for rising bass + if (get_active_held_item()) + visible_message("[I] falls to the ground as [src] chops it out of the air!") + return 1 + if(!in_throw_mode) + throw_mode_on() + if(isturf(I.loc)) + I.attack_hand(src) + if(get_active_held_item() == I) //if our attack_hand() picks up the item... + visible_message("[src] catches [I]!") //catch that sucker! + throw_mode_off() + return 1 + ..() -/mob/living/carbon/embed_item(obj/item/I) - throw_alert("embeddedobject", /obj/screen/alert/embeddedobject) - var/obj/item/bodypart/L = pick(bodyparts) - L.embedded_objects |= I - I.add_mob_blood(src)//it embedded itself in you, of course it's bloody! - I.forceMove(src) - L.receive_damage(I.w_class*I.embedding.embedded_impact_pain_multiplier) - visible_message("[I] embeds itself in [src]'s [L.name]!","[I] embeds itself in your [L.name]!") - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "embedded", /datum/mood_event/embedded) /mob/living/carbon/attacked_by(obj/item/I, mob/living/user) - //CIT CHANGES START HERE - combatmode and resting checks - var/totitemdamage = I.force - if(iscarbon(user)) - var/mob/living/carbon/tempcarb = user - if(!tempcarb.combatmode) - totitemdamage *= 0.5 - if(user.resting) - totitemdamage *= 0.5 - if(!combatmode) - totitemdamage *= 1.5 - //CIT CHANGES END HERE - if(user != src && check_shields(I, totitemdamage, "the [I.name]", MELEE_ATTACK, I.armour_penetration)) - return FALSE var/obj/item/bodypart/affecting if(user == src) affecting = get_bodypart(check_zone(user.zone_selected)) //we're self-mutilating! yay! @@ -94,6 +93,17 @@ SEND_SIGNAL(I, COMSIG_ITEM_ATTACK_ZONE, src, user, affecting) send_item_attack_message(I, user, affecting.name) if(I.force) + //CIT CHANGES START HERE - combatmode and resting checks + var/totitemdamage = I.force + if(iscarbon(user)) + var/mob/living/carbon/tempcarb = user + if(!tempcarb.combatmode) + totitemdamage *= 0.5 + if(user.resting) + totitemdamage *= 0.5 + if(!combatmode) + totitemdamage *= 1.5 + //CIT CHANGES END HERE apply_damage(totitemdamage, I.damtype, affecting) //CIT CHANGE - replaces I.force with totitemdamage if(I.damtype == BRUTE && affecting.status == BODYPART_ORGANIC) var/basebloodychance = affecting.brute_dam + totitemdamage @@ -127,9 +137,7 @@ //ATTACK HAND IGNORING PARENT RETURN VALUE /mob/living/carbon/attack_hand(mob/living/carbon/human/user) - . = ..() - if(.) //was the attack blocked? - return + for(var/thing in diseases) var/datum/disease/D = thing if(D.spread_flags & DISEASE_SPREAD_CONTACT_SKIN) @@ -144,7 +152,8 @@ if(user.a_intent == INTENT_HELP || user.a_intent == INTENT_DISARM) for(var/datum/surgery/S in surgeries) if(S.next_step(user, user.a_intent)) - return TRUE + return 1 + return 0 /mob/living/carbon/attack_paw(mob/living/carbon/monkey/M) @@ -164,8 +173,7 @@ help_shake_act(M) return 0 - . = ..() - if(.) //successful monkey bite. + if(..()) //successful monkey bite. for(var/thing in M.diseases) var/datum/disease/D = thing ForceContractDisease(D) @@ -173,27 +181,26 @@ /mob/living/carbon/attack_slime(mob/living/simple_animal/slime/M) - . = ..() - if(!.) - return - if(M.powerlevel > 0) - var/stunprob = M.powerlevel * 7 + 10 // 17 at level 1, 80 at level 10 - if(prob(stunprob)) - M.powerlevel -= 3 - if(M.powerlevel < 0) - M.powerlevel = 0 + if(..()) //successful slime attack + if(M.powerlevel > 0) + var/stunprob = M.powerlevel * 7 + 10 // 17 at level 1, 80 at level 10 + if(prob(stunprob)) + M.powerlevel -= 3 + if(M.powerlevel < 0) + M.powerlevel = 0 - visible_message("The [M.name] has shocked [src]!", \ - "The [M.name] has shocked [src]!") + visible_message("The [M.name] has shocked [src]!", \ + "The [M.name] has shocked [src]!") - do_sparks(5, TRUE, src) - var/power = M.powerlevel + rand(0,3) - Knockdown(power*20) - if(stuttering < power) - stuttering = power - if (prob(stunprob) && M.powerlevel >= 8) - adjustFireLoss(M.powerlevel * rand(6,10)) - updatehealth() + do_sparks(5, TRUE, src) + var/power = M.powerlevel + rand(0,3) + Knockdown(power*20) + if(stuttering < power) + stuttering = power + if (prob(stunprob) && M.powerlevel >= 8) + adjustFireLoss(M.powerlevel * rand(6,10)) + updatehealth() + return 1 /mob/living/carbon/proc/dismembering_strike(mob/living/attacker, dam_zone) if(!attacker.limb_destroyer) @@ -243,7 +250,7 @@ shock_damage *= dna.species.siemens_coeff if(shock_damage<1 && !override) return 0 - if(reagents.has_reagent(/datum/reagent/teslium)) + if(reagents.has_reagent("teslium")) shock_damage *= 1.5 //If the mob has teslium in their body, shocks are 50% more damaging! if(illusion) adjustStaminaLoss(shock_damage) @@ -325,12 +332,12 @@ else return - + else if(check_zone(M.zone_selected) == "r_arm" || check_zone(M.zone_selected) == "l_arm") M.visible_message( \ "[M] shakes [src]'s hand.", \ "You shake [src]'s hand.", ) - + else M.visible_message("[M] hugs [src] to make [p_them()] feel better!", \ "You hug [src] to make [p_them()] feel better!") diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index 9629dc3484..a1184613fe 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -40,7 +40,7 @@ var/gib_type = /obj/effect/decal/cleanable/blood/gibs - rotate_on_lying = TRUE + var/rotate_on_lying = 1 var/tinttotal = 0 // Total level of visualy impairing items diff --git a/code/modules/mob/living/carbon/emote.dm b/code/modules/mob/living/carbon/emote.dm index 559c2ebcdd..345279df29 100644 --- a/code/modules/mob/living/carbon/emote.dm +++ b/code/modules/mob/living/carbon/emote.dm @@ -22,7 +22,6 @@ muzzle_ignore = TRUE restraint_check = TRUE emote_type = EMOTE_AUDIBLE - mob_type_allowed_typecache = list(/mob/living/carbon, /mob/living/silicon/pai) /datum/emote/living/carbon/clap/run_emote(mob/living/user, params) . = ..() diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index eca3a81c4b..310ab6beeb 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -255,7 +255,7 @@ else msg += "[t_He] [t_is] bleeding!\n" - if(reagents.has_reagent(/datum/reagent/teslium)) + if(reagents.has_reagent("teslium")) msg += "[t_He] [t_is] emitting a gentle blue glow!\n" if(islist(stun_absorption)) @@ -278,7 +278,7 @@ if(91.01 to INFINITY) msg += "[t_He] [t_is] a shitfaced, slobbering wreck.\n" - if(reagents.has_reagent(/datum/reagent/fermi/astral)) + if(reagents.has_reagent("astral")) if(mind) msg += "[t_He] has wild, spacey eyes and they have a strange, abnormal look to them.\n" else @@ -308,7 +308,7 @@ var/obj/item/organ/vocal_cords/Vc = user.getorganslot(ORGAN_SLOT_VOICE) if(Vc) if(istype(Vc, /obj/item/organ/vocal_cords/velvet)) - if(client.prefs.cit_toggles & HYPNO) + if(client?.prefs.lewdchem) msg += "You feel your chords resonate looking at them.\n" diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 9cbb5b1a0a..93f33c3a3d 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -67,36 +67,66 @@ P.setAngle(rand(0, 360))//SHING return FALSE - return ..() + if(!(P.original == src && P.firer == src)) //can't block or reflect when shooting yourself + if(P.is_reflectable) + if(check_reflect(def_zone)) // Checks if you've passed a reflection% check + visible_message("The [P.name] gets reflected by [src]!", \ + "The [P.name] gets reflected by [src]!") + // Find a turf near or on the original location to bounce to + if(P.starting) + var/new_x = P.starting.x + pick(0, 0, 0, 0, 0, -1, 1, -2, 2) + var/new_y = P.starting.y + pick(0, 0, 0, 0, 0, -1, 1, -2, 2) + var/turf/curloc = get_turf(src) -/mob/living/carbon/human/check_reflect(def_zone) - if(wear_suit?.IsReflect(def_zone)) - return TRUE - return ..() + // redirect the projectile + P.original = locate(new_x, new_y, P.z) + P.starting = curloc + P.firer = src + P.yo = new_y - curloc.y + P.xo = new_x - curloc.x + var/new_angle_s = P.Angle + rand(120,240) + while(new_angle_s > 180) // Translate to regular projectile degrees + new_angle_s -= 360 + P.setAngle(new_angle_s) -/mob/living/carbon/human/check_shields(atom/AM, damage, attack_text = "the attack", attack_type = MELEE_ATTACK, armour_penetration = 0) - . = ..() - if(.) - return + return -1 // complete projectile permutation + + if(check_shields(P, P.damage, "the [P.name]", PROJECTILE_ATTACK, P.armour_penetration)) + P.on_hit(src, 100, def_zone) + return 2 + + return (..(P , def_zone)) + +/mob/living/carbon/human/proc/check_reflect(def_zone) //Reflection checks for anything in your l_hand, r_hand, or wear_suit based on the reflection chance of the object + if(wear_suit) + if(wear_suit.IsReflect(def_zone) == 1) + return 1 + for(var/obj/item/I in held_items) + if(I.IsReflect(def_zone) == 1) + return 1 + return 0 + +/mob/living/carbon/human/proc/check_shields(atom/AM, var/damage, attack_text = "the attack", attack_type = MELEE_ATTACK, armour_penetration = 0) var/block_chance_modifier = round(damage / -3) + + for(var/obj/item/I in held_items) + if(!istype(I, /obj/item/clothing)) + var/final_block_chance = I.block_chance - (CLAMP((armour_penetration-I.armour_penetration)/2,0,100)) + block_chance_modifier //So armour piercing blades can still be parried by other blades, for example + if(I.hit_reaction(src, AM, attack_text, final_block_chance, damage, attack_type)) + return 1 if(wear_suit) var/final_block_chance = wear_suit.block_chance - (CLAMP((armour_penetration-wear_suit.armour_penetration)/2,0,100)) + block_chance_modifier if(wear_suit.hit_reaction(src, AM, attack_text, final_block_chance, damage, attack_type)) - return TRUE + return 1 if(w_uniform) var/final_block_chance = w_uniform.block_chance - (CLAMP((armour_penetration-w_uniform.armour_penetration)/2,0,100)) + block_chance_modifier if(w_uniform.hit_reaction(src, AM, attack_text, final_block_chance, damage, attack_type)) - return TRUE + return 1 if(wear_neck) var/final_block_chance = wear_neck.block_chance - (CLAMP((armour_penetration-wear_neck.armour_penetration)/2,0,100)) + block_chance_modifier if(wear_neck.hit_reaction(src, AM, attack_text, final_block_chance, damage, attack_type)) - return TRUE - return FALSE - -/mob/living/carbon/human/can_embed(obj/item/I) - if(I.get_sharpness() || is_pointed(I) || is_type_in_typecache(I, GLOB.can_embed_types)) - return TRUE - return FALSE + return 1 + return 0 /mob/living/carbon/human/proc/check_block() if(mind) @@ -105,7 +135,39 @@ return FALSE /mob/living/carbon/human/hitby(atom/movable/AM, skipcatch = FALSE, hitpush = TRUE, blocked = FALSE) - return dna?.species?.spec_hitby(AM, src) || ..() + if(dna && dna.species) + var/spec_return = dna.species.spec_hitby(AM, src) + if(spec_return) + return spec_return + var/obj/item/I + var/throwpower = 30 + if(istype(AM, /obj/item)) + I = AM + throwpower = I.throwforce + if(I.thrownby == src) //No throwing stuff at yourself to trigger hit reactions + return ..() + if(check_shields(AM, throwpower, "\the [AM.name]", THROWN_PROJECTILE_ATTACK)) + hitpush = FALSE + skipcatch = TRUE + blocked = TRUE + else if(I) + if(I.throw_speed >= EMBED_THROWSPEED_THRESHOLD && !(mind.martial_art && mind.martial_art.dodge_chance == 100)) + if(can_embed(I)) + if(prob(I.embedding.embed_chance) && !HAS_TRAIT(src, TRAIT_PIERCEIMMUNE)) + throw_alert("embeddedobject", /obj/screen/alert/embeddedobject) + var/obj/item/bodypart/L = pick(bodyparts) + L.embedded_objects |= I + I.add_mob_blood(src)//it embedded itself in you, of course it's bloody! + I.forceMove(src) + L.receive_damage(I.w_class*I.embedding.embedded_impact_pain_multiplier) + visible_message("[I] embeds itself in [src]'s [L.name]!","[I] embeds itself in your [L.name]!") + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "embedded", /datum/mood_event/embedded) + hitpush = FALSE + skipcatch = TRUE //can't catch the now embedded item + if (mind) + if (mind.martial_art && mind.martial_art.dodge_chance == 100) + skipcatch = FALSE + return ..() /mob/living/carbon/human/grabbedby(mob/living/carbon/user, supress_message = 0) if(user == src && pulling && !pulling.anchored && grab_state >= GRAB_AGGRESSIVE && (HAS_TRAIT(src, TRAIT_FAT)) && ismonkey(pulling)) @@ -139,12 +201,12 @@ return dna.species.spec_attacked_by(I, user, affecting, a_intent, src) -/mob/living/carbon/human/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) +/mob/living/carbon/human/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) if(user.a_intent == INTENT_HARM) - . = ..(user, TRUE) - if(.) - return var/hulk_verb = pick("smash","pummel") + if(check_shields(user, 15, "the [hulk_verb]ing")) + return + ..(user, 1) playsound(loc, user.dna.species.attack_sound, 25, 1, -1) var/message = "[user] has [hulk_verb]ed [src]!" visible_message("[message]", \ @@ -153,8 +215,7 @@ return 1 /mob/living/carbon/human/attack_hand(mob/user) - . = ..() - if(.) //To allow surgery to return properly. + if(..()) //to allow surgery to return properly. return if(ishuman(user)) var/mob/living/carbon/human/H = user @@ -166,7 +227,8 @@ if(!affecting) affecting = get_bodypart(BODY_ZONE_CHEST) if(M.a_intent == INTENT_HELP) - return ..() //shaking + ..() //shaking + return 0 if(M.a_intent == INTENT_DISARM) //Always drop item in hand, if no item, get stunned instead. var/obj/item/I = get_active_held_item() @@ -187,69 +249,78 @@ if(can_inject(M, 1, affecting))//Thick suits can stop monkey bites. if(..()) //successful monkey bite, this handles disease contraction. var/damage = rand(1, 3) - apply_damage(damage, BRUTE, affecting, run_armor_check(affecting, "melee")) + if(check_shields(M, damage, "the [M.name]")) + return 0 + if(stat != DEAD) + apply_damage(damage, BRUTE, affecting, run_armor_check(affecting, "melee")) return 1 /mob/living/carbon/human/attack_alien(mob/living/carbon/alien/humanoid/M) - . = ..() - if(!.) - return - if(M.a_intent == INTENT_HARM) - if (w_uniform) - w_uniform.add_fingerprint(M) - var/damage = prob(90) ? 20 : 0 - if(!damage) - playsound(loc, 'sound/weapons/slashmiss.ogg', 50, 1, -1) - visible_message("[M] has lunged at [src]!", \ - "[M] has lunged at [src]!") - return 0 - var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) - if(!affecting) - affecting = get_bodypart(BODY_ZONE_CHEST) - var/armor_block = run_armor_check(affecting, "melee", null, null,10) + if(check_shields(M, 0, "the M.name")) + visible_message("[M] attempted to touch [src]!") + return 0 - playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1) - visible_message("[M] has slashed at [src]!", \ - "[M] has slashed at [src]!") - log_combat(M, src, "attacked") - if(!dismembering_strike(M, M.zone_selected)) //Dismemberment successful - return 1 - apply_damage(damage, BRUTE, affecting, armor_block) + if(..()) + if(M.a_intent == INTENT_HARM) + if (w_uniform) + w_uniform.add_fingerprint(M) + var/damage = prob(90) ? 20 : 0 + if(!damage) + playsound(loc, 'sound/weapons/slashmiss.ogg', 50, 1, -1) + visible_message("[M] has lunged at [src]!", \ + "[M] has lunged at [src]!") + return 0 + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) + if(!affecting) + affecting = get_bodypart(BODY_ZONE_CHEST) + var/armor_block = run_armor_check(affecting, "melee", null, null,10) - if(M.a_intent == INTENT_DISARM) //Always drop item in hand, if no item, get stun instead. - var/obj/item/I = get_active_held_item() - if(I && dropItemToGround(I)) - playsound(loc, 'sound/weapons/slash.ogg', 25, 1, -1) - visible_message("[M] disarmed [src]!", \ - "[M] disarmed [src]!") - else - playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) - if(!lying) //CITADEL EDIT - Knockdown(100, TRUE, FALSE, 30, 25) + playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1) + visible_message("[M] has slashed at [src]!", \ + "[M] has slashed at [src]!") + log_combat(M, src, "attacked") + if(!dismembering_strike(M, M.zone_selected)) //Dismemberment successful + return 1 + apply_damage(damage, BRUTE, affecting, armor_block) + + if(M.a_intent == INTENT_DISARM) //Always drop item in hand, if no item, get stun instead. + var/obj/item/I = get_active_held_item() + if(I && dropItemToGround(I)) + playsound(loc, 'sound/weapons/slash.ogg', 25, 1, -1) + visible_message("[M] disarmed [src]!", \ + "[M] disarmed [src]!") else - Knockdown(100) - log_combat(M, src, "tackled") - visible_message("[M] has tackled down [src]!", \ - "[M] has tackled down [src]!") + playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) + if(!lying) //CITADEL EDIT + Knockdown(100, TRUE, FALSE, 30, 25) + else + Knockdown(100) + log_combat(M, src, "tackled") + visible_message("[M] has tackled down [src]!", \ + "[M] has tackled down [src]!") + /mob/living/carbon/human/attack_larva(mob/living/carbon/alien/larva/L) - . = ..() - if(!.) //unsuccessful larva bite. - return - var/damage = rand(1, 3) - if(stat != DEAD) - L.amount_grown = min(L.amount_grown + damage, L.max_grown) - var/obj/item/bodypart/affecting = get_bodypart(ran_zone(L.zone_selected)) - if(!affecting) - affecting = get_bodypart(BODY_ZONE_CHEST) - var/armor_block = run_armor_check(affecting, "melee") - apply_damage(damage, BRUTE, affecting, armor_block) + + if(..()) //successful larva bite. + var/damage = rand(1, 3) + if(check_shields(L, damage, "the [L.name]")) + return 0 + if(stat != DEAD) + L.amount_grown = min(L.amount_grown + damage, L.max_grown) + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(L.zone_selected)) + if(!affecting) + affecting = get_bodypart(BODY_ZONE_CHEST) + var/armor_block = run_armor_check(affecting, "melee") + apply_damage(damage, BRUTE, affecting, armor_block) /mob/living/carbon/human/attack_animal(mob/living/simple_animal/M) . = ..() if(.) var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) + if(check_shields(M, damage, "the [M.name]", MELEE_ATTACK, M.armour_penetration)) + return FALSE var/dam_zone = dismembering_strike(M, pick(BODY_ZONE_CHEST, BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_HAND, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)) if(!dam_zone) //Dismemberment successful return TRUE @@ -261,22 +332,23 @@ /mob/living/carbon/human/attack_slime(mob/living/simple_animal/slime/M) - . = ..() - if(!.) //unsuccessful slime attack - return - var/damage = rand(5, 25) - if(M.is_adult) - damage = rand(10, 35) + if(..()) //successful slime attack + var/damage = rand(5, 25) + if(M.is_adult) + damage = rand(10, 35) - var/dam_zone = dismembering_strike(M, pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)) - if(!dam_zone) //Dismemberment successful - return 1 + if(check_shields(M, damage, "the [M.name]")) + return 0 - var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone)) - if(!affecting) - affecting = get_bodypart(BODY_ZONE_CHEST) - var/armor_block = run_armor_check(affecting, "melee") - apply_damage(damage, BRUTE, affecting, armor_block) + var/dam_zone = dismembering_strike(M, pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)) + if(!dam_zone) //Dismemberment successful + return 1 + + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone)) + if(!affecting) + affecting = get_bodypart(BODY_ZONE_CHEST) + var/armor_block = run_armor_check(affecting, "melee") + apply_damage(damage, BRUTE, affecting, armor_block) /mob/living/carbon/human/mech_melee_attack(obj/mecha/M) if(M.occupant.a_intent == INTENT_HARM) @@ -333,7 +405,7 @@ switch (severity) if (1) if(bomb_armor) - b_loss = (350*bomb_armor)+150 + b_loss = 500*bomb_armor var/atom/throw_target = get_edge_target_turf(src, get_dir(src, get_step_away(src, src))) throw_at(throw_target, 200, 4) damage_clothes(400*bomb_armor, BRUTE, "bomb") @@ -580,7 +652,7 @@ if(mind) if((mind.assigned_role == "Station Engineer") || (mind.assigned_role == "Chief Engineer") ) gain = 100 - if(HAS_TRAIT(mind, TRAIT_CLOWN_MENTALITY)) + if(mind.assigned_role == "Clown") gain = rand(-300, 300) investigate_log("([key_name(src)]) has been consumed by the singularity.", INVESTIGATE_SINGULO) //Oh that's where the clown ended up! gib() diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 5b8173b6ba..8bf6b4ad3a 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -290,7 +290,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) // this needs to be FIRST because qdel calls update_body which checks if we have DIGITIGRADE legs or not and if not then removes DIGITIGRADE from species_traits if(("legs" in C.dna.species.mutant_bodyparts) && (C.dna.features["legs"] == "Digitigrade" || C.dna.features["legs"] == "Avian")) - species_traits |= DIGITIGRADE + species_traits += DIGITIGRADE if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(FALSE) @@ -545,20 +545,6 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) //Underwear, Undershirts & Socks if(!(NO_UNDERWEAR in species_traits)) - - if(H.socks && H.get_num_legs(FALSE) >= 2) - if(H.hidden_socks) - H.socks = "Nude" - else - H.socks = H.saved_socks - var/datum/sprite_accessory/underwear/socks/S = GLOB.socks_list[H.socks] - if(S) - var/digilegs = ((DIGITIGRADE in species_traits) && S.has_digitigrade) ? "_d" : "" - var/mutable_appearance/MA = mutable_appearance(S.icon, "[S.icon_state][digilegs]", -BODY_LAYER) - if(S.has_color) - MA.color = "#[H.socks_color]" - standing += MA - if(H.underwear) if(H.hidden_underwear) H.underwear = "Nude" @@ -566,9 +552,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) H.underwear = H.saved_underwear var/datum/sprite_accessory/underwear/bottom/B = GLOB.underwear_list[H.underwear] if(B) - var/digilegs = ((DIGITIGRADE in species_traits) && B.has_digitigrade) ? "_d" : "" - var/mutable_appearance/MA = mutable_appearance(B.icon, "[B.icon_state][digilegs]", -BODY_LAYER) - if(B.has_color) + var/mutable_appearance/MA = mutable_appearance(B.icon, B.icon_state, -BODY_LAYER) + if(UNDIE_COLORABLE(B)) MA.color = "#[H.undie_color]" standing += MA @@ -579,16 +564,28 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) H.undershirt = H.saved_undershirt var/datum/sprite_accessory/underwear/top/T = GLOB.undershirt_list[H.undershirt] if(T) - var/state = "[T.icon_state][((DIGITIGRADE in species_traits) && T.has_digitigrade) ? "_d" : ""]" var/mutable_appearance/MA if(H.dna.species.sexes && H.gender == FEMALE) - MA = wear_female_version(state, T.icon, BODY_LAYER) + MA = wear_female_version(T.icon_state, T.icon, BODY_LAYER) else - MA = mutable_appearance(T.icon, state, -BODY_LAYER) - if(T.has_color) + MA = mutable_appearance(T.icon, T.icon_state, -BODY_LAYER) + if(UNDIE_COLORABLE(T)) MA.color = "#[H.shirt_color]" standing += MA + if(H.socks && H.get_num_legs(FALSE) >= 2) + if(H.hidden_socks) + H.socks = "Nude" + else + H.socks = H.saved_socks + var/datum/sprite_accessory/underwear/socks/S = GLOB.socks_list[H.socks] + if(S) + var/digilegs = (DIGITIGRADE in species_traits) ? "_d" : "" + var/mutable_appearance/MA = mutable_appearance(S.icon, "[S.icon_state][digilegs]", -BODY_LAYER) + if(UNDIE_COLORABLE(S)) + MA.color = "#[H.socks_color]" + standing += MA + if(standing.len) H.overlays_standing[BODY_LAYER] = standing @@ -611,34 +608,34 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) return var/obj/item/bodypart/head/HD = H.get_bodypart(BODY_ZONE_HEAD) - var/tauric = H.dna.features["taur"] && H.dna.features["taur"] != "None" if("tail_lizard" in mutant_bodyparts) - if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) + if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None")) bodyparts_to_add -= "tail_lizard" if("waggingtail_lizard" in mutant_bodyparts) - if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) + if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None")) bodyparts_to_add -= "waggingtail_lizard" else if ("tail_lizard" in mutant_bodyparts) bodyparts_to_add -= "waggingtail_lizard" if("tail_human" in mutant_bodyparts) - if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) + if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None")) bodyparts_to_add -= "tail_human" + if("waggingtail_human" in mutant_bodyparts) - if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) + if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None")) bodyparts_to_add -= "waggingtail_human" else if ("tail_human" in mutant_bodyparts) bodyparts_to_add -= "waggingtail_human" if("spines" in mutant_bodyparts) - if(!H.dna.features["spines"] || H.dna.features["spines"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) + if(!H.dna.features["spines"] || H.dna.features["spines"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT)) bodyparts_to_add -= "spines" if("waggingspines" in mutant_bodyparts) - if(!H.dna.features["spines"] || H.dna.features["spines"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) + if(!H.dna.features["spines"] || H.dna.features["spines"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT)) bodyparts_to_add -= "waggingspines" else if ("tail" in mutant_bodyparts) bodyparts_to_add -= "waggingspines" @@ -688,11 +685,11 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) //Other Races if("mam_tail" in mutant_bodyparts) - if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) + if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None")) bodyparts_to_add -= "mam_tail" if("mam_waggingtail" in mutant_bodyparts) - if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) + if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None")) bodyparts_to_add -= "mam_waggingtail" else if ("mam_tail" in mutant_bodyparts) bodyparts_to_add -= "mam_waggingtail" @@ -706,7 +703,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) bodyparts_to_add -= "mam_snouts" if("taur" in mutant_bodyparts) - if(!tauric || (H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR))) + if(!H.dna.features["taur"] || H.dna.features["taur"] == "None" || (H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR))) bodyparts_to_add -= "taur" //END EDIT @@ -723,10 +720,10 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) species_traits += DIGITIGRADE var/should_be_squished = FALSE if(H.wear_suit) - if(!(H.wear_suit.mutantrace_variation & STYLE_DIGITIGRADE) || (tauric && (H.wear_suit.mutantrace_variation & STYLE_ALL_TAURIC))) //digitigrade/taur suits + if(H.wear_suit.mutantrace_variation == NO_MUTANTRACE_VARIATION) //we got digitigrade suits now fam should_be_squished = TRUE if(H.w_uniform && !H.wear_suit) - if(!(H.w_uniform.mutantrace_variation & STYLE_DIGITIGRADE)) + if(H.w_uniform.mutantrace_variation == NO_MUTANTRACE_VARIATION) should_be_squished = TRUE if(O.use_digitigrade == FULL_DIGITIGRADE && should_be_squished) O.use_digitigrade = SQUISHED_DIGITIGRADE @@ -1270,9 +1267,9 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) H.update_mutant_bodyparts() /datum/species/proc/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.type == exotic_blood) + if(chem.id == exotic_blood) H.blood_volume = min(H.blood_volume + round(chem.volume, 0.1), BLOOD_VOLUME_MAXIMUM) - H.reagents.del_reagent(chem.type) + H.reagents.del_reagent(chem.id) return 1 return FALSE @@ -1592,11 +1589,20 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) user.adjustStaminaLossBuffered(3) return FALSE else if(aim_for_groin && (target == user || target.lying || same_dir) && (target_on_help || target_restrained || target_aiming_for_groin)) - if(target.client?.prefs.cit_toggles & NO_ASS_SLAP) - to_chat(user,"A force stays your hand, preventing you from slapping \the [target]'s ass!") - return FALSE user.do_attack_animation(target, ATTACK_EFFECT_ASS_SLAP) user.adjustStaminaLossBuffered(3) + if(HAS_TRAIT(target, TRAIT_ASSBLASTUSA)) + var/hit_zone = (user.held_index_to_dir(user.active_hand_index) == "l" ? "l_":"r_") + "arm" + user.adjustStaminaLoss(20, affected_zone = hit_zone) + user.visible_message(\ + "\The [user] slaps \the [target]'s ass, but their hand bounces off like they hit metal!",\ + "You slap [user == target ? "your" : "\the [target]'s"] ass, but feel an intense amount of pain as you realise their buns are harder than steel!",\ + "You hear a slap." + ) + playsound(target.loc, 'sound/weapons/tap.ogg', 50, 1, -1) + user.emote("scream") + return FALSE + playsound(target.loc, 'sound/weapons/slap.ogg', 50, 1, -1) user.visible_message(\ "\The [user] slaps \the [target]'s ass!",\ @@ -1685,6 +1691,11 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) attacker_style = M.mind.martial_art if(attacker_style?.pacifism_check && HAS_TRAIT(M, TRAIT_PACIFISM)) // most martial arts are quite harmful, alas. attacker_style = null + if((M != H) && M.a_intent != INTENT_HELP && H.check_shields(M, 0, M.name, attack_type = UNARMED_ATTACK)) + log_combat(M, H, "attempted to touch") + H.visible_message("[M] attempted to touch [H]!") + return 0 + SEND_SIGNAL(M, COMSIG_MOB_ATTACK_HAND, M, H, attacker_style) switch(M.a_intent) if("help") help(M, H, attacker_style) diff --git a/code/modules/mob/living/carbon/human/species_types/dwarves.dm b/code/modules/mob/living/carbon/human/species_types/dwarves.dm index 9c28b8a0b7..946bffbdbc 100644 --- a/code/modules/mob/living/carbon/human/species_types/dwarves.dm +++ b/code/modules/mob/living/carbon/human/species_types/dwarves.dm @@ -7,18 +7,18 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) // id = "dwarf" //Also called Homo sapiens pumilionis default_color = "FFFFFF" species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,NO_UNDERWEAR) - inherent_traits = list() + inherent_traits = list() default_features = list("mcolor" = "FFF", "wings" = "None") limbs_id = "human" use_skintones = 1 say_mod = "bellows" //high energy, EXTRA BIOLOGICAL FUEL - damage_overlay_type = "human" + damage_overlay_type = "human" skinned_type = /obj/item/stack/sheet/animalhide/human liked_food = ALCOHOL | MEAT | DAIRY //Dwarves like alcohol, meat, and dairy products. disliked_food = JUNKFOOD | FRIED //Dwarves hate foods that have no nutrition other than alcohol. mutant_organs = list(/obj/item/organ/dwarfgland) //Dwarven alcohol gland, literal gland warrior mutantliver = /obj/item/organ/liver/dwarf //Dwarven super liver (Otherwise they r doomed) - + /mob/living/carbon/human/species/dwarf //species admin spawn path race = /datum/species/dwarf //and the race the path is set to. @@ -30,7 +30,7 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) // /datum/species/dwarf/on_species_gain(mob/living/carbon/C, datum/species/old_species) . = ..() var/dwarf_hair = pick("Beard (Dwarf)", "Beard (Very Long)", "Beard (Long)") //beard roullette - var/mob/living/carbon/human/H = C + var/mob/living/carbon/human/H = C H.facial_hair_style = dwarf_hair H.update_hair() H.transform = H.transform.Scale(1, 0.8) //We use scale, and yeah. Dwarves can become gnomes with DWARFISM. @@ -95,7 +95,7 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) // /obj/item/organ/dwarfgland/prepare_eat() var/obj/S = ..() - S.reagents.add_reagent(/datum/reagent/consumable/ethanol, stored_alcohol/10) + S.reagents.add_reagent("ethanol", stored_alcohol/10) return S /obj/item/organ/dwarfgland/on_life() //Primary loop to hook into to start delayed loops for other loops.. @@ -108,8 +108,8 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) // return //We make sure they are not dead, so they don't increment any tickers. dwarf_eth_ticker++ dwarf_filth_ticker++ - - if(dwarf_filth_ticker >= 4) //Should be around 4-8 seconds since a tick is around 2 seconds. + + if(dwarf_filth_ticker >= 4) //Should be around 4-8 seconds since a tick is around 2 seconds. dwarf_filth_cycle() //On_life will adjust regarding other factors, so we are along for the ride. dwarf_filth_ticker = 0 //We set the ticker back to 0 to go again. if(dwarf_eth_ticker >= 1) //Alcohol reagent check should be around 2 seconds, since a tick is around 2 seconds. diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm index 426213161e..0c3bcc2b00 100644 --- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm @@ -13,9 +13,9 @@ exotic_bloodtype = "BUG" /datum/species/fly/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.type == /datum/reagent/toxin/pestkiller) + if(chem.id == "pestkiller") H.adjustToxLoss(3) - H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) return 1 diff --git a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm index e2adb2acd9..1e4b3e9fae 100644 --- a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm @@ -70,6 +70,20 @@ damage_overlay_type = "xeno" liked_food = MEAT +/datum/species/xeno/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) + if(("legs" in C.dna.species.mutant_bodyparts) && (C.dna.features["legs"] == "Digitigrade" || C.dna.features["legs"] == "Avian")) + species_traits += DIGITIGRADE + if(DIGITIGRADE in species_traits) + C.Digitigrade_Leg_Swap(FALSE) + . = ..() + +/datum/species/xeno/on_species_loss(mob/living/carbon/human/C, datum/species/new_species) + if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Plantigrade") + species_traits -= DIGITIGRADE + if(DIGITIGRADE in species_traits) + C.Digitigrade_Leg_Swap(TRUE) + . = ..() + //Praise the Omnissiah, A challange worthy of my skills - HS //EXOTIC// diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index c247d14589..3d6c5092e1 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -305,9 +305,9 @@ H.take_overall_damage(2,0) /datum/species/golem/wood/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.type == /datum/reagent/toxin/plantbgone) + if(chem.id == "plantbgone") H.adjustToxLoss(3) - H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) return 1 //Radioactive @@ -619,14 +619,14 @@ C.RemoveSpell(dominate) /datum/species/golem/runic/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.type == /datum/reagent/water/holywater) + if(chem.id == "holywater") H.adjustFireLoss(4) - H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) - if(chem.type == /datum/reagent/fuel/unholywater) + if(chem.id == "unholywater") H.adjustBruteLoss(-4) H.adjustFireLoss(-4) - H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) /datum/species/golem/clockwork diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index b63cd59173..5f91e3ae66 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -12,7 +12,7 @@ inherent_traits = list(TRAIT_TOXINLOVER) meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime gib_types = list(/obj/effect/gibspawner/slime, /obj/effect/gibspawner/slime/bodypartless) - exotic_blood = /datum/reagent/blood/jellyblood + exotic_blood = "jellyblood" exotic_bloodtype = "GEL" damage_overlay_type = "" var/datum/action/innate/regenerate_limbs/regenerate_limbs diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index df8d4d727a..9317a51050 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -73,6 +73,19 @@ mutant_bodyparts |= "spines" H.update_body() +/datum/species/lizard/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) + if(("legs" in C.dna.species.mutant_bodyparts) && (C.dna.features["legs"] == "Digitigrade" || C.dna.features["legs"] == "Avian")) + species_traits += DIGITIGRADE + if(DIGITIGRADE in species_traits) + C.Digitigrade_Leg_Swap(FALSE) + return ..() + +/datum/species/lizard/on_species_loss(mob/living/carbon/human/C, datum/species/new_species) + if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Plantigrade") + species_traits -= DIGITIGRADE + if(DIGITIGRADE in species_traits) + C.Digitigrade_Leg_Swap(TRUE) + /* Lizard subspecies: ASHWALKERS */ diff --git a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm index ab0962cf12..ceadb28115 100644 --- a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm @@ -37,24 +37,19 @@ H.dna.features["caps"] = "Round" handle_mutant_bodyparts(H) H.faction |= "mushroom" - mush = new() - mush.teach(H, TRUE) - RegisterSignal(C, COMSIG_MOB_ON_NEW_MIND, .proc/on_new_mind) - -/datum/species/mush/proc/on_new_mind(mob/owner) - mush.teach(owner, TRUE) //make_temporary TRUE as it shouldn't carry over to other mobs on mind transfer_to. + mush = new(null) + mush.teach(H) /datum/species/mush/on_species_loss(mob/living/carbon/C) . = ..() - UnregisterSignal(C, COMSIG_MOB_ON_NEW_MIND) C.faction -= "mushroom" mush.remove(C) QDEL_NULL(mush) /datum/species/mush/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.type == /datum/reagent/toxin/plantbgone/weedkiller) + if(chem.id == "weedkiller") H.adjustToxLoss(3) - H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) return TRUE /datum/species/mush/handle_mutant_bodyparts(mob/living/carbon/human/H, forced_colour) diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index 66eb207670..f0dd48c6c1 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -47,9 +47,9 @@ H.take_overall_damage(2,0) /datum/species/pod/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.type == /datum/reagent/toxin/plantbgone) + if(chem.id == "plantbgone") H.adjustToxLoss(3) - H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) return 1 /datum/species/pod/on_hit(obj/item/projectile/P, mob/living/carbon/human/H) diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm index 52ae32b23c..3247c96632 100644 --- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm @@ -51,7 +51,11 @@ . = ..() to_chat(C, "[info_text]") - C.fully_replace_character_name("[pick(GLOB.nightmare_names)]") + C.real_name = "[pick(GLOB.nightmare_names)]" + C.name = C.real_name + if(C.mind) + C.mind.name = C.real_name + C.dna.real_name = C.real_name /datum/species/shadow/nightmare/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H) var/turf/T = H.loc @@ -123,8 +127,8 @@ /obj/item/organ/heart/nightmare/Remove(mob/living/carbon/M, special = 0) respawn_progress = 0 if(blade && special != HEART_SPECIAL_SHADOWIFY) - M.visible_message("\The [blade] disintegrates!") QDEL_NULL(blade) + M.visible_message("\The [blade] disintegrates!") ..() /obj/item/organ/heart/nightmare/Stop() @@ -179,21 +183,15 @@ . = ..() if(!proximity) return - if(isopenturf(AM)) - var/turf/open/T = AM - if(T.light_range && !isspaceturf(T)) //no fairy grass or light tile can escape the fury of the darkness. - to_chat(user, "You scrape away [T] with your [name] and snuff out its lights.") - T.ScrapeAway(flags = CHANGETURF_INHERIT_AIR) - else if(isliving(AM)) + if(isopenturf(AM)) //So you can actually melee with it + return + if(isliving(AM)) var/mob/living/L = AM if(iscyborg(AM)) var/mob/living/silicon/robot/borg = AM - if(borg.lamp_intensity) + if(!borg.lamp_cooldown) borg.update_headlamp(TRUE, INFINITY) to_chat(borg, "Your headlamp is fried! You'll need a human to help replace it.") - for(var/obj/item/assembly/flash/cyborg/F in borg.held_items) - if(!F.crit_fail) - F.burn_out() else for(var/obj/item/O in AM) if(O.light_range && O.light_power) diff --git a/code/modules/mob/living/carbon/human/species_types/synths.dm b/code/modules/mob/living/carbon/human/species_types/synths.dm index 0335e08922..5cd1a599ad 100644 --- a/code/modules/mob/living/carbon/human/species_types/synths.dm +++ b/code/modules/mob/living/carbon/human/species_types/synths.dm @@ -36,9 +36,9 @@ UnregisterSignal(H, COMSIG_MOB_SAY) /datum/species/synth/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.type == /datum/reagent/medicine/synthflesh) + if(chem.id == "synthflesh") chem.reaction_mob(H, TOUCH, 2 ,0) //heal a little - H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) return 1 else return ..() diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index c4088317b1..ae69d5dc90 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -119,25 +119,24 @@ There are several things that need to be remembered: var/t_color = U.item_color if(!t_color) t_color = U.icon_state - if(U.adjusted == ALT_STYLE) - t_color = "[t_color]_d" + if(U.suit_style == NORMAL_SUIT_STYLE) + if(U.adjusted == ALT_STYLE) + t_color = "[t_color]_d" - var/alt_worn = U.alternate_worn_icon || 'icons/mob/uniform.dmi' - var/variant_flag = NONE + var/alt_worn = U.alternate_worn_icon - if((DIGITIGRADE in dna.species.species_traits) && U.mutantrace_variation & STYLE_DIGITIGRADE) + if(!U.force_alternate_icon && U.mutantrace_variation && U.suit_style == DIGITIGRADE_SUIT_STYLE) alt_worn = 'icons/mob/uniform_digi.dmi' - variant_flag |= STYLE_DIGITIGRADE var/mutable_appearance/uniform_overlay if(dna && dna.species.sexes) var/G = (gender == FEMALE) ? "f" : "m" if(G == "f" && U.fitted != NO_FEMALE_UNIFORM) - uniform_overlay = U.build_worn_icon(t_color, UNIFORM_LAYER, alt_worn, FALSE, U.fitted, variant_flag, FALSE) + uniform_overlay = U.build_worn_icon(state = "[t_color]", default_layer = UNIFORM_LAYER, default_icon_file = (alt_worn ? alt_worn : 'icons/mob/uniform.dmi'), isinhands = FALSE, femaleuniform = U.fitted) if(!uniform_overlay) - uniform_overlay = U.build_worn_icon(t_color, UNIFORM_LAYER, alt_worn, FALSE, NO_FEMALE_UNIFORM, variant_flag, FALSE) + uniform_overlay = U.build_worn_icon(state = "[t_color]", default_layer = UNIFORM_LAYER, default_icon_file = (alt_worn ? alt_worn : 'icons/mob/uniform.dmi'), isinhands = FALSE) if(OFFSET_UNIFORM in dna.species.offset_features) @@ -165,7 +164,7 @@ There are several things that need to be remembered: update_observer_view(wear_id) //TODO: add an icon file for ID slot stuff, so it's less snowflakey - id_overlay = wear_id.build_worn_icon(state = wear_id.item_state, default_layer = ID_LAYER, default_icon_file = 'icons/mob/mob.dmi') + id_overlay = wear_id.build_worn_icon(state = wear_id.item_state, default_layer = ID_LAYER, default_icon_file = ((wear_id.alternate_worn_icon) ? wear_id.alternate_worn_icon : 'icons/mob/mob.dmi')) if(OFFSET_ID in dna.species.offset_features) id_overlay.pixel_x += dna.species.offset_features[OFFSET_ID][1] id_overlay.pixel_y += dna.species.offset_features[OFFSET_ID][2] @@ -200,7 +199,7 @@ There are several things that need to be remembered: var/t_state = gloves.item_state if(!t_state) t_state = gloves.icon_state - overlays_standing[GLOVES_LAYER] = gloves.build_worn_icon(state = t_state, default_layer = GLOVES_LAYER, default_icon_file = 'icons/mob/hands.dmi') + overlays_standing[GLOVES_LAYER] = gloves.build_worn_icon(state = t_state, default_layer = GLOVES_LAYER, default_icon_file = ((gloves.alternate_worn_icon) ? gloves.alternate_worn_icon : 'icons/mob/hands.dmi')) gloves_overlay = overlays_standing[GLOVES_LAYER] if(OFFSET_GLOVES in dna.species.offset_features) gloves_overlay.pixel_x += dna.species.offset_features[OFFSET_GLOVES][1] @@ -226,7 +225,7 @@ There are several things that need to be remembered: client.screen += glasses //Either way, add the item to the HUD update_observer_view(glasses,1) if(!(head && (head.flags_inv & HIDEEYES)) && !(wear_mask && (wear_mask.flags_inv & HIDEEYES))) - overlays_standing[GLASSES_LAYER] = glasses.build_worn_icon(state = glasses.icon_state, default_layer = GLASSES_LAYER, default_icon_file = 'icons/mob/eyes.dmi') + overlays_standing[GLASSES_LAYER] = glasses.build_worn_icon(state = glasses.icon_state, default_layer = GLASSES_LAYER, default_icon_file = ((glasses.alternate_worn_icon) ? glasses.alternate_worn_icon : 'icons/mob/eyes.dmi')) var/mutable_appearance/glasses_overlay = overlays_standing[GLASSES_LAYER] if(glasses_overlay) if(OFFSET_GLASSES in dna.species.offset_features) @@ -253,7 +252,7 @@ There are several things that need to be remembered: client.screen += ears //add it to the client's screen update_observer_view(ears,1) - overlays_standing[EARS_LAYER] = ears.build_worn_icon(state = ears.icon_state, default_layer = EARS_LAYER, default_icon_file = 'icons/mob/ears.dmi') + overlays_standing[EARS_LAYER] = ears.build_worn_icon(state = ears.icon_state, default_layer = EARS_LAYER, default_icon_file = ((ears.alternate_worn_icon) ? ears.alternate_worn_icon : 'icons/mob/ears.dmi')) var/mutable_appearance/ears_overlay = overlays_standing[EARS_LAYER] if(OFFSET_EARS in dna.species.offset_features) ears_overlay.pixel_x += dna.species.offset_features[OFFSET_EARS][1] @@ -271,6 +270,32 @@ There are several things that need to be remembered: if(client && hud_used) var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_SHOES] inv.update_icon() +/* + if(!shoes && bloody_feet) + var/mutable_appearance/bloody_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyfeet", -SHOES_LAYER, color = blood_DNA_to_color()) + if(dna.features["taur"] != "None") + if(dna.features["taur"] in GLOB.noodle_taurs) + bloody_overlay = mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "snekbloodyfeet", -SHOES_LAYER, color = blood_DNA_to_color()) + if(get_num_legs() < 2) + if(has_left_leg()) + bloody_overlay.icon_state = "snekbloodyfeet_left" + else if(has_right_leg()) + bloody_overlay.icon_state = "snekbloodyfeet_right" + else if(dna.features["taur"] in GLOB.paw_taurs) + bloody_overlay = mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "pawbloodyfeet", -SHOES_LAYER, color = blood_DNA_to_color()) + if(get_num_legs() < 2) + if(has_left_leg()) + bloody_overlay.icon_state = "pawbloodyfeet_left" + else if(has_right_leg()) + bloody_overlay.icon_state = "pawbloodyfeet_right" + else + if(get_num_legs() < 2) + if(has_left_leg()) + bloody_overlay.icon_state = "bloodyfeet_left" + else if(has_right_leg()) + bloody_overlay.icon_state = "bloodyfeet_right" + + overlays_standing[GLOVES_LAYER] = bloody_overlay*/ if(shoes) var/obj/item/clothing/shoes/S = shoes @@ -279,17 +304,15 @@ There are several things that need to be remembered: if(hud_used.inventory_shown) //if the inventory is open client.screen += shoes //add it to client's screen update_observer_view(shoes,1) - - var/alt_icon = S.alternate_worn_icon || 'icons/mob/feet.dmi' - var/variation_flag = NONE - if((DIGITIGRADE in dna.species.species_traits) && S.mutantrace_variation & STYLE_DIGITIGRADE) - alt_icon = 'icons/mob/feet_digi.dmi' - variation_flag |= STYLE_DIGITIGRADE - + if(S.mutantrace_variation) + if(S.adjusted == ALT_STYLE) + S.alternate_worn_icon = 'icons/mob/feet_digi.dmi' + else + S.alternate_worn_icon = null var/t_state = shoes.item_state if (!t_state) t_state = shoes.icon_state - overlays_standing[SHOES_LAYER] = shoes.build_worn_icon(t_state, SHOES_LAYER, alt_icon, FALSE, NO_FEMALE_UNIFORM, variation_flag, FALSE) + overlays_standing[SHOES_LAYER] = shoes.build_worn_icon(state = t_state, default_layer = SHOES_LAYER, default_icon_file = ((shoes.alternate_worn_icon) ? shoes.alternate_worn_icon : 'icons/mob/feet.dmi')) var/mutable_appearance/shoes_overlay = overlays_standing[SHOES_LAYER] if(OFFSET_SHOES in dna.species.offset_features) shoes_overlay.pixel_x += dna.species.offset_features[OFFSET_SHOES][1] @@ -327,18 +350,13 @@ There are several things that need to be remembered: if(head) remove_overlay(HEAD_LAYER) var/obj/item/clothing/head/H = head - var/alt_icon = H.alternate_worn_icon || 'icons/mob/head.dmi' - var/muzzled = FALSE - var/variation_flag = NONE - if(("mam_snouts" in dna.species.default_features) && dna.features["mam_snouts"] != "None") - muzzled = TRUE - if(!muzzled && ("snout" in dna.species.default_features) && dna.features["snout"] != "None") - muzzled = TRUE - if(muzzled && H.mutantrace_variation & STYLE_MUZZLE) - alt_icon = 'icons/mob/head_muzzled.dmi' - variation_flag |= STYLE_MUZZLE + if(H.mutantrace_variation) + if(H.muzzle_var == ALT_STYLE) + H.alternate_worn_icon = 'icons/mob/head_muzzled.dmi' + else + H.alternate_worn_icon = null - overlays_standing[HEAD_LAYER] = H.build_worn_icon(H.icon_state, HEAD_LAYER, alt_icon, FALSE, NO_FEMALE_UNIFORM, variation_flag, FALSE) + overlays_standing[HEAD_LAYER] = H.build_worn_icon(state = H.icon_state, default_layer = HEAD_LAYER, default_icon_file = ((head.alternate_worn_icon) ? H.alternate_worn_icon : 'icons/mob/head.dmi')) var/mutable_appearance/head_overlay = overlays_standing[HEAD_LAYER] if(OFFSET_HEAD in dna.species.offset_features) @@ -364,7 +382,7 @@ There are several things that need to be remembered: if(!t_state) t_state = belt.icon_state - overlays_standing[BELT_LAYER] = belt.build_worn_icon(state = t_state, default_layer = BELT_LAYER, default_icon_file = 'icons/mob/belt.dmi') + overlays_standing[BELT_LAYER] = belt.build_worn_icon(state = t_state, default_layer = BELT_LAYER, default_icon_file = ((belt.alternate_worn_icon) ? belt.alternate_worn_icon : 'icons/mob/belt.dmi')) var/mutable_appearance/belt_overlay = overlays_standing[BELT_LAYER] if(OFFSET_BELT in dna.species.offset_features) belt_overlay.pixel_x += dna.species.offset_features[OFFSET_BELT][1] @@ -391,41 +409,30 @@ There are several things that need to be remembered: client.screen += wear_suit update_observer_view(wear_suit,1) - var/worn_icon = wear_suit.alternate_worn_icon || 'icons/mob/suit.dmi' - var/center = FALSE - var/dimension_x = 32 - var/dimension_y = 32 - var/variation_flag = NONE - var/datum/sprite_accessory/taur/T - if("taur" in dna.species.mutant_bodyparts) - T = GLOB.taur_list[dna.features["taur"]] + if(!item_level_support && !S.force_alternate_icon) + if(S.mutantrace_variation) //Just make sure we've got this checked too + if(S.taurmode == NOT_TAURIC && S.adjusted == ALT_STYLE) //are we not a taur, but we have Digitigrade legs? Run this check first, then. + S.alternate_worn_icon = 'icons/mob/suit_digi.dmi' + else + S.alternate_worn_icon = null - if(!item_level_support && S.mutantrace_variation) - if(T?.taur_mode) - var/init_worn_icon = worn_icon - variation_flag |= S.mutantrace_variation & T.taur_mode || S.mutantrace_variation & T.alt_taur_mode - switch(variation_flag) - if(STYLE_HOOF_TAURIC) - worn_icon = 'icons/mob/taur_hooved.dmi' - if(STYLE_SNEK_TAURIC) - worn_icon = 'icons/mob/taur_naga.dmi' - if(STYLE_PAW_TAURIC) - worn_icon = 'icons/mob/taur_canine.dmi' - if(worn_icon != init_worn_icon) //worn icon sprite was changed, taur offsets will have to be applied. - center = T.center - dimension_x = T.dimension_x - dimension_y = T.dimension_y - else if((DIGITIGRADE in dna.species.species_traits) && S.mutantrace_variation & STYLE_DIGITIGRADE) //not a taur, but digitigrade legs. - worn_icon = 'icons/mob/suit_digi.dmi' - variation_flag |= STYLE_DIGITIGRADE + if(S.tauric == TRUE) //Are we a suit with tauric mode possible? + if(S.taurmode == SNEK_TAURIC) + S.alternate_worn_icon = 'icons/mob/taur_naga.dmi' + if(S.taurmode == PAW_TAURIC) + S.alternate_worn_icon = 'icons/mob/taur_canine.dmi' + if(S.taurmode == NOT_TAURIC && S.adjusted == ALT_STYLE) + S.alternate_worn_icon = 'icons/mob/suit_digi.dmi' + else if(S.taurmode == NOT_TAURIC && S.adjusted == NORMAL_STYLE) + S.alternate_worn_icon = null - overlays_standing[SUIT_LAYER] = S.build_worn_icon(wear_suit.icon_state, SUIT_LAYER, worn_icon, FALSE, NO_FEMALE_UNIFORM, variation_flag, FALSE) + overlays_standing[SUIT_LAYER] = S.build_worn_icon(state = wear_suit.icon_state, default_layer = SUIT_LAYER, default_icon_file = ((wear_suit.alternate_worn_icon) ? S.alternate_worn_icon : 'icons/mob/suit.dmi')) var/mutable_appearance/suit_overlay = overlays_standing[SUIT_LAYER] if(OFFSET_SUIT in dna.species.offset_features) suit_overlay.pixel_x += dna.species.offset_features[OFFSET_SUIT][1] suit_overlay.pixel_y += dna.species.offset_features[OFFSET_SUIT][2] - if(center) - suit_overlay = center_image(suit_overlay, dimension_x, dimension_y) + if(!item_level_support && S.center) + suit_overlay = center_image(suit_overlay, S.dimension_x, S.dimension_y) overlays_standing[SUIT_LAYER] = suit_overlay update_hair() update_mutant_bodyparts() @@ -461,18 +468,13 @@ There are several things that need to be remembered: if(wear_mask) var/obj/item/clothing/mask/M = wear_mask remove_overlay(FACEMASK_LAYER) - var/alt_icon = M.alternate_worn_icon || 'icons/mob/mask.dmi' - var/muzzled = FALSE - var/variation_flag = NONE - if(("mam_snouts" in dna.species.default_features) && dna.features["mam_snouts"] != "None") - muzzled = TRUE - if(!muzzled && ("snout" in dna.species.default_features) && dna.features["snout"] != "None") - muzzled = TRUE - if(muzzled && M.mutantrace_variation & STYLE_MUZZLE) - alt_icon = 'icons/mob/mask_muzzled.dmi' - variation_flag |= STYLE_MUZZLE + if(M.mutantrace_variation) + if(M.muzzle_var == ALT_STYLE) + M.alternate_worn_icon = 'icons/mob/mask_muzzled.dmi' + else + M.alternate_worn_icon = null - overlays_standing[FACEMASK_LAYER] = M.build_worn_icon(wear_mask.icon_state, FACEMASK_LAYER, alt_icon, FALSE, NO_FEMALE_UNIFORM, variation_flag, FALSE) + overlays_standing[FACEMASK_LAYER] = M.build_worn_icon(state = wear_mask.icon_state, default_layer = FACEMASK_LAYER, default_icon_file = ((wear_mask.alternate_worn_icon) ? M.alternate_worn_icon : 'icons/mob/mask.dmi')) var/mutable_appearance/mask_overlay = overlays_standing[FACEMASK_LAYER] if(OFFSET_FACEMASK in dna.species.offset_features) @@ -494,11 +496,11 @@ There are several things that need to be remembered: apply_overlay(BACK_LAYER) /proc/wear_female_version(t_color, icon, layer, type) - var/index = "[t_color]-[icon]" + var/index = t_color var/icon/female_clothing_icon = GLOB.female_clothing_icons[index] if(!female_clothing_icon) //Create standing/laying icons if they don't exist generate_female_clothing(index,t_color,icon,type) - return mutable_appearance(GLOB.female_clothing_icons[index], layer = -layer) + return mutable_appearance(GLOB.female_clothing_icons[t_color], layer = -layer) /mob/living/carbon/human/proc/get_overlays_copy(list/unwantedLayers) var/list/out = new @@ -570,11 +572,11 @@ generate/load female uniform sprites matching all previously decided variables */ -/obj/item/proc/build_worn_icon(state = "", default_layer = 0, default_icon_file = null, isinhands = FALSE, femaleuniform = NO_FEMALE_UNIFORM, style_flags = NONE, use_alt_icon = TRUE) +/obj/item/proc/build_worn_icon(var/state = "", var/default_layer = 0, var/default_icon_file = null, var/isinhands = FALSE, var/femaleuniform = NO_FEMALE_UNIFORM) //Find a valid icon file from variables+arguments var/file2use - if(!isinhands && alternate_worn_icon && use_alt_icon) + if(!isinhands && alternate_worn_icon) file2use = alternate_worn_icon if(!file2use) file2use = default_icon_file @@ -594,7 +596,7 @@ generate/load female uniform sprites matching all previously decided variables //Get the overlays for this item when it's being worn //eg: ammo counters, primed grenade flashes, etc. - var/list/worn_overlays = worn_overlays(isinhands, file2use, style_flags) + var/list/worn_overlays = worn_overlays(isinhands, file2use) if(worn_overlays && worn_overlays.len) standing.overlays.Add(worn_overlays) @@ -673,8 +675,6 @@ generate/load female uniform sprites matching all previously decided variables . += "-robotic" if(BP.use_digitigrade) . += "-digitigrade[BP.use_digitigrade]" - if(BP.digitigrade_type) - . += "-[BP.digitigrade_type]" if(BP.dmg_overlay_type) . += "-[BP.dmg_overlay_type]" if(BP.body_markings) diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 9e9d440574..0061c7ed70 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -80,7 +80,7 @@ //Second link in a breath chain, calls check_breath() /mob/living/carbon/proc/breathe() var/obj/item/organ/lungs = getorganslot(ORGAN_SLOT_LUNGS) - if(reagents.has_reagent(/datum/reagent/toxin/lexorin)) + if(reagents.has_reagent("lexorin")) return if(istype(loc, /obj/machinery/atmospherics/components/unary/cryo_cell)) return @@ -156,7 +156,7 @@ //CRIT if(!breath || (breath.total_moles() == 0) || !lungs) - if(reagents.has_reagent(/datum/reagent/medicine/epinephrine) && lungs) + if(reagents.has_reagent("epinephrine") && lungs) return adjustOxyLoss(1) @@ -357,7 +357,7 @@ return // No decay if formaldehyde in corpse or when the corpse is charred - if(reagents.has_reagent(/datum/reagent/toxin/formaldehyde, 15) || HAS_TRAIT(src, TRAIT_HUSK)) + if(reagents.has_reagent("formaldehyde", 15) || HAS_TRAIT(src, TRAIT_HUSK)) return // Also no decay if corpse chilled or not organic/undead diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm index 56ef4fe24a..92ad87f6b5 100644 --- a/code/modules/mob/living/carbon/monkey/combat.dm +++ b/code/modules/mob/living/carbon/monkey/combat.dm @@ -369,23 +369,6 @@ retaliate(L) return ..() -/mob/living/carbon/monkey/attack_alien(mob/living/carbon/alien/humanoid/M) - if(M.a_intent == INTENT_HARM && prob(MONKEY_RETALIATE_HARM_PROB)) - retaliate(M) - else if(M.a_intent == INTENT_DISARM && prob(MONKEY_RETALIATE_DISARM_PROB)) - retaliate(M) - return ..() - -/mob/living/carbon/monkey/attack_larva(mob/living/carbon/alien/larva/L) - if(L.a_intent == INTENT_HARM && prob(MONKEY_RETALIATE_HARM_PROB)) - retaliate(L) - return ..() - -/mob/living/carbon/monkey/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) - if(user.a_intent == INTENT_HARM && prob(MONKEY_RETALIATE_HARM_PROB)) - retaliate(user) - return ..() - /mob/living/carbon/monkey/attack_paw(mob/living/L) if(L.a_intent == INTENT_HARM && prob(MONKEY_RETALIATE_HARM_PROB)) retaliate(L) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 14c3a76307..fe041dd0a6 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -66,7 +66,7 @@ . = ..() remove_movespeed_modifier(MOVESPEED_ID_MONKEY_REAGENT_SPEEDMOD, TRUE) var/amount - if(reagents.has_reagent(/datum/reagent/medicine/morphine)) + if(reagents.has_reagent("morphine")) amount = -1 if(amount) add_movespeed_modifier(MOVESPEED_ID_MONKEY_REAGENT_SPEEDMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = amount) diff --git a/code/modules/mob/living/carbon/monkey/monkey_defense.dm b/code/modules/mob/living/carbon/monkey/monkey_defense.dm index 32e3d21ee2..df90dd56fd 100644 --- a/code/modules/mob/living/carbon/monkey/monkey_defense.dm +++ b/code/modules/mob/living/carbon/monkey/monkey_defense.dm @@ -6,55 +6,37 @@ ..() /mob/living/carbon/monkey/attack_paw(mob/living/M) - . = ..() - if(!.) //unsuccessful monkey bite. - return - var/dam_zone = pick(BODY_ZONE_CHEST, BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_HAND, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) - var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone)) - if(!affecting) - affecting = get_bodypart(BODY_ZONE_CHEST) - if(M.limb_destroyer) - dismembering_strike(M, affecting.body_zone) - var/dmg = rand(1, 5) - apply_damage(dmg, BRUTE, affecting) - -/mob/living/carbon/monkey/attack_larva(mob/living/carbon/alien/larva/L) - . = ..() - if(!.) //unsuccessful larva bite - return - var/damage = rand(1, 3) - if(stat != DEAD) - L.amount_grown = min(L.amount_grown + damage, L.max_grown) - var/obj/item/bodypart/affecting = get_bodypart(ran_zone(L.zone_selected)) + if(..()) //successful monkey bite. + var/dam_zone = pick(BODY_ZONE_CHEST, BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_HAND, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone)) if(!affecting) affecting = get_bodypart(BODY_ZONE_CHEST) - apply_damage(damage, BRUTE, affecting) + if(M.limb_destroyer) + dismembering_strike(M, affecting.body_zone) + if(stat != DEAD) + var/dmg = rand(1, 5) + apply_damage(dmg, BRUTE, affecting) -/mob/living/carbon/monkey/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) - . = ..(user, TRUE) - if(.) - return - var/hulk_verb = pick("smash","pummel") - playsound(loc, user.dna.species.attack_sound, 25, 1, -1) - var/message = "[user] has [hulk_verb]ed [src]!" - visible_message("[message]", \ - "[message]") - adjustBruteLoss(15) - return TRUE +/mob/living/carbon/monkey/attack_larva(mob/living/carbon/alien/larva/L) + if(..()) //successful larva bite. + var/damage = rand(1, 3) + if(stat != DEAD) + L.amount_grown = min(L.amount_grown + damage, L.max_grown) + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(L.zone_selected)) + if(!affecting) + affecting = get_bodypart(BODY_ZONE_CHEST) + apply_damage(damage, BRUTE, affecting) /mob/living/carbon/monkey/attack_hand(mob/living/carbon/human/M) - . = ..() - if(.) //To allow surgery to return properly. + if(..()) //To allow surgery to return properly. return + switch(M.a_intent) - if(INTENT_HELP) + if("help") help_shake_act(M) - if(INTENT_GRAB) + if("grab") grabbedby(M) - if(INTENT_HARM) - if(HAS_TRAIT(M, TRAIT_PACIFISM)) - to_chat(M, "You don't want to hurt [src]!") - return + if("harm") M.do_attack_animation(src, ATTACK_EFFECT_PUNCH) if (prob(75)) visible_message("[M] has punched [name]!", \ @@ -78,7 +60,7 @@ playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) visible_message("[M] has attempted to punch [name]!", \ "[M] has attempted to punch [name]!", null, COMBAT_MESSAGE_RANGE) - if(INTENT_DISARM) + if("disarm") if(!IsUnconscious()) M.do_attack_animation(src, ATTACK_EFFECT_DISARM) if (prob(25)) @@ -92,51 +74,50 @@ visible_message("[M] has disarmed [src]!", "[M] has disarmed [src]!", null, COMBAT_MESSAGE_RANGE) /mob/living/carbon/monkey/attack_alien(mob/living/carbon/alien/humanoid/M) - . = ..() - if(!.) // the attack was blocked or was help/grab intent - return - if (M.a_intent == INTENT_HARM) - if ((prob(95) && health > 0)) - playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1) - var/damage = rand(15, 30) - if (damage >= 25) - damage = rand(20, 40) - if(AmountUnconscious() < 300) - Unconscious(rand(200, 300)) - visible_message("[M] has wounded [name]!", \ - "[M] has wounded [name]!", null, COMBAT_MESSAGE_RANGE) + if(..()) //if harm or disarm intent. + if (M.a_intent == INTENT_HARM) + if ((prob(95) && health > 0)) + playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1) + var/damage = rand(15, 30) + if (damage >= 25) + damage = rand(20, 40) + if(AmountUnconscious() < 300) + Unconscious(rand(200, 300)) + visible_message("[M] has wounded [name]!", \ + "[M] has wounded [name]!", null, COMBAT_MESSAGE_RANGE) + else + visible_message("[M] has slashed [name]!", \ + "[M] has slashed [name]!", null, COMBAT_MESSAGE_RANGE) + + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) + log_combat(M, src, "attacked") + if(!affecting) + affecting = get_bodypart(BODY_ZONE_CHEST) + if(!dismembering_strike(M, affecting.body_zone)) //Dismemberment successful + return 1 + apply_damage(damage, BRUTE, affecting) + else - visible_message("[M] has slashed [name]!", \ - "[M] has slashed [name]!", null, COMBAT_MESSAGE_RANGE) + playsound(loc, 'sound/weapons/slashmiss.ogg', 25, 1, -1) + visible_message("[M] has attempted to lunge at [name]!", \ + "[M] has attempted to lunge at [name]!", null, COMBAT_MESSAGE_RANGE) - var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) - log_combat(M, src, "attacked") - if(!affecting) - affecting = get_bodypart(BODY_ZONE_CHEST) - if(!dismembering_strike(M, affecting.body_zone)) //Dismemberment successful - return 1 - apply_damage(damage, BRUTE, affecting) - - else - playsound(loc, 'sound/weapons/slashmiss.ogg', 25, 1, -1) - visible_message("[M] has attempted to lunge at [name]!", \ - "[M] has attempted to lunge at [name]!", null, COMBAT_MESSAGE_RANGE) - - else - var/obj/item/I = null - playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) - if(prob(95)) - Knockdown(20) - visible_message("[M] has tackled down [name]!", \ - "[M] has tackled down [name]!", null, COMBAT_MESSAGE_RANGE) - else - I = get_active_held_item() - if(dropItemToGround(I)) - visible_message("[M] has disarmed [name]!", "[M] has disarmed [name]!", null, COMBAT_MESSAGE_RANGE) + if (M.a_intent == INTENT_DISARM) + var/obj/item/I = null + playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) + if(prob(95)) + Knockdown(20) + visible_message("[M] has tackled down [name]!", \ + "[M] has tackled down [name]!", null, COMBAT_MESSAGE_RANGE) else - I = null - log_combat(M, src, "disarmed", "[I ? " removing \the [I]" : ""]") - updatehealth() + I = get_active_held_item() + if(dropItemToGround(I)) + visible_message("[M] has disarmed [name]!", "[M] has disarmed [name]!", null, COMBAT_MESSAGE_RANGE) + else + I = null + log_combat(M, src, "disarmed", "[I ? " removing \the [I]" : ""]") + updatehealth() + /mob/living/carbon/monkey/attack_animal(mob/living/simple_animal/M) . = ..() @@ -151,19 +132,17 @@ apply_damage(damage, M.melee_damage_type, affecting) /mob/living/carbon/monkey/attack_slime(mob/living/simple_animal/slime/M) - . = ..() - if(!.) //unsuccessful slime attack - return - var/damage = rand(5, 35) - if(M.is_adult) - damage = rand(20, 40) - var/dam_zone = dismembering_strike(M, pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)) - if(!dam_zone) //Dismemberment successful - return 1 - var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone)) - if(!affecting) - affecting = get_bodypart(BODY_ZONE_CHEST) - apply_damage(damage, BRUTE, affecting) + if(..()) //successful slime attack + var/damage = rand(5, 35) + if(M.is_adult) + damage = rand(20, 40) + var/dam_zone = dismembering_strike(M, pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)) + if(!dam_zone) //Dismemberment successful + return 1 + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone)) + if(!affecting) + affecting = get_bodypart(BODY_ZONE_CHEST) + apply_damage(damage, BRUTE, affecting) /mob/living/carbon/monkey/acid_act(acidpwr, acid_volume, bodyzone_hit) . = 1 diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm index ca1a946e10..66be8058f1 100644 --- a/code/modules/mob/living/carbon/update_icons.dm +++ b/code/modules/mob/living/carbon/update_icons.dm @@ -1,3 +1,31 @@ +//IMPORTANT: Multiple animate() calls do not stack well, so try to do them all at once if you can. +/mob/living/carbon/update_transform() + var/matrix/ntransform = matrix(transform) //aka transform.Copy() + var/final_pixel_y = pixel_y + var/final_dir = dir + var/changed = 0 + if(lying != lying_prev && rotate_on_lying) + changed++ + ntransform.TurnTo(lying_prev,lying) + if(lying == 0) //Lying to standing + final_pixel_y = get_standard_pixel_y_offset() + else //if(lying != 0) + if(lying_prev == 0) //Standing to lying + pixel_y = get_standard_pixel_y_offset() + final_pixel_y = get_standard_pixel_y_offset(lying) + if(dir & (EAST|WEST)) //Facing east or west + final_dir = pick(NORTH, SOUTH) //So you fall on your side rather than your face or ass + + if(resize != RESIZE_DEFAULT_SIZE) + changed++ + ntransform.Scale(resize) + resize = RESIZE_DEFAULT_SIZE + + if(changed) + animate(src, transform = ntransform, time = 2, pixel_y = final_pixel_y, dir = final_dir, easing = EASE_IN|EASE_OUT) + setMovetype(movement_type & ~FLOATING) // If we were without gravity, the bouncing animation got stopped, so we make sure we restart it in next life(). + + /mob/living/carbon var/list/overlays_standing[TOTAL_LAYERS] @@ -200,7 +228,7 @@ //Overlays for the worn overlay so you can overlay while you overlay //eg: ammo counters, primed grenade flashing, etc. //"icon_file" is used automatically for inhands etc. to make sure it gets the right inhand file -/obj/item/proc/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) +/obj/item/proc/worn_overlays(isinhands = FALSE, icon_file) . = list() diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index 1c6546fd83..8345ef916d 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -91,9 +91,7 @@ if(mind && mind.name && mind.active && !istype(T.loc, /area/ctf) && !(signal & COMPONENT_BLOCK_DEATH_BROADCAST)) var/rendered = "[mind.name] has died at [get_area_name(T)]." deadchat_broadcast(rendered, follow_target = src, turf_target = T, message_type=DEADCHAT_DEATHRATTLE) - if (client && client.prefs && client.prefs.auto_ooc) - if (!(client.prefs.chat_toggles & CHAT_OOC)) - client.prefs.chat_toggles ^= CHAT_OOC + if (client) client.move_delay = initial(client.move_delay) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index c2a307950c..78542ab052 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1225,7 +1225,7 @@ clamp_unconscious_to = 0, clamp_immobility_to = 0, reset_misc = TRUE, - healing_chems = list(/datum/reagent/medicine/inaprovaline = 3, /datum/reagent/medicine/synaptizine = 10, /datum/reagent/medicine/regen_jelly = 10, /datum/reagent/medicine/stimulants = 10), + healing_chems = list("inaprovaline" = 3, "synaptizine" = 10, "regen_jelly" = 10, "stimulants" = 10), message = "You feel a surge of energy!", stamina_buffer_boost = 0, //restores stamina buffer rather than just health scale_stamina_loss_recovery, //defaults to null. if this is set, restores loss * this stamina. make sure it's a fraction. @@ -1252,5 +1252,5 @@ updatehealth() update_stamina() update_canmove() - if(healing_chems) - reagents.add_reagent_list(healing_chems) + for(var/chem in healing_chems) + reagents.add_reagent(chem, healing_chems[chem]) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index e398dad65b..722c984309 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -36,50 +36,7 @@ /mob/living/proc/on_hit(obj/item/projectile/P) return -/mob/living/proc/check_shields(atom/AM, damage, attack_text = "the attack", attack_type = MELEE_ATTACK, armour_penetration = 0) - var/block_chance_modifier = round(damage / -3) - for(var/obj/item/I in held_items) - if(!istype(I, /obj/item/clothing)) - var/final_block_chance = I.block_chance - (CLAMP((armour_penetration-I.armour_penetration)/2,0,100)) + block_chance_modifier //So armour piercing blades can still be parried by other blades, for example - if(I.hit_reaction(src, AM, attack_text, final_block_chance, damage, attack_type)) - return TRUE - return FALSE - -/mob/living/proc/check_reflect(def_zone) //Reflection checks for anything in your hands, based on the reflection chance of the object(s) - for(var/obj/item/I in held_items) - if(I.IsReflect(def_zone)) - return TRUE - return FALSE - -/mob/living/proc/reflect_bullet_check(obj/item/projectile/P, def_zone) - if(P.is_reflectable && check_reflect(def_zone)) // Checks if you've passed a reflection% check - visible_message("The [P.name] gets reflected by [src]!", \ - "The [P.name] gets reflected by [src]!") - // Find a turf near or on the original location to bounce to - if(P.starting) - var/new_x = P.starting.x + pick(0, 0, 0, 0, 0, -1, 1, -2, 2) - var/new_y = P.starting.y + pick(0, 0, 0, 0, 0, -1, 1, -2, 2) - var/turf/curloc = get_turf(src) - // redirect the projectile - P.original = locate(new_x, new_y, P.z) - P.starting = curloc - P.firer = src - P.yo = new_y - curloc.y - P.xo = new_x - curloc.x - var/new_angle_s = P.Angle + rand(120,240) - while(new_angle_s > 180) // Translate to regular projectile degrees - new_angle_s -= 360 - P.setAngle(new_angle_s) - return TRUE - return FALSE - /mob/living/bullet_act(obj/item/projectile/P, def_zone) - if(P.original != src || P.firer != src) //try to block or reflect the bullet, can't do so when shooting oneself - if(reflect_bullet_check(P, def_zone)) - return -1 // complete projectile permutation - if(check_shields(P, P.damage, "the [P.name]", PROJECTILE_ATTACK, P.armour_penetration)) - P.on_hit(src, 100, def_zone) - return 2 var/armor = run_armor_check(def_zone, P.flag, null, null, P.armour_penetration, null) if(!P.nodamage) apply_damage(P.damage, P.damage_type, def_zone, armor) @@ -98,32 +55,9 @@ else return 0 -/mob/living/proc/catch_item(obj/item/I, skip_throw_mode_check = FALSE) - return FALSE - -/mob/living/proc/embed_item(obj/item/I) - return - -/mob/living/proc/can_embed(obj/item/I) - return FALSE - /mob/living/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked = FALSE) - var/obj/item/I - var/throwpower = 30 - if(isitem(AM)) - I = AM - throwpower = I.throwforce - if(check_shields(AM, throwpower, "\the [AM.name]", THROWN_PROJECTILE_ATTACK)) - hitpush = FALSE - skipcatch = TRUE - blocked = TRUE - else if(I && I.throw_speed >= EMBED_THROWSPEED_THRESHOLD && can_embed(I, src) && prob(I.embedding.embed_chance) && !HAS_TRAIT(src, TRAIT_PIERCEIMMUNE) && (!HAS_TRAIT(src, TRAIT_AUTO_CATCH_ITEM) || incapacitated() || get_active_held_item())) - embed_item(I) - hitpush = FALSE - skipcatch = TRUE //can't catch the now embedded item - if(I) - if(!skipcatch && isturf(I.loc) && catch_item(I)) - return TRUE + if(istype(AM, /obj/item)) + var/obj/item/I = AM var/zone = ran_zone(BODY_ZONE_CHEST, 65)//Hits a random part of the body, geared towards the chest var/dtype = BRUTE var/volume = I.get_volume_by_throwforce_and_or_w_class() @@ -280,24 +214,6 @@ Move(user.loc) return 1 -/mob/living/attack_hand(mob/user) - ..() //Ignoring parent return value here. - SEND_SIGNAL(src, COMSIG_MOB_ATTACK_HAND, user) - if((user != src) && user.a_intent != INTENT_HELP && check_shields(user, 0, user.name, attack_type = UNARMED_ATTACK)) - log_combat(user, src, "attempted to touch") - visible_message("[user] attempted to touch [src]!") - return TRUE - -/mob/living/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) - if(user.a_intent == INTENT_HARM) - if(HAS_TRAIT(user, TRAIT_PACIFISM)) - to_chat(user, "You don't want to hurt [src]!") - return TRUE - var/hulk_verb = pick("smash","pummel") - if(user != src && check_shields(user, 15, "the [hulk_verb]ing")) - return TRUE - ..() - return FALSE /mob/living/attack_slime(mob/living/simple_animal/slime/M) if(!SSticker.HasRoundStarted()) @@ -313,12 +229,6 @@ to_chat(M, "You don't want to hurt anyone!") return FALSE - var/damage = rand(5, 35) - if(M.is_adult) - damage = rand(20, 40) - if(check_shields(M, damage, "the [M.name]")) - return FALSE - if (stat != DEAD) log_combat(M, src, "attacked") M.do_attack_animation(src) @@ -335,8 +245,7 @@ if(HAS_TRAIT(M, TRAIT_PACIFISM)) to_chat(M, "You don't want to hurt anyone!") return FALSE - if(check_shields(M, rand(M.melee_damage_lower, M.melee_damage_upper), "the [M.name]", MELEE_ATTACK, M.armour_penetration)) - return FALSE + if(M.attack_sound) playsound(loc, M.attack_sound, 50, 1, 1) M.do_attack_animation(src) @@ -347,6 +256,10 @@ /mob/living/attack_paw(mob/living/carbon/monkey/M) + if(isturf(loc) && istype(loc.loc, /area/start)) + to_chat(M, "No attacking people at spawn, you jackass.") + return FALSE + if (M.a_intent == INTENT_HARM) if(HAS_TRAIT(M, TRAIT_PACIFISM)) to_chat(M, "You don't want to hurt anyone!") @@ -355,8 +268,6 @@ if(M.is_muzzled() || (M.wear_mask && M.wear_mask.flags_cover & MASKCOVERSMOUTH)) to_chat(M, "You can't bite with your mouth covered!") return FALSE - if(check_shields(M, 0, "the [M.name]")) - return FALSE M.do_attack_animation(src, ATTACK_EFFECT_BITE) if (prob(75)) log_combat(M, src, "attacked") @@ -371,16 +282,15 @@ /mob/living/attack_larva(mob/living/carbon/alien/larva/L) switch(L.a_intent) - if(INTENT_HELP) + if("help") visible_message("[L.name] rubs its head against [src].") return FALSE else if(HAS_TRAIT(L, TRAIT_PACIFISM)) to_chat(L, "You don't want to hurt anyone!") - return FALSE - if(L != src && check_shields(L, rand(1, 3), "the [L.name]")) - return FALSE + return + L.do_attack_animation(src) if(prob(90)) log_combat(L, src, "attacked") @@ -391,29 +301,24 @@ else visible_message("[L.name] has attempted to bite [src]!", \ "[L.name] has attempted to bite [src]!", null, COMBAT_MESSAGE_RANGE) + return FALSE /mob/living/attack_alien(mob/living/carbon/alien/humanoid/M) - if((M != src) && M.a_intent != INTENT_HELP && check_shields(M, 0, "the [M.name]")) - visible_message("[M] attempted to touch [src]!") - return FALSE switch(M.a_intent) - if (INTENT_HELP) - if(!isalien(src)) //I know it's ugly, but the alien vs alien attack_alien behaviour is a bit different. - visible_message("[M] caresses [src] with its scythe like arm.") + if ("help") + visible_message("[M] caresses [src] with its scythe like arm.") return FALSE - if (INTENT_GRAB) + if ("grab") grabbedby(M) return FALSE - if(INTENT_HARM) + if("harm") if(HAS_TRAIT(M, TRAIT_PACIFISM)) to_chat(M, "You don't want to hurt anyone!") return FALSE - if(!isalien(src)) - M.do_attack_animation(src) + M.do_attack_animation(src) return TRUE - if(INTENT_DISARM) - if(!isalien(src)) - M.do_attack_animation(src, ATTACK_EFFECT_DISARM) + if("disarm") + M.do_attack_animation(src, ATTACK_EFFECT_DISARM) return TRUE /mob/living/ex_act(severity, target, origin) @@ -464,7 +369,7 @@ to_chat(src, "You resist Nar'Sie's influence... but not all of it. Run!") adjustBruteLoss(35) if(src && reagents) - reagents.add_reagent(/datum/reagent/toxin/heparin, 5) + reagents.add_reagent("heparin", 5) return FALSE if(GLOB.cult_narsie && GLOB.cult_narsie.souls_needed[src]) GLOB.cult_narsie.souls_needed -= src diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 783e044492..4d2a36907d 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -111,6 +111,4 @@ var/list/diseases = list() // list of all diseases in a mob var/list/disease_resistances = list() - var/drag_slowdown = TRUE //Whether the mob is slowed down when dragging another prone mob - - var/rotate_on_lying = FALSE \ No newline at end of file + var/drag_slowdown = TRUE //Whether the mob is slowed down when dragging another prone mob \ No newline at end of file diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 1694d04b82..0444458841 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -260,6 +260,15 @@ viewalerts = 1 src << browse(dat, "window=aialerts&can_close=0") +/mob/living/silicon/ai/proc/ai_roster() + var/dat = "Crew RosterCrew Roster:

    " + + dat += GLOB.data_core.get_manifest() + dat += "" + + src << browse(dat, "window=airoster") + onclose(src, "airoster") + /mob/living/silicon/ai/proc/ai_call_shuttle() if(control_disabled) to_chat(usr, "Wireless control is disabled!") @@ -672,23 +681,18 @@ "green face" = 'icons/mob/ai.dmi', "xeno queen" = 'icons/mob/alien.dmi', "horror" = 'icons/mob/ai.dmi', - "creature" = 'icons/mob/ai.dmi', - "custom" + "creature" = 'icons/mob/ai.dmi' ) input = input("Please select a hologram:") as null|anything in icon_list if(input) qdel(holo_icon) switch(input) - if("custom") - if(client?.prefs?.custom_holoform_icon) - holo_icon = client.prefs.get_filtered_holoform(HOLOFORM_FILTER_AI) - else - holo_icon = getHologramIcon(icon('icons/mob/ai.dmi', "female")) - else if("xeno queen") + if("xeno queen") holo_icon = getHologramIcon(icon(icon_list[input],"alienq")) else holo_icon = getHologramIcon(icon(icon_list[input], input)) + return /mob/living/silicon/ai/proc/corereturn() set category = "Malfunction" diff --git a/code/modules/mob/living/silicon/ai/ai_defense.dm b/code/modules/mob/living/silicon/ai/ai_defense.dm index 97d26f672a..7c59c2b791 100644 --- a/code/modules/mob/living/silicon/ai/ai_defense.dm +++ b/code/modules/mob/living/silicon/ai/ai_defense.dm @@ -1,9 +1,15 @@ + /mob/living/silicon/ai/attacked_by(obj/item/I, mob/living/user, def_zone) - . = ..() - if(!.) - return FALSE if(I.force && I.damtype != STAMINA && stat != DEAD) //only sparks if real damage is dealt. spark_system.start() + return ..() + + +/mob/living/silicon/ai/attack_alien(mob/living/carbon/alien/humanoid/M) + if(!SSticker.HasRoundStarted()) + to_chat(M, "You cannot attack people before the game has started.") + return + ..() /mob/living/silicon/ai/attack_slime(mob/living/simple_animal/slime/user) return //immune to slimes diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index 38afaf8313..7477ba7713 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -68,7 +68,7 @@ // Use this when setting the aiEye's location. // It will also stream the chunk that the new loc is in. -/mob/camera/aiEye/proc/setLoc(T, force_update = FALSE, dir) +/mob/camera/aiEye/proc/setLoc(T, force_update = FALSE) if(ai) if(!isturf(ai.loc)) return @@ -88,7 +88,7 @@ //Holopad if(istype(ai.current, /obj/machinery/holopad)) var/obj/machinery/holopad/H = ai.current - H.move_hologram(ai, T, dir) + H.move_hologram(ai, T) if(ai.camera_light_on) ai.light_cameras() if(ai.master_multicam) @@ -139,7 +139,7 @@ for(var/i = 0; i < max(user.sprint, initial); i += 20) var/turf/step = get_turf(get_step(user.eyeobj, direct)) if(step) - user.eyeobj.setLoc(step, null, direct) + user.eyeobj.setLoc(step) user.cooldown = world.timeofday + 5 if(user.acceleration) diff --git a/code/modules/mob/living/silicon/custom_holoform.dm b/code/modules/mob/living/silicon/custom_holoform.dm deleted file mode 100644 index 8ce6e9a29a..0000000000 --- a/code/modules/mob/living/silicon/custom_holoform.dm +++ /dev/null @@ -1,28 +0,0 @@ -/mob/living/silicon/verb/clear_custom_holoform() - set name = "Clear Custom Holoform" - set desc = "Clear your current custom holoform" - set category = "OOC" - - if(!client.prefs) - to_chat(src, "No preferences datum on your client, contact an admin/coder!") - return - client.prefs.custom_holoform_icon = null - client.prefs.cached_holoform_icons = null - to_chat(src, "Holoform removed.") - -/mob/living/silicon/verb/set_custom_holoform() - set name = "Set Custom Holoform" - set desc = "Set your custom holoform using your current preferences slot and a specified set of gear." - set category = "OOC" - - if(!client.prefs) - to_chat(src, "No preferences datum on your client, contact an admin/coder!") - return - if(client.prefs.last_custom_holoform > world.time - CUSTOM_HOLOFORM_DELAY) - to_chat(src, "You are attempting to change custom holoforms too fast!") - var/icon/new_holoform = user_interface_custom_holoform(client) - if(new_holoform) - client.prefs.custom_holoform_icon = new_holoform - client.prefs.cached_holoform_icons = null - client.prefs.last_custom_holoform = world.time - to_chat(src, "Holoform set.") diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 7055838039..7ec63cf415 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -58,12 +58,10 @@ var/canholo = TRUE var/obj/item/card/id/access_card = null var/chassis = "repairbot" - var/dynamic_chassis - var/dynamic_chassis_sit = FALSE //whether we're sitting instead of resting spritewise - var/dynamic_chassis_bellyup = FALSE //whether we're lying down bellyup - var/list/possible_chassis //initialized in initialize. - var/list/dynamic_chassis_icons //ditto. - var/list/chassis_pixel_offsets_x //stupid dogborgs + var/list/possible_chassis = list("cat" = TRUE, "mouse" = TRUE, "monkey" = TRUE, "corgi" = FALSE, + "fox" = FALSE, "repairbot" = TRUE, "rabbit" = TRUE, "borgi" = FALSE , + "parrot" = FALSE, "bear" = FALSE , "mushroom" = FALSE, "crow" = FALSE , + "fairy" = FALSE , "spiderbot" = FALSE) //assoc value is whether it can be picked up. var/static/item_head_icon = 'icons/mob/pai_item_head.dmi' var/static/item_lh_icon = 'icons/mob/pai_item_lh.dmi' var/static/item_rh_icon = 'icons/mob/pai_item_rh.dmi' @@ -71,20 +69,22 @@ var/emitterhealth = 20 var/emittermaxhealth = 20 var/emitterregen = 0.25 - var/emitter_next_use = 0 - var/emitter_emp_cd = 300 var/emittercd = 50 var/emitteroverloadcd = 100 + var/emittersemicd = FALSE - var/radio_short = FALSE - var/radio_short_cooldown = 5 MINUTES - var/radio_short_timerid - + var/overload_ventcrawl = 0 + var/overload_bulletblock = 0 //Why is this a good idea? + var/overload_maxhealth = 0 canmove = FALSE var/silent = FALSE var/brightness_power = 5 - var/icon/custom_holoform_icon +/mob/living/silicon/pai/can_unbuckle() + return FALSE + +/mob/living/silicon/pai/can_buckle() + return FALSE /mob/living/silicon/pai/Destroy() if (loc != card) @@ -118,13 +118,6 @@ pda.owner = text("[]", src) pda.name = pda.owner + " (" + pda.ownjob + ")" - possible_chassis = typelist(NAMEOF(src, possible_chassis), list("cat" = TRUE, "mouse" = TRUE, "monkey" = TRUE, "corgi" = FALSE, - "fox" = FALSE, "repairbot" = TRUE, "rabbit" = TRUE, "borgi" = FALSE , - "parrot" = FALSE, "bear" = FALSE , "mushroom" = FALSE, "crow" = FALSE , - "fairy" = FALSE , "spiderbot" = FALSE)) //assoc value is whether it can be picked up. - dynamic_chassis_icons = typelist(NAMEOF(src, dynamic_chassis_icons), initialize_dynamic_chassis_icons()) - chassis_pixel_offsets_x = typelist(NAMEOF(src, chassis_pixel_offsets_x), default_chassis_pixel_offsets_x()) - . = ..() var/datum/action/innate/pai/software/SW = new @@ -140,7 +133,8 @@ AR.Grant(src) AL.Grant(src) ALM.Grant(src) - emitter_next_use = world.time + 10 SECONDS + emittersemicd = TRUE + addtimer(CALLBACK(src, .proc/emittercool), 600) /mob/living/silicon/pai/Life() if(hacking) @@ -234,7 +228,7 @@ /datum/action/innate/pai/shell/Trigger() ..() if(P.holoform) - P.fold_in(FALSE) + P.fold_in(0) else P.fold_out() @@ -298,132 +292,3 @@ /mob/living/silicon/pai/process() emitterhealth = CLAMP((emitterhealth + emitterregen), -50, emittermaxhealth) - -/mob/living/silicon/pai/proc/short_radio() - if(radio_short_timerid) - deltimer(radio_short_timerid) - radio_short = TRUE - to_chat(src, "Your radio shorts out!") - radio_short_timerid = addtimer(CALLBACK(src, .proc/unshort_radio), radio_short_cooldown, flags = TIMER_STOPPABLE) - -/mob/living/silicon/pai/proc/unshort_radio() - radio_short = FALSE - to_chat(src, "You feel your radio is operational once more.") - if(radio_short_timerid) - deltimer(radio_short_timerid) - -/mob/living/silicon/pai/proc/initialize_dynamic_chassis_icons() - . = list() - var/icon/curr //for inserts - - //This is a horrible system and I wish I was not as lazy and did something smarter, like just generating a new icon in memory which is probably more efficient. - - //Basic /tg/ cyborgs - .["Cyborg - Engineering (default)"] = process_holoform_icon_filter(icon('icons/mob/robots.dmi', "engineer"), HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Engineering (loaderborg)"] = process_holoform_icon_filter(icon('modular_citadel/icons/mob/robots.dmi', "loaderborg"), HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Engineering (handyeng)"] = process_holoform_icon_filter(icon('modular_citadel/icons/mob/robots.dmi', "handyeng"), HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Engineering (sleekeng)"] = process_holoform_icon_filter(icon('modular_citadel/icons/mob/robots.dmi', "sleekeng"), HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Engineering (marinaeng)"] = process_holoform_icon_filter(icon('modular_citadel/icons/mob/robots.dmi', "marinaeng"), HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Medical (default)"] = process_holoform_icon_filter(icon('icons/mob/robots.dmi', "medical"), HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Medical (marinamed)"] = process_holoform_icon_filter(icon('modular_citadel/icons/mob/robots.dmi', "marinamed"), HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Medical (eyebotmed)"] = process_holoform_icon_filter(icon('modular_citadel/icons/mob/robots.dmi', "eyebotmed"), HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Security (default)"] = process_holoform_icon_filter(icon('icons/mob/robots.dmi', "sec"), HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Security (sleeksec)"] = process_holoform_icon_filter(icon('modular_citadel/icons/mob/robots.dmi', "sleeksec"), HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Security (marinasec)"] = process_holoform_icon_filter(icon('modular_citadel/icons/mob/robots.dmi', "marinasec"), HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Clown (default)"] = process_holoform_icon_filter(icon('icons/mob/robots.dmi', "clown"), HOLOFORM_FILTER_PAI, FALSE) - - //Citadel dogborgs - //Engi - curr = icon('modular_citadel/icons/mob/widerobot.dmi', "valeeng") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valeeng-rest"), "rest") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valeeng-sit"), "sit") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valeeng-bellyup"), "bellyup") - process_holoform_icon_filter(curr, HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Engineering (dog - valeeng)"] = curr - curr = icon('modular_citadel/icons/mob/widerobot.dmi', "pupdozer") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "pupdozer-rest"), "rest") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "pupdozer-sit"), "sit") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "pupdozer-bellyup"), "bellyup") - process_holoform_icon_filter(curr, HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Engineering (dog - pupdozer)"] = curr - //Med - curr = icon('modular_citadel/icons/mob/widerobot.dmi', "medihound") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "medihound-rest"), "rest") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "medihound-sit"), "sit") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "medihound-bellyup"), "bellyup") - process_holoform_icon_filter(curr, HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Medical (dog - medihound)"] = curr - curr = icon('modular_citadel/icons/mob/widerobot.dmi', "medihounddark") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "medihounddark-rest"), "rest") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "medihounddark-sit"), "sit") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "medihounddark-bellyup"), "bellyup") - process_holoform_icon_filter(curr, HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Medical (dog - medihounddark)"] = curr - curr = icon('modular_citadel/icons/mob/widerobot.dmi', "valemed") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valemed-rest"), "rest") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valemed-sit"), "sit") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valemed-bellyup"), "bellyup") - process_holoform_icon_filter(curr, HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Medical (dog - valemed)"] = curr - //Sec - curr = icon('modular_citadel/icons/mob/widerobot.dmi', "k9") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "k9-rest"), "rest") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "k9-sit"), "sit") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "k9-bellyup"), "bellyup") - process_holoform_icon_filter(curr, HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Security (dog - k9)"] = curr - curr = icon('modular_citadel/icons/mob/widerobot.dmi', "k9dark") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "k9dark-rest"), "rest") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "k9dark-sit"), "sit") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "k9dark-bellyup"), "bellyup") - process_holoform_icon_filter(curr, HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Security (dog - k9dark)"] = curr - curr = icon('modular_citadel/icons/mob/widerobot.dmi', "valesec") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valesec-rest"), "rest") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valesec-sit"), "sit") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valesec-bellyup"), "bellyup") - process_holoform_icon_filter(curr, HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Security (dog - valesec)"] = curr - //Service - curr = icon('modular_citadel/icons/mob/widerobot.dmi', "valeserv") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valeserv-rest"), "rest") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valeserv-sit"), "sit") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valeserv-bellyup"), "bellyup") - process_holoform_icon_filter(curr, HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Service (dog - valeserv)"] = curr - curr = icon('modular_citadel/icons/mob/widerobot.dmi', "valeservdark") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valeservdark-rest"), "rest") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valeservdark-sit"), "sit") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valeservdark-bellyup"), "bellyup") - process_holoform_icon_filter(curr, HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Service (dog - valeservdark)"] = curr - //Sci - curr = icon('modular_citadel/icons/mob/widerobot.dmi', "valesci") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valesci-rest"), "rest") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valesci-sit"), "sit") - curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valesci-bellyup"), "bellyup") - process_holoform_icon_filter(curr, HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Science (dog - valesci)"] = curr - //Misc - .["Cyborg - Misc (dog - blade)"] = process_holoform_icon_filter(icon('modular_citadel/icons/mob/widerobot.dmi', "blade"), HOLOFORM_FILTER_PAI, FALSE) - -/mob/living/silicon/pai/proc/default_chassis_pixel_offsets_x() - . = list() - //Engi - .["Cyborg - Engineering (dog - valeeng)"] = -16 - .["Cyborg - Engineering (dog - pupdozer)"] = -16 - //Med - .["Cyborg - Medical (dog - medihound)"] = -16 - .["Cyborg - Medical (dog - medihounddark)"] = -16 - .["Cyborg - Medical (dog - valemed)"] = -16 - //Sec - .["Cyborg - Security (dog - k9)"] = -16 - .["Cyborg - Security (dog - valesec)"] = -16 - .["Cyborg - Security (dog - k9dark)"] = -16 - //Service - .["Cyborg - Service (dog - valeserv)"] = -16 - .["Cyborg - Service (dog - valeservdark)"] = -16 - //Sci - .["Cyborg - Security (dog - valesci)"] = -16 - //Misc - .["Cyborg - Misc (dog - blade)"] = -16 diff --git a/code/modules/mob/living/silicon/pai/pai_defense.dm b/code/modules/mob/living/silicon/pai/pai_defense.dm index c727e100d8..dda8ddfebd 100644 --- a/code/modules/mob/living/silicon/pai/pai_defense.dm +++ b/code/modules/mob/living/silicon/pai/pai_defense.dm @@ -8,10 +8,9 @@ return take_holo_damage(50/severity) Knockdown(400/severity) - silent = max((3 MINUTES)/severity, silent) + silent = max(30/severity, silent) if(holoform) fold_in(force = TRUE) - emitter_next_use = world.time + emitter_emp_cd //Need more effects that aren't instadeath or permanent law corruption. /mob/living/silicon/pai/ex_act(severity, target) @@ -27,14 +26,13 @@ fold_in(force = 1) Knockdown(200) -//ATTACK HAND IGNORING PARENT RETURN VALUE /mob/living/silicon/pai/attack_hand(mob/living/carbon/human/user) switch(user.a_intent) - if(INTENT_HELP) + if("help") visible_message("[user] gently pats [src] on the head, eliciting an off-putting buzzing from its holographic field.") - if(INTENT_DISARM) + if("disarm") visible_message("[user] boops [src] on the head!") - if(INTENT_HARM) + if("harm") user.do_attack_animation(src) if (user.name == master) visible_message("Responding to its master's touch, [src] disengages its holochassis emitter, rapidly losing coherence.") @@ -43,19 +41,14 @@ if(user.put_in_hands(card)) user.visible_message("[user] promptly scoops up [user.p_their()] pAI's card.") else - if(HAS_TRAIT(user, TRAIT_PACIFISM)) - to_chat(user, "You don't want to hurt [src]!") - return visible_message("[user] stomps on [src]!.") take_holo_damage(2) - else - grabbedby(user) -/mob/living/silicon/pai/bullet_act(obj/item/projectile/P, def_zone) - if(P.stun) +/mob/living/silicon/pai/bullet_act(obj/item/projectile/Proj) + if(Proj.stun) fold_in(force = TRUE) - visible_message("The electrically-charged projectile disrupts [src]'s holomatrix, forcing [src] to fold in!") - . = ..() + src.visible_message("The electrically-charged projectile disrupts [src]'s holomatrix, forcing [src] to fold in!") + . = ..(Proj) /mob/living/silicon/pai/stripPanelUnequip(obj/item/what, mob/who, where) //prevents stripping to_chat(src, "Your holochassis stutters and warps intensely as you attempt to interact with the object, forcing you to cease lest the field fail.") @@ -70,8 +63,7 @@ emitterhealth = CLAMP((emitterhealth - amount), -50, emittermaxhealth) if(emitterhealth < 0) fold_in(force = TRUE) - if(amount > 0) - to_chat(src, "The impact degrades your holochassis!") + to_chat(src, "The impact degrades your holochassis!") return amount /mob/living/silicon/pai/adjustBruteLoss(amount, updating_health = TRUE, forced = FALSE) diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm index 6577c26402..164a3e7389 100644 --- a/code/modules/mob/living/silicon/pai/pai_shell.dm +++ b/code/modules/mob/living/silicon/pai/pai_shell.dm @@ -12,11 +12,12 @@ . = fold_in(force) return - if(world.time < emitter_next_use) + if(emittersemicd) to_chat(src, "Error: Holochassis emitters recycling. Please try again later.") return FALSE - emitter_next_use = world.time + emittercd + emittersemicd = TRUE + addtimer(CALLBACK(src, .proc/emittercool), emittercd) canmove = TRUE density = TRUE if(istype(card.loc, /obj/item/pda)) @@ -45,17 +46,20 @@ visible_message("[src] folds out its holochassis emitter and forms a holoshell around itself!") holoform = TRUE +/mob/living/silicon/pai/proc/emittercool() + emittersemicd = FALSE + /mob/living/silicon/pai/proc/fold_in(force = FALSE) - emitter_next_use = world.time + (force? emitteroverloadcd : emittercd) + emittersemicd = TRUE + if(!force) + addtimer(CALLBACK(src, .proc/emittercool), emittercd) + else + addtimer(CALLBACK(src, .proc/emittercool), emitteroverloadcd) icon_state = "[chassis]" if(!holoform) . = fold_out(force) return - if(force) - short_radio() - visible_message("[src] shorts out, collapsing back into their storage card, sparks emitted from their radio antenna!") - else - visible_message("[src] deactivates its holochassis emitter and folds back into a compact card!") + visible_message("[src] deactivates its holochassis emitter and folds back into a compact card!") stop_pulling() if(client) client.perspective = EYE_PERSPECTIVE @@ -74,39 +78,28 @@ if(!isturf(loc) && loc != card) to_chat(src, "You can not change your holochassis composite while not on the ground or in your card!") return FALSE - var/list/choices = list("Preset - Basic", "Preset - Dynamic") - if(CONFIG_GET(flag/pai_custom_holoforms)) - choices += "Custom" - var/choicetype = input(src, "What type of chassis do you want to use?") as null|anything in choices - if(!choicetype) + var/choice = input(src, "What would you like to use for your holochassis composite?") as null|anything in possible_chassis + if(!choice) return FALSE - switch(choicetype) - if("Custom") - chassis = "custom" - if("Preset - Basic") - var/choice = input(src, "What would you like to use for your holochassis composite?") as null|anything in possible_chassis - if(!choice) - return FALSE - chassis = choice - if("Preset - Dynamic") - var/choice = input(src, "What would you like to use for your holochassis composite?") as null|anything in dynamic_chassis_icons - if(!choice) - return FALSE - chassis = "dynamic" - dynamic_chassis = choice - resist_a_rest(FALSE, TRUE) - update_icon() + chassis = choice + icon_state = "[chassis]" + if(resting) + icon_state = "[chassis]_rest" to_chat(src, "You switch your holochassis projection composite to [chassis]") /mob/living/silicon/pai/lay_down() - . = ..() - if(loc != card) - visible_message("[src] [resting? "lays down for a moment..." : "perks up from the ground"]") - update_icon() + ..() + update_resting_icon(resting) -/mob/living/silicon/pai/start_pulling(atom/movable/AM, gs) - if(ispAI(AM)) - return ..() +/mob/living/silicon/pai/proc/update_resting_icon(rest) + if(rest) + icon_state = "[chassis]_rest" + else + icon_state = "[chassis]" + if(loc != card) + visible_message("[src] [rest? "lays down for a moment..." : "perks up from the ground"]") + +/mob/living/silicon/pai/start_pulling(atom/movable/AM) return FALSE /mob/living/silicon/pai/proc/toggle_integrated_light() @@ -129,22 +122,3 @@ to_chat(user, "[src]'s current form isn't able to be carried!") return FALSE return ..() - -/mob/living/silicon/pai/verb/toggle_chassis_sit() - set name = "Toggle Chassis Sit" - set category = "IC" - set desc = "Whether or not to try to use a sitting icon versus a resting icon. Takes priority over belly-up resting." - dynamic_chassis_sit = !dynamic_chassis_sit - to_chat(usr, "You are now [dynamic_chassis_sit? "sitting" : "lying down"].") - update_icon() - -/mob/living/silicon/pai/verb/toggle_chassis_bellyup() - set name = "Toggle Chassis Belly Up" - set category = "IC" - set desc = "Whether or not to try to use a belly up icon while resting. Overridden by sitting." - dynamic_chassis_bellyup = !dynamic_chassis_bellyup - to_chat(usr, "You are now lying on your [dynamic_chassis_bellyup? "back" : "front"].") - update_icon() - -/mob/living/silicon/pai/can_buckle_others(mob/living/target, atom/buckle_to) - return ispAI(target) && ..() diff --git a/code/modules/mob/living/silicon/pai/say.dm b/code/modules/mob/living/silicon/pai/say.dm index deedaa1382..9f07900a25 100644 --- a/code/modules/mob/living/silicon/pai/say.dm +++ b/code/modules/mob/living/silicon/pai/say.dm @@ -5,11 +5,4 @@ ..(message) /mob/living/silicon/pai/binarycheck() - return FALSE - -/mob/living/silicon/pai/radio(message, message_mode, list/spans, language) - if((message_mode == "robot") || (message_mode in GLOB.radiochannels)) - if(radio_short) - to_chat(src, "Your radio is shorted out!") - return ITALICS | REDUCE_RANGE - return ..() + return 0 diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm index 3ea018ccf6..9882d028d1 100644 --- a/code/modules/mob/living/silicon/pai/software.dm +++ b/code/modules/mob/living/silicon/pai/software.dm @@ -283,10 +283,7 @@ dat += "Refresh
    " // Built-in dat += "Directives
    " - if(radio_short) - dat += "\[RADIO SHORTED - Recalibrating!\]" - else - dat += "Radio Configuration
    " + dat += "Radio Configuration
    " dat += "Screen Display
    " //dat += "Text Messaging
    " dat += "
    " diff --git a/code/modules/mob/living/silicon/pai/update_icon.dm b/code/modules/mob/living/silicon/pai/update_icon.dm deleted file mode 100644 index 9e40b71c5d..0000000000 --- a/code/modules/mob/living/silicon/pai/update_icon.dm +++ /dev/null @@ -1,27 +0,0 @@ -/mob/living/silicon/pai/update_icon() - if(chassis == "custom") //Make sure custom exists if it's set to custom - custom_holoform_icon = client?.prefs?.get_filtered_holoform(HOLOFORM_FILTER_PAI) - if(!custom_holoform_icon) - chassis = pick(possible_chassis - "custom") - if(chassis == "dynamic") //handle dynamic generated icons - icon = dynamic_chassis_icons[dynamic_chassis] - var/list/states = icon_states(icon) - icon_state = "" - if(resting) //The next line is some bullshit but I can make it worse if you want and make it a single line instead of four.. :) - if(dynamic_chassis_sit && ("sit") in states) - icon_state = "sit" - else if(dynamic_chassis_bellyup && ("bellyup") in states) - icon_state = "bellyup" - else if("rest" in states) - icon_state = "rest" - rotate_on_lying = FALSE - else if(chassis == "custom") - icon = custom_holoform_icon - icon_state = "" - rotate_on_lying = TRUE - else - icon = initial(icon) - icon_state = "[chassis][resting? "_rest" : (stat == DEAD? "_dead" : "")]" - rotate_on_lying = FALSE - pixel_x = ((chassis == "dynamic") && chassis_pixel_offsets_x[dynamic_chassis]) || 0 - update_transform() diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 86e3ccad24..5df24406c5 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -114,10 +114,6 @@ var/cansprint = 1 - var/orebox = null - -/mob/living/silicon/robot - /mob/living/silicon/robot/get_cell() return cell @@ -1302,12 +1298,4 @@ /mob/living/silicon/robot/adjustStaminaLossBuffered(amount, updating_health = 1) if(istype(cell)) - cell.charge -= amount*5 - -/mob/living/silicon/robot/verb/viewmanifest() - set category = "Robot Commands" - set name = "View Crew Manifest" - - if(usr.stat == DEAD) - return //won't work if dead - ai_roster() \ No newline at end of file + cell.charge -= amount*5 \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index 7e06c66eff..0f09b6f62a 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -13,19 +13,7 @@ spark_system.start() return ..() -/mob/living/silicon/robot/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) - . = ..() - if(.) - spark_system.start() - spawn(0) - step_away(src,user,15) - sleep(3) - step_away(src,user,15) - /mob/living/silicon/robot/attack_alien(mob/living/carbon/alien/humanoid/M) - . = ..() - if(!.) // the attack was blocked or was help/grab intent - return if (M.a_intent == INTENT_DISARM) if(!(lying)) M.do_attack_animation(src, ATTACK_EFFECT_DISARM) @@ -42,19 +30,24 @@ visible_message("[M] has forced back [src]!", \ "[M] has forced back [src]!", null, COMBAT_MESSAGE_RANGE) playsound(loc, 'sound/weapons/pierce.ogg', 50, 1, -1) + else + ..() + return /mob/living/silicon/robot/attack_slime(mob/living/simple_animal/slime/M) - . = ..() - if(!.) //unsuccessful slime shock - return - var/stunprob = M.powerlevel * 7 + 10 - var/damage = M.powerlevel * rand(6,10) - if(prob(stunprob) && M.powerlevel >= 8) - flash_act(affect_silicon = TRUE) //my borg eyes! + if(..()) //successful slime shock + flash_act() + var/stunprob = M.powerlevel * 7 + 10 + if(prob(stunprob) && M.powerlevel >= 8) + adjustBruteLoss(M.powerlevel * rand(6,10)) + + var/damage = rand(1, 3) + if(M.is_adult) - damage += rand(10, 20) + damage = rand(20, 40) else - damage += rand(2, 17) + damage = rand(5, 35) + damage = round(damage / 2) // borgs receive half damage adjustBruteLoss(damage) updatehealth() @@ -63,17 +56,23 @@ //ATTACK HAND IGNORING PARENT RETURN VALUE /mob/living/silicon/robot/attack_hand(mob/living/carbon/human/user) add_fingerprint(user) - if(opened && !wiresexposed && cell && !issilicon(user)) - cell.update_icon() - cell.add_fingerprint(user) - user.put_in_active_hand(cell) - to_chat(user, "You remove \the [cell].") - cell = null - update_icons() - diag_hud_set_borgcell() + if(opened && !wiresexposed && !issilicon(user)) + if(cell) + cell.update_icon() + cell.add_fingerprint(user) + user.put_in_active_hand(cell) + to_chat(user, "You remove \the [cell].") + cell = null + update_icons() + diag_hud_set_borgcell() if(!opened) - return ..() + if(..()) // hulk attack + spark_system.start() + spawn(0) + step_away(src,user,15) + sleep(3) + step_away(src,user,15) /mob/living/silicon/robot/fire_act() if(!on_fire) //Silicons don't gain stacks from hotspots, but hotspots can ignite them @@ -183,9 +182,9 @@ if (stat != DEAD) adjustBruteLoss(30) -/mob/living/silicon/robot/bullet_act(obj/item/projectile/P, def_zone) - ..() +/mob/living/silicon/robot/bullet_act(var/obj/item/projectile/Proj) + ..(Proj) updatehealth() - if(prob(75) && P.damage > 0) + if(prob(75) && Proj.damage > 0) spark_system.start() return 2 diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 48e6f8c288..ece7fe9ecb 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -121,10 +121,6 @@ else if(istype(S, /obj/item/stack/marker_beacon)) S.cost = 1 S.source = get_or_create_estorage(/datum/robot_energy_storage/beacon) - - else if(istype(S, /obj/item/stack/packageWrap)) - S.cost = 1 - S.source = get_or_create_estorage(/datum/robot_energy_storage/wrapping_paper) if(S && S.source) S.materials = list() @@ -143,9 +139,6 @@ //Adds flavoursome dogborg items to dogborg variants without mechanical benefits /obj/item/robot_module/proc/dogborg_equip() - has_snowflake_deadsprite = TRUE - cyborg_pixel_offset = -16 - hat_offset = INFINITY var/obj/item/I = new /obj/item/analyzer/nose/flavour(src) basic_modules += I I = new /obj/item/soap/tongue/flavour(src) @@ -369,21 +362,30 @@ sleeper_overlay = "msleeper" moduleselect_icon = "medihound" moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi' + has_snowflake_deadsprite = TRUE dogborg = TRUE + cyborg_pixel_offset = -16 + hat_offset = INFINITY if("Medihound Dark") cyborg_base_icon = "medihounddark" cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' sleeper_overlay = "mdsleeper" moduleselect_icon = "medihound" moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi' + has_snowflake_deadsprite = TRUE dogborg = TRUE + cyborg_pixel_offset = -16 + hat_offset = INFINITY if("Vale") cyborg_base_icon = "valemed" cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' sleeper_overlay = "valemedsleeper" moduleselect_icon = "medihound" moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi' + has_snowflake_deadsprite = TRUE dogborg = TRUE + cyborg_pixel_offset = -16 + hat_offset = INFINITY if("Alina") cyborg_base_icon = "alina-med" cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' @@ -391,7 +393,10 @@ sleeper_overlay = "alinasleeper" moduleselect_icon = "medihound" moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi' + has_snowflake_deadsprite = TRUE dogborg = TRUE + cyborg_pixel_offset = -16 + hat_offset = INFINITY return ..() /obj/item/robot_module/engineering @@ -472,20 +477,29 @@ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi' if("Pup Dozer") cyborg_base_icon = "pupdozer" + hat_offset = INFINITY cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - sleeper_overlay = "dozersleeper" + has_snowflake_deadsprite = TRUE dogborg = TRUE + cyborg_pixel_offset = -16 + sleeper_overlay = "dozersleeper" if("Vale") cyborg_base_icon = "valeeng" + hat_offset = INFINITY cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - sleeper_overlay = "valeengsleeper" + has_snowflake_deadsprite = TRUE dogborg = TRUE + cyborg_pixel_offset = -16 + sleeper_overlay = "valeengsleeper" if("Alina") cyborg_base_icon = "alina-eng" special_light_key = "alina" + hat_offset = INFINITY cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - sleeper_overlay = "alinasleeper" + has_snowflake_deadsprite = TRUE dogborg = TRUE + cyborg_pixel_offset = -16 + sleeper_overlay = "alinasleeper" return ..() /obj/item/robot_module/security @@ -544,24 +558,36 @@ if("K9") cyborg_base_icon = "k9" sleeper_overlay = "ksleeper" + hat_offset = INFINITY cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' + has_snowflake_deadsprite = TRUE dogborg = TRUE + cyborg_pixel_offset = -16 if("Alina") cyborg_base_icon = "alina-sec" special_light_key = "alina" sleeper_overlay = "alinasleeper" + hat_offset = INFINITY cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' + has_snowflake_deadsprite = TRUE dogborg = TRUE + cyborg_pixel_offset = -16 if("K9 Dark") cyborg_base_icon = "k9dark" sleeper_overlay = "k9darksleeper" + hat_offset = INFINITY cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' + has_snowflake_deadsprite = TRUE dogborg = TRUE + cyborg_pixel_offset = -16 if("Vale") cyborg_base_icon = "valesec" sleeper_overlay = "valesecsleeper" + hat_offset = INFINITY cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' + has_snowflake_deadsprite = TRUE dogborg = TRUE + cyborg_pixel_offset = -16 return ..() /obj/item/robot_module/security/Initialize() @@ -647,11 +673,11 @@ /obj/item/reagent_containers/spray/cyborg_drying name = "drying agent spray" color = "#A000A0" - list_reagents = list(/datum/reagent/drying_agent = 250) + list_reagents = list("drying_agent" = 250) /obj/item/reagent_containers/spray/cyborg_lube name = "lube spray" - list_reagents = list(/datum/reagent/lube = 250) + list_reagents = list("lube" = 250) /obj/item/robot_module/clown name = "Clown" @@ -725,17 +751,17 @@ var/obj/item/reagent_containers/O = locate(/obj/item/reagent_containers/food/condiment/enzyme) in basic_modules var/obj/item/lightreplacer/LR = locate(/obj/item/lightreplacer) in basic_modules if(O) - O.reagents.add_reagent(/datum/reagent/consumable/enzyme, 2 * coeff) + O.reagents.add_reagent("enzyme", 2 * coeff) if(LR) for(var/i in 1 to coeff) LR.Charge(R) var/obj/item/reagent_containers/spray/cyborg_drying/CD = locate(/obj/item/reagent_containers/spray/cyborg_drying) in basic_modules if(CD) - CD.reagents.add_reagent(/datum/reagent/drying_agent, 5 * coeff) + CD.reagents.add_reagent("drying_agent", 5 * coeff) var/obj/item/reagent_containers/spray/cyborg_lube/CL = locate(/obj/item/reagent_containers/spray/cyborg_lube) in emag_modules if(CL) - CL.reagents.add_reagent(/datum/reagent/lube, 2 * coeff) + CL.reagents.add_reagent("lube", 2 * coeff) /obj/item/robot_module/butler/be_transformed_to(obj/item/robot_module/old_module) var/mob/living/silicon/robot/R = loc @@ -769,18 +795,24 @@ if("(Service) DarkK9") cyborg_base_icon = "k50" cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - sleeper_overlay = "ksleeper" + has_snowflake_deadsprite = TRUE dogborg = TRUE + cyborg_pixel_offset = -16 + sleeper_overlay = "ksleeper" if("(Service) Vale") cyborg_base_icon = "valeserv" cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - sleeper_overlay = "valeservsleeper" + has_snowflake_deadsprite = TRUE dogborg = TRUE + cyborg_pixel_offset = -16 + sleeper_overlay = "valeservsleeper" if("(Service) ValeDark") cyborg_base_icon = "valeservdark" cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - sleeper_overlay = "valeservsleeper" + has_snowflake_deadsprite = TRUE dogborg = TRUE + cyborg_pixel_offset = -16 + sleeper_overlay = "valeservsleeper" if("(Janitor) Default") cyborg_base_icon = "janitor" if("(Janitor) Marina") @@ -798,8 +830,10 @@ if("(Janitor) Scrubpuppy") cyborg_base_icon = "scrubpup" cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - sleeper_overlay = "jsleeper" + has_snowflake_deadsprite = TRUE + cyborg_pixel_offset = -16 dogborg = TRUE + sleeper_overlay = "jsleeper" return ..() /obj/item/robot_module/miner @@ -811,19 +845,13 @@ /obj/item/borg/sight/meson, /obj/item/storage/bag/ore/cyborg, /obj/item/pickaxe/drill/cyborg, - /obj/item/twohanded/kinetic_crusher/cyborg, + /obj/item/shovel, /obj/item/weldingtool/mini, /obj/item/storage/bag/sheetsnatcher/borg, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator/cyborg, - /obj/item/gun/energy/plasmacutter/cyborg, /obj/item/gps/cyborg, - /obj/item/weapon/gripper/mining, - /obj/item/cyborg_clamp, - /obj/item/card/id/miningborg, - /obj/item/stack/marker_beacon, - /obj/item/destTagger, - /obj/item/stack/packageWrap) + /obj/item/stack/marker_beacon) emag_modules = list(/obj/item/borg/stun) ratvar_modules = list( /obj/item/clockwork/slab/cyborg/miner, @@ -835,7 +863,7 @@ /obj/item/robot_module/miner/be_transformed_to(obj/item/robot_module/old_module) var/mob/living/silicon/robot/R = loc - var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Lavaland", "Heavy", "Sleek", "Marina", "Can", "Spider", "Asteroid", "Droid", "Blade") + var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Lavaland", "Heavy", "Sleek", "Marina", "Can", "Spider", "Asteroid", "Droid") if(!borg_icon) return FALSE switch(borg_icon) @@ -863,11 +891,6 @@ if("Heavy") cyborg_base_icon = "heavymin" cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi' - if("Blade") - cyborg_base_icon = "blade" - cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - sleeper_overlay = "bladesleeper" - dogborg = TRUE return ..() /obj/item/robot_module/syndicate @@ -1013,8 +1036,3 @@ max_energy = 30 recharge_rate = 1 name = "Marker Beacon Storage" - -/datum/robot_energy_storage/wrapping_paper - max_energy = 30 - recharge_rate = 1 - name = "Wrapping Paper Storage" diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 699105ac4c..b9cee43138 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -389,15 +389,6 @@ if (aicamera) return aicamera.selectpicture(user) -/mob/living/silicon/proc/ai_roster() - var/dat = "Crew RosterCrew Roster:

    " - - dat += GLOB.data_core.get_manifest() - dat += "" - - src << browse(dat, "window=airoster") - onclose(src, "airoster") - /mob/living/silicon/update_transform() var/matrix/ntransform = matrix(transform) //aka transform.Copy() var/changed = 0 diff --git a/code/modules/mob/living/silicon/silicon_defense.dm b/code/modules/mob/living/silicon/silicon_defense.dm index ca8ad25713..073a2eec2b 100644 --- a/code/modules/mob/living/silicon/silicon_defense.dm +++ b/code/modules/mob/living/silicon/silicon_defense.dm @@ -6,10 +6,7 @@ return 2 /mob/living/silicon/attack_alien(mob/living/carbon/alien/humanoid/M) - . = ..() - if(!.) // the attack was blocked or was help/grab intent - return - if(M.a_intent == INTENT_HARM) + if(..()) //if harm or disarm intent var/damage = 20 if (prob(90)) log_combat(M, src, "attacked") @@ -52,33 +49,34 @@ /mob/living/silicon/attack_paw(mob/living/user) return attack_hand(user) -/mob/living/silicon/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) +/mob/living/silicon/attack_larva(mob/living/carbon/alien/larva/L) + if(L.a_intent == INTENT_HELP) + visible_message("[L.name] rubs its head against [src].") + +/mob/living/silicon/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) if(user.a_intent == INTENT_HARM) - . = ..(user, TRUE) - if(.) - return + ..(user, 1) adjustBruteLoss(rand(10, 15)) playsound(loc, "punch", 25, 1, -1) visible_message("[user] has punched [src]!", \ "[user] has punched [src]!") - return TRUE - return FALSE + return 1 + return 0 +//ATTACK HAND IGNORING PARENT RETURN VALUE /mob/living/silicon/attack_hand(mob/living/carbon/human/M) - . = ..() - if(.) //the attack was blocked - return switch(M.a_intent) - if (INTENT_HELP) + if ("help") M.visible_message("[M] pets [src].", \ "You pet [src].") - if(INTENT_GRAB) + if("grab") grabbedby(M) else M.do_attack_animation(src, ATTACK_EFFECT_PUNCH) playsound(src.loc, 'sound/effects/bang.ogg', 10, 1) visible_message("[M] punches [src], but doesn't leave a dent.", \ "[M] punches [src], but doesn't leave a dent.", null, COMBAT_MESSAGE_RANGE) + return 0 /mob/living/silicon/attack_drone(mob/living/simple_animal/drone/M) if(M.a_intent == INTENT_HARM) @@ -110,25 +108,19 @@ M.visible_message("[M] is thrown off of [src]!") flash_act(affect_silicon = 1) -/mob/living/silicon/bullet_act(obj/item/projectile/P, def_zone) - if(P.original != src || P.firer != src) //try to block or reflect the bullet, can't do so when shooting oneself - if(reflect_bullet_check(P, def_zone)) - return -1 // complete projectile permutation - if(check_shields(P, P.damage, "the [P.name]", PROJECTILE_ATTACK, P.armour_penetration)) - P.on_hit(src, 100, def_zone) - return 2 - if((P.damage_type == BRUTE || P.damage_type == BURN)) - adjustBruteLoss(P.damage) - if(prob(P.damage*1.5)) +/mob/living/silicon/bullet_act(obj/item/projectile/Proj) + if((Proj.damage_type == BRUTE || Proj.damage_type == BURN)) + adjustBruteLoss(Proj.damage) + if(prob(Proj.damage*1.5)) for(var/mob/living/M in buckled_mobs) M.visible_message("[M] is knocked off of [src]!") unbuckle_mob(M) M.Knockdown(40) - if(P.stun || P.knockdown) + if(Proj.stun || Proj.knockdown) for(var/mob/living/M in buckled_mobs) unbuckle_mob(M) - M.visible_message("[M] is knocked off of [src] by the [P]!") - P.on_hit(src) + M.visible_message("[M] is knocked off of [src] by the [Proj]!") + Proj.on_hit(src) return 2 /mob/living/silicon/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /obj/screen/fullscreen/flash/static) diff --git a/code/modules/mob/living/simple_animal/animal_defense.dm b/code/modules/mob/living/simple_animal/animal_defense.dm index 0dfa126e79..793df63c87 100644 --- a/code/modules/mob/living/simple_animal/animal_defense.dm +++ b/code/modules/mob/living/simple_animal/animal_defense.dm @@ -1,22 +1,20 @@ /mob/living/simple_animal/attack_hand(mob/living/carbon/human/M) - . = ..() - if(.) //the attack was blocked - return + ..() switch(M.a_intent) - if(INTENT_HELP) + if("help") if (health > 0) visible_message("[M] [response_help] [src].") playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - if(INTENT_GRAB) + if("grab") if(grab_state >= GRAB_AGGRESSIVE && isliving(pulling)) vore_attack(M, pulling) else grabbedby(M) - if(INTENT_HARM, INTENT_DISARM) + if("harm", "disarm") if(HAS_TRAIT(M, TRAIT_PACIFISM)) to_chat(M, "You don't want to hurt [src]!") return @@ -29,11 +27,12 @@ updatehealth() return TRUE -/mob/living/simple_animal/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) +/mob/living/simple_animal/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) if(user.a_intent == INTENT_HARM) - . = ..(user, TRUE) - if(.) - return + if(HAS_TRAIT(user, TRAIT_PACIFISM)) + to_chat(user, "You don't want to hurt [src]!") + return FALSE + ..(user, 1) playsound(loc, "punch", 25, 1, -1) visible_message("[user] has punched [src]!", \ "[user] has punched [src]!", null, COMBAT_MESSAGE_RANGE) @@ -41,32 +40,32 @@ return TRUE /mob/living/simple_animal/attack_paw(mob/living/carbon/monkey/M) - . = ..() - if(.) //successful larva bite - var/damage = rand(1, 3) - attack_threshold_check(damage) - return 1 + if(..()) //successful monkey bite. + if(stat != DEAD) + var/damage = rand(1, 3) + attack_threshold_check(damage) + return 1 if (M.a_intent == INTENT_HELP) if (health > 0) visible_message("[M.name] [response_help] [src].") playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + /mob/living/simple_animal/attack_alien(mob/living/carbon/alien/humanoid/M) - . = ..() - if(!.) // the attack was blocked or was help/grab intent - return - if(M.a_intent == INTENT_DISARM) - playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) - visible_message("[M] [response_disarm] [name]!", \ - "[M] [response_disarm] [name]!", null, COMBAT_MESSAGE_RANGE) - log_combat(M, src, "disarmed") - else - var/damage = rand(15, 30) - visible_message("[M] has slashed at [src]!", \ - "[M] has slashed at [src]!", null, COMBAT_MESSAGE_RANGE) - playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1) - attack_threshold_check(damage) - log_combat(M, src, "attacked") + if(..()) //if harm or disarm intent. + if(M.a_intent == INTENT_DISARM) + playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) + visible_message("[M] [response_disarm] [name]!", \ + "[M] [response_disarm] [name]!", null, COMBAT_MESSAGE_RANGE) + log_combat(M, src, "disarmed") + else + var/damage = rand(15, 30) + visible_message("[M] has slashed at [src]!", \ + "[M] has slashed at [src]!", null, COMBAT_MESSAGE_RANGE) + playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1) + attack_threshold_check(damage) + log_combat(M, src, "attacked") + return 1 /mob/living/simple_animal/attack_larva(mob/living/carbon/alien/larva/L) . = ..() @@ -83,8 +82,7 @@ return attack_threshold_check(damage, M.melee_damage_type) /mob/living/simple_animal/attack_slime(mob/living/simple_animal/slime/M) - . = ..() - if(.) //successful slime shock + if(..()) //successful slime attack var/damage = rand(15, 25) if(M.is_adult) damage = rand(20, 35) diff --git a/code/modules/mob/living/simple_animal/astral.dm b/code/modules/mob/living/simple_animal/astral.dm index 472cbd7414..3d0c335989 100644 --- a/code/modules/mob/living/simple_animal/astral.dm +++ b/code/modules/mob/living/simple_animal/astral.dm @@ -44,7 +44,7 @@ if(isliving(A)) if(ishuman(A)) var/mob/living/carbon/human/H = A - if(H.reagents.has_reagent(/datum/reagent/fermi/astral) && !H.mind) + if(H.reagents.has_reagent("astral") && !H.mind) var/datum/reagent/fermi/astral/As = locate(/datum/reagent/fermi/astral) in H.reagents.reagent_list if(As.originalmind == src.mind && As.current_cycle < 10 && H.stat != DEAD) //So you can return to your body. to_chat(src, "The intensity of the astrogen in your body is too much allow you to return to yourself yet!") diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index cae707ce46..396c6de166 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -318,9 +318,9 @@ sleep(50) if(mode == BOT_REPAIRING && src.loc == target_turf) if(autotile) //Build the floor and include a tile. - target_turf.PlaceOnTop(/turf/open/floor/plasteel, flags = CHANGETURF_INHERIT_AIR) + target_turf.PlaceOnTop(/turf/open/floor/plasteel) else //Build a hull plating without a floor tile. - target_turf.PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) + target_turf.PlaceOnTop(/turf/open/floor/plating) else var/turf/open/floor/F = target_turf @@ -334,7 +334,7 @@ if(mode == BOT_REPAIRING && F && src.loc == F) F.broken = 0 F.burnt = 0 - F.PlaceOnTop(/turf/open/floor/plasteel, flags = CHANGETURF_INHERIT_AIR) + F.PlaceOnTop(/turf/open/floor/plasteel) if(replacetiles && F.type != initial(tiletype.turf_type) && specialtiles && !isplatingturf(F)) anchored = TRUE @@ -345,7 +345,7 @@ if(mode == BOT_REPAIRING && F && src.loc == F) F.broken = 0 F.burnt = 0 - F.PlaceOnTop(initial(tiletype.turf_type), flags = CHANGETURF_INHERIT_AIR) + F.PlaceOnTop(initial(tiletype.turf_type)) specialtiles -= 1 if(specialtiles == 0) speak("Requesting refill of custom floortiles to continue replacing.") diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm index 109c7b4636..2de4ca39fd 100644 --- a/code/modules/mob/living/simple_animal/bot/honkbot.dm +++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm @@ -113,7 +113,7 @@ Maintenance panel panel is [open ? "opened" : "closed"]"}, mode = BOT_HUNT /mob/living/simple_animal/bot/honkbot/attack_hand(mob/living/carbon/human/H) - if(H.a_intent == INTENT_HARM) + if(H.a_intent == "harm") retaliate(H) addtimer(CALLBACK(src, .proc/react_buzz), 5) return ..() diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index 13e9299b1d..fed770d0b0 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -43,17 +43,17 @@ var/declare_cooldown = 0 //Prevents spam of critical patient alerts. var/stationary_mode = 0 //If enabled, the Medibot will not move automatically. //Setting which reagents to use to treat what by default. By id. - var/treatment_brute_avoid = /datum/reagent/medicine/tricordrazine - var/treatment_brute = /datum/reagent/medicine/bicaridine + var/treatment_brute_avoid = "tricordrazine" + var/treatment_brute = "bicaridine" var/treatment_oxy_avoid = null - var/treatment_oxy = /datum/reagent/medicine/dexalin - var/treatment_fire_avoid = /datum/reagent/medicine/tricordrazine - var/treatment_fire = /datum/reagent/medicine/kelotane - var/treatment_tox_avoid = /datum/reagent/medicine/tricordrazine - var/treatment_tox = /datum/reagent/medicine/charcoal - var/treatment_tox_toxlover = /datum/reagent/toxin + var/treatment_oxy = "dexalin" + var/treatment_fire_avoid = "tricordrazine" + var/treatment_fire = "kelotane" + var/treatment_tox_avoid = "tricordrazine" + var/treatment_tox = "charcoal" + var/treatment_tox_toxlover = "toxin" var/treatment_virus_avoid = null - var/treatment_virus = /datum/reagent/medicine/spaceacillin + var/treatment_virus = "spaceacillin" var/treat_virus = 1 //If on, the bot will attempt to treat viral infections, curing them if possible. var/shut_up = 0 //self explanatory :) @@ -61,9 +61,9 @@ name = "\improper Mysterious Medibot" desc = "International Medibot of mystery." skin = "bezerk" - treatment_brute = /datum/reagent/medicine/tricordrazine - treatment_fire = /datum/reagent/medicine/tricordrazine - treatment_tox = /datum/reagent/medicine/tricordrazine + treatment_brute = "tricordrazine" + treatment_fire = "tricordrazine" + treatment_tox = "tricordrazine" /mob/living/simple_animal/bot/medbot/derelict name = "\improper Old Medibot" @@ -71,13 +71,13 @@ skin = "bezerk" heal_threshold = 0 declare_crit = 0 - treatment_oxy = /datum/reagent/toxin/pancuronium + treatment_oxy = "pancuronium" treatment_brute_avoid = null - treatment_brute = /datum/reagent/toxin/pancuronium + treatment_brute = "pancuronium" treatment_fire_avoid = null - treatment_fire = /datum/reagent/toxin/sodium_thiopental + treatment_fire = "sodium_thiopental" treatment_tox_avoid = null - treatment_tox = /datum/reagent/toxin/sodium_thiopental + treatment_tox = "sodium_thiopental" /mob/living/simple_animal/bot/medbot/update_icon() cut_overlays() @@ -369,9 +369,8 @@ //If they're injured, we're using a beaker, and don't have one of our WONDERCHEMS. if((reagent_glass) && (use_beaker) && ((C.getBruteLoss() >= heal_threshold) || (C.getToxLoss() >= heal_threshold) || (C.getToxLoss() >= heal_threshold) || (C.getOxyLoss() >= (heal_threshold + 15)))) - for(var/A in reagent_glass.reagents.reagent_list) - var/datum/reagent/R = A - if(!C.reagents.has_reagent(R.type)) + for(var/datum/reagent/R in reagent_glass.reagents.reagent_list) + if(!C.reagents.has_reagent(R.id)) return TRUE //They're injured enough for it! @@ -478,9 +477,8 @@ //If the patient is injured but doesn't have our special reagent in them then we should give it to them first if(reagent_id && use_beaker && reagent_glass && reagent_glass.reagents.total_volume) - for(var/A in reagent_glass.reagents.reagent_list) - var/datum/reagent/R = A - if(!C.reagents.has_reagent(R.type)) + for(var/datum/reagent/R in reagent_glass.reagents.reagent_list) + if(!C.reagents.has_reagent(R.id)) reagent_id = "internal_beaker" break diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 43963b4eef..426de81da0 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -151,8 +151,7 @@ return /mob/living/simple_animal/bot/mulebot/bullet_act(obj/item/projectile/Proj) - . = ..() - if(. && !QDELETED(src)) //Got hit and not blown up yet. + if(..()) if(prob(50) && !isnull(load)) unload(0) if(prob(25)) diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index bfe7b2cde0..ee770fc2ca 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -54,7 +54,7 @@ var/atom/Tsec = drop_location() new /obj/item/stock_parts/cell/potato(Tsec) var/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass/S = new(Tsec) - S.reagents.add_reagent(/datum/reagent/consumable/ethanol/whiskey, 15) + S.reagents.add_reagent("whiskey", 15) S.on_reagent_change(ADD_REAGENT) ..() diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index dacf8c4833..02e171e4c4 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -38,10 +38,6 @@ . = ..() verbs += /mob/living/proc/lay_down -/mob/living/simple_animal/pet/cat/ComponentInitialize() - . = ..() - AddElement(/datum/element/wuv, "purrs!", EMOTE_AUDIBLE, /datum/mood_event/pet_animal, "hisses!", EMOTE_AUDIBLE) - /mob/living/simple_animal/pet/cat/update_canmove() ..() if(client && stat != DEAD) @@ -233,6 +229,24 @@ stop_automated_movement = 1 walk_to(src,movement_target,0,3) +/mob/living/simple_animal/pet/cat/attack_hand(mob/living/carbon/human/M) + . = ..() + switch(M.a_intent) + if("help") + wuv(1, M) + if("harm") + wuv(-1, M) + +/mob/living/simple_animal/pet/cat/proc/wuv(change, mob/M) + if(change) + if(change > 0) + if(M && stat != DEAD) + new /obj/effect/temp_visual/heart(loc) + emote("me", EMOTE_VISIBLE, "purrs!") + else + if(M && stat != DEAD) + emote("me", EMOTE_VISIBLE, "hisses!") + /mob/living/simple_animal/pet/cat/cak //I told you I'd do it, Remie name = "Keeki" desc = "It's a cat made out of cake." @@ -276,12 +290,10 @@ D.decorate_donut() /mob/living/simple_animal/pet/cat/cak/attack_hand(mob/living/L) - . = ..() - if(.) //the attack was blocked - return + ..() if(L.a_intent == INTENT_HARM && L.reagents && !stat) - L.reagents.add_reagent(/datum/reagent/consumable/nutriment, 0.4) - L.reagents.add_reagent(/datum/reagent/consumable/nutriment/vitamin, 0.4) + L.reagents.add_reagent("nutriment", 0.4) + L.reagents.add_reagent("vitamin", 0.4) //Cat made /mob/living/simple_animal/pet/cat/custom_cat diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 2371cfd7f1..0d933d171b 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -16,11 +16,6 @@ do_footstep = TRUE can_be_held = TRUE - -/mob/living/simple_animal/pet/dog/ComponentInitialize() - . = ..() - AddElement(/datum/element/wuv, "yaps_happily!", EMOTE_AUDIBLE, /datum/mood_event/pet_animal, "growls!", EMOTE_AUDIBLE) - //Corgis and pugs are now under one dog subtype /mob/living/simple_animal/pet/dog/corgi @@ -273,7 +268,7 @@ return if(!item_to_add) user.visible_message("[user] pets [src].","You rest your hand on [src]'s head for a moment.") - SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, src, /datum/mood_event/pet_animal, src) + SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "pet_corgi", /datum/mood_event/pet_corgi) return if(user && !user.temporarilyRemoveItemFromInventory(item_to_add)) @@ -644,3 +639,22 @@ for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2)) setDir(i) sleep(1) + +/mob/living/simple_animal/pet/dog/attack_hand(mob/living/carbon/human/M) + . = ..() + switch(M.a_intent) + if("help") + wuv(1,M) + if("harm") + wuv(-1,M) + +/mob/living/simple_animal/pet/dog/proc/wuv(change, mob/M) + if(change) + if(change > 0) + if(M && stat != DEAD) // Added check to see if this mob (the dog) is dead to fix issue 2454 + new /obj/effect/temp_visual/heart(loc) + emote("me", EMOTE_VISIBLE, "yaps happily!") + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "pet_corgi", /datum/mood_event/pet_corgi) + else + if(M && stat != DEAD) // Same check here, even though emote checks it as well (poor form to check it only in the help case) + emote("me", EMOTE_VISIBLE, "growls!") diff --git a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm index 0f7b534d4f..521f458e2f 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm @@ -130,7 +130,6 @@ hacked = TRUE visualAppearence = CLOCKDRONE can_be_held = FALSE - mouse_opacity = MOUSE_OPACITY_OPAQUE flavortext = "You are a cogscarab, a tiny building construct of Ratvar. While you're weak and can't recite scripture, \ you have a set of quick tools, as well as a replica fabricator that can create brass and convert objects.

    Work with the servants of Ratvar \ to construct and maintain defenses at the City of Cogs. If there are no servants, use this time to experiment with base designs!" diff --git a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm index c9207fcf89..e40eb585e8 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm @@ -31,9 +31,9 @@ //picky up the drone c: /mob/living/simple_animal/drone/attack_hand(mob/user) - if(user.a_intent != INTENT_HELP) - return ..() // TODO: convert picking up mobs into an element or component. - mob_try_pickup(user) + ..() + if(user.a_intent == INTENT_HELP) + mob_try_pickup(user) /mob/living/simple_animal/drone/proc/try_reactivate(mob/living/user) var/mob/dead/observer/G = get_ghost() diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 6754f94b01..2679c68b52 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -455,12 +455,12 @@ /obj/item/udder/Initialize() create_reagents(50) - reagents.add_reagent(/datum/reagent/consumable/milk, 20) + reagents.add_reagent("milk", 20) . = ..() /obj/item/udder/proc/generateMilk() if(prob(5)) - reagents.add_reagent(/datum/reagent/consumable/milk, rand(5, 10)) + reagents.add_reagent("milk", rand(5, 10)) /obj/item/udder/proc/milkAnimal(obj/O, mob/user) var/obj/item/reagent_containers/glass/G = O diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 69d9a0eef3..fec75e4a36 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -117,9 +117,9 @@ icon_state = "mouse_gray_dead" bitesize = 3 eatverb = "devour" - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list("nutriment" = 3, "vitamin" = 2) foodtype = GROSS | MEAT | RAW - grind_results = list(/datum/reagent/blood = 20, /datum/reagent/liquidgibs = 5) + grind_results = list("blood" = 20, "liquidgibs" = 5) /obj/item/reagent_containers/food/snacks/deadmouse/on_grind() reagents.clear_reagents() diff --git a/code/modules/mob/living/simple_animal/friendly/snake.dm b/code/modules/mob/living/simple_animal/friendly/snake.dm index 95838c9acb..2f37857902 100644 --- a/code/modules/mob/living/simple_animal/friendly/snake.dm +++ b/code/modules/mob/living/simple_animal/friendly/snake.dm @@ -1,6 +1,6 @@ /mob/living/simple_animal/hostile/retaliate/poison var/poison_per_bite = 0 - var/poison_type = /datum/reagent/toxin + var/poison_type = "toxin" /mob/living/simple_animal/hostile/retaliate/poison/AttackingTarget() . = ..() diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index 62c8588ac8..1bd434b233 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -424,9 +424,9 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians var/mob/living/simple_animal/hostile/guardian/G = input(src, "Pick the guardian you wish to reset", "Guardian Reset") as null|anything in guardians if(G) to_chat(src, "You attempt to reset [G.real_name]'s personality...") - var/list/mob/candidates = pollGhostCandidates("Do you want to play as [src.real_name]'s [G.real_name]?", ROLE_PAI, null, FALSE, 100) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as [src.real_name]'s [G.real_name]?", ROLE_PAI, null, FALSE, 100) if(LAZYLEN(candidates)) - var/mob/C = pick(candidates) + var/mob/dead/observer/C = pick(candidates) to_chat(G, "Your user reset you, and your body was taken over by a ghost. Looks like they weren't happy with your performance.") to_chat(src, "Your [G.real_name] has been successfully reset.") message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(G)])") @@ -498,10 +498,10 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians return used = TRUE to_chat(user, "[use_message]") - var/list/mob/candidates = pollGhostCandidates("Do you want to play as the [mob_name] of [user.real_name]?", ROLE_PAI, null, FALSE, 100, POLL_IGNORE_HOLOPARASITE) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the [mob_name] of [user.real_name]?", ROLE_PAI, null, FALSE, 100, POLL_IGNORE_HOLOPARASITE) if(LAZYLEN(candidates)) - var/mob/C = pick(candidates) + var/mob/dead/observer/C = pick(candidates) spawn_guardian(user, C.key) else to_chat(user, "[failure_message]") diff --git a/code/modules/mob/living/simple_animal/guardian/types/charger.dm b/code/modules/mob/living/simple_animal/guardian/types/charger.dm index 914d38022f..49514d0d12 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/charger.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/charger.dm @@ -54,8 +54,10 @@ var/blocked = FALSE if(hasmatchingsummoner(A)) //if the summoner matches don't hurt them blocked = TRUE - if(L.check_shields(src, 90, "[name]", attack_type = THROWN_PROJECTILE_ATTACK)) - blocked = TRUE + if(ishuman(A)) + var/mob/living/carbon/human/H = A + if(H.check_shields(src, 90, "[name]", attack_type = THROWN_PROJECTILE_ATTACK)) + blocked = TRUE if(!blocked) L.drop_all_held_items() L.visible_message("[src] slams into [L]!", "[src] slams into you!") diff --git a/code/modules/mob/living/simple_animal/hostile/banana_spider.dm b/code/modules/mob/living/simple_animal/hostile/banana_spider.dm index f3ce343bfd..81dc9d3e24 100644 --- a/code/modules/mob/living/simple_animal/hostile/banana_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/banana_spider.dm @@ -96,10 +96,10 @@ icon_state = "bananaspider" bitesize = 3 eatverb = "devours" - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list("nutriment" = 3, "vitamin" = 2) foodtype = GROSS | MEAT | RAW - grind_results = list(/datum/reagent/blood = 20, /datum/reagent/liquidgibs = 5) - juice_results = list(/datum/reagent/consumable/banana = 0) + grind_results = list("blood" = 20, "liquidgibs" = 5) + juice_results = list("banana" = 0) /obj/item/reagent_containers/food/snacks/deadbanana_spider/Initialize() diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm index bb1f1284b5..89c4f70f69 100644 --- a/code/modules/mob/living/simple_animal/hostile/bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/bees.dm @@ -140,7 +140,7 @@ var/mob/living/L = target if(L.reagents) beegent.reaction_mob(L, INJECT) - L.reagents.add_reagent(beegent.type, rand(1,5)) + L.reagents.add_reagent(beegent.id, rand(1,5)) /mob/living/simple_animal/hostile/poison/bees/proc/assign_reagent(datum/reagent/R) @@ -205,7 +205,7 @@ /mob/living/simple_animal/hostile/poison/bees/toxin/Initialize() . = ..() var/datum/reagent/R = pick(typesof(/datum/reagent/toxin)) - assign_reagent(GLOB.chemical_reagents_list[R]) + assign_reagent(GLOB.chemical_reagents_list[initial(R.id)]) /mob/living/simple_animal/hostile/poison/bees/queen name = "queen bee" @@ -225,7 +225,7 @@ if(. && beegent && isliving(target)) var/mob/living/L = target beegent.reaction_mob(L, TOUCH) - L.reagents.add_reagent(beegent.type, rand(1,5)) + L.reagents.add_reagent(beegent.id, rand(1,5)) //PEASENT BEES @@ -236,7 +236,7 @@ /mob/living/simple_animal/hostile/poison/bees/proc/reagent_incompatible(mob/living/simple_animal/hostile/poison/bees/B) if(!B) return FALSE - if(B.beegent && beegent && B.beegent.type != beegent.type || B.beegent && !beegent || !B.beegent && beegent) + if(B.beegent && beegent && B.beegent.id != beegent.id || B.beegent && !beegent || !B.beegent && beegent) return TRUE return FALSE @@ -253,10 +253,9 @@ /obj/item/queen_bee/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/reagent_containers/syringe)) var/obj/item/reagent_containers/syringe/S = I - var/jelly_amount = S.reagents.get_reagent_amount(/datum/reagent/royal_bee_jelly) - if(jelly_amount) - if(jelly_amount >= 5) - S.reagents.remove_reagent(/datum/reagent/royal_bee_jelly, 5) + if(S.reagents.has_reagent("royal_bee_jelly")) //checked twice, because I really don't want royal bee jelly to be duped + if(S.reagents.has_reagent("royal_bee_jelly",5)) + S.reagents.remove_reagent("royal_bee_jelly", 5) var/obj/item/queen_bee/qb = new(user.drop_location()) qb.queen = new(qb) if(queen && queen.beegent) @@ -267,8 +266,8 @@ to_chat(user, "You don't have enough royal bee jelly to split a bee in two!") else var/datum/reagent/R = GLOB.chemical_reagents_list[S.reagents.get_master_reagent_id()] - if(R && S.reagents.has_reagent(R.type, 5)) - S.reagents.remove_reagent(R.type,5) + if(R && S.reagents.has_reagent(R.id, 5)) + S.reagents.remove_reagent(R.id,5) queen.assign_reagent(R) user.visible_message("[user] injects [src]'s genome with [R.name], mutating it's DNA!","You inject [src]'s genome with [R.name], mutating it's DNA!") name = queen.name diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index 2e7c0ff455..69209f7266 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -6,7 +6,7 @@ /mob/living/simple_animal/hostile/poison var/poison_per_bite = 5 - var/poison_type = /datum/reagent/toxin + var/poison_type = "toxin" /mob/living/simple_animal/hostile/poison/AttackingTarget() . = ..() @@ -158,7 +158,7 @@ melee_damage_upper = 1 poison_per_bite = 12 move_to_delay = 4 - poison_type = /datum/reagent/toxin/venom //all in venom, glass cannon. you bite 5 times and they are DEFINITELY dead, but 40 health and you are extremely obvious. Ambush, maybe? + poison_type = "venom" //all in venom, glass cannon. you bite 5 times and they are DEFINITELY dead, but 40 health and you are extremely obvious. Ambush, maybe? speed = 1 gold_core_spawnable = NO_SPAWN @@ -217,7 +217,7 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 maxbodytemp = 1500 - poison_type = /datum/reagent/consumable/frostoil + poison_type = "frostoil" color = rgb(114,228,250) gold_core_spawnable = NO_SPAWN @@ -226,7 +226,7 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 maxbodytemp = 1500 - poison_type = /datum/reagent/consumable/frostoil + poison_type = "frostoil" color = rgb(114,228,250) gold_core_spawnable = NO_SPAWN @@ -235,7 +235,7 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 maxbodytemp = 1500 - poison_type = /datum/reagent/consumable/frostoil + poison_type = "frostoil" color = rgb(114,228,250) gold_core_spawnable = NO_SPAWN diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm index 34903a477b..d1e8f1f49e 100644 --- a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm +++ b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm @@ -42,7 +42,7 @@ ..() if(iscarbon(target)) var/mob/living/carbon/C = target - C.reagents.add_reagent(/datum/reagent/toxin/leaper_venom, 5) + C.reagents.add_reagent("leaper_venom", 5) return if(isanimal(target)) var/mob/living/simple_animal/L = target @@ -96,7 +96,7 @@ L.Knockdown(50) if(iscarbon(L)) var/mob/living/carbon/C = L - C.reagents.add_reagent(/datum/reagent/toxin/leaper_venom, 5) + C.reagents.add_reagent("leaper_venom", 5) if(isanimal(L)) var/mob/living/simple_animal/A = L A.adjustHealth(25) @@ -105,6 +105,7 @@ /datum/reagent/toxin/leaper_venom name = "Leaper venom" + id = "leaper_venom" description = "A toxin spat out by leapers that, while harmless in small doses, quickly creates a toxic reaction if too much is in the body." color = "#801E28" // rgb: 128, 30, 40 toxpwr = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index c2c9f5a71f..51a9d8d62b 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -486,7 +486,10 @@ Difficulty: Very Hard if(isturf(Stuff)) var/turf/T = Stuff if((isspaceturf(T) || isfloorturf(T)) && NewTerrainFloors) - var/turf/open/O = T.ChangeTurf(NewTerrainFloors, flags = CHANGETURF_INHERIT_AIR) + var/turf/open/O = T.ChangeTurf(NewTerrainFloors) + if(O.air) + var/datum/gas_mixture/G = O.air + G.copy_from_turf(O) if(prob(florachance) && NewFlora.len && !is_blocked_turf(O, TRUE)) var/atom/Picked = pick(NewFlora) new Picked(O) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm index 7cfae9310a..397d40925b 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm @@ -594,15 +594,12 @@ Difficulty: Normal var/list/hit_things = list() //we hit these already, ignore them var/friendly_fire_check = FALSE var/bursting = FALSE //if we're bursting and need to hit anyone crossing us - var/list/nohurt -/obj/effect/temp_visual/hierophant/blast/Initialize(mapload, new_caster, friendly_fire, list/only_hit_once, list/donthurt = null) +/obj/effect/temp_visual/hierophant/blast/Initialize(mapload, new_caster, friendly_fire, list/only_hit_once) . = ..() if(only_hit_once) hit_things = only_hit_once friendly_fire_check = friendly_fire - if(donthurt) - hit_things += donthurt if(new_caster) hit_things += new_caster if(ismineralturf(loc)) //drill mineral turfs diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index c6386540f7..8c2fbef15e 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -25,7 +25,7 @@ mob_size = MOB_SIZE_LARGE layer = LARGE_MOB_LAYER //Looks weird with them slipping under mineral walls and cameras and shit otherwise mouse_opacity = MOUSE_OPACITY_OPAQUE // Easier to click on in melee, they're giant targets anyway - flags_1 = PREVENT_CONTENTS_EXPLOSION_1 | HEAR_1 + flags_1 = PREVENT_CONTENTS_EXPLOSION_1 var/list/crusher_loot var/medal_type var/score_type = BOSS_SCORE diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm index 199def430e..04a1b4a468 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm @@ -24,8 +24,7 @@ var/list/attack_action_types = list() var/can_talk = FALSE var/obj/loot_drop = null - var/owner - + //Gives player-controlled variants the ability to swap attacks /mob/living/simple_animal/hostile/asteroid/elite/Initialize(mapload) . = ..() @@ -54,14 +53,14 @@ if(ismineralturf(target)) var/turf/closed/mineral/M = target M.gets_drilled() - + //Elites can't talk (normally)! /mob/living/simple_animal/hostile/asteroid/elite/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null) if(can_talk) . = ..() return TRUE return FALSE - + /*Basic setup for elite attacks, based on Whoneedspace's megafauna attack setup. While using this makes the system rely on OnFire, it still gives options for timers not tied to OnFire, and it makes using attacks consistent accross the board for player-controlled elites.*/ @@ -83,11 +82,11 @@ While using this makes the system rely on OnFire, it still gives options for tim /datum/action/innate/elite_attack/Activate() M.chosen_attack = chosen_attack_num to_chat(M, chosen_message) - + /mob/living/simple_animal/hostile/asteroid/elite/updatehealth() . = ..() update_health_hud() - + /mob/living/simple_animal/hostile/asteroid/elite/update_health_hud() if(hud_used) var/severity = 0 @@ -145,7 +144,7 @@ While using this makes the system rely on OnFire, it still gives options for tim gpstag = "Menacing Signal" desc = "You're not quite sure how a signal can be menacing." invisibility = 100 - + /obj/structure/elite_tumor/attack_hand(mob/user) . = ..() if(ishuman(user)) @@ -180,7 +179,7 @@ While using this makes the system rely on OnFire, it still gives options for tim activity = TUMOR_INACTIVE activator = null - + obj/structure/elite_tumor/proc/spawn_elite(var/mob/dead/observer/elitemind) var/selectedspawn = pick(potentialspawns) mychild = new selectedspawn(loc) @@ -200,18 +199,18 @@ obj/structure/elite_tumor/proc/return_elite() if(boosted) mychild.maxHealth = mychild.maxHealth * 2 mychild.health = mychild.maxHealth - + /obj/structure/elite_tumor/Initialize(mapload) . = ..() internal = new/obj/item/gps/internal/elite(src) START_PROCESSING(SSobj, src) - + /obj/structure/elite_tumor/Destroy() STOP_PROCESSING(SSobj, src) mychild = null activator = null return ..() - + /obj/structure/elite_tumor/process() if(isturf(loc)) for(var/mob/living/simple_animal/hostile/asteroid/elite/elitehere in loc) @@ -219,7 +218,7 @@ obj/structure/elite_tumor/proc/return_elite() mychild.adjustHealth(-mychild.maxHealth*0.05) var/obj/effect/temp_visual/heal/H = new /obj/effect/temp_visual/heal(get_turf(mychild)) H.color = "#FF0000" - + /obj/structure/elite_tumor/attackby(obj/item/I, mob/user, params) . = ..() if(istype(I, /obj/item/organ/regenerative_core) && activity == TUMOR_INACTIVE && !boosted) @@ -233,22 +232,21 @@ obj/structure/elite_tumor/proc/return_elite() desc = "[desc] This one seems to glow with a strong intensity." qdel(core) return TRUE - + /obj/structure/elite_tumor/proc/arena_checks() if(activity != TUMOR_ACTIVE || QDELETED(src)) return INVOKE_ASYNC(src, .proc/fighters_check) //Checks to see if our fighters died. INVOKE_ASYNC(src, .proc/arena_trap) //Gets another arena trap queued up for when this one runs out. INVOKE_ASYNC(src, .proc/border_check) //Checks to see if our fighters got out of the arena somehow. - if(!QDELETED(src)) - addtimer(CALLBACK(src, .proc/arena_checks), 50) - + addtimer(CALLBACK(src, .proc/arena_checks), 50) + /obj/structure/elite_tumor/proc/fighters_check() if(activator != null && activator.stat == DEAD || activity == TUMOR_ACTIVE && QDELETED(activator)) onEliteWon() if(mychild != null && mychild.stat == DEAD || activity == TUMOR_ACTIVE && QDELETED(mychild)) onEliteLoss() - + /obj/structure/elite_tumor/proc/arena_trap() var/turf/T = get_turf(src) if(loc == null) @@ -259,7 +257,7 @@ obj/structure/elite_tumor/proc/return_elite() newwall = new /obj/effect/temp_visual/elite_tumor_wall(t, src) newwall.activator = src.activator newwall.ourelite = src.mychild - + /obj/structure/elite_tumor/proc/border_check() if(activator != null && get_dist(src, activator) >= 12) activator.forceMove(loc) @@ -269,7 +267,7 @@ obj/structure/elite_tumor/proc/return_elite() mychild.forceMove(loc) visible_message("[mychild] suddenly reappears above [src]!") playsound(loc,'sound/effects/phasein.ogg', 200, 0, 50, TRUE, TRUE) - + obj/structure/elite_tumor/proc/onEliteLoss() playsound(loc,'sound/effects/tendril_destroyed.ogg', 200, 0, 50, TRUE, TRUE) visible_message("[src] begins to convulse violently before beginning to dissipate.") @@ -288,7 +286,7 @@ obj/structure/elite_tumor/proc/onEliteLoss() mychild = null activator = null qdel(src) - + obj/structure/elite_tumor/proc/onEliteWon() activity = TUMOR_PASSIVE activator = null @@ -302,7 +300,7 @@ obj/structure/elite_tumor/proc/onEliteWon() to_chat(mychild, "As the life in the activator's eyes fade, the forcefield around you dies out and you feel your power subside.\nDespite this inferno being your home, you feel as if you aren't welcome here anymore.\nWithout any guidance, your purpose is now for you to decide.") to_chat(mychild, "Your max health has been halved, but can now heal by standing on your tumor. Note, it's your only way to heal.\nBear in mind, if anyone interacts with your tumor, you'll be resummoned here to carry out another fight. In such a case, you will regain your full max health.\nAlso, be weary of your fellow inhabitants, they likely won't be happy to see you!") to_chat(mychild, "Note that you are a lavaland monster, and thus not allied to the station. You should not cooperate or act friendly with any station crew unless under extreme circumstances!") - + /obj/item/tumor_shard name = "tumor shard" desc = "A strange, sharp, crystal shard from an odd tumor on Lavaland. Stabbing the corpse of a lavaland elite with this will revive them, assuming their soul still lingers. Revived lavaland elites only have half their max health, but are completely loyal to their reviver." @@ -315,7 +313,7 @@ obj/structure/elite_tumor/proc/onEliteWon() w_class = WEIGHT_CLASS_SMALL throw_speed = 3 throw_range = 5 - + /obj/item/tumor_shard/afterattack(atom/target, mob/user, proximity_flag) . = ..() if(istype(target, /mob/living/simple_animal/hostile/asteroid/elite) && proximity_flag) @@ -333,11 +331,10 @@ obj/structure/elite_tumor/proc/onEliteWon() E.health = E.maxHealth E.desc = "[E.desc] However, this one appears appears less wild in nature, and calmer around people." E.sentience_type = SENTIENCE_ORGANIC - E.owner = user qdel(src) else to_chat(user, "[src] only works on the corpse of a sentient lavaland elite.") - + /obj/effect/temp_visual/elite_tumor_wall name = "magic wall" icon = 'icons/turf/walls/hierophant_wall_temp.dmi' @@ -350,7 +347,7 @@ obj/structure/elite_tumor/proc/onEliteWon() color = rgb(255,0,0) light_range = MINIMUM_USEFUL_LIGHT_RANGE light_color = LIGHT_COLOR_RED - + /obj/effect/temp_visual/elite_tumor_wall/Initialize(mapload, new_caster) . = ..() queue_smooth_neighbors(src) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm index e65c4f5b20..540470d505 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm @@ -44,34 +44,34 @@ /datum/action/innate/elite_attack/magic_box, /datum/action/innate/elite_attack/pandora_teleport, /datum/action/innate/elite_attack/aoe_squares) - + var/sing_shot_length = 8 var/cooldown_time = 20 - + /datum/action/innate/elite_attack/singular_shot name = "Singular Shot" button_icon_state = "singular_shot" chosen_message = "You are now creating a single linear magic square." chosen_attack_num = SINGULAR_SHOT - + /datum/action/innate/elite_attack/magic_box name = "Magic Box" button_icon_state = "magic_box" chosen_message = "You are now attacking with a box of magic squares." chosen_attack_num = MAGIC_BOX - + /datum/action/innate/elite_attack/pandora_teleport name = "Line Teleport" button_icon_state = "pandora_teleport" chosen_message = "You will now teleport to your target." chosen_attack_num = PANDORA_TELEPORT - + /datum/action/innate/elite_attack/aoe_squares name = "AOE Blast" button_icon_state = "aoe_squares" chosen_message = "Your attacks will spawn an AOE blast at your target location." chosen_attack_num = AOE_SQUARES - + /mob/living/simple_animal/hostile/asteroid/elite/pandora/OpenFire() if(client) switch(chosen_attack) @@ -94,7 +94,7 @@ pandora_teleport(target) if(AOE_SQUARES) aoe_squares(target) - + /mob/living/simple_animal/hostile/asteroid/elite/pandora/Life() . = ..() if(health >= maxHealth * 0.5) @@ -105,28 +105,28 @@ return else cooldown_time = 10 - -/mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/singular_shot(target) + +/mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/singular_shot(target) ranged_cooldown = world.time + (cooldown_time * 0.5) var/dir_to_target = get_dir(get_turf(src), get_turf(target)) var/turf/T = get_step(get_turf(src), dir_to_target) singular_shot_line(sing_shot_length, dir_to_target, T) - + /mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/singular_shot_line(var/procsleft, var/angleused, var/turf/T) if(procsleft <= 0) return - new /obj/effect/temp_visual/hierophant/blast/pandora(T, src, null, null, list(owner)) + new /obj/effect/temp_visual/hierophant/blast/pandora(T, src) T = get_step(T, angleused) procsleft = procsleft - 1 addtimer(CALLBACK(src, .proc/singular_shot_line, procsleft, angleused, T), 2) - + /mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/magic_box(target) ranged_cooldown = world.time + cooldown_time var/turf/T = get_turf(target) for(var/t in spiral_range_turfs(3, T)) if(get_dist(t, T) > 1) - new /obj/effect/temp_visual/hierophant/blast/pandora(t, src, null, null, list(owner)) - + new /obj/effect/temp_visual/hierophant/blast/pandora(t, src) + /mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/pandora_teleport(target) ranged_cooldown = world.time + cooldown_time var/turf/T = get_turf(target) @@ -135,45 +135,45 @@ new /obj/effect/temp_visual/hierophant/telegraph(source, src) playsound(source,'sound/machines/airlockopen.ogg', 200, 1) addtimer(CALLBACK(src, .proc/pandora_teleport_2, T, source), 2) - + /mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/pandora_teleport_2(var/turf/T, var/turf/source) new /obj/effect/temp_visual/hierophant/telegraph/teleport(T, src) new /obj/effect/temp_visual/hierophant/telegraph/teleport(source, src) for(var/t in RANGE_TURFS(1, T)) - new /obj/effect/temp_visual/hierophant/blast/pandora(t, src, null, null, list(owner)) + new /obj/effect/temp_visual/hierophant/blast/pandora(t, src) for(var/t in RANGE_TURFS(1, source)) - new /obj/effect/temp_visual/hierophant/blast/pandora(t, src, null, null, list(owner)) + new /obj/effect/temp_visual/hierophant/blast/pandora(t, src) animate(src, alpha = 0, time = 2, easing = EASE_OUT) //fade out visible_message("[src] fades out!") density = FALSE addtimer(CALLBACK(src, .proc/pandora_teleport_3, T), 2) - + /mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/pandora_teleport_3(var/turf/T) forceMove(T) animate(src, alpha = 255, time = 2, easing = EASE_IN) //fade IN density = TRUE visible_message("[src] fades in!") - + /mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/aoe_squares(target) ranged_cooldown = world.time + cooldown_time var/turf/T = get_turf(target) - new /obj/effect/temp_visual/hierophant/blast/pandora(T, src, null, null, list(owner)) + new /obj/effect/temp_visual/hierophant/blast/pandora(T, src) var/max_size = 2 addtimer(CALLBACK(src, .proc/aoe_squares_2, T, 0, max_size), 2) - + /mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/aoe_squares_2(var/turf/T, var/ring, var/max_size) if(ring > max_size) return for(var/t in spiral_range_turfs(ring, T)) if(get_dist(t, T) == ring) - new /obj/effect/temp_visual/hierophant/blast/pandora(t, src, null, null, list(owner)) + new /obj/effect/temp_visual/hierophant/blast/pandora(t, src) addtimer(CALLBACK(src, .proc/aoe_squares_2, T, (ring + 1), max_size), 2) - + //The specific version of hiero's squares pandora uses /obj/effect/temp_visual/hierophant/blast/pandora damage = 20 monster_damage_boost = FALSE - + //Pandora's loot: Hope /obj/item/clothing/accessory/pandora_hope name = "Hope" @@ -181,7 +181,7 @@ icon = 'icons/obj/lavaland/elite_trophies.dmi' icon_state = "hope" resistance_flags = FIRE_PROOF - + /obj/item/clothing/accessory/pandora_hope/on_uniform_equip(obj/item/clothing/under/U, user) var/mob/living/L = user if(L && L.mind) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm index 9e9fbaeab8..910e9c3c4a 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm @@ -131,7 +131,7 @@ /obj/item/udder/gutlunch/generateMilk() if(prob(60)) - reagents.add_reagent(/datum/reagent/consumable/cream, rand(2, 5)) + reagents.add_reagent("cream", rand(2, 5)) if(prob(45)) - reagents.add_reagent(/datum/reagent/medicine/salglu_solution, rand(2,5)) + reagents.add_reagent("salglu_solution", rand(2,5)) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm index 03d2365016..05dec578bd 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm @@ -20,7 +20,7 @@ lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE mob_size = MOB_SIZE_LARGE var/icon_aggro = null - var/crusher_drop_mod = 25 + var/crusher_drop_mod = 5 /mob/living/simple_animal/hostile/asteroid/Initialize(mapload) . = ..() @@ -58,7 +58,7 @@ /mob/living/simple_animal/hostile/asteroid/death(gibbed) SSblackbox.record_feedback("tally", "mobs_killed_mining", 1, type) var/datum/status_effect/crusher_damage/C = has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING) - if(C && crusher_loot && prob((C.total_damage/maxHealth) * crusher_drop_mod)) //on average, you'll need to kill 4 creatures before getting the item + if(C && crusher_loot && prob((C.total_damage/maxHealth) * crusher_drop_mod)) //on average, you'll need to kill 20 creatures before getting the item spawn_crusher_loot() ..(gibbed) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm index 27ebb71c0e..e3c81b2639 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm @@ -91,5 +91,5 @@ visible_message("The tendril falls inward, the ground around it widening into a yawning chasm!") for(var/turf/T in range(2,src)) if(!T.density) - T.TerraformTurf(/turf/open/chasm/lavaland, /turf/open/chasm/lavaland, flags = CHANGETURF_INHERIT_AIR) + T.TerraformTurf(/turf/open/chasm/lavaland, /turf/open/chasm/lavaland) qdel(src) diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm index 8301489e8c..514edf896b 100644 --- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm +++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm @@ -166,9 +166,7 @@ ..() /mob/living/simple_animal/hostile/mushroom/attack_hand(mob/living/carbon/human/M) - . = ..() - if(.) // the attack was blocked - return + ..() if(M.a_intent == INTENT_HARM) Bruise() @@ -187,6 +185,6 @@ var/counter for(counter=0, counter<=powerlevel, counter++) var/obj/item/reagent_containers/food/snacks/hugemushroomslice/S = new /obj/item/reagent_containers/food/snacks/hugemushroomslice(src.loc) - S.reagents.add_reagent(/datum/reagent/drug/mushroomhallucinogen, powerlevel) - S.reagents.add_reagent(/datum/reagent/medicine/omnizine, powerlevel) - S.reagents.add_reagent(/datum/reagent/medicine/synaptizine, powerlevel) + S.reagents.add_reagent("mushroomhallucinogen", powerlevel) + S.reagents.add_reagent("omnizine", powerlevel) + S.reagents.add_reagent("synaptizine", powerlevel) diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 107a6eed38..d1e10ea693 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -141,9 +141,9 @@ . = ..() remove_movespeed_modifier(MOVESPEED_ID_SLIME_REAGENTMOD, TRUE) var/amount = 0 - if(reagents.has_reagent(/datum/reagent/medicine/morphine)) // morphine slows slimes down + if(reagents.has_reagent("morphine")) // morphine slows slimes down amount = 2 - if(reagents.has_reagent(/datum/reagent/consumable/frostoil)) // Frostoil also makes them move VEEERRYYYYY slow + if(reagents.has_reagent("frostoil")) // Frostoil also makes them move VEEERRYYYYY slow amount = 5 if(amount) add_movespeed_modifier(MOVESPEED_ID_SLIME_REAGENTMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = amount) @@ -253,34 +253,33 @@ return /mob/living/simple_animal/slime/attack_slime(mob/living/simple_animal/slime/M) - . = ..() - if(!. || M == src) //unsuccessful slime shock - return - if(buckled) - Feedstop(silent = TRUE) - visible_message("[M] pulls [src] off!") - return - attacked += 5 - if(nutrition >= 100) //steal some nutrition. negval handled in life() - nutrition -= (50 + (40 * M.is_adult)) - M.add_nutrition(50 + (40 * M.is_adult)) - if(health > 0) - M.adjustBruteLoss(-10 + (-10 * M.is_adult)) - M.updatehealth() + if(..()) //successful slime attack + if(M == src) + return + if(buckled) + Feedstop(silent = TRUE) + visible_message("[M] pulls [src] off!") + return + attacked += 5 + if(nutrition >= 100) //steal some nutrition. negval handled in life() + nutrition -= (50 + (40 * M.is_adult)) + M.add_nutrition(50 + (40 * M.is_adult)) + if(health > 0) + M.adjustBruteLoss(-10 + (-10 * M.is_adult)) + M.updatehealth() /mob/living/simple_animal/slime/attack_animal(mob/living/simple_animal/M) . = ..() if(.) attacked += 10 + /mob/living/simple_animal/slime/attack_paw(mob/living/carbon/monkey/M) - . = ..() - if(.)//successful monkey bite. + if(..()) //successful monkey bite. attacked += 10 /mob/living/simple_animal/slime/attack_larva(mob/living/carbon/alien/larva/L) - . = ..() - if(.) //successful larva bite. + if(..()) //successful larva bite. attacked += 10 /mob/living/simple_animal/slime/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) @@ -322,11 +321,9 @@ attacked += 10 /mob/living/simple_animal/slime/attack_alien(mob/living/carbon/alien/humanoid/M) - . = ..() - if(!.) // the attack was blocked or was help/grab intent - return - attacked += 10 - discipline_slime(M) + if(..()) //if harm or disarm intent. + attacked += 10 + discipline_slime(M) /mob/living/simple_animal/slime/attackby(obj/item/W, mob/living/user, params) diff --git a/code/modules/mob/living/update_icons.dm b/code/modules/mob/living/update_icons.dm deleted file mode 100644 index 8bf0dc98a9..0000000000 --- a/code/modules/mob/living/update_icons.dm +++ /dev/null @@ -1,26 +0,0 @@ -//IMPORTANT: Multiple animate() calls do not stack well, so try to do them all at once if you can. -/mob/living/update_transform() - var/matrix/ntransform = matrix(transform) //aka transform.Copy() - var/final_pixel_y = pixel_y - var/final_dir = dir - var/changed = 0 - if(lying != lying_prev && rotate_on_lying) - changed++ - ntransform.TurnTo(lying_prev,lying) - if(lying == 0) //Lying to standing - final_pixel_y = get_standard_pixel_y_offset() - else //if(lying != 0) - if(lying_prev == 0) //Standing to lying - pixel_y = get_standard_pixel_y_offset() - final_pixel_y = get_standard_pixel_y_offset(lying) - if(dir & (EAST|WEST)) //Facing east or west - final_dir = pick(NORTH, SOUTH) //So you fall on your side rather than your face or ass - - if(resize != RESIZE_DEFAULT_SIZE) - changed++ - ntransform.Scale(resize) - resize = RESIZE_DEFAULT_SIZE - - if(changed) - animate(src, transform = ntransform, time = 2, pixel_y = final_pixel_y, dir = final_dir, easing = EASE_IN|EASE_OUT) - setMovetype(movement_type & ~FLOATING) // If we were without gravity, the bouncing animation got stopped, so we make sure we restart it in next life(). diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index b4c3c93824..1a3f2fca3b 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -459,11 +459,6 @@ mob/visible_message(message, self_message, blind_message, vision_distance = DEFA if(!ckey || !new_mob) CRASH("transfer_ckey() called [ckey ? "" : "on a ckey-less mob[new_mob ? "" : " and "]"][new_mob ? "" : "without a valid mob target"]!") SEND_SIGNAL(new_mob, COMSIG_MOB_PRE_PLAYER_CHANGE, new_mob, src) - if (client && client.prefs && client.prefs.auto_ooc) - if (client.prefs.chat_toggles & CHAT_OOC && isliving(new_mob)) - client.prefs.chat_toggles ^= CHAT_OOC - if (!(client.prefs.chat_toggles & CHAT_OOC) && isdead(new_mob)) - client.prefs.chat_toggles ^= CHAT_OOC new_mob.ckey = ckey if(send_signal) SEND_SIGNAL(src, COMSIG_MOB_KEY_CHANGE, new_mob, src) @@ -567,9 +562,9 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0) /mob/proc/is_muzzled() return 0 -/mob/Stat() - ..() - +/mob/Stat(delayoverride) + . = ..() + var/statdelay = delayoverride || 10 if(statpanel("Status")) if (client) stat(null, "Ping: [round(client.lastping, 1)]ms (Average: [round(client.avgping, 1)]ms)") @@ -577,7 +572,7 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0) var/datum/map_config/cached = SSmapping.next_map_config if(cached) stat(null, "Next Map: [cached.map_name]") - stat(null, "Round ID: [GLOB.round_id ? GLOB.round_id : "NULL"]") + stat(null, "Round ID: [GLOB.round_id || "NULL"]") stat(null, "Server Time: [time2text(world.timeofday, "YYYY-MM-DD hh:mm:ss")]") stat(null, "Round Time: [WORLDTIME2TEXT("hh:mm:ss")]") stat(null, "Station Time: [STATION_TIME_TIMESTAMP("hh:mm:ss")]") @@ -587,8 +582,9 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0) if(ETA) stat(null, "[ETA] [SSshuttle.emergency.getTimerStr()]") - if(client && client.holder) + if(client?.holder) if(statpanel("MC")) + statdelay = 0 //It's assumed that if you're doing this you are doing debug stuff, don't do ioditic things. var/turf/T = get_turf(client.eye) stat("Location:", COORD(T)) stat("CPU:", "[world.cpu]") @@ -614,6 +610,7 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0) GLOB.ahelp_tickets.stat_entry() if(length(GLOB.sdql2_queries)) if(statpanel("SDQL2")) + statdelay = 0 //It's assumed that if you're doing this you are doing debug stuff, don't do ioditic things. stat("Access Global SDQL2 List", GLOB.sdql2_vv_statobj) for(var/i in GLOB.sdql2_queries) var/datum/SDQL2_query/Q = i @@ -637,14 +634,13 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0) if(A.IsObscured()) continue statpanel(listed_turf.name, null, A) - - if(mind) add_spells_to_statpanel(mind.spell_list) var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling) if(changeling) add_stings_to_statpanel(changeling.purchasedpowers) add_spells_to_statpanel(mob_spell_list) + sleep(statdelay) /mob/proc/add_spells_to_statpanel(list/spells) for(var/obj/effect/proc_holder/spell/S in spells) @@ -801,14 +797,11 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0) //can the mob be buckled to something by default? /mob/proc/can_buckle() - return TRUE + return 1 //can the mob be unbuckled from something by default? /mob/proc/can_unbuckle() - return TRUE - -/mob/proc/can_buckle_others(mob/living/target, atom/buckle_to) - return TRUE + return 1 //Can the mob interact() with an atom? /mob/proc/can_interact_with(atom/A) @@ -960,4 +953,4 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0) /mob/setMovetype(newval) . = ..() - update_movespeed(FALSE) \ No newline at end of file + update_movespeed(FALSE) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 695084a794..c7365210ab 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -29,7 +29,6 @@ var/obj/machinery/machine = null var/next_move = null - var/create_area_cooldown var/notransform = null //Carbon var/eye_blind = 0 //Carbon var/eye_blurry = 0 //Carbon diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm index 89f5d20e70..816ae58749 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm @@ -4,7 +4,7 @@ if(!ninjacost(0,N_ADRENALINE)) var/mob/living/carbon/human/H = affecting - H.do_adrenaline(150, TRUE, 0, 0, TRUE, list(/datum/reagent/medicine/inaprovaline = 3, /datum/reagent/medicine/synaptizine = 10, /datum/reagent/medicine/omnizine = 10), "You feel a sudden surge of energy!") + H.do_adrenaline(150, TRUE, 0, 0, TRUE, list("inaprovaline" = 3, "synaptizine" = 10, "omnizine" = 10), "You feel a sudden surge of energy!") H.say(pick("A CORNERED FOX IS MORE DANGEROUS THAN A JACKAL!","HURT ME MOOORRREEE!","IMPRESSIVE!"), forced = "ninjaboost") @@ -15,5 +15,5 @@ /obj/item/clothing/suit/space/space_ninja/proc/ninjaboost_after() var/mob/living/carbon/human/H = affecting - H.reagents.add_reagent(/datum/reagent/radium, a_transfer) + H.reagents.add_reagent("radium", a_transfer) to_chat(H, "You are beginning to feel the after-effect of the injection.") diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm index 56c50078c1..8c304d8a2b 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm @@ -26,9 +26,10 @@ Contents: /obj/item/clothing/suit/space/space_ninja/proc/enable_signals() if(!affecting) return - RegisterSignal(affecting, list(COMSIG_MOB_ITEM_ATTACK, COMSIG_MOB_ATTACK_RANGED, COMSIG_HUMAN_MELEE_UNARMED_ATTACK, COMSIG_MOB_ATTACK_HAND, COMSIG_MOB_THROW, COMSIG_PARENT_ATTACKBY, COMSIG_MOVABLE_TELEPORTED, COMSIG_LIVING_GUN_PROCESS_FIRE), .proc/reduce_stealth) + RegisterSignal(affecting, list(COMSIG_MOB_ITEM_ATTACK, COMSIG_MOB_ATTACK_RANGED, COMSIG_MOB_ATTACK_HAND, COMSIG_MOB_THROW, COMSIG_PARENT_ATTACKBY, COMSIG_MOVABLE_TELEPORTED, COMSIG_LIVING_GUN_PROCESS_FIRE), .proc/reduce_stealth) RegisterSignal(affecting, COMSIG_MOVABLE_BUMP, .proc/bumping_stealth) + /obj/item/clothing/suit/space/space_ninja/proc/reduce_stealth(datum/source) affecting.alpha = min(affecting.alpha + 40, 100) @@ -41,7 +42,7 @@ Contents: return FALSE stealth = !stealth stealth_cooldown = world.time + 5 SECONDS - UnregisterSignal(affecting, list(COMSIG_MOB_ITEM_ATTACK, COMSIG_MOB_ATTACK_RANGED, COMSIG_HUMAN_MELEE_UNARMED_ATTACK, COMSIG_MOB_ATTACK_HAND, COMSIG_MOB_THROW, COMSIG_PARENT_ATTACKBY, COMSIG_MOVABLE_BUMP, COMSIG_MOVABLE_TELEPORTED, COMSIG_LIVING_GUN_PROCESS_FIRE)) + UnregisterSignal(affecting, list(COMSIG_MOB_ITEM_ATTACK, COMSIG_MOB_ATTACK_RANGED, COMSIG_MOB_ATTACK_HAND, COMSIG_MOB_THROW, COMSIG_PARENT_ATTACKBY, COMSIG_MOVABLE_BUMP, COMSIG_MOVABLE_TELEPORTED, COMSIG_LIVING_GUN_PROCESS_FIRE)) animate(affecting, alpha = 255, time = 3 SECONDS) affecting.visible_message("[affecting.name] appears from thin air!", \ "You are now visible.") diff --git a/code/modules/ninja/suit/suit_attackby.dm b/code/modules/ninja/suit/suit_attackby.dm index ed920a57d1..0496a2f1c3 100644 --- a/code/modules/ninja/suit/suit_attackby.dm +++ b/code/modules/ninja/suit/suit_attackby.dm @@ -5,13 +5,13 @@ return ..() if(istype(I, /obj/item/reagent_containers/glass))//If it's a glass beaker. - if(I.reagents.has_reagent(/datum/reagent/radium, a_transfer) && a_boost < a_maxamount) - I.reagents.remove_reagent(/datum/reagent/radium, a_transfer) + if(I.reagents.has_reagent("radium", a_transfer) && a_boost < a_maxamount) + I.reagents.remove_reagent("radium", a_transfer) a_boost++; to_chat(U, "There are now [a_boost] adrenaline boosts remaining.") return - if(I.reagents.has_reagent(/datum/reagent/smoke_powder, a_transfer) && s_bombs < s_maxamount) - I.reagents.remove_reagent(/datum/reagent/smoke_powder, a_transfer) + if(I.reagents.has_reagent("smoke_powder", a_transfer) && s_bombs < s_maxamount) + I.reagents.remove_reagent("smoke_powder", a_transfer) s_bombs++; to_chat(U, "There are now [s_bombs] smoke bombs remaining.") return diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index f3f7e45378..2ca6ce2611 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -102,7 +102,7 @@ /obj/item/paperplane/throw_impact(atom/hit_atom) if(iscarbon(hit_atom)) var/mob/living/carbon/C = hit_atom - if(!C.get_active_held_item() && !C.restrained()) + if(C.can_catch_item(TRUE)) var/datum/action/innate/origami/origami_action = locate() in C.actions if(origami_action?.active) //if they're a master of origami and have the ability turned on, force throwmode on so they'll automatically catch the plane. C.throw_mode_on() diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 8172a57399..7567fc1a52 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -23,7 +23,7 @@ throw_range = 7 materials = list(MAT_METAL=10) pressure_resistance = 2 - grind_results = list(/datum/reagent/iron = 2, /datum/reagent/iodine = 1) + grind_results = list("iron" = 2, "iodine" = 1) var/colour = "black" //what colour the ink is! var/degrees = 0 var/font = PEN_FONT @@ -165,9 +165,9 @@ /obj/item/pen/sleepy/Initialize() . = ..() create_reagents(45, OPENCONTAINER) - reagents.add_reagent(/datum/reagent/toxin/chloralhydrate, 20) - reagents.add_reagent(/datum/reagent/toxin/mutetoxin, 15) - reagents.add_reagent(/datum/reagent/toxin/staminatoxin, 10) + reagents.add_reagent("chloralhydrate", 20) + reagents.add_reagent("mutetoxin", 15) + reagents.add_reagent("tirizene", 10) /* * (Alan) Edaggers diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index e8d318697c..4e74ccc44b 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -335,6 +335,6 @@ name = "toner cartridge" icon = 'icons/obj/device.dmi' icon_state = "tonercartridge" - grind_results = list(/datum/reagent/iodine = 40, /datum/reagent/iron = 10) + grind_results = list("iodine" = 40, "iron" = 10) var/charges = 5 var/max_charges = 5 diff --git a/code/modules/photography/photos/photo.dm b/code/modules/photography/photos/photo.dm index 49f315d998..5682c333c7 100644 --- a/code/modules/photography/photos/photo.dm +++ b/code/modules/photography/photos/photo.dm @@ -9,7 +9,7 @@ w_class = WEIGHT_CLASS_TINY resistance_flags = FLAMMABLE max_integrity = 50 - grind_results = list(/datum/reagent/iodine = 4) + grind_results = list("iodine" = 4) var/datum/picture/picture var/scribble //Scribble on the back. diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index fde2ce4178..cc03976f79 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -490,7 +490,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai attack_verb = list("whipped", "lashed", "disciplined", "flogged") singular_name = "cable piece" full_w_class = WEIGHT_CLASS_SMALL - grind_results = list(/datum/reagent/copper = 2) //2 copper per cable in the coil + grind_results = list("copper" = 2) //2 copper per cable in the coil usesound = 'sound/items/deconstruct.ogg' /obj/item/stack/cable_coil/cyborg diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 5f9e7038f3..ded99d6fa6 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -14,7 +14,7 @@ var/charge = 0 // note %age conveted to actual charge in New var/maxcharge = 1000 materials = list(MAT_METAL=700, MAT_GLASS=50) - grind_results = list(/datum/reagent/lithium = 15, /datum/reagent/iron = 5, /datum/reagent/silicon = 5) + grind_results = list("lithium" = 15, "iron" = 5, "silicon" = 5) var/rigged = FALSE // true if rigged to explode var/chargerate = 100 //how much power is given every tick in a recharger var/self_recharge = 0 //does it self recharge, over time, or not? @@ -106,7 +106,7 @@ /obj/item/stock_parts/cell/on_reagent_change(changetype) ..() - rigged = reagents?.has_reagent(/datum/reagent/toxin/plasma, 5) ? TRUE : FALSE //has_reagent returns the reagent datum + rigged = reagents?.has_reagent("plasma", 5) ? TRUE : FALSE //has_reagent returns the reagent datum /obj/item/stock_parts/cell/proc/explode() var/turf/T = get_turf(src.loc) diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index 8e121dc809..fcc2c6c144 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -65,7 +65,7 @@ if(delta_temperature > 0 && cold_air_heat_capacity > 0 && hot_air_heat_capacity > 0) - var/efficiency = 0.45 + var/efficiency = 0.00025 + (hot_air.reaction_results["fire"]*0.01) var/energy_transfer = delta_temperature*hot_air_heat_capacity*cold_air_heat_capacity/(hot_air_heat_capacity+cold_air_heat_capacity) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index e50b11ea35..cdbaa29a3b 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -719,7 +719,7 @@ var/base_state var/switchcount = 0 // number of times switched materials = list(MAT_GLASS=100) - grind_results = list(/datum/reagent/silicon = 5, /datum/reagent/nitrogen = 10) //Nitrogen is used as a cheaper alternative to argon in incandescent lighbulbs + grind_results = list("silicon" = 5, "nitrogen" = 10) //Nitrogen is used as a cheaper alternative to argon in incandescent lighbulbs var/rigged = 0 // true if rigged to explode var/brightness = 2 //how much light it gives off @@ -789,7 +789,7 @@ to_chat(user, "You inject the solution into \the [src].") - if(S.reagents.has_reagent(/datum/reagent/toxin/plasma, 5)) + if(S.reagents.has_reagent("plasma", 5)) rigged = 1 diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 91a2bc515f..054b91f273 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -45,8 +45,8 @@ eject() else var/gasdrained = min(powerproduction_drain*drainratio,loaded_tank.air_contents.gases[/datum/gas/plasma]) - loaded_tank.air_contents.gases[/datum/gas/plasma] -= 2.7 * gasdrained - loaded_tank.air_contents.gases[/datum/gas/tritium] += 2.7 * gasdrained + loaded_tank.air_contents.gases[/datum/gas/plasma] -= gasdrained + loaded_tank.air_contents.gases[/datum/gas/tritium] += gasdrained GAS_GARBAGE_COLLECT(loaded_tank.air_contents.gases) var/power_produced = RAD_COLLECTOR_OUTPUT diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm index a8d3934208..ab463163f0 100644 --- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm +++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm @@ -134,8 +134,8 @@ /obj/item/ammo_casing/shotgun/dart/bioterror/Initialize() . = ..() - reagents.add_reagent(/datum/reagent/toxin/fentanyl, 6) - reagents.add_reagent(/datum/reagent/toxin/spore, 6) - reagents.add_reagent(/datum/reagent/toxin/mutetoxin, 6) //;HELP OPS IN MAINT - reagents.add_reagent(/datum/reagent/toxin/coniine, 6) - reagents.add_reagent(/datum/reagent/toxin/sodium_thiopental, 6) + reagents.add_reagent("neurotoxin", 6) + reagents.add_reagent("spore", 6) + reagents.add_reagent("mutetoxin", 6) //;HELP OPS IN MAINT + reagents.add_reagent("coniine", 6) + reagents.add_reagent("sodium_thiopental", 6) diff --git a/code/modules/projectiles/ammunition/energy/plasma.dm b/code/modules/projectiles/ammunition/energy/plasma.dm index 3a71254508..d02abf9c88 100644 --- a/code/modules/projectiles/ammunition/energy/plasma.dm +++ b/code/modules/projectiles/ammunition/energy/plasma.dm @@ -9,7 +9,3 @@ projectile_type = /obj/item/projectile/plasma/adv delay = 10 e_cost = 10 - -/obj/item/ammo_casing/energy/plasma/weak - projectile_type = /obj/item/projectile/plasma/weak - e_cost = 100 \ No newline at end of file diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 19fdfd2b7e..531c6082b0 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -37,7 +37,6 @@ var/burst_spread = 0 //Spread induced by the gun itself during burst fire per iteration. Only checked if spread is 0. var/randomspread = 1 //Set to 0 for shotguns. This is used for weapons that don't fire all their bullets at once. var/inaccuracy_modifier = 1 - var/pb_knockback = 0 lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' @@ -126,10 +125,6 @@ if(message) if(pointblank) user.visible_message("[user] fires [src] point blank at [pbtarget]!", null, null, COMBAT_MESSAGE_RANGE) - if(pb_knockback > 0) - var/atom/throw_target = get_edge_target_turf(pbtarget, user.dir) - pbtarget.throw_at(throw_target, pb_knockback, 2) - else user.visible_message("[user] fires [src]!", null, null, COMBAT_MESSAGE_RANGE) diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index 7fb4a8232e..bcb212a031 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -267,7 +267,6 @@ fire_delay = 0 pin = /obj/item/firing_pin/implant/pindicate actions_types = list() - pb_knockback = 2 /obj/item/gun/ballistic/automatic/shotgun/bulldog/unrestricted pin = /obj/item/firing_pin diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 31a5131804..d1a5f12888 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -273,7 +273,6 @@ "Maple" = "dshotgun-l", "Rosewood" = "dshotgun-p" ) - pb_knockback = 3 // it's a super shotgun! /obj/item/gun/ballistic/revolver/doublebarrel/attackby(obj/item/A, mob/user, params) ..() @@ -353,7 +352,7 @@ clumsy_check = 0 /obj/item/gun/ballistic/revolver/reverse/can_trigger_gun(mob/living/user) - if((HAS_TRAIT(user, TRAIT_CLUMSY)) || (user.mind && HAS_TRAIT(user.mind, TRAIT_CLOWN_MENTALITY))) + if((HAS_TRAIT(user, TRAIT_CLUMSY)) || (user.mind && user.mind.assigned_role == "Clown")) return ..() if(process_fire(user, user, FALSE, null, BODY_ZONE_HEAD)) user.visible_message("[user] somehow manages to shoot [user.p_them()]self in the face!", "You somehow shoot yourself in the face! How the hell?!") diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index deec187f88..571525d8f0 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -12,8 +12,6 @@ var/recentpump = 0 // to prevent spammage weapon_weight = WEAPON_MEDIUM - pb_knockback = 2 - /obj/item/gun/ballistic/shotgun/attackby(obj/item/A, mob/user, params) . = ..() if(.) diff --git a/code/modules/projectiles/guns/ballistic/toy.dm b/code/modules/projectiles/guns/ballistic/toy.dm index 8f9bc13583..8b358832b0 100644 --- a/code/modules/projectiles/guns/ballistic/toy.dm +++ b/code/modules/projectiles/guns/ballistic/toy.dm @@ -56,7 +56,6 @@ item_flags = NONE casing_ejector = FALSE can_suppress = FALSE - pb_knockback = 0 /obj/item/gun/ballistic/shotgun/toy/process_chamber(empty_chamber = 0) ..() diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index ecd906f2a9..b216d8d536 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -112,10 +112,7 @@ /obj/item/gun/energy/kinetic_accelerator/cyborg holds_charge = TRUE unique_frequency = TRUE - -/obj/item/gun/energy/kinetic_accelerator/premiumka/cyborg - holds_charge = TRUE - unique_frequency = TRUE + max_mod_capacity = 80 /obj/item/gun/energy/kinetic_accelerator/minebot trigger_guard = TRIGGER_GUARD_ALLOW_ALL @@ -283,7 +280,7 @@ . += "Occupies [cost]% of mod capacity." /obj/item/borg/upgrade/modkit/attackby(obj/item/A, mob/user) - if(istype(A, /obj/item/gun/energy/kinetic_accelerator)) + if(istype(A, /obj/item/gun/energy/kinetic_accelerator) && !issilicon(user)) install(A, user) else ..() diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm index 0465a611cd..1e2070de1b 100644 --- a/code/modules/projectiles/pins.dm +++ b/code/modules/projectiles/pins.dm @@ -135,7 +135,7 @@ // A gun with ultra-honk pin is useful for clown and useless for everyone else. /obj/item/firing_pin/clown/ultra/pin_auth(mob/living/user) playsound(src.loc, 'sound/items/bikehorn.ogg', 50, 1) - if(user && (!(HAS_TRAIT(user, TRAIT_CLUMSY)) && !(user.mind && HAS_TRAIT(user.mind, TRAIT_CLOWN_MENTALITY)))) + if(user && (!(HAS_TRAIT(user, TRAIT_CLUMSY)) && !(user.mind && user.mind.assigned_role == "Clown"))) return FALSE return TRUE diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 04fffaf431..9141a6d299 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -210,7 +210,7 @@ if(reagents && reagents.reagent_list) reagent_note = " REAGENTS:" for(var/datum/reagent/R in reagents.reagent_list) - reagent_note += R.type + " (" + reagent_note += R.id + " (" reagent_note += num2text(R.volume) + ") " if(ismob(firer)) diff --git a/code/modules/projectiles/projectile/bullets/dart_syringe.dm b/code/modules/projectiles/projectile/bullets/dart_syringe.dm index 29e6c39c31..bdbf706448 100644 --- a/code/modules/projectiles/projectile/bullets/dart_syringe.dm +++ b/code/modules/projectiles/projectile/bullets/dart_syringe.dm @@ -31,9 +31,9 @@ /obj/item/projectile/bullet/dart/metalfoam/Initialize() . = ..() - reagents.add_reagent(/datum/reagent/aluminium, 15) - reagents.add_reagent(/datum/reagent/foaming_agent, 5) - reagents.add_reagent(/datum/reagent/toxin/acid, 5) + reagents.add_reagent("aluminium", 15) + reagents.add_reagent("foaming_agent", 5) + reagents.add_reagent("facid", 5) /obj/item/projectile/bullet/dart/syringe name = "syringe" @@ -52,19 +52,20 @@ if(blocked != 100) if(M.can_inject(null, FALSE, def_zone, piercing)) // Pass the hit zone to see if it can inject by whether it hit the head or the body. ..(target, blocked, TRUE) - for(var/datum/reagent/medicine/R in reagents.reagent_list) //OD prevention time! - if(M.reagents.has_reagent(R.type)) - if(R.overdose_threshold == 0 || emptrig == TRUE) //Is there a possible OD? - M.reagents.add_reagent(R.type, R.volume) + for(var/datum/reagent/R in reagents.reagent_list) //OD prevention time! + if(istype(R, /datum/reagent/medicine)) //Is this a medicine? + if(M.reagents.has_reagent(R.id)) + if(R.overdose_threshold == 0 || emptrig == TRUE) //Is there a possible OD? + M.reagents.add_reagent(R.id, R.volume) + else + var/transVol = CLAMP(R.volume, 0, (R.overdose_threshold - M.reagents.get_reagent_amount(R.id)) -1) + M.reagents.add_reagent(R.id, transVol) else - var/transVol = CLAMP(R.volume, 0, (R.overdose_threshold - M.reagents.get_reagent_amount(R.type)) -1) - M.reagents.add_reagent(R.type, transVol) - else - if(!R.overdose_threshold == 0) - var/transVol = CLAMP(R.volume, 0, R.overdose_threshold-1) - M.reagents.add_reagent(R.type, transVol) - else - M.reagents.add_reagent(R.type, R.volume) + if(!R.overdose_threshold == 0) + var/transVol = CLAMP(R.volume, 0, R.overdose_threshold-1) + M.reagents.add_reagent(R.id, transVol) + else + M.reagents.add_reagent(R.id, R.volume) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 791db320a2..173d9721a9 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -93,7 +93,7 @@ /obj/item/projectile/magic/door/proc/CreateDoor(turf/T) var/door_type = pick(door_types) var/obj/structure/mineral_door/D = new door_type(T) - T.ChangeTurf(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) + T.ChangeTurf(/turf/open/floor/plating) D.Open() /obj/item/projectile/magic/door/proc/OpenDoor(var/obj/machinery/door/D) diff --git a/code/modules/projectiles/projectile/special/plasma.dm b/code/modules/projectiles/projectile/special/plasma.dm index 4c05c42fb3..aeafb6157a 100644 --- a/code/modules/projectiles/projectile/special/plasma.dm +++ b/code/modules/projectiles/projectile/special/plasma.dm @@ -47,9 +47,3 @@ damage = 24 range = 7 pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE - -/obj/item/projectile/plasma/weak - dismemberment = 0 - damage = 10 - range = 4 - mine_range = 0 \ No newline at end of file diff --git a/code/modules/reagents/chem_wiki_render.dm b/code/modules/reagents/chem_wiki_render.dm index e24da70d47..efb6bdecfd 100644 --- a/code/modules/reagents/chem_wiki_render.dm +++ b/code/modules/reagents/chem_wiki_render.dm @@ -1,11 +1,18 @@ //Generates a markdown txt file for use with the wiki /proc/find_reagent(input) - //prefer types! - . = GLOB.chemical_reagents_list[text2path(input)] - if(.) - return - . = GLOB.name2reagent[ckey(input)] + . = FALSE + if(GLOB.chemical_reagents_list[input]) //prefer IDs! + var/datum/reagent/R = GLOB.chemical_reagents_list[input] + return R + else + for(var/X in GLOB.chemical_reagents_list) + var/datum/reagent/R = GLOB.chemical_reagents_list[X] + if(input == replacetext(lowertext(R.name), " ", "")) + return R + if(input == replacetext(lowertext(R.id), " ", "")) + return R + @@ -17,7 +24,7 @@ var/prefix = "|Name | Reagents | Reaction vars | Description | Chem properties |\n|---|---|---|-----------|---|\n" - var/input_reagent = replacetext(lowertext(input("Input the name/type of a reagent to get it's description on it's own, or leave blank to parse every chem.", "Input") as text), " ", "") //95% of the time, the reagent type is a lowercase, no spaces / underscored version of the name + var/input_reagent = replacetext(lowertext(input("Input the name/id of a reagent to get it's description on it's own, or leave blank to parse every chem.", "Input") as text), " ", "") //95% of the time, the reagent id is a lowercase/no spaces version of the name if(input_reagent) var/input_reagent2 = find_reagent(input_reagent) if(!input_reagent2) @@ -61,23 +68,98 @@ var/impure = "" //Chem_dispencer - var/obj/machinery/chem_dispenser/C - var/list/dispensable_reagents = initial(C.dispensable_reagents) - var/list/components = initial(C.upgrade_reagents) + initial(C.upgrade_reagents2) + initial(C.upgrade_reagents3) + var/list/dispensable_reagents = list( + "hydrogen", + "lithium", + "carbon", + "nitrogen", + "oxygen", + "fluorine", + "sodium", + "aluminium", + "silicon", + "phosphorus", + "sulfur", + "chlorine", + "potassium", + "iron", + "copper", + "mercury", + "radium", + "water", + "ethanol", + "sugar", + "sacid", + "welding_fuel", + "silver", + "iodine", + "bromine", + "stable_plasma" + ) + var/list/components = list( + "oil", + "ammonia", + "ash", + "acetone", + "phenol", + "diethylamine", + "saltpetre", + "sodiumchloride", + "lye" + ) var/list/grind = list( - /datum/reagent/bluespace, - /datum/reagent/gold, - /datum/reagent/toxin/plasma, - /datum/reagent/uranium + "bluespace", + "gold", + "plasma", + "uranium" ) //Bartender - var/obj/machinery/chem_dispenser/drinks/D - var/dispence_drinks = initial(D.dispensable_reagents) - - var/obj/machinery/chem_dispenser/drinks/beer/B - var/dispence_alco = initial(B.dispensable_reagents) + var/dispence_drinks = list( + "water", + "ice", + "coffee", + "cream", + "tea", + "icetea", + "cola", + "spacemountainwind", + "dr_gibb", + "space_up", + "tonic", + "sodawater", + "lemon_lime", + "pwr_game", + "shamblers", + "sugar", + "orangejuice", + "grenadine", + "limejuice", + "tomatojuice", + "lemonjuice", + "menthol" + ) + var/dispence_alco = list( + "beer", + "kahlua", + "whiskey", + "wine", + "vodka", + "gin", + "rum", + "tequila", + "vermouth", + "cognac", + "ale", + "absinthe", + "hcider", + "creme_de_menthe", + "creme_de_cacao", + "triple_sec", + "sake", + "applejack" + ) var/breakout = FALSE for(var/i = 1, i <= 2, i+=1) @@ -87,31 +169,31 @@ continue for(var/Y in dispensable_reagents) //Why do you have to do this - if(R.type == Y) + if(R.id == Y) basic += generate_chemwiki_line(R, X, processCR) breakout = TRUE continue for(var/Y in components) - if(R.type == Y) + if(R.id == Y) upgraded += generate_chemwiki_line(R, X, processCR) breakout = TRUE continue for(var/Y in dispence_drinks) - if(R.type == Y) + if(R.id == Y) drinks += generate_chemwiki_line(R, X, processCR) breakout = TRUE continue for(var/Y in dispence_alco) - if(R.type == Y) + if(R.id == Y) alco += generate_chemwiki_line(R, X, processCR) breakout = TRUE continue for(var/Y in grind) - if(R.type == Y) + if(R.id == Y) grinded += generate_chemwiki_line(R, X, processCR) breakout = TRUE continue @@ -191,7 +273,7 @@ /proc/generate_chemwiki_line(datum/reagent/R, X, processCR) //name | Reagent pH | reagents | reaction temp | explosion temp | pH range | Kinetics | description | OD level | Addiction level | Metabolism rate | impure chem | inverse chem - var/datum/chemical_reaction/CR = get_chemical_reaction(R.type) + var/datum/chemical_reaction/CR = get_chemical_reaction(R.id) if((!CR && processCR) || (CR && !processCR)) // Do reactions first. return "" @@ -202,11 +284,11 @@ outstring += "
      " for(var/R2 in CR.required_reagents) R3 = GLOB.chemical_reagents_list[R2]//What a convoluted mess - outstring += "
    • [R3.name]: [CR.required_reagents[R3.type]]u
    • " + outstring += "
    • [R3.name]: [CR.required_reagents[R3.id]]u
    • " if(CR.required_catalysts) for(var/R2 in CR.required_catalysts) R3 = GLOB.chemical_reagents_list[R2] - outstring += "
    • Catalyst: [R3.name]: [CR.required_catalysts[R3.type]]u
    • " + outstring += "
    • Catalyst: [R3.name]: [CR.required_catalysts[R3.id]]u
    • " outstring += "
    | " else outstring += "N/A | " @@ -250,11 +332,11 @@ //Description, OD, Addict, Meta outstring += "[R.description] |
    • Metabolism rate: [R.metabolization_rate/2]u/s
    • [(R.overdose_threshold?"
    • Overdose: [R.overdose_threshold]u
    • ":"")] [(R.addiction_threshold?"
    • Addiction: [R.addiction_threshold]u
    • ":"")] " - if(R.impure_chem && R.impure_chem != /datum/reagent/impure/fermiTox) + if(R.impure_chem && R.impure_chem != "fermiTox") R3 = GLOB.chemical_reagents_list[R.impure_chem] outstring += "
    • Impure chem:[R3.name]
    • " - if(R.inverse_chem && R.impure_chem != /datum/reagent/impure/fermiTox) + if(R.inverse_chem && R.impure_chem != "fermiTox") R3 = GLOB.chemical_reagents_list[R.inverse_chem] outstring += "
    • Inverse chem:[R3.name]
    • [(R3.inverse_chem_val?"
    • Inverse purity: [R3.inverse_chem_val]
    • ":"")] " @@ -279,11 +361,11 @@ var/datum/reagent/R3 for(var/R2 in CR.required_reagents) R3 = GLOB.chemical_reagents_list[R2] - outstring += "
    • [R3.name]: [CR.required_reagents[R3.type]]u
    • " + outstring += "
    • [R3.name]: [CR.required_reagents[R3.id]]u
    • " if(CR.required_catalysts) for(var/R2 in CR.required_catalysts) R3 = GLOB.chemical_reagents_list[R2] - outstring += "
    • Catalyst: [R3.name]: [CR.required_catalysts[R3.type]]u
    • " + outstring += "
    • Catalyst: [R3.name]: [CR.required_catalysts[R3.id]]u
    • " outstring += "
    |
      " //Reaction vars diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index bf3c4220b4..d540cd02fe 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -11,13 +11,13 @@ for(var/path in paths) var/datum/reagent/D = new path() - GLOB.chemical_reagents_list[path] = D + GLOB.chemical_reagents_list[D.id] = D /proc/build_chemical_reactions_list() //Chemical Reactions - Initialises all /datum/chemical_reaction into a list // It is filtered into multiple lists within a list. // For example: - // chemical_reaction_list[/datum/reagent/toxin/plasma] is a list of all reactions relating to plasma + // chemical_reaction_list["plasma"] is a list of all reactions relating to plasma if(GLOB.chemical_reactions_list) return @@ -32,11 +32,14 @@ var/datum/chemical_reaction/D = new path() var/list/reaction_ids = list() + if(!D.id) + continue + if(D.required_reagents && D.required_reagents.len) for(var/reaction in D.required_reagents) reaction_ids += reaction - // Create filters based on each reagent type in the required reagents list + // Create filters based on each reagent id in the required reagents list for(var/id in reaction_ids) if(!GLOB.chemical_reactions_list[id]) GLOB.chemical_reactions_list[id] = list() @@ -60,7 +63,7 @@ var/targetVol = 0 //the target volume, i.e. the total amount that can be created during a fermichem reaction. var/reactedVol = 0 //how much of the reagent is reacted during a fermireaction var/fermiIsReacting = FALSE //that prevents multiple reactions from occurring (i.e. add_reagent calls to process_reactions(), this stops any extra reactions.) - var/fermiReactID //instance of the chem reaction used during a fermireaction, kept here so it's cache isn't lost between loops/procs. + var/fermiReactID //ID of the chem being made during a fermireaction, kept here so it's cache isn't lost between loops/procs. /datum/reagents/New(maximum=100, new_flags) maximum_volume = maximum @@ -93,7 +96,7 @@ var/list/data = list() for(var/r in reagent_list) //no reagents will be left behind var/datum/reagent/R = r - data += "[R.type] ([round(R.volume, CHEMICAL_QUANTISATION_LEVEL)]u)" + data += "[R.id] ([round(R.volume, CHEMICAL_QUANTISATION_LEVEL)]u)" //Using IDs because SOME chemicals (I'm looking at you, chlorhydrate-beer) have the same names as other chemicals. return english_list(data) @@ -114,7 +117,7 @@ current_list_element = 1 var/datum/reagent/R = cached_reagents[current_list_element] - remove_reagent(R.type, 1) + remove_reagent(R.id, 1) current_list_element++ total_transfered++ @@ -129,7 +132,7 @@ var/part = amount / total_volume for(var/reagent in cached_reagents) var/datum/reagent/R = reagent - remove_reagent(R.type, R.volume * part, ignore_pH = TRUE) + remove_reagent(R.id, R.volume * part, ignore_pH = TRUE) pH = REAGENT_NORMAL_PH update_total() handle_reactions() @@ -149,15 +152,15 @@ /datum/reagents/proc/get_master_reagent_id() var/list/cached_reagents = reagent_list - var/max_type + var/id var/max_volume = 0 for(var/reagent in cached_reagents) var/datum/reagent/R = reagent if(R.volume > max_volume) max_volume = R.volume - max_type = R.type + id = R.id - return max_type + return id /datum/reagents/proc/get_master_reagent() var/list/cached_reagents = reagent_list @@ -195,9 +198,9 @@ trans_data = copy_data(T) - R.add_reagent(T.type, transfer_amount * multiplier, trans_data, chem_temp, T.purity, pH, no_react = TRUE, ignore_pH = TRUE) //we only handle reaction after every reagent has been transfered. + R.add_reagent(T.id, transfer_amount * multiplier, trans_data, chem_temp, T.purity, pH, no_react = TRUE, ignore_pH = TRUE) //we only handle reaction after every reagent has been transfered. - remove_reagent(T.type, transfer_amount, ignore_pH = TRUE) + remove_reagent(T.id, transfer_amount, ignore_pH = TRUE) update_total() R.update_total() @@ -229,7 +232,7 @@ var/copy_amount = T.volume * part if(preserve_data) trans_data = T.data - R.add_reagent(T.type, copy_amount * multiplier, trans_data) + R.add_reagent(T.id, copy_amount * multiplier, trans_data) src.update_total() R.update_total() @@ -253,12 +256,12 @@ var/trans_data = null for (var/CR in cached_reagents) var/datum/reagent/current_reagent = CR - if(current_reagent.type == reagent) + if(current_reagent.id == reagent) if(preserve_data) trans_data = current_reagent.data - R.add_reagent(current_reagent.type, amount, trans_data, chem_temp, current_reagent.purity, pH, no_react = TRUE) + R.add_reagent(current_reagent.id, amount, trans_data, chem_temp, current_reagent.purity, pH, no_react = TRUE) - remove_reagent(current_reagent.type, amount, 1) + remove_reagent(current_reagent.id, amount, 1) break src.update_total() @@ -310,21 +313,18 @@ var/datum/reagent/R = addiction if(C && R) R.addiction_stage++ - switch(R.addiction_stage) - if(1 to R.addiction_stage1_end) - need_mob_update += R.addiction_act_stage1(C) - if(R.addiction_stage1_end to R.addiction_stage2_end) - need_mob_update += R.addiction_act_stage2(C) - if(R.addiction_stage2_end to R.addiction_stage3_end) - need_mob_update += R.addiction_act_stage3(C) - if(R.addiction_stage3_end to R.addiction_stage4_end) - need_mob_update += R.addiction_act_stage4(C) - if(R.addiction_stage4_end to INFINITY) - to_chat(C, "You feel like you've gotten over your need for [R.name].") - SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.type]_addiction") - cached_addictions.Remove(R) - else - SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.type]_overdose") + if(1 <= R.addiction_stage && R.addiction_stage <= R.addiction_stage1_end) + need_mob_update += R.addiction_act_stage1(C) + else if(R.addiction_stage1_end <= R.addiction_stage && R.addiction_stage <= R.addiction_stage2_end) + need_mob_update += R.addiction_act_stage2(C) + else if(R.addiction_stage2_end <= R.addiction_stage && R.addiction_stage <= R.addiction_stage3_end) + need_mob_update += R.addiction_act_stage3(C) + else if(R.addiction_stage3_end <= R.addiction_stage && R.addiction_stage <= R.addiction_stage4_end) + need_mob_update += R.addiction_act_stage4(C) + else if(R.addiction_stage4_end <= R.addiction_stage) + to_chat(C, "You feel like you've gotten over your need for [R.name].") + SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.id]_addiction") + cached_addictions.Remove(R) addiction_tick++ if(C && need_mob_update) //some of the metabolized reagents had effects on the mob that requires some updates. C.updatehealth() @@ -381,7 +381,7 @@ reaction_occurred = 0 for(var/reagent in cached_reagents) var/datum/reagent/R = reagent - for(var/reaction in cached_reactions[R.type]) // Was a big list but now it should be smaller since we filtered it with our reagent type + for(var/reaction in cached_reactions[R.id]) // Was a big list but now it should be smaller since we filtered it with our reagent id if(!reaction) continue @@ -630,7 +630,7 @@ deltapH = 1 //This should never proc: else - WARNING("[my_atom] attempted to determine FermiChem pH for '[C.type]' which broke for some reason! ([usr])") + WARNING("[my_atom] attempted to determine FermiChem pH for '[C.id]' which broke for some reason! ([usr])") //Calculate DeltaT (Deviation of T from optimal) if (cached_temp < C.OptimalTempMax && cached_temp >= C.OptimalTempMin) @@ -679,7 +679,7 @@ //Above should reduce yeild based on holder purity. //Purity Check for(var/datum/reagent/R in my_atom.reagents.reagent_list) - if(P == R.type) + if(P == R.id) if (R.purity < C.PurityMin)//If purity is below the min, blow it up. fermiIsReacting = FALSE SSblackbox.record_feedback("tally", "fermi_chem", 1, ("[P] explosion")) @@ -724,7 +724,7 @@ return cachedPurity/i /datum/reagents/proc/uncache_purity(id) - var/datum/reagent/R = has_reagent(id) + var/datum/reagent/R = has_reagent("[id]") if(!R) return if(R.cached_purity == 1) @@ -735,15 +735,15 @@ var/list/cached_reagents = reagent_list for(var/_reagent in cached_reagents) var/datum/reagent/R = _reagent - if(R.type != reagent) - del_reagent(R.type) + if(R.id != reagent) + del_reagent(R.id) update_total() /datum/reagents/proc/del_reagent(reagent) var/list/cached_reagents = reagent_list for(var/_reagent in cached_reagents) var/datum/reagent/R = _reagent - if(R.type == reagent) + if(R.id == reagent) if(my_atom && isliving(my_atom)) var/mob/living/M = my_atom if(R.metabolizing) @@ -763,9 +763,9 @@ for(var/reagent in cached_reagents) var/datum/reagent/R = reagent if(R.volume <= 0)//For clarity - del_reagent(R.type) + del_reagent(R.id) if((R.volume < 0.01) && !fermiIsReacting) - del_reagent(R.type) + del_reagent(R.id) else total_volume += R.volume if(!reagent_list || !total_volume) @@ -776,7 +776,7 @@ var/list/cached_reagents = reagent_list for(var/reagent in cached_reagents) var/datum/reagent/R = reagent - del_reagent(R.type) + del_reagent(R.id) pH = REAGENT_NORMAL_PH return 0 @@ -842,13 +842,13 @@ WARNING("[my_atom] attempted to add a reagent called '[reagent]' which doesn't exist. ([usr])") return FALSE - if (D.type == /datum/reagent/water && !no_react && !istype(my_atom, /obj/item/reagent_containers/food)) //Do like an otter, add acid to water, but also don't blow up botany. + if (D.id == "water" && !no_react && !istype(my_atom, /obj/item/reagent_containers/food)) //Do like an otter, add acid to water, but also don't blow up botany. if (pH < 2) SSblackbox.record_feedback("tally", "fermi_chem", 1, "water-acid explosions") var/datum/effect_system/smoke_spread/chem/s = new var/turf/T = get_turf(my_atom) var/datum/reagents/R = new/datum/reagents(3000) - R.add_reagent(/datum/reagent/fermi/fermiAcid, amount) + R.add_reagent("fermiAcid", amount) for (var/datum/reagent/reagentgas in reagent_list) R.add_reagent(reagentgas, amount/5) remove_reagent(reagentgas, amount/5) @@ -895,7 +895,7 @@ //add the reagent to the existing if it exists for(var/A in cached_reagents) var/datum/reagent/R = A - if (R.type == reagent) //IF MERGING + if (R.id == reagent) //IF MERGING //Add amount and equalize purity R.volume += round(amount, CHEMICAL_QUANTISATION_LEVEL) R.purity = ((R.purity * R.volume) + (other_purity * amount)) /((R.volume + amount)) //This should add the purity to the product @@ -937,7 +937,7 @@ return TRUE -/datum/reagents/proc/add_reagent_list(list/list_reagents, list/data=null) // Like add_reagent but you can enter a list. Format it like this: list(/datum/reagent/toxin = 10, /datum/reagent/consumable/ethanol/beer = 15) +/datum/reagents/proc/add_reagent_list(list/list_reagents, list/data=null) // Like add_reagent but you can enter a list. Format it like this: list("toxin" = 10, "beer" = 15) for(var/r_id in list_reagents) var/amt = list_reagents[r_id] add_reagent(r_id, amt, data) @@ -959,7 +959,7 @@ for(var/A in cached_reagents) var/datum/reagent/R = A - if (R.type == reagent) + if (R.id == reagent) if((total_volume - amount) <= 0)//Because this can result in 0, I don't want it to crash. pH = REAGENT_NORMAL_PH //In practice this is really confusing and players feel like it randomly melts their beakers, but I'm not sure how else to handle it. We'll see how it goes and I can remove this if it confuses people. @@ -986,7 +986,7 @@ var/list/cached_reagents = reagent_list for(var/_reagent in cached_reagents) var/datum/reagent/R = _reagent - if (R.type == reagent) + if (R.id == reagent) if(!amount) return R else @@ -1001,7 +1001,7 @@ var/list/cached_reagents = reagent_list for(var/_reagent in cached_reagents) var/datum/reagent/R = _reagent - if (R.type == reagent) + if (R.id == reagent) return round(R.volume, CHEMICAL_QUANTISATION_LEVEL) return 0 @@ -1034,7 +1034,7 @@ // We found a match, proceed to remove the reagent. Keep looping, we might find other reagents of the same type. if(matches) // Have our other proc handle removement - has_removed_reagent = remove_reagent(R.type, amount, safety) + has_removed_reagent = remove_reagent(R.id, amount, safety) return has_removed_reagent @@ -1043,14 +1043,14 @@ var/list/cached_reagents = reagent_list for(var/reagent in cached_reagents) var/datum/reagent/R = reagent - if(R.type == reagent_id) + if(R.id == reagent_id) return R.data /datum/reagents/proc/set_data(reagent_id, new_data) var/list/cached_reagents = reagent_list for(var/reagent in cached_reagents) var/datum/reagent/R = reagent - if(R.type == reagent_id) + if(R.id == reagent_id) R.data = new_data /datum/reagents/proc/copy_data(datum/reagent/current_reagent) @@ -1143,12 +1143,12 @@ reagents = new/datum/reagents(max_vol, flags) reagents.my_atom = src -/proc/get_random_reagent_id() // Returns a random reagent type minus blacklisted reagents +/proc/get_random_reagent_id() // Returns a random reagent ID minus blacklisted reagents var/static/list/random_reagents = list() if(!random_reagents.len) for(var/thing in subtypesof(/datum/reagent)) var/datum/reagent/R = thing if(initial(R.can_synth)) - random_reagents += R + random_reagents += initial(R.id) var/picked_reagent = pick(random_reagents) return picked_reagent diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 217c915a9e..2c5d7aa3e2 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -1,16 +1,3 @@ -/proc/translate_legacy_chem_id(id) - switch (id) - if ("sacid") - return "sulphuricacid" - if ("facid") - return "fluorosulfuricacid" - if ("co2") - return "carbondioxide" - if ("mine_salve") - return "minerssalve" - else - return ckey(id) - /obj/machinery/chem_dispenser name = "chem dispenser" desc = "Creates and dispenses chemicals." @@ -34,66 +21,65 @@ var/macrotier = 1 var/obj/item/reagent_containers/beaker = null var/list/dispensable_reagents = list( - /datum/reagent/hydrogen, - /datum/reagent/lithium, - /datum/reagent/carbon, - /datum/reagent/nitrogen, - /datum/reagent/oxygen, - /datum/reagent/fluorine, - /datum/reagent/sodium, - /datum/reagent/aluminium, - /datum/reagent/silicon, - /datum/reagent/phosphorus, - /datum/reagent/sulfur, - /datum/reagent/chlorine, - /datum/reagent/potassium, - /datum/reagent/iron, - /datum/reagent/copper, - /datum/reagent/mercury, - /datum/reagent/radium, - /datum/reagent/water, - /datum/reagent/consumable/ethanol, - /datum/reagent/consumable/sugar, - /datum/reagent/toxin/acid, - /datum/reagent/fuel, - /datum/reagent/silver, - /datum/reagent/iodine, - /datum/reagent/bromine, - /datum/reagent/stable_plasma + "hydrogen", + "lithium", + "carbon", + "nitrogen", + "oxygen", + "fluorine", + "sodium", + "aluminium", + "silicon", + "phosphorus", + "sulfur", + "chlorine", + "potassium", + "iron", + "copper", + "mercury", + "radium", + "water", + "ethanol", + "sugar", + "sacid", + "welding_fuel", + "silver", + "iodine", + "bromine", + "stable_plasma" ) //these become available once upgraded. var/list/upgrade_reagents = list( - /datum/reagent/oil, - /datum/reagent/ammonia, - /datum/reagent/ash + "oil", + "ammonia", + "ash" ) var/list/upgrade_reagents2 = list( - /datum/reagent/acetone, - /datum/reagent/phenol, - /datum/reagent/diethylamine + "acetone", + "phenol", + "diethylamine" ) var/list/upgrade_reagents3 = list( - /datum/reagent/medicine/mine_salve, - /datum/reagent/toxin + "mine_salve", + "toxin" ) var/list/emagged_reagents = list( - /datum/reagent/drug/space_drugs, - /datum/reagent/toxin/plasma, - /datum/reagent/consumable/frostoil, - /datum/reagent/toxin/carpotoxin, - /datum/reagent/toxin/histamine, - /datum/reagent/medicine/morphine + "space_drugs", + "plasma", + "frostoil", + "carpotoxin", + "histamine", + "morphine" ) var/list/saved_recipes = list() /obj/machinery/chem_dispenser/Initialize() . = ..() - for(var/list/L in list(dispensable_reagents, emagged_reagents, upgrade_reagents, upgrade_reagents2, upgrade_reagents3)) - L = sortList(L, /proc/cmp_reagents_asc) + dispensable_reagents = sortList(dispensable_reagents) update_icon() /obj/machinery/chem_dispenser/Destroy() @@ -227,7 +213,7 @@ var/chemname = temp.name if(is_hallucinating && prob(5)) chemname = "[pick_list_replacements("hallucination.json", "chemicals")]" - chemicals.Add(list(list("title" = chemname, "id" = ckey(temp.name)))) + chemicals.Add(list(list("title" = chemname, "id" = temp.id))) for(var/recipe in saved_recipes) recipes.Add(list(recipe)) data["chemicals"] = chemicals @@ -249,7 +235,7 @@ if("dispense") if(!is_operational() || QDELETED(cell)) return - var/reagent = GLOB.name2reagent[params["reagent"]] + var/reagent = params["reagent"] if(beaker && dispensable_reagents.Find(reagent)) var/datum/reagents/R = beaker.reagents var/free = R.maximum_volume - R.total_volume @@ -281,7 +267,7 @@ var/res = get_macro_resolution() for(var/key in chemicals_to_dispense) // i suppose you could edit the list locally before passing it var/list/keysplit = splittext(key," ") - var/r_id = GLOB.name2reagent[translate_legacy_chem_id(keysplit[1])] + var/r_id = keysplit[1] if(beaker && dispensable_reagents.Find(r_id)) // but since we verify we have the reagent, it'll be fine var/datum/reagents/R = beaker.reagents var/free = R.maximum_volume - R.total_volume @@ -313,8 +299,7 @@ var/resmismatch = FALSE for(var/reagents in first_process) var/list/reagent = splittext(reagents, "=") - var/reagent_id = GLOB.name2reagent[translate_legacy_chem_id(reagent[1])] - if(dispensable_reagents.Find(reagent_id)) + if(dispensable_reagents.Find(reagent[1])) if (!resmismatch && !check_macro_part(reagents, res)) resmismatch = TRUE continue @@ -490,45 +475,45 @@ nopower_state = null pass_flags = PASSTABLE dispensable_reagents = list( - /datum/reagent/water, - /datum/reagent/consumable/ice, - /datum/reagent/consumable/coffee, - /datum/reagent/consumable/cream, - /datum/reagent/consumable/tea, - /datum/reagent/consumable/icetea, - /datum/reagent/consumable/space_cola, - /datum/reagent/consumable/spacemountainwind, - /datum/reagent/consumable/dr_gibb, - /datum/reagent/consumable/space_up, - /datum/reagent/consumable/tonic, - /datum/reagent/consumable/sodawater, - /datum/reagent/consumable/lemon_lime, - /datum/reagent/consumable/pwr_game, - /datum/reagent/consumable/shamblers, - /datum/reagent/consumable/sugar, - /datum/reagent/consumable/orangejuice, - /datum/reagent/consumable/grenadine, - /datum/reagent/consumable/limejuice, - /datum/reagent/consumable/tomatojuice, - /datum/reagent/consumable/lemonjuice, - /datum/reagent/consumable/menthol + "water", + "ice", + "coffee", + "cream", + "tea", + "icetea", + "cola", + "spacemountainwind", + "dr_gibb", + "space_up", + "tonic", + "sodawater", + "lemon_lime", + "pwr_game", + "shamblers", + "sugar", + "orangejuice", + "grenadine", + "limejuice", + "tomatojuice", + "lemonjuice", + "menthol" ) upgrade_reagents = list( - /datum/reagent/drug/mushroomhallucinogen, - /datum/reagent/consumable/nothing, - /datum/reagent/medicine/cryoxadone + "mushroomhallucinogen", + "nothing", + "cryoxadone" ) upgrade_reagents2 = list( - /datum/reagent/consumable/banana, - /datum/reagent/consumable/berryjuice + "banana", + "berryjuice" ) upgrade_reagents3 = null emagged_reagents = list( - /datum/reagent/consumable/ethanol/thirteenloko, - /datum/reagent/consumable/ethanol/changelingsting, - /datum/reagent/consumable/ethanol/whiskey_cola, - /datum/reagent/toxin/mindbreaker, - /datum/reagent/toxin/staminatoxin + "thirteenloko", + "changelingsting", + "whiskeycola", + "mindbreaker", + "tirizene" ) @@ -557,39 +542,39 @@ icon_state = "booze_dispenser" circuit = /obj/item/circuitboard/machine/chem_dispenser/drinks/beer dispensable_reagents = list( - /datum/reagent/consumable/ethanol/beer, - /datum/reagent/consumable/ethanol/kahlua, - /datum/reagent/consumable/ethanol/whiskey, - /datum/reagent/consumable/ethanol/wine, - /datum/reagent/consumable/ethanol/vodka, - /datum/reagent/consumable/ethanol/gin, - /datum/reagent/consumable/ethanol/rum, - /datum/reagent/consumable/ethanol/tequila, - /datum/reagent/consumable/ethanol/vermouth, - /datum/reagent/consumable/ethanol/cognac, - /datum/reagent/consumable/ethanol/ale, - /datum/reagent/consumable/ethanol/absinthe, - /datum/reagent/consumable/ethanol/hcider, - /datum/reagent/consumable/ethanol/creme_de_menthe, - /datum/reagent/consumable/ethanol/creme_de_cacao, - /datum/reagent/consumable/ethanol/triple_sec, - /datum/reagent/consumable/ethanol/sake, - /datum/reagent/consumable/ethanol/applejack + "beer", + "kahlua", + "whiskey", + "wine", + "vodka", + "gin", + "rum", + "tequila", + "vermouth", + "cognac", + "ale", + "absinthe", + "hcider", + "creme_de_menthe", + "creme_de_cacao", + "triple_sec", + "sake", + "applejack" ) upgrade_reagents = list( - /datum/reagent/consumable/ethanol, - /datum/reagent/consumable/ethanol/fernet + "ethanol", + "fernet" ) upgrade_reagents2 = null upgrade_reagents3 = null emagged_reagents = list( - /datum/reagent/iron, - /datum/reagent/consumable/ethanol/alexander, - /datum/reagent/consumable/clownstears, - /datum/reagent/toxin/minttoxin, - /datum/reagent/consumable/ethanol/atomicbomb, - /datum/reagent/drug/aphrodisiac, - /datum/reagent/drug/aphrodisiacplus + "iron", + "alexander", + "clownstears", + "minttoxin", + "atomicbomb", + "aphro", + "aphro+" ) /obj/machinery/chem_dispenser/drinks/beer/fullupgrade //fully ugpraded stock parts, emagged @@ -613,9 +598,9 @@ /obj/machinery/chem_dispenser/mutagen name = "mutagen dispenser" desc = "Creates and dispenses mutagen." - dispensable_reagents = list(/datum/reagent/toxin/mutagen) + dispensable_reagents = list("mutagen") upgrade_reagents = null - emagged_reagents = list(/datum/reagent/toxin/plasma) + emagged_reagents = list("plasma") /obj/machinery/chem_dispenser/mutagensaltpeter @@ -624,19 +609,19 @@ flags_1 = NODECONSTRUCT_1 dispensable_reagents = list( - /datum/reagent/toxin/mutagen, - /datum/reagent/saltpetre, - /datum/reagent/plantnutriment/eznutriment, - /datum/reagent/plantnutriment/left4zednutriment, - /datum/reagent/plantnutriment/robustharvestnutriment, - /datum/reagent/water, - /datum/reagent/toxin/plantbgone, - /datum/reagent/toxin/plantbgone/weedkiller, - /datum/reagent/toxin/pestkiller, - /datum/reagent/medicine/cryoxadone, - /datum/reagent/ammonia, - /datum/reagent/ash, - /datum/reagent/diethylamine) + "mutagen", + "saltpetre", + "eznutriment", + "left4zednutriment", + "robustharvestnutriment", + "water", + "plantbgone", + "weedkiller", + "pestkiller", + "cryoxadone", + "ammonia", + "ash", + "diethylamine") //same as above. upgrade_reagents = null upgrade_reagents2 = null @@ -682,46 +667,46 @@ working_state = null nopower_state = null dispensable_reagents = list( - /datum/reagent/hydrogen, - /datum/reagent/lithium, - /datum/reagent/carbon, - /datum/reagent/nitrogen, - /datum/reagent/oxygen, - /datum/reagent/fluorine, - /datum/reagent/sodium, - /datum/reagent/aluminium, - /datum/reagent/silicon, - /datum/reagent/phosphorus, - /datum/reagent/sulfur, - /datum/reagent/chlorine, - /datum/reagent/potassium, - /datum/reagent/iron, - /datum/reagent/copper, - /datum/reagent/mercury, - /datum/reagent/radium, - /datum/reagent/water, - /datum/reagent/consumable/ethanol, - /datum/reagent/consumable/sugar, - /datum/reagent/toxin/acid, - /datum/reagent/fuel, - /datum/reagent/silver, - /datum/reagent/iodine, - /datum/reagent/bromine, - /datum/reagent/stable_plasma, - /datum/reagent/oil, - /datum/reagent/ammonia, - /datum/reagent/ash, - /datum/reagent/acetone, - /datum/reagent/phenol, - /datum/reagent/diethylamine, - /datum/reagent/medicine/mine_salve, - /datum/reagent/toxin, - /datum/reagent/drug/space_drugs, - /datum/reagent/toxin/plasma, - /datum/reagent/consumable/frostoil, - /datum/reagent/uranium, - /datum/reagent/toxin/histamine, - /datum/reagent/medicine/morphine + "hydrogen", + "lithium", + "carbon", + "nitrogen", + "oxygen", + "fluorine", + "sodium", + "aluminium", + "silicon", + "phosphorus", + "sulfur", + "chlorine", + "potassium", + "iron", + "copper", + "mercury", + "radium", + "water", + "ethanol", + "sugar", + "sacid", + "welding_fuel", + "silver", + "iodine", + "bromine", + "stable_plasma", + "oil", + "ammonia", + "ash", + "acetone", + "phenol", + "diethylamine", + "mine_salve", + "toxin", + "space_drugs", + "plasma", + "frostoil", + "uranium", + "histamine", + "morphine" ) /obj/machinery/chem_dispenser/abductor/Initialize() @@ -734,4 +719,4 @@ component_parts += new /obj/item/stock_parts/manipulator/femto(null) component_parts += new /obj/item/stack/sheet/glass(null) component_parts += new /obj/item/stock_parts/cell/bluespace(null) - RefreshParts() + RefreshParts() \ No newline at end of file diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index e6b19417d8..1ac62ba651 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -186,13 +186,13 @@ var/beakerContents[0] if(beaker) for(var/datum/reagent/R in beaker.reagents.reagent_list) - beakerContents.Add(list(list("name" = R.name, "id" = ckey(R.name), "volume" = R.volume))) // list in a list because Byond merges the first list... + beakerContents.Add(list(list("name" = R.name, "id" = R.id, "volume" = R.volume))) // list in a list because Byond merges the first list... data["beakerContents"] = beakerContents var/bufferContents[0] if(reagents.total_volume) for(var/datum/reagent/N in reagents.reagent_list) - bufferContents.Add(list(list("name" = N.name, "id" = ckey(N.name), "volume" = N.volume))) // ^ + bufferContents.Add(list(list("name" = N.name, "id" = N.id, "volume" = N.volume))) // ^ data["bufferContents"] = bufferContents //Calculated at init time as it never changes @@ -214,34 +214,34 @@ if("transferToBuffer") if(beaker) - var/reagent = GLOB.name2reagent[params["id"]] + var/id = params["id"] var/amount = text2num(params["amount"]) if (amount > 0) end_fermi_reaction() - beaker.reagents.trans_id_to(src, reagent, amount) + beaker.reagents.trans_id_to(src, id, amount) . = TRUE else if (amount == -1) // -1 means custom amount useramount = input("Enter the Amount you want to transfer:", name, useramount) as num|null if (useramount > 0) end_fermi_reaction() - beaker.reagents.trans_id_to(src, reagent, useramount) + beaker.reagents.trans_id_to(src, id, useramount) . = TRUE if("transferFromBuffer") - var/reagent = GLOB.name2reagent[params["id"]] + var/id = params["id"] var/amount = text2num(params["amount"]) if (amount > 0) if(mode) - reagents.trans_id_to(beaker, reagent, amount) + reagents.trans_id_to(beaker, id, amount) . = TRUE else - reagents.remove_reagent(reagent, amount) + reagents.remove_reagent(id, amount) . = TRUE else if (amount == -1) // -1 means custom amount useramount = input("Enter the Amount you want to transfer:", name, useramount) as num|null if (useramount > 0) end_fermi_reaction() - reagents.trans_id_to(beaker, reagent, useramount) + reagents.trans_id_to(beaker, id, useramount) . = TRUE if("toggleMode") @@ -260,7 +260,7 @@ if(!amount) return vol_each = min(reagents.total_volume / amount, 50) - var/name = html_decode(stripped_input(usr,"Name:","Name your pill!", "[reagents.get_master_reagent_name()] ([vol_each]u)", MAX_NAME_LEN)) + var/name = stripped_input(usr,"Name:","Name your pill!", "[reagents.get_master_reagent_name()] ([vol_each]u)", MAX_NAME_LEN) if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr))) return var/obj/item/reagent_containers/pill/P @@ -287,7 +287,7 @@ adjust_item_drop_location(P) reagents.trans_to(P,vol_each) else - var/name = html_decode(stripped_input(usr, "Name:", "Name your pack!", reagents.get_master_reagent_name(), MAX_NAME_LEN)) + var/name = stripped_input(usr, "Name:", "Name your pack!", reagents.get_master_reagent_name(), MAX_NAME_LEN) if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr))) return var/obj/item/reagent_containers/food/condiment/pack/P = new/obj/item/reagent_containers/food/condiment/pack(drop_location()) @@ -313,7 +313,7 @@ if(!amount) return vol_each = min(reagents.total_volume / amount, 40) - var/name = html_decode(stripped_input(usr,"Name:","Name your patch!", "[reagents.get_master_reagent_name()] ([vol_each]u)", MAX_NAME_LEN)) + var/name = stripped_input(usr,"Name:","Name your patch!", "[reagents.get_master_reagent_name()] ([vol_each]u)", MAX_NAME_LEN) if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr))) return var/obj/item/reagent_containers/pill/P @@ -331,7 +331,7 @@ return if(condi) - var/name = html_decode(stripped_input(usr, "Name:","Name your bottle!", (reagents.total_volume ? reagents.get_master_reagent_name() : " "), MAX_NAME_LEN)) + var/name = stripped_input(usr, "Name:","Name your bottle!", (reagents.total_volume ? reagents.get_master_reagent_name() : " "), MAX_NAME_LEN) if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr))) return var/obj/item/reagent_containers/food/condiment/P = new(drop_location()) @@ -344,7 +344,7 @@ if(text2num(many)) amount_full = round(reagents.total_volume / 30) vol_part = ((reagents.total_volume*1000) % 30000) / 1000 //% operator doesn't support decimals. - var/name = html_decode(stripped_input(usr, "Name:","Name your bottle!", (reagents.total_volume ? reagents.get_master_reagent_name() : " "), MAX_NAME_LEN)) + var/name = stripped_input(usr, "Name:","Name your bottle!", (reagents.total_volume ? reagents.get_master_reagent_name() : " "), MAX_NAME_LEN) if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr))) return @@ -372,7 +372,7 @@ if(text2num(many)) amount_full = round(reagents.total_volume / 60) vol_part = reagents.total_volume % 60 - var/name = html_decode(stripped_input(usr, "Name:","Name your hypovial!", (reagents.total_volume ? reagents.get_master_reagent_name() : " "), MAX_NAME_LEN)) + var/name = stripped_input(usr, "Name:","Name your hypovial!", (reagents.total_volume ? reagents.get_master_reagent_name() : " "), MAX_NAME_LEN) if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr))) return @@ -407,7 +407,7 @@ return vol_each = min(reagents.total_volume / amount, 20) - var/name = html_decode(stripped_input(usr,"Name:","Name your SmartDart!", "[reagents.get_master_reagent_name()] ([vol_each]u)", MAX_NAME_LEN)) + var/name = stripped_input(usr,"Name:","Name your SmartDart!", "[reagents.get_master_reagent_name()] ([vol_each]u)", MAX_NAME_LEN) if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr))) return @@ -423,7 +423,7 @@ //END CITADEL ADDITIONS if("analyzeBeak") - var/datum/reagent/R = GLOB.name2reagent[params["id"]] + var/datum/reagent/R = GLOB.chemical_reagents_list[params["id"]] if(R) var/state = "Unknown" if(initial(R.reagent_state) == 1) @@ -434,11 +434,11 @@ state = "Gas" var/const/P = 3 //The number of seconds between life ticks var/T = initial(R.metabolization_rate) * (60 / P) - var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.type) + var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.id) if(Rcr && Rcr.FermiChem) fermianalyze = TRUE var/pHpeakCache = (Rcr.OptimalpHMin + Rcr.OptimalpHMax)/2 - var/datum/reagent/targetReagent = beaker.reagents.has_reagent(R.type) + var/datum/reagent/targetReagent = beaker.reagents.has_reagent("[R.id]") if(!targetReagent) CRASH("Tried to find a reagent that doesn't exist in the chem_master!") @@ -450,7 +450,7 @@ return if("analyzeBuff") - var/datum/reagent/R = GLOB.name2reagent[params["id"]] + var/datum/reagent/R = GLOB.chemical_reagents_list[params["id"]] if(R) var/state = "Unknown" if(initial(R.reagent_state) == 1) @@ -463,9 +463,9 @@ var/T = initial(R.metabolization_rate) * (60 / P) if(istype(R, /datum/reagent/fermi)) fermianalyze = TRUE - var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.type) + var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.id) var/pHpeakCache = (Rcr.OptimalpHMin + Rcr.OptimalpHMax)/2 - var/datum/reagent/targetReagent = reagents.has_reagent(R.type) + var/datum/reagent/targetReagent = reagents.has_reagent("[R.id]") if(!targetReagent) CRASH("Tried to find a reagent that doesn't exist in the chem_master!") diff --git a/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm b/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm index ed23e7c75c..daac5a5d1c 100644 --- a/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm +++ b/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm @@ -8,8 +8,8 @@ flags_1 = NODECONSTRUCT_1 use_power = NO_POWER_USE var/static/list/shortcuts = list( - "meth" = /datum/reagent/drug/methamphetamine, - "tricord" = /datum/reagent/medicine/tricordrazine + "meth" = "methamphetamine", + "tricord" = "tricordrazine" ) /obj/machinery/chem_dispenser/chem_synthesizer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ @@ -31,13 +31,13 @@ beaker = null . = TRUE if("input") - var/input_reagent = replacetext(lowertext(input("Enter the name of any reagent", "Input") as text), " ", "") //95% of the time, the reagent types is a lowercase, no spaces / underscored version of the name + var/input_reagent = replacetext(lowertext(input("Enter the name of any liquid", "Input") as text), " ", "") //95% of the time, the reagent id is a lowercase/no spaces version of the name if(shortcuts[input_reagent]) input_reagent = shortcuts[input_reagent] else input_reagent = find_reagent(input_reagent) - if(!input_reagent) - say("REAGENT NOT FOUND") + if(!input_reagent || !GLOB.chemical_reagents_list[input_reagent]) + say("OUT OF RANGE") return else if(!beaker) diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index 68ce6e490f..6ae0a682d8 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -144,9 +144,9 @@ var/datum/reagent/blood/B = locate() in beaker.reagents.reagent_list if(B) data["has_blood"] = TRUE - data[/datum/reagent/blood] = list() - data[/datum/reagent/blood]["dna"] = B.data["blood_DNA"] || "none" - data[/datum/reagent/blood]["type"] = B.data["blood_type"] || "none" + data["blood"] = list() + data["blood"]["dna"] = B.data["blood_DNA"] || "none" + data["blood"]["type"] = B.data["blood_type"] || "none" data["viruses"] = get_viruses_data(B) data["resistances"] = get_resistance_data(B) if(SYMPTOM_DETAILS) @@ -192,7 +192,7 @@ var/obj/item/reagent_containers/glass/bottle/B = new(drop_location()) B.name = "[A.name] culture bottle" B.desc = "A small bottle. Contains [A.agent] culture in synthblood medium." - B.reagents.add_reagent(/datum/reagent/blood, 20, data) + B.reagents.add_reagent("blood", 20, data) wait = TRUE update_icon() var/turf/source_turf = get_turf(src) @@ -204,7 +204,7 @@ var/datum/disease/D = SSdisease.archive_diseases[id] var/obj/item/reagent_containers/glass/bottle/B = new(drop_location()) B.name = "[D.name] vaccine bottle" - B.reagents.add_reagent(/datum/reagent/vaccine, 15, list(id)) + B.reagents.add_reagent("vaccine", 15, list(id)) wait = TRUE update_icon() addtimer(CALLBACK(src, .proc/reset_replicator_cooldown), 200) diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm index 7e1b7ec018..98cfd877b2 100644 --- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm +++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm @@ -299,18 +299,18 @@ /obj/machinery/reagentgrinder/proc/mix_complete() if(beaker?.reagents.total_volume) //Recipe to make Butter - var/butter_amt = FLOOR(beaker.reagents.get_reagent_amount(/datum/reagent/consumable/milk) / MILK_TO_BUTTER_COEFF, 1) - beaker.reagents.remove_reagent(/datum/reagent/consumable/milk, MILK_TO_BUTTER_COEFF * butter_amt) + var/butter_amt = FLOOR(beaker.reagents.get_reagent_amount("milk") / MILK_TO_BUTTER_COEFF, 1) + beaker.reagents.remove_reagent("milk", MILK_TO_BUTTER_COEFF * butter_amt) for(var/i in 1 to butter_amt) new /obj/item/reagent_containers/food/snacks/butter(drop_location()) //Recipe to make Mayonnaise - if (beaker.reagents.has_reagent(/datum/reagent/consumable/eggyolk)) - var/amount = beaker.reagents.get_reagent_amount(/datum/reagent/consumable/eggyolk) - beaker.reagents.remove_reagent(/datum/reagent/consumable/eggyolk, amount) - beaker.reagents.add_reagent(/datum/reagent/consumable/mayonnaise, amount) + if (beaker.reagents.has_reagent("eggyolk")) + var/amount = beaker.reagents.get_reagent_amount("eggyolk") + beaker.reagents.remove_reagent("eggyolk", amount) + beaker.reagents.add_reagent("mayonnaise", amount) //Moonsugar for skooma - if(beaker.reagents.has_reagent(/datum/reagent/consumable/sugar) && beaker.reagents.has_reagent(/datum/reagent/consumable/ethanol/moonshine)) - var/amount = min(beaker.reagents.get_reagent_amount(/datum/reagent/consumable/sugar), beaker.reagents.get_reagent_amount(/datum/reagent/consumable/ethanol/moonshine)) - beaker.reagents.remove_reagent(/datum/reagent/consumable/sugar, amount) - beaker.reagents.remove_reagent(/datum/reagent/consumable/ethanol/moonshine, amount) - beaker.reagents.add_reagent(/datum/reagent/moonsugar, amount*2) + if(beaker.reagents.has_reagent("sugar") && beaker.reagents.has_reagent("moonshine")) + var/amount = min(beaker.reagents.get_reagent_amount("sugar"), beaker.reagents.get_reagent_amount("moonshine")) + beaker.reagents.remove_reagent("sugar", amount) + beaker.reagents.remove_reagent("moonshine", amount) + beaker.reagents.add_reagent("moonsugar", amount*2) diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index 5eb2c135a8..da41ac9dc4 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -1,20 +1,12 @@ #define REM REAGENTS_EFFECT_MULTIPLIER -GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) - -/proc/build_name2reagent() - . = list() - for (var/t in subtypesof(/datum/reagent)) - var/datum/reagent/R = t - if (length(initial(R.name))) - .[ckey(initial(R.name))] = t - //Various reagents //Toxin & acid reagents //Hydroponics stuff /datum/reagent var/name = "Reagent" + var/id = "reagent" var/description = "" var/specific_heat = SPECIFIC_HEAT_DEFAULT //J/(K*mol) var/taste_description = "metaphorical salt" @@ -66,7 +58,7 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) var/modifier = CLAMP((1 - touch_protection), 0, 1) var/amount = round(reac_volume*modifier, 0.1) if(amount >= 0.5) - M.reagents.add_reagent(type, amount) + M.reagents.add_reagent(id, amount) return 1 /datum/reagent/proc/reaction_obj(obj/O, volume) @@ -78,7 +70,7 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) /datum/reagent/proc/on_mob_life(mob/living/carbon/M) current_cycle++ if(holder) - holder.remove_reagent(type, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears. + holder.remove_reagent(src.id, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears. return //called when a mob processes chems when dead. @@ -87,7 +79,7 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) return current_cycle++ if(holder) - holder.remove_reagent(type, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears. + holder.remove_reagent(src.id, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears. return // Called when this reagent is first added to a mob @@ -96,19 +88,19 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) return var/mob/living/carbon/M = L if (purity == 1) - log_game("CHEM: [L] ckey: [L.key] has ingested [volume]u of [type]") + log_game("CHEM: [L] ckey: [L.key] has ingested [volume]u of [id]") return if(cached_purity == 1) cached_purity = purity else if(purity < 0) - CRASH("Purity below 0 for chem: [type], Please let Fermis Know!") + CRASH("Purity below 0 for chem: [id], Please let Fermis Know!") if(chemical_flags & REAGENT_DONOTSPLIT) return if ((inverse_chem_val > purity) && (inverse_chem))//Turns all of a added reagent into the inverse chem - M.reagents.remove_reagent(type, amount, FALSE) + M.reagents.remove_reagent(id, amount, FALSE) M.reagents.add_reagent(inverse_chem, amount, FALSE, other_purity = 1-cached_purity) - var/datum/reagent/R = M.reagents.has_reagent(inverse_chem) + var/datum/reagent/R = M.reagents.has_reagent("[inverse_chem]") if(R.chemical_flags & REAGENT_SNEAKYNAME) R.name = name//Negative effects are hidden if(R.chemical_flags & REAGENT_INVISIBLE) @@ -118,9 +110,9 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) else if (impure_chem) var/impureVol = amount * (1 - purity) //turns impure ratio into impure chem if(!(chemical_flags & REAGENT_SPLITRETAINVOL)) - M.reagents.remove_reagent(type, (impureVol), FALSE) + M.reagents.remove_reagent(id, (impureVol), FALSE) M.reagents.add_reagent(impure_chem, impureVol, FALSE, other_purity = 1-cached_purity) - log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume - impureVol]u of [type]") + log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume - impureVol]u of [id]") log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume]u of [impure_chem]") return @@ -148,18 +140,18 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) if(!iscarbon(M)) return if (purity == 1) - log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume]u of [type]") + log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume]u of [id]") return cached_purity = purity //purity SHOULD be precalculated from the add_reagent, update cache. if (purity < 0) - CRASH("Purity below 0 for chem: [type], Please let Fermis Know!") + CRASH("Purity below 0 for chem: [id], Please let Fermis Know!") if(chemical_flags & REAGENT_DONOTSPLIT) return if ((inverse_chem_val > purity) && (inverse_chem)) //INVERT - M.reagents.remove_reagent(type, amount, FALSE) + M.reagents.remove_reagent(id, amount, FALSE) M.reagents.add_reagent(inverse_chem, amount, FALSE, other_purity = 1-cached_purity) - var/datum/reagent/R = M.reagents.has_reagent(inverse_chem) + var/datum/reagent/R = M.reagents.has_reagent("[inverse_chem]") if(R.chemical_flags & REAGENT_SNEAKYNAME) R.name = name//Negative effects are hidden if(R.chemical_flags & REAGENT_INVISIBLE) @@ -169,9 +161,9 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) else if (impure_chem) //SPLIT var/impureVol = amount * (1 - purity) if(!(chemical_flags & REAGENT_SPLITRETAINVOL)) - M.reagents.remove_reagent(type, impureVol, FALSE) + M.reagents.remove_reagent(id, impureVol, FALSE) M.reagents.add_reagent(impure_chem, impureVol, FALSE, other_purity = 1-cached_purity) - log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume - impureVol]u of [type]") + log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume - impureVol]u of [id]") log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume]u of [impure_chem]") return @@ -188,29 +180,29 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) /datum/reagent/proc/overdose_start(mob/living/M) to_chat(M, "You feel like you took too much of [name]!") - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/overdose, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/overdose, name) return /datum/reagent/proc/addiction_act_stage1(mob/living/M) - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_light, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/withdrawal_light, name) if(prob(30)) to_chat(M, "You feel like having some [name] right about now.") return /datum/reagent/proc/addiction_act_stage2(mob/living/M) - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_medium, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/withdrawal_medium, name) if(prob(30)) to_chat(M, "You feel like you need [name]. You just can't get enough.") return /datum/reagent/proc/addiction_act_stage3(mob/living/M) - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_severe, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/withdrawal_severe, name) if(prob(30)) to_chat(M, "You have an intense craving for [name].") return /datum/reagent/proc/addiction_act_stage4(mob/living/M) - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_critical, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/withdrawal_critical, name) if(prob(30)) to_chat(M, "You're not feeling good at all! You really need some [name].") return diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 62a8d97b2d..fd28ff9c47 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -8,6 +8,7 @@ /datum/reagent/consumable/ethanol name = "Ethanol" + id = "ethanol" description = "A well-known alcohol with a variety of applications." color = "#404030" // rgb: 64, 64, 48 nutriment_factor = 0 @@ -35,9 +36,7 @@ All effects don't start immediately, but rather get worse over time; the rate is */ /datum/reagent/consumable/ethanol/on_mob_life(mob/living/carbon/C) - if(HAS_TRAIT(C, TRAIT_NO_ALCOHOL)) - C.adjustToxLoss((boozepwr/25)*REM,forced = TRUE) - else if(C.drunkenness < volume * boozepwr * ALCOHOL_THRESHOLD_MODIFIER) + if(C.drunkenness < volume * boozepwr * ALCOHOL_THRESHOLD_MODIFIER) var/booze_power = boozepwr if(HAS_TRAIT(C, TRAIT_ALCOHOL_TOLERANCE)) //we're an accomplished drinker booze_power *= 0.7 @@ -80,6 +79,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/beer name = "Beer" + id = "beer" description = "An alcoholic beverage brewed since ancient times on Old Earth. Still popular today." color = "#664300" // rgb: 102, 67, 0 nutriment_factor = 1 * REAGENTS_METABOLISM @@ -92,6 +92,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/beer/light name = "Light Beer" + id = "light_beer" description = "An alcoholic beverage brewed since ancient times on Old Earth. This variety has reduced calorie and alcohol content." boozepwr = 5 //Space Europeans hate it taste_description = "dish water" @@ -102,6 +103,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/beer/green name = "Green Beer" + id = "greenbeer" description = "An alcoholic beverage brewed since ancient times on Old Earth. This variety is dyed a festive green." color = "#A8E61D" taste_description = "green piss water" @@ -121,6 +123,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/kahlua name = "Kahlua" + id = "kahlua" description = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936!" color = "#664300" // rgb: 102, 67, 0 boozepwr = 45 @@ -143,6 +146,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/whiskey name = "Whiskey" + id = "whiskey" description = "A superb and well-aged single-malt whiskey. Damn." color = "#664300" // rgb: 102, 67, 0 boozepwr = 75 @@ -156,6 +160,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/thirteenloko name = "Thirteen Loko" + id = "thirteenloko" description = "A potent mixture of caffeine and alcohol." color = "#102000" // rgb: 16, 32, 0 nutriment_factor = 1 * REAGENTS_METABOLISM @@ -220,6 +225,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/vodka name = "Vodka" + id = "vodka" description = "Number one drink AND fueling choice for Russians worldwide." color = "#0064C8" // rgb: 0, 100, 200 boozepwr = 65 @@ -237,6 +243,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bilk name = "Bilk" + id = "bilk" description = "This appears to be beer mixed with milk. Disgusting." color = "#895C4C" // rgb: 137, 92, 76 nutriment_factor = 2 * REAGENTS_METABOLISM @@ -255,6 +262,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/threemileisland name = "Three Mile Island Iced Tea" + id = "threemileisland" description = "Made for a woman, strong enough for a man." color = "#666340" // rgb: 102, 99, 64 boozepwr = 10 @@ -272,6 +280,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/gin name = "Gin" + id = "gin" description = "It's gin. In space. I say, good sir." color = "#664300" // rgb: 102, 67, 0 boozepwr = 45 @@ -284,6 +293,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/rum name = "Rum" + id = "rum" description = "Yohoho and all that." color = "#664300" // rgb: 102, 67, 0 boozepwr = 60 @@ -297,6 +307,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/tequila name = "Tequila" + id = "tequila" description = "A strong and mildly flavoured, Mexican produced spirit. Feeling thirsty, hombre?" color = "#FFFF91" // rgb: 255, 255, 145 boozepwr = 70 @@ -310,6 +321,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/vermouth name = "Vermouth" + id = "vermouth" description = "You suddenly feel a craving for a martini..." color = "#91FF91" // rgb: 145, 255, 145 boozepwr = 45 @@ -323,6 +335,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/wine name = "Wine" + id = "wine" description = "A premium alcoholic beverage made from distilled grape juice." color = "#7E4043" // rgb: 126, 64, 67 boozepwr = 35 @@ -336,6 +349,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/lizardwine name = "Lizard wine" + id = "lizardwine" description = "An alcoholic beverage from Space China, made by infusing lizard tails in ethanol." color = "#7E4043" // rgb: 126, 64, 67 boozepwr = 45 @@ -346,6 +360,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/grappa name = "Grappa" + id = "grappa" description = "A fine Italian brandy, for when regular wine just isn't alcoholic enough for you." color = "#F8EBF1" boozepwr = 60 @@ -358,6 +373,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/cognac name = "Cognac" + id = "cognac" description = "A sweet and strongly alcoholic drink, made after numerous distillations and years of maturing. Classy as fornication." color = "#AB3C05" // rgb: 171, 60, 5 boozepwr = 75 @@ -371,6 +387,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/absinthe name = "Absinthe" + id = "absinthe" description = "A powerful alcoholic drink. Rumored to cause hallucinations but does not." color = rgb(10, 206, 0) boozepwr = 80 //Very strong even by default @@ -388,6 +405,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/hooch name = "Hooch" + id = "hooch" description = "Either someone's failure at cocktail making or attempt in alcohol production. In any case, do you really want to drink that?" color = "#664300" // rgb: 102, 67, 0 boozepwr = 100 @@ -404,6 +422,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/ale name = "Ale" + id = "ale" description = "A dark alcoholic beverage made with malted barley and yeast." color = "#664300" // rgb: 102, 67, 0 boozepwr = 65 @@ -416,6 +435,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/goldschlager name = "Goldschlager" + id = "goldschlager" description = "100 proof cinnamon schnapps, made for alcoholic teen girls on spring break." color = "#FFFF91" // rgb: 255, 255, 145 boozepwr = 25 @@ -429,6 +449,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/patron name = "Patron" + id = "patron" description = "Tequila with silver in it, a favorite of alcoholic women in the club scene." color = "#585840" // rgb: 88, 88, 64 boozepwr = 60 @@ -443,6 +464,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/gintonic name = "Gin and Tonic" + id = "gintonic" description = "An all time classic, mild cocktail." color = "#664300" // rgb: 102, 67, 0 boozepwr = 25 @@ -456,6 +478,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/rum_coke name = "Rum and Coke" + id = "rumcoke" description = "Rum, mixed with cola." taste_description = "cola" boozepwr = 40 @@ -469,6 +492,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/cuba_libre name = "Cuba Libre" + id = "cubalibre" description = "Viva la Revolucion! Viva Cuba Libre!" color = "#3E1B00" // rgb: 62, 27, 0 boozepwr = 50 @@ -491,6 +515,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/whiskey_cola name = "Whiskey Cola" + id = "whiskeycola" description = "Whiskey, mixed with cola. Surprisingly refreshing." color = "#3E1B00" // rgb: 62, 27, 0 boozepwr = 70 @@ -503,6 +528,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/martini name = "Classic Martini" + id = "martini" description = "Vermouth with Gin. Not quite how 007 enjoyed it, but still delicious." color = "#664300" // rgb: 102, 67, 0 boozepwr = 60 @@ -515,6 +541,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/vodkamartini name = "Vodka Martini" + id = "vodkamartini" description = "Vodka with Gin. Not quite how 007 enjoyed it, but still delicious." color = "#664300" // rgb: 102, 67, 0 boozepwr = 65 @@ -528,6 +555,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/white_russian name = "White Russian" + id = "whiterussian" description = "That's just, like, your opinion, man..." color = "#A68340" // rgb: 166, 131, 64 boozepwr = 50 @@ -540,6 +568,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/screwdrivercocktail name = "Screwdriver" + id = "screwdrivercocktail" description = "Vodka, mixed with plain ol' orange juice. The result is surprisingly delicious." color = "#A68310" // rgb: 166, 131, 16 boozepwr = 55 @@ -557,6 +586,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/booger name = "Booger" + id = "booger" description = "Ewww..." color = "#8CFF8C" // rgb: 140, 255, 140 boozepwr = 45 @@ -568,6 +598,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bloody_mary name = "Bloody Mary" + id = "bloodymary" description = "A strange yet pleasurable mixture made of vodka, tomato and lime juice. Or at least you THINK the red stuff is tomato juice." color = "#664300" // rgb: 102, 67, 0 boozepwr = 55 @@ -587,6 +618,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/brave_bull name = "Brave Bull" + id = "bravebull" description = "It's just as effective as Dutch-Courage!" color = "#664300" // rgb: 102, 67, 0 boozepwr = 80 @@ -611,6 +643,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/tequila_sunrise name = "Tequila Sunrise" + id = "tequilasunrise" description = "Tequila, Grenadine, and Orange Juice." color = "#FFE48C" // rgb: 255, 228, 140 boozepwr = 45 @@ -629,7 +662,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/tequila_sunrise/on_mob_life(mob/living/carbon/M) if(QDELETED(light_holder)) - M.reagents.del_reagent(type) //If we lost our light object somehow, remove the reagent + M.reagents.del_reagent("tequilasunrise") //If we lost our light object somehow, remove the reagent else if(light_holder.loc != M) light_holder.forceMove(M) return ..() @@ -640,6 +673,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/toxins_special name = "Toxins Special" + id = "toxinsspecial" description = "This thing is ON FIRE! CALL THE DAMN SHUTTLE!" color = "#664300" // rgb: 102, 67, 0 boozepwr = 25 @@ -657,6 +691,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/beepsky_smash name = "Beepsky Smash" + id = "beepskysmash" description = "Drink this and prepare for the LAW." color = "#664300" // rgb: 102, 67, 0 boozepwr = 90 //THE FIST OF THE LAW IS STRONG AND HARD @@ -701,6 +736,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/irish_cream name = "Irish Cream" + id = "irishcream" description = "Whiskey-imbued cream, what else would you expect from the Irish?" color = "#664300" // rgb: 102, 67, 0 boozepwr = 50 @@ -713,6 +749,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/manly_dorf name = "The Manly Dorf" + id = "manlydorf" description = "Beer and Ale, brought together in a delicious mix. Intended for true men only." color = "#664300" // rgb: 102, 67, 0 boozepwr = 100 //For the manly only @@ -740,6 +777,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/longislandicedtea name = "Long Island Iced Tea" + id = "longislandicedtea" description = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only." color = "#664300" // rgb: 102, 67, 0 boozepwr = 35 @@ -752,6 +790,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/moonshine name = "Moonshine" + id = "moonshine" description = "You've really hit rock bottom now... your liver packed its bags and left last night." color = "#664300" // rgb: 102, 67, 0 boozepwr = 95 @@ -763,6 +802,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/b52 name = "B-52" + id = "b52" description = "Coffee, Irish Cream, and cognac. You will get bombed." color = "#664300" // rgb: 102, 67, 0 boozepwr = 85 @@ -779,6 +819,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/irishcoffee name = "Irish Coffee" + id = "irishcoffee" description = "Coffee, and alcohol. More fun than a Mimosa to drink in the morning." color = "#664300" // rgb: 102, 67, 0 boozepwr = 35 @@ -791,6 +832,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/margarita name = "Margarita" + id = "margarita" description = "On the rocks with salt on the rim. Arriba~!" color = "#8CFF8C" // rgb: 140, 255, 140 boozepwr = 35 @@ -803,6 +845,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/black_russian name = "Black Russian" + id = "blackrussian" description = "For the lactose-intolerant. Still as classy as a White Russian." color = "#360000" // rgb: 54, 0, 0 boozepwr = 70 @@ -816,6 +859,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/manhattan name = "Manhattan" + id = "manhattan" description = "The Detective's undercover drink of choice. He never could stomach gin..." color = "#664300" // rgb: 102, 67, 0 boozepwr = 30 @@ -829,6 +873,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/manhattan_proj name = "Manhattan Project" + id = "manhattan_proj" description = "A scientist's drink of choice, for pondering ways to blow up the station." color = "#664300" // rgb: 102, 67, 0 boozepwr = 45 @@ -846,6 +891,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/whiskeysoda name = "Whiskey Soda" + id = "whiskeysoda" description = "For the more refined griffon." color = "#664300" // rgb: 102, 67, 0 boozepwr = 70 @@ -858,6 +904,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/antifreeze name = "Anti-freeze" + id = "antifreeze" description = "The ultimate refreshment. Not what it sounds like." color = "#664300" // rgb: 102, 67, 0 boozepwr = 35 @@ -874,6 +921,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/barefoot name = "Barefoot" + id = "barefoot" description = "Barefoot and pregnant." color = "#664300" // rgb: 102, 67, 0 boozepwr = 45 @@ -894,6 +942,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/snowwhite name = "Snow White" + id = "snowwhite" description = "A cold refreshment." color = "#FFFFFF" // rgb: 255, 255, 255 boozepwr = 35 @@ -906,6 +955,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/demonsblood //Prevents the imbiber from being dragged into a pool of blood by a slaughter demon. name = "Demon's Blood" + id = "demonsblood" description = "AHHHH!!!!" color = "#820000" // rgb: 130, 0, 0 boozepwr = 75 @@ -918,6 +968,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/devilskiss //If eaten by a slaughter demon, the demon will regret it. name = "Devil's Kiss" + id = "devilskiss" description = "Creepy time!" color = "#A68310" // rgb: 166, 131, 16 boozepwr = 70 @@ -930,6 +981,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/vodkatonic name = "Vodka and Tonic" + id = "vodkatonic" description = "For when a gin and tonic isn't Russian enough." color = "#0064C8" // rgb: 0, 100, 200 boozepwr = 70 @@ -942,6 +994,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/ginfizz name = "Gin Fizz" + id = "ginfizz" description = "Refreshingly lemony, deliciously dry." color = "#664300" // rgb: 102, 67, 0 boozepwr = 45 @@ -954,6 +1007,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bahama_mama name = "Bahama Mama" + id = "bahama_mama" description = "Tropical cocktail." color = "#FF7F3B" // rgb: 255, 127, 59 boozepwr = 35 @@ -966,6 +1020,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/singulo name = "Singulo" + id = "singulo" description = "A blue-space beverage!" color = "#2E6671" // rgb: 46, 102, 113 boozepwr = 35 @@ -978,6 +1033,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/sbiten name = "Sbiten" + id = "sbiten" description = "A spicy Vodka! Might be a little hot for the little guys!" color = "#664300" // rgb: 102, 67, 0 boozepwr = 70 @@ -994,6 +1050,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/red_mead name = "Red Mead" + id = "red_mead" description = "The true Viking drink! Even though it has a strange red color." color = "#C73C00" // rgb: 199, 60, 0 boozepwr = 31 //Red drinks are stronger @@ -1006,6 +1063,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/mead name = "Mead" + id = "mead" description = "A Viking drink, though a cheap one." color = "#664300" // rgb: 102, 67, 0 nutriment_factor = 1 * REAGENTS_METABOLISM @@ -1019,6 +1077,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/iced_beer name = "Iced Beer" + id = "iced_beer" description = "A beer which is so cold the air around it freezes." color = "#664300" // rgb: 102, 67, 0 boozepwr = 15 @@ -1034,6 +1093,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/grog name = "Grog" + id = "grog" description = "Watered down rum, Nanotrasen approves!" color = "#664300" // rgb: 102, 67, 0 boozepwr = 1 //Basically nothing @@ -1045,6 +1105,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/aloe name = "Aloe" + id = "aloe" description = "So very, very, very good." color = "#664300" // rgb: 102, 67, 0 boozepwr = 35 @@ -1057,6 +1118,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/andalusia name = "Andalusia" + id = "andalusia" description = "A nice, strangely named drink." color = "#664300" // rgb: 102, 67, 0 boozepwr = 40 @@ -1069,6 +1131,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/alliescocktail name = "Allies Cocktail" + id = "alliescocktail" description = "A drink made from your allies. Not as sweet as those made from your enemies." color = "#664300" // rgb: 102, 67, 0 boozepwr = 45 @@ -1081,6 +1144,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/acid_spit name = "Acid Spit" + id = "acidspit" description = "A drink for the daring, can be deadly if incorrectly prepared!" color = "#365000" // rgb: 54, 80, 0 boozepwr = 80 @@ -1093,6 +1157,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/amasec name = "Amasec" + id = "amasec" description = "Official drink of the Nanotrasen Gun-Club!" color = "#664300" // rgb: 102, 67, 0 boozepwr = 35 @@ -1105,6 +1170,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/changelingsting name = "Changeling Sting" + id = "changelingsting" description = "You take a tiny sip and feel a burning sensation..." color = "#2E6671" // rgb: 46, 102, 113 boozepwr = 95 @@ -1125,6 +1191,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/irishcarbomb name = "Irish Car Bomb" + id = "irishcarbomb" description = "Mmm, tastes like chocolate cake..." color = "#2E6671" // rgb: 46, 102, 113 boozepwr = 25 @@ -1137,6 +1204,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/syndicatebomb name = "Syndicate Bomb" + id = "syndicatebomb" description = "Tastes like terrorism!" color = "#2E6671" // rgb: 46, 102, 113 boozepwr = 90 @@ -1154,6 +1222,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/erikasurprise name = "Erika Surprise" + id = "erikasurprise" description = "The surprise is, it's green!" color = "#2E6671" // rgb: 46, 102, 113 boozepwr = 35 @@ -1166,6 +1235,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/driestmartini name = "Driest Martini" + id = "driestmartini" description = "Only for the experienced. You think you see sand floating in the glass." nutriment_factor = 1 * REAGENTS_METABOLISM color = "#2E6671" // rgb: 46, 102, 113 @@ -1179,6 +1249,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bananahonk name = "Banana Honk" + id = "bananahonk" description = "A drink from Clown Heaven." nutriment_factor = 1 * REAGENTS_METABOLISM color = "#FFFF91" // rgb: 255, 255, 140 @@ -1198,6 +1269,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/silencer name = "Silencer" + id = "silencer" description = "A drink from Mime Heaven." nutriment_factor = 1 * REAGENTS_METABOLISM color = "#664300" // rgb: 102, 67, 0 @@ -1217,6 +1289,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/drunkenblumpkin name = "Drunken Blumpkin" + id = "drunkenblumpkin" description = "A weird mix of whiskey and blumpkin juice." color = "#1EA0FF" // rgb: 102, 67, 0 boozepwr = 50 @@ -1229,6 +1302,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/whiskey_sour //Requested since we had whiskey cola and soda but not sour. name = "Whiskey Sour" + id = "whiskey_sour" description = "Lemon juice/whiskey/sugar mixture. Moderate alcohol content." color = rgb(255, 201, 49) boozepwr = 35 @@ -1241,6 +1315,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/hcider name = "Hard Cider" + id = "hcider" description = "Apple juice, for adults." color = "#CD6839" nutriment_factor = 1 * REAGENTS_METABOLISM @@ -1254,6 +1329,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/fetching_fizz //A reference to one of my favorite games of all time. Pulls nearby ores to the imbiber! name = "Fetching Fizz" + id = "fetching_fizz" description = "Whiskey sour/iron/uranium mixture resulting in a highly magnetic slurry. Mild alcohol content." //Requires no alcohol to make but has alcohol anyway because ~magic~ color = rgb(255, 91, 15) boozepwr = 10 @@ -1273,6 +1349,7 @@ All effects don't start immediately, but rather get worse over time; the rate is //Another reference. Heals those in critical condition extremely quickly. /datum/reagent/consumable/ethanol/hearty_punch name = "Hearty Punch" + id = "hearty_punch" description = "Brave bull/syndicate bomb/absinthe mixture resulting in an energizing beverage. Mild alcohol content." color = rgb(140, 0, 0) boozepwr = 90 @@ -1296,6 +1373,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bacchus_blessing //An EXTREMELY powerful drink. Smashed in seconds, dead in minutes. name = "Bacchus' Blessing" + id = "bacchus_blessing" description = "Unidentifiable mixture. Unmeasurably high alcohol content." color = rgb(51, 19, 3) //Sickly brown boozepwr = 300 //I warned you @@ -1308,6 +1386,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/atomicbomb name = "Atomic Bomb" + id = "atomicbomb" description = "Nuclear proliferation never tasted so good." color = "#666300" // rgb: 102, 99, 0 boozepwr = 0 //custom drunk effect @@ -1337,6 +1416,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/gargle_blaster name = "Pan-Galactic Gargle Blaster" + id = "gargleblaster" description = "Whoah, this stuff looks volatile!" color = "#664300" // rgb: 102, 67, 0 boozepwr = 0 //custom drunk effect @@ -1365,6 +1445,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/neurotoxin name = "Neurotoxin" + id = "neurotoxin" description = "A strong neurotoxin that puts the subject into a death-like state." color = "#2E2E61" // rgb: 46, 46, 97 boozepwr = 50 @@ -1375,9 +1456,9 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Neurotoxin" glass_desc = "A drink that is guaranteed to knock you silly." //SplitChem = TRUE - impure_chem = /datum/reagent/consumable/ethanol/neuroweak + impure_chem = "neuroweak" inverse_chem_val = 0.5 //Clear conversion - inverse_chem = /datum/reagent/consumable/ethanol/neuroweak + inverse_chem = "neuroweak" value = 4 /datum/reagent/consumable/ethanol/neurotoxin/proc/pickt() @@ -1387,12 +1468,12 @@ All effects don't start immediately, but rather get worse over time; the rate is M.set_drugginess(50) M.dizziness +=2 M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1*REM, 150) - if(prob(20) && !holder.has_reagent(/datum/reagent/consumable/ethanol/neuroweak)) + if(prob(20) && !holder.has_reagent("neuroweak")) M.adjustStaminaLoss(10) M.drop_all_held_items() to_chat(M, "You cant feel your hands!") if(current_cycle > 5) - if(prob(20) && !holder.has_reagent(/datum/reagent/consumable/ethanol/neuroweak)) + if(prob(20) && !holder.has_reagent("neuroweak")) var/t = pickt() ADD_TRAIT(M, t, type) M.adjustStaminaLoss(10) @@ -1416,18 +1497,19 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/neuroweak name = "Neuro-Smash" + id = "neuroweak" description = "A mostly safe alcoholic drink for the true daredevils. Counteracts Neurotoxins." boozepwr = 60 pH = 8 value = 3 /datum/reagent/consumable/ethanol/neuroweak/on_mob_life(mob/living/carbon/M) - if(holder.has_reagent(/datum/reagent/consumable/ethanol/neurotoxin)) + if(holder.has_reagent("neurotoxin")) M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1*REM, 150) - M.reagents.remove_reagent(/datum/reagent/consumable/ethanol/neurotoxin, 1.5 * REAGENTS_METABOLISM, FALSE) - else if(holder.has_reagent(/datum/reagent/toxin/fentanyl)) + M.reagents.remove_reagent("neurotoxin", 1.5 * REAGENTS_METABOLISM, FALSE) + if(holder.has_reagent("fentanyl")) M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1*REM, 150) - M.reagents.remove_reagent(/datum/reagent/toxin/fentanyl, 0.75 * REAGENTS_METABOLISM, FALSE) + M.reagents.remove_reagent("fentanyl", 0.75 * REAGENTS_METABOLISM, FALSE) else M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -0.5*REM, 150) M.dizziness +=2 @@ -1435,6 +1517,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/hippies_delight name = "Hippie's Delight" + id = "hippiesdelight" description = "You just don't get it maaaan." color = "#664300" // rgb: 102, 67, 0 nutriment_factor = 0 @@ -1480,6 +1563,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/eggnog name = "Eggnog" + id = "eggnog" description = "The traditional way to get absolutely hammered at a Christmas party." color = "#fcfdc6" // rgb: 252, 253, 198 nutriment_factor = 2 * REAGENTS_METABOLISM @@ -1494,6 +1578,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/narsour name = "Nar'Sour" + id = "narsour" description = "Side effects include self-mutilation and hoarding plasteel." color = RUNE_COLOR_DARKRED boozepwr = 10 @@ -1511,6 +1596,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/triple_sec name = "Triple Sec" + id = "triple_sec" description = "A sweet and vibrant orange liqueur." color = "#ffcc66" boozepwr = 30 @@ -1522,6 +1608,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/creme_de_menthe name = "Creme de Menthe" + id = "creme_de_menthe" description = "A minty liqueur excellent for refreshing, cool drinks." color = "#00cc00" boozepwr = 20 @@ -1533,6 +1620,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/creme_de_cacao name = "Creme de Cacao" + id = "creme_de_cacao" description = "A chocolatey liqueur excellent for adding dessert notes to beverages and bribing sororities." color = "#996633" boozepwr = 20 @@ -1544,6 +1632,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/quadruple_sec name = "Quadruple Sec" + id = "quadruple_sec" description = "Kicks just as hard as licking the powercell on a baton, but tastier." color = "#cc0000" boozepwr = 35 @@ -1563,6 +1652,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/quintuple_sec name = "Quintuple Sec" + id = "quintuple_sec" description = "Law, Order, Alcohol, and Police Brutality distilled into one single elixir of JUSTICE." color = "#ff3300" boozepwr = 80 @@ -1585,6 +1675,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/grasshopper name = "Grasshopper" + id = "grasshopper" description = "A fresh and sweet dessert shooter. Difficult to look manly while drinking this." color = "00ff00" boozepwr = 25 @@ -1597,6 +1688,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/stinger name = "Stinger" + id = "stinger" description = "A snappy way to end the day." color = "ccff99" boozepwr = 25 @@ -1609,6 +1701,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bastion_bourbon name = "Bastion Bourbon" + id = "bastion_bourbon" description = "Soothing hot herbal brew with restorative properties. Hints of citrus and berry flavors." color = "#00FFFF" boozepwr = 30 @@ -1648,6 +1741,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/squirt_cider name = "Squirt Cider" + id = "squirt_cider" description = "Fermented squirt extract with a nose of stale bread and ocean water. Whatever a squirt is." color = "#FF0000" boozepwr = 40 @@ -1666,6 +1760,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/fringe_weaver name = "Fringe Weaver" + id = "fringe_weaver" description = "Bubbly, classy, and undoubtedly strong - a Glitch City classic." color = "#FFEAC4" boozepwr = 90 //classy hooch, essentially, but lower pwr to make up for slightly easier access @@ -1678,6 +1773,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/sugar_rush name = "Sugar Rush" + id = "sugar_rush" description = "Sweet, light, and fruity - as girly as it gets." color = "#FF226C" boozepwr = 10 @@ -1696,6 +1792,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/crevice_spike name = "Crevice Spike" + id = "crevice_spike" description = "Sour, bitter, and smashingly sobering." color = "#5BD231" boozepwr = -10 //sobers you up - ideally, one would drink to get hit with brute damage now to avoid alcohol problems later @@ -1711,6 +1808,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/sake name = "Sake" + id = "sake" description = "A sweet rice wine of questionable legality and extreme potency." color = "#DDDDDD" boozepwr = 70 @@ -1722,6 +1820,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/peppermint_patty name = "Peppermint Patty" + id = "peppermint_patty" description = "This lightly alcoholic drink combines the benefits of menthol and cocoa." color = "#45ca7a" taste_description = "mint and chocolate" @@ -1739,6 +1838,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/alexander name = "Alexander" + id = "alexander" description = "Named after a Greek hero, this mix is said to embolden a user's shield as if they were in a phalanx." color = "#F5E9D3" boozepwr = 80 @@ -1762,7 +1862,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/alexander/on_mob_life(mob/living/L) ..() if(mighty_shield && !(mighty_shield in L.contents)) //If you had a shield and lose it, you lose the reagent as well. Otherwise this is just a normal drink. - L.reagents.del_reagent(type) + L.reagents.del_reagent("alexander") /datum/reagent/consumable/ethanol/alexander/on_mob_end_metabolize(mob/living/L) if(mighty_shield) @@ -1772,6 +1872,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/sidecar name = "Sidecar" + id = "sidecar" description = "The one ride you'll gladly give up the wheel for." color = "#FFC55B" boozepwr = 80 @@ -1784,6 +1885,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/between_the_sheets name = "Between the Sheets" + id = "between_the_sheets" description = "A provocatively named classic. Funny enough, doctors recommend drinking it before taking a nap." color = "#F4C35A" boozepwr = 80 @@ -1809,6 +1911,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/kamikaze name = "Kamikaze" + id = "kamikaze" description = "Divinely windy." color = "#EEF191" boozepwr = 60 @@ -1821,6 +1924,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/mojito name = "Mojito" + id = "mojito" description = "A drink that looks as refreshing as it tastes." color = "#DFFAD9" boozepwr = 30 @@ -1833,6 +1937,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/fernet name = "Fernet" + id = "fernet" description = "An incredibly bitter herbal liqueur used as a digestif." color = "#1B2E24" // rgb: 27, 46, 36 boozepwr = 80 @@ -1850,6 +1955,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/fernet_cola name = "Fernet Cola" + id = "fernet_cola" description = "A very popular and bittersweet digestif, ideal after a heavy meal. Best served on a sawed-off cola bottle as per tradition." color = "#390600" // rgb: 57, 6, 0 boozepwr = 25 @@ -1870,6 +1976,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/fanciulli name = "Fanciulli" + id = "fanciulli" description = "What if the Manhattan coctail ACTUALLY used a bitter herb liquour? Helps you sobers up." //also causes a bit of stamina damage to symbolize the afterdrink lazyness color = "#CA933F" // rgb: 202, 147, 63 boozepwr = -10 @@ -1894,6 +2001,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/branca_menta name = "Branca Menta" + id = "branca_menta" description = "A refreshing mixture of bitter Fernet with mint creme liquour." color = "#4B5746" // rgb: 75, 87, 70 boozepwr = 35 @@ -1916,6 +2024,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/blank_paper name = "Blank Paper" + id = "blank_paper" description = "A bubbling glass of blank paper. Just looking at it makes you feel fresh." nutriment_factor = 1 * REAGENTS_METABOLISM color = "#DCDCDC" // rgb: 220, 220, 220 @@ -1935,6 +2044,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/champagne //How the hell did we not have champagne already!? name = "Champagne" + id = "champagne" description = "A sparkling wine known for its ability to strike fast and hard." color = "#ffffc1" boozepwr = 40 @@ -1946,6 +2056,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/wizz_fizz name = "Wizz Fizz" + id = "wizz_fizz" description = "A magical potion, fizzy and wild! However the taste, you will find, is quite mild." color = "#4235d0" //Just pretend that the triple-sec was blue curacao. boozepwr = 50 @@ -1966,6 +2077,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bug_spray name = "Bug Spray" + id = "bug_spray" description = "A harsh, acrid, bitter drink, for those who need something to brace themselves." color = "#33ff33" boozepwr = 50 @@ -1989,6 +2101,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/applejack name = "Applejack" + id = "applejack" description = "The perfect beverage for when you feel the need to horse around." color = "#ff6633" boozepwr = 20 @@ -2000,6 +2113,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/jack_rose name = "Jack Rose" + id = "jack_rose" description = "A light cocktail perfect for sipping with a slice of pie." color = "#ff6633" boozepwr = 15 @@ -2012,6 +2126,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/turbo name = "Turbo" + id = "turbo" description = "A turbulent cocktail associated with outlaw hoverbike racing. Not for the faint of heart." color = "#e94c3a" boozepwr = 85 @@ -2030,6 +2145,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/old_timer name = "Old Timer" + id = "old_timer" description = "An archaic potation enjoyed by old coots of all ages." color = "#996835" boozepwr = 35 @@ -2050,7 +2166,7 @@ All effects don't start immediately, but rather get worse over time; the rate is N.hair_color = "ccc" N.update_hair() if(N.age > 100) - N.become_nearsighted(type) + N.become_nearsighted(id) if(N.gender == MALE) N.facial_hair_style = "Beard (Very Long)" N.update_hair() @@ -2063,6 +2179,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/rubberneck name = "Rubberneck" + id = "rubberneck" description = "A quality rubberneck should not contain any gross natural ingredients." color = "#ffe65b" boozepwr = 60 @@ -2075,6 +2192,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/duplex name = "Duplex" + id = "duplex" description = "An inseparable combination of two fruity drinks." color = "#50e5cf" boozepwr = 25 @@ -2087,6 +2205,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/trappist name = "Trappist Beer" + id = "trappist" description = "A strong dark ale brewed by space-monks." color = "#390c00" boozepwr = 40 @@ -2106,6 +2225,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/blazaam name = "Blazaam" + id = "blazaam" description = "A strange drink that few people seem to remember existing. Doubles as a Berenstain remover." boozepwr = 70 quality = DRINK_FANTASTIC @@ -2129,6 +2249,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/planet_cracker name = "Planet Cracker" + id = "planet_cracker" description = "This jubilant drink celebrates humanity's triumph over the alien menace. May be offensive to non-human crewmembers." boozepwr = 50 quality = DRINK_FANTASTIC @@ -2140,6 +2261,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/commander_and_chief name = "Commander and Chief" + id = "commander_and_chief" description = "A cocktail for the captain on the go." color = "#ffffc9" boozepwr = 50 @@ -2163,6 +2285,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/fruit_wine name = "Fruit Wine" + id = "fruit_wine" description = "A wine made from grown plants." color = "#FFFFFF" boozepwr = 35 diff --git a/code/modules/reagents/chemistry/reagents/blob_reagents.dm b/code/modules/reagents/chemistry/reagents/blob_reagents.dm index fba0b47eb4..ada4cd8d8e 100644 --- a/code/modules/reagents/chemistry/reagents/blob_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/blob_reagents.dm @@ -47,6 +47,7 @@ //does brute damage but can replicate when damaged and has a chance of expanding again /datum/reagent/blob/replicating_foam name = "Replicating Foam" + id = "replicating_foam" description = "will do medium brute damage and occasionally expand again when expanding." shortdesc = "will do medium brute damage." effectdesc = "will also expand when attacked with burn damage, but takes more brute damage." @@ -77,6 +78,7 @@ //does massive brute and burn damage, but can only expand manually /datum/reagent/blob/networked_fibers name = "Networked Fibers" + id = "networked_fibers" description = "will do high brute and burn damage and will generate resources quicker, but can only expand manually." shortdesc = "will do high brute and burn damage." taste_description = "efficiency" @@ -110,6 +112,7 @@ //does brute damage, shifts away when damaged /datum/reagent/blob/shifting_fragments name = "Shifting Fragments" + id = "shifting_fragments" description = "will do medium brute damage." effectdesc = "will also cause blob parts to shift away when attacked." taste_description = "something other-dimensional" @@ -131,7 +134,7 @@ if((damage_flag == "melee" || damage_flag == "bullet" || damage_flag == "laser") && damage > 0 && B.obj_integrity - damage > 0 && prob(60-damage)) var/list/blobstopick = list() for(var/obj/structure/blob/OB in orange(1, B)) - if((istype(OB, /obj/structure/blob/normal) || (istype(OB, /obj/structure/blob/shield) && prob(25))) && OB.overmind && OB.overmind.blob_reagent_datum.type == B.overmind.blob_reagent_datum.type) + if((istype(OB, /obj/structure/blob/normal) || (istype(OB, /obj/structure/blob/shield) && prob(25))) && OB.overmind && OB.overmind.blob_reagent_datum.id == B.overmind.blob_reagent_datum.id) blobstopick += OB //as long as the blob picked is valid; ie, a normal or shield blob that has the same chemical as we do, we can swap with it if(blobstopick.len) var/obj/structure/blob/targeted = pick(blobstopick) //randomize the blob chosen, because otherwise it'd tend to the lower left @@ -143,6 +146,7 @@ //sets you on fire, does burn damage, explodes into flame when burnt, weak to water /datum/reagent/blob/blazing_oil name = "Blazing Oil" + id = "blazing_oil" description = "will do medium burn damage and set targets on fire." effectdesc = "will also release bursts of flame when burnt, but takes damage from water." taste_description = "burning oil" @@ -170,7 +174,7 @@ if(damage_type == BURN && damage_flag != "energy") for(var/turf/open/T in range(1, B)) var/obj/structure/blob/C = locate() in T - if(!(C && C.overmind && C.overmind.blob_reagent_datum.type == B.overmind.blob_reagent_datum.type) && prob(80)) + if(!(C && C.overmind && C.overmind.blob_reagent_datum.id == B.overmind.blob_reagent_datum.id) && prob(80)) new /obj/effect/hotspot(T) if(damage_flag == "fire") return 0 @@ -179,6 +183,7 @@ //does toxin damage, hallucination, targets think they're not hurt at all /datum/reagent/blob/regenerative_materia name = "Regenerative Materia" + id = "regenerative_materia" description = "will do toxin damage and cause targets to believe they are fully healed." analyzerdescdamage = "Does toxin damage and injects a toxin that causes the target to believe they are fully healed." taste_description = "heaven" @@ -190,8 +195,8 @@ reac_volume = ..() M.adjust_drugginess(reac_volume) if(M.reagents) - M.reagents.add_reagent(/datum/reagent/blob/regenerative_materia, 0.2*reac_volume) - M.reagents.add_reagent(/datum/reagent/toxin/spore, 0.2*reac_volume) + M.reagents.add_reagent("regenerative_materia", 0.2*reac_volume) + M.reagents.add_reagent("spore", 0.2*reac_volume) M.apply_damage(0.7*reac_volume, TOX) /datum/reagent/blob/regenerative_materia/on_mob_life(mob/living/carbon/C) @@ -208,6 +213,7 @@ //kills sleeping targets and turns them into blob zombies, produces fragile spores when killed or on expanding /datum/reagent/blob/zombifying_pods name = "Zombifying Pods" + id = "zombifying_pods" description = "will do very low toxin damage and harvest sleeping targets for additional resources and a blob zombie." effectdesc = "will also produce fragile spores when killed and on expanding." taste_description = "fungi" @@ -251,6 +257,7 @@ //does tons of oxygen damage and a little stamina, immune to tesla bolts, weak to EMP /datum/reagent/blob/energized_jelly name = "Energized Jelly" + id = "energized_jelly" description = "will cause low stamina and high oxygen damage, and cause targets to be unable to breathe." taste_description = "gelatin" effectdesc = "will also conduct electricity, but takes damage from EMPs." @@ -282,6 +289,7 @@ //does aoe brute damage when hitting targets, is immune to explosions /datum/reagent/blob/explosive_lattice name = "Explosive Lattice" + id = "explosive_lattice" description = "will do brute damage in an area around targets." taste_description = "the bomb" effectdesc = "will also resist explosions, but takes increased damage from fire and other energy sources." @@ -318,6 +326,7 @@ //does brute, burn, and toxin damage, and cools targets down /datum/reagent/blob/cryogenic_poison name = "Cryogenic Poison" + id = "cryogenic_poison" description = "will inject targets with a freezing poison that does high damage over time." analyzerdescdamage = "Injects targets with a freezing poison that will gradually solidify the target's internal organs." color = "#8BA6E9" @@ -330,9 +339,9 @@ /datum/reagent/blob/cryogenic_poison/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() if(M.reagents) - M.reagents.add_reagent(/datum/reagent/consumable/frostoil, 0.3*reac_volume) - M.reagents.add_reagent(/datum/reagent/consumable/ice, 0.3*reac_volume) - M.reagents.add_reagent(/datum/reagent/blob/cryogenic_poison, 0.3*reac_volume) + M.reagents.add_reagent("frostoil", 0.3*reac_volume) + M.reagents.add_reagent("ice", 0.3*reac_volume) + M.reagents.add_reagent("cryogenic_poison", 0.3*reac_volume) M.apply_damage(0.2*reac_volume, BRUTE) /datum/reagent/blob/cryogenic_poison/on_mob_life(mob/living/carbon/M) @@ -345,6 +354,7 @@ //does burn damage and EMPs, slightly fragile /datum/reagent/blob/electromagnetic_web name = "Electromagnetic Web" + id = "electromagnetic_web" description = "will do high burn damage and EMP targets." taste_description = "pop rocks" effectdesc = "will also take massively increased damage and release an EMP when killed." @@ -381,6 +391,7 @@ //does brute damage, bonus damage for each nearby blob, and spreads damage out /datum/reagent/blob/synchronous_mesh name = "Synchronous Mesh" + id = "synchronous_mesh" description = "will do massively increased brute damage for each blob near the target." effectdesc = "will also spread damage between each blob near the attacked blob." taste_description = "toxic mold" @@ -404,10 +415,10 @@ if(damage_flag == "melee" || damage_flag == "bullet" || damage_flag == "laser") //the cause isn't fire or bombs, so split the damage var/damagesplit = 1 //maximum split is 9, reducing the damage each blob takes to 11% but doing that damage to 9 blobs for(var/obj/structure/blob/C in orange(1, B)) - if(!istype(C, /obj/structure/blob/core) && !istype(C, /obj/structure/blob/node) && C.overmind && C.overmind.blob_reagent_datum.type == B.overmind.blob_reagent_datum.type) //if it doesn't have the same chemical or is a core or node, don't split damage to it + if(!istype(C, /obj/structure/blob/core) && !istype(C, /obj/structure/blob/node) && C.overmind && C.overmind.blob_reagent_datum.id == B.overmind.blob_reagent_datum.id) //if it doesn't have the same chemical or is a core or node, don't split damage to it damagesplit += 1 for(var/obj/structure/blob/C in orange(1, B)) - if(!istype(C, /obj/structure/blob/core) && !istype(C, /obj/structure/blob/node) && C.overmind && C.overmind.blob_reagent_datum.type == B.overmind.blob_reagent_datum.type) //only hurt blobs that have the same overmind chemical and aren't cores or nodes + if(!istype(C, /obj/structure/blob/core) && !istype(C, /obj/structure/blob/node) && C.overmind && C.overmind.blob_reagent_datum.id == B.overmind.blob_reagent_datum.id) //only hurt blobs that have the same overmind chemical and aren't cores or nodes C.take_damage(damage/damagesplit, CLONE, 0, 0) return damage / damagesplit else @@ -416,6 +427,7 @@ //does brute damage through armor and bio resistance /datum/reagent/blob/reactive_spines name = "Reactive Spines" + id = "reactive_spines" description = "will do medium brute damage through armor and bio resistance." taste_description = "rock" effectdesc = "will also react when attacked with brute damage, attacking all near the attacked blob." @@ -442,6 +454,7 @@ //does low brute damage, oxygen damage, and stamina damage and wets tiles when damaged /datum/reagent/blob/pressurized_slime name = "Pressurized Slime" + id = "pressurized_slime" description = "will do low brute, oxygen, and stamina damage, and wet tiles under targets." effectdesc = "will also wet tiles near blobs that are attacked or killed." taste_description = "a sponge" diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index 6460bfed78..5d31bfae9b 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -6,6 +6,7 @@ /datum/reagent/consumable/orangejuice name = "Orange Juice" + id = "orangejuice" description = "Both delicious AND rich in Vitamin C, what more do you need?" color = "#E78108" // rgb: 231, 129, 8 taste_description = "oranges" @@ -22,6 +23,7 @@ /datum/reagent/consumable/tomatojuice name = "Tomato Juice" + id = "tomatojuice" description = "Tomatoes made into juice. What a waste of big, juicy tomatoes, huh?" color = "#731008" // rgb: 115, 16, 8 taste_description = "tomatoes" @@ -37,6 +39,7 @@ /datum/reagent/consumable/limejuice name = "Lime Juice" + id = "limejuice" description = "The sweet-sour juice of limes." color = "#365E30" // rgb: 54, 94, 48 taste_description = "unbearable sourness" @@ -53,6 +56,7 @@ /datum/reagent/consumable/carrotjuice name = "Carrot Juice" + id = "carrotjuice" description = "It is just like a carrot but without crunching." color = "#973800" // rgb: 151, 56, 0 taste_description = "carrots" @@ -74,6 +78,7 @@ /datum/reagent/consumable/berryjuice name = "Berry Juice" + id = "berryjuice" description = "A delicious blend of several different kinds of berries." color = "#863333" // rgb: 134, 51, 51 taste_description = "berries" @@ -83,6 +88,7 @@ /datum/reagent/consumable/applejuice name = "Apple Juice" + id = "applejuice" description = "The sweet juice of an apple, fit for all ages." color = "#ECFF56" // rgb: 236, 255, 86 taste_description = "apples" @@ -90,6 +96,7 @@ /datum/reagent/consumable/poisonberryjuice name = "Poison Berry Juice" + id = "poisonberryjuice" description = "A tasty juice blended from various kinds of very deadly and toxic berries." color = "#863353" // rgb: 134, 51, 83 taste_description = "berries" @@ -104,6 +111,7 @@ /datum/reagent/consumable/watermelonjuice name = "Watermelon Juice" + id = "watermelonjuice" description = "Delicious juice made from watermelon." color = "#863333" // rgb: 134, 51, 51 taste_description = "juicy watermelon" @@ -113,6 +121,7 @@ /datum/reagent/consumable/lemonjuice name = "Lemon Juice" + id = "lemonjuice" description = "This juice is VERY sour." color = "#863333" // rgb: 175, 175, 0 taste_description = "sourness" @@ -123,6 +132,7 @@ /datum/reagent/consumable/banana name = "Banana Juice" + id = "banana" description = "The raw essence of a banana. HONK" color = "#863333" // rgb: 175, 175, 0 taste_description = "banana" @@ -138,6 +148,7 @@ /datum/reagent/consumable/nothing name = "Nothing" + id = "nothing" description = "Absolutely nothing." taste_description = "nothing" glass_icon_state = "nothing" @@ -153,6 +164,7 @@ /datum/reagent/consumable/laughter name = "Laughter" + id = "laughter" description = "Some say that this is the best medicine, but recent studies have proven that to be untrue." metabolization_rate = INFINITY color = "#FF4DD2" @@ -165,6 +177,7 @@ /datum/reagent/consumable/superlaughter name = "Super Laughter" + id = "superlaughter" description = "Funny until you're the one laughing." metabolization_rate = 1.5 * REAGENTS_METABOLISM color = "#FF4DD2" @@ -179,6 +192,7 @@ /datum/reagent/consumable/potato_juice name = "Potato Juice" + id = "potato" description = "Juice of the potato. Bleh." nutriment_factor = 2 * REAGENTS_METABOLISM color = "#302000" // rgb: 48, 32, 0 @@ -189,12 +203,14 @@ /datum/reagent/consumable/grapejuice name = "Grape Juice" + id = "grapejuice" description = "The juice of a bunch of grapes. Guaranteed non-alcoholic." color = "#290029" // dark purple taste_description = "grape soda" /datum/reagent/consumable/milk name = "Milk" + id = "milk" description = "An opaque white liquid produced by the mammary glands of mammals." color = "#DFDFDF" // rgb: 223, 223, 223 taste_description = "milk" @@ -211,12 +227,13 @@ if(M.getBruteLoss() && prob(20)) M.heal_bodypart_damage(1,0, 0) . = 1 - if(holder.has_reagent(/datum/reagent/consumable/capsaicin)) - holder.remove_reagent(/datum/reagent/consumable/capsaicin, 2) + if(holder.has_reagent("capsaicin")) + holder.remove_reagent("capsaicin", 2) ..() /datum/reagent/consumable/soymilk name = "Soy Milk" + id = "soymilk" description = "An opaque white liquid made from soybeans." color = "#DFDFC7" // rgb: 223, 223, 199 taste_description = "soy milk" @@ -230,24 +247,9 @@ . = 1 ..() -/datum/reagent/consumable/coconutmilk - name = "Coconut Milk" - description = "A transparent white liquid extracted from coconuts. Rich in taste." - color = "#DFDFDF" // rgb: 223, 223, 223 - taste_description = "sweet milk" - quality = DRINK_GOOD - glass_icon_state = "glass_white" - glass_name = "glass of coconut milk" - glass_desc = "White and nutritious goodness!" - -/datum/reagent/consumable/coconutmilk/on_mob_life(mob/living/carbon/M) - if(M.getBruteLoss() && prob(20)) - M.heal_bodypart_damage(2,0, 0) - . = 1 - ..() - /datum/reagent/consumable/cream name = "Cream" + id = "cream" description = "The fatty, still liquid part of milk. Why don't you mix this with sum scotch, eh?" color = "#DFD7AF" // rgb: 223, 215, 175 taste_description = "creamy milk" @@ -263,6 +265,7 @@ /datum/reagent/consumable/coffee name = "Coffee" + id = "coffee" description = "Coffee is a brewed drink prepared from roasted seeds, commonly called coffee beans, of the coffee plant." color = "#482000" // rgb: 72, 32, 0 nutriment_factor = 0 @@ -282,13 +285,14 @@ M.AdjustSleeping(-40, FALSE) //310.15 is the normal bodytemp. M.adjust_bodytemperature(25 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL) - if(holder.has_reagent(/datum/reagent/consumable/frostoil)) - holder.remove_reagent(/datum/reagent/consumable/frostoil, 5) + if(holder.has_reagent("frostoil")) + holder.remove_reagent("frostoil", 5) ..() . = 1 /datum/reagent/consumable/tea name = "Tea" + id = "tea" description = "Tasty black tea, it has antioxidants, it's good for you!" color = "#101000" // rgb: 16, 16, 0 nutriment_factor = 0 @@ -310,6 +314,7 @@ /datum/reagent/consumable/lemonade name = "Lemonade" + id = "lemonade" description = "Sweet, tangy lemonade. Good for the soul." quality = DRINK_NICE taste_description = "sunshine and summertime" @@ -319,6 +324,7 @@ /datum/reagent/consumable/tea/arnold_palmer name = "Arnold Palmer" + id = "arnold_palmer" description = "Encourages the patient to go golfing." color = "#FFB766" quality = DRINK_NICE @@ -336,6 +342,7 @@ /datum/reagent/consumable/icecoffee name = "Iced Coffee" + id = "icecoffee" description = "Coffee and ice, refreshing and cool." color = "#102838" // rgb: 16, 40, 56 nutriment_factor = 0 @@ -355,6 +362,7 @@ /datum/reagent/consumable/icetea name = "Iced Tea" + id = "icetea" description = "No relation to a certain rap artist/actor." color = "#104038" // rgb: 16, 64, 56 nutriment_factor = 0 @@ -375,6 +383,7 @@ /datum/reagent/consumable/space_cola name = "Cola" + id = "cola" description = "A refreshing beverage." color = "#100800" // rgb: 16, 8, 0 taste_description = "cola" @@ -389,6 +398,7 @@ /datum/reagent/consumable/nuka_cola name = "Nuka Cola" + id = "nuka_cola" description = "Cola, cola never changes." color = "#100800" // rgb: 16, 8, 0 quality = DRINK_VERYGOOD @@ -397,6 +407,10 @@ glass_name = "glass of Nuka Cola" glass_desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland." +/datum/reagent/consumable/nuka_cola/on_mob_end_metabolize(mob/living/L) + L.remove_movespeed_modifier(id) + ..() + /datum/reagent/consumable/nuka_cola/on_mob_life(mob/living/carbon/M) M.Jitter(20) M.set_drugginess(30) @@ -409,6 +423,7 @@ /datum/reagent/consumable/spacemountainwind name = "SM Wind" + id = "spacemountainwind" description = "Blows right through you like a space wind." color = "#102000" // rgb: 16, 32, 0 taste_description = "sweet citrus soda" @@ -426,6 +441,7 @@ /datum/reagent/consumable/dr_gibb name = "Dr. Gibb" + id = "dr_gibb" description = "A delicious blend of 42 different flavours." color = "#102000" // rgb: 16, 32, 0 taste_description = "cherry soda" // FALSE ADVERTISING @@ -440,6 +456,7 @@ /datum/reagent/consumable/space_up name = "Space-Up" + id = "space_up" description = "Tastes like a hull breach in your mouth." color = "#00FF00" // rgb: 0, 255, 0 taste_description = "cherry soda" @@ -455,6 +472,7 @@ /datum/reagent/consumable/lemon_lime name = "Lemon Lime" description = "A tangy substance made of 0.5% natural citrus!" + id = "lemon_lime" color = "#8CFF00" // rgb: 135, 255, 0 taste_description = "tangy lime and lemon soda" glass_icon_state = "glass_yellow" @@ -468,6 +486,7 @@ /datum/reagent/consumable/pwr_game name = "Pwr Game" description = "The only drink with the PWR that true gamers crave." + id = "pwr_game" color = "#9385bf" // rgb: 58, 52, 75 taste_description = "sweet and salty tang" glass_icon_state = "glass_red" @@ -481,6 +500,7 @@ /datum/reagent/consumable/shamblers name = "Shambler's Juice" description = "~Shake me up some of that Shambler's Juice!~" + id = "shamblers" color = "#f00060" // rgb: 94, 0, 38 taste_description = "carbonated metallic soda" glass_icon_state = "glass_red" @@ -494,6 +514,7 @@ /datum/reagent/consumable/buzz_fuzz name = "Buzz Fuzz" description = "~A Hive of Flavour!~ NOTICE: Addicting." + id = "buzz_fuzz" addiction_threshold = 26 //A can and a sip color = "#8CFF00" // rgb: 135, 255, 0 taste_description = "carbonated honey and pollen" @@ -502,9 +523,9 @@ glass_desc = "Stinging with flavour." /datum/reagent/consumable/buzz_fuzz/on_mob_life(mob/living/carbon/M) - M.reagents.add_reagent(/datum/reagent/consumable/sugar,1) + M.reagents.add_reagent("sugar",1) if(prob(5)) - M.reagents.add_reagent(/datum/reagent/consumable/honey,1) + M.reagents.add_reagent("honey",1) ..() /datum/reagent/consumable/buzz_fuzz/reaction_mob(mob/living/M, method=TOUCH, reac_volume) @@ -537,6 +558,7 @@ /datum/reagent/consumable/grey_bull name = "Grey Bull" + id = "grey_bull" description = "Grey Bull, it gives you gloves!" color = "#EEFF00" // rgb: 238, 255, 0 quality = DRINK_VERYGOOD @@ -547,10 +569,10 @@ /datum/reagent/consumable/grey_bull/on_mob_metabolize(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_SHOCKIMMUNE, type) + ADD_TRAIT(L, TRAIT_SHOCKIMMUNE, id) /datum/reagent/consumable/grey_bull/on_mob_end_metabolize(mob/living/L) - REMOVE_TRAIT(L, TRAIT_SHOCKIMMUNE, type) + REMOVE_TRAIT(L, TRAIT_SHOCKIMMUNE, id) ..() /datum/reagent/consumable/grey_bull/on_mob_life(mob/living/carbon/M) @@ -563,6 +585,7 @@ /datum/reagent/consumable/sodawater name = "Soda Water" + id = "sodawater" description = "A can of club soda. Why not make a scotch and soda?" color = "#619494" // rgb: 97, 148, 148 taste_description = "carbonated water" @@ -578,6 +601,7 @@ /datum/reagent/consumable/tonic name = "Tonic Water" + id = "tonic" description = "It tastes strange but at least the quinine keeps the Space Malaria at bay." color = "#0064C8" // rgb: 0, 100, 200 taste_description = "tart and fresh" @@ -595,6 +619,7 @@ /datum/reagent/consumable/ice name = "Ice" + id = "ice" description = "Frozen water, your dentist wouldn't like you chewing this." reagent_state = SOLID color = "#619494" // rgb: 97, 148, 148 @@ -609,6 +634,7 @@ /datum/reagent/consumable/soy_latte name = "Soy Latte" + id = "soy_latte" description = "A nice and tasty beverage while you are reading your hippie books." color = "#664300" // rgb: 102, 67, 0 quality = DRINK_NICE @@ -630,6 +656,7 @@ /datum/reagent/consumable/cafe_latte name = "Cafe Latte" + id = "cafe_latte" description = "A nice, strong and tasty beverage while you are reading." color = "#664300" // rgb: 102, 67, 0 quality = DRINK_NICE @@ -651,6 +678,7 @@ /datum/reagent/consumable/doctor_delight name = "The Doctor's Delight" + id = "doctorsdelight" description = "A gulp a day keeps the Medibot away! A mixture of juices that heals most damage types fairly quickly at the cost of hunger." color = "#FF8CFF" // rgb: 255, 140, 255 quality = DRINK_VERYGOOD @@ -672,6 +700,7 @@ /datum/reagent/consumable/chocolatepudding name = "Chocolate Pudding" + id = "chocolatepudding" description = "A great dessert for chocolate lovers." color = "#800000" quality = DRINK_VERYGOOD @@ -683,6 +712,7 @@ /datum/reagent/consumable/vanillapudding name = "Vanilla Pudding" + id = "vanillapudding" description = "A great dessert for vanilla lovers." color = "#FAFAD2" quality = DRINK_VERYGOOD @@ -694,6 +724,7 @@ /datum/reagent/consumable/cherryshake name = "Cherry Shake" + id = "cherryshake" description = "A cherry flavored milkshake." color = "#FFB6C1" quality = DRINK_VERYGOOD @@ -705,6 +736,7 @@ /datum/reagent/consumable/bluecherryshake name = "Blue Cherry Shake" + id = "bluecherryshake" description = "An exotic milkshake." color = "#00F1FF" quality = DRINK_VERYGOOD @@ -716,6 +748,7 @@ /datum/reagent/consumable/pumpkin_latte name = "Pumpkin Latte" + id = "pumpkin_latte" description = "A mix of pumpkin juice and coffee." color = "#F4A460" quality = DRINK_VERYGOOD @@ -727,6 +760,7 @@ /datum/reagent/consumable/gibbfloats name = "Gibb Floats" + id = "gibbfloats" description = "Ice cream on top of a Dr. Gibb glass." color = "#B22222" quality = DRINK_NICE @@ -738,18 +772,21 @@ /datum/reagent/consumable/pumpkinjuice name = "Pumpkin Juice" + id = "pumpkinjuice" description = "Juiced from real pumpkin." color = "#FFA500" taste_description = "pumpkin" /datum/reagent/consumable/blumpkinjuice name = "Blumpkin Juice" + id = "blumpkinjuice" description = "Juiced from real blumpkin." color = "#00BFFF" taste_description = "a mouthful of pool water" /datum/reagent/consumable/triple_citrus name = "Triple Citrus" + id = "triple_citrus" description = "A solution." color = "#fff12b" quality = DRINK_NICE @@ -760,6 +797,7 @@ /datum/reagent/consumable/grape_soda name = "Grape soda" + id = "grapesoda" description = "Beloved of children and teetotalers." color = "#E6CDFF" taste_description = "grape soda" @@ -772,6 +810,7 @@ /datum/reagent/consumable/milk/chocolate_milk name = "Chocolate Milk" + id = "chocolate_milk" description = "Milk for cool kids." color = "#7D4E29" quality = DRINK_NICE @@ -779,6 +818,7 @@ /datum/reagent/consumable/menthol name = "Menthol" + id = "menthol" description = "Alleviates coughing symptoms one might have." color = "#80AF9C" taste_description = "mint" @@ -792,6 +832,7 @@ /datum/reagent/consumable/grenadine name = "Grenadine" + id = "grenadine" description = "Not cherry flavored!" color = "#EA1D26" taste_description = "sweet pomegranates" @@ -800,6 +841,7 @@ /datum/reagent/consumable/parsnipjuice name = "Parsnip Juice" + id = "parsnipjuice" description = "Why..." color = "#FFA500" taste_description = "parsnip" @@ -807,6 +849,7 @@ /datum/reagent/consumable/peachjuice //Intended to be extremely rare due to being the limiting ingredients in the blazaam drink name = "Peach Juice" + id = "peachjuice" description = "Just peachy." color = "#E78108" taste_description = "peaches" @@ -814,6 +857,7 @@ /datum/reagent/consumable/cream_soda name = "Cream Soda" + id = "cream_soda" description = "A classic space-American vanilla flavored soft drink." color = "#dcb137" quality = DRINK_VERYGOOD @@ -828,6 +872,7 @@ /datum/reagent/consumable/red_queen name = "Red Queen" + id = "red_queen" description = "DRINK ME." color = "#e6ddc3" quality = DRINK_GOOD @@ -855,6 +900,7 @@ /datum/reagent/consumable/pinkmilk name = "Strawberry Milk" + id = "pinkmilk" description = "A drink of a bygone era of milk and artificial sweetener back on a rock." color = "#f76aeb"//rgb(247, 106, 235) glass_icon_state = "pinkmilk" @@ -871,6 +917,7 @@ /datum/reagent/consumable/pinktea //Tiny Tim song name = "Strawberry Tea" + id = "pinktea" description = "A timeless classic!" color = "#f76aeb"//rgb(247, 106, 235) glass_icon_state = "pinktea" @@ -887,6 +934,7 @@ /datum/reagent/consumable/catnip_tea name = "Catnip Tea" + id = "catnip_tea" description = "A sleepy and tasty catnip tea!" color = "#101000" // rgb: 16, 16, 0 nutriment_factor = 0 @@ -906,6 +954,7 @@ /datum/reagent/consumable/monkey_energy name = "Monkey Energy" + id = "monkey_energy" description = "The only drink that will make you unleash the ape." color = "#f39b03" // rgb: 243, 155, 3 taste_description = "barbecue and nostalgia" @@ -920,12 +969,3 @@ M.AdjustSleeping(-40, FALSE) M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) ..() - -/datum/reagent/consumable/bungojuice - name = "Bungo Juice" - color = "#F9E43D" - description = "Exotic! You feel like you are on vactation already." - taste_description = "succulent bungo" - glass_icon_state = "glass_yellow" - glass_name = "glass of bungo juice" - glass_desc = "Exotic! You feel like you are on vacation already." diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index a2e651d791..e956fcac36 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -1,5 +1,6 @@ /datum/reagent/drug name = "Drug" + id = "drug" value = 12 metabolization_rate = 0.5 * REAGENTS_METABOLISM taste_description = "bitterness" @@ -7,10 +8,11 @@ /datum/reagent/drug/on_mob_end_metabolize(mob/living/M) if(trippy) - SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "[type]_high") + SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "[id]_high") /datum/reagent/drug/space_drugs name = "Space drugs" + id = "space_drugs" value = 6 description = "An illegal chemical compound used as drug." color = "#60A584" // rgb: 96, 165, 132 @@ -29,7 +31,7 @@ /datum/reagent/drug/space_drugs/overdose_start(mob/living/M) to_chat(M, "You start tripping hard!") - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/overdose, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/overdose, name) /datum/reagent/drug/space_drugs/overdose_process(mob/living/M) if(M.hallucination < volume && prob(20)) @@ -38,6 +40,7 @@ /datum/reagent/drug/nicotine name = "Nicotine" + id = "nicotine" value = 0 description = "Slightly reduces stun times. If overdosed it will deal toxin and oxygen damage." reagent_state = LIQUID @@ -61,6 +64,7 @@ /datum/reagent/drug/crank name = "Crank" + id = "crank" description = "Reduces stun times by about 200%. If overdosed or addicted it will deal significant Toxin, Brute and Brain damage." reagent_state = LIQUID color = "#FA00C8" @@ -108,6 +112,7 @@ /datum/reagent/drug/krokodil name = "Krokodil" + id = "krokodil" description = "Cools and calms you down. If overdosed it will deal significant Brain and Toxin damage. If addicted it will begin to deal fatal amounts of Brute damage as the subject's skin falls off." reagent_state = LIQUID color = "#0064B4" @@ -159,6 +164,7 @@ /datum/reagent/drug/methamphetamine name = "Methamphetamine" + id = "methamphetamine" description = "Reduces stun times by about 300%, and allows the user to quickly recover stamina while dealing a small amount of Brain damage. If overdosed the subject will move randomly, laugh randomly, drop items and suffer from Toxin and Brain damage. If addicted the subject will constantly jitter and drool, before becoming dizzy and losing motor control and eventually suffer heavy toxin damage." reagent_state = LIQUID color = "#FAFAFA" @@ -172,10 +178,10 @@ /datum/reagent/drug/methamphetamine/on_mob_metabolize(mob/living/L) ..() - L.ignore_slowdown(type) + L.ignore_slowdown(id) /datum/reagent/drug/methamphetamine/on_mob_end_metabolize(mob/living/L) - L.unignore_slowdown(type) + L.unignore_slowdown(id) ..() /datum/reagent/drug/methamphetamine/on_mob_life(mob/living/carbon/M) @@ -246,6 +252,7 @@ . = 1 /datum/reagent/drug/methamphetamine/changeling + id = "changelingmeth" name = "Changeling Adrenaline" addiction_threshold = 35 overdose_threshold = 35 @@ -254,6 +261,7 @@ /datum/reagent/drug/bath_salts name = "Bath Salts" + id = "bath_salts" description = "Makes you impervious to stuns and grants a stamina regeneration buff, but you will be a nearly uncontrollable tramp-bearded raving lunatic." reagent_state = LIQUID color = "#FAFAFA" @@ -265,16 +273,16 @@ /datum/reagent/drug/bath_salts/on_mob_metabolize(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_STUNIMMUNE, type) - ADD_TRAIT(L, TRAIT_SLEEPIMMUNE, type) + ADD_TRAIT(L, TRAIT_STUNIMMUNE, id) + ADD_TRAIT(L, TRAIT_SLEEPIMMUNE, id) if(iscarbon(L)) var/mob/living/carbon/C = L rage = new() C.gain_trauma(rage, TRAUMA_RESILIENCE_ABSOLUTE) /datum/reagent/drug/bath_salts/on_mob_end_metabolize(mob/living/L) - REMOVE_TRAIT(L, TRAIT_STUNIMMUNE, type) - REMOVE_TRAIT(L, TRAIT_SLEEPIMMUNE, type) + REMOVE_TRAIT(L, TRAIT_STUNIMMUNE, id) + REMOVE_TRAIT(L, TRAIT_SLEEPIMMUNE, id) if(rage) QDEL_NULL(rage) ..() @@ -354,6 +362,7 @@ /datum/reagent/drug/aranesp name = "Aranesp" + id = "aranesp" description = "Amps you up and gets you going, fixes all stamina damage you might have but can cause toxin and oxygen damage." reagent_state = LIQUID color = "#78FFF0" @@ -373,6 +382,7 @@ /datum/reagent/drug/happiness name = "Happiness" + id = "happiness" description = "Fills you with ecstasic numbness and causes minor brain damage. Highly addictive. If overdosed causes sudden mood swings." reagent_state = LIQUID color = "#FFF378" @@ -382,11 +392,11 @@ /datum/reagent/drug/happiness/on_mob_add(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_FEARLESS, type) + ADD_TRAIT(L, TRAIT_FEARLESS, id) SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "happiness_drug", /datum/mood_event/happiness_drug) /datum/reagent/drug/happiness/on_mob_delete(mob/living/L) - REMOVE_TRAIT(L, TRAIT_FEARLESS, type) + REMOVE_TRAIT(L, TRAIT_FEARLESS, id) SEND_SIGNAL(L, COMSIG_CLEAR_MOOD_EVENT, "happiness_drug") ..() @@ -450,6 +460,7 @@ /datum/reagent/drug/skooma name = "Skooma" + id = "skooma" description = "An ancient, highly-addictive drug of long-forgotten times. It greatly improves the user's speed and strength, but heavily impedes their intelligence and agility." reagent_state = LIQUID color = "#F3E0F9" @@ -461,7 +472,7 @@ /datum/reagent/drug/skooma/on_mob_metabolize(mob/living/L) . = ..() - L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) + L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) L.next_move_modifier *= 2 if(ishuman(L)) var/mob/living/carbon/human/H = L @@ -472,7 +483,7 @@ /datum/reagent/drug/skooma/on_mob_end_metabolize(mob/living/L) . = ..() - L.remove_movespeed_modifier(type) + L.remove_movespeed_modifier(id) L.next_move_modifier *= 0.5 if(ishuman(L)) var/mob/living/carbon/human/H = L diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index b6cb387b81..23eb24ed15 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -9,6 +9,7 @@ /datum/reagent/consumable name = "Consumable" + id = "consumable" taste_description = "generic food" taste_mult = 4 value = 0.1 @@ -18,7 +19,7 @@ /datum/reagent/consumable/on_mob_life(mob/living/carbon/M) current_cycle++ M.nutrition += nutriment_factor - holder.remove_reagent(type, metabolization_rate) + holder.remove_reagent(src.id, metabolization_rate) /datum/reagent/consumable/reaction_mob(mob/living/M, method=TOUCH, reac_volume) if(method == INGEST) @@ -38,6 +39,7 @@ /datum/reagent/consumable/nutriment name = "Nutriment" + id = "nutriment" description = "All the vitamins, minerals, and carbohydrates the body needs in pure form." reagent_state = SOLID nutriment_factor = 15 * REAGENTS_METABOLISM @@ -88,6 +90,7 @@ /datum/reagent/consumable/nutriment/vitamin name = "Vitamin" + id = "vitamin" description = "All the best vitamins, minerals, and carbohydrates the body needs in pure form." value = 0.5 @@ -101,6 +104,7 @@ /datum/reagent/consumable/cooking_oil name = "Cooking Oil" + id = "cooking_oil" description = "A variety of cooking oil derived from fat or plants. Used in food preparation and frying." color = "#EADD6B" //RGB: 234, 221, 107 (based off of canola oil) taste_mult = 0.8 @@ -117,7 +121,7 @@ O.loc.visible_message("[O] rapidly fries as it's splashed with hot oil! Somehow.") var/obj/item/reagent_containers/food/snacks/deepfryholder/F = new(O.drop_location(), O) F.fry(volume) - F.reagents.add_reagent(/datum/reagent/consumable/cooking_oil, reac_volume) + F.reagents.add_reagent("cooking_oil", reac_volume) /datum/reagent/consumable/cooking_oil/reaction_mob(mob/living/M, method = TOUCH, reac_volume, show_message = 1, touch_protection = 0) if(!istype(M)) @@ -146,11 +150,12 @@ /datum/reagent/consumable/sugar name = "Sugar" + id = "sugar" description = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste." reagent_state = SOLID color = "#FFFFFF" // rgb: 255, 255, 255 taste_mult = 1.5 // stop sugar drowning out other flavours - nutriment_factor = 5 * REAGENTS_METABOLISM + nutriment_factor = 10 * REAGENTS_METABOLISM metabolization_rate = 2 * REAGENTS_METABOLISM overdose_threshold = 200 // Hyperglycaemic shock taste_description = "sweetness" @@ -168,6 +173,7 @@ /datum/reagent/consumable/virus_food name = "Virus Food" + id = "virusfood" description = "A mixture of water and milk. Virus cells can use this mixture to reproduce." nutriment_factor = 2 * REAGENTS_METABOLISM color = "#899613" // rgb: 137, 150, 19 @@ -175,6 +181,7 @@ /datum/reagent/consumable/soysauce name = "Soysauce" + id = "soysauce" description = "A salty sauce made from the soy plant." nutriment_factor = 2 * REAGENTS_METABOLISM color = "#792300" // rgb: 121, 35, 0 @@ -182,6 +189,7 @@ /datum/reagent/consumable/ketchup name = "Ketchup" + id = "ketchup" description = "Ketchup, catsup, whatever. It's tomato paste." nutriment_factor = 5 * REAGENTS_METABOLISM color = "#731008" // rgb: 115, 16, 8 @@ -189,6 +197,7 @@ /datum/reagent/consumable/mustard name = "Mustard" + id = "mustard" description = "Mustard, mostly used on hotdogs, corndogs and burgers." nutriment_factor = 5 * REAGENTS_METABOLISM color = "#DDED26" // rgb: 221, 237, 38 @@ -196,6 +205,7 @@ /datum/reagent/consumable/capsaicin name = "Capsaicin Oil" + id = "capsaicin" description = "This is what makes chilis hot." color = "#B31008" // rgb: 179, 16, 8 taste_description = "hot peppers" @@ -206,8 +216,8 @@ switch(current_cycle) if(1 to 15) heating = 5 * TEMPERATURE_DAMAGE_COEFFICIENT - if(holder.has_reagent(/datum/reagent/cryostylane)) - holder.remove_reagent(/datum/reagent/cryostylane, 5) + if(holder.has_reagent("cryostylane")) + holder.remove_reagent("cryostylane", 5) if(isslime(M)) heating = rand(5,20) if(15 to 25) @@ -227,6 +237,7 @@ /datum/reagent/consumable/frostoil name = "Frost Oil" + id = "frostoil" description = "A special oil that noticably chills the body. Extracted from Icepeppers and slimes." color = "#8BA6E9" // rgb: 139, 166, 233 taste_description = "mint" @@ -238,8 +249,8 @@ switch(current_cycle) if(1 to 15) cooling = -10 * TEMPERATURE_DAMAGE_COEFFICIENT - if(holder.has_reagent(/datum/reagent/consumable/capsaicin)) - holder.remove_reagent(/datum/reagent/consumable/capsaicin, 5) + if(holder.has_reagent("capsaicin")) + holder.remove_reagent("capsaicin", 5) if(isslime(M)) cooling = -rand(5,20) if(15 to 25) @@ -273,6 +284,7 @@ /datum/reagent/consumable/condensedcapsaicin name = "Condensed Capsaicin" + id = "condensedcapsaicin" description = "A chemical agent used for self-defense and in police work." color = "#B31008" // rgb: 179, 16, 8 taste_description = "scorching agony" @@ -346,6 +358,7 @@ /datum/reagent/consumable/sodiumchloride name = "Table Salt" + id = "sodiumchloride" description = "A salt made of sodium chloride. Commonly used to season food." reagent_state = SOLID color = "#FFFFFF" // rgb: 255,255,255 @@ -366,6 +379,7 @@ /datum/reagent/consumable/blackpepper name = "Black Pepper" + id = "blackpepper" description = "A powder ground from peppercorns. *AAAACHOOO*" reagent_state = SOLID // no color (ie, black) @@ -373,6 +387,7 @@ /datum/reagent/consumable/coco name = "Coco Powder" + id = "cocoa" description = "A fatty, bitter paste made from coco beans." reagent_state = SOLID nutriment_factor = 5 * REAGENTS_METABOLISM @@ -381,6 +396,7 @@ /datum/reagent/consumable/hot_coco name = "Hot Chocolate" + id = "hot_coco" description = "Made with love! And coco beans." nutriment_factor = 3 * REAGENTS_METABOLISM color = "#403010" // rgb: 64, 48, 16 @@ -395,6 +411,7 @@ /datum/reagent/drug/mushroomhallucinogen name = "Mushroom Hallucinogen" + id = "mushroomhallucinogen" description = "A strong hallucinogenic drug derived from certain species of mushroom." color = "#E700E7" // rgb: 231, 0, 231 metabolization_rate = 0.2 * REAGENTS_METABOLISM @@ -425,6 +442,7 @@ /datum/reagent/consumable/sprinkles name = "Sprinkles" + id = "sprinkles" value = 3 description = "Multi-colored little bits of sugar, commonly found on donuts. Loved by cops." color = "#FF00FF" // rgb: 255, 0, 255 @@ -438,6 +456,7 @@ /datum/reagent/consumable/peanut_butter name = "Peanut Butter" + id = "peanut_butter" description = "A popular food paste made from ground dry-roasted peanuts." color = "#C29261" value = 3 @@ -446,6 +465,7 @@ /datum/reagent/consumable/cornoil name = "Corn Oil" + id = "cornoil" description = "An oil derived from various types of corn." nutriment_factor = 20 * REAGENTS_METABOLISM value = 4 @@ -466,6 +486,7 @@ /datum/reagent/consumable/enzyme name = "Universal Enzyme" + id = "enzyme" value = 1 description = "A universal enzyme used in the preperation of certain chemicals and foods." color = "#365E30" // rgb: 54, 94, 48 @@ -473,6 +494,7 @@ /datum/reagent/consumable/dry_ramen name = "Dry Ramen" + id = "dry_ramen" description = "Space age food, since August 25, 1958. Contains dried noodles, vegetables, and chemicals that boil in contact with water." reagent_state = SOLID color = "#302000" // rgb: 48, 32, 0 @@ -480,6 +502,7 @@ /datum/reagent/consumable/hot_ramen name = "Hot Ramen" + id = "hot_ramen" description = "The noodles are boiled, the flavors are artificial, just like being back in school." nutriment_factor = 5 * REAGENTS_METABOLISM color = "#302000" // rgb: 48, 32, 0 @@ -491,6 +514,7 @@ /datum/reagent/consumable/hell_ramen name = "Hell Ramen" + id = "hell_ramen" description = "The noodles are boiled, the flavors are artificial, just like being back in school." nutriment_factor = 5 * REAGENTS_METABOLISM color = "#302000" // rgb: 48, 32, 0 @@ -502,6 +526,7 @@ /datum/reagent/consumable/flour name = "Flour" + id = "flour" value = 0.5 description = "This is what you rub all over yourself to pretend to be a ghost." reagent_state = SOLID @@ -513,10 +538,11 @@ var/obj/effect/decal/cleanable/flour/reagentdecal = new/obj/effect/decal/cleanable/flour(T) reagentdecal = locate() in T //Might have merged with flour already there. if(reagentdecal) - reagentdecal.reagents.add_reagent(/datum/reagent/consumable/flour, reac_volume) + reagentdecal.reagents.add_reagent("flour", reac_volume) /datum/reagent/consumable/cherryjelly name = "Cherry Jelly" + id = "cherryjelly" description = "Totally the best. Only to be spread on foods with excellent lateral symmetry." color = "#801E28" // rgb: 128, 30, 40 value = 1 @@ -524,6 +550,7 @@ /datum/reagent/consumable/bluecherryjelly name = "Blue Cherry Jelly" + id = "bluecherryjelly" description = "Blue and tastier kind of cherry jelly." color = "#00F0FF" value = 12 @@ -531,6 +558,7 @@ /datum/reagent/consumable/rice name = "Rice" + id = "rice" value = 0.5 description = "tiny nutritious grains" reagent_state = SOLID @@ -540,6 +568,7 @@ /datum/reagent/consumable/vanilla name = "Vanilla Powder" + id = "vanilla" value = 1 description = "A fatty, bitter paste made from vanilla pods." reagent_state = SOLID @@ -549,6 +578,7 @@ /datum/reagent/consumable/eggyolk name = "Egg Yolk" + id = "eggyolk" value = 1 description = "It's full of protein." nutriment_factor = 3 * REAGENTS_METABOLISM @@ -557,6 +587,7 @@ /datum/reagent/consumable/corn_starch name = "Corn Starch" + id = "corn_starch" value = 2 description = "A slippery solution." color = "#f7f6e4" @@ -564,6 +595,7 @@ /datum/reagent/consumable/corn_syrup name = "Corn Syrup" + id = "corn_syrup" value = 1 description = "Decays into sugar." color = "#fff882" @@ -571,11 +603,12 @@ taste_description = "sweet slime" /datum/reagent/consumable/corn_syrup/on_mob_life(mob/living/carbon/M) - holder.add_reagent(/datum/reagent/consumable/sugar, 3) + holder.add_reagent("sugar", 3) ..() /datum/reagent/consumable/honey name = "honey" + id = "honey" description = "Sweet sweet honey that decays into sugar. Has antibacterial and natural healing properties." color = "#d3a308" value = 15 @@ -584,12 +617,12 @@ taste_description = "sweetness" /datum/reagent/consumable/honey/on_mob_life(mob/living/carbon/M) - M.reagents.add_reagent(/datum/reagent/consumable/sugar,3) + M.reagents.add_reagent("sugar",3) if(prob(55)) M.adjustBruteLoss(-1*REM, 0) M.adjustFireLoss(-1*REM, 0) M.adjustOxyLoss(-1*REM, 0) - M.adjustToxLoss(-1*REM, 0, TRUE) //heals TOXINLOVERs + M.adjustToxLoss(-1*REM, 0) ..() /datum/reagent/consumable/honey/reaction_mob(mob/living/M, method=TOUCH, reac_volume) @@ -602,6 +635,7 @@ /datum/reagent/consumable/mayonnaise name = "Mayonnaise" + id = "mayonnaise" description = "An white and oily mixture of mixed egg yolks." color = "#DFDFDF" value = 5 @@ -609,6 +643,7 @@ /datum/reagent/consumable/tearjuice name = "Tear Juice" + id = "tearjuice" description = "A blinding substance extracted from certain onions." color = "#c0c9a0" taste_description = "bitterness" @@ -647,6 +682,7 @@ /datum/reagent/consumable/nutriment/stabilized name = "Stabilized Nutriment" + id = "stabilizednutriment" description = "A bioengineered protien-nutrient structure designed to decompose in high saturation. In layman's terms, it won't get you fat." reagent_state = SOLID nutriment_factor = 15 * REAGENTS_METABOLISM @@ -662,6 +698,7 @@ /datum/reagent/consumable/entpoly name = "Entropic Polypnium" + id = "entpoly" description = "An ichor, derived from a certain mushroom, makes for a bad time." color = "#1d043d" taste_description = "bitter mushroom" @@ -682,6 +719,7 @@ /datum/reagent/consumable/tinlux name = "Tinea Luxor" + id = "tinlux" description = "A stimulating ichor which causes luminescent fungi to grow on the skin. " color = "#b5a213" taste_description = "tingling mushroom" @@ -695,6 +733,7 @@ /datum/reagent/consumable/vitfro name = "Vitrium Froth" + id = "vitfro" description = "A bubbly paste that heals wounds of the skin." color = "#d3a308" nutriment_factor = 3 * REAGENTS_METABOLISM @@ -710,6 +749,7 @@ /datum/reagent/consumable/clownstears name = "Clown's Tears" + id = "clownstears" description = "The sorrow and melancholy of a thousand bereaved clowns, forever denied their Honkmechs." nutriment_factor = 5 * REAGENTS_METABOLISM color = "#eef442" // rgb: 238, 244, 66 @@ -718,6 +758,7 @@ /datum/reagent/consumable/liquidelectricity name = "Liquid Electricity" + id = "liquidelectricity" description = "The blood of Ethereals, and the stuff that keeps them going. Great for them, horrid for anyone else." nutriment_factor = 5 * REAGENTS_METABOLISM color = "#97ee63" @@ -741,6 +782,7 @@ /datum/reagent/consumable/astrotame name = "Astrotame" + id = "astrotame" description = "A space age artifical sweetener." nutriment_factor = 0 metabolization_rate = 2 * REAGENTS_METABOLISM @@ -759,6 +801,7 @@ /datum/reagent/consumable/caramel name = "Caramel" + id = "caramel" description = "Who would have guessed that heated sugar could be so delicious?" nutriment_factor = 10 * REAGENTS_METABOLISM color = "#D98736" @@ -768,6 +811,7 @@ /datum/reagent/consumable/secretsauce name = "secret sauce" + id = "secret_sauce" description = "What could it be." nutriment_factor = 2 * REAGENTS_METABOLISM color = "#792300" @@ -779,6 +823,7 @@ /datum/reagent/consumable/char name = "Char" + id = "char" description = "Essence of the grill. Has strange properties when overdosed." reagent_state = LIQUID nutriment_factor = 5 * REAGENTS_METABOLISM @@ -793,6 +838,7 @@ /datum/reagent/consumable/bbqsauce name = "BBQ Sauce" + id = "bbqsauce" description = "Sweet, Smokey, Savory, and gets everywhere. Perfect for Grilling." nutriment_factor = 5 * REAGENTS_METABOLISM color = "#78280A" // rgb: 120 40, 10 diff --git a/code/modules/reagents/chemistry/reagents/impure_reagents.dm b/code/modules/reagents/chemistry/reagents/impure_reagents.dm index 63f62406b5..4489088adc 100644 --- a/code/modules/reagents/chemistry/reagents/impure_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/impure_reagents.dm @@ -8,6 +8,7 @@ /datum/reagent/impure/fermiTox name = "Chemical Isomers" + id = "fermiTox" description = "Toxic chemical isomers made from impure reactions. At low volumes will cause light toxin damage, but as the volume increases, it deals larger amounts, damages the liver, then eventually the heart. This is default impure chem for all chems, and changes only if stated." data = "merge" color = "FFFFFF" diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index d8fc47d1b8..d8ff084227 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -7,15 +7,17 @@ /datum/reagent/medicine name = "Medicine" + id = "medicine" value = 2 taste_description = "bitterness" /datum/reagent/medicine/on_mob_life(mob/living/carbon/M) current_cycle++ - holder.remove_reagent(type, metabolization_rate / M.metabolism_efficiency) //medicine reagents stay longer if you have a better metabolism + holder.remove_reagent(src.id, metabolization_rate / M.metabolism_efficiency) //medicine reagents stay longer if you have a better metabolism /datum/reagent/medicine/leporazine name = "Leporazine" + id = "leporazine" description = "Leporazine will effectively regulate a patient's body temperature, ensuring it never leaves safe levels." pH = 8.4 color = "#82b8aa" @@ -29,6 +31,7 @@ /datum/reagent/medicine/adminordrazine //An OP chemical for admins name = "Adminordrazine" + id = "adminordrazine" description = "It's magic. We don't have to explain it." color = "#ffffff" can_synth = FALSE @@ -76,11 +79,13 @@ /datum/reagent/medicine/adminordrazine/quantum_heal name = "Quantum Medicine" + id = "quantum_heal" description = "Rare and experimental particles, that apparently swap the user's body with one from an alternate dimension where it's completely healthy." taste_description = "science" /datum/reagent/medicine/synaptizine name = "Synaptizine" + id = "synaptizine" description = "Increases resistance to stuns as well as reducing drowsiness and hallucinations." color = "#FF00FF" pH = 4 @@ -90,8 +95,8 @@ M.AdjustStun(-20, 0) M.AdjustKnockdown(-20, 0) M.AdjustUnconscious(-20, 0) - if(holder.has_reagent(/datum/reagent/toxin/mindbreaker)) - holder.remove_reagent(/datum/reagent/toxin/mindbreaker, 5) + if(holder.has_reagent("mindbreaker")) + holder.remove_reagent("mindbreaker", 5) M.hallucination = max(0, M.hallucination - 10) if(prob(30)) M.adjustToxLoss(1, 0) @@ -100,16 +105,17 @@ /datum/reagent/medicine/synaphydramine name = "Diphen-Synaptizine" + id = "synaphydramine" description = "Reduces drowsiness, hallucinations, and Histamine from body." color = "#EC536D" // rgb: 236, 83, 109 pH = 5.2 /datum/reagent/medicine/synaphydramine/on_mob_life(mob/living/carbon/M) M.drowsyness = max(M.drowsyness-5, 0) - if(holder.has_reagent(/datum/reagent/toxin/mindbreaker)) - holder.remove_reagent(/datum/reagent/toxin/mindbreaker, 5) - if(holder.has_reagent(/datum/reagent/toxin/histamine)) - holder.remove_reagent(/datum/reagent/toxin/histamine, 5) + if(holder.has_reagent("mindbreaker")) + holder.remove_reagent("mindbreaker", 5) + if(holder.has_reagent("histamine")) + holder.remove_reagent("histamine", 5) M.hallucination = max(0, M.hallucination - 10) if(prob(30)) M.adjustToxLoss(1, 0) @@ -118,6 +124,7 @@ /datum/reagent/medicine/inacusiate name = "Inacusiate" + id = "inacusiate" description = "Instantly restores all hearing to the patient, but does not cure deafness." color = "#6600FF" // rgb: 100, 165, 255 pH = 2 @@ -129,6 +136,7 @@ /datum/reagent/medicine/cryoxadone name = "Cryoxadone" + id = "cryoxadone" description = "A chemical mixture with almost magical healing powers. Its main limitation is that the patient's body temperature must be under 270K for it to metabolise correctly." color = "#0000C8" taste_description = "sludge" @@ -149,6 +157,7 @@ /datum/reagent/medicine/clonexadone name = "Clonexadone" + id = "clonexadone" description = "A chemical that derives from Cryoxadone. It specializes in healing clone damage, but nothing else. Requires very cold temperatures to properly metabolize, and metabolizes quicker than cryoxadone." color = "#0000C8" taste_description = "muscle" @@ -165,6 +174,7 @@ /datum/reagent/medicine/pyroxadone name = "Pyroxadone" + id = "pyroxadone" description = "A mixture of cryoxadone and slime jelly, that apparently inverses the requirement for its activation." color = "#f7832a" taste_description = "spicy jelly" @@ -194,6 +204,7 @@ /datum/reagent/medicine/rezadone name = "Rezadone" + id = "rezadone" description = "A powder derived from fish toxin, Rezadone can effectively treat genetic damage as well as restoring minor wounds. Overdose will cause intense nausea and minor toxin damage." reagent_state = SOLID color = "#669900" // rgb: 102, 153, 0 @@ -218,6 +229,7 @@ /datum/reagent/medicine/spaceacillin name = "Spaceacillin" + id = "spaceacillin" description = "Spaceacillin will prevent a patient from conventionally spreading any diseases they are currently infected with." color = "#f2f2f2" metabolization_rate = 0.1 * REAGENTS_METABOLISM @@ -226,6 +238,7 @@ //Goon Chems. Ported mainly from Goonstation. Easily mixable (or not so easily) and provide a variety of effects. /datum/reagent/medicine/silver_sulfadiazine name = "Silver Sulfadiazine" + id = "silver_sulfadiazine" description = "If used in touch-based applications, immediately restores burn wounds as well as restoring more over time. It is mildly poisonous taken orally or by injection. If overdosed, deals brute and minor liver damage." reagent_state = LIQUID pH = 7.2 @@ -264,6 +277,7 @@ /datum/reagent/medicine/oxandrolone name = "Oxandrolone" + id = "oxandrolone" description = "Stimulates the healing of severe burns. Extremely rapidly heals severe burns and slowly heals minor ones. Overdose will worsen existing burns." reagent_state = LIQUID color = "#f7ffa5" @@ -288,6 +302,7 @@ /datum/reagent/medicine/styptic_powder name = "Styptic Powder" + id = "styptic_powder" description = "If used in touch-based applications, immediately restores bruising as well as restoring more over time. It is poisonous if taken orally or by injection. If overdosed, deals brute and minor liver damage." reagent_state = LIQUID color = "#FF9696" @@ -327,6 +342,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/salglu_solution name = "Saline-Glucose Solution" + id = "salglu_solution" description = "Has a 33% chance per metabolism cycle to heal brute and burn damage. Can be used as a temporary blood substitute." reagent_state = LIQUID color = "#DCDCDC" @@ -358,12 +374,12 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/salglu_solution/overdose_process(mob/living/M) if(prob(3)) to_chat(M, "You feel salty.") - holder.add_reagent(/datum/reagent/consumable/sodiumchloride, 1) - holder.remove_reagent(/datum/reagent/medicine/salglu_solution, 0.5) + holder.add_reagent("sodiumchloride", 1) + holder.remove_reagent("salglu_solution", 0.5) else if(prob(3)) to_chat(M, "You feel sweet.") - holder.add_reagent(/datum/reagent/consumable/sugar, 1) - holder.remove_reagent(/datum/reagent/medicine/salglu_solution, 0.5) + holder.add_reagent("sugar", 1) + holder.remove_reagent("salglu_solution", 0.5) if(prob(33)) M.adjustBruteLoss(0.5*REM, 0) M.adjustFireLoss(0.5*REM, 0) @@ -372,6 +388,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/mine_salve name = "Miner's Salve" + id = "mine_salve" description = "A powerful painkiller. Restores bruising and burns in addition to making the patient believe they are fully healed." reagent_state = LIQUID color = "#6D6374" @@ -411,6 +428,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/synthflesh name = "Synthflesh" + id = "synthflesh" description = "Has a 100% chance of healing large amounts of brute and burn damage very quickly. One unit of the chemical will heal one point of damage. Touch application only." reagent_state = LIQUID color = "#FFEBEB" @@ -443,6 +461,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/charcoal name = "Charcoal" + id = "charcoal" description = "Heals toxin damage as well as slowly removing any other chemicals the patient has in their bloodstream." reagent_state = LIQUID color = "#000000" @@ -454,14 +473,14 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/charcoal/on_mob_life(mob/living/carbon/M) M.adjustToxLoss(-2*REM, 0) . = 1 - for(var/A in M.reagents.reagent_list) - var/datum/reagent/R = A + for(var/datum/reagent/R in M.reagents.reagent_list) if(R != src) - M.reagents.remove_reagent(R.type,1) + M.reagents.remove_reagent(R.id,1) ..() /datum/reagent/medicine/omnizine name = "Omnizine" + id = "omnizine" description = "Slowly heals all damage types. Overdose will cause damage in all types instead." reagent_state = LIQUID color = "#DCDCDC" @@ -488,6 +507,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/calomel name = "Calomel" + id = "calomel" description = "Quickly purges the body of all chemicals. Toxin damage is dealt if the patient is in good condition." reagent_state = LIQUID color = "#19C832" @@ -496,10 +516,9 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) pH = 1.5 /datum/reagent/medicine/calomel/on_mob_life(mob/living/carbon/M) - for(var/A in M.reagents.reagent_list) - var/datum/reagent/R = A + for(var/datum/reagent/R in M.reagents.reagent_list) if(R != src) - M.reagents.remove_reagent(R.type,2.5) + M.reagents.remove_reagent(R.id,2.5) if(M.health > 20) M.adjustToxLoss(2.5*REM, 0) . = 1 @@ -507,6 +526,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/potass_iodide name = "Potassium Iodide" + id = "potass_iodide" description = "Efficiently restores low radiation damage." reagent_state = LIQUID color = "#14FF3C" @@ -520,6 +540,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/prussian_blue name = "Prussian Blue" + id = "prussian_blue" description = "Efficiently restores heavy radiation damage." reagent_state = LIQUID color = "#003153" // RGB 0, 49, 83 @@ -533,6 +554,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/pen_acid name = "Pentetic Acid" + id = "pen_acid" description = "Reduces massive amounts of radiation and toxin damage while purging other chemicals from the body." reagent_state = LIQUID color = "#E6FFF0" @@ -543,15 +565,15 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/pen_acid/on_mob_life(mob/living/carbon/M) M.radiation -= max(M.radiation-RAD_MOB_SAFE, 0)/50 M.adjustToxLoss(-2*REM, 0, healtoxinlover) - for(var/A in M.reagents.reagent_list) - var/datum/reagent/R = A + for(var/datum/reagent/R in M.reagents.reagent_list) if(R != src) - M.reagents.remove_reagent(R.type,2) + M.reagents.remove_reagent(R.id,2) ..() . = 1 /datum/reagent/medicine/pen_acid/pen_jelly name = "Pentetic Jelly" + id = "pen_jelly" description = "Reduces massive amounts of radiation and toxin damage while purging other chemicals from the body. Slimepeople friendly!" color = "#91D865" healtoxinlover = TRUE @@ -559,6 +581,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/sal_acid name = "Salicyclic Acid" + id = "sal_acid" description = "Stimulates the healing of severe bruises. Extremely rapidly heals severe bruising and slowly heals minor ones. Overdose will worsen existing bruising." reagent_state = LIQUID color = "#D2D2D2" @@ -583,6 +606,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/salbutamol name = "Salbutamol" + id = "salbutamol" description = "Rapidly restores oxygen deprivation as well as preventing more of it to an extent." reagent_state = LIQUID color = "#00FFFF" @@ -598,6 +622,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/perfluorodecalin name = "Perfluorodecalin" + id = "perfluorodecalin" description = "Extremely rapidly restores oxygen deprivation, but inhibits speech. May also heal small amounts of bruising and burns." reagent_state = LIQUID color = "#FF6464" @@ -615,6 +640,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/ephedrine name = "Ephedrine" + id = "ephedrine" description = "Increases stun resistance. Overdose deals toxin damage and inhibits breathing." reagent_state = LIQUID color = "#D2FFFA" @@ -671,6 +697,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/diphenhydramine name = "Diphenhydramine" + id = "diphenhydramine" description = "Rapidly purges the body of Histamine and reduces jitteriness. Slight chance of causing drowsiness." reagent_state = LIQUID color = "#64FFE6" @@ -681,11 +708,12 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) if(prob(10)) M.drowsyness += 1 M.jitteriness -= 1 - M.reagents.remove_reagent(/datum/reagent/toxin/histamine,3) + M.reagents.remove_reagent("histamine",3) ..() /datum/reagent/medicine/morphine name = "Morphine" + id = "morphine" description = "A painkiller that allows the patient to move at full speed even in bulky objects. Causes drowsiness and eventually unconsciousness in high doses. Overdose will cause a variety of effects, ranging from minor to lethal." reagent_state = LIQUID color = "#A9FBFB" @@ -696,10 +724,10 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/morphine/on_mob_metabolize(mob/living/L) ..() - L.ignore_slowdown(type) + L.ignore_slowdown(id) /datum/reagent/medicine/morphine/on_mob_end_metabolize(mob/living/L) - L.unignore_slowdown(type) + L.unignore_slowdown(id) ..() /datum/reagent/medicine/morphine/on_mob_life(mob/living/carbon/M) @@ -755,6 +783,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/oculine name = "Oculine" + id = "oculine" description = "Quickly restores eye damage, cures nearsightedness, and has a chance to restore vision to the blind." reagent_state = LIQUID color = "#FFFFFF" @@ -785,6 +814,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/atropine name = "Atropine" + id = "atropine" description = "If a patient is in critical condition, rapidly heals all damage types as well as regulating oxygen in the body. Excellent for stabilizing wounded patients." reagent_state = LIQUID color = "#000000" @@ -814,6 +844,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/epinephrine name = "Epinephrine" + id = "epinephrine" description = "Minor boost to stun resistance. Slowly heals damage if a patient is in critical condition, as well as regulating oxygen loss. Overdose causes weakness and toxin damage." reagent_state = LIQUID color = "#D2FFFA" @@ -850,6 +881,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/strange_reagent name = "Strange Reagent" + id = "strange_reagent" description = "A miracle drug capable of bringing the dead back to life. Only functions when applied by patch or spray, if the target has less than 100 brute and burn damage (independent of one another) and hasn't been husked. Causes slight damage to the living." reagent_state = LIQUID color = "#A0E85E" @@ -901,6 +933,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/mannitol name = "Mannitol" + id = "mannitol" description = "Efficiently restores brain damage." color = "#DCDCFF" pH = 10.4 @@ -913,6 +946,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/neurine name = "Neurine" + id = "neurine" description = "Reacts with neural tissue, helping reform damaged connections. Can cure minor traumas." color = "#EEFF8F" @@ -932,14 +966,15 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/neurine/on_mob_life(mob/living/carbon/C) - if(holder.has_reagent(/datum/reagent/consumable/ethanol/neurotoxin)) - holder.remove_reagent(/datum/reagent/consumable/ethanol/neurotoxin, 5) + if(holder.has_reagent("neurotoxin")) + holder.remove_reagent("neurotoxin", 5) if(prob(15)) C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_BASIC) ..() /datum/reagent/medicine/mutadone name = "Mutadone" + id = "mutadone" description = "Removes jitteriness and restores genetic defects." color = "#5096C8" taste_description = "acid" @@ -954,6 +989,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/antihol name = "Antihol" + id = "antihol" description = "Purges alcoholic substance from the patient's body and eliminates its side effects." color = "#00B4C8" taste_description = "raw egg" @@ -974,6 +1010,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/stimulants name = "Stimulants" + id = "stimulants" description = "Increases stun resistance and movement speed in addition to restoring minor damage and weakness. Overdose causes weakness and toxin damage." color = "#78008C" metabolization_rate = 0.5 * REAGENTS_METABOLISM @@ -982,10 +1019,10 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/stimulants/on_mob_metabolize(mob/living/L) ..() - L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) + L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) /datum/reagent/medicine/stimulants/on_mob_end_metabolize(mob/living/L) - L.remove_movespeed_modifier(type) + L.remove_movespeed_modifier(id) ..() /datum/reagent/medicine/stimulants/on_mob_life(mob/living/carbon/M) @@ -1011,6 +1048,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/insulin name = "Insulin" + id = "insulin" description = "Increases sugar depletion rates." reagent_state = LIQUID color = "#FFFFF0" @@ -1020,12 +1058,13 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/insulin/on_mob_life(mob/living/carbon/M) if(M.AdjustSleeping(-20, FALSE)) . = 1 - M.reagents.remove_reagent(/datum/reagent/consumable/sugar, 3) + M.reagents.remove_reagent("sugar", 3) ..() //Trek Chems, used primarily by medibots. Only heals a specific damage type, but is very efficient. /datum/reagent/medicine/bicaridine name = "Bicaridine" + id = "bicaridine" description = "Restores bruising. Overdose causes it instead." reagent_state = LIQUID color = "#fc2626" @@ -1044,6 +1083,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/dexalin name = "Dexalin" + id = "dexalin" description = "Restores oxygen loss. Overdose causes it instead." reagent_state = LIQUID color = "#13d2f0" @@ -1062,6 +1102,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/kelotane name = "Kelotane" + id = "kelotane" description = "Restores fire damage. Overdose causes it instead." reagent_state = LIQUID color = "#ffc400" @@ -1080,6 +1121,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/antitoxin name = "Anti-Toxin" + id = "antitoxin" description = "Heals toxin damage and removes toxins in the bloodstream. Overdose causes toxin damage." reagent_state = LIQUID color = "#6aff00" @@ -1090,7 +1132,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/antitoxin/on_mob_life(mob/living/carbon/M) M.adjustToxLoss(-2*REM, 0) for(var/datum/reagent/toxin/R in M.reagents.reagent_list) - M.reagents.remove_reagent(R.type,1) + M.reagents.remove_reagent(R.id,1) ..() . = 1 @@ -1101,6 +1143,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/inaprovaline name = "Inaprovaline" + id = "inaprovaline" description = "Stabilizes the breathing of patients. Good for those in critical condition." reagent_state = LIQUID pH = 8.5 @@ -1113,6 +1156,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/tricordrazine name = "Tricordrazine" + id = "tricordrazine" description = "Has a high chance to heal all types of damage. Overdose instead causes it." reagent_state = LIQUID color = "#e650c0" @@ -1138,6 +1182,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/regen_jelly name = "Regenerative Jelly" + id = "regen_jelly" description = "Gradually regenerates all types of damage, without harming slime anatomy." reagent_state = LIQUID color = "#91D865" @@ -1153,6 +1198,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/syndicate_nanites //Used exclusively by Syndicate medical cyborgs name = "Restorative Nanites" + id = "syndicate_nanites" description = "Miniature medical robots that swiftly restore bodily damage." reagent_state = SOLID color = "#555555" @@ -1173,6 +1219,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/lesser_syndicate_nanites // the one in the injector name = "Regenerative Nanites" + id = "lesser_syndicate_nanites" description = "Miniature medical robots that restore damage and get operatives back in the fight." reagent_state = SOLID color = "#555555" @@ -1193,6 +1240,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/neo_jelly name = "Neo Jelly" + id = "neo_jelly" description = "Gradually regenerates all types of damage, without harming slime anatomy.Can OD" reagent_state = LIQUID metabolization_rate = 1 * REAGENTS_METABOLISM @@ -1218,6 +1266,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/earthsblood //Created by ambrosia gaia plants name = "Earthsblood" + id = "earthsblood" description = "Ichor from an extremely powerful plant. Great for restoring wounds, but it's a little heavy on the brain." color = rgb(255, 175, 0) overdose_threshold = 25 @@ -1244,6 +1293,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/haloperidol name = "Haloperidol" + id = "haloperidol" description = "Increases depletion rates for most stimulating/hallucinogenic drugs. Reduces druggy effects and jitteriness. Severe stamina regeneration penalty, causes drowsiness. Small chance of brain damage." reagent_state = LIQUID color = "#27870a" @@ -1252,7 +1302,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/haloperidol/on_mob_life(mob/living/carbon/M) for(var/datum/reagent/drug/R in M.reagents.reagent_list) - M.reagents.remove_reagent(R.type,5) + M.reagents.remove_reagent(R.id,5) M.drowsyness += 2 if(M.jitteriness >= 3) M.jitteriness -= 3 @@ -1266,6 +1316,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/lavaland_extract name = "Lavaland Extract" + id = "lavaland_extract" description = "An extract of lavaland atmospheric and mineral elements. Heals the user in small doses, but is extremely toxic otherwise." color = "#a1a1a1" overdose_threshold = 3 //To prevent people stacking massive amounts of a very strong healing reagent @@ -1287,6 +1338,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) //used for changeling's adrenaline power /datum/reagent/medicine/changelingadrenaline name = "Changeling Adrenaline" + id = "changelingadrenaline" description = "Reduces the duration of unconciousness, knockdown and stuns. Restores stamina, but deals toxin damage when overdosed." color = "#918e53" overdose_threshold = 30 @@ -1307,16 +1359,17 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/changelinghaste name = "Changeling Haste" + id = "changelinghaste" description = "Drastically increases movement speed, but deals toxin damage." color = "#669153" metabolization_rate = 1 /datum/reagent/medicine/changelinghaste/on_mob_metabolize(mob/living/L) ..() - L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING)) + L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING)) /datum/reagent/medicine/changelinghaste/on_mob_end_metabolize(mob/living/L) - L.remove_movespeed_modifier(type) + L.remove_movespeed_modifier(id) ..() /datum/reagent/medicine/changelinghaste/on_mob_life(mob/living/carbon/M) @@ -1328,6 +1381,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) // Heart attack code will not do damage if corazone is present // because it's SPACE MAGIC ASPIRIN name = "Corazone" + id = "corazone" description = "A medication used to treat pain, fever, and inflammation, along with heart attacks." color = "#F5F5F5" self_consuming = TRUE @@ -1345,18 +1399,20 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/muscle_stimulant name = "Muscle Stimulant" + id = "muscle_stimulant" description = "A potent chemical that allows someone under its influence to be at full physical ability even when under massive amounts of pain." /datum/reagent/medicine/muscle_stimulant/on_mob_metabolize(mob/living/M) . = ..() - M.ignore_slowdown(type) + M.ignore_slowdown(id) /datum/reagent/medicine/muscle_stimulant/on_mob_end_metabolize(mob/living/M) . = ..() - M.unignore_slowdown(type) + M.unignore_slowdown(id) /datum/reagent/medicine/modafinil name = "Modafinil" + id = "modafinil" description = "Long-lasting sleep suppressant that very slightly reduces stun and knockdown times. Overdosing has horrendous side effects and deals lethal oxygen damage, will knock you unconscious if not dealt with." reagent_state = LIQUID color = "#BEF7D8" // palish blue white @@ -1367,11 +1423,11 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) pH = 7.89 /datum/reagent/medicine/modafinil/on_mob_metabolize(mob/living/M) - ADD_TRAIT(M, TRAIT_SLEEPIMMUNE, type) + ADD_TRAIT(M, TRAIT_SLEEPIMMUNE, id) ..() /datum/reagent/medicine/modafinil/on_mob_end_metabolize(mob/living/M) - REMOVE_TRAIT(M, TRAIT_SLEEPIMMUNE, type) + REMOVE_TRAIT(M, TRAIT_SLEEPIMMUNE, id) ..() /datum/reagent/medicine/modafinil/on_mob_life(mob/living/carbon/M) @@ -1424,6 +1480,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/psicodine name = "Psicodine" + id = "psicodine" description = "Suppresses anxiety and other various forms of mental distress. Overdose causes hallucinations and minor toxin damage." reagent_state = LIQUID color = "#07E79E" @@ -1433,10 +1490,10 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/psicodine/on_mob_add(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_FEARLESS, type) + ADD_TRAIT(L, TRAIT_FEARLESS, id) /datum/reagent/medicine/psicodine/on_mob_delete(mob/living/L) - REMOVE_TRAIT(L, TRAIT_FEARLESS, type) + REMOVE_TRAIT(L, TRAIT_FEARLESS, id) ..() /datum/reagent/medicine/psicodine/on_mob_life(mob/living/carbon/M) @@ -1458,6 +1515,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/silibinin name = "Silibinin" + id = "silibinin" description = "A thistle derrived hepatoprotective flavolignan mixture that help reverse damage to the liver." reagent_state = SOLID color = "#FFFFD0" @@ -1470,6 +1528,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/polypyr //This is intended to be an ingredient in advanced chems. name = "Polypyrylium Oligomers" + id = "polypyr" description = "A�purple mixture of short polyelectrolyte chains not easily synthesized in the laboratory. It is valued as an intermediate in the synthesis of the cutting edge pharmaceuticals." reagent_state = SOLID color = "#9423FF" diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index dbede29e5f..512b8a21a1 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1,6 +1,7 @@ /datum/reagent/blood data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"= null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null,"quirks"=null) name = "Blood" + id = "blood" value = 1 color = BLOOD_COLOR_HUMAN // rgb: 200, 0, 0 description = "Blood from some creature." @@ -29,7 +30,7 @@ if(iscarbon(L)) var/mob/living/carbon/C = L var/blood_id = C.get_blood_id() - if((HAS_TRAIT(C, TRAIT_NOMARROW) || blood_id == /datum/reagent/blood || blood_id == /datum/reagent/blood/jellyblood) && (method == INJECT || (method == INGEST && C.dna && C.dna.species && (DRINKSBLOOD in C.dna.species.species_traits)))) + if((HAS_TRAIT(C, TRAIT_NOMARROW) || blood_id == "blood" || blood_id == "jellyblood") && (method == INJECT || (method == INGEST && C.dna && C.dna.species && (DRINKSBLOOD in C.dna.species.species_traits)))) C.blood_volume = min(C.blood_volume + round(reac_volume, 0.1), BLOOD_VOLUME_MAXIMUM * C.blood_ratio) // we don't care about bloodtype here, we're just refilling the mob @@ -40,7 +41,7 @@ if((HAS_TRAIT(C, TRAIT_NOMARROW))) return //We dont want vampires getting toxed from blood var/blood_id = C.get_blood_id() - if((blood_id == /datum/reagent/blood || blood_id == /datum/reagent/blood/jellyblood)) + if((blood_id == "blood" || blood_id == "jellyblood")) if(!data || !(data["blood_type"] in get_safe_blood(C.dna.blood_type))) //we only care about bloodtype here because this is where the poisoning should be C.adjustToxLoss(rand(2,8)*REM, TRUE, TRUE) //forced to ensure people don't use it to gain beneficial toxin as slime person ..() @@ -61,7 +62,7 @@ if(data["blood_DNA"]) B.blood_DNA[data["blood_DNA"]] = data["blood_type"] if(!B.reagents) - B.reagents.add_reagent(type, reac_volume) + B.reagents.add_reagent(id, reac_volume) B.update_icon() /datum/reagent/blood/on_new(list/data) @@ -131,12 +132,14 @@ /datum/reagent/blood/synthetics data = list("donor"=null,"viruses"=null,"blood_DNA"="REPLICATED", "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Synthetic Blood" + id = "syntheticblood" taste_description = "oily" color = BLOOD_COLOR_SYNTHETIC // rgb: 11, 7, 48 /datum/reagent/blood/lizard data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_LIZARD, "blood_type"="L","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Lizard Blood" + id = "lizardblood" taste_description = "spicy" color = BLOOD_COLOR_LIZARD // rgb: 11, 7, 48 pH = 6.85 @@ -144,6 +147,7 @@ /datum/reagent/blood/jellyblood data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SLIME, "blood_type"="GEL","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Slime Jelly Blood" + id = "jellyblood" description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL." color = BLOOD_COLOR_SLIME taste_description = "slime" @@ -153,6 +157,7 @@ /datum/reagent/blood/xenomorph data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_XENO, "blood_type"="X*","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Xenomorph Blood" + id = "xenoblood" taste_description = "acidic heresy" color = BLOOD_COLOR_XENO // greenish yellow ooze shot_glass_icon_state = "shotglassgreen" @@ -161,6 +166,7 @@ /datum/reagent/blood/oil data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_OIL, "blood_type"="HF","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Hydraulic Blood" + id = "oilblood" taste_description = "burnt oil" color = BLOOD_COLOR_OIL // dark, y'know, expected batman colors. pH = 9.75 @@ -168,6 +174,7 @@ /datum/reagent/blood/insect data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_BUG, "blood_type"="BUG","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Insectoid Blood" + id = "bugblood" taste_description = "waxy" color = BLOOD_COLOR_BUG // Bug colored, I guess. pH = 7.25 @@ -186,6 +193,7 @@ /datum/reagent/liquidgibs name = "Liquid gibs" + id = "liquidgibs" color = BLOOD_COLOR_HUMAN description = "You don't even want to think about what's in here." taste_description = "gross iron" @@ -195,6 +203,7 @@ /datum/reagent/liquidgibs/xeno name = "Liquid xeno gibs" + id = "liquidxenogibs" color = BLOOD_COLOR_XENO taste_description = "blended heresy" shot_glass_icon_state = "shotglassgreen" @@ -203,6 +212,7 @@ /datum/reagent/liquidgibs/slime name = "Slime sludge" + id = "liquidslimegibs" color = BLOOD_COLOR_SLIME taste_description = "slime" shot_glass_icon_state = "shotglassgreen" @@ -211,12 +221,14 @@ /datum/reagent/liquidgibs/synth name = "Synthetic sludge" + id = "liquidsyntheticgibs" color = BLOOD_COLOR_SYNTHETIC taste_description = "jellied plastic" data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) /datum/reagent/liquidgibs/oil name = "Hydraulic sludge" + id = "liquidoilgibs" color = BLOOD_COLOR_OIL taste_description = "chunky burnt oil" data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_OIL, "blood_type"="HF","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) @@ -225,6 +237,7 @@ /datum/reagent/vaccine //data must contain virus type name = "Vaccine" + id = "vaccine" color = "#C81040" // rgb: 200, 16, 64 taste_description = "slime" @@ -242,6 +255,7 @@ /datum/reagent/water name = "Water" + id = "water" description = "An ubiquitous chemical substance that is composed of hydrogen and oxygen." color = "#AAAAAA77" // rgb: 170, 170, 170, 77 (alpha) taste_description = "water" @@ -313,6 +327,7 @@ /datum/reagent/water/holywater name = "Holy Water" + id = "holywater" description = "Water blessed by some deity." color = "#E0E8EF" // rgb: 224, 232, 239 glass_icon_state = "glass_clear" @@ -322,7 +337,7 @@ /datum/reagent/water/holywater/on_mob_metabolize(mob/living/L) . = ..() - ADD_TRAIT(L, TRAIT_HOLY, type) + ADD_TRAIT(L, TRAIT_HOLY, id) if(is_servant_of_ratvar(L)) to_chat(L, "A fog spreads through your mind, purging the Justiciar's influence!") @@ -330,7 +345,7 @@ to_chat(L, "A fog spreads through your mind, weakening your connection to the veil and purging Nar-sie's influence") /datum/reagent/water/holywater/on_mob_end_metabolize(mob/living/L) - REMOVE_TRAIT(L, TRAIT_HOLY, type) + REMOVE_TRAIT(L, TRAIT_HOLY, id) if(iscultist(L)) for(var/datum/action/innate/cult/blood_magic/BM in L.actions) BM.holy_dispel = FALSE @@ -377,9 +392,9 @@ remove_servant_of_ratvar(M) M.jitteriness = 0 M.stuttering = 0 - holder.del_reagent(type) // maybe this is a little too perfect and a max() cap on the statuses would be better?? + holder.remove_reagent(id, volume) // maybe this is a little too perfect and a max() cap on the statuses would be better?? return - holder.remove_reagent(type, 0.4) //fixed consumption to prevent balancing going out of whack + holder.remove_reagent(id, 0.4) //fixed consumption to prevent balancing going out of whack /datum/reagent/water/holywater/reaction_turf(turf/T, reac_volume) ..() @@ -392,13 +407,14 @@ /datum/reagent/fuel/unholywater //if you somehow managed to extract this from someone, dont splash it on yourself and have a smoke name = "Unholy Water" + id = "unholywater" description = "Something that shouldn't exist on this plane of existence." taste_description = "suffering" pH = 6.5 /datum/reagent/fuel/unholywater/reaction_mob(mob/living/M, method=TOUCH, reac_volume) if(method == TOUCH || method == VAPOR) - M.reagents.add_reagent(type, reac_volume/4) + M.reagents.add_reagent(id,reac_volume/4) return return ..() @@ -421,11 +437,12 @@ M.adjustFireLoss(2, 0) M.adjustOxyLoss(2, 0) M.adjustBruteLoss(2, 0) - holder.remove_reagent(type, 1) + holder.remove_reagent(id, 1) return TRUE /datum/reagent/hellwater //if someone has this in their system they've really pissed off an eldrich god name = "Hell Water" + id = "hell_water" description = "YOUR FLESH! IT BURNS!" taste_description = "burning" @@ -435,11 +452,12 @@ M.adjustToxLoss(1, 0) M.adjustFireLoss(1, 0) //Hence the other damages... ain't I a bastard? M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5, 150) - holder.remove_reagent(type, 1) + holder.remove_reagent(id, 1) pH = 0.1 /datum/reagent/fuel/holyoil //Its oil name = "Zelus Oil" + id = "holyoil" description = "Oil blessed by a greater being." taste_description = "metallic oil" @@ -463,7 +481,7 @@ M.adjustToxLoss(3, 0) M.adjustOxyLoss(2, 0) M.adjustStaminaLoss(10, 0) - holder.remove_reagent(type, 1) + holder.remove_reagent(id, 1) return TRUE //We only get 30u to start with... @@ -478,11 +496,13 @@ /datum/reagent/medicine/omnizine/godblood name = "Godblood" + id = "godblood" description = "Slowly heals all damage types. Has a rather high overdose threshold. Glows with mysterious power." overdose_threshold = 150 /datum/reagent/lube name = "Space Lube" + id = "lube" description = "Lubricant is a substance introduced between two moving surfaces to reduce the friction and wear between them. giggity." color = "#009CA8" // rgb: 0, 156, 168 taste_description = "cherry" // by popular demand @@ -497,11 +517,13 @@ ///Stronger kind of lube. Applies TURF_WET_SUPERLUBE. /datum/reagent/lube/superlube name = "Super Duper Lube" + id = "superlube" description = "This \[REDACTED\] has been outlawed after the incident on \[DATA EXPUNGED\]." lube_kind = TURF_WET_SUPERLUBE /datum/reagent/spraytan name = "Spray Tan" + id = "spraytan" description = "A substance applied to the skin to darken the skin." color = "#FFC080" // rgb: 255, 196, 128 Bright orange metabolization_rate = 10 * REAGENTS_METABOLISM // very fast, so it can be applied rapidly. But this changes on an overdose @@ -598,6 +620,7 @@ /datum/reagent/mutationtoxin name = "Stable Mutation Toxin" + id = "stablemutationtoxin" description = "A humanizing toxin." color = "#5EFF3B" //RGB: 94, 255, 59 metabolization_rate = INFINITY //So it instantly removes all of itself @@ -628,6 +651,7 @@ /datum/reagent/mutationtoxin/classic //The one from plasma on green slimes name = "Mutation Toxin" + id = "mutationtoxin" description = "A corruptive toxin." color = "#13BC5E" // rgb: 19, 188, 94 race = /datum/species/jelly/slime @@ -635,12 +659,14 @@ /datum/reagent/mutationtoxin/felinid name = "Felinid Mutation Toxin" + id = "felinidmutationtoxin" color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/human/felinid mutationtext = "The pain subsides. You feel... like a degenerate." /datum/reagent/mutationtoxin/lizard name = "Lizard Mutation Toxin" + id = "lizardmutationtoxin" description = "A lizarding toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/lizard @@ -648,6 +674,7 @@ /datum/reagent/mutationtoxin/fly name = "Fly Mutation Toxin" + id = "flymutationtoxin" description = "An insectifying toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/fly @@ -655,6 +682,7 @@ /datum/reagent/mutationtoxin/insect name = "Insect Mutation Toxin" + id = "mothmutationtoxin" description = "A glowing toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/insect @@ -662,6 +690,7 @@ /datum/reagent/mutationtoxin/pod name = "Podperson Mutation Toxin" + id = "podmutationtoxin" description = "A vegetalizing toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/pod @@ -669,6 +698,7 @@ /datum/reagent/mutationtoxin/jelly name = "Imperfect Mutation Toxin" + id = "jellymutationtoxin" description = "An jellyfying toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/jelly @@ -676,6 +706,7 @@ /datum/reagent/mutationtoxin/golem name = "Golem Mutation Toxin" + id = "golemmutationtoxin" description = "A crystal toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/golem/random @@ -683,6 +714,7 @@ /datum/reagent/mutationtoxin/abductor name = "Abductor Mutation Toxin" + id = "abductormutationtoxin" description = "An alien toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/abductor @@ -690,6 +722,7 @@ /datum/reagent/mutationtoxin/android name = "Android Mutation Toxin" + id = "androidmutationtoxin" description = "A robotic toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/android @@ -698,6 +731,7 @@ //Citadel Races /datum/reagent/mutationtoxin/mammal name = "Mammal Mutation Toxin" + id = "mammalmutationtoxin" description = "A glowing toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/mammal @@ -705,6 +739,7 @@ /datum/reagent/mutationtoxin/insect name = "Insect Mutation Toxin" + id = "insectmutationtoxin" description = "A glowing toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/insect @@ -712,6 +747,7 @@ /datum/reagent/mutationtoxin/xenoperson name = "Xeno-Hybrid Mutation Toxin" + id = "xenopersonmutationtoxin" description = "A glowing toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/xeno @@ -720,6 +756,7 @@ //BLACKLISTED RACES /datum/reagent/mutationtoxin/skeleton name = "Skeleton Mutation Toxin" + id = "skeletonmutationtoxin" description = "A scary toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/skeleton @@ -727,6 +764,7 @@ /datum/reagent/mutationtoxin/zombie name = "Zombie Mutation Toxin" + id = "zombiemutationtoxin" description = "An undead toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/zombie //Not the infectious kind. The days of xenobio zombie outbreaks are long past. @@ -734,6 +772,7 @@ /datum/reagent/mutationtoxin/ash name = "Ash Mutation Toxin" + id = "ashmutationtoxin" description = "An ashen toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/lizard/ashwalker @@ -743,6 +782,7 @@ //DANGEROUS RACES /datum/reagent/mutationtoxin/shadow name = "Shadow Mutation Toxin" + id = "shadowmutationtoxin" description = "A dark toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/shadow @@ -750,6 +790,7 @@ /datum/reagent/mutationtoxin/plasma name = "Plasma Mutation Toxin" + id = "plasmamutationtoxin" description = "A plasma-based toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/plasmaman @@ -757,6 +798,7 @@ /datum/reagent/slime_toxin name = "Slime Mutation Toxin" + id = "slime_toxin" description = "A toxin that turns organic material into slime." color = "#5EFF3B" //RGB: 94, 255, 59 taste_description = "slime" @@ -773,7 +815,7 @@ to_chat(H, "Your jelly shifts and morphs, turning you into another subspecies!") var/species_type = pick(subtypesof(/datum/species/jelly)) H.set_species(species_type) - H.reagents.del_reagent(type) + H.reagents.del_reagent(id) switch(current_cycle) if(1 to 6) @@ -788,11 +830,12 @@ if(20 to INFINITY) var/species_type = pick(subtypesof(/datum/species/jelly)) H.set_species(species_type) - H.reagents.del_reagent(type) + H.reagents.del_reagent(id) to_chat(H, "You've become \a jellyperson!") /datum/reagent/mulligan name = "Mulligan Toxin" + id = "mulligan" description = "This toxin will rapidly change the DNA of human beings. Commonly used by Syndicate spies and assassins in need of an emergency ID change." color = "#5EFF3B" //RGB: 94, 255, 59 metabolization_rate = INFINITY @@ -808,6 +851,7 @@ /datum/reagent/aslimetoxin name = "Advanced Mutation Toxin" + id = "amutationtoxin" description = "An advanced corruptive toxin produced by slimes." color = "#13BC5E" // rgb: 19, 188, 94 taste_description = "slime" @@ -818,6 +862,7 @@ /datum/reagent/gluttonytoxin name = "Gluttony's Blessing" + id = "gluttonytoxin" description = "An advanced corruptive toxin produced by something terrible." color = "#5EFF3B" //RGB: 94, 255, 59 can_synth = FALSE @@ -828,6 +873,7 @@ /datum/reagent/serotrotium name = "Serotrotium" + id = "serotrotium" description = "A chemical compound that promotes concentrated production of the serotonin neurotransmitter in humans." color = "#202040" // rgb: 20, 20, 40 metabolization_rate = 0.25 * REAGENTS_METABOLISM @@ -842,6 +888,7 @@ /datum/reagent/oxygen name = "Oxygen" + id = "oxygen" description = "A colorless, odorless gas. Grows on trees but is still pretty valuable." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 @@ -862,6 +909,7 @@ /datum/reagent/copper name = "Copper" + id = "copper" description = "A highly ductile metal. Things made out of copper aren't very durable, but it makes a decent material for electrical wiring." reagent_state = SOLID color = "#6E3B08" // rgb: 110, 59, 8 @@ -877,6 +925,7 @@ /datum/reagent/nitrogen name = "Nitrogen" + id = "nitrogen" description = "A colorless, odorless, tasteless gas. A simple asphyxiant that can silently displace vital oxygen." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 @@ -897,6 +946,7 @@ /datum/reagent/hydrogen name = "Hydrogen" + id = "hydrogen" description = "A colorless, odorless, nonmetallic, tasteless, highly combustible diatomic gas." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 @@ -905,6 +955,7 @@ /datum/reagent/potassium name = "Potassium" + id = "potassium" description = "A soft, low-melting solid that can easily be cut with a knife. Reacts violently with water." reagent_state = SOLID color = "#A0A0A0" // rgb: 160, 160, 160 @@ -912,6 +963,7 @@ /datum/reagent/mercury name = "Mercury" + id = "mercury" description = "A curious metal that's a liquid at room temperature. Neurodegenerative and very bad for the mind." color = "#484848" // rgb: 72, 72, 72A taste_mult = 0 // apparently tasteless. @@ -926,6 +978,7 @@ /datum/reagent/sulfur name = "Sulfur" + id = "sulfur" description = "A sickly yellow solid mostly known for its nasty smell. It's actually much more helpful than it looks in biochemisty." reagent_state = SOLID color = "#BF8C00" // rgb: 191, 140, 0 @@ -934,6 +987,7 @@ /datum/reagent/carbon name = "Carbon" + id = "carbon" description = "A crumbly black solid that, while unexciting on an physical level, forms the base of all known life. Kind of a big deal." reagent_state = SOLID color = "#1C1300" // rgb: 30, 20, 0 @@ -948,6 +1002,7 @@ /datum/reagent/chlorine name = "Chlorine" + id = "chlorine" description = "A pale yellow gas that's well known as an oxidizer. While it forms many harmless molecules in its elemental form it is far from harmless." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 @@ -961,6 +1016,7 @@ /datum/reagent/fluorine name = "Fluorine" + id = "fluorine" description = "A comically-reactive chemical element. The universe does not want this stuff to exist in this form in the slightest." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 @@ -974,6 +1030,7 @@ /datum/reagent/sodium name = "Sodium" + id = "sodium" description = "A soft silver metal that can easily be cut with a knife. It's not salt just yet, so refrain from putting in on your chips." reagent_state = SOLID color = "#808080" // rgb: 128, 128, 128 @@ -982,6 +1039,7 @@ /datum/reagent/phosphorus name = "Phosphorus" + id = "phosphorus" description = "A ruddy red powder that burns readily. Though it comes in many colors, the general theme is always the same." reagent_state = SOLID color = "#832828" // rgb: 131, 40, 40 @@ -990,6 +1048,7 @@ /datum/reagent/lithium name = "Lithium" + id = "lithium" description = "A silver metal, its claim to fame is its remarkably low density. Using it is a bit too effective in calming oneself down." reagent_state = SOLID color = "#808080" // rgb: 128, 128, 128 @@ -1005,6 +1064,7 @@ /datum/reagent/glycerol name = "Glycerol" + id = "glycerol" description = "Glycerol is a simple polyol compound. Glycerol is sweet-tasting and of low toxicity." color = "#808080" // rgb: 128, 128, 128 taste_description = "sweetness" @@ -1012,6 +1072,7 @@ /datum/reagent/radium name = "Radium" + id = "radium" description = "Radium is an alkaline earth metal. It is extremely radioactive." reagent_state = SOLID color = "#C7C7C7" // rgb: 199,199,199 @@ -1028,10 +1089,11 @@ var/obj/effect/decal/cleanable/greenglow/GG = locate() in T.contents if(!GG) GG = new/obj/effect/decal/cleanable/greenglow(T) - GG.reagents.add_reagent(/datum/reagent/radium, reac_volume) + GG.reagents.add_reagent("radium", reac_volume) /datum/reagent/space_cleaner/sterilizine name = "Sterilizine" + id = "sterilizine" description = "Sterilizes wounds in preparation for surgery." color = "#e6f1f5" // rgb: 200, 165, 220 taste_description = "bitterness" @@ -1047,6 +1109,7 @@ /datum/reagent/iron name = "Iron" + id = "iron" description = "Pure iron is a metal." reagent_state = SOLID taste_description = "iron" @@ -1064,12 +1127,12 @@ /datum/reagent/iron/reaction_mob(mob/living/M, method=TOUCH, reac_volume) if(M.has_bane(BANE_IRON)) //If the target is weak to cold iron, then poison them. if(holder && holder.chem_temp < 100) // COLD iron. - M.reagents.add_reagent(/datum/reagent/toxin, reac_volume) + M.reagents.add_reagent("toxin", reac_volume) ..() /datum/reagent/iron/overdose_start(mob/living/M) to_chat(M, "You start feeling your guts twisting painfully!") - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/overdose, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/overdose, name) /datum/reagent/iron/overdose_process(mob/living/carbon/C) if(prob(20)) @@ -1080,6 +1143,7 @@ /datum/reagent/gold name = "Gold" + id = "gold" description = "Gold is a dense, soft, shiny metal and the most malleable and ductile metal known." reagent_state = SOLID color = "#F7C430" // rgb: 247, 196, 48 @@ -1087,6 +1151,7 @@ /datum/reagent/silver name = "Silver" + id = "silver" description = "A soft, white, lustrous transition metal, it has the highest electrical conductivity of any element and the highest thermal conductivity of any metal." reagent_state = SOLID color = "#D0D0D0" // rgb: 208, 208, 208 @@ -1094,11 +1159,12 @@ /datum/reagent/silver/reaction_mob(mob/living/M, method=TOUCH, reac_volume) if(M.has_bane(BANE_SILVER)) - M.reagents.add_reagent(/datum/reagent/toxin, reac_volume) + M.reagents.add_reagent("toxin", reac_volume) ..() /datum/reagent/uranium name ="Uranium" + id = "uranium" description = "A silvery-white metallic chemical element in the actinide series, weakly radioactive." reagent_state = SOLID color = "#B8B8C0" // rgb: 184, 184, 192 @@ -1115,10 +1181,11 @@ var/obj/effect/decal/cleanable/greenglow/GG = locate() in T.contents if(!GG) GG = new/obj/effect/decal/cleanable/greenglow(T) - GG.reagents.add_reagent(/datum/reagent/uranium, reac_volume) + GG.reagents.add_reagent("uranium", reac_volume) /datum/reagent/bluespace name = "Bluespace Dust" + id = "bluespace" description = "A dust composed of microscopic bluespace crystals, with minor space-warping properties." reagent_state = SOLID color = "#0000CC" @@ -1143,6 +1210,7 @@ /datum/reagent/aluminium name = "Aluminium" + id = "aluminium" description = "A silvery white and ductile member of the boron group of chemical elements." reagent_state = SOLID color = "#A8A8A8" // rgb: 168, 168, 168 @@ -1150,6 +1218,7 @@ /datum/reagent/silicon name = "Silicon" + id = "silicon" description = "A tetravalent metalloid, silicon is less reactive than its chemical analog carbon." reagent_state = SOLID color = "#A8A8A8" // rgb: 168, 168, 168 @@ -1158,6 +1227,7 @@ /datum/reagent/fuel name = "Welding fuel" + id = "welding_fuel" description = "Required for welders. Flamable." color = "#660000" // rgb: 102, 0, 0 taste_description = "gross metal" @@ -1180,6 +1250,7 @@ /datum/reagent/space_cleaner name = "Space cleaner" + id = "cleaner" description = "A compound used to clean things. Now with 50% more sodium hypochlorite!" color = "#A5F0EE" // rgb: 165, 240, 238 taste_description = "sourness" @@ -1246,6 +1317,7 @@ /datum/reagent/space_cleaner/ez_clean name = "EZ Clean" + id = "ez_clean" description = "A powerful, acidic cleaner sold by Waffle Co. Affects organic matter while leaving other objects unaffected." metabolization_rate = 1.5 * REAGENTS_METABOLISM taste_description = "acid" @@ -1265,6 +1337,7 @@ /datum/reagent/cryptobiolin name = "Cryptobiolin" + id = "cryptobiolin" description = "Cryptobiolin causes confusion and dizziness." color = "#7529b3" // rgb: 200, 165, 220 metabolization_rate = 1.5 * REAGENTS_METABOLISM @@ -1280,6 +1353,7 @@ /datum/reagent/impedrezene name = "Impedrezene" + id = "impedrezene" description = "Impedrezene is a narcotic that impedes one's ability by slowing down the higher brain cell functions." color = "#587a31" // rgb: 200, 165, 220A taste_description = "numbness" @@ -1297,6 +1371,7 @@ /datum/reagent/nanomachines name = "Nanomachines" + id = "nanomachines" description = "Microscopic construction robots." color = "#535E66" // rgb: 83, 94, 102 can_synth = FALSE @@ -1308,6 +1383,7 @@ /datum/reagent/xenomicrobes name = "Xenomicrobes" + id = "xenomicrobes" description = "Microbes with an entirely alien cellular structure." color = "#535E66" // rgb: 83, 94, 102 can_synth = FALSE @@ -1319,6 +1395,7 @@ /datum/reagent/fungalspores name = "Tubercle bacillus Cosmosis microbes" + id = "fungalspores" description = "Active fungal spores." color = "#92D17D" // rgb: 146, 209, 125 can_synth = FALSE @@ -1331,6 +1408,7 @@ /datum/reagent/fluorosurfactant//foam precursor name = "Fluorosurfactant" + id = "fluorosurfactant" description = "A perfluoronated sulfonic acid that forms a foam when mixed with water." color = "#9E6B38" // rgb: 158, 107, 56 taste_description = "metal" @@ -1338,6 +1416,7 @@ /datum/reagent/foaming_agent// Metal foaming agent. This is lithium hydride. Add other recipes (e.g. LiH + H2O -> LiOH + H2) eventually. name = "Foaming agent" + id = "foaming_agent" description = "An agent that yields metallic foam when mixed with light metal and a strong acid." reagent_state = SOLID color = "#664B63" // rgb: 102, 75, 99 @@ -1346,6 +1425,7 @@ /datum/reagent/smart_foaming_agent //Smart foaming agent. Functions similarly to metal foam, but conforms to walls. name = "Smart foaming agent" + id = "smart_foaming_agent" description = "An agent that yields metallic foam which conforms to area boundaries when mixed with light metal and a strong acid." reagent_state = SOLID color = "#664B63" // rgb: 102, 75, 99 @@ -1354,6 +1434,7 @@ /datum/reagent/ammonia name = "Ammonia" + id = "ammonia" description = "A caustic substance commonly used in fertilizer or household cleaners." reagent_state = GAS color = "#404030" // rgb: 64, 64, 48 @@ -1362,6 +1443,7 @@ /datum/reagent/diethylamine name = "Diethylamine" + id = "diethylamine" description = "A secondary amine, mildly corrosive." color = "#604030" // rgb: 96, 64, 48 taste_description = "iron" @@ -1369,6 +1451,7 @@ /datum/reagent/carbondioxide name = "Carbon Dioxide" + id = "co2" reagent_state = GAS description = "A gas commonly produced by burning carbon fuels. You're constantly producing this in your lungs." color = "#B0B0B0" // rgb : 192, 192, 192 @@ -1389,6 +1472,7 @@ /datum/reagent/nitrous_oxide name = "Nitrous Oxide" + id = "nitrous_oxide" description = "A potent oxidizer used as fuel in rockets and as an anaesthetic during surgery." reagent_state = LIQUID metabolization_rate = 1.5 * REAGENTS_METABOLISM @@ -1423,6 +1507,7 @@ /datum/reagent/stimulum name = "Stimulum" + id = "stimulum" description = "An unstable experimental gas that greatly increases the energy of those that inhale it" reagent_state = GAS metabolization_rate = 1.5 * REAGENTS_METABOLISM @@ -1431,22 +1516,23 @@ /datum/reagent/stimulum/on_mob_metabolize(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_STUNIMMUNE, type) - ADD_TRAIT(L, TRAIT_SLEEPIMMUNE, type) + ADD_TRAIT(L, TRAIT_STUNIMMUNE, id) + ADD_TRAIT(L, TRAIT_SLEEPIMMUNE, id) /datum/reagent/stimulum/on_mob_end_metabolize(mob/living/L) - REMOVE_TRAIT(L, TRAIT_STUNIMMUNE, type) - REMOVE_TRAIT(L, TRAIT_SLEEPIMMUNE, type) + REMOVE_TRAIT(L, TRAIT_STUNIMMUNE, id) + REMOVE_TRAIT(L, TRAIT_SLEEPIMMUNE, id) ..() /datum/reagent/stimulum/on_mob_life(mob/living/carbon/M) M.adjustStaminaLoss(-2*REM, 0) current_cycle++ - holder.remove_reagent(type, 0.99) //Gives time for the next tick of life(). + holder.remove_reagent(id, 0.99) //Gives time for the next tick of life(). . = TRUE //Update status effects. /datum/reagent/nitryl name = "Nitryl" + id = "no2" description = "A highly reactive gas that makes you feel faster" reagent_state = GAS metabolization_rate = REAGENTS_METABOLISM @@ -1456,10 +1542,10 @@ /datum/reagent/nitryl/on_mob_metabolize(mob/living/L) ..() - L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) + L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) /datum/reagent/nitryl/on_mob_end_metabolize(mob/living/L) - L.remove_movespeed_modifier(type) + L.remove_movespeed_modifier(id) ..() /////////////////////////Coloured Crayon Powder//////////////////////////// @@ -1468,6 +1554,7 @@ /datum/reagent/colorful_reagent/crayonpowder name = "Crayon Powder" + id = "crayon powder" var/colorname = "none" description = "A powder made by grinding down crayons, good for colouring chemical reagents." reagent_state = SOLID @@ -1481,6 +1568,7 @@ /datum/reagent/colorful_reagent/crayonpowder/red name = "Red Crayon Powder" + id = "redcrayonpowder" colorname = "red" color = "#DA0000" // red random_color_list = list("#DA0000") @@ -1488,6 +1576,7 @@ /datum/reagent/colorful_reagent/crayonpowder/orange name = "Orange Crayon Powder" + id = "orangecrayonpowder" colorname = "orange" color = "#FF9300" // orange random_color_list = list("#FF9300") @@ -1495,6 +1584,7 @@ /datum/reagent/colorful_reagent/crayonpowder/yellow name = "Yellow Crayon Powder" + id = "yellowcrayonpowder" colorname = "yellow" color = "#FFF200" // yellow random_color_list = list("#FFF200") @@ -1502,6 +1592,7 @@ /datum/reagent/colorful_reagent/crayonpowder/green name = "Green Crayon Powder" + id = "greencrayonpowder" colorname = "green" color = "#A8E61D" // green random_color_list = list("#A8E61D") @@ -1509,6 +1600,7 @@ /datum/reagent/colorful_reagent/crayonpowder/blue name = "Blue Crayon Powder" + id = "bluecrayonpowder" colorname = "blue" color = "#00B7EF" // blue random_color_list = list("#00B7EF") @@ -1516,6 +1608,7 @@ /datum/reagent/colorful_reagent/crayonpowder/purple name = "Purple Crayon Powder" + id = "purplecrayonpowder" colorname = "purple" color = "#DA00FF" // purple random_color_list = list("#DA00FF") @@ -1523,18 +1616,21 @@ /datum/reagent/colorful_reagent/crayonpowder/invisible name = "Invisible Crayon Powder" + id = "invisiblecrayonpowder" colorname = "invisible" color = "#FFFFFF00" // white + no alpha random_color_list = list(null) //because using the powder color turns things invisible /datum/reagent/colorful_reagent/crayonpowder/black name = "Black Crayon Powder" + id = "blackcrayonpowder" colorname = "black" color = "#1C1C1C" // not quite black random_color_list = list("#404040") /datum/reagent/colorful_reagent/crayonpowder/white name = "White Crayon Powder" + id = "whitecrayonpowder" colorname = "white" color = "#FFFFFF" // white random_color_list = list("#FFFFFF") //doesn't actually change appearance at all @@ -1543,6 +1639,7 @@ /datum/reagent/plantnutriment name = "Generic nutriment" + id = "plantnutriment" description = "Some kind of nutriment. You can't really tell what it is. You should probably report it, along with how you obtained it." color = "#000000" // RBG: 0, 0, 0 var/tox_prob = 0 @@ -1557,6 +1654,7 @@ /datum/reagent/plantnutriment/eznutriment name = "E-Z-Nutrient" + id = "eznutriment" description = "Cheap and extremely common type of plant nutriment." color = "#376400" // RBG: 50, 100, 0 tox_prob = 10 @@ -1564,6 +1662,7 @@ /datum/reagent/plantnutriment/left4zednutriment name = "Left 4 Zed" + id = "left4zednutriment" description = "Unstable nutriment that makes plants mutate more often than usual." color = "#1A1E4D" // RBG: 26, 30, 77 tox_prob = 25 @@ -1571,6 +1670,7 @@ /datum/reagent/plantnutriment/robustharvestnutriment name = "Robust Harvest" + id = "robustharvestnutriment" description = "Very potent nutriment that prevents plants from mutating." color = "#9D9D00" // RBG: 157, 157, 0 tox_prob = 15 @@ -1580,6 +1680,7 @@ /datum/reagent/oil name = "Oil" + id = "oil" description = "Burns in a small smoky fire, mostly used to get Ash." reagent_state = LIQUID color = "#292929" @@ -1587,6 +1688,7 @@ /datum/reagent/stable_plasma name = "Stable Plasma" + id = "stable_plasma" description = "Non-flammable plasma locked into a liquid form that cannot ignite or become gaseous/solid." reagent_state = LIQUID color = "#6b008f" @@ -1600,6 +1702,7 @@ /datum/reagent/iodine name = "Iodine" + id = "iodine" description = "Commonly added to table salt as a nutrient. On its own it tastes far less pleasing." reagent_state = LIQUID color = "#694600" @@ -1608,6 +1711,7 @@ /datum/reagent/bromine name = "Bromine" + id = "bromine" description = "A brownish liquid that's highly reactive. Useful for stopping free radicals, but not intended for human consumption." reagent_state = LIQUID color = "#b37740" @@ -1616,6 +1720,7 @@ /datum/reagent/phenol name = "Phenol" + id = "phenol" description = "An aromatic ring of carbon with a hydroxyl group. A useful precursor to some medicines, but has no healing properties on its own." reagent_state = LIQUID taste_description = "sweet and tarry" //Again, not a strong acid. @@ -1624,6 +1729,7 @@ /datum/reagent/ash name = "Ash" + id = "ash" description = "Supposedly phoenixes rise from these, but you've never seen it." reagent_state = LIQUID color = "#665c56" @@ -1632,6 +1738,7 @@ /datum/reagent/acetone name = "Acetone" + id = "acetone" description = "A slick, slightly carcinogenic liquid. Has a multitude of mundane uses in everyday life." reagent_state = LIQUID taste_description = "solvent"//It's neutral though..? @@ -1639,6 +1746,7 @@ /datum/reagent/colorful_reagent name = "Colorful Reagent" + id = "colorful_reagent" description = "Thoroughly sample the rainbow." reagent_state = LIQUID color = "#FFFF00" @@ -1668,6 +1776,7 @@ /datum/reagent/hair_dye name = "Quantum Hair Dye" + id = "hair_dye" description = "Has a high chance of making you look like a mad scientist." reagent_state = LIQUID color = "#ff00dd" @@ -1684,6 +1793,7 @@ /datum/reagent/barbers_aid name = "Barber's Aid" + id = "barbers_aid" description = "A solution to hair loss across the world." reagent_state = LIQUID color = "#fac34b" @@ -1701,6 +1811,7 @@ /datum/reagent/concentrated_barbers_aid name = "Concentrated Barber's Aid" + id = "concentrated_barbers_aid" description = "A concentrated solution to hair loss across the world." reagent_state = LIQUID color = "#ffaf00" @@ -1716,6 +1827,7 @@ /datum/reagent/saltpetre name = "Saltpetre" + id = "saltpetre" description = "Volatile. Controversial. Third Thing." reagent_state = LIQUID color = "#60A584" // rgb: 96, 165, 132 @@ -1724,6 +1836,7 @@ /datum/reagent/lye name = "Lye" + id = "lye" description = "Also known as sodium hydroxide. As a profession making this is somewhat underwhelming." reagent_state = LIQUID color = "#FFFFD6" // very very light yellow @@ -1732,6 +1845,7 @@ /datum/reagent/drying_agent name = "Drying agent" + id = "drying_agent" description = "A desiccant. Can be used to dry things." reagent_state = LIQUID color = "#A70FFF" @@ -1751,118 +1865,189 @@ // Liquid Carpets /datum/reagent/carpet name = "Liquid Carpet" + id = "carpet" description = "For those that need a more creative way to roll out a carpet." reagent_state = LIQUID color = "#b51d05" taste_description = "carpet" // Your tounge feels furry. - var/carpet_type = /turf/open/floor/carpet /datum/reagent/carpet/reaction_turf(turf/T, reac_volume) if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) var/turf/open/floor/F = T - F.PlaceOnTop(carpet_type, flags = CHANGETURF_INHERIT_AIR) + F.PlaceOnTop(/turf/open/floor/carpet) ..() /datum/reagent/carpet/black name = "Liquid Black Carpet" + id = "blackcarpet" color = "#363636" - carpet_type = /turf/open/floor/carpet/black + +/datum/reagent/carpet/black/reaction_turf(turf/T, reac_volume) + if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) + var/turf/open/floor/F = T + F.PlaceOnTop(/turf/open/floor/carpet/black) + ..() /datum/reagent/carpet/blackred name = "Liquid Red Black Carpet" + id = "blackredcarpet" color = "#342125" - carpet_type = /turf/open/floor/carpet/blackred + +/datum/reagent/carpet/blackred/reaction_turf(turf/T, reac_volume) + if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) + var/turf/open/floor/F = T + F.PlaceOnTop(/turf/open/floor/carpet/blackred) + ..() /datum/reagent/carpet/monochrome name = "Liquid Monochrome Carpet" + id = "monochromecarpet" color = "#b4b4b4" - carpet_type = /turf/open/floor/carpet/monochrome + +/datum/reagent/carpet/monochrome/reaction_turf(turf/T, reac_volume) + if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) + var/turf/open/floor/F = T + F.PlaceOnTop(/turf/open/floor/carpet/monochrome) + ..() /datum/reagent/carpet/blue name = "Liquid Blue Carpet" + id = "bluecarpet" color = "#1256ff" - carpet_type = /turf/open/floor/carpet/blue + +/datum/reagent/carpet/blue/reaction_turf(turf/T, reac_volume) + if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) + var/turf/open/floor/F = T + F.PlaceOnTop(/turf/open/floor/carpet/blue) + ..() /datum/reagent/carpet/cyan name = "Liquid Cyan Carpet" + id = "cyancarpet" color = "#3acfb9" - carpet_type = /turf/open/floor/carpet/cyan + +/datum/reagent/carpet/cyan/reaction_turf(turf/T, reac_volume) + if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) + var/turf/open/floor/F = T + F.PlaceOnTop(/turf/open/floor/carpet/cyan) + ..() /datum/reagent/carpet/green name = "Liquid Green Carpet" + id = "greencarpet" color = "#619b62" - carpet_type = /turf/open/floor/carpet/green + +/datum/reagent/carpet/green/reaction_turf(turf/T, reac_volume) + if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) + var/turf/open/floor/F = T + F.PlaceOnTop(/turf/open/floor/carpet/green) + ..() /datum/reagent/carpet/orange name = "Liquid Orange Carpet" + id = "orangecarpet" color = "#cc7900" - carpet_type = /turf/open/floor/carpet/orange + +/datum/reagent/carpet/orange/reaction_turf(turf/T, reac_volume) + if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) + var/turf/open/floor/F = T + F.PlaceOnTop(/turf/open/floor/carpet/orange) + ..() /datum/reagent/carpet/purple name = "Liquid Purple Carpet" + id = "purplecarpet" color = "#6d3392" - carpet_type = /turf/open/floor/carpet/purple +/datum/reagent/carpet/purple/reaction_turf(turf/T, reac_volume) + if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) + var/turf/open/floor/F = T + F.PlaceOnTop(/turf/open/floor/carpet/purple) + ..() /datum/reagent/carpet/red name = "Liquid Red Carpet" + id = "redcarpet" color = "#871515" - carpet_type = /turf/open/floor/carpet/red +/datum/reagent/carpet/red/reaction_turf(turf/T, reac_volume) + if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) + var/turf/open/floor/F = T + F.PlaceOnTop(/turf/open/floor/carpet/red) + ..() /datum/reagent/carpet/royalblack name = "Liquid Royal Black Carpet" + id = "royalblackcarpet" color = "#483d05" - carpet_type = /turf/open/floor/carpet/royalblack +/datum/reagent/carpet/royalblack/reaction_turf(turf/T, reac_volume) + if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) + var/turf/open/floor/F = T + F.PlaceOnTop(/turf/open/floor/carpet/royalblack) + ..() /datum/reagent/carpet/royalblue name = "Liquid Royal Blue Carpet" + id = "royalbluecarpet" color = "#24227e" - carpet_type = /turf/open/floor/carpet/royalblue + +/datum/reagent/carpet/royalblue/reaction_turf(turf/T, reac_volume) + if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) + var/turf/open/floor/F = T + F.PlaceOnTop(/turf/open/floor/carpet/royalblue) + ..() // Virology virus food chems. /datum/reagent/toxin/mutagen/mutagenvirusfood name = "mutagenic agar" + id = "mutagenvirusfood" color = "#A3C00F" // rgb: 163,192,15 taste_description = "sourness" /datum/reagent/toxin/mutagen/mutagenvirusfood/sugar name = "sucrose agar" + id = "sugarvirusfood" color = "#41B0C0" // rgb: 65,176,192 taste_description = "sweetness" /datum/reagent/medicine/synaptizine/synaptizinevirusfood name = "virus rations" + id = "synaptizinevirusfood" color = "#D18AA5" // rgb: 209,138,165 taste_description = "bitterness" /datum/reagent/toxin/plasma/plasmavirusfood name = "virus plasma" + id = "plasmavirusfood" color = "#A69DA9" // rgb: 166,157,169 taste_description = "bitterness" taste_mult = 1.5 /datum/reagent/toxin/plasma/plasmavirusfood/weak name = "weakened virus plasma" + id = "weakplasmavirusfood" color = "#CEC3C6" // rgb: 206,195,198 taste_description = "bitterness" taste_mult = 1.5 /datum/reagent/uranium/uraniumvirusfood name = "decaying uranium gel" + id = "uraniumvirusfood" color = "#67ADBA" // rgb: 103,173,186 taste_description = "the inside of a reactor" /datum/reagent/uranium/uraniumvirusfood/unstable name = "unstable uranium gel" + id = "uraniumplasmavirusfood_unstable" color = "#2FF2CB" // rgb: 47,242,203 taste_description = "the inside of a reactor" /datum/reagent/uranium/uraniumvirusfood/stable name = "stable uranium gel" + id = "uraniumplasmavirusfood_stable" color = "#04506C" // rgb: 4,80,108 taste_description = "the inside of a reactor" @@ -1870,6 +2055,7 @@ /datum/reagent/royal_bee_jelly name = "royal bee jelly" + id = "royal_bee_jelly" description = "Royal Bee Jelly, if injected into a Queen Space Bee said bee will split into two bees." color = "#00ff80" taste_description = "strange honey" @@ -1885,6 +2071,7 @@ /datum/reagent/romerol name = "Romerol" // the REAL zombie powder + id = "romerol" description = "Romerol is a highly experimental bioterror agent \ which causes dormant nodules to be etched into the grey matter of \ the subject. These nodules only become active upon death of the \ @@ -1905,6 +2092,7 @@ /datum/reagent/magillitis name = "Magillitis" + id = "magillitis" description = "An experimental serum which causes rapid muscular growth in Hominidae. Side-affects may include hypertrichosis, violent outbursts, and an unending affinity for bananas." reagent_state = LIQUID color = "#00f041" @@ -1916,6 +2104,7 @@ /datum/reagent/growthserum name = "Growth Serum" + id = "growthserum" description = "A commercial chemical designed to help older men in the bedroom."//not really it just makes you a giant color = "#ff0000"//strong red. rgb 255, 0, 0 var/current_size = 1 @@ -1947,6 +2136,7 @@ /datum/reagent/plastic_polymers name = "plastic polymers" + id = "plastic_polymers" description = "the petroleum based components of plastic." color = "#f7eded" taste_description = "plastic" @@ -1954,6 +2144,7 @@ /datum/reagent/glitter name = "generic glitter" + id = "glitter" description = "if you can see this description, contact a coder." color = "#FFFFFF" //pure white taste_description = "plastic" @@ -1967,23 +2158,27 @@ /datum/reagent/glitter/pink name = "pink glitter" + id = "pink_glitter" description = "pink sparkles that get everywhere" color = "#ff8080" //A light pink color glitter_type = /obj/effect/decal/cleanable/glitter/pink /datum/reagent/glitter/white name = "white glitter" + id = "white_glitter" description = "white sparkles that get everywhere" glitter_type = /obj/effect/decal/cleanable/glitter/white /datum/reagent/glitter/blue name = "blue glitter" + id = "blue_glitter" description = "blue sparkles that get everywhere" color = "#4040FF" //A blueish color glitter_type = /obj/effect/decal/cleanable/glitter/blue /datum/reagent/pax name = "pax" + id = "pax" description = "A colorless liquid that suppresses violence on the subjects." color = "#AAAAAA55" taste_description = "water" @@ -1992,14 +2187,15 @@ /datum/reagent/pax/on_mob_metabolize(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_PACIFISM, type) + ADD_TRAIT(L, TRAIT_PACIFISM, id) /datum/reagent/pax/on_mob_end_metabolize(mob/living/L) - REMOVE_TRAIT(L, TRAIT_PACIFISM, type) + REMOVE_TRAIT(L, TRAIT_PACIFISM, id) ..() /datum/reagent/bz_metabolites name = "BZ metabolites" + id = "bz_metabolites" description = "A harmless metabolite of BZ gas" color = "#FAFF00" taste_description = "acrid cinnamon" @@ -2007,11 +2203,11 @@ /datum/reagent/bz_metabolites/on_mob_metabolize(mob/living/L) ..() - ADD_TRAIT(L, CHANGELING_HIVEMIND_MUTE, type) + ADD_TRAIT(L, CHANGELING_HIVEMIND_MUTE, id) /datum/reagent/bz_metabolites/on_mob_end_metabolize(mob/living/L) ..() - REMOVE_TRAIT(L, CHANGELING_HIVEMIND_MUTE, type) + REMOVE_TRAIT(L, CHANGELING_HIVEMIND_MUTE, id) /datum/reagent/bz_metabolites/on_mob_life(mob/living/L) if(L.mind) @@ -2022,11 +2218,13 @@ /datum/reagent/pax/peaceborg name = "synth-pax" + id = "synthpax" description = "A colorless liquid that suppresses violence on the subjects. Cheaper to synthetize, but wears out faster than normal Pax." metabolization_rate = 1.5 * REAGENTS_METABOLISM /datum/reagent/peaceborg_confuse name = "Dizzying Solution" + id = "dizzysolution" description = "Makes the target off balance and dizzy" metabolization_rate = 1.5 * REAGENTS_METABOLISM taste_description = "dizziness" @@ -2042,6 +2240,7 @@ /datum/reagent/peaceborg_tire name = "Tiring Solution" + id = "tiresolution" description = "An extremely weak stamina-toxin that tires out the target. Completely harmless." metabolization_rate = 1.5 * REAGENTS_METABOLISM taste_description = "tiredness" @@ -2056,6 +2255,7 @@ /datum/reagent/tranquility name = "Tranquility" + id = "tranquility" description = "A highly mutative liquid of unknown origin." color = "#9A6750" //RGB: 154, 103, 80 taste_description = "inner peace" @@ -2067,6 +2267,7 @@ /datum/reagent/moonsugar name = "Moonsugar" + id = "moonsugar" description = "The primary precursor for an ancient feline delicacy known as skooma. While it has no notable effects on it's own, mixing it with morphine in a chilled container may yield interesting results." color = "#FAEAFF" taste_description = "synthetic catnip" @@ -2079,6 +2280,7 @@ /datum/reagent/changeling_string name = "UNKNOWN" + id = "changeling_sting_real" description = "404: Chemical not found." metabolization_rate = REAGENTS_METABOLISM color = "#0000FF" @@ -2112,12 +2314,14 @@ /datum/reagent/mustardgrind name = "Mustardgrind" + id = "mustardgrind" description = "A powerd that is mixed with water and enzymes to make mustard." color = "#BCC740" //RGB: 188, 199, 64 taste_description = "plant dust" /datum/reagent/pax/catnip name = "catnip" + id = "catnip" taste_description = "grass" description = "A colorless liquid that makes people more peaceful and felines more happy." metabolization_rate = 1.75 * REAGENTS_METABOLISM diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm index 9eb033824d..c170858d98 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm @@ -1,6 +1,7 @@ /datum/reagent/thermite name = "Thermite" + id = "thermite" description = "Thermite produces an aluminothermic reaction known as a thermite reaction. Can be used to melt walls." reagent_state = SOLID color = "#550000" @@ -17,6 +18,7 @@ /datum/reagent/nitroglycerin name = "Nitroglycerin" + id = "nitroglycerin" value = 5 description = "Nitroglycerin is a heavy, colorless, oily, explosive liquid obtained by nitrating glycerol." color = "#808080" // rgb: 128, 128, 128 @@ -24,6 +26,7 @@ /datum/reagent/stabilizing_agent name = "Stabilizing Agent" + id = "stabilizing_agent" description = "Keeps unstable chemicals stable. This does not work on everything." reagent_state = LIQUID color = "#FFFF00" @@ -32,6 +35,7 @@ /datum/reagent/clf3 name = "Chlorine Trifluoride" + id = "clf3" description = "Makes a temporary 3x3 fireball when it comes into existence, so be careful when mixing. ClF3 applied to a surface burns things that wouldn't otherwise burn, sometimes through the very floors of the station and exposing it to the vacuum of space." reagent_state = LIQUID color = "#FFC8C8" @@ -49,7 +53,7 @@ if(isplatingturf(T)) var/turf/open/floor/plating/F = T if(prob(10 + F.burnt + 5*F.broken)) //broken or burnt plating is more susceptible to being destroyed - F.ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + F.ScrapeAway() if(isfloorturf(T)) var/turf/open/floor/F = T if(prob(reac_volume)) @@ -75,6 +79,7 @@ /datum/reagent/sorium name = "Sorium" + id = "sorium" description = "Sends everything flying from the detonation point." reagent_state = LIQUID color = "#5A64C8" @@ -82,6 +87,7 @@ /datum/reagent/liquid_dark_matter name = "Liquid Dark Matter" + id = "liquid_dark_matter" description = "Sucks everything into the detonation point." reagent_state = LIQUID color = "#210021" @@ -90,6 +96,7 @@ /datum/reagent/blackpowder name = "Black Powder" + id = "blackpowder" description = "Explodes. Violently." reagent_state = LIQUID color = "#000000" @@ -111,6 +118,7 @@ /datum/reagent/flash_powder name = "Flash Powder" + id = "flash_powder" description = "Makes a very bright flash." reagent_state = LIQUID color = "#C8C8C8" @@ -118,6 +126,7 @@ /datum/reagent/smoke_powder name = "Smoke Powder" + id = "smoke_powder" description = "Makes a large cloud of smoke that can carry reagents." reagent_state = LIQUID color = "#C8C8C8" @@ -125,6 +134,7 @@ /datum/reagent/sonic_powder name = "Sonic Powder" + id = "sonic_powder" description = "Makes a deafening noise." reagent_state = LIQUID color = "#C8C8C8" @@ -132,6 +142,7 @@ /datum/reagent/phlogiston name = "Phlogiston" + id = "phlogiston" description = "Catches you on fire and makes you ignite." reagent_state = LIQUID color = "#FA00AF" @@ -153,6 +164,7 @@ /datum/reagent/napalm name = "Napalm" + id = "napalm" description = "Very flammable." reagent_state = LIQUID color = "#FA00AF" @@ -170,6 +182,7 @@ /datum/reagent/cryostylane name = "Cryostylane" + id = "cryostylane" description = "Comes into existence at 20K. As long as there is sufficient oxygen for it to react with, Cryostylane slowly cools all other reagents in the container 0K." color = "#0000DC" metabolization_rate = 0.5 * REAGENTS_METABOLISM @@ -177,8 +190,8 @@ /datum/reagent/cryostylane/on_mob_life(mob/living/carbon/M) //TODO: code freezing into an ice cube - if(M.reagents.has_reagent(/datum/reagent/oxygen)) - M.reagents.remove_reagent(/datum/reagent/oxygen, 0.5) + if(M.reagents.has_reagent("oxygen")) + M.reagents.remove_reagent("oxygen", 0.5) M.adjust_bodytemperature(-15) ..() @@ -189,19 +202,21 @@ /datum/reagent/pyrosium name = "Pyrosium" + id = "pyrosium" description = "Comes into existence at 20K. As long as there is sufficient oxygen for it to react with, Pyrosium slowly heats all other reagents in the container." color = "#64FAC8" metabolization_rate = 0.5 * REAGENTS_METABOLISM taste_description = "bitterness" /datum/reagent/pyrosium/on_mob_life(mob/living/carbon/M) - if(M.reagents.has_reagent(/datum/reagent/oxygen)) - M.reagents.remove_reagent(/datum/reagent/oxygen, 0.5) + if(M.reagents.has_reagent("oxygen")) + M.reagents.remove_reagent("oxygen", 0.5) M.adjust_bodytemperature(15) ..() /datum/reagent/teslium //Teslium. Causes periodic shocks, and makes shocks against the target much more effective. name = "Teslium" + id = "teslium" description = "An unstable, electrically-charged metallic slurry. Periodically electrocutes its victim, and makes electrocutions against them more deadly. Excessively heating teslium results in dangerous destabilization. Do not allow to come into contact with water." reagent_state = LIQUID color = "#20324D" //RGB: 32, 50, 77 @@ -219,6 +234,7 @@ /datum/reagent/teslium/energized_jelly name = "Energized Jelly" + id = "energized_jelly" description = "Electrically-charged jelly. Boosts jellypeople's nervous system, but only shocks other lifeforms." reagent_state = LIQUID color = "#CAFF43" @@ -239,6 +255,7 @@ /datum/reagent/firefighting_foam name = "Firefighting Foam" + id = "firefighting_foam" description = "A historical fire suppressant. Originally believed to simply displace oxygen to starve fires, it actually interferes with the combustion reaction itself. Vastly superior to the cheap water-based extinguishers found on NT vessels." reagent_state = LIQUID color = "#A6FAFF55" diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index ad3a2c90a4..f97204b45e 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -3,6 +3,7 @@ /datum/reagent/toxin name = "Toxin" + id = "toxin" description = "A toxic chemical." color = "#CF3600" // rgb: 207, 54, 0 taste_description = "bitterness" @@ -17,6 +18,7 @@ /datum/reagent/toxin/amatoxin name = "Amatoxin" + id = "amatoxin" description = "A powerful poison derived from certain species of mushroom." color = "#792300" // rgb: 121, 35, 0 toxpwr = 2.5 @@ -25,6 +27,7 @@ /datum/reagent/toxin/mutagen name = "Unstable mutagen" + id = "mutagen" description = "Might cause unpredictable mutations. Keep away from children." color = "#00FF00" toxpwr = 0 @@ -53,6 +56,7 @@ /datum/reagent/toxin/plasma name = "Plasma" + id = "plasma" description = "Plasma in its liquid form." taste_description = "bitterness" specific_heat = SPECIFIC_HEAT_PLASMA @@ -62,8 +66,8 @@ pH = 4 /datum/reagent/toxin/plasma/on_mob_life(mob/living/carbon/C) - if(holder.has_reagent(/datum/reagent/medicine/epinephrine)) - holder.remove_reagent(/datum/reagent/medicine/epinephrine, 2*REM) + if(holder.has_reagent("epinephrine")) + holder.remove_reagent("epinephrine", 2*REM) C.adjustPlasma(20) return ..() @@ -87,6 +91,7 @@ /datum/reagent/toxin/lexorin name = "Lexorin" + id = "lexorin" description = "A powerful poison used to stop respiration." color = "#7DC3A0" toxpwr = 0 @@ -108,6 +113,7 @@ /datum/reagent/toxin/slimejelly name = "Slime Jelly" + id = "slimejelly" description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL." color = "#801E28" // rgb: 128, 30, 40 toxpwr = 0 @@ -127,6 +133,7 @@ /datum/reagent/toxin/minttoxin name = "Mint Toxin" + id = "minttoxin" description = "Useful for dealing with undesirable customers." color = "#CF3600" // rgb: 207, 54, 0 toxpwr = 0 @@ -140,6 +147,7 @@ /datum/reagent/toxin/carpotoxin name = "Carpotoxin" + id = "carpotoxin" description = "A deadly neurotoxin produced by the dreaded spess carp." color = "#003333" // rgb: 0, 51, 51 toxpwr = 2 @@ -148,6 +156,7 @@ /datum/reagent/toxin/zombiepowder name = "Zombie Powder" + id = "zombiepowder" description = "A strong neurotoxin that puts the subject into a death-like state." reagent_state = SOLID color = "#669900" // rgb: 102, 153, 0 @@ -157,10 +166,10 @@ /datum/reagent/toxin/zombiepowder/on_mob_metabolize(mob/living/L) ..() - L.fakedeath(type) + L.fakedeath(id) /datum/reagent/toxin/zombiepowder/on_mob_end_metabolize(mob/living/L) - L.cure_fakedeath(type) + L.cure_fakedeath(id) ..() /datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/carbon/M) @@ -170,6 +179,7 @@ /datum/reagent/toxin/ghoulpowder name = "Ghoul Powder" + id = "ghoulpowder" description = "A strong neurotoxin that slows metabolism to a death-like state, while keeping the patient fully active. Causes toxin buildup if used too long." reagent_state = SOLID color = "#664700" // rgb: 102, 71, 0 @@ -179,10 +189,10 @@ /datum/reagent/toxin/ghoulpowder/on_mob_metabolize(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_FAKEDEATH, type) + ADD_TRAIT(L, TRAIT_FAKEDEATH, id) /datum/reagent/toxin/ghoulpowder/on_mob_end_metabolize(mob/living/L) - REMOVE_TRAIT(L, TRAIT_FAKEDEATH, type) + REMOVE_TRAIT(L, TRAIT_FAKEDEATH, id) ..() /datum/reagent/toxin/ghoulpowder/on_mob_life(mob/living/carbon/M) @@ -192,6 +202,7 @@ /datum/reagent/toxin/mindbreaker name = "Mindbreaker Toxin" + id = "mindbreaker" description = "A powerful hallucinogen. Not a thing to be messed with. For some mental patients. it counteracts their symptoms and anchors them to reality." color = "#B31008" // rgb: 139, 166, 233 toxpwr = 0 @@ -204,6 +215,7 @@ /datum/reagent/toxin/plantbgone name = "Plant-B-Gone" + id = "plantbgone" description = "A harmful toxic mixture to kill plantlife. Do not ingest!" color = "#49002E" // rgb: 73, 0, 46 toxpwr = 1 @@ -230,12 +242,14 @@ /datum/reagent/toxin/plantbgone/weedkiller name = "Weed Killer" + id = "weedkiller" description = "A harmful toxic mixture to kill weeds. Do not ingest!" color = "#4B004B" // rgb: 75, 0, 75 pH = 3 /datum/reagent/toxin/pestkiller name = "Pest Killer" + id = "pestkiller" description = "A harmful toxic mixture to kill pests. Do not ingest!" color = "#4B004B" // rgb: 75, 0, 75 toxpwr = 1 @@ -249,6 +263,7 @@ /datum/reagent/toxin/spore name = "Spore Toxin" + id = "spore" description = "A natural toxin produced by blob spores that inhibits vision when ingested." color = "#9ACD32" toxpwr = 1 @@ -262,6 +277,7 @@ /datum/reagent/toxin/spore_burning name = "Burning Spore Toxin" + id = "spore_burning" description = "A natural toxin produced by blob spores that induces combustion in its victim." color = "#9ACD32" toxpwr = 0.5 @@ -275,6 +291,7 @@ /datum/reagent/toxin/chloralhydrate name = "Chloral Hydrate" + id = "chloralhydrate" description = "A powerful sedative that induces confusion and drowsiness before putting its target to sleep." reagent_state = SOLID color = "#000067" // rgb: 0, 0, 103 @@ -298,6 +315,7 @@ /datum/reagent/toxin/fakebeer //disguised as normal beer for use by emagged brobots name = "Beer" + id = "fakebeer" description = "A specially-engineered sedative disguised as beer. It induces instant sleep in its target." color = "#664300" // rgb: 102, 67, 0 metabolization_rate = 1.5 * REAGENTS_METABOLISM @@ -318,6 +336,7 @@ /datum/reagent/toxin/coffeepowder name = "Coffee Grounds" + id = "coffeepowder" description = "Finely ground coffee beans, used to make coffee." reagent_state = SOLID color = "#5B2E0D" // rgb: 91, 46, 13 @@ -326,6 +345,7 @@ /datum/reagent/toxin/teapowder name = "Ground Tea Leaves" + id = "teapowder" description = "Finely shredded tea leaves, used for making tea." reagent_state = SOLID color = "#7F8400" // rgb: 127, 132, 0 @@ -334,6 +354,7 @@ /datum/reagent/toxin/mutetoxin //the new zombie powder. name = "Mute Toxin" + id = "mutetoxin" description = "A nonlethal poison that inhibits speech in its victim." color = "#F0F8FF" // rgb: 240, 248, 255 toxpwr = 0 @@ -346,6 +367,7 @@ /datum/reagent/toxin/staminatoxin name = "Tirizene" + id = "tirizene" description = "A nonlethal poison that causes extreme fatigue and weakness in its victim." color = "#6E2828" data = 15 @@ -359,6 +381,7 @@ /datum/reagent/toxin/polonium name = "Polonium" + id = "polonium" description = "An extremely radioactive material in liquid form. Ingestion results in fatal irradiation." reagent_state = LIQUID color = "#787878" @@ -371,6 +394,7 @@ /datum/reagent/toxin/histamine name = "Histamine" + id = "histamine" description = "Histamine's effects become more dangerous depending on the dosage amount. They range from mildly annoying to incredibly lethal." reagent_state = LIQUID color = "#FA6464" @@ -404,6 +428,7 @@ /datum/reagent/toxin/formaldehyde name = "Formaldehyde" + id = "formaldehyde" description = "Formaldehyde, on its own, is a fairly weak toxin. It contains trace amounts of Histamine, very rarely making it decay into Histamine." reagent_state = LIQUID color = "#B4004B" @@ -412,13 +437,14 @@ /datum/reagent/toxin/formaldehyde/on_mob_life(mob/living/carbon/M) if(prob(5)) - holder.add_reagent(/datum/reagent/toxin/histamine, pick(5,15)) - holder.remove_reagent(type, 1.2) + holder.add_reagent("histamine", pick(5,15)) + holder.remove_reagent("formaldehyde", 1.2) else return ..() /datum/reagent/toxin/venom name = "Venom" + id = "venom" description = "An exotic poison extracted from highly toxic fauna. Causes scaling amounts of toxin damage and bruising depending and dosage. Often decays into Histamine." reagent_state = LIQUID color = "#F0FFF0" @@ -430,13 +456,14 @@ M.adjustBruteLoss((0.3*volume)*REM, 0) . = 1 if(prob(15)) - M.reagents.add_reagent(/datum/reagent/toxin/histamine, pick(5,10)) - M.reagents.remove_reagent(type, 1.1) + M.reagents.add_reagent("histamine", pick(5,10)) + M.reagents.remove_reagent("venom", 1.1) else ..() /datum/reagent/toxin/fentanyl name = "Fentanyl" + id = "fentanyl" description = "Fentanyl will inhibit brain function and cause toxin damage before eventually knocking out its victim." reagent_state = LIQUID color = "#64916E" @@ -454,6 +481,7 @@ /datum/reagent/toxin/cyanide name = "Cyanide" + id = "cyanide" description = "An infamous poison known for its use in assassination. Causes small amounts of toxin damage with a small chance of oxygen damage or a stun." reagent_state = LIQUID color = "#00B4FF" @@ -471,6 +499,7 @@ /datum/reagent/toxin/bad_food name = "Bad Food" + id = "bad_food" description = "The result of some abomination of cookery, food so bad it's toxic." reagent_state = LIQUID color = "#d6d6d8" @@ -480,6 +509,7 @@ /datum/reagent/toxin/itching_powder name = "Itching Powder" + id = "itching_powder" description = "A powder that induces itching upon contact with the skin. Causes the victim to scratch at their itches and has a very low chance to decay into Histamine." reagent_state = LIQUID color = "#C8C8C8" @@ -488,7 +518,7 @@ /datum/reagent/toxin/itching_powder/reaction_mob(mob/living/M, method=TOUCH, reac_volume) if(method == TOUCH || method == VAPOR) - M.reagents.add_reagent(/datum/reagent/toxin/itching_powder, reac_volume) + M.reagents.add_reagent("itching_powder", reac_volume) /datum/reagent/toxin/itching_powder/on_mob_life(mob/living/carbon/M) if(prob(15)) @@ -504,13 +534,14 @@ M.adjustBruteLoss(0.2*REM, 0) . = 1 if(prob(3)) - M.reagents.add_reagent(/datum/reagent/toxin/histamine,rand(1,3)) - M.reagents.remove_reagent(type,1.2) + M.reagents.add_reagent("histamine",rand(1,3)) + M.reagents.remove_reagent("itching_powder",1.2) return ..() /datum/reagent/toxin/initropidril name = "Initropidril" + id = "initropidril" description = "A powerful poison with insidious effects. It can cause stuns, lethal breathing failure, and cardiac arrest." reagent_state = LIQUID color = "#7F10C0" @@ -541,6 +572,7 @@ /datum/reagent/toxin/pancuronium name = "Pancuronium" + id = "pancuronium" description = "An undetectable toxin that swiftly incapacitates its victim. May also cause breathing failure." reagent_state = LIQUID color = "#195096" @@ -558,6 +590,7 @@ /datum/reagent/toxin/sodium_thiopental name = "Sodium Thiopental" + id = "sodium_thiopental" description = "Sodium Thiopental induces heavy weakness in its target as well as unconsciousness." reagent_state = LIQUID color = "#6496FA" @@ -573,6 +606,7 @@ /datum/reagent/toxin/sulfonal name = "Sulfonal" + id = "sulfonal" description = "A stealthy poison that deals minor toxin damage and eventually puts the target to sleep." reagent_state = LIQUID color = "#7DC3A0" @@ -586,6 +620,7 @@ /datum/reagent/toxin/amanitin name = "Amanitin" + id = "amanitin" description = "A very powerful delayed toxin. Upon full metabolization, a massive amount of toxin damage will be dealt depending on how long it has been in the victim's bloodstream." reagent_state = LIQUID color = "#FFFFFF" @@ -600,6 +635,7 @@ /datum/reagent/toxin/lipolicide name = "Lipolicide" + id = "lipolicide" description = "A powerful toxin that will destroy fat cells, massively reducing body weight in a short time. Deadly to those without nutriment in their body." taste_description = "mothballs" reagent_state = LIQUID @@ -616,6 +652,7 @@ /datum/reagent/toxin/coniine name = "Coniine" + id = "coniine" description = "Coniine metabolizes extremely slowly, but deals high amounts of toxin damage and stops breathing." reagent_state = LIQUID color = "#7DC3A0" @@ -628,6 +665,7 @@ /datum/reagent/toxin/spewium name = "Spewium" + id = "spewium" description = "A powerful emetic, causes uncontrollable vomiting. May result in vomiting organs at high doses." reagent_state = LIQUID color = "#2f6617" //A sickly green color @@ -642,7 +680,7 @@ C.vomit(10, prob(10), prob(50), rand(0,4), TRUE, prob(30)) for(var/datum/reagent/toxin/R in C.reagents.reagent_list) if(R != src) - C.reagents.remove_reagent(R.type,1) + C.reagents.remove_reagent(R.id,1) /datum/reagent/toxin/spewium/overdose_process(mob/living/carbon/C) . = ..() @@ -653,6 +691,7 @@ /datum/reagent/toxin/curare name = "Curare" + id = "curare" description = "Causes slight toxin damage followed by chain-stunning and oxygen damage." reagent_state = LIQUID color = "#191919" @@ -668,6 +707,7 @@ /datum/reagent/toxin/heparin //Based on a real-life anticoagulant. I'm not a doctor, so this won't be realistic. name = "Heparin" + id = "heparin" description = "A powerful anticoagulant. Victims will bleed uncontrollably and suffer scaling bruising." reagent_state = LIQUID color = "#C8C8C8" //RGB: 200, 200, 200 @@ -685,6 +725,7 @@ /datum/reagent/toxin/rotatium //Rotatium. Fucks up your rotation and is hilarious name = "Rotatium" + id = "rotatium" description = "A constantly swirling, oddly colourful fluid. Causes the consumer's sense of direction and hand-eye coordination to become wild." reagent_state = LIQUID color = "#AC88CA" //RGB: 172, 136, 202 @@ -711,6 +752,7 @@ /datum/reagent/toxin/skewium name = "Skewium" + id = "skewium" description = "A strange, dull coloured liquid that appears to warp back and forth inside its container. Causes any consumer to experience a visual phenomena similar to said warping." reagent_state = LIQUID color = "#ADBDCD" @@ -748,6 +790,7 @@ /datum/reagent/toxin/anacea name = "Anacea" + id = "anacea" description = "A toxin that quickly purges medicines and metabolizes very slowly." reagent_state = LIQUID color = "#3C5133" @@ -756,10 +799,10 @@ /datum/reagent/toxin/anacea/on_mob_life(mob/living/carbon/M) var/remove_amt = 5 - if(holder.has_reagent(/datum/reagent/medicine/calomel) || holder.has_reagent(/datum/reagent/medicine/pen_acid) || holder.has_reagent(/datum/reagent/medicine/pen_acid/pen_jelly)) + if(holder.has_reagent("calomel") || holder.has_reagent("pen_acid") || holder.has_reagent("pen_jelly")) remove_amt = 0.5 for(var/datum/reagent/medicine/R in M.reagents.reagent_list) - M.reagents.remove_reagent(R.type,remove_amt) + M.reagents.remove_reagent(R.id,remove_amt) return ..() //ACID @@ -767,6 +810,7 @@ /datum/reagent/toxin/acid name = "Sulphuric acid" + id = "sacid" description = "A strong mineral acid with the molecular formula H2SO4." color = "#00FF32" toxpwr = 1 @@ -801,6 +845,7 @@ /datum/reagent/toxin/acid/fluacid name = "Fluorosulfuric acid" + id = "facid" description = "Fluorosulfuric acid is an extremely corrosive chemical substance." color = "#5050FF" toxpwr = 2 @@ -813,6 +858,7 @@ /datum/reagent/toxin/delayed name = "Toxin Microcapsules" + id = "delayed_toxin" description = "Causes heavy toxin damage after a brief time of inactivity." reagent_state = LIQUID metabolization_rate = 0 //stays in the system until active. @@ -823,7 +869,7 @@ /datum/reagent/toxin/delayed/on_mob_life(mob/living/carbon/M) if(current_cycle > delay) - holder.remove_reagent(type, actual_metaboliztion_rate * M.metabolism_efficiency) + holder.remove_reagent(id, actual_metaboliztion_rate * M.metabolism_efficiency) M.adjustToxLoss(actual_toxpwr*REM, 0) if(prob(10)) M.Knockdown(20, 0) @@ -832,19 +878,21 @@ /datum/reagent/toxin/mimesbane name = "Mime's Bane" + id = "mimesbane" description = "A nonlethal neurotoxin that interferes with the victim's ability to gesture." color = "#F0F8FF" // rgb: 240, 248, 255 toxpwr = 0 taste_description = "stillness" /datum/reagent/toxin/mimesbane/on_mob_metabolize(mob/living/L) - ADD_TRAIT(L, TRAIT_EMOTEMUTE, type) + ADD_TRAIT(L, TRAIT_EMOTEMUTE, id) /datum/reagent/toxin/mimesbane/on_mob_end_metabolize(mob/living/L) - REMOVE_TRAIT(L, TRAIT_EMOTEMUTE, type) + REMOVE_TRAIT(L, TRAIT_EMOTEMUTE, id) /datum/reagent/toxin/bonehurtingjuice //oof ouch name = "Bone Hurting Juice" + id = "bonehurtingjuice" description = "A strange substance that looks a lot like water. Drinking it is oddly tempting. Oof ouch." color = "#AAAAAA77" //RGBA: 170, 170, 170, 77 toxpwr = 0 @@ -905,6 +953,7 @@ /datum/reagent/toxin/brainhurtingjuice //oof ouch name = "Brain Hurting Juice" + id = "brainhurtingjuice" color = "#AAAAAA77" //RGBA: 170, 170, 170, 77 toxpwr = 0 taste_description = "brain hurting" @@ -921,6 +970,7 @@ /datum/reagent/toxin/bungotoxin name = "Bungotoxin" + id = "bungotoxin" description = "A horrible cardiotoxin that protects the humble bungo pit." //silent_toxin = TRUE //I guess we don't really have the entire tox system ported. color = "#EBFF8E" diff --git a/code/modules/reagents/chemistry/recipes/drugs.dm b/code/modules/reagents/chemistry/recipes/drugs.dm index 468d29c052..27b1fe12ee 100644 --- a/code/modules/reagents/chemistry/recipes/drugs.dm +++ b/code/modules/reagents/chemistry/recipes/drugs.dm @@ -1,64 +1,64 @@ /datum/chemical_reaction/space_drugs name = "Space Drugs" - id = /datum/reagent/drug/space_drugs - results = list(/datum/reagent/drug/space_drugs = 3) - required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/lithium = 1) + id = "space_drugs" + results = list("space_drugs" = 3) + required_reagents = list("mercury" = 1, "sugar" = 1, "lithium" = 1) /datum/chemical_reaction/crank name = "Crank" - id = /datum/reagent/drug/crank - results = list(/datum/reagent/drug/crank = 5) - required_reagents = list(/datum/reagent/medicine/diphenhydramine = 1, /datum/reagent/ammonia = 1, /datum/reagent/lithium = 1, /datum/reagent/toxin/acid = 1, /datum/reagent/fuel = 1) + id = "crank" + results = list("crank" = 5) + required_reagents = list("diphenhydramine" = 1, "ammonia" = 1, "lithium" = 1, "sacid" = 1, "welding_fuel" = 1) mix_message = "The mixture violently reacts, leaving behind a few crystalline shards." required_temp = 390 /datum/chemical_reaction/krokodil name = "Krokodil" - id = /datum/reagent/drug/krokodil - results = list(/datum/reagent/drug/krokodil = 6) - required_reagents = list(/datum/reagent/medicine/diphenhydramine = 1, /datum/reagent/medicine/morphine = 1, /datum/reagent/space_cleaner = 1, /datum/reagent/potassium = 1, /datum/reagent/phosphorus = 1, /datum/reagent/fuel = 1) + id = "krokodil" + results = list("krokodil" = 6) + required_reagents = list("diphenhydramine" = 1, "morphine" = 1, "cleaner" = 1, "potassium" = 1, "phosphorus" = 1, "welding_fuel" = 1) mix_message = "The mixture dries into a pale blue powder." required_temp = 380 /datum/chemical_reaction/methamphetamine name = "methamphetamine" - id = /datum/reagent/drug/methamphetamine - results = list(/datum/reagent/drug/methamphetamine = 4) - required_reagents = list(/datum/reagent/medicine/ephedrine = 1, /datum/reagent/iodine = 1, /datum/reagent/phosphorus = 1, /datum/reagent/hydrogen = 1) + id = "methamphetamine" + results = list("methamphetamine" = 4) + required_reagents = list("ephedrine" = 1, "iodine" = 1, "phosphorus" = 1, "hydrogen" = 1) required_temp = 374 /datum/chemical_reaction/bath_salts name = "bath_salts" - id = /datum/reagent/drug/bath_salts - results = list(/datum/reagent/drug/bath_salts = 7) - required_reagents = list(/datum/reagent/toxin/bad_food = 1, /datum/reagent/saltpetre = 1, /datum/reagent/consumable/nutriment = 1, /datum/reagent/space_cleaner = 1, /datum/reagent/consumable/enzyme = 1, /datum/reagent/consumable/tea = 1, /datum/reagent/mercury = 1) + id = "bath_salts" + results = list("bath_salts" = 7) + required_reagents = list("bad_food" = 1, "saltpetre" = 1, "nutriment" = 1, "cleaner" = 1, "enzyme" = 1, "tea" = 1, "mercury" = 1) required_temp = 374 /datum/chemical_reaction/aranesp name = "aranesp" - id = /datum/reagent/drug/aranesp - results = list(/datum/reagent/drug/aranesp = 3) - required_reagents = list(/datum/reagent/medicine/epinephrine = 1, /datum/reagent/medicine/atropine = 1, /datum/reagent/medicine/morphine = 1) + id = "aranesp" + results = list("aranesp" = 3) + required_reagents = list("epinephrine" = 1, "atropine" = 1, "morphine" = 1) /datum/chemical_reaction/happiness name = "Happiness" - id = /datum/reagent/drug/happiness - results = list(/datum/reagent/drug/happiness = 4) - required_reagents = list(/datum/reagent/nitrous_oxide = 2, /datum/reagent/medicine/epinephrine = 1, /datum/reagent/consumable/ethanol = 1) - required_catalysts = list(/datum/reagent/toxin/plasma = 5) + id = "happiness" + results = list("happiness" = 4) + required_reagents = list("nitrous_oxide" = 2, "epinephrine" = 1, "ethanol" = 1) + required_catalysts = list("plasma" = 5) /datum/chemical_reaction/skooma name = "skooma" - id = /datum/reagent/drug/skooma - results = list(/datum/reagent/drug/skooma = 2, /datum/reagent/consumable/ethanol/moonshine = 4, /datum/reagent/consumable/sugar = 4) + id = "skooma" + results = list("skooma" = 2, "moonshine" = 4, "sugar" = 4) required_temp = 280 is_cold_recipe = TRUE - required_reagents = list(/datum/reagent/moonsugar = 10, /datum/reagent/medicine/morphine = 5) + required_reagents = list("moonsugar" = 10, "morphine" = 5) /datum/chemical_reaction/skoomarevert name = "skoomarevert" id = "skoomarevert" - results = list(/datum/reagent/moonsugar = 1, /datum/reagent/medicine/morphine = 2.5) + results = list("moonsugar" = 1, "morphine" = 2.5) required_temp = 315 //a little above normal body temperature - required_reagents = list(/datum/reagent/drug/skooma = 1) + required_reagents = list("skooma" = 1) diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index a07e7697bc..607e0b5a4e 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -1,79 +1,79 @@ /datum/chemical_reaction/leporazine name = "Leporazine" - id = /datum/reagent/medicine/leporazine - results = list(/datum/reagent/medicine/leporazine = 2) - required_reagents = list(/datum/reagent/silicon = 1, /datum/reagent/copper = 1) - required_catalysts = list(/datum/reagent/toxin/plasma = 5) + id = "leporazine" + results = list("leporazine" = 2) + required_reagents = list("silicon" = 1, "copper" = 1) + required_catalysts = list("plasma" = 5) /datum/chemical_reaction/rezadone name = "Rezadone" - id = /datum/reagent/medicine/rezadone - results = list(/datum/reagent/medicine/rezadone = 3) - required_reagents = list(/datum/reagent/toxin/carpotoxin = 1, /datum/reagent/cryptobiolin = 1, /datum/reagent/copper = 1) + id = "rezadone" + results = list("rezadone" = 3) + required_reagents = list("carpotoxin" = 1, "cryptobiolin" = 1, "copper" = 1) /datum/chemical_reaction/spaceacillin name = "Spaceacillin" - id = /datum/reagent/medicine/spaceacillin - results = list(/datum/reagent/medicine/spaceacillin = 2) - required_reagents = list(/datum/reagent/cryptobiolin = 1, /datum/reagent/medicine/epinephrine = 1) + id = "spaceacillin" + results = list("spaceacillin" = 2) + required_reagents = list("cryptobiolin" = 1, "epinephrine" = 1) /datum/chemical_reaction/inacusiate name = "inacusiate" - id = /datum/reagent/medicine/inacusiate - results = list(/datum/reagent/medicine/inacusiate = 2) - required_reagents = list(/datum/reagent/water = 1, /datum/reagent/carbon = 1, /datum/reagent/medicine/charcoal = 1) + id = "inacusiate" + results = list("inacusiate" = 2) + required_reagents = list("water" = 1, "carbon" = 1, "charcoal" = 1) /datum/chemical_reaction/synaptizine name = "Synaptizine" - id = /datum/reagent/medicine/synaptizine - results = list(/datum/reagent/medicine/synaptizine = 3) - required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/lithium = 1, /datum/reagent/water = 1) + id = "synaptizine" + results = list("synaptizine" = 3) + required_reagents = list("sugar" = 1, "lithium" = 1, "water" = 1) /datum/chemical_reaction/charcoal name = "Charcoal" - id = /datum/reagent/medicine/charcoal - results = list(/datum/reagent/medicine/charcoal = 2) - required_reagents = list(/datum/reagent/ash = 1, /datum/reagent/consumable/sodiumchloride = 1) + id = "charcoal" + results = list("charcoal" = 2) + required_reagents = list("ash" = 1, "sodiumchloride" = 1) mix_message = "The mixture yields a fine black powder." required_temp = 380 /datum/chemical_reaction/silver_sulfadiazine name = "Silver Sulfadiazine" - id = /datum/reagent/medicine/silver_sulfadiazine - results = list(/datum/reagent/medicine/silver_sulfadiazine = 5) - required_reagents = list(/datum/reagent/ammonia = 1, /datum/reagent/silver = 1, /datum/reagent/sulfur = 1, /datum/reagent/oxygen = 1, /datum/reagent/chlorine = 1) + id = "silver_sulfadiazine" + results = list("silver_sulfadiazine" = 5) + required_reagents = list("ammonia" = 1, "silver" = 1, "sulfur" = 1, "oxygen" = 1, "chlorine" = 1) /datum/chemical_reaction/salglu_solution name = "Saline-Glucose Solution" - id = /datum/reagent/medicine/salglu_solution - results = list(/datum/reagent/medicine/salglu_solution = 3) - required_reagents = list(/datum/reagent/consumable/sodiumchloride = 1, /datum/reagent/water = 1, /datum/reagent/consumable/sugar = 1) + id = "salglu_solution" + results = list("salglu_solution" = 3) + required_reagents = list("sodiumchloride" = 1, "water" = 1, "sugar" = 1) /datum/chemical_reaction/mine_salve name = "Miner's Salve" - id = /datum/reagent/medicine/mine_salve - results = list(/datum/reagent/medicine/mine_salve = 3) - required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/water = 1, /datum/reagent/iron = 1) + id = "mine_salve" + results = list("mine_salve" = 3) + required_reagents = list("oil" = 1, "water" = 1, "iron" = 1) /datum/chemical_reaction/mine_salve2 name = "Miner's Salve" - id = "mine_salve_2" - results = list(/datum/reagent/medicine/mine_salve = 15) - required_reagents = list(/datum/reagent/toxin/plasma = 5, /datum/reagent/iron = 5, /datum/reagent/consumable/sugar = 1) // A sheet of plasma, a twinkie and a sheet of metal makes four of these + id = "mine_salve" + results = list("mine_salve" = 15) + required_reagents = list("plasma" = 5, "iron" = 5, "sugar" = 1) // A sheet of plasma, a twinkie and a sheet of metal makes four of these /datum/chemical_reaction/synthflesh name = "Synthflesh" - id = /datum/reagent/medicine/synthflesh - results = list(/datum/reagent/medicine/synthflesh = 3) - required_reagents = list(/datum/reagent/blood = 1, /datum/reagent/carbon = 1, /datum/reagent/medicine/styptic_powder = 1) + id = "synthflesh" + results = list("synthflesh" = 3) + required_reagents = list("blood" = 1, "carbon" = 1, "styptic_powder" = 1) /datum/chemical_reaction/synthtissue name = "Synthtissue" - id = /datum/reagent/synthtissue - results = list(/datum/reagent/synthtissue = 5) - required_reagents = list(/datum/reagent/medicine/synthflesh = 1) - required_catalysts = list(/datum/reagent/consumable/sugar = 0.1) + id = "synthtissue" + results = list("synthtissue" = 5) + required_reagents = list("synthflesh" = 1) + required_catalysts = list("sugar" = 0.1) //FermiChem vars: OptimalTempMin = 305 // Lower area of bell curve for determining heat based rate reactions OptimalTempMax = 315 // Upper end for above @@ -91,13 +91,13 @@ PurityMin = 0 /datum/chemical_reaction/synthtissue/FermiCreate(datum/reagents/holder, added_volume, added_purity) - var/datum/reagent/synthtissue/St = holder.has_reagent(/datum/reagent/synthtissue) - var/datum/reagent/N = holder.has_reagent(/datum/reagent/consumable/sugar) + var/datum/reagent/synthtissue/St = holder.has_reagent("synthtissue") + var/datum/reagent/N = holder.has_reagent("sugar") if(!St) return if(holder.chem_temp > 320) var/temp_ratio = 1-(330 - holder.chem_temp)/10 - holder.remove_reagent(id, added_volume*temp_ratio) + holder.remove_reagent(src.id, added_volume*temp_ratio) if(St.purity < 1) St.volume *= St.purity St.purity = 1 @@ -108,209 +108,209 @@ /datum/chemical_reaction/styptic_powder name = "Styptic Powder" - id = /datum/reagent/medicine/styptic_powder - results = list(/datum/reagent/medicine/styptic_powder = 4) - required_reagents = list(/datum/reagent/aluminium = 1, /datum/reagent/hydrogen = 1, /datum/reagent/oxygen = 1, /datum/reagent/toxin/acid = 1) + id = "styptic_powder" + results = list("styptic_powder" = 4) + required_reagents = list("aluminium" = 1, "hydrogen" = 1, "oxygen" = 1, "sacid" = 1) mix_message = "The solution yields an astringent powder." /datum/chemical_reaction/calomel name = "Calomel" - id = /datum/reagent/medicine/calomel - results = list(/datum/reagent/medicine/calomel = 2) - required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/chlorine = 1) + id = "calomel" + results = list("calomel" = 2) + required_reagents = list("mercury" = 1, "chlorine" = 1) required_temp = 374 /datum/chemical_reaction/potass_iodide name = "Potassium Iodide" - id = /datum/reagent/medicine/potass_iodide - results = list(/datum/reagent/medicine/potass_iodide = 2) - required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/iodine = 1) + id = "potass_iodide" + results = list("potass_iodide" = 2) + required_reagents = list("potassium" = 1, "iodine" = 1) /datum/chemical_reaction/pen_acid name = "Pentetic Acid" - id = /datum/reagent/medicine/pen_acid - results = list(/datum/reagent/medicine/pen_acid = 6) - required_reagents = list(/datum/reagent/fuel = 1, /datum/reagent/chlorine = 1, /datum/reagent/ammonia = 1, /datum/reagent/toxin/formaldehyde = 1, /datum/reagent/sodium = 1, /datum/reagent/toxin/cyanide = 1) + id = "pen_acid" + results = list("pen_acid" = 6) + required_reagents = list("welding_fuel" = 1, "chlorine" = 1, "ammonia" = 1, "formaldehyde" = 1, "sodium" = 1, "cyanide" = 1) /datum/chemical_reaction/pen_jelly name = "Pentetic Jelly" - id = /datum/reagent/medicine/pen_acid/pen_jelly - results = list(/datum/reagent/medicine/pen_acid/pen_jelly = 2) - required_reagents = list(/datum/reagent/medicine/pen_acid = 1, /datum/reagent/toxin/slimejelly = 1) + id = "pen_jelly" + results = list("pen_jelly" = 2) + required_reagents = list("pen_acid" = 1, "slimejelly" = 1) /datum/chemical_reaction/sal_acid name = "Salicyclic Acid" - id = /datum/reagent/medicine/sal_acid - results = list(/datum/reagent/medicine/sal_acid = 5) - required_reagents = list(/datum/reagent/sodium = 1, /datum/reagent/phenol = 1, /datum/reagent/carbon = 1, /datum/reagent/oxygen = 1, /datum/reagent/toxin/acid = 1) + id = "sal_acid" + results = list("sal_acid" = 5) + required_reagents = list("sodium" = 1, "phenol" = 1, "carbon" = 1, "oxygen" = 1, "sacid" = 1) /datum/chemical_reaction/oxandrolone name = "Oxandrolone" - id = /datum/reagent/medicine/oxandrolone - results = list(/datum/reagent/medicine/oxandrolone = 6) - required_reagents = list(/datum/reagent/carbon = 3, /datum/reagent/phenol = 1, /datum/reagent/hydrogen = 1, /datum/reagent/oxygen = 1) + id = "oxandrolone" + results = list("oxandrolone" = 6) + required_reagents = list("carbon" = 3, "phenol" = 1, "hydrogen" = 1, "oxygen" = 1) /datum/chemical_reaction/salbutamol name = "Salbutamol" - id = /datum/reagent/medicine/salbutamol - results = list(/datum/reagent/medicine/salbutamol = 5) - required_reagents = list(/datum/reagent/medicine/sal_acid = 1, /datum/reagent/lithium = 1, /datum/reagent/aluminium = 1, /datum/reagent/bromine = 1, /datum/reagent/ammonia = 1) + id = "salbutamol" + results = list("salbutamol" = 5) + required_reagents = list("sal_acid" = 1, "lithium" = 1, "aluminium" = 1, "bromine" = 1, "ammonia" = 1) /datum/chemical_reaction/perfluorodecalin name = "Perfluorodecalin" - id = /datum/reagent/medicine/perfluorodecalin - results = list(/datum/reagent/medicine/perfluorodecalin = 3) - required_reagents = list(/datum/reagent/hydrogen = 1, /datum/reagent/fluorine = 1, /datum/reagent/oil = 1) + id = "perfluorodecalin" + results = list("perfluorodecalin" = 3) + required_reagents = list("hydrogen" = 1, "fluorine" = 1, "oil" = 1) required_temp = 370 mix_message = "The mixture rapidly turns into a dense pink liquid." /datum/chemical_reaction/ephedrine name = "Ephedrine" - id = /datum/reagent/medicine/ephedrine - results = list(/datum/reagent/medicine/ephedrine = 4) - required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/oil = 1, /datum/reagent/hydrogen = 1, /datum/reagent/diethylamine = 1) + id = "ephedrine" + results = list("ephedrine" = 4) + required_reagents = list("sugar" = 1, "oil" = 1, "hydrogen" = 1, "diethylamine" = 1) mix_message = "The solution fizzes and gives off toxic fumes." /datum/chemical_reaction/diphenhydramine name = "Diphenhydramine" - id = /datum/reagent/medicine/diphenhydramine - results = list(/datum/reagent/medicine/diphenhydramine = 4) - required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/carbon = 1, /datum/reagent/bromine = 1, /datum/reagent/diethylamine = 1, /datum/reagent/consumable/ethanol = 1) + id = "diphenhydramine" + results = list("diphenhydramine" = 4) + required_reagents = list("oil" = 1, "carbon" = 1, "bromine" = 1, "diethylamine" = 1, "ethanol" = 1) mix_message = "The mixture dries into a pale blue powder." /datum/chemical_reaction/oculine name = "Oculine" - id = /datum/reagent/medicine/oculine - results = list(/datum/reagent/medicine/oculine = 3) - required_reagents = list(/datum/reagent/medicine/charcoal = 1, /datum/reagent/carbon = 1, /datum/reagent/hydrogen = 1) + id = "oculine" + results = list("oculine" = 3) + required_reagents = list("charcoal" = 1, "carbon" = 1, "hydrogen" = 1) mix_message = "The mixture sputters loudly and becomes a pale pink color." /datum/chemical_reaction/atropine name = "Atropine" - id = /datum/reagent/medicine/atropine - results = list(/datum/reagent/medicine/atropine = 5) - required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/acetone = 1, /datum/reagent/diethylamine = 1, /datum/reagent/phenol = 1, /datum/reagent/toxin/acid = 1) + id = "atropine" + results = list("atropine" = 5) + required_reagents = list("ethanol" = 1, "acetone" = 1, "diethylamine" = 1, "phenol" = 1, "sacid" = 1) /datum/chemical_reaction/epinephrine name = "Epinephrine" - id = /datum/reagent/medicine/epinephrine - results = list(/datum/reagent/medicine/epinephrine = 6) - required_reagents = list(/datum/reagent/phenol = 1, /datum/reagent/acetone = 1, /datum/reagent/diethylamine = 1, /datum/reagent/oxygen = 1, /datum/reagent/chlorine = 1, /datum/reagent/hydrogen = 1) + id = "epinephrine" + results = list("epinephrine" = 6) + required_reagents = list("phenol" = 1, "acetone" = 1, "diethylamine" = 1, "oxygen" = 1, "chlorine" = 1, "hydrogen" = 1) /datum/chemical_reaction/strange_reagent name = "Strange Reagent" - id = /datum/reagent/medicine/strange_reagent - results = list(/datum/reagent/medicine/strange_reagent = 3) - required_reagents = list(/datum/reagent/medicine/omnizine = 1, /datum/reagent/water/holywater = 1, /datum/reagent/toxin/mutagen = 1) + id = "strange_reagent" + results = list("strange_reagent" = 3) + required_reagents = list("omnizine" = 1, "holywater" = 1, "mutagen" = 1) /datum/chemical_reaction/mannitol name = "Mannitol" - id = /datum/reagent/medicine/mannitol - results = list(/datum/reagent/medicine/mannitol = 3) - required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/hydrogen = 1, /datum/reagent/water = 1) + id = "mannitol" + results = list("mannitol" = 3) + required_reagents = list("sugar" = 1, "hydrogen" = 1, "water" = 1) mix_message = "The solution slightly bubbles, becoming thicker." /datum/chemical_reaction/mutadone name = "Mutadone" - id = /datum/reagent/medicine/mutadone - results = list(/datum/reagent/medicine/mutadone = 3) - required_reagents = list(/datum/reagent/toxin/mutagen = 1, /datum/reagent/acetone = 1, /datum/reagent/bromine = 1) + id = "mutadone" + results = list("mutadone" = 3) + required_reagents = list("mutagen" = 1, "acetone" = 1, "bromine" = 1) /datum/chemical_reaction/neurine name = "Neurine" - id = /datum/reagent/medicine/neurine - results = list(/datum/reagent/medicine/neurine = 3) - required_reagents = list(/datum/reagent/medicine/mannitol = 1, /datum/reagent/acetone = 1, /datum/reagent/oxygen = 1) + id = "neurine" + results = list("neurine" = 3) + required_reagents = list("mannitol" = 1, "acetone" = 1, "oxygen" = 1) /datum/chemical_reaction/antihol name = "antihol" - id = /datum/reagent/medicine/antihol - results = list(/datum/reagent/medicine/antihol = 3) - required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/medicine/charcoal = 1, /datum/reagent/copper = 1) + id = "antihol" + results = list("antihol" = 3) + required_reagents = list("ethanol" = 1, "charcoal" = 1, "copper" = 1) /datum/chemical_reaction/cryoxadone name = "Cryoxadone" - id = /datum/reagent/medicine/cryoxadone - results = list(/datum/reagent/medicine/cryoxadone = 3) - required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/acetone = 1, /datum/reagent/toxin/mutagen = 1) + id = "cryoxadone" + results = list("cryoxadone" = 3) + required_reagents = list("stable_plasma" = 1, "acetone" = 1, "mutagen" = 1) /datum/chemical_reaction/pyroxadone name = "Pyroxadone" - id = /datum/reagent/medicine/pyroxadone - results = list(/datum/reagent/medicine/pyroxadone = 2) - required_reagents = list(/datum/reagent/medicine/cryoxadone = 1, /datum/reagent/toxin/slimejelly = 1) + id = "pyroxadone" + results = list("pyroxadone" = 2) + required_reagents = list("cryoxadone" = 1, "slimejelly" = 1) /datum/chemical_reaction/clonexadone name = "Clonexadone" - id = /datum/reagent/medicine/clonexadone - results = list(/datum/reagent/medicine/clonexadone = 2) - required_reagents = list(/datum/reagent/medicine/cryoxadone = 1, /datum/reagent/sodium = 1) - required_catalysts = list(/datum/reagent/toxin/plasma = 5) + id = "clonexadone" + results = list("clonexadone" = 2) + required_reagents = list("cryoxadone" = 1, "sodium" = 1) + required_catalysts = list("plasma" = 5) /datum/chemical_reaction/haloperidol name = "Haloperidol" - id = /datum/reagent/medicine/haloperidol - results = list(/datum/reagent/medicine/haloperidol = 5) - required_reagents = list(/datum/reagent/chlorine = 1, /datum/reagent/fluorine = 1, /datum/reagent/aluminium = 1, /datum/reagent/medicine/potass_iodide = 1, /datum/reagent/oil = 1) + id = "haloperidol" + results = list("haloperidol" = 5) + required_reagents = list("chlorine" = 1, "fluorine" = 1, "aluminium" = 1, "potass_iodide" = 1, "oil" = 1) /datum/chemical_reaction/bicaridine name = "Bicaridine" - id = /datum/reagent/medicine/bicaridine - results = list(/datum/reagent/medicine/bicaridine = 3) - required_reagents = list(/datum/reagent/carbon = 1, /datum/reagent/oxygen = 1, /datum/reagent/consumable/sugar = 1) + id = "bicaridine" + results = list("bicaridine" = 3) + required_reagents = list("carbon" = 1, "oxygen" = 1, "sugar" = 1) /datum/chemical_reaction/kelotane name = "Kelotane" - id = /datum/reagent/medicine/kelotane - results = list(/datum/reagent/medicine/kelotane = 2) - required_reagents = list(/datum/reagent/carbon = 1, /datum/reagent/silicon = 1) + id = "kelotane" + results = list("kelotane" = 2) + required_reagents = list("carbon" = 1, "silicon" = 1) /datum/chemical_reaction/antitoxin name = "Antitoxin" - id = /datum/reagent/medicine/antitoxin - results = list(/datum/reagent/medicine/antitoxin = 3) - required_reagents = list(/datum/reagent/nitrogen = 1, /datum/reagent/silicon = 1, /datum/reagent/potassium = 1) + id = "antitoxin" + results = list("antitoxin" = 3) + required_reagents = list("nitrogen" = 1, "silicon" = 1, "potassium" = 1) /datum/chemical_reaction/tricordrazine name = "Tricordrazine" - id = /datum/reagent/medicine/tricordrazine - results = list(/datum/reagent/medicine/tricordrazine = 3) - required_reagents = list(/datum/reagent/medicine/bicaridine = 1, /datum/reagent/medicine/kelotane = 1, /datum/reagent/medicine/antitoxin = 1) + id = "tricordrazine" + results = list("tricordrazine" = 3) + required_reagents = list("bicaridine" = 1, "kelotane" = 1, "antitoxin" = 1) /datum/chemical_reaction/regen_jelly name = "Regenerative Jelly" - id = /datum/reagent/medicine/regen_jelly - results = list(/datum/reagent/medicine/regen_jelly = 2) - required_reagents = list(/datum/reagent/medicine/tricordrazine = 1, /datum/reagent/toxin/slimejelly = 1) + id = "regen_jelly" + results = list("regen_jelly" = 2) + required_reagents = list("tricordrazine" = 1, "slimejelly" = 1) /datum/chemical_reaction/jelly_convert name = "Blood Jelly Conversion" - id = /datum/reagent/toxin/slimejelly - results = list(/datum/reagent/toxin/slimejelly = 1) - required_reagents = list(/datum/reagent/toxin = 1, /datum/reagent/blood/jellyblood = 1) + id = "blood_jelly" + results = list("slimejelly" = 1) + required_reagents = list("toxin" = 1, "jellyblood" = 1) /datum/chemical_reaction/corazone name = "Corazone" - id = /datum/reagent/medicine/corazone - results = list(/datum/reagent/medicine/corazone = 3) - required_reagents = list(/datum/reagent/phenol = 2, /datum/reagent/lithium = 1) + id = "corazone" + results = list("corazone" = 3) + required_reagents = list("phenol" = 2, "lithium" = 1) /datum/chemical_reaction/morphine name = "Morphine" - id = /datum/reagent/medicine/morphine - results = list(/datum/reagent/medicine/morphine = 2) - required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/consumable/ethanol = 1, /datum/reagent/oxygen = 1) + id = "morphine" + results = list("morphine" = 2) + required_reagents = list("carbon" = 2, "hydrogen" = 2, "ethanol" = 1, "oxygen" = 1) required_temp = 480 /datum/chemical_reaction/modafinil name = "Modafinil" - id = /datum/reagent/medicine/modafinil - results = list(/datum/reagent/medicine/modafinil = 5) - required_reagents = list(/datum/reagent/diethylamine = 1, /datum/reagent/ammonia = 1, /datum/reagent/phenol = 1, /datum/reagent/acetone = 1, /datum/reagent/toxin/acid = 1) - required_catalysts = list(/datum/reagent/bromine = 1) // as close to the real world synthesis as possible + id = "modafinil" + results = list("modafinil" = 5) + required_reagents = list("diethylamine" = 1, "ammonia" = 1, "phenol" = 1, "acetone" = 1, "sacid" = 1) + required_catalysts = list("bromine" = 1) // as close to the real world synthesis as possible /datum/chemical_reaction/psicodine name = "Psicodine" - id = /datum/reagent/medicine/psicodine - results = list(/datum/reagent/medicine/psicodine = 5) - required_reagents = list( /datum/reagent/medicine/mannitol = 2, /datum/reagent/water = 2, /datum/reagent/impedrezene = 1) + id = "psicodine" + results = list("psicodine" = 5) + required_reagents = list( "mannitol" = 2, "water" = 2, "impedrezene" = 1) diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index f4c378e8fe..eaae548d68 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -2,55 +2,55 @@ /datum/chemical_reaction/sterilizine name = "Sterilizine" id = "sterilizine" - results = list(/datum/reagent/space_cleaner/sterilizine = 3) - required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/medicine/charcoal = 1, /datum/reagent/chlorine = 1) + results = list("sterilizine" = 3) + required_reagents = list("ethanol" = 1, "charcoal" = 1, "chlorine" = 1) /datum/chemical_reaction/lube name = "Space Lube" - id = /datum/reagent/lube - results = list(/datum/reagent/lube = 4) - required_reagents = list(/datum/reagent/water = 1, /datum/reagent/silicon = 1, /datum/reagent/oxygen = 1) + id = "lube" + results = list("lube" = 4) + required_reagents = list("water" = 1, "silicon" = 1, "oxygen" = 1) /datum/chemical_reaction/spraytan name = "Spray Tan" - id = /datum/reagent/spraytan - results = list(/datum/reagent/spraytan = 2) - required_reagents = list(/datum/reagent/consumable/orangejuice = 1, /datum/reagent/oil = 1) + id = "spraytan" + results = list("spraytan" = 2) + required_reagents = list("orangejuice" = 1, "oil" = 1) /datum/chemical_reaction/spraytan2 name = "Spray Tan" - id = "spraytan2" - results = list(/datum/reagent/spraytan = 2) - required_reagents = list(/datum/reagent/consumable/orangejuice = 1, /datum/reagent/consumable/cornoil = 1) + id = "spraytan" + results = list("spraytan" = 2) + required_reagents = list("orangejuice" = 1, "cornoil" = 1) /datum/chemical_reaction/impedrezene name = "Impedrezene" - id = /datum/reagent/impedrezene - results = list(/datum/reagent/impedrezene = 2) - required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/oxygen = 1, /datum/reagent/consumable/sugar = 1) + id = "impedrezene" + results = list("impedrezene" = 2) + required_reagents = list("mercury" = 1, "oxygen" = 1, "sugar" = 1) /datum/chemical_reaction/cryptobiolin name = "Cryptobiolin" - id = /datum/reagent/cryptobiolin - results = list(/datum/reagent/cryptobiolin = 3) - required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/oxygen = 1, /datum/reagent/consumable/sugar = 1) + id = "cryptobiolin" + results = list("cryptobiolin" = 3) + required_reagents = list("potassium" = 1, "oxygen" = 1, "sugar" = 1) /datum/chemical_reaction/glycerol name = "Glycerol" - id = /datum/reagent/glycerol - results = list(/datum/reagent/glycerol = 1) - required_reagents = list(/datum/reagent/consumable/cornoil = 3, /datum/reagent/toxin/acid = 1) + id = "glycerol" + results = list("glycerol" = 1) + required_reagents = list("cornoil" = 3, "sacid" = 1) /datum/chemical_reaction/sodiumchloride name = "Sodium Chloride" id = "sodiumchloride" - results = list(/datum/reagent/consumable/sodiumchloride = 3) - required_reagents = list(/datum/reagent/water = 1, /datum/reagent/sodium = 1, /datum/reagent/chlorine = 1) + results = list("sodiumchloride" = 3) + required_reagents = list("water" = 1, "sodium" = 1, "chlorine" = 1) /datum/chemical_reaction/plasmasolidification name = "Solid Plasma" id = "solidplasma" - required_reagents = list(/datum/reagent/iron = 5, /datum/reagent/consumable/frostoil = 5, /datum/reagent/toxin/plasma = 20) + required_reagents = list("iron" = 5, "frostoil" = 5, "plasma" = 20) mob_react = FALSE /datum/chemical_reaction/plasmasolidification/on_reaction(datum/reagents/holder, created_volume) @@ -61,7 +61,7 @@ /datum/chemical_reaction/goldsolidification name = "Solid Gold" id = "solidgold" - required_reagents = list(/datum/reagent/consumable/frostoil = 5, /datum/reagent/gold = 20, /datum/reagent/iron = 1) + required_reagents = list("frostoil" = 5, "gold" = 20, "iron" = 1) mob_react = FALSE /datum/chemical_reaction/goldsolidification/on_reaction(datum/reagents/holder, created_volume) @@ -71,22 +71,22 @@ /datum/chemical_reaction/capsaicincondensation name = "Capsaicincondensation" - id = /datum/reagent/consumable/condensedcapsaicin - results = list(/datum/reagent/consumable/condensedcapsaicin = 5) - required_reagents = list(/datum/reagent/consumable/capsaicin = 1, /datum/reagent/consumable/ethanol = 5) + id = "capsaicincondensation" + results = list("condensedcapsaicin" = 5) + required_reagents = list("capsaicin" = 1, "ethanol" = 5) /datum/chemical_reaction/soapification name = "Soapification" id = "soapification" - required_reagents = list(/datum/reagent/liquidgibs = 10, /datum/reagent/lye = 10) // requires two scooped gib tiles + required_reagents = list("liquidgibs" = 10, "lye" = 10) // requires two scooped gib tiles required_temp = 374 mob_react = FALSE /datum/chemical_reaction/mustard name = "Mustard" - id = /datum/reagent/consumable/mustard - results = list(/datum/reagent/consumable/mustard = 5) - required_reagents = list(/datum/reagent/mustardgrind = 1, /datum/reagent/water = 10, /datum/reagent/consumable/enzyme= 1) + id = "mustard" + results = list("mustard" = 5) + required_reagents = list("mustardgrind" = 1, "water" = 10, "enzyme"= 1) /datum/chemical_reaction/soapification/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) @@ -96,7 +96,7 @@ /datum/chemical_reaction/candlefication name = "Candlefication" id = "candlefication" - required_reagents = list(/datum/reagent/liquidgibs = 5, /datum/reagent/oxygen = 5) + required_reagents = list("liquidgibs" = 5, "oxygen" = 5) // required_temp = 374 mob_react = FALSE @@ -108,7 +108,7 @@ /datum/chemical_reaction/meatification name = "Meatification" id = "meatification" - required_reagents = list(/datum/reagent/liquidgibs = 10, /datum/reagent/consumable/nutriment = 10, /datum/reagent/carbon = 10) + required_reagents = list("liquidgibs" = 10, "nutriment" = 10, "carbon" = 10) mob_react = FALSE /datum/chemical_reaction/meatification/on_reaction(datum/reagents/holder, created_volume) @@ -119,32 +119,32 @@ /datum/chemical_reaction/carbondioxide name = "Direct Carbon Oxidation" - id = /datum/reagent/carbondioxide - results = list(/datum/reagent/carbondioxide = 3) - required_reagents = list(/datum/reagent/carbon = 1, /datum/reagent/oxygen = 2) + id = "burningcarbon" + results = list("co2" = 3) + required_reagents = list("carbon" = 1, "oxygen" = 2) required_temp = 777 // pure carbon isn't especially reactive. /datum/chemical_reaction/nitrous_oxide name = "Nitrous Oxide" - id = /datum/reagent/nitrous_oxide - results = list(/datum/reagent/nitrous_oxide = 5) - required_reagents = list(/datum/reagent/ammonia = 2, /datum/reagent/nitrogen = 1, /datum/reagent/oxygen = 2) + id = "nitrous_oxide" + results = list("nitrous_oxide" = 5) + required_reagents = list("ammonia" = 2, "nitrogen" = 1, "oxygen" = 2) required_temp = 525 //Technically a mutation toxin /datum/chemical_reaction/mulligan name = "Mulligan" id = "mulligan" - results = list(/datum/reagent/mulligan = 1) - required_reagents = list(/datum/reagent/slime_toxin = 1, /datum/reagent/toxin/mutagen = 1) + results = list("mulligan" = 1) + required_reagents = list("slime_toxin" = 1, "mutagen" = 1) /datum/chemical_reaction/fermis_plush name = "Fermis plush" id = "fermis_plush" - required_reagents = list(/datum/reagent/consumable/caramel = 10, /datum/reagent/blood = 10, /datum/reagent/stable_plasma = 10) + required_reagents = list("sugar" = 10, "blood" = 10, "stable_plasma" = 10) mob_react = FALSE - required_temp = 300 + required_temp = 400 /datum/chemical_reaction/fermis_plush/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) @@ -156,75 +156,75 @@ /datum/chemical_reaction/virus_food name = "Virus Food" id = "virusfood" - results = list(/datum/reagent/consumable/virus_food = 15) - required_reagents = list(/datum/reagent/water = 5, /datum/reagent/consumable/milk = 5) + results = list("virusfood" = 15) + required_reagents = list("water" = 5, "milk" = 5) /datum/chemical_reaction/virus_food_mutagen name = "mutagenic agar" id = "mutagenvirusfood" - results = list(/datum/reagent/toxin/mutagen/mutagenvirusfood = 1) - required_reagents = list(/datum/reagent/toxin/mutagen = 1, /datum/reagent/consumable/virus_food = 1) + results = list("mutagenvirusfood" = 1) + required_reagents = list("mutagen" = 1, "virusfood" = 1) /datum/chemical_reaction/virus_food_synaptizine name = "virus rations" id = "synaptizinevirusfood" - results = list(/datum/reagent/medicine/synaptizine/synaptizinevirusfood = 1) - required_reagents = list(/datum/reagent/medicine/synaptizine = 1, /datum/reagent/consumable/virus_food = 1) + results = list("synaptizinevirusfood" = 1) + required_reagents = list("synaptizine" = 1, "virusfood" = 1) /datum/chemical_reaction/virus_food_plasma name = "virus plasma" - id = /datum/reagent/toxin/plasma/plasmavirusfood - results = list(/datum/reagent/toxin/plasma/plasmavirusfood = 1) - required_reagents = list(/datum/reagent/toxin/plasma = 1, /datum/reagent/consumable/virus_food = 1) + id = "plasmavirusfood" + results = list("plasmavirusfood" = 1) + required_reagents = list("plasma" = 1, "virusfood" = 1) /datum/chemical_reaction/virus_food_plasma_synaptizine name = "weakened virus plasma" - id = /datum/reagent/toxin/plasma/plasmavirusfood/weak - results = list(/datum/reagent/toxin/plasma/plasmavirusfood/weak = 2) - required_reagents = list(/datum/reagent/medicine/synaptizine = 1, /datum/reagent/toxin/plasma/plasmavirusfood = 1) + id = "weakplasmavirusfood" + results = list("weakplasmavirusfood" = 2) + required_reagents = list("synaptizine" = 1, "plasmavirusfood" = 1) /datum/chemical_reaction/virus_food_mutagen_sugar name = "sucrose agar" - id = /datum/reagent/toxin/mutagen/mutagenvirusfood/sugar - results = list(/datum/reagent/toxin/mutagen/mutagenvirusfood/sugar = 2) - required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/toxin/mutagen/mutagenvirusfood = 1) + id = "sugarvirusfood" + results = list("sugarvirusfood" = 2) + required_reagents = list("sugar" = 1, "mutagenvirusfood" = 1) /datum/chemical_reaction/virus_food_mutagen_salineglucose name = "sucrose agar" id = "salineglucosevirusfood" - results = list(/datum/reagent/toxin/mutagen/mutagenvirusfood/sugar = 2) - required_reagents = list(/datum/reagent/medicine/salglu_solution = 1, /datum/reagent/toxin/mutagen/mutagenvirusfood = 1) + results = list("sugarvirusfood" = 2) + required_reagents = list("salglu_solution" = 1, "mutagenvirusfood" = 1) /datum/chemical_reaction/virus_food_uranium name = "Decaying uranium gel" - id = /datum/reagent/uranium/uraniumvirusfood - results = list(/datum/reagent/uranium/uraniumvirusfood = 1) - required_reagents = list(/datum/reagent/uranium = 1, /datum/reagent/consumable/virus_food = 1) + id = "uraniumvirusfood" + results = list("uraniumvirusfood" = 1) + required_reagents = list("uranium" = 1, "virusfood" = 1) /datum/chemical_reaction/virus_food_uranium_plasma name = "Unstable uranium gel" - id = /datum/reagent/uranium/uraniumvirusfood/unstable - results = list(/datum/reagent/uranium/uraniumvirusfood/unstable = 1) - required_reagents = list(/datum/reagent/uranium = 5, /datum/reagent/toxin/plasma/plasmavirusfood = 1) + id = "uraniumvirusfood_plasma" + results = list("uraniumplasmavirusfood_unstable" = 1) + required_reagents = list("uranium" = 5, "plasmavirusfood" = 1) /datum/chemical_reaction/virus_food_uranium_plasma_gold name = "Stable uranium gel" id = "uraniumvirusfood_gold" - results = list(/datum/reagent/uranium/uraniumvirusfood/stable = 1) - required_reagents = list(/datum/reagent/uranium = 10, /datum/reagent/gold = 10, /datum/reagent/toxin/plasma = 1) + results = list("uraniumplasmavirusfood_stable" = 1) + required_reagents = list("uranium" = 10, "gold" = 10, "plasma" = 1) /datum/chemical_reaction/virus_food_uranium_plasma_silver name = "Stable uranium gel" id = "uraniumvirusfood_silver" - results = list(/datum/reagent/uranium/uraniumvirusfood/stable = 1) - required_reagents = list(/datum/reagent/uranium = 10, /datum/reagent/silver = 10, /datum/reagent/toxin/plasma = 1) + results = list("uraniumplasmavirusfood_stable" = 1) + required_reagents = list("uranium" = 10, "silver" = 10, "plasma" = 1) /datum/chemical_reaction/mix_virus name = "Mix Virus" id = "mixvirus" - results = list(/datum/reagent/blood = 1) - required_reagents = list(/datum/reagent/consumable/virus_food = 1) - required_catalysts = list(/datum/reagent/blood = 1) + results = list("blood" = 1) + required_reagents = list("virusfood" = 1) + required_catalysts = list("blood" = 1) var/level_min = 1 var/level_max = 2 @@ -241,7 +241,7 @@ name = "Mix Virus 2" id = "mixvirus2" - required_reagents = list(/datum/reagent/toxin/mutagen = 1) + required_reagents = list("mutagen" = 1) level_min = 2 level_max = 4 @@ -249,7 +249,7 @@ name = "Mix Virus 3" id = "mixvirus3" - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list("plasma" = 1) level_min = 4 level_max = 6 @@ -257,7 +257,7 @@ name = "Mix Virus 4" id = "mixvirus4" - required_reagents = list(/datum/reagent/uranium = 1) + required_reagents = list("uranium" = 1) level_min = 5 level_max = 6 @@ -265,7 +265,7 @@ name = "Mix Virus 5" id = "mixvirus5" - required_reagents = list(/datum/reagent/toxin/mutagen/mutagenvirusfood = 1) + required_reagents = list("mutagenvirusfood" = 1) level_min = 3 level_max = 3 @@ -273,7 +273,7 @@ name = "Mix Virus 6" id = "mixvirus6" - required_reagents = list(/datum/reagent/toxin/mutagen/mutagenvirusfood/sugar = 1) + required_reagents = list("sugarvirusfood" = 1) level_min = 4 level_max = 4 @@ -281,7 +281,7 @@ name = "Mix Virus 7" id = "mixvirus7" - required_reagents = list(/datum/reagent/toxin/plasma/plasmavirusfood/weak = 1) + required_reagents = list("weakplasmavirusfood" = 1) level_min = 5 level_max = 5 @@ -289,7 +289,7 @@ name = "Mix Virus 8" id = "mixvirus8" - required_reagents = list(/datum/reagent/toxin/plasma/plasmavirusfood = 1) + required_reagents = list("plasmavirusfood" = 1) level_min = 6 level_max = 6 @@ -297,7 +297,7 @@ name = "Mix Virus 9" id = "mixvirus9" - required_reagents = list(/datum/reagent/medicine/synaptizine/synaptizinevirusfood = 1) + required_reagents = list("synaptizinevirusfood" = 1) level_min = 1 level_max = 1 @@ -305,7 +305,7 @@ name = "Mix Virus 10" id = "mixvirus10" - required_reagents = list(/datum/reagent/uranium/uraniumvirusfood = 1) + required_reagents = list("uraniumvirusfood" = 1) level_min = 6 level_max = 7 @@ -313,7 +313,7 @@ name = "Mix Virus 11" id = "mixvirus11" - required_reagents = list(/datum/reagent/uranium/uraniumvirusfood/unstable = 1) + required_reagents = list("uraniumplasmavirusfood_unstable" = 1) level_min = 7 level_max = 7 @@ -321,7 +321,7 @@ name = "Mix Virus 12" id = "mixvirus12" - required_reagents = list(/datum/reagent/uranium/uraniumvirusfood/stable = 1) + required_reagents = list("uraniumplasmavirusfood_stable" = 1) level_min = 8 level_max = 8 @@ -329,8 +329,8 @@ name = "Devolve Virus" id = "remvirus" - required_reagents = list(/datum/reagent/medicine/synaptizine = 1) - required_catalysts = list(/datum/reagent/blood = 1) + required_reagents = list("synaptizine" = 1) + required_catalysts = list("blood" = 1) /datum/chemical_reaction/mix_virus/rem_virus/on_reaction(datum/reagents/holder, created_volume) @@ -343,8 +343,8 @@ /datum/chemical_reaction/mix_virus/neuter_virus name = "Neuter Virus" id = "neutervirus" - required_reagents = list(/datum/reagent/toxin/formaldehyde = 1) - required_catalysts = list(/datum/reagent/blood = 1) + required_reagents = list("formaldehyde" = 1) + required_catalysts = list("blood" = 1) /datum/chemical_reaction/mix_virus/neuter_virus/on_reaction(datum/reagents/holder, created_volume) @@ -362,13 +362,13 @@ /datum/chemical_reaction/surfactant name = "Foam surfactant" id = "foam surfactant" - results = list(/datum/reagent/fluorosurfactant = 5) - required_reagents = list(/datum/reagent/fluorine = 2, /datum/reagent/carbon = 2, /datum/reagent/toxin/acid = 1) + results = list("fluorosurfactant" = 5) + required_reagents = list("fluorine" = 2, "carbon" = 2, "sacid" = 1) /datum/chemical_reaction/foam name = "Foam" id = "foam" - required_reagents = list(/datum/reagent/fluorosurfactant = 1, /datum/reagent/water = 1) + required_reagents = list("fluorosurfactant" = 1, "water" = 1) mob_react = FALSE /datum/chemical_reaction/foam/on_reaction(datum/reagents/holder, created_volume) @@ -385,7 +385,7 @@ /datum/chemical_reaction/metalfoam name = "Metal Foam" id = "metalfoam" - required_reagents = list(/datum/reagent/aluminium = 3, /datum/reagent/foaming_agent = 1, /datum/reagent/toxin/acid/fluacid = 1) + required_reagents = list("aluminium" = 3, "foaming_agent" = 1, "facid" = 1) mob_react = FALSE /datum/chemical_reaction/metalfoam/on_reaction(datum/reagents/holder, created_volume) @@ -402,7 +402,7 @@ /datum/chemical_reaction/smart_foam name = "Smart Metal Foam" id = "smart_metal_foam" - required_reagents = list(/datum/reagent/aluminium = 3, /datum/reagent/smart_foaming_agent = 1, /datum/reagent/toxin/acid/fluacid = 1) + required_reagents = list("aluminium" = 3, "smart_foaming_agent" = 1, "facid" = 1) mob_react = TRUE /datum/chemical_reaction/smart_foam/on_reaction(datum/reagents/holder, created_volume) @@ -416,7 +416,7 @@ /datum/chemical_reaction/ironfoam name = "Iron Foam" id = "ironlfoam" - required_reagents = list(/datum/reagent/iron = 3, /datum/reagent/foaming_agent = 1, /datum/reagent/toxin/acid/fluacid = 1) + required_reagents = list("iron" = 3, "foaming_agent" = 1, "facid" = 1) mob_react = FALSE /datum/chemical_reaction/ironfoam/on_reaction(datum/reagents/holder, created_volume) @@ -430,15 +430,15 @@ /datum/chemical_reaction/foaming_agent name = "Foaming Agent" - id = /datum/reagent/foaming_agent - results = list(/datum/reagent/foaming_agent = 1) - required_reagents = list(/datum/reagent/lithium = 1, /datum/reagent/hydrogen = 1) + id = "foaming_agent" + results = list("foaming_agent" = 1) + required_reagents = list("lithium" = 1, "hydrogen" = 1) /datum/chemical_reaction/smart_foaming_agent name = "Smart foaming Agent" - id = /datum/reagent/smart_foaming_agent - results = list(/datum/reagent/smart_foaming_agent = 3) - required_reagents = list(/datum/reagent/foaming_agent = 3, /datum/reagent/acetone = 1, /datum/reagent/iron = 1) + id = "smart_foaming_agent" + results = list("smart_foaming_agent" = 3) + required_reagents = list("foaming_agent" = 3, "acetone" = 1, "iron" = 1) mix_message = "The solution mixes into a frothy metal foam and conforms to the walls of its container." @@ -446,83 +446,83 @@ /datum/chemical_reaction/ammonia name = "Ammonia" - id = /datum/reagent/ammonia - results = list(/datum/reagent/ammonia = 3) - required_reagents = list(/datum/reagent/hydrogen = 3, /datum/reagent/nitrogen = 1) + id = "ammonia" + results = list("ammonia" = 3) + required_reagents = list("hydrogen" = 3, "nitrogen" = 1) /datum/chemical_reaction/diethylamine name = "Diethylamine" - id = /datum/reagent/diethylamine - results = list(/datum/reagent/diethylamine = 2) - required_reagents = list (/datum/reagent/ammonia = 1, /datum/reagent/consumable/ethanol = 1) + id = "diethylamine" + results = list("diethylamine" = 2) + required_reagents = list ("ammonia" = 1, "ethanol" = 1) /datum/chemical_reaction/space_cleaner name = "Space cleaner" - id = /datum/reagent/space_cleaner - results = list(/datum/reagent/space_cleaner = 2) - required_reagents = list(/datum/reagent/ammonia = 1, /datum/reagent/water = 1) + id = "cleaner" + results = list("cleaner" = 2) + required_reagents = list("ammonia" = 1, "water" = 1) /datum/chemical_reaction/plantbgone name = "Plant-B-Gone" - id = /datum/reagent/toxin/plantbgone - results = list(/datum/reagent/toxin/plantbgone = 5) - required_reagents = list(/datum/reagent/toxin = 1, /datum/reagent/water = 4) + id = "plantbgone" + results = list("plantbgone" = 5) + required_reagents = list("toxin" = 1, "water" = 4) /datum/chemical_reaction/weedkiller name = "Weed Killer" - id = /datum/reagent/toxin/plantbgone/weedkiller - results = list(/datum/reagent/toxin/plantbgone/weedkiller = 5) - required_reagents = list(/datum/reagent/toxin = 1, /datum/reagent/ammonia = 4) + id = "weedkiller" + results = list("weedkiller" = 5) + required_reagents = list("toxin" = 1, "ammonia" = 4) /datum/chemical_reaction/pestkiller name = "Pest Killer" - id = /datum/reagent/toxin/pestkiller - results = list(/datum/reagent/toxin/pestkiller = 5) - required_reagents = list(/datum/reagent/toxin = 1, /datum/reagent/consumable/ethanol = 4) + id = "pestkiller" + results = list("pestkiller" = 5) + required_reagents = list("toxin" = 1, "ethanol" = 4) /datum/chemical_reaction/drying_agent name = "Drying agent" - id = /datum/reagent/drying_agent - results = list(/datum/reagent/drying_agent = 3) - required_reagents = list(/datum/reagent/stable_plasma = 2, /datum/reagent/consumable/ethanol = 1, /datum/reagent/sodium = 1) + id = "drying_agent" + results = list("drying_agent" = 3) + required_reagents = list("stable_plasma" = 2, "ethanol" = 1, "sodium" = 1) //////////////////////////////////// Other goon stuff /////////////////////////////////////////// /datum/chemical_reaction/acetone name = "acetone" - id = /datum/reagent/acetone - results = list(/datum/reagent/acetone = 3) - required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/fuel = 1, /datum/reagent/oxygen = 1) + id = "acetone" + results = list("acetone" = 3) + required_reagents = list("oil" = 1, "welding_fuel" = 1, "oxygen" = 1) /datum/chemical_reaction/oil name = "Oil" - id = /datum/reagent/oil - results = list(/datum/reagent/oil = 3) - required_reagents = list(/datum/reagent/fuel = 1, /datum/reagent/carbon = 1, /datum/reagent/hydrogen = 1) + id = "oil" + results = list("oil" = 3) + required_reagents = list("welding_fuel" = 1, "carbon" = 1, "hydrogen" = 1) /datum/chemical_reaction/phenol name = "phenol" - id = /datum/reagent/phenol - results = list(/datum/reagent/phenol = 3) - required_reagents = list(/datum/reagent/water = 1, /datum/reagent/chlorine = 1, /datum/reagent/oil = 1) + id = "phenol" + results = list("phenol" = 3) + required_reagents = list("water" = 1, "chlorine" = 1, "oil" = 1) /datum/chemical_reaction/ash name = "Ash" - id = /datum/reagent/ash - results = list(/datum/reagent/ash = 1) - required_reagents = list(/datum/reagent/oil = 1) + id = "ash" + results = list("ash" = 1) + required_reagents = list("oil" = 1) required_temp = 480 /datum/chemical_reaction/colorful_reagent name = "colorful_reagent" - id = /datum/reagent/colorful_reagent - results = list(/datum/reagent/colorful_reagent = 5) - required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/radium = 1, /datum/reagent/drug/space_drugs = 1, /datum/reagent/medicine/cryoxadone = 1, /datum/reagent/consumable/triple_citrus = 1) + id = "colorful_reagent" + results = list("colorful_reagent" = 5) + required_reagents = list("stable_plasma" = 1, "radium" = 1, "space_drugs" = 1, "cryoxadone" = 1, "triple_citrus" = 1) /datum/chemical_reaction/life name = "Life" id = "life" - required_reagents = list(/datum/reagent/medicine/strange_reagent = 1, /datum/reagent/medicine/synthflesh = 1, /datum/reagent/blood = 1) + required_reagents = list("strange_reagent" = 1, "synthflesh" = 1, "blood" = 1) required_temp = 374 /datum/chemical_reaction/life/on_reaction(datum/reagents/holder, created_volume) @@ -532,7 +532,7 @@ /datum/chemical_reaction/life_friendly name = "Life (Friendly)" id = "life_friendly" - required_reagents = list(/datum/reagent/medicine/strange_reagent = 1, /datum/reagent/medicine/synthflesh = 1, /datum/reagent/consumable/sugar = 1) + required_reagents = list("strange_reagent" = 1, "synthflesh" = 1, "sugar" = 1) required_temp = 374 /datum/chemical_reaction/life_friendly/on_reaction(datum/reagents/holder, created_volume) @@ -541,7 +541,7 @@ /datum/chemical_reaction/corgium name = "corgium" id = "corgium" - required_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent = 1, /datum/reagent/medicine/strange_reagent = 1, /datum/reagent/blood = 1) + required_reagents = list("nutriment" = 1, "colorful_reagent" = 1, "strange_reagent" = 1, "blood" = 1) required_temp = 374 /datum/chemical_reaction/corgium/on_reaction(datum/reagents/holder, created_volume) @@ -552,56 +552,56 @@ /datum/chemical_reaction/hair_dye name = "hair_dye" - id = /datum/reagent/hair_dye - results = list(/datum/reagent/hair_dye = 5) - required_reagents = list(/datum/reagent/colorful_reagent = 1, /datum/reagent/radium = 1, /datum/reagent/drug/space_drugs = 1) + id = "hair_dye" + results = list("hair_dye" = 5) + required_reagents = list("colorful_reagent" = 1, "radium" = 1, "space_drugs" = 1) /datum/chemical_reaction/barbers_aid name = "barbers_aid" - id = /datum/reagent/barbers_aid - results = list(/datum/reagent/barbers_aid = 5) - required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/radium = 1, /datum/reagent/drug/space_drugs = 1) + id = "barbers_aid" + results = list("barbers_aid" = 5) + required_reagents = list("carpet" = 1, "radium" = 1, "space_drugs" = 1) /datum/chemical_reaction/concentrated_barbers_aid name = "concentrated_barbers_aid" - id = /datum/reagent/concentrated_barbers_aid - results = list(/datum/reagent/concentrated_barbers_aid = 2) - required_reagents = list(/datum/reagent/barbers_aid = 1, /datum/reagent/toxin/mutagen = 1) + id = "concentrated_barbers_aid" + results = list("concentrated_barbers_aid" = 2) + required_reagents = list("barbers_aid" = 1, "mutagen" = 1) /datum/chemical_reaction/saltpetre name = "saltpetre" - id = /datum/reagent/saltpetre - results = list(/datum/reagent/saltpetre = 3) - required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/nitrogen = 1, /datum/reagent/oxygen = 3) + id = "saltpetre" + results = list("saltpetre" = 3) + required_reagents = list("potassium" = 1, "nitrogen" = 1, "oxygen" = 3) /datum/chemical_reaction/lye name = "lye" - id = /datum/reagent/lye - results = list(/datum/reagent/lye = 3) - required_reagents = list(/datum/reagent/sodium = 1, /datum/reagent/hydrogen = 1, /datum/reagent/oxygen = 1) + id = "lye" + results = list("lye" = 3) + required_reagents = list("sodium" = 1, "hydrogen" = 1, "oxygen" = 1) /datum/chemical_reaction/lye2 name = "lye" - id = "lye2" - results = list(/datum/reagent/lye = 2) - required_reagents = list(/datum/reagent/ash = 1, /datum/reagent/water = 1, /datum/reagent/carbon = 1) + id = "lye" + results = list("lye" = 2) + required_reagents = list("ash" = 1, "water" = 1, "carbon" = 1) /datum/chemical_reaction/royal_bee_jelly name = "royal bee jelly" - id = /datum/reagent/royal_bee_jelly - results = list(/datum/reagent/royal_bee_jelly = 5) - required_reagents = list(/datum/reagent/toxin/mutagen = 10, /datum/reagent/consumable/honey = 40) + id = "royal_bee_jelly" + results = list("royal_bee_jelly" = 5) + required_reagents = list("mutagen" = 10, "honey" = 40) /datum/chemical_reaction/laughter name = "laughter" - id = /datum/reagent/consumable/laughter - results = list(/datum/reagent/consumable/laughter = 10) // Fuck it. I'm not touching this one. - required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/banana = 1) + id = "laughter" + results = list("laughter" = 10) // Fuck it. I'm not touching this one. + required_reagents = list("sugar" = 1, "banana" = 1) /datum/chemical_reaction/plastic_polymers name = "plastic polymers" id = "plastic_polymers" - required_reagents = list(/datum/reagent/oil = 5, /datum/reagent/toxin/acid = 2, /datum/reagent/ash = 3) + required_reagents = list("oil" = 5, "sacid" = 2, "ash" = 3) required_temp = 374 //lazily consistent with soap & other crafted objects generically created with heat. /datum/chemical_reaction/plastic_polymers/on_reaction(datum/reagents/holder, created_volume) @@ -611,101 +611,101 @@ /datum/chemical_reaction/pax name = "pax" - id = /datum/reagent/pax - results = list(/datum/reagent/pax = 3) - required_reagents = list(/datum/reagent/toxin/mindbreaker = 1, /datum/reagent/medicine/synaptizine = 1, /datum/reagent/water = 1) + id = "pax" + results = list("pax" = 3) + required_reagents = list("mindbreaker" = 1, "synaptizine" = 1, "water" = 1) /datum/chemical_reaction/cat name = "felined mutation toxic" - id = /datum/reagent/mutationtoxin/felinid - results = list(/datum/reagent/mutationtoxin/felinid = 1) - required_reagents = list(/datum/reagent/toxin/mindbreaker = 1, /datum/reagent/ammonia = 1, /datum/reagent/water = 1, /datum/reagent/drug/aphrodisiac = 10, /datum/reagent/mutationtoxin = 1) // Maybe aphro+ if it becomes a shitty meme + id = "cats" + results = list("felinidmutationtoxin" = 1) + required_reagents = list("mindbreaker" = 1, "ammonia" = 1, "water" = 1, "aphro" = 10, "stablemutationtoxin" = 1) // Maybe aphro+ if it becomes a shitty meme required_temp = 450 /datum/chemical_reaction/moff name = "insect mutation toxic" - id = /datum/reagent/mutationtoxin/insect - results = list(/datum/reagent/mutationtoxin/insect = 1) - required_reagents = list(/datum/reagent/liquid_dark_matter = 2, /datum/reagent/ammonia = 5, /datum/reagent/lithium = 1, /datum/reagent/mutationtoxin = 1) + id = "moffs" + results = list("mothmutationtoxin" = 1) + required_reagents = list("liquid_dark_matter" = 2, "ammonia" = 5, "lithium" = 1, "stablemutationtoxin" = 1) required_temp = 320 /datum/chemical_reaction/notlight //Harder to make do to it being a hard race to play name = "shadow muatatuin toxic" - id = /datum/reagent/mutationtoxin/shadow - results = list(/datum/reagent/mutationtoxin/shadow = 1) - required_reagents = list(/datum/reagent/liquid_dark_matter = 5, /datum/reagent/medicine/synaptizine = 10, /datum/reagent/medicine/oculine = 10, /datum/reagent/mutationtoxin = 1) + id = "notlight" + results = list("shadowmutationtoxin" = 1) + required_reagents = list("liquid_dark_matter" = 5, "synaptizine" = 10, "oculine" = 10, "stablemutationtoxin" = 1) required_temp = 600 // Liquid Carpets /datum/chemical_reaction/carpet name = "carpet" - id = /datum/reagent/carpet - results = list(/datum/reagent/carpet = 2) - required_reagents = list(/datum/reagent/drug/space_drugs = 1, /datum/reagent/blood = 1) + id = "carpet" + results = list("carpet" = 2) + required_reagents = list("space_drugs" = 1, "blood" = 1) /datum/chemical_reaction/carpet/black name = "liquid black carpet" - id = /datum/reagent/carpet/black - results = list(/datum/reagent/carpet/black = 2) - required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/carbon = 1) + id = "blackcarpet" + results = list("blackcarpet" = 2) + required_reagents = list("carpet" = 1, "carbon" = 1) /datum/chemical_reaction/carpet/blackred name = "liquid red black carpet" - id = /datum/reagent/carpet/blackred - results = list(/datum/reagent/carpet/blackred = 2) - required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/medicine/charcoal = 1) + id = "blackredcarpet" + results = list("blackredcarpet" = 2) + required_reagents = list("carpet" = 1, "charcoal" = 1) /datum/chemical_reaction/carpet/monochrome name = "liquid monochrome carpet" - id = /datum/reagent/carpet/monochrome - results = list(/datum/reagent/carpet/monochrome = 2) - required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/oil = 1) + id = "monochromecarpet" + results = list("monochromecarpet" = 2) + required_reagents = list("carpet" = 1, "oil" = 1) /datum/chemical_reaction/carpet/blue name = "liquid blue carpet" - id = /datum/reagent/carpet/blue - results = list(/datum/reagent/carpet/blue = 2) - required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/tonic = 1) + id = "bluecarpet" + results = list("bluecarpet" = 2) + required_reagents = list("carpet" = 1, "tonic" = 1) /datum/chemical_reaction/carpet/cyan name = "liquid cyan carpet" - id = /datum/reagent/carpet/cyan - results = list(/datum/reagent/carpet/cyan = 2) - required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/ice = 1) + id = "cyancarpet" + results = list("cyancarpet" = 2) + required_reagents = list("carpet" = 1, "ice" = 1) /datum/chemical_reaction/carpet/green name = "liquid green carpet" - id = /datum/reagent/carpet/green - results = list(/datum/reagent/carpet/green = 2) - required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/toxin/acid = 1) + id = "greencarpet" + results = list("greencarpet" = 2) + required_reagents = list("carpet" = 1, "sacid" = 1) /datum/chemical_reaction/carpet/orange name = "liquid orange carpet" - id = /datum/reagent/carpet/orange - results = list(/datum/reagent/carpet/orange = 2) - required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/orangejuice = 1) + id = "orangecarpet" + results = list("orangecarpet" = 2) + required_reagents = list("carpet" = 1, "orangejuice" = 1) /datum/chemical_reaction/carpet/purple name = "liquid purple carpet" - id = /datum/reagent/carpet/purple - results = list(/datum/reagent/carpet/purple = 2) - required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/stable_plasma = 1) + id = "purplecarpet" + results = list("purplecarpet" = 2) + required_reagents = list("carpet" = 1, "stable_plasma" = 1) /datum/chemical_reaction/carpet/red name = "liquid red carpet" - id = /datum/reagent/carpet/red - results = list(/datum/reagent/carpet/red = 2) - required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/fuel = 1) + id = "redcarpet" + results = list("redcarpet" = 2) + required_reagents = list("carpet" = 1, "welding_fuel" = 1) /datum/chemical_reaction/carpet/royalblack name = "liquid royal black carpet" - id = /datum/reagent/carpet/royalblack - results = list(/datum/reagent/carpet/royalblack = 2) - required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/blackpepper = 1) + id = "royalblackcarpet" + results = list("royalblackcarpet" = 2) + required_reagents = list("carpet" = 1, "blackpepper" = 1) /datum/chemical_reaction/carpet/royalblue name = "liquid royal blue carpet" - id = /datum/reagent/carpet/royalblue - results = list(/datum/reagent/carpet/royalblue = 2) - required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/medicine/clonexadone = 1) + id = "royalbluecarpet" + results = list("royalbluecarpet" = 2) + required_reagents = list("carpet" = 1, "clonexadone" = 1) diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index cb9636bf02..ad1efc1da7 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -27,21 +27,21 @@ /datum/chemical_reaction/reagent_explosion/nitroglycerin name = "Nitroglycerin" - id = /datum/reagent/nitroglycerin - results = list(/datum/reagent/nitroglycerin = 2) - required_reagents = list(/datum/reagent/glycerol = 1, /datum/reagent/toxin/acid/fluacid = 1, /datum/reagent/toxin/acid = 1) + id = "nitroglycerin" + results = list("nitroglycerin" = 2) + required_reagents = list("glycerol" = 1, "facid" = 1, "sacid" = 1) strengthdiv = 2 /datum/chemical_reaction/reagent_explosion/nitroglycerin/on_reaction(datum/reagents/holder, created_volume) - if(holder.has_reagent(/datum/reagent/stabilizing_agent)) + if(holder.has_reagent("stabilizing_agent")) return - holder.remove_reagent(/datum/reagent/nitroglycerin, created_volume*2) + holder.remove_reagent("nitroglycerin", created_volume*2) ..() /datum/chemical_reaction/reagent_explosion/nitroglycerin_explosion name = "Nitroglycerin explosion" id = "nitroglycerin_explosion" - required_reagents = list(/datum/reagent/nitroglycerin = 1) + required_reagents = list("nitroglycerin" = 1) required_temp = 474 strengthdiv = 2 @@ -49,13 +49,13 @@ /datum/chemical_reaction/reagent_explosion/potassium_explosion name = "Explosion" id = "potassium_explosion" - required_reagents = list(/datum/reagent/water = 1, /datum/reagent/potassium = 1) + required_reagents = list("water" = 1, "potassium" = 1) strengthdiv = 10 /datum/chemical_reaction/reagent_explosion/potassium_explosion/holyboom name = "Holy Explosion" id = "holyboom" - required_reagents = list(/datum/reagent/water/holywater = 1, /datum/reagent/potassium = 1) + required_reagents = list("holywater" = 1, "potassium" = 1) /datum/chemical_reaction/reagent_explosion/potassium_explosion/holyboom/on_reaction(datum/reagents/holder, created_volume) var/turf/T = get_turf(holder.my_atom) @@ -84,14 +84,14 @@ /datum/chemical_reaction/blackpowder name = "Black Powder" - id = /datum/reagent/blackpowder - results = list(/datum/reagent/blackpowder = 3) - required_reagents = list(/datum/reagent/saltpetre = 1, /datum/reagent/medicine/charcoal = 1, /datum/reagent/sulfur = 1) + id = "blackpowder" + results = list("blackpowder" = 3) + required_reagents = list("saltpetre" = 1, "charcoal" = 1, "sulfur" = 1) /datum/chemical_reaction/reagent_explosion/blackpowder_explosion name = "Black Powder Kaboom" id = "blackpowder_explosion" - required_reagents = list(/datum/reagent/blackpowder = 1) + required_reagents = list("blackpowder" = 1) required_temp = 474 strengthdiv = 6 modifier = 1 @@ -103,14 +103,14 @@ /datum/chemical_reaction/thermite name = "Thermite" - id = /datum/reagent/thermite - results = list(/datum/reagent/thermite = 3) - required_reagents = list(/datum/reagent/aluminium = 1, /datum/reagent/iron = 1, /datum/reagent/oxygen = 1) + id = "thermite" + results = list("thermite" = 3) + required_reagents = list("aluminium" = 1, "iron" = 1, "oxygen" = 1) /datum/chemical_reaction/emp_pulse name = "EMP Pulse" id = "emp_pulse" - required_reagents = list(/datum/reagent/uranium = 1, /datum/reagent/iron = 1) // Yes, laugh, it's the best recipe I could think of that makes a little bit of sense + required_reagents = list("uranium" = 1, "iron" = 1) // Yes, laugh, it's the best recipe I could think of that makes a little bit of sense /datum/chemical_reaction/emp_pulse/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) @@ -123,7 +123,7 @@ /datum/chemical_reaction/beesplosion name = "Bee Explosion" id = "beesplosion" - required_reagents = list(/datum/reagent/consumable/honey = 1, /datum/reagent/medicine/strange_reagent = 1, /datum/reagent/radium = 1) + required_reagents = list("honey" = 1, "strange_reagent" = 1, "radium" = 1) /datum/chemical_reaction/beesplosion/on_reaction(datum/reagents/holder, created_volume) var/location = holder.my_atom.drop_location() @@ -134,7 +134,7 @@ var/list/beeagents = list() for(var/X in holder.reagent_list) var/datum/reagent/R = X - if(required_reagents[R.type]) + if(required_reagents[R.id]) continue beeagents += R var/bee_amount = round(created_volume * 0.2) @@ -146,15 +146,15 @@ /datum/chemical_reaction/stabilizing_agent name = "stabilizing_agent" - id = /datum/reagent/stabilizing_agent - results = list(/datum/reagent/stabilizing_agent = 3) - required_reagents = list(/datum/reagent/iron = 1, /datum/reagent/oxygen = 1, /datum/reagent/hydrogen = 1) + id = "stabilizing_agent" + results = list("stabilizing_agent" = 3) + required_reagents = list("iron" = 1, "oxygen" = 1, "hydrogen" = 1) /datum/chemical_reaction/clf3 name = "Chlorine Trifluoride" - id = /datum/reagent/clf3 - results = list(/datum/reagent/clf3 = 4) - required_reagents = list(/datum/reagent/chlorine = 1, /datum/reagent/fluorine = 3) + id = "clf3" + results = list("clf3" = 4) + required_reagents = list("chlorine" = 1, "fluorine" = 3) required_temp = 424 /datum/chemical_reaction/clf3/on_reaction(datum/reagents/holder, created_volume) @@ -167,7 +167,7 @@ name = "Meth explosion" id = "methboom1" required_temp = 380 //slightly above the meth mix time. - required_reagents = list(/datum/reagent/drug/methamphetamine = 1) + required_reagents = list("methamphetamine" = 1) strengthdiv = 6 modifier = 1 mob_react = FALSE @@ -181,19 +181,19 @@ /datum/chemical_reaction/reagent_explosion/methsplosion/methboom2 id = "methboom2" - required_reagents = list(/datum/reagent/diethylamine = 1, /datum/reagent/iodine = 1, /datum/reagent/phosphorus = 1, /datum/reagent/hydrogen = 1) //diethylamine is often left over from mixing the ephedrine. + required_reagents = list("diethylamine" = 1, "iodine" = 1, "phosphorus" = 1, "hydrogen" = 1) //diethylamine is often left over from mixing the ephedrine. required_temp = 300 //room temperature, chilling it even a little will prevent the explosion /datum/chemical_reaction/sorium name = "Sorium" - id = /datum/reagent/sorium - results = list(/datum/reagent/sorium = 4) - required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/oxygen = 1, /datum/reagent/nitrogen = 1, /datum/reagent/carbon = 1) + id = "sorium" + results = list("sorium" = 4) + required_reagents = list("mercury" = 1, "oxygen" = 1, "nitrogen" = 1, "carbon" = 1) /datum/chemical_reaction/sorium/on_reaction(datum/reagents/holder, created_volume) - if(holder.has_reagent(/datum/reagent/stabilizing_agent)) + if(holder.has_reagent("stabilizing_agent")) return - holder.remove_reagent(/datum/reagent/sorium, created_volume*4) + holder.remove_reagent("sorium", created_volume*4) var/turf/T = get_turf(holder.my_atom) var/range = CLAMP(sqrt(created_volume*4), 1, 6) goonchem_vortex(T, 1, range) @@ -201,7 +201,7 @@ /datum/chemical_reaction/sorium_vortex name = "sorium_vortex" id = "sorium_vortex" - required_reagents = list(/datum/reagent/sorium = 1) + required_reagents = list("sorium" = 1) required_temp = 474 /datum/chemical_reaction/sorium_vortex/on_reaction(datum/reagents/holder, created_volume) @@ -211,14 +211,14 @@ /datum/chemical_reaction/liquid_dark_matter name = "Liquid Dark Matter" - id = /datum/reagent/liquid_dark_matter - results = list(/datum/reagent/liquid_dark_matter = 3) - required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/radium = 1, /datum/reagent/carbon = 1) + id = "liquid_dark_matter" + results = list("liquid_dark_matter" = 3) + required_reagents = list("stable_plasma" = 1, "radium" = 1, "carbon" = 1) /datum/chemical_reaction/liquid_dark_matter/on_reaction(datum/reagents/holder, created_volume) - if(holder.has_reagent(/datum/reagent/stabilizing_agent)) + if(holder.has_reagent("stabilizing_agent")) return - holder.remove_reagent(/datum/reagent/liquid_dark_matter, created_volume*3) + holder.remove_reagent("liquid_dark_matter", created_volume*3) var/turf/T = get_turf(holder.my_atom) var/range = CLAMP(sqrt(created_volume*3), 1, 6) goonchem_vortex(T, 0, range) @@ -226,7 +226,7 @@ /datum/chemical_reaction/ldm_vortex name = "LDM Vortex" id = "ldm_vortex" - required_reagents = list(/datum/reagent/liquid_dark_matter = 1) + required_reagents = list("liquid_dark_matter" = 1) required_temp = 474 /datum/chemical_reaction/ldm_vortex/on_reaction(datum/reagents/holder, created_volume) @@ -236,12 +236,12 @@ /datum/chemical_reaction/flash_powder name = "Flash powder" - id = /datum/reagent/flash_powder - results = list(/datum/reagent/flash_powder = 3) - required_reagents = list(/datum/reagent/aluminium = 1, /datum/reagent/potassium = 1, /datum/reagent/sulfur = 1 ) + id = "flash_powder" + results = list("flash_powder" = 3) + required_reagents = list("aluminium" = 1, "potassium" = 1, "sulfur" = 1 ) /datum/chemical_reaction/flash_powder/on_reaction(datum/reagents/holder, created_volume) - if(holder.has_reagent(/datum/reagent/stabilizing_agent)) + if(holder.has_reagent("stabilizing_agent")) return var/location = get_turf(holder.my_atom) do_sparks(2, TRUE, location) @@ -255,12 +255,12 @@ C.Knockdown(60) else C.Stun(100) - holder.remove_reagent(/datum/reagent/flash_powder, created_volume*3) + holder.remove_reagent("flash_powder", created_volume*3) /datum/chemical_reaction/flash_powder_flash name = "Flash powder activation" id = "flash_powder_flash" - required_reagents = list(/datum/reagent/flash_powder = 1) + required_reagents = list("flash_powder" = 1) required_temp = 374 /datum/chemical_reaction/flash_powder_flash/on_reaction(datum/reagents/holder, created_volume) @@ -279,14 +279,14 @@ /datum/chemical_reaction/smoke_powder name = "smoke_powder" - id = /datum/reagent/smoke_powder - results = list(/datum/reagent/smoke_powder = 3) - required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/phosphorus = 1) + id = "smoke_powder" + results = list("smoke_powder" = 3) + required_reagents = list("potassium" = 1, "sugar" = 1, "phosphorus" = 1) /datum/chemical_reaction/smoke_powder/on_reaction(datum/reagents/holder, created_volume) - if(holder.has_reagent(/datum/reagent/stabilizing_agent)) + if(holder.has_reagent("stabilizing_agent")) return - holder.remove_reagent(/datum/reagent/smoke_powder, created_volume*3) + holder.remove_reagent("smoke_powder", created_volume*3) var/smoke_radius = round(sqrt(created_volume * 1.5), 1) var/location = get_turf(holder.my_atom) var/datum/effect_system/smoke_spread/chem/S = new @@ -301,7 +301,7 @@ /datum/chemical_reaction/smoke_powder_smoke name = "smoke_powder_smoke" id = "smoke_powder_smoke" - required_reagents = list(/datum/reagent/smoke_powder = 1) + required_reagents = list("smoke_powder" = 1) required_temp = 374 mob_react = FALSE @@ -319,14 +319,14 @@ /datum/chemical_reaction/sonic_powder name = "sonic_powder" - id = /datum/reagent/sonic_powder - results = list(/datum/reagent/sonic_powder = 3) - required_reagents = list(/datum/reagent/oxygen = 1, /datum/reagent/consumable/space_cola = 1, /datum/reagent/phosphorus = 1) + id = "sonic_powder" + results = list("sonic_powder" = 3) + required_reagents = list("oxygen" = 1, "cola" = 1, "phosphorus" = 1) /datum/chemical_reaction/sonic_powder/on_reaction(datum/reagents/holder, created_volume) - if(holder.has_reagent(/datum/reagent/stabilizing_agent)) + if(holder.has_reagent("stabilizing_agent")) return - holder.remove_reagent(/datum/reagent/sonic_powder, created_volume*3) + holder.remove_reagent("sonic_powder", created_volume*3) var/location = get_turf(holder.my_atom) playsound(location, 'sound/effects/bang.ogg', 25, 1) for(var/mob/living/carbon/C in get_hearers_in_view(created_volume/3, location)) @@ -335,7 +335,7 @@ /datum/chemical_reaction/sonic_powder_deafen name = "sonic_powder_deafen" id = "sonic_powder_deafen" - required_reagents = list(/datum/reagent/sonic_powder = 1) + required_reagents = list("sonic_powder" = 1) required_temp = 374 /datum/chemical_reaction/sonic_powder_deafen/on_reaction(datum/reagents/holder, created_volume) @@ -346,12 +346,12 @@ /datum/chemical_reaction/phlogiston name = "phlogiston" - id = /datum/reagent/phlogiston - results = list(/datum/reagent/phlogiston = 3) - required_reagents = list(/datum/reagent/phosphorus = 1, /datum/reagent/toxin/acid = 1, /datum/reagent/stable_plasma = 1) + id = "phlogiston" + results = list("phlogiston" = 3) + required_reagents = list("phosphorus" = 1, "sacid" = 1, "stable_plasma" = 1) /datum/chemical_reaction/phlogiston/on_reaction(datum/reagents/holder, created_volume) - if(holder.has_reagent(/datum/reagent/stabilizing_agent)) + if(holder.has_reagent("stabilizing_agent")) return var/turf/open/T = get_turf(holder.my_atom) if(istype(T)) @@ -361,15 +361,15 @@ /datum/chemical_reaction/napalm name = "Napalm" - id = /datum/reagent/napalm - results = list(/datum/reagent/napalm = 3) - required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/fuel = 1, /datum/reagent/consumable/ethanol = 1 ) + id = "napalm" + results = list("napalm" = 3) + required_reagents = list("oil" = 1, "welding_fuel" = 1, "ethanol" = 1 ) /datum/chemical_reaction/cryostylane name = "cryostylane" - id = /datum/reagent/cryostylane - results = list(/datum/reagent/cryostylane = 3) - required_reagents = list(/datum/reagent/water = 1, /datum/reagent/stable_plasma = 1, /datum/reagent/nitrogen = 1) + id = "cryostylane" + results = list("cryostylane" = 3) + required_reagents = list("water" = 1, "stable_plasma" = 1, "nitrogen" = 1) /datum/chemical_reaction/cryostylane/on_reaction(datum/reagents/holder, created_volume) holder.chem_temp = 20 // cools the fuck down @@ -378,8 +378,8 @@ /datum/chemical_reaction/cryostylane_oxygen name = "ephemeral cryostylane reaction" id = "cryostylane_oxygen" - results = list(/datum/reagent/cryostylane = 1) - required_reagents = list(/datum/reagent/cryostylane = 1, /datum/reagent/oxygen = 1) + results = list("cryostylane" = 1) + required_reagents = list("cryostylane" = 1, "oxygen" = 1) mob_react = FALSE /datum/chemical_reaction/cryostylane_oxygen/on_reaction(datum/reagents/holder, created_volume) @@ -388,8 +388,8 @@ /datum/chemical_reaction/pyrosium_oxygen name = "ephemeral pyrosium reaction" id = "pyrosium_oxygen" - results = list(/datum/reagent/pyrosium = 1) - required_reagents = list(/datum/reagent/pyrosium = 1, /datum/reagent/oxygen = 1) + results = list("pyrosium" = 1) + required_reagents = list("pyrosium" = 1, "oxygen" = 1) mob_react = FALSE /datum/chemical_reaction/pyrosium_oxygen/on_reaction(datum/reagents/holder, created_volume) @@ -397,9 +397,9 @@ /datum/chemical_reaction/pyrosium name = "pyrosium" - id = /datum/reagent/pyrosium - results = list(/datum/reagent/pyrosium = 3) - required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/radium = 1, /datum/reagent/phosphorus = 1) + id = "pyrosium" + results = list("pyrosium" = 3) + required_reagents = list("stable_plasma" = 1, "radium" = 1, "phosphorus" = 1) /datum/chemical_reaction/pyrosium/on_reaction(datum/reagents/holder, created_volume) holder.chem_temp = 20 // also cools the fuck down @@ -407,23 +407,23 @@ /datum/chemical_reaction/teslium name = "Teslium" - id = /datum/reagent/teslium - results = list(/datum/reagent/teslium = 3) - required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/silver = 1, /datum/reagent/blackpowder = 1) + id = "teslium" + results = list("teslium" = 3) + required_reagents = list("stable_plasma" = 1, "silver" = 1, "blackpowder" = 1) mix_message = "A jet of sparks flies from the mixture as it merges into a flickering slurry." required_temp = 400 /datum/chemical_reaction/energized_jelly name = "Energized Jelly" - id = /datum/reagent/teslium/energized_jelly - results = list(/datum/reagent/teslium/energized_jelly = 2) - required_reagents = list(/datum/reagent/toxin/slimejelly = 1, /datum/reagent/teslium = 1) + id = "energized_jelly" + results = list("energized_jelly" = 2) + required_reagents = list("slimejelly" = 1, "teslium" = 1) mix_message = "The slime jelly starts glowing intermittently." /datum/chemical_reaction/reagent_explosion/teslium_lightning name = "Teslium Destabilization" id = "teslium_lightning" - required_reagents = list(/datum/reagent/teslium = 1, /datum/reagent/water = 1) + required_reagents = list("teslium" = 1, "water" = 1) strengthdiv = 100 modifier = -100 noexplosion = TRUE @@ -452,29 +452,29 @@ /datum/chemical_reaction/reagent_explosion/teslium_lightning/heat id = "teslium_lightning2" required_temp = 474 - required_reagents = list(/datum/reagent/teslium = 1) + required_reagents = list("teslium" = 1) /datum/chemical_reaction/reagent_explosion/nitrous_oxide name = "N2O explosion" id = "n2o_explosion" - required_reagents = list(/datum/reagent/nitrous_oxide = 1) + required_reagents = list("nitrous_oxide" = 1) strengthdiv = 7 required_temp = 575 modifier = 1 /datum/chemical_reaction/firefighting_foam name = "Firefighting Foam" - id = /datum/reagent/firefighting_foam - results = list(/datum/reagent/firefighting_foam = 3) - required_reagents = list(/datum/reagent/stabilizing_agent = 1, /datum/reagent/fluorosurfactant = 1,/datum/reagent/carbon = 1) + id = "firefighting_foam" + results = list("firefighting_foam" = 3) + required_reagents = list("stabilizing_agent" = 1,"fluorosurfactant" = 1,"carbon" = 1) required_temp = 200 is_cold_recipe = 1 /datum/chemical_reaction/reagent_explosion/lingblood name = "Changeling Blood Reaction" id = "ling_blood_reaction" - results = list(/datum/reagent/ash = 1) - required_reagents = list(/datum/reagent/blood = 1) + results = list("ash" = 1) + required_reagents = list("blood" = 1) strengthdiv = 4 //The explosion should be somewhat strong if a full 15u is heated within a syringe. !!fun!! required_temp = 666 special_react = TRUE diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index 5228d4a281..8edca91a91 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -16,7 +16,7 @@ /datum/chemical_reaction/slime/slimespawn name = "Slime Spawn" id = "m_spawn" - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/grey required_other = TRUE @@ -28,15 +28,15 @@ /datum/chemical_reaction/slime/slimeinaprov name = "Slime epinephrine" id = "m_inaprov" - results = list(/datum/reagent/medicine/epinephrine = 3) - required_reagents = list(/datum/reagent/water = 5) + results = list("epinephrine" = 3) + required_reagents = list("water" = 5) required_other = TRUE required_container = /obj/item/slime_extract/grey /datum/chemical_reaction/slime/slimemonkey name = "Slime Monkey" id = "m_monkey" - required_reagents = list(/datum/reagent/blood = 1) + required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/grey required_other = TRUE @@ -48,25 +48,25 @@ //Green /datum/chemical_reaction/slime/slimemutate name = "Mutation Toxin" - id = /datum/reagent/slime_toxin - results = list(/datum/reagent/slime_toxin = 1) - required_reagents = list(/datum/reagent/toxin/plasma = 1) + id = "slimetoxin" + results = list("slime_toxin" = 1) + required_reagents = list("plasma" = 1) required_other = TRUE required_container = /obj/item/slime_extract/green /datum/chemical_reaction/slime/slimehuman name = "Human Mutation Toxin" - id = /datum/reagent/mutationtoxin - results = list(/datum/reagent/mutationtoxin = 1) - required_reagents = list(/datum/reagent/blood = 1) + id = "humanmuttoxin" + results = list("stablemutationtoxin" = 1) + required_reagents = list("blood" = 1) required_other = TRUE required_container = /obj/item/slime_extract/green /datum/chemical_reaction/slime/slimelizard name = "Lizard Mutation Toxin" - id = /datum/reagent/mutationtoxin/lizard - results = list(/datum/reagent/mutationtoxin/lizard = 1) - required_reagents = list(/datum/reagent/radium = 1) + id = "lizardmuttoxin" + results = list("lizardmutationtoxin" = 1) + required_reagents = list("radium" = 1) required_other = TRUE required_container = /obj/item/slime_extract/green @@ -74,7 +74,7 @@ /datum/chemical_reaction/slime/slimemetal name = "Slime Metal" id = "m_metal" - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/metal required_other = TRUE @@ -87,7 +87,7 @@ /datum/chemical_reaction/slime/slimeglass name = "Slime Glass" id = "m_glass" - required_reagents = list(/datum/reagent/water = 1) + required_reagents = list("water" = 1) required_container = /obj/item/slime_extract/metal required_other = TRUE @@ -101,7 +101,7 @@ /datum/chemical_reaction/slime/slimemobspawn name = "Slime Crit" id = "m_tele" - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/gold required_other = TRUE deletes_extract = FALSE //we do delete, but we don't do so instantly @@ -121,7 +121,7 @@ /datum/chemical_reaction/slime/slimemobspawn/lesser name = "Slime Crit Lesser" id = "m_tele3" - required_reagents = list(/datum/reagent/blood = 1) + required_reagents = list("blood" = 1) /datum/chemical_reaction/slime/slimemobspawn/lesser/summon_mobs(datum/reagents/holder, turf/T) T.visible_message("The slime extract begins to vibrate violently!") @@ -130,7 +130,7 @@ /datum/chemical_reaction/slime/slimemobspawn/friendly name = "Slime Crit Friendly" id = "m_tele5" - required_reagents = list(/datum/reagent/water = 1) + required_reagents = list("water" = 1) /datum/chemical_reaction/slime/slimemobspawn/friendly/summon_mobs(datum/reagents/holder, turf/T) T.visible_message("The slime extract begins to vibrate adorably!") @@ -140,7 +140,7 @@ /datum/chemical_reaction/slime/slimebork name = "Slime Bork" id = "m_tele2" - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/silver required_other = TRUE @@ -172,7 +172,7 @@ /datum/chemical_reaction/slime/slimebork/drinks name = "Slime Bork 2" id = "m_tele4" - required_reagents = list(/datum/reagent/water = 1) + required_reagents = list("water" = 1) /datum/chemical_reaction/slime/slimebork/drinks/getbork() return get_random_drink() @@ -181,15 +181,15 @@ /datum/chemical_reaction/slime/slimefrost name = "Slime Frost Oil" id = "m_frostoil" - results = list(/datum/reagent/consumable/frostoil = 10) - required_reagents = list(/datum/reagent/toxin/plasma = 1) + results = list("frostoil" = 10) + required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/blue required_other = TRUE /datum/chemical_reaction/slime/slimestabilizer name = "Slime Stabilizer" id = "m_slimestabilizer" - required_reagents = list(/datum/reagent/blood = 1) + required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/blue required_other = TRUE @@ -200,8 +200,8 @@ /datum/chemical_reaction/slime/slimefoam name = "Slime Foam" id = "m_foam" - results = list(/datum/reagent/fluorosurfactant = 20, /datum/reagent/water = 20) - required_reagents = list(/datum/reagent/water = 5) + results = list("fluorosurfactant" = 20, "water" = 20) + required_reagents = list("water" = 5) required_container = /obj/item/slime_extract/blue required_other = TRUE @@ -209,7 +209,7 @@ /datum/chemical_reaction/slime/slimefreeze name = "Slime Freeze" id = "m_freeze" - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/darkblue required_other = TRUE deletes_extract = FALSE @@ -233,7 +233,7 @@ /datum/chemical_reaction/slime/slimefireproof name = "Slime Fireproof" id = "m_fireproof" - required_reagents = list(/datum/reagent/water = 1) + required_reagents = list("water" = 1) required_container = /obj/item/slime_extract/darkblue required_other = TRUE @@ -245,15 +245,15 @@ /datum/chemical_reaction/slime/slimecasp name = "Slime Capsaicin Oil" id = "m_capsaicinoil" - results = list(/datum/reagent/consumable/capsaicin = 10) - required_reagents = list(/datum/reagent/blood = 1) + results = list("capsaicin" = 10) + required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/orange required_other = TRUE /datum/chemical_reaction/slime/slimefire name = "Slime fire" id = "m_fire" - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/orange required_other = TRUE deletes_extract = FALSE @@ -277,8 +277,8 @@ /datum/chemical_reaction/slime/slimesmoke name = "Slime Smoke" id = "m_smoke" - results = list(/datum/reagent/phosphorus = 10, /datum/reagent/potassium = 10, /datum/reagent/consumable/sugar = 10) - required_reagents = list(/datum/reagent/water = 5) + results = list("phosphorus" = 10, "potassium" = 10, "sugar" = 10) + required_reagents = list("water" = 5) required_container = /obj/item/slime_extract/orange required_other = TRUE @@ -286,7 +286,7 @@ /datum/chemical_reaction/slime/slimeoverload name = "Slime EMP" id = "m_emp" - required_reagents = list(/datum/reagent/blood = 1) + required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/yellow required_other = TRUE @@ -297,7 +297,7 @@ /datum/chemical_reaction/slime/slimecell name = "Slime Powercell" id = "m_cell" - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/yellow required_other = TRUE @@ -308,7 +308,7 @@ /datum/chemical_reaction/slime/slimeglow name = "Slime Glow" id = "m_glow" - required_reagents = list(/datum/reagent/water = 1) + required_reagents = list("water" = 1) required_container = /obj/item/slime_extract/yellow required_other = TRUE @@ -322,7 +322,7 @@ /datum/chemical_reaction/slime/slimepsteroid name = "Slime Steroid" id = "m_steroid" - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/purple required_other = TRUE @@ -333,8 +333,8 @@ /datum/chemical_reaction/slime/slimeregen name = "Slime Regen" id = "m_regen" - results = list(/datum/reagent/medicine/regen_jelly = 5) - required_reagents = list(/datum/reagent/blood = 1) + results = list("regen_jelly" = 5) + required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/purple required_other = TRUE @@ -342,7 +342,7 @@ /datum/chemical_reaction/slime/slimeplasma name = "Slime Plasma" id = "m_plasma" - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/darkpurple required_other = TRUE @@ -354,7 +354,7 @@ /datum/chemical_reaction/slime/slimemutator name = "Slime Mutator" id = "m_slimemutator" - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/red required_other = TRUE @@ -365,7 +365,7 @@ /datum/chemical_reaction/slime/slimebloodlust name = "Bloodlust" id = "m_bloodlust" - required_reagents = list(/datum/reagent/blood = 1) + required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/red required_other = TRUE @@ -383,7 +383,7 @@ /datum/chemical_reaction/slime/slimespeed name = "Slime Speed" id = "m_speed" - required_reagents = list(/datum/reagent/water = 1) + required_reagents = list("water" = 1) required_container = /obj/item/slime_extract/red required_other = TRUE @@ -395,7 +395,7 @@ /datum/chemical_reaction/slime/docility name = "Docility Potion" id = "m_potion" - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/pink required_other = TRUE @@ -406,7 +406,7 @@ /datum/chemical_reaction/slime/gender name = "Gender Potion" id = "m_gender" - required_reagents = list(/datum/reagent/blood = 1) + required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/pink required_other = TRUE @@ -417,9 +417,9 @@ //Black /datum/chemical_reaction/slime/slimemutate2 name = "Advanced Mutation Toxin" - id = /datum/reagent/aslimetoxin - results = list(/datum/reagent/aslimetoxin = 1) - required_reagents = list(/datum/reagent/toxin/plasma = 1) + id = "mutationtoxin2" + results = list("amutationtoxin" = 1) + required_reagents = list("plasma" = 1) required_other = TRUE required_container = /obj/item/slime_extract/black @@ -427,7 +427,7 @@ /datum/chemical_reaction/slime/slimeexplosion name = "Slime Explosion" id = "m_explosion" - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/oil required_other = TRUE deletes_extract = FALSE @@ -456,8 +456,8 @@ /datum/chemical_reaction/slime/slimecornoil name = "Slime Corn Oil" id = "m_cornoil" - results = list(/datum/reagent/consumable/cornoil = 10) - required_reagents = list(/datum/reagent/blood = 1) + results = list("cornoil" = 10) + required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/oil required_other = TRUE @@ -466,7 +466,7 @@ name = "Slime Potion 2" id = "m_potion2" required_container = /obj/item/slime_extract/lightpink - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list("plasma" = 1) required_other = TRUE /datum/chemical_reaction/slime/slimepotion2/on_reaction(datum/reagents/holder) @@ -477,7 +477,7 @@ name = "Renaming Potion" id = "m_renaming_potion" required_container = /obj/item/slime_extract/lightpink - required_reagents = list(/datum/reagent/water = 1) + required_reagents = list("water" = 1) required_other = TRUE /datum/chemical_reaction/slime/renaming/on_reaction(datum/reagents/holder) @@ -489,7 +489,7 @@ /datum/chemical_reaction/slime/adamantine name = "Adamantine" id = "adamantine" - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/adamantine required_other = TRUE @@ -501,7 +501,7 @@ /datum/chemical_reaction/slime/slimefloor2 name = "Bluespace Floor" id = "m_floor2" - required_reagents = list(/datum/reagent/blood = 1) + required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/bluespace required_other = TRUE @@ -513,7 +513,7 @@ /datum/chemical_reaction/slime/slimecrystal name = "Slime Crystal" id = "m_crystal" - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/bluespace required_other = TRUE @@ -525,7 +525,7 @@ /datum/chemical_reaction/slime/slimeradio name = "Slime Radio" id = "m_radio" - required_reagents = list(/datum/reagent/water = 1) + required_reagents = list("water" = 1) required_container = /obj/item/slime_extract/bluespace required_other = TRUE @@ -537,7 +537,7 @@ /datum/chemical_reaction/slime/slimepsteroid2 name = "Slime Steroid 2" id = "m_steroid2" - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/cerulean required_other = TRUE @@ -548,7 +548,7 @@ /datum/chemical_reaction/slime/slime_territory name = "Slime Territory" id = "s_territory" - required_reagents = list(/datum/reagent/blood = 1) + required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/cerulean required_other = TRUE @@ -560,7 +560,7 @@ /datum/chemical_reaction/slime/slimestop name = "Slime Stop" id = "m_stop" - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/sepia required_other = TRUE @@ -573,7 +573,7 @@ /datum/chemical_reaction/slime/slimecamera name = "Slime Camera" id = "m_camera" - required_reagents = list(/datum/reagent/water = 1) + required_reagents = list("water" = 1) required_container = /obj/item/slime_extract/sepia required_other = TRUE @@ -585,7 +585,7 @@ /datum/chemical_reaction/slime/slimefloor name = "Sepia Floor" id = "m_floor" - required_reagents = list(/datum/reagent/blood = 1) + required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/sepia required_other = TRUE @@ -597,7 +597,7 @@ /datum/chemical_reaction/slime/slimepaint name = "Slime Paint" id = "s_paint" - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/pyrite required_other = TRUE @@ -609,7 +609,7 @@ /datum/chemical_reaction/slime/slimecrayon name = "Slime Crayon" id = "s_crayon" - required_reagents = list(/datum/reagent/blood = 1) + required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/pyrite required_other = TRUE @@ -622,7 +622,7 @@ /datum/chemical_reaction/slime/slimeRNG name = "Random Core" id = "slimerng" - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list("plasma" = 1) required_other = TRUE required_container = /obj/item/slime_extract/rainbow @@ -642,7 +642,7 @@ /datum/chemical_reaction/slime/slimebomb name = "Clusterblorble" id = "slimebomb" - required_reagents = list(/datum/reagent/toxin/slimejelly = 1) + required_reagents = list("slimejelly" = 1) required_other = TRUE required_container = /obj/item/slime_extract/rainbow @@ -658,7 +658,7 @@ /datum/chemical_reaction/slime/slime_transfer name = "Transfer Potion" id = "slimetransfer" - required_reagents = list(/datum/reagent/blood = 1) + required_reagents = list("blood" = 1) required_other = TRUE required_container = /obj/item/slime_extract/rainbow @@ -669,7 +669,7 @@ /datum/chemical_reaction/slime/flight_potion name = "Flight Potion" id = "flightpotion" - required_reagents = list(/datum/reagent/water/holywater = 5, /datum/reagent/uranium = 5) + required_reagents = list("holywater" = 5, "uranium" = 5) required_other = TRUE required_container = /obj/item/slime_extract/rainbow diff --git a/code/modules/reagents/chemistry/recipes/special.dm b/code/modules/reagents/chemistry/recipes/special.dm index 5ad9728b22..59394e6e4b 100644 --- a/code/modules/reagents/chemistry/recipes/special.dm +++ b/code/modules/reagents/chemistry/recipes/special.dm @@ -123,6 +123,7 @@ GLOBAL_LIST_INIT(food_reagents, build_reagents_to_food()) //reagentid = related /datum/chemical_reaction/randomized/proc/LoadOldRecipe(recipe_data) created = text2num(recipe_data["timestamp"]) + var/req_reag = unwrap_reagent_list(recipe_data["required_reagents"]) if(!req_reag) return FALSE @@ -148,13 +149,13 @@ GLOBAL_LIST_INIT(food_reagents, build_reagents_to_food()) //reagentid = related /datum/chemical_reaction/randomized/secret_sauce name = "secret sauce creation" - id = /datum/reagent/consumable/secretsauce + id = "secretsauce" persistent = TRUE persistence_period = 7 //Reset every week randomize_container = TRUE possible_containers = list(/obj/item/reagent_containers/glass/bucket) //easy way to ensure no common conflicts randomize_req_temperature = TRUE - results = list(/datum/reagent/consumable/secretsauce =1) + results = list("secret_sauce" =1) /datum/chemical_reaction/randomized/secret_sauce/GetPossibleReagents(kind) switch(kind) diff --git a/code/modules/reagents/chemistry/recipes/toxins.dm b/code/modules/reagents/chemistry/recipes/toxins.dm index d9f28d2135..726175a6c6 100644 --- a/code/modules/reagents/chemistry/recipes/toxins.dm +++ b/code/modules/reagents/chemistry/recipes/toxins.dm @@ -1,128 +1,128 @@ /datum/chemical_reaction/formaldehyde name = "formaldehyde" - id = /datum/reagent/toxin/formaldehyde - results = list(/datum/reagent/toxin/formaldehyde = 3) - required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/oxygen = 1, /datum/reagent/silver = 1) + id = "Formaldehyde" + results = list("formaldehyde" = 3) + required_reagents = list("ethanol" = 1, "oxygen" = 1, "silver" = 1) required_temp = 420 /datum/chemical_reaction/fentanyl name = "fentanyl" - id = /datum/reagent/toxin/fentanyl - results = list(/datum/reagent/toxin/fentanyl = 1) - required_reagents = list(/datum/reagent/drug/space_drugs = 1) + id = "fentanyl" + results = list("fentanyl" = 1) + required_reagents = list("space_drugs" = 1) required_temp = 674 /datum/chemical_reaction/cyanide name = "Cyanide" - id = /datum/reagent/toxin/cyanide - results = list(/datum/reagent/toxin/cyanide = 3) - required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/ammonia = 1, /datum/reagent/oxygen = 1) + id = "cyanide" + results = list("cyanide" = 3) + required_reagents = list("oil" = 1, "ammonia" = 1, "oxygen" = 1) required_temp = 380 /datum/chemical_reaction/itching_powder name = "Itching Powder" - id = /datum/reagent/toxin/itching_powder - results = list(/datum/reagent/toxin/itching_powder = 3) - required_reagents = list(/datum/reagent/fuel = 1, /datum/reagent/ammonia = 1, /datum/reagent/medicine/charcoal = 1) + id = "itching_powder" + results = list("itching_powder" = 3) + required_reagents = list("welding_fuel" = 1, "ammonia" = 1, "charcoal" = 1) /datum/chemical_reaction/facid name = "Fluorosulfuric acid" - id = /datum/reagent/toxin/acid/fluacid - results = list(/datum/reagent/toxin/acid/fluacid = 4) - required_reagents = list(/datum/reagent/toxin/acid = 1, /datum/reagent/fluorine = 1, /datum/reagent/hydrogen = 1, /datum/reagent/potassium = 1) + id = "facid" + results = list("facid" = 4) + required_reagents = list("sacid" = 1, "fluorine" = 1, "hydrogen" = 1, "potassium" = 1) required_temp = 380 /datum/chemical_reaction/sulfonal name = "sulfonal" - id = /datum/reagent/toxin/sulfonal - results = list(/datum/reagent/toxin/sulfonal = 3) - required_reagents = list(/datum/reagent/acetone = 1, /datum/reagent/diethylamine = 1, /datum/reagent/sulfur = 1) + id = "sulfonal" + results = list("sulfonal" = 3) + required_reagents = list("acetone" = 1, "diethylamine" = 1, "sulfur" = 1) /datum/chemical_reaction/lipolicide name = "lipolicide" - id = /datum/reagent/toxin/lipolicide - results = list(/datum/reagent/toxin/lipolicide = 3) - required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/diethylamine = 1, /datum/reagent/medicine/ephedrine = 1) + id = "lipolicide" + results = list("lipolicide" = 3) + required_reagents = list("mercury" = 1, "diethylamine" = 1, "ephedrine" = 1) /datum/chemical_reaction/mutagen name = "Unstable mutagen" - id = /datum/reagent/toxin/mutagen - results = list(/datum/reagent/toxin/mutagen = 3) - required_reagents = list(/datum/reagent/radium = 1, /datum/reagent/phosphorus = 1, /datum/reagent/chlorine = 1) + id = "mutagen" + results = list("mutagen" = 3) + required_reagents = list("radium" = 1, "phosphorus" = 1, "chlorine" = 1) /datum/chemical_reaction/lexorin name = "Lexorin" - id = /datum/reagent/toxin/lexorin - results = list(/datum/reagent/toxin/lexorin = 3) - required_reagents = list(/datum/reagent/toxin/plasma = 1, /datum/reagent/hydrogen = 1, /datum/reagent/oxygen = 1) + id = "lexorin" + results = list("lexorin" = 3) + required_reagents = list("plasma" = 1, "hydrogen" = 1, "oxygen" = 1) /datum/chemical_reaction/chloralhydrate name = "Chloral Hydrate" - id = /datum/reagent/toxin/chloralhydrate - results = list(/datum/reagent/toxin/chloralhydrate = 1) - required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/chlorine = 3, /datum/reagent/water = 1) + id = "chloralhydrate" + results = list("chloralhydrate" = 1) + required_reagents = list("ethanol" = 1, "chlorine" = 3, "water" = 1) /datum/chemical_reaction/mutetoxin //i'll just fit this in here snugly between other unfun chemicals :v name = "Mute Toxin" - id = /datum/reagent/toxin/mutetoxin - results = list(/datum/reagent/toxin/mutetoxin = 2) - required_reagents = list(/datum/reagent/uranium = 2, /datum/reagent/water = 1, /datum/reagent/carbon = 1) + id = "mutetoxin" + results = list("mutetoxin" = 2) + required_reagents = list("uranium" = 2, "water" = 1, "carbon" = 1) /datum/chemical_reaction/zombiepowder name = "Zombie Powder" - id = /datum/reagent/toxin/zombiepowder - results = list(/datum/reagent/toxin/zombiepowder = 2) - required_reagents = list(/datum/reagent/toxin/carpotoxin = 5, /datum/reagent/medicine/morphine = 5, /datum/reagent/copper = 5) - + id = "zombiepowder" + results = list("zombiepowder" = 2) + required_reagents = list("carpotoxin" = 5, "morphine" = 5, "copper" = 5) + /datum/chemical_reaction/ghoulpowder name = "Ghoul Powder" - id = /datum/reagent/toxin/ghoulpowder - results = list(/datum/reagent/toxin/ghoulpowder = 2) - required_reagents = list(/datum/reagent/toxin/zombiepowder = 1, /datum/reagent/medicine/epinephrine = 1) + id = "ghoulpowder" + results = list("ghoulpowder" = 2) + required_reagents = list("zombiepowder" = 1, "epinephrine" = 1) /datum/chemical_reaction/mindbreaker name = "Mindbreaker Toxin" - id = /datum/reagent/toxin/mindbreaker - results = list(/datum/reagent/toxin/mindbreaker = 5) - required_reagents = list(/datum/reagent/silicon = 1, /datum/reagent/hydrogen = 1, /datum/reagent/medicine/charcoal = 1) + id = "mindbreaker" + results = list("mindbreaker" = 5) + required_reagents = list("silicon" = 1, "hydrogen" = 1, "charcoal" = 1) /datum/chemical_reaction/heparin name = "Heparin" - id = /datum/reagent/toxin/heparin - results = list(/datum/reagent/toxin/heparin = 4) - required_reagents = list(/datum/reagent/toxin/formaldehyde = 1, /datum/reagent/sodium = 1, /datum/reagent/chlorine = 1, /datum/reagent/lithium = 1) + id = "Heparin" + results = list("heparin" = 4) + required_reagents = list("formaldehyde" = 1, "sodium" = 1, "chlorine" = 1, "lithium" = 1) mix_message = "The mixture thins and loses all color." /datum/chemical_reaction/rotatium name = "Rotatium" - id = /datum/reagent/toxin/rotatium - results = list(/datum/reagent/toxin/rotatium = 3) - required_reagents = list(/datum/reagent/toxin/mindbreaker = 1, /datum/reagent/teslium = 1, /datum/reagent/toxin/fentanyl = 1) + id = "Rotatium" + results = list("rotatium" = 3) + required_reagents = list("mindbreaker" = 1, "teslium" = 1, "fentanyl" = 1) mix_message = "After sparks, fire, and the smell of mindbreaker, the mix is constantly spinning with no stop in sight." /datum/chemical_reaction/skewium name = "Skewium" - id = /datum/reagent/toxin/skewium - results = list(/datum/reagent/toxin/skewium = 5) - required_reagents = list(/datum/reagent/toxin/rotatium = 2, /datum/reagent/toxin/plasma = 2, /datum/reagent/toxin/acid = 1) + id = "Skewium" + results = list("skewium" = 5) + required_reagents = list("rotatium" = 2, "plasma" = 2, "sacid" = 1) mix_message = "Wow! it turns out if you mix rotatium with some plasma and sulphuric acid, it gets even worse!" /datum/chemical_reaction/anacea name = "Anacea" - id = /datum/reagent/toxin/anacea - results = list(/datum/reagent/toxin/anacea = 3) - required_reagents = list(/datum/reagent/medicine/haloperidol = 1, /datum/reagent/impedrezene = 1, /datum/reagent/radium = 1) + id = "anacea" + results = list("anacea" = 3) + required_reagents = list("haloperidol" = 1, "impedrezene" = 1, "radium" = 1) /datum/chemical_reaction/mimesbane name = "Mime's Bane" - id = /datum/reagent/toxin/mimesbane - results = list(/datum/reagent/toxin/mimesbane = 3) - required_reagents = list(/datum/reagent/radium = 1, /datum/reagent/toxin/mutetoxin = 1, /datum/reagent/consumable/nothing = 1) + id = "mimesbane" + results = list("mimesbane" = 3) + required_reagents = list("radium" = 1, "mutetoxin" = 1, "nothing" = 1) /datum/chemical_reaction/bonehurtingjuice name = "Bone Hurting Juice" - id = /datum/reagent/toxin/bonehurtingjuice - results = list(/datum/reagent/toxin/bonehurtingjuice = 5) - required_reagents = list(/datum/reagent/toxin/mutagen = 1, /datum/reagent/toxin/itching_powder = 3, /datum/reagent/consumable/milk = 1) + id = "bonehurtingjuice" + results = list("bonehurtingjuice" = 5) + required_reagents = list("mutagen" = 1, "itching_powder" = 3, "milk" = 1) mix_message = "The mixture suddenly becomes clear and looks a lot like water. You feel a strong urge to drink it." diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index d869e086a5..618b74fffb 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -9,7 +9,6 @@ w_class = WEIGHT_CLASS_TINY var/amount_per_transfer_from_this = 5 var/list/possible_transfer_amounts = list(5,10,15,20,25,30) - var/APTFT_altclick = TRUE //will the set amount_per_transfer_from_this proc be called on AltClick() ? var/volume = 30 var/reagent_flags var/list/list_reagents = null @@ -24,36 +23,14 @@ . = ..() if(isnum(vol) && vol > 0) volume = vol - if(length(possible_transfer_amounts)) - verbs += /obj/item/reagent_containers/proc/set_APTFT create_reagents(volume, reagent_flags) if(spawned_disease) var/datum/disease/F = new spawned_disease() var/list/data = list("blood_DNA" = "UNKNOWN DNA", "blood_type" = "SY","viruses"= list(F)) - reagents.add_reagent(/datum/reagent/blood, disease_amount, data) + reagents.add_reagent("blood", disease_amount, data) + add_initial_reagents() -/obj/item/reagent_containers/examine(mob/user) - . = ..() - . += "Currently transferring [amount_per_transfer_from_this] units per use." - if(possible_transfer_amounts && user.Adjacent(src)) - . += "Alt-click it to set its transfer amount." - -/obj/item/reagent_containers/AltClick(mob/user) - . = ..() - if(APTFT_altclick && length(possible_transfer_amounts) > 1 && user.canUseTopic(src, BE_CLOSE, NO_DEXTERY)) - set_APTFT() - return TRUE - -/obj/item/reagent_containers/proc/set_APTFT(mob/user) //set amount_per_transfer_from_this - set name = "Set Transfer Amount" - set category = "Object" - set waitfor = FALSE - var/N = input("Amount per transfer from this:","[src]") as null|anything in possible_transfer_amounts - if(N) - amount_per_transfer_from_this = N - to_chat(user, "[src]'s transfer amount is now [amount_per_transfer_from_this] units.") - /obj/item/reagent_containers/proc/add_initial_reagents() if(list_reagents) reagents.add_reagent_list(list_reagents) @@ -127,7 +104,7 @@ target.visible_message("[M] has been splashed with something!", \ "[M] has been splashed with something!") for(var/datum/reagent/A in reagents.reagent_list) - R += A.type + " (" + R += A.id + " (" R += num2text(A.volume) + ")," if(thrownby) diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm index 2f5fb067ea..61449fc153 100644 --- a/code/modules/reagents/reagent_containers/blood_pack.dm +++ b/code/modules/reagents/reagent_containers/blood_pack.dm @@ -13,12 +13,12 @@ /obj/item/reagent_containers/blood/Initialize() . = ..() if(blood_type != null) - reagents.add_reagent(/datum/reagent/blood, 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_colour"=color, "blood_type"=blood_type,"resistances"=null,"trace_chem"=null)) + reagents.add_reagent("blood", 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_colour"=color, "blood_type"=blood_type,"resistances"=null,"trace_chem"=null)) update_icon() /obj/item/reagent_containers/blood/on_reagent_change(changetype) if(reagents) - var/datum/reagent/blood/B = reagents.has_reagent(/datum/reagent/blood) + var/datum/reagent/blood/B = reagents.has_reagent("blood") if(B && B.data && B.data["blood_type"]) blood_type = B.data["blood_type"] color_to_apply = bloodtype_to_color(blood_type) diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index 980e823a82..2bd5fb2d9f 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -26,12 +26,12 @@ Borg Hypospray var/bypass_protection = 0 //If the hypospray can go through armor or thick material var/list/datum/reagents/reagent_list = list() - var/list/reagent_ids = list(/datum/reagent/medicine/dexalin, /datum/reagent/medicine/kelotane, /datum/reagent/medicine/bicaridine, /datum/reagent/medicine/antitoxin, - /datum/reagent/medicine/epinephrine, /datum/reagent/medicine/spaceacillin, /datum/reagent/medicine/salglu_solution, /datum/reagent/medicine/insulin) + var/list/reagent_ids = list("dexalin", "kelotane", "bicaridine", "antitoxin", "epinephrine", "spaceacillin", "salglu_solution") var/accepts_reagent_upgrades = TRUE //If upgrades can increase number of reagents dispensed. var/list/modes = list() //Basically the inverse of reagent_ids. Instead of having numbers as "keys" and strings as values it has strings as keys and numbers as values. //Used as list for input() in shakers. + /obj/item/reagent_containers/borghypo/Initialize() . = ..() @@ -40,10 +40,12 @@ Borg Hypospray START_PROCESSING(SSobj, src) + /obj/item/reagent_containers/borghypo/Destroy() STOP_PROCESSING(SSobj, src) return ..() + /obj/item/reagent_containers/borghypo/process() //Every [recharge_time] seconds, recharge some reagents for the cyborg charge_tick++ if(charge_tick >= recharge_time) @@ -139,19 +141,19 @@ Borg Hypospray /obj/item/reagent_containers/borghypo/hacked icon_state = "borghypo_s" - reagent_ids = list (/datum/reagent/toxin/acid, /datum/reagent/toxin/mutetoxin, /datum/reagent/toxin/cyanide, /datum/reagent/toxin/sodium_thiopental, /datum/reagent/toxin/heparin, /datum/reagent/toxin/lexorin) + reagent_ids = list ("facid", "mutetoxin", "cyanide", "sodium_thiopental", "heparin", "lexorin") accepts_reagent_upgrades = FALSE /obj/item/reagent_containers/borghypo/clown name = "laughter injector" desc = "Keeps the crew happy and productive!" - reagent_ids = list(/datum/reagent/consumable/laughter) + reagent_ids = list("laughter") accepts_reagent_upgrades = FALSE /obj/item/reagent_containers/borghypo/clown/hacked name = "laughter injector" desc = "Keeps the crew so happy they don't work!" - reagent_ids = list(/datum/reagent/consumable/superlaughter) + reagent_ids = list("superlaughter") accepts_reagent_upgrades = FALSE /obj/item/reagent_containers/borghypo/syndicate @@ -160,7 +162,7 @@ Borg Hypospray icon_state = "borghypo_s" charge_cost = 20 recharge_time = 2 - reagent_ids = list(/datum/reagent/medicine/syndicate_nanites, /datum/reagent/medicine/potass_iodide, /datum/reagent/medicine/morphine, /datum/reagent/medicine/insulin) + reagent_ids = list("syndicate_nanites", "potass_iodide", "morphine") bypass_protection = 1 accepts_reagent_upgrades = FALSE @@ -176,14 +178,8 @@ Borg Shaker charge_cost = 20 //Lots of reagents all regenerating at once, so the charge cost is lower. They also regenerate faster. recharge_time = 3 accepts_reagent_upgrades = FALSE - reagent_ids = list(/datum/reagent/consumable/ethanol/beer, /datum/reagent/consumable/orangejuice, /datum/reagent/consumable/grenadine, - /datum/reagent/consumable/limejuice, /datum/reagent/consumable/tomatojuice, /datum/reagent/consumable/space_cola, - /datum/reagent/consumable/tonic, /datum/reagent/consumable/sodawater, /datum/reagent/consumable/ice, - /datum/reagent/consumable/cream, /datum/reagent/consumable/ethanol/whiskey, /datum/reagent/consumable/ethanol/vodka, - /datum/reagent/consumable/ethanol/rum, /datum/reagent/consumable/ethanol/gin, /datum/reagent/consumable/ethanol/tequila, - /datum/reagent/consumable/ethanol/vermouth, /datum/reagent/consumable/ethanol/wine, /datum/reagent/consumable/ethanol/kahlua, - /datum/reagent/consumable/ethanol/cognac, /datum/reagent/consumable/ethanol/ale, /datum/reagent/consumable/milk, - /datum/reagent/consumable/coffee, /datum/reagent/consumable/banana, /datum/reagent/consumable/lemonjuice) + + reagent_ids = list("beer", "orangejuice", "grenadine", "limejuice", "tomatojuice", "cola", "tonic", "sodawater", "ice", "cream", "whiskey", "vodka", "rum", "gin", "tequila", "vermouth", "wine", "kahlua", "cognac", "ale", "milk", "coffee", "banana", "lemonjuice") /obj/item/reagent_containers/borghypo/borgshaker/attack(mob/M, mob/user) return //Can't inject stuff with a shaker, can we? //not with that attitude @@ -238,24 +234,23 @@ Borg Shaker charge_cost = 20 //Lots of reagents all regenerating at once, so the charge cost is lower. They also regenerate faster. recharge_time = 3 accepts_reagent_upgrades = FALSE - reagent_ids = list(/datum/reagent/toxin/fakebeer, /datum/reagent/consumable/ethanol/fernet) + + reagent_ids = list("fakebeer", "fernet") /obj/item/reagent_containers/borghypo/peace name = "Peace Hypospray" - reagent_ids = list(/datum/reagent/peaceborg_confuse, /datum/reagent/peaceborg_tire, /datum/reagent/pax/peaceborg, /datum/reagent/medicine/insulin) + reagent_ids = list("dizzysolution","tiresolution","synthpax") accepts_reagent_upgrades = FALSE /obj/item/reagent_containers/borghypo/peace/hacked desc = "Everything's peaceful in death!" icon_state = "borghypo_s" - reagent_ids = list(/datum/reagent/peaceborg_confuse, /datum/reagent/peaceborg_tire, /datum/reagent/pax/peaceborg, - /datum/reagent/toxin/staminatoxin,/datum/reagent/toxin/sulfonal,/datum/reagent/toxin/sodium_thiopental, - /datum/reagent/toxin/cyanide,/datum/reagent/toxin/fentanyl) + reagent_ids = list("dizzysolution","tiresolution","synthpax","tirizene","sulfonal","sodium_thiopental","cyanide","fentanyl") accepts_reagent_upgrades = FALSE /obj/item/reagent_containers/borghypo/epi - name = "Stabilizer injector" + name = "epinephrine injector" desc = "An advanced chemical synthesizer and injection system, designed to stabilize patients." - reagent_ids = list(/datum/reagent/medicine/epinephrine, /datum/reagent/medicine/insulin) + reagent_ids = list("epinephrine") accepts_reagent_upgrades = FALSE diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm index c05f4f3e78..0ee131bc14 100644 --- a/code/modules/reagents/reagent_containers/bottle.dm +++ b/code/modules/reagents/reagent_containers/bottle.dm @@ -43,96 +43,96 @@ /obj/item/reagent_containers/glass/bottle/epinephrine name = "epinephrine bottle" desc = "A small bottle. Contains epinephrine - used to stabilize patients." - list_reagents = list(/datum/reagent/medicine/epinephrine = 30) + list_reagents = list("epinephrine" = 30) /obj/item/reagent_containers/glass/bottle/toxin name = "toxin bottle" desc = "A small bottle of toxins. Do not drink, it is poisonous." - list_reagents = list(/datum/reagent/toxin = 30) + list_reagents = list("toxin" = 30) /obj/item/reagent_containers/glass/bottle/cyanide name = "cyanide bottle" desc = "A small bottle of cyanide. Bitter almonds?" - list_reagents = list(/datum/reagent/toxin/cyanide = 30) + list_reagents = list("cyanide" = 30) /obj/item/reagent_containers/glass/bottle/spewium name = "spewium bottle" desc = "A small bottle of spewium." - list_reagents = list(/datum/reagent/toxin/spewium = 30) + list_reagents = list("spewium" = 30) /obj/item/reagent_containers/glass/bottle/morphine name = "morphine bottle" desc = "A small bottle of morphine." icon = 'icons/obj/chemical.dmi' - list_reagents = list(/datum/reagent/medicine/morphine = 30) + list_reagents = list("morphine" = 30) /obj/item/reagent_containers/glass/bottle/chloralhydrate name = "Chloral Hydrate Bottle" desc = "A small bottle of Choral Hydrate. Mickey's Favorite!" icon_state = "bottle20" - list_reagents = list(/datum/reagent/toxin/chloralhydrate = 15) + list_reagents = list("chloralhydrate" = 15) /obj/item/reagent_containers/glass/bottle/charcoal name = "charcoal bottle" desc = "A small bottle of charcoal, which removes toxins and other chemicals from the bloodstream." - list_reagents = list(/datum/reagent/medicine/charcoal = 30) + list_reagents = list("charcoal" = 30) /obj/item/reagent_containers/glass/bottle/cryoxadone name = "cryoxadone bottle" desc = "A small bottle of cryoxadone, heals most types of damage when used in extremely cold enviornments." - list_reagents = list(/datum/reagent/medicine/cryoxadone = 30) + list_reagents = list("cryoxadone" = 30) /obj/item/reagent_containers/glass/bottle/mutagen name = "unstable mutagen bottle" desc = "A small bottle of unstable mutagen. Randomly changes the DNA structure of whoever comes in contact." - list_reagents = list(/datum/reagent/toxin/mutagen = 30) + list_reagents = list("mutagen" = 30) /obj/item/reagent_containers/glass/bottle/plasma name = "liquid plasma bottle" desc = "A small bottle of liquid plasma. Extremely toxic and reacts with micro-organisms inside blood." - list_reagents = list(/datum/reagent/toxin/plasma = 30) + list_reagents = list("plasma" = 30) /obj/item/reagent_containers/glass/bottle/synaptizine name = "synaptizine bottle" desc = "A small bottle of synaptizine." - list_reagents = list(/datum/reagent/medicine/synaptizine = 30) + list_reagents = list("synaptizine" = 30) /obj/item/reagent_containers/glass/bottle/formaldehyde name = "formaldehyde bottle" desc = "A small bottle of formaldehyde." - list_reagents = list(/datum/reagent/toxin/formaldehyde = 30) + list_reagents = list("formaldehyde" = 30) /obj/item/reagent_containers/glass/bottle/ammonia name = "ammonia bottle" desc = "A small bottle of ammonia." - list_reagents = list(/datum/reagent/ammonia = 30) + list_reagents = list("ammonia" = 30) /obj/item/reagent_containers/glass/bottle/diethylamine name = "diethylamine bottle" desc = "A small bottle of diethylamine." - list_reagents = list(/datum/reagent/diethylamine = 30) + list_reagents = list("diethylamine" = 30) /obj/item/reagent_containers/glass/bottle/facid name = "Fluorosulfuric Acid Bottle" desc = "A small bottle. Contains a small amount of fluorosulfuric acid." - list_reagents = list(/datum/reagent/toxin/acid/fluacid = 30) + list_reagents = list("facid" = 30) /obj/item/reagent_containers/glass/bottle/adminordrazine name = "Adminordrazine Bottle" desc = "A small bottle. Contains the liquid essence of the gods." icon = 'icons/obj/drinks.dmi' icon_state = "holyflask" - list_reagents = list(/datum/reagent/medicine/adminordrazine = 30) + list_reagents = list("adminordrazine" = 30) /obj/item/reagent_containers/glass/bottle/capsaicin name = "Capsaicin Bottle" desc = "A small bottle. Contains hot sauce." - list_reagents = list(/datum/reagent/consumable/capsaicin = 30) + list_reagents = list("capsaicin" = 30) /obj/item/reagent_containers/glass/bottle/frostoil name = "Frost Oil Bottle" desc = "A small bottle. Contains cold sauce." - list_reagents = list(/datum/reagent/consumable/frostoil = 30) + list_reagents = list("frostoil" = 30) /obj/item/reagent_containers/glass/bottle/traitor name = "syndicate bottle" @@ -142,95 +142,94 @@ /obj/item/reagent_containers/glass/bottle/traitor/Initialize() . = ..() - extra_reagent = pick(/datum/reagent/toxin/polonium, /datum/reagent/toxin/histamine, /datum/reagent/toxin/formaldehyde, - /datum/reagent/toxin/venom, /datum/reagent/toxin/fentanyl, /datum/reagent/toxin/cyanide) - reagents.add_reagent(extra_reagent, 3) + extra_reagent = pick("polonium", "histamine", "formaldehyde", "venom", "fentanyl", "cyanide") + reagents.add_reagent("[extra_reagent]", 3) /obj/item/reagent_containers/glass/bottle/polonium name = "polonium bottle" desc = "A small bottle. Contains Polonium." - list_reagents = list(/datum/reagent/toxin/polonium = 30) + list_reagents = list("polonium" = 30) /obj/item/reagent_containers/glass/bottle/magillitis name = "magillitis bottle" desc = "A small bottle. Contains a serum known only as 'magillitis'." - list_reagents = list(/datum/reagent/magillitis = 5) + list_reagents = list("magillitis" = 5) /obj/item/reagent_containers/glass/bottle/venom name = "venom bottle" desc = "A small bottle. Contains Venom." - list_reagents = list(/datum/reagent/toxin/venom = 30) + list_reagents = list("venom" = 30) /obj/item/reagent_containers/glass/bottle/fentanyl name = "fentanyl bottle" desc = "A small bottle. Contains Fentanyl." - list_reagents = list(/datum/reagent/toxin/fentanyl = 30) + list_reagents = list("fentanyl" = 30) /obj/item/reagent_containers/glass/bottle/formaldehyde name = "formaldehyde bottle" desc = "A small bottle. Contains Formaldehyde." - list_reagents = list(/datum/reagent/toxin/formaldehyde = 30) + list_reagents = list("formaldehyde" = 30) /obj/item/reagent_containers/glass/bottle/initropidril name = "initropidril bottle" desc = "A small bottle. Contains initropidril." - list_reagents = list(/datum/reagent/toxin/initropidril = 30) + list_reagents = list("initropidril" = 30) /obj/item/reagent_containers/glass/bottle/pancuronium name = "pancuronium bottle" desc = "A small bottle. Contains pancuronium." - list_reagents = list(/datum/reagent/toxin/pancuronium = 30) + list_reagents = list("pancuronium" = 30) /obj/item/reagent_containers/glass/bottle/sodium_thiopental name = "sodium thiopental bottle" desc = "A small bottle. Contains sodium thiopental." - list_reagents = list(/datum/reagent/toxin/sodium_thiopental = 30) + list_reagents = list("sodium_thiopental" = 30) /obj/item/reagent_containers/glass/bottle/coniine name = "coniine bottle" desc = "A small bottle. Contains coniine." - list_reagents = list(/datum/reagent/toxin/coniine = 30) + list_reagents = list("coniine" = 30) /obj/item/reagent_containers/glass/bottle/curare name = "curare bottle" desc = "A small bottle. Contains curare." - list_reagents = list(/datum/reagent/toxin/curare = 30) + list_reagents = list("curare" = 30) /obj/item/reagent_containers/glass/bottle/amanitin name = "amanitin bottle" desc = "A small bottle. Contains amanitin." - list_reagents = list(/datum/reagent/toxin/amanitin = 30) + list_reagents = list("amanitin" = 30) /obj/item/reagent_containers/glass/bottle/histamine name = "histamine bottle" desc = "A small bottle. Contains Histamine." - list_reagents = list(/datum/reagent/toxin/histamine = 30) + list_reagents = list("histamine" = 30) /obj/item/reagent_containers/glass/bottle/diphenhydramine name = "antihistamine bottle" desc = "A small bottle of diphenhydramine." - list_reagents = list(/datum/reagent/medicine/diphenhydramine = 30) + list_reagents = list("diphenhydramine" = 30) /obj/item/reagent_containers/glass/bottle/potass_iodide name = "anti-radiation bottle" desc = "A small bottle of potassium iodide." - list_reagents = list(/datum/reagent/medicine/potass_iodide = 30) + list_reagents = list("potass_iodide" = 30) /obj/item/reagent_containers/glass/bottle/salglu_solution name = "saline-glucose solution bottle" desc = "A small bottle of saline-glucose solution." icon_state = "bottle1" - list_reagents = list(/datum/reagent/medicine/salglu_solution = 30) + list_reagents = list("salglu_solution" = 30) /obj/item/reagent_containers/glass/bottle/atropine name = "atropine bottle" desc = "A small bottle of atropine." - list_reagents = list(/datum/reagent/medicine/atropine = 30) + list_reagents = list("atropine" = 30) /obj/item/reagent_containers/glass/bottle/romerol name = "romerol bottle" desc = "A small bottle of Romerol. The REAL zombie powder." - list_reagents = list(/datum/reagent/romerol = 30) + list_reagents = list("romerol" = 30) /obj/item/reagent_containers/glass/bottle/random_virus name = "Experimental disease culture bottle" @@ -307,128 +306,128 @@ /obj/item/reagent_containers/glass/bottle/tuberculosiscure name = "BVAK bottle" desc = "A small bottle containing Bio Virus Antidote Kit." - list_reagents = list(/datum/reagent/medicine/atropine = 5, /datum/reagent/medicine/epinephrine = 5, /datum/reagent/medicine/salbutamol = 10, /datum/reagent/medicine/spaceacillin = 10) + list_reagents = list("atropine" = 5, "epinephrine" = 5, "salbutamol" = 10, "spaceacillin" = 10) //Oldstation.dmm chemical storage bottles /obj/item/reagent_containers/glass/bottle/hydrogen name = "hydrogen bottle" - list_reagents = list(/datum/reagent/hydrogen = 30) + list_reagents = list("hydrogen" = 30) /obj/item/reagent_containers/glass/bottle/lithium name = "lithium bottle" - list_reagents = list(/datum/reagent/lithium = 30) + list_reagents = list("lithium" = 30) /obj/item/reagent_containers/glass/bottle/carbon name = "carbon bottle" - list_reagents = list(/datum/reagent/carbon = 30) + list_reagents = list("carbon" = 30) /obj/item/reagent_containers/glass/bottle/nitrogen name = "nitrogen bottle" - list_reagents = list(/datum/reagent/nitrogen = 30) + list_reagents = list("nitrogen" = 30) /obj/item/reagent_containers/glass/bottle/oxygen name = "oxygen bottle" - list_reagents = list(/datum/reagent/oxygen = 30) + list_reagents = list("oxygen" = 30) /obj/item/reagent_containers/glass/bottle/fluorine name = "fluorine bottle" - list_reagents = list(/datum/reagent/fluorine = 30) + list_reagents = list("fluorine" = 30) /obj/item/reagent_containers/glass/bottle/sodium name = "sodium bottle" - list_reagents = list(/datum/reagent/sodium = 30) + list_reagents = list("sodium" = 30) /obj/item/reagent_containers/glass/bottle/aluminium name = "aluminium bottle" - list_reagents = list(/datum/reagent/aluminium = 30) + list_reagents = list("aluminium" = 30) /obj/item/reagent_containers/glass/bottle/silicon name = "silicon bottle" - list_reagents = list(/datum/reagent/silicon = 30) + list_reagents = list("silicon" = 30) /obj/item/reagent_containers/glass/bottle/phosphorus name = "phosphorus bottle" - list_reagents = list(/datum/reagent/phosphorus = 30) + list_reagents = list("phosphorus" = 30) /obj/item/reagent_containers/glass/bottle/sulfur name = "sulfur bottle" - list_reagents = list(/datum/reagent/sulfur = 30) + list_reagents = list("sulfur" = 30) /obj/item/reagent_containers/glass/bottle/chlorine name = "chlorine bottle" - list_reagents = list(/datum/reagent/chlorine = 30) + list_reagents = list("chlorine" = 30) /obj/item/reagent_containers/glass/bottle/potassium name = "potassium bottle" - list_reagents = list(/datum/reagent/potassium = 30) + list_reagents = list("potassium" = 30) /obj/item/reagent_containers/glass/bottle/iron name = "iron bottle" - list_reagents = list(/datum/reagent/iron = 30) + list_reagents = list("iron" = 30) /obj/item/reagent_containers/glass/bottle/copper name = "copper bottle" - list_reagents = list(/datum/reagent/copper = 30) + list_reagents = list("copper" = 30) /obj/item/reagent_containers/glass/bottle/mercury name = "mercury bottle" - list_reagents = list(/datum/reagent/mercury = 30) + list_reagents = list("mercury" = 30) /obj/item/reagent_containers/glass/bottle/radium name = "radium bottle" - list_reagents = list(/datum/reagent/radium = 30) + list_reagents = list("radium" = 30) /obj/item/reagent_containers/glass/bottle/water name = "water bottle" - list_reagents = list(/datum/reagent/water = 30) + list_reagents = list("water" = 30) /obj/item/reagent_containers/glass/bottle/ethanol name = "ethanol bottle" - list_reagents = list(/datum/reagent/consumable/ethanol = 30) + list_reagents = list("ethanol" = 30) /obj/item/reagent_containers/glass/bottle/sugar name = "sugar bottle" - list_reagents = list(/datum/reagent/consumable/sugar = 30) + list_reagents = list("sugar" = 30) /obj/item/reagent_containers/glass/bottle/sacid name = "sulphuric acid bottle" - list_reagents = list(/datum/reagent/toxin/acid = 30) + list_reagents = list("sacid" = 30) /obj/item/reagent_containers/glass/bottle/welding_fuel name = "welding fuel bottle" - list_reagents = list(/datum/reagent/fuel = 30) + list_reagents = list("welding_fuel" = 30) /obj/item/reagent_containers/glass/bottle/silver name = "silver bottle" - list_reagents = list(/datum/reagent/silver = 30) + list_reagents = list("silver" = 30) /obj/item/reagent_containers/glass/bottle/iodine name = "iodine bottle" - list_reagents = list(/datum/reagent/iodine = 30) + list_reagents = list("iodine" = 30) /obj/item/reagent_containers/glass/bottle/bromine name = "bromine bottle" - list_reagents = list(/datum/reagent/bromine = 30) + list_reagents = list("bromine" = 30) //Lewd Stuff /obj/item/reagent_containers/glass/bottle/crocin name = "Crocin bottle" desc = "A bottle of mild aphrodisiac. Increases libido." - list_reagents = list(/datum/reagent/drug/aphrodisiac = 30) + list_reagents = list("aphro" = 30) /obj/item/reagent_containers/glass/bottle/hexacrocin name = "Hexacrocin bottle" desc = "A bottle of strong aphrodisiac. Increases libido." - list_reagents = list(/datum/reagent/drug/aphrodisiacplus = 30) + list_reagents = list("aphro+" = 30) /obj/item/reagent_containers/glass/bottle/camphor name = "Camphor bottle" desc = "A bottle of mild anaphrodisiac. Reduces libido." - list_reagents = list(/datum/reagent/drug/anaphrodisiac = 30) + list_reagents = list("anaphro" = 30) /obj/item/reagent_containers/glass/bottle/hexacamphor name = "Hexacamphor bottle" desc = "A bottle of strong anaphrodisiac. Reduces libido." - list_reagents = list(/datum/reagent/drug/anaphrodisiacplus = 30) \ No newline at end of file + list_reagents = list("anaphro+" = 30) \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm index a215d09517..efe9c378d9 100644 --- a/code/modules/reagents/reagent_containers/dropper.dm +++ b/code/modules/reagents/reagent_containers/dropper.dm @@ -67,7 +67,7 @@ var/R if(reagents) for(var/datum/reagent/A in src.reagents.reagent_list) - R += A.type + " (" + R += A.id + " (" R += num2text(A.volume) + ")," log_combat(user, M, "squirted", R) diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 98f5111501..3ed505c360 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -27,7 +27,7 @@ "[user] splashes the contents of [src] onto [M]!") if(reagents) for(var/datum/reagent/A in reagents.reagent_list) - R += A.type + " (" + R += A.id + " (" R += num2text(A.volume) + ")," if(isturf(target) && reagents.reagent_list.len && thrownby) log_combat(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]") @@ -109,13 +109,11 @@ /obj/item/reagent_containers/glass/beaker name = "beaker" - desc = "A beaker. It can hold up to 60 units. Unable to withstand extreme pHes." + desc = "A beaker. It can hold up to 50 units. Unable to withstand extreme pHes" icon = 'icons/obj/chemical.dmi' - volume = 60 icon_state = "beaker" item_state = "beaker" materials = list(MAT_GLASS=500) - possible_transfer_amounts = list(5,10,15,20,25,30,50,60) beaker_weakness_bitflag = PH_WEAK /obj/item/reagent_containers/glass/beaker/Initialize() @@ -158,28 +156,28 @@ /obj/item/reagent_containers/glass/beaker/jar name = "honey jar" - desc = "A jar for honey. It can hold up to 60 units of sweet delight. Unable to withstand reagents of an extreme pH." + desc = "A jar for honey. It can hold up to 50 units of sweet delight. Unable to withstand reagents of an extreme pH." icon = 'icons/obj/chemical.dmi' icon_state = "vapour" /obj/item/reagent_containers/glass/beaker/large name = "large beaker" - desc = "A large beaker. Can hold up to 120 units. Unable to withstand reagents of an extreme pH." + desc = "A large beaker. Can hold up to 100 units. Unable to withstand reagents of an extreme pH." icon_state = "beakerlarge" materials = list(MAT_GLASS=2500) - volume = 120 + volume = 100 amount_per_transfer_from_this = 10 - possible_transfer_amounts = list(5,10,15,20,25,30,40,50,60,120) + possible_transfer_amounts = list(5,10,15,20,25,30,50,100) container_HP = 3 /obj/item/reagent_containers/glass/beaker/plastic name = "x-large beaker" - desc = "An extra-large beaker. Can hold up to 180 units. Is able to resist acid and alkaline solutions, but melts at 444 K." + desc = "An extra-large beaker. Can hold up to 150 units. Is able to resist acid and alkaline solutions, but melts at 444K" icon_state = "beakerwhite" materials = list(MAT_GLASS=2500, MAT_PLASTIC=3000) - volume = 180 + volume = 150 amount_per_transfer_from_this = 10 - possible_transfer_amounts = list(5,10,15,20,25,30,40,50,60,120,180) + possible_transfer_amounts = list(5,10,15,20,25,30,50,100,150) /obj/item/reagent_containers/glass/beaker/plastic/Initialize() beaker_weakness_bitflag &= ~PH_WEAK @@ -193,14 +191,14 @@ /obj/item/reagent_containers/glass/beaker/meta name = "metamaterial beaker" - desc = "A large beaker. Can hold up to 240 units, and is able to withstand all chemical situations." + desc = "A large beaker. Can hold up to 200 units. Is able to withstand all chemical situations." icon_state = "beakergold" materials = list(MAT_GLASS=2500, MAT_PLASTIC=3000, MAT_GOLD=1000, MAT_TITANIUM=1000) - volume = 240 + volume = 200 amount_per_transfer_from_this = 10 - possible_transfer_amounts = list(5,10,15,20,25,30,40,50,60,120,200,240) + possible_transfer_amounts = list(5,10,15,20,25,30,50,100,200) -/obj/item/reagent_containers/glass/beaker/meta/Initialize() // why the fuck can't you just set the beaker weakness bitflags to nothing? fuck you +/obj/item/reagent_containers/glass/beaker/meta/Initialize() beaker_weakness_bitflag &= ~PH_WEAK . = ..() @@ -230,35 +228,35 @@ volume = 300 amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,20,25,30,50,100,300) - container_HP = 5 + container_HP = 4 /obj/item/reagent_containers/glass/beaker/cryoxadone - list_reagents = list(/datum/reagent/medicine/cryoxadone = 30) + list_reagents = list("cryoxadone" = 30) /obj/item/reagent_containers/glass/beaker/sulphuric - list_reagents = list(/datum/reagent/toxin/acid = 50) + list_reagents = list("sacid" = 50) /obj/item/reagent_containers/glass/beaker/slime - list_reagents = list(/datum/reagent/toxin/slimejelly = 50) + list_reagents = list("slimejelly" = 50) /obj/item/reagent_containers/glass/beaker/large/styptic name = "styptic reserve tank" - list_reagents = list(/datum/reagent/medicine/styptic_powder = 50) + list_reagents = list("styptic_powder" = 50) /obj/item/reagent_containers/glass/beaker/large/silver_sulfadiazine name = "silver sulfadiazine reserve tank" - list_reagents = list(/datum/reagent/medicine/silver_sulfadiazine = 50) + list_reagents = list("silver_sulfadiazine" = 50) /obj/item/reagent_containers/glass/beaker/large/charcoal name = "charcoal reserve tank" - list_reagents = list(/datum/reagent/medicine/charcoal = 50) + list_reagents = list("charcoal" = 50) /obj/item/reagent_containers/glass/beaker/large/epinephrine name = "epinephrine reserve tank" - list_reagents = list(/datum/reagent/medicine/epinephrine = 50) + list_reagents = list("epinephrine" = 50) /obj/item/reagent_containers/glass/beaker/synthflesh - list_reagents = list(/datum/reagent/medicine/synthflesh = 50) + list_reagents = list("synthflesh" = 50) /obj/item/reagent_containers/glass/bucket name = "bucket" @@ -337,11 +335,10 @@ icon = 'icons/obj/drinks.dmi' icon_state = "smallbottle" item_state = "bottle" - list_reagents = list(/datum/reagent/water = 49.5, /datum/reagent/fluorine = 0.5)//see desc, don't think about it too hard + list_reagents = list("water" = 49.5, "fluorine" = 0.5)//see desc, don't think about it too hard materials = list(MAT_GLASS=0) volume = 50 amount_per_transfer_from_this = 10 - possible_transfer_amounts = list(5,10,15,20,25,30,50) container_HP = 1 /obj/item/reagent_containers/glass/beaker/waterbottle/Initialize() @@ -355,10 +352,9 @@ desc = "A fresh commercial-sized bottle of water." icon_state = "largebottle" materials = list(MAT_GLASS=0) - list_reagents = list(/datum/reagent/water = 100) + list_reagents = list("water" = 100) volume = 100 amount_per_transfer_from_this = 20 - possible_transfer_amounts = list(5,10,15,20,25,30,50,100) container_HP = 1 /obj/item/reagent_containers/glass/beaker/waterbottle/large/empty diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 664ba81f9e..9232bb69b3 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -51,7 +51,7 @@ log_combat(user, M, "injected", src, "([contained])") /obj/item/reagent_containers/hypospray/CMO - list_reagents = list(/datum/reagent/medicine/omnizine = 30) + list_reagents = list("omnizine" = 30) resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF /obj/item/reagent_containers/hypospray/combat @@ -61,17 +61,17 @@ icon_state = "combat_hypo" volume = 100 ignore_flags = 1 // So they can heal their comrades. - list_reagents = list(/datum/reagent/medicine/epinephrine = 30, /datum/reagent/medicine/lesser_syndicate_nanites = 40, /datum/reagent/medicine/leporazine = 15, /datum/reagent/medicine/atropine = 15) + list_reagents = list("epinephrine" = 30, "lesser_syndicate_nanites" = 40, "leporazine" = 15, "atropine" = 15) /obj/item/reagent_containers/hypospray/combat/omnizine // owned idiot desc = "A modified air-needle autoinjector, used by underfunded support operatives to slowly heal injuries in combat and limp away from a fight." volume = 90 - list_reagents = list(/datum/reagent/medicine/epinephrine = 30, /datum/reagent/medicine/omnizine = 30, /datum/reagent/medicine/leporazine = 15, /datum/reagent/medicine/atropine = 15) + list_reagents = list("epinephrine" = 30, "omnizine" = 30, "leporazine" = 15, "atropine" = 15) /obj/item/reagent_containers/hypospray/combat/nanites desc = "A modified air-needle autoinjector for use in combat situations. Prefilled with experimental medical compounds for rapid healing." volume = 100 - list_reagents = list(/datum/reagent/medicine/adminordrazine/quantum_heal = 80, /datum/reagent/medicine/synaptizine = 20) + list_reagents = list("quantum_heal" = 80, "synaptizine" = 20) /obj/item/reagent_containers/hypospray/magillitis name = "experimental autoinjector" @@ -79,7 +79,7 @@ icon_state = "combat_hypo" volume = 5 reagent_flags = NONE - list_reagents = list(/datum/reagent/magillitis = 5) + list_reagents = list("magillitis" = 5) //MediPens @@ -95,7 +95,7 @@ ignore_flags = 1 //so you can medipen through hardsuits reagent_flags = DRAWABLE flags_1 = null - list_reagents = list(/datum/reagent/medicine/epinephrine = 10) + list_reagents = list("epinephrine" = 10) /obj/item/reagent_containers/hypospray/medipen/suicide_act(mob/living/carbon/user) user.visible_message("[user] begins to choke on \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -137,7 +137,7 @@ desc = "A highly illegal medipen due to its load and small injections, allow for five uses before being drained" volume = 50 amount_per_transfer_from_this = 10 - list_reagents = list(/datum/reagent/medicine/stimulants = 50) + list_reagents = list("stimulants" = 50) /obj/item/reagent_containers/hypospray/medipen/stimulants/baseball name = "the reason the syndicate major league team wins" @@ -145,7 +145,7 @@ icon_state = "baseballstim" volume = 50 amount_per_transfer_from_this = 50 - list_reagents = list(/datum/reagent/medicine/stimulants = 50) + list_reagents = list("stimulants" = 50) /obj/item/reagent_containers/hypospray/medipen/stimpack //goliath kiting name = "stimpack medipen" @@ -153,16 +153,16 @@ icon_state = "stimpen" volume = 20 amount_per_transfer_from_this = 20 - list_reagents = list(/datum/reagent/medicine/ephedrine = 10, /datum/reagent/consumable/coffee = 10) + list_reagents = list("ephedrine" = 10, "coffee" = 10) /obj/item/reagent_containers/hypospray/medipen/stimpack/traitor desc = "A modified stimulants autoinjector for use in combat situations. Has a mild healing effect." - list_reagents = list(/datum/reagent/medicine/stimulants = 10, /datum/reagent/medicine/omnizine = 10) + list_reagents = list("stimulants" = 10, "omnizine" = 10) /obj/item/reagent_containers/hypospray/medipen/morphine name = "morphine medipen" desc = "A rapid way to get you out of a tight situation and fast! You'll feel rather drowsy, though." - list_reagents = list(/datum/reagent/medicine/morphine = 10) + list_reagents = list("morphine" = 10) /obj/item/reagent_containers/hypospray/medipen/tuberculosiscure name = "BVAK autoinjector" @@ -170,7 +170,7 @@ icon_state = "stimpen" volume = 60 amount_per_transfer_from_this = 30 - list_reagents = list(/datum/reagent/medicine/atropine = 10, /datum/reagent/medicine/epinephrine = 10, /datum/reagent/medicine/salbutamol = 20, /datum/reagent/medicine/spaceacillin = 20) + list_reagents = list("atropine" = 10, "epinephrine" = 10, "salbutamol" = 20, "spaceacillin" = 20) /obj/item/reagent_containers/hypospray/medipen/survival name = "survival medipen" @@ -178,20 +178,28 @@ icon_state = "stimpen" volume = 52 amount_per_transfer_from_this = 52 - list_reagents = list(/datum/reagent/medicine/salbutamol = 10, /datum/reagent/medicine/leporazine = 15, /datum/reagent/medicine/neo_jelly = 15, /datum/reagent/medicine/epinephrine = 10, /datum/reagent/medicine/lavaland_extract = 2) + list_reagents = list("salbutamol" = 10, "leporazine" = 15, "neo_jelly" = 15, "epinephrine" = 10, "lavaland_extract" = 2) + +/obj/item/reagent_containers/hypospray/medipen/species_mutator + name = "species mutator medipen" + desc = "Embark on a whirlwind tour of racial insensitivity by \ + literally appropriating other races." + volume = 1 + amount_per_transfer_from_this = 1 + list_reagents = list("unstablemutationtoxin" = 1) /obj/item/reagent_containers/hypospray/medipen/firelocker name = "fire treatment medipen" desc = "A medipen that has been fulled with burn healing chemicals for personnel without advanced medical knowledge." volume = 15 amount_per_transfer_from_this = 15 - list_reagents = list(/datum/reagent/medicine/oxandrolone = 5, /datum/reagent/medicine/kelotane = 10) + list_reagents = list("oxandrolone" = 5, "kelotane" = 10) /obj/item/reagent_containers/hypospray/combat/heresypurge name = "holy water autoinjector" desc = "A modified air-needle autoinjector for use in combat situations. Prefilled with 5 doses of a holy water mixture." volume = 250 - list_reagents = list(/datum/reagent/water/holywater = 150, /datum/reagent/peaceborg_tire = 50, /datum/reagent/peaceborg_confuse = 50) + list_reagents = list("holywater" = 150, "tiresolution" = 50, "dizzysolution" = 50) amount_per_transfer_from_this = 50 #define HYPO_SPRAY 0 @@ -232,19 +240,19 @@ var/penetrates = FALSE /obj/item/hypospray/mkii/brute - start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/bicaridine + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine /obj/item/hypospray/mkii/toxin - start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/antitoxin + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin /obj/item/hypospray/mkii/oxygen - start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/dexalin + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin /obj/item/hypospray/mkii/burn - start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/kelotane + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane /obj/item/hypospray/mkii/tricord - start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/tricord + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord /obj/item/hypospray/mkii/enlarge spawnwithvial = FALSE @@ -255,7 +263,7 @@ icon_state = "cmo2" desc = "The Deluxe Hypospray can take larger-size vials. It also acts faster and delivers more reagents per spray." resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF - start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/CMO + start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/CMO inject_wait = DELUXE_WAIT_INJECT spray_wait = DELUXE_WAIT_SPRAY spray_self = DELUXE_SELF_SPRAY @@ -265,7 +273,7 @@ name = "combat hypospray mk.II" desc = "A combat-ready deluxe hypospray that acts almost instantly. It can be tactically reloaded by using a vial on it." icon_state = "combat2" - start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/combat + start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat inject_wait = COMBAT_WAIT_INJECT spray_wait = COMBAT_WAIT_SPRAY spray_self = COMBAT_SELF_SPRAY diff --git a/code/modules/reagents/reagent_containers/hypovial.dm b/code/modules/reagents/reagent_containers/hypovial.dm index c0db92e0e8..ba5ce48a4a 100644 --- a/code/modules/reagents/reagent_containers/hypovial.dm +++ b/code/modules/reagents/reagent_containers/hypovial.dm @@ -1,13 +1,13 @@ //hypovials used with the MkII hypospray. See hypospray.dm. -/obj/item/reagent_containers/glass/bottle/vial // these have literally no fucking right to just be better beakers that you can shit out of a chemmaster +/obj/item/reagent_containers/glass/bottle/vial name = "broken hypovial" desc = "A hypovial compatible with most hyposprays." icon_state = "hypovial" spillable = FALSE + var/comes_with = list() //Easy way of doing this. volume = 10 possible_transfer_amounts = list(1,2,5,10) - APTFT_altclick = FALSE obj_flags = UNIQUE_RENAME unique_reskin = list("hypovial" = "hypovial", "red hypovial" = "hypovial-b", @@ -24,9 +24,9 @@ . = ..() if(!icon_state) icon_state = "hypovial" + for(var/R in comes_with) + reagents.add_reagent(R,comes_with[R]) update_icon() -// beaker_weakness_bitflag |= PH_WEAK // fuck you if you're using these like beakers -// beaker_weakness_bitflag |= TEMP_WEAK /obj/item/reagent_containers/glass/bottle/vial/on_reagent_change() @@ -60,11 +60,11 @@ /obj/item/reagent_containers/glass/bottle/vial/small name = "hypovial" volume = 60 - possible_transfer_amounts = list(1,2,5,10,20) + possible_transfer_amounts = list(5,10) /obj/item/reagent_containers/glass/bottle/vial/small/bluespace volume = 120 - possible_transfer_amounts = list(1,2,5,10,20) + possible_transfer_amounts = list(5,10) name = "bluespace hypovial" icon_state = "hypovialbs" unique_reskin = null @@ -74,7 +74,7 @@ desc = "A large hypovial, for deluxe hypospray models." icon_state = "hypoviallarge" volume = 120 - possible_transfer_amounts = list(1,2,5,10,20) + possible_transfer_amounts = list(5,10,15,20) unique_reskin = list("large hypovial" = "hypoviallarge", "large red hypovial" = "hypoviallarge-b", "large blue hypovial" = "hypoviallarge-d", @@ -106,94 +106,94 @@ add_overlay(filling) /obj/item/reagent_containers/glass/bottle/vial/large/bluespace - possible_transfer_amounts = list(1,2,5,10,20) + possible_transfer_amounts = list(5,10,15,20) name = "bluespace large hypovial" volume = 240 icon_state = "hypoviallargebs" unique_reskin = null -/obj/item/reagent_containers/glass/bottle/vial/small/bicaridine +/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine name = "red hypovial (bicaridine)" icon_state = "hypovial-b" - list_reagents = list(/datum/reagent/medicine/bicaridine = 30) + comes_with = list("bicaridine" = 30) -/obj/item/reagent_containers/glass/bottle/vial/small/antitoxin +/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin name = "green hypovial (Anti-Tox)" icon_state = "hypovial-a" - list_reagents = list(/datum/reagent/medicine/antitoxin = 30) + comes_with = list("antitoxin" = 30) -/obj/item/reagent_containers/glass/bottle/vial/small/kelotane +/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane name = "orange hypovial (kelotane)" icon_state = "hypovial-k" - list_reagents = list(/datum/reagent/medicine/kelotane = 30) + comes_with = list("kelotane" = 30) -/obj/item/reagent_containers/glass/bottle/vial/small/dexalin +/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin name = "blue hypovial (dexalin)" icon_state = "hypovial-d" - list_reagents = list(/datum/reagent/medicine/dexalin = 30) + comes_with = list("dexalin" = 30) -/obj/item/reagent_containers/glass/bottle/vial/small/tricord +/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord name = "hypovial (tricordrazine)" icon_state = "hypovial" - list_reagents = list(/datum/reagent/medicine/tricordrazine = 30) + comes_with = list("tricordrazine" = 30) -/obj/item/reagent_containers/glass/bottle/vial/small/breastreduction +/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/breastreduction name = "pink hypovial (breast treatment)" icon_state = "hypovial-pink" - list_reagents = list(/datum/reagent/fermi/BEsmaller_hypo = 30) + comes_with = list("BEsmaller_hypo" = 30) -/obj/item/reagent_containers/glass/bottle/vial/small/penisreduction +/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/penisreduction name = "pink hypovial (penis treatment)" icon_state = "hypovial-pink" - list_reagents = list(/datum/reagent/fermi/PEsmaller_hypo = 30) + comes_with = list("PEsmaller_hypo" = 30) -/obj/item/reagent_containers/glass/bottle/vial/large/CMO +/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/CMO name = "deluxe hypovial" icon_state = "hypoviallarge-cmos" - list_reagents = list(/datum/reagent/medicine/omnizine = 20, /datum/reagent/medicine/leporazine = 20, /datum/reagent/medicine/atropine = 20) + comes_with = list("omnizine" = 20, "leporazine" = 20, "atropine" = 20) -/obj/item/reagent_containers/glass/bottle/vial/large/bicaridine +/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/bicaridine name = "large red hypovial (bicaridine)" icon_state = "hypoviallarge-b" - list_reagents = list(/datum/reagent/medicine/bicaridine = 60) + comes_with = list("bicaridine" = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/antitoxin +/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/antitoxin name = "large green hypovial (anti-tox)" icon_state = "hypoviallarge-a" - list_reagents = list(/datum/reagent/medicine/antitoxin = 60) + comes_with = list("antitoxin" = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/kelotane +/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/kelotane name = "large orange hypovial (kelotane)" icon_state = "hypoviallarge-k" - list_reagents = list(/datum/reagent/medicine/kelotane = 60) + comes_with = list("kelotane" = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/dexalin +/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/dexalin name = "large blue hypovial (dexalin)" icon_state = "hypoviallarge-d" - list_reagents = list(/datum/reagent/medicine/dexalin = 60) + comes_with = list("dexalin" = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/charcoal +/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/charcoal name = "large black hypovial (charcoal)" icon_state = "hypoviallarge-t" - list_reagents = list(/datum/reagent/medicine/charcoal = 60) + comes_with = list("charcoal" = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/tricord +/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/tricord name = "large hypovial (tricord)" icon_state = "hypoviallarge" - list_reagents = list(/datum/reagent/medicine/tricordrazine = 60) + comes_with = list("tricordrazine" = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/salglu +/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/salglu name = "large green hypovial (salglu)" icon_state = "hypoviallarge-a" - list_reagents = list(/datum/reagent/medicine/salglu_solution = 60) + comes_with = list("salglu_solution" = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/synthflesh +/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/synthflesh name = "large orange hypovial (synthflesh)" icon_state = "hypoviallarge-k" - list_reagents = list(/datum/reagent/medicine/synthflesh = 60) + comes_with = list("synthflesh" = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/combat +/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat name = "combat hypovial" icon_state = "hypoviallarge-t" - list_reagents = list(/datum/reagent/medicine/epinephrine = 3, /datum/reagent/medicine/omnizine = 19, /datum/reagent/medicine/leporazine = 19, /datum/reagent/medicine/atropine = 19) //Epinephrine's main effect here is to kill suff damage, so we don't need much given atropine + comes_with = list("epinephrine" = 3, "omnizine" = 19, "leporazine" = 19, "atropine" = 19) //Epinephrine's main effect here is to kill suff damage, so we don't need much given atropine diff --git a/code/modules/reagents/reagent_containers/medspray.dm b/code/modules/reagents/reagent_containers/medspray.dm index 02a3f987bc..b445c38ad9 100644 --- a/code/modules/reagents/reagent_containers/medspray.dm +++ b/code/modules/reagents/reagent_containers/medspray.dm @@ -82,26 +82,26 @@ name = "medical spray (styptic powder)" desc = "A medical spray bottle, designed for precision application, with an unscrewable cap. This one contains styptic powder, for treating cuts and bruises." icon_state = "brutespray" - list_reagents = list(/datum/reagent/medicine/styptic_powder = 60) + list_reagents = list("styptic_powder" = 60) /obj/item/reagent_containers/medspray/silver_sulf name = "medical spray (silver sulfadiazine)" desc = "A medical spray bottle, designed for precision application, with an unscrewable cap. This one contains silver sulfadiazine, useful for treating burns." icon_state = "burnspray" - list_reagents = list(/datum/reagent/medicine/silver_sulfadiazine = 60) + list_reagents = list("silver_sulfadiazine" = 60) /obj/item/reagent_containers/medspray/synthflesh name = "medical spray (synthflesh)" desc = "A medical spray bottle, designed for precision application, with an unscrewable cap. This one contains synthflesh, an apex brute and burn healing agent." icon_state = "synthspray" - list_reagents = list(/datum/reagent/medicine/synthflesh = 60) + list_reagents = list("synthflesh" = 60) /obj/item/reagent_containers/medspray/sterilizine name = "sterilizer spray" desc = "Spray bottle loaded with non-toxic sterilizer. Useful in preparation for surgery." - list_reagents = list(/datum/reagent/space_cleaner/sterilizine = 60) + list_reagents = list("sterilizine" = 60) /obj/item/reagent_containers/medspray/synthtissue name = "Synthtissue young culture spray" desc = "Spray bottle loaded with synthtissue. Useful in synthtissue grafting surgeries." - list_reagents = list(/datum/reagent/synthtissue = 60) + list_reagents = list("synthtissue" = 60) diff --git a/code/modules/reagents/reagent_containers/patch.dm b/code/modules/reagents/reagent_containers/patch.dm index 1e23f46d9f..02852f2218 100644 --- a/code/modules/reagents/reagent_containers/patch.dm +++ b/code/modules/reagents/reagent_containers/patch.dm @@ -32,13 +32,13 @@ /obj/item/reagent_containers/pill/patch/styptic name = "brute patch" desc = "Helps with brute injuries." - list_reagents = list(/datum/reagent/medicine/styptic_powder = 20) + list_reagents = list("styptic_powder" = 20) icon_state = "bandaid_brute" /obj/item/reagent_containers/pill/patch/silver_sulf name = "burn patch" desc = "Helps with burn injuries." - list_reagents = list(/datum/reagent/medicine/silver_sulfadiazine = 20) + list_reagents = list("silver_sulfadiazine" = 20) icon_state = "bandaid_burn" /obj/item/reagent_containers/pill/patch/get_belt_overlay() diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index e6fa18ba9c..d4880aa085 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -82,97 +82,97 @@ name = "toxins pill" desc = "Highly toxic." icon_state = "pill5" - list_reagents = list(/datum/reagent/toxin = 50) + list_reagents = list("toxin" = 50) roundstart = 1 /obj/item/reagent_containers/pill/cyanide name = "cyanide pill" desc = "Don't swallow this." icon_state = "pill5" - list_reagents = list(/datum/reagent/toxin/cyanide = 50) + list_reagents = list("cyanide" = 50) roundstart = 1 /obj/item/reagent_containers/pill/adminordrazine name = "adminordrazine pill" desc = "It's magic. We don't have to explain it." icon_state = "pill16" - list_reagents = list(/datum/reagent/medicine/adminordrazine = 50) + list_reagents = list("adminordrazine" = 50) roundstart = 1 /obj/item/reagent_containers/pill/morphine name = "morphine pill" desc = "Commonly used to treat insomnia." icon_state = "pill8" - list_reagents = list(/datum/reagent/medicine/morphine = 30) + list_reagents = list("morphine" = 30) roundstart = 1 /obj/item/reagent_containers/pill/stimulant name = "stimulant pill" desc = "Often taken by overworked employees, athletes, and the inebriated. You'll snap to attention immediately!" icon_state = "pill19" - list_reagents = list(/datum/reagent/medicine/ephedrine = 10, /datum/reagent/medicine/antihol = 10, /datum/reagent/consumable/coffee = 30) + list_reagents = list("ephedrine" = 10, "antihol" = 10, "coffee" = 30) roundstart = 1 /obj/item/reagent_containers/pill/salbutamol name = "salbutamol pill" desc = "Used to treat oxygen deprivation." icon_state = "pill16" - list_reagents = list(/datum/reagent/medicine/salbutamol = 30) + list_reagents = list("salbutamol" = 30) roundstart = 1 /obj/item/reagent_containers/pill/charcoal name = "charcoal pill" desc = "Neutralizes many common toxins." icon_state = "pill17" - list_reagents = list(/datum/reagent/medicine/charcoal = 10) + list_reagents = list("charcoal" = 10) roundstart = 1 /obj/item/reagent_containers/pill/epinephrine name = "epinephrine pill" desc = "Used to stabilize patients." icon_state = "pill5" - list_reagents = list(/datum/reagent/medicine/epinephrine = 15) + list_reagents = list("epinephrine" = 15) roundstart = 1 /obj/item/reagent_containers/pill/mannitol name = "mannitol pill" desc = "Used to treat brain damage." icon_state = "pill17" - list_reagents = list(/datum/reagent/medicine/mannitol = 50) + list_reagents = list("mannitol" = 50) roundstart = 1 /obj/item/reagent_containers/pill/mutadone name = "mutadone pill" desc = "Used to treat genetic damage." icon_state = "pill20" - list_reagents = list(/datum/reagent/medicine/mutadone = 50) + list_reagents = list("mutadone" = 50) roundstart = 1 /obj/item/reagent_containers/pill/salicyclic name = "salicylic acid pill" desc = "Used to dull pain." icon_state = "pill9" - list_reagents = list(/datum/reagent/medicine/sal_acid = 24) + list_reagents = list("sal_acid" = 24) roundstart = 1 /obj/item/reagent_containers/pill/oxandrolone name = "oxandrolone pill" desc = "Used to stimulate burn healing." icon_state = "pill11" - list_reagents = list(/datum/reagent/medicine/oxandrolone = 24) + list_reagents = list("oxandrolone" = 24) roundstart = 1 /obj/item/reagent_containers/pill/insulin name = "insulin pill" desc = "Handles hyperglycaemic coma." icon_state = "pill18" - list_reagents = list(/datum/reagent/medicine/insulin = 50) + list_reagents = list("insulin" = 50) roundstart = 1 /obj/item/reagent_containers/pill/psicodine name = "psicodine pill" desc = "Used to treat mental instability and traumas." - list_reagents = list(/datum/reagent/medicine/psicodine = 10) + list_reagents = list("psicodine" = 10) icon_state = "pill22" roundstart = 1 @@ -180,21 +180,21 @@ name = "potassium iodide pill" desc = "Used to treat radition used to counter radiation poisoning." icon_state = "pill18" - list_reagents = list(/datum/reagent/medicine/potass_iodide = 50) + list_reagents = list("potass_iodide" = 50) roundstart = 1 /obj/item/reagent_containers/pill/antirad_plus name = "prussian blue pill" desc = "Used to treat heavy radition poisoning." icon_state = "prussian_blue" - list_reagents = list(/datum/reagent/medicine/prussian_blue = 25, /datum/reagent/water = 10) + list_reagents = list("prussian_blue" = 25, "water" = 10) roundstart = 1 /obj/item/reagent_containers/pill/mutarad name = "radiation treatment deluxe pill" desc = "Used to treat heavy radition poisoning and genetic defects." icon_state = "anit_rad_fixgene" - list_reagents = list(/datum/reagent/medicine/prussian_blue = 15, /datum/reagent/medicine/potass_iodide = 15, /datum/reagent/medicine/mutadone = 15, /datum/reagent/water = 5) + list_reagents = list("prussian_blue" = 15, "potass_iodide" = 15, "mutadone" = 15, "water" = 5) roundstart = 1 ///////////////////////////////////////// this pill is used only in a legion mob drop @@ -203,32 +203,32 @@ desc = "I wouldn't eat this if I were you." icon_state = "pill9" color = "#454545" - list_reagents = list(/datum/reagent/mutationtoxin/shadow = 1) + list_reagents = list("shadowmutationtoxin" = 1) //////////////////////////////////////// drugs /obj/item/reagent_containers/pill/zoom name = "zoom pill" - list_reagents = list(/datum/reagent/medicine/synaptizine = 10, /datum/reagent/drug/nicotine = 10, /datum/reagent/drug/methamphetamine = 1) + list_reagents = list("synaptizine" = 10, "nicotine" = 10, "methamphetamine" = 1) /obj/item/reagent_containers/pill/happy name = "happy pill" - list_reagents = list(/datum/reagent/consumable/sugar = 10, /datum/reagent/drug/space_drugs = 10) + list_reagents = list("sugar" = 10, "space_drugs" = 10) /obj/item/reagent_containers/pill/lsd name = "hallucinogen pill" - list_reagents = list(/datum/reagent/drug/mushroomhallucinogen = 15, /datum/reagent/toxin/mindbreaker = 15) + list_reagents = list("mushroomhallucinogen" = 15, "mindbreaker" = 15) /obj/item/reagent_containers/pill/aranesp name = "speedy pill" - list_reagents = list(/datum/reagent/drug/aranesp = 10) + list_reagents = list("aranesp" = 10) /obj/item/reagent_containers/pill/happiness name = "happiness pill" desc = "It has a creepy smiling face on it." icon_state = "pill_happy" - list_reagents = list(/datum/reagent/drug/happiness = 10) + list_reagents = list("happiness" = 10) /obj/item/reagent_containers/pill/floorpill name = "floorpill" @@ -250,8 +250,8 @@ /obj/item/reagent_containers/pill/penis_enlargement name = "penis enlargement pill" - list_reagents = list(/datum/reagent/fermi/penis_enlarger = 10) + list_reagents = list("penis_enlarger" = 10) /obj/item/reagent_containers/pill/breast_enlargement name = "breast enlargement pill" - list_reagents = list(/datum/reagent/fermi/breast_enlarger = 10) + list_reagents = list("breast_enlarger" = 10) diff --git a/code/modules/reagents/reagent_containers/rags.dm b/code/modules/reagents/reagent_containers/rags.dm index 812b3144e9..d09b18f244 100644 --- a/code/modules/reagents/reagent_containers/rags.dm +++ b/code/modules/reagents/reagent_containers/rags.dm @@ -8,7 +8,6 @@ reagent_flags = REFILLABLE | DRAINABLE amount_per_transfer_from_this = 5 possible_transfer_amounts = list() - APTFT_altclick = FALSE volume = 5 spillable = FALSE var/wipe_sound @@ -74,9 +73,9 @@ if(M.fire_stacks) var/minus_plus = M.fire_stacks < 0 ? 1 : -1 var/amount = min(abs(M.fire_stacks), soak_efficiency) - var/r_id = /datum/reagent/fuel + var/r_id = "fuel" if(M.fire_stacks < 0) - r_id = /datum/reagent/water + r_id = "water" reagents.add_reagent(r_id, amount * 0.3) M.adjust_fire_stacks(minus_plus * amount) M.wash_cream() diff --git a/code/modules/reagents/reagent_containers/sleeper_buffer.dm b/code/modules/reagents/reagent_containers/sleeper_buffer.dm index d353174c06..044dab2924 100644 --- a/code/modules/reagents/reagent_containers/sleeper_buffer.dm +++ b/code/modules/reagents/reagent_containers/sleeper_buffer.dm @@ -8,4 +8,4 @@ spillable = TRUE resistance_flags = ACID_PROOF amount_per_transfer_from_this = 0 - possible_transfer_amounts = list() + possible_transfer_amounts = list(0) diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index ad8eb871e1..ddbc6cf92b 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -52,13 +52,13 @@ user.changeNext_move(CLICK_CD_RANGE*2) user.newtonian_move(get_dir(A, user)) var/turf/T = get_turf(src) - if(reagents.has_reagent(/datum/reagent/toxin/acid)) + if(reagents.has_reagent("sacid")) message_admins("[ADMIN_LOOKUPFLW(user)] fired sulphuric acid from \a [src] at [ADMIN_VERBOSEJMP(T)].") log_game("[key_name(user)] fired sulphuric acid from \a [src] at [AREACOORD(T)].") - if(reagents.has_reagent(/datum/reagent/toxin/acid/fluacid)) + if(reagents.has_reagent("facid")) message_admins("[ADMIN_LOOKUPFLW(user)] fired Fluacid from \a [src] at [ADMIN_VERBOSEJMP(T)].") log_game("[key_name(user)] fired Fluacid from \a [src] at [AREACOORD(T)].") - if(reagents.has_reagent(/datum/reagent/lube)) + if(reagents.has_reagent("lube")) message_admins("[ADMIN_LOOKUPFLW(user)] fired Space lube from \a [src] at [ADMIN_VERBOSEJMP(T)].") log_game("[key_name(user)] fired Space lube from \a [src] at [AREACOORD(T)].") return @@ -149,7 +149,7 @@ name = "space cleaner" desc = "BLAM!-brand non-foaming space cleaner!" volume = 100 - list_reagents = list(/datum/reagent/space_cleaner = 100) + list_reagents = list("cleaner" = 100) amount_per_transfer_from_this = 2 stream_amount = 5 @@ -172,7 +172,7 @@ name = "drying agent spray" desc = "A spray bottle for drying agent." volume = 100 - list_reagents = list(/datum/reagent/drying_agent = 100) + list_reagents = list("drying_agent" = 100) amount_per_transfer_from_this = 2 stream_amount = 5 @@ -181,7 +181,7 @@ name = "spray tan" volume = 50 desc = "Gyaro brand spray tan. Do not spray near eyes or other orifices." - list_reagents = list(/datum/reagent/spraytan = 50) + list_reagents = list("spraytan" = 50) //pepperspray @@ -197,7 +197,7 @@ stream_range = 4 spray_delay = 1 amount_per_transfer_from_this = 5 - list_reagents = list(/datum/reagent/consumable/condensedcapsaicin = 40) + list_reagents = list("condensedcapsaicin" = 40) /obj/item/reagent_containers/spray/pepper/suicide_act(mob/living/carbon/user) user.visible_message("[user] begins huffing \the [src]! It looks like [user.p_theyre()] getting a dirty high!") @@ -218,7 +218,7 @@ item_state = "sunflower" amount_per_transfer_from_this = 1 volume = 10 - list_reagents = list(/datum/reagent/water = 10) + list_reagents = list("water" = 10) /obj/item/reagent_containers/spray/waterflower/attack_self(mob/user) //Don't allow changing how much the flower sprays return @@ -230,14 +230,14 @@ icon = 'icons/obj/chemical.dmi' icon_state = "clownflower" volume = 30 - list_reagents = list(/datum/reagent/lube/superlube = 30) + list_reagents = list("superlube" = 30) /obj/item/reagent_containers/spray/waterflower/cyborg reagent_flags = NONE volume = 100 - list_reagents = list(/datum/reagent/water = 100) + list_reagents = list("water" = 100) var/generate_amount = 5 - var/generate_type = /datum/reagent/water + var/generate_type = "water" var/last_generate = 0 var/generate_delay = 10 //deciseconds can_fill_from_container = FALSE @@ -245,9 +245,9 @@ /obj/item/reagent_containers/spray/waterflower/cyborg/hacked name = "nova flower" desc = "This doesn't look safe at all..." - list_reagents = list(/datum/reagent/clf3 = 3) + list_reagents = list("clf3" = 3) volume = 3 - generate_type = /datum/reagent/clf3 + generate_type = "clf3" generate_amount = 1 generate_delay = 40 //deciseconds @@ -309,7 +309,7 @@ ..(the_targets[i]) /obj/item/reagent_containers/spray/chemsprayer/bioterror - list_reagents = list(/datum/reagent/toxin/sodium_thiopental = 100, /datum/reagent/toxin/coniine = 100, /datum/reagent/toxin/venom = 100, /datum/reagent/consumable/condensedcapsaicin = 100, /datum/reagent/toxin/initropidril = 100, /datum/reagent/toxin/polonium = 100) + list_reagents = list("sodium_thiopental" = 100, "coniine" = 100, "venom" = 100, "condensedcapsaicin" = 100, "initropidril" = 100, "polonium" = 100) // Plant-B-Gone /obj/item/reagent_containers/spray/plantbgone // -- Skie @@ -321,4 +321,4 @@ lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi' volume = 100 - list_reagents = list(/datum/reagent/toxin/plantbgone = 100) + list_reagents = list("plantbgone" = 100) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 7fafbc319c..6bdae6225a 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -179,39 +179,39 @@ /obj/item/reagent_containers/syringe/epinephrine name = "syringe (epinephrine)" desc = "Contains epinephrine - used to stabilize patients." - list_reagents = list(/datum/reagent/medicine/epinephrine = 15) + list_reagents = list("epinephrine" = 15) /obj/item/reagent_containers/syringe/charcoal name = "syringe (charcoal)" desc = "Contains charcoal." - list_reagents = list(/datum/reagent/medicine/charcoal = 15) + list_reagents = list("charcoal" = 15) /obj/item/reagent_containers/syringe/antiviral name = "syringe (spaceacillin)" desc = "Contains antiviral agents." - list_reagents = list(/datum/reagent/medicine/spaceacillin = 15) + list_reagents = list("spaceacillin" = 15) /obj/item/reagent_containers/syringe/bioterror name = "bioterror syringe" desc = "Contains several paralyzing reagents." - list_reagents = list(/datum/reagent/consumable/ethanol/neurotoxin = 5, /datum/reagent/toxin/mutetoxin = 5, /datum/reagent/toxin/sodium_thiopental = 5) + list_reagents = list("neurotoxin" = 5, "mutetoxin" = 5, "sodium_thiopental" = 5) /obj/item/reagent_containers/syringe/stimulants name = "Stimpack" desc = "Contains stimulants." amount_per_transfer_from_this = 50 volume = 50 - list_reagents = list(/datum/reagent/medicine/stimulants = 50) + list_reagents = list("stimulants" = 50) /obj/item/reagent_containers/syringe/calomel name = "syringe (calomel)" desc = "Contains calomel." - list_reagents = list(/datum/reagent/medicine/calomel = 15) + list_reagents = list("calomel" = 15) /obj/item/reagent_containers/syringe/plasma name = "syringe (plasma)" desc = "Contains plasma." - list_reagents = list(/datum/reagent/toxin/plasma = 15) + list_reagents = list("plasma" = 15) /obj/item/reagent_containers/syringe/lethal name = "lethal injection syringe" @@ -220,24 +220,24 @@ volume = 50 /obj/item/reagent_containers/syringe/lethal/choral - list_reagents = list(/datum/reagent/toxin/chloralhydrate = 50) + list_reagents = list("chloralhydrate" = 50) /obj/item/reagent_containers/syringe/lethal/execution - list_reagents = list(/datum/reagent/toxin/amatoxin = 15, /datum/reagent/toxin/formaldehyde = 15, /datum/reagent/toxin/cyanide = 10, /datum/reagent/toxin/acid/fluacid = 10) //Citadel edit, changing out plasma from lethals + list_reagents = list("amatoxin" = 15, "formaldehyde" = 15, "cyanide" = 10, "facid" = 10) //Citadel edit, changing out plasma from lethals /obj/item/reagent_containers/syringe/mulligan name = "Mulligan" desc = "A syringe used to completely change the users identity." amount_per_transfer_from_this = 1 volume = 1 - list_reagents = list(/datum/reagent/mulligan = 1) + list_reagents = list("mulligan" = 1) /obj/item/reagent_containers/syringe/gluttony name = "Gluttony's Blessing" desc = "A syringe recovered from a dread place. It probably isn't wise to use." amount_per_transfer_from_this = 1 volume = 1 - list_reagents = list(/datum/reagent/gluttonytoxin = 1) + list_reagents = list("gluttonytoxin" = 1) /obj/item/reagent_containers/syringe/bluespace name = "bluespace syringe" diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index e9f8053631..0964b67490 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -8,7 +8,7 @@ pressure_resistance = 2*ONE_ATMOSPHERE max_integrity = 300 var/tank_volume = 1000 //In units, how much the dispenser can hold - var/reagent_id = /datum/reagent/water //The ID of the reagent that the dispenser uses + var/reagent_id = "water" //The ID of the reagent that the dispenser uses /obj/structure/reagent_dispensers/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) . = ..() @@ -58,7 +58,7 @@ name = "firefighting foam tank" desc = "A tank full of firefighting foam." icon_state = "foam" - reagent_id = /datum/reagent/firefighting_foam + reagent_id = "firefighting_foam" tank_volume = 500 /obj/structure/reagent_dispensers/water_cooler @@ -99,7 +99,7 @@ name = "fuel tank" desc = "A tank full of industrial welding fuel. Do not consume." icon_state = "fuel" - reagent_id = /datum/reagent/fuel + reagent_id = "welding_fuel" /obj/structure/reagent_dispensers/fueltank/high //Unused - Good for ghost roles name = "high-capacity fuel tank" @@ -136,12 +136,12 @@ /obj/structure/reagent_dispensers/fueltank/attackby(obj/item/I, mob/living/user, params) if(istype(I, /obj/item/weldingtool)) - if(!reagents.has_reagent(/datum/reagent/fuel)) + if(!reagents.has_reagent("welding_fuel")) to_chat(user, "[src] is out of fuel!") return var/obj/item/weldingtool/W = I if(!W.welding) - if(W.reagents.has_reagent(/datum/reagent/fuel, W.max_fuel)) + if(W.reagents.has_reagent("welding_fuel", W.max_fuel)) to_chat(user, "Your [W.name] is already full!") return reagents.trans_to(W, W.max_fuel) @@ -171,7 +171,7 @@ icon_state = "pepper" anchored = TRUE density = FALSE - reagent_id = /datum/reagent/consumable/condensedcapsaicin + reagent_id = "condensedcapsaicin" /obj/structure/reagent_dispensers/peppertank/Initialize() . = ..() @@ -184,14 +184,14 @@ icon_state = "virus_food" anchored = TRUE density = FALSE - reagent_id = /datum/reagent/toxin/mutagen/mutagenvirusfood + reagent_id = "virusfood" /obj/structure/reagent_dispensers/cooking_oil name = "vat of cooking oil" desc = "A huge metal vat with a tap on the front. Filled with cooking oil for use in frying food." icon_state = "vat" anchored = TRUE - reagent_id = /datum/reagent/consumable/cooking_oil + reagent_id = "cooking_oil" //////// //Kegs// @@ -201,7 +201,7 @@ name = "beer keg" desc = "Beer is liquid bread, it's good for you..." icon_state = "beer" - reagent_id = /datum/reagent/consumable/ethanol/beer + reagent_id = "beer" /obj/structure/reagent_dispensers/beerkeg/blob_act(obj/structure/blob/B) explosion(src.loc,0,3,5,7,10) @@ -213,41 +213,42 @@ desc = "A keg." icon = 'modular_citadel/icons/obj/objects.dmi' icon_state = "keg" + reagent_id = "water" /obj/structure/reagent_dispensers/keg/mead name = "keg of mead" desc = "A keg of mead." icon_state = "orangekeg" - reagent_id = /datum/reagent/consumable/ethanol/mead + reagent_id = "mead" /obj/structure/reagent_dispensers/keg/aphro name = "keg of aphrodisiac" desc = "A keg of aphrodisiac." icon_state = "pinkkeg" - reagent_id = /datum/reagent/drug/aphrodisiac + reagent_id = "aphro" tank_volume = 150 /obj/structure/reagent_dispensers/keg/aphro/strong name = "keg of strong aphrodisiac" desc = "A keg of strong and addictive aphrodisiac." - reagent_id = /datum/reagent/drug/aphrodisiacplus + reagent_id = "aphro+" tank_volume = 120 /obj/structure/reagent_dispensers/keg/milk name = "keg of milk" desc = "It's not quite what you were hoping for." icon_state = "whitekeg" - reagent_id = /datum/reagent/consumable/milk + reagent_id = "milk" /obj/structure/reagent_dispensers/keg/semen name = "keg of semen" desc = "Dear lord, where did this even come from?" icon_state = "whitekeg" - reagent_id = /datum/reagent/consumable/semen + reagent_id = "semen" /obj/structure/reagent_dispensers/keg/gargle name = "keg of pan galactic gargleblaster" desc = "A keg of... wow that's a long name." icon_state = "bluekeg" - reagent_id = /datum/reagent/consumable/ethanol/gargle_blaster + reagent_id = "gargleblaster" tank_volume = 100 \ No newline at end of file diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 46ddb1e2ed..7701e58616 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -31,7 +31,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) /obj/machinery/conveyor/inverted/Initialize(mapload) . = ..() if(mapload && !(dir in GLOB.diagonals)) - log_mapping("[src] at [AREACOORD(src)] spawned without using a diagonal dir. Please replace with a normal version.") + log_game("### MAPPING ERROR: [src] at [AREACOORD(src)] spawned without using a diagonal dir. Please replace with a normal version.") // Auto conveyour is always on unless unpowered diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 516ae5bddd..cdb9ea4120 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -37,9 +37,9 @@ other types of metals and chemistry for reagents). var/list/materials = list() //List of materials. Format: "id" = amount. var/construction_time //Amount of time required for building the object var/build_path = null //The file path of the object that gets created - var/list/make_reagents = list() //Reagents produced. Format: type = amount. Currently only supported by the biogenerator. + var/list/make_reagents = list() //Reagents produced. Format: "id" = amount. Currently only supported by the biogenerator. var/list/category = null //Primarily used for Mech Fabricators, but can be used for anything - var/list/reagents_list = list() //List of reagents. Format: type = amount. + var/list/reagents_list = list() //List of reagents. Format: "id" = amount. var/maxstack = 1 var/lathe_time_factor = 1 //How many times faster than normal is this to build on the protolathe var/dangerous_construction = FALSE //notify and log for admin investigations if this is printed. diff --git a/code/modules/research/designs/autobotter_designs.dm b/code/modules/research/designs/autobotter_designs.dm index d2a38a29f9..7b56beaf77 100644 --- a/code/modules/research/designs/autobotter_designs.dm +++ b/code/modules/research/designs/autobotter_designs.dm @@ -151,97 +151,97 @@ name = "Export Design (Wine)" desc = "Allows for the blowing, and bottling of Wine bottles." id = "wine_export" - reagents_list = list(/datum/reagent/consumable/ethanol/wine = 100) + reagents_list = list("wine" = 100) build_path = /obj/item/export/bottle/wine /datum/design/bottle/export/rum name = "Export Design (Rum)" desc = "Allows for the blowing, and bottling of Rum bottles." id = "rum_export" - reagents_list = list(/datum/reagent/consumable/ethanol/rum = 100) + reagents_list = list("rum" = 100) build_path = /obj/item/export/bottle/rum /datum/design/bottle/export/gin name = "Export Design (Gin)" desc = "Allows for the blowing, and bottling of Gin bottles." id = "gin_export" - reagents_list = list(/datum/reagent/consumable/ethanol/gin = 100) + reagents_list = list("gin" = 100) build_path = /obj/item/export/bottle/gin /datum/design/bottle/export/whiskey name = "Export Design (Whiskey)" desc = "Allows for the blowing, and bottling of Whiskey bottles." id = "whiskey_export" - reagents_list = list(/datum/reagent/consumable/ethanol/whiskey = 100) + reagents_list = list("whiskey" = 100) build_path = /obj/item/export/bottle/whiskey /datum/design/bottle/export/vodka name = "Export Design (Vodka)" desc = "Allows for the blowing, and bottling of 99% Vodka bottles." id = "vodka_export" - reagents_list = list(/datum/reagent/consumable/ethanol/vodka = 99, /datum/reagent/water = 1) + reagents_list = list("vodka" = 99, "water" = 1) build_path = /obj/item/export/bottle/vodka /datum/design/bottle/export/tequila name = "Export Design (Tequila)" desc = "Allows for the blowing, and bottling of Tequila bottles." id = "tequila_export" - reagents_list = list(/datum/reagent/consumable/ethanol/tequila = 80, /datum/reagent/consumable/lemonjuice = 20) + reagents_list = list("tequila" = 80, "lemon_juice" = 20) build_path = /obj/item/export/bottle/tequila /datum/design/bottle/export/patron name = "Export Design (Patron)" desc = "Allows for the blowing, and bottling of Patron bottles." id = "patron_export" - reagents_list = list(/datum/reagent/consumable/ethanol/patron = 100) + reagents_list = list("patron" = 100) build_path = /obj/item/export/bottle/patron /datum/design/bottle/export/kahlua name = "Export Design (Kahlua)" desc = "Allows for the blowing, and bottling of Kahlua bottles." id = "kahlua_export" - reagents_list = list(/datum/reagent/consumable/ethanol/kahlua = 100) + reagents_list = list("kahlua" = 100) build_path = /obj/item/export/bottle/kahlua /datum/design/bottle/export/sake name = "Export Design (Sake)" desc = "Allows for the blowing, and bottling of Sake bottles." id = "sake_export" - reagents_list = list(/datum/reagent/consumable/ethanol/sake = 80, /datum/reagent/consumable/rice = 10, /datum/reagent/consumable/sugar = 10) + reagents_list = list("sake" = 80, "rice" = 10, "sugar" = 10) build_path = /obj/item/export/bottle/sake /datum/design/bottle/export/vermouth name = "Export Design (Vermouth)" desc = "Allows for the blowing, and bottling of Vermouth bottles." id = "vermouth_export" - reagents_list = list(/datum/reagent/consumable/ethanol/vermouth = 100) + reagents_list = list("vermouth" = 100) build_path = /obj/item/export/bottle/vermouth /datum/design/bottle/export/goldschlager name = "Export Design (Goldschlager)" desc = "Allows for the blowing, and bottling of Goldschlager bottles." id = "goldschlager_export" - reagents_list = list(/datum/reagent/consumable/ethanol/goldschlager = 100) + reagents_list = list("goldschlager" = 100) build_path = /obj/item/export/bottle/goldschlager /datum/design/bottle/export/hcider name = "Export Design (Cider)" desc = "Allows for the blowing, and bottling of Cider bottles." id = "hcider_export" - reagents_list = list(/datum/reagent/consumable/ethanol/hcider = 30, /datum/reagent/water = 20) + reagents_list = list("hcider" = 30, "water" = 20) build_path = /obj/item/export/bottle/hcider /datum/design/bottle/export/cognac name = "Export Design (Cognac)" desc = "Allows for the blowing, and bottling of Cognac bottles." id = "cognac_export" - reagents_list = list(/datum/reagent/consumable/ethanol/cognac = 100) + reagents_list = list("cognac" = 100) build_path = /obj/item/export/bottle/cognac /datum/design/bottle/export/absinthe name = "Export Design (Absinthe)" desc = "Allows for the blowing, and bottling of Absinthe bottles." - reagents_list = list(/datum/reagent/consumable/ethanol/absinthe = 100) + reagents_list = list("absinthe" = 100) id = "absinthe_export" build_path = /obj/item/export/bottle/absinthe @@ -249,49 +249,49 @@ name = "Export Design (Grappa)" desc = "Allows for the blowing, and bottling of Grappa bottles." id = "grappa_export" - reagents_list = list(/datum/reagent/consumable/ethanol/grappa = 100) + reagents_list = list("grappa" = 100) build_path = /obj/item/export/bottle/grappa /datum/design/bottle/export/fernet name = "Export Design (Fernet)" desc = "Allows for the blowing, and bottling of Fernet bottles." id = "fernet_export" - reagents_list = list(/datum/reagent/consumable/ethanol/fernet = 100) + reagents_list = list("fernet" = 100) build_path = /obj/item/export/bottle/fernet /datum/design/bottle/export/applejack name = "Export Design (Applejack)" desc = "Allows for the blowing, and bottling of Applejack bottles." id = "applejack_export" - reagents_list = list(/datum/reagent/consumable/ethanol/applejack = 50, /datum/reagent/consumable/ethanol/gin = 10) + reagents_list = list("applejack" = 50, "gin" = 10) build_path = /obj/item/export/bottle/applejack /datum/design/bottle/export/champagne name = "Export Design (Champagne)" desc = "Allows for the blowing, and bottling of Champagne bottles." id = "champagne_export" - reagents_list = list(/datum/reagent/consumable/ethanol/champagne = 90, /datum/reagent/carbondioxide = 10) + reagents_list = list("champagne" = 90, "co2" = 10) build_path = /obj/item/export/bottle/champagne /datum/design/bottle/export/blazaam name = "Export Design (Blazaam)" desc = "Allows for the blowing, and bottling of Blazaam bottles." id = "blazaam_export" - reagents_list = list(/datum/reagent/consumable/ethanol/blazaam = 80, /datum/reagent/water/holywater = 20) + reagents_list = list("blazaam" = 80, "holywater" = 20) build_path = /obj/item/export/bottle/blazaam /datum/design/bottle/export/trappist name = "Export Design (Trappist)" desc = "Allows for the blowing, and bottling of Trappist bottles." id = "trappist_export" - reagents_list = list(/datum/reagent/consumable/ethanol/trappist = 100) + reagents_list = list("trappist" = 100) build_path = /obj/item/export/bottle/trappist /datum/design/bottle/export/grenadine name = "Export Design (Grenadine)" desc = "Allows for the blowing, and bottling of Grenadine bottles." id = "grenadine_export" - reagents_list = list(/datum/reagent/consumable/grenadine = 100) + reagents_list = list("grenadine" = 100) build_path = /obj/item/export/bottle/grenadine /datum/design/bottle/export/minikeg @@ -299,7 +299,7 @@ desc = "Allows for the fabication, and bottling of Minikeg of craft beer." id = "minikeg" category = list("Beers") - reagents_list = list(/datum/reagent/consumable/ethanol/beer/light = 100) + reagents_list = list("light_beer" = 100) build_path = /obj/item/export/bottle/minikeg /datum/design/bottle/export/blooddrop @@ -307,7 +307,7 @@ desc = "Allows for the blowing, and bottling of Blooddrop bottles." id = "blooddrop" category = list("Wines") - reagents_list = list(/datum/reagent/consumable/ethanol/champagne = 30, /datum/reagent/carbondioxide = 30, /datum/reagent/consumable/ethanol/wine = 10, /datum/reagent/consumable/grapejuice = 30) + reagents_list = list("champagne" = 30, "co2" = 30, "wine" = 10, "grape_juice" = 30) build_path = /obj/item/export/bottle/blooddrop /datum/design/bottle/export/slim_gold @@ -315,7 +315,7 @@ desc = "Allows for the blowing, and bottling of Slim Gold bottles." id = "slim_gold" category = list("Beers") - reagents_list = list(/datum/reagent/gold = 10, /datum/reagent/carbondioxide = 10, /datum/reagent/consumable/ethanol/rum = 30, /datum/reagent/consumable/ethanol/beer = 40) + reagents_list = list("gold" = 10, "co2" = 10, "rum" = 30, "beer" = 40) build_path = /obj/item/export/bottle/slim_gold /datum/design/bottle/export/white_bloodmoon @@ -323,13 +323,13 @@ desc = "Allows for the blowing, and bottling of White Bloodmoon bottles." id = "white_bloodmoon" category = list("Wines") - reagents_list = list(/datum/reagent/medicine/synthflesh = 50, /datum/reagent/blood = 50, /datum/reagent/liquidgibs = 10) + reagents_list = list("synthflesh" = 50, "blood" = 50, "gib" = 10) build_path = /obj/item/export/bottle/white_bloodmoon /datum/design/bottle/export/greenroad name = "Export Design (Greenroad)" desc = "Allows for the blowing, and bottling of Greenroad bottles." id = "greenroad" - reagents_list = list(/datum/reagent/consumable/vitfro = 50, /datum/reagent/consumable/ethanol/rum = 50, /datum/reagent/ash = 10) + reagents_list = list("vitfro" = 50, "rum" = 50, "ash" = 10) category = list("Beers") build_path = /obj/item/export/bottle/greenroad \ No newline at end of file diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm index dd55697bee..05e4c667f6 100644 --- a/code/modules/research/designs/biogenerator_designs.dm +++ b/code/modules/research/designs/biogenerator_designs.dm @@ -7,7 +7,7 @@ id = "milk" build_type = BIOGENERATOR materials = list(MAT_BIOMASS = 20) - make_reagents = list(/datum/reagent/consumable/milk = 10) + make_reagents = list("milk" = 10) category = list("initial","Food") /datum/design/cream @@ -15,7 +15,7 @@ id = "cream" build_type = BIOGENERATOR materials = list(MAT_BIOMASS = 30) - make_reagents = list(/datum/reagent/consumable/cream = 10) + make_reagents = list("cream" = 10) category = list("initial","Food") /datum/design/milk_carton @@ -39,7 +39,7 @@ id = "black_pepper" build_type = BIOGENERATOR materials = list(MAT_BIOMASS = 25) - make_reagents = list(/datum/reagent/consumable/blackpepper = 10) + make_reagents = list("blackpepper" = 10) category = list("initial","Food") /datum/design/pepper_mill @@ -51,22 +51,6 @@ make_reagents = list() category = list("initial","Food") -/datum/design/enzyme - name = "10u Universal Enzyme" - id = "enzyme" - build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 30) - make_reagents = list("enzyme" = 10) - category = list("initial","Food") - -/datum/design/flour_sack - name = "Flour Sack" - id = "flour_sack" - build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 150) - build_path = /obj/item/reagent_containers/food/condiment/flour - category = list("initial","Food") - /datum/design/monkey_cube name = "Monkey Cube" id = "mcube" diff --git a/code/modules/research/designs/limbgrower_designs.dm b/code/modules/research/designs/limbgrower_designs.dm index d002c84c5f..dae59408c8 100644 --- a/code/modules/research/designs/limbgrower_designs.dm +++ b/code/modules/research/designs/limbgrower_designs.dm @@ -6,7 +6,7 @@ name = "Left Arm" id = "leftarm" build_type = LIMBGROWER - reagents_list = list(/datum/reagent/medicine/synthflesh = 25) + reagents_list = list("synthflesh" = 25) build_path = /obj/item/bodypart/l_arm category = list("initial","human","lizard","fly","insect","plasmaman","mammal","xeno") @@ -14,7 +14,7 @@ name = "Right Arm" id = "rightarm" build_type = LIMBGROWER - reagents_list = list(/datum/reagent/medicine/synthflesh = 25) + reagents_list = list("synthflesh" = 25) build_path = /obj/item/bodypart/r_arm category = list("initial","human","lizard","fly","insect","plasmaman","mammal","xeno") @@ -22,7 +22,7 @@ name = "Left Leg" id = "leftleg" build_type = LIMBGROWER - reagents_list = list(/datum/reagent/medicine/synthflesh = 25) + reagents_list = list("synthflesh" = 25) build_path = /obj/item/bodypart/l_leg category = list("initial","human","lizard","fly","insect","plasmaman","mammal","xeno") @@ -30,7 +30,7 @@ name = "Right Leg" id = "rightleg" build_type = LIMBGROWER - reagents_list = list(/datum/reagent/medicine/synthflesh = 25) + reagents_list = list("synthflesh" = 25) build_path = /obj/item/bodypart/r_leg category = list("initial","human","lizard","fly","insect","plasmaman","mammal","xeno") @@ -38,6 +38,6 @@ name = "Arm Blade" id = "armblade" build_type = LIMBGROWER - reagents_list = list(/datum/reagent/medicine/synthflesh = 75) + reagents_list = list("synthflesh" = 75) build_path = /obj/item/melee/synthetic_arm_blade category = list("other","emagged") \ No newline at end of file diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 5fab7705a8..113a6262c9 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -624,21 +624,12 @@ construction_time = 120 category = list("Cyborg Upgrade Modules") -/datum/design/borg_upgrade_advcutter - name = "Cyborg Upgrade (Advanced Plasma Cutter)" - id = "borg_upgrade_advcutter" +/datum/design/borg_upgrade_holding + name = "Cyborg Upgrade (Ore Satchel of Holding)" + id = "borg_upgrade_holding" build_type = MECHFAB - build_path = /obj/item/borg/upgrade/advcutter - materials = list(MAT_METAL=8000, MAT_PLASMA=2000, MAT_GOLD= 2000) - construction_time = 120 - category = list("Cyborg Upgrade Modules") - -/datum/design/borg_upgrade_premiumka - name = "Cyborg Upgrade (Premium Kinetic Accelerator)" - id = "borg_upgrade_premiumka" - build_type = MECHFAB - build_path = /obj/item/borg/upgrade/premiumka - materials = list(MAT_METAL=8000, MAT_GLASS=4000, MAT_TITANIUM=2000) + build_path = /obj/item/borg/upgrade/soh + materials = list(MAT_METAL = 10000, MAT_GOLD = 250, MAT_URANIUM = 500) construction_time = 120 category = list("Cyborg Upgrade Modules") diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index f2ded3a57b..e70362553c 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -152,16 +152,6 @@ category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL -/datum/design/telescopiciv - name = "Telescopic IV Drip" - desc = "An IV drip with an advanced infusion pump that can both drain blood into and inject liquids from attached containers. Blood packs are processed at an accelerated rate. This one is telescopic, and can be picked up and put down." - id = "telescopiciv" - build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 3500, MAT_SILVER = 1000) - build_path = /obj/item/tele_iv - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - /datum/design/holobarrier_med name = "PENLITE holobarrier projector" desc = "PENLITE holobarriers, a device that halts individuals with malicious diseases." diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm index 302ac345b7..5f7648b245 100644 --- a/code/modules/research/designs/misc_designs.dm +++ b/code/modules/research/designs/misc_designs.dm @@ -364,16 +364,6 @@ category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING -/datum/design/holosignfirelock - name = "ATMOS Holofirelock Projector" - desc = "A holographic projector that creates holographic barriers that prevent changes in temperature conditions." - id = "holosignfirelock" - build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_SILVER = 1000) - build_path = /obj/item/holosign_creator/firelock - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING - /datum/design/forcefield_projector name = "Forcefield Projector" desc = "A device which can project temporary forcefields to seal off an area." diff --git a/code/modules/research/designs/nanite_designs.dm b/code/modules/research/designs/nanite_designs.dm index 09fe1d9c9b..177d7073a1 100644 --- a/code/modules/research/designs/nanite_designs.dm +++ b/code/modules/research/designs/nanite_designs.dm @@ -25,20 +25,6 @@ program_type = /datum/nanite_program/viral category = list("Utility Nanites") -/datum/design/nanites/research - name = "Distributed Computing" - desc = "The nanites aid the research servers by performing a portion of its calculations, increasing research point generation." - id = "research_nanites" - program_type = /datum/nanite_program/research - category = list("Utility Nanites") - -/datum/design/nanites/researchplus - name = "Neural Network" - desc = "The nanites link the host's brains together forming a neural research network, that becomes more efficient with the amount of total hosts. Can be overloaded to increase research output." - id = "researchplus_nanites" - program_type = /datum/nanite_program/researchplus - category = list("Utility Nanites") - /datum/design/nanites/monitoring name = "Monitoring" desc = "The nanites monitor the host's vitals and location, sending them to the suit sensor network." @@ -53,13 +39,6 @@ program_type = /datum/nanite_program/triggered/self_scan category = list("Utility Nanites") -/datum/design/nanites/dermal_button - name = "Dermal Button" - desc = "Displays a button on the host's skin, which can be used to send a signal to the nanites." - id = "dermal_button_nanites" - program_type = /datum/nanite_program/dermal_button - category = list("Utility Nanites") - /datum/design/nanites/stealth name = "Stealth" desc = "The nanites hide their activity and programming from superficial scans." @@ -67,15 +46,6 @@ program_type = /datum/nanite_program/stealth category = list("Utility Nanites") - -/datum/design/nanites/reduced_diagnostics - name = "Reduced Diagnostics" - desc = "Disables some high-cost diagnostics in the nanites, making them unable to communicate their program list to portable scanners. \ - Doing so saves some power, slightly increasing their replication speed." - id = "red_diag_nanites" - program_type = /datum/nanite_program/reduced_diagnostics - category = list("Utility Nanites") - /datum/design/nanites/access name = "Subdermal ID" desc = "The nanites store the host's ID access rights in a subdermal magnetic strip. Updates when triggered, copying the host's current access." diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index e6f4670f87..fde795d87c 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -237,7 +237,7 @@ id = "decloner" build_type = PROTOLATHE materials = list(MAT_GOLD = 5000,MAT_URANIUM = 10000) - reagents_list = list(/datum/reagent/toxin/mutagen = 40) + reagents_list = list("mutagen" = 40) build_path = /obj/item/gun/energy/decloner category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -268,7 +268,7 @@ id = "flora_gun" build_type = PROTOLATHE materials = list(MAT_METAL = 2000, MAT_GLASS = 500) - reagents_list = list(/datum/reagent/radium = 20) + reagents_list = list("radium" = 20) build_path = /obj/item/gun/energy/floragun category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SERVICE | DEPARTMENTAL_FLAG_SCIENCE diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index b25ee9bb2d..05c4a7cd93 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -271,7 +271,7 @@ if(!T.density) if(prob(EFFECT_PROB_VERYHIGH) && !(locate(/obj/effect/decal/cleanable/greenglow) in T)) var/obj/effect/decal/cleanable/reagentdecal = new/obj/effect/decal/cleanable/greenglow(T) - reagentdecal.reagents.add_reagent(/datum/reagent/radium, 7) + reagentdecal.reagents.add_reagent("radium", 7) else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) var/savedName = "[exp_on]" ejectItem(TRUE) @@ -291,9 +291,7 @@ new /obj/item/stack/sheet/mineral/plasma(get_turf(pick(oview(1,src)))) else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) visible_message("[src] destroys [exp_on], leaking dangerous gas!") - chosenchem = pick(/datum/reagent/carbon,/datum/reagent/radium,/datum/reagent/toxin, - /datum/reagent/consumable/condensedcapsaicin,/datum/reagent/drug/mushroomhallucinogen, - /datum/reagent/drug/space_drugs,/datum/reagent/consumable/ethanol,/datum/reagent/consumable/ethanol/beepsky_smash) + chosenchem = pick("carbon","radium","toxin","condensedcapsaicin","mushroomhallucinogen","space_drugs","ethanol","beepskysmash") var/datum/reagents/R = new/datum/reagents(50) R.my_atom = src R.add_reagent(chosenchem , 50) @@ -306,7 +304,7 @@ ejectItem(TRUE) else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) visible_message("[src]'s chemical chamber has sprung a leak!") - chosenchem = pick(/datum/reagent/mutationtoxin,/datum/reagent/nanomachines,/datum/reagent/toxin/acid) + chosenchem = pick("mutationtoxin","nanomachines","sacid") var/datum/reagents/R = new/datum/reagents(50) R.my_atom = src R.add_reagent(chosenchem , 50) @@ -333,7 +331,7 @@ visible_message("[src]'s emergency coolant system gives off a small ding!") playsound(src, 'sound/machines/ding.ogg', 50, 1) var/obj/item/reagent_containers/food/drinks/coffee/C = new /obj/item/reagent_containers/food/drinks/coffee(get_turf(pick(oview(1,src)))) - chosenchem = pick(/datum/reagent/toxin/plasma,/datum/reagent/consumable/capsaicin,/datum/reagent/consumable/ethanol) + chosenchem = pick("plasma","capsaicin","ethanol") C.reagents.remove_any(25) C.reagents.add_reagent(chosenchem , 50) C.name = "Cup of Suspicious Liquid" @@ -382,7 +380,7 @@ visible_message("[src]'s emergency coolant system gives off a small ding!") var/obj/item/reagent_containers/food/drinks/coffee/C = new /obj/item/reagent_containers/food/drinks/coffee(get_turf(pick(oview(1,src)))) playsound(src, 'sound/machines/ding.ogg', 50, 1) //Ding! Your death coffee is ready! - chosenchem = pick(/datum/reagent/uranium,/datum/reagent/consumable/frostoil,/datum/reagent/medicine/ephedrine) + chosenchem = pick("uranium","frostoil","ephedrine") C.reagents.remove_any(25) C.reagents.add_reagent(chosenchem , 50) C.name = "Cup of Suspicious Liquid" @@ -392,7 +390,7 @@ visible_message("[src] malfunctions, shattering [exp_on] and releasing a dangerous cloud of coolant!") var/datum/reagents/R = new/datum/reagents(50) R.my_atom = src - R.add_reagent(/datum/reagent/consumable/frostoil, 50) + R.add_reagent("frostoil" , 50) investigate_log("Experimentor has released frostoil gas.", INVESTIGATE_EXPERIMENTOR) var/datum/effect_system/smoke_spread/chem/smoke = new smoke.set_up(R, 0, src, silent = TRUE) diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm index 9ba45fb1a3..78f636d948 100644 --- a/code/modules/research/machinery/_production.dm +++ b/code/modules/research/machinery/_production.dm @@ -222,7 +222,7 @@ l += "

      Chemical Storage:

      " for(var/datum/reagent/R in reagents.reagent_list) l += "[R.name]: [R.volume]" - l += "Purge" + l += "Purge" l += "" return l diff --git a/code/modules/research/nanites/nanite_programs/buffing.dm b/code/modules/research/nanites/nanite_programs/buffing.dm index dde61ec378..be12d06ede 100644 --- a/code/modules/research/nanites/nanite_programs/buffing.dm +++ b/code/modules/research/nanites/nanite_programs/buffing.dm @@ -35,7 +35,7 @@ host_mob.adjustStaminaLoss(-10) //stimulants give stamina heal now host_mob.lying = 0 host_mob.update_canmove() - host_mob.reagents.add_reagent(/datum/reagent/medicine/stimulants, 1.5) + host_mob.reagents.add_reagent("stimulants", 1.5) /datum/nanite_program/hardening name = "Dermal Hardening" diff --git a/code/modules/research/nanites/nanite_programs/healing.dm b/code/modules/research/nanites/nanite_programs/healing.dm index ad48b64baa..e2e1661ab7 100644 --- a/code/modules/research/nanites/nanite_programs/healing.dm +++ b/code/modules/research/nanites/nanite_programs/healing.dm @@ -61,10 +61,10 @@ /datum/nanite_program/purging/active_effect() host_mob.adjustToxLoss(-1) for(var/datum/reagent/R in host_mob.reagents.reagent_list) - if(R.type == /datum/reagent/fermi/nanite_b_gone) + if(R.id == "nanite_b_gone") host_mob.adjustToxLoss(4) continue - host_mob.reagents.remove_reagent(R.type,1) + host_mob.reagents.remove_reagent(R.id,1) /datum/nanite_program/brain_heal name = "Neural Regeneration" @@ -164,7 +164,7 @@ /datum/nanite_program/purging_advanced/active_effect() host_mob.adjustToxLoss(-1, forced = TRUE) for(var/datum/reagent/toxin/R in host_mob.reagents.reagent_list) - host_mob.reagents.remove_reagent(R.type,1) + host_mob.reagents.remove_reagent(R.id,1) /datum/nanite_program/regenerative_advanced name = "Bio-Reconstruction" diff --git a/code/modules/research/nanites/nanite_programs/utility.dm b/code/modules/research/nanites/nanite_programs/utility.dm index 3db482d989..a269d01ac0 100644 --- a/code/modules/research/nanites/nanite_programs/utility.dm +++ b/code/modules/research/nanites/nanite_programs/utility.dm @@ -130,7 +130,7 @@ /datum/nanite_program/stealth name = "Stealth" - desc = "The nanites mask their activity from superficial scans, becoming undetectable by HUDs and non-specialized scanners." + desc = "The nanites hide their activity and programming from superficial scans." rogue_types = list(/datum/nanite_program/toxic) use_rate = 0.2 @@ -142,22 +142,6 @@ . = ..() nanites.stealth = FALSE -/datum/nanite_program/reduced_diagnostics - name = "Reduced Diagnostics" - desc = "Disables some high-cost diagnostics in the nanites, making them unable to communicate their program list to portable scanners. \ - Doing so saves some power, slightly increasing their replication speed." - rogue_types = list(/datum/nanite_program/toxic) - use_rate = -0.1 - -/datum/nanite_program/reduced_diagnostics/enable_passive_effect() - . = ..() - nanites.diagnostics = FALSE - -/datum/nanite_program/reduced_diagnostics/disable_passive_effect() - . = ..() - nanites.diagnostics = TRUE - - /datum/nanite_program/relay name = "Relay" desc = "The nanites receive and relay long-range nanite signals." @@ -287,138 +271,3 @@ if(fault == src) return fault.software_error() - -/datum/nanite_program/dermal_button - name = "Dermal Button" - desc = "Displays a button on the host's skin, which can be used to send a signal to the nanites." - extra_settings = list("Sent Code","Button Name","Icon","Color") - unique = FALSE - var/datum/action/innate/nanite_button/button - var/button_name = "Button" - var/icon = "power" - var/color = "green" - var/sent_code = 0 - -/datum/nanite_program/dermal_button/set_extra_setting(user, setting) - if(setting == "Sent Code") - var/new_code = input(user, "Set the sent code (1-9999):", name, null) as null|num - if(isnull(new_code)) - return - sent_code = CLAMP(round(new_code, 1), 1, 9999) - if(setting == "Button Name") - var/new_button_name = stripped_input(user, "Choose the name for the button.", "Button Name", button_name, MAX_NAME_LEN) - if(!new_button_name) - return - button_name = new_button_name - if(setting == "Icon") - var/new_icon = input("Select the icon to display on the button:", name) as null|anything in list("one","two","three","four","five","plus","minus","power") - if(!new_icon) - return - icon = new_icon - if(setting == "Color") - var/new_color = input("Select the color of the button's icon:", name) as null|anything in list("green","red","yellow","blue") - if(!new_color) - return - color = new_color - -/datum/nanite_program/dermal_button/get_extra_setting(setting) - if(setting == "Sent Code") - return sent_code - if(setting == "Button Name") - return button_name - if(setting == "Icon") - return capitalize(icon) - if(setting == "Color") - return capitalize(color) - -/datum/nanite_program/dermal_button/copy_extra_settings_to(datum/nanite_program/dermal_button/target) - target.sent_code = sent_code - target.button_name = button_name - target.icon = icon - target.color = color - -/datum/nanite_program/dermal_button/enable_passive_effect() - . = ..() - if(!button) - button = new(src, button_name, icon, color) - button.target = host_mob - button.Grant(host_mob) - -/datum/nanite_program/dermal_button/disable_passive_effect() - . = ..() - if(button) - button.Remove(host_mob) - -/datum/nanite_program/dermal_button/on_mob_remove() - . = ..() - qdel(button) - -/datum/nanite_program/dermal_button/proc/press() - if(activated) - host_mob.visible_message("[host_mob] presses a button on [host_mob.p_their()] forearm.", - "You press the nanite button on your forearm.", null, 2) - SEND_SIGNAL(host_mob, COMSIG_NANITE_SIGNAL, sent_code, "a [name] program") - -/datum/action/innate/nanite_button - name = "Button" - icon_icon = 'icons/mob/actions/actions_items.dmi' - check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUN|AB_CHECK_CONSCIOUS - button_icon_state = "power_green" - var/datum/nanite_program/dermal_button/program - -/datum/action/innate/nanite_button/New(datum/nanite_program/dermal_button/_program, _name, _icon, _color) - ..() - program = _program - name = _name - button_icon_state = "[_icon]_[_color]" - -/datum/action/innate/nanite_button/Activate() - program.press() - -/datum/nanite_program/research - name = "Distributed Computing" - desc = "The nanites aid the research servers by performing a portion of its calculations, increasing research point generation." - use_rate = 0.2 - rogue_types = list(/datum/nanite_program/toxic) - -/datum/nanite_program/research/active_effect() - if(!iscarbon(host_mob)) - return - var/points = 1 - if(!host_mob.client) //less brainpower - points *= 0.25 - SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = points)) - -/datum/nanite_program/researchplus - name = "Neural Network" - desc = "The nanites link the host's brains together forming a neural research network, that becomes more efficient with the amount of total hosts." - use_rate = 0.3 - rogue_types = list(/datum/nanite_program/brain_decay) - -/datum/nanite_program/researchplus/enable_passive_effect() - . = ..() - if(!iscarbon(host_mob)) - return - if(host_mob.client) - SSnanites.neural_network_count++ - else - SSnanites.neural_network_count += 0.25 - -/datum/nanite_program/researchplus/disable_passive_effect() - . = ..() - if(!iscarbon(host_mob)) - return - if(host_mob.client) - SSnanites.neural_network_count-- - else - SSnanites.neural_network_count -= 0.25 - -/datum/nanite_program/researchplus/active_effect() - if(!iscarbon(host_mob)) - return - var/mob/living/carbon/C = host_mob - var/points = round(SSnanites.neural_network_count / 12, 0.1) - if(!C.client) //less brainpower - points *= 0.25 - SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = points)) - diff --git a/code/modules/research/nanites/program_disks.dm b/code/modules/research/nanites/program_disks.dm index f780f40932..86b7803fc9 100644 --- a/code/modules/research/nanites/program_disks.dm +++ b/code/modules/research/nanites/program_disks.dm @@ -130,16 +130,4 @@ program_type = /datum/nanite_program/pacifying /obj/item/disk/nanite_program/stun - program_type = /datum/nanite_program/triggered/stun - -/obj/item/disk/nanite_program/dermal_button - program_type = /datum/nanite_program/dermal_button - -/obj/item/disk/nanite_program/research - program_type = /datum/nanite_program/research - -/obj/item/disk/nanite_program/researchplus - program_type = /datum/nanite_program/researchplus - -/obj/item/disk/nanite_program/reduced_diagnostics - program_type = /datum/nanite_program/reduced_diagnostics \ No newline at end of file + program_type = /datum/nanite_program/triggered/stun \ No newline at end of file diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 6cd54dd941..38a5282aef 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -394,7 +394,7 @@ Nothing else in the console has ID requirements. l += "

      Chemical Storage:

      " for(var/datum/reagent/R in linked_lathe.reagents.reagent_list) l += "[R.name]: [R.volume]" - l += "Purge" + l += "Purge" l += "" return l @@ -497,7 +497,7 @@ Nothing else in the console has ID requirements. l += "

      Chemical Storage:

      " for(var/datum/reagent/R in linked_imprinter.reagents.reagent_list) l += "[R.name]: [R.volume]" - l += "Purge" + l += "Purge" return l /obj/machinery/computer/rdconsole/proc/ui_circuit_materials() //Legacy code! diff --git a/code/modules/research/stock_parts.dm b/code/modules/research/stock_parts.dm index e29cf28f34..12fe64463d 100644 --- a/code/modules/research/stock_parts.dm +++ b/code/modules/research/stock_parts.dm @@ -51,56 +51,6 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi alt_sound = 'sound/items/pshoom_2.ogg' component_type = /datum/component/storage/concrete/bluespace/rped -/obj/item/storage/part_replacer/bluespace/tier1 - -/obj/item/storage/part_replacer/bluespace/tier1/PopulateContents() - for(var/i in 1 to 10) - new /obj/item/stock_parts/capacitor(src) - new /obj/item/stock_parts/scanning_module(src) - new /obj/item/stock_parts/manipulator(src) - new /obj/item/stock_parts/micro_laser(src) - new /obj/item/stock_parts/matter_bin(src) - -/obj/item/storage/part_replacer/bluespace/tier2 - -/obj/item/storage/part_replacer/bluespace/tier2/PopulateContents() - for(var/i in 1 to 10) - new /obj/item/stock_parts/capacitor/adv(src) - new /obj/item/stock_parts/scanning_module/adv(src) - new /obj/item/stock_parts/manipulator/nano(src) - new /obj/item/stock_parts/micro_laser/high(src) - new /obj/item/stock_parts/matter_bin/adv(src) - -/obj/item/storage/part_replacer/bluespace/tier3 - -/obj/item/storage/part_replacer/bluespace/tier3/PopulateContents() - for(var/i in 1 to 10) - new /obj/item/stock_parts/capacitor/super(src) - new /obj/item/stock_parts/scanning_module/phasic(src) - new /obj/item/stock_parts/manipulator/pico(src) - new /obj/item/stock_parts/micro_laser/ultra(src) - new /obj/item/stock_parts/matter_bin/super(src) - -/obj/item/storage/part_replacer/bluespace/tier4 - -/obj/item/storage/part_replacer/bluespace/tier4/PopulateContents() - for(var/i in 1 to 10) - new /obj/item/stock_parts/capacitor/quadratic(src) - new /obj/item/stock_parts/scanning_module/triphasic(src) - new /obj/item/stock_parts/manipulator/femto(src) - new /obj/item/stock_parts/micro_laser/quadultra(src) - new /obj/item/stock_parts/matter_bin/bluespace(src) - -/obj/item/storage/part_replacer/cargo //used in a cargo crate - -/obj/item/storage/part_replacer/cargo/PopulateContents() - for(var/i in 1 to 10) - new /obj/item/stock_parts/capacitor(src) - new /obj/item/stock_parts/scanning_module(src) - new /obj/item/stock_parts/manipulator(src) - new /obj/item/stock_parts/micro_laser(src) - new /obj/item/stock_parts/matter_bin(src) - /obj/item/storage/part_replacer/cyborg icon_state = "borgrped" diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index bb6d233145..6877ba71f6 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -71,7 +71,7 @@ display_name = "Biological Technology" description = "What makes us tick." //the MC, silly! prereq_ids = list("base") - design_ids = list("medicalkit", "chem_heater", "chem_master", "chem_dispenser", "sleeper", "vr_sleeper", "pandemic", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer", "blood_bag", "bloodbankgen", "telescopiciv") + design_ids = list("medicalkit", "chem_heater", "chem_master", "chem_dispenser", "sleeper", "vr_sleeper", "pandemic", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer", "blood_bag", "bloodbankgen") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -365,7 +365,7 @@ display_name = "Advanced Robotics Research" description = "It can even do the dishes!" prereq_ids = list("robotics") - design_ids = list("borg_upgrade_diamonddrill", "borg_upgrade_advancedmop", "borg_upgrade_advcutter", "borg_upgrade_premiumka") + design_ids = list("borg_upgrade_diamonddrill", "borg_upgrade_advancedmop") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3000) export_price = 5000 @@ -391,7 +391,7 @@ display_name = "Cyborg Upgrades: Utility" description = "Utility upgrades for cyborgs." prereq_ids = list("engineering", "robotics") - design_ids = list("borg_upgrade_lavaproof", "borg_upgrade_thrusters", "borg_upgrade_selfrepair", "borg_upgrade_expand", "borg_upgrade_rped") + design_ids = list("borg_upgrade_holding", "borg_upgrade_lavaproof", "borg_upgrade_thrusters", "borg_upgrade_selfrepair", "borg_upgrade_expand", "borg_upgrade_rped") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000) export_price = 5000 @@ -430,7 +430,7 @@ display_name = "Electromagnetic Theory" description = "Study into usage of frequencies in the electromagnetic spectrum." prereq_ids = list("base") - design_ids = list("holosign", "holosignsec", "holosignengi", "holosignatmos", "holosignfirelock", "inducer", "tray_goggles", "holopad") + design_ids = list("holosign", "holosignsec", "holosignengi", "holosignatmos", "inducer", "tray_goggles", "holopad") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -960,7 +960,7 @@ prereq_ids = list("datatheory","robotics") design_ids = list("nanite_disk","nanite_remote","nanite_scanner",\ "nanite_chamber","public_nanite_chamber","nanite_chamber_control","nanite_programmer","nanite_program_hub","nanite_cloud_control",\ - "relay_nanites", "monitoring_nanites", "access_nanites", "repairing_nanites","sensor_nanite_volume", "repeater_nanites", "relay_repeater_nanites","red_diag_nanites") + "relay_nanites", "monitoring_nanites", "access_nanites", "repairing_nanites","sensor_nanite_volume", "repeater_nanites", "relay_repeater_nanites") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -969,7 +969,7 @@ display_name = "Smart Nanite Programming" description = "Nanite programs that require nanites to perform complex actions, act independently, roam or seek targets." prereq_ids = list("nanite_base","adv_robotics") - design_ids = list("purging_nanites", "research_nanites", "metabolic_nanites", "stealth_nanites", "memleak_nanites","sensor_voice_nanites", "voice_nanites") + design_ids = list("purging_nanites", "metabolic_nanites", "stealth_nanites", "memleak_nanites","sensor_voice_nanites", "voice_nanites") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000) export_price = 4000 @@ -978,7 +978,7 @@ display_name = "Mesh Nanite Programming" description = "Nanite programs that require static structures and membranes." prereq_ids = list("nanite_base","engineering") - design_ids = list("hardening_nanites", "dermal_button_nanites", "refractive_nanites", "cryo_nanites", "conductive_nanites", "shock_nanites", "emp_nanites", "temperature_nanites") + design_ids = list("hardening_nanites", "refractive_nanites", "cryo_nanites", "conductive_nanites", "shock_nanites", "emp_nanites", "temperature_nanites") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -1015,7 +1015,7 @@ display_name = "Harmonic Nanite Programming" description = "Nanite programs that require seamless integration between nanites and biology." prereq_ids = list("nanite_bio","nanite_smart","nanite_mesh") - design_ids = list("fakedeath_nanites","researchplus_nanites","aggressive_nanites","defib_nanites","regenerative_plus_nanites","brainheal_plus_nanites","purging_plus_nanites","adrenaline_nanites") + design_ids = list("fakedeath_nanites","aggressive_nanites","defib_nanites","regenerative_plus_nanites","brainheal_plus_nanites","purging_plus_nanites","adrenaline_nanites") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 4000) export_price = 8000 diff --git a/code/modules/research/xenobiology/crossbreeding/__corecross.dm b/code/modules/research/xenobiology/crossbreeding/__corecross.dm index 17a6b77bfe..1146f01f0b 100644 --- a/code/modules/research/xenobiology/crossbreeding/__corecross.dm +++ b/code/modules/research/xenobiology/crossbreeding/__corecross.dm @@ -114,19 +114,19 @@ To add a crossbreed: name = "blood extract" desc = "A sphere of liquid blood, somehow managing to stay together." color = "#FF0000" - list_reagents = list(/datum/reagent/blood = 50) + list_reagents = list("blood" = 50) /obj/item/slimecrossbeaker/pax //5u synthpax. name = "peace-inducing extract" desc = "A small blob of synthetic pax." color = "#FFCCCC" - list_reagents = list(/datum/reagent/pax/peaceborg = 5) + list_reagents = list("synthpax" = 5) /obj/item/slimecrossbeaker/omnizine //15u omnizine. name = "healing extract" desc = "A gelatinous extract of pure omnizine." color = "#FF00FF" - list_reagents = list(/datum/reagent/medicine/omnizine = 15) + list_reagents = list("omnizine" = 15) /obj/item/slimecrossbeaker/autoinjector //As with the above, but automatically injects whomever it is used on with contents. var/ignore_flags = FALSE @@ -160,7 +160,7 @@ To add a crossbreed: name = "mending solution" desc = "A strange glob of sweet-smelling semifluid, which seems to stick to skin rather easily." color = "#FF00FF" - list_reagents = list(/datum/reagent/medicine/regen_jelly = 20) + list_reagents = list("regen_jelly" = 20) /obj/item/slimecrossbeaker/autoinjector/slimejelly //Primarily for slimepeople, but you do you. self_use_only = TRUE @@ -168,13 +168,13 @@ To add a crossbreed: name = "slime jelly bubble" desc = "A sphere of slime jelly. It seems to stick to your skin, but avoids other surfaces." color = "#00FF00" - list_reagents = list(/datum/reagent/toxin/slimejelly = 50) + list_reagents = list("slimejelly" = 50) /obj/item/slimecrossbeaker/autoinjector/peaceandlove name = "peaceful distillation" desc = "A light pink gooey sphere. Simply touching it makes you a little dizzy." color = "#DDAAAA" - list_reagents = list(/datum/reagent/pax/peaceborg = 10, /datum/reagent/drug/space_drugs = 15) //Peace, dudes + list_reagents = list("synthpax" = 10, "space_drugs" = 15) //Peace, dudes /obj/item/slimecrossbeaker/autoinjector/peaceandlove/Initialize() . = ..() @@ -184,4 +184,4 @@ To add a crossbreed: name = "invigorating gel" desc = "A bubbling purple mixture, designed to heal and boost movement." color = "#FF00FF" - list_reagents = list(/datum/reagent/medicine/regen_jelly = 30, /datum/reagent/drug/methamphetamine = 9) + list_reagents = list("regen_jelly" = 30, "methamphetamine" = 9) diff --git a/code/modules/research/xenobiology/crossbreeding/_misc.dm b/code/modules/research/xenobiology/crossbreeding/_misc.dm index 4684352ef5..0099fe143d 100644 --- a/code/modules/research/xenobiology/crossbreeding/_misc.dm +++ b/code/modules/research/xenobiology/crossbreeding/_misc.dm @@ -50,7 +50,7 @@ filling_color = "#964B00" tastes = list("cardboard" = 3, "sadness" = 3) foodtype = null //Don't ask what went into them. You're better off not knowing. - list_reagents = list(/datum/reagent/consumable/nutriment/stabilized = 10, /datum/reagent/consumable/nutriment = 2) //Won't make you fat. Will make you question your sanity. + list_reagents = list("stabilizednutriment" = 10, "nutriment" = 2) //Won't make you fat. Will make you question your sanity. /obj/item/reagent_containers/food/snacks/rationpack/checkLiked(fraction, mob/M) //Nobody likes rationpacks. Nobody. if(last_check_time + 50 < world.time) diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm index 0838e70bfd..292aba6c05 100644 --- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm +++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm @@ -910,9 +910,9 @@ datum/status_effect/stabilized/blue/on_remove() /datum/status_effect/stabilized/lightpink/tick() owner.adjustStaminaLoss(-4.5) for(var/mob/living/carbon/human/H in range(1, get_turf(owner))) - if(H != owner && H.stat != DEAD && H.health <= 0 && !H.reagents.has_reagent(/datum/reagent/medicine/epinephrine)) + if(H != owner && H.stat != DEAD && H.health <= 0 && !H.reagents.has_reagent("epinephrine")) to_chat(owner, "[linked_extract] pulses in sync with [H]'s heartbeat, trying to keep [H.p_them()] alive.") - H.reagents.add_reagent(/datum/reagent/medicine/epinephrine,5) + H.reagents.add_reagent("epinephrine",5) return ..() /datum/status_effect/stabilized/lightpink/on_remove() diff --git a/code/modules/research/xenobiology/crossbreeding/burning.dm b/code/modules/research/xenobiology/crossbreeding/burning.dm index e5b30962ae..363331e12d 100644 --- a/code/modules/research/xenobiology/crossbreeding/burning.dm +++ b/code/modules/research/xenobiology/crossbreeding/burning.dm @@ -14,10 +14,10 @@ Burning extracts: create_reagents(10, INJECTABLE | DRAWABLE) /obj/item/slimecross/burning/attack_self(mob/user) - if(!reagents.has_reagent(/datum/reagent/toxin/plasma,10)) + if(!reagents.has_reagent("plasma",10)) to_chat(user, "This extract needs to be full of plasma to activate!") return - reagents.remove_reagent(/datum/reagent/toxin/plasma,10) + reagents.remove_reagent("plasma",10) to_chat(user, "You squeeze the extract, and it absorbs the plasma!") playsound(src, 'sound/effects/bubbles.ogg', 50, 1) playsound(src, 'sound/magic/fireball.ogg', 50, 1) @@ -44,7 +44,7 @@ Burning extracts: /obj/item/slimecross/burning/orange/do_effect(mob/user) user.visible_message("[src] boils over with a caustic gas!") var/datum/reagents/R = new/datum/reagents(100) - R.add_reagent(/datum/reagent/consumable/condensedcapsaicin, 100) + R.add_reagent("condensedcapsaicin", 100) var/datum/effect_system/smoke_spread/chem/smoke = new smoke.set_up(R, 7, get_turf(user)) @@ -113,8 +113,8 @@ Burning extracts: /obj/item/slimecross/burning/darkblue/do_effect(mob/user) user.visible_message("[src] releases a burst of chilling smoke!") var/datum/reagents/R = new/datum/reagents(100) - R.add_reagent(/datum/reagent/consumable/frostoil, 40) - user.reagents.add_reagent(/datum/reagent/medicine/cryoxadone,10) + R.add_reagent("frostoil", 40) + user.reagents.add_reagent("cryoxadone",10) var/datum/effect_system/smoke_spread/chem/smoke = new smoke.set_up(R, 7, get_turf(user)) smoke.start() @@ -131,7 +131,7 @@ Burning extracts: for(var/i = 0, i < amount, i++) var/path = get_random_food() var/obj/item/O = new path(pick(turfs)) - O.reagents.add_reagent(/datum/reagent/toxin/slimejelly, 5) //Oh god it burns + O.reagents.add_reagent("slimejelly",5) //Oh god it burns if(prob(50)) O.desc += " It smells strange..." user.visible_message("[src] produces a few pieces of food!") @@ -268,7 +268,7 @@ Burning extracts: /obj/item/slimecross/burning/lightpink/do_effect(mob/user) user.visible_message("[src] lets off a hypnotizing pink glow!") for(var/mob/living/carbon/C in view(7, get_turf(user))) - C.reagents.add_reagent(/datum/reagent/pax, 5) + C.reagents.add_reagent("pax",5) ..() /obj/item/slimecross/burning/adamantine diff --git a/code/modules/research/xenobiology/crossbreeding/charged.dm b/code/modules/research/xenobiology/crossbreeding/charged.dm index 75a15be9ce..7b5fe9e8b8 100644 --- a/code/modules/research/xenobiology/crossbreeding/charged.dm +++ b/code/modules/research/xenobiology/crossbreeding/charged.dm @@ -15,10 +15,10 @@ Charged extracts: create_reagents(10, INJECTABLE | DRAWABLE) /obj/item/slimecross/charged/attack_self(mob/user) - if(!reagents.has_reagent(/datum/reagent/toxin/plasma,10)) + if(!reagents.has_reagent("plasma",10)) to_chat(user, "This extract needs to be full of plasma to activate!") return - reagents.remove_reagent(/datum/reagent/toxin/plasma,10) + reagents.remove_reagent("plasma",10) to_chat(user, "You squeeze the extract, and it absorbs the plasma!") playsound(src, 'sound/effects/bubbles.ogg', 50, 1) playsound(src, 'sound/effects/light_flicker.ogg', 50, 1) diff --git a/code/modules/research/xenobiology/crossbreeding/chilling.dm b/code/modules/research/xenobiology/crossbreeding/chilling.dm index 1405bbad51..ff55a87dfa 100644 --- a/code/modules/research/xenobiology/crossbreeding/chilling.dm +++ b/code/modules/research/xenobiology/crossbreeding/chilling.dm @@ -14,10 +14,10 @@ Chilling extracts: create_reagents(10, INJECTABLE | DRAWABLE) /obj/item/slimecross/chilling/attack_self(mob/user) - if(!reagents.has_reagent(/datum/reagent/toxin/plasma,10)) + if(!reagents.has_reagent("plasma",10)) to_chat(user, "This extract needs to be full of plasma to activate!") return - reagents.remove_reagent(/datum/reagent/toxin/plasma,10) + reagents.remove_reagent("plasma",10) to_chat(user, "You squeeze the extract, and it absorbs the plasma!") playsound(src, 'sound/effects/bubbles.ogg', 50, 1) playsound(src, 'sound/effects/glassbr1.ogg', 50, 1) @@ -56,7 +56,7 @@ Chilling extracts: return user.visible_message("[src] shatters, and a healing aura fills the room briefly.") for(var/mob/living/carbon/C in A) - C.reagents.add_reagent(/datum/reagent/medicine/regen_jelly,10) + C.reagents.add_reagent("regen_jelly",10) ..() /obj/item/slimecross/chilling/blue diff --git a/code/modules/research/xenobiology/crossbreeding/consuming.dm b/code/modules/research/xenobiology/crossbreeding/consuming.dm index 0e8bf1e11f..d6536f4fdd 100644 --- a/code/modules/research/xenobiology/crossbreeding/consuming.dm +++ b/code/modules/research/xenobiology/crossbreeding/consuming.dm @@ -20,7 +20,7 @@ Consuming extracts: if(last_produced + cooldown > world.time) to_chat(user, "[src] is still digesting after its last meal!") return - var/datum/reagent/N = O.reagents.has_reagent(/datum/reagent/consumable/nutriment) + var/datum/reagent/N = O.reagents.has_reagent("nutriment") if(N) nutriment_eaten += N.volume to_chat(user, "[src] opens up and swallows [O] whole!") @@ -73,7 +73,7 @@ Consuming extracts: to_chat(M, "Tastes like [taste].") playsound(get_turf(M), 'sound/items/eatfood.ogg', 20, 1) if(nutrition) - M.reagents.add_reagent(/datum/reagent/consumable/nutriment,nutrition) + M.reagents.add_reagent("nutriment",nutrition) do_effect(M, user) qdel(src) return @@ -199,7 +199,7 @@ Consuming extracts: nutrition = 0 //We don't want normal nutriment /obj/item/slime_cookie/silver/do_effect(mob/living/M, mob/user) - M.reagents.add_reagent(/datum/reagent/consumable/nutriment/stabilized, 10) + M.reagents.add_reagent("stabilizednutriment",10) /obj/item/slimecross/consuming/bluespace colour = "bluespace" diff --git a/code/modules/research/xenobiology/crossbreeding/industrial.dm b/code/modules/research/xenobiology/crossbreeding/industrial.dm index bec2c2c1ae..a21fddb6cf 100644 --- a/code/modules/research/xenobiology/crossbreeding/industrial.dm +++ b/code/modules/research/xenobiology/crossbreeding/industrial.dm @@ -30,13 +30,13 @@ Industrial extracts: /obj/item/slimecross/industrial/process() var/IsWorking = FALSE - if(reagents.has_reagent(/datum/reagent/toxin/plasma,amount = 2) && plasmarequired > 1) //Can absorb as much as 2 + if(reagents.has_reagent("plasma",amount = 2) && plasmarequired > 1) //Can absorb as much as 2 IsWorking = TRUE - reagents.remove_reagent(/datum/reagent/toxin/plasma,2) + reagents.remove_reagent("plasma",2) plasmaabsorbed += 2 - else if(reagents.has_reagent(/datum/reagent/toxin/plasma,amount = 1)) //Can absorb as little as 1 + else if(reagents.has_reagent("plasma",amount = 1)) //Can absorb as little as 1 IsWorking = TRUE - reagents.remove_reagent(/datum/reagent/toxin/plasma,1) + reagents.remove_reagent("plasma",1) plasmaabsorbed += 1 if(plasmaabsorbed >= plasmarequired) diff --git a/code/modules/research/xenobiology/crossbreeding/regenerative.dm b/code/modules/research/xenobiology/crossbreeding/regenerative.dm index 55865d1ae2..6c7ea102bc 100644 --- a/code/modules/research/xenobiology/crossbreeding/regenerative.dm +++ b/code/modules/research/xenobiology/crossbreeding/regenerative.dm @@ -51,7 +51,7 @@ Regenerative extracts: colour = "purple" /obj/item/slimecross/regenerative/purple/core_effect(mob/living/target, mob/user) - target.reagents.add_reagent(/datum/reagent/medicine/regen_jelly,10) + target.reagents.add_reagent("regen_jelly",10) /obj/item/slimecross/regenerative/blue colour = "blue" @@ -174,7 +174,7 @@ Regenerative extracts: /obj/item/slimecross/regenerative/red/core_effect(mob/living/target, mob/user) to_chat(target, "You feel... faster.") - target.reagents.add_reagent(/datum/reagent/medicine/ephedrine,3) + target.reagents.add_reagent("ephedrine",3) /obj/item/slimecross/regenerative/green colour = "green" @@ -185,7 +185,7 @@ Regenerative extracts: var/mob/living/simple_animal/slime/S = target S.random_colour() if(isjellyperson(target)) - target.reagents.add_reagent(/datum/reagent/slime_toxin,5) + target.reagents.add_reagent("slime_toxin",5) /obj/item/slimecross/regenerative/pink @@ -193,7 +193,7 @@ Regenerative extracts: /obj/item/slimecross/regenerative/pink/core_effect(mob/living/target, mob/user) to_chat(target, "You feel more calm.") - target.reagents.add_reagent(/datum/reagent/drug/krokodil,4) + target.reagents.add_reagent("krokodil",4) /obj/item/slimecross/regenerative/gold colour = "gold" diff --git a/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm b/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm index 72b4158be6..a86db788a6 100644 --- a/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm +++ b/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm @@ -38,10 +38,10 @@ Self-sustaining extracts: return if(reagentselect == "lesser plasma") amount = 4 - reagentselect = /datum/reagent/toxin/plasma + reagentselect = "plasma" if(reagentselect == "holy water and uranium") - reagentselect = /datum/reagent/water/holywater - secondary = /datum/reagent/uranium + reagentselect = "holywater" + secondary = "uranium" extract.forceMove(user.drop_location()) qdel(src) user.put_in_active_hand(extract) diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 8eecf1f635..ab0db8c4a7 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -42,7 +42,7 @@ /obj/item/slime_extract/on_grind() if(Uses) - grind_results[/datum/reagent/toxin/slimejelly] = 20 + grind_results["slimejelly"] = 20 //Effect when activated by a Luminescent. Separated into a minor and major effect. Returns cooldown in deciseconds. /obj/item/slime_extract/proc/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) @@ -78,7 +78,7 @@ name = "grey slime extract" icon_state = "grey slime extract" effectmod = "reproductive" - activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water) + activate_reagents = list("blood","plasma","water") /obj/item/slime_extract/grey/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -103,7 +103,7 @@ name = "gold slime extract" icon_state = "gold slime extract" effectmod = "symbiont" - activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water) + activate_reagents = list("blood","plasma","water") /obj/item/slime_extract/gold/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -132,7 +132,7 @@ name = "silver slime extract" icon_state = "silver slime extract" effectmod = "consuming" - activate_reagents = list(/datum/reagent/toxin/plasma,/datum/reagent/water) + activate_reagents = list("plasma","water") /obj/item/slime_extract/silver/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -157,7 +157,7 @@ name = "metal slime extract" icon_state = "metal slime extract" effectmod = "industrial" - activate_reagents = list(/datum/reagent/toxin/plasma,/datum/reagent/water) + activate_reagents = list("plasma","water") /obj/item/slime_extract/metal/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -181,7 +181,7 @@ name = "purple slime extract" icon_state = "purple slime extract" effectmod = "regenerative" - activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma) + activate_reagents = list("blood","plasma") /obj/item/slime_extract/purple/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -193,14 +193,14 @@ if(SLIME_ACTIVATE_MAJOR) to_chat(user, "You activate [src], and it releases regenerative chemicals!") - user.reagents.add_reagent(/datum/reagent/medicine/regen_jelly,10) + user.reagents.add_reagent("regen_jelly",10) return 600 /obj/item/slime_extract/darkpurple name = "dark purple slime extract" icon_state = "dark purple slime extract" effectmod = "self-sustaining" - activate_reagents = list(/datum/reagent/toxin/plasma) + activate_reagents = list("plasma") /obj/item/slime_extract/darkpurple/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -223,19 +223,19 @@ name = "orange slime extract" icon_state = "orange slime extract" effectmod = "burning" - activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water) + activate_reagents = list("blood","plasma","water") /obj/item/slime_extract/orange/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) if(SLIME_ACTIVATE_MINOR) to_chat(user, "You activate [src]. You start feeling hot!") - user.reagents.add_reagent(/datum/reagent/consumable/capsaicin,10) + user.reagents.add_reagent("capsaicin",10) return 150 if(SLIME_ACTIVATE_MAJOR) - user.reagents.add_reagent(/datum/reagent/phosphorus,5) - user.reagents.add_reagent(/datum/reagent/potassium,5) // = smoke, along with any reagents inside mr. slime - user.reagents.add_reagent(/datum/reagent/consumable/sugar,5) + user.reagents.add_reagent("phosphorus",5)// + user.reagents.add_reagent("potassium",5) // = smoke, along with any reagents inside mr. slime + user.reagents.add_reagent("sugar",5) // to_chat(user, "You activate [src], and a cloud of smoke bursts out of your skin!") return 450 @@ -243,7 +243,7 @@ name = "yellow slime extract" icon_state = "yellow slime extract" effectmod = "charged" - activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water) + activate_reagents = list("blood","plasma","water") /obj/item/slime_extract/yellow/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -266,13 +266,13 @@ name = "red slime extract" icon_state = "red slime extract" effectmod = "sanguine" - activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water) + activate_reagents = list("blood","plasma","water") /obj/item/slime_extract/red/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) if(SLIME_ACTIVATE_MINOR) to_chat(user, "You activate [src]. You start feeling fast!") - user.reagents.add_reagent(/datum/reagent/medicine/ephedrine,5) + user.reagents.add_reagent("ephedrine",5) return 450 if(SLIME_ACTIVATE_MAJOR) @@ -286,15 +286,15 @@ name = "blue slime extract" icon_state = "blue slime extract" effectmod = "stabilized" - activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma, /datum/reagent/water) + activate_reagents = list("blood","plasma","water") /obj/item/slime_extract/blue/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) if(SLIME_ACTIVATE_MINOR) to_chat(user, "You activate [src]. Your genome feels more stable!") user.adjustCloneLoss(-15) - user.reagents.add_reagent(/datum/reagent/medicine/mutadone, 10) - user.reagents.add_reagent(/datum/reagent/medicine/potass_iodide, 10) + user.reagents.add_reagent("mutadone", 10) + user.reagents.add_reagent("potass_iodide", 10) return 250 if(SLIME_ACTIVATE_MAJOR) @@ -310,7 +310,7 @@ name = "dark blue slime extract" icon_state = "dark blue slime extract" effectmod = "chilling" - activate_reagents = list(/datum/reagent/toxin/plasma, /datum/reagent/water) + activate_reagents = list("plasma","water") /obj/item/slime_extract/darkblue/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -318,8 +318,8 @@ to_chat(user, "You activate [src]. You start feeling colder!") user.ExtinguishMob() user.adjust_fire_stacks(-20) - user.reagents.add_reagent(/datum/reagent/consumable/frostoil,4) - user.reagents.add_reagent(/datum/reagent/medicine/cryoxadone,5) + user.reagents.add_reagent("frostoil",4) + user.reagents.add_reagent("cryoxadone",5) return 100 if(SLIME_ACTIVATE_MAJOR) @@ -333,7 +333,7 @@ name = "pink slime extract" icon_state = "pink slime extract" effectmod = "gentle" - activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma) + activate_reagents = list("blood","plasma") /obj/item/slime_extract/pink/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -354,14 +354,14 @@ user.visible_message("[user]'s skin starts flashing hypnotically...", "Your skin starts forming odd patterns, pacifying creatures around you.") for(var/mob/living/carbon/C in viewers(user, null)) if(C != user) - C.reagents.add_reagent(/datum/reagent/pax,2) + C.reagents.add_reagent("pax",2) return 600 /obj/item/slime_extract/green name = "green slime extract" icon_state = "green slime extract" effectmod = "mutative" - activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma, /datum/reagent/radium) + activate_reagents = list("blood","plasma","radium") /obj/item/slime_extract/green/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -385,7 +385,7 @@ name = "light pink slime extract" icon_state = "light pink slime extract" effectmod = "loyal" - activate_reagents = list(/datum/reagent/toxin/plasma) + activate_reagents = list("plasma") /obj/item/slime_extract/lightpink/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -409,7 +409,7 @@ name = "black slime extract" icon_state = "black slime extract" effectmod = "transformative" - activate_reagents = list(/datum/reagent/toxin/plasma) + activate_reagents = list("plasma") /obj/item/slime_extract/black/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -430,7 +430,7 @@ name = "oil slime extract" icon_state = "oil slime extract" effectmod = "detonating" - activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma) + activate_reagents = list("blood","plasma") /obj/item/slime_extract/oil/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -453,7 +453,7 @@ name = "adamantine slime extract" icon_state = "adamantine slime extract" effectmod = "crystalline" - activate_reagents = list(/datum/reagent/toxin/plasma) + activate_reagents = list("plasma") /obj/item/slime_extract/adamantine/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -482,7 +482,7 @@ name = "bluespace slime extract" icon_state = "bluespace slime extract" effectmod = "warping" - activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma) + activate_reagents = list("blood","plasma") var/teleport_ready = FALSE var/teleport_x = 0 var/teleport_y = 0 @@ -518,7 +518,7 @@ name = "pyrite slime extract" icon_state = "pyrite slime extract" effectmod = "prismatic" - activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma) + activate_reagents = list("blood","plasma") /obj/item/slime_extract/pyrite/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -545,12 +545,12 @@ name = "cerulean slime extract" icon_state = "cerulean slime extract" effectmod = "recurring" - activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma) + activate_reagents = list("blood","plasma") /obj/item/slime_extract/cerulean/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) if(SLIME_ACTIVATE_MINOR) - user.reagents.add_reagent(/datum/reagent/medicine/salbutamol,15) + user.reagents.add_reagent("salbutamol",15) to_chat(user, "You feel like you don't need to breathe!") return 150 @@ -565,7 +565,7 @@ name = "sepia slime extract" icon_state = "sepia slime extract" effectmod = "lengthened" - activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma, /datum/reagent/water) + activate_reagents = list("blood","plasma","water") /obj/item/slime_extract/sepia/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -587,7 +587,7 @@ name = "rainbow slime extract" icon_state = "rainbow slime extract" effectmod = "hyperchromatic" - activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma,"lesser plasma", /datum/reagent/toxin/slimejelly,"holy water and uranium") //Curse this snowflake reagent list. + activate_reagents = list("blood","plasma","lesser plasma","slimejelly","holy water and uranium") //Curse this snowflake reagent list. /obj/item/slime_extract/rainbow/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) diff --git a/code/modules/ruins/lavalandruin_code/alien_nest.dm b/code/modules/ruins/lavalandruin_code/alien_nest.dm index d98a6bf5c1..ca33324a90 100644 --- a/code/modules/ruins/lavalandruin_code/alien_nest.dm +++ b/code/modules/ruins/lavalandruin_code/alien_nest.dm @@ -16,4 +16,4 @@ desc = "A syringe filled with a strange viscous liquid. It might be best to leave it alone." amount_per_transfer_from_this = 1 volume = 1 - list_reagents = list(/datum/reagent/xenomicrobes = 1) + list_reagents = list("xenomicrobes" = 1) diff --git a/code/modules/ruins/objects_and_mobs/sin_ruins.dm b/code/modules/ruins/objects_and_mobs/sin_ruins.dm index 76897b5276..caa2ca7adf 100644 --- a/code/modules/ruins/objects_and_mobs/sin_ruins.dm +++ b/code/modules/ruins/objects_and_mobs/sin_ruins.dm @@ -108,7 +108,7 @@ if (levels.len) dest = locate(T.x, T.y, pick(levels)) - T.ChangeTurf(/turf/open/chasm, flags = CHANGETURF_INHERIT_AIR) + T.ChangeTurf(/turf/open/chasm) var/turf/open/chasm/C = T C.set_target(dest) C.drop(user) diff --git a/code/modules/security_levels/security_levels.dm b/code/modules/security_levels/security_levels.dm index 13d1543c92..70b06e6438 100644 --- a/code/modules/security_levels/security_levels.dm +++ b/code/modules/security_levels/security_levels.dm @@ -49,7 +49,7 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN) else SSshuttle.emergency.modTimer(1.5) GLOB.security_level = SEC_LEVEL_BLUE - sound_to_playing_players('sound/misc/voybluealert.ogg', volume = 50) // Citadel change - Makes alerts play a sound + sound_to_playing_players('sound/misc/voybluealert.ogg') // Citadel change - Makes alerts play a sound for(var/obj/machinery/firealarm/FA in GLOB.machines) if(is_station_level(FA.z)) FA.update_icon() @@ -66,7 +66,7 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN) if(SSshuttle.emergency.mode == SHUTTLE_CALL || SSshuttle.emergency.mode == SHUTTLE_RECALL) SSshuttle.emergency.modTimer(1.6) GLOB.security_level = SEC_LEVEL_AMBER - sound_to_playing_players('sound/effects/alert.ogg', volume = 50) // Citadel change - Makes alerts play a sound + sound_to_playing_players('sound/effects/alert.ogg') // Citadel change - Makes alerts play a sound for(var/obj/machinery/firealarm/FA in GLOB.machines) if(is_station_level(FA.z)) FA.update_icon() @@ -83,7 +83,7 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN) else minor_announce(CONFIG_GET(string/alert_red_downto), "Attention! Code red!") GLOB.security_level = SEC_LEVEL_RED - sound_to_playing_players('sound/misc/voyalert.ogg', volume = 50) // Citadel change - Makes alerts play a sound + sound_to_playing_players('sound/misc/voyalert.ogg') // Citadel change - Makes alerts play a sound for(var/obj/machinery/firealarm/FA in GLOB.machines) if(is_station_level(FA.z)) diff --git a/code/modules/spells/spell_types/conjure.dm b/code/modules/spells/spell_types/conjure.dm index 38a2d5bddd..3ebded7487 100644 --- a/code/modules/spells/spell_types/conjure.dm +++ b/code/modules/spells/spell_types/conjure.dm @@ -31,7 +31,7 @@ if(ispath(summoned_object_type, /turf)) var/turf/O = spawn_place var/N = summoned_object_type - O.ChangeTurf(N, flags = CHANGETURF_INHERIT_AIR) + O.ChangeTurf(N) else var/atom/summoned_object = new summoned_object_type(spawn_place) diff --git a/code/modules/spells/spell_types/devil.dm b/code/modules/spells/spell_types/devil.dm index d97d466e4d..8b8328abbe 100644 --- a/code/modules/spells/spell_types/devil.dm +++ b/code/modules/spells/spell_types/devil.dm @@ -234,7 +234,7 @@ dancefloor_exists = FALSE for(var/i in 1 to dancefloor_turfs.len) var/turf/T = dancefloor_turfs[i] - T.ChangeTurf(dancefloor_turfs_types[i], flags = CHANGETURF_INHERIT_AIR) + T.ChangeTurf(dancefloor_turfs_types[i]) else var/list/funky_turfs = RANGE_TURFS(1, user) for(var/turf/closed/solid in funky_turfs) @@ -248,7 +248,7 @@ var/turf/T = t dancefloor_turfs[i] = T dancefloor_turfs_types[i] = T.type - T.ChangeTurf((i % 2 == 0) ? /turf/open/floor/light/colour_cycle/dancefloor_a : /turf/open/floor/light/colour_cycle/dancefloor_b, flags = CHANGETURF_INHERIT_AIR) + T.ChangeTurf((i % 2 == 0) ? /turf/open/floor/light/colour_cycle/dancefloor_a : /turf/open/floor/light/colour_cycle/dancefloor_b) i++ /datum/effect_system/smoke_spread/transparent/dancefloor_devil diff --git a/code/modules/spells/spell_types/godhand.dm b/code/modules/spells/spell_types/godhand.dm index c4a2b4aa7e..8108b121ae 100644 --- a/code/modules/spells/spell_types/godhand.dm +++ b/code/modules/spells/spell_types/godhand.dm @@ -216,4 +216,4 @@ P.original = user P.firer = user P.fire() - return ..() + return ..() \ No newline at end of file diff --git a/code/modules/spells/spell_types/touch_attacks.dm b/code/modules/spells/spell_types/touch_attacks.dm index 5f984fa7e3..794ed797ad 100644 --- a/code/modules/spells/spell_types/touch_attacks.dm +++ b/code/modules/spells/spell_types/touch_attacks.dm @@ -78,8 +78,8 @@ hand_path = /obj/item/melee/touch_attack/nuclearfist school = "evocation" - charge_max = 100 + charge_max = 200 clothes_req = 0 - cooldown_min = 20 + cooldown_min = 40 - action_icon_state = "nuclearfist" + action_icon_state = "nuclearfist" \ No newline at end of file diff --git a/code/modules/surgery/advanced/necrotic_revival.dm b/code/modules/surgery/advanced/necrotic_revival.dm index d95d0a3ac7..f8fb160a8a 100644 --- a/code/modules/surgery/advanced/necrotic_revival.dm +++ b/code/modules/surgery/advanced/necrotic_revival.dm @@ -19,7 +19,7 @@ implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 35, /obj/item/pen = 15) implements = list(/obj/item/reagent_containers/syringe = 100, /obj/item/pen = 30) time = 50 - chems_needed = list(/datum/reagent/toxin/zombiepowder, /datum/reagent/medicine/rezadone) + chems_needed = list("zombiepowder", "rezadone") require_all_chems = FALSE /datum/surgery_step/bionecrosis/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) diff --git a/code/modules/surgery/advanced/viral_bonding.dm b/code/modules/surgery/advanced/viral_bonding.dm index 86832602e8..87e6a8a99f 100644 --- a/code/modules/surgery/advanced/viral_bonding.dm +++ b/code/modules/surgery/advanced/viral_bonding.dm @@ -20,7 +20,7 @@ name = "viral bond" implements = list(TOOL_CAUTERY = 100, TOOL_WELDER = 50, /obj/item = 30) // 30% success with any hot item. time = 100 - chems_needed = list(/datum/reagent/medicine/spaceacillin, /datum/reagent/consumable/virus_food,/datum/reagent/toxin/formaldehyde) + chems_needed = list("spaceacillin","virusfood","formaldehyde") /datum/surgery_step/viral_bond/tool_check(mob/user, obj/item/tool) if(implement_type == TOOL_WELDER || implement_type == /obj/item) diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index 63a392bf06..a1b74942e0 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -172,8 +172,9 @@ var/total_damage = brute + burn if(total_damage > can_inflict) - brute = round(brute * (max_damage / total_damage),DAMAGE_PRECISION) - burn = round(burn * (max_damage / total_damage),DAMAGE_PRECISION) + var/excess = total_damage - can_inflict + brute = round(brute * (excess / total_damage),DAMAGE_PRECISION) + burn = round(burn * (excess / total_damage),DAMAGE_PRECISION) brute_dam += brute burn_dam += burn diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 31fc90cb04..31f08f0e87 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -22,14 +22,11 @@ SEND_SIGNAL(C, COMSIG_ADD_MOOD_EVENT, "dismembered", /datum/mood_event/dismembered) drop_limb() - C.bleed(40) - - if(QDELETED(src)) //Could have dropped into lava/explosion/chasm/whatever - return TRUE if(dam_type == BURN) burn() - return TRUE + return 1 add_mob_blood(C) + C.bleed(40) var/direction = pick(GLOB.cardinals) var/t_range = rand(2,max(throw_range/2, 2)) var/turf/target_turf = get_turf(src) @@ -41,7 +38,7 @@ if(new_turf.density) break throw_at(target_turf, throw_range, throw_speed) - return TRUE + return 1 /obj/item/bodypart/chest/dismember() @@ -152,6 +149,7 @@ LB.brainmob = brainmob brainmob = null LB.brainmob.forceMove(LB) + LB.brainmob.container = LB LB.brainmob.stat = DEAD /obj/item/organ/eyes/transfer_to_limb(obj/item/bodypart/head/LB, mob/living/carbon/human/C) diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm index 51866b6719..069f30e24c 100644 --- a/code/modules/surgery/bodyparts/helpers.dm +++ b/code/modules/surgery/bodyparts/helpers.dm @@ -287,19 +287,51 @@ . = "ffc905" /mob/living/carbon/proc/Digitigrade_Leg_Swap(swap_back) + var/body_plan_changed = FALSE for(var/X in bodyparts) var/obj/item/bodypart/O = X - if((O.body_part == LEG_LEFT || O.body_part == LEG_RIGHT) && ((!O.use_digitigrade && !swap_back) || (O.use_digitigrade && swap_back))) - O.use_digitigrade = swap_back ? NOT_DIGITIGRADE : FULL_DIGITIGRADE - O.update_limb(FALSE, src) + var/obj/item/bodypart/N + if((!O.use_digitigrade && swap_back == FALSE) || (O.use_digitigrade && swap_back == TRUE)) + if(O.body_part == LEG_LEFT) + if(swap_back == TRUE) + N = new /obj/item/bodypart/l_leg + else + N = new /obj/item/bodypart/l_leg/digitigrade + else if(O.body_part == LEG_RIGHT) + if(swap_back == TRUE) + N = new /obj/item/bodypart/r_leg + else + N = new /obj/item/bodypart/r_leg/digitigrade + if(!N) + continue + body_plan_changed = TRUE + O.drop_limb(1) + qdel(O) + N.attach_limb(src) - if(ishuman(src)) + if(body_plan_changed && ishuman(src)) var/mob/living/carbon/human/H = src if(H.w_uniform) - H.update_inv_w_uniform() + var/obj/item/clothing/under/U = H.w_uniform + if(U.mutantrace_variation) + if(swap_back) + U.suit_style = NORMAL_SUIT_STYLE + else + U.suit_style = DIGITIGRADE_SUIT_STYLE + H.update_inv_w_uniform() if(H.shoes) + var/obj/item/clothing/shoes/S = H.shoes + if(swap_back) + S.adjusted = NORMAL_STYLE + else + S.adjusted = ALT_STYLE H.update_inv_shoes() if(H.wear_suit) + var/obj/item/clothing/suit/S = H.wear_suit + if(swap_back) + S.adjusted = NORMAL_STYLE + else + S.adjusted = ALT_STYLE H.update_inv_wear_suit() /mob/living/carbon/proc/get_body_parts_flags() diff --git a/code/modules/surgery/embalming.dm b/code/modules/surgery/embalming.dm index c6d2c72caa..0af3240c5d 100644 --- a/code/modules/surgery/embalming.dm +++ b/code/modules/surgery/embalming.dm @@ -12,7 +12,7 @@ /datum/surgery_step/embalming name = "embalming body" implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 35) - chems_needed = list(/datum/reagent/drying_agent, /datum/reagent/space_cleaner/sterilizine) + chems_needed = list("drying_agent", "sterilizine") require_all_chems = FALSE /datum/surgery_step/embalming/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) diff --git a/code/modules/surgery/graft_synthtissue.dm b/code/modules/surgery/graft_synthtissue.dm index afe8c9d1d1..86b2a8e909 100644 --- a/code/modules/surgery/graft_synthtissue.dm +++ b/code/modules/surgery/graft_synthtissue.dm @@ -22,7 +22,7 @@ implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 35, /obj/item/pen = 15) repeatable = TRUE time = 75 - chems_needed = list(/datum/reagent/synthtissue) + chems_needed = list("synthtissue") var/obj/item/organ/chosen_organ var/health_restored = 10 @@ -41,7 +41,7 @@ chosen_organ = organs[chosen_organ] if(!chosen_organ) return -1 - if(!target.reagents.has_reagent(/datum/reagent/synthtissue)) + if(!target.reagents.has_reagent("synthtissue")) to_chat(user, "There's no synthtissue available for use on [chosen_organ]") return -1 var/datum/reagent/synthtissue/Sf = locate(/datum/reagent/synthtissue) in target.reagents.reagent_list @@ -58,7 +58,7 @@ health_restored += (Sf.data["grown_volume"]/10) user.visible_message("[user] begins to graft synthtissue onto [chosen_organ].") - target.reagents.remove_reagent(/datum/reagent/synthtissue, 10) + target.reagents.remove_reagent("synthtissue", 10) /datum/surgery_step/graft_synthtissue/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) user.visible_message("[user] successfully grafts synthtissue to [chosen_organ].", "You succeed in grafting 10u of the synthflesh to the [chosen_organ].") diff --git a/code/modules/surgery/organs/appendix.dm b/code/modules/surgery/organs/appendix.dm index 8ea4ea855d..0a4bd270a8 100644 --- a/code/modules/surgery/organs/appendix.dm +++ b/code/modules/surgery/organs/appendix.dm @@ -42,5 +42,5 @@ /obj/item/organ/appendix/prepare_eat() var/obj/S = ..() if(inflamed) - S.reagents.add_reagent(/datum/reagent/toxin/bad_food, 5) + S.reagents.add_reagent("bad_food", 5) return S diff --git a/code/modules/surgery/organs/augments_chest.dm b/code/modules/surgery/organs/augments_chest.dm index 93ed149a2b..65172a1545 100644 --- a/code/modules/surgery/organs/augments_chest.dm +++ b/code/modules/surgery/organs/augments_chest.dm @@ -32,7 +32,7 @@ . = ..() if(!owner || . & EMP_PROTECT_SELF) return - owner.reagents.add_reagent(/datum/reagent/toxin/bad_food, poison_amount / severity) + owner.reagents.add_reagent("bad_food", poison_amount / severity) to_chat(owner, "You feel like your insides are burning.") diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index 51784bdc61..5b74b58cd0 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -247,5 +247,5 @@ obj/item/organ/heart/cybernetic/upgraded/on_life() min_next_adrenaline = world.time + rand(250, 600) //anywhere from 4.5 to 10 minutes to_chat(owner, "You feel yourself dying, but you refuse to give up!") owner.heal_overall_damage(15, 15) - if(owner.reagents.get_reagent_amount(/datum/reagent/medicine/ephedrine) < 20) - owner.reagents.add_reagent(/datum/reagent/medicine/ephedrine, 10) + if(owner.reagents.get_reagent_amount("ephedrine") < 20) + owner.reagents.add_reagent("ephedrine", 10) diff --git a/code/modules/surgery/organs/liver.dm b/code/modules/surgery/organs/liver.dm index 59185ebaaf..01559c83c3 100755 --- a/code/modules/surgery/organs/liver.dm +++ b/code/modules/surgery/organs/liver.dm @@ -33,12 +33,14 @@ if(filterToxins && !HAS_TRAIT(owner, TRAIT_TOXINLOVER)) //handle liver toxin filtration - for(var/datum/reagent/toxin/T in C.reagents.reagent_list) - var/thisamount = C.reagents.get_reagent_amount(T.type) - if (thisamount && thisamount <= toxTolerance) - C.reagents.remove_reagent(T.type, 1) - else - damage += (thisamount*toxLethality) + for(var/I in C.reagents.reagent_list) + var/datum/reagent/pickedreagent = I + if(istype(pickedreagent, /datum/reagent/toxin)) + var/thisamount = C.reagents.get_reagent_amount(initial(pickedreagent.id)) + if (thisamount <= toxTolerance && thisamount) + C.reagents.remove_reagent(initial(pickedreagent.id), 1) + else + damage += (thisamount*toxLethality) //metabolize reagents C.reagents.metabolize(C, can_overdose=TRUE) @@ -54,7 +56,7 @@ /obj/item/organ/liver/prepare_eat() var/obj/S = ..() - S.reagents.add_reagent(/datum/reagent/iron, 5) + S.reagents.add_reagent("iron", 5) return S //Just in case diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index 91153655d3..6b0e4f01ae 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -69,7 +69,7 @@ var/heat_level_3_damage = HEAT_GAS_DAMAGE_LEVEL_3 var/heat_damage_type = BURN - var/crit_stabilizing_reagent = /datum/reagent/medicine/epinephrine + var/crit_stabilizing_reagent = "epinephrine" @@ -301,13 +301,13 @@ var/bz_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/bz]) if(bz_pp > BZ_trip_balls_min) H.hallucination += 10 - H.reagents.add_reagent(/datum/reagent/bz_metabolites,5) + H.reagents.add_reagent("bz_metabolites",5) if(prob(33)) H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3, 150) else if(bz_pp > 0.01) H.hallucination += 5 - H.reagents.add_reagent(/datum/reagent/bz_metabolites,1) + H.reagents.add_reagent("bz_metabolites",1) // Tritium @@ -331,15 +331,15 @@ H.adjustFireLoss(nitryl_pp/4) gas_breathed = breath_gases[/datum/gas/nitryl] if (gas_breathed > gas_stimulation_min) - H.reagents.add_reagent(/datum/reagent/nitryl,1) + H.reagents.add_reagent("no2",1) breath_gases[/datum/gas/nitryl]-=gas_breathed // Stimulum gas_breathed = breath_gases[/datum/gas/stimulum] if (gas_breathed > gas_stimulation_min) - var/existing = H.reagents.get_reagent_amount(/datum/reagent/stimulum) - H.reagents.add_reagent(/datum/reagent/stimulum, max(0, 5 - existing)) + var/existing = H.reagents.get_reagent_amount("stimulum") + H.reagents.add_reagent("stimulum", max(0, 5 - existing)) breath_gases[/datum/gas/stimulum]-=gas_breathed // Miasma @@ -459,7 +459,7 @@ /obj/item/organ/lungs/prepare_eat() var/obj/S = ..() - S.reagents.add_reagent(/datum/reagent/medicine/salbutamol, 5) + S.reagents.add_reagent("salbutamol", 5) return S /obj/item/organ/lungs/plasmaman diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index fcbed13d94..a180bd947e 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -173,7 +173,7 @@ name = "appendix" icon_state = "appendix" icon = 'icons/obj/surgery.dmi' - list_reagents = list(/datum/reagent/consumable/nutriment = 5) + list_reagents = list("nutriment" = 5) foodtype = RAW | MEAT | GROSS diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index 161461d099..dedff3ae04 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -560,7 +560,7 @@ else if((findtext(message, honk_words))) cooldown = COOLDOWN_MEME addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, get_turf(user), 'sound/items/bikehorn.ogg', 300, 1), 25) - if(user.mind && HAS_TRAIT(user.mind, TRAIT_CLOWN_MENTALITY)) + if(user.mind && user.mind.assigned_role == "Clown") for(var/mob/living/carbon/C in listeners) C.slip(140 * power_multiplier) cooldown = COOLDOWN_MEME @@ -807,8 +807,9 @@ E.enthrallTally += (power_multiplier*(((length(message))/200) + 1)) //encourage players to say more than one word. else E.enthrallTally += power_multiplier*1.25 //thinking about it, I don't know how this can proc - if(L.canbearoused && E.lewd) - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "[E.enthrallGender] is so nice to listen to."), 5) + if(L.canbearoused) + if(L.client?.prefs.lewdchem) + addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "[E.enthrallGender] is so nice to listen to."), 5) E.cooldown += 1 //REWARD mixable works @@ -819,7 +820,7 @@ power_multiplier *= distancelist[get_dist(user, V)+1] if(L == user) continue - if (E.lewd) + if (L.client?.prefs.lewdchem) addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "[E.enthrallGender] has praised me!!"), 5) if(HAS_TRAIT(L, TRAIT_NYMPHO)) L.adjustArousalLoss(2*power_multiplier) @@ -831,7 +832,7 @@ addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "I've been praised for doing a good job!"), 5) E.resistanceTally -= power_multiplier E.enthrallTally += power_multiplier - var/descmessage = "[(E.lewd?"I feel so happy! I'm a good pet who [E.enthrallGender] loves!":"I did a good job!")]" + var/descmessage = "[(L.client?.prefs.lewdchem?"I feel so happy! I'm a good pet who [E.enthrallGender] loves!":"I did a good job!")]" SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "enthrallpraise", /datum/mood_event/enthrallpraise, descmessage) E.cooldown += 1 @@ -840,10 +841,10 @@ for(var/V in listeners) var/mob/living/L = V var/datum/status_effect/chem/enthrall/E = L.has_status_effect(/datum/status_effect/chem/enthrall) - var/descmessage = "[(E.lewd?"I've failed [E.enthrallGender]... What a bad, bad pet!":"I did a bad job...")]" + var/descmessage = "[(L.client?.prefs.lewdchem?"I've failed [E.enthrallGender]... What a bad, bad pet!":"I did a bad job...")]" if(L == user) continue - if (E.lewd) + if (L.client?.prefs.lewdchem) if(HAS_TRAIT(L, TRAIT_MASO)) L.adjustArousalLoss(3*power_multiplier) descmessage += "And yet, it feels so good..!" //I don't really understand masco, is this the right sort of thing they like? @@ -870,7 +871,7 @@ var/datum/status_effect/chem/enthrall/E = C.has_status_effect(/datum/status_effect/chem/enthrall) REMOVE_TRAIT(C, TRAIT_MUTE, "enthrall") C.silent = 0 - if(E.lewd) + if(C.client?.prefs.lewdchem) addtimer(CALLBACK(C, /atom/movable/proc/say, "[E.enthrallGender]"), 5) else addtimer(CALLBACK(C, /atom/movable/proc/say, "[E.master]"), 5) @@ -886,7 +887,7 @@ E.phase = 3 E.status = null user.emote("snap") - if(E.lewd) + if(L.client?.prefs.lewdchem) addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "The snapping of your [E.enthrallGender]'s fingers brings you back to your enthralled state, obedient and ready to serve.
      "), 5) else addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "The snapping of [E.master]'s fingers brings you back to being under their influence."), 5) @@ -909,11 +910,11 @@ addtimer(CALLBACK(H, /atom/movable/proc/say, "I feel happy being with you."), 5) continue if(2) - speaktrigger += "[(E.lewd?"I think I'm in love with you... ":"I find you really inspirational, ")]" //' + speaktrigger += "[(H.client?.prefs.lewdchem?"I think I'm in love with you... ":"I find you really inspirational, ")]" //' if(3) - speaktrigger += "[(E.lewd?"I'm devoted to being your pet":"I'm commited to following your cause!")]! " + speaktrigger += "[(H.client?.prefs.lewdchem?"I'm devoted to being your pet":"I'm commited to following your cause!")]! " if(4) - speaktrigger += "[(E.lewd?"You are my whole world and all of my being belongs to you, ":"I cannot think of anything else but aiding your cause, ")] "//Redflags!! + speaktrigger += "[(H.client?.prefs.lewdchem?"You are my whole world and all of my being belongs to you, ":"I cannot think of anything else but aiding your cause, ")] "//Redflags!! //mood var/datum/component/mood/mood = H.GetComponent(/datum/component/mood) @@ -1002,7 +1003,7 @@ speaktrigger += "I feel like I'm on the brink of losing my mind, " //horny - if(HAS_TRAIT(H, TRAIT_NYMPHO) && H.canbearoused && E.lewd) + if(HAS_TRAIT(H, TRAIT_NYMPHO) && H.canbearoused && H.client?.prefs.lewdchem) switch(H.getArousalLoss()) if(40 to 60) speaktrigger += "I'm feeling a little horny, " @@ -1012,10 +1013,10 @@ speaktrigger += "I'm really, really horny, " //collar - if(istype(H.wear_neck, /obj/item/clothing/neck/petcollar) && E.lewd) + if(istype(H.wear_neck, /obj/item/clothing/neck/petcollar) && H.client?.prefs.lewdchem) speaktrigger += "I love the collar you gave me, " //End - if(E.lewd) + if(H.client?.prefs.lewdchem) speaktrigger += "[E.enthrallGender]!" else speaktrigger += "[user.first_name()]!" @@ -1043,7 +1044,7 @@ REMOVE_TRAIT(C, TRAIT_MUTE, "enthrall") C.silent = 0 E.cooldown += 3 - to_chat(user, "You [(E.lewd?"allow [C] to speak again":"encourage [C] to speak again")].") + to_chat(user, "You [(C.client?.prefs.lewdchem?"allow [C] to speak again":"encourage [C] to speak again")].") //Antiresist @@ -1073,7 +1074,7 @@ for(var/mob/living/carbon/C in listeners) var/datum/status_effect/chem/enthrall/E = C.has_status_effect(/datum/status_effect/chem/enthrall) if(E.phase == 4) - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "You're unable to forget about [(E.lewd?"the dominating presence of [E.enthrallGender]":"[E.master]")]!"), 5) + addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "You're unable to forget about [(C.client?.prefs.lewdchem?"the dominating presence of [E.enthrallGender]":"[E.master]")]!"), 5) continue addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "You wake up, forgetting everything that just happened. You must've dozed off..? How embarassing!"), 5) C.Sleeping(50) @@ -1085,7 +1086,7 @@ if(3) E.phase = 0 E.cooldown = 0 - if(E.lewd) + if(C.client?.prefs.lewdchem) addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "You revert to yourself before being enthralled by your [E.enthrallGender], with no memory of what happened."), 5) else addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "You revert to who you were before, with no memory of what happened with [E.master]."), 5) @@ -1111,7 +1112,7 @@ var/mob/living/carbon/human/H = V var/datum/status_effect/chem/enthrall/E = H.has_status_effect(/datum/status_effect/chem/enthrall) if(E.phase > 1) - if(HAS_TRAIT(H, TRAIT_NYMPHO) && H.canbearoused && E.lewd) // probably a redundant check but for good measure + if(HAS_TRAIT(H, TRAIT_NYMPHO) && H.canbearoused && H.client?.prefs.lewdchem) // probably a redundant check but for good measure addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "Your [E.enthrallGender] pushes you over the limit, overwhelming your body with pleasure."), 5) H.mob_climax(forced_climax=TRUE) H.SetStun(20) @@ -1167,7 +1168,7 @@ for(var/obj/item/W in items) if(W == H.wear_suit) H.dropItemToGround(W, TRUE) - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "Before you can even think about it, you quickly remove your clothes in response to [(E.lewd?"your [E.enthrallGender]'s command'":"[E.master]'s directive'")]."), 5) + addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "Before you can even think about it, you quickly remove your clothes in response to [(H.client?.prefs.lewdchem?"your [E.enthrallGender]'s command'":"[E.master]'s directive'")]."), 5) E.cooldown += 10 //WALK @@ -1205,7 +1206,7 @@ if(2 to INFINITY) L.lay_down() E.cooldown += 10 - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "[(E.lewd?"You eagerly lie down!":"You suddenly lie down!")]"), 5) + addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "[(L.client?.prefs.lewdchem?"You eagerly lie down!":"You suddenly lie down!")]"), 5) to_chat(user, "You encourage [L] to lie down.") //KNOCKDOWN @@ -1236,7 +1237,7 @@ for (var/trigger in E.customTriggers) speaktrigger += "[trigger], " to_chat(user, "[C] whispers, \"[speaktrigger] are my triggers.\"")//So they don't trigger themselves! - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "You whisper your triggers to [(E.lewd?"Your [E.enthrallGender]":"[E.master]")]."), 5) + addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "You whisper your triggers to [(C.client?.prefs.lewdchem?"Your [E.enthrallGender]":"[E.master]")]."), 5) //CUSTOM TRIGGERS @@ -1248,7 +1249,7 @@ if (get_dist(user, H) > 1)//Requires user to be next to their pet. to_chat(user, "You need to be next to your pet to give them a new trigger!") continue - if(!E.lewd) + if(!H.client?.prefs.lewdchem) to_chat(user, "[H] seems incapable of being implanted with triggers.") continue else @@ -1271,7 +1272,7 @@ E.customTriggers[trigger] = trigger2 log_game("FERMICHEM: [H] has been implanted by [user] with [trigger], triggering [trigger2].") E.mental_capacity -= 5 - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "[(E.lewd?"your [E.enthrallGender]":"[E.master]")] whispers you a new trigger."), 5) + addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "[(H.client?.prefs.lewdchem?"your [E.enthrallGender]":"[E.master]")] whispers you a new trigger."), 5) to_chat(user, "You sucessfully set the trigger word [trigger] in [H]") else to_chat(user, "Your pet looks at you confused, it seems they don't understand that effect!") @@ -1289,7 +1290,7 @@ if (get_dist(user, H) > 1)//Requires user to be next to their pet. to_chat(user, "You need to be next to your pet to give them a new echophrase!") continue - if(!E.lewd) + if(!H.client?.prefs.lewdchem) to_chat(user, "[H] seems incapable of being implanted with an echoing phrase.") continue else @@ -1333,7 +1334,7 @@ objective = replacetext(lowertext(objective), "suicide", "self-love") message_admins("[H] has been implanted by [user] with the objective [objective].") log_game("FERMICHEM: [H] has been implanted by [user] with the objective [objective] via MKUltra.") - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "[(E.lewd?"Your [E.enthrallGender]":"[E.master]")] whispers you a new objective."), 5) + addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "[(H.client?.prefs.lewdchem?"Your [E.enthrallGender]":"[E.master]")] whispers you a new objective."), 5) brainwash(H, objective) E.mental_capacity -= 200 to_chat(user, "You sucessfully give an objective to [H]") @@ -1347,7 +1348,7 @@ for(var/V in listeners) var/mob/living/carbon/human/H = V var/datum/status_effect/chem/enthrall/E = H.has_status_effect(/datum/status_effect/chem/enthrall) - if(E.phase >= 3 && E.lewd) + if(E.phase >= 3 && H.client?.prefs.lewdchem) var/instill = stripped_input(user, "Instill an emotion in [H].", MAX_MESSAGE_LEN) to_chat(H, "[instill]") to_chat(user, "You sucessfully instill a feeling in [H]") @@ -1362,7 +1363,7 @@ if(E.phase > 1) if(user.ckey == E.enthrallID && user.real_name == E.master.real_name) E.master = user - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "[(E.lewd?"You hear the words of your [E.enthrallGender] again!! They're back!!":"You recognise the voice of [E.master].")]"), 5) + addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "[(H.client?.prefs.lewdchem?"You hear the words of your [E.enthrallGender] again!! They're back!!":"You recognise the voice of [E.master].")]"), 5) to_chat(user, "[H] looks at you with sparkling eyes, recognising you!") //I dunno how to do state objectives without them revealing they're an antag diff --git a/code/modules/tgs/v3210/commands.dm b/code/modules/tgs/v3210/commands.dm index e674fd4e78..71d7e32366 100644 --- a/code/modules/tgs/v3210/commands.dm +++ b/code/modules/tgs/v3210/commands.dm @@ -19,7 +19,7 @@ TGS_ERROR_LOG("Custom command [command_name] can't be used as it is empty or contains illegal characters!") warned_command_names[command_name] = TRUE continue - + if(command_name_types[command_name]) if(warnings_only) TGS_ERROR_LOG("Custom commands [command_name_types[command_name]] and [stc] have the same name, only [command_name_types[command_name]] will be available!") @@ -55,24 +55,24 @@ The MIT License Copyright (c) 2017 Jordan Brown -Permission is hereby granted, free of charge, -to any person obtaining a copy of this software and -associated documentation files (the "Software"), to -deal in the Software without restriction, including -without limitation the rights to use, copy, modify, -merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom -the Software is furnished to do so, +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index 18dc34e34b..97fa6041a9 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -165,3 +165,1866 @@ //Discounts (dynamically filled above) /datum/uplink_item/discounts category = "Discounted Gear" + + +/* + Uplink Items: + Unlike categories, uplink item entries are automatically sorted alphabetically on server init in a global list, + When adding new entries to the file, please keep them sorted by category. +*/ + +//All bundles and telecrystals + +/datum/uplink_item/bundles_TC/chemical + name = "Bioterror bundle" + desc = "For the madman: Contains a handheld Bioterror chem sprayer, a Bioterror foam grenade, a box of lethal chemicals, a dart pistol, \ + box of syringes, Donksoft assault rifle, and some riot darts. Remember: Seal suit and equip internals before use." + item = /obj/item/storage/backpack/duffelbag/syndie/med/bioterrorbundle + cost = 30 // normally 42 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/bundles_TC/bulldog + name = "Bulldog bundle" + desc = "Lean and mean: Optimized for people that want to get up close and personal. Contains the popular \ + Bulldog shotgun, a 12g buckshot drum, a 12g taser slug drum and a pair of Thermal imaging goggles." + item = /obj/item/storage/backpack/duffelbag/syndie/bulldogbundle + cost = 13 // normally 16 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/bundles_TC/c20r + name = "C-20r bundle" + desc = "Old Faithful: The classic C-20r, bundled with two magazines, and a (surplus) suppressor at discount price." + item = /obj/item/storage/backpack/duffelbag/syndie/c20rbundle + cost = 14 // normally 16 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/bundles_TC/cybernetics_bundle + name = "Cybernetic Implants Bundle" + desc = "A random selection of cybernetic implants. Guaranteed 5 high quality implants. Comes with an autosurgeon." + item = /obj/item/storage/box/cyber_implants + cost = 40 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/bundles_TC/medical + name = "Medical bundle" + desc = "The support specialist: Aid your fellow operatives with this medical bundle. Contains a tactical medkit, \ + a Donksoft LMG, a box of riot darts and a pair of magboots to rescue your friends in no-gravity environments." + item = /obj/item/storage/backpack/duffelbag/syndie/med/medicalbundle + cost = 15 // normally 20 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/bundles_TC/modular + name = "Modular Pistol Kit" + desc = "A heavy briefcase containing one modular pistol (chambered in 10mm), one supressor, and spare ammunition, including a box of soporific ammo. \ + Includes a suit jacket that is padded with a robust liner." + item = /obj/item/storage/briefcase/modularbundle + cost = 12 + +/datum/uplink_item/bundles_TC/shredder + name = "Shredder bundle" + desc = "A truly horrific weapon designed simply to maim its victim, the CX Shredder is banned by several intergalactic treaties. \ + You'll get two of them with this. And spare ammo to boot. And we'll throw in an extra elite hardsuit and chest rig to hold them all!" + item = /obj/item/storage/backpack/duffelbag/syndie/shredderbundle + cost = 30 // normally 41 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/bundles_TC/sniper + name = "Sniper bundle" + desc = "Elegant and refined: Contains a collapsed sniper rifle in an expensive carrying case, \ + two soporific knockout magazines, a free surplus supressor, and a sharp-looking tactical turtleneck suit. \ + We'll throw in a free red tie if you order NOW." + item = /obj/item/storage/briefcase/sniperbundle + cost = 20 // normally 26 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/bundles_TC/firestarter + name = "Spetsnaz Pyro bundle" + desc = "For systematic suppression of carbon lifeforms in close quarters: Contains a lethal New Russian backpack spray, Elite hardsuit, \ + Stechkin APS pistol, two magazines, a minibomb and a stimulant syringe. \ + Order NOW and comrade Boris will throw in an extra tracksuit." + item = /obj/item/storage/backpack/duffelbag/syndie/firestarter + cost = 30 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/bundles_TC/bundle + name = "Syndicate Bundle" + desc = "Syndicate Bundles are specialized groups of items that arrive in a plain box. \ + These items are collectively worth more than 20 telecrystals, but you do not know which specialization \ + you will receive. May contain discontinued and/or exotic items." + item = /obj/item/storage/box/syndicate + cost = 20 + exclude_modes = list(/datum/game_mode/nuclear) + cant_discount = TRUE + +/datum/uplink_item/bundles_TC/surplus + name = "Syndicate Surplus Crate" + desc = "A dusty crate from the back of the Syndicate warehouse. Rumored to contain a valuable assortment of items, \ + but you never know. Contents are sorted to always be worth 50 TC." + item = /obj/structure/closet/crate + cost = 20 + player_minimum = 25 + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + cant_discount = TRUE + var/starting_crate_value = 50 + +/datum/uplink_item/bundles_TC/surplus/super + name = "Super Surplus Crate" + desc = "A dusty SUPER-SIZED from the back of the Syndicate warehouse. Rumored to contain a valuable assortment of items, \ + but you never know. Contents are sorted to always be worth 125 TC." + cost = 40 + player_minimum = 40 + starting_crate_value = 125 + +/datum/uplink_item/bundles_TC/surplus/purchase(mob/user, datum/component/uplink/U) + var/list/uplink_items = get_uplink_items(SSticker && SSticker.mode? SSticker.mode : null, FALSE) + + var/crate_value = starting_crate_value + var/obj/structure/closet/crate/C = spawn_item(/obj/structure/closet/crate, user, U) + if(U.purchase_log) + U.purchase_log.LogPurchase(C, src, cost) + while(crate_value) + var/category = pick(uplink_items) + var/item = pick(uplink_items[category]) + var/datum/uplink_item/I = uplink_items[category][item] + + if(!I.surplus || prob(100 - I.surplus)) + continue + if(crate_value < I.cost) + continue + crate_value -= I.cost + var/obj/goods = new I.item(C) + if(U.purchase_log) + U.purchase_log.LogPurchase(goods, I, 0) + return C + +/datum/uplink_item/bundles_TC/random + name = "Random Item" + desc = "Picking this will purchase a random item. Useful if you have some TC to spare or if you haven't decided on a strategy yet." + item = /obj/effect/gibspawner/generic // non-tangible item because techwebs use this path to determine illegal tech + cost = 0 + cant_discount = TRUE + +/datum/uplink_item/bundles_TC/random/purchase(mob/user, datum/component/uplink/U) + var/list/uplink_items = U.uplink_items + var/list/possible_items = list() + for(var/category in uplink_items) + for(var/item in uplink_items[category]) + var/datum/uplink_item/I = uplink_items[category][item] + if(src == I || !I.item) + continue + if(U.telecrystals < I.cost) + continue + if(I.limited_stock == 0) + continue + possible_items += I + + if(possible_items.len) + var/datum/uplink_item/I = pick(possible_items) + SSblackbox.record_feedback("tally", "traitor_random_uplink_items_gotten", 1, initial(I.name)) + U.MakePurchase(user, I) + +/datum/uplink_item/bundles_TC/telecrystal + name = "1 Raw Telecrystal" + desc = "A telecrystal in its rawest and purest form; can be utilized on active uplinks to increase their telecrystal count." + item = /obj/item/stack/telecrystal + cost = 1 + surplus = 0 + cant_discount = TRUE + // Don't add telecrystals to the purchase_log since + // it's just used to buy more items (including itself!) + purchase_log_vis = FALSE + +/datum/uplink_item/bundles_TC/telecrystal/five + name = "5 Raw Telecrystals" + desc = "Five telecrystals in their rawest and purest form; can be utilized on active uplinks to increase their telecrystal count." + item = /obj/item/stack/telecrystal/five + cost = 5 + +/datum/uplink_item/bundles_TC/telecrystal/twenty + name = "20 Raw Telecrystals" + desc = "Twenty telecrystals in their rawest and purest form; can be utilized on active uplinks to increase their telecrystal count." + item = /obj/item/stack/telecrystal/twenty + cost = 20 + +// Dangerous Items + +/datum/uplink_item/dangerous/pistol + name = "Stechkin Pistol" + desc = "A small, easily concealable handgun that uses 10mm auto rounds in 8-round magazines and is compatible \ + with suppressors." + item = /obj/item/gun/ballistic/automatic/pistol + cost = 7 + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/dangerous/revolver + name = "Syndicate Revolver Kit" + desc = "A sleek box containing a brutally simple Syndicate revolver that fires .357 Magnum rounds and has 7 chambers, and an extra speedloader." + item = /obj/item/storage/box/syndie_kit/revolver + cost = 13 + surplus = 50 + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/dangerous/rawketlawnchair + name = "84mm Rocket Propelled Grenade Launcher" + desc = "A reusable rocket propelled grenade launcher preloaded with a low-yield 84mm HE round. \ + Guaranteed to send your target out with a bang or your money back!" + item = /obj/item/gun/ballistic/rocketlauncher + cost = 8 + surplus = 30 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/dangerous/antitank + name = "Anti Tank Pistol" + desc = "Essentially amounting to a sniper rifle with no stock and barrel (or indeed, any rifling at all), \ + this extremely dubious pistol is guaranteed to dislocate your wrists and hit the broad side of a barn! \ + Uses sniper ammo. \ + Bullets tend to veer off-course. We are not responsible for any unintentional damage or injury resulting from inaacuracy." + item = /obj/item/gun/ballistic/automatic/pistol/antitank/syndicate + cost = 14 + surplus = 25 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/dangerous/pie_cannon + name = "Banana Cream Pie Cannon" + desc = "A special pie cannon for a special clown, this gadget can hold up to 20 pies and automatically fabricates one every two seconds!" + cost = 10 + item = /obj/item/pneumatic_cannon/pie/selfcharge + surplus = 0 + include_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/dangerous/bananashield + name = "Bananium Energy Shield" + desc = "A clown's most powerful defensive weapon, this personal shield provides near immunity to ranged energy attacks \ + by bouncing them back at the ones who fired them. It can also be thrown to bounce off of people, slipping them, \ + and returning to you even if you miss. WARNING: DO NOT ATTEMPT TO STAND ON SHIELD WHILE DEPLOYED, EVEN IF WEARING ANTI-SLIP SHOES." + item = /obj/item/shield/energy/bananium + cost = 16 + surplus = 0 + include_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/dangerous/clownsword + name = "Bananium Energy Sword" + desc = "An energy sword that deals no damage, but will slip anyone it contacts, be it by melee attack, thrown \ + impact, or just stepping on it. Beware friendly fire, as even anti-slip shoes will not protect against it." + item = /obj/item/melee/transforming/energy/sword/bananium + cost = 3 + surplus = 0 + include_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/dangerous/bioterror + name = "Biohazardous Chemical Sprayer" + desc = "A handheld chemical sprayer that allows a wide dispersal of selected chemicals. Especially tailored by the Tiger \ + Cooperative, the deadly blend it comes stocked with will disorient, damage, and disable your foes... \ + Use with extreme caution, to prevent exposure to yourself and your fellow operatives." + item = /obj/item/reagent_containers/spray/chemsprayer/bioterror + cost = 20 + surplus = 0 + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/dangerous/throwingweapons + name = "Box of Throwing Weapons" + desc = "A box of shurikens and reinforced bolas from ancient Earth martial arts. They are highly effective \ + throwing weapons. The bolas can knock a target down and the shurikens will embed into limbs." + item = /obj/item/storage/box/syndie_kit/throwing_weapons + cost = 3 + +/datum/uplink_item/dangerous/shotgun + name = "Bulldog Shotgun" + desc = "A fully-loaded semi-automatic drum-fed shotgun. Compatible with all 12g rounds. Designed for close \ + quarter anti-personnel engagements." + item = /obj/item/gun/ballistic/automatic/shotgun/bulldog + cost = 8 + surplus = 40 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/dangerous/smg + name = "C-20r Submachine Gun" + desc = "A fully-loaded Scarborough Arms bullpup submachine gun. The C-20r fires .45 rounds with a \ + 24-round magazine and is compatible with suppressors." + item = /obj/item/gun/ballistic/automatic/c20r + cost = 10 + surplus = 40 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/dangerous/doublesword + name = "Double-Bladed Energy Sword" + desc = "The double-bladed energy sword does slightly more damage than a standard energy sword and will deflect \ + all energy projectiles, but requires two hands to wield." + item = /obj/item/twohanded/dualsaber + player_minimum = 25 + cost = 16 + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/dangerous/doublesword/get_discount() + return pick(4;0.8,2;0.65,1;0.5) + +/datum/uplink_item/dangerous/cxneb + name = "Dragon's Tooth Non-Eutactic Blade" + desc = "An illegal modification of a weapon that is functionally identical to the energy sword, \ + the Non-Eutactic Blade (NEB) forges a hardlight blade on-demand, \ + generating an extremely sharp, unbreakable edge that is guaranteed to satisfy your every need. \ + This particular model has a polychromic hardlight generator, allowing you to murder in style! \ + The illegal modifications bring this weapon up to par with the classic energy sword, and also gives it the energy sword's distinctive sounds." + item = /obj/item/melee/transforming/energy/sword/cx/traitor + cost = 8 + +/datum/uplink_item/dangerous/sword + name = "Energy Sword" + desc = "The energy sword is an edged weapon with a blade of pure energy. The sword is small enough to be \ + pocketed when inactive. Activating it produces a loud, distinctive noise." + item = /obj/item/melee/transforming/energy/sword/saber + cost = 8 + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/dangerous/shield + name = "Energy Shield" + desc = "An incredibly useful personal shield projector, capable of reflecting energy projectiles and defending \ + against other attacks. Pair with an Energy Sword for a killer combination." + item = /obj/item/shield/energy + cost = 16 + surplus = 20 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/dangerous/rapier + name = "Rapier" + desc = "A fancy rapier with a diamond tip piercing anything that it comes into contack with. \ + The rapier comes with its own sheath, this is rather noticeable as only the captain is known to carry a sheath. \ + The sheath itself can be used to block melee attacks only. Its also jet black colours." + item = /obj/item/storage/belt/sabre/rapier + cost = 8 + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/dangerous/flamethrower + name = "Flamethrower" + desc = "A flamethrower, fueled by a portion of highly flammable biotoxins stolen previously from Nanotrasen \ + stations. Make a statement by roasting the filth in their own greed. Use with caution." + item = /obj/item/flamethrower/full/tank + cost = 4 + surplus = 40 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/dangerous/flechettegun + name = "Flechette Launcher" + desc = "A compact bullpup that fires micro-flechettes.\ + Flechettes have very poor performance idividually, but can be very deadly in numbers. \ + Pre-loaded with armor piercing flechettes that are capable of puncturing most kinds of armor." + item = /obj/item/gun/ballistic/automatic/flechette + cost = 12 + surplus = 30 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/dangerous/rapid + name = "Gloves of the North Star" + desc = "These gloves let the user punch people very fast. Does not improve weapon attack speed or the meaty fists of a hulk." + item = /obj/item/clothing/gloves/rapid + cost = 8 + +/datum/uplink_item/dangerous/guardian + name = "Holoparasites" + desc = "Though capable of near sorcerous feats via use of hardlight holograms and nanomachines, they require an \ + organic host as a home base and source of fuel. Holoparasites come in various types and share damage with their host." + item = /obj/item/storage/box/syndie_kit/guardian + cost = 15 + refundable = TRUE + cant_discount = TRUE + surplus = 0 + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + player_minimum = 25 + restricted = TRUE + refund_path = /obj/item/guardiancreator/tech/choose/traitor + +/datum/uplink_item/dangerous/machinegun + name = "L6 Squad Automatic Weapon" + desc = "A fully-loaded Aussec Armoury belt-fed machine gun. \ + This deadly weapon has a massive 50-round magazine of devastating 1.95x129mm ammunition." + item = /obj/item/gun/ballistic/automatic/l6_saw + cost = 18 + surplus = 0 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/dangerous/carbine + name = "M-90gl Carbine" + desc = "A fully-loaded, specialized three-round burst carbine that fires 5.56mm ammunition from a 30 round magazine \ + with a toggleable 40mm underbarrel grenade launcher." + item = /obj/item/gun/ballistic/automatic/m90 + cost = 18 + surplus = 50 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/dangerous/powerfist + name = "Power Fist" + desc = "The power-fist is a metal gauntlet with a built-in piston-ram powered by an external gas supply.\ + Upon hitting a target, the piston-ram will extend forward to make contact for some serious damage. \ + Using a wrench on the piston valve will allow you to tweak the amount of gas used per punch to \ + deal extra damage and hit targets further. Use a screwdriver to take out any attached tanks." + item = /obj/item/melee/powerfist + cost = 8 + +/datum/uplink_item/dangerous/sniper + name = "Sniper Rifle" + desc = "Ranged fury, Syndicate style. Guaranteed to cause shock and awe or your TC back!" + item = /obj/item/gun/ballistic/automatic/sniper_rifle/syndicate + cost = 16 + surplus = 25 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/dangerous/bolt_action + name = "Surplus Rifle" + desc = "A horribly outdated bolt action weapon. You've got to be desperate to use this." + item = /obj/item/gun/ballistic/shotgun/boltaction + cost = 2 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/dangerous/foamsmg + name = "Toy Submachine Gun" + desc = "A fully-loaded Donksoft bullpup submachine gun that fires riot grade darts with a 20-round magazine." + item = /obj/item/gun/ballistic/automatic/c20r/toy + cost = 5 + surplus = 0 + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/dangerous/foammachinegun + name = "Toy Machine Gun" + desc = "A fully-loaded Donksoft belt-fed machine gun. This weapon has a massive 50-round magazine of devastating \ + riot grade darts, that can briefly incapacitate someone in just one volley." + item = /obj/item/gun/ballistic/automatic/l6_saw/toy + cost = 10 + surplus = 0 + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/dangerous/foampistol + name = "Toy Pistol with Riot Darts" + desc = "An innocent-looking toy pistol designed to fire foam darts. Comes loaded with riot-grade \ + darts effective at incapacitating a target." + item = /obj/item/gun/ballistic/automatic/toy/pistol/riot + cost = 3 + surplus = 10 + +// Stealthy Weapons + +/datum/uplink_item/stealthy_weapons/combatglovesplus + name = "Combat Gloves Plus" + desc = "A pair of gloves that are fireproof and shock resistant, however unlike the regular Combat Gloves this one uses nanotechnology \ + to learn the abilities of krav maga to the wearer." + item = /obj/item/clothing/gloves/krav_maga/combatglovesplus + cost = 5 + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + surplus = 0 + +/datum/uplink_item/stealthy_weapons/cqc + name = "CQC Manual" + desc = "A manual that teaches a single user tactical Close-Quarters Combat before self-destructing." + item = /obj/item/book/granter/martial/cqc + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + cost = 13 + surplus = 0 + +/datum/uplink_item/stealthy_weapons/dart_pistol + name = "Dart Pistol" + desc = "A miniaturized version of a normal syringe gun. It is very quiet when fired and can fit into any \ + space a small item can." + item = /obj/item/gun/syringe/syndicate + cost = 4 + surplus = 50 + +/datum/uplink_item/stealthy_weapons/dehy_carp + name = "Dehydrated Space Carp" + desc = "Looks like a plush toy carp, but just add water and it becomes a real-life space carp! Activate in \ + your hand before use so it knows not to kill you." + item = /obj/item/toy/plush/carpplushie/dehy_carp + cost = 1 + +/datum/uplink_item/stealthy_weapons/edagger + name = "Energy Dagger" + desc = "A dagger made of energy that looks and functions as a pen when off." + item = /obj/item/pen/edagger + cost = 2 + +/datum/uplink_item/stealthy_weapons/martialarts + name = "Sleeping Carp Scroll" + desc = "This scroll contains the secrets of an ancient martial arts technique. You will master unarmed combat, \ + deflecting all ranged weapon fire, but you also refuse to use dishonorable ranged weaponry." + item = /obj/item/book/granter/martial/carp + cost = 17 + surplus = 0 + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/stealthy_weapons/martialartstwo + name = "Rising Bass Scroll" + desc = "This scroll contains the secrets of an ancient martial arts technique. You will become proficient in fleeing situations, \ + and dodging all ranged weapon fire, but you will refuse to use dishonorable ranged weaponry." + item = /obj/item/book/granter/martial/bass + cost = 18 + surplus = 0 + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/stealthy_weapons/crossbow + name = "Miniature Energy Crossbow" + desc = "A short bow mounted across a tiller in miniature. Small enough to \ + fit into a pocket or slip into a bag unnoticed. It will synthesize \ + and fire bolts tipped with a paralyzing toxin that will briefly stun \ + targets and cause them to slur as if inebriated. It can produce an \ + infinite number of bolts, but takes time to automatically recharge \ + after each shot." + item = /obj/item/gun/energy/kinetic_accelerator/crossbow + cost = 12 + surplus = 50 + exclude_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/stealthy_weapons/traitor_chem_bottle + name = "Poison Kit" + desc = "An assortment of deadly chemicals packed into a compact box. Comes with a syringe for more precise application." + item = /obj/item/storage/box/syndie_kit/chemical + cost = 6 + surplus = 50 + +/datum/uplink_item/stealthy_weapons/romerol_kit + name = "Romerol" + desc = "A highly experimental bioterror agent which creates dormant nodules to be etched into the grey matter of the brain. \ + On death, these nodules take control of the dead body, causing limited revivification, \ + along with slurred speech, aggression, and the ability to infect others with this agent." + item = /obj/item/storage/box/syndie_kit/romerol + cost = 25 + cant_discount = TRUE + exclude_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/stealthy_weapons/sleepy_pen + name = "Sleepy Pen" + desc = "A syringe disguised as a functional pen, filled with a potent mix of drugs, including a \ + strong anesthetic and a chemical that prevents the target from speaking. \ + The pen holds one dose of the mixture, and can be refilled with any chemicals. Note that before the target \ + falls asleep, they will be able to move and act." + item = /obj/item/pen/sleepy + cost = 4 + exclude_modes = list(/datum/game_mode/nuclear) + +datum/uplink_item/stealthy_weapons/taeclowndo_shoes + name = "Tae-clown-do Shoes" + desc = "A pair of shoes for the most elite agents of the honkmotherland. They grant the mastery of taeclowndo with some honk-fu moves as long as they're worn." + cost = 12 + item = /obj/item/clothing/shoes/clown_shoes/taeclowndo + include_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/stealthy_weapons/suppressor + name = "Suppressor" + desc = "This suppressor will silence the shots of the weapon it is attached to for increased stealth and superior ambushing capability. \ + It is compatible with many small ballistic guns including the Stechkin and C-20r, but not revolvers or energy guns." + item = /obj/item/suppressor + cost = 1 + surplus = 10 + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/stealthy_weapons/soap + name = "Syndicate Soap" + desc = "A sinister-looking surfactant used to clean blood stains to hide murders and prevent DNA analysis. \ + You can also drop it underfoot to slip people." + item = /obj/item/soap/syndie + cost = 1 + surplus = 50 + +/datum/uplink_item/stealthy_weapons/soap_clusterbang + name = "Slipocalypse Clusterbang" + desc = "A traditional clusterbang grenade with a payload consisting entirely of Syndicate soap. Useful in any scenario!" + item = /obj/item/grenade/clusterbuster/soap + cost = 6 + +// Ammunition + +/datum/uplink_item/ammo/pistol + name = "10mm Handgun Magazine" + desc = "An additional 8-round 10mm magazine; compatible with the Stechkin Pistol. These rounds \ + are dirt cheap but are half as effective as .357 rounds." + item = /obj/item/ammo_box/magazine/m10mm + cost = 1 + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/ammo/pistolap + name = "10mm Armour Piercing Magazine" + desc = "An additional 8-round 10mm magazine; compatible with the Stechkin Pistol. \ + These rounds are less effective at injuring the target but penetrate protective gear." + item = /obj/item/ammo_box/magazine/m10mm/ap + cost = 2 + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/ammo/pistolhp + name = "10mm Hollow Point Magazine" + desc = "An additional 8-round 10mm magazine; compatible with the Stechkin Pistol. \ + These rounds are more damaging but ineffective against armour." + item = /obj/item/ammo_box/magazine/m10mm/hp + cost = 3 + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/ammo/pistolfire + name = "10mm Incendiary Magazine" + desc = "An additional 8-round 10mm magazine; compatible with the Stechkin Pistol. \ + Loaded with incendiary rounds which inflict little damage, but ignite the target." + item = /obj/item/ammo_box/magazine/m10mm/fire + cost = 2 + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/ammo/pistolzzz + name = "10mm Soporific Magazine" + desc = "An additional 8-round 10mm magazine; compatible with the Stechkin Pistol. Loaded with soporific rounds that put the target to sleep. \ + NOTE: Soporific is not instant acting due to the constraints of the round's scale. Will usually require three shots to take effect." + item = /obj/item/ammo_box/magazine/m10mm/soporific + cost = 2 + +/datum/uplink_item/ammo/shotgun + cost = 2 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/ammo/shotgun/bag + name = "12g Ammo Duffel Bag" + desc = "A duffel bag filled with enough 12g ammo to supply an entire team, at a discounted price." + item = /obj/item/storage/backpack/duffelbag/syndie/ammo/shotgun + cost = 12 + +/datum/uplink_item/ammo/shotgun/buck + name = "12g Buckshot Drum" + desc = "An additional 8-round buckshot magazine for use with the Bulldog shotgun. Front towards enemy." + item = /obj/item/ammo_box/magazine/m12g + +/datum/uplink_item/ammo/shotgun/dragon + name = "12g Dragon's Breath Drum" + desc = "An alternative 8-round dragon's breath magazine for use in the Bulldog shotgun. \ + 'I'm a fire starter, twisted fire starter!'" + item = /obj/item/ammo_box/magazine/m12g/dragon + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/ammo/shotgun/meteor + name = "12g Meteorslug Shells" + desc = "An alternative 8-round meteorslug magazine for use in the Bulldog shotgun. \ + Great for blasting airlocks off their frames and knocking down enemies." + item = /obj/item/ammo_box/magazine/m12g/meteor + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/ammo/shotgun/scatter + name = "12g Scatter Laser shot Slugs" + desc = "An alternative 8-round Scatter Laser Shot magazine for use in the Bulldog shotgun." + item = /obj/item/ammo_box/magazine/m12g/scatter + cost = 4 // most armor has less laser protection then bullet + +/datum/uplink_item/ammo/shotgun/slug + name = "12g Slug Drum" + desc = "An additional 8-round slug magazine for use with the Bulldog shotgun. \ + Now 8 times less likely to shoot your pals." + cost = 3 + item = /obj/item/ammo_box/magazine/m12g/slug + +/datum/uplink_item/ammo/shotgun/stun + name = "12g Stun Slug Drum" + desc = "An alternative 8-round stun slug magazine for use with the Bulldog shotgun. \ + Saying that they're completely non-lethal would be lying." + item = /obj/item/ammo_box/magazine/m12g/stun + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/ammo/revolver + name = ".357 Speed Loader" + desc = "A speed loader that contains seven additional .357 Magnum rounds, and can be further reloaded with individual bullets; usable with the Syndicate revolver. \ + For when you really need a lot of things dead." + item = /obj/item/ammo_box/a357 + cost = 3 + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/ammo/revolver/ap + name = ".357 Armor Piercing Speed Loader" + desc = "A speed loader that contains seven additional .357 AP Magnum rounds; usable with the Syndicate revolver. \ + Cuts through like a hot knife through butter." + item = /obj/item/ammo_box/a357/ap + +/datum/uplink_item/ammo/a40mm + name = "40mm Grenade" + desc = "A 40mm HE grenade for use with the M-90gl's under-barrel grenade launcher. \ + Your teammates will ask you to not shoot these down small hallways." + item = /obj/item/ammo_casing/a40mm + cost = 2 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/ammo/smg/bag + name = ".45 Ammo Duffel Bag" + desc = "A duffel bag filled with enough .45 ammo to supply an entire team, at a discounted price." + item = /obj/item/storage/backpack/duffelbag/syndie/ammo/smg + cost = 20 //instead of 27 TC + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/ammo/smg + name = ".45 SMG Magazine" + desc = "An additional 24-round .45 magazine suitable for use with the C-20r submachine gun." + item = /obj/item/ammo_box/magazine/smgm45 + cost = 3 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/ammo/sniper + cost = 4 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/ammo/sniper/basic + name = ".50 Magazine" + desc = "An additional standard 6-round magazine for use with .50 sniper rifles." + item = /obj/item/ammo_box/magazine/sniper_rounds + +/datum/uplink_item/ammo/sniper/penetrator + name = ".50 Penetrator Magazine" + desc = "A 5-round magazine of penetrator ammo designed for use with .50 sniper rifles. \ + Can pierce walls and multiple enemies." + item = /obj/item/ammo_box/magazine/sniper_rounds/penetrator + cost = 5 + +/datum/uplink_item/ammo/sniper/soporific + name = ".50 Soporific Magazine" + desc = "A 3-round magazine of soporific ammo designed for use with .50 sniper rifles. Put your enemies to sleep today!" + item = /obj/item/ammo_box/magazine/sniper_rounds/soporific + cost = 6 + +/datum/uplink_item/ammo/carbine + name = "5.56mm Toploader Magazine" + desc = "An additional 30-round 5.56mm magazine; suitable for use with the M-90gl carbine. \ + These bullets pack less punch than 7.12x82mm rounds, but they still offer more power than .45 ammo." + item = /obj/item/ammo_box/magazine/m556 + cost = 4 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/ammo/machinegun + cost = 6 + surplus = 0 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/ammo/machinegun/basic + name = "1.95x129mm Box Magazine" + desc = "A 50-round magazine of 1.95x129mm ammunition for use with the L6 SAW. \ + By the time you need to use this, you'll already be standing on a pile of corpses" + item = /obj/item/ammo_box/magazine/mm195x129 + +/datum/uplink_item/ammo/machinegun/ap + name = "1.95x129mm (Armor Penetrating) Box Magazine" + desc = "A 50-round magazine of 1.95x129mm ammunition for use in the L6 SAW; equipped with special properties \ + to puncture even the most durable armor." + item = /obj/item/ammo_box/magazine/mm195x129/ap + cost = 9 + +/datum/uplink_item/ammo/machinegun/hollow + name = "1.95x129mm (Hollow-Point) Box Magazine" + desc = "A 50-round magazine of 1.95x129mm ammunition for use in the L6 SAW; equipped with hollow-point tips to help \ + with the unarmored masses of crew." + item = /obj/item/ammo_box/magazine/mm195x129/hollow + +/datum/uplink_item/ammo/machinegun/incen + name = "1.95x129mm (Incendiary) Box Magazine" + desc = "A 50-round magazine of 1.95x129mm ammunition for use in the L6 SAW; tipped with a special flammable \ + mixture that'll ignite anyone struck by the bullet. Some men just want to watch the world burn." + item = /obj/item/ammo_box/magazine/mm195x129/incen + +/datum/uplink_item/ammo/rocket + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/ammo/rocket/basic + name = "84mm HE Rocket" + desc = "A low-yield anti-personnel HE rocket. Gonna take you out in style!" + item = /obj/item/ammo_casing/caseless/rocket + cost = 4 + +/datum/uplink_item/ammo/rocket/hedp + name = "84mm HEDP Rocket" + desc = "A high-yield HEDP rocket; extremely effective against armored targets, as well as surrounding personnel. \ + Strike fear into the hearts of your enemies." + item = /obj/item/ammo_casing/caseless/rocket/hedp + cost = 6 + +/datum/uplink_item/ammo/pistolaps + name = "9mm Handgun Magazine" + desc = "An additional 15-round 9mm magazine, compatible with the Stechkin APS pistol, found in the Spetsnaz Pyro bundle." + item = /obj/item/ammo_box/magazine/pistolm9mm + cost = 2 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/ammo/flechetteap + name = "Armor Piercing Flechette Magazine" + desc = "An additional 40-round flechette magazine; compatible with the Flechette Launcer. \ + Loaded with armor piercing flechettes that very nearly ignore armor, but are not very effective agaisnt flesh." + item = /obj/item/ammo_box/magazine/flechette + cost = 2 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/ammo/flechettes + name = "Serrated Flechette Magazine" + desc = "An additional 40-round flechette magazine; compatible with the Flechette Launcer. \ + Loaded with serrated flechettes that shreds flesh, but is stopped dead in its tracks by armor. \ + These flechettes are highly likely to sever arteries, and even limbs." + item = /obj/item/ammo_box/magazine/flechette/s + cost = 2 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/ammo/toydarts + name = "Box of Riot Darts" + desc = "A box of 40 Donksoft riot darts, for reloading any compatible foam dart magazine. Don't forget to share!" + item = /obj/item/ammo_box/foambox/riot + cost = 2 + surplus = 0 + illegal_tech = FALSE + +/datum/uplink_item/ammo/bioterror + name = "Box of Bioterror Syringes" + desc = "A box full of preloaded syringes, containing various chemicals that seize up the victim's motor \ + and broca systems, making it impossible for them to move or speak for some time." + item = /obj/item/storage/box/syndie_kit/bioterror + cost = 6 + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/ammo/bolt_action + name = "Surplus Rifle Clip" + desc = "A stripper clip used to quickly load bolt action rifles. Contains 5 rounds." + item = /obj/item/ammo_box/a762 + cost = 1 + include_modes = list(/datum/game_mode/nuclear) + +//Grenades and Explosives + +/datum/uplink_item/explosives/bioterrorfoam + name = "Bioterror Foam Grenade" + desc = "A powerful chemical foam grenade which creates a deadly torrent of foam that will mute, blind, confuse, \ + mutate, and irritate carbon lifeforms. Specially brewed by Tiger Cooperative chemical weapons specialists \ + using additional spore toxin. Ensure suit is sealed before use." + item = /obj/item/grenade/chem_grenade/bioterrorfoam + cost = 5 + surplus = 35 + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/explosives/bombanana + name = "Bombanana" + desc = "A banana with an explosive taste! discard the peel quickly, as it will explode with the force of a syndicate minibomb \ + a few seconds after the banana is eaten." + item = /obj/item/reagent_containers/food/snacks/grown/banana/bombanana + cost = 4 //it is a bit cheaper than a minibomb because you have to take off your helmet to eat it, which is how you arm it + surplus = 0 + include_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/explosives/buzzkill + name = "Buzzkill Grenade Box" + desc = "A box with three grenades that release a swarm of angry bees upon activation. These bees indiscriminately attack friend or foe \ + with random toxins. Courtesy of the BLF and Tiger Cooperative." + item = /obj/item/storage/box/syndie_kit/bee_grenades + cost = 15 + surplus = 35 + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/explosives/c4 + name = "Composition C-4" + desc = "C-4 is plastic explosive of the common variety Composition C. You can use it to breach walls, sabotage equipment, or connect \ + an assembly to it in order to alter the way it detonates. It can be attached to almost all objects and has a modifiable timer with a \ + minimum setting of 10 seconds." + item = /obj/item/grenade/plastic/c4 + cost = 1 + +/datum/uplink_item/explosives/c4bag + name = "Bag of C-4 explosives" + desc = "Because sometimes quantity is quality. Contains 10 C-4 plastic explosives." + item = /obj/item/storage/backpack/duffelbag/syndie/c4 + cost = 9 //10% discount! + cant_discount = TRUE + +/datum/uplink_item/explosives/x4bag + name = "Bag of X-4 explosives" + desc = "Contains 3 X-4 shaped plastic explosives. Similar to C4, but with a stronger blast that is directional instead of circular. \ + X-4 can be placed on a solid surface, such as a wall or window, and it will blast through the wall, injuring anything on the opposite side, while being safer to the user. \ + For when you want a controlled explosion that leaves a wider, deeper, hole." + item = /obj/item/storage/backpack/duffelbag/syndie/x4 + cost = 4 // + cant_discount = TRUE + +/datum/uplink_item/explosives/clown_bomb_clownops + name = "Clown Bomb" + desc = "The Clown bomb is a hilarious device capable of massive pranks. It has an adjustable timer, \ + with a minimum of 60 seconds, and can be bolted to the floor with a wrench to prevent \ + movement. The bomb is bulky and cannot be moved; upon ordering this item, a smaller beacon will be \ + transported to you that will teleport the actual bomb to it upon activation. Note that this bomb can \ + be defused, and some crew may attempt to do so." + item = /obj/item/sbeacondrop/clownbomb + cost = 15 + surplus = 0 + include_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/explosives/detomatix + name = "Detomatix PDA Cartridge" + desc = "When inserted into a personal digital assistant, this cartridge gives you four opportunities to \ + detonate PDAs of crewmembers who have their message feature enabled. \ + The concussive effect from the explosion will knock the recipient out for a short period, and deafen them for longer." + item = /obj/item/cartridge/virus/syndicate + cost = 5 + restricted = TRUE + +/datum/uplink_item/explosives/emp + name = "EMP Grenades and Implanter Kit" + desc = "A box that contains five EMP grenades and an EMP implant with three uses. Useful to disrupt communications, \ + security's energy weapons and silicon lifeforms when you're in a tight spot." + item = /obj/item/storage/box/syndie_kit/emp + cost = 2 + +/datum/uplink_item/explosives/virus_grenade + name = "Fungal Tuberculosis Grenade" + desc = "A primed bio-grenade packed into a compact box. Comes with five Bio Virus Antidote Kit (BVAK) \ + autoinjectors for rapid application on up to two targets each, a syringe, and a bottle containing \ + the BVAK solution." + item = /obj/item/storage/box/syndie_kit/tuberculosisgrenade + cost = 8 + surplus = 35 + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + restricted = TRUE + +/datum/uplink_item/explosives/grenadier + name = "Grenadier's belt" + desc = "A belt containing 26 lethally dangerous and destructive grenades. Comes with an extra multitool and screwdriver." + item = /obj/item/storage/belt/grenade/full + include_modes = list(/datum/game_mode/nuclear) + cost = 22 + surplus = 0 + +/datum/uplink_item/explosives/pizza_bomb + name = "Pizza Bomb" + desc = "A pizza box with a bomb cunningly attached to the lid. The timer needs to be set by opening the box; afterwards, \ + opening the box again will trigger the detonation after the timer has elapsed. Comes with free pizza, for you or your target!" + item = /obj/item/pizzabox/bomb + cost = 6 + surplus = 8 + +/datum/uplink_item/explosives/syndicate_bomb + name = "Syndicate Bomb" + desc = "The Syndicate bomb is a fearsome device capable of massive destruction. It has an adjustable timer, \ + with a minimum of 60 seconds, and can be bolted to the floor with a wrench to prevent \ + movement. The bomb is bulky and cannot be moved; upon ordering this item, a smaller beacon will be \ + transported to you that will teleport the actual bomb to it upon activation. Note that this bomb can \ + be defused, and some crew may attempt to do so." + item = /obj/item/sbeacondrop/bomb + cost = 11 + +/datum/uplink_item/explosives/syndicate_detonator + name = "Syndicate Detonator" + desc = "The Syndicate detonator is a companion device to the Syndicate bomb. Simply press the included button \ + and an encrypted radio frequency will instruct all live Syndicate bombs to detonate. \ + Useful for when speed matters or you wish to synchronize multiple bomb blasts. Be sure to stand clear of \ + the blast radius before using the detonator." + item = /obj/item/syndicatedetonator + cost = 3 + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/explosives/syndicate_minibomb + name = "Syndicate Minibomb" + desc = "The minibomb is a grenade with a five-second fuse. Upon detonation, it will create a small hull breach \ + in addition to dealing high amounts of damage to nearby personnel." + item = /obj/item/grenade/syndieminibomb + cost = 6 + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/explosives/tearstache + name = "Teachstache Grenade" + desc = "A teargas grenade that launches sticky moustaches onto the face of anyone not wearing a clown or mime mask. The moustaches will \ + remain attached to the face of all targets for one minute, preventing the use of breath masks and other such devices." + item = /obj/item/grenade/chem_grenade/teargas/moustache + cost = 3 + surplus = 0 + include_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/explosives/viscerators + name = "Viscerator Delivery Grenade" + desc = "A unique grenade that deploys a swarm of viscerators upon activation, which will chase down and shred \ + any non-operatives in the area." + item = /obj/item/grenade/spawnergrenade/manhacks + cost = 5 + surplus = 35 + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + + +//Support and Mechs + +/datum/uplink_item/support/clown_reinforcement + name = "Clown Reinforcements" + desc = "Call in an additional clown to share the fun, equipped with full starting gear, but no telecrystals." + item = /obj/item/antag_spawner/nuke_ops/clown + cost = 20 + include_modes = list(/datum/game_mode/nuclear/clown_ops) + restricted = TRUE + +/datum/uplink_item/support/reinforcement + name = "Reinforcements" + desc = "Call in an additional team member. They won't come with any gear, so you'll have to save some telecrystals \ + to arm them as well." + item = /obj/item/antag_spawner/nuke_ops + cost = 25 + refundable = TRUE + include_modes = list(/datum/game_mode/nuclear) + restricted = TRUE + +/datum/uplink_item/support/reinforcement/assault_borg + name = "Syndicate Assault Cyborg" + desc = "A cyborg designed and programmed for systematic extermination of non-Syndicate personnel. \ + Comes equipped with a self-resupplying LMG, a grenade launcher, energy sword, emag, pinpointer, flash and crowbar." + item = /obj/item/antag_spawner/nuke_ops/borg_tele/assault + refundable = TRUE + cost = 65 + restricted = TRUE + +/datum/uplink_item/support/reinforcement/medical_borg + name = "Syndicate Medical Cyborg" + desc = "A combat medical cyborg. Has limited offensive potential, but makes more than up for it with its support capabilities. \ + It comes equipped with a nanite hypospray, a medical beamgun, combat defibrillator, full surgical kit including an energy saw, an emag, pinpointer and flash. \ + Thanks to its organ storage bag, it can perform surgery as well as any humanoid." + item = /obj/item/antag_spawner/nuke_ops/borg_tele/medical + refundable = TRUE + cost = 35 + restricted = TRUE + +/datum/uplink_item/support/reinforcement/saboteur_borg + name = "Syndicate Saboteur Cyborg" + desc = "A streamlined engineering cyborg, equipped with covert modules. Also incapable of leaving the welder in the shuttle. \ + Aside from regular Engineering equipment, it comes with a special destination tagger that lets it traverse disposals networks. \ + Its chameleon projector lets it disguise itself as a Nanotrasen cyborg, on top it has thermal vision and a pinpointer." + item = /obj/item/antag_spawner/nuke_ops/borg_tele/saboteur + refundable = TRUE + cost = 35 + restricted = TRUE + +/datum/uplink_item/support/gygax + name = "Dark Gygax Exosuit" + desc = "A lightweight exosuit, painted in a dark scheme. Its speed and equipment selection make it excellent \ + for hit-and-run style attacks. Features an incendiary carbine, flash bang launcher, teleporter, ion thrusters and a Tesla energy array." + item = /obj/mecha/combat/gygax/dark/loaded + cost = 80 + +/datum/uplink_item/support/honker + name = "Dark H.O.N.K." + desc = "A clown combat mech equipped with bombanana peel and tearstache grenade launchers, as well as the ubiquitous HoNkER BlAsT 5000." + item = /obj/mecha/combat/honker/dark/loaded + cost = 80 + include_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/support/mauler + name = "Mauler Exosuit" + desc = "A massive and incredibly deadly military-grade exosuit. Features long-range targeting, thrust vectoring \ + and deployable smoke. Comes equipped with an LMG, scattershot carbine, missile rack, an antiprojectile armor booster and a Tesla energy array." + item = /obj/mecha/combat/marauder/mauler/loaded + cost = 140 + +// Stealth Items + +/datum/uplink_item/stealthy_tools/agent_card + name = "Agent Identification Card" + desc = "Agent cards prevent artificial intelligences from tracking the wearer, and can copy access \ + from other identification cards. The access is cumulative, so scanning one card does not erase the \ + access gained from another. In addition, they can be forged to display a new assignment and name. \ + This can be done an unlimited amount of times. Some Syndicate areas and devices can only be accessed \ + with these cards." + item = /obj/item/card/id/syndicate + cost = 2 + +/datum/uplink_item/stealthy_tools/ai_detector + name = "Artificial Intelligence Detector" + desc = "A functional multitool that turns red when it detects an artificial intelligence watching it, and can be \ + activated to display their exact viewing location and nearby security camera blind spots. Knowing when \ + an artificial intelligence is watching you is useful for knowing when to maintain cover, and finding nearby \ + blind spots can help you identify escape routes." + item = /obj/item/multitool/ai_detect + cost = 1 + +/datum/uplink_item/stealthy_tools/chameleon + name = "Chameleon Kit" + desc = "A set of items that contain chameleon technology allowing you to disguise as pretty much anything on the station, and more! \ + Due to budget cuts, the shoes don't provide protection against slipping." + item = /obj/item/storage/box/syndie_kit/chameleon + cost = 2 + exclude_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/stealthy_tools/chameleon_proj + name = "Chameleon Projector" + desc = "Projects an image across a user, disguising them as an object scanned with it, as long as they don't \ + move the projector from their hand. Disguised users move slowly, and projectiles pass over them." + item = /obj/item/chameleon + cost = 7 + +/datum/uplink_item/stealthy_tools/codespeak_manual + name = "Codespeak Manual" + desc = "Syndicate agents can be trained to use a series of codewords to convey complex information, which sounds like random concepts and drinks to anyone listening. \ + This manual teaches you this Codespeak. You can also hit someone else with the manual in order to teach them. This is the deluxe edition, which has unlimited uses." + item = /obj/item/codespeak_manual/unlimited + cost = 3 + +/datum/uplink_item/stealthy_tools/combatbananashoes + name = "Combat Banana Shoes" + desc = "While making the wearer immune to most slipping attacks like regular combat clown shoes, these shoes \ + can generate a large number of synthetic banana peels as the wearer walks, slipping up would-be pursuers. They also \ + squeak significantly louder." + item = /obj/item/clothing/shoes/clown_shoes/banana_shoes/combat + cost = 6 + surplus = 0 + include_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/stealthy_tools/emplight + name = "EMP Flashlight" + desc = "A small, self-recharging, short-ranged EMP device disguised as a working flashlight. \ + Useful for disrupting headsets, cameras, doors, lockers and borgs during stealth operations. \ + Attacking a target with this flashlight will direct an EM pulse at it and consumes a charge." + item = /obj/item/flashlight/emp + cost = 2 + surplus = 30 + +/datum/uplink_item/stealthy_tools/failsafe + name = "Failsafe Uplink Code" + desc = "When entered the uplink will self-destruct immidiately." + item = /obj/effect/gibspawner/generic + cost = 1 + surplus = 0 + restricted = TRUE + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/stealthy_tools/failsafe/spawn_item(spawn_path, mob/user, datum/component/uplink/U) + if(!U) + return + U.failsafe_code = U.generate_code() + to_chat(user, "The new failsafe code for this uplink is now : [U.failsafe_code].") + if(user.mind) + user.mind.store_memory("Failsafe code for [U.parent] : [U.failsafe_code]") + return U.parent //For log icon + +/datum/uplink_item/stealthy_tools/mulligan + name = "Mulligan" + desc = "Screwed up and have security on your tail? This handy syringe will give you a completely new identity \ + and appearance." + item = /obj/item/reagent_containers/syringe/mulligan + cost = 3 + surplus = 30 + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/stealthy_tools/syndigaloshes + name = "No-Slip Chameleon Shoes" + desc = "These shoes will allow the wearer to run on wet floors and slippery objects without falling down. \ + They do not work on heavily lubricated surfaces." + item = /obj/item/clothing/shoes/chameleon/noslip + cost = 2 + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + player_minimum = 20 + +/datum/uplink_item/stealthy_tools/syndigaloshes/nuke + item = /obj/item/clothing/shoes/chameleon/noslip + cost = 4 + exclude_modes = list() + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/stealthy_tools/jammer + name = "Radio Jammer" + desc = "This device will disrupt any nearby outgoing radio communication when activated. Does not affect binary chat." + item = /obj/item/jammer + cost = 5 + +/datum/uplink_item/stealthy_tools/smugglersatchel + name = "Smuggler's Satchel" + desc = "This satchel is thin enough to be hidden in the gap between plating and tiling; great for stashing \ + your stolen goods. Comes with a crowbar and a floor tile inside. Properly hidden satchels have been \ + known to survive intact even beyond the current shift. " + item = /obj/item/storage/backpack/satchel/flat + cost = 2 + surplus = 30 + +//Space Suits and Hardsuits + +/datum/uplink_item/suits/turtlenck + name = "Tactical Turtleneck" + desc = "A slightly armored suit that has no sensor on them, if someone sees you in this hope they think its a fake." + item = /obj/item/clothing/under/syndicate + cost = 1 + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //They already get these + +/datum/uplink_item/suits/turtlenck_skirt + name = "Tactical Skirtleneck" + desc = "A slightly armored suit that has no sensor on them, if someone sees you in this hope they think its a fake." + item = /obj/item/clothing/under/syndicate/skirt + cost = 1 + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //They already get these + +/datum/uplink_item/suits/padding + name = "Soft Padding" + desc = "Padding to add to a jumpsuit to help against melee and bullets." + item = /obj/item/clothing/accessory/padding + cost = 2 + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/suits/kevlar + name = "Kevlar sheets" + desc = "Kevlar sheets to add to jumpsuit to help against bullets and melee." + item = /obj/item/clothing/accessory/kevlar + cost = 2 + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/suits/plastic + name = "Plastic sheet" + desc = "Plastic body sheet to add to a jumpsuit to help against laser and energy harm." + item = /obj/item/clothing/accessory/plastics + cost = 2 + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/suits/space_suit + name = "Syndicate Space Suit" + desc = "This red and black Syndicate space suit is less encumbering than Nanotrasen variants, \ + fits inside bags, and has a weapon slot. Nanotrasen crew members are trained to report red space suit \ + sightings, however." + item = /obj/item/storage/box/syndie_kit/space + cost = 4 + +/datum/uplink_item/suits/hardsuit + name = "Syndicate Hardsuit" + desc = "The feared suit of a Syndicate nuclear agent. Features slightly better armoring and a built in jetpack \ + that runs off standard atmospheric tanks. Toggling the suit in and out of \ + combat mode will allow you all the mobility of a loose fitting uniform without sacrificing armoring. \ + Additionally the suit is collapsible, making it small enough to fit within a backpack. \ + Nanotrasen crew who spot these suits are known to panic." + item = /obj/item/clothing/suit/space/hardsuit/syndi + cost = 8 + exclude_modes = list(/datum/game_mode/nuclear) //you can't buy it in nuke, because the elite hardsuit costs the same while being better + +/datum/uplink_item/suits/hardsuit/elite + name = "Elite Syndicate Hardsuit" + desc = "An upgraded, elite version of the Syndicate hardsuit. It features fireproofing, and also \ + provides the user with superior armor and mobility compared to the standard Syndicate hardsuit." + item = /obj/item/clothing/suit/space/hardsuit/syndi/elite + cost = 8 + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + exclude_modes = list() + +/datum/uplink_item/suits/hardsuit/shielded + name = "Shielded Syndicate Hardsuit" + desc = "An upgraded version of the standard Syndicate hardsuit. It features a built-in energy shielding system. \ + The shields can handle up to three impacts within a short duration and will rapidly recharge while not under fire." + item = /obj/item/clothing/suit/space/hardsuit/shielded/syndi + cost = 30 + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + exclude_modes = list() + +// Devices and Tools + +/datum/uplink_item/device_tools/emag + name = "Cryptographic Sequencer" + desc = "The cryptographic sequencer, electromagnetic card, or emag, is a small card that unlocks hidden functions \ + in electronic devices, subverts intended functions, and easily breaks security mechanisms." + item = /obj/item/card/emag + cost = 6 + +/datum/uplink_item/device_tools/emagrecharge + name = "Electromagnet Charging Device" + desc = "A small device intended for recharging Cryptographic Sequencers. Using it will add five extra charges to the Cryptographic Sequencer." + item = /obj/item/emagrecharge + cost = 2 + +/datum/uplink_item/device_tools/phantomthief + name = "Syndicate Mask" + desc = "A cheap plastic mask fitted with an adrenaline autoinjector, which can be used by simply tensing your muscles" + item = /obj/item/clothing/glasses/phantomthief/syndicate + cost = 2 + +/datum/uplink_item/device_tools/cutouts + name = "Adaptive Cardboard Cutouts" + desc = "These cardboard cutouts are coated with a thin material that prevents discoloration and makes the images on them appear more lifelike. \ + This pack contains three as well as a crayon for changing their appearances." + item = /obj/item/storage/box/syndie_kit/cutouts + cost = 1 + surplus = 20 + +/datum/uplink_item/device_tools/assault_pod + name = "Assault Pod Targeting Device" + desc = "Use this to select the landing zone of your assault pod." + item = /obj/item/assault_pod + cost = 30 + surplus = 0 + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + restricted = TRUE + +/datum/uplink_item/device_tools/binary + name = "Binary Translator Key" + desc = "A key that, when inserted into a radio headset, allows you to listen to and talk with silicon-based lifeforms, \ + such as AI units and cyborgs, over their private binary channel. Caution should \ + be taken while doing this, as unless they are allied with you, they are programmed to report such intrusions." + item = /obj/item/encryptionkey/binary + cost = 2 + surplus = 75 + restricted = TRUE + +/datum/uplink_item/device_tools/magboots + name = "Blood-Red Magboots" + desc = "A pair of magnetic boots with a Syndicate paintjob that assist with freer movement in space or on-station \ + during gravitational generator failures. These reverse-engineered knockoffs of Nanotrasen's \ + 'Advanced Magboots' slow you down in simulated-gravity environments much like the standard issue variety." + item = /obj/item/clothing/shoes/magboots/syndie + cost = 2 + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/device_tools/compressionkit + name = "Bluespace Compression Kit" + desc = "A modified version of a BSRPED that can be used to reduce the size of most items while retaining their original functions! \ + Does not work on storage items. \ + Recharge using bluespace crystals. \ + Comes with 5 charges." + item = /obj/item/compressionkit + cost = 5 + +/datum/uplink_item/device_tools/briefcase_launchpad + name = "Briefcase Launchpad" + desc = "A briefcase containing a launchpad, a device able to teleport items and people to and from targets up to twenty tiles away from the briefcase. \ + Also includes a remote control, disguised as an ordinary folder. Touch the briefcase with the remote to link it." + surplus = 0 + item = /obj/item/storage/briefcase/launchpad + cost = 6 + +/datum/uplink_item/device_tools/camera_bug + name = "Camera Bug" + desc = "Enables you to view all cameras on the main network, set up motion alerts and track a target. \ + Bugging cameras allows you to disable them remotely." + item = /obj/item/camera_bug + cost = 1 + surplus = 90 + +/datum/uplink_item/device_tools/military_belt + name = "Chest Rig" + desc = "A robust seven-slot set of webbing that is capable of holding all manner of tactical equipment." + item = /obj/item/storage/belt/military + cost = 1 + exclude_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/device_tools/fakenucleardisk + name = "Decoy Nuclear Authentication Disk" + desc = "It's just a normal disk. Visually it's identical to the real deal, but it won't hold up under closer scrutiny by the Captain. \ + Don't try to give this to us to complete your objective, we know better!" + item = /obj/item/disk/nuclear/fake + cost = 1 + surplus = 1 + +/datum/uplink_item/device_tools/frame + name = "F.R.A.M.E. PDA Cartridge" + desc = "When inserted into a personal digital assistant, this cartridge gives you five PDA viruses which \ + when used cause the targeted PDA to become a new uplink with zero TCs, and immediately become unlocked. \ + You will receive the unlock code upon activating the virus, and the new uplink may be charged with \ + telecrystals normally." + item = /obj/item/cartridge/virus/frame + cost = 2 + restricted = TRUE + +/datum/uplink_item/device_tools/toolbox + name = "Full Syndicate Toolbox" + desc = "The Syndicate toolbox is a suspicious black and red. It comes loaded with a full tool set including a \ + multitool and combat gloves that are resistant to shocks and heat." + item = /obj/item/storage/toolbox/syndicate + cost = 1 + +/datum/uplink_item/device_tools/syndie_glue + name = "Glue" + desc = "A cheap bottle of one use syndicate brand super glue. \ + Use on any item to make it undroppable. \ + Be careful not to glue an item you're already holding!" + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + item = /obj/item/syndie_glue + cost = 2 + +/datum/uplink_item/device_tools/hacked_module + name = "Hacked AI Law Upload Module" + desc = "When used with an upload console, this module allows you to upload priority laws to an artificial intelligence. \ + Be careful with wording, as artificial intelligences may look for loopholes to exploit." + item = /obj/item/aiModule/syndicate + cost = 9 + +/datum/uplink_item/device_tools/medgun + name = "Medbeam Gun" + desc = "A wonder of Syndicate engineering, the Medbeam gun, or Medi-Gun enables a medic to keep his fellow \ + operatives in the fight, even while under fire. Don't cross the streams!" + item = /obj/item/gun/medbeam + cost = 15 + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/device_tools/nutcracker + name = "Nutcracker" + desc = "An oversized version of what you'd initially expect here. Big enough to crush skulls." + item = /obj/item/nutcracker + cost = 1 + +/datum/uplink_item/device_tools/singularity_beacon + name = "Power Beacon" + desc = "When screwed to wiring attached to an electric grid and activated, this large device pulls any \ + active gravitational singularities or tesla balls towards it (provided they are not safely \ + contained), as well as increasing the odds of incoming meteor waves. \ + Because of its size, it cannot be carried. Ordering this sends you a small beacon \ + that will teleport the larger beacon to your location upon activation." + item = /obj/item/sbeacondrop + cost = 14 + +/datum/uplink_item/device_tools/powersink + name = "Power Sink" + desc = "When screwed to wiring attached to a power grid and activated, this large device lights up and places excessive \ + load on the grid, causing a station-wide blackout. The sink is large and cannot be stored in most \ + traditional bags and boxes. Caution: Will explode if the powernet contains sufficient amounts of energy." + item = /obj/item/powersink + cost = 6 + +/datum/uplink_item/device_tools/rad_laser + name = "Radioactive Microlaser" + desc = "A radioactive microlaser disguised as a standard Nanotrasen health analyzer. When used, it emits a \ + powerful burst of radiation, which, after a short delay, can incapacitate all but the most protected \ + of humanoids. It has two settings: intensity, which controls the power of the radiation, \ + and wavelength, which controls the delay before the effect kicks in." + item = /obj/item/healthanalyzer/rad_laser + cost = 3 + +/datum/uplink_item/device_tools/stimpack + name = "Stimpack" + desc = "Stimpacks, the tool of many great heroes, make you nearly immune to stuns and knockdowns for about \ + 5 minutes after injection." + item = /obj/item/reagent_containers/syringe/stimulants + cost = 5 + surplus = 90 + +/datum/uplink_item/device_tools/medkit + name = "Syndicate Combat Medic Kit" + desc = "This first aid kit is a suspicious brown and red. Included is a combat stimulant injector \ + for rapid healing, a medical night vision HUD for quick identification of injured personnel, \ + and other supplies helpful for a field medic." + item = /obj/item/storage/firstaid/tactical/nukeop + cost = 4 + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/device_tools/surgerybag + name = "Syndicate Surgery Duffel Bag" + desc = "The Syndicate surgery duffel bag is a toolkit containing all surgery tools, surgical drapes, \ + a Syndicate brand MMI, a straitjacket, and a muzzle." + item = /obj/item/storage/backpack/duffelbag/syndie/surgery + cost = 3 + +/datum/uplink_item/device_tools/surgerybag_adv + name = "Advanced Syndicate Surgery Duffel Bag" + desc = "The Syndicate surgery duffel bag is a toolkit containing all advanced surgery tools, surgical drapes, \ + a Syndicate brand MMI, a straitjacket, a muzzle, and an outdated, yet still useful Combat Medic Kit." + item = /obj/item/storage/backpack/duffelbag/syndie/surgery_adv + cost = 10 + +/datum/uplink_item/device_tools/brainwash_disk + name = "Brainwashing Surgery Program" + desc = "A disk containing the procedure to perform a brainwashing surgery, allowing you to implant an objective onto a target. \ + Insert into an Operating Console to enable the procedure." + item = /obj/item/disk/surgery/brainwashing + cost = 3 + +/datum/uplink_item/device_tools/encryptionkey + name = "Syndicate Encryption Key" + desc = "A key that, when inserted into a radio headset, allows you to listen to all station department channels \ + as well as talk on an encrypted Syndicate channel with other agents that have the same key." + item = /obj/item/encryptionkey/syndicate + cost = 2 + surplus = 75 + restricted = TRUE + +/datum/uplink_item/device_tools/syndietome + name = "Syndicate Tome" + desc = "Using rare artifacts acquired at great cost, the Syndicate has reverse engineered \ + the seemingly magical books of a certain cult. Though lacking the esoteric abilities \ + of the originals, these inferior copies are still quite useful, being able to provide \ + both weal and woe on the battlefield, even if they do occasionally bite off a finger." + item = /obj/item/storage/book/bible/syndicate + cost = 9 + +/datum/uplink_item/device_tools/thermal + name = "Thermal Imaging Glasses" + desc = "These goggles can be turned to resemble common eyewear found throughout the station. \ + They allow you to see organisms through walls by capturing the upper portion of the infrared light spectrum, \ + emitted as heat and light by objects. Hotter objects, such as warm bodies, cybernetic organisms \ + and artificial intelligence cores emit more of this light than cooler objects like walls and airlocks." + item = /obj/item/clothing/glasses/thermal/syndi + cost = 4 + +/datum/uplink_item/device_tools/potion + name = "Syndicate Sentience Potion" + item = /obj/item/slimepotion/slime/sentience/nuclear + desc = "A potion recovered at great risk by undercover Syndicate operatives and then subsequently modified with Syndicate technology. \ + Using it will make any animal sentient, and bound to serve you, as well as implanting an internal radio for communication and an internal ID card for opening doors." + cost = 2 + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + restricted = TRUE + + +// Implants + +/datum/uplink_item/implants/adrenal + name = "Adrenal Implant" + desc = "An implant injected into the body, and later activated at the user's will. It will inject a chemical \ + cocktail which removes all incapacitating effects, lets the user run faster and has a mild healing effect." + item = /obj/item/storage/box/syndie_kit/imp_adrenal + cost = 8 + player_minimum = 25 + +/datum/uplink_item/implants/antistun + name = "CNS Rebooter Implant" + desc = "This implant will help you get back up on your feet faster after being stunned. Comes with an autosurgeon." + item = /obj/item/autosurgeon/anti_stun + cost = 12 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/implants/freedom + name = "Freedom Implant" + desc = "An implant injected into the body and later activated at the user's will. It will attempt to free the \ + user from common restraints such as handcuffs." + item = /obj/item/storage/box/syndie_kit/imp_freedom + cost = 5 + +/datum/uplink_item/implants/microbomb + name = "Microbomb Implant" + desc = "An implant injected into the body, and later activated either manually or automatically upon death. \ + The more implants inside of you, the higher the explosive power. \ + This will permanently destroy your body, however." + item = /obj/item/storage/box/syndie_kit/imp_microbomb + cost = 2 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/implants/macrobomb + name = "Macrobomb Implant" + desc = "An implant injected into the body, and later activated either manually or automatically upon death. \ + Upon death, releases a massive explosion that will wipe out everything nearby." + item = /obj/item/storage/box/syndie_kit/imp_macrobomb + cost = 20 + include_modes = list(/datum/game_mode/nuclear) + restricted = TRUE + +/datum/uplink_item/implants/radio + name = "Internal Syndicate Radio Implant" + desc = "An implant injected into the body, allowing the use of an internal Syndicate radio. \ + Used just like a regular headset, but can be disabled to use external headsets normally and to avoid detection." + item = /obj/item/storage/box/syndie_kit/imp_radio + cost = 4 + restricted = TRUE + +/datum/uplink_item/implants/reviver + name = "Reviver Implant" + desc = "This implant will attempt to revive and heal you if you lose consciousness. Comes with an autosurgeon." + item = /obj/item/autosurgeon/reviver + cost = 8 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/implants/stealthimplant + name = "Stealth Implant" + desc = "This one-of-a-kind implant will make you almost invisible as long as you don't don't excessively move around. \ + On activation, it will conceal you inside a chameleon cardboard box that is only revealed once someone bumps into it." + item = /obj/item/implanter/stealth + cost = 8 + +/datum/uplink_item/implants/storage + name = "Storage Implant" + desc = "An implant injected into the body, and later activated at the user's will. It will open a small bluespace \ + pocket capable of storing two regular-sized items." + item = /obj/item/storage/box/syndie_kit/imp_storage + cost = 8 + +/datum/uplink_item/implants/thermals + name = "Thermal Eyes" + desc = "These cybernetic eyes will give you thermal vision. Comes with a free autosurgeon." + item = /obj/item/autosurgeon/thermal_eyes + cost = 8 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/implants/uplink + name = "Uplink Implant" + desc = "An implant injected into the body, and later activated at the user's will. Has no telecrystals and must be charged by the use of physical telecrystals. \ + Undetectable (except via surgery), and excellent for escaping confinement." + item = /obj/item/storage/box/syndie_kit/imp_uplink + cost = 4 + // An empty uplink is kinda useless. + surplus = 0 + restricted = TRUE + +/datum/uplink_item/implants/xray + name = "X-ray Vision Implant" + desc = "These cybernetic eyes will give you X-ray vision. Comes with an autosurgeon." + item = /obj/item/autosurgeon/xray_eyes + cost = 10 + surplus = 0 + include_modes = list(/datum/game_mode/nuclear) + +// Role-specific items + +/datum/uplink_item/role_restricted/ancient_jumpsuit + name = "Ancient Jumpsuit" + desc = "A tattered old jumpsuit that will provide absolutely no benefit to you. It fills the wearer with a strange compulsion to blurt out 'glorf'." + item = /obj/item/clothing/under/color/grey/glorf + cost = 20 + restricted_roles = list("Assistant") + +/datum/uplink_item/role_restricted/pie_cannon + name = "Banana Cream Pie Cannon" + desc = "A special pie cannon for a special clown, this gadget can hold up to 20 pies and automatically fabricates one every two seconds!" + cost = 10 + item = /obj/item/pneumatic_cannon/pie/selfcharge + restricted_roles = list("Clown") + +/datum/uplink_item/role_restricted/blastcannon + name = "Blast Cannon" + desc = "A highly specialized weapon, the Blast Cannon is actually relatively simple. It contains an attachment for a tank transfer valve mounted to an angled pipe specially constructed \ + withstand extreme pressure and temperatures, and has a mechanical trigger for triggering the transfer valve. Essentially, it turns the explosive force of a bomb into a narrow-angle \ + blast wave \"projectile\". Aspiring scientists may find this highly useful, as forcing the pressure shockwave into a narrow angle seems to be able to bypass whatever quirk of physics \ + disallows explosive ranges above a certain distance, allowing for the device to use the theoretical yield of a transfer valve bomb, instead of the factual yield." + item = /obj/item/gun/blastcannon + cost = 14 //High cost because of the potential for extreme damage in the hands of a skilled gas masked scientist. + restricted_roles = list("Research Director", "Scientist") + +/datum/uplink_item/role_restricted/alientech + name = "Alien Research Disk" + desc = "A technology disk holding a terabyte of highly confidential abductor technology. \ + Simply insert into research console of choice and import the files from the disk. Because of its foreign nature, it may require multiple uploads to work properly." + item = /obj/item/disk/tech_disk/abductor + cost = 12 + restricted_roles = list("Research Director", "Scientist", "Roboticist") + +/datum/uplink_item/role_restricted/clown_bomb + name = "Clown Bomb" + desc = "The Clown bomb is a hilarious device capable of massive pranks. It has an adjustable timer, \ + with a minimum of 60 seconds, and can be bolted to the floor with a wrench to prevent \ + movement. The bomb is bulky and cannot be moved; upon ordering this item, a smaller beacon will be \ + transported to you that will teleport the actual bomb to it upon activation. Note that this bomb can \ + be defused, and some crew may attempt to do so. \ + The bomb core can be pried out and manually detonated with other explosives." + item = /obj/item/sbeacondrop/clownbomb + cost = 15 + restricted_roles = list("Clown") + +/* +/datum/uplink_item/role_restricted/clowncar + name = "Clown Car" + desc = "The Clown Car is the ultimate transportation method for any worthy clown! \ + Simply insert your bikehorn and get in, and get ready to have the funniest ride of your life! \ + You can ram any spacemen you come across and stuff them into your car, kidnapping them and locking them inside until \ + someone saves them or they manage to crawl out. Be sure not to ram into any walls or vending machines, as the springloaded seats \ + are very sensetive. Now with our included lube defense mechanism which will protect you against any angry shitcurity!" + item = /obj/vehicle/sealed/car/clowncar + cost = 15 + restricted_roles = list("Clown") +*/ + +/datum/uplink_item/role_restricted/clumsyDNA + name = "Clumsy Clown DNA" + desc = "A DNA injector that has been loaded with the clown gene that makes people clumsy.. \ + Making someone clumsy will allow them to use clown firing pins as well as Reverse Revolvers. For a laugh try using this on the HOS to see how many times they shoot themselves in the foot!" + cost = 1 + item = /obj/item/dnainjector/clumsymut + restricted_roles = list("Clown") + +/datum/uplink_item/role_restricted/haunted_magic_eightball + name = "Haunted Magic Eightball" + desc = "Most magic eightballs are toys with dice inside. Although identical in appearance to the harmless toys, this occult device reaches into the spirit world to find its answers. \ + Be warned, that spirits are often capricious or just little assholes. To use, simply speak your question aloud, then begin shaking." + item = /obj/item/toy/eightball/haunted + cost = 2 + restricted_roles = list("Curator") + limited_stock = 1 //please don't spam deadchat + +/datum/uplink_item/role_restricted/his_grace + name = "His Grace" + desc = "An incredibly dangerous weapon recovered from a station overcome by the grey tide. Once activated, He will thirst for blood and must be used to kill to sate that thirst. \ + His Grace grants gradual regeneration and complete stun immunity to His wielder, but be wary: if He gets too hungry, He will become impossible to drop and eventually kill you if not fed. \ + However, if left alone for long enough, He will fall back to slumber. \ + To activate His Grace, simply unlatch Him." + item = /obj/item/his_grace + cost = 20 + restricted_roles = list("Chaplain") + surplus = 5 //Very low chance to get it in a surplus crate even without being the chaplain + +/datum/uplink_item/role_restricted/explosive_hot_potato + name = "Exploding Hot Potato" + desc = "A potato rigged with explosives. On activation, a special mechanism is activated that prevents it from being dropped. \ + The only way to get rid of it if you are holding it is to attack someone else with it, causing it to latch to that person instead." + item = /obj/item/hot_potato/syndicate + cost = 4 + restricted_roles = list("Cook", "Botanist", "Clown", "Mime") + +/datum/uplink_item/role_restricted/strange_seeds + name = "Pack of strange seeds" + desc = "Mysterious seeds as strange as their name implies. Spooky." + item = /obj/item/seeds/random + cost = 2 + restricted_roles = list("Botanist") + illegal_tech = FALSE + +/datum/uplink_item/role_restricted/strange_seeds_10pack + name = "Pack of strange seeds x10" + desc = "Mysterious seeds as strange as their name implies. Spooky. These come in bulk" + item = /obj/item/storage/box/strange_seeds_10pack + cost = 20 + restricted_roles = list("Botanist") + +/datum/uplink_item/role_restricted/ez_clean_bundle + name = "EZ Clean Grenade Bundle" + desc = "A box with three cleaner grenades using the trademark Waffle Co. formula. Serves as a cleaner and causes acid damage to anyone standing nearby. \ + The acid only affects carbon-based creatures." + item = /obj/item/storage/box/syndie_kit/ez_clean + cost = 6 + surplus = 20 + restricted_roles = list("Janitor") + +/datum/uplink_item/role_restricted/goldenbox + name = "Gold Toolbox" + desc = "A gold planted plastitanium toolbox loaded with tools. Comes with a set of AI detection multi-tool and a pare of combat gloves." + item = /obj/item/storage/toolbox/gold_real + cost = 3 // Has syndie tools + gloves + a robust weapon + restricted_roles = list("Assistant", "Curator") //Curator due to this being made of gold - It fits the theme + +/datum/uplink_item/role_restricted/mimery + name = "Guide to Advanced Mimery Series" + desc = "The classical two part series on how to further hone your mime skills. Upon studying the series, the user should be able to make 3x1 invisible walls, and shoot bullets out of their fingers. \ + Obviously only works for Mimes." + cost = 12 + item = /obj/item/storage/box/syndie_kit/mimery + restricted_roles = list("Mime") + +/datum/uplink_item/role_restricted/ultrahonkpins + name = "Hilarious firing pin" + desc = "A single firing pin made for Clown agents, this firing pin makes any gun honk when fired if not a true clown! \ + This firing pin also helps you fire the gun correctly. May the HonkMother HONK you agent." + item = /obj/item/firing_pin/clown/ultra + cost = 2 + restricted_roles = list("Clown") + +/datum/uplink_item/role_restricted/pressure_mod + name = "Kinetic Accelerator Pressure Mod" + desc = "A modification kit which allows Kinetic Accelerators to do greatly increased damage while indoors. \ + Occupies 35% mod capacity." + item = /obj/item/borg/upgrade/modkit/indoors + cost = 5 //you need two for full damage, so total of 10 for maximum damage + limited_stock = 2 //you can't use more than two! + restricted_roles = list("Shaft Miner") + +/datum/uplink_item/role_restricted/kitchen_gun + name = "Kitchen Gun (TM)" + desc = "A revolutionary .45 caliber cleaning solution! Say goodbye to daily stains and dirty surfaces with Kitchen Gun (TM)! \ + Just five shots from Kitchen Gun (TM), and it'll sparkle like new! Includes two extra ammunition clips!" + cost = 10 + surplus = 40 + restricted_roles = list("Cook", "Janitor") + item = /obj/item/storage/box/syndie_kit/kitchen_gun + +/datum/uplink_item/role_restricted/kitchen_gun_ammo + name = "Kitchen Gun (TM) .45 Magazine" + desc = "An extra eight bullets for an extra eight uses of Kitchen Gun (TM)!" + cost = 1 + restricted_roles = list("Cook", "Janitor") + item = /obj/item/ammo_box/magazine/m45/kitchengun + +/datum/uplink_item/role_restricted/magillitis_serum + name = "Magillitis Serum Autoinjector" + desc = "A single-use autoinjector which contains an experimental serum that causes rapid muscular growth in Hominidae. \ + Side-affects may include hypertrichosis, violent outbursts, and an unending affinity for bananas." + item = /obj/item/reagent_containers/hypospray/magillitis + cost = 8 + restricted_roles = list("Geneticist", "Chief Medical Officer") + +/datum/uplink_item/role_restricted/modified_syringe_gun + name = "Modified Syringe Gun" + desc = "A syringe gun that fires DNA injectors instead of normal syringes." + item = /obj/item/gun/syringe/dna + cost = 14 + restricted_roles = list("Geneticist", "Chief Medical Officer") + +/datum/uplink_item/role_restricted/chemical_gun + name = "Reagent Dartgun" + desc = "A heavily modified syringe gun which is capable of synthesizing its own chemical darts using input reagents. Can hold 100u of reagents." + item = /obj/item/gun/chem + cost = 12 + restricted_roles = list("Chemist", "Chief Medical Officer") + +/datum/uplink_item/role_restricted/reverse_bear_trap + name = "Reverse Bear Trap" + desc = "An ingenious execution device worn on (or forced onto) the head. Arming it starts a 1-minute kitchen timer mounted on the bear trap. When it goes off, the trap's jaws will \ + violently open, instantly killing anyone wearing it by tearing their jaws in half. To arm, attack someone with it while they're not wearing headgear, and you will force it onto their \ + head after three seconds uninterrupted." + cost = 5 + item = /obj/item/reverse_bear_trap + restricted_roles = list("Clown") + +/datum/uplink_item/role_restricted/reverse_revolver + name = "Reverse Revolver" + desc = "A revolver that always fires at its user. \"Accidentally\" drop your weapon, then watch as the greedy corporate pigs blow their own brains all over the wall. \ + The revolver itself is actually real. Only clumsy people, and clowns, can fire it normally. Comes in a box of hugs. Honk." + cost = 14 + item = /obj/item/storage/box/hug/reverse_revolver + restricted_roles = list("Clown") + +/datum/uplink_item/role_restricted/taeclowndo_shoes + name = "Tae-clown-do Shoes" + desc = "A pair of shoes for the most elite agents of the honkmotherland. They grant the mastery of taeclowndo with some honk-fu moves as long as they're worn." + cost = 14 + item = /obj/item/clothing/shoes/clown_shoes/taeclowndo + restricted_roles = list("Clown") + +/datum/uplink_item/role_restricted/emitter_cannon + name = "Emitter Cannon" + desc = "A small emitter fitted into a gun case, do to size constraints and safety it can only shoot about ten times when fully charged." + cost = 5 //Low ammo, and deals same as 10mm but emp-able + item = /obj/item/gun/energy/emitter + restricted_roles = list("Chief Engineer", "Station Engineer", "Atmospheric Technician") + +// Pointless (Badassery) + +/datum/uplink_item/badass/costumes/obvious_chameleon + name = "Broken Chameleon Kit" + desc = "A set of items that contain chameleon technology allowing you to disguise as pretty much anything on the station, and more! \ + Please note that this kit did NOT pass quality control." + item = /obj/item/storage/box/syndie_kit/chameleon/broken + +/datum/uplink_item/badass/costumes + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + cost = 4 + cant_discount = TRUE + +/datum/uplink_item/badass/costumes/centcom_official + name = "CentCom Official Costume" + desc = "Ask the crew to \"inspect\" their nuclear disk and weapons system, and then when they decline, pull out a fully automatic rifle and gun down the Captain. \ + Radio headset does not include encryption key. No gun included." + item = /obj/item/storage/box/syndie_kit/centcom_costume + +/datum/uplink_item/badass/claymore + name = "Claymore" + cost = 8 + player_minimum = 25 + desc = "A claymore. We don't know why you'd do this." + item = /obj/item/claymore + +/datum/uplink_item/badass/costumes/clown + name = "Clown Costume" + desc = "Nothing is more terrifying than clowns with fully automatic weaponry." + item = /obj/item/storage/backpack/duffelbag/clown/syndie + +/datum/uplink_item/badass/plastitanium_toolbox + name = "Plastitanium Toolbox" + desc = "A very high impact toolbox. Excels at destroying stationary structures." + item = /obj/item/storage/toolbox/plastitanium + cost = 2 //18 damage on mobs, 50 on objects, 4.5 stam/hit + +/datum/uplink_item/badass/balloon + name = "Syndicate Balloon" + desc = "For showing that you are THE BOSS: A useless red balloon with the Syndicate logo on it. \ + Can blow the deepest of covers." + item = /obj/item/toy/syndicateballoon + cost = 20 + cant_discount = TRUE + illegal_tech = FALSE + +/datum/uplink_item/badass/syndiecash + name = "Syndicate Briefcase Full of Cash" + desc = "A secure briefcase containing 5000 space credits. Useful for bribing personnel, or purchasing goods \ + and services at lucrative prices. The briefcase also feels a little heavier to hold; it has been \ + manufactured to pack a little bit more of a punch if your client needs some convincing." + item = /obj/item/storage/secure/briefcase/syndie + cost = 1 + +/datum/uplink_item/badass/syndiecards + name = "Syndicate Playing Cards" + desc = "A special deck of space-grade playing cards with a mono-molecular edge and metal reinforcement, \ + making them slightly more robust than a normal deck of cards. \ + You can also play card games with them or leave them on your victims." + item = /obj/item/toy/cards/deck/syndicate + cost = 1 + surplus = 40 + illegal_tech = FALSE + +/datum/uplink_item/badass/syndiecigs + name = "Syndicate Smokes" + desc = "Strong flavor, dense smoke, infused with omnizine." + item = /obj/item/storage/fancy/cigarettes/cigpack_syndicate + cost = 2 + illegal_tech = FALSE diff --git a/code/modules/uplink/uplink_items/uplink_ammo.dm b/code/modules/uplink/uplink_items/uplink_ammo.dm deleted file mode 100644 index 0db1bc96f0..0000000000 --- a/code/modules/uplink/uplink_items/uplink_ammo.dm +++ /dev/null @@ -1,255 +0,0 @@ - -/* - Uplink Items: - Unlike categories, uplink item entries are automatically sorted alphabetically on server init in a global list, - When adding new entries to the file, please keep them sorted by category. -*/ - -// Ammunition - -/datum/uplink_item/ammo/pistol - name = "10mm Handgun Magazine" - desc = "An additional 8-round 10mm magazine; compatible with the Stechkin Pistol. These rounds \ - are dirt cheap but are half as effective as .357 rounds." - item = /obj/item/ammo_box/magazine/m10mm - cost = 1 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/ammo/pistolap - name = "10mm Armour Piercing Magazine" - desc = "An additional 8-round 10mm magazine; compatible with the Stechkin Pistol. \ - These rounds are less effective at injuring the target but penetrate protective gear." - item = /obj/item/ammo_box/magazine/m10mm/ap - cost = 2 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/ammo/pistolhp - name = "10mm Hollow Point Magazine" - desc = "An additional 8-round 10mm magazine; compatible with the Stechkin Pistol. \ - These rounds are more damaging but ineffective against armour." - item = /obj/item/ammo_box/magazine/m10mm/hp - cost = 3 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/ammo/pistolfire - name = "10mm Incendiary Magazine" - desc = "An additional 8-round 10mm magazine; compatible with the Stechkin Pistol. \ - Loaded with incendiary rounds which inflict little damage, but ignite the target." - item = /obj/item/ammo_box/magazine/m10mm/fire - cost = 2 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/ammo/pistolzzz - name = "10mm Soporific Magazine" - desc = "An additional 8-round 10mm magazine; compatible with the Stechkin Pistol. Loaded with soporific rounds that put the target to sleep. \ - NOTE: Soporific is not instant acting due to the constraints of the round's scale. Will usually require three shots to take effect." - item = /obj/item/ammo_box/magazine/m10mm/soporific - cost = 2 - -/datum/uplink_item/ammo/shotgun - cost = 2 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/ammo/shotgun/bag - name = "12g Ammo Duffel Bag" - desc = "A duffel bag filled with enough 12g ammo to supply an entire team, at a discounted price." - item = /obj/item/storage/backpack/duffelbag/syndie/ammo/shotgun - cost = 12 - -/datum/uplink_item/ammo/shotgun/buck - name = "12g Buckshot Drum" - desc = "An additional 8-round buckshot magazine for use with the Bulldog shotgun. Front towards enemy." - item = /obj/item/ammo_box/magazine/m12g - -/datum/uplink_item/ammo/shotgun/dragon - name = "12g Dragon's Breath Drum" - desc = "An alternative 8-round dragon's breath magazine for use in the Bulldog shotgun. \ - 'I'm a fire starter, twisted fire starter!'" - item = /obj/item/ammo_box/magazine/m12g/dragon - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/ammo/shotgun/meteor - name = "12g Meteorslug Shells" - desc = "An alternative 8-round meteorslug magazine for use in the Bulldog shotgun. \ - Great for blasting airlocks off their frames and knocking down enemies." - item = /obj/item/ammo_box/magazine/m12g/meteor - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/ammo/shotgun/scatter - name = "12g Scatter Laser shot Slugs" - desc = "An alternative 8-round Scatter Laser Shot magazine for use in the Bulldog shotgun." - item = /obj/item/ammo_box/magazine/m12g/scatter - cost = 4 // most armor has less laser protection then bullet - -/datum/uplink_item/ammo/shotgun/slug - name = "12g Slug Drum" - desc = "An additional 8-round slug magazine for use with the Bulldog shotgun. \ - Now 8 times less likely to shoot your pals." - cost = 3 - item = /obj/item/ammo_box/magazine/m12g/slug - -/datum/uplink_item/ammo/shotgun/stun - name = "12g Stun Slug Drum" - desc = "An alternative 8-round stun slug magazine for use with the Bulldog shotgun. \ - Saying that they're completely non-lethal would be lying." - item = /obj/item/ammo_box/magazine/m12g/stun - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/ammo/revolver - name = ".357 Speed Loader" - desc = "A speed loader that contains seven additional .357 Magnum rounds, and can be further reloaded with individual bullets; usable with the Syndicate revolver. \ - For when you really need a lot of things dead." - item = /obj/item/ammo_box/a357 - cost = 3 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/ammo/revolver/ap - name = ".357 Armor Piercing Speed Loader" - desc = "A speed loader that contains seven additional .357 AP Magnum rounds; usable with the Syndicate revolver. \ - Cuts through like a hot knife through butter." - item = /obj/item/ammo_box/a357/ap - -/datum/uplink_item/ammo/a40mm - name = "40mm Grenade" - desc = "A 40mm HE grenade for use with the M-90gl's under-barrel grenade launcher. \ - Your teammates will ask you to not shoot these down small hallways." - item = /obj/item/ammo_casing/a40mm - cost = 2 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/ammo/smg/bag - name = ".45 Ammo Duffel Bag" - desc = "A duffel bag filled with enough .45 ammo to supply an entire team, at a discounted price." - item = /obj/item/storage/backpack/duffelbag/syndie/ammo/smg - cost = 20 //instead of 27 TC - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/ammo/smg - name = ".45 SMG Magazine" - desc = "An additional 24-round .45 magazine suitable for use with the C-20r submachine gun." - item = /obj/item/ammo_box/magazine/smgm45 - cost = 3 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/ammo/sniper - cost = 4 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/ammo/sniper/basic - name = ".50 Magazine" - desc = "An additional standard 6-round magazine for use with .50 sniper rifles." - item = /obj/item/ammo_box/magazine/sniper_rounds - -/datum/uplink_item/ammo/sniper/penetrator - name = ".50 Penetrator Magazine" - desc = "A 5-round magazine of penetrator ammo designed for use with .50 sniper rifles. \ - Can pierce walls and multiple enemies." - item = /obj/item/ammo_box/magazine/sniper_rounds/penetrator - cost = 5 - -/datum/uplink_item/ammo/sniper/soporific - name = ".50 Soporific Magazine" - desc = "A 3-round magazine of soporific ammo designed for use with .50 sniper rifles. Put your enemies to sleep today!" - item = /obj/item/ammo_box/magazine/sniper_rounds/soporific - cost = 6 - -/datum/uplink_item/ammo/carbine - name = "5.56mm Toploader Magazine" - desc = "An additional 30-round 5.56mm magazine; suitable for use with the M-90gl carbine. \ - These bullets pack less punch than 7.12x82mm rounds, but they still offer more power than .45 ammo." - item = /obj/item/ammo_box/magazine/m556 - cost = 4 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/ammo/machinegun - cost = 6 - surplus = 0 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/ammo/machinegun/basic - name = "1.95x129mm Box Magazine" - desc = "A 50-round magazine of 1.95x129mm ammunition for use with the L6 SAW. \ - By the time you need to use this, you'll already be standing on a pile of corpses" - item = /obj/item/ammo_box/magazine/mm195x129 - -/datum/uplink_item/ammo/machinegun/ap - name = "1.95x129mm (Armor Penetrating) Box Magazine" - desc = "A 50-round magazine of 1.95x129mm ammunition for use in the L6 SAW; equipped with special properties \ - to puncture even the most durable armor." - item = /obj/item/ammo_box/magazine/mm195x129/ap - cost = 9 - -/datum/uplink_item/ammo/machinegun/hollow - name = "1.95x129mm (Hollow-Point) Box Magazine" - desc = "A 50-round magazine of 1.95x129mm ammunition for use in the L6 SAW; equipped with hollow-point tips to help \ - with the unarmored masses of crew." - item = /obj/item/ammo_box/magazine/mm195x129/hollow - -/datum/uplink_item/ammo/machinegun/incen - name = "1.95x129mm (Incendiary) Box Magazine" - desc = "A 50-round magazine of 1.95x129mm ammunition for use in the L6 SAW; tipped with a special flammable \ - mixture that'll ignite anyone struck by the bullet. Some men just want to watch the world burn." - item = /obj/item/ammo_box/magazine/mm195x129/incen - -/datum/uplink_item/ammo/rocket - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/ammo/rocket/basic - name = "84mm HE Rocket" - desc = "A low-yield anti-personnel HE rocket. Gonna take you out in style!" - item = /obj/item/ammo_casing/caseless/rocket - cost = 4 - -/datum/uplink_item/ammo/rocket/hedp - name = "84mm HEDP Rocket" - desc = "A high-yield HEDP rocket; extremely effective against armored targets, as well as surrounding personnel. \ - Strike fear into the hearts of your enemies." - item = /obj/item/ammo_casing/caseless/rocket/hedp - cost = 6 - -/datum/uplink_item/ammo/pistolaps - name = "9mm Handgun Magazine" - desc = "An additional 15-round 9mm magazine, compatible with the Stechkin APS pistol, found in the Spetsnaz Pyro bundle." - item = /obj/item/ammo_box/magazine/pistolm9mm - cost = 2 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/ammo/flechetteap - name = "Armor Piercing Flechette Magazine" - desc = "An additional 40-round flechette magazine; compatible with the Flechette Launcer. \ - Loaded with armor piercing flechettes that very nearly ignore armor, but are not very effective agaisnt flesh." - item = /obj/item/ammo_box/magazine/flechette - cost = 2 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/ammo/flechettes - name = "Serrated Flechette Magazine" - desc = "An additional 40-round flechette magazine; compatible with the Flechette Launcer. \ - Loaded with serrated flechettes that shreds flesh, but is stopped dead in its tracks by armor. \ - These flechettes are highly likely to sever arteries, and even limbs." - item = /obj/item/ammo_box/magazine/flechette/s - cost = 2 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/ammo/toydarts - name = "Box of Riot Darts" - desc = "A box of 40 Donksoft riot darts, for reloading any compatible foam dart magazine. Don't forget to share!" - item = /obj/item/ammo_box/foambox/riot - cost = 2 - surplus = 0 - illegal_tech = FALSE - -/datum/uplink_item/ammo/bioterror - name = "Box of Bioterror Syringes" - desc = "A box full of preloaded syringes, containing various chemicals that seize up the victim's motor \ - and broca systems, making it impossible for them to move or speak for some time." - item = /obj/item/storage/box/syndie_kit/bioterror - cost = 6 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/ammo/bolt_action - name = "Surplus Rifle Clip" - desc = "A stripper clip used to quickly load bolt action rifles. Contains 5 rounds." - item = /obj/item/ammo_box/a762 - cost = 1 - include_modes = list(/datum/game_mode/nuclear) diff --git a/code/modules/uplink/uplink_items/uplink_badass.dm b/code/modules/uplink/uplink_items/uplink_badass.dm deleted file mode 100644 index 8dc5afbadd..0000000000 --- a/code/modules/uplink/uplink_items/uplink_badass.dm +++ /dev/null @@ -1,77 +0,0 @@ - -/* - Uplink Items: - Unlike categories, uplink item entries are automatically sorted alphabetically on server init in a global list, - When adding new entries to the file, please keep them sorted by category. -*/ - -// Pointless (Badassery) - -/datum/uplink_item/badass/costumes/obvious_chameleon - name = "Broken Chameleon Kit" - desc = "A set of items that contain chameleon technology allowing you to disguise as pretty much anything on the station, and more! \ - Please note that this kit did NOT pass quality control." - item = /obj/item/storage/box/syndie_kit/chameleon/broken - -/datum/uplink_item/badass/costumes - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - cost = 4 - cant_discount = TRUE - -/datum/uplink_item/badass/costumes/centcom_official - name = "CentCom Official Costume" - desc = "Ask the crew to \"inspect\" their nuclear disk and weapons system, and then when they decline, pull out a fully automatic rifle and gun down the Captain. \ - Radio headset does not include encryption key. No gun included." - item = /obj/item/storage/box/syndie_kit/centcom_costume - -/datum/uplink_item/badass/claymore - name = "Claymore" - cost = 8 - player_minimum = 25 - desc = "A claymore. We don't know why you'd do this." - item = /obj/item/claymore - -/datum/uplink_item/badass/costumes/clown - name = "Clown Costume" - desc = "Nothing is more terrifying than clowns with fully automatic weaponry." - item = /obj/item/storage/backpack/duffelbag/clown/syndie - -/datum/uplink_item/badass/plastitanium_toolbox - name = "Plastitanium Toolbox" - desc = "A very high impact toolbox. Excels at destroying stationary structures." - item = /obj/item/storage/toolbox/plastitanium - cost = 2 //18 damage on mobs, 50 on objects, 4.5 stam/hit - -/datum/uplink_item/badass/balloon - name = "Syndicate Balloon" - desc = "For showing that you are THE BOSS: A useless red balloon with the Syndicate logo on it. \ - Can blow the deepest of covers." - item = /obj/item/toy/syndicateballoon - cost = 20 - cant_discount = TRUE - illegal_tech = FALSE - -/datum/uplink_item/badass/syndiecash - name = "Syndicate Briefcase Full of Cash" - desc = "A secure briefcase containing 5000 space credits. Useful for bribing personnel, or purchasing goods \ - and services at lucrative prices. The briefcase also feels a little heavier to hold; it has been \ - manufactured to pack a little bit more of a punch if your client needs some convincing." - item = /obj/item/storage/secure/briefcase/syndie - cost = 1 - -/datum/uplink_item/badass/syndiecards - name = "Syndicate Playing Cards" - desc = "A special deck of space-grade playing cards with a mono-molecular edge and metal reinforcement, \ - making them slightly more robust than a normal deck of cards. \ - You can also play card games with them or leave them on your victims." - item = /obj/item/toy/cards/deck/syndicate - cost = 1 - surplus = 40 - illegal_tech = FALSE - -/datum/uplink_item/badass/syndiecigs - name = "Syndicate Smokes" - desc = "Strong flavor, dense smoke, infused with omnizine." - item = /obj/item/storage/fancy/cigarettes/cigpack_syndicate - cost = 2 - illegal_tech = FALSE diff --git a/code/modules/uplink/uplink_items/uplink_bundles.dm b/code/modules/uplink/uplink_items/uplink_bundles.dm deleted file mode 100644 index 23fb23f198..0000000000 --- a/code/modules/uplink/uplink_items/uplink_bundles.dm +++ /dev/null @@ -1,179 +0,0 @@ - -//All bundles and telecrystals - -/* - Uplink Items: - Unlike categories, uplink item entries are automatically sorted alphabetically on server init in a global list, - When adding new entries to the file, please keep them sorted by category. -*/ - -/datum/uplink_item/bundles_TC/chemical - name = "Bioterror bundle" - desc = "For the madman: Contains a handheld Bioterror chem sprayer, a Bioterror foam grenade, a box of lethal chemicals, a dart pistol, \ - box of syringes, Donksoft assault rifle, and some riot darts. Remember: Seal suit and equip internals before use." - item = /obj/item/storage/backpack/duffelbag/syndie/med/bioterrorbundle - cost = 30 // normally 42 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/bundles_TC/bulldog - name = "Bulldog bundle" - desc = "Lean and mean: Optimized for people that want to get up close and personal. Contains the popular \ - Bulldog shotgun, a 12g buckshot drum, a 12g taser slug drum and a pair of Thermal imaging goggles." - item = /obj/item/storage/backpack/duffelbag/syndie/bulldogbundle - cost = 13 // normally 16 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/bundles_TC/c20r - name = "C-20r bundle" - desc = "Old Faithful: The classic C-20r, bundled with two magazines, and a (surplus) suppressor at discount price." - item = /obj/item/storage/backpack/duffelbag/syndie/c20rbundle - cost = 14 // normally 16 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/bundles_TC/cybernetics_bundle - name = "Cybernetic Implants Bundle" - desc = "A random selection of cybernetic implants. Guaranteed 5 high quality implants. Comes with an autosurgeon." - item = /obj/item/storage/box/cyber_implants - cost = 40 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/bundles_TC/medical - name = "Medical bundle" - desc = "The support specialist: Aid your fellow operatives with this medical bundle. Contains a tactical medkit, \ - a Donksoft LMG, a box of riot darts and a pair of magboots to rescue your friends in no-gravity environments." - item = /obj/item/storage/backpack/duffelbag/syndie/med/medicalbundle - cost = 15 // normally 20 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/bundles_TC/modular - name = "Modular Pistol Kit" - desc = "A heavy briefcase containing one modular pistol (chambered in 10mm), one supressor, and spare ammunition, including a box of soporific ammo. \ - Includes a suit jacket that is padded with a robust liner." - item = /obj/item/storage/briefcase/modularbundle - cost = 12 - -/datum/uplink_item/bundles_TC/shredder - name = "Shredder bundle" - desc = "A truly horrific weapon designed simply to maim its victim, the CX Shredder is banned by several intergalactic treaties. \ - You'll get two of them with this. And spare ammo to boot. And we'll throw in an extra elite hardsuit and chest rig to hold them all!" - item = /obj/item/storage/backpack/duffelbag/syndie/shredderbundle - cost = 30 // normally 41 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/bundles_TC/sniper - name = "Sniper bundle" - desc = "Elegant and refined: Contains a collapsed sniper rifle in an expensive carrying case, \ - two soporific knockout magazines, a free surplus supressor, and a sharp-looking tactical turtleneck suit. \ - We'll throw in a free red tie if you order NOW." - item = /obj/item/storage/briefcase/sniperbundle - cost = 20 // normally 26 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/bundles_TC/firestarter - name = "Spetsnaz Pyro bundle" - desc = "For systematic suppression of carbon lifeforms in close quarters: Contains a lethal New Russian backpack spray, Elite hardsuit, \ - Stechkin APS pistol, two magazines, a minibomb and a stimulant syringe. \ - Order NOW and comrade Boris will throw in an extra tracksuit." - item = /obj/item/storage/backpack/duffelbag/syndie/firestarter - cost = 30 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/bundles_TC/bundle - name = "Syndicate Bundle" - desc = "Syndicate Bundles are specialized groups of items that arrive in a plain box. \ - These items are collectively worth more than 20 telecrystals, but you do not know which specialization \ - you will receive. May contain discontinued and/or exotic items." - item = /obj/item/storage/box/syndicate - cost = 20 - exclude_modes = list(/datum/game_mode/nuclear) - cant_discount = TRUE - -/datum/uplink_item/bundles_TC/surplus - name = "Syndicate Surplus Crate" - desc = "A dusty crate from the back of the Syndicate warehouse. Rumored to contain a valuable assortment of items, \ - but you never know. Contents are sorted to always be worth 50 TC." - item = /obj/structure/closet/crate - cost = 20 - player_minimum = 25 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - cant_discount = TRUE - var/starting_crate_value = 50 - -/datum/uplink_item/bundles_TC/surplus/super - name = "Super Surplus Crate" - desc = "A dusty SUPER-SIZED from the back of the Syndicate warehouse. Rumored to contain a valuable assortment of items, \ - but you never know. Contents are sorted to always be worth 125 TC." - cost = 40 - player_minimum = 40 - starting_crate_value = 125 - -/datum/uplink_item/bundles_TC/surplus/purchase(mob/user, datum/component/uplink/U) - var/list/uplink_items = get_uplink_items(SSticker && SSticker.mode? SSticker.mode : null, FALSE) - - var/crate_value = starting_crate_value - var/obj/structure/closet/crate/C = spawn_item(/obj/structure/closet/crate, user, U) - if(U.purchase_log) - U.purchase_log.LogPurchase(C, src, cost) - while(crate_value) - var/category = pick(uplink_items) - var/item = pick(uplink_items[category]) - var/datum/uplink_item/I = uplink_items[category][item] - - if(!I.surplus || prob(100 - I.surplus)) - continue - if(crate_value < I.cost) - continue - crate_value -= I.cost - var/obj/goods = new I.item(C) - if(U.purchase_log) - U.purchase_log.LogPurchase(goods, I, 0) - return C - -/datum/uplink_item/bundles_TC/random - name = "Random Item" - desc = "Picking this will purchase a random item. Useful if you have some TC to spare or if you haven't decided on a strategy yet." - item = /obj/effect/gibspawner/generic // non-tangible item because techwebs use this path to determine illegal tech - cost = 0 - cant_discount = TRUE - -/datum/uplink_item/bundles_TC/random/purchase(mob/user, datum/component/uplink/U) - var/list/uplink_items = U.uplink_items - var/list/possible_items = list() - for(var/category in uplink_items) - for(var/item in uplink_items[category]) - var/datum/uplink_item/I = uplink_items[category][item] - if(src == I || !I.item) - continue - if(U.telecrystals < I.cost) - continue - if(I.limited_stock == 0) - continue - possible_items += I - - if(possible_items.len) - var/datum/uplink_item/I = pick(possible_items) - SSblackbox.record_feedback("tally", "traitor_random_uplink_items_gotten", 1, initial(I.name)) - U.MakePurchase(user, I) - -/datum/uplink_item/bundles_TC/telecrystal - name = "1 Raw Telecrystal" - desc = "A telecrystal in its rawest and purest form; can be utilized on active uplinks to increase their telecrystal count." - item = /obj/item/stack/telecrystal - cost = 1 - surplus = 0 - cant_discount = TRUE - // Don't add telecrystals to the purchase_log since - // it's just used to buy more items (including itself!) - purchase_log_vis = FALSE - -/datum/uplink_item/bundles_TC/telecrystal/five - name = "5 Raw Telecrystals" - desc = "Five telecrystals in their rawest and purest form; can be utilized on active uplinks to increase their telecrystal count." - item = /obj/item/stack/telecrystal/five - cost = 5 - -/datum/uplink_item/bundles_TC/telecrystal/twenty - name = "20 Raw Telecrystals" - desc = "Twenty telecrystals in their rawest and purest form; can be utilized on active uplinks to increase their telecrystal count." - item = /obj/item/stack/telecrystal/twenty - cost = 20 \ No newline at end of file diff --git a/code/modules/uplink/uplink_items/uplink_clothing.dm b/code/modules/uplink/uplink_items/uplink_clothing.dm deleted file mode 100644 index 2881aa8dfd..0000000000 --- a/code/modules/uplink/uplink_items/uplink_clothing.dm +++ /dev/null @@ -1,80 +0,0 @@ - -/* - Uplink Items: - Unlike categories, uplink item entries are automatically sorted alphabetically on server init in a global list, - When adding new entries to the file, please keep them sorted by category. -*/ - -//Space Suits and Hardsuits - -/datum/uplink_item/suits/turtlenck - name = "Tactical Turtleneck" - desc = "A slightly armored suit that has no sensor on them, if someone sees you in this hope they think its a fake." - item = /obj/item/clothing/under/syndicate - cost = 1 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //They already get these - -/datum/uplink_item/suits/turtlenck_skirt - name = "Tactical Skirtleneck" - desc = "A slightly armored suit that has no sensor on them, if someone sees you in this hope they think its a fake." - item = /obj/item/clothing/under/syndicate/skirt - cost = 1 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //They already get these - -/datum/uplink_item/suits/padding - name = "Soft Padding" - desc = "Padding to add to a jumpsuit to help against melee and bullets." - item = /obj/item/clothing/accessory/padding - cost = 2 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/suits/kevlar - name = "Kevlar sheets" - desc = "Kevlar sheets to add to jumpsuit to help against bullets and melee." - item = /obj/item/clothing/accessory/kevlar - cost = 2 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/suits/plastic - name = "Plastic sheet" - desc = "Plastic body sheet to add to a jumpsuit to help against laser and energy harm." - item = /obj/item/clothing/accessory/plastics - cost = 2 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/suits/space_suit - name = "Syndicate Space Suit" - desc = "This red and black Syndicate space suit is less encumbering than Nanotrasen variants, \ - fits inside bags, and has a weapon slot. Nanotrasen crew members are trained to report red space suit \ - sightings, however." - item = /obj/item/storage/box/syndie_kit/space - cost = 4 - -/datum/uplink_item/suits/hardsuit - name = "Syndicate Hardsuit" - desc = "The feared suit of a Syndicate nuclear agent. Features slightly better armoring and a built in jetpack \ - that runs off standard atmospheric tanks. Toggling the suit in and out of \ - combat mode will allow you all the mobility of a loose fitting uniform without sacrificing armoring. \ - Additionally the suit is collapsible, making it small enough to fit within a backpack. \ - Nanotrasen crew who spot these suits are known to panic." - item = /obj/item/clothing/suit/space/hardsuit/syndi - cost = 8 - exclude_modes = list(/datum/game_mode/nuclear) //you can't buy it in nuke, because the elite hardsuit costs the same while being better - -/datum/uplink_item/suits/hardsuit/elite - name = "Elite Syndicate Hardsuit" - desc = "An upgraded, elite version of the Syndicate hardsuit. It features fireproofing, and also \ - provides the user with superior armor and mobility compared to the standard Syndicate hardsuit." - item = /obj/item/clothing/suit/space/hardsuit/syndi/elite - cost = 8 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - exclude_modes = list() - -/datum/uplink_item/suits/hardsuit/shielded - name = "Shielded Syndicate Hardsuit" - desc = "An upgraded version of the standard Syndicate hardsuit. It features a built-in energy shielding system. \ - The shields can handle up to three impacts within a short duration and will rapidly recharge while not under fire." - item = /obj/item/clothing/suit/space/hardsuit/shielded/syndi - cost = 30 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - exclude_modes = list() diff --git a/code/modules/uplink/uplink_items/uplink_dangerous.dm b/code/modules/uplink/uplink_items/uplink_dangerous.dm deleted file mode 100644 index a7f644ccbe..0000000000 --- a/code/modules/uplink/uplink_items/uplink_dangerous.dm +++ /dev/null @@ -1,260 +0,0 @@ - -// Dangerous Items - -/* - Uplink Items: - Unlike categories, uplink item entries are automatically sorted alphabetically on server init in a global list, - When adding new entries to the file, please keep them sorted by category. -*/ - -/datum/uplink_item/dangerous/pistol - name = "Stechkin Pistol" - desc = "A small, easily concealable handgun that uses 10mm auto rounds in 8-round magazines and is compatible \ - with suppressors." - item = /obj/item/gun/ballistic/automatic/pistol - cost = 7 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/dangerous/revolver - name = "Syndicate Revolver Kit" - desc = "A sleek box containing a brutally simple Syndicate revolver that fires .357 Magnum rounds and has 7 chambers, and an extra speedloader." - item = /obj/item/storage/box/syndie_kit/revolver - cost = 13 - surplus = 50 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/dangerous/rawketlawnchair - name = "84mm Rocket Propelled Grenade Launcher" - desc = "A reusable rocket propelled grenade launcher preloaded with a low-yield 84mm HE round. \ - Guaranteed to send your target out with a bang or your money back!" - item = /obj/item/gun/ballistic/rocketlauncher - cost = 8 - surplus = 30 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/dangerous/antitank - name = "Anti Tank Pistol" - desc = "Essentially amounting to a sniper rifle with no stock and barrel (or indeed, any rifling at all), \ - this extremely dubious pistol is guaranteed to dislocate your wrists and hit the broad side of a barn! \ - Uses sniper ammo. \ - Bullets tend to veer off-course. We are not responsible for any unintentional damage or injury resulting from inaacuracy." - item = /obj/item/gun/ballistic/automatic/pistol/antitank/syndicate - cost = 14 - surplus = 25 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/dangerous/pie_cannon - name = "Banana Cream Pie Cannon" - desc = "A special pie cannon for a special clown, this gadget can hold up to 20 pies and automatically fabricates one every two seconds!" - cost = 10 - item = /obj/item/pneumatic_cannon/pie/selfcharge - surplus = 0 - include_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/dangerous/bananashield - name = "Bananium Energy Shield" - desc = "A clown's most powerful defensive weapon, this personal shield provides near immunity to ranged energy attacks \ - by bouncing them back at the ones who fired them. It can also be thrown to bounce off of people, slipping them, \ - and returning to you even if you miss. WARNING: DO NOT ATTEMPT TO STAND ON SHIELD WHILE DEPLOYED, EVEN IF WEARING ANTI-SLIP SHOES." - item = /obj/item/shield/energy/bananium - cost = 16 - surplus = 0 - include_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/dangerous/clownsword - name = "Bananium Energy Sword" - desc = "An energy sword that deals no damage, but will slip anyone it contacts, be it by melee attack, thrown \ - impact, or just stepping on it. Beware friendly fire, as even anti-slip shoes will not protect against it." - item = /obj/item/melee/transforming/energy/sword/bananium - cost = 3 - surplus = 0 - include_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/dangerous/bioterror - name = "Biohazardous Chemical Sprayer" - desc = "A handheld chemical sprayer that allows a wide dispersal of selected chemicals. Especially tailored by the Tiger \ - Cooperative, the deadly blend it comes stocked with will disorient, damage, and disable your foes... \ - Use with extreme caution, to prevent exposure to yourself and your fellow operatives." - item = /obj/item/reagent_containers/spray/chemsprayer/bioterror - cost = 20 - surplus = 0 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/dangerous/throwingweapons - name = "Box of Throwing Weapons" - desc = "A box of shurikens and reinforced bolas from ancient Earth martial arts. They are highly effective \ - throwing weapons. The bolas can knock a target down and the shurikens will embed into limbs." - item = /obj/item/storage/box/syndie_kit/throwing_weapons - cost = 3 - -/datum/uplink_item/dangerous/shotgun - name = "Bulldog Shotgun" - desc = "A fully-loaded semi-automatic drum-fed shotgun. Compatible with all 12g rounds. Designed for close \ - quarter anti-personnel engagements." - item = /obj/item/gun/ballistic/automatic/shotgun/bulldog - cost = 8 - surplus = 40 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/dangerous/smg - name = "C-20r Submachine Gun" - desc = "A fully-loaded Scarborough Arms bullpup submachine gun. The C-20r fires .45 rounds with a \ - 24-round magazine and is compatible with suppressors." - item = /obj/item/gun/ballistic/automatic/c20r - cost = 10 - surplus = 40 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/dangerous/doublesword - name = "Double-Bladed Energy Sword" - desc = "The double-bladed energy sword does slightly more damage than a standard energy sword and will deflect \ - all energy projectiles, but requires two hands to wield." - item = /obj/item/twohanded/dualsaber - player_minimum = 25 - cost = 16 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/dangerous/doublesword/get_discount() - return pick(4;0.8,2;0.65,1;0.5) - -/datum/uplink_item/dangerous/cxneb - name = "Dragon's Tooth Non-Eutactic Blade" - desc = "An illegal modification of a weapon that is functionally identical to the energy sword, \ - the Non-Eutactic Blade (NEB) forges a hardlight blade on-demand, \ - generating an extremely sharp, unbreakable edge that is guaranteed to satisfy your every need. \ - This particular model has a polychromic hardlight generator, allowing you to murder in style! \ - The illegal modifications bring this weapon up to par with the classic energy sword, and also gives it the energy sword's distinctive sounds." - item = /obj/item/melee/transforming/energy/sword/cx/traitor - cost = 8 - -/datum/uplink_item/dangerous/sword - name = "Energy Sword" - desc = "The energy sword is an edged weapon with a blade of pure energy. The sword is small enough to be \ - pocketed when inactive. Activating it produces a loud, distinctive noise." - item = /obj/item/melee/transforming/energy/sword/saber - cost = 8 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/dangerous/shield - name = "Energy Shield" - desc = "An incredibly useful personal shield projector, capable of reflecting energy projectiles and defending \ - against other attacks. Pair with an Energy Sword for a killer combination." - item = /obj/item/shield/energy - cost = 16 - surplus = 20 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/dangerous/rapier - name = "Rapier" - desc = "A fancy rapier with a diamond tip piercing anything that it comes into contack with. \ - The rapier comes with its own sheath, this is rather noticeable as only the captain is known to carry a sheath. \ - The sheath itself can be used to block melee attacks only. Its also jet black colours." - item = /obj/item/storage/belt/sabre/rapier - cost = 8 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/dangerous/flamethrower - name = "Flamethrower" - desc = "A flamethrower, fueled by a portion of highly flammable biotoxins stolen previously from Nanotrasen \ - stations. Make a statement by roasting the filth in their own greed. Use with caution." - item = /obj/item/flamethrower/full/tank - cost = 4 - surplus = 40 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/dangerous/flechettegun - name = "Flechette Launcher" - desc = "A compact bullpup that fires micro-flechettes.\ - Flechettes have very poor performance idividually, but can be very deadly in numbers. \ - Pre-loaded with armor piercing flechettes that are capable of puncturing most kinds of armor." - item = /obj/item/gun/ballistic/automatic/flechette - cost = 12 - surplus = 30 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/dangerous/rapid - name = "Gloves of the North Star" - desc = "These gloves let the user punch people very fast. Does not improve weapon attack speed or the meaty fists of a hulk." - item = /obj/item/clothing/gloves/rapid - cost = 8 - -/datum/uplink_item/dangerous/guardian - name = "Holoparasites" - desc = "Though capable of near sorcerous feats via use of hardlight holograms and nanomachines, they require an \ - organic host as a home base and source of fuel. Holoparasites come in various types and share damage with their host." - item = /obj/item/storage/box/syndie_kit/guardian - cost = 15 - refundable = TRUE - cant_discount = TRUE - surplus = 0 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - player_minimum = 25 - restricted = TRUE - refund_path = /obj/item/guardiancreator/tech/choose/traitor - -/datum/uplink_item/dangerous/machinegun - name = "L6 Squad Automatic Weapon" - desc = "A fully-loaded Aussec Armoury belt-fed machine gun. \ - This deadly weapon has a massive 50-round magazine of devastating 1.95x129mm ammunition." - item = /obj/item/gun/ballistic/automatic/l6_saw - cost = 18 - surplus = 0 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/dangerous/carbine - name = "M-90gl Carbine" - desc = "A fully-loaded, specialized three-round burst carbine that fires 5.56mm ammunition from a 30 round magazine \ - with a toggleable 40mm underbarrel grenade launcher." - item = /obj/item/gun/ballistic/automatic/m90 - cost = 18 - surplus = 50 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/dangerous/powerfist - name = "Power Fist" - desc = "The power-fist is a metal gauntlet with a built-in piston-ram powered by an external gas supply.\ - Upon hitting a target, the piston-ram will extend forward to make contact for some serious damage. \ - Using a wrench on the piston valve will allow you to tweak the amount of gas used per punch to \ - deal extra damage and hit targets further. Use a screwdriver to take out any attached tanks." - item = /obj/item/melee/powerfist - cost = 8 - -/datum/uplink_item/dangerous/sniper - name = "Sniper Rifle" - desc = "Ranged fury, Syndicate style. Guaranteed to cause shock and awe or your TC back!" - item = /obj/item/gun/ballistic/automatic/sniper_rifle/syndicate - cost = 16 - surplus = 25 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/dangerous/bolt_action - name = "Surplus Rifle" - desc = "A horribly outdated bolt action weapon. You've got to be desperate to use this." - item = /obj/item/gun/ballistic/shotgun/boltaction - cost = 2 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/dangerous/foamsmg - name = "Toy Submachine Gun" - desc = "A fully-loaded Donksoft bullpup submachine gun that fires riot grade darts with a 20-round magazine." - item = /obj/item/gun/ballistic/automatic/c20r/toy - cost = 5 - surplus = 0 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/dangerous/foammachinegun - name = "Toy Machine Gun" - desc = "A fully-loaded Donksoft belt-fed machine gun. This weapon has a massive 50-round magazine of devastating \ - riot grade darts, that can briefly incapacitate someone in just one volley." - item = /obj/item/gun/ballistic/automatic/l6_saw/toy - cost = 10 - surplus = 0 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/dangerous/foampistol - name = "Toy Pistol with Riot Darts" - desc = "An innocent-looking toy pistol designed to fire foam darts. Comes loaded with riot-grade \ - darts effective at incapacitating a target." - item = /obj/item/gun/ballistic/automatic/toy/pistol/riot - cost = 3 - surplus = 10 \ No newline at end of file diff --git a/code/modules/uplink/uplink_items/uplink_devices.dm b/code/modules/uplink/uplink_items/uplink_devices.dm deleted file mode 100644 index 70c70a61b9..0000000000 --- a/code/modules/uplink/uplink_items/uplink_devices.dm +++ /dev/null @@ -1,251 +0,0 @@ - -/* - Uplink Items: - Unlike categories, uplink item entries are automatically sorted alphabetically on server init in a global list, - When adding new entries to the file, please keep them sorted by category. -*/ - -// Devices and Tools - -/datum/uplink_item/device_tools/emag - name = "Cryptographic Sequencer" - desc = "The cryptographic sequencer, electromagnetic card, or emag, is a small card that unlocks hidden functions \ - in electronic devices, subverts intended functions, and easily breaks security mechanisms." - item = /obj/item/card/emag - cost = 6 - -/datum/uplink_item/device_tools/emagrecharge - name = "Electromagnet Charging Device" - desc = "A small device intended for recharging Cryptographic Sequencers. Using it will add five extra charges to the Cryptographic Sequencer." - item = /obj/item/emagrecharge - cost = 2 - -/datum/uplink_item/device_tools/phantomthief - name = "Syndicate Mask" - desc = "A cheap plastic mask fitted with an adrenaline autoinjector, which can be used by simply tensing your muscles" - item = /obj/item/clothing/glasses/phantomthief/syndicate - cost = 2 - -/datum/uplink_item/device_tools/cutouts - name = "Adaptive Cardboard Cutouts" - desc = "These cardboard cutouts are coated with a thin material that prevents discoloration and makes the images on them appear more lifelike. \ - This pack contains three as well as a crayon for changing their appearances." - item = /obj/item/storage/box/syndie_kit/cutouts - cost = 1 - surplus = 20 - -/datum/uplink_item/device_tools/assault_pod - name = "Assault Pod Targeting Device" - desc = "Use this to select the landing zone of your assault pod." - item = /obj/item/assault_pod - cost = 30 - surplus = 0 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - restricted = TRUE - -/datum/uplink_item/device_tools/binary - name = "Binary Translator Key" - desc = "A key that, when inserted into a radio headset, allows you to listen to and talk with silicon-based lifeforms, \ - such as AI units and cyborgs, over their private binary channel. Caution should \ - be taken while doing this, as unless they are allied with you, they are programmed to report such intrusions." - item = /obj/item/encryptionkey/binary - cost = 2 - surplus = 75 - restricted = TRUE - -/datum/uplink_item/device_tools/magboots - name = "Blood-Red Magboots" - desc = "A pair of magnetic boots with a Syndicate paintjob that assist with freer movement in space or on-station \ - during gravitational generator failures. These reverse-engineered knockoffs of Nanotrasen's \ - 'Advanced Magboots' slow you down in simulated-gravity environments much like the standard issue variety." - item = /obj/item/clothing/shoes/magboots/syndie - cost = 2 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/device_tools/compressionkit - name = "Bluespace Compression Kit" - desc = "A modified version of a BSRPED that can be used to reduce the size of most items while retaining their original functions! \ - Does not work on storage items. \ - Recharge using bluespace crystals. \ - Comes with 5 charges." - item = /obj/item/compressionkit - cost = 5 - -/datum/uplink_item/device_tools/briefcase_launchpad - name = "Briefcase Launchpad" - desc = "A briefcase containing a launchpad, a device able to teleport items and people to and from targets up to twenty tiles away from the briefcase. \ - Also includes a remote control, disguised as an ordinary folder. Touch the briefcase with the remote to link it." - surplus = 0 - item = /obj/item/storage/briefcase/launchpad - cost = 6 - -/datum/uplink_item/device_tools/camera_bug - name = "Camera Bug" - desc = "Enables you to view all cameras on the main network, set up motion alerts and track a target. \ - Bugging cameras allows you to disable them remotely." - item = /obj/item/camera_bug - cost = 1 - surplus = 90 - -/datum/uplink_item/device_tools/military_belt - name = "Chest Rig" - desc = "A robust seven-slot set of webbing that is capable of holding all manner of tactical equipment." - item = /obj/item/storage/belt/military - cost = 1 - exclude_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/device_tools/fakenucleardisk - name = "Decoy Nuclear Authentication Disk" - desc = "It's just a normal disk. Visually it's identical to the real deal, but it won't hold up under closer scrutiny by the Captain. \ - Don't try to give this to us to complete your objective, we know better!" - item = /obj/item/disk/nuclear/fake - cost = 1 - surplus = 1 - -/datum/uplink_item/device_tools/frame - name = "F.R.A.M.E. PDA Cartridge" - desc = "When inserted into a personal digital assistant, this cartridge gives you five PDA viruses which \ - when used cause the targeted PDA to become a new uplink with zero TCs, and immediately become unlocked. \ - You will receive the unlock code upon activating the virus, and the new uplink may be charged with \ - telecrystals normally." - item = /obj/item/cartridge/virus/frame - cost = 2 - restricted = TRUE - -/datum/uplink_item/device_tools/toolbox - name = "Full Syndicate Toolbox" - desc = "The Syndicate toolbox is a suspicious black and red. It comes loaded with a full tool set including a \ - multitool and combat gloves that are resistant to shocks and heat." - item = /obj/item/storage/toolbox/syndicate - cost = 1 - -/datum/uplink_item/device_tools/syndie_glue - name = "Glue" - desc = "A cheap bottle of one use syndicate brand super glue. \ - Use on any item to make it undroppable. \ - Be careful not to glue an item you're already holding!" - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - item = /obj/item/syndie_glue - cost = 2 - -/datum/uplink_item/device_tools/hacked_module - name = "Hacked AI Law Upload Module" - desc = "When used with an upload console, this module allows you to upload priority laws to an artificial intelligence. \ - Be careful with wording, as artificial intelligences may look for loopholes to exploit." - item = /obj/item/aiModule/syndicate - cost = 9 - -/datum/uplink_item/device_tools/medgun - name = "Medbeam Gun" - desc = "A wonder of Syndicate engineering, the Medbeam gun, or Medi-Gun enables a medic to keep his fellow \ - operatives in the fight, even while under fire. Don't cross the streams!" - item = /obj/item/gun/medbeam - cost = 15 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/device_tools/nutcracker - name = "Nutcracker" - desc = "An oversized version of what you'd initially expect here. Big enough to crush skulls." - item = /obj/item/nutcracker - cost = 1 - -/datum/uplink_item/device_tools/singularity_beacon - name = "Power Beacon" - desc = "When screwed to wiring attached to an electric grid and activated, this large device pulls any \ - active gravitational singularities or tesla balls towards it (provided they are not safely \ - contained), as well as increasing the odds of incoming meteor waves. \ - Because of its size, it cannot be carried. Ordering this sends you a small beacon \ - that will teleport the larger beacon to your location upon activation." - item = /obj/item/sbeacondrop - cost = 14 - -/datum/uplink_item/device_tools/powersink - name = "Power Sink" - desc = "When screwed to wiring attached to a power grid and activated, this large device lights up and places excessive \ - load on the grid, causing a station-wide blackout. The sink is large and cannot be stored in most \ - traditional bags and boxes. Caution: Will explode if the powernet contains sufficient amounts of energy." - item = /obj/item/powersink - cost = 6 - -/datum/uplink_item/device_tools/rad_laser - name = "Radioactive Microlaser" - desc = "A radioactive microlaser disguised as a standard Nanotrasen health analyzer. When used, it emits a \ - powerful burst of radiation, which, after a short delay, can incapacitate all but the most protected \ - of humanoids. It has two settings: intensity, which controls the power of the radiation, \ - and wavelength, which controls the delay before the effect kicks in." - item = /obj/item/healthanalyzer/rad_laser - cost = 3 - -/datum/uplink_item/device_tools/stimpack - name = "Stimpack" - desc = "Stimpacks, the tool of many great heroes, make you nearly immune to stuns and knockdowns for about \ - 5 minutes after injection." - item = /obj/item/reagent_containers/syringe/stimulants - cost = 5 - surplus = 90 - -/datum/uplink_item/device_tools/medkit - name = "Syndicate Combat Medic Kit" - desc = "This first aid kit is a suspicious brown and red. Included is a combat stimulant injector \ - for rapid healing, a medical night vision HUD for quick identification of injured personnel, \ - and other supplies helpful for a field medic." - item = /obj/item/storage/firstaid/tactical/nukeop - cost = 4 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/device_tools/surgerybag - name = "Syndicate Surgery Duffel Bag" - desc = "The Syndicate surgery duffel bag is a toolkit containing all surgery tools, surgical drapes, \ - a Syndicate brand MMI, a straitjacket, and a muzzle." - item = /obj/item/storage/backpack/duffelbag/syndie/surgery - cost = 3 - -/datum/uplink_item/device_tools/surgerybag_adv - name = "Advanced Syndicate Surgery Duffel Bag" - desc = "The Syndicate surgery duffel bag is a toolkit containing all advanced surgery tools, surgical drapes, \ - a Syndicate brand MMI, a straitjacket, a muzzle, and an outdated, yet still useful Combat Medic Kit." - item = /obj/item/storage/backpack/duffelbag/syndie/surgery_adv - cost = 10 - -/datum/uplink_item/device_tools/brainwash_disk - name = "Brainwashing Surgery Program" - desc = "A disk containing the procedure to perform a brainwashing surgery, allowing you to implant an objective onto a target. \ - Insert into an Operating Console to enable the procedure." - item = /obj/item/disk/surgery/brainwashing - cost = 3 - -/datum/uplink_item/device_tools/encryptionkey - name = "Syndicate Encryption Key" - desc = "A key that, when inserted into a radio headset, allows you to listen to all station department channels \ - as well as talk on an encrypted Syndicate channel with other agents that have the same key." - item = /obj/item/encryptionkey/syndicate - cost = 2 - surplus = 75 - restricted = TRUE - -/datum/uplink_item/device_tools/syndietome - name = "Syndicate Tome" - desc = "Using rare artifacts acquired at great cost, the Syndicate has reverse engineered \ - the seemingly magical books of a certain cult. Though lacking the esoteric abilities \ - of the originals, these inferior copies are still quite useful, being able to provide \ - both weal and woe on the battlefield, even if they do occasionally bite off a finger." - item = /obj/item/storage/book/bible/syndicate - cost = 9 - -/datum/uplink_item/device_tools/thermal - name = "Thermal Imaging Glasses" - desc = "These goggles can be turned to resemble common eyewear found throughout the station. \ - They allow you to see organisms through walls by capturing the upper portion of the infrared light spectrum, \ - emitted as heat and light by objects. Hotter objects, such as warm bodies, cybernetic organisms \ - and artificial intelligence cores emit more of this light than cooler objects like walls and airlocks." - item = /obj/item/clothing/glasses/thermal/syndi - cost = 4 - -/datum/uplink_item/device_tools/potion - name = "Syndicate Sentience Potion" - item = /obj/item/slimepotion/slime/sentience/nuclear - desc = "A potion recovered at great risk by undercover Syndicate operatives and then subsequently modified with Syndicate technology. \ - Using it will make any animal sentient, and bound to serve you, as well as implanting an internal radio for communication and an internal ID card for opening doors." - cost = 2 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - restricted = TRUE diff --git a/code/modules/uplink/uplink_items/uplink_explosives.dm b/code/modules/uplink/uplink_items/uplink_explosives.dm deleted file mode 100644 index 4db8643a66..0000000000 --- a/code/modules/uplink/uplink_items/uplink_explosives.dm +++ /dev/null @@ -1,161 +0,0 @@ - -/* - Uplink Items: - Unlike categories, uplink item entries are automatically sorted alphabetically on server init in a global list, - When adding new entries to the file, please keep them sorted by category. -*/ - -//Grenades and Explosives - -/datum/uplink_item/explosives/bioterrorfoam - name = "Bioterror Foam Grenade" - desc = "A powerful chemical foam grenade which creates a deadly torrent of foam that will mute, blind, confuse, \ - mutate, and irritate carbon lifeforms. Specially brewed by Tiger Cooperative chemical weapons specialists \ - using additional spore toxin. Ensure suit is sealed before use." - item = /obj/item/grenade/chem_grenade/bioterrorfoam - cost = 5 - surplus = 35 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/explosives/bombanana - name = "Bombanana" - desc = "A banana with an explosive taste! discard the peel quickly, as it will explode with the force of a syndicate minibomb \ - a few seconds after the banana is eaten." - item = /obj/item/reagent_containers/food/snacks/grown/banana/bombanana - cost = 4 //it is a bit cheaper than a minibomb because you have to take off your helmet to eat it, which is how you arm it - surplus = 0 - include_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/explosives/buzzkill - name = "Buzzkill Grenade Box" - desc = "A box with three grenades that release a swarm of angry bees upon activation. These bees indiscriminately attack friend or foe \ - with random toxins. Courtesy of the BLF and Tiger Cooperative." - item = /obj/item/storage/box/syndie_kit/bee_grenades - cost = 15 - surplus = 35 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/explosives/c4 - name = "Composition C-4" - desc = "C-4 is plastic explosive of the common variety Composition C. You can use it to breach walls, sabotage equipment, or connect \ - an assembly to it in order to alter the way it detonates. It can be attached to almost all objects and has a modifiable timer with a \ - minimum setting of 10 seconds." - item = /obj/item/grenade/plastic/c4 - cost = 1 - -/datum/uplink_item/explosives/c4bag - name = "Bag of C-4 explosives" - desc = "Because sometimes quantity is quality. Contains 10 C-4 plastic explosives." - item = /obj/item/storage/backpack/duffelbag/syndie/c4 - cost = 9 //10% discount! - cant_discount = TRUE - -/datum/uplink_item/explosives/x4bag - name = "Bag of X-4 explosives" - desc = "Contains 3 X-4 shaped plastic explosives. Similar to C4, but with a stronger blast that is directional instead of circular. \ - X-4 can be placed on a solid surface, such as a wall or window, and it will blast through the wall, injuring anything on the opposite side, while being safer to the user. \ - For when you want a controlled explosion that leaves a wider, deeper, hole." - item = /obj/item/storage/backpack/duffelbag/syndie/x4 - cost = 4 // - cant_discount = TRUE - -/datum/uplink_item/explosives/clown_bomb_clownops - name = "Clown Bomb" - desc = "The Clown bomb is a hilarious device capable of massive pranks. It has an adjustable timer, \ - with a minimum of 60 seconds, and can be bolted to the floor with a wrench to prevent \ - movement. The bomb is bulky and cannot be moved; upon ordering this item, a smaller beacon will be \ - transported to you that will teleport the actual bomb to it upon activation. Note that this bomb can \ - be defused, and some crew may attempt to do so." - item = /obj/item/sbeacondrop/clownbomb - cost = 15 - surplus = 0 - include_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/explosives/detomatix - name = "Detomatix PDA Cartridge" - desc = "When inserted into a personal digital assistant, this cartridge gives you four opportunities to \ - detonate PDAs of crewmembers who have their message feature enabled. \ - The concussive effect from the explosion will knock the recipient out for a short period, and deafen them for longer." - item = /obj/item/cartridge/virus/syndicate - cost = 5 - restricted = TRUE - -/datum/uplink_item/explosives/emp - name = "EMP Grenades and Implanter Kit" - desc = "A box that contains five EMP grenades and an EMP implant with three uses. Useful to disrupt communications, \ - security's energy weapons and silicon lifeforms when you're in a tight spot." - item = /obj/item/storage/box/syndie_kit/emp - cost = 2 - -/datum/uplink_item/explosives/virus_grenade - name = "Fungal Tuberculosis Grenade" - desc = "A primed bio-grenade packed into a compact box. Comes with five Bio Virus Antidote Kit (BVAK) \ - autoinjectors for rapid application on up to two targets each, a syringe, and a bottle containing \ - the BVAK solution." - item = /obj/item/storage/box/syndie_kit/tuberculosisgrenade - cost = 8 - surplus = 35 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - restricted = TRUE - -/datum/uplink_item/explosives/grenadier - name = "Grenadier's belt" - desc = "A belt containing 26 lethally dangerous and destructive grenades. Comes with an extra multitool and screwdriver." - item = /obj/item/storage/belt/grenade/full - include_modes = list(/datum/game_mode/nuclear) - cost = 22 - surplus = 0 - -/datum/uplink_item/explosives/pizza_bomb - name = "Pizza Bomb" - desc = "A pizza box with a bomb cunningly attached to the lid. The timer needs to be set by opening the box; afterwards, \ - opening the box again will trigger the detonation after the timer has elapsed. Comes with free pizza, for you or your target!" - item = /obj/item/pizzabox/bomb - cost = 6 - surplus = 8 - -/datum/uplink_item/explosives/syndicate_bomb - name = "Syndicate Bomb" - desc = "The Syndicate bomb is a fearsome device capable of massive destruction. It has an adjustable timer, \ - with a minimum of 60 seconds, and can be bolted to the floor with a wrench to prevent \ - movement. The bomb is bulky and cannot be moved; upon ordering this item, a smaller beacon will be \ - transported to you that will teleport the actual bomb to it upon activation. Note that this bomb can \ - be defused, and some crew may attempt to do so." - item = /obj/item/sbeacondrop/bomb - cost = 11 - -/datum/uplink_item/explosives/syndicate_detonator - name = "Syndicate Detonator" - desc = "The Syndicate detonator is a companion device to the Syndicate bomb. Simply press the included button \ - and an encrypted radio frequency will instruct all live Syndicate bombs to detonate. \ - Useful for when speed matters or you wish to synchronize multiple bomb blasts. Be sure to stand clear of \ - the blast radius before using the detonator." - item = /obj/item/syndicatedetonator - cost = 3 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/explosives/syndicate_minibomb - name = "Syndicate Minibomb" - desc = "The minibomb is a grenade with a five-second fuse. Upon detonation, it will create a small hull breach \ - in addition to dealing high amounts of damage to nearby personnel." - item = /obj/item/grenade/syndieminibomb - cost = 6 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/explosives/tearstache - name = "Teachstache Grenade" - desc = "A teargas grenade that launches sticky moustaches onto the face of anyone not wearing a clown or mime mask. The moustaches will \ - remain attached to the face of all targets for one minute, preventing the use of breath masks and other such devices." - item = /obj/item/grenade/chem_grenade/teargas/moustache - cost = 3 - surplus = 0 - include_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/explosives/viscerators - name = "Viscerator Delivery Grenade" - desc = "A unique grenade that deploys a swarm of viscerators upon activation, which will chase down and shred \ - any non-operatives in the area." - item = /obj/item/grenade/spawnergrenade/manhacks - cost = 5 - surplus = 35 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) diff --git a/code/modules/uplink/uplink_items/uplink_implants.dm b/code/modules/uplink/uplink_items/uplink_implants.dm deleted file mode 100644 index 3262809cb5..0000000000 --- a/code/modules/uplink/uplink_items/uplink_implants.dm +++ /dev/null @@ -1,102 +0,0 @@ - -/* - Uplink Items: - Unlike categories, uplink item entries are automatically sorted alphabetically on server init in a global list, - When adding new entries to the file, please keep them sorted by category. -*/ - -// Implants - -/datum/uplink_item/implants/adrenal - name = "Adrenal Implant" - desc = "An implant injected into the body, and later activated at the user's will. It will inject a chemical \ - cocktail which removes all incapacitating effects, lets the user run faster and has a mild healing effect." - item = /obj/item/storage/box/syndie_kit/imp_adrenal - cost = 8 - player_minimum = 25 - -/datum/uplink_item/implants/antistun - name = "CNS Rebooter Implant" - desc = "This implant will help you get back up on your feet faster after being stunned. Comes with an autosurgeon." - item = /obj/item/autosurgeon/anti_stun - cost = 12 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/implants/freedom - name = "Freedom Implant" - desc = "An implant injected into the body and later activated at the user's will. It will attempt to free the \ - user from common restraints such as handcuffs." - item = /obj/item/storage/box/syndie_kit/imp_freedom - cost = 5 - -/datum/uplink_item/implants/microbomb - name = "Microbomb Implant" - desc = "An implant injected into the body, and later activated either manually or automatically upon death. \ - The more implants inside of you, the higher the explosive power. \ - This will permanently destroy your body, however." - item = /obj/item/storage/box/syndie_kit/imp_microbomb - cost = 2 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/implants/macrobomb - name = "Macrobomb Implant" - desc = "An implant injected into the body, and later activated either manually or automatically upon death. \ - Upon death, releases a massive explosion that will wipe out everything nearby." - item = /obj/item/storage/box/syndie_kit/imp_macrobomb - cost = 20 - include_modes = list(/datum/game_mode/nuclear) - restricted = TRUE - -/datum/uplink_item/implants/radio - name = "Internal Syndicate Radio Implant" - desc = "An implant injected into the body, allowing the use of an internal Syndicate radio. \ - Used just like a regular headset, but can be disabled to use external headsets normally and to avoid detection." - item = /obj/item/storage/box/syndie_kit/imp_radio - cost = 4 - restricted = TRUE - -/datum/uplink_item/implants/reviver - name = "Reviver Implant" - desc = "This implant will attempt to revive and heal you if you lose consciousness. Comes with an autosurgeon." - item = /obj/item/autosurgeon/reviver - cost = 8 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/implants/stealthimplant - name = "Stealth Implant" - desc = "This one-of-a-kind implant will make you almost invisible as long as you don't don't excessively move around. \ - On activation, it will conceal you inside a chameleon cardboard box that is only revealed once someone bumps into it." - item = /obj/item/implanter/stealth - cost = 8 - -/datum/uplink_item/implants/storage - name = "Storage Implant" - desc = "An implant injected into the body, and later activated at the user's will. It will open a small bluespace \ - pocket capable of storing two regular-sized items." - item = /obj/item/storage/box/syndie_kit/imp_storage - cost = 8 - -/datum/uplink_item/implants/thermals - name = "Thermal Eyes" - desc = "These cybernetic eyes will give you thermal vision. Comes with a free autosurgeon." - item = /obj/item/autosurgeon/thermal_eyes - cost = 8 - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/implants/uplink - name = "Uplink Implant" - desc = "An implant injected into the body, and later activated at the user's will. Has no telecrystals and must be charged by the use of physical telecrystals. \ - Undetectable (except via surgery), and excellent for escaping confinement." - item = /obj/item/storage/box/syndie_kit/imp_uplink - cost = 4 - // An empty uplink is kinda useless. - surplus = 0 - restricted = TRUE - -/datum/uplink_item/implants/xray - name = "X-ray Vision Implant" - desc = "These cybernetic eyes will give you X-ray vision. Comes with an autosurgeon." - item = /obj/item/autosurgeon/xray_eyes - cost = 10 - surplus = 0 - include_modes = list(/datum/game_mode/nuclear) diff --git a/code/modules/uplink/uplink_items/uplink_roles.dm b/code/modules/uplink/uplink_items/uplink_roles.dm deleted file mode 100644 index 89d3c25700..0000000000 --- a/code/modules/uplink/uplink_items/uplink_roles.dm +++ /dev/null @@ -1,226 +0,0 @@ - -/* - Uplink Items: - Unlike categories, uplink item entries are automatically sorted alphabetically on server init in a global list, - When adding new entries to the file, please keep them sorted by category. -*/ - -// Role-specific items - -/datum/uplink_item/role_restricted/ancient_jumpsuit - name = "Ancient Jumpsuit" - desc = "A tattered old jumpsuit that will provide absolutely no benefit to you. It fills the wearer with a strange compulsion to blurt out 'glorf'." - item = /obj/item/clothing/under/color/grey/glorf - cost = 20 - restricted_roles = list("Assistant") - -/datum/uplink_item/role_restricted/pie_cannon - name = "Banana Cream Pie Cannon" - desc = "A special pie cannon for a special clown, this gadget can hold up to 20 pies and automatically fabricates one every two seconds!" - cost = 10 - item = /obj/item/pneumatic_cannon/pie/selfcharge - restricted_roles = list("Clown") - -/datum/uplink_item/role_restricted/blastcannon - name = "Blast Cannon" - desc = "A highly specialized weapon, the Blast Cannon is actually relatively simple. It contains an attachment for a tank transfer valve mounted to an angled pipe specially constructed \ - withstand extreme pressure and temperatures, and has a mechanical trigger for triggering the transfer valve. Essentially, it turns the explosive force of a bomb into a narrow-angle \ - blast wave \"projectile\". Aspiring scientists may find this highly useful, as forcing the pressure shockwave into a narrow angle seems to be able to bypass whatever quirk of physics \ - disallows explosive ranges above a certain distance, allowing for the device to use the theoretical yield of a transfer valve bomb, instead of the factual yield." - item = /obj/item/gun/blastcannon - cost = 14 //High cost because of the potential for extreme damage in the hands of a skilled gas masked scientist. - restricted_roles = list("Research Director", "Scientist") - -/datum/uplink_item/role_restricted/alientech - name = "Alien Research Disk" - desc = "A technology disk holding a terabyte of highly confidential abductor technology. \ - Simply insert into research console of choice and import the files from the disk. Because of its foreign nature, it may require multiple uploads to work properly." - item = /obj/item/disk/tech_disk/abductor - cost = 12 - restricted_roles = list("Research Director", "Scientist", "Roboticist") - -/datum/uplink_item/role_restricted/clown_bomb - name = "Clown Bomb" - desc = "The Clown bomb is a hilarious device capable of massive pranks. It has an adjustable timer, \ - with a minimum of 60 seconds, and can be bolted to the floor with a wrench to prevent \ - movement. The bomb is bulky and cannot be moved; upon ordering this item, a smaller beacon will be \ - transported to you that will teleport the actual bomb to it upon activation. Note that this bomb can \ - be defused, and some crew may attempt to do so. \ - The bomb core can be pried out and manually detonated with other explosives." - item = /obj/item/sbeacondrop/clownbomb - cost = 15 - restricted_roles = list("Clown") - -/* -/datum/uplink_item/role_restricted/clowncar - name = "Clown Car" - desc = "The Clown Car is the ultimate transportation method for any worthy clown! \ - Simply insert your bikehorn and get in, and get ready to have the funniest ride of your life! \ - You can ram any spacemen you come across and stuff them into your car, kidnapping them and locking them inside until \ - someone saves them or they manage to crawl out. Be sure not to ram into any walls or vending machines, as the springloaded seats \ - are very sensetive. Now with our included lube defense mechanism which will protect you against any angry shitcurity!" - item = /obj/vehicle/sealed/car/clowncar - cost = 15 - restricted_roles = list("Clown") -*/ - -/datum/uplink_item/role_restricted/clumsyDNA - name = "Clumsy Clown DNA" - desc = "A DNA injector that has been loaded with the clown gene that makes people clumsy.. \ - Making someone clumsy will allow them to use clown firing pins as well as Reverse Revolvers. For a laugh try using this on the HOS to see how many times they shoot themselves in the foot!" - cost = 1 - item = /obj/item/dnainjector/clumsymut - restricted_roles = list("Clown") - -/datum/uplink_item/role_restricted/haunted_magic_eightball - name = "Haunted Magic Eightball" - desc = "Most magic eightballs are toys with dice inside. Although identical in appearance to the harmless toys, this occult device reaches into the spirit world to find its answers. \ - Be warned, that spirits are often capricious or just little assholes. To use, simply speak your question aloud, then begin shaking." - item = /obj/item/toy/eightball/haunted - cost = 2 - restricted_roles = list("Curator") - limited_stock = 1 //please don't spam deadchat - -/datum/uplink_item/role_restricted/his_grace - name = "His Grace" - desc = "An incredibly dangerous weapon recovered from a station overcome by the grey tide. Once activated, He will thirst for blood and must be used to kill to sate that thirst. \ - His Grace grants gradual regeneration and complete stun immunity to His wielder, but be wary: if He gets too hungry, He will become impossible to drop and eventually kill you if not fed. \ - However, if left alone for long enough, He will fall back to slumber. \ - To activate His Grace, simply unlatch Him." - item = /obj/item/his_grace - cost = 20 - restricted_roles = list("Chaplain") - surplus = 5 //Very low chance to get it in a surplus crate even without being the chaplain - -/datum/uplink_item/role_restricted/explosive_hot_potato - name = "Exploding Hot Potato" - desc = "A potato rigged with explosives. On activation, a special mechanism is activated that prevents it from being dropped. \ - The only way to get rid of it if you are holding it is to attack someone else with it, causing it to latch to that person instead." - item = /obj/item/hot_potato/syndicate - cost = 4 - restricted_roles = list("Cook", "Botanist", "Clown", "Mime") - -/datum/uplink_item/role_restricted/strange_seeds - name = "Pack of strange seeds" - desc = "Mysterious seeds as strange as their name implies. Spooky." - item = /obj/item/seeds/random - cost = 2 - restricted_roles = list("Botanist") - illegal_tech = FALSE - -/datum/uplink_item/role_restricted/strange_seeds_10pack - name = "Pack of strange seeds x10" - desc = "Mysterious seeds as strange as their name implies. Spooky. These come in bulk" - item = /obj/item/storage/box/strange_seeds_10pack - cost = 20 - restricted_roles = list("Botanist") - -/datum/uplink_item/role_restricted/ez_clean_bundle - name = "EZ Clean Grenade Bundle" - desc = "A box with three cleaner grenades using the trademark Waffle Co. formula. Serves as a cleaner and causes acid damage to anyone standing nearby. \ - The acid only affects carbon-based creatures." - item = /obj/item/storage/box/syndie_kit/ez_clean - cost = 6 - surplus = 20 - restricted_roles = list("Janitor") - -/datum/uplink_item/role_restricted/goldenbox - name = "Gold Toolbox" - desc = "A gold planted plastitanium toolbox loaded with tools. Comes with a set of AI detection multi-tool and a pare of combat gloves." - item = /obj/item/storage/toolbox/gold_real - cost = 3 // Has syndie tools + gloves + a robust weapon - restricted_roles = list("Assistant", "Curator") //Curator due to this being made of gold - It fits the theme - -/datum/uplink_item/role_restricted/mimery - name = "Guide to Advanced Mimery Series" - desc = "The classical two part series on how to further hone your mime skills. Upon studying the series, the user should be able to make 3x1 invisible walls, and shoot bullets out of their fingers. \ - Obviously only works for Mimes." - cost = 12 - item = /obj/item/storage/box/syndie_kit/mimery - restricted_roles = list("Mime") - -/datum/uplink_item/role_restricted/ultrahonkpins - name = "Hilarious firing pin" - desc = "A single firing pin made for Clown agents, this firing pin makes any gun honk when fired if not a true clown! \ - This firing pin also helps you fire the gun correctly. May the HonkMother HONK you agent." - item = /obj/item/firing_pin/clown/ultra - cost = 2 - restricted_roles = list("Clown") - -/datum/uplink_item/role_restricted/pressure_mod - name = "Kinetic Accelerator Pressure Mod" - desc = "A modification kit which allows Kinetic Accelerators to do greatly increased damage while indoors. \ - Occupies 35% mod capacity." - item = /obj/item/borg/upgrade/modkit/indoors - cost = 5 //you need two for full damage, so total of 10 for maximum damage - limited_stock = 2 //you can't use more than two! - restricted_roles = list("Shaft Miner") - -/datum/uplink_item/role_restricted/kitchen_gun - name = "Kitchen Gun (TM)" - desc = "A revolutionary .45 caliber cleaning solution! Say goodbye to daily stains and dirty surfaces with Kitchen Gun (TM)! \ - Just five shots from Kitchen Gun (TM), and it'll sparkle like new! Includes two extra ammunition clips!" - cost = 10 - surplus = 40 - restricted_roles = list("Cook", "Janitor") - item = /obj/item/storage/box/syndie_kit/kitchen_gun - -/datum/uplink_item/role_restricted/kitchen_gun_ammo - name = "Kitchen Gun (TM) .45 Magazine" - desc = "An extra eight bullets for an extra eight uses of Kitchen Gun (TM)!" - cost = 1 - restricted_roles = list("Cook", "Janitor") - item = /obj/item/ammo_box/magazine/m45/kitchengun - -/datum/uplink_item/role_restricted/magillitis_serum - name = "Magillitis Serum Autoinjector" - desc = "A single-use autoinjector which contains an experimental serum that causes rapid muscular growth in Hominidae. \ - Side-affects may include hypertrichosis, violent outbursts, and an unending affinity for bananas." - item = /obj/item/reagent_containers/hypospray/magillitis - cost = 8 - restricted_roles = list("Geneticist", "Chief Medical Officer") - -/datum/uplink_item/role_restricted/modified_syringe_gun - name = "Modified Syringe Gun" - desc = "A syringe gun that fires DNA injectors instead of normal syringes." - item = /obj/item/gun/syringe/dna - cost = 14 - restricted_roles = list("Geneticist", "Chief Medical Officer") - -/datum/uplink_item/role_restricted/chemical_gun - name = "Reagent Dartgun" - desc = "A heavily modified syringe gun which is capable of synthesizing its own chemical darts using input reagents. Can hold 100u of reagents." - item = /obj/item/gun/chem - cost = 12 - restricted_roles = list("Chemist", "Chief Medical Officer") - -/datum/uplink_item/role_restricted/reverse_bear_trap - name = "Reverse Bear Trap" - desc = "An ingenious execution device worn on (or forced onto) the head. Arming it starts a 1-minute kitchen timer mounted on the bear trap. When it goes off, the trap's jaws will \ - violently open, instantly killing anyone wearing it by tearing their jaws in half. To arm, attack someone with it while they're not wearing headgear, and you will force it onto their \ - head after three seconds uninterrupted." - cost = 5 - item = /obj/item/reverse_bear_trap - restricted_roles = list("Clown") - -/datum/uplink_item/role_restricted/reverse_revolver - name = "Reverse Revolver" - desc = "A revolver that always fires at its user. \"Accidentally\" drop your weapon, then watch as the greedy corporate pigs blow their own brains all over the wall. \ - The revolver itself is actually real. Only clumsy people, and clowns, can fire it normally. Comes in a box of hugs. Honk." - cost = 14 - item = /obj/item/storage/box/hug/reverse_revolver - restricted_roles = list("Clown") - -/datum/uplink_item/role_restricted/taeclowndo_shoes - name = "Tae-clown-do Shoes" - desc = "A pair of shoes for the most elite agents of the honkmotherland. They grant the mastery of taeclowndo with some honk-fu moves as long as they're worn." - cost = 14 - item = /obj/item/clothing/shoes/clown_shoes/taeclowndo - restricted_roles = list("Clown") - -/datum/uplink_item/role_restricted/emitter_cannon - name = "Emitter Cannon" - desc = "A small emitter fitted into a gun case, do to size constraints and safety it can only shoot about ten times when fully charged." - cost = 5 //Low ammo, and deals same as 10mm but emp-able - item = /obj/item/gun/energy/emitter - restricted_roles = list("Chief Engineer", "Station Engineer", "Atmospheric Technician") diff --git a/code/modules/uplink/uplink_items/uplink_stealth.dm b/code/modules/uplink/uplink_items/uplink_stealth.dm deleted file mode 100644 index 65a8ad4080..0000000000 --- a/code/modules/uplink/uplink_items/uplink_stealth.dm +++ /dev/null @@ -1,134 +0,0 @@ - -// Stealthy Weapons - -/* - Uplink Items: - Unlike categories, uplink item entries are automatically sorted alphabetically on server init in a global list, - When adding new entries to the file, please keep them sorted by category. -*/ - -/datum/uplink_item/stealthy_weapons/combatglovesplus - name = "Combat Gloves Plus" - desc = "A pair of gloves that are fireproof and shock resistant, however unlike the regular Combat Gloves this one uses nanotechnology \ - to learn the abilities of krav maga to the wearer." - item = /obj/item/clothing/gloves/krav_maga/combatglovesplus - cost = 5 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - surplus = 0 - -/datum/uplink_item/stealthy_weapons/cqc - name = "CQC Manual" - desc = "A manual that teaches a single user tactical Close-Quarters Combat before self-destructing." - item = /obj/item/book/granter/martial/cqc - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - cost = 13 - surplus = 0 - -/datum/uplink_item/stealthy_weapons/dart_pistol - name = "Dart Pistol" - desc = "A miniaturized version of a normal syringe gun. It is very quiet when fired and can fit into any \ - space a small item can." - item = /obj/item/gun/syringe/syndicate - cost = 4 - surplus = 50 - -/datum/uplink_item/stealthy_weapons/dehy_carp - name = "Dehydrated Space Carp" - desc = "Looks like a plush toy carp, but just add water and it becomes a real-life space carp! Activate in \ - your hand before use so it knows not to kill you." - item = /obj/item/toy/plush/carpplushie/dehy_carp - cost = 1 - -/datum/uplink_item/stealthy_weapons/edagger - name = "Energy Dagger" - desc = "A dagger made of energy that looks and functions as a pen when off." - item = /obj/item/pen/edagger - cost = 2 - -/datum/uplink_item/stealthy_weapons/martialarts - name = "Sleeping Carp Scroll" - desc = "This scroll contains the secrets of an ancient martial arts technique. You will master unarmed combat, \ - deflecting all ranged weapon fire, but you also refuse to use dishonorable ranged weaponry." - item = /obj/item/book/granter/martial/carp - cost = 17 - surplus = 0 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/stealthy_weapons/martialartstwo - name = "Rising Bass Scroll" - desc = "This scroll contains the secrets of an ancient martial arts technique. You will become proficient in fleeing situations, \ - and dodging all ranged weapon fire, but you will refuse to use dishonorable ranged weaponry." - item = /obj/item/book/granter/martial/bass - cost = 18 - surplus = 0 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/stealthy_weapons/crossbow - name = "Miniature Energy Crossbow" - desc = "A short bow mounted across a tiller in miniature. Small enough to \ - fit into a pocket or slip into a bag unnoticed. It will synthesize \ - and fire bolts tipped with a paralyzing toxin that will briefly stun \ - targets and cause them to slur as if inebriated. It can produce an \ - infinite number of bolts, but takes time to automatically recharge \ - after each shot." - item = /obj/item/gun/energy/kinetic_accelerator/crossbow - cost = 12 - surplus = 50 - exclude_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/stealthy_weapons/traitor_chem_bottle - name = "Poison Kit" - desc = "An assortment of deadly chemicals packed into a compact box. Comes with a syringe for more precise application." - item = /obj/item/storage/box/syndie_kit/chemical - cost = 6 - surplus = 50 - -/datum/uplink_item/stealthy_weapons/romerol_kit - name = "Romerol" - desc = "A highly experimental bioterror agent which creates dormant nodules to be etched into the grey matter of the brain. \ - On death, these nodules take control of the dead body, causing limited revivification, \ - along with slurred speech, aggression, and the ability to infect others with this agent." - item = /obj/item/storage/box/syndie_kit/romerol - cost = 25 - cant_discount = TRUE - exclude_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/stealthy_weapons/sleepy_pen - name = "Sleepy Pen" - desc = "A syringe disguised as a functional pen, filled with a potent mix of drugs, including a \ - strong anesthetic and a chemical that prevents the target from speaking. \ - The pen holds one dose of the mixture, and can be refilled with any chemicals. Note that before the target \ - falls asleep, they will be able to move and act." - item = /obj/item/pen/sleepy - cost = 4 - exclude_modes = list(/datum/game_mode/nuclear) - -datum/uplink_item/stealthy_weapons/taeclowndo_shoes - name = "Tae-clown-do Shoes" - desc = "A pair of shoes for the most elite agents of the honkmotherland. They grant the mastery of taeclowndo with some honk-fu moves as long as they're worn." - cost = 12 - item = /obj/item/clothing/shoes/clown_shoes/taeclowndo - include_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/stealthy_weapons/suppressor - name = "Suppressor" - desc = "This suppressor will silence the shots of the weapon it is attached to for increased stealth and superior ambushing capability. \ - It is compatible with many small ballistic guns including the Stechkin and C-20r, but not revolvers or energy guns." - item = /obj/item/suppressor - cost = 1 - surplus = 10 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/stealthy_weapons/soap - name = "Syndicate Soap" - desc = "A sinister-looking surfactant used to clean blood stains to hide murders and prevent DNA analysis. \ - You can also drop it underfoot to slip people." - item = /obj/item/soap/syndie - cost = 1 - surplus = 50 - -/datum/uplink_item/stealthy_weapons/soap_clusterbang - name = "Slipocalypse Clusterbang" - desc = "A traditional clusterbang grenade with a payload consisting entirely of Syndicate soap. Useful in any scenario!" - item = /obj/item/grenade/clusterbuster/soap - cost = 6 diff --git a/code/modules/uplink/uplink_items/uplink_stealthdevices.dm b/code/modules/uplink/uplink_items/uplink_stealthdevices.dm deleted file mode 100644 index d98548612e..0000000000 --- a/code/modules/uplink/uplink_items/uplink_stealthdevices.dm +++ /dev/null @@ -1,125 +0,0 @@ - -/* - Uplink Items: - Unlike categories, uplink item entries are automatically sorted alphabetically on server init in a global list, - When adding new entries to the file, please keep them sorted by category. -*/ - -// Stealth Items - -/datum/uplink_item/stealthy_tools/agent_card - name = "Agent Identification Card" - desc = "Agent cards prevent artificial intelligences from tracking the wearer, and can copy access \ - from other identification cards. The access is cumulative, so scanning one card does not erase the \ - access gained from another. In addition, they can be forged to display a new assignment and name. \ - This can be done an unlimited amount of times. Some Syndicate areas and devices can only be accessed \ - with these cards." - item = /obj/item/card/id/syndicate - cost = 2 - -/datum/uplink_item/stealthy_tools/ai_detector - name = "Artificial Intelligence Detector" - desc = "A functional multitool that turns red when it detects an artificial intelligence watching it, and can be \ - activated to display their exact viewing location and nearby security camera blind spots. Knowing when \ - an artificial intelligence is watching you is useful for knowing when to maintain cover, and finding nearby \ - blind spots can help you identify escape routes." - item = /obj/item/multitool/ai_detect - cost = 1 - -/datum/uplink_item/stealthy_tools/chameleon - name = "Chameleon Kit" - desc = "A set of items that contain chameleon technology allowing you to disguise as pretty much anything on the station, and more! \ - Due to budget cuts, the shoes don't provide protection against slipping." - item = /obj/item/storage/box/syndie_kit/chameleon - cost = 2 - exclude_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/stealthy_tools/chameleon_proj - name = "Chameleon Projector" - desc = "Projects an image across a user, disguising them as an object scanned with it, as long as they don't \ - move the projector from their hand. Disguised users move slowly, and projectiles pass over them." - item = /obj/item/chameleon - cost = 7 - -/datum/uplink_item/stealthy_tools/codespeak_manual - name = "Codespeak Manual" - desc = "Syndicate agents can be trained to use a series of codewords to convey complex information, which sounds like random concepts and drinks to anyone listening. \ - This manual teaches you this Codespeak. You can also hit someone else with the manual in order to teach them. This is the deluxe edition, which has unlimited uses." - item = /obj/item/codespeak_manual/unlimited - cost = 3 - -/datum/uplink_item/stealthy_tools/combatbananashoes - name = "Combat Banana Shoes" - desc = "While making the wearer immune to most slipping attacks like regular combat clown shoes, these shoes \ - can generate a large number of synthetic banana peels as the wearer walks, slipping up would-be pursuers. They also \ - squeak significantly louder." - item = /obj/item/clothing/shoes/clown_shoes/banana_shoes/combat - cost = 6 - surplus = 0 - include_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/stealthy_tools/emplight - name = "EMP Flashlight" - desc = "A small, self-recharging, short-ranged EMP device disguised as a working flashlight. \ - Useful for disrupting headsets, cameras, doors, lockers and borgs during stealth operations. \ - Attacking a target with this flashlight will direct an EM pulse at it and consumes a charge." - item = /obj/item/flashlight/emp - cost = 2 - surplus = 30 - -/datum/uplink_item/stealthy_tools/failsafe - name = "Failsafe Uplink Code" - desc = "When entered the uplink will self-destruct immidiately." - item = /obj/effect/gibspawner/generic - cost = 1 - surplus = 0 - restricted = TRUE - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/stealthy_tools/failsafe/spawn_item(spawn_path, mob/user, datum/component/uplink/U) - if(!U) - return - U.failsafe_code = U.generate_code() - to_chat(user, "The new failsafe code for this uplink is now : [U.failsafe_code].") - if(user.mind) - user.mind.store_memory("Failsafe code for [U.parent] : [U.failsafe_code]") - return U.parent //For log icon - -/datum/uplink_item/stealthy_tools/mulligan - name = "Mulligan" - desc = "Screwed up and have security on your tail? This handy syringe will give you a completely new identity \ - and appearance." - item = /obj/item/reagent_containers/syringe/mulligan - cost = 3 - surplus = 30 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/stealthy_tools/syndigaloshes - name = "No-Slip Chameleon Shoes" - desc = "These shoes will allow the wearer to run on wet floors and slippery objects without falling down. \ - They do not work on heavily lubricated surfaces." - item = /obj/item/clothing/shoes/chameleon/noslip - cost = 2 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - player_minimum = 20 - -/datum/uplink_item/stealthy_tools/syndigaloshes/nuke - item = /obj/item/clothing/shoes/chameleon/noslip - cost = 4 - exclude_modes = list() - include_modes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/stealthy_tools/jammer - name = "Radio Jammer" - desc = "This device will disrupt any nearby outgoing radio communication when activated. Does not affect binary chat." - item = /obj/item/jammer - cost = 5 - -/datum/uplink_item/stealthy_tools/smugglersatchel - name = "Smuggler's Satchel" - desc = "This satchel is thin enough to be hidden in the gap between plating and tiling; great for stashing \ - your stolen goods. Comes with a crowbar and a floor tile inside. Properly hidden satchels have been \ - known to survive intact even beyond the current shift. " - item = /obj/item/storage/backpack/satchel/flat - cost = 2 - surplus = 30 diff --git a/code/modules/uplink/uplink_items/uplink_support.dm b/code/modules/uplink/uplink_items/uplink_support.dm deleted file mode 100644 index fe1415adc8..0000000000 --- a/code/modules/uplink/uplink_items/uplink_support.dm +++ /dev/null @@ -1,76 +0,0 @@ - -/* - Uplink Items: - Unlike categories, uplink item entries are automatically sorted alphabetically on server init in a global list, - When adding new entries to the file, please keep them sorted by category. -*/ - -//Support and Mechs - -/datum/uplink_item/support/clown_reinforcement - name = "Clown Reinforcements" - desc = "Call in an additional clown to share the fun, equipped with full starting gear, but no telecrystals." - item = /obj/item/antag_spawner/nuke_ops/clown - cost = 20 - include_modes = list(/datum/game_mode/nuclear/clown_ops) - restricted = TRUE - -/datum/uplink_item/support/reinforcement - name = "Reinforcements" - desc = "Call in an additional team member. They won't come with any gear, so you'll have to save some telecrystals \ - to arm them as well." - item = /obj/item/antag_spawner/nuke_ops - cost = 25 - refundable = TRUE - include_modes = list(/datum/game_mode/nuclear) - restricted = TRUE - -/datum/uplink_item/support/reinforcement/assault_borg - name = "Syndicate Assault Cyborg" - desc = "A cyborg designed and programmed for systematic extermination of non-Syndicate personnel. \ - Comes equipped with a self-resupplying LMG, a grenade launcher, energy sword, emag, pinpointer, flash and crowbar." - item = /obj/item/antag_spawner/nuke_ops/borg_tele/assault - refundable = TRUE - cost = 65 - restricted = TRUE - -/datum/uplink_item/support/reinforcement/medical_borg - name = "Syndicate Medical Cyborg" - desc = "A combat medical cyborg. Has limited offensive potential, but makes more than up for it with its support capabilities. \ - It comes equipped with a nanite hypospray, a medical beamgun, combat defibrillator, full surgical kit including an energy saw, an emag, pinpointer and flash. \ - Thanks to its organ storage bag, it can perform surgery as well as any humanoid." - item = /obj/item/antag_spawner/nuke_ops/borg_tele/medical - refundable = TRUE - cost = 35 - restricted = TRUE - -/datum/uplink_item/support/reinforcement/saboteur_borg - name = "Syndicate Saboteur Cyborg" - desc = "A streamlined engineering cyborg, equipped with covert modules. Also incapable of leaving the welder in the shuttle. \ - Aside from regular Engineering equipment, it comes with a special destination tagger that lets it traverse disposals networks. \ - Its chameleon projector lets it disguise itself as a Nanotrasen cyborg, on top it has thermal vision and a pinpointer." - item = /obj/item/antag_spawner/nuke_ops/borg_tele/saboteur - refundable = TRUE - cost = 35 - restricted = TRUE - -/datum/uplink_item/support/gygax - name = "Dark Gygax Exosuit" - desc = "A lightweight exosuit, painted in a dark scheme. Its speed and equipment selection make it excellent \ - for hit-and-run style attacks. Features an incendiary carbine, flash bang launcher, teleporter, ion thrusters and a Tesla energy array." - item = /obj/mecha/combat/gygax/dark/loaded - cost = 80 - -/datum/uplink_item/support/honker - name = "Dark H.O.N.K." - desc = "A clown combat mech equipped with bombanana peel and tearstache grenade launchers, as well as the ubiquitous HoNkER BlAsT 5000." - item = /obj/mecha/combat/honker/dark/loaded - cost = 80 - include_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/support/mauler - name = "Mauler Exosuit" - desc = "A massive and incredibly deadly military-grade exosuit. Features long-range targeting, thrust vectoring \ - and deployable smoke. Comes equipped with an LMG, scattershot carbine, missile rack, an antiprojectile armor booster and a Tesla energy array." - item = /obj/mecha/combat/marauder/mauler/loaded - cost = 140 diff --git a/code/modules/vehicles/cars/clowncar.dm b/code/modules/vehicles/cars/clowncar.dm index 73ba785ec2..a2a9c37cfd 100644 --- a/code/modules/vehicles/cars/clowncar.dm +++ b/code/modules/vehicles/cars/clowncar.dm @@ -21,7 +21,7 @@ /obj/vehicle/sealed/car/clowncar/auto_assign_occupant_flags(mob/M) if(ishuman(M)) var/mob/living/carbon/human/H = M - if(H.mind && HAS_TRAIT(H.mind, TRAIT_CLOWN_MENTALITY)) //Ensures only clowns can drive the car. (Including more at once) + if(H.mind && H.mind.assigned_role == "Clown") //Ensures only clowns can drive the car. (Including more at once) add_control_flags(M, VEHICLE_CONTROL_DRIVE|VEHICLE_CONTROL_PERMISSION) return add_control_flags(M, VEHICLE_CONTROL_KIDNAPPED) @@ -107,7 +107,7 @@ visible_message("[user] has pressed one of the colorful buttons on [src] and the clown car spews out a cloud of laughing gas.") var/datum/reagents/R = new/datum/reagents(300) R.my_atom = src - R.add_reagent(/datum/reagent/consumable/superlaughter, 50) + R.add_reagent("superlaughter", 50) var/datum/effect_system/smoke_spread/chem/smoke = new() smoke.set_up(R, 4) smoke.attach(src) diff --git a/code/modules/vending/assist.dm b/code/modules/vending/assist.dm index 0d0dd40b36..280bcb5ca2 100644 --- a/code/modules/vending/assist.dm +++ b/code/modules/vending/assist.dm @@ -1,7 +1,6 @@ /obj/machinery/vending/assist products = list(/obj/item/assembly/prox_sensor = 7, /obj/item/assembly/igniter = 6, - /obj/item/assembly/playback = 4, /obj/item/assembly/signaler = 6, /obj/item/wirecutters = 3, /obj/item/stock_parts/cell/crap = 6, diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm index 6116936880..626abd51ef 100644 --- a/code/modules/vending/clothesmate.dm +++ b/code/modules/vending/clothesmate.dm @@ -70,22 +70,14 @@ /obj/item/clothing/under/skirt/red = 3, /obj/item/clothing/under/skirt/purple = 3, /obj/item/clothing/under/sundress = 4, - /obj/item/clothing/under/sundresswhite = 4, /obj/item/clothing/under/stripeddress = 3, /obj/item/clothing/under/sailordress = 3, - /obj/item/clothing/under/sweptskirt = 3, - /obj/item/clothing/under/greendress = 3, - /obj/item/clothing/under/pinkdress = 3, /obj/item/clothing/under/redeveninggown = 3, /obj/item/clothing/under/blacktango = 3, - /obj/item/clothing/under/westernbustle = 3, - /obj/item/clothing/under/flamenco = 3, - /obj/item/clothing/under/flowerdress = 3, /obj/item/clothing/under/plaid_skirt = 3, /obj/item/clothing/under/plaid_skirt/blue = 3, /obj/item/clothing/under/plaid_skirt/purple = 3, /obj/item/clothing/under/plaid_skirt/green = 3, - /obj/item/clothing/under/croptop = 3, /obj/item/clothing/glasses/regular = 2, /obj/item/clothing/glasses/regular/jamjar = 2, /obj/item/clothing/head/sombrero = 3, @@ -134,13 +126,7 @@ /obj/item/clothing/head/christmashatg = 3, /obj/item/clothing/shoes/winterboots/christmasbootsr = 3, /obj/item/clothing/shoes/winterboots/christmasbootsg = 3, - /obj/item/clothing/shoes/winterboots/santaboots = 3, - /obj/item/clothing/head/cowboyhat = 3, - /obj/item/clothing/head/cowboyhat/black = 3, - /obj/item/clothing/head/cowboyhat/white = 3, - /obj/item/clothing/head/cowboyhat/pink = 3, - /obj/item/clothing/shoes/cowboyboots = 3, - /obj/item/clothing/shoes/cowboyboots/black = 3) + /obj/item/clothing/shoes/winterboots/santaboots = 3) contraband = list(/obj/item/clothing/under/syndicate/tacticool = 3, /obj/item/clothing/under/syndicate/tacticool/skirt = 3, /obj/item/clothing/mask/balaclava = 3, diff --git a/code/modules/vending/kinkmate.dm b/code/modules/vending/kinkmate.dm deleted file mode 100644 index f840f391fa..0000000000 --- a/code/modules/vending/kinkmate.dm +++ /dev/null @@ -1,48 +0,0 @@ -/obj/machinery/vending/kink - name = "KinkMate" - desc = "A vending machine for all your unmentionable desires." - icon = 'icons/obj/citvending.dmi' - icon_state = "kink" - circuit = /obj/item/circuitboard/machine/kinkmate - product_slogans = "Kinky!;Sexy!;Check me out, big boy!" - vend_reply = "Have fun, you shameless pervert!" - products = list( - /obj/item/clothing/under/maid = 5, - /obj/item/clothing/under/janimaid = 5, - /obj/item/clothing/neck/petcollar = 5, - /obj/item/clothing/neck/petcollar/choker = 5, - /obj/item/clothing/neck/petcollar/leather = 5, - /obj/item/restraints/handcuffs/fake/kinky = 5, - /obj/item/clothing/glasses/sunglasses/blindfold = 4, - /obj/item/clothing/mask/muzzle = 4, - /obj/item/clothing/under/stripper_pink = 3, - /obj/item/clothing/under/stripper_green = 3, - /obj/item/clothing/under/corset = 3, - /obj/item/clothing/under/gear_harness = 10, - /obj/item/dildo/custom = 5, - /obj/item/electropack/shockcollar = 3, - /obj/item/assembly/signaler = 3 - ) - contraband = list( - /obj/item/clothing/neck/petcollar/locked = 2, - /obj/item/key/collar = 2, - /obj/item/clothing/head/kitty = 3, - /obj/item/clothing/head/rabbitears = 3, - /obj/item/clothing/under/keyholesweater = 2, - /obj/item/clothing/under/mankini = 2, - /obj/item/clothing/under/jabroni = 2, - /obj/item/dildo/flared/huge = 3, - /obj/item/reagent_containers/glass/bottle/crocin = 5, - /obj/item/reagent_containers/glass/bottle/camphor = 5 - ) - premium = list( - /obj/item/clothing/accessory/skullcodpiece/fake = 3, - /obj/item/reagent_containers/glass/bottle/hexacrocin = 10, - /obj/item/clothing/under/pants/chaps = 5 - ) - refill_canister = /obj/item/vending_refill/kink - -/obj/item/vending_refill/kink - machine_name = "KinkMate" - icon = 'modular_citadel/icons/vending_restock.dmi' - icon_state = "refill_kink" diff --git a/code/modules/vending/medical.dm b/code/modules/vending/medical.dm index d32af7de03..ac850efc66 100644 --- a/code/modules/vending/medical.dm +++ b/code/modules/vending/medical.dm @@ -24,12 +24,6 @@ /obj/item/reagent_containers/glass/bottle/morphine = 4, /obj/item/reagent_containers/glass/bottle/toxin = 3, /obj/item/reagent_containers/syringe/antiviral = 6, - /obj/item/storage/hypospraykit/fire = 2, - /obj/item/storage/hypospraykit/toxin = 2, - /obj/item/storage/hypospraykit/o2 = 2, - /obj/item/storage/hypospraykit/brute = 2, - /obj/item/storage/hypospraykit/enlarge = 2, - /obj/item/reagent_containers/glass/bottle/vial/small = 5, /obj/item/storage/briefcase/medical = 2) contraband = list(/obj/item/reagent_containers/pill/tox = 3, /obj/item/reagent_containers/pill/morphine = 4, diff --git a/code/modules/vending/megaseed.dm b/code/modules/vending/megaseed.dm index 03241c4a86..5c092c3659 100644 --- a/code/modules/vending/megaseed.dm +++ b/code/modules/vending/megaseed.dm @@ -14,7 +14,6 @@ /obj/item/seeds/chanter = 3, /obj/item/seeds/chili = 3, /obj/item/seeds/cocoapod = 3, - /obj/item/seeds/coconut = 3, /obj/item/seeds/coffee = 3, /obj/item/seeds/cotton = 3, /obj/item/seeds/corn = 3, diff --git a/code/modules/vending/security.dm b/code/modules/vending/security.dm index 6cf8136c50..208386a93b 100644 --- a/code/modules/vending/security.dm +++ b/code/modules/vending/security.dm @@ -24,7 +24,6 @@ /obj/item/ssword_kit = 1) armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF - refill_canister = /obj/item/vending_refill/security /obj/machinery/vending/security/pre_throw(obj/item/I) if(istype(I, /obj/item/grenade)) @@ -34,6 +33,3 @@ var/obj/item/flashlight/F = I F.on = TRUE F.update_brightness() - -/obj/item/vending_refill/security - icon_state = "snackorange" diff --git a/code/modules/vending/sovietvend.dm b/code/modules/vending/sovietvend.dm deleted file mode 100644 index 086b37e4ee..0000000000 --- a/code/modules/vending/sovietvend.dm +++ /dev/null @@ -1,31 +0,0 @@ -/obj/machinery/vending/sovietvend - name = "KomradeVendtink" - desc = "Rodina-mat' zovyot!" - icon = 'icons/obj/citvending.dmi' - icon_state = "soviet" - vend_reply = "The fascist and capitalist svin'ya shall fall, komrade!" - product_slogans = "Quality worth waiting in line for!; Get Hammer and Sickled!; Sosvietsky soyuz above all!; With capitalist pigsky, you would have paid a fortunetink! ; Craftink in Motherland herself!" - products = list( - /obj/item/clothing/under/soviet = 20, - /obj/item/clothing/head/ushanka = 20, - /obj/item/clothing/shoes/jackboots = 20, - /obj/item/clothing/head/squatter_hat = 20, - /obj/item/clothing/under/squatter_outfit = 20, - /obj/item/clothing/under/russobluecamooutfit = 20, - /obj/item/clothing/head/russobluecamohat = 20 - ) - contraband = list( - /obj/item/clothing/under/syndicate/tacticool = 4, - /obj/item/clothing/mask/balaclava = 4, - /obj/item/clothing/suit/russofurcoat = 4, - /obj/item/clothing/head/russofurhat = 4, - /obj/item/clothing/suit/space/hardsuit/soviet = 3, - /obj/item/gun/energy/laser/LaserAK = 4 - ) - premium = list() - - refill_canister = /obj/item/vending_refill/soviet - -/obj/item/vending_refill/soviet - machine_name = "sovietvend" - icon_state = "refill_soviet" diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index cd643e4220..894aecc600 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -335,8 +335,6 @@ /obj/item/clothing/head/nemes = 1, /obj/item/clothing/head/pharaoh = 1, /obj/item/storage/fancy/candle_box = 3) - premium = list(/obj/item/toy/plush/plushvar = 1, - /obj/item/toy/plush/narplush = 1) refill_canister = /obj/item/vending_refill/wardrobe/chap_wardrobe /obj/item/vending_refill/wardrobe/chap_wardrobe diff --git a/code/modules/vore/eating/voreitems.dm b/code/modules/vore/eating/voreitems.dm index 05ab1e5f8b..741782545a 100644 --- a/code/modules/vore/eating/voreitems.dm +++ b/code/modules/vore/eating/voreitems.dm @@ -35,6 +35,7 @@ /* /datum/reagent/medicine/ickypak name = "Ickypak" + id = "ickypak" description = "A foul-smelling green liquid, for inducing muscle contractions to expel accidentally ingested things." reagent_state = LIQUID color = "#0E900E" @@ -56,6 +57,6 @@ /datum/chemical_reaction/ickypak name = "Ickypak" - id = /datum/reagent/medicine/ickypak - results = list(/datum/reagent/medicine/ickypak = 2) - required_reagents = list(/datum/reagent/chlorine = 2 , /datum/reagent/oil = 1) */ \ No newline at end of file + id = "ickypak" + results = list("ickypak" = 2) + required_reagents = list("chlorine" = 2 , "oil" = 1) */ \ No newline at end of file diff --git a/code/modules/vore/resizing/sizechemicals.dm b/code/modules/vore/resizing/sizechemicals.dm index 612e8c9fde..f83ba2ce76 100644 --- a/code/modules/vore/resizing/sizechemicals.dm +++ b/code/modules/vore/resizing/sizechemicals.dm @@ -5,6 +5,7 @@ /datum/reagent/medicine/macrocillin name = "Macrocillin" + id = "macrocillin" description = "Glowing yellow liquid." reagent_state = LIQUID color = "#FFFF00" // rgb: 255, 255, 0 @@ -16,12 +17,13 @@ M.sizescale(size) M << "You grow!" break - if(M.reagents.has_reagent(/datum/reagent/medicine/macrocillin)) - M.reagents.remove_reagent(/datum/reagent/medicine/macrocillin, 20) + if(M.reagents.has_reagent("macrocillin")) + M.reagents.remove_reagent("macrocillin", 20) ..() /datum/reagent/medicine/microcillin name = "Microcillin" + id = "microcillin" description = "Murky purple liquid." reagent_state = LIQUID color = "#800080" @@ -33,13 +35,14 @@ M.sizescale(size) M << "You shrink!" break; - if(M.reagents.has_reagent(/datum/reagent/medicine/microcillin)) - M.reagents.remove_reagent(/datum/reagent/medicine/microcillin, 20) + if(M.reagents.has_reagent("microcillin")) + M.reagents.remove_reagent("microcillin", 20) ..() /datum/reagent/medicine/normalcillin name = "Normalcillin" + id = "normalcillin" description = "Translucent cyan liquid." reagent_state = LIQUID color = "#00FFFF" @@ -59,13 +62,14 @@ M.sizescale(SIZESCALE_SMALL) M << "You grow!" - if(M.reagents.has_reagent(/datum/reagent/medicine/normalcillin)) - M.reagents.remove_reagent(/datum/reagent/medicine/normalcillin, 20) + if(M.reagents.has_reagent("normalcillin")) + M.reagents.remove_reagent("normalcillin", 20) ..() /datum/reagent/medicine/sizeoxadone name = "Sizeoxadone" + id = "sizeoxadone" description = "A volatile liquid used as a precursor to size-altering chemicals. Causes dizziness if taken unprocessed." reagent_state = LIQUID color = "#1E90FF" @@ -89,6 +93,7 @@ /datum/reagent/medicine/ickypak name = "Ickypak" + id = "ickypak" description = "A foul-smelling green liquid, for inducing muscle contractions to expel accidentally ingested things." reagent_state = LIQUID color = "#0E900E" diff --git a/config/config.txt b/config/config.txt index fafb3e5791..e71c2587b7 100644 --- a/config/config.txt +++ b/config/config.txt @@ -473,15 +473,3 @@ DISABLE_HIGH_POP_MC_MODE_AMOUNT 60 ## For reference, Goonstation uses a resolution of 21x15 for it's widescreen mode. ## Do note that changing this value will affect the title screen. The title screen will have to be updated manually if this is changed. DEFAULT_VIEW 21x15 - -### FAIL2TOPIC: -### Automated IP bans for world/Topic() spammers -## Enabled -FAIL2TOPIC_ENABLED -## Minimum wait time in deciseconds between valid requests -FAIL2TOPIC_RATE_LIMIT 10 -## Number of requests after breaching rate limit that triggers a ban -FAIL2TOPIC_MAX_FAILS 5 -## Firewall rule name used on physical server -FAIL2TOPIC_RULE_NAME _dd_fail2topic - diff --git a/config/game_options.txt b/config/game_options.txt index 060d782dbe..34c8ca48fd 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -575,16 +575,7 @@ MONKEYCAP 64 #Replaces standard extended/secret dichotomy with extended and calm/chaotic votes for dynamic. DYNAMIC_VOTING -## Choose which Engine to start the round with. Weight is after the comma. Setting the weight to 0 removes the engine from rotation. -BOX_RANDOM_ENGINE Box SM,3 -BOX_RANDOM_ENGINE Box Tesla,3 -BOX_RANDOM_ENGINE Box Singulo,3 -BOX_RANDOM_ENGINE Box SM 1x3,1 -BOX_RANDOM_ENGINE Box SM 5x5,1 -BOX_RANDOM_ENGINE Box SM 3x,0 - -## Whether or not there's a mode tier list vote after the secret/extended vote. -MODETIER_VOTING - -## Number of modes dropped by the modetier vote during mode selection, after vote. -DROPPED_MODES 3 +## Choose which Engine to start the round with, comment to remove an Engine from the rotation +BOX_RANDOM_ENGINE Engine SM +BOX_RANDOM_ENGINE Engine Tesla +BOX_RANDOM_ENGINE Engine Singulo \ No newline at end of file diff --git a/html/changelog.html b/html/changelog.html index 60412299cf..8eabba83df 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -50,328 +50,6 @@ -->
      -

      30 December 2019

      -

      AnturK updated:

      -
        -
      • Fixed ranged syndicate mobs stormtrooper training.
      • -
      -

      Arturlang updated:

      -
        -
      • Adds Bloodsuckers, beware.
      • -
      -

      BlueWildrose updated:

      -
        -
      • Fixed stargazers being unable to link to themselves if mindshielded or if holding psionic shielding devices (tinfoil hats) when the species is set.
      • -
      • Fixes non-roundstart slimes being unable to wag their tail.
      • -
      -

      Commandersand updated:

      -
        -
      • added two words to clown filter
      • -
      • Added new things to loadouts, check em
      • -
      -

      DeltaFire15 updated:

      -
        -
      • Clock cult kindle no longer cares about oxygen damage
      • -
      • changed mecha internals access for some special mechs.
      • -
      • no more mech maintenance access for engineers.
      • -
      • All heads of staff can now message CC
      • -
      • Removes a magicnumber
      • -
      • Rebalanced cult vs cult stun effects to debuff instead of stun
      • -
      -

      Detective-Google updated:

      -
        -
      • short hair 80's is no longer jank
      • -
      -

      Fermis updated:

      -
        -
      • tweaked how super bases/acids work but limiting them
      • -
      -

      Fikou updated:

      -
        -
      • the windup toolbox now has some more "realistic" sounds
      • -
      • the windup toolbox now rumbles again
      • -
      -

      Ghommie updated:

      -
        -
      • Fixed hulks, sleeping carp users, pacifists and people with chunky fingers being able to unrestrictly use gun and pneumatic cannon circuit assemblies.
      • -
      • Fixed gun circuit assemblies being only usable by human mobs.
      • -
      • Doubled the locomotion circuit external cooldown, thus halving the movable assemblies' movespeed.
      • -
      • Made wooden cabinet/closets... actually made of wood.
      • -
      • Wooden cabinets are now deconstructable with a screwdriver.
      • -
      • Deconstruction of large crates and other closet subtypes deconstructable with tools other than the welder is no longer instant.
      • -
      • You shouldn't be able to target objects you can't see (excluding darkness) with the ARCD and RLD
      • -
      • The admin RCD is ranged too, just like the ARCD.
      • -
      • Fixed welding, thirteen loko, welding and wraith spectacles not blinding people as expected. Thank you all whomst reported this issue in the suggestions box channel instead of the github repository's issues section, very smart!
      • -
      • Fixed on_mob eyes overlays not updating properly in certain cases.
      • -
      • Fixed deconversion from bloodshot eyes blood cult resetting your eyes' color to pitch black instead of their previous color, more or less.
      • -
      • Spinfusor nerf: Upped the casing and ammo box size by one step, removed the projectile's dismemberment value (explosions can still rip a limb or two off), halved the ammo box capacity, reduced the spinfusor ammo supply pack contents from 32 to 8, removed the casing's ability to explode when thrown.
      • -
      • Fixes bubblegum's death not unlocking the arena shuttle buyment.
      • -
      • Fixed alien tech node not being unlockable with subtypes of the accepted items.
      • -
      • Fixed reactive armor onmob overlays not updating when toggled and reactive teleport armor still using forceMove() instead of do_teleport()
      • -
      • Fixed space hermit asteroid rocks unintendedly spawning airless asteroid turf when mined, save for the perimeter.
      • -
      • Fixes reviver implant having been a crapshot ever since soft-crit was introduced years ago.
      • -
      • Added a "convalescence" time (about 15 seconds) after the user is out of unconsciousbess/crit to ensure they are properly stabilized.
      • -
      • Added a 15 minutes hardcap for accumulated revive cooldown (equivalent to 150 points of brute or burn healed) above which the implant starts cooling down regardless of user's conditions.
      • -
      • Fixed AI core displays I may have broken with my coding extravaganza.
      • -
      • Blue, Amber and Red security alert sounds should be half as loud now.
      • -
      • Buffed clown ops by removing their clumsiness and adding a new trait to be used in place of several clown role checks.
      • -
      • Clown ops too also suffer from not holding or wearing clown shoes now.
      • -
      • Fixed a few holo barriers lacking transparency.
      • -
      • Fixed character setup preview bodyparts not displaying correctly most of times.
      • -
      • Fixed character appearance preview displaying the mannequin in job attire instead of undergarments.
      • -
      • Fixed raven's shuttle computer not being of the emergency shuttle type.
      • -
      • Blood bank generators can now be anchored and unanchored now.
      • -
      • Ghost mentors can now orbit around the target instead of setting their view to theirs'.
      • -
      • Fixes a ghostchat eavesdropping exploit concerning VR.
      • -
      • Fixes VR deaths being broadcasted in deadchat.
      • -
      • Fixed a few pill bottle issues with the ChemMaster.
      • -
      • Fixes a few negative quirks not being properly removed when deleted.
      • -
      • Phobia and mute quirks are no longer cheesed by brain surgery grade healing or medicines.
      • -
      • Fixed double-flavour (and bland custom) ice creams.
      • -
      • Fixed Pubbystation's wall Nanomeds being inconsistent with other stations'.
      • -
      • dextrous simplemobs can now swap action intent with 1, 2, 3, 4 now. Just like humies, ayys and monkys.
      • -
      • Stops humanoids whose skin_tone variable is set to "albino" from showing up as pale when examined should their species not use skintones anyway.
      • -
      • Removed the old (almost) unused roboticist encryption key and headset.
      • -
      • Fixed goose meat.
      • -
      • Fixed a little door assembly glass dupe exploit
      • -
      • Fixed AI holopad speech text being small and whispers that in multiple exclamation marks echo through multiple areas.
      • -
      • Removed literally atrocious polka dotted accessories. They were even more atrocious than the yellow horrible tie.
      • -
      -

      Ghommie (also porting PRs by AnturK and Arkatos) updated:

      -
        -
      • Fixed light eaters not burning out borg lamplights and flashes. fix Fixed light eater not affecting open turfs emitting lights such as light tiles and fairy grass.
      • -
      • Fixed an empty reference about light eater armblade disintegration after Heart of Darkness removal.
      • -
      -

      Ghommie, Skogol updated:

      -
        -
      • refactored altclick interaction to allow alt-click interactable objects to parent call without forcing the turf contents stat menu open.
      • -
      • Alt clicking will no longer show turf contents for items inside bags etc.
      • -
      • Alt clicking the source of your turf contents stat menu will now close said menu.
      • -
      -

      GrayRachnid updated:

      -
        -
      • fixes consistency
      • -
      -

      Hatterhat updated:

      -
        -
      • Regenerative nanites, a "chemical" used in the combat stimulant injector. Actually quite stimulating, and not bad in a pinch for a nuclear operative. Check the Combat Medic Kit!
      • -
      • The Combat Medic Kit now has an advanced health analyzer and medisprays instead of patches and a chloral syringe.
      • -
      • The Advanced Syndicate Surgery Duffelbag or whatever it was doesn't get the better injector, because nobody uses it and so nobody's bothered to update it.
      • -
      • .357 speedloaders can now be printed with the Advanced Illegal Ballistics node on the tech tree!
      • -
      • okay so i may have given the .357 an extra speedloader at the same cost but it comes in a box now
      • -
      -

      ItzGabby updated:

      -
        -
      • Fixed AltClick on polychromic collars so they actually work now.
      • -
      -

      KeRSedChaplain updated:

      -
        -
      • Extends the file "deltakalaxon.ogg" to a 38 second .ogg.
      • -
      -

      Linzolle updated:

      -
        -
      • neck slice. harm intent someone's head while they are unconscious or in a neck grab to make them bleed uncontrollably.
      • -
      • officer's sabre now properly makes the unsheating and resheating noise
      • -
      • fireman failure has a different message depending on the circumstance
      • -
      • Abductor chem dispenser, and added it to the abductor console.
      • -
      • "Superlingual matrix" to the abductor console. It's the abductor's tongue. Can be used to link it to your abductor communication channel and then implanted into a test subject.
      • -
      • Shrink ray and added it to the abductor console.
      • -
      • Shrink ray sound effect (its the fucking mega man death sound)
      • -
      • special jumpsuit for abductors
      • -
      • abductor jumpsuit, including digi version if a digitigrade person somehow manages to get their hands on it. sprites for the shrink ray and chem dispenser.
      • -
      • new glands to play with, including the all-access gland, the quantum gland, and the blood type randomiser.
      • -
      • split every gland into its own file instead of all being in one file
      • -
      • cosmic coat crafting recipe changed to coat + cosmic bedsheet
      • -
      -

      Mickyan, nemvar, RaveRadbury, AnturK, SpaceManiac updated:

      -
        -
      • Certain incompatible quirks can no longer be taken together.
      • -
      • If an admin sends a ghost back to the lobby, they can now choose a different set of quirks.
      • -
      • the quirk menu went through some minor formatting changes.
      • -
      • Podcloning now lets you keep your quirks.
      • -
      • Quirks have flavor text in medical records.
      • -
      • All quirk medical records refer to "Patient", removing a few instances of "Subject".
      • -
      • Quirks no longer apply to off-station roundstart antagonists.
      • -
      • Mood quirks are now only processed by the quirk holders
      • -
      -

      Narcissisko (ported by Hatterhat) updated:

      -
        -
      • Luxury Bar Capsule, at 10,000 points. Comes with no medical supplies, a bar, and a bunch of cigars. Ported from tgstation/tgstation#45547.
      • -
      -

      Nervere and subject217, Militaires, py01, nemvar updated:

      -
        -
      • The cook's CQC now only works when in the kitchen or the kitchen backroom.
      • -
      • corrected CQC help instructions
      • -
      • CQC and Sleeping Carp are properly logged.
      • -
      • CQC can passively grab targets when not on grab intent. Passive grabs do not count towards combos for CQC or Sleeping carp.
      • -
      • Martial Art and NOGUN cleanup.
      • -
      -

      PersianXerxes updated:

      -
        -
      • Removed night vision quirk
      • -
      -

      Putnam updated:

      -
        -
      • acute hepatic pharmacokinesis now works if you already have relevant genitals
      • -
      • Contamination is no longer an infinitely spreading deadly contagion causing mass panic
      • -
      • Dynamic rulesets have lower weight if a round recently featured them (except traitor).
      • -
      -

      Putnam3145 updated:

      -
        -
      • Buffed HE pipes by making them realistically radiate away heat.
      • -
      • Dynamic has a (totally unused for any relevant purpose) roundstart report now.
      • -
      • A whole bunch of dynamic data is now available for statbus
      • -
      • Dynamic from-ghost antags no longer double dip on threat refunds when the mode fails due to not enough applications.
      • -
      • whoops broke quirks
      • -
      • quirks work
      • -
      • New tab in preferences screen: "ERP preferences"
      • -
      • New opt-outs for individual effects of incubus draught, succubus milk
      • -
      • Acute hepatic pharmacokinesis has been removed, replaced with above
      • -
      • Renamed "Toggle Lewdchem" to "Toggle Lewd MKUltra", since that's what it actually means, and made it toggle the "hypno" setting (rename it again if more hypno mechanics are added).
      • -
      • Made MKUltra's lewd messages require both people involved to have hypno opted-in.
      • -
      • Buncha dynamic config tweaks
      • -
      • Ghost cafe spawns are actual ghost roles by the game's reckoning now
      • -
      • a runtime in radioactive contamination
      • -
      • Bomb armor now acts like other armor types.
      • -
      • Devastation-level explosions on armorless people no longer destroys everything in their bags.
      • -
      -

      Seris02 updated:

      -
        -
      • the clowns headset
      • -
      • distance checks
      • -
      • the sprites
      • -
      • added the runed and brass winter coats (cosmetic ratvarian/narsian)
      • -
      • how the narsian/ratvarian coats can be made
      • -
      • fixes some ghost roles from dying of stupid shit
      • -
      • pandoras attacking their owners
      • -
      • Added Rising Bass and the shifting scroll.
      • -
      • Changes the martial arts scroll in the uplink to "Sleeping Carp Scroll"
      • -
      -

      ShizCalev updated:

      -
        -
      • Fixed floodlights not turning off properly when they're underpowered.
      • -
      • Fixed emitters not changing icons properly when they're underpowered.
      • -
      -

      Sishen1542 updated:

      -
        -
      • Clicking a pack of seeds with a pen allows you to set the plant's name, description and the pack of seeds' description. Useful for differentiating genetically modified plants. These changes will persist through different generations of the plant.
      • -
      • Hydroponics trays update their name and description to reflect the plant inside them. They revert to default when emptied.
      • -
      -

      Toriate updated:

      -
        -
      • Polychromic shorts now have a digitigrade state
      • -
      -

      Trilbyspaceclone updated:

      -
        -
      • ports all the new donuts, burgars, and chicken stuff from RG
      • -
      • ports new snowcone
      • -
      • ports grill
      • -
      • ports beakfeast tag/mood lit as TG has it
      • -
      • ports all the amazing new sprites
      • -
      • ports crafting for many things like snowcones needing water
      • -
      • ports of many craftings
      • -
      • lowers fryers sound
      • -
      • ported icons for new food/grill
      • -
      • ports the deletion of some icons and images
      • -
      • ports a spell check for the snowcones
      • -
      • ports fixes for stuff I didnt know were even broken with snowcones
      • -
      • coder cat failers to push the last commit from year(s) ago
      • -
      • Updates the changlogs
      • -
      • meat hook from HUGE to bulky
      • -
      • CE hardsuit is now more rad-proof
      • -
      • Wrong icon names, missing dog fashion with telegram hat
      • -
      • New softdrink that comes in its own vender!
      • -
      • Honey now has a reaction with plants
      • -
      • Buzz fuzz now only has a 5% to give honey and will now give 1u of sugar not 2
      • -
      • Blaster shotguns back into armory
      • -
      • Removed Lighters in thunderdomes
      • -
      • Silicons now know what a slime is saying!
      • -
      • honey now will not kill slimes. Honey slimepeople can be a thing now, go sci.
      • -
      • Added insulin into many of the borg hypo's
      • -
      -

      Useroth updated:

      -
        -
      • bamboo which can be used to build punji sticks/ blowguns available as a sugarcane mutation or in exotic seed crate
      • -
      • changed the sugar cane growth stages because fuck if I know why, but it was in the PR
      • -
      • New lavaland ruin: Pulsating tumor
      • -
      • New class of lavaland mobs, a bit weaker than megafauna but still stronger than most of what you normally see
      • -
      • Ghost cafe spawner. For letting people spawn as their own character in the ninja holding facility. It bypasses the usual check, so people who have suicided/ghosted/cryod may use it.
      • -
      • Dorms in the ninja holding facility.
      • -
      -

      Xantholne updated:

      -
        -
      • Santa Hats to Loadout and Clothesmate
      • -
      • Christmas Wintercoats to Loadout and Clothesmate
      • -
      • Christmas male and female uniforms to loadout and Clothesmate
      • -
      • Red, Green, and Traditional Santa boots to loadout and Clothesmate
      • -
      • Christmas Socks, Red candycane socks, Green candycane socks to sock selection
      • -
      -

      kappa-sama updated:

      -
        -
      • legion drops more crates now
      • -
      • .357 speedloaders in autolathes are now individual bullets instead, speedloaders are now illegal tech, costs less total metal to make 7 bullets than a previous speedloader. 7.62mm bullets in autolathe when hacked and costs more metal to make 5 7.62mm bullets than getting a clip from the seclathe.
      • -
      • mentions that you can refill speedloaders on .357 uplink description
      • -
      • you can now strip people while aggrograbbing or higher
      • -
      • plasmafist to wizard
      • -
      • modular is gone
      • -
      • martial apprentices for the local Chinese wizard
      • -
      • broodmother baby lag
      • -
      • you can no longer get 100k credits by spending 4k roundstart
      • -
      • cooking oil in sunflowers instead of corn oil
      • -
      • throats are no longer slit happy
      • -
      -

      keronshb updated:

      -
        -
      • Adds reflector blobs to shield blob upgrades
      • -
      -

      kevinz000 updated:

      -
        -
      • Launchpads can now take number inputs for offsets rather than just buttons.
      • -
      • nanites no longer spread through air blocking objects
      • -
      • Night vision readded as a darkness dampening effect rather than darksight.
      • -
      • conveyors can only stack items on tiles to 150 now.
      • -
      • added 8 character save slots
      • -
      • Cargo shuttle now silently ignores slaughter demons/revenants instead of being blocked even while they are jaunted. A drawback is that manifested ones can't block it either, any more.
      • -
      • flashbangs process light/sound separately and uses viewers(), so xray users beware.
      • -
      • Stat() slowed down for anti-lag measures.
      • -
      • sprint/stamina huds now work again
      • -
      • Combat defibs now instant stun on disarm rather than 1 second again
      • -
      • Defibs are now always emagged when emagged with an emag rather than EMP.
      • -
      • aooc toggling now only broadcasts to antagonists
      • -
      • Antag rep proc is now easier to read and supports returning a list.
      • -
      • Clockwork marauders are now on a configured summon cooldown if being summoned on station. They also rapidly bleed health while in or next to space. And they glow brighter.
      • -
      -

      lolman360 updated:

      -
        -
      • Added ability to pick up certain simplemobs.
      • -
      -

      nemvar updated:

      -
        -
      • The brains of roundstart borgs no longer decay.
      • -
      • Refactored the visibility of reagents for mobs.
      • -
      -

      nicbn, Kevinz000, ShizCalev updated:

      -
        -
      • Fire alarm is now simpler. Touch it to activate, touch it to deactivate. When activated, it will blink inconsistently if it is emagged.
      • -
      • You can no longer spam fire alarms. Also, they're logged again.
      • -
      • Fixed fire alarms not updating icons properly after being emagged and hacked by Malf AI's.
      • -
      -

      r4d6 updated:

      -
        -
      • Added a N2O pressure tank
      • -
      • Removed a AM Shielding from the crate
      • -
      • Added Handshakes
      • -
      • Added Nose booping
      • -
      • Added submaps for the SM, Tesla and Singulo
      • -
      • Added a placeholder on Boxstation for the Engines
      • -
      • fixed Nose boops not triggering
      • -
      -

      shellspeed1 updated:

      -
        -
      • Adds Insect markings
      • -
      • Adds three new moth wings.
      • -
      -

      07 December 2019

      AffectedArc07 updated:

        @@ -868,6 +546,2067 @@ _Kathrin's Box Beautification:_
        • Added Departements Winter Coats to the loadout list.
        + +

        04 November 2019

        +

        4dplanner, MMiracles updated:

        +
          +
        • Wizard shapeshift now converts damage taken while transformed
        • +
        • transform spell transfers damage correctly instead of healing most of the time
        • +
        • 0% simplemob health maps to 0 carbon health, 100% simplemob to 100% carbon
        • +
        • transforming to a form with brute resistance no longer heals you
        • +
        • transforming back to a species with brute resistance no longer heals you
        • +
        +

        AdmiralPancakes1 updated:

        +
          +
        • Cryo cell shortcuts: alt-click toggles the doors, ctrl-click toggles the power
        • +
        +

        Alonefromhell updated:

        +
          +
        • Ported Oracle UI, a framework for self-updating and neat UI's
        • +
        • Paper now uses OUI
        • +
        • Bins now use OUI
        • +
        • fixes tootip offset
        • +
        +

        AnalWerewolf updated:

        +
          +
        • Fritz plushie
        • +
        • Donor item
        • +
        +

        Anonymous updated:

        +
          +
        • More crusader armor variants to pick from armament: Teutonic and Hospitaller.
        • +
        +

        Arturlang updated:

        +
          +
        • You can now use CTRL and ALT click on pumps and filters to toggle them on and off and max their output respectively
        • +
        • You can now use RPDs on windows and grilles.
        • +
        • The RD can now suplex a immovable rod. Good fucking luck.
        • +
        • Fixes high alert ERT suit sprites. You can see them now!
        • +
        • Traitor codewords are now highlighted for traitors.
        • +
        • You can now examine pumps filters and mixers to see if you can use CTRL and Alt click on them.
        • +
        • Fixes brain damage/trauma healing nanites so they actually work while there are only traumas.
        • +
        • Advanced toxin filtration nanites now heal slimes
        • +
        +

        Bhijn updated:

        +
          +
        • It's now possible to forcefully eject the occupants of a dogborg's sleeper by using a crowbar on them. This action is instant.
        • +
        • Resist values for dogborg sleepers have been adjusted. The baseline has been decreased from 30 seconds to 15 seconds. Medihound sleepers have a resist timer of 3 seconds. Sechound sleepers retain a resist timer of 30 seconds.
        • +
        • It now takes 10 full seconds to insert people into your sleeper. This should hopefully give people some more room to breathe and react to a dogborg attempting to sleeper someone either for no reason or in a way that violates law 2.
        • +
        • Warp whistles no longer grant permanent invulnerability and invisibility
        • +
        • You can now actually use the resist hotkey to resist out of handcuffs. Woah, revolutionary
        • +
        • the `!tgs poly` command now actually works
        • +
        • Poly now has a 0.01% chance per squawk to speak through the TGS relay.
        • +
        • The point production mode of radiation collectors has been reverted to the original behavior of using all of the stored power every process cycle instead of just 4% of it
        • +
        • Radiation collectors now display the amount of power/research points they're producing per minute rather than per process cycle, which should hopefully clear up a lot of confusion.
        • +
        • Radiation collectors also display what's happening to the gas within them, which should make it a lot more obvious as to how you get tritium.
        • +
        • Security borgs and K9s are now only available during red alert or higher.
        • +
        • Headmins or other folks with access to the server's config can choose the minimum alert level for secborgs to be chosen via the MINIMUM_SECBORG_ALERT config option. See the default game_options.txt for more info.
        • +
        • The server no longer attempts to check if the CID matches the IP of any bans, or if the IP matches any CIDs of any active bans, during client analyzation
        • +
        • Vampires can now only ventcrawl in bat form if their blood level is below the bad blood volume (224 blood total)
        • +
        • Vampires now only take 5 burn per mob life cycle while within chapel areas, down from the original 20 burn per life cycle.
        • +
        • K9 pounces have received a minor rework. It now has an effective cooldown of 2.5 seconds, can now only deal up to 120 staminaloss, deals a maximum of 80 stamloss on hit, has a spoolup of half a second, and now has telegraphing in the form of a quiet noise.
        • +
        • K9s now only have 80 health
        • +
        • Secborgs (but not k9s) now have a hybrid taser. This can be toggled via server config.
        • +
        • The disabler cooler upgrade now applies to all energy-based firearms for borgs
        • +
        • Dogborg jaws are now capable of incapacitating targets if using help intent. This deals a hard stun depending on how much staminaloss the target has, and whether or not they're resting. This behavior can be toggled via server config.
        • +
        • K9 jaws now have 15 force, up from their nerfed 10 force.
        • +
        • Borg flashes regained their ability to cause knockdown. This can be toggled via server config.
        • +
        • The WEAKEN_SECBORG config option will disable the new dogborg jaws mechanic and make secborgs spawn with a standard disabler.
        • +
        • The DISABLE_BORG_FLASH_KNOCKDOWN will disable the ability for borg flashes to knockdown.
        • +
        • Jukeboxes now have 6 audio channels available to them, up from the previous accidental 2 and previously intended 5 channels.
        • +
        • Jukeboxes now work again on clients running versions higher than 512.1459.
        • +
        • People will no longer have their ears consumed by an eldritch god if multiple jukeboxes are active and the first jukebox in the jukebox list stops playing, then tries to play again
        • +
        • Instead of the debug text for invalid jukebox behavior being printed to world, the debug text is now restricted to the runtime panel.
        • +
        +

        BurgerB updated:

        +
          +
        • Tweaked the UI of the loadout to be less cluttered due to an issue with formatting.
        • +
        +

        BurgerBB updated:

        +
          +
        • Adds the bonermeter; a device that measures arousal based statistics.
        • +
        • Added a new input to the electrostimulator that controls the strength of the shock. It accepts negative inputs which reduce arousal. Added a new output to the electrostimulator that displays the amount of arousal gained.
        • +
        • Rebalanced the electro-stimulator to be less spammy by giving it a 2.5 second enforced cooldown per circuit contraption. Increased the complexity of electro stimulator from 10 to 15.
        • +
        • Reworked the Vent Clog event to spray smoke instead of foam, also made it shoot smoke over time instead through each vent instead of all at once.
        • +
        • Increased the spawn area of the City of Cogs (Reebe). This does not affect the area in which builders can build.
        • +
        • Significantly tweaks the Wizard race transformation event to be less unreasonably troublesome.
        • +
        • Adds a new 0 cost trait that makes you immune* to Crocin and Hexacrocin
        • +
        • Tweaks how slurring works so it's more of a gradual change into slurring instead of immediate.
        • +
        • Slurring is now directly proportional to your drunkenness, with other sources of slur being added on top of it.
        • +
        • Bras are now separate from underwear, meaning you can mix and match bras if you're into that.
        • +
        • Men can wear female accessory clothing, and females can wear men accessory clothing. It's not a fetish, mom, it's PROGRESSIVE.
        • +
        • Reorganized accessories into their own files to prevent a massive 1000 line file.
        • +
        • i'm 10% sure that merging this PR will cause preference corruption sooooooooooo I just need to hear from @deathride58 or perhaps someone else on how much damage this could possibly do.
        • +
        • Tweaked penis.
        • +
        • Rebalanced penis.
        • +
        • Added the following reagents to the common list of vent clog reagents: ~~Cooking Oil~~, ~~Frost Oil~~, Sodium Chloride, Corn Oil, Uranium, Carpet, Firefighting Foam, semen, femcum, tear juice, strange reagent, ~~spraytan~~.
        • +
        • Vent Clog smoke emits the same transparent smoke as a smoke machine, including how much it transfers. Vent Clogs also do not trigger in areas deemed "Safe" in code, such as in the dorms or trusted areas where dangerous things shouldn't occur.
        • +
        • Adds additional random brain damage text
        • +
        • Adds penis enlargement pills.
        • +
        • Adds Stun Circuit and Pneumatic Cannon Integrated Circuits
        • +
        • Fixed extinguisher and smoke circuits not accepting any reagents.
        • +
        • Adds a few important clockcult tips.
        • +
        • Added Mech Sensors, a brass-created trap that activates when a mech not controlled by a cultist crosses it.
        • +
        • Added power nullifiers, an emp trap that emps everything in a 3x3 area, with the center suffering a heavy EMP.
        • +
        • Brass Skewers now deal 50 damage to mechs.
        • +
        • Ass slapping only works if you're actually behind the target. Ass slapping now respects disarm blocking. You can no longer face/ass slap someone on an intent other than help, unless they are also face/ass slapping.
        • +
        • Fixed ass and face slapping grammar.
        • +
        • Adds meh effects for ass and face slapping.
        • +
        • "Unwillingly" eating food now sends a warning message instead of a notice. Unable to stuff food down your throat sends a danger message instead of a warning message.
        • +
        • Adds clockwork reflectors, a fragile anti-laser reflection shield object that can be constructed for 10 brass sheets. Upon firing on the object in the direction where it is shielded, it ricochets the bullet off of it relative to the shooting angle.
        • +
        • Renames some windows in the build menu for consistency.
        • +
        • Clockwork Cult walls can no longer be deconstructed by RCDs when heated.
        • +
        • Adds several new toy loot to the arcade machine.
        • +
        • Rebalanced the arcade machine loot. Battlemachines now have a 0.5 second delay instead of a second delay between actions.
        • +
        • Fixed a bug that would not allow the one in a million pulse rifle to spawn.
        • +
        • Adds a new trait "Buns of Steel" that makes you immune to the effects of ass slapping, and temporarily makes the user's arm useless like a stun baton hit. It costs 0 points.
        • +
        • Ass slapping blowback from the Buns of Steel perk now deals 20 stamina damage instead of 50, and no brute damage.
        • +
        • Gamemode voting results are displayed at the end-round screen.
        • +
        • Cloning no longer gives you positive mutations, but a chance for a negative one. Cloning has a chance to "scramble" your visual DNA.
        • +
        • Chestbursters no longer give and remove your brain. They just disembowel and kill you now.
        • +
        • Fixes WarOps miscalculating players.
        • +
        • Activating the nuclear device during war-ops informs the crew of the nuke's position.
        • +
        • The alert level is displayed at the job selection screen.
        • +
        • Central Command informs you when a Meteor Storm is about to hit 5 to 10 minutes before it happens.
        • +
        +

        BurgerLUA updated:

        +
          +
        • Added a new framework for reagents. Reagents can now have a bool that determines if it can be detected by handheld medical analyzers. Currently only the changeling sting chemical does this.
        • +
        • Made changeling transformation string last between 10-15 minutes. Lowered the dna cost of changeling sting from 3 dna to 2 dna. Lowered the chemical cost from 50 to 10. Lowered the loudness from 2 to 1. Changeling sting transformation can be removed via high doses of calomel.
        • +
        • Fixed most reagents having a placeholder color.
        • +
        • Fixed autolathe wires not correctly shocking you when pulsed.
        • +
        • Rebalanced special jetpacks.
        • +
        +

        CalamaBanana updated:

        +
          +
        • Added Deer taur
        • +
        • Added Elf ears to mammals
        • +
        +

        CameronWoof updated:

        +
          +
        • Medihounds now have rollerbeds for non-vore patient transport
        • +
        • The closed O2 crate now uses the same color scheme as the open one
        • +
        • air alarms are green now instead of blue when the atmosphere is ideal
        • +
        • Hexacrocin overdose no longer causes climaxes
        • +
        • Altered the icons for inventory backplates. Sleek! Stylish! New!
        • +
        • Attaching a beaker that contains water to an IV stand no longer causes a visual glitch
        • +
        • Fluid-producing sexual organs no longer start full
        • +
        • Sexual organ fluid capacity decreased from 50 to 15
        • +
        • Sexual organ production rate decreased from 5u to 0.035u per two seconds.
        • +
        • Sexual fluid decals no longer contain reagents
        • +
        • Sexual fluids cannot by synthesized (e.g., by the Odysseus)
        • +
        +

        CdrCross updated:

        +
          +
        • Adds the ability for cloning consoles to read and write record lists to the circuit board, and provides a template for giving other machines local circuit board memory.
        • +
        +

        Cebutris updated:

        +
          +
        • Hugs of the North Star! Get them from the arcades (if you're lucky) and hug your friends at INCREDIBLE hihg speeds!
        • +
        • Tea Aspera now properly contains tea powder
        • +
        • Breasts no longer lactate by default, lactation is now a preference
        • +
        +

        Chayse updated:

        +
          +
        • Changed the Warden's compact combat shotgun to instead be a regular combat shotgun with a foldable stock and penalties for being folded.
        • +
        • Assorted space-worthy helmets can now act as masks for internals.
        • +
        • Internals code can now check any item with the ALLOWSINTERNALS flag through the GET_INTERNAL_SLOTS define. For now this only checks head and mask slots, since those are the most realistically speaking usable ones.
        • +
        • Medbay doors can now be opened by anyone from the inside without having to press the exit button.
        • +
        • Borgs now have the necessary dexterity to unbuckle people from themselves and from bucklable objects.
        • +
        • Fixes the Trek Uniform/Suit worn icons
        • +
        • AIs can now once more talk through holopads successfully
        • +
        +

        Code-Cygnet updated:

        +
          +
        • Added new things - Mind trait, alcohol reagent, chemical reagent, drink sprite and recipe.
        • +
        • added commander_and_chief sprite to drinks.dmi
        • +
        +

        Coolgat3 updated:

        +
          +
        • Changed player number checks to 20 from 24 for cult and clockcult, also made nukeops 28 required players instead of 30.
        • +
        • Changed enemy minimum age from 14 to 7
        • +
        • Added the code for the semen donut and made it craftable
        • +
        • Added the donut sprites
        • +
        • Made the sec and warden berret offer as much protection like the helmet
        • +
        • Added berets for all the heads.
        • +
        • Added sprites for the berets.
        • +
        • Coded the berets to spawn in appropiate lockers.
        • +
        • Raised the ripley's movement speed and lights range by 1, also lowered its armor to compensate.
        • +
        • Added combat gloves sprite
        • +
        • Added said sprite
        • +
        • added combat boots sprite
        • +
        +

        Coolgat3 / Avunia updated:

        +
          +
        • Made kindle put the target into stamcrit, which makes it an actually working, useful stun.
        • +
        • Added a stamina loss modifier to the vanguard spell which makes the user's stamina drain at a way slower rate. This doesn't make them immune to tasers, but it takes a few hits to actually get them to fall down.
        • +
        • Made it so that clock culties don't start with a chameleon suit. Instead they start with an engineer suit which is pretty much the same sprite and looks. If this is not perfect, then I am willing to make a slightly more brass-colored version of the engineer suit sprite and call it a ratvarian engineer jumpsuit.
        • +
        • Increased the cost of vanguard, as it is now a spell that works somewhat like adrenals, minus the move speed, making your stamina drain really slow and making you unable to get knocked onto the ground by just a single taser shot.
        • +
        • Lowered the charge time of kindle, reason being that you can usually have only one active spell on you, or two at max if you decide to run two slabs, but the fact that kindle silences people for such a small amount of time makes up for it, in my opinion.
        • +
        • Figured out that the consoles and their warp function actually work with the current code. The thing that makes them not work is when the gamemode is ran on debug mode, without the required players to actually support it. It also breaks the ark timer which is stuck on -1 seconds until activation. Whenever the gamemode starts properly, like any other gamemode, with player checks and all, everything seems to work just fine.
        • +
        +

        CydiaButt13 updated:

        +
          +
        • Lamp Plushie to loadout
        • +
        • added plushie_lamp to plush icons
        • +
        • added Lamp Plush to loadout and icons and items
        • +
        +

        EgoSumStultus updated:

        +
          +
        • Fixed blood chiller's inhand
        • +
        • FIXED SHIELF
        • +
        • fixed magpistol magazine sprites
        • +
        • Added the Femur Breaker
        • +
        • Adds male AI vox.
        • +
        +

        EmeraldSundisk updated:

        +
          +
        • Adds a gun range to Box Station
        • +
        • Provides some extra power grid connections
        • +
        • Sunglasses and Earmuffs removed from the Warden's Office - they can be found at the range instead
        • +
        • Rearranges a few objects within the prison as to accommodate the new gun range
        • +
        • Adds a mass driver to Delta Station's chapel
        • +
        • Adds a second means of entry into the chapel
        • +
        • Slightly expands the chapel to make room for the driver, slight adjustment to air systems
        • +
        • Clears a path in the station exterior for the mass driver to work properly
        • +
        • Nearby maintenance loot has been relocated to accommodate the chapel expansion, surrounding area has been "cleaned up" somewhat
        • +
        • CentCom has noticed the lack of coffins in Delta Station's chapel and provided some, but in exchange for reducing the chapel morgue's capacity.
        • +
        • Fixed a maintenance door the chaplain should have been able to open.
        • +
        • Fixes space areas outside the driver removal: CentCom Defense Analysts have ordered the maintenance hatch to the Mass Driver room be removed citing "security concerns".
        • +
        • Increases the number of plots to 9 (from 5)
        • +
        • Additional lighting placed directly outside the garden
        • +
        • Cleans up the area to reflect use. Moves the seed extractor to a more central location
        • +
        • Relocates the seed packs on botany's counter to the garden removal: Removes wooden barricades outside the garden
        • +
        • Renames "Abandoned Garden" area designation to "Maintenance Garden", but does not replace the icon in Dream Maker
        • +
        • Expands the chapel mass driver room to make it easier to use
        • +
        • Rearranges the chapel backroom so there are now six coffins and burial garments roundstart
        • +
        • Cleans up the Janitor's office
        • +
        • Readjusts the station exterior so mass-driven coffins (hopefully) have less friction
        • +
        • Adds a fan to the chapel driver
        • +
        • The Janitor missed a few spots around the newly renovated Maintenance Garden
        • +
        • Readjusts positioning of Delta's QM keycard device
        • +
        • Cleaned up a few spots I missed in #9356, particularly around the janitor's office
        • +
        • Adds some potted plants around Box Station
        • +
        • The tile mentioned in #9409 should now be radiation-free.
        • +
        +

        Fermi updated:

        +
          +
        • Fixes tiny runaway decimals in reagents system.
        • +
        • SDGF: Fixes infinite clones.
        • +
        • fixed an angery PR
        • +
        +

        Fermis updated:

        +
          +
        • Added a panda simplemob
        • +
        • fixes empathy exploit.
        • +
        • Added the secbat, a box to hold it and the ability to dispense it from the SecTech vendor.
        • +
        • Adds 3 new music tracks.
        • +
        • tweaked Neurotoxin
        • +
        • added more depth to Neurotoxin
        • +
        • fixed the inability to create Neurotoxin
        • +
        • fixes fermichem reactions for tiny volumes work
        • +
        • makes quantisation level for chemistry finer
        • +
        • re-enables femichem explosions in grenades.
        • +
        • adds nuance to the SDGF and hatmium explosions.
        • +
        • Fixes analyse function on ChemMasters to correctly display purity.
        • +
        • Fixes the custom transfer for buffer to beaker button.
        • +
        • Debug option: Generate Wikichems
        • +
        • graft synthtissue surgery, new reagent synthtissue
        • +
        • neurine fixes brain objs merge: combines fermichem's lung damage with tg's
        • +
        • on_mob_dead(), bitflags and CHECK_MULTIPLE_BITFIELDS
        • +
        • refactored fermichem vars, moved impure chems into their own reagents subtype
        • +
        • Fixes small residues of chems that won't go away!
        • +
        • tweaked beaker health and allows use of syringes/droppers on chem_heaters
        • +
        • added a sound for when beakers take temperature damage.
        • +
        • added some icons for melting beakers
        • +
        • refactored how beakers take damage
        • +
        • fixes how beakers would only take one instance of damage on pH damage
        • +
        • fixes Janitor grenades.
        • +
        • fixes reaction mechanics at low volumes
        • +
        • stops reactions constantly bubbling on the edge of reaction temperature
        • +
        • stops small amount reactions from occurring, and prevents disappearing tiny numbers
        • +
        • Reduced minimum reaction volume from 1 to 0.01
        • +
        • cleaned up Fermichem
        • +
        • Adds Jacqueline the Pumpqueen and her familiar Bartholomew for the spooky season
        • +
        • Adds a giggle
        • +
        • Adds cauldron, Jacq and Jacq o lanterns, and a costume for halloween! mapedit: adds a new landmark so Bartholomew can spawn somewhere sensible.
        • +
        • fixes food reactions and explosion runtimes,
        • +
        • fixes the too much yes problem
        • +
        • Heart, Tongue and stomach regen.
        • +
        • lung damage threshholds.
        • +
        • Graft synthtissue
        • +
        • Skeleton's burning for no reason
        • +
        • Organ freezing handling.
        • +
        • Fixes chemistry books to point to the right wiki, and keeps tg's just in case
        • +
        • Changes top right wiki button location to go to both wikis
        • +
        • fixed Jacq's fondness for the AI
        • +
        +

        Ghom updated:

        +
          +
        • minor clean up on hydroponics reagent containers.
        • +
        • fixes the perpetual lack of moisture that has affected genitalia descriptions since, like, forever.
        • +
        • implements the arousal state for mammary glands.
        • +
        +

        Ghommie updated:

        +
          +
        • Fixes many possible situations of null icons for cit races' bodyparts.
        • +
        • Removes duplicate slimepeople' sprites.
        • +
        • Purges that draw_citadel_parts().
        • +
        • Fixes ISINRANGE_EX using the wrong relational operator.
        • +
        • The kindle status effect stun duration now properly proportional to the owner's remaining health.
        • +
        • Clockwork cult's kindle now affects silicons.
        • +
        • Cyborg mounted disablers/tasers/lasers now slowly self-recharge off the cyborg user's power cell instead of draining from it directly.
        • +
        • Borg rechargers now properly recharge the borg module's energy guns.
        • +
        • Prevents a couple more special/mounted guns from being preserved on cryo
        • +
        • Halved borg energy guns self-recharge delay and increased their cell capacity by 3/4
        • +
        • Fixes chemical patches always checking the suit slot even if the targetted limb was the head.
        • +
        • Skeleton, nightmare and golem races are once again available to get chemical patches applied onto.
        • +
        • Adds two cartons of space milk to the space skellie pirates cutter's fridge.
        • +
        • Refactored implants to not be located inside mobs codewise, akin to organs.
        • +
        • Fixed gps tracking implants.
        • +
        • Fixed item not being dumped out of storage implants onto the owner's turf upon removal.
        • +
        • Fixes cult potentially stalling if the target is erased from existence without being sacced.
        • +
        • Nukes the stunprod's 3 seconds delay.
        • +
        • Fixes teleprods.
        • +
        • Stops pulls of resting mobs breaking off whenever you swap turfs with someone else because of crawling delays.
        • +
        • fixes IAA.
        • +
        • EMPs now flick off stunbatons, they can be turned back on immediately by the user anyway.
        • +
        • Stunbatons now very slowly consume charge whilst kept on, at a rate of 4/1000th of a standard batoning charge cost per tick.
        • +
        • Softened up the charge cost checks to stop the above update from practically reducing the maximum uses of a stun baton by one. Now, should the remaining charge be lower than the hit cost, the resulting stun will be be proportional to the remaining charge divided by the hitcost, within a limit under which the stun batoning just won't happen.
        • +
        • Buffs condensed capsaicin, a yet another feature previously dunked by stam combat.
        • +
        • speeds up pepper spray puffs.
        • +
        • Buffed krav maga leg sweep stun and stamina damage. On the other hand, it's now unable to be used on already lying targets.
        • +
        • fixes eyestabbing people with cutlery while being a pacifist.
        • +
        • Reduces goonchat lag from being blasted by pellets and bullets repeatedly whilst wearing armor by properly removing the armor protection texts this times.
        • +
        • also reduced the size of armor protection messages in general. they clog up the chat box.
        • +
        • Fixes stunbatons icon not properly updating on cell removal and insertion.
        • +
        • Allows lower charge cells to be used with stun batons, and thus single use crapshots batons.
        • +
        • Adds in a 7 seconds delay to the jackhammer dismantling a superheated clockwork wall.
        • +
        • escape pods emergency suits storage can now be busted open by emags or excessive damage.
        • +
        • Fixes alt click bypassing the escape pods' suits storage lock.
        • +
        • Fixes emags wasting charges on un-emaggable & co stuff.
        • +
        • Ported some radials code updates.
        • +
        • Ported the RCL wiring menu and a comfier RCD interface.
        • +
        • A milder combat stance message will show up if the user switch combat mode on while on help intent.
        • +
        • Properly rewords the extinguisher's instructions on how to empty it on the floor since it was changed to be a screwdriver action instead of Alt Click a while ago.
        • +
        • Reskinnable PDAs. A related game preference.
        • +
        • Refactoring the pda, pda painter, obj reskinning and chameleon pda a bit to support this feature.
        • +
        • more PDA sprites and ported reskins.
        • +
        • turned virtual reality into a component datum, which is then applied to spawned virtual mobs. This fixes mob transformations (such as wabbajack and monkeyizing) breaking the previously hardcoded behaviour and trapping you in VR, also enabling a more concrete virtual reality inception experience.
        • +
        • Fixes power cells being unable to be rigged. Also prevents them from starting processing on init if they don't self recharge.
        • +
        • Fixes many, little or otherwise, issues with the stunbaton status refactor.
        • +
        • The sacrificial target icon will now display onto the cult objective ui alert once again.
        • +
        • Stopping borgs from sprinting into negative cell charge.
        • +
        • The default amount of z-levels reserved specifically for space ruin generation has been increased from 1 to 2
        • +
        • Moving some tablecrafting recipes to the appropriate categories: Kitty ears and lizard cloche hats to "clothing"; Hot dogs to "Sandwichs"; Cuban carb, fish and chips and fish fingers to "Fish".
        • +
        • Fixes the not-a-sandwich recipe being M.I.A.
        • +
        • Adding in peanuts, peanut butter, peanut butter toasts and sandwiches, and the PB&J sandwich. The peanuts contain a little bit of extractable cooking oil (similarly to soy beans) and can be microwaved or dried in a drying rack to make roasted peanuts, which can be mixed in a all-in-one-grinder for peanut butter, required to make those sandwiches.
        • +
        • Buffed wizard and artificier's Magic Missile, wizard and xeno queen's Repulse and juggernaut's Gauntlet Echo.
        • +
        • Fixes flashlights being unable to be used for rudimentary eyes and mouth exams.
        • +
        • Adds in a grey jumpsuit to the loadout choices, restricted to Assistants.
        • +
        • Fixes CWC construct shells being visible as ghost role to latejoiners.
        • +
        • new sprites for the flechette gun, its magazines and the toy ray gun
        • +
        • Merges the end-of-shift and its shuttle autocall announcements into one.
        • +
        • Prevents the end-of-shift shuttle from being recalled (even if to no avail).
        • +
        • Fixes being able to teleport papers to your location with TK.
        • +
        • Fixed some monkey-code shenanigeans making items sometimes disappear from pickpocketing.
        • +
        • New sprites for the some pda cartridges.
        • +
        • The crew monitor's entry for the Quartermaster will now appear bolded, while HoP's will be of the same color of the service/unknown/other jobs.
        • +
        • emergency pods' storage will now properly work.
        • +
        • The PDA skin preference will now properly save up.
        • +
        • Changed the default PDA icon var to match the default PDA skin preference.
        • +
        • Fixing the `(pointless) badassary` category appearing between the `dangerous and conspicious` and `stealthy and inconspicious` categories.
        • +
        • Combat gloves plus now properly use the combat gloves sprite.
        • +
        • Fixes the space ninja's energy netting.
        • +
        • Adding one pAI to the wizard shuttle and ERT prep room
        • +
        • Fixes the rocket launcher being unreloadable.
        • +
        • Buffed its accuracy a bit.
        • +
        • Replaced the grenade launcher emagged minesweeper loot with the rocket launcher like it was originally supposed to be.
        • +
        • Tweaked the :b: emoji.
        • +
        • Rubber Toolboxes.
        • +
        • Porting in two bar signs: Cyber Sylph's and Meow Mix.
        • +
        • Fixing stamina damage melee weaponry being unusable by pacifists, and still damaging objects and triggering electrified grilles when thrown.
        • +
        • refactored underwears to allow custom color preferences, instead of manually colored sprites.
        • +
        • The aforementioned manually colored pieces. Some of your char preferences may have been resetted as result.
        • +
        • More underwear choices, including: Bowling shirts, long johns, a tank top, fishnets, more bee socks, bee t-shirt and bee boxers (original PR for the latter three by nemvar from /tg/station).
        • +
        • random bodies will now have random underwear again.
        • +
        • Dressers will now properly change undergarment again.
        • +
        • Toned down many species' female chest sprites to fit the smaller cups.
        • +
        • Fixed some body parts sprites inconsistencies, such as the W/E female and male chest sprites being the same in some species, and jellypeople's legs being one tile off on W/E
        • +
        • Fixing baklava pies a bit.
        • +
        • Sweaters now cover groins too.
        • +
        • Improved the zelus flask to be more viable for bottle smashing than the average barman's selection.
        • +
        • Very slight bottle smashing code clean up, stupid const vars.
        • +
        • Fixes krav maga gloves, wizard spells knockdowns.
        • +
        • Added in an alert pop up to the cult convertees, on top of the older "click here to become a blood cultist" chat message.
        • +
        • The convertee's screen will now flash red to fit in the aforementioned message's fluff.
        • +
        • Made said message less verbose.
        • +
        • Towels. Crafted with 3 sheets of cloth, they can be worn on head, suit and belt slots even without uniform, or laid flat on the floor. Sprites from Baystation and Aurora Station.
        • +
        • You can combat mode right click people while wielding rags and towels to pat out their flames (to no use for rags) or otherwise drying them out.
        • +
        • toned down the stamina costs of some of the bulkier weapons.
        • +
        • repathed hypereutactic blades to be a subtype of dual sabers. Way less copypasta.
        • +
        • Fixing CX Shredder guns not accepting standard flechette mags.
        • +
        • Fixing missing magpistol magazines icon states.
        • +
        • sort of overhauled darkmode/lightmode to /vg/station's, also reincluding the pre-existing black'n'white theme.
        • +
        • Fixed LOOC color, fixed .userlove and .love span classes being a bit too blurry on dark mode.
        • +
        • The syndicate base's bathroom is now fitted with a shower, and a special towel.
        • +
        • Fixed many issues with towels.
        • +
        • The dry people off with rags/towels action can only be done if the object is NOT moist with reagents now. Also cleans banana creaming.
        • +
        • Towels deal more damage while soaked with reagents.
        • +
        • You can now squeeze rags/towels with Alt-Click.
        • +
        • deleted an old and crappier towel sprite that got in the way.
        • +
        • Fixes Pubby's disposal conveyor belts and lack of a second lawyer spawner.
        • +
        • Cleaned up the absolute state of the arousal module.
        • +
        • refactored exhibitionism into a quirk.
        • +
        • arousal states won't persist after death.
        • +
        • Fixes testicles size adjective thing.
        • +
        • undergarments toggling now works instead of just making underwear disappear and not come back.
        • +
        • The "Always visible" genitals setting will now display them above clothes.
        • +
        • combat pushes will now properly stop targets from using firearms, and will disarm the firearm if performed a second time, and also slow down people by 15%, and won't push people on tables blocked by shutters or other dense object anymore.
        • +
        • Fixes CHECK_BITFIELD macro.
        • +
        • Fixes hypovials being unable to transfer out liquids or be refilled by large dispensers like water tanks.
        • +
        • Fixes chem-masters machineries not dispensing newly made pills inside loaded in pill bottles.
        • +
        • Stunswords now fit in the captain's sabre sheat.
        • +
        • reworked ninja's stealth mode. Increased invisibility, but engaging in combat, attacking or throwing things, bumping people will temporarily lower it.
        • +
        • Ninja shoes are even stealthier.
        • +
        • cleaned up some 2014 tier processing code horror.
        • +
        • the oxyloss fullscreen overlays now also take in consideration 1/5 of the user stamina loss.
        • +
        • When you're jogging, you will only slip on water if you have more than 20% staminaloss, for real this time.
        • +
        • Different cuffs now come with different worn overlays instead of a generic one.
        • +
        • High luminosity eyes can now be properly deactivated and won't illuminate your surroundings again until turned back on.
        • +
        • Fixes freshly cloned people starting with undershirts. Fixes random characters possibly rolling with undergarments of the opposite gender (Doesn't affect preferences' freedom of choice).
        • +
        • MRE menu 3 has cuban nachos instead of a chili now.
        • +
        • Removed the illustration overlay from MREs, looks pretty weird otherwise.
        • +
        • MRE menu 4, vegetarian.
        • +
        • fixes a few bad touchs on combat mode pushing.
        • +
        • Fixes clock cult Abscond scripture not dragging pulled mobs into Reebe. Also fixes blood cult tele runes teleporting you from the source turf to the source turf.
        • +
        • fixes clock cult mass recall.
        • +
        • Fixes underwear colors a bit.
        • +
        • Fixes Blood Cult conversion prompts
        • +
        • Removes an obnoxious temporary overlay var.
        • +
        • colorable socks can be colored again.
        • +
        • Fixed undergarments color preferences resetting each round.
        • +
        • Fixed a few dozen suits' body coverage inconsistencies. These changes shouldn't affect armor and utility vests for most.
        • +
        • Fixed clown shoes and work boots.
        • +
        • Fixed some overlay bug that happens when legcuffed and then handcuffed.
        • +
        • Slowed down police baton and tele baton speed by 75%, should be still be faster than the legacy speed (2 seconds) by 0.6 seconds. Telescopic batons' stamina cost per swing is now on par with police batons, ergo more expensive.
        • +
        • Fixed undershirts n socks colors prefs.
        • +
        • You can now alt-click to rotate machinery such as the tachyon-droppler array or emitters again.
        • +
        • Sofas can't be wielded and transformed back into plain chairs anymore.
        • +
        • Enables emojis for PDA messages.
        • +
        • Removes revenant blight's shabby toxin damage in favor of mood maluses, and a dangerous necropolis curse if not cured in time. Remember
        • +
        • Blood cult altar, forge and archives now use radial menus.
        • +
        • Fixed some machineries' UIs.
        • +
        • blood and clock cultists messages from metabolizing
        • +
        • Fixed advanced medical scanners borg upgrades.
        • +
        • Fixes certain borg upgrades being unapplicable on dogborg counterparts of the target cyborg type.
        • +
        • Fixed people being shovable hrough windows, windoors and the such.
        • +
        • You can now shove people into disposal bins.
        • +
        • refactored altdisarm(), ergo the "shoving people around" proc.
        • +
        • war ops is now lowpop friendly and doesn't require roughly 54 starting players anymore.
        • +
        • Singularity beacons now also moderately increases the odds meteor waves, while lowering their estimeed arrival countdown.
        • +
        • non-alphanumeric graffiti decals will no longer display as "letter".
        • +
        • Nerfs cyborg disabler and its internal power cell to hold 25 disabler beam shots rather than 43/44, just like a normal disabler.
        • +
        • Adds some missing species_traits for cloth, clockwork and cult golems.
        • +
        • Added towel linen bins, found in dormitory restrooms. Also enhanced the bedsheet bins found in some stations' dormitories
        • +
        • Resprited bedsheet bins in 3/4 perspective
        • +
        • Made SDGF ghost poll message less verbose, made the experimental cloner's complaint with the former, and added ghost poll ignore options for both.
        • +
        • fixing some related onmob sprites issues with the above accessory.
        • +
        • Teleprods work on non-carbons mobs now.
        • +
        • Fixed tracking implant teleport issues.
        • +
        • Increased stunbatons power cell depletion rate when left on by 50%.
        • +
        • Gorlex Marauders are pleased to announce non-slip grooves were given to their .50 sniper rifles, and thus shouldn't accidentally flop on the floor like pocket spaghettis whenever taken out of a bag anymore.
        • +
        • Silicons can now operate teleporter, medical and security records console from a distance again.
        • +
        • Fixed custom say emotes conflict with drunk memes.
        • +
        • Fixes identity transfer (envy knife, changeling transformation, making a vr avatar) not copying digitigrade legs.
        • +
        • Fixes temporary transformation sting triggering heart attacks on heartless humans.
        • +
        • Fixed mobs folded inside bluespace bodybags getting their clothing and items deleted when passing through a recycler.
        • +
        • The alien-bursting-from-your-thorax and the xeno "hud" embryo stage images will now properly delete them once the embryo egg lifecycle is complete.
        • +
        • Fixed artificier lesser magic missile.
        • +
        • Phantom thief masks will now fancy your combat mode yet again.
        • +
        • Fixed gulag teleporter stripping the user of stuff it really shouldn't (like storage implant bags).
        • +
        • fixing cydonian armor a bit.
        • +
        • Resprited wooden and critter crates.
        • +
        • Improved the Cyber Sylph' good yet cumbersome bar sign a little.
        • +
        • Cyborgs can now use camera consoles on the edge of their widescreen. These consoles are also TK friendly now.
        • +
        • Updated gang dominator sprites.
        • +
        • Miner borgs can again have installed PKA mods.
        • +
        • Fixed invisible blackberry n strawberry chocolate cake slices.
        • +
        • Nuke ops / adminbus combat mechs will no longer spawn with tracking beacons.
        • +
        • Arcade machine directional sprites.
        • +
        • lowered the arcade's random plush / other prizes ratio from 1 : 2.5 circa to 1 : 5. Dehydratated carps and the awakened plush can not be achieved this way anymore.
        • +
        • Added armrests overlays to sofas and tweaked their sprites a little.
        • +
        • Fixed dogborg sleepers. Just don't tell me what is exactly fixed, cause I don't want to find out.
        • +
        • Buffed the deep space familiar gorilla against runtimes.
        • +
        • Updated ratvarian computer sprites.
        • +
        • Fixed storage implant transplant.
        • +
        • Refactored how Jacqueen teleportation destination is selected, preventing them from teleporting on off-station holopads.
        • +
        +

        Ghommie && Kevinz000 updated:

        +
          +
        • Lichdom and necromantic stone skeletons are now of the spaceproof kind too.
        • +
        • skeletons now also like dairy products.
        • +
        • Halloween roundstart skeletons and zombies are no more spaceproof.
        • +
        • You can choose to set your species to zombie or skeleton through the pride mirror yet again, Alas they are not of the spaceproof kind either.
        • +
        +

        Ghommie (Credits to Kmc2000 for the original PR) updated:

        +
          +
        • Porting in MRE boxes from Yogstation. But be careful, eating possibly expired MREs found in maintenance comes with an unrealistically large (actually small) chance of food poisoning. Otherwise just bail out and order actually safe-to-eat MREs from cargo for 2000 credits.
        • +
        +

        Ghommie (Original PR by Dennok) updated:

        +
          +
        • Now areas_in_z get areas spawned by templates and blueprints.
        • +
        +

        Ghommie (Original PR by Dreamweaver) updated:

        +
          +
        • Nanotrasen has received word of a high-tech research facility that may contain advancements in bluespace-based research. Any crew members who become aware of its whereabouts are to report it to CentCom immediately and are restricted from sharing said info.
        • +
        • The turf reservation system now dynamically creates new z levels if the current reserved levels are full.
        • +
        +

        Ghommie (Original PR by JJRcop) updated:

        +
          +
        • Ports in more emojis, including : flushed :
        • +
        +

        Ghommie (Original PR by LaKiller8) updated:

        +
          +
        • Goonchat options should now save properly.
        • +
        +

        Ghommie (Original PR by Vile Beggar) updated:

        +
          +
        • Warden now has an added drill hat in his locker. You can change the loudness setting of it by using a screwdriver on it. Use wirecutters on it for a surprise.
        • +
        +

        Ghommie (Original PR by coiax) updated:

        +
          +
        • atom/var/container_type has been moved into datum/reagents/var/reagents_holder_flags. There should be no visible changes to effects.
        • +
        +

        Ghommie (Original PR by nemvar) updated:

        +
          +
        • Botanists can now get beeplushies (or cultivator and bucket) as an heirloom.
        • +
        • Clowns and mimes will now properly pick either a can of paint or their brand as heirloom now.
        • +
        +

        Ghommie (Original PR by tralezab) updated:

        +
          +
        • Fixes an issue with spontaneous appendicitis picking incompatible mob biotypes.
        • +
        +

        Ghommie (Original PRs by Tortellini Tony and BuffEngineering) updated:

        +
          +
        • E-cigs will continue to display their setting after being emagged.
        • +
        • Vapes now come out of the mouth. fix Fixes an E-cig initialize() runtime.
        • +
        +

        Ghommie (Original PRs by nemvar and Rowell) updated:

        +
          +
        • Added beekini bras and panties, thigh-high and knee-high bee socks.
        • +
        +

        Ghommie (by Arkatos) updated:

        +
          +
        • Fixed an issue with a Lizardwine drink crafting, where a final product would contain unwated 100u of Ethanol.
        • +
        +

        Ghommie (by Floyd / Qustinnus, Arathian) updated:

        +
          +
        • The robotocist now has robe to show his love for toasters
        • +
        +

        Ghommie (by nemvar) updated:

        +
          +
        • Dwarfs are now more robust.
        • +
        +

        Ghommie (original PR by 4dplanner) updated:

        +
          +
        • thrown objects (but not mobs) no longer hit the thrower
        • +
        • mirror shield rebound no longer depends on the original thrower's momentum
        • +
        +

        Ghommie (original PR by 81Denton, kriskog and nemvar) updated:

        +
          +
        • Sleepers now show a message if players try to unscrew the maintenance hatch while they're occupied or open. Fixed typos in sleeper/organ harvester messages.
        • +
        • Sleepers and dna scanners can now be pried open with crowbars.
        • +
        • You can open and close sleepers and dna scanners by alt-clicking them.
        • +
        • The scanner's hatch now must be closed (on top of being unoccupied), just like sleepers, before being screwdriverable. This fixes a tricky door stuck issue with the machine.
        • +
        +

        Ghommie (original PR by AffectedArc07 and Shazbot) updated:

        +
          +
        • Added 8 new sock styles
        • +
        +

        Ghommie (original PR by AffectedArc07) updated:

        +
          +
        • Religion is now a globalvar instead of being a subsystem for some reason
        • +
        +

        Ghommie (original PR by AnturK) updated:

        +
          +
        • Supermatter now melt walls if it finds itself in one.
        • +
        +

        Ghommie (original PR by Anturk) updated:

        +
          +
        • Recipe for fabled secret sauce can now be found in the deepest reaches of space.
        • +
        +

        Ghommie (original PR by Barhandar updated:

        +
          +
        • Pumpkin meteors on Halloween now replace catastrophic meteor waves, instead of ALL OF THEM.
        • +
        +

        Ghommie (original PR by CrazyClown12) updated:

        +
          +
        • The chloral hydrate inside of the sleepy pen is no longer slower acting than chloral hydrate made in chemistry.
        • +
        • The chloral hydrate inside of cookies synthesised by emagged borgs is no longer slower acting than chloral hydrate made in chemistry.
        • +
        • Slight tirizene buff.
        • +
        • Delayed chloral hydrate
        • +
        +

        Ghommie (original PR by Denton) updated:

        +
          +
        • Nanotrasen has started shipping more types of bedsheets to its stations.
        • +
        • Added in Runtime, Pirate and Gondola bedsheets. The second one can also be found in some pirate ships, while the last can be crafted from gondola hides.
        • +
        • You can no longer reveal the 'illegal tech' research node by deconstructing .357 speedloaders, riot dart boxes, syndicate cigarettes, syndicate playing cards or syndicate balloons.
        • +
        +

        Ghommie (original PR by Mickyan) updated:

        +
          +
        • Fixed being unable to smother people using the damp rag
        • +
        +

        Ghommie (original PR by MrDoomBringer) updated:

        +
          +
        • morgues have had their proton packs removed and as such no longer suck in ghosts on closing.
        • +
        +

        Ghommie (original PR by MrDoomBringer, AnturK and YPOQ) updated:

        +
          +
        • Explosions will no longer damage wizards in rod form, the supermatter monitoring radio and megafauna GPS.
        • +
        • Supplypods no longer detonate their contents.
        • +
        • Fixed silicon items (e.g. cyborg modules) being destroyed by explosion epicenters.
        • +
        +

        Ghommie (original PR by Naksu) updated:

        +
          +
        • get_area() is now a define rather than a proc.
        • +
        +

        Ghommie (original PR by Nicjh) updated:

        +
          +
        • Abductor console's select disguise option now uses a radial
        • +
        +

        Ghommie (original PR by ShizCalev) updated:

        +
          +
        • Pineapple haters/lovers will get/no longer get pineapple pizzas respectively from infinite pizza boxes.
        • +
        • As a non-human mob, hovering your cursor over an inventory slot while holding an object in your active hand shouldn't runtime now.
        • +
        +

        Ghommie (original PR by Skoglol) updated:

        +
          +
        • New helper proc for alt-click turf listing, bypasses any interaction overrides.
        • +
        • Ghosts and revenants now use the new proc.
        • +
        • Ghosts can no longer toggleopen sleepers, adjust skateboard speed or close laptops
        • +
        • Revenant can now alt-click turf to list contents.
        • +
        • Revenant now slightly less nosy, use shift click to examine.
        • +
        • Alt-clicking the same turf again no longer closes the turf listing tab.
        • +
        • Reduced ventcrawl lag greatly.
        • +
        • Mining bags will no longer drop ore into backpack.
        • +
        • Mining bags in backpack no longer interferes with other mining bags.
        • +
        • Fixes some storage size circumventions.
        • +
        • Moved machine and computer frames below objects, parts are now always on top.
        • +
        • Moved structures (chairs, closets, windows, cult altars etc etc) below objects.
        • +
        • Moves mineral doors to airlock layers
        • +
        • morgue/crematorium trays' layers shouldn't overlap bodybags' anymore.
        • +
        +

        Ghommie (original PR by SpaceManiac) updated:

        +
          +
        • Disassembling a chem dispenser for the first time will no longer always yield a fully-charged cell.
        • +
        +

        Ghommie (original PR by Swindly) updated:

        +
          +
        • Arm-mounted implants that contain more than one item use a radial menu instead of a list menu.
        • +
        +

        Ghommie (original PR by Tlaltecuhtli) updated:

        +
          +
        • Other people's clothes burning no longer spam you
        • +
        +

        Ghommie (original PR by XDTM) updated:

        +
          +
        • Reagents now stop their passive effects (for example, stun immunity) if the liver stops working while they're active.
        • +
        +

        Ghommie (original PR by YPOQ) updated:

        +
          +
        • Fixing roffle waffle, mushroom halluginogen and some invalid reagents.
        • +
        • Fixes clockwork armor not actually having armor.
        • +
        +

        Ghommie (original PR by cacogen) updated:

        +
          +
        • The font size of all text in the chat window now scales
        • +
        • High volume (megaphone/head of staff headset) is a slightly smaller
        • +
        • Admins have slightly larger OOC text
        • +
        +

        Ghommie (original PR by coiax) updated:

        +
          +
        • Randomly coloured gloves and randomly coloured glowsticks now have slightly different typepaths, but otherwise function the same.
        • +
        • The Squeak subsystem has been renamed to Minor Mapping.
        • +
        +

        Ghommie (original PR by duckay) updated:

        +
          +
        • Added better names and descriptions for blueshirt officer gear.
        • +
        • Added the above gear to the premium selection of the sectech
        • +
        +

        Ghommie (original PR by harmonyn) updated:

        +
          +
        • Resisting out of bucklecuffs takes more/less time depending on the handcuffs you used, i.e., fake handcuffs will not bucklecuff someone for ages.
        • +
        • fake handcuffs shouldn't no longer demoralize restrained criminals scums.
        • +
        +

        Ghommie (original PR by monster860) updated:

        +
          +
        • fixes advanced proccall
        • +
        +

        Ghommie (original PR by mrhugo13 on tgstation13) updated:

        +
          +
        • The Syndicate has decided to equip their Syndicate leaders operative (Aswell as their clown counterparts) with the new Combat Glove Plus! The new Combat Glove Plus does everything the old boring Combat Gloves does but with the added extra of learning Krav Maga upon wearing them, any other Syndicate operative who wants to get in on the action will have to pay 5tc.
        • +
        +

        Ghommie (original PR by nemvar) updated:

        +
          +
        • Some drinks have new icons or slightly altered icons. In particular Wizz Fizz, Bug Spray, Jack Rose, Champagne and Applejack.
        • +
        +

        Ghommie (original PR by ninjanomnom) updated:

        +
          +
        • Orbiting is a little more aggressive about staying in orbit. The wisp as a result now correctly follows you over shuttle moves.
        • +
        • Gaps between sounds in some looping sound effects should no longer happen as much under heavy server lag.
        • +
        +

        Ghommie (original PR by variableundefined) updated:

        +
          +
        • Cancel button to assault pod destination selector.
        • +
        +

        Ghommie (original PR by wesoda25) updated:

        +
          +
        • disembowelment no longer works on mobs that aren't dead or in critical condition
        • +
        +

        Ghommie (original PRs by Akrilla, Arkatos and Denton) updated:

        +
          +
        • Sprays cans have a cap on how dark you can make objects. Art is uneffected.
        • +
        • Fixed a bug where you could get cyborg spraycans via pyrite extracts.
        • +
        • Added an infinite spraycan for admins to spawn.
        • +
        +

        Ghommie (original PRs by Denton and Skoglol) updated:

        +
          +
        • Reorganized the syndicate uplinks. Items are now mostly alphabetical, some misplaced items moved to more fitting categories. Bundles, random item and TC have been moved into a new category called "Bundles and Telecrystals". Gloves of the North Star and Box of Throwing Weapons have been moved to Conspicuous and Dangerous Weapons. Combat Gloves Plus have been moved to Stealthy and Inconspicuous Weapons. Moved all implants into the Implants category.
        • +
        • Added a new category to the uplink: Grenades and Explosives.
        • +
        +

        Ghommie (original PRs by Floyd/Qustinnus, optimumtact, Denton and coiax) updated:

        +
          +
        • You can now select what your pills will look like when making pills from the Chem Master
        • +
        • Red pills can make you think.
        • +
        +

        Ghommie (original PRs by Jujumatic and PKPenguin321, respectively) updated:

        +
          +
        • Minesweeper Arcade machines. The higher the difficulty setting, the better the prizes will be.
        • +
        • Also keep your eye out for another new (and rare) arcade game!
        • +
        +

        Ghommie (original PRs by Kmc2000 and actioninja) updated:

        +
          +
        • Added darkmode! You can opt-in to this by clicking the new toggle darkmode button just beside the settings one.
        • +
        • Byond members will now have a new setting for their Antag OOC color, instead of using their OOC one. (Antag OOC still locked under admin discretion though)
        • +
        • Default black'n'white windows style.
        • +
        +

        Ghommie (original PRs by Mickyan, Anturk, ShizCalev, nemvar and Naksu) updated:

        +
          +
        • After rigorous mandatory art training for the crew, many new graffiti styles are now available
        • +
        • Cleaned up some crayon and spraycan code for futureproofing.
        • +
        • Spraypainting blast doors no longer makes them see-through.
        • +
        • Paint remover now works on blast doors and the like.
        • +
        • Most objects can now be colored using a spray can.
        • +
        • Added visible message to spraying objects and windows.
        • +
        • Colored lights now shine in different colours.
        • +
        • Removed individual buttons text in crayon/spraycan UI, speeding it up.
        • +
        • Text mode buffer is actually visible in the UI.
        • +
        • Last letter of a text mode buffer no longer rotates out to be replaced with "a", allowing the text mode to be used for individual symbols.
        • +
        +

        Ghommie (original PRs by Naksu and XDTM) updated:

        +
          +
        • Transferring quirks now properly removes the roundstart trait from the person losing the quirk.
        • +
        • Roundstart traits no longer block the removal of other sources of that trait.
        • +
        • status traits are now a datum var, the accessors are now defines rather than functions.
        • +
        +

        Ghommie (original PRs by Naksu and coiax, loser) updated:

        +
          +
        • Cleaned up saycode
        • +
        • Taking mutadone while having the communication disorder brain trauma will no longer spam your chat with messages.
        • +
        • IPCs now come with a subtype of robotic tongue without the omnilingual ability, instead of innately having robotic voice spans.
        • +
        +

        Ghommie (original PRs by Nichlas0010 and ShizCalev) updated:

        +
          +
        • AI core display screen can now be set in character preferences.
        • +
        • AI core display screen will now be restore when revived.
        • +
        • Corrected some inconsistent capitalization in the player preferences screen.
        • +
        • Readded some forgotten AI sprites.
        • +
        • Fixed Hades AI death animation not playing.
        • +
        • the AI icon-selection menu now uses a radial.
        • +
        • Added in the death icon_states for the "TechDemon" AI screen.
        • +
        +

        Ghommie (original PRs by ShizCalev and bobbahbrown) updated:

        +
          +
        • Headsets now dynamically show in their description how to speak on any channels they can use when held or worn.
        • +
        • Radio channels names and keys now use defines.
        • +
        • The head arrival announcement will now be broadcast to the supply for the quartermaster.
        • +
        +

        Ghommie (original PRs by ShizCalev) updated:

        +
          +
        • Fixed a bug that allowed you to teleport an ID in your possession to a PDA anywhere ingame.
        • +
        • Fixed an exploit allowing you to steal ID's/pens from PDA's not in your possession.
        • +
        • Fixed an exploit allowing you unlimited control of a PDA's interface even if it wasn't near you/in your possession.
        • +
        • Fixed Pride Mirror exploits.
        • +
        • Corgi collars can now be removed!
        • +
        • Updated the corgi & parrot inventory panels to use the same formatting as other mobs
        • +
        • Fixed corgi inventory panels not closing properly.
        • +
        • Fixed the parrot inventory panel not closing properly if you're not able to interact with it.
        • +
        +

        Ghommie (original PRs by ShizCalev, MrDoombringer, AnturK, bgobandit, 81Denton and actioninja) updated:

        +
          +
        • Failsafe codes for uplinks are now available for purchase.
        • +
        • Nuke Ops now have the ability to purchase a usable RPG, the PML-9, as well as a couple different types of rockets for it. you can also suicide rocket jump with them!
        • +
        • Improved Uplink item descriptions and formatting.
        • +
        +

        Ghommie (original PRs by ShizCalev, coiax and Tlaltecuhtli) updated:

        +
          +
        • Caks will no longer override the bonus reagents provided in a donut when frosting them.
        • +
        • Caks can no longer create frosted frosted jelly donuts.
        • +
        • Jelly donuts will no longer lose their vitamins when they're frosted.
        • +
        • Fixed chaos donuts potentially doubling the amount of reagents added when microwaved with something else.
        • +
        • Donuts now always contain 1 sprinkles as was stated on the wiki. Frosted donuts have a chance at adding an extra sprinkle.
        • +
        • Improved the code for ensuring that security members enjoy donuts and security-themed alcoholic drinks.
        • +
        • neurotoxin doesnt insta stun but gives you limb paralysis overtime and heart attacks if it stays in for too long and it is also alcholic
        • +
        • beepsky smash now summons imaginary beepskys that deal stamina damage instead of outright stunning
        • +
        +

        Ghommie (original PRs by Time-Green and Qustinnus) updated:

        +
          +
        • loot crates can't explode after unlocking anymore
        • +
        • jumping into loot crates no longers causes them to go boom
        • +
        • You can now deconstruct abandoned crates with a welder without making them go boom. After unlocking them, of course.
        • +
        +

        Ghommie (original PRs by Tlaltecuhtli and nicbn) updated:

        +
          +
        • alt click to eject beakers from chem masters + chem dispensers + grinders + chem heaters
        • +
        • hit chem master + chem dispenser + chem heaters with a beaker and if its loaded with another it swaps em
        • +
        • All-In-One Blender UI uses a radial menu now. You can see the contents and reagents by examining.
        • +
        +

        Ghommie (original PRs by XDTM, 4dplanner, nemvar and, yes, myself) updated:

        +
          +
        • Merged tinfoil hat kind of protection into the anti_magic component.
        • +
        • Tinfoil hats can also be warped up from excessive dampening of mindray/though control/psicotronic anomalies, or by simply being microwaved in an oven, and become useless.
        • +
        • Immortality Talisman and Paranormal Hardsuit helmets now come with tinfoil protection too (minus the paranoia and limited charges).
        • +
        • Genetics/Slime/Alien Telepathy and Slime Link are now stopped by tinfoil protection.
        • +
        +

        Ghommie (original PRs by XDTM, optimumtact, Nichlas0010 and monster860) updated:

        +
          +
        • Added Quantum Keycards, devices that can link to a quantum pad, and can be used on any other quantum pad to teleport to its linked pad. spellchecking: Renamed "Bluespace Teleportation Tech" tech node to "Bluespace Travel".
        • +
        • Moved roasting sticks from the "Bluespace Travel" to "Practical Bluespace".
        • +
        • Spraying holy water on tiles will now prevent cult-based teleportation from using them as a destination point.
        • +
        • Quantum, wormhole and magic teleportation is no longer disrupted by bags of holding.
        • +
        • You are now also blocked from teleporting IN to no-teleport areas, not just out of them.
        • +
        • Quantum teleportation now makes pretty rainbow sparks instead of the normal ones.
        • +
        • Non-bluespace teleportation (spells etc.) no longer makes sparks.
        • +
        • Fixed teleportation deleting mob spawners like golem shells and ashwalker eggs.
        • +
        +

        Ghommie (original PRs by carshalash, GranpaWalton, BebeYoshi & Hexmaniacosanna, Fire Chance, Ordonis, Krysonism and OnlineGirlfriend) updated:

        +
          +
        • Reduced booze power of Mead, Red Mead, and Irish Cream.
        • +
        • Increased booze power of Grappa.
        • +
        • Added a new premium drink to the soda machine called "Grey Bull" which gives temporary shock resistance
        • +
        • A new drink called Blank Paper was added to the bar menu, it was made by a mime and it represents a new start.
        • +
        • Adds a variety of fine alcoholic beverages for discerning patrons of the bar: Wizz Fizz, Bug Spray, Champagne, Applejack, Jack Rose, Turbo, Old Timer, Rubberneck, Duplex, Trappist Beer, Blazaam and Planet Cracker!
        • +
        • Also more nonalcoholic drinks: Cream Soda, Lemonade and Red Queen.
        • +
        • Packs of a novel artificial sweetener have been added to the kitchen vendor.
        • +
        • Bottles of trappist beer and champagne are now available in the premium seection of the booze-o-mat.
        • +
        • Juicing parsnips now yields parsnip juice.
        • +
        • Maintenance peaches.
        • +
        • Grape soda now cools you down like other sodas.
        • +
        • tweaked the Arnold Palmer recipe, it now uses lemonade.
        • +
        • Added new drink, bottle, vomit and peach can sprites.
        • +
        +

        Ghommie (original PRs by grandpawalton and Mickyan) updated:

        +
          +
        • the contents on the smartfridge icon now change depending on how many items it contains
        • +
        • opening the maintenance panel of smartfridges now correctly updates the icon
        • +
        • Screwing a disk compartmentalizer no longer makes it look like a smartfridge.
        • +
        +

        Ghommie (original PRs by nicbn and coiax) updated:

        +
          +
        • Microwave UI uses a radial menu now. You can see the contents by examining.
        • +
        • Microwaves have a single wire accessible when open, the activation wire. When cut, the microwave will no longer function, when pulsed, the microwave will turn on.
        • +
        • Stabilized dark purple extracts now cook items in your hands, rather than dropping the cooked item on the floor.
        • +
        +

        Ghommie (original PRs by ninjanomnom and nemvar) updated:

        +
          +
        • Trays now scatter their contents when used for attacks, like they are supposed to.
        • +
        +

        Ghommie (original PRs by ninjanomnom, coiax, yoyobatty) updated:

        +
          +
        • Fixed slaughter demons not getting a speed boost when exiting a pool of blood. Fixed slaughter demon giblets not being visible.
        • +
        +

        Ghommie (original PRs by subject217, AarontheIdiot, pireamaineach, Gousaid67 and SouDescolado) updated:

        +
          +
        • Removed plasmamen species speedmod in favor of a slowdown for envirosuits.
        • +
        • Nanotrasen has began deploying departementalized enviro plasmasuits to the station! plasmamens can now benefit from some of the bonuses aswell as the color pattern of their job, while allowing others to easily determine their profession!
        • +
        • Benevolent Nanotrasen makes gulag available for everyone! (Plasmamen retain their equipment and don't die.)
        • +
        • Removes code that theoretically limits plasmamen from being clowns and mimes, but actually doesn't.
        • +
        +

        Ghommie (original PRs by zeroisthebiggay, AnturK, MrDoomBringer, Cobby, ATHATH, optimumtact, GranpaWalton, Skoglol) updated:

        +
          +
        • Blob overminds, sentient diseases, etc. can no longer dump out boxes. Sorry gamers.
        • +
        • Sentient Disease now has almost all symptoms at its disposal.
        • +
        • Adding single-symptom disease abilities is super easy now.
        • +
        • Sentient Disease can now hear (not sure if this was a bug or intentional).
        • +
        • Sentient Disease is a linguist and knows all languages. Still cannot speak.
        • +
        • Gives Sentient Diseases a medical hud to observe their victims further with.
        • +
        • Fixes and moves around some on_stage_change() and Start()-related things for virus symptoms and (sentient) diseases.
        • +
        • The inorganic biology symptom should work properly now when bought by a sentient disease.
        • +
        • Oxyloss icon no-longer shows up when someone has the self respiration symptom
        • +
        • The self respiration now makes you not contract diseases through the air and not breathe in smoke
        • +
        • Sentient diseases can no longer pick two cures that react and disappear when eaten.
        • +
        • Sentient disease cures are now consistently harder, will only pick cures from tier 6 and up.
        • +
        • Disease cures should now stay the same for all infected mobs.
        • +
        • The regenerative coma symptom has a new resistance 4 threshold effect! Said threshold effect will give hosts of the symptom's virus the TRAIT_STABLECRIT trait if its threshold is met.
        • +
        • An obscure, probably never reported before bug that may or may not exist involving sentient diseases and the self-respiration symptom should be fixed now (if it even existed in the first place).
        • +
        • The cooldown time between each removal or addition of a symptom for sentient diseases has been brought down from an agonizingly long 2 minutes to a more reasonable 1 minute.
        • +
        +

        Ghommie (original pr by Dennok on tgstation) updated:

        +
          +
        • Now you don't lose your pulled thing on the z level edge.
        • +
        +

        GrayRachnid updated:

        +
          +
        • Added windoors to all the flaps on delta.
        • +
        • rebalanced k9dogborgs
        • +
        +

        Hatterhat updated:

        +
          +
        • Magnetic pistols now fit in boot pockets - jackboots, workboots, etc.
        • +
        • literally every pistol subtype fits in shoes now. go wild.
        • +
        +

        Hippie Circuit Port updated:

        +
          +
        • Added all Atmospheric Circuits
        • +
        • Added the ability to color data disks
        • +
        • Added Selection and Storage Examiner Circuits
        • +
        • Added Smoke, Extinguisher, and Beaker Connector Circuits
        • +
        • Added Inserter, Renamer, Redescriber, and Repaint Circuits
        • +
        • Added MMI Tank and pAI Connector Circuits (The possibilities are endless!)
        • +
        +

        Improving and Balancing Cyborgs updated:

        +
          +
        • Added Crew Pinpointer to Security Borg
        • +
        • Added Crew Monitor to Medical Borg
        • +
        • Added Crew Pinpointer to MediHound Borg
        • +
        • Made the Disabler_Cooler compatible with both Security Borg and K9 Borg
        • +
        • Changed the Warning Text upon selecting Security or K9 module
        • +
        +

        ItzGabby updated:

        +
          +
        • Bat Species parts for more leeway for character customization.
        • +
        • Alphabetized decor wing selection window in character creator for simplicity.
        • +
        +

        JTGSZ updated:

        +
          +
        • Added one more gang boss slot bringing total to 4 from 3
        • +
        • Fixed Gang Boss being able to be deconverted
        • +
        • Gave Qualifies_for_Rank Check back its checks in job controller.
        • +
        • Optional species based clothing restrictions
        • +
        • Gang Dominator excessive wall check tweaked to 25 open turfs
        • +
        • Gang Dominator no longer functions off-station.
        • +
        • Adds more control over species based offsets.
        • +
        • qualifies_for_rank now checks latejoin menu
        • +
        • Added Halloween Dwarves, for Halloween... Yep.
        • +
        • Can flip pipes once more.
        • +
        • barricade girder walls use PlaceOnTop instead of new
        • +
        +

        Linzolle updated:

        +
          +
        • ability to quickly max sensors
        • +
        • atmos helmet visual bug
        • +
        • supply display are now properly on the wall
        • +
        • consistency in hop and cap berets
        • +
        • slime people now enjoy eating toxic food and it will not disgust them
        • +
        • hos trenchcloak now properly has a sprite on digi characters
        • +
        • duplicate definition of hos and sec skirts
        • +
        • Krav Maga leg sweep now works properly.
        • +
        • shoes can have a different icon used for their item and mob icons
        • +
        • combat gloves plus having no mob icon
        • +
        • inhands sprite for rainbow knife
        • +
        • colour of highlight on the regular knife when held in the right hand
        • +
        • mining shuttle console can now be printed after computer consoles have been researched
        • +
        • can now carry people on your back by aggressive grabbing them while they are laying down and then dragging their sprite onto yours.
        • +
        • dragging people who are prone is now much slower, and carrying them will allow you to move faster at the cost of taking 5 seconds to lift them up onto your back.
        • +
        • pacifists can now aggressive grab (cannot table slam people though)
        • +
        • blood on your body floating a bit to your right if you're a taur
        • +
        • some suits having no icon on tauric characters
        • +
        • front facing CMO hardsuit icon for naga taurs
        • +
        • colour of medical cross on CMO hardsuit for taurs
        • +
        • taur body and jumpsuit showing through mining suits
        • +
        • all chaplain suits can hold the same items in suit storage
        • +
        • improvement to organisation for chaplain suits
        • +
        • blood halberd not going back to 17 force after unwielding
        • +
        • unnecessary 's at the end of blood rites healing
        • +
        • QoL to blood rites, examine the ritual aura to view how many blood charges are left
        • +
        • surgery cleanup
        • +
        • dissection available round-start
        • +
        • better dissection surgeries from RnD, gives more points
        • +
        • abductors can now see what glands do
        • +
        • antagonist abductors now have a surgeon trait that teaches them every surgery rather than having it just check if they're an abductor
        • +
        • muscled veins surgery
        • +
        • having one of your hands used up if you fireman carry but the person being carried dismounts any way other than you dropping them
        • +
        • Four colour variants of ankle coverings. Select them on the loadout screen.
        • +
        • ankle coverings
        • +
        • allows for shoes that don't cover your feet to be taken into account for footstep sound effects and glass shards
        • +
        • Tend Wounds surgery. Heal in the field, with better healing the more damage the patient has.
        • +
        • Reconstruction replaced by Tend Wounds
        • +
        • made Revival more accessible, more viable alternative to cloning.
        • +
        • advanced surgery tools can't perform lobectomy or coronary bypass
        • +
        • Decorative and insect wings can now be coloured individually, similar to horns.
        • +
        • people getting assigned wings if their savefile is old.
        • +
        • wings that take the hair colour. Unnecessary if you can just set the colour.
        • +
        • Cannot make horns pure black. Trying to do so will set it to a default value.
        • +
        • decorative angel wings being invisible
        • +
        • abductors now actually work
        • +
        • abductor scientist has their own greet message now
        • +
        • unable to read paper on airlocks
        • +
        • ai can see paper (still just shows stars)
        • +
        • Target head and throw a hat at someone to toss it onto their head, knocking whatever they're wearing off if they are wearing a hat. Some headgear can't be knocked off this way.
        • +
        +

        MediHound updated:

        +
          +
        • Made Cyborgs be affected by Ion Storm Law Changes like AIs
        • +
        +

        MrJWhit updated:

        +
          +
        • rebalance melee stamloss
        • +
        +

        Multicam Config updated:

        +
          +
        • removed whether or not the stuff for multicam was checking the useless var and instead now checks the CONFIG_GET flag.
        • +
        • Admins now have a verb in the Server tab to turn AI multicam on and off.
        • +
        +

        Naksu updated:

        +
          +
        • default radiation insulation is now handled by atom vars rather than a component, components can still be used.
        • +
        • squeezed a little bit more perf out of atmos
        • +
        +

        Nero1024 updated:

        +
          +
        • Bare feet will now make the correct footstep sounds.
        • +
        • Other mobs will make the correct footstep sounds.
        • +
        • Crawling/dragging sounds for downed/incapacitated mobs
        • +
        +

        Onule & Nemvar (ported by Ghommie) updated:

        +
          +
        • New Revenant icons
        • +
        +

        Original by Citinited, port by Sishen1542 updated:

        +
          +
        • You can now use an airlock electronics on a locker to add a lock, and can screwdriver an unlocked locker to remove its lock.
        • +
        • You can now remove the locks on broken or emagged lockers.
        • +
        • Removing the lock from a personal locker now wipes that locker's ID details.
        • +
        • Broken lockers have had their appearance changed.
        • +
        +

        Owai-Seek updated:

        +
          +
        • custodial cruiser cargo crate
        • +
        • removed light replacer from power designs and moved to misc designs
        • +
        • added pimpin ride to custodial locator
        • +
        • added additional items to janibelt whitelist
        • +
        • made plant DNA manipulator unwrenchable
        • +
        • reduced janitor premium supply costs
        • +
        • fixed them strawberries
        • +
        • false codpiece
        • +
        • crocin/camphor bottles
        • +
        • updated kinkmate item list
        • +
        +

        PersianXerxes updated:

        +
          +
        • Adds the clockwork_warp_allowed flag to the Captain's Office area, set to FALSE the same way it is for the chapel and armory.
        • +
        • Relocates cult catwalks outside the Reebe dressing room.
        • +
        +

        Poojawa updated:

        +
          +
        • Digitigrade legs are now able to wear shoes and look fancy, Uniforms to come.
        • +
        • Xenos are only digitigrade now, mammals and aquatics have the option.
        • +
        • Fire Alarms are visible in low light situations
        • +
        • fixed vore prefs saving inconsistently, new characters might have a previous slot's prefs tacked on.
        • +
        • fixed mammals not having the option for digilegs. Sprites are fucky until body-part related sprites are done.
        • +
        • improved vore sound responsiveness to preference choices.
        • +
        • removed morphine from Medihound sleeper chemical list
        • +
        • fixed preference setting being broken
        • +
        • Medihound sleepers are Initialized properly, and icons update correctly now on eject
        • +
        • Air alarm All clear color changed from green to blue
        • +
        • APCs are harder to destroy.
        • +
        • Added Digitigrade versions of everything appliciable in suit.dmi
        • +
        • Snowflake Icons weren't modified, and were given NO_MUTANTRACE_VARIATION
        • +
        • naga and quad Taurs literally don't freeze their ass off in space anymore.
        • +
        • Digitigrade legs will toggle on/off properly on character menue
        • +
        • The misleading "normal" has been removed from species options
        • +
        • Added sanity checks to emag usage
        • +
        • fixed vtech, but it still doesn't work because of overriding jog/sprint mechanics from combat reworks.
        • +
        • Puppy jaws properly store if you're emagged, they are also toggle-able for stealth like the tongue.
        • +
        • Digitigrade legs should properly fucking update for the last fucking time. Fucking snowflake code. refractor: Got rid of snowflake sechound cuffs, gave them normal zipties like regular secborgs.
        • +
        • dogborg sleepers actually extinguish people who are on fire, in case you don't have time to lick them out.
        • +
        • Taur suits should fix themselves properly when worn by other people.
        • +
        • Added the Yogs/Oracle ported latejoin menu
        • +
        • All markings, tails, ears, and snouts for Citadel races are color matrixed!
        • +
        • all markings are on a per-limb basis, including Digitigrade legs!
        • +
        • a bunch of tails were blessed with tail wagging sprites, Fish, Sharks, Fennecs, Wahs, raccoons, and others.
        • +
        • Tiger markings + tail added, skunk tails improved via sprites from Virgo
        • +
        • tweaked some sprites to look better, but they absolutely could use a few extra passes for quality
        • +
        • HumanScissors in the Tools folder will permit anyone to contribute matrix'd markings to the sprite sheet, however Mam_markings is very, very full. Be careful.
        • +
        • Character preview was both optimized for taurs and bad-touched for better updating. I don't know if it'll be bad, but hey its better.
        • +
        • Added Dark Medihound and Pup Dozer from Virgo
        • +
        • Clone pods no longer announce the name of the clone
        • +
        • fixed flavor text appearing when your face is hidden but you're not an Unknown
        • +
        • Tauric suits now apply an (placeholder) blood overlay, as well as their shield overlay.
        • +
        • Ashwalkers now have lungs. They cannot breath station air without suffocation effects, but are completely fine on their homeworld.
        • +
        • Carbon mobs now have a maximum tolerance to oxygen of 50kPa.
        • +
        • Deluxe synthetic lungs have a very high bonus to O2 tolerance.
        • +
        • Digitigrade legs returned to normal, since digi leg markings overlay them anyway.
        • +
        • commented out lizard mam_snout entries, because too many abominations
        • +
        • Vore Panel restored to have various interactions available again. Semi-untested but should work as advertised.
        • +
        • Vore Panel has more feedback.
        • +
        • is_wet var to bellies, toggled in the panel, will remove flesh sounding struggles and the internal loop. JSON version updated.
        • +
        • Feeding var. You will need to enable feeding to recieve any feed vore actions, but you can now feed yourself to mobs that have this set. TODO, Dogborg sleeper feeding.
        • +
        • vore mode button now required to be enabled to perform vore actions. It's the mouth icon!
        • +
        • Ash Drake vore fixed for actual reals this time
        • +
        • Mobs shouldn't spam the released contents announcement anymore on qdel or death. Only if triggered
        • +
        • Hostile mob code now properly ignores targets in bellies
        • +
        • Your belly can quietly growl if you're starving now.
        • +
        • Normal blood splattering isn't offset due to tauric mode
        • +
        • Added plasma man suit icons for taurs
        • +
        • Added bee butt for insects to have stripes
        • +
        • adjusted random spawn sprite accessories, humans won't be demi by default and lizard/mammal spawns will randomly get digitigrade legs
        • +
        • sprite adjustments for tentacles, as well as a misspelling.
        • +
        • Humans once again use ears and tail_human, as intended. This is to prevent garish randomness
        • +
        • istype for species is actually correct and usable now, it'll be a factor for monkey form expansions.
        • +
        • Hair functions are de-gendered and more easily selectable now.
        • +
        • Slimes can *wag, select markings and snouts, and yes it works.
        • +
        • Slimepeople extra parts now respect their hair_alpha in terms of being somewhat see-through. it shouldn't stand out as badly now!
        • +
        • Hunger noises are now toggled per character
        • +
        • Ashwalker den is habitable by ashwalkers again
        • +
        • Medical belts now have overlays! Now you can see if a belt is useful or just flatout empty.
        • +
        • fixed hypo MK IIs not being able to be put on medical belts
        • +
        • fixed Navy officer uniforms that failed to spawn
        • +
        • Loadout items will be forcefully added to backpacks or at your feet instead of left behind at title screen
        • +
        • hypospray kits hold 12 now, but only vials and sprays themselves
        • +
        • labcoats can carry MK II hyposprays on them now.
        • +
        • Vore Mobs are a thing now, not just ash drakes
        • +
        • Removed hunger sound stuff. never taking requests from Coolgat3 ever again. refractor: Simple Mobs use the same system regular human mobs do, itjustworks.png
        • +
        • Character Window settings unsnowflaked and normalized. I have no fucking clue how to make them work with taurs still tho, sorry.
        • +
        • added rotating background images for better clarity and contrast than just SOLID FUCKING BLACK. Images from Virgo/Polaris/Eris
        • +
        • Defib users automatically stop pulling when they attempt to perform a defib shock
        • +
        • added muzzled varients of space helmets and full masks
        • +
        • added knight_grey to taur suits, all paranormal ERT now have tauric versions enabled
        • +
        • Lava knights have digitigrade and tauric versions now
        • +
        • Added a glass version of the gas mask, because it was in the files and looked nice. does everything regular ones do except make you an unknown
        • +
        • Added custom species names! Examining people will now display their species name unless they're an Unknown or have their face hidden. like flavor text. Set it in your character window!
        • +
        • changed how health scanners print messages, wrapping it in msg for one to_chat instead of printing every line to_chat.
        • +
        • Discord bot will now report when a round ends and give the vague news ticker that a sister-station would have received for the game mode and result of the round.
        • +
        • fixed medical hardsuit overlay issue. I thought it was going to work well but fuck byond.
        • +
        • None body markings shouldn't give rgb hell, but it also should reset properly anyway. ree.
        • +
        • Sorted some sprites to better sooth my byond icon limit anxiety.
        • +
        • Box Cryopods expanded to 6 public. Permabrig cryo fixed.
        • +
        • Delta Cryopods expanded to 6 public. Permabrig cryo fixed.
        • +
        • MetaStation Crypods expanded to 6 public, relocated above sparring ring. Permabrig cryo fixed
        • +
        • PubbyStation gained one more cryopod, Permabrig's cryo fixed.
        • +
        • Omega given one more crypod as well.
        • +
        • Gulag was given a cryopod.
        • +
        • Box and Meta's cryo rooms are now a new room entirely.
        • +
        • Added erect states for all phallic bodyparts
        • +
        • YOUR DICK ACTUALLY STANDS UP NOW, YOU'RE WELCOME.
        • +
        • skintone locked genitals match the new skintone colorations.
        • +
        • added two new vaginal types and descriptions.
        • +
        • fixed borg defib runtimes
        • +
        • fixed heart attacks being nonlethal
        • +
        • Ported Oracle's cloning set up, you're now visible like cryo when being cloned, though it's a mystery until you have skin on your meat puppet existance
        • +
        • Recyclers are unable to destroy the indestructible any longer.
        • +
        • Kiara's toy sabre now actually is the correct item + icon states
        • +
        • Generic armor for taurs fixed, there isn't actually any sprites for 'em, so. Full sprites overlay over bodies, but I really can't be bothered to do all the offset fixes otherwise.
        • +
        • Large maps have had a patient room transformed into micro chemistry stations with nothing else in them. They've been labelled 'Apothecary' rooms and are accessible by doctors.
        • +
        • females now have female defined sprites
        • +
        • Slime legs have had their excess pixels adjusted
        • +
        • Mammal normal legs are more in line with human legs now
        • +
        • fixed species like abductors and golems getting the fat tiddy or pingas
        • +
        • Atmos and Station alerts should be more alerting.
        • +
        • Added visible and hidden testicles
        • +
        • Added multi-boob support. Now you can have two or three pairs of breasts.
        • +
        • fixed missing vagina and breast sprites
        • +
        • fixed prosthetic hands being invisible
        • +
        • male foxes exist again
        • +
        • female chest markings improved from being too dark in comparison to their other colors, blending better
        • +
        • Markings behave better on non-organic limbs.
        • +
        • tweaked the name of Sublter to distinguish its use
        • +
        • Gave a hint for vore posting.
        • +
        • Readded Ninja speech modifications with their mask
        • +
        • Pacifists can eat people for heal belly or noisy. Digestive modes are auto-swapped to noisy
        • +
        • Added an underwear toggle button under 'Object' tab
        • +
        • Genitals now layer under underwear. Hide these if they're too obnoxious.
        • +
        • Added digitigrade socks of all known ones anyway.
        • +
        • tweaked the Genital character creation layout to look better
        • +
        • fixed having balls/womb when you don't have the linked organ at character creation
        • +
        • fixed being able to squeeze semen directly from your balls. Probably.
        • +
        • NT Newscasters have had repeated reports of gang activity and are now looking into it.
        • +
        • NT Psykers keep mumbling about last words of someone who died. Somehow they even have a newsletter for this...
        • +
        • Gangster greeting messages are a batch message rather than 5 laggy to_chats
        • +
        • RCL now show what color is currently in use
        • +
        • Added RGB blood effects, know whose blood this is by color!
        • +
        • Added Synthetics blood, and a machine that produces it. A universal donor for medical to heal people with. Make it via medical protolathe!
        • +
        • With hearts, slimepeople shouldn't die from the effects of not having a heart.
        • +
        • Plasma vessels from xenomorphs will restore blood if you're on resin.
        • +
        • Poly's speech now echos to the chat bot.
        • +
        • Added new wings to Insects and separated fluff from old ones, they're Insect's new body markings now without being per-limb (for now).
        • +
        • Horns are now available to mammals, and they have their own color.
        • +
        • Legs are no longer a binary hack code, but actually something that can be changed. Framework for tauric adaptations.
        • +
        • Purged Modular Citadel's sprite_accessories.
        • +
        • improved the quality of a number of sprites.
        • +
        • Moths are now all insects. Avians and Aquatics are all anthromorphics. Just as planned.
        • +
        • Anthromorphs can choose their preferred gibbing meat. I guess. Snowflakes are weird.
        • +
        • Additional Gentlemen names.
        • +
        • Medical huds are now calibrated for Radioactive wavelengths.
        • +
        • Engineering equipment, blue space, and common storage containers are radiation protected
        • +
        • fixed suit storage not cleaning radiation levels of everything stuffed into them.
        • +
        • QM is able to hire/fire people to their department now.
        • +
        • cryopod UI isn't complete shit anymore
        • +
        • Cryopods purge silicon gear more efficiently now. Same with ghosts.
        • +
        • Med Sprays are now more aligned with patch mechanics
        • +
        • Chemistry is encouraged to be more varied in their healing, as well as careful in its application
        • +
        • Active NPC priority set much higher priority for the MC, with the intent on making NPC combat more interesting
        • +
        • Clarified access descriptions of some jobs
        • +
        • fixed missing deco wing states
        • +
        • fixed a few things related to vore content
        • +
        +

        Putnam3145 updated:

        +
          +
        • Bottles in PanD.E.M.I.C 2200 can now be replaced with an inhand bottle directly
        • +
        • Ejecting a bottle from the PanD.E.M.I.C 2200 puts it directly into the user's hand
        • +
        • Alt-clicking the PanD.E.M.I.C 2200 ejects the current bottle
        • +
        • neural nanites only work/drain if you have brain damage or traumas the nanites can fix
        • +
        • Pod people can no longer get fat from standing in the light
        • +
        • PanD.E.M.I.C 2200 now ejects onto itself instead of onto user if user's hands are full
        • +
        • Added configs for a bunch of Dynamic rule parameters.
        • +
        • Added defaults for all the configs (WIP).
        • +
        • Added dynamic midround/latejoin antag injection to the config.
        • +
        • Made starlight condensation not kill slime people.
        • +
        • Added not-killing-slime-people to the transmission threshold of plasma fixation and radioactive resonance.
        • +
        • Made the clone scanner lock while it's scanning.
        • +
        +

        R3dtail updated:

        +
          +
        • Added 16 saltprimaryobject items Added 4 saltsecondarysubject items
        • +
        • Added a new carpet. Red! Also added said carpet to the Premium Carpet crate from the cargo supply console. Trilby said she'd take care of the crafting recipe.
        • +
        +

        Raptorizer updated:

        +
          +
        • Doubled peach spawn rate
        • +
        • tweaked numbers/variables
        • +
        • rebalanced numbers/variables
        • +
        • removed unneeded code
        • +
        +

        Seris02 updated:

        +
          +
        • Abductor Replication Lab ruin and advanced tools
        • +
        • Added looc hotkey
        • +
        • made the autoprocess button relevant
        • +
        • changes so that spooktober starts earlier
        • +
        • fixed the dark blue lum major effect
        • +
        +

        Sirich96 and Dennok (ported by Ghommie) updated:

        +
          +
        • Added new Teleporter Station sprites
        • +
        • Added teleport station calibration animation.
        • +
        +

        Sishen1542 updated:

        +
          +
        • Pentetic Jelly, new chemical made through mixing 1:1 slime jelly and pentetic acid.
        • +
        • Anatomic panacea now gives pent jelly instead of pent acid. Medbeams now have TRUE tox healing to heal TOXINLOVER as well.
        • +
        • Changed bible heal proc, halving the healed damage and increasing brain damage 5x in exchange for a much wider array of items to protect you from it.
        • +
        • Moved around some chems from emag list into upgrades.
        • +
        • Added some fun chems to dispensers.
        • +
        • Gave dispensers old tg functionality.
        • +
        • Leather, cardboard, bronze & bone golems!
        • +
        • Bone hurting juice and interactions with plasmamen, skeletons & bone golems!
        • +
        • Ported addition of new CAS cards.
        • +
        • Ported a fix for CAS.
        • +
        • Added the ability to alter your genitalia as a slimeperson more than addition/removal.
        • +
        • fixed genitalia removal proc in alter form.
        • +
        • Ported the inability for non-station AI to interact with station z-level.
        • +
        • HoS mains can now peacefully sleep in their office.
        • +
        • Podpeople now have customization options.
        • +
        • Removed the human check for cult conversion of captain/chaplain minds.
        • +
        • Roundstart carbon jetpacks now have full_speed FALSE.
        • +
        • Adds plasteel to medical and security techfabs.
        • +
        • Added public autolathes to all maps.
        • +
        • density = 0
        • +
        • hugboxing mining loot
        • +
        • ling blade now has 40 armor pen
        • +
        • fun
        • +
        • bad stuff
        • +
        • mech bad
        • +
        • rebalances strained muscles
        • +
        • added in the assistant response team
        • +
        • fixed up access on the centcom hangar button
        • +
        • storage tweaks for belt briefcase
        • +
        • codersprite for belt briefcase
        • +
        • added pharaoh gear to chaplain vendor
        • +
        • fixed typos in pharaoh items
        • +
        • made laser minigun not shitcode and also craftable
        • +
        • added new fire sounds for the laser minigun
        • +
        • holy lasrifle, hypertool, divine lightblade, and blessed baseball bat. Four new holy weapons!
        • +
        • stamina and force tweaks for most holy weapons.
        • +
        • prayer beads no longer deconvert after a 10 second timer, now just inject holy water for delayed effect
        • +
        • cultist runes are now destroyed with a bible or a null rod
        • +
        • bo-staff now functions as a nerfed sleepy carp staff
        • +
        • fixed kevinz code to add in non-null rod child items as holy weapons
        • +
        • fixing chems for strained muscles
        • +
        • narsie no longer asks for consent
        • +
        • removed reflect from divine lightblade
        • +
        • teleporting a locker is bad
        • +
        +

        Sishen1542, original by @Tlaltecuhtli updated:

        +
          +
        • alt clicking the emitter now rotates it instead of only flipping
        • +
        +

        Sishen1542, original by @zxaber updated:

        +
          +
        • Utility mechs no longer automatically get beacons.
        • +
        • Tracking beacons no longer delete themselves when EMPing a mech, and instead have a ten-second cooldown in-between EMPs. They also now do heavy EMP damage rather than light.
        • +
        • Mechs that take EMP damage lose the use of their weapons and equipment temporarily. Movement and abilities are not effected.
        • +
        • Mechs taking EMP damage no longer roll for a random malfunction.
        • +
        +

        Sishen1542, original by Arkatos updated:

        +
          +
        • Action buttons can now be dragged onto each other to swap places
        • +
        +

        Sishen1542, original by NewSta updated:

        +
          +
        • updated the miasma canister sprites
        • +
        +

        Sishen1542, original by Skoglol updated:

        +
          +
        • Heaters/freezers now support ctrl clicking to turn on and alt clicking to min/max target temperature.
        • +
        +

        Sishen1542, original by XDTM updated:

        +
          +
        • Using the wrong surgery tool during surgery no longer attacks the patient, if on help or disarm intent.
        • +
        • Surgery steps are now shown in detail only to the surgeon and anyone standing adjacent to them; the patient and people watching from further away get a more vague/ambiguous description.
        • +
        +

        Skoglol updated:

        +
          +
        • You can now alt click storage (bags, boxes, etc) to open it.
        • +
        +

        Skully) updated:

        +
          +
        • Nudity Permit, a completely invisible uniform that still has pockets and such, to loadout options. It is more or less a direct port from the RP server.
        • +
        +

        SkullyRoberts updated:

        +
          +
        • Penis autosurgeon as rare maint loot.
        • +
        +

        TerraGS / Skoglol updated:

        +
          +
        • Adds toggleable light and blinking charge indicator to kinetic crusher
        • +
        • Kinetic crusher can now be one-hand carried. You'll still need two hand to use it.
        • +
        +

        Thalpy updated:

        +
          +
        • fixes message_admins in SDZF
        • +
        • Alkaline buffer recipe so people don't get grumpy and expanded the pH range
        • +
        • fixes buffers
        • +
        • fixes broken compiler because a var changed name
        • +
        • impure travis var anger
        • +
        • Added the ability to dispense smartdarts from the chemmaster.
        • +
        • Tweaks medolier amd chembags to allow quickpickups of smartdarts, lets the latter soak in beakers (on the floor)
        • +
        • fixed rounding errors with smartdart mixes.
        • +
        • added modified smartdartgun icon.
        • +
        • 1. Kev asked that there were no antag datums used, so that's been changed. 2. Tricks can no longer turn someone into a dullahan, instead you have to spend candies to get that. I felt it was too mean to turn people into that, I didn't realise you couldn't revert it. 3. Barth will no longer as for impossible items. 4. Barth will no longer as for the same item multiple times. 5. Barth will now accept broader things, rather than asking for something, when meaning something specific. 6. Jacq will now no longer poof off the z level. 7. Jacq will (hopefully) stop spooking the AI by teleporting into there 8. Jacq will now try to teleport to a location with someone nearby. 9. Barth will tell you where Jacq is currently when you speak to him. 10. You can trade 2 candies for a Jacq Tracq (tm) 11. Jacq should stop getting mad and cover the station in gas when killed. 12. Fixed Jacq not singing (the link died). 13. Slightly changed wording so that people will hopefully get to know her. 14. Jacq no longer disappears when you're getting to know her.
        • +
        +

        Toriate updated:

        +
          +
        • All regular crates are now 3/4ths ToriCrates iamgeadd: Unused plastic crate sprite added
        • +
        • Blood freezer crates now have unique sprites.
        • +
        • RPD now has inhands
        • +
        • New sprites for RCDs and RPDs, inhands included
        • +
        • Updated the sprites of all the regular crates
        • +
        +

        Trilbyspaceclone updated:

        +
          +
        • cakes!
        • +
        • Made some sprites! -Love them really came out well
        • +
        • new economics
        • +
        • cargo and robotics relationships
        • +
        • unbalanced something
        • +
        • fixed a maybe oversight
        • +
        • Fun
        • +
        • costs of suit voucher
        • +
        • Unblances miner vender
        • +
        • spare cheaper brute kit
        • +
        • harm from hentie
        • +
        • rebalanced goliaths stun to be less auto death
        • +
        • Armor to blob shields
        • +
        • block weaken state to 70% from 75%
        • +
        • restores the deathriplys missing armor
        • +
        • new lockable colalr
        • +
        • armor
        • +
        • missing hopes and dreams
        • +
        • orgized the weapon file to be more cat brain friendly
        • +
        • This means sprite right?
        • +
        • Many engi flags on non-engi things
        • +
        • changed some code to be organized at a glance
        • +
        • 25% < --- 50% For NPC blocking bullshit ided: Yes
        • +
        • mag gun uses cells
        • +
        • kev things their to op
        • +
        • syndicate phobia
        • +
        • other phobia's
        • +
        • laser carbine
        • +
        • makes collars only locked via key
        • +
        • charging
        • +
        • Combat inducers for COMBAT!
        • +
        • made it look nice
        • +
        • golden swag boxes
        • +
        • Crafting suitcases
        • +
        • more bountys
        • +
        • Nitryl bounty
        • +
        • better stocks
        • +
        • more evil blood fluff text
        • +
        • Added more mime names
        • +
        • replaces a sink with a autolathen
        • +
        • 2 -> 3
        • +
        • MASON SUIT!
        • +
        • adds the sec jetpack to sec hardsuit storge
        • +
        • Added a few jet packs to the space queens men
        • +
        • volume of jet packs
        • +
        • Bad Idea
        • +
        • bio mass meat
        • +
        • more box options
        • +
        • a lack of replaceable boxes
        • +
        • clothing needing a emag
        • +
        • 4 - > 5
        • +
        • 5->6
        • +
        • 4tc - > 2tc
        • +
        • mulligan costs 4 - > 3
        • +
        • Tuberculosis 12tc - > 8tc
        • +
        • 15 - >10
        • +
        • both bags have the same name
        • +
        • 5 - > 2
        • +
        • 3 -> 1
        • +
        • 2 < - 4
        • +
        • 1->2 and ultra
        • +
        • shield + crafting
        • +
        • hierophant movment and melee attack
        • +
        • More plushies
        • +
        • attack verbs and descs
        • +
        • bone satchles
        • +
        • rebalanced stunslugs
        • +
        • colored boxes, and more types
        • +
        • harm and such
        • +
        • item classes
        • +
        • resonators being so shitty
        • +
        • Game braking bug critical: bug fix
        • +
        • items to syndie surgery bags
        • +
        • SNOW CONES
        • +
        • carts buy-able cargo
        • +
        • selling/time to craft
        • +
        • crafting problems, and red stamp exsplote
        • +
        • gives paper work sprites that are nicer
        • +
        • origami
        • +
        • gang tower shield
        • +
        • costs of boots
        • +
        • organ box
        • +
        • Medical breifcaseses
        • +
        • New cargo crate for tech-slugs!
        • +
        • Ammo to each fitting crate
        • +
        • Cat-code
        • +
        • fixed a few typos - Again my bad
        • +
        • fixed airless place
        • +
        • baklava
        • +
        • makes uplink kits more usefull for the risk
        • +
        • Changes some files to be better
        • +
        • As all things are not
        • +
        • fixing cat code that dosnt work, my bad
        • +
        • Arcades stealing from noodles
        • +
        • rapier
        • +
        • speedy quirk
        • +
        • Ironic
        • +
        • A bunch of minor issues with xenobiology are no more!
        • +
        • I didn't code it right it in the first place
        • +
        • new nodes
        • +
        • points and node gear
        • +
        • stuff n things
        • +
        • gear harness and a conflict merg
        • +
        • Nudity permits
        • +
        • nothing
        • +
        • Donner item
        • +
        • Luna's Gauntlets
        • +
        • rebalanced lingy dingy powery gamey
        • +
        • melee and block harm
        • +
        • sprites*
        • +
        • holster doing holster things
        • +
        • Donor item
        • +
        • Joy, Happiness, Honk
        • +
        • small mix up in terms
        • +
        • Promiscuous Organs crate, pills to lewd crate and testicles to maints
        • +
        • Made unholy water healtoxinlover
        • +
        • Zelus Oil, brass flasks
        • +
        • Added new chairs
        • +
        • Bugtesting zone upgrades for easy bug/game testing
        • +
        • more cargo to cargo
        • +
        • More loadout gear
        • +
        • Poojawa power creep
        • +
        • Not my work not my credit
        • +
        • Emitter gun
        • +
        • suit storage nulling anti magic item protection
        • +
        • rebalanced steal goals restrictions
        • +
        • fixed a few misleading goals
        • +
        • ports a fix
        • +
        • oversight in benos
        • +
        • QM rooms not getting Key Aunths
        • +
        • new books/cooking
        • +
        • less bad wording in slime
        • +
        • strawbarries and such
        • +
        • amazing things like tea of catnip, catnip and plant
        • +
        • glue uplinks
        • +
        • RPDs to drones
        • +
        • Armor and such
        • +
        • flavor
        • +
        • maybe a runtime
        • +
        • chameloen clothing
        • +
        • tons of peach themed items
        • +
        • caje
        • +
        • New book - Unused
        • +
        • organized files
        • +
        • redid brass tools to look better*
        • +
        • /cursed from a item path
        • +
        • Almost all clothing and most weaponds can be sold for pocket change
        • +
        • Cargo costs of packets and selling
        • +
        • Lowered mat selling as well as most if not all bountys
        • +
        • Adds more files for easy finding/adding in packs
        • +
        • oops not being blacklisted
        • +
        • removes some cit-modular things
        • +
        • Missing sprites with bad ones
        • +
        • emag charge amount
        • +
        • Reebe QoL aka creep in gear
        • +
        • ???
        • +
        • HEY MADE THE REEBEEE WAY SMALLER - Making it less lagging hopefully
        • +
        • Surgerys and spays in bags
        • +
        • earthbloods stam regen
        • +
        • Red to Blue/Black crosses as questioned by Bhijn
        • +
        • clean bot not cleaning basic cleanables
        • +
        • new traitor bundle
        • +
        • trash
        • +
        • eye bleed :add: misstakes
        • +
        • Removed old things!
        • +
        • UI memes
        • +
        • Blue space blood bag
        • +
        • blood costs
        • +
        • Beebal and Honeybalm plants
        • +
        • Costs of crates and paperwork
        • +
        • Adds 2 more crates hacked only
        • +
        • Added two seed packets of cotten to ash walkers base
        • +
        +

        Tupinambis updated:

        +
          +
        • Changes large parts of the nuclear operative base, including the addition of a new barracks where the ops spawn, a personal bedroom for the leader, the rearrangement of numerous rooms, some added fluff, a slightly more roomy bar, a larger hanger, a kitchen, and various other small changes to make the base feel just a bit more alive. This was achieved by completely redoing the base from scratch so there was room to work with, as a result potential bugs could crop, please do report them.
        • +
        • The drop pod chamber was airless. This seems like an oversight, and has been filled with air.
        • +
        • Cryo Sleepers have been added to Perma on all four maps in rotation. the bathroom windoor and window have switched places to accommodate this change.
        • +
        • You can now choose the pre-exisiting "loader" sprite as an appearance for your engineering borg.
        • +
        • A vast majority of references to humans within ion laws have been replaced with crew. AI modules have received similar treatment
        • +
        • Adds a syndicate themed emergency shuttle that costs 20000 credits, and can ONLY be purchased when the communications console is emagged. This shuttle features a fully stocked medbay with self serve sleepers, plenty of room that can fit highpop, a fully featured bridge, ballistic auto turrets, and an armory, EVA prep room, and bar, all of which are only accessible by either an agent ID or through hacking. +-EVA prep features 2 syndicate hardsuits and 3 syndicate softsuits. -Armory features 5 stetchkins with spare ammo, and 2 riot c-20r's. +![image](https://user-images.githubusercontent.com/42078130/48306551-0b786380-e500-11e8-821a-e59ac4eee0ea.png)
        • +
        • Lone operatives no longer spawn with a syndicate hardsuit and a bulldog. They instead spawn with a black and red EVA suit and an extra 15 TC (40 in total) ![image](https://user-images.githubusercontent.com/42078130/48308065-c44e9a80-e520-11e8-8d60-cec8ff23d61d.png)
        • +
        • The tesla engine has been replaced with a supermatter engine, and pubby engineering has been redesigned to accommodate this change.
        • +
        • The tesla engine has been completely removed along with any related components
        • +
        • RD and R&D vents are now actually connected to the air distribution.
        • +
        • New engineering hivebot. Has a bit more health but otherwise aesthetic.
        • +
        • Oldstation no longer has an excessive amounts of hivebots within it, however the bots that remain are individually a larger threat.
        • +
        • Hivebots are now more robust, with a higher melee damage output and health.
        • +
        • Remove this ruin from the blacklist or this PR is pointless.
        • +
        • the air injectors for the SM engine waste and for toxins waste should now receive power
        • +
        • Adds a mixed clothing closet to Deltastation Dorms.
        • +
        • Adds a bottle of unstable mutagen to Botany, on account of its distance from Chemistry.
        • +
        • Omegastation should no longer have any turf with missing textures, as those spots have been replaced with playing covered in a sandy turf decal.
        • +
        • Removed all living eggs from the xeno ruin because people self antag. Honk.
        • +
        • Adds a new security level between Blue and Red (Amber). The shuttle call time at this level is 8 minutes.
        • +
        • Blue security level now has a shuttle call time of 12 minutes.
        • +
        • The security level increase/decrease texts have been modified to accommodate the change.
        • +
        • Adds a code Amber sprite for the fire alarms
        • +
        • Removed the plushes from the toy crate, giving them their own.
        • +
        • Plushes are now less likely to spawn out of arcades
        • +
        • Removes a moth plush from the game.
        • +
        • added a small fire delay (3 ticks) to automatic shotguns
        • +
        • Reduced buckshot brute damage by 20%. (12.5 -> 10 brute per pellet) (75 -> 60 brute at close range)
        • +
        • Reduced rubbershot stamina damage by 40% (25 -> 15 stamina per pellet) (150 -> 90 stamina at close range)
        • +
        • Reduced beanbag stamina damage by 12.5% (80 -> 70 stamina per shot)
        • +
        • Engivend RCDs now vend upgraded RCDs
        • +
        • Beautified and stylized the cyborg HUD sprites, animated and cleaned up some of the old, modernized APC hacking and Doomsday sprites,
        • +
        • moved cyborg language select above the radio icon, instead of above the picture icon.
        • +
        +

        Twaticus & Poojawa updated:

        +
          +
        • Added new carpets from TauCetiStation!
        • +
        • More Liquid carpet chemicals, mix carpet with certain reagents to get different colors!
        • +
        • Tablets have a better means of being assembled codewise. nothing's different on player end.
        • +
        +

        UntoldTactics updated:

        +
          +
        • Rewords the click here prompt given when an attempted conversion is done on an offer rune (for blood cult)
        • +
        +

        UristMcAstronaut updated:

        +
          +
        • allows a pai to activate its holoform while in a pai connector without getting derped.
        • +
        +

        Useroth updated:

        +
          +
        • the collars are now aware of their proper overlay sprites
        • +
        • The space hotel dorms are now properly boltable with the buttons inside.
        • +
        • Makes the booze-o-mat hacked by default. Alternative to https://github.com/Citadel-Station-13/Citadel-Station-13/pull/8350.
        • +
        • After the PR which raised the ammo capacity of said magazines, due to the code, they ended up with an invalid icon state. Fixed through changing the icon state name in the icon file.
        • +
        • Taeclowndo shoes which grant the four following abilities: - Conjuring a cream pie right into their hand. Every three seconds. - Making a banana peel appear out of thin air at the tile of the clown's choice. Every ten seconds. - Mega HoNk. A touch-ranged, very small AOE ability, with effect equal to being honked by a Honkerblast on a clown mech, with the effects halved for anyone who isn't its direct target. Every ten seconds. - Bluespace Banana Pie. You don't throw this one... not right away at least. This baby can fit an entire body inside. Good for disposal of evidence. 25 second-long action, 45 second cooldown. Also produces a "[victim's name] cream pie". The body drops out of the pie if you splat it somewhere or destroy the pie. If you eat it, it will chestburst out of you a'la monkey cube. +It's a 14 TC item for traitor clowns and a 12 TC item for clown-ops.
        • +
        • The tentacle now directly puts the item in your hands, instead of toggling your throwing and tossing it at you. Tentacles suffer from ranged inaccuracies as if they were guns, I think it's enough of an inconvenience.
        • +
        • Makes the netting much less clunky. If there's only one target you can net while you press the button, it will just net that target instead of bringing up a list of mobs.
        • +
        • Energy nets now revive and fully heal capturees (even dead ones, after calculating points). If someone's got a scan and wants to get cloned, they can always kill themselves still.
        • +
        • Capture points are added on capture, rather than round-end, so it no longer matters whether your captures kill themselves in the holding facility or not.
        • +
        • Makes the nets a bit more sturdy. (previously it took mere two welder hits to break one)
        • +
        • Makes stungloves actually stun people (currently comparably with stunbatons, adjustable). Because electrocute_act(25, H) did fuck all, stunwise, and on top of that, people in insulated gloves were completely unaffected.
        • +
        • Reduced the stunglove electrocute_act value to 15 due to above. Could possibly be lowered further.
        • +
        +

        Weblure updated:

        +
          +
        • Added the relevant Beepsky animations from TG's aibots.dmi file to Cit's aibots.dmi file.
        • +
        +

        WhiteHusky updated:

        +
          +
        • Sleepers now show blood level and type.
        • +
        • Changed the styling of arousal messages to use pink-ish colors.
        • +
        • The orgasm moodlet message new-lines properly.
        • +
        • Flavor text with special characters will not get partially unescaped.
        • +
        • Canceling when setting flavor text does not clear it anymore.
        • +
        • Checking yourself shouldn't freeze the client anymore.
        • +
        +

        XDTM updated:

        +
          +
        • Added the experimental dissection surgery, which can be performed once per corpse to gain techweb points.
        • +
        • Rarer specimens are more valuable, so xenos and rare species are more efficient subjects.
        • +
        • Added two new surgery procedures, under the Experimental Surgery techweb node.
        • +
        • Ligament Hook makes it so you can attach limbs manually (like skeletons) but makes dismemberment more likely as well.
        • +
        • Ligament Reinforcement prevents dismemberment, but makes limbs easier to disable through damage.
        • +
        • Golem limbs can now be disabled, although they are still undismemberable.
        • +
        +

        YPOQ updated:

        +
          +
        • Stealth implants work again
        • +
        +

        Yakumo Chen updated:

        +
          +
        • Made stealth implant boxes flimsier
        • +
        • Autocloning now requires tier 4 parts
        • +
        • Removes autoscan
        • +
        • Scanning people now requires someone to operate the cloning computer regardless of part level.
        • +
        • removed antimagic component from holymelon
        • +
        +

        YakumoChen updated:

        +
          +
        • AEGs brought more in line with current radiation system. Try not to get EMP'd.
        • +
        • Jetpacks no longer last twice as long between air refills.
        • +
        • Reverted laser miniguns.
        • +
        • Adds beanbag slugs to the sec protolathe at round start
        • +
        • Brings shotgun ammo availability back in like between seclathe and autolathe.
        • +
        +

        Zargserg updated:

        +
          +
        • Lungs maximum toxin threshold is 0.5% of the atmosphere.
        • +
        • Permanently contaminated atmosphere does not murder crew anymore.
        • +
        +

        ZeroNetAlpha updated:

        +
          +
        • Cleans up autoylathe code and brings it back in line with the regular autolathe.
        • +
        • Fixes autoylathe interface not updating propperly.
        • +
        • Silicons are now consumable by scrub pups.
        • +
        +

        actioninja updated:

        +
          +
        • APC UI autoupdates correctly
        • +
        +

        bluespace bio bags updated:

        +
          +
        • Added bluespace bio bags and put it in the tech web, in the node applied bluespace
        • +
        • added a crappy icon for bluespace bio bags
        • +
        +

        chef updated:

        +
          +
        • Added main hallway approach to monastery
        • +
        • Added Maintenance hallway approach, with some maint loot
        • +
        • moved the docking arm for the white ship
        • +
        • changed placement of some grills and windows
        • +
        +

        coiax updated:

        +
          +
        • When the nuclear disk stays stationary long enough to trigger an increase for the lone op event chance, admins will be notified every five increments.
        • +
        +

        dapnee updated:

        +
          +
        • Plasmaglass tables, spears, tiny plasmaglass shards
        • +
        • Plasmaglass structures now drop plasmaglass shards instead of nothing
        • +
        • Trim lines!
        • +
        • You can now make plasmaglass tables again.
        • +
        +

        deathride58 updated:

        +
          +
        • When a gamemode fails pre_setup, it will now send a message in admin IRC and in ingame admin chat, instead of only being viewable in the logs.
        • +
        • Portal guns now spawn without firing pins.
        • +
        • Reduced the default/baseline nanite pool amount from 100 nanites to 25 nanites, and reduced the maximum nanite amount from 500 nanites to 125 nanites. The safety threshold was reduced from 50 nanites to 12 nanites.
        • +
        • Most of Lavaland's mobs are now on crack.
        • +
        • Blood drunk miners now move once every two ticks, rather than once every three ticks.
        • +
        • Bubblegum now has a maximum movement speed of once every three ticks. Buffed from the original value of once per 5 ticks.
        • +
        • The minimum time for the Colossus to attack again after firing a random shot is two deciseconds, Sped up from the original value of three seconds. The minimum time for the Colossus to attack again after performing a blast is now one second, with the original value being two seconds. The minimum time for it to attack again after performing its alternating shot pattern is now two seconds, original value being four seconds.
        • +
        • Ashdrakes now move once every five ticks, rather than once every ten ticks.
        • +
        • Heirophant chasers now move once every two ticks rather than three ticks by default, and the chaser cooldown has been reduced from 10 seconds to 5 seconds. The cooldown for the Heirophant's major attacks has also been sped up to 4 seconds from the original value of 6 seconds.
        • +
        • The Legion (megafauna) now moves at two ticks per second rather than three ticks. It additionally now actually moves faster while charging. The cooldown timer for it's special attacks has been reduced from 2 seconds to 1 second. Additionally, The Legion's view range has been decreased from 13 tiles to 10 tiles.
        • +
        • All megafauna now have a default view range of 4 tiles, decreased from the original of 5 tiles, and an aggro'd view range of 15 tiles, decreased from the original of 18
        • +
        • Goliaths now move once every ten ticks, sped up from the original value of 40(!!!) ticks. Additionally, their cooldown for their tentacles has been reduced from 12 seconds to 6 seconds. To compensate, their cooldown now only decreases by 5 deciseconds every time they're attacked, rather than 10 deciseconds, their melee damage has been reduced to 18 per hit from 25 per hit, and their vision range has been decreased from 5 tiles unaggroed, 9 tiles when aggroed, to 4 tiles and 7 tiles respectively. Ancient goliaths have a default attack cooldown of 8 seconds, sped up from the original value of 12 seconds.
        • +
        • Legion (the common mob) now has a cooldown of 1.5 seconds on their skull attack, sped up from the original value of 2 seconds. Additionally, their view range has been decreased from 5 tiles, 9 tiles when aggroed, to 4 tiles, 7 tiles when aggroed.
        • +
        • Stamina no longer regenerates at hyper speeds.
        • +
        • To accommodate for upstream's stamina changes, knockdown() now applies staminaloss only to the chest.
        • +
        • adjuststaminaloss() now has a new argument that allows you to specify a zone to apply staminaloss to. This defaults to the chest
        • +
        • apply_damage() is now capable of healing carbon mobs and human mobs.
        • +
        • Since the head has the same exact effects as the chest when disabled, and doesn't really make much sense to be affected by stamina, the head no longer has stamina.
        • +
        • The chest now has a stamina cap of 200 stamina due to the above.
        • +
        • Footsteps now sound mostly the same as they did before the hard sync
        • +
        • Jukeboxes now properly remove themselves from the active jukebox list when destroyed
        • +
        • Server operators and badmins can now make the server play like TG by toggling the stamina buffer on/off using the DISABLE_STAMBUFFER config option.
        • +
        • Airlock wires now work as they did prior to the hard sync
        • +
        • The thing you're currently grabbing is now taken into account when left-click disarming. Things you have grabbed now roughly have a 45% chance to be disarmed.
        • +
        • Disarm push rolls are now determined by the target's staminaloss rather than a flat number.
        • +
        • When you're in combat mode, pushing someone who isn't in combat mode is a guaranteed knockdown. Hard counter to stam regen squeezing in melee combat.
        • +
        • Failed disarm push attempts now deals light staminaloss to the target so long as both the attacker and target are standing. The total stamloss dealt to the target is random, clocking in at a very inefficient 1-5 stamloss per unsuccessful push attempt.
        • +
        • Disarm pushes now play the thudswoosh sound regardless if they're successful or not. Had it not been for copyright, I would've used L4D's melee sound.
        • +
        • Disarm push attempts are now logged
        • +
        • Autostand no longer makes you invulnerable to dropping items when being knocked down with a force greater than 80
        • +
        • You can no longer abuse an href exploit to return from the labor camp before obtaining enough points to satisfy your point goal.
        • +
        • Norko's donor item is now listed in the right category
        • +
        • The medihound sleeper now has a non-vore variant. This will be used by default. The old voracious variant will only appear if both the person being sleeper'd and the medihound have the voracious hound sleepers pref enabled. Sprites by Toriate
        • +
        • "Allow medihound sleeper" is now labelled "Voracious medihound sleepers", and is now off by default
        • +
        • AOOC no longer prints to players in the lobby
        • +
        • Human tails and human ears now save again. Humans now use mam_tail and mam_ears for their snowflake bits instead of tg's equivalent, just as they did prior to human tail and ear saving breaking
        • +
        • Disarm pushes no longer deal staminaloss to resting targets
        • +
        • You can no longer force a hard stamcritted spaceman to stand by clicking them with help intent. Get more creative if you want to torture someone that's in hard stamcrit.
        • +
        • The revolution gamemode now waits until the 20 minute mark before checking for win conditions.
        • +
        • You can no longer resist/move out of grabs while you're resting. Disarming your way out still works, though.
        • +
        • Stamina damage now has diminishing returns on people who are in hard staminacrit with the addition of a new multiplier. When you take staminaloss while in hard staminacrit, you'll be under the effects of the new multiplier, which reduces the amount of staminaloss you take from all sources of staminaloss. The diminishing returns multiplier will steadily return to 1 once you're out of staminacrit.
        • +
        • You can now scramble while resting. You can do this by dragging your spaceman onto an adjacent turf. This works even if you're in staminacrit, but the timer depends entirely on your staminaloss.
        • +
        • Fully augged cyborg people now heal stamina damage properly.
        • +
        • Job EXP is now tracked properly for all roles.
        • +
        • Nightmares and shadowpeople have had their light threshold for being considered in darkness reduced. Nightmares can no longer stand unharmed next to a light fixture during a nightshift 100% unharmed. The threshold is high enough so that APC lights on their own won't harm a nightmare, but being on the edge of a light source will.
        • +
        • The detective revolver's .38 bullets are now non-lethal again, but now require 3 shots to hard stamcrit
        • +
        • The current lethal variant of the .38 bullets can still be printed at sec protolathes.
        • +
        • You can now access ghost roles from the latejoin menu.
        • +
        • Eyeblur now scales depending on how much actual eyeblur you actually have.
        • +
        • Ebows now induce 50 drowsiness on whatever they hit.
        • +
        • Telepads have been buffed across the board. T1 parts on a launchpad still grants you a range of 15 tiles, but T4 parts now grant you a pretty large 60 tile range (up from their original 18 tile range). Briefcase launchpads were also buffed, they now have a range of 20 tiles, up from their previous laughable 8 tiles.
        • +
        • The grace period for the revolution win condition check has been reduced from 20 minutes to 10 minutes. You don't need to wait nearly as long for the round to end if no heads join in.
        • +
        • You can now select plural and neuter as your gender. They're labelled "non-binary" and "object" in the character customization menu, respectively.
        • +
        • A lot more light sources now use the same nonbinary colored lighting philosophies as flashlights and light fixtures!
        • +
        • Flashlights mounted to guns and helmets now retain the same color and power as their original light. Lavaland's caves will reflect a fluorescent blue as you shine your KA around, and sec's helmets are now capable of illuminating maint in that fancy fluorescent blue.
        • +
        • Cameras now shine a fluorescent blue when lit up by an AI
        • +
        • Glowing goo now actually glows green.
        • +
        • Candles had their power reduced from 1 to 0.8.
        • +
        • Lighters now shine a little further, and are now properly colored.
        • +
        • PDAs now shine an incandescent yellow to match their sprite.
        • +
        • Welding tools now shine an appropriate color
        • +
        • Hardhats now shine an incandescent yellow.
        • +
        • Plasmaman helmets now shine an incandescent yellow.
        • +
        • Microwaves no longer overpower literally every single light in the game, instead having a power of 0.9.
        • +
        • Borgs now have incandescent yellow lights to match their sprites
        • +
        • Bots now shine a fluorescent blue light
        • +
        • Airlock light overlays are now on the above lighting layer. This means airlock lights can actually be seen in the dark now.
        • +
        • The mob spawners list no longer leaves null entries behind when a spawner has a job description defined. The latejoin menu will no longer show ghost roles that are filled, and the spawners menu actually works again.
        • +
        • The voting system now actually tracks who voted for what. This means it's now possible to change your vote, and it's possible to see what you voted for.
        • +
        • Using help intent on someone that's in hard stamcrit will now make them heal 15 stamloss.
        • +
        • Auto fit viewport is now enabled by default for new players. One less question off the FAQ
        • +
        • The Khajiit favorite, Skooma, was added as a chemistry recipe that can be produced with cooperation between chemistry and either cargo or service. If you want to spoil the recipe for yourself, take a look at the PR for it!
        • +
        • When the shuttle leaves for centcom, a vote will be started to select the next map instead of the map being randomly chosen via biased voting methods
        • +
        • If a server operator wishes to re-enable the biased TG preference voting system, you can do so by toggling the TGSTYLE_MAPROTATION config flag on in the config.txt. Keep in mind that doing so will bring you great misfortune.
        • +
        • Cacti in lavaland now have 6u of vitfro instead of just 4u. This lessens the gap between cacti and first aid kits, the third rarest and second rarest readily available healing methods for ashwalkers, respectively.
        • +
        • the "genitals use skintone" option now appears in the character appearance menu when appropriate again.
        • +
        • Clicking your stamina bar will now show your exact stamina along with info regarding your stamina buffer
        • +
        • The bug where ghost role spawners leave null entries in glob.mob_spawners has actually been fixed
        • +
        • The Kitchen Gun (TM) is no longer invisible.
        • +
        • The majority of cult spells no longer have exclamation marks at the end of their invocations. This means they will no longer be bound to the rules of shouting. Which means sec officers will no longer be able to hear culties sacrificing the captain from the complete opposite side of the maintenance tunnel the sacrifice is happening in. However, things like EMP pulses and runeless teleportation still have the effect due to their inherent loud nature.
        • +
        • The stun blood spell now instantly causes hard stamcrit. However, to offset this, it now also only has one charge and has a higher cost.
        • +
        • The Gloves of the North Star now restore 2/3 of the stamina used up by punches when harm intent punching. With aggressive play and good stamina buffer management, this makes it entirely plausible to roughly double your stamina regeneration per mob life process tick.
        • +
        • Revs can no longer remember the name of the person who flashed them when deconverted. This brings it in-line with the other conversion antag deconversions.
        • +
        • The bug where you can sometimes get permanently stuck in stamcrit should HOPEFULLY be fixed. I'm unable to reproduce the bug myself, but let's hope.
        • +
        • The night vision trait now grants you darksight for an entire 1:1 screen, but the alpha of the lighting plane with the trait has been increased from 245 to 250 to balance it out
        • +
        • It's now actually possible to click the stamina hud button
        • +
        • The stamina hud button now displays your stamina buffer correctly
        • +
        • Bone spears now have a reach of 2 tiles.
        • +
        • You can no longer phase through solid objects via scrambling
        • +
        • The syndicate mask now works properly as intended.
        • +
        • Stamina is no longer affected by health at all.
        • +
        • You can now right-click yourself in help intent in combat mode to instantly get up from resting. This will cost stamina equal to your entire stamina buffer. Manage your stamina well, and you'll be able to shrug off a single stray golden bolt
        • +
        • The new player panel now displays your currently selected character's name
        • +
        • Flashes no longer knockdown. Instead, they deal eyeblur and have increased confusion
        • +
        • The server's tagline is now a config option. People can now stop confusing us with BR cit
        • +
        • Attack animations will now rotate your character slightly, similar to Goon.
        • +
        • Throwing items will now perform the attack animation and play a sound
        • +
        • flashlights will now make sounds when toggled on/off
        • +
        • Things in disposals will now emit sounds every single time they hit corners. This increases immersion.
        • +
        • Air alarms now actually emit the proper light color when their status is okay.
        • +
        • Backpacks and other storage items will now jiggle and squish when you interact with them, similar to the animations seen on Goon.
        • +
        • Mops no longer have a delay on their cleaning, making them an actually viable alternative to all of the janitor's other cleaning tools
        • +
        • To balance this, mops now take stamina to clean tiles. Standard mops take 5 stamina to use, while advanced mops take 2 stamina.
        • +
        • Oh and also mops make fancy new sounds and play animations when used now
        • +
        • Pump-action shotguns now take 2 stamina per pump instead of 5 stamina per pump. This also applies to bolt-action rifles, as bolt racking counts as pumping.
        • +
        • Pickpocketing items will now place them in your hands if possible
        • +
        • Combat mode is now displayed in examine text
        • +
        • Combat mode now makes a visible message when enabled if you haven't touched your combat mode button in the last ten seconds. It's done this way to avoid chat spam from those who know how to pull off stam regen squeezing.
        • +
        • All knockdown sources will now force people to be dismounted from ridden vehicles.
        • +
        • When an item is thrown, it will now be rotated and displaced.
        • +
        • Shards of glass will now be rotated when spawned.
        • +
        • Bullet casings will now be rotated when they're ejected from a gun.
        • +
        • Bottles now have random rotations and pixel offsets when smashed via throwing.
        • +
        • Picking up an item will now reset its rotation.
        • +
        • Glasses thrown onto tables by bartenders will now have their rotation reset.
        • +
        • Slime speed potions can now only increase the speed of vehicles to be on par with sprinting speed. They can no longer make a scooter roll around ten times faster than a speeding blue hedgehog.
        • +
        • Changelings will no longer recieve team objectives
        • +
        • Changelings no longer start off with hivemind communication as an innate ability. Hivemind communication now requires 1 dna point, on par with syndicate encryption keys, which are 2 TC.
        • +
        • Hivemind link now relies on hivemind communication just like the hivemind download/upload abilities.
        • +
        • It's now only possible to zoom a gun if it's in one of your hands
        • +
        • Mobs without clients no longer cause runtimes when their eyeblur updates
        • +
        • Blood tests have been added. If a changeling has a sufficient number of loud abilities, you will be able to test their blood by heating up a sample of it. However, if the changeling has a large amount of loud abilities, attempts to test their blood will have explosive results.
        • +
        • Changelings now make a very obvious noise when readapting. This is to prevent the cheese strat of simply readapting when you get caught to avoid detection.
        • +
        • The blood splatter effect that happens when you get attacked will now always make you lose blood depending on the damage you've taken. The effect now also scales with item damage, meaning tiny little papercuts will no longer be able to cause a massive blood splatter.
        • +
        • The blood reagent will now cover items and spacemen in blood when applied to objects and mobs.
        • +
        • Helmets, masks, and neck items are all now valid targets to get splattered when you get covered in blood. Groovy.
        • +
        • The temperature notification will now take into consideration both the ambient temperature and your body temperature, increasing the responsiveness of the temperature notification and making it much more realistic.
        • +
        • Shuttle transit borders are now 10 tiles wide instead of 8 tiles, hopefully repairing the immersions that get shattered by the ability to see normal space where the transit areas end.
        • +
        • Instead of transit turfs simply teleporting things to space, transit is now handled in a somewhat realistic manner. Transit turfs now act like normal space turfs, though exiting the transit area or being present in the transit area after the shuttle moves out of transit will teleport you to space and throw you in the direction the shuttle was moving in.
        • +
        • Reservation areas are now able to designate a border turf.
        • +
        • The sprint hotkey will no longer cause you to get permanently stuck sprinting if the server lags. Just tap shift again if you get stuck
        • +
        • You can now hear sounds in the real world while inside of a VR sleeper.
        • +
        • You can now make nameless characters. Nameless characters will spawn in with their name set as their job title followed by a unique five digit number. The "Name" option in the character setup menu will be replaced with a "Default designation" option for nameless characters, and the default designation will be used in place of a job title for assistants and other jobs that don't require dress codes.
        • +
        • The out-of-game round end notification is now a little more verbose. It'll now display the round type, end result of the round, and the survival rate.
        • +
        • Xenos can no longer strip items off of people to be capable of using any item in the game.
        • +
        • also, items from pockets get placed into your hands properly now
        • +
        • A mob's last words are now properly tracked and recorded on death. The first death of the round will now actually display the victim's last words on the round end screen.
        • +
        • Divine shenanigans can no longer result in someone becoming immune to staminaloss
        • +
        • Fixed body_markings in bodyparts being assigned as a list when in reality, it's a string and literally everything expects it to be a string and uses it as a string. This should mean that markings no longer have completely fucked up caches for character preview and other things.
        • +
        • Since apparently the game is literally unplayable if items are not in the exact center of a turf, the maximum pixel variance of thrown objects has been reduced by four pixels to make things a smidge more clearer for those that dont know what a turf is.
        • +
        • Bartender glasses should HOPEFULLY no longer be tilted when landing on a table. Why the fuck is after_throw called via a timer.
        • +
        • Changeling screeches now have their own unique sounds, and are much easier to recognize.
        • +
        • Most synthetic emotes are now available to humans. *ping
        • +
        • You can now merp
        • +
        • The TEG will now only produce a meaningful amount of power if the hot pipe contains gas that's actively combusting
        • +
        • Added the "add PB bypass" and "revoke PB bypass" verbs, which allow admins to let a specific ckey to bypass the panic bunker for the rest of the round
        • +
        • Jogging is no longer treated exactly the same as sprinting for water slips. When you're jogging, you will only slip on water if you have more than 20% staminaloss.
        • +
        • The atmospherics turf subsystem now has double the wait time, which should free up server processing power for other tasks.
        • +
        • The IRC now actually displays the actual survival rate
        • +
        • Bloodcult conversions are now consensual. Convertees are given a ten second timer to accept or wait out. This should drastically improve the quality of those that get converted into bloodcult.
        • +
        • All sacrifices now count as a third of a cultist for the end-game narsie summon.
        • +
        • Nameless captains will no longer proc a "Captain Captain on deck!" message. Instead, it'll be a much more boring but much more sensical "Captain on deck!" message.
        • +
        • Transit turfs on the centcom z-level now function properly again at keeping mobs within the areas defined by their boundaries.
        • +
        • The title screen is also positioned correctly again.
        • +
        • Ghost role eligibility for both event and spawner ghost roles is now affected by DNR status. If you suicide, ghost, or cryo out, you will be unable to qualify for any ghost roles
        • +
        • Cryo now applies DNR status no matter how long the round has been going on
        • +
        • Suicide is now properly admin logged as it is supposed to be. Ghosting while alive is now also logged.
        • +
        • Sparks and igniters will now actually heat areas rather than cooling them, as was intended.
        • +
        • To alleviate some potential complaints, RPDs now have a cooldown before they can create sparks, and both RPDs and emitters produce less sparks.
        • +
        • Conversion runes will now mute the victim temporarily while they're deciding whether to convert or be sacrificed.
        • +
        • Conversion runes no longer require a third cultist to sacrifice if the victim refuses conversion
        • +
        • Staminaloss targeted at the head now properly redirects to the chest.
        • +
        • Sprinting no longer takes stam when you're being pulled or when you're in zero gravity. Other sources of involuntary movement are not affected.
        • +
        • In an attempt to improve performance during highpop, mouse movements will now only call onmousemove() while a user is in combat mode
        • +
        • Ballistic projectiles are now the only projectiles capable of emitting dinks.
        • +
        • Panic bunker toggling and bypassing is now logged in admin IRC
        • +
        • OOC and LOOC now use separate toggles. You can now use LOOC while OOC is globally toggled off, and admins now have the option to toggle LOOC off separately from OOC
        • +
        • also revamped and reorganized relevant looc adminverb code
        • +
        • The endgame narsie summon rune no longer requires 24 total sacrifices, and will now properly account for cultists that surround it
        • +
        • The succumb verb is now available in the IC tab
        • +
        • Lighting now uses a linear algorithm to calculate falloff instead of an inverse-square algorithm.
        • +
        • get_hearers_in_view() now actually caches the results of view() instead of calling view() twice
        • +
        • Goonchat's JS no longer contains checks related to a completely unused message filtering function, which should improve clientside performance quite a bit
        • +
        • The storage hud now properly takes into account the viewer's view size, meaning storage items with a large amount of storage slots will properly stretch across the bottom of the screen when running in widescreen.
        • +
        • Action buttons are now able to fill the entire screen in widescreen and other weird view sizes.
        • +
        • Omegastation's job changes will no longer be included at compile time.
        • +
        • The client update portion of /mob/Login() now double-checks to make sure client.player_details exists and is of the proper type. This should hopefully fix the "cannot read null.player_details" runtimes that can spontaneously cause clients to get kicked out and forced back to the lobby.
        • +
        • You can now quickly use unequipped items on objects by simply click-dragging the item onto the object with an empty active hand. Doing so will place the item in your hand, and then use that item on the object.
        • +
        • In an attempt to improve the performance of /mob/Stat(), various time-related procs now use defines instead of being procs that call procs that call other procs that call even more procs.
        • +
        • If a living mob has vore initialized but doesnt have voreprefs initialized, then client login will force voreprefs to load.
        • +
        • Hopefully fixed paper crash 2: electric boogaloo
        • +
        • Added unomos, which is basically listmos except gas mixtures only use one single list for handling their gasses. This is a significant performance improvement that also offers a mild memory improvement under normal circumstances.
        • +
        • Locomotion circuits are now restricted to jogging speed
        • +
        • MMI circuits and pAI circuits both now have 60 complexity, up from their original 29.
        • +
        • Biogenerators now have a sane limit for production
        • +
        • Fixed a fairly huge server crash exploit
        • +
        • Shield blobs no longer become completely invulnerable to all forms of damage after reaching a """weakened""" state
        • +
        • Taken care of what appeared to have been an oversight where shield blobs don't recover their armor after becoming weakened.
        • +
        • Nerfed concatenators by limiting the amount of characters they're able to output
        • +
        • The timer for stripping an item off of a spaceman is no longer interrupted by your active held item changing. This means you no longer have to worry about filling both of your hands when you're stripping items off of someone.
        • +
        • Ported the zulie cloak and blackredgold coat donor items from RP.
        • +
        • Normal mops now only use 2 stamina to mop a tile, nerfed from their previous value of 5 stamina per tile mopped.
        • +
        • Advanced mops now only use 1 stamina to mop turfs, from their former value of 2 stam.
        • +
        • The femur breaker now uses `*scream` instead of forced speech. This means that the femur breaker will no longer spam deadchat with "AAAAAAAAAHHHHHHHHHH!!"
        • +
        • The femur breaker will now guarantee that the victim falls into crit, which will make it harder to perform torture scenes with it since the victim can just succumb.
        • +
        • Fixed another runtime in warp whistles.
        • +
        • Spamming forged packets no longer crashes the server.
        • +
        • Things that access job_preferences now explicitly access keys, which means it no longer attempts to access invalid indices and runtimes as a result.
        • +
        • The taser's electrode has been reworked. Instead of being a strong knockdown that deals a heavy amount of stamloss, it now causes a weak knockdown, applies a debilitating status effect for 5 seconds, and deals 35 stamloss on hit up to a maximum 50 total stamloss.
        • +
        • Roundstart turrets now have a nonlethal projectile that gets used when they're set to stun and the target is resting
        • +
        • Hybrid tasers now have disablers set as their default mode.
        • +
        • There is now a 1% chance for the station's announcer to be the medibot voice instead of the classic TG announcer.
        • +
        • The map config system has been expanded to allow mappers to specify the map type, announcer voice, ingame year, and how often a given map can be voted at roundend.
        • +
        • The map vote system now takes into account map playercount limits properly.
        • +
        • Examining a spaceman, and other things that use get_examine_string(), will now actually properly show when an item is blood-stained.
        • +
        • Plasmaman tongues no longer have a maxHealth of "alien", and no longer cause the organ's on_life to always runtime.
        • +
        • Shooting a simplemob no longer causes runtimes prior to the blood effect being created.
        • +
        • Removing a filter from an object that lacks filters no longer causes runtimes.
        • +
        +

        deathride58 (Original PR by actioninja) updated:

        +
          +
        • Disarm pushing (combat mode right click in disarm intent) will now actually push mobs away. Knockdowns from disarm pushing are no longer rng based on the target's staminaloss. Knockdowns from disarm pushing now only happen when you push someone into another mob, a table, or a wall. Pushes will now also temporarily stop targets from using firearms, and will disarm the firearm if performed a second time. Pushes still deal staminaloss to standing targets, and won't deal a single ounce of staminaloss to resting targets.
        • +
        • You can no longer displace mobs that are in harm intent by simply walking into them. Mobs that aren't in help intent have to be disarm pushed to actually be moved.
        • +
        +

        dtfe3 updated:

        +
          +
        • Increased music maxlines from 300 to 600
        • +
        • Made it so any oxygen tank can be used instead of only red ones.
        • +
        • Watcher wing Trophy's effect lasts 1 second instead of 0.5
        • +
        • Pink Panties
        • +
        • Twintails
        • +
        • Schoolgirl outfits for the loadout menu!
        • +
        • Now the fox ears are located in front of hair meaning they now behave much like cat ears, that being they are on-top of the hair layer.
        • +
        +

        izzyinbox updated:

        +
          +
        • adds VoG orgasm command using words "orgasm", "cum", "squirt", "climax"
        • +
        • adds VoG dab command using words "dab" and "mood"
        • +
        • Generic dog body marking sprite
        • +
        • colormatrix dog sprites
        • +
        • lowered the player age for command jobs to 1/3 of their previous setting
        • +
        • *bark emote
        • +
        +

        jtgsz updated:

        +
          +
        • ported gang mode
        • +
        +

        kappa-sama updated:

        +
          +
        • Removed racism
        • +
        • Teleporter calibration actually matters to all roundstart players
        • +
        • Slows down teleportation with the console/hub/teleporter setup if you care for your species.
        • +
        • Dedicated non-humans can now get hulk without having to become human.
        • +
        • seed
        • +
        • added obj/item/key to wallet whitelist
        • +
        • blood cult ritual daggers fit in jack/combat boots
        • +
        • voidcells can now unlock alien tech
        • +
        • rebalanced tech trees (not really)
        • +
        • hugbox (/s)
        • +
        • ashwalker spawn text now tells them "i" "c" not to leave lavaland
        • +
        • you can no longer have infinite ebows
        • +
        • kevinz forgot to nerf miasma research and cargo value after making it produce like 100x as much lmao
        • +
        +

        kevinz000 updated:

        +
          +
        • Hierophant now goes sicko mode, but hey, at least you can't be multi-hit by melee waves!
        • +
        • Racking shotguns is now more threatening.
        • +
        • Medibots no longer kill slimes when trying to heal their toxins.
        • +
        • The Syndicate started selling claymores to their agents.
        • +
        • Nerfed VTEC modules.
        • +
        • Neurotoxin no longer stuns non-carbons.
        • +
        • peacekeeper cyborgs now get a megaphone
        • +
        • Fixes storage bugs regarding reaching into things you shouldn't be able to reach into.
        • +
        • BYOND 513 preliminary support added.
        • +
        • Trashbags now only allow accessing the first 3 items. 5 for bluespace ones. experimental: Storage now allows for limiting of random access
        • +
        +

        kiwedespars updated:

        +
          +
        • regenerative materia to hallucination sting
        • +
        • mindbreaker toxin as an actual chemical to hallucination sting
        • +
        +

        lolman360 updated:

        +
          +
        • NT has authorized shipments or Cotton to Megaseed Servitors. It's time to start picking, liggers.
        • +
        • missing durathread sprites
        • +
        • Added durathread jumpskirt
        • +
        • Duraskirt sprites and rolled down jumpsuit sprites.
        • +
        • Fixes an undocumented change to the naming of Plasmamen.
        • +
        • chainsaw kind of weapons and the mecha drill and the CLAMP can now be used with 100% accuracy for surgery
        • +
        • surgery tools now work on defines
        • +
        • advanced surgerytools can now switch types instead of just being faster
        • +
        • fixes bug with new surgerytools examine
        • +
        +

        nicc updated:

        +
          +
        • Exo-suit
        • +
        • SEVA suit
        • +
        • Flags for Goliath resistance and weakness
        • +
        • suit voucher
        • +
        • temp suit sprites
        • +
        • *dab
        • +
        • teg less gay maybe
        • +
        +

        ninjanomnom and WhoneedSpacee updated:

        +
          +
        • Some rpg affixes now have special effects
        • +
        • New RPGLoot modifiers: Vampirism which heals you when you attack, Pyromantic which sets things you hit on fire. Shrapnel which causes projectiles fired from a gun to fire projectiles in a radius when they hit something. Finally, Summoning which summons mobs that sometimes aid you in combat.
        • +
        +

        original by @randolfthemeh and @twaticus, port by sishen1542 updated:

        +
          +
        • jumpskirts
        • +
        • more jumpskirts
        • +
        • jumpskirt/suit prefs
        • +
        +

        original by Bumtickley00, port by sishen1542 updated:

        +
          +
        • Suit storage units will now also remove radiation from mobs.
        • +
        +

        original by GuyonBroadway, SkowronX, and Arizon5. port by sishen1542 and kerse updated:

        +
          +
        • Clockwork cultists may now summon forth Neovgre, the ratvrarian super weapon. This powerful mech can be summoned when applications scripture has been unlocked, boasts superior offensive and defensive capabilities, however once a pilot enters he cannot leave and is doomed to die with the mech.
        • +
        • Sexy Sprite work courtesy or SkowronX from /tg/
        • +
        • brass edits by Arizon5
        • +
        • steamy laser by kerse
        • +
        +

        original by Skoglol, port by sishen1542 updated:

        +
          +
        • Added lots of new virus cures, made cure difficulty scale more consistently. Cures are now picked from a list of possible cures per resistance level, multiple diseases at the same level no longer always share a cure. Looking at you table salt.
        • +
        • Dynamic gamemode now more auto-deadmin friendly.
        • +
        +

        original by TheChosenEvilOne, port by sishen1542 updated:

        +
          +
        • Ported dynamic mode from /vg/, originally made by @DeityLink, @Kurfursten and @ShiftyRail
        • +
        +

        original by Tlaltecuhtli, port by sishen1542 updated:

        +
          +
        • rcd disk that gives rcd computer frame and machine frame designs
        • +
        • upgraded rcd in CE lockers
        • +
        • moved deconstruction to the upgrade disk, ashwalker rcd comes upgraded
        • +
        +

        original by actioninja, port by sishen1542 updated:

        +
          +
        • Medical and Security consoles now check access on worn or inhand ID instead of requiring an inserted ID
        • +
        • mining vendor now reads from ID in hand or on person instead of requiring an inserted ID
        • +
        • ORM is functional again (for real this time)
        • +
        • ORM claim points button transfers points to worn/inhand ID instead of to an inserted ID, no longer accepts insertions
        • +
        • Same for gulag consoles
        • +
        +

        original by redmoogle, port by sishen1542 updated:

        +
          +
        • Added support for 3 new gasses; Tritium, Pluoxium, and BZ
        • +
        +

        original by: WJohnston, Antur, Arcane, plapatin, sprites by cogwerks and edited by mrdoombringer. port by sishen1542 updated:

        +
          +
        • THE GOOSE IS LOOSE
        • +
        +

        r4d6 updated:

        +
          +
        • Added decoratives angel wings for Mammalians only
        • +
        • Added blindfolds to the Loadout list
        • +
        • Added Decorative Wings for Humans, Felinids, Slimepersons and Lizardpeoples.
        • +
        • Change the SEVA suit & Exo-suit's descriptions
        • +
        • Batteries are now Rad-Proof like the other stock parts
        • +
        +

        tigercat2000@Paradise updated:

        +
          +
        • fixed invalid characters breaking chat output for that message
        • +
        +

        tinfoil hat wearer updated:

        +
          +
        • Added a new alien technology disk to scientist and roboticist uplinks that allows them to research the heavily-guarded secrets of the Grays.
        • +
        • Alientech is now the only Hidden alien research. To compensate for this, alien_bio and alien_engi have had their research costs doubled and now require advanced surgery tools and experimental tools respectively to research. Their export price is also halved.
        • +
        • roboticists now have brainwashing disks AND alien technology added to their role-restricted uplink section. alien technology gives them brainwashing at a much later date, so brainwashing is the much cheaper option for instant power. makes logical sense because doctors get it as well because they do surgery, and roboticists can now either choose to brainwash people for less price but less power or emag borgs for higher prices, limited uses, but higher power.
        • +
        +

        ursamedium updated:

        +
          +
        • Gas icons changed.
        • +
      GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index db9c8e6d08..f5e4fea7cb 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -23656,327 +23656,3 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - tweak: Supply ordered looms are unanchored. Bring a wrench. r4d6: - rscadd: Added Departements Winter Coats to the loadout list. -2019-12-30: - AnturK: - - bugfix: Fixed ranged syndicate mobs stormtrooper training. - Arturlang: - - rscadd: Adds Bloodsuckers, beware. - BlueWildrose: - - bugfix: Fixed stargazers being unable to link to themselves if mindshielded or - if holding psionic shielding devices (tinfoil hats) when the species is set. - - bugfix: Fixes non-roundstart slimes being unable to wag their tail. - Commandersand: - - tweak: added two words to clown filter - - rscadd: Added new things to loadouts, check em - DeltaFire15: - - balance: Clock cult kindle no longer cares about oxygen damage - - tweak: changed mecha internals access for some special mechs. - - tweak: no more mech maintenance access for engineers. - - tweak: All heads of staff can now message CC - - code_imp: Removes a magicnumber - - balance: Rebalanced cult vs cult stun effects to debuff instead of stun - Detective-Google: - - bugfix: short hair 80's is no longer jank - Fermis: - - tweak: tweaked how super bases/acids work but limiting them - Fikou: - - tweak: the windup toolbox now has some more "realistic" sounds - - bugfix: the windup toolbox now rumbles again - Ghommie: - - bugfix: Fixed hulks, sleeping carp users, pacifists and people with chunky fingers - being able to unrestrictly use gun and pneumatic cannon circuit assemblies. - - bugfix: Fixed gun circuit assemblies being only usable by human mobs. - - balance: Doubled the locomotion circuit external cooldown, thus halving the movable - assemblies' movespeed. - - tweak: Made wooden cabinet/closets... actually made of wood. - - tweak: Wooden cabinets are now deconstructable with a screwdriver. - - tweak: Deconstruction of large crates and other closet subtypes deconstructable - with tools other than the welder is no longer instant. - - tweak: You shouldn't be able to target objects you can't see (excluding darkness) - with the ARCD and RLD - - tweak: The admin RCD is ranged too, just like the ARCD. - - bugfix: Fixed welding, thirteen loko, welding and wraith spectacles not blinding - people as expected. Thank you all whomst reported this issue in the suggestions - box channel instead of the github repository's issues section, very smart! - - bugfix: Fixed on_mob eyes overlays not updating properly in certain cases. - - bugfix: Fixed deconversion from bloodshot eyes blood cult resetting your eyes' - color to pitch black instead of their previous color, more or less. - - balance: 'Spinfusor nerf: Upped the casing and ammo box size by one step, removed - the projectile''s dismemberment value (explosions can still rip a limb or two - off), halved the ammo box capacity, reduced the spinfusor ammo supply pack contents - from 32 to 8, removed the casing''s ability to explode when thrown.' - - bugfix: Fixes bubblegum's death not unlocking the arena shuttle buyment. - - bugfix: Fixed alien tech node not being unlockable with subtypes of the accepted - items. - - bugfix: Fixed reactive armor onmob overlays not updating when toggled and reactive - teleport armor still using forceMove() instead of do_teleport() - - bugfix: Fixed space hermit asteroid rocks unintendedly spawning airless asteroid - turf when mined, save for the perimeter. - - bugfix: Fixes reviver implant having been a crapshot ever since soft-crit was - introduced years ago. - - tweak: Added a "convalescence" time (about 15 seconds) after the user is out of - unconsciousbess/crit to ensure they are properly stabilized. - - tweak: Added a 15 minutes hardcap for accumulated revive cooldown (equivalent - to 150 points of brute or burn healed) above which the implant starts cooling - down regardless of user's conditions. - - bugfix: Fixed AI core displays I may have broken with my coding extravaganza. - - soundadd: Blue, Amber and Red security alert sounds should be half as loud now. - - balance: Buffed clown ops by removing their clumsiness and adding a new trait - to be used in place of several clown role checks. - - tweak: Clown ops too also suffer from not holding or wearing clown shoes now. - - bugfix: Fixed a few holo barriers lacking transparency. - - bugfix: Fixed character setup preview bodyparts not displaying correctly most - of times. - - bugfix: Fixed character appearance preview displaying the mannequin in job attire - instead of undergarments. - - bugfix: Fixed raven's shuttle computer not being of the emergency shuttle type. - - tweak: Blood bank generators can now be anchored and unanchored now. - - admin: Ghost mentors can now orbit around the target instead of setting their - view to theirs'. - - bugfix: Fixes a ghostchat eavesdropping exploit concerning VR. - - bugfix: Fixes VR deaths being broadcasted in deadchat. - - bugfix: Fixed a few pill bottle issues with the ChemMaster. - - bugfix: Fixes a few negative quirks not being properly removed when deleted. - - tweak: Phobia and mute quirks are no longer cheesed by brain surgery grade healing - or medicines. - - bugfix: Fixed double-flavour (and bland custom) ice creams. - - bugfix: Fixed Pubbystation's wall Nanomeds being inconsistent with other stations'. - - bugfix: dextrous simplemobs can now swap action intent with 1, 2, 3, 4 now. Just - like humies, ayys and monkys. - - bugfix: Stops humanoids whose skin_tone variable is set to "albino" from showing - up as pale when examined should their species not use skintones anyway. - - rscdel: Removed the old (almost) unused roboticist encryption key and headset. - - bugfix: Fixed goose meat. - - bugfix: Fixed a little door assembly glass dupe exploit - - bugfix: Fixed AI holopad speech text being small and whispers that in multiple - exclamation marks echo through multiple areas. - - rscdel: Removed literally atrocious polka dotted accessories. They were even more - atrocious than the yellow horrible tie. - Ghommie (also porting PRs by AnturK and Arkatos): - - bugfix: Fixed light eaters not burning out borg lamplights and flashes. fix Fixed - light eater not affecting open turfs emitting lights such as light tiles and - fairy grass. - - bugfix: Fixed an empty reference about light eater armblade disintegration after - Heart of Darkness removal. - Ghommie, Skogol: - - refactor: refactored altclick interaction to allow alt-click interactable objects - to parent call without forcing the turf contents stat menu open. - - tweak: Alt clicking will no longer show turf contents for items inside bags etc. - - tweak: Alt clicking the source of your turf contents stat menu will now close - said menu. - GrayRachnid: - - bugfix: fixes consistency - Hatterhat: - - rscadd: Regenerative nanites, a "chemical" used in the combat stimulant injector. - Actually quite stimulating, and not bad in a pinch for a nuclear operative. - Check the Combat Medic Kit! - - tweak: The Combat Medic Kit now has an advanced health analyzer and medisprays - instead of patches and a chloral syringe. - - balance: The Advanced Syndicate Surgery Duffelbag or whatever it was doesn't get - the better injector, because nobody uses it and so nobody's bothered to update - it. - - rscadd: .357 speedloaders can now be printed with the Advanced Illegal Ballistics - node on the tech tree! - - balance: okay so i may have given the .357 an extra speedloader at the same cost - but it comes in a box now - ItzGabby: - - bugfix: Fixed AltClick on polychromic collars so they actually work now. - KeRSedChaplain: - - soundadd: Extends the file "deltakalaxon.ogg" to a 38 second .ogg. - Linzolle: - - rscadd: neck slice. harm intent someone's head while they are unconscious or in - a neck grab to make them bleed uncontrollably. - - bugfix: officer's sabre now properly makes the unsheating and resheating noise - - bugfix: fireman failure has a different message depending on the circumstance - - rscadd: Abductor chem dispenser, and added it to the abductor console. - - rscadd: '"Superlingual matrix" to the abductor console. It''s the abductor''s - tongue. Can be used to link it to your abductor communication channel and then - implanted into a test subject.' - - rscadd: Shrink ray and added it to the abductor console. - - soundadd: Shrink ray sound effect (its the fucking mega man death sound) - - rscadd: special jumpsuit for abductors - - imageadd: abductor jumpsuit, including digi version if a digitigrade person somehow - manages to get their hands on it. sprites for the shrink ray and chem dispenser. - - rscadd: new glands to play with, including the all-access gland, the quantum gland, - and the blood type randomiser. - - code_imp: split every gland into its own file instead of all being in one file - - tweak: cosmic coat crafting recipe changed to coat + cosmic bedsheet - Mickyan, nemvar, RaveRadbury, AnturK, SpaceManiac: - - bugfix: Certain incompatible quirks can no longer be taken together. - - bugfix: If an admin sends a ghost back to the lobby, they can now choose a different - set of quirks. - - spellcheck: the quirk menu went through some minor formatting changes. - - bugfix: Podcloning now lets you keep your quirks. - - rscadd: Quirks have flavor text in medical records. - - spellcheck: All quirk medical records refer to "Patient", removing a few instances - of "Subject". - - tweak: Quirks no longer apply to off-station roundstart antagonists. - - code_imp: Mood quirks are now only processed by the quirk holders - Narcissisko (ported by Hatterhat): - - rscadd: Luxury Bar Capsule, at 10,000 points. Comes with no medical supplies, - a bar, and a bunch of cigars. Ported from tgstation/tgstation#45547. - Nervere and subject217, Militaires, py01, nemvar: - - balance: The cook's CQC now only works when in the kitchen or the kitchen backroom. - - spellcheck: corrected CQC help instructions - - bugfix: CQC and Sleeping Carp are properly logged. - - tweak: CQC can passively grab targets when not on grab intent. Passive grabs do - not count towards combos for CQC or Sleeping carp. - - code_imp: Martial Art and NOGUN cleanup. - PersianXerxes: - - rscdel: Removed night vision quirk - Putnam: - - bugfix: acute hepatic pharmacokinesis now works if you already have relevant genitals - - balance: Contamination is no longer an infinitely spreading deadly contagion causing - mass panic - - tweak: Dynamic rulesets have lower weight if a round recently featured them (except - traitor). - Putnam3145: - - balance: Buffed HE pipes by making them realistically radiate away heat. - - bugfix: Dynamic has a (totally unused for any relevant purpose) roundstart report - now. - - admin: A whole bunch of dynamic data is now available for statbus - - bugfix: Dynamic from-ghost antags no longer double dip on threat refunds when - the mode fails due to not enough applications. - - bugfix: whoops broke quirks - - bugfix: quirks work - - rscadd: 'New tab in preferences screen: "ERP preferences"' - - rscadd: New opt-outs for individual effects of incubus draught, succubus milk - - rscdel: Acute hepatic pharmacokinesis has been removed, replaced with above - - tweak: Renamed "Toggle Lewdchem" to "Toggle Lewd MKUltra", since that's what it - actually means, and made it toggle the "hypno" setting (rename it again if more - hypno mechanics are added). - - tweak: Made MKUltra's lewd messages require both people involved to have hypno - opted-in. - - config: Buncha dynamic config tweaks - - bugfix: Ghost cafe spawns are actual ghost roles by the game's reckoning now - - bugfix: a runtime in radioactive contamination - - balance: Bomb armor now acts like other armor types. - - balance: Devastation-level explosions on armorless people no longer destroys everything - in their bags. - Seris02: - - rscadd: the clowns headset - - bugfix: distance checks - - bugfix: the sprites - - rscadd: added the runed and brass winter coats (cosmetic ratvarian/narsian) - - tweak: how the narsian/ratvarian coats can be made - - bugfix: fixes some ghost roles from dying of stupid shit - - bugfix: pandoras attacking their owners - - rscadd: Added Rising Bass and the shifting scroll. - - tweak: Changes the martial arts scroll in the uplink to "Sleeping Carp Scroll" - ShizCalev: - - bugfix: Fixed floodlights not turning off properly when they're underpowered. - - bugfix: Fixed emitters not changing icons properly when they're underpowered. - Sishen1542: - - rscadd: Clicking a pack of seeds with a pen allows you to set the plant's name, - description and the pack of seeds' description. Useful for differentiating genetically - modified plants. These changes will persist through different generations of - the plant. - - rscadd: Hydroponics trays update their name and description to reflect the plant - inside them. They revert to default when emptied. - Toriate: - - rscadd: Polychromic shorts now have a digitigrade state - Trilbyspaceclone: - - rscadd: ports all the new donuts, burgars, and chicken stuff from RG - - rscadd: ports new snowcone - - rscadd: ports grill - - rscadd: ports beakfeast tag/mood lit as TG has it - - rscadd: ports all the amazing new sprites - - tweak: ports crafting for many things like snowcones needing water - - balance: ports of many craftings - - soundadd: lowers fryers sound - - imageadd: ported icons for new food/grill - - imagedel: ports the deletion of some icons and images - - spellcheck: ports a spell check for the snowcones - - code_imp: ports fixes for stuff I didnt know were even broken with snowcones - - bugfix: coder cat failers to push the last commit from year(s) ago - - admin: Updates the changlogs - - tweak: meat hook from HUGE to bulky - - tweak: CE hardsuit is now more rad-proof - - bugfix: Wrong icon names, missing dog fashion with telegram hat - - rscadd: New softdrink that comes in its own vender! - - rscadd: Honey now has a reaction with plants - - tweak: Buzz fuzz now only has a 5% to give honey and will now give 1u of sugar - not 2 - - rscadd: Blaster shotguns back into armory - - rscdel: Removed Lighters in thunderdomes - - rscadd: Silicons now know what a slime is saying! - - balance: honey now will not kill slimes. Honey slimepeople can be a thing now, - go sci. - - rscadd: Added insulin into many of the borg hypo's - Useroth: - - rscadd: bamboo which can be used to build punji sticks/ blowguns available as - a sugarcane mutation or in exotic seed crate - - tweak: changed the sugar cane growth stages because fuck if I know why, but it - was in the PR - - rscadd: 'New lavaland ruin: Pulsating tumor' - - rscadd: New class of lavaland mobs, a bit weaker than megafauna but still stronger - than most of what you normally see - - rscadd: Ghost cafe spawner. For letting people spawn as their own character in - the ninja holding facility. It bypasses the usual check, so people who have - suicided/ghosted/cryod may use it. - - rscadd: Dorms in the ninja holding facility. - Xantholne: - - rscadd: Santa Hats to Loadout and Clothesmate - - rscadd: Christmas Wintercoats to Loadout and Clothesmate - - rscadd: Christmas male and female uniforms to loadout and Clothesmate - - rscadd: Red, Green, and Traditional Santa boots to loadout and Clothesmate - - rscadd: Christmas Socks, Red candycane socks, Green candycane socks to sock selection - kappa-sama: - - balance: legion drops more crates now - - balance: .357 speedloaders in autolathes are now individual bullets instead, speedloaders - are now illegal tech, costs less total metal to make 7 bullets than a previous - speedloader. 7.62mm bullets in autolathe when hacked and costs more metal to - make 5 7.62mm bullets than getting a clip from the seclathe. - - tweak: mentions that you can refill speedloaders on .357 uplink description - - bugfix: you can now strip people while aggrograbbing or higher - - rscadd: plasmafist to wizard - - code_imp: modular is gone - - rscadd: martial apprentices for the local Chinese wizard - - bugfix: broodmother baby lag - - balance: you can no longer get 100k credits by spending 4k roundstart - - balance: cooking oil in sunflowers instead of corn oil - - bugfix: throats are no longer slit happy - keronshb: - - rscadd: Adds reflector blobs to shield blob upgrades - kevinz000: - - rscadd: Launchpads can now take number inputs for offsets rather than just buttons. - - balance: nanites no longer spread through air blocking objects - - rscadd: Night vision readded as a darkness dampening effect rather than darksight. - - rscdel: conveyors can only stack items on tiles to 150 now. - - rscadd: added 8 character save slots - - rscadd: Cargo shuttle now silently ignores slaughter demons/revenants instead - of being blocked even while they are jaunted. A drawback is that manifested - ones can't block it either, any more. - - balance: flashbangs process light/sound separately and uses viewers(), so xray - users beware. - - tweak: Stat() slowed down for anti-lag measures. - - bugfix: sprint/stamina huds now work again - - balance: Combat defibs now instant stun on disarm rather than 1 second again - - balance: Defibs are now always emagged when emagged with an emag rather than EMP. - - bugfix: aooc toggling now only broadcasts to antagonists - - code_imp: Antag rep proc is now easier to read and supports returning a list. - - balance: Clockwork marauders are now on a configured summon cooldown if being - summoned on station. They also rapidly bleed health while in or next to space. - And they glow brighter. - lolman360: - - rscadd: Added ability to pick up certain simplemobs. - nemvar: - - bugfix: The brains of roundstart borgs no longer decay. - - code_imp: Refactored the visibility of reagents for mobs. - nicbn, Kevinz000, ShizCalev: - - tweak: Fire alarm is now simpler. Touch it to activate, touch it to deactivate. - When activated, it will blink inconsistently if it is emagged. - - bugfix: You can no longer spam fire alarms. Also, they're logged again. - - bugfix: Fixed fire alarms not updating icons properly after being emagged and - hacked by Malf AI's. - r4d6: - - rscadd: Added a N2O pressure tank - - rscdel: Removed a AM Shielding from the crate - - rscadd: Added Handshakes - - rscadd: Added Nose booping - - rscadd: Added submaps for the SM, Tesla and Singulo - - rscadd: Added a placeholder on Boxstation for the Engines - - bugfix: fixed Nose boops not triggering - shellspeed1: - - rscadd: Adds Insect markings - - rscadd: Adds three new moth wings. diff --git a/html/changelogs/AutoChangeLog-pr-10306.yml b/html/changelogs/AutoChangeLog-pr-10011.yml similarity index 52% rename from html/changelogs/AutoChangeLog-pr-10306.yml rename to html/changelogs/AutoChangeLog-pr-10011.yml index 9ab82dbda0..70d569699f 100644 --- a/html/changelogs/AutoChangeLog-pr-10306.yml +++ b/html/changelogs/AutoChangeLog-pr-10011.yml @@ -1,4 +1,4 @@ author: "Arturlang" delete-after: True changes: - - tweak: "Vampires are no longer as tanky" + - rscadd: "Adds Bloodsuckers, beware." diff --git a/html/changelogs/AutoChangeLog-pr-10026.yml b/html/changelogs/AutoChangeLog-pr-10026.yml new file mode 100644 index 0000000000..6e8062874b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10026.yml @@ -0,0 +1,4 @@ +author: "Linzolle" +delete-after: True +changes: + - rscadd: "neck slice. harm intent someone's head while they are unconscious or in a neck grab to make them bleed uncontrollably." diff --git a/html/changelogs/AutoChangeLog-pr-10037.yml b/html/changelogs/AutoChangeLog-pr-10037.yml new file mode 100644 index 0000000000..b0f0501516 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10037.yml @@ -0,0 +1,6 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed hulks, sleeping carp users, pacifists and people with chunky fingers being able to unrestrictly use gun and pneumatic cannon circuit assemblies." + - bugfix: "Fixed gun circuit assemblies being only usable by human mobs." + - balance: "Doubled the locomotion circuit external cooldown, thus halving the movable assemblies' movespeed." diff --git a/html/changelogs/AutoChangeLog-pr-10044.yml b/html/changelogs/AutoChangeLog-pr-10044.yml new file mode 100644 index 0000000000..8d1782c3a8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10044.yml @@ -0,0 +1,6 @@ +author: "Ghommie" +delete-after: True +changes: + - tweak: "Made wooden cabinet/closets... actually made of wood." + - tweak: "Wooden cabinets are now deconstructable with a screwdriver." + - tweak: "Deconstruction of large crates and other closet subtypes deconstructable with tools other than the welder is no longer instant." diff --git a/html/changelogs/AutoChangeLog-pr-10050.yml b/html/changelogs/AutoChangeLog-pr-10050.yml new file mode 100644 index 0000000000..c736ded339 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10050.yml @@ -0,0 +1,5 @@ +author: "Ghommie" +delete-after: True +changes: + - tweak: "You shouldn't be able to target objects you can't see (excluding darkness) with the ARCD and RLD" + - tweak: "The admin RCD is ranged too, just like the ARCD." diff --git a/html/changelogs/AutoChangeLog-pr-10371.yml b/html/changelogs/AutoChangeLog-pr-10051.yml similarity index 52% rename from html/changelogs/AutoChangeLog-pr-10371.yml rename to html/changelogs/AutoChangeLog-pr-10051.yml index e4322d70f1..0d7d274891 100644 --- a/html/changelogs/AutoChangeLog-pr-10371.yml +++ b/html/changelogs/AutoChangeLog-pr-10051.yml @@ -1,4 +1,4 @@ author: "kappa-sama" delete-after: True changes: - - rscadd: "loot crates in cargo contraband" + - balance: "legion drops more crates now" diff --git a/html/changelogs/AutoChangeLog-pr-10053.yml b/html/changelogs/AutoChangeLog-pr-10053.yml new file mode 100644 index 0000000000..36d392d8f8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10053.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed welding, thirteen loko, welding and wraith spectacles not blinding people as expected. Thank you all whomst reported this issue in the suggestions box channel instead of the github repository's issues section, very smart!" diff --git a/html/changelogs/AutoChangeLog-pr-10054.yml b/html/changelogs/AutoChangeLog-pr-10054.yml new file mode 100644 index 0000000000..0dc3b36618 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10054.yml @@ -0,0 +1,5 @@ +author: "kappa-sama" +delete-after: True +changes: + - balance: ".357 speedloaders in autolathes are now individual bullets instead, speedloaders are now illegal tech, costs less total metal to make 7 bullets than a previous speedloader. 7.62mm bullets in autolathe when hacked and costs more metal to make 5 7.62mm bullets than getting a clip from the seclathe." + - tweak: "mentions that you can refill speedloaders on .357 uplink description" diff --git a/html/changelogs/AutoChangeLog-pr-10057.yml b/html/changelogs/AutoChangeLog-pr-10057.yml new file mode 100644 index 0000000000..be285bfc57 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10057.yml @@ -0,0 +1,5 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed on_mob eyes overlays not updating properly in certain cases." + - bugfix: "Fixed deconversion from bloodshot eyes blood cult resetting your eyes' color to pitch black instead of their previous color, more or less." diff --git a/html/changelogs/AutoChangeLog-pr-10058.yml b/html/changelogs/AutoChangeLog-pr-10058.yml new file mode 100644 index 0000000000..6f9a985765 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10058.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - balance: "Spinfusor nerf: Upped the casing and ammo box size by one step, removed the projectile's dismemberment value (explosions can still rip a limb or two off), halved the ammo box capacity, reduced the spinfusor ammo supply pack contents from 32 to 8, removed the casing's ability to explode when thrown." diff --git a/html/changelogs/AutoChangeLog-pr-10059.yml b/html/changelogs/AutoChangeLog-pr-10059.yml new file mode 100644 index 0000000000..e9f89c18a2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10059.yml @@ -0,0 +1,4 @@ +author: "lolman360" +delete-after: True +changes: + - rscadd: "Added ability to pick up certain simplemobs." diff --git a/html/changelogs/AutoChangeLog-pr-10067.yml b/html/changelogs/AutoChangeLog-pr-10067.yml new file mode 100644 index 0000000000..ac65487761 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10067.yml @@ -0,0 +1,5 @@ +author: "Sishen1542" +delete-after: True +changes: + - rscadd: "Clicking a pack of seeds with a pen allows you to set the plant's name, description and the pack of seeds' description. Useful for differentiating genetically modified plants. These changes will persist through different generations of the plant." + - rscadd: "Hydroponics trays update their name and description to reflect the plant inside them. They revert to default when emptied." diff --git a/html/changelogs/AutoChangeLog-pr-10068.yml b/html/changelogs/AutoChangeLog-pr-10068.yml new file mode 100644 index 0000000000..39b2c37c28 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10068.yml @@ -0,0 +1,5 @@ +author: "Fikou" +delete-after: True +changes: + - tweak: "the windup toolbox now has some more \"realistic\" sounds" + - bugfix: "the windup toolbox now rumbles again" diff --git a/html/changelogs/AutoChangeLog-pr-10071.yml b/html/changelogs/AutoChangeLog-pr-10071.yml new file mode 100644 index 0000000000..3632bdfa86 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10071.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixes bubblegum's death not unlocking the arena shuttle buyment." diff --git a/html/changelogs/AutoChangeLog-pr-10072.yml b/html/changelogs/AutoChangeLog-pr-10072.yml new file mode 100644 index 0000000000..9a6f45e61e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10072.yml @@ -0,0 +1,5 @@ +author: "Useroth" +delete-after: True +changes: + - rscadd: "bamboo which can be used to build punji sticks/ blowguns available as a sugarcane mutation or in exotic seed crate" + - tweak: "changed the sugar cane growth stages because fuck if I know why, but it was in the PR" diff --git a/html/changelogs/AutoChangeLog-pr-10076.yml b/html/changelogs/AutoChangeLog-pr-10076.yml new file mode 100644 index 0000000000..0e04ceddbc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10076.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed alien tech node not being unlockable with subtypes of the accepted items." diff --git a/html/changelogs/AutoChangeLog-pr-10079.yml b/html/changelogs/AutoChangeLog-pr-10079.yml new file mode 100644 index 0000000000..a729b1bc56 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10079.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed reactive armor onmob overlays not updating when toggled and reactive teleport armor still using forceMove() instead of do_teleport()" diff --git a/html/changelogs/AutoChangeLog-pr-10082.yml b/html/changelogs/AutoChangeLog-pr-10082.yml new file mode 100644 index 0000000000..e5c669f798 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10082.yml @@ -0,0 +1,4 @@ +author: "kevinz000" +delete-after: True +changes: + - rscadd: "Launchpads can now take number inputs for offsets rather than just buttons." diff --git a/html/changelogs/AutoChangeLog-pr-10083.yml b/html/changelogs/AutoChangeLog-pr-10083.yml new file mode 100644 index 0000000000..c60c3fea36 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10083.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed space hermit asteroid rocks unintendedly spawning airless asteroid turf when mined, save for the perimeter." diff --git a/html/changelogs/AutoChangeLog-pr-10085.yml b/html/changelogs/AutoChangeLog-pr-10085.yml new file mode 100644 index 0000000000..a82f052fed --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10085.yml @@ -0,0 +1,6 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixes reviver implant having been a crapshot ever since soft-crit was introduced years ago." + - tweak: "Added a \"convalescence\" time (about 15 seconds) after the user is out of unconsciousbess/crit to ensure they are properly stabilized." + - tweak: "Added a 15 minutes hardcap for accumulated revive cooldown (equivalent to 150 points of brute or burn healed) above which the implant starts cooling down regardless of user's conditions." diff --git a/html/changelogs/AutoChangeLog-pr-10086.yml b/html/changelogs/AutoChangeLog-pr-10086.yml new file mode 100644 index 0000000000..08dff8ee5c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10086.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed AI core displays I may have broken with my coding extravaganza." diff --git a/html/changelogs/AutoChangeLog-pr-10090.yml b/html/changelogs/AutoChangeLog-pr-10090.yml new file mode 100644 index 0000000000..924d83b65e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10090.yml @@ -0,0 +1,6 @@ +author: "Hatterhat" +delete-after: True +changes: + - rscadd: "Regenerative nanites, a \"chemical\" used in the combat stimulant injector. Actually quite stimulating, and not bad in a pinch for a nuclear operative. Check the Combat Medic Kit!" + - tweak: "The Combat Medic Kit now has an advanced health analyzer and medisprays instead of patches and a chloral syringe." + - balance: "The Advanced Syndicate Surgery Duffelbag or whatever it was doesn't get the better injector, because nobody uses it and so nobody's bothered to update it." diff --git a/html/changelogs/AutoChangeLog-pr-10093.yml b/html/changelogs/AutoChangeLog-pr-10093.yml new file mode 100644 index 0000000000..e692ed5d2a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10093.yml @@ -0,0 +1,15 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - rscadd: "ports all the new donuts, burgars, and chicken stuff from RG" + - rscadd: "ports new snowcone" + - rscadd: "ports grill" + - rscadd: "ports beakfeast tag/mood lit as TG has it" + - rscadd: "ports all the amazing new sprites" + - tweak: "ports crafting for many things like snowcones needing water" + - balance: "ports of many craftings" + - soundadd: "lowers fryers sound" + - imageadd: "ported icons for new food/grill" + - imagedel: "ports the deletion of some icons and images" + - spellcheck: "ports a spell check for the snowcones" + - code_imp: "ports fixes for stuff I didnt know were even broken with snowcones" diff --git a/html/changelogs/AutoChangeLog-pr-10094.yml b/html/changelogs/AutoChangeLog-pr-10094.yml new file mode 100644 index 0000000000..ee9513489d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10094.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - bugfix: "coder cat failers to push the last commit from year(s) ago" diff --git a/html/changelogs/AutoChangeLog-pr-10096.yml b/html/changelogs/AutoChangeLog-pr-10096.yml new file mode 100644 index 0000000000..0089c11a9d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10096.yml @@ -0,0 +1,4 @@ +author: "kevinz000" +delete-after: True +changes: + - balance: "nanites no longer spread through air blocking objects" diff --git a/html/changelogs/AutoChangeLog-pr-10099.yml b/html/changelogs/AutoChangeLog-pr-10099.yml new file mode 100644 index 0000000000..9ad4bfdfc2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10099.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed a few holo barriers lacking transparency." diff --git a/html/changelogs/AutoChangeLog-pr-10442.yml b/html/changelogs/AutoChangeLog-pr-10101.yml similarity index 56% rename from html/changelogs/AutoChangeLog-pr-10442.yml rename to html/changelogs/AutoChangeLog-pr-10101.yml index f407ae9e15..059c8b2d85 100644 --- a/html/changelogs/AutoChangeLog-pr-10442.yml +++ b/html/changelogs/AutoChangeLog-pr-10101.yml @@ -1,4 +1,4 @@ author: "Trilbyspaceclone" delete-after: True changes: - - tweak: "Halfs the nutriments in sugar" + - admin: "Updates the changlogs" diff --git a/html/changelogs/AutoChangeLog-pr-10108.yml b/html/changelogs/AutoChangeLog-pr-10108.yml new file mode 100644 index 0000000000..67c6396763 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10108.yml @@ -0,0 +1,4 @@ +author: "DeltaFire15" +delete-after: True +changes: + - balance: "Clock cult kindle no longer cares about oxygen damage" diff --git a/html/changelogs/AutoChangeLog-pr-10111.yml b/html/changelogs/AutoChangeLog-pr-10111.yml new file mode 100644 index 0000000000..0a80f01eef --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10111.yml @@ -0,0 +1,4 @@ +author: "kappa-sama" +delete-after: True +changes: + - bugfix: "you can now strip people while aggrograbbing or higher" diff --git a/html/changelogs/AutoChangeLog-pr-10112.yml b/html/changelogs/AutoChangeLog-pr-10112.yml deleted file mode 100644 index f09d8fa9ef..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10112.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - refactor: "Refactored that mess of a code for alternate worn clothing sprites for digitigrade and taurs." - - bugfix: "Fixed some issues with the aforementioned feature you may or may not have experienced because it was pretty lame." diff --git a/html/changelogs/AutoChangeLog-pr-10503.yml b/html/changelogs/AutoChangeLog-pr-10114.yml similarity index 52% rename from html/changelogs/AutoChangeLog-pr-10503.yml rename to html/changelogs/AutoChangeLog-pr-10114.yml index b067aa6c55..f413760ff9 100644 --- a/html/changelogs/AutoChangeLog-pr-10503.yml +++ b/html/changelogs/AutoChangeLog-pr-10114.yml @@ -1,4 +1,4 @@ author: "r4d6" delete-after: True changes: - - bugfix: "fixed SM's piping" + - rscadd: "Added a N2O pressure tank" diff --git a/html/changelogs/AutoChangeLog-pr-10115.yml b/html/changelogs/AutoChangeLog-pr-10115.yml new file mode 100644 index 0000000000..f7a60e4911 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10115.yml @@ -0,0 +1,5 @@ +author: "Useroth" +delete-after: True +changes: + - rscadd: "New lavaland ruin: Pulsating tumor" + - rscadd: "New class of lavaland mobs, a bit weaker than megafauna but still stronger than most of what you normally see" diff --git a/html/changelogs/AutoChangeLog-pr-10116.yml b/html/changelogs/AutoChangeLog-pr-10116.yml new file mode 100644 index 0000000000..70c1b4590d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10116.yml @@ -0,0 +1,4 @@ +author: "Putnam" +delete-after: True +changes: + - bugfix: "acute hepatic pharmacokinesis now works if you already have relevant genitals" diff --git a/html/changelogs/AutoChangeLog-pr-10120.yml b/html/changelogs/AutoChangeLog-pr-10120.yml new file mode 100644 index 0000000000..5777519d83 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10120.yml @@ -0,0 +1,4 @@ +author: "kevinz000" +delete-after: True +changes: + - rscadd: "Night vision readded as a darkness dampening effect rather than darksight." diff --git a/html/changelogs/AutoChangeLog-pr-10482.yml b/html/changelogs/AutoChangeLog-pr-10121.yml similarity index 52% rename from html/changelogs/AutoChangeLog-pr-10482.yml rename to html/changelogs/AutoChangeLog-pr-10121.yml index e97c8870d4..38a91fcc01 100644 --- a/html/changelogs/AutoChangeLog-pr-10482.yml +++ b/html/changelogs/AutoChangeLog-pr-10121.yml @@ -1,4 +1,4 @@ author: "kappa-sama" delete-after: True changes: - - code_imp: "modular_citadel file movement" + - rscadd: "plasmafist to wizard" diff --git a/html/changelogs/AutoChangeLog-pr-10122.yml b/html/changelogs/AutoChangeLog-pr-10122.yml new file mode 100644 index 0000000000..4d503dc2be --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10122.yml @@ -0,0 +1,4 @@ +author: "kevinz000" +delete-after: True +changes: + - rscdel: "conveyors can only stack items on tiles to 150 now." diff --git a/html/changelogs/AutoChangeLog-pr-10123.yml b/html/changelogs/AutoChangeLog-pr-10123.yml deleted file mode 100644 index 208b17b930..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10123.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "kevinz000" -delete-after: True -changes: - - rscadd: "throwing things no longer makes them randomly turned as long as you aren't on harm intent" diff --git a/html/changelogs/AutoChangeLog-pr-10126.yml b/html/changelogs/AutoChangeLog-pr-10126.yml new file mode 100644 index 0000000000..6cf568ca70 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10126.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - balance: "Buffed HE pipes by making them realistically radiate away heat." diff --git a/html/changelogs/AutoChangeLog-pr-10339.yml b/html/changelogs/AutoChangeLog-pr-10128.yml similarity index 58% rename from html/changelogs/AutoChangeLog-pr-10339.yml rename to html/changelogs/AutoChangeLog-pr-10128.yml index c313c4bf80..89bca26a76 100644 --- a/html/changelogs/AutoChangeLog-pr-10339.yml +++ b/html/changelogs/AutoChangeLog-pr-10128.yml @@ -1,4 +1,4 @@ author: "Seris02" delete-after: True changes: - - rscadd: "telescopic IV drip" + - rscadd: "the clowns headset" diff --git a/html/changelogs/AutoChangeLog-pr-10130.yml b/html/changelogs/AutoChangeLog-pr-10130.yml new file mode 100644 index 0000000000..1f6ba6ac6a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10130.yml @@ -0,0 +1,4 @@ +author: "kappa-sama" +delete-after: True +changes: + - code_imp: "modular is gone" diff --git a/html/changelogs/AutoChangeLog-pr-10432.yml b/html/changelogs/AutoChangeLog-pr-10132.yml similarity index 53% rename from html/changelogs/AutoChangeLog-pr-10432.yml rename to html/changelogs/AutoChangeLog-pr-10132.yml index a0b40baa45..d8755d2b90 100644 --- a/html/changelogs/AutoChangeLog-pr-10432.yml +++ b/html/changelogs/AutoChangeLog-pr-10132.yml @@ -1,4 +1,4 @@ author: "Trilbyspaceclone" delete-after: True changes: - - bugfix: "missing sprites with crushed cans" + - tweak: "meat hook from HUGE to bulky" diff --git a/html/changelogs/AutoChangeLog-pr-10137.yml b/html/changelogs/AutoChangeLog-pr-10137.yml new file mode 100644 index 0000000000..63678d4425 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10137.yml @@ -0,0 +1,4 @@ +author: "KeRSedChaplain" +delete-after: True +changes: + - soundadd: "Extends the file \"deltakalaxon.ogg\" to a 38 second .ogg." diff --git a/html/changelogs/AutoChangeLog-pr-10140.yml b/html/changelogs/AutoChangeLog-pr-10140.yml new file mode 100644 index 0000000000..d5e33fa02d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10140.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - bugfix: "Dynamic has a (totally unused for any relevant purpose) roundstart report now." diff --git a/html/changelogs/AutoChangeLog-pr-10141.yml b/html/changelogs/AutoChangeLog-pr-10141.yml new file mode 100644 index 0000000000..5f0bfe2267 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10141.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - admin: "A whole bunch of dynamic data is now available for statbus" diff --git a/html/changelogs/AutoChangeLog-pr-10317.yml b/html/changelogs/AutoChangeLog-pr-10142.yml similarity index 53% rename from html/changelogs/AutoChangeLog-pr-10317.yml rename to html/changelogs/AutoChangeLog-pr-10142.yml index 7db50240e3..aba2675550 100644 --- a/html/changelogs/AutoChangeLog-pr-10317.yml +++ b/html/changelogs/AutoChangeLog-pr-10142.yml @@ -1,4 +1,4 @@ author: "Trilbyspaceclone" delete-after: True changes: - - bugfix: "issues with mapping done my Trilby" + - tweak: "CE hardsuit is now more rad-proof" diff --git a/html/changelogs/AutoChangeLog-pr-10143.yml b/html/changelogs/AutoChangeLog-pr-10143.yml new file mode 100644 index 0000000000..45dfe225c4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10143.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - bugfix: "Dynamic from-ghost antags no longer double dip on threat refunds when the mode fails due to not enough applications." diff --git a/html/changelogs/AutoChangeLog-pr-10144.yml b/html/changelogs/AutoChangeLog-pr-10144.yml new file mode 100644 index 0000000000..6b175b149b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10144.yml @@ -0,0 +1,4 @@ +author: "Linzolle" +delete-after: True +changes: + - bugfix: "officer's sabre now properly makes the unsheating and resheating noise" diff --git a/html/changelogs/AutoChangeLog-pr-10150.yml b/html/changelogs/AutoChangeLog-pr-10150.yml new file mode 100644 index 0000000000..d2a2b79ff0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10150.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - bugfix: "Wrong icon names, missing dog fashion with telegram hat" diff --git a/html/changelogs/AutoChangeLog-pr-10153.yml b/html/changelogs/AutoChangeLog-pr-10153.yml new file mode 100644 index 0000000000..7196583de9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10153.yml @@ -0,0 +1,4 @@ +author: "Linzolle" +delete-after: True +changes: + - bugfix: "fireman failure has a different message depending on the circumstance" diff --git a/html/changelogs/AutoChangeLog-pr-10309.yml b/html/changelogs/AutoChangeLog-pr-10155.yml similarity index 60% rename from html/changelogs/AutoChangeLog-pr-10309.yml rename to html/changelogs/AutoChangeLog-pr-10155.yml index a59ebff156..d82ea5ed43 100644 --- a/html/changelogs/AutoChangeLog-pr-10309.yml +++ b/html/changelogs/AutoChangeLog-pr-10155.yml @@ -1,4 +1,4 @@ author: "Seris02" delete-after: True changes: - - rscadd: "disabler sechuds" + - bugfix: "distance checks" diff --git a/html/changelogs/AutoChangeLog-pr-10156.yml b/html/changelogs/AutoChangeLog-pr-10156.yml new file mode 100644 index 0000000000..ec08642b3f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10156.yml @@ -0,0 +1,5 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed character setup preview bodyparts not displaying correctly most of times." + - bugfix: "Fixed character appearance preview displaying the mannequin in job attire instead of undergarments." diff --git a/html/changelogs/AutoChangeLog-pr-10157.yml b/html/changelogs/AutoChangeLog-pr-10157.yml new file mode 100644 index 0000000000..6ec495b7fc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10157.yml @@ -0,0 +1,5 @@ +author: "ShizCalev" +delete-after: True +changes: + - bugfix: "Fixed floodlights not turning off properly when they're underpowered." + - bugfix: "Fixed emitters not changing icons properly when they're underpowered." diff --git a/html/changelogs/AutoChangeLog-pr-10160.yml b/html/changelogs/AutoChangeLog-pr-10160.yml new file mode 100644 index 0000000000..2046324dc8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10160.yml @@ -0,0 +1,6 @@ +author: "nicbn, Kevinz000, ShizCalev" +delete-after: True +changes: + - tweak: "Fire alarm is now simpler. Touch it to activate, touch it to deactivate. When activated, it will blink inconsistently if it is emagged." + - bugfix: "You can no longer spam fire alarms. Also, they're logged again." + - bugfix: "Fixed fire alarms not updating icons properly after being emagged and hacked by Malf AI's." diff --git a/html/changelogs/AutoChangeLog-pr-10161.yml b/html/changelogs/AutoChangeLog-pr-10161.yml new file mode 100644 index 0000000000..7f09609b99 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10161.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed raven's shuttle computer not being of the emergency shuttle type." diff --git a/html/changelogs/AutoChangeLog-pr-10163.yml b/html/changelogs/AutoChangeLog-pr-10163.yml new file mode 100644 index 0000000000..2818019ad7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10163.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - tweak: "Blood bank generators can now be anchored and unanchored now." diff --git a/html/changelogs/AutoChangeLog-pr-10164.yml b/html/changelogs/AutoChangeLog-pr-10164.yml new file mode 100644 index 0000000000..464edda73b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10164.yml @@ -0,0 +1,4 @@ +author: "kappa-sama" +delete-after: True +changes: + - rscadd: "martial apprentices for the local Chinese wizard" diff --git a/html/changelogs/AutoChangeLog-pr-10165.yml b/html/changelogs/AutoChangeLog-pr-10165.yml deleted file mode 100644 index be6f9dedf7..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10165.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixed missing digi versions fishnet sprites and wrong digitigrade left dir purple stockings sprite." - - imageadd: "Add digitigrade versions for boxers and the long johns." diff --git a/html/changelogs/AutoChangeLog-pr-10166.yml b/html/changelogs/AutoChangeLog-pr-10166.yml new file mode 100644 index 0000000000..ba919010af --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10166.yml @@ -0,0 +1,4 @@ +author: "nemvar" +delete-after: True +changes: + - bugfix: "The brains of roundstart borgs no longer decay." diff --git a/html/changelogs/AutoChangeLog-pr-10171.yml b/html/changelogs/AutoChangeLog-pr-10171.yml new file mode 100644 index 0000000000..0138d7a381 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10171.yml @@ -0,0 +1,4 @@ +author: "r4d6" +delete-after: True +changes: + - rscdel: "Removed a AM Shielding from the crate" diff --git a/html/changelogs/AutoChangeLog-pr-10172.yml b/html/changelogs/AutoChangeLog-pr-10172.yml new file mode 100644 index 0000000000..ce76e04d13 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10172.yml @@ -0,0 +1,11 @@ +author: "Mickyan, nemvar, RaveRadbury, AnturK, SpaceManiac" +delete-after: True +changes: + - bugfix: "Certain incompatible quirks can no longer be taken together." + - bugfix: "If an admin sends a ghost back to the lobby, they can now choose a different set of quirks." + - spellcheck: "the quirk menu went through some minor formatting changes." + - bugfix: "Podcloning now lets you keep your quirks." + - rscadd: "Quirks have flavor text in medical records." + - spellcheck: "All quirk medical records refer to \"Patient\", removing a few instances of \"Subject\"." + - tweak: "Quirks no longer apply to off-station roundstart antagonists." + - code_imp: "Mood quirks are now only processed by the quirk holders" diff --git a/html/changelogs/AutoChangeLog-pr-10180.yml b/html/changelogs/AutoChangeLog-pr-10180.yml new file mode 100644 index 0000000000..0a22910940 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10180.yml @@ -0,0 +1,5 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixes a ghostchat eavesdropping exploit concerning VR." + - bugfix: "Fixes VR deaths being broadcasted in deadchat." diff --git a/html/changelogs/AutoChangeLog-pr-10181.yml b/html/changelogs/AutoChangeLog-pr-10181.yml new file mode 100644 index 0000000000..bb00ab1012 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10181.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed a few pill bottle issues with the ChemMaster." diff --git a/html/changelogs/AutoChangeLog-pr-10189.yml b/html/changelogs/AutoChangeLog-pr-10189.yml deleted file mode 100644 index 5889e127d2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10189.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Putnam3145" -delete-after: True -changes: - - rscadd: "Dynamic storytellers, a new voting paradigm for dynamic" - - rscadd: "Support for approval voting and condorcet (ranked choice) voting in server votes" diff --git a/html/changelogs/AutoChangeLog-pr-10190.yml b/html/changelogs/AutoChangeLog-pr-10190.yml new file mode 100644 index 0000000000..d05ad85db3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10190.yml @@ -0,0 +1,5 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - rscadd: "New softdrink that comes in its own vender!" + - rscadd: "Honey now has a reaction with plants" diff --git a/html/changelogs/AutoChangeLog-pr-10191.yml b/html/changelogs/AutoChangeLog-pr-10191.yml deleted file mode 100644 index c1366727bd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10191.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "kevinz000" -delete-after: True -changes: - - rscadd: "Custom holoforms have been added for pAIs and AIs. oh and cyborg holograms of specific modules too." - - balance: "pais are no longer indestructible-flagged while in card form. pai radios now short out if they are forcefully collapsed from damage." diff --git a/html/changelogs/AutoChangeLog-pr-10193.yml b/html/changelogs/AutoChangeLog-pr-10193.yml new file mode 100644 index 0000000000..b432eb74a3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10193.yml @@ -0,0 +1,4 @@ +author: "Commandersand" +delete-after: True +changes: + - tweak: "added two words to clown filter" diff --git a/html/changelogs/AutoChangeLog-pr-10195.yml b/html/changelogs/AutoChangeLog-pr-10195.yml new file mode 100644 index 0000000000..be8ed0ce76 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10195.yml @@ -0,0 +1,5 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixes a few negative quirks not being properly removed when deleted." + - tweak: "Phobia and mute quirks are no longer cheesed by brain surgery grade healing or medicines." diff --git a/html/changelogs/AutoChangeLog-pr-10197.yml b/html/changelogs/AutoChangeLog-pr-10197.yml new file mode 100644 index 0000000000..05545c066c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10197.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed double-flavour (and bland custom) ice creams." diff --git a/html/changelogs/AutoChangeLog-pr-10198.yml b/html/changelogs/AutoChangeLog-pr-10198.yml new file mode 100644 index 0000000000..3414258d84 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10198.yml @@ -0,0 +1,4 @@ +author: "AnturK" +delete-after: True +changes: + - bugfix: "Fixed ranged syndicate mobs stormtrooper training." diff --git a/html/changelogs/AutoChangeLog-pr-10430.yml b/html/changelogs/AutoChangeLog-pr-10200.yml similarity index 53% rename from html/changelogs/AutoChangeLog-pr-10430.yml rename to html/changelogs/AutoChangeLog-pr-10200.yml index 4fd03a5b2b..8d4782ee98 100644 --- a/html/changelogs/AutoChangeLog-pr-10430.yml +++ b/html/changelogs/AutoChangeLog-pr-10200.yml @@ -1,4 +1,4 @@ author: "kevinz000" delete-after: True changes: - - balance: "nuclear fist buffed." + - rscadd: "added 8 character save slots" diff --git a/html/changelogs/AutoChangeLog-pr-10203.yml b/html/changelogs/AutoChangeLog-pr-10203.yml new file mode 100644 index 0000000000..7cb4df817b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10203.yml @@ -0,0 +1,5 @@ +author: "DeltaFire15" +delete-after: True +changes: + - tweak: "changed mecha internals access for some special mechs." + - tweak: "no more mech maintenance access for engineers." diff --git a/html/changelogs/AutoChangeLog-pr-10204.yml b/html/changelogs/AutoChangeLog-pr-10204.yml new file mode 100644 index 0000000000..ad5a872bc0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10204.yml @@ -0,0 +1,5 @@ +author: "r4d6" +delete-after: True +changes: + - rscadd: "Added Handshakes" + - rscadd: "Added Nose booping" diff --git a/html/changelogs/AutoChangeLog-pr-10207.yml b/html/changelogs/AutoChangeLog-pr-10207.yml new file mode 100644 index 0000000000..c451475dfa --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10207.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed Pubbystation's wall Nanomeds being inconsistent with other stations'." diff --git a/html/changelogs/AutoChangeLog-pr-10210.yml b/html/changelogs/AutoChangeLog-pr-10210.yml new file mode 100644 index 0000000000..39167dee25 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10210.yml @@ -0,0 +1,4 @@ +author: "kevinz000" +delete-after: True +changes: + - rscadd: "Cargo shuttle now silently ignores slaughter demons/revenants instead of being blocked even while they are jaunted. A drawback is that manifested ones can't block it either, any more." diff --git a/html/changelogs/AutoChangeLog-pr-10214.yml b/html/changelogs/AutoChangeLog-pr-10214.yml new file mode 100644 index 0000000000..fe5df9f22c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10214.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "dextrous simplemobs can now swap action intent with 1, 2, 3, 4 now. Just like humies, ayys and monkys." diff --git a/html/changelogs/AutoChangeLog-pr-10216.yml b/html/changelogs/AutoChangeLog-pr-10216.yml new file mode 100644 index 0000000000..69daa62448 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10216.yml @@ -0,0 +1,8 @@ +author: "Nervere and subject217, Militaires, py01, nemvar" +delete-after: True +changes: + - balance: "The cook's CQC now only works when in the kitchen or the kitchen backroom." + - spellcheck: "corrected CQC help instructions" + - bugfix: "CQC and Sleeping Carp are properly logged." + - tweak: "CQC can passively grab targets when not on grab intent. Passive grabs do not count towards combos for CQC or Sleeping carp." + - code_imp: "Martial Art and NOGUN cleanup." diff --git a/html/changelogs/AutoChangeLog-pr-10218.yml b/html/changelogs/AutoChangeLog-pr-10218.yml new file mode 100644 index 0000000000..fb05465cbe --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10218.yml @@ -0,0 +1,4 @@ +author: "GrayRachnid" +delete-after: True +changes: + - bugfix: "fixes consistency" diff --git a/html/changelogs/AutoChangeLog-pr-10224.yml b/html/changelogs/AutoChangeLog-pr-10224.yml deleted file mode 100644 index b7d07abe5c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10224.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Seris02" -delete-after: True -changes: - - tweak: "made it so trait blacklisting removes random positives instead of removing everything" diff --git a/html/changelogs/AutoChangeLog-pr-10225.yml b/html/changelogs/AutoChangeLog-pr-10225.yml new file mode 100644 index 0000000000..964cc68223 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10225.yml @@ -0,0 +1,5 @@ +author: "BlueWildrose" +delete-after: True +changes: + - bugfix: "Fixed stargazers being unable to link to themselves if mindshielded or if holding psionic shielding devices (tinfoil hats) when the species is set." + - bugfix: "Fixes non-roundstart slimes being unable to wag their tail." diff --git a/html/changelogs/AutoChangeLog-pr-10483.yml b/html/changelogs/AutoChangeLog-pr-10227.yml similarity index 58% rename from html/changelogs/AutoChangeLog-pr-10483.yml rename to html/changelogs/AutoChangeLog-pr-10227.yml index 1f016b1591..5d9446d045 100644 --- a/html/changelogs/AutoChangeLog-pr-10483.yml +++ b/html/changelogs/AutoChangeLog-pr-10227.yml @@ -1,4 +1,4 @@ author: "Putnam3145" delete-after: True changes: - - bugfix: "Limb damage works now" + - bugfix: "whoops broke quirks" diff --git a/html/changelogs/AutoChangeLog-pr-10463.yml b/html/changelogs/AutoChangeLog-pr-10228.yml similarity index 51% rename from html/changelogs/AutoChangeLog-pr-10463.yml rename to html/changelogs/AutoChangeLog-pr-10228.yml index 70e97975ce..ccc386bbcb 100644 --- a/html/changelogs/AutoChangeLog-pr-10463.yml +++ b/html/changelogs/AutoChangeLog-pr-10228.yml @@ -1,4 +1,4 @@ author: "Putnam3145" delete-after: True changes: - - config: "Random engines are now weighted." + - bugfix: "quirks work" diff --git a/html/changelogs/AutoChangeLog-pr-10338.yml b/html/changelogs/AutoChangeLog-pr-10231.yml similarity index 64% rename from html/changelogs/AutoChangeLog-pr-10338.yml rename to html/changelogs/AutoChangeLog-pr-10231.yml index c4816a3fbe..7caf65b09f 100644 --- a/html/changelogs/AutoChangeLog-pr-10338.yml +++ b/html/changelogs/AutoChangeLog-pr-10231.yml @@ -1,4 +1,4 @@ author: "Seris02" delete-after: True changes: - - rscadd: "marshmallow" + - bugfix: "the sprites" diff --git a/html/changelogs/AutoChangeLog-pr-10232.yml b/html/changelogs/AutoChangeLog-pr-10232.yml new file mode 100644 index 0000000000..479012a868 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10232.yml @@ -0,0 +1,4 @@ +author: "DeltaFire15" +delete-after: True +changes: + - tweak: "All heads of staff can now message CC" diff --git a/html/changelogs/AutoChangeLog-pr-10235.yml b/html/changelogs/AutoChangeLog-pr-10235.yml new file mode 100644 index 0000000000..ca8e4da164 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10235.yml @@ -0,0 +1,4 @@ +author: "kevinz000" +delete-after: True +changes: + - balance: "flashbangs process light/sound separately and uses viewers(), so xray users beware." diff --git a/html/changelogs/AutoChangeLog-pr-10237.yml b/html/changelogs/AutoChangeLog-pr-10237.yml new file mode 100644 index 0000000000..0a3b481d8c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10237.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Stops humanoids whose skin_tone variable is set to \"albino\" from showing up as pale when examined should their species not use skintones anyway." diff --git a/html/changelogs/AutoChangeLog-pr-10238.yml b/html/changelogs/AutoChangeLog-pr-10238.yml deleted file mode 100644 index dda40c86c9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10238.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "SpaceManiac, bobbahbrown, ShizCalev, SpaceManiac (ported by Ghommie)" -delete-after: True -changes: - - code_imp: "It is now possible to set a different most-base-turf per z-level." - - spellcheck: "Removed unlawful reference to Disney's Star Wars franchise in map logging." - - tweak: "Moved mapping related errors to their own log file." - - bugfix: "Destruction on Lavaland will no longer reveal space in rare situations." diff --git a/html/changelogs/AutoChangeLog-pr-10242.yml b/html/changelogs/AutoChangeLog-pr-10242.yml new file mode 100644 index 0000000000..017c3f99bd --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10242.yml @@ -0,0 +1,4 @@ +author: "nemvar" +delete-after: True +changes: + - code_imp: "Refactored the visibility of reagents for mobs." diff --git a/html/changelogs/AutoChangeLog-pr-10245.yml b/html/changelogs/AutoChangeLog-pr-10245.yml new file mode 100644 index 0000000000..a618bfc76b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10245.yml @@ -0,0 +1,5 @@ +author: "r4d6" +delete-after: True +changes: + - rscadd: "Added submaps for the SM, Tesla and Singulo" + - rscadd: "Added a placeholder on Boxstation for the Engines" diff --git a/html/changelogs/AutoChangeLog-pr-10246.yml b/html/changelogs/AutoChangeLog-pr-10246.yml new file mode 100644 index 0000000000..73b2b24ee8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10246.yml @@ -0,0 +1,4 @@ +author: "kevinz000" +delete-after: True +changes: + - tweak: "Stat() slowed down for anti-lag measures." diff --git a/html/changelogs/AutoChangeLog-pr-10247.yml b/html/changelogs/AutoChangeLog-pr-10247.yml deleted file mode 100644 index b78e5c415d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10247.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Seris02" -delete-after: True -changes: - - rscadd: "added atmos holofirelocks and temperature blocking" - - tweak: "tweaked how atmos holofan looks" diff --git a/html/changelogs/AutoChangeLog-pr-10250.yml b/html/changelogs/AutoChangeLog-pr-10250.yml new file mode 100644 index 0000000000..8e32083f09 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10250.yml @@ -0,0 +1,4 @@ +author: "Toriate" +delete-after: True +changes: + - rscadd: "Polychromic shorts now have a digitigrade state" diff --git a/html/changelogs/AutoChangeLog-pr-10254.yml b/html/changelogs/AutoChangeLog-pr-10254.yml new file mode 100644 index 0000000000..59fefc5703 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10254.yml @@ -0,0 +1,4 @@ +author: "r4d6" +delete-after: True +changes: + - bugfix: "fixed Nose boops not triggering" diff --git a/html/changelogs/AutoChangeLog-pr-10255.yml b/html/changelogs/AutoChangeLog-pr-10255.yml deleted file mode 100644 index ebaccd0af6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10255.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Xantholne" -delete-after: True -changes: - - bugfix: "Christmas clothes that where missing stuff should work again" diff --git a/html/changelogs/AutoChangeLog-pr-10256.yml b/html/changelogs/AutoChangeLog-pr-10256.yml deleted file mode 100644 index eb14f716cc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10256.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Putnam" -delete-after: True -changes: - - rscadd: "Alcohol intolerance trait, which forces vomiting on any alcohol ingestion" diff --git a/html/changelogs/AutoChangeLog-pr-10257.yml b/html/changelogs/AutoChangeLog-pr-10257.yml new file mode 100644 index 0000000000..d18807c1eb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10257.yml @@ -0,0 +1,4 @@ +author: "DeltaFire15" +delete-after: True +changes: + - code_imp: "Removes a magicnumber" diff --git a/html/changelogs/AutoChangeLog-pr-10263.yml b/html/changelogs/AutoChangeLog-pr-10263.yml new file mode 100644 index 0000000000..a8fa2b9e26 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10263.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - tweak: "Buzz fuzz now only has a 5% to give honey and will now give 1u of sugar not 2" diff --git a/html/changelogs/AutoChangeLog-pr-10264.yml b/html/changelogs/AutoChangeLog-pr-10264.yml new file mode 100644 index 0000000000..71497e423b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10264.yml @@ -0,0 +1,5 @@ +author: "Seris02" +delete-after: True +changes: + - rscadd: "added the runed and brass winter coats (cosmetic ratvarian/narsian)" + - tweak: "how the narsian/ratvarian coats can be made" diff --git a/html/changelogs/AutoChangeLog-pr-10278.yml b/html/changelogs/AutoChangeLog-pr-10265.yml similarity index 52% rename from html/changelogs/AutoChangeLog-pr-10278.yml rename to html/changelogs/AutoChangeLog-pr-10265.yml index 76ada12f20..f42e97388d 100644 --- a/html/changelogs/AutoChangeLog-pr-10278.yml +++ b/html/changelogs/AutoChangeLog-pr-10265.yml @@ -1,4 +1,4 @@ author: "Trilbyspaceclone" delete-after: True changes: - - bugfix: "Fermi plushie can be made once again" + - rscadd: "Blaster shotguns back into armory" diff --git a/html/changelogs/AutoChangeLog-pr-10266.yml b/html/changelogs/AutoChangeLog-pr-10266.yml new file mode 100644 index 0000000000..7fc7f11682 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10266.yml @@ -0,0 +1,5 @@ +author: "shellspeed1" +delete-after: True +changes: + - rscadd: "Adds Insect markings" + - rscadd: "Adds three new moth wings." diff --git a/html/changelogs/AutoChangeLog-pr-10268.yml b/html/changelogs/AutoChangeLog-pr-10268.yml new file mode 100644 index 0000000000..f4f4991202 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10268.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - rscdel: "Removed the old (almost) unused roboticist encryption key and headset." diff --git a/html/changelogs/AutoChangeLog-pr-10269.yml b/html/changelogs/AutoChangeLog-pr-10269.yml new file mode 100644 index 0000000000..f38bb346e3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10269.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed goose meat." diff --git a/html/changelogs/AutoChangeLog-pr-10270.yml b/html/changelogs/AutoChangeLog-pr-10270.yml deleted file mode 100644 index b47a249f9a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10270.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixed the secret sauce recipe being randomized every round." diff --git a/html/changelogs/AutoChangeLog-pr-10274.yml b/html/changelogs/AutoChangeLog-pr-10274.yml new file mode 100644 index 0000000000..a1b448344f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10274.yml @@ -0,0 +1,4 @@ +author: "kappa-sama" +delete-after: True +changes: + - bugfix: "broodmother baby lag" diff --git a/html/changelogs/AutoChangeLog-pr-10281.yml b/html/changelogs/AutoChangeLog-pr-10281.yml new file mode 100644 index 0000000000..0d6c353703 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10281.yml @@ -0,0 +1,5 @@ +author: "Hatterhat" +delete-after: True +changes: + - rscadd: ".357 speedloaders can now be printed with the Advanced Illegal Ballistics node on the tech tree!" + - balance: "okay so i may have given the .357 an extra speedloader at the same cost but it comes in a box now" diff --git a/html/changelogs/AutoChangeLog-pr-10282.yml b/html/changelogs/AutoChangeLog-pr-10282.yml new file mode 100644 index 0000000000..bf4f74c84a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10282.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - config: "Buncha dynamic config tweaks" diff --git a/html/changelogs/AutoChangeLog-pr-10283.yml b/html/changelogs/AutoChangeLog-pr-10283.yml new file mode 100644 index 0000000000..435a0c7ca9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10283.yml @@ -0,0 +1,4 @@ +author: "Detective-Google" +delete-after: True +changes: + - bugfix: "short hair 80's is no longer jank" diff --git a/html/changelogs/AutoChangeLog-pr-10285.yml b/html/changelogs/AutoChangeLog-pr-10285.yml deleted file mode 100644 index 89b0bbae43..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10285.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixed singularity pulls duping rods out of engine floors." diff --git a/html/changelogs/AutoChangeLog-pr-10289.yml b/html/changelogs/AutoChangeLog-pr-10289.yml new file mode 100644 index 0000000000..4907620fdc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10289.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed a little door assembly glass dupe exploit" diff --git a/html/changelogs/AutoChangeLog-pr-10296.yml b/html/changelogs/AutoChangeLog-pr-10296.yml new file mode 100644 index 0000000000..22aa8cca14 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10296.yml @@ -0,0 +1,5 @@ +author: "Useroth" +delete-after: True +changes: + - rscadd: "Ghost cafe spawner. For letting people spawn as their own character in the ninja holding facility. It bypasses the usual check, so people who have suicided/ghosted/cryod may use it." + - rscadd: "Dorms in the ninja holding facility." diff --git a/html/changelogs/AutoChangeLog-pr-10298.yml b/html/changelogs/AutoChangeLog-pr-10298.yml new file mode 100644 index 0000000000..981e1f5314 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10298.yml @@ -0,0 +1,4 @@ +author: "kappa-sama" +delete-after: True +changes: + - balance: "you can no longer get 100k credits by spending 4k roundstart" diff --git a/html/changelogs/AutoChangeLog-pr-10301.yml b/html/changelogs/AutoChangeLog-pr-10301.yml deleted file mode 100644 index 2acac559e9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10301.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "range on Engi Tray scanners and Rad-Scanners" diff --git a/html/changelogs/AutoChangeLog-pr-10319.yml b/html/changelogs/AutoChangeLog-pr-10319.yml deleted file mode 100644 index 88235aab8e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10319.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Seris02" -delete-after: True -changes: - - rscadd: "adds coconut" - - rscadd: "adds a coconut bong" diff --git a/html/changelogs/AutoChangeLog-pr-10329.yml b/html/changelogs/AutoChangeLog-pr-10329.yml deleted file mode 100644 index e5d78ddf96..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10329.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - code_imp: "reagent IDs have been removed in favor using reagent typepaths where applicable" - - bugfix: "mechas, borg hyposprays etc no longer display internal reagent ids to the player" diff --git a/html/changelogs/AutoChangeLog-pr-10330.yml b/html/changelogs/AutoChangeLog-pr-10330.yml deleted file mode 100644 index b2a46ef605..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10330.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "keronshb" -delete-after: True -changes: - - rscadd: "Adds new features for nanites" diff --git a/html/changelogs/AutoChangeLog-pr-10333.yml b/html/changelogs/AutoChangeLog-pr-10333.yml deleted file mode 100644 index b5c11a4646..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10333.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "Grass now makes light beer when distilled" diff --git a/html/changelogs/AutoChangeLog-pr-10337.yml b/html/changelogs/AutoChangeLog-pr-10337.yml deleted file mode 100644 index 370a8fdc04..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10337.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Seris02" -delete-after: True -changes: - - rscadd: "Auto ooc" - - admin: "changed \"assume direct control\" from m.ckey = src.ckey to adminmob.transfer_ckey(M) so it works with auto ooc" diff --git a/html/changelogs/AutoChangeLog-pr-10344.yml b/html/changelogs/AutoChangeLog-pr-10344.yml deleted file mode 100644 index e0381c6a43..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10344.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Chestbursters won't delete the host's brain somewhat anymore." diff --git a/html/changelogs/AutoChangeLog-pr-10345.yml b/html/changelogs/AutoChangeLog-pr-10345.yml deleted file mode 100644 index a95653cdda..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10345.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "allows bandoliers to hold any ammo type as long as it has a casing" diff --git a/html/changelogs/AutoChangeLog-pr-10349.yml b/html/changelogs/AutoChangeLog-pr-10349.yml deleted file mode 100644 index fad3179c6e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10349.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "KathrinBailey" -delete-after: True -changes: - - rscadd: "Empty engineering lockers for mappers." - - rscadd: "Industrial welding tools to the engineer welding locker." - - rscdel: "Removed the multitool, airlock painter, mechanical toolbox, brown sneakers, hazard vest and airlock painter from the CE's locker." diff --git a/html/changelogs/AutoChangeLog-pr-10350.yml b/html/changelogs/AutoChangeLog-pr-10350.yml deleted file mode 100644 index 580f1d68cf..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10350.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Putnam3145" -delete-after: True -changes: - - rscadd: "Ghost cafe mobs can now ghostize" - - rscadd: "Ghost cafe now has a cremator" - - rscadd: "Ghost cafe mobs are now eligible for ghost roles" - - refactor: "Ghost roles now use an element for eligibility purposes" diff --git a/html/changelogs/AutoChangeLog-pr-10356.yml b/html/changelogs/AutoChangeLog-pr-10356.yml deleted file mode 100644 index 1016b559ee..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10356.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Bhijn" -delete-after: True -changes: - - rscadd: "Added a preference to make the sprint hotkey be a toggle instead of a hold bind" - - rscadd: "Added a preference to bind the sprint hotkey to space instead of shift." diff --git a/html/changelogs/AutoChangeLog-pr-10357.yml b/html/changelogs/AutoChangeLog-pr-10357.yml deleted file mode 100644 index 048baa3041..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10357.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Putnam3145" -delete-after: True -changes: - - bugfix: "You can toggle some prefs properly now." diff --git a/html/changelogs/AutoChangeLog-pr-10358.yml b/html/changelogs/AutoChangeLog-pr-10358.yml deleted file mode 100644 index a578e6e336..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10358.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - server: "Cleans out the last years of changlogs" diff --git a/html/changelogs/AutoChangeLog-pr-10361.yml b/html/changelogs/AutoChangeLog-pr-10361.yml deleted file mode 100644 index 0224bdcb49..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10361.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CameronWoof" -delete-after: True -changes: - - rscadd: "Ghost Cafe patrons now spawn with chameleon kits. Dress up! Be fancy!" diff --git a/html/changelogs/AutoChangeLog-pr-10362.yml b/html/changelogs/AutoChangeLog-pr-10362.yml deleted file mode 100644 index f92e16302a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10362.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "rouge cases of #$39; in bottle/pill/patch/condiments" diff --git a/html/changelogs/AutoChangeLog-pr-10364.yml b/html/changelogs/AutoChangeLog-pr-10364.yml deleted file mode 100644 index 8834c494ad..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10364.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "kevinz000" -delete-after: True -changes: - - bugfix: "telescopic iv drips now have the proper sanity checks for deployment." diff --git a/html/changelogs/AutoChangeLog-pr-10365.yml b/html/changelogs/AutoChangeLog-pr-10365.yml deleted file mode 100644 index f7ba047fc7..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10365.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Putnam3145" -delete-after: True -changes: - - bugfix: "no ass slap is no longer the same thing as no aphro" diff --git a/html/changelogs/AutoChangeLog-pr-10366.yml b/html/changelogs/AutoChangeLog-pr-10366.yml deleted file mode 100644 index ec8d234edd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10366.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Hatterhat" -delete-after: True -changes: - - balance: "Beakers are generally more useful now, with slight capacity increases." - - tweak: "Transfer amounts are different now. Adjust your muscle memory to compensate." diff --git a/html/changelogs/AutoChangeLog-pr-10368.yml b/html/changelogs/AutoChangeLog-pr-10368.yml deleted file mode 100644 index e6486f2815..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10368.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Hatterhat" -delete-after: True -changes: - - balance: "ore redemption machines actually get affected by lasers again kthx" diff --git a/html/changelogs/AutoChangeLog-pr-10369.yml b/html/changelogs/AutoChangeLog-pr-10369.yml deleted file mode 100644 index c292d948fb..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10369.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Hatterhat" -delete-after: True -changes: - - tweak: "crusher trophy drop chance on mining mobs increased to 1 in 4 (from 1 in 20)" diff --git a/html/changelogs/AutoChangeLog-pr-10370.yml b/html/changelogs/AutoChangeLog-pr-10370.yml deleted file mode 100644 index 6674fd2e17..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10370.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Hatterhat" -delete-after: True -changes: - - bugfix: "Blood-drunk buff from blood-drunk eye crusher trophy is less likely to cripple its user." diff --git a/html/changelogs/AutoChangeLog-pr-10372.yml b/html/changelogs/AutoChangeLog-pr-10372.yml deleted file mode 100644 index 6bb60c3d8d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10372.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Hatterhat" -delete-after: True -changes: - - tweak: "Forcefield projectors now fit on toolbelts." - - imageadd: "New sprites for ATMOS holofan and forcefield projectors!" diff --git a/html/changelogs/AutoChangeLog-pr-10374.yml b/html/changelogs/AutoChangeLog-pr-10374.yml deleted file mode 100644 index 376f49a4d4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10374.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Bhijn helped" -delete-after: True -changes: - - bugfix: "Fixes Dragon's Tooth Sword 50% armor penetration by making it 35%" diff --git a/html/changelogs/AutoChangeLog-pr-10378.yml b/html/changelogs/AutoChangeLog-pr-10378.yml deleted file mode 100644 index c7ab7d42c1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10378.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "EmeraldSundisk" -delete-after: True -changes: - - rscadd: "Adds a sign outside MetaStation's custodial closet" diff --git a/html/changelogs/AutoChangeLog-pr-10379.yml b/html/changelogs/AutoChangeLog-pr-10379.yml deleted file mode 100644 index 9623f815d6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10379.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ryll/Shaps, ported by Hatterhat" -delete-after: True -changes: - - rscadd: "Point-blanking people with shotguns actually throws them backwards!" diff --git a/html/changelogs/AutoChangeLog-pr-10380.yml b/html/changelogs/AutoChangeLog-pr-10380.yml deleted file mode 100644 index 4604329137..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10380.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Unit2E & JMoldy, ported by Hatterhat" -delete-after: True -changes: - - balance: "the powerfist now punches people away at high velocity depending on setting." - - rscadd: "the powerfist now leaks the gas it uses onto the tile you're on." - - tweak: "Adds weak punch variations for empty and near-empty punching." diff --git a/html/changelogs/AutoChangeLog-pr-10383.yml b/html/changelogs/AutoChangeLog-pr-10383.yml deleted file mode 100644 index c6787bbafe..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10383.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "kevinz000" -delete-after: True -changes: - - bugfix: "megafauna can hear again" diff --git a/html/changelogs/AutoChangeLog-pr-10384.yml b/html/changelogs/AutoChangeLog-pr-10384.yml deleted file mode 100644 index 315a62dadd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10384.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Tlaltecuhtli, Nemvar, Trilby, Hatterhat" -delete-after: True -changes: - - rscadd: "russian surplus crate, sec ammo crate, meat/veggie/fruit crate, rped crate, bomb suit crate, bio suit crate, parrot crate, chem crate, db crate" - - tweak: "lowered price of some crates which are overpriced for no reason aka the tablet crate and the mech circuits crates, track implant crate has also track .38 ammo" - - bugfix: "sectech vendor has a refill pack" diff --git a/html/changelogs/AutoChangeLog-pr-10388.yml b/html/changelogs/AutoChangeLog-pr-10388.yml deleted file mode 100644 index fd06a5db3f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10388.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CameronWoof" -delete-after: True -changes: - - rscadd: "Robots can now check the crew manifest from anywhere with the \"View Crew Manifest\" verb." diff --git a/html/changelogs/AutoChangeLog-pr-10399.yml b/html/changelogs/AutoChangeLog-pr-10399.yml deleted file mode 100644 index cbdb00630c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10399.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "kevinz000" -delete-after: True -changes: - - balance: "Cargo passive gen is now 500 down from 750." diff --git a/html/changelogs/AutoChangeLog-pr-10401.yml b/html/changelogs/AutoChangeLog-pr-10401.yml deleted file mode 100644 index 2aa8d91244..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10401.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "r4d6" -delete-after: True -changes: - - rscadd: "Added 3 SM Engine variations." diff --git a/html/changelogs/AutoChangeLog-pr-10403.yml b/html/changelogs/AutoChangeLog-pr-10403.yml deleted file mode 100644 index 321789a546..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10403.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "r4d6" -delete-after: True -changes: - - rscadd: "Added a way to make opaque plastic flaps -change: Change the already existing flap recipe to show that they are see-through" diff --git a/html/changelogs/AutoChangeLog-pr-10412.yml b/html/changelogs/AutoChangeLog-pr-10412.yml deleted file mode 100644 index b838dbb680..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10412.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - bugfix: "fixes matchboxes runtiming every time they spawn" diff --git a/html/changelogs/AutoChangeLog-pr-10413.yml b/html/changelogs/AutoChangeLog-pr-10413.yml deleted file mode 100644 index 6d6378675b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10413.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "nik707" -delete-after: True -changes: - - tweak: "engraving light_power from 1 to 0.3" diff --git a/html/changelogs/AutoChangeLog-pr-10420.yml b/html/changelogs/AutoChangeLog-pr-10420.yml deleted file mode 100644 index b719eca84c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10420.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "MrJWhit" -delete-after: True -changes: - - tweak: "Increases plasma usage in radiation collectors" diff --git a/html/changelogs/AutoChangeLog-pr-10427.yml b/html/changelogs/AutoChangeLog-pr-10427.yml deleted file mode 100644 index 5f4fe73988..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10427.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Hatterhat" -delete-after: True -changes: - - tweak: "tweaks some values around with beaker transfer amounts, adds a transfer value verb (altclick)" diff --git a/html/changelogs/AutoChangeLog-pr-10428.yml b/html/changelogs/AutoChangeLog-pr-10428.yml deleted file mode 100644 index 2cd635d0a2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10428.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Putnam3145" -delete-after: True -changes: - - balance: "Devastating bombs kills bomb armor'd mobs again" diff --git a/html/changelogs/AutoChangeLog-pr-10429.yml b/html/changelogs/AutoChangeLog-pr-10429.yml deleted file mode 100644 index cc83f8abb6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10429.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "Adds missing but needed flags to MASON RIG" diff --git a/html/changelogs/AutoChangeLog-pr-10433.yml b/html/changelogs/AutoChangeLog-pr-10433.yml deleted file mode 100644 index 036e74a804..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10433.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "kevinz000" -delete-after: True -changes: - - balance: "cogscarabs are now fulltile-hitbox." diff --git a/html/changelogs/AutoChangeLog-pr-10435.yml b/html/changelogs/AutoChangeLog-pr-10435.yml deleted file mode 100644 index 6b684a57a5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10435.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "FantasticFwoosh, ported by Hatterhat" -delete-after: True -changes: - - rscadd: "Both reagent universal enzyme & sacks of flour are now available for their respective costs from the biogenerator." - - rscadd: "New crafting recipies for donut boxes, eggboxes & candle boxes have been added to cardboard recipes for the collective benefit of service personnel and the station." diff --git a/html/changelogs/AutoChangeLog-pr-10437.yml b/html/changelogs/AutoChangeLog-pr-10437.yml deleted file mode 100644 index ee454f47b9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10437.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixed roundstart mushpeople being unable to MUSH PUUUUUUUUUUUUNCH!!" diff --git a/html/changelogs/AutoChangeLog-pr-10439.yml b/html/changelogs/AutoChangeLog-pr-10439.yml deleted file mode 100644 index 92b151b883..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10439.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "LetterN" -delete-after: True -changes: - - rscadd: "Doppler logs" diff --git a/html/changelogs/AutoChangeLog-pr-10440.yml b/html/changelogs/AutoChangeLog-pr-10440.yml deleted file mode 100644 index e942f4056f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10440.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Putnam3145" -delete-after: True -changes: - - rscadd: "Added a sort of \"game mode ban\" by way of having people rank their game modes favorite to least favorite after the secret/extended vote." - - bugfix: "Turns out the schulze scoring was written wrong and it was setting things to 0 that shouldn't have been, so that's fixed." diff --git a/html/changelogs/AutoChangeLog-pr-10452.yml b/html/changelogs/AutoChangeLog-pr-10452.yml deleted file mode 100644 index e51b9ff752..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10452.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Lattices can be examined yet again." diff --git a/html/changelogs/AutoChangeLog-pr-10457.yml b/html/changelogs/AutoChangeLog-pr-10457.yml deleted file mode 100644 index 203842b0b6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10457.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "r4d6" -delete-after: True -changes: - - rscadd: "Added a playback device" - - bugfix: "Made the Voice Analyzer actually care about languages" diff --git a/html/changelogs/AutoChangeLog-pr-10459.yml b/html/changelogs/AutoChangeLog-pr-10459.yml deleted file mode 100644 index 77de8eb193..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10459.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Putnam" -delete-after: True -changes: - - rscadd: "Cold-blooded quirk" diff --git a/html/changelogs/AutoChangeLog-pr-10465.yml b/html/changelogs/AutoChangeLog-pr-10465.yml deleted file mode 100644 index 26dff901b2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10465.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "Putnam3145" -delete-after: True -changes: - - rscadd: "Ghost dojo now has an autoylathe." - - rscdel: "Ghost dojo no longer has VR or modular computer access." - - tweak: "Ghost dojo mobs are pacifists." - - tweak: "Ghost dojo booze-o-mat is now all access." - - bugfix: "Ghost dojo crematorium now has a button." diff --git a/html/changelogs/AutoChangeLog-pr-10467.yml b/html/changelogs/AutoChangeLog-pr-10467.yml deleted file mode 100644 index 7fa379f088..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10467.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Seris02" -delete-after: True -changes: - - bugfix: "cardboard box speed" diff --git a/html/changelogs/AutoChangeLog-pr-10472.yml b/html/changelogs/AutoChangeLog-pr-10472.yml deleted file mode 100644 index 9404d70b7b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10472.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "keronshb" -delete-after: True -changes: - - bugfix: "fixed the missing icons from Dermal Button nanites" diff --git a/html/changelogs/AutoChangeLog-pr-10473.yml b/html/changelogs/AutoChangeLog-pr-10473.yml deleted file mode 100644 index f1821a3cce..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10473.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Bhijn" -delete-after: True -changes: - - bugfix: "server_hop can no longer be used to remotely lobotomize a spaceman" diff --git a/html/changelogs/AutoChangeLog-pr-10474.yml b/html/changelogs/AutoChangeLog-pr-10474.yml deleted file mode 100644 index ae7b5b3fcb..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10474.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Putnam3145" -delete-after: True -changes: - - bugfix: "Traitor objectives don't take a dump when they try to add an assassinate anymore" - - admin: "Objective removal with antag panel no longer commented out silently while still being an option that gives useful feedback on stuff it's not doing in any respect" diff --git a/html/changelogs/AutoChangeLog-pr-10485.yml b/html/changelogs/AutoChangeLog-pr-10485.yml deleted file mode 100644 index 6bf082f8ba..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10485.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Detective-Google" -delete-after: True -changes: - - tweak: "replaced the sprites with new ones requested." diff --git a/html/changelogs/AutoChangeLog-pr-10486.yml b/html/changelogs/AutoChangeLog-pr-10486.yml deleted file mode 100644 index 448bbc162c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10486.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Seris02" -delete-after: True -changes: - - tweak: "changed where the observe verb is." diff --git a/html/changelogs/AutoChangeLog-pr-10489.yml b/html/changelogs/AutoChangeLog-pr-10489.yml deleted file mode 100644 index 4e393bd4b1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10489.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Seris02" -delete-after: True -changes: - - tweak: "the way chameleon clothes update on change" - - bugfix: "chameleon cloak icon" diff --git a/html/changelogs/AutoChangeLog-pr-10495.yml b/html/changelogs/AutoChangeLog-pr-10495.yml deleted file mode 100644 index 02ffedf5fc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10495.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "kevinz000" -delete-after: True -changes: - - rscadd: "guests can now looc" diff --git a/html/changelogs/AutoChangeLog-pr-10497.yml b/html/changelogs/AutoChangeLog-pr-10497.yml deleted file mode 100644 index 5acb6f8c47..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10497.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - code_imp: "Makes more folders and files for uplink." diff --git a/html/changelogs/AutoChangeLog-pr-10498.yml b/html/changelogs/AutoChangeLog-pr-10498.yml deleted file mode 100644 index 986abc77c2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10498.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "kevinz000" -delete-after: True -changes: - - tweak: "tableslamming has 0.4 second cooldown instead of 0.8" diff --git a/html/changelogs/AutoChangeLog-pr-10505.yml b/html/changelogs/AutoChangeLog-pr-10505.yml deleted file mode 100644 index dd0932c50e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10505.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "LetterN" -delete-after: True -changes: - - tweak: "Shockcolar and electropack uses the new signaler ui" - - tweak: "Renaming shockcolar requires a pen" diff --git a/html/changelogs/AutoChangeLog-pr-10511.yml b/html/changelogs/AutoChangeLog-pr-10511.yml deleted file mode 100644 index 5f3bf739cb..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10511.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "kevinz000" -delete-after: True -changes: - - bugfix: "health analyzers now work" diff --git a/html/changelogs/AutoChangeLog-pr-10523.yml b/html/changelogs/AutoChangeLog-pr-10523.yml deleted file mode 100644 index 999fc1dd92..0000000000 --- a/html/changelogs/AutoChangeLog-pr-10523.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Hatterhat" -delete-after: True -changes: - - bugfix: "Explorer hoods on standard explorer suits can be reinforced with goliath hide plates again." diff --git a/html/changelogs/AutoChangeLog-pr-9538.yml b/html/changelogs/AutoChangeLog-pr-9538.yml new file mode 100644 index 0000000000..a036a8d24a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9538.yml @@ -0,0 +1,5 @@ +author: "kevinz000" +delete-after: True +changes: + - balance: "Combat defibs now instant stun on disarm rather than 1 second again" + - balance: "Defibs are now always emagged when emagged with an emag rather than EMP." diff --git a/html/changelogs/AutoChangeLog-pr-9563.yml b/html/changelogs/AutoChangeLog-pr-9563.yml new file mode 100644 index 0000000000..47fab1530d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9563.yml @@ -0,0 +1,4 @@ +author: "Fermis" +delete-after: True +changes: + - tweak: "tweaked how super bases/acids work but limiting them" diff --git a/html/changelogs/AutoChangeLog-pr-9596.yml b/html/changelogs/AutoChangeLog-pr-9596.yml new file mode 100644 index 0000000000..3f924b85ab --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9596.yml @@ -0,0 +1,11 @@ +author: "Linzolle" +delete-after: True +changes: + - rscadd: "Abductor chem dispenser, and added it to the abductor console." + - rscadd: "\"Superlingual matrix\" to the abductor console. It's the abductor's tongue. Can be used to link it to your abductor communication channel and then implanted into a test subject." + - rscadd: "Shrink ray and added it to the abductor console." + - soundadd: "Shrink ray sound effect (its the fucking mega man death sound)" + - rscadd: "special jumpsuit for abductors" + - imageadd: "abductor jumpsuit, including digi version if a digitigrade person somehow manages to get their hands on it. sprites for the shrink ray and chem dispenser." + - rscadd: "new glands to play with, including the all-access gland, the quantum gland, and the blood type randomiser." + - code_imp: "split every gland into its own file instead of all being in one file" diff --git a/html/changelogs/AutoChangeLog-pr-9629.yml b/html/changelogs/AutoChangeLog-pr-9629.yml new file mode 100644 index 0000000000..f0419e4ce9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9629.yml @@ -0,0 +1,4 @@ +author: "kevinz000" +delete-after: True +changes: + - bugfix: "aooc toggling now only broadcasts to antagonists" diff --git a/html/changelogs/AutoChangeLog-pr-9736.yml b/html/changelogs/AutoChangeLog-pr-9736.yml new file mode 100644 index 0000000000..768474b8ef --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9736.yml @@ -0,0 +1,4 @@ +author: "kevinz000" +delete-after: True +changes: + - code_imp: "Antag rep proc is now easier to read and supports returning a list." diff --git a/html/changelogs/AutoChangeLog-pr-9747.yml b/html/changelogs/AutoChangeLog-pr-9747.yml new file mode 100644 index 0000000000..01caf36136 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9747.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed AI holopad speech text being small and whispers that in multiple exclamation marks echo through multiple areas." diff --git a/html/changelogs/AutoChangeLog-pr-9751.yml b/html/changelogs/AutoChangeLog-pr-9751.yml new file mode 100644 index 0000000000..a2c22468c3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9751.yml @@ -0,0 +1,5 @@ +author: "Seris02" +delete-after: True +changes: + - rscadd: "Added Rising Bass and the shifting scroll." + - tweak: "Changes the martial arts scroll in the uplink to \"Sleeping Carp Scroll\"" diff --git a/html/changelogs/AutoChangeLog-pr-9830.yml b/html/changelogs/AutoChangeLog-pr-9830.yml new file mode 100644 index 0000000000..86fb9c439a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9830.yml @@ -0,0 +1,4 @@ +author: "DeltaFire15" +delete-after: True +changes: + - balance: "Rebalanced cult vs cult stun effects to debuff instead of stun" diff --git a/html/changelogs/AutoChangeLog-pr-9856.yml b/html/changelogs/AutoChangeLog-pr-9856.yml deleted file mode 100644 index 697c1c78f5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9856.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - rscadd: "Refactored code to allow all living mobs to use shields and not only humans." - - tweak: "Monkys will now retaliate against aliens attacking them (as if they even posed a threat to start with)." diff --git a/html/changelogs/AutoChangeLog-pr-9878.yml b/html/changelogs/AutoChangeLog-pr-9878.yml deleted file mode 100644 index ef9c704003..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9878.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - tweak: "add a click cooldown to the overly spammable table slamming." diff --git a/html/changelogs/AutoChangeLog-pr-9894.yml b/html/changelogs/AutoChangeLog-pr-9894.yml new file mode 100644 index 0000000000..6e4b5c09d0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9894.yml @@ -0,0 +1,5 @@ +author: "Putnam3145" +delete-after: True +changes: + - balance: "Bomb armor now acts like other armor types." + - balance: "Devastation-level explosions on armorless people no longer destroys everything in their bags." diff --git a/html/changelogs/AutoChangeLog-pr-9903.yml b/html/changelogs/AutoChangeLog-pr-9903.yml new file mode 100644 index 0000000000..0c21b30fd6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9903.yml @@ -0,0 +1,4 @@ +author: "PersianXerxes" +delete-after: True +changes: + - rscdel: "Removed night vision quirk" diff --git a/html/changelogs/AutoChangeLog-pr-9925.yml b/html/changelogs/AutoChangeLog-pr-9925.yml new file mode 100644 index 0000000000..6e2f44fc7b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9925.yml @@ -0,0 +1,4 @@ +author: "Linzolle" +delete-after: True +changes: + - tweak: "cosmic coat crafting recipe changed to coat + cosmic bedsheet" diff --git a/html/changelogs/AutoChangeLog-pr-9940.yml b/html/changelogs/AutoChangeLog-pr-9940.yml new file mode 100644 index 0000000000..75563c69b4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9940.yml @@ -0,0 +1,4 @@ +author: "Putnam" +delete-after: True +changes: + - tweak: "Dynamic rulesets have lower weight if a round recently featured them (except traitor)." diff --git a/html/changelogs/AutoChangeLog-pr-9950.yml b/html/changelogs/AutoChangeLog-pr-9950.yml new file mode 100644 index 0000000000..6d328aa131 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9950.yml @@ -0,0 +1,4 @@ +author: "kevinz000" +delete-after: True +changes: + - balance: "Clockwork marauders are now on a configured summon cooldown if being summoned on station. They also rapidly bleed health while in or next to space. And they glow brighter." diff --git a/html/changelogs/AutoChangeLog-pr-9970.yml b/html/changelogs/AutoChangeLog-pr-9970.yml new file mode 100644 index 0000000000..ebeaa326e7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9970.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - rscdel: "Removed literally atrocious polka dotted accessories. They were even more atrocious than the yellow horrible tie." diff --git a/html/changelogs/AutoChangeLog-pr-9971.yml b/html/changelogs/AutoChangeLog-pr-9971.yml new file mode 100644 index 0000000000..951b9dfc81 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9971.yml @@ -0,0 +1,8 @@ +author: "Xantholne" +delete-after: True +changes: + - rscadd: "Santa Hats to Loadout and Clothesmate" + - rscadd: "Christmas Wintercoats to Loadout and Clothesmate" + - rscadd: "Christmas male and female uniforms to loadout and Clothesmate" + - rscadd: "Red, Green, and Traditional Santa boots to loadout and Clothesmate" + - rscadd: "Christmas Socks, Red candycane socks, Green candycane socks to sock selection" diff --git a/html/changelogs/AutoChangeLog-pr-9983.yml b/html/changelogs/AutoChangeLog-pr-9983.yml new file mode 100644 index 0000000000..b8cd4f0f5b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9983.yml @@ -0,0 +1,6 @@ +author: "Ghommie, Skogol" +delete-after: True +changes: + - refactor: "refactored altclick interaction to allow alt-click interactable objects to parent call without forcing the turf contents stat menu open." + - tweak: "Alt clicking will no longer show turf contents for items inside bags etc." + - tweak: "Alt clicking the source of your turf contents stat menu will now close said menu." diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 51e9453087..e13ce10347 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/mob/actions/actions_items.dmi b/icons/mob/actions/actions_items.dmi index 43c9d20a93..39e2ea0584 100644 Binary files a/icons/mob/actions/actions_items.dmi and b/icons/mob/actions/actions_items.dmi differ diff --git a/icons/mob/custom_w.dmi b/icons/mob/custom_w.dmi index 7452d63134..a73da3aa0c 100644 Binary files a/icons/mob/custom_w.dmi and b/icons/mob/custom_w.dmi differ diff --git a/icons/mob/feet.dmi b/icons/mob/feet.dmi index bebfb7c2e0..2188952740 100644 Binary files a/icons/mob/feet.dmi and b/icons/mob/feet.dmi differ diff --git a/icons/mob/feet_digi.dmi b/icons/mob/feet_digi.dmi index 028dc67e72..e0a9cd462d 100644 Binary files a/icons/mob/feet_digi.dmi and b/icons/mob/feet_digi.dmi differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 6bba2fc7fb..365ed5afd9 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/inhands/equipment/toolbox_lefthand.dmi b/icons/mob/inhands/equipment/toolbox_lefthand.dmi index c0caf78855..801df7abb8 100644 Binary files a/icons/mob/inhands/equipment/toolbox_lefthand.dmi and b/icons/mob/inhands/equipment/toolbox_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/toolbox_righthand.dmi b/icons/mob/inhands/equipment/toolbox_righthand.dmi index 1d016e35a9..f38ddfc9a4 100644 Binary files a/icons/mob/inhands/equipment/toolbox_righthand.dmi and b/icons/mob/inhands/equipment/toolbox_righthand.dmi differ diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi index a4ff676bd0..019ae09517 100644 Binary files a/icons/mob/mask.dmi and b/icons/mob/mask.dmi differ diff --git a/icons/mob/mask_muzzled.dmi b/icons/mob/mask_muzzled.dmi index 92e6149bb1..59c669ea72 100644 Binary files a/icons/mob/mask_muzzled.dmi and b/icons/mob/mask_muzzled.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index dec1c372b5..5b84dad999 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/mob/suit_digi.dmi b/icons/mob/suit_digi.dmi index a0f6e6ab08..58dd2f5700 100644 Binary files a/icons/mob/suit_digi.dmi and b/icons/mob/suit_digi.dmi differ diff --git a/icons/mob/taur_canine.dmi b/icons/mob/taur_canine.dmi index d266d1f135..15d6214446 100644 Binary files a/icons/mob/taur_canine.dmi and b/icons/mob/taur_canine.dmi differ diff --git a/icons/mob/taur_hooved.dmi b/icons/mob/taur_hooved.dmi index 71aec5444a..63e604b430 100644 Binary files a/icons/mob/taur_hooved.dmi and b/icons/mob/taur_hooved.dmi differ diff --git a/icons/mob/underwear.dmi b/icons/mob/underwear.dmi index f0c2cde93d..bf0df371eb 100644 Binary files a/icons/mob/underwear.dmi and b/icons/mob/underwear.dmi differ diff --git a/icons/mob/underwear_old.dmi b/icons/mob/underwear_old.dmi new file mode 100644 index 0000000000..5e16a473ba Binary files /dev/null and b/icons/mob/underwear_old.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index 778b718fe6..c5981b06a3 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/mob/uniform_digi.dmi b/icons/mob/uniform_digi.dmi index 9173a3ceaa..b4f3e6130b 100644 Binary files a/icons/mob/uniform_digi.dmi and b/icons/mob/uniform_digi.dmi differ diff --git a/icons/obj/bongs.dmi b/icons/obj/bongs.dmi deleted file mode 100644 index 406cce3817..0000000000 Binary files a/icons/obj/bongs.dmi and /dev/null differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index f94106dd55..b3cc31fc6d 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi index 245b44e56b..4ec45666c4 100644 Binary files a/icons/obj/clothing/masks.dmi and b/icons/obj/clothing/masks.dmi differ diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi index 3c8a1332a9..728d244b5f 100644 Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 6831c17e56..5d243f93b8 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index e6474e7899..60753839d2 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 4cb7e02e03..f467da6fbf 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/food/containers.dmi b/icons/obj/food/containers.dmi index 93acc07453..d3bdc1b1ea 100644 Binary files a/icons/obj/food/containers.dmi and b/icons/obj/food/containers.dmi differ diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index a719150f11..6b29d599cc 100644 Binary files a/icons/obj/food/food.dmi and b/icons/obj/food/food.dmi differ diff --git a/icons/obj/hydroponics/growing.dmi b/icons/obj/hydroponics/growing.dmi index 712ea11a3b..469b1e1aff 100644 Binary files a/icons/obj/hydroponics/growing.dmi and b/icons/obj/hydroponics/growing.dmi differ diff --git a/icons/obj/hydroponics/harvest.dmi b/icons/obj/hydroponics/harvest.dmi index e746d8f43d..a57719fb3a 100644 Binary files a/icons/obj/hydroponics/harvest.dmi and b/icons/obj/hydroponics/harvest.dmi differ diff --git a/icons/obj/hydroponics/seeds.dmi b/icons/obj/hydroponics/seeds.dmi index 43e231cbab..8695d03b3c 100644 Binary files a/icons/obj/hydroponics/seeds.dmi and b/icons/obj/hydroponics/seeds.dmi differ diff --git a/icons/obj/iv_drip.dmi b/icons/obj/iv_drip.dmi index ddd22dea89..f530688da7 100644 Binary files a/icons/obj/iv_drip.dmi and b/icons/obj/iv_drip.dmi differ diff --git a/icons/obj/janitor.dmi b/icons/obj/janitor.dmi index cb3870dc61..4886cb8441 100644 Binary files a/icons/obj/janitor.dmi and b/icons/obj/janitor.dmi differ diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index 4a6b8964e5..8ede8c66ab 100644 Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ diff --git a/modular_citadel/code/_onclick/hud/sprint.dm b/modular_citadel/code/_onclick/hud/sprint.dm index c1c81b6d5b..6b0594a543 100644 --- a/modular_citadel/code/_onclick/hud/sprint.dm +++ b/modular_citadel/code/_onclick/hud/sprint.dm @@ -14,7 +14,7 @@ /obj/screen/sprintbutton/update_icon_state() var/mob/living/user = hud?.mymob - if(!istype(user)) + if(istype(user)) return if(user.sprinting) icon_state = "act_sprint_on" diff --git a/modular_citadel/code/_onclick/hud/stamina.dm b/modular_citadel/code/_onclick/hud/stamina.dm index 184e3add24..8914d1c74c 100644 --- a/modular_citadel/code/_onclick/hud/stamina.dm +++ b/modular_citadel/code/_onclick/hud/stamina.dm @@ -22,7 +22,7 @@ else if(user.hal_screwyhud == 5) icon_state = "stamina0" else - icon_state = "stamina[CLAMP(FLOOR(user.getStaminaLoss() /20, 1), 0, 6)]" + icon_state = "stamina[max(FLOOR(user.getStaminaLoss() /20, 1), 0, 6)]" //stam buffer /obj/screen/staminabuffer diff --git a/modular_citadel/code/datums/components/material_container.dm b/modular_citadel/code/datums/components/material_container.dm new file mode 100644 index 0000000000..a7c50e37c5 --- /dev/null +++ b/modular_citadel/code/datums/components/material_container.dm @@ -0,0 +1,4 @@ +/datum/material/plastic + name = "Plastic" + id = MAT_PLASTIC + sheet_type = /obj/item/stack/sheet/plastic \ No newline at end of file diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index 4449ca801a..5d9010a7bd 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -179,7 +179,7 @@ /datum/status_effect/chem/astral_insurance/tick(mob/living/carbon/M) . = ..() - if(owner.reagents.has_reagent(/datum/reagent/fermi/astral)) + if(owner.reagents.has_reagent("astral")) return if(owner.mind == originalmind) //If they're home, let the chem deal with deletion. return @@ -209,12 +209,12 @@ //Preamble -/mob/living/verb/toggle_hypno() +/mob/living/verb/toggle_lewd() set category = "IC" - set name = "Toggle Lewd MKUltra" - set desc = "Allows you to toggle if you'd like lewd flavour messages for MKUltra." - client.prefs.cit_toggles ^= HYPNO - to_chat(usr, "You [((client.prefs.cit_toggles & HYPNO) ?"will":"no longer")] receive lewd flavour messages for MKUltra.") + set name = "Toggle Lewdchem" + set desc = "Allows you to toggle if you'd like lewd flavour messages." + client.prefs.lewdchem = !(client.prefs.lewdchem) + to_chat(usr, "You [(client.prefs.lewdchem?"will":"no longer")] receive lewdchem messages.") /datum/status_effect/chem/enthrall id = "enthrall" @@ -252,8 +252,6 @@ var/customEcho //Custom looping text in owner var/customSpan //Custom spans for looping text - var/lewd = FALSE // Set on on_apply. Will only be true if both individuals involved have opted in. - /datum/status_effect/chem/enthrall/on_apply() var/mob/living/carbon/M = owner var/datum/reagent/fermi/enthrall/E = locate(/datum/reagent/fermi/enthrall) in M.reagents.reagent_list @@ -271,11 +269,10 @@ var/mob/living/carbon/human/H = owner if(H)//Prefs if(!H.canbearoused) - H.client?.prefs.cit_toggles &= ~HYPNO - lewd = (owner.client?.prefs.cit_toggles & HYPNO) && (master.client?.prefs.cit_toggles & HYPNO) - var/message = "[(lewd ? "I am a good pet for [enthrallGender]." : "[master] is a really inspirational person!")]" + H.client?.prefs.lewdchem = FALSE + var/message = "[(owner.client?.prefs.lewdchem?"I am a good pet for [enthrallGender].":"[master] is a really inspirational person!")]" SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "enthrall", /datum/mood_event/enthrall, message) - to_chat(owner, "You feel inexplicably drawn towards [master], their words having a demonstrable effect on you. It seems the closer you are to them, the stronger the effect is. However you aren't fully swayed yet and can resist their effects by repeatedly resisting as much as you can!") + to_chat(owner, "You feel inexplicably drawn towards [master], their words having a demonstrable effect on you. It seems the closer you are to them, the stronger the effect is. However you aren't fully swayed yet and can resist their effects by repeatedly resisting as much as you can!") log_game("FERMICHEM: MKULTRA: Status applied on [owner] ckey: [owner.key] with a master of [master] ckey: [enthrallID].") SSblackbox.record_feedback("tally", "fermi_chem", 1, "Enthrall attempts") return ..() @@ -284,15 +281,15 @@ var/mob/living/carbon/M = owner //chem calculations - if(!owner.reagents.has_reagent(/datum/chemical_reaction/fermi/enthrall) && !owner.reagents.has_reagent(/datum/reagent/fermi/enthrall/test)) + if(!owner.reagents.has_reagent("enthrall") && !owner.reagents.has_reagent("enthrallTest")) if (phase < 3 && phase != 0) deltaResist += 3//If you've no chem, then you break out quickly if(prob(5)) to_chat(owner, "Your mind starts to restore some of it's clarity as you feel the effects of the drug wain.") if (mental_capacity <= 500 || phase == 4) - if (owner.reagents.has_reagent(/datum/reagent/medicine/mannitol)) + if (owner.reagents.has_reagent("mannitol")) mental_capacity += 5 - if (owner.reagents.has_reagent(/datum/reagent/medicine/neurine)) + if (owner.reagents.has_reagent("neurine")) mental_capacity += 10 //mindshield check @@ -321,7 +318,7 @@ resistanceTally /= 2 enthrallTally = 0 SSblackbox.record_feedback("tally", "fermi_chem", 1, "Enthralled to state 2") - if(lewd) + if(owner.client?.prefs.lewdchem) to_chat(owner, "Your conciousness slips, as you sink deeper into trance and servitude.") else to_chat(owner, "Your conciousness slips, as you feel more drawn to following [master].") @@ -330,11 +327,11 @@ phase = -1 to_chat(owner, "You break free of the influence in your mind, your thoughts suddenly turning lucid!") if(DistApart < 10) - to_chat(master, "[(lewd?"Your pet":"Your thrall")] seems to have broken free of your enthrallment!
      ") + to_chat(master, "[(master.client?.prefs.lewdchem?"Your pet":"Your thrall")] seems to have broken free of your enthrallment!") SSblackbox.record_feedback("tally", "fermi_chem", 1, "Thralls broken free") owner.remove_status_effect(src) //If resisted in phase 1, effect is removed. if(prob(10)) - if(lewd) + if(owner.client?.prefs.lewdchem) to_chat(owner, "[pick("It feels so good to listen to [master].", "You can't keep your eyes off [master].", "[master]'s voice is making you feel so sleepy.", "You feel so comfortable with [master]", "[master] is so dominant, it feels right to obey them.")].") if (2) //partially enthralled if(enthrallTally > 200) @@ -342,12 +339,12 @@ mental_capacity -= resistanceTally//leftover resistance per step is taken away from mental_capacity. enthrallTally = 0 resistanceTally /= 2 - if(lewd) + if(owner.client?.prefs.lewdchem) to_chat(owner, "Your mind gives, eagerly obeying and serving [master].") to_chat(owner, "You are now fully enthralled to [master], and eager to follow their commands. However you find that in your intoxicated state you are unable to resort to violence. Equally you are unable to commit suicide, even if ordered to, as you cannot serve your [enthrallGender] in death. ")//If people start using this as an excuse to be violent I'll just make them all pacifists so it's not OP. else to_chat(owner, "You are unable to put up a resistance any longer, and now are under the influence of [master]. However you find that in your intoxicated state you are unable to resort to violence. Equally you are unable to commit suicide, even if ordered to, as you cannot follow [master] in death. ") - to_chat(master, "Your [(lewd?"pet":"follower")] [owner] appears to have fully fallen under your sway.") + to_chat(master, "Your [(master.client?.prefs.lewdchem?"pet":"follower")] [owner] appears to have fully fallen under your sway.") log_game("FERMICHEM: MKULTRA: Status on [owner] ckey: [owner.key] has been fully entrhalled (state 3) with a master of [master] ckey: [enthrallID].") SSblackbox.record_feedback("tally", "fermi_chem", 1, "thralls fully enthralled.") else if (resistanceTally > 200) @@ -356,20 +353,22 @@ resistanceTally = 0 resistGrowth = 0 to_chat(owner, "You manage to shake some of the effects from your addled mind, however you can still feel yourself drawn towards [master].") - if(lewd && prob(10)) - to_chat(owner, "[pick("It feels so good to listen to [enthrallGender].", "You can't keep your eyes off [enthrallGender].", "[enthrallGender]'s voice is making you feel so sleepy.", "You feel so comfortable with [enthrallGender]", "[enthrallGender] is so dominant, it feels right to obey them.")].") + if(prob(10)) + if(owner.client?.prefs.lewdchem) + to_chat(owner, "[pick("It feels so good to listen to [enthrallGender].", "You can't keep your eyes off [enthrallGender].", "[enthrallGender]'s voice is making you feel so sleepy.", "You feel so comfortable with [enthrallGender]", "[enthrallGender] is so dominant, it feels right to obey them.")].") if (3)//fully entranced if ((resistanceTally >= 200 && withdrawalTick >= 150) || (HAS_TRAIT(M, TRAIT_MINDSHIELD) && (resistanceTally >= 100))) enthrallTally = 0 phase -= 1 resistanceTally = 0 resistGrowth = 0 - to_chat(owner, "The separation from [(lewd?"your [enthrallGender]":"[master]")] sparks a small flame of resistance in yourself, as your mind slowly starts to return to normal.") + to_chat(owner, "The separation from [(owner.client?.prefs.lewdchem?"your [enthrallGender]":"[master]")] sparks a small flame of resistance in yourself, as your mind slowly starts to return to normal.") REMOVE_TRAIT(owner, TRAIT_PACIFISM, "MKUltra") - if(lewd && prob(1) && !customEcho) - to_chat(owner, "[pick("I belong to [enthrallGender].", "[enthrallGender] knows whats best for me.", "Obedence is pleasure.", "I exist to serve [enthrallGender].", "[enthrallGender] is so dominant, it feels right to obey them.")].") + if(prob(1)) + if(owner.client?.prefs.lewdchem && !customEcho) + to_chat(owner, "[pick("I belong to [enthrallGender].", "[enthrallGender] knows whats best for me.", "Obedence is pleasure.", "I exist to serve [enthrallGender].", "[enthrallGender] is so dominant, it feels right to obey them.")].") if (4) //mindbroken - if (mental_capacity >= 499 && (owner.getOrganLoss(ORGAN_SLOT_BRAIN) <=0 || HAS_TRAIT(M, TRAIT_MINDSHIELD)) && !owner.reagents.has_reagent(/datum/reagent/fermi/enthrall)) + if (mental_capacity >= 499 && (owner.getOrganLoss(ORGAN_SLOT_BRAIN) <=0 || HAS_TRAIT(M, TRAIT_MINDSHIELD)) && !owner.reagents.has_reagent("MKUltra")) phase = 2 mental_capacity = 500 customTriggers = list() @@ -383,7 +382,7 @@ cooldownMsg = FALSE else if (cooldownMsg == FALSE) if(DistApart < 10) - if(lewd) + if(master.client?.prefs.lewdchem) to_chat(master, "Your pet [owner] appears to have finished internalising your last command.") cooldownMsg = TRUE else @@ -391,7 +390,7 @@ cooldownMsg = TRUE if(get_dist(master, owner) > 10) if(prob(10)) - to_chat(owner, "You feel [(lewd ?"a deep NEED to return to your [enthrallGender]":"like you have to return to [master]")].") + to_chat(owner, "You feel [(owner.client?.prefs.lewdchem?"a deep NEED to return to your [enthrallGender]":"like you have to return to [master]")].") M.throw_at(get_step_towards(master,owner), 5, 1) return//If you break the mind of someone, you can't use status effects on them. @@ -424,29 +423,29 @@ if (withdrawal == TRUE)//Your minions are really REALLY needy. switch(withdrawalTick)//denial if(5)//To reduce spam - to_chat(owner, "You are unable to complete [(lewd?"your [enthrallGender]":"[master]")]'s orders without their presence, and any commands and objectives given to you prior are not in effect until you are back with them.") + to_chat(owner, "You are unable to complete [(owner.client?.prefs.lewdchem?"your [enthrallGender]":"[master]")]'s orders without their presence, and any commands and objectives given to you prior are not in effect until you are back with them.") ADD_TRAIT(owner, TRAIT_PACIFISM, "MKUltra") //IMPORTANT if(10 to 35)//Gives wiggle room, so you're not SUPER needy if(prob(5)) - to_chat(owner, "You're starting to miss [(lewd?"your [enthrallGender]":"[master]")].") + to_chat(owner, "You're starting to miss [(owner.client?.prefs.lewdchem?"your [enthrallGender]":"[master]")].") if(prob(5)) owner.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.1) - to_chat(owner, "[(lewd?"[enthrallGender]":"[master]")] will surely be back soon") //denial + to_chat(owner, "[(owner.client?.prefs.lewdchem?"[enthrallGender]":"[master]")] will surely be back soon") //denial if(36) - var/message = "[(lewd?"I feel empty when [enthrallGender]'s not around..":"I miss [master]'s presence")]" + var/message = "[(owner.client?.prefs.lewdchem?"I feel empty when [enthrallGender]'s not around..":"I miss [master]'s presence")]" SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "EnthMissing1", /datum/mood_event/enthrallmissing1, message) if(37 to 65)//barganing if(prob(10)) to_chat(owner, "They are coming back, right...?") owner.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.5) if(prob(10)) - if(lewd) + if(owner.client?.prefs.lewdchem) to_chat(owner, "I just need to be a good pet for [enthrallGender], they'll surely return if I'm a good pet.") owner.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1.5) if(66) SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing1") - var/message = "[(lewd?"I feel so lost in this complicated world without [enthrallGender]..":"I have to return to [master]!")]" - to_chat(owner, "You start to feel really angry about how you're not with [(lewd?"your [enthrallGender]":"[master]")]!") + var/message = "[(owner.client?.prefs.lewdchem?"I feel so lost in this complicated world without [enthrallGender]..":"I have to return to [master]!")]" + to_chat(owner, "You start to feel really angry about how you're not with [(owner.client?.prefs.lewdchem?"your [enthrallGender]":"[master]")]!") SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "EnthMissing2", /datum/mood_event/enthrallmissing2, message) owner.stuttering += 50 owner.jitteriness += 250 @@ -454,15 +453,15 @@ if(prob(10)) addtimer(CALLBACK(M, /mob/verb/a_intent_change, INTENT_HARM), 2) addtimer(CALLBACK(M, /mob/proc/click_random_mob), 2) - if(lewd) + if(owner.client?.prefs.lewdchem) to_chat(owner, "You are overwhelmed with anger at the lack of [enthrallGender]'s presence and suddenly lash out!") else to_chat(owner, "You are overwhelmed with anger and suddenly lash out!") if(90) SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing2") - var/message = "[(lewd?"Where are you [enthrallGender]??!":"I need to find [master]!")]" + var/message = "[(owner.client?.prefs.lewdchem?"Where are you [enthrallGender]??!":"I need to find [master]!")]" SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "EnthMissing3", /datum/mood_event/enthrallmissing3, message) - if(lewd) + if(owner.client?.prefs.lewdchem) to_chat(owner, "You need to find your [enthrallGender] at all costs, you can't hold yourself back anymore!") else to_chat(owner, "You need to find [master] at all costs, you can't hold yourself back anymore!") @@ -475,15 +474,15 @@ M.hallucination += 10 if(101) SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing3") - var/message = "[(lewd?"I'm all alone, It's so hard to continute without [enthrallGender]...":"I really need to find [master]!!!")]" + var/message = "[(owner.client?.prefs.lewdchem?"I'm all alone, It's so hard to continute without [enthrallGender]...":"I really need to find [master]!!!")]" SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "EnthMissing4", /datum/mood_event/enthrallmissing4, message) - to_chat(owner, "You can hardly find the strength to continue without [(lewd?"your [enthrallGender]":"[master]")].") + to_chat(owner, "You can hardly find the strength to continue without [(owner.client?.prefs.lewdchem?"your [enthrallGender]":"[master]")].") M.gain_trauma_type(BRAIN_TRAUMA_SEVERE) if(102 to 140) //depression 2, revengeance if(prob(20)) owner.Stun(50) owner.emote("cry")//does this exist? - if(lewd) + if(owner.client?.prefs.lewdchem) to_chat(owner, "You're unable to hold back your tears, suddenly sobbing as the desire to see your [enthrallGender] oncemore overwhelms you.") else to_chat(owner, "You are overwheled with withdrawl from [master].") @@ -505,7 +504,7 @@ deltaResist += 5 owner.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1) if(prob(20)) - if(lewd) + if(owner.client?.prefs.lewdchem) to_chat(owner, "Maybe you'll be okay without your [enthrallGender].") else to_chat(owner, "You feel your mental functions slowly begin to return.") @@ -538,7 +537,7 @@ else if(status == "charge") owner.add_movespeed_modifier(MOVESPEED_ID_MKULTRA, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING)) status = "charged" - if(lewd) + if(master.client?.prefs.lewdchem) to_chat(owner, "Your [enthrallGender]'s order fills you with a burst of speed!") else to_chat(owner, "[master]'s command fills you with a burst of speed!") @@ -561,7 +560,7 @@ //adrenals? //customEcho - if(customEcho && withdrawal == FALSE && lewd) + if(customEcho && withdrawal == FALSE && owner.client?.prefs.lewdchem) if(prob(2)) if(!customSpan) //just in case! customSpan = "notice" @@ -577,7 +576,7 @@ cooldownMsg = FALSE else if (cooldownMsg == FALSE) if(DistApart < 10) - if(lewd) + if(master.client?.prefs.lewdchem) to_chat(master, "Your pet [owner] appears to have finished internalising your last command.") else to_chat(master, "Your thrall [owner] appears to have finished internalising your last command.") @@ -610,7 +609,7 @@ /datum/status_effect/chem/enthrall/proc/owner_hear(datum/source, list/hearing_args) - if(lewd == FALSE) + if(owner.client?.prefs.lewdchem == FALSE) return if (cTriggered > 0) return @@ -639,7 +638,7 @@ //Shocking truth! else if (lowertext(customTriggers[trigger]) == "shock") - if (C.canbearoused && lewd) + if (C.canbearoused && C.client?.prefs.lewdchem) C.adjustArousalLoss(5) C.jitteriness += 100 C.stuttering += 25 @@ -649,7 +648,7 @@ //wah intensifies wah-rks else if (lowertext(customTriggers[trigger]) == "cum")//aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - if (HAS_TRAIT(C, TRAIT_NYMPHO) && lewd) + if (HAS_TRAIT(C, TRAIT_NYMPHO) && C.client?.prefs.lewdchem) if (C.getArousalLoss() > 80) C.mob_climax(forced_climax=TRUE) C.SetStun(10)//We got your stun effects in somewhere, Kev. @@ -690,20 +689,20 @@ if (status == "Sleeper" || phase == 0) return else if (phase == 4) - if(lewd) + if(owner.client?.prefs.lewdchem) to_chat(owner, "Your mind is too far gone to even entertain the thought of resisting. Unless you can fix the brain damage, you won't be able to break free of your [enthrallGender]'s control.") else to_chat(owner, "Your brain is too overwhelmed with from the high volume of chemicals in your system, rendering you unable to resist, unless you can fix the brain damage.") return else if (phase == 3 && withdrawal == FALSE) - if(lewd) + if(owner.client?.prefs.lewdchem) to_chat(owner, "The presence of your [enthrallGender] fully captures the horizon of your mind, removing any thoughts of resistance. If you get split up from them, then you might be able to entertain the idea of resisting.") else to_chat(owner, "You are unable to resist [master] in your current state. If you get split up from them, then you might be able to resist.") return else if (status == "Antiresist")//If ordered to not resist; resisting while ordered to not makes it last longer, and increases the rate in which you are enthralled. if (statusStrength > 0) - if(lewd) + if(owner.client?.prefs.lewdchem) to_chat(owner, "The order from your [enthrallGender] to give in is conflicting with your attempt to resist, drawing you deeper into trance! You'll have to wait a bit before attemping again, lest your attempts become frustrated again.") else to_chat(owner, "The order from your [master] to give in is conflicting with your attempt to resist. You'll have to wait a bit before attemping again, lest your attempts become frustrated again.") @@ -739,18 +738,18 @@ deltaResist*= 0.5-(((2/200)*M.arousalloss)/1)//more aroused you are, the weaker resistance you can give, the less you are, the more you gain. (+/- 0.5) //chemical resistance, brain and annaphros are the key to undoing, but the subject has to to be willing to resist. - if (owner.reagents.has_reagent(/datum/reagent/medicine/mannitol)) + if (owner.reagents.has_reagent("mannitol")) deltaResist *= 1.25 - if (owner.reagents.has_reagent(/datum/reagent/medicine/neurine)) + if (owner.reagents.has_reagent("neurine")) deltaResist *= 1.5 - if (!(owner.client?.prefs.cit_toggles & NO_APHRO) && M.canbearoused && lewd) - if (owner.reagents.has_reagent(/datum/reagent/drug/anaphrodisiac)) + if (!HAS_TRAIT(owner, TRAIT_CROCRIN_IMMUNE) && M.canbearoused && owner.client?.prefs.lewdchem) + if (owner.reagents.has_reagent("anaphro")) deltaResist *= 1.5 - if (owner.reagents.has_reagent(/datum/reagent/drug/anaphrodisiacplus)) + if (owner.reagents.has_reagent("anaphro+")) deltaResist *= 2 - if (owner.reagents.has_reagent(/datum/reagent/drug/aphrodisiac)) + if (owner.reagents.has_reagent("aphro")) deltaResist *= 0.75 - if (owner.reagents.has_reagent(/datum/reagent/drug/aphrodisiacplus)) + if (owner.reagents.has_reagent("aphro+")) deltaResist *= 0.5 //Antag resistance //cultists are already brainwashed by their god diff --git a/code/datums/wires/autoylathe.dm b/modular_citadel/code/datums/wires/autoylathe.dm similarity index 100% rename from code/datums/wires/autoylathe.dm rename to modular_citadel/code/datums/wires/autoylathe.dm diff --git a/modular_citadel/code/game/machinery/Sleeper.dm b/modular_citadel/code/game/machinery/Sleeper.dm new file mode 100644 index 0000000000..4cf04524b2 --- /dev/null +++ b/modular_citadel/code/game/machinery/Sleeper.dm @@ -0,0 +1,2 @@ +/obj/machinery/sleeper + min_health = 30 diff --git a/modular_citadel/code/game/machinery/displaycases.dm b/modular_citadel/code/game/machinery/displaycases.dm new file mode 100644 index 0000000000..f660475cfc --- /dev/null +++ b/modular_citadel/code/game/machinery/displaycases.dm @@ -0,0 +1,5 @@ +/obj/structure/displaycase/clown + desc = "In the event of clown, honk glass." + alert = 1 + start_showpiece_type = /obj/item/bikehorn + req_access = list(ACCESS_CENT_GENERAL) diff --git a/code/game/machinery/toylathe.dm b/modular_citadel/code/game/machinery/toylathe.dm similarity index 100% rename from code/game/machinery/toylathe.dm rename to modular_citadel/code/game/machinery/toylathe.dm diff --git a/modular_citadel/code/game/machinery/vending.dm b/modular_citadel/code/game/machinery/vending.dm new file mode 100644 index 0000000000..53fe6a8f56 --- /dev/null +++ b/modular_citadel/code/game/machinery/vending.dm @@ -0,0 +1,119 @@ +/obj/machinery/vending/medical + products = list(/obj/item/reagent_containers/syringe = 12, + /obj/item/reagent_containers/dropper = 3, + /obj/item/healthanalyzer = 4, + /obj/item/sensor_device = 2, + /obj/item/pinpointer/crew = 2, + /obj/item/reagent_containers/medspray/sterilizine = 1, + /obj/item/stack/medical/gauze = 8, + /obj/item/reagent_containers/pill/patch/styptic = 5, + /obj/item/reagent_containers/medspray/styptic = 2, + /obj/item/reagent_containers/pill/patch/silver_sulf = 5, + /obj/item/reagent_containers/medspray/silver_sulf = 2, + /obj/item/reagent_containers/pill/insulin = 10, + /obj/item/reagent_containers/pill/salbutamol = 2, + /obj/item/reagent_containers/glass/bottle/charcoal = 4, + /obj/item/reagent_containers/glass/bottle/epinephrine = 4, + /obj/item/reagent_containers/glass/bottle/salglu_solution = 3, + /obj/item/reagent_containers/glass/bottle/morphine = 4, + /obj/item/reagent_containers/glass/bottle/toxin = 3, + /obj/item/reagent_containers/syringe/antiviral = 6, + /obj/item/storage/hypospraykit/fire = 2, + /obj/item/storage/hypospraykit/toxin = 2, + /obj/item/storage/hypospraykit/o2 = 2, + /obj/item/storage/hypospraykit/brute = 2, + /obj/item/storage/hypospraykit/enlarge = 2, + /obj/item/reagent_containers/glass/bottle/vial/small = 5) + +/obj/machinery/vending/wardrobe/chap_wardrobe + premium = list(/obj/item/toy/plush/plushvar = 1, + /obj/item/toy/plush/narplush = 1) + +#define STANDARD_CHARGE 1 +#define CONTRABAND_CHARGE 2 +#define COIN_CHARGE 3 + +/obj/machinery/vending/kink + name = "KinkMate" + desc = "A vending machine for all your unmentionable desires." + icon = 'icons/obj/citvending.dmi' + icon_state = "kink" + circuit = /obj/item/circuitboard/machine/kinkmate + product_slogans = "Kinky!;Sexy!;Check me out, big boy!" + vend_reply = "Have fun, you shameless pervert!" + products = list( + /obj/item/clothing/under/maid = 5, + /obj/item/clothing/under/janimaid = 5, + /obj/item/clothing/neck/petcollar = 5, + /obj/item/clothing/neck/petcollar/choker = 5, + /obj/item/clothing/neck/petcollar/leather = 5, + /obj/item/restraints/handcuffs/fake/kinky = 5, + /obj/item/clothing/glasses/sunglasses/blindfold = 4, + /obj/item/clothing/mask/muzzle = 4, + /obj/item/clothing/under/stripper_pink = 3, + /obj/item/clothing/under/stripper_green = 3, + /obj/item/clothing/under/gear_harness = 10, + /obj/item/dildo/custom = 5, + /obj/item/electropack/shockcollar = 3, + /obj/item/assembly/signaler = 3 + ) + contraband = list( + /obj/item/clothing/neck/petcollar/locked = 2, + /obj/item/key/collar = 2, + /obj/item/clothing/head/kitty = 3, + /obj/item/clothing/head/rabbitears = 3, + /obj/item/clothing/under/keyholesweater = 2, + /obj/item/clothing/under/mankini = 2, + /obj/item/clothing/under/jabroni = 2, + /obj/item/dildo/flared/huge = 3, + /obj/item/reagent_containers/glass/bottle/crocin = 5, + /obj/item/reagent_containers/glass/bottle/camphor = 5 + ) + premium = list( + /obj/item/clothing/accessory/skullcodpiece/fake = 3, + /obj/item/reagent_containers/glass/bottle/hexacrocin = 10 + ) + refill_canister = /obj/item/vending_refill/kink + +/obj/machinery/vending/sovietvend + name = "KomradeVendtink" + desc = "Rodina-mat' zovyot!" + icon = 'icons/obj/citvending.dmi' + icon_state = "soviet" + vend_reply = "The fascist and capitalist svin'ya shall fall, komrade!" + product_slogans = "Quality worth waiting in line for!; Get Hammer and Sickled!; Sosvietsky soyuz above all!; With capitalist pigsky, you would have paid a fortunetink! ; Craftink in Motherland herself!" + products = list( + /obj/item/clothing/under/soviet = 20, + /obj/item/clothing/head/ushanka = 20, + /obj/item/clothing/shoes/jackboots = 20, + /obj/item/clothing/head/squatter_hat = 20, + /obj/item/clothing/under/squatter_outfit = 20, + /obj/item/clothing/under/russobluecamooutfit = 20, + /obj/item/clothing/head/russobluecamohat = 20 + ) + contraband = list( + /obj/item/clothing/under/syndicate/tacticool = 4, + /obj/item/clothing/mask/balaclava = 4, + /obj/item/clothing/suit/russofurcoat = 4, + /obj/item/clothing/head/russofurhat = 4, + /obj/item/clothing/suit/space/hardsuit/soviet = 3, + /obj/item/gun/energy/laser/LaserAK = 4 + ) + premium = list() + + refill_canister = /obj/item/vending_refill/soviet + + +#undef STANDARD_CHARGE +#undef CONTRABAND_CHARGE +#undef COIN_CHARGE + + +/obj/item/vending_refill/kink + machine_name = "KinkMate" + icon = 'modular_citadel/icons/vending_restock.dmi' + icon_state = "refill_kink" + +/obj/item/vending_refill/soviet + machine_name = "sovietvend" + icon_state = "refill_soviet" diff --git a/modular_citadel/code/game/objects/items/circuitboards/machine_circuitboards.dm b/modular_citadel/code/game/objects/items/circuitboards/machine_circuitboards.dm new file mode 100644 index 0000000000..e70028f5eb --- /dev/null +++ b/modular_citadel/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -0,0 +1,12 @@ +/obj/item/circuitboard/machine/kinkmate + name = "Kinkmate Vendor (Machine Board)" + build_path = /obj/machinery/vending/kink + req_components = list(/obj/item/vending_refill/kink = 3) + +/obj/item/circuitboard/machine/autoylathe + name = "Autoylathe (Machine Board)" + build_path = /obj/machinery/autoylathe + req_components = list( + /obj/item/stock_parts/matter_bin = 3, + /obj/item/stock_parts/manipulator = 1, + /obj/item/stack/sheet/glass = 1) diff --git a/modular_citadel/code/game/objects/items/devices/radio/shockcollar.dm b/modular_citadel/code/game/objects/items/devices/radio/shockcollar.dm index 94bf1ba30a..9d0757e26e 100644 --- a/modular_citadel/code/game/objects/items/devices/radio/shockcollar.dm +++ b/modular_citadel/code/game/objects/items/devices/radio/shockcollar.dm @@ -11,7 +11,6 @@ strip_delay = 60 equip_delay_other = 60 materials = list(MAT_METAL=5000, MAT_GLASS=2000) - var/tagname = null /datum/design/electropack/shockcollar @@ -26,17 +25,18 @@ if(loc == user && user.get_item_by_slot(SLOT_NECK)) to_chat(user, "The collar is fastened tight! You'll need help taking this off!") return - return ..() + ..() /obj/item/electropack/shockcollar/receive_signal(datum/signal/signal) if(!signal || signal.data["code"] != code) return if(isliving(loc) && on) - if(shock_cooldown == TRUE) + if(shock_cooldown != 0) return - shock_cooldown = TRUE - addtimer(VARSET_CALLBACK(src, shock_cooldown, FALSE), 100) + shock_cooldown = 1 + spawn(100) + shock_cooldown = 0 var/mob/living/L = loc step(L, pick(GLOB.cardinals)) @@ -51,27 +51,33 @@ master.receive_signal() return -/obj/item/electropack/shockcollar/attackby(obj/item/W, mob/user, params) //moves it here because on_click is being bad - if(istype(W, /obj/item/pen)) - var/t = input(user, "Would you like to change the name on the tag?", "Name your new pet", tagname ? tagname : "Spot") as null|text - if(t) - tagname = copytext(sanitize(t), 1, MAX_NAME_LEN) - name = "[initial(name)] - [tagname]" - else - return ..() +/obj/item/electropack/shockcollar/attack_self(mob/user) //Turns out can't fully source this from the parent item, spritepath gets confused if power toggled. Will come back to this when I know how to code better and readd powertoggle.. + var/option = "Change Name" + option = input(user, "What do you want to do?", "[src]", option) as null|anything in list("Change Name", "Change Frequency") + switch(option) + if("Change Name") + var/t = input(user, "Would you like to change the name on the tag?", "Name your new pet", tagname ? tagname : "Spot") as null|text + if(t) + tagname = copytext(sanitize(t), 1, MAX_NAME_LEN) + name = "[initial(name)] - [tagname]" + if("Change Frequency") + if(!ishuman(user)) + return + user.set_machine(src) + var/dat = {"
      + Frequency/Code for shock collar:
      + Frequency: + - + - [format_frequency(frequency)] + + + +
      + Code: + - + - [code] + + + +
      +
      "} -/obj/item/electropack/shockcollar/ui_interact(mob/user) //on_click calls this - var/dat = {" - -Frequency/Code for shock collar:
      -Frequency: -[format_frequency(src.frequency)] -Set
      - -Code: -[src.code] -Set
      -
      "} - user << browse(dat, "window=radio") - onclose(user, "radio") - return + user << browse(dat, "window=radio") + onclose(user, "radio") + return diff --git a/modular_citadel/code/game/objects/structures/beds_chairs/chair.dm b/modular_citadel/code/game/objects/structures/beds_chairs/chair.dm new file mode 100644 index 0000000000..b7843727df --- /dev/null +++ b/modular_citadel/code/game/objects/structures/beds_chairs/chair.dm @@ -0,0 +1,21 @@ +/obj/structure/chair/alt_attack_hand(mob/living/user) + if(Adjacent(user) && istype(user)) + if(!item_chair || !user.can_hold_items() || !has_buckled_mobs() || buckled_mobs.len > 1 || dir != user.dir || flags_1 & NODECONSTRUCT_1) + return TRUE + if(!user.canUseTopic(src, BE_CLOSE, ismonkey(user))) + to_chat(user, "You can't do that right now!") + return TRUE + if(user.getStaminaLoss() >= STAMINA_SOFTCRIT) + to_chat(user, "You're too exhausted for that.") + return TRUE + var/mob/living/poordude = buckled_mobs[1] + if(!istype(poordude)) + return TRUE + user.visible_message("[user] pulls [src] out from under [poordude].", "You pull [src] out from under [poordude].") + var/C = new item_chair(loc) + user.put_in_hands(C) + poordude.Knockdown(20)//rip in peace + user.adjustStaminaLoss(5) + unbuckle_all_mobs(TRUE) + qdel(src) + return TRUE diff --git a/modular_citadel/code/game/objects/structures/tables_racks.dm b/modular_citadel/code/game/objects/structures/tables_racks.dm new file mode 100644 index 0000000000..69dbe4e1cb --- /dev/null +++ b/modular_citadel/code/game/objects/structures/tables_racks.dm @@ -0,0 +1,10 @@ +/obj/structure/table/alt_attack_hand(mob/user) + if(user && Adjacent(user) && !user.incapacitated()) + if(istype(user) && user.a_intent == INTENT_HARM) + user.visible_message("[user] slams [user.p_their()] palms down on [src].", "You slam your palms down on [src].") + playsound(src, 'sound/weapons/sonic_jackhammer.ogg', 50, 1) + else + user.visible_message("[user] slaps [user.p_their()] hands on [src].", "You slap your hands on [src].") + playsound(src, 'sound/weapons/tap.ogg', 50, 1) + user.do_attack_animation(src) + return TRUE diff --git a/modular_citadel/code/modules/arousal/genitals.dm b/modular_citadel/code/modules/arousal/genitals.dm index d5daf24f8a..8d70464a2d 100644 --- a/modular_citadel/code/modules/arousal/genitals.dm +++ b/modular_citadel/code/modules/arousal/genitals.dm @@ -8,7 +8,7 @@ var/orgasm_verb = "cumming" //present continous var/fluid_transfer_factor = 0 //How much would a partner get in them if they climax using this? var/size = 2 //can vary between num or text, just used in icon_state strings - var/datum/reagent/fluid_id = null + var/fluid_id = null var/fluid_max_volume = 50 var/fluid_efficiency = 1 var/fluid_rate = CUM_RATE diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm index 73d03eff3b..105f5e157d 100644 --- a/modular_citadel/code/modules/arousal/organs/breasts.dm +++ b/modular_citadel/code/modules/arousal/organs/breasts.dm @@ -6,7 +6,7 @@ zone = BODY_ZONE_CHEST slot = ORGAN_SLOT_BREASTS size = "c" //refer to the breast_values static list below for the cups associated number values - fluid_id = /datum/reagent/consumable/milk + fluid_id = "milk" fluid_rate = MILK_RATE shape = "pair" genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH|GENITAL_FUID_PRODUCTION @@ -44,7 +44,7 @@ desc += " You estimate that they're [uppertext(size)]-cups." if(CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION) && aroused_state) - desc += " They're leaking [initial(fluid_id.name)]." + desc += " They're leaking [fluid_id]." var/string if(owner) if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"]) diff --git a/modular_citadel/code/modules/arousal/organs/testicles.dm b/modular_citadel/code/modules/arousal/organs/testicles.dm index a911eefe01..547674a5f1 100644 --- a/modular_citadel/code/modules/arousal/organs/testicles.dm +++ b/modular_citadel/code/modules/arousal/organs/testicles.dm @@ -11,7 +11,7 @@ var/size_name = "average" shape = "Single" var/sack_size = BALLS_SACK_SIZE_DEF - fluid_id = /datum/reagent/consumable/semen + fluid_id = "semen" masturbation_verb = "massage" layer_index = TESTICLES_LAYER_INDEX diff --git a/modular_citadel/code/modules/arousal/organs/womb.dm b/modular_citadel/code/modules/arousal/organs/womb.dm index 7f91310e3e..9dfe811571 100644 --- a/modular_citadel/code/modules/arousal/organs/womb.dm +++ b/modular_citadel/code/modules/arousal/organs/womb.dm @@ -6,5 +6,5 @@ zone = BODY_ZONE_PRECISE_GROIN slot = ORGAN_SLOT_WOMB genital_flags = GENITAL_INTERNAL|GENITAL_FUID_PRODUCTION - fluid_id = /datum/reagent/consumable/femcum + fluid_id = "femcum" linked_organ_slot = ORGAN_SLOT_VAGINA diff --git a/modular_citadel/code/modules/client/client_procs.dm b/modular_citadel/code/modules/client/client_procs.dm index f20dd08a51..3b91deb6e5 100644 --- a/modular_citadel/code/modules/client/client_procs.dm +++ b/modular_citadel/code/modules/client/client_procs.dm @@ -19,12 +19,6 @@ mentor_follow(M) return TRUE - if(href_list["mentor_unfollow"]) - var/mob/living/M = locate(href_list["mentor_follow"]) - if(M && mentor_datum.following == M) - mentor_unfollow() - return TRUE - /client/proc/mentor_datum_set(admin) mentor_datum = GLOB.mentor_datums[ckey] if(!mentor_datum && check_rights_for(src, R_ADMIN,0)) // admin with no mentor datum?let's fix that diff --git a/modular_citadel/code/modules/client/loadout/head.dm b/modular_citadel/code/modules/client/loadout/head.dm index 427a4ac61d..3e7eb39823 100644 --- a/modular_citadel/code/modules/client/loadout/head.dm +++ b/modular_citadel/code/modules/client/loadout/head.dm @@ -101,34 +101,4 @@ /datum/gear/santahatg name = "Green Santa Hat" category = SLOT_HEAD - path = /obj/item/clothing/head/christmashatg - -/datum/gear/cowboyhat - name = "Cowboy Hat, Brown" - category = SLOT_HEAD - path = /obj/item/clothing/head/cowboyhat - -/datum/gear/cowboyhat/black - name = "Cowboy Hat, Black" - category = SLOT_HEAD - path = /obj/item/clothing/head/cowboyhat/black - -/datum/gear/cowboyhat/white - name = "Cowboy Hat, White" - category = SLOT_HEAD - path = /obj/item/clothing/head/cowboyhat/white - -/datum/gear/cowboyhat/pink - name = "Cowboy Hat, Pink" - category = SLOT_HEAD - path = /obj/item/clothing/head/cowboyhat/pink - -/datum/gear/cowboyhat/sec - name = "Cowboy Hat, Security" - category = SLOT_HEAD - path = /obj/item/clothing/head/cowboyhat/sec - restricted_desc = "Security" - restricted_roles = list("Warden","Detective","Security Officer","Head of Security") - - - + path = /obj/item/clothing/head/christmashatg \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/shoes.dm b/modular_citadel/code/modules/client/loadout/shoes.dm index 3531e69cfd..7b3bee6638 100644 --- a/modular_citadel/code/modules/client/loadout/shoes.dm +++ b/modular_citadel/code/modules/client/loadout/shoes.dm @@ -71,14 +71,4 @@ /datum/gear/santaboots name = "Santa Boots" category = SLOT_SHOES - path= /obj/item/clothing/shoes/winterboots/santaboots - -/datum/gear/cowboyboots - name = "Cowboy Boots, Brown" - category = SLOT_SHOES - path = /obj/item/clothing/shoes/cowboyboots - -/datum/gear/cowboyboots/black - name = "Cowboy Boots, Black" - category = SLOT_SHOES - path = /obj/item/clothing/shoes/cowboyboots/black \ No newline at end of file + path= /obj/item/clothing/shoes/winterboots/santaboots \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/uniform.dm b/modular_citadel/code/modules/client/loadout/uniform.dm index 64ed0d363d..72709069eb 100644 --- a/modular_citadel/code/modules/client/loadout/uniform.dm +++ b/modular_citadel/code/modules/client/loadout/uniform.dm @@ -103,45 +103,6 @@ category = SLOT_W_UNIFORM path = /obj/item/clothing/under/stripeddress -/datum/gear/sundresswhite - name = "White Sundress" - category = SLOT_W_UNIFORM - path = /obj/item/clothing/under/sundresswhite - -/datum/gear/sundress - name = "Sundress" - category = SLOT_W_UNIFORM - path = /obj/item/clothing/under/sundress - -/datum/gear/greendress - name = "Green Dress" - category = SLOT_W_UNIFORM - path = /obj/item/clothing/under/greendress - -/datum/gear/pinkdress - name = "Pink Dress" - category = SLOT_W_UNIFORM - path = /obj/item/clothing/under/pinkdress -/datum/gear/flowerdress - name = "Flower Dress" - category = SLOT_W_UNIFORM - path = /obj/item/clothing/under/flowerdress - -/datum/gear/sweptskirt - name = "Swept skirt" - category = SLOT_W_UNIFORM - path = /obj/item/clothing/under/sweptskirt - -/datum/gear/croptop - name = "Croptop" - category = SLOT_W_UNIFORM - path = /obj/item/clothing/under/croptop - -/datum/gear/yoga - name = "Yoga Pants" - category = SLOT_W_UNIFORM - path = /obj/item/clothing/under/pants/yoga - /datum/gear/kilt name = "Kilt" category = SLOT_W_UNIFORM @@ -155,7 +116,7 @@ /datum/gear/athleticshorts name = "Athletic Shorts" category = SLOT_W_UNIFORM - path = /obj/item/clothing/under/shorts/red + path = /obj/item/clothing/under/shorts /datum/gear/bjeans name = "Black Jeans" @@ -192,26 +153,6 @@ category = SLOT_W_UNIFORM path = /obj/item/clothing/under/pants/track -/datum/gear/rippedjeans - name = "Ripped Jeans" - category = SLOT_W_UNIFORM - path = /obj/item/clothing/under/pants/jeanripped - -/datum/gear/jeanshort - name = "Jean Shorts" - category = SLOT_W_UNIFORM - path = /obj/item/clothing/under/pants/jeanshort - -/datum/gear/denimskirt - name = "Denim Skirt" - category = SLOT_W_UNIFORM - path = /obj/item/clothing/under/pants/denimskirt - -/datum/gear/yoga - name = "Yoga Pants" - category = SLOT_W_UNIFORM - path = /obj/item/clothing/under/pants/yoga - // Pantsless Sweaters /datum/gear/turtleneck @@ -421,4 +362,4 @@ category = SLOT_W_UNIFORM path = /obj/item/clothing/under/stripper_green cost = 3 - + diff --git a/modular_citadel/code/modules/client/preferences.dm b/modular_citadel/code/modules/client/preferences.dm index eef8664fbb..29f8a113e8 100644 --- a/modular_citadel/code/modules/client/preferences.dm +++ b/modular_citadel/code/modules/client/preferences.dm @@ -15,7 +15,7 @@ var/arousable = TRUE var/widescreenpref = TRUE var/autostand = TRUE - var/auto_ooc = FALSE + var/lewdchem = FALSE //vore prefs var/toggleeatingnoise = TRUE @@ -54,5 +54,6 @@ datum/preferences/copy_to(mob/living/carbon/human/character, icon_updates = 1) character.give_genitals(TRUE) character.flavor_text = features["flavor_text"] //Let's update their flavor_text at least initially character.canbearoused = arousable + character.client?.prefs.lewdchem = lewdchem if(icon_updates) character.update_genitals() diff --git a/modular_citadel/code/modules/clothing/suits/polychromic_cloaks.dm b/modular_citadel/code/modules/clothing/suits/polychromic_cloaks.dm index ade6cee3ba..c6b153fd36 100644 --- a/modular_citadel/code/modules/clothing/suits/polychromic_cloaks.dm +++ b/modular_citadel/code/modules/clothing/suits/polychromic_cloaks.dm @@ -13,7 +13,7 @@ secondary_color = "#FFFFFF" tertiary_color = "#808080" -/obj/item/clothing/neck/cloak/polychromic/worn_overlays(isinhands, icon_file, style_flags = NONE) //this is where the main magic happens. Also mandates that ALL polychromic stuff MUST USE alternate_worn_icon +/obj/item/clothing/neck/cloak/polychromic/worn_overlays(isinhands, icon_file) //this is where the main magic happens. Also mandates that ALL polychromic stuff MUST USE alternate_worn_icon . = ..() if(hasprimary | hassecondary | hastertiary) if(!isinhands) //prevents the worn sprites from showing up if you're just holding them diff --git a/modular_citadel/code/modules/clothing/suits/suits.dm b/modular_citadel/code/modules/clothing/suits/suits.dm index 4b9dd131ca..c7fd84bd80 100644 --- a/modular_citadel/code/modules/clothing/suits/suits.dm +++ b/modular_citadel/code/modules/clothing/suits/suits.dm @@ -11,7 +11,7 @@ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' icon_state = "hostrench" item_state = "hostrench" - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION body_parts_covered = CHEST|ARMS|LEGS /obj/item/clothing/suit/hooded/cloak/david @@ -20,11 +20,11 @@ desc = "Ever wanted to look like a badass without ANY effort? Try this nanotrasen brand red cloak, perfect for kids" hoodtype = /obj/item/clothing/head/hooded/cloakhood/david body_parts_covered = CHEST|GROIN|ARMS - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/head/hooded/cloakhood/david name = "red cloak hood" icon_state = "golhood" desc = "conceal your face in shame with this nanotrasen brand hood" flags_inv = HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION diff --git a/modular_citadel/code/modules/clothing/under/trek_under.dm b/modular_citadel/code/modules/clothing/under/trek_under.dm index 683167f325..5cd0620a9d 100644 --- a/modular_citadel/code/modules/clothing/under/trek_under.dm +++ b/modular_citadel/code/modules/clothing/under/trek_under.dm @@ -14,7 +14,7 @@ desc = "Oooh... right." icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi' - mutantrace_variation = NONE + force_alternate_icon = TRUE item_state = "" can_adjust = FALSE //to prevent you from "wearing it casually" @@ -95,9 +95,10 @@ icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi' icon_state = "trek_ds9_coat" alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi' + force_alternate_icon = TRUE item_state = "trek_ds9_coat" body_parts_covered = CHEST|GROIN|ARMS - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION permeability_coefficient = 0.50 allowed = list( /obj/item/flashlight, /obj/item/analyzer, @@ -139,9 +140,11 @@ desc = "A uniform jacket from the United Federation. Set phasers to awesome." icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi' + force_alternate_icon = TRUE icon_state = "fedcoat" item_state = "fedcoat" - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION + blood_overlay_type = "coat" body_parts_covered = CHEST|GROIN|ARMS allowed = list( @@ -204,6 +207,7 @@ desc = "A modern uniform jacket from the United Federation." icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi' + force_alternate_icon = TRUE icon_state = "fedmodern" item_state = "fedmodern" body_parts_covered = CHEST|GROIN|ARMS @@ -236,6 +240,7 @@ icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi' icon_state = "fedcapofficer" alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi' + force_alternate_icon = TRUE item_state = "fedcapofficer" //Variants diff --git a/modular_citadel/code/modules/clothing/under/turtlenecks.dm b/modular_citadel/code/modules/clothing/under/turtlenecks.dm index 84cfa97a59..fd13da11e9 100644 --- a/modular_citadel/code/modules/clothing/under/turtlenecks.dm +++ b/modular_citadel/code/modules/clothing/under/turtlenecks.dm @@ -16,7 +16,7 @@ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 0, acid = 0) can_adjust = TRUE alt_covers_chest = TRUE - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/structure/closet/secure_closet/CMO/PopulateContents() //This is placed here because it's a very specific addition for a very specific niche ..() @@ -29,7 +29,7 @@ item_state = "bl_suit" item_color = "tactifool" has_sensor = TRUE - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) /obj/item/clothing/under/syndicate/tacticool @@ -47,7 +47,7 @@ can_adjust = TRUE icon = 'modular_citadel/icons/obj/clothing/turtlenecks.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/bb_sweater/black name = "black sweater" diff --git a/modular_citadel/code/modules/clothing/under/under.dm b/modular_citadel/code/modules/clothing/under/under.dm index 40db06ba56..dcc6323f62 100644 --- a/modular_citadel/code/modules/clothing/under/under.dm +++ b/modular_citadel/code/modules/clothing/under/under.dm @@ -13,7 +13,7 @@ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' item_state = "r_suit" can_adjust = FALSE - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/rank/captain/femformal name ="captain's female formal outfit" @@ -26,4 +26,4 @@ can_adjust = FALSE sensor_mode = SENSOR_COORDS //it's still a captain's suit nerd random_sensor = FALSE - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION diff --git a/modular_citadel/code/modules/custom_loadout/custom_items.dm b/modular_citadel/code/modules/custom_loadout/custom_items.dm index eaf128626d..3d88dae26c 100644 --- a/modular_citadel/code/modules/custom_loadout/custom_items.dm +++ b/modular_citadel/code/modules/custom_loadout/custom_items.dm @@ -1,7 +1,7 @@ //For custom items. -// Unless there's a digitigrade version make sure you add mutantrace_variation = NONE to all clothing/under and shoes - Pooj +// Unless there's a digitigrade version make sure you add mutantrace_variation = NO_MUTANTRACE_VARIATION to all clothing/under and shoes - Pooj // Digitigrade stuff is uniform_digi.dmi and digishoes.dmi in icons/mob /obj/item/custom/ceb_soap @@ -85,7 +85,7 @@ item_state = "darkcarapace" blood_overlay_type = "armor" dog_fashion = /datum/dog_fashion/back - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) @@ -118,7 +118,7 @@ icon_state = "labred" alternate_worn_icon = 'icons/mob/custom_w.dmi' item_state = "labred" - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/toggle/labcoat/labredblack name = "Black and Red Coat" @@ -127,7 +127,7 @@ icon_state = "labredblack" alternate_worn_icon = 'icons/mob/custom_w.dmi' item_state = "labredblack" - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/toy/plush/carrot name = "carrot plushie" @@ -233,7 +233,7 @@ alternate_worn_icon = 'icons/mob/custom_w.dmi' item_state = "hos-g" body_parts_covered = CHEST|GROIN|ARMS|LEGS - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/reagent_containers/food/drinks/flask/russian name = "russian flask" @@ -277,14 +277,14 @@ fitted = NO_FEMALE_UNIFORM alternate_worn_layer = ABOVE_SHOES_LAYER can_adjust = 0 - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/shoes/sneakers/pink icon = 'icons/obj/custom.dmi' icon_state = "pink" alternate_worn_icon = 'icons/mob/custom_w.dmi' item_state = "pink" - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/neck/tie/bloodred name = "Blood Red Tie" @@ -301,7 +301,7 @@ icon_state = "puffydress" item_state = "puffydress" body_parts_covered = CHEST|GROIN|LEGS - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/vermillion name = "vermillion clothing" @@ -311,11 +311,11 @@ body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/bb_sweater/black/naomi name = "worn black sweater" - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION desc = "A well-loved sweater, showing signs of several cleanings and re-stitchings. And a few stains. Is that cat fur?" /obj/item/clothing/neck/petcollar/naomi @@ -345,7 +345,7 @@ icon_state = "rdcoat" alternate_worn_icon = 'icons/mob/custom_w.dmi' item_state = "rdcoat" - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/custom/leechjar name = "Jar of Leeches" @@ -379,7 +379,7 @@ desc = "Comfy Lucky Jackboots with the word Luck on them." item_state = "luckyjack" icon_state = "luckyjack" - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/lunasune name = "Divine Robes" @@ -388,7 +388,7 @@ desc = "Heavenly robes of the kitsune Luna Pumpkin,you can feel radiance coming from them." item_state = "Divine_robes" icon_state = "Divine_robes" - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/leoskimpy name = "Leon's Skimpy Outfit" @@ -397,7 +397,7 @@ desc = "A rather skimpy outfit." item_state = "shark_cloth" icon_state = "shark_cloth" - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/mimeoveralls name = "Mime's Overalls" @@ -406,7 +406,7 @@ desc = "A less-than-traditional mime's attire, completed by a set of dorky-looking overalls." item_state = "moveralls" icon_state = "moveralls" - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/hooded/cloak/zuliecloak name = "Project: Zul-E" @@ -418,7 +418,7 @@ hoodtype = /obj/item/clothing/head/hooded/cloakhood/zuliecloak body_parts_covered = CHEST|GROIN|ARMS slot_flags = SLOT_WEAR_SUIT | ITEM_SLOT_NECK //it's a cloak. it's cosmetic. so why the hell not? what could possibly go wrong? - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/head/hooded/cloakhood/zuliecloak name = "NT Special Issue" @@ -428,7 +428,7 @@ icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' flags_inv = HIDEEARS|HIDEHAIR - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/blackredgold name = "Multicolor Coat" @@ -438,7 +438,7 @@ icon_state = "redgoldjacket" item_state = "redgoldjacket" body_parts_covered = CHEST|GROIN|LEGS|ARMS - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/kimono name = "Blue Kimono" @@ -448,7 +448,7 @@ icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' body_parts_covered = CHEST|GROIN|LEGS|ARMS - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/commjacket name = "Dusty Commisar's Cloak" @@ -458,7 +458,7 @@ icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' body_parts_covered = CHEST|GROIN|LEGS|ARMS - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/under/mw2_russian_para name = "Russian Paratrooper Jumper" @@ -467,7 +467,7 @@ item_state = "mw2_russian_para" icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/gloves/longblackgloves name = "Luna's Gauntlets" @@ -484,7 +484,7 @@ item_state = "trendy_fit" icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/head/blueberet name = "Atmos Beret" @@ -518,7 +518,7 @@ item_state = "mikubikini" icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/mikujacket name = "starlight singer jacket" @@ -527,7 +527,7 @@ item_state = "mikujacket" icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/head/mikuhair name = "starlight singer hair" @@ -536,7 +536,7 @@ item_state = "mikuhair" icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION flags_inv = HIDEHAIR /obj/item/clothing/gloves/mikugloves @@ -546,7 +546,7 @@ item_state = "mikugloves" icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/shoes/sneakers/mikuleggings name = "starlight singer leggings" @@ -555,4 +555,4 @@ item_state = "mikuleggings" icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION diff --git a/modular_citadel/code/modules/mentor/follow.dm b/modular_citadel/code/modules/mentor/follow.dm index 5da3ce4726..6695155ad0 100644 --- a/modular_citadel/code/modules/mentor/follow.dm +++ b/modular_citadel/code/modules/mentor/follow.dm @@ -1,18 +1,16 @@ /client/proc/mentor_follow(mob/living/M) if(!is_mentor()) return - var/orbiting = TRUE - if(!isobserver(usr)) - mentor_datum.following = M - usr.reset_perspective(M) - verbs += /client/proc/mentor_unfollow - to_chat(usr, "Click the \"Stop Following\" button here or in the Mentor tab to stop following [key_name(M)].") - orbiting = FALSE - else - var/mob/dead/observer/O = usr - O.ManualFollow(M) - to_chat(GLOB.admins, "MENTOR: [key_name(usr)] is now [orbiting ? "orbiting" : "following"] [key_name(M)][key_name(M)][orbiting ? " as a ghost" : ""].") - log_mentor("[key_name(usr)] [orbiting ? "is now orbiting" : "began following"][key_name(M)][orbiting ? " as a ghost" : ""].") + if(isnull(M)) + return + if(!ismob(usr)) + return + mentor_datum.following = M + usr.reset_perspective(M) + verbs += /client/proc/mentor_unfollow + to_chat(GLOB.admins, "MENTOR: [key_name(usr)] is now following [key_name(M)]") + to_chat(usr, "Click the \"Stop Following\" button in the Mentor tab to stop following [key_name(M)].") + log_mentor("[key_name(usr)] began following [key_name(M)]") /client/proc/mentor_unfollow() set category = "Mentor" @@ -23,6 +21,6 @@ return usr.reset_perspective() verbs -= /client/proc/mentor_unfollow - to_chat(GLOB.admins, "MENTOR: [key_name(usr)] is no longer following [key_name(mentor_datum.following)].") - log_mentor("[key_name(usr)] stopped following [key_name(mentor_datum.following)].") + to_chat(GLOB.admins, "MENTOR: [key_name(usr)] is no longer following [key_name(mentor_datum.following)]") + log_mentor("[key_name(usr)] stopped following [key_name(mentor_datum.following)]") mentor_datum.following = null \ No newline at end of file diff --git a/modular_citadel/code/modules/mentor/mentorhelp.dm b/modular_citadel/code/modules/mentor/mentorhelp.dm index eb2b8546da..87b05a3f26 100644 --- a/modular_citadel/code/modules/mentor/mentorhelp.dm +++ b/modular_citadel/code/modules/mentor/mentorhelp.dm @@ -19,7 +19,7 @@ log_mentor("MENTORHELP: [key_name_mentor(src, 0, 0, 0, 0)]: [msg]") for(var/client/X in GLOB.mentors | GLOB.admins) - SEND_SOUND(X, 'sound/items/bikehorn.ogg') + X << 'sound/items/bikehorn.ogg' to_chat(X, mentor_msg) to_chat(src, "PM to-Mentors: [msg]") diff --git a/modular_citadel/code/modules/mob/cit_emotes.dm b/modular_citadel/code/modules/mob/cit_emotes.dm index d0ad0d3232..7e7a77538a 100644 --- a/modular_citadel/code/modules/mob/cit_emotes.dm +++ b/modular_citadel/code/modules/mob/cit_emotes.dm @@ -70,124 +70,113 @@ message = "makes a very loud noise." . = ..() +/datum/emote/sound/carbon/snap + key = "snap" + key_third_person = "snaps" + muzzle_ignore = TRUE + restraint_check = TRUE + emote_type = EMOTE_AUDIBLE + sound = 'sound/effects/snap01.ogg' + mob_type_allowed_typecache = list(/mob/living/carbon/) + + /datum/emote/living/snap key = "snap" key_third_person = "snaps" message = "snaps their fingers." emote_type = EMOTE_AUDIBLE - muzzle_ignore = TRUE - restraint_check = TRUE - mob_type_allowed_typecache = list(/mob/living/carbon, /mob/living/silicon/pai) /datum/emote/living/snap/run_emote(mob/living/user, params) - if(!(. = ..())) - return - if(user.nextsoundemote >= world.time) - return - user.nextsoundemote = world.time + 7 - playsound(user, 'modular_citadel/sound/voice/snap.ogg', 50, 1, -1) + if(ishuman(user)) + if(user.nextsoundemote >= world.time) + return + user.nextsoundemote = world.time + 7 + playsound(user, 'modular_citadel/sound/voice/snap.ogg', 50, 1, -1) + . = ..() /datum/emote/living/snap2 key = "snap2" key_third_person = "snaps twice" message = "snaps twice." emote_type = EMOTE_AUDIBLE - muzzle_ignore = TRUE - restraint_check = TRUE - mob_type_allowed_typecache = list(/mob/living/carbon, /mob/living/silicon/pai) /datum/emote/living/snap2/run_emote(mob/living/user, params) - if(!(. = ..())) - return - if(user.nextsoundemote >= world.time) - return - user.nextsoundemote = world.time + 7 - playsound(user, 'modular_citadel/sound/voice/snap2.ogg', 50, 1, -1) + if(ishuman(user)) + if(user.nextsoundemote >= world.time) + return + user.nextsoundemote = world.time + 7 + playsound(user, 'modular_citadel/sound/voice/snap2.ogg', 50, 1, -1) + . = ..() /datum/emote/living/snap3 key = "snap3" key_third_person = "snaps thrice" message = "snaps thrice." emote_type = EMOTE_AUDIBLE - muzzle_ignore = TRUE - restraint_check = TRUE - mob_type_allowed_typecache = list(/mob/living/carbon, /mob/living/silicon/pai) /datum/emote/living/snap3/run_emote(mob/living/user, params) - if(!(. = ..())) - return - if(user.nextsoundemote >= world.time) - return - user.nextsoundemote = world.time + 7 - playsound(user, 'modular_citadel/sound/voice/snap3.ogg', 50, 1, -1) + if(ishuman(user)) + if(user.nextsoundemote >= world.time) + return + user.nextsoundemote = world.time + 7 + playsound(user, 'modular_citadel/sound/voice/snap3.ogg', 50, 1, -1) + . = ..() /datum/emote/living/awoo key = "awoo" key_third_person = "lets out an awoo" message = "lets out an awoo!" emote_type = EMOTE_AUDIBLE - muzzle_ignore = FALSE - restraint_check = FALSE - mob_type_allowed_typecache = list(/mob/living/carbon, /mob/living/silicon/pai) /datum/emote/living/awoo/run_emote(mob/living/user, params) - if(!(. = ..())) - return - if(user.nextsoundemote >= world.time) - return - user.nextsoundemote = world.time + 7 - playsound(user, 'modular_citadel/sound/voice/awoo.ogg', 50, 1, -1) + if(ishuman(user)) + if(user.nextsoundemote >= world.time) + return + user.nextsoundemote = world.time + 7 + playsound(user, 'modular_citadel/sound/voice/awoo.ogg', 50, 1, -1) + . = ..() /datum/emote/living/nya key = "nya" key_third_person = "lets out a nya" message = "lets out a nya!" emote_type = EMOTE_AUDIBLE - muzzle_ignore = FALSE - restraint_check = FALSE - mob_type_allowed_typecache = list(/mob/living/carbon, /mob/living/silicon/pai) /datum/emote/living/nya/run_emote(mob/living/user, params) - if(!(. = ..())) - return - if(user.nextsoundemote >= world.time) - return - user.nextsoundemote = world.time + 7 - playsound(user, 'modular_citadel/sound/voice/nya.ogg', 50, 1, -1) + if(ishuman(user)) + if(user.nextsoundemote >= world.time) + return + user.nextsoundemote = world.time + 7 + playsound(user, 'modular_citadel/sound/voice/nya.ogg', 50, 1, -1) + . = ..() /datum/emote/living/weh key = "weh" key_third_person = "lets out a weh" message = "lets out a weh!" emote_type = EMOTE_AUDIBLE - muzzle_ignore = FALSE - restraint_check = FALSE - mob_type_allowed_typecache = list(/mob/living/carbon, /mob/living/silicon/pai) /datum/emote/living/weh/run_emote(mob/living/user, params) - if(!(. = ..())) - return - if(user.nextsoundemote >= world.time) - return - user.nextsoundemote = world.time + 7 - playsound(user, 'modular_citadel/sound/voice/weh.ogg', 50, 1, -1) + if(ishuman(user)) + if(user.nextsoundemote >= world.time) + return + user.nextsoundemote = world.time + 7 + playsound(user, 'modular_citadel/sound/voice/weh.ogg', 50, 1, -1) + . = ..() /datum/emote/living/peep key = "peep" key_third_person = "peeps like a bird" message = "peeps like a bird!" emote_type = EMOTE_AUDIBLE - muzzle_ignore = FALSE - restraint_check = FALSE - mob_type_allowed_typecache = list(/mob/living/carbon, /mob/living/silicon/pai) /datum/emote/living/peep/run_emote(mob/living/user, params) - if(!(. = ..())) - return - if(user.nextsoundemote >= world.time) - return - user.nextsoundemote = world.time + 7 - playsound(user, 'modular_citadel/sound/voice/peep.ogg', 50, 1, -1) + if(ishuman(user)) + if(user.nextsoundemote >= world.time) + return + user.nextsoundemote = world.time + 7 + playsound(user, 'modular_citadel/sound/voice/peep.ogg', 50, 1, -1) + . = ..() /datum/emote/living/dab key = "dab" @@ -201,49 +190,41 @@ key_third_person = "lets out a tiny squeak" message = "lets out a tiny squeak!" emote_type = EMOTE_AUDIBLE - muzzle_ignore = FALSE - restraint_check = FALSE - mob_type_allowed_typecache = list(/mob/living/carbon, /mob/living/silicon/pai) + mob_type_allowed_typecache = list(/mob/living/carbon) /datum/emote/living/mothsqueak/run_emote(mob/living/user, params) - if(!(. = ..())) - return - if(user.nextsoundemote >= world.time) - return - user.nextsoundemote = world.time + 7 - playsound(user, 'modular_citadel/sound/voice/mothsqueak.ogg', 50, 1, -1) + if(ishuman(user)) + if(user.nextsoundemote >= world.time) + return + user.nextsoundemote = world.time + 7 + playsound(user, 'modular_citadel/sound/voice/mothsqueak.ogg', 50, 1, -1) + . = ..() /datum/emote/living/merp key = "merp" key_third_person = "merps" message = "merps!" emote_type = EMOTE_AUDIBLE - muzzle_ignore = FALSE - restraint_check = FALSE - mob_type_allowed_typecache = list(/mob/living/carbon, /mob/living/silicon/pai) /datum/emote/living/merp/run_emote(mob/living/user, params) - if(!(. = ..())) - return - if(user.nextsoundemote >= world.time) - return - user.nextsoundemote = world.time + 7 - playsound(user, 'modular_citadel/sound/voice/merp.ogg', 50, 1, -1) + if(ishuman(user)) + if(user.nextsoundemote >= world.time) + return + user.nextsoundemote = world.time + 7 + playsound(user, 'modular_citadel/sound/voice/merp.ogg', 50, 1, -1) + . = ..() /datum/emote/living/bark key = "bark" key_third_person = "barks" message = "barks!" emote_type = EMOTE_AUDIBLE - muzzle_ignore = FALSE - restraint_check = FALSE - mob_type_allowed_typecache = list(/mob/living/carbon, /mob/living/silicon/pai) /datum/emote/living/bark/run_emote(mob/living/user, params) - if(!(. = ..())) - return - if(user.nextsoundemote >= world.time) - return - user.nextsoundemote = world.time + 7 - var/sound = pick('modular_citadel/sound/voice/bark1.ogg', 'modular_citadel/sound/voice/bark2.ogg') - playsound(user, sound, 50, 1, -1) + if(ishuman(user)) + if(user.nextsoundemote >= world.time) + return + user.nextsoundemote = world.time + 7 + var/sound = pick('modular_citadel/sound/voice/bark1.ogg', 'modular_citadel/sound/voice/bark2.ogg') + playsound(user, sound, 50, 1, -1) + . = ..() \ No newline at end of file diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm index 98de5eed14..a1466f58d4 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm @@ -424,7 +424,12 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! if(A) if(isliving(A)) var/mob/living/L = A - if(!L.check_shields(0, "the [name]", src, attack_type = LEAP_ATTACK)) + var/blocked = 0 + if(ishuman(A)) + var/mob/living/carbon/human/H = A + if(H.check_shields(0, "the [name]", src, attack_type = LEAP_ATTACK)) + blocked = 1 + if(!blocked) L.visible_message("[src] pounces on [L]!", "[src] pounces on you!") L.Knockdown(iscarbon(L) ? 60 : 45, override_stamdmg = CLAMP(pounce_stamloss, 0, pounce_stamloss_cap-L.getStaminaLoss())) // Temporary. If someone could rework how dogborg pounces work to accomodate for combat changes, that'd be nice. playsound(src, 'sound/weapons/Egloves.ogg', 50, 1) diff --git a/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm b/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm index 4ae3e5c488..8cb56803b1 100644 --- a/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm +++ b/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm @@ -4,7 +4,7 @@ id = "10mminc" build_type = PROTOLATHE materials = list(MAT_PLASMA = 50000, MAT_METAL = 18000) - reagents_list = list(/datum/reagent/toxin/plasma = 120, /datum/reagent/napalm = 240) + reagents_list = list("plasma" = 120, "napalm" = 240) build_path = /obj/item/ammo_box/magazine/m10mm/fire category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -25,7 +25,7 @@ id = "10mmhp" build_type = PROTOLATHE materials = list(MAT_METAL = 40000, MAT_GLASS = 50000) - reagents_list = list(/datum/reagent/sonic_powder = 280) + reagents_list = list("sonic_powder" = 280) build_path = /obj/item/ammo_box/magazine/m10mm/hp category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY diff --git a/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm b/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm index 2c527ac713..89e086687a 100644 --- a/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm +++ b/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm @@ -43,7 +43,7 @@ obj/item/gun/energy/e_gun/cx/AltClick(mob/living/user) body_color = sanitize_hexcolor(body_color_input, desired_format=6, include_crunch=1) update_icon() -obj/item/gun/energy/e_gun/cx/worn_overlays(isinhands, icon_file, style_flags = NONE) +obj/item/gun/energy/e_gun/cx/worn_overlays(isinhands, icon_file) . = ..() if(isinhands) var/mutable_appearance/body_inhand = mutable_appearance(icon_file, "cxe_body") diff --git a/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm b/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm index 47de736c3b..735c0890af 100644 --- a/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm +++ b/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm @@ -99,7 +99,7 @@ . = ..() . += "Alt-click to change firing modes." -/obj/item/gun/energy/pumpaction/worn_overlays(isinhands, icon_file, style_flags = NONE) //ammo counter for inhands +/obj/item/gun/energy/pumpaction/worn_overlays(isinhands, icon_file) //ammo counter for inhands . = ..() var/ratio = CEILING((cell.charge / cell.maxcharge) * charge_sections, 1) var/obj/item/ammo_casing/energy/shot = ammo_type[select] diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm index 0985b758c6..35d13b3aa6 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm @@ -131,6 +131,7 @@ Creating a chem with a low purity will make you permanently fall in love with so /datum/reagent/fermi/enthrall name = "MKUltra" + id = "enthrall" description = "A forbidden deep red mixture that increases a person's succeptability to another's words. When taken by the creator, it will enhance the draw of their voice to those affected by it." color = "#660015" // rgb: , 0, 255 taste_description = "synthetic chocolate, a base tone of alcohol, and high notes of roses" @@ -148,6 +149,7 @@ Creating a chem with a low purity will make you permanently fall in love with so /datum/reagent/fermi/enthrall/test name = "MKUltraTest" + id = "enthrallTest" description = "A forbidden deep red mixture that makes you like Fermis a little too much. Unobtainable and due to be removed from the wiki." data = list("creatorID" = "honkatonkbramblesnatch", "creatorGender" = "Mistress", "creatorName" = "Fermis Yakumo") creatorID = "honkatonkbramblesnatch"//ckey @@ -156,6 +158,7 @@ Creating a chem with a low purity will make you permanently fall in love with so purity = 1 /datum/reagent/fermi/enthrall/test/on_new() + id = "enthrall" ..() creator = get_mob_by_key(creatorID) @@ -167,9 +170,6 @@ Creating a chem with a low purity will make you permanently fall in love with so /datum/reagent/fermi/enthrall/on_mob_add(mob/living/carbon/M) . = ..() - if(M.client?.prefs.cit_toggles & NEVER_HYPNO) // Just in case people are opting out of this - holder.del_reagent(type) - return if(!ishuman(M))//Just to make sure screwy stuff doesn't happen. return if(!creatorID) @@ -183,7 +183,7 @@ Creating a chem with a low purity will make you permanently fall in love with so E.enthrallID = creatorID E.enthrallGender = creatorGender E.master = get_mob_by_key(creatorID) - to_chat(M, "Your addled, plastic, mind bends under the chemical influence of a new [(E.lewd?"master":"leader")]. Your highest priority is now to stay by [creatorName]'s side, following and aiding them at all costs.") //THIS SHOULD ONLY EVER APPEAR IF YOU MINDBREAK YOURSELF AND THEN GET INJECTED FROM SOMEONE ELSE. + to_chat(M, to_chat(M, "Your aldled, plastic, mind bends under the chemical influence of a new [(M.client?.prefs.lewdchem?"master":"leader")]. Your highest priority is now to stay by [creatorName]'s side, following and aiding them at all costs.")) //THIS SHOULD ONLY EVER APPEAR IF YOU MINDBREAK YOURSELF AND THEN GET INJECTED FROM SOMEONE ELSE. log_game("FERMICHEM: Narcissist [M] ckey: [M.key] been rebound to [creatorName], ID: [creatorID]") return if((M.ckey == creatorID) && (creatorName == M.real_name)) //same name AND same player - same instance of the player. (should work for clones?) @@ -194,7 +194,7 @@ Creating a chem with a low purity will make you permanently fall in love with so Vc.Remove(M) nVc.Insert(M) qdel(Vc) - to_chat(M, "You feel your vocal chords tingle you speak in a more charasmatic and sultry tone.") + to_chat(M, "You feel your vocal chords tingle you speak in a more charasmatic and sultry tone.)]") else log_game("FERMICHEM: MKUltra: [creatorName], [creatorID], is enthralling [M.name], [M.ckey]") M.apply_status_effect(/datum/status_effect/chem/enthrall) @@ -218,7 +218,7 @@ Creating a chem with a low purity will make you permanently fall in love with so if(LAZYLEN(seen)) return - M.reagents.del_reagent(type) + M.reagents.remove_reagent(id, volume) FallInLove(M, pick(seen)) return @@ -227,9 +227,10 @@ Creating a chem with a low purity will make you permanently fall in love with so if(M.has_status_effect(STATUS_EFFECT_INLOVE)) return if((C in viewers(7, get_turf(M))) && (C.client)) - M.reagents.del_reagent(type) + M.reagents.remove_reagent(id, volume) FallInLove(C, M) return + if (M.ckey == creatorID && creatorName == M.real_name)//If you yourself drink it, it supresses the vocal effects, for stealth. NEVERMIND ADD THIS LATER I CAN'T GET IT TO WORK return if(!M.client) @@ -260,7 +261,7 @@ Creating a chem with a low purity will make you permanently fall in love with so E.master = creator else E = M.has_status_effect(/datum/status_effect/chem/enthrall) - if(E.lewd) + if(M.client?.prefs.lewdchem) to_chat(M, "Your mind shatters under the volume of the mild altering chem inside of you, breaking all will and thought completely. Instead the only force driving you now is the instinctual desire to obey and follow [creatorName]. Your highest priority is now to stay by their side and protect them at all costs.") else to_chat(M, "The might volume of chemicals in your system overwhelms your mind, and you suddenly agree with what [creatorName] has been saying. Your highest priority is now to stay by their side and protect them at all costs.") @@ -279,6 +280,7 @@ Creating a chem with a low purity will make you permanently fall in love with so //Creates a gas cloud when the reaction blows up, causing everyone in it to fall in love with someone/something while it's in their system. /datum/reagent/fermi/enthrallExplo//Created in a gas cloud when it explodes name = "Gaseous MKUltra" + id = "enthrallExplo" description = "A forbidden deep red gas that overwhelms a foreign body, causing the person they next lay their eyes on to become more interesting. Studies have shown that people are 66% more likely to make friends with this in the air. Produced when MKUltra explodes." color = "#2C051A" // rgb: , 0, 255 metabolization_rate = 0.1 @@ -286,7 +288,6 @@ Creating a chem with a low purity will make you permanently fall in love with so chemical_flags = REAGENT_DONOTSPLIT can_synth = FALSE var/mob/living/carbon/love - var/lewd = FALSE /datum/reagent/fermi/enthrallExplo/on_mob_life(mob/living/carbon/M)//Love gas, only affects while it's in your system,Gives a positive moodlet if close, gives brain damagea and a negative moodlet if not close enough. if(HAS_TRAIT(M, TRAIT_MINDSHIELD)) @@ -302,25 +303,24 @@ Creating a chem with a low purity will make you permanently fall in love with so if(!love) return M.apply_status_effect(STATUS_EFFECT_INLOVE, love) - lewd = (M.client?.prefs.cit_toggles & HYPNO) && (love.client?.prefs.cit_toggles & HYPNO) - to_chat(M, "[(lewd?"":"")][(lewd?"You develop a sudden crush on [love], your heart beginning to race as you look upon them with new eyes.":"You suddenly feel like making friends with [love].")] You feel strangely drawn towards them.") + to_chat(M, "[(M.client?.prefs.lewdchem?"":"")][(M.client?.prefs.lewdchem?"You develop a sudden crush on [love], your heart beginning to race as you look upon them with new eyes.":"You suddenly feel like making friends with [love].")] You feel strangely drawn towards them.") log_game("FERMICHEM: [M] ckey: [M.key] has temporarily bonded with [love] ckey: [love.key]") SSblackbox.record_feedback("tally", "fermi_chem", 1, "Times people have bonded") else if(get_dist(M, love) < 8) if(HAS_TRAIT(M, TRAIT_NYMPHO)) //Add this back when merged/updated. M.adjustArousalLoss(5) - var/message = "[(lewd?"I'm next to my crush..! Eee!":"I'm making friends with [love]!")]" + var/message = "[(M.client?.prefs.lewdchem?"I'm next to my crush..! Eee!":"I'm making friends with [love]!")]" SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "InLove", /datum/mood_event/InLove, message) SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "MissingLove") else - var/message = "[(lewd?"I can't keep my crush off my mind, I need to see them again!":"I really want to make friends with [love]!")]" + var/message = "[(M.client?.prefs.lewdchem?"I can't keep my crush off my mind, I need to see them again!":"I really want to make friends with [love]!")]" SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "MissingLove", /datum/mood_event/MissingLove, message) SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "InLove") if(prob(5)) M.Stun(10) M.emote("whimper")//does this exist? - to_chat(M, "[(lewd?"":"")] You're overcome with a desire to see [love].") + to_chat(M, "[(M.client?.prefs.lewdchem?"":"")] You're overcome with a desire to see [love].") M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.5)//I found out why everyone was so damaged! ..() @@ -330,7 +330,7 @@ Creating a chem with a low purity will make you permanently fall in love with so M.remove_status_effect(STATUS_EFFECT_INLOVE) SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "InLove") SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "MissingLove") - to_chat(M, "[(lewd?"":"")]Your feelings for [love] suddenly vanish!") + to_chat(M, "[(M.client?.prefs.lewdchem?"":"")]Your feelings for [love] suddenly vanish!") log_game("FERMICHEM: [M] ckey: [M.key] is no longer in temp bond") ..() @@ -338,8 +338,7 @@ Creating a chem with a low purity will make you permanently fall in love with so if(Lover.has_status_effect(STATUS_EFFECT_INLOVE)) to_chat(Lover, "You are already fully devoted to someone else!") return - var/lewd = (Lover.client?.prefs.cit_toggles & HYPNO) && (Love.client?.prefs.cit_toggles & HYPNO) - to_chat(Lover, "[(lewd?"":"")]You develop a deep and sudden bond with [Love][(lewd?", your heart beginning to race as your mind filles with thoughts about them.":".")] You are determined to keep them safe and happy, and feel drawn towards them.") + to_chat(Lover, "[(Lover.client?.prefs.lewdchem?"":"")]You develop a deep and sudden bond with [Love][(Lover.client?.prefs.lewdchem?", your heart beginning to race as your mind filles with thoughts about them.":".")] You are determined to keep them safe and happy, and feel drawn towards them.") if(Lover.mind) Lover.mind.store_memory("You are in love with [Love].") Lover.faction |= "[REF(Love)]" diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm index 87615ccb68..c72b702a97 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm @@ -39,6 +39,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING //Clone serum #chemClone /datum/reagent/fermi/SDGF //vars, mostly only care about keeping track if there's a player in the clone or not. name = "synthetic-derived growth factor" + id = "SDGF" description = "A rapidly diving mass of Embryonic stem cells. These cells are missing a nucleus and quickly replicate a host’s DNA before growing to form an almost perfect clone of the host. In some cases neural replication takes longer, though the underlying reason underneath has yet to be determined." color = "#a502e0" // rgb: 96, 0, 255 var/playerClone = FALSE @@ -48,9 +49,9 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING var/list/candies = list() var/pollStarted = FALSE var/startHunger - impure_chem = /datum/reagent/impure/SDGFtox + impure_chem = "SDGFtox" inverse_chem_val = 0.5 - inverse_chem = /datum/reagent/impure/SDZF + inverse_chem = "SDZF" can_synth = TRUE @@ -121,8 +122,8 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING SM.nutrition = startHunger/2 //Transfer remaining reagent to clone. I think around 30u will make a healthy clone, otherwise they'll have clone damage, blood loss, brain damage and hunger. - SM.reagents.add_reagent(/datum/reagent/fermi/SDGFheal, volume) - M.reagents.remove_reagent(type, volume) + SM.reagents.add_reagent("SDGFheal", volume) + M.reagents.remove_reagent(id, volume) log_game("FERMICHEM: [volume]u of SDGFheal has been transferred to the clone") SSblackbox.record_feedback("tally", "fermi_chem", 1, "Sentient clones made") return ..() @@ -140,7 +141,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING M.adjustBruteLoss(-1, 0) M.adjustFireLoss(-1, 0) M.heal_bodypart_damage(1,1) - M.reagents.remove_reagent(type, 1)//faster rate of loss. + M.reagents.remove_reagent(id, 1)//faster rate of loss. else //If there's no ghosts, but they've made a large amount, then proceed to make flavourful clone, where you become fat and useless until you split. switch(current_cycle) if(21) @@ -184,7 +185,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING log_game("FERMICHEM: [M] ckey: [M.key] has created a mindless clone of themselves") SSblackbox.record_feedback("tally", "fermi_chem", 1, "Braindead clones made") if(87 to INFINITY) - M.reagents.remove_reagent(type, volume)//removes SGDF on completion. Has to do it this way because of how i've coded it. If some madlab gets over 1k of SDGF, they can have the clone healing. + M.reagents.remove_reagent(id, volume)//removes SGDF on completion. Has to do it this way because of how i've coded it. If some madlab gets over 1k of SDGF, they can have the clone healing. ..() @@ -264,17 +265,18 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING SM.set_species(mutation) //Transfer remaining reagent to clone. I think around 30u will make a healthy clone, otherwise they'll have clone damage, blood loss, brain damage and hunger. - SM.reagents.add_reagent(/datum/reagent/fermi/SDGFheal, volume) - log_combat(M, M, "SDGF clone-vived", src) - M.reagents.del_reagent(type) + SM.reagents.add_reagent("SDGFheal", volume) + M.reagents.remove_reagent(id, volume) + SM.updatehealth() SM.emote("gasp") - return + log_combat(M, M, "SDGF clone-vived", src) ..() //Unobtainable, used in clone spawn. /datum/reagent/fermi/SDGFheal name = "synthetic-derived healing factor" + id = "SDGFheal" description = "Leftover SDGF is transferred into the resulting clone, which quickly heals up the stresses from suddenly splitting. Restores blood, nutrition, and repaires brain and clone damage quickly. Only obtainable from using excess SDGF, and only enters the cloned body." metabolization_rate = 0.8 can_synth = FALSE @@ -290,6 +292,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING //Unobtainable, used if SDGF is impure but not too impure /datum/reagent/impure/SDGFtox name = "Synthetic-derived apoptosis factor" + id = "SDGFtox" description = "Impure synthetic-derived growth factor causes certain cells to undergo cell death, causing clone damage, and damaging blood cells."//i.e. tell me please, figure it's a good way to get pinged for bugfixes. metabolization_rate = 1 can_synth = FALSE @@ -302,6 +305,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING //Fail state of SDGF /datum/reagent/impure/SDZF name = "synthetic-derived zombie factor" + id = "SDZF" description = "A horribly peverse mass of Embryonic stem cells made real by the hands of a failed chemist. Emulates normal synthetic-derived growth factor, but produces a hostile zombie at the end of it." color = "#a502e0" // rgb: 96, 0, 255 metabolization_rate = 0.2 * REAGENTS_METABOLISM @@ -334,7 +338,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING M.adjustToxLoss(1, 0)// the warning! if(86)//mean clone time! - if (!M.reagents.has_reagent(/datum/reagent/medicine/pen_acid))//Counterplay is pent.) + if (!M.reagents.has_reagent("pen_acid"))//Counterplay is pent.) message_admins("(non-infectious) SDZF: Zombie spawned at [M] [COORD(M)]!") M.nutrition = startHunger - 500//YOU BEST BE RUNNING AWAY AFTER THIS YOU BADDIE M.next_move_modifier = 1 @@ -348,7 +352,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING ZI.name = M.real_name ZI.desc = "[M]'s clone, gone horribly wrong." log_game("FERMICHEM: [M] ckey: [M.key]'s clone has become a horrifying zombie instead") - M.reagents.remove_reagent(type, 20) + M.reagents.remove_reagent(id, 20) else//easier to deal with to_chat(M, "The pentetic acid seems to have stopped the decay for now, clumping up the cells into a horrifying tumour!") @@ -358,12 +362,12 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING S.name = "Living teratoma" S.real_name = "Living teratoma"//horrifying!! S.rabid = 1//Make them an angery boi - M.reagents.remove_reagent(type, volume) + M.reagents.remove_reagent(id, volume) to_chat(M, "A large glob of the tumour suddenly splits itself from your body. You feel grossed out and slimey...") log_game("FERMICHEM: [M] ckey: [M.key]'s clone has become a horrifying teratoma instead") SSblackbox.record_feedback("tally", "fermi_chem", 1, "Zombie clones made!") if(87 to INFINITY) M.adjustToxLoss(2, 0) - M.reagents.remove_reagent(type, 1) + M.reagents.remove_reagent(id, 1) ..() diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm index a8ac66ef20..d7ff42a9eb 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm @@ -15,6 +15,7 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die /datum/reagent/fermi/astral // Gives you the ability to astral project for a moment! name = "Astrogen" + id = "astral" description = "An opalescent murky liquid that is said to distort your soul from your being." color = "#A080H4" // rgb: , 0, 255 taste_description = "your mind" @@ -40,7 +41,7 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die if(origin.mind && origin.mind != originalmind) to_chat(originalmind.current, "There's a foreign presence in your body blocking your return!") return ..() - if(origin.reagents.has_reagent(/datum/reagent/fermi/astral) ) + if(origin.reagents.has_reagent("astral") ) var/datum/reagent/fermi/astral/As = locate(/datum/reagent/fermi/astral) in origin.reagents.reagent_list if(As.current_cycle < 10) to_chat(originalmind.current, "The intensity of the astrogen in your body is too much allow you to return to yourself yet!") @@ -53,7 +54,7 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die /datum/reagent/fermi/astral/reaction_turf(turf/T, reac_volume) if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) var/turf/open/floor/F = T - F.PlaceOnTop(/turf/open/floor/fakespace, flags = CHANGETURF_INHERIT_AIR) + F.PlaceOnTop(/turf/open/floor/fakespace) ..() /datum/reagent/fermi/astral/reaction_obj(obj/O, reac_volume) @@ -89,7 +90,7 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die if(prob(50)) to_chat(G, "The high conentration of Astrogen in your blood causes you to lapse your concentration for a moment, bringing your projection back to yourself!
      ") do_teleport(G, M.loc) - metabolization_rate = current_cycle/10 //exponential + M.reagents.remove_reagent(id, current_cycle/10, FALSE)//exponent sleepytime+=5 if(G)//This is a mess because of how slow qdel is, so this is all to stop runtimes. if(G.mind) diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm index 6262dc1a28..5f3fc61fa7 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm @@ -11,6 +11,7 @@ /datum/reagent/fermi/eigenstate name = "Eigenstasium" + id = "eigenstate" description = "A strange mixture formed from a controlled reaction of bluespace with plasma, that causes localised eigenstate fluxuations within the patient" taste_description = "wiggly cosmic dust." color = "#5020F4" // rgb: 50, 20, 255 @@ -68,7 +69,7 @@ /datum/reagent/fermi/eigenstate/on_mob_delete(mob/living/M) //returns back to original location do_sparks(5,FALSE,M) to_chat(M, "You feel your wavefunction collapse!") - if(!M.reagents.has_reagent(/datum/reagent/stabilizing_agent)) + if(!M.reagents.has_reagent("stabilizing_agent")) do_teleport(M, location_return, 0, asoundin = 'sound/effects/phasein.ogg') //Teleports home do_sparks(5,FALSE,M) qdel(Eigenstate) @@ -168,7 +169,7 @@ if(prob(20)) do_sparks(5,FALSE,M) - SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "[type]_overdose")//holdover until above fix works + SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "[id]_overdose")//holdover until above fix works ..() /datum/reagent/fermi/eigenstate/reaction_turf(turf/T, reac_volume) diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm index b6b9c0bf34..7d358b4149 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm @@ -20,14 +20,15 @@ /datum/reagent/fermi/breast_enlarger name = "Succubus milk" + id = "breast_enlarger" description = "A volatile collodial mixture derived from milk that encourages mammary production via a potent estrogen mix." color = "#E60584" // rgb: 96, 0, 255 taste_description = "a milky ice cream like flavour." overdose_threshold = 17 metabolization_rate = 0.25 - impure_chem = /datum/reagent/fermi/BEsmaller //If you make an inpure chem, it stalls growth + impure_chem = "BEsmaller" //If you make an inpure chem, it stalls growth inverse_chem_val = 0.35 - inverse_chem = /datum/reagent/fermi/BEsmaller //At really impure vols, it just becomes 100% inverse + inverse_chem = "BEsmaller" //At really impure vols, it just becomes 100% inverse can_synth = FALSE var/message_spam = FALSE @@ -43,7 +44,7 @@ M.Knockdown(50) M.Stun(50) B.throw_at(T2, 8, 1) - M.reagents.del_reagent(type) + M.reagents.remove_reagent(id, volume) return var/mob/living/carbon/human/H = M if(!H.getorganslot(ORGAN_SLOT_BREASTS) && H.emergent_genital_call()) @@ -55,8 +56,8 @@ var/mob/living/carbon/human/H = M var/obj/item/organ/genital/breasts/B = M.getorganslot(ORGAN_SLOT_BREASTS) - //If they've opted out, then route processing though liver. - if(!(H.client?.prefs.cit_toggles & BREAST_ENLARGEMENT)) + //If they have Acute hepatic pharmacokinesis, then route processing though liver. + if(HAS_TRAIT(H, TRAIT_PHARMA) || !H.canbearoused) var/obj/item/organ/liver/L = H.getorganslot(ORGAN_SLOT_LIVER) if(L) L.swelling += 0.05 @@ -77,7 +78,7 @@ B.cached_size = 0 B.prev_size = 0 to_chat(H, "Your chest feels warm, tingling with newfound sensitivity.") - H.reagents.remove_reagent(type, 5) + H.reagents.remove_reagent(id, 5) B.Insert(H) //If they have them, increase size. If size is comically big, limit movement and rip clothes. @@ -93,7 +94,9 @@ return ..() /datum/reagent/fermi/breast_enlarger/overdose_process(mob/living/carbon/M) //Turns you into a female if male and ODing, doesn't touch nonbinary and object genders. - if(!(M.client?.prefs.cit_toggles & FORCED_FEM)) + + //Acute hepatic pharmacokinesis. + if(HAS_TRAIT(M, TRAIT_PHARMA) || !M.canbearoused) var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) L.swelling+= 0.05 return ..() @@ -121,6 +124,7 @@ /datum/reagent/fermi/BEsmaller name = "Modesty milk" + id = "BEsmaller" description = "A volatile collodial mixture derived from milk that encourages mammary reduction via a potent estrogen mix. Produced by reacting impure Succubus milk." color = "#E60584" // rgb: 96, 0, 255 taste_description = "a milky ice cream like flavour." @@ -129,15 +133,21 @@ /datum/reagent/fermi/BEsmaller/on_mob_life(mob/living/carbon/M) var/obj/item/organ/genital/breasts/B = M.getorganslot(ORGAN_SLOT_BREASTS) - if(!(M.client?.prefs.cit_toggles & BREAST_ENLARGEMENT) || !B) - var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) - L.swelling-= 0.05 - return ..() + if(!B) + //Acute hepatic pharmacokinesis. + if(HAS_TRAIT(M, TRAIT_PHARMA) || !M.canbearoused) + var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) + L.swelling-= 0.05 + return ..() + + //otherwise proceed as normal + return..() B.modify_size(-0.05) return ..() /datum/reagent/fermi/BEsmaller_hypo name = "Rectify milk" //Rectify + id = "BEsmaller_hypo" color = "#E60584" taste_description = "a milky ice cream like flavour." metabolization_rate = 0.25 @@ -176,14 +186,15 @@ //Since someone else made this in the time it took me to PR it, I merged them. /datum/reagent/fermi/penis_enlarger // Due to popular demand...! name = "Incubus draft" + id = "penis_enlarger" description = "A volatile collodial mixture derived from various masculine solutions that encourages a larger gentleman's package via a potent testosterone mix, formula derived from a collaboration from Fermichem and Doctor Ronald Hyatt, who is well known for his phallus palace." //The toxic masculinity thing is a joke because I thought it would be funny to include it in the reagents, but I don't think many would find it funny? dumb color = "#888888" // This is greyish..? taste_description = "chinese dragon powder" overdose_threshold = 17 //ODing makes you male and removes female genitals metabolization_rate = 0.5 - impure_chem = /datum/reagent/fermi/PEsmaller //If you make an inpure chem, it stalls growth + impure_chem = "PEsmaller" //If you make an inpure chem, it stalls growth inverse_chem_val = 0.35 - inverse_chem = /datum/reagent/fermi/PEsmaller //At really impure vols, it just becomes 100% inverse and shrinks instead. + inverse_chem = "PEsmaller" //At really impure vols, it just becomes 100% inverse and shrinks instead. can_synth = FALSE var/message_spam = FALSE @@ -199,7 +210,7 @@ M.Knockdown(50) M.Stun(50) P.throw_at(T2, 8, 1) - M.reagents.del_reagent(type) + M.reagents.remove_reagent(id, volume) return var/mob/living/carbon/human/H = M if(!H.getorganslot(ORGAN_SLOT_PENIS) && H.emergent_genital_call()) @@ -210,7 +221,8 @@ return ..() var/mob/living/carbon/human/H = M var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS) - if(!(H.client?.prefs.cit_toggles & PENIS_ENLARGEMENT)) + //If they have Acute hepatic pharmacokinesis, then route processing though liver. + if(HAS_TRAIT(H, TRAIT_PHARMA) || !H.canbearoused) var/obj/item/organ/liver/L = H.getorganslot(ORGAN_SLOT_LIVER) if(L) L.swelling += 0.05 @@ -224,7 +236,7 @@ P.length = 1 to_chat(H, "Your groin feels warm, as you feel a newly forming bulge down below.") P.prev_length = 1 - H.reagents.remove_reagent(type, 5) + H.reagents.remove_reagent(id, 5) P.Insert(H) P.modify_size(0.1) @@ -240,7 +252,8 @@ /datum/reagent/fermi/penis_enlarger/overdose_process(mob/living/carbon/human/M) //Turns you into a male if female and ODing, doesn't touch nonbinary and object genders. if(!istype(M)) return ..() - if(!(M.client?.prefs.cit_toggles & FORCED_MASC)) + //Acute hepatic pharmacokinesis. + if(HAS_TRAIT(M, TRAIT_PHARMA) || !M.canbearoused) var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) L.swelling+= 0.05 return..() @@ -267,6 +280,7 @@ /datum/reagent/fermi/PEsmaller // Due to cozmo's request...! name = "Chastity draft" + id = "PEsmaller" description = "A volatile collodial mixture derived from various masculine solutions that encourages a smaller gentleman's package via a potent testosterone mix. Produced by reacting impure Incubus draft." color = "#888888" // This is greyish..? taste_description = "chinese dragon powder" @@ -278,9 +292,11 @@ return ..() var/mob/living/carbon/human/H = M var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS) - if(!(H.client?.prefs.cit_toggles & PENIS_ENLARGEMENT) || !P) - var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) - L.swelling-= 0.05 + if(!P) + //Acute hepatic pharmacokinesis. + if(HAS_TRAIT(M, TRAIT_PHARMA)) + var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) + L.swelling-= 0.05 return..() P.modify_size(-0.1) @@ -288,6 +304,7 @@ /datum/reagent/fermi/PEsmaller_hypo name = "Rectify draft" + id = "PEsmaller_hypo" color = "#888888" // This is greyish..? taste_description = "chinese dragon powder" description = "A medicine used to treat organomegaly in a patient's penis." diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm index e9c5733584..b3ee8f5b7f 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm @@ -3,12 +3,13 @@ /datum/reagent/fermi name = "Fermi" //This should never exist, but it does so that it can exist in the case of errors.. + id = "fermi" taste_description = "affection and love!" can_synth = FALSE value = 20 - impure_chem = /datum/reagent/impure/fermiTox // What chemical is metabolised with an inpure reaction + impure_chem = "fermiTox"// What chemical is metabolised with an inpure reaction inverse_chem_val = 0.25 // If the impurity is below 0.5, replace ALL of the chem with inverse_chemupon metabolising - inverse_chem = /datum/reagent/impure/fermiTox + inverse_chem = "fermiTox" //This should process fermichems to find out how pure they are and what effect to do. @@ -31,6 +32,7 @@ /datum/reagent/fermi/hatmium //for hatterhat name = "Hat growth serium" + id = "hatmium" description = "A strange substance that draws in a hat from the hat dimention." color = "#7c311a" // rgb: , 0, 255 taste_description = "like jerky, whiskey and an off aftertaste of a crypt." @@ -78,6 +80,7 @@ /datum/reagent/fermi/furranium name = "Furranium" + id = "furranium" description = "OwO whats this?" color = "#f9b9bc" // rgb: , 0, 255 taste_description = "dewicious degenyewacy" @@ -167,12 +170,13 @@ /datum/reagent/fermi/nanite_b_gone name = "Nanite bane" + id = "nanite_b_gone" description = "A stablised EMP that is highly volatile, shocking small nano machines that will kill them off at a rapid rate in a patient's system." color = "#708f8f" overdose_threshold = 15 - impure_chem = /datum/reagent/fermi/nanite_b_goneTox //If you make an inpure chem, it stalls growth + impure_chem = "nanite_b_goneTox" //If you make an inpure chem, it stalls growth inverse_chem_val = 0.25 - inverse_chem = /datum/reagent/fermi/nanite_b_goneTox //At really impure vols, it just becomes 100% inverse + inverse_chem = "nanite_b_goneTox" //At really impure vols, it just becomes 100% inverse taste_description = "what can only be described as licking a battery." pH = 9 value = 90 @@ -210,6 +214,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) /datum/reagent/fermi/nanite_b_goneTox name = "Electromagnetic crystals" + id = "nanite_b_goneTox" description = "Causes items upon the patient to sometimes short out, as well as causing a shock in the patient, if the residual charge between the crystals builds up to sufficient quantities" metabolization_rate = 0.5 chemical_flags = REAGENT_INVISIBLE @@ -232,6 +237,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) /datum/reagent/fermi/fermiAcid name = "Acid vapour" + id = "fermiAcid" description = "Someone didn't do like an otter, and add acid to water." taste_description = "acid burns, ow" color = "#FFFFFF" @@ -274,6 +280,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) /datum/reagent/fermi/fermiTest name = "Fermis Test Reagent" + id = "fermiTest" description = "You should be really careful with this...! Also, how did you get this?" chemical_flags = REAGENT_FORCEONNEW can_synth = FALSE @@ -283,7 +290,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) if(LAZYLEN(holder.reagent_list) == 1) return else - holder.del_reagent(type)//Avoiding recurrsion + holder.remove_reagent("fermiTest", volume)//Avoiding recurrsion var/location = get_turf(holder.my_atom) if(cached_purity < 0.34 || cached_purity == 1) var/datum/effect_system/foam_spread/s = new() @@ -296,10 +303,10 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) if(cached_purity >= 0.67) for (var/datum/reagent/reagent in holder.reagent_list) if (istype(reagent, /datum/reagent/fermi)) - var/datum/chemical_reaction/fermi/Ferm = GLOB.chemical_reagents_list[reagent.type] + var/datum/chemical_reaction/fermi/Ferm = GLOB.chemical_reagents_list[reagent.id] Ferm.FermiExplode(src, holder.my_atom, holder, holder.total_volume, holder.chem_temp, holder.pH) else - var/datum/chemical_reaction/Ferm = GLOB.chemical_reagents_list[reagent.type] + var/datum/chemical_reaction/Ferm = GLOB.chemical_reagents_list[reagent.id] Ferm.on_reaction(holder, reagent.volume) for(var/mob/M in viewers(8, location)) to_chat(M, "The solution reacts dramatically, with a meow!") @@ -308,6 +315,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) /datum/reagent/fermi/acidic_buffer name = "Acidic buffer" + id = "acidic_buffer" description = "This reagent will consume itself and move the pH of a beaker towards acidity when added to another." color = "#fbc314" pH = 0 @@ -315,7 +323,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) //Consumes self on addition and shifts pH /datum/reagent/fermi/acidic_buffer/on_new(datapH) - if(holder.has_reagent(/datum/reagent/stabilizing_agent)) + if(holder.has_reagent("stabilizing_agent")) return ..() data = datapH if(LAZYLEN(holder.reagent_list) == 1) @@ -325,18 +333,19 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) for(var/mob/M in seen) to_chat(M, "The beaker fizzes as the pH changes!") playsound(get_turf(holder.my_atom), 'sound/FermiChem/bufferadd.ogg', 50, 1) - holder.remove_reagent(type, volume, ignore_pH = TRUE) + holder.remove_reagent(id, volume, ignore_pH = TRUE) ..() /datum/reagent/fermi/basic_buffer name = "Basic buffer" + id = "basic_buffer" description = "This reagent will consume itself and move the pH of a beaker towards alkalinity when added to another." color = "#3853a4" pH = 14 can_synth = TRUE /datum/reagent/fermi/basic_buffer/on_new(datapH) - if(holder.has_reagent(/datum/reagent/stabilizing_agent)) + if(holder.has_reagent("stabilizing_agent")) return ..() data = datapH if(LAZYLEN(holder.reagent_list) == 1) @@ -346,13 +355,14 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) for(var/mob/M in seen) to_chat(M, "The beaker froths as the pH changes!") playsound(get_turf(holder.my_atom), 'sound/FermiChem/bufferadd.ogg', 50, 1) - holder.remove_reagent(type, volume, ignore_pH = TRUE) + holder.remove_reagent(id, volume, ignore_pH = TRUE) ..() //Turns you into a cute catto while it's in your system. //If you manage to gamble perfectly, makes you have cat ears after you transform back. But really, you shouldn't end up with that with how random it is. /datum/reagent/fermi/secretcatchem //Should I hide this from code divers? A secret cit chem? name = "secretcatchem" //an attempt at hiding it + id = "secretcatchem" description = "An illegal and hidden chem that turns people into cats. It's said that it's so rare and unstable that having it means you've been blessed. If used on someone in crit, it will turn them into a cat permanently, until the cat is killed." taste_description = "hairballs and cream" color = "#ffc224" diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm index 8668ef76f0..fa4f48172b 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm @@ -1,13 +1,14 @@ /datum/reagent/fermi/yamerol name = "Yamerol" + id = "yamerol" description = "For when you've trouble speaking or breathing, just yell YAMEROL! A chem that helps soothe any congestion problems and at high concentrations restores damaged lungs and tongues!" taste_description = "a weird, syrupy flavour, yamero" color = "#68e83a" pH = 8.6 overdose_threshold = 35 - impure_chem = /datum/reagent/impure/yamerol_tox + impure_chem = "yamerol_tox" inverse_chem_val = 0.4 - inverse_chem = /datum/reagent/impure/yamerol_tox + inverse_chem = "yamerol_tox" can_synth = TRUE /datum/reagent/fermi/yamerol/on_mob_life(mob/living/carbon/C) @@ -33,7 +34,7 @@ qdel(T) nT.Insert(C) to_chat(C, "You feel your tongue.... unfluffify...?") - holder.remove_reagent(type, 10) + holder.remove_reagent(src.id, "10") ..() /datum/reagent/fermi/yamerol/overdose_process(mob/living/carbon/C) @@ -49,7 +50,7 @@ T = new() T.Insert(C) to_chat(C, "You feel your tongue reform in your mouth.") - holder.remove_reagent(type, 10) + holder.remove_reagent(src.id, "10") else if((oT.name == "fluffy tongue") && (purity == 1)) var/obj/item/organ/tongue/T @@ -61,18 +62,19 @@ qdel(oT) T.Insert(C) to_chat(C, "You feel your tongue.... unfluffify...?") - holder.remove_reagent(type, 10) + holder.remove_reagent(src.id, "10") if(!C.getorganslot(ORGAN_SLOT_LUNGS)) var/obj/item/organ/lungs/yamerol/L = new() L.Insert(C) to_chat(C, "You feel the yamerol merge in your chest.") - holder.remove_reagent(type, 10) + holder.remove_reagent(src.id, "10") C.adjustOxyLoss(-3) ..() /datum/reagent/impure/yamerol_tox name = "Yamer oh no" + id = "yamerol_tox" description = "A dangerous, cloying toxin that stucks to a patient’s respiratory system, damaging their tongue, lungs and causing suffocation." taste_description = "a weird, syrupy flavour, yamero" color = "#68e83a" @@ -94,6 +96,7 @@ /datum/reagent/synthtissue name = "Synthtissue" + id = "synthtissue" description = "Synthetic tissue used for grafting onto damaged organs during surgery, or for treating limb damage. Has a very tight growth window between 305-320, any higher and the temperature will cause the cells to die. Additionally, growth time is considerably long, so chemists are encouraged to leave beakers with said reaction ongoing, while they tend to their other duties." pH = 7.6 metabolization_rate = 0.05 //Give them time to graft @@ -140,7 +143,7 @@ if(data["grown_volume"] > 175) //I don't think this is even possible, but damn to I want to see if someone can (bare in mind it takes 2s to grow 0.05u) if(volume >= 14) if(C.regenerate_organs(only_one = TRUE)) - C.reagents.remove_reagent(type, 15) + C.reagents.remove_reagent(id, 15) to_chat(C, "You feel something reform inside of you!") data["injected_vol"] -= metabolization_rate diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm index 87f9d71ce2..c8ebde11d9 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1,5 +1,6 @@ /datum/reagent/syndicateadrenals name = "Syndicate Adrenaline" + id = "syndicateadrenals" description = "Regenerates your stamina and increases your reaction time." color = "#E62111" overdose_threshold = 6 diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index 31e319edd3..fcde3a8b79 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -9,19 +9,19 @@ /datum/chemical_reaction/proc/FermiFinish(datum/reagents/holder, var/atom/my_atom, reactVol) if(clear_conversion == REACTION_CLEAR_IMPURE | REACTION_CLEAR_INVERSE) for(var/id in results) - var/datum/reagent/R = my_atom.reagents.has_reagent(id) + var/datum/reagent/R = my_atom.reagents.has_reagent("[id]") if(R.purity == 1) continue var/cached_volume = R.volume if(clear_conversion == REACTION_CLEAR_INVERSE && R.inverse_chem) if(R.inverse_chem_val > R.purity) - my_atom.reagents.remove_reagent(R.type, cached_volume, FALSE) + my_atom.reagents.remove_reagent(R.id, cached_volume, FALSE) my_atom.reagents.add_reagent(R.inverse_chem, cached_volume, FALSE, other_purity = 1) else if (clear_conversion == REACTION_CLEAR_IMPURE && R.impure_chem) var/impureVol = cached_volume * (1 - R.purity) - my_atom.reagents.remove_reagent(R.type, (impureVol), FALSE) + my_atom.reagents.remove_reagent(R.id, (impureVol), FALSE) my_atom.reagents.add_reagent(R.impure_chem, impureVol, FALSE, other_purity = 1) R.cached_purity = R.purity R.purity = 1 @@ -76,15 +76,14 @@ var/datum/effect_system/smoke_spread/chem/s = new() R.my_atom = my_atom //Give the gas a fingerprint - for (var/A in R0.reagent_list) //make gas for reagents, has to be done this way, otherwise it never stops Exploding - var/datum/reagent/R2 = A - R.add_reagent(R2.type, R2.volume/3) //Seems fine? I think I fixed the infinite explosion bug. + for (var/datum/reagent/reagent in R0.reagent_list) //make gas for reagents, has to be done this way, otherwise it never stops Exploding + R.add_reagent(reagent.id, reagent.volume/3) //Seems fine? I think I fixed the infinite explosion bug. - if (R2.purity < 0.6) - ImpureTot = (ImpureTot + (1-R2.purity)) / 2 + if (reagent.purity < 0.6) + ImpureTot = (ImpureTot + (1-reagent.purity)) / 2 if(pH < 4) //if acidic, make acid spray - R.add_reagent(/datum/reagent/impure/fermiTox, (volume/3)) + R.add_reagent("fermiAcid", (volume/3)) if(R.reagent_list) s.set_up(R, (volume/5), my_atom) s.start() @@ -104,9 +103,9 @@ /datum/chemical_reaction/fermi/eigenstate name = "Eigenstasium" - id = /datum/reagent/fermi/eigenstate - results = list(/datum/reagent/fermi/eigenstate = 1) - required_reagents = list(/datum/reagent/bluespace = 1, /datum/reagent/stable_plasma = 1, /datum/reagent/consumable/caramel = 1) + id = "eigenstate" + results = list("eigenstate" = 1) + required_reagents = list("bluespace" = 1, "stable_plasma" = 1, "sugar" = 1) mix_message = "the reaction zaps suddenly!" //FermiChem vars: OptimalTempMin = 350 // Lower area of bell curve for determining heat based rate reactions @@ -138,9 +137,9 @@ //serum /datum/chemical_reaction/fermi/SDGF name = "Synthetic-derived growth factor" - id = /datum/reagent/fermi/SDGF - results = list(/datum/reagent/fermi/SDGF = 3) - required_reagents = list(/datum/reagent/stable_plasma = 1.5, /datum/reagent/medicine/clonexadone = 1.5, /datum/reagent/uranium = 1.5, /datum/reagent/medicine/synthflesh = 1.5) + id = "SDGF" + results = list("SDGF" = 3) + required_reagents = list("stable_plasma" = 1.5, "clonexadone" = 1.5, "uranium" = 1.5, "synthflesh" = 1.5) mix_message = "the reaction gives off a blorble!" required_temp = 1 //FermiChem vars: @@ -179,9 +178,9 @@ /datum/chemical_reaction/fermi/breast_enlarger name = "Sucubus milk" - id = /datum/reagent/fermi/breast_enlarger - results = list(/datum/reagent/fermi/breast_enlarger = 8) - required_reagents = list(/datum/reagent/medicine/salglu_solution = 1, /datum/reagent/consumable/milk = 1, /datum/reagent/medicine/synthflesh = 2, /datum/reagent/silicon = 3, /datum/reagent/drug/aphrodisiac = 3) + id = "breast_enlarger" + results = list("breast_enlarger" = 8) + required_reagents = list("salglu_solution" = 1, "milk" = 1, "synthflesh" = 2, "silicon" = 3, "aphro" = 3) mix_message = "the reaction gives off a mist of milk." //FermiChem vars: OptimalTempMin = 200 @@ -204,8 +203,8 @@ var/datum/reagent/fermi/breast_enlarger/BE = locate(/datum/reagent/fermi/breast_enlarger) in my_atom.reagents.reagent_list var/cached_volume = BE.volume if(BE.purity < 0.35) - holder.remove_reagent(type, cached_volume) - holder.add_reagent(/datum/reagent/fermi/BEsmaller, cached_volume) + holder.remove_reagent(src.id, cached_volume) + holder.add_reagent("BEsmaller", cached_volume) /datum/chemical_reaction/fermi/breast_enlarger/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH) @@ -219,9 +218,9 @@ /datum/chemical_reaction/fermi/penis_enlarger name = "Incubus draft" - id = /datum/reagent/fermi/penis_enlarger - results = list(/datum/reagent/fermi/penis_enlarger = 8) - required_reagents = list(/datum/reagent/blood = 5, /datum/reagent/medicine/synthflesh = 2, /datum/reagent/carbon = 2, /datum/reagent/drug/aphrodisiac = 2, /datum/reagent/medicine/salglu_solution = 1) + id = "penis_enlarger" + results = list("penis_enlarger" = 8) + required_reagents = list("blood" = 5, "synthflesh" = 2, "carbon" = 2, "aphro" = 2, "salglu_solution" = 1) mix_message = "the reaction gives off a spicy mist." //FermiChem vars: OptimalTempMin = 200 @@ -253,14 +252,14 @@ var/datum/reagent/fermi/penis_enlarger/PE = locate(/datum/reagent/fermi/penis_enlarger) in my_atom.reagents.reagent_list var/cached_volume = PE.volume if(PE.purity < 0.35) - holder.remove_reagent(type, cached_volume) - holder.add_reagent(/datum/reagent/fermi/PEsmaller, cached_volume) + holder.remove_reagent(src.id, cached_volume) + holder.add_reagent("PEsmaller", cached_volume) /datum/chemical_reaction/fermi/astral name = "Astrogen" - id = /datum/reagent/fermi/astral - results = list(/datum/reagent/fermi/astral = 5) - required_reagents = list(/datum/reagent/fermi/eigenstate = 1, /datum/reagent/toxin/plasma = 3, /datum/reagent/medicine/synaptizine = 1, /datum/reagent/aluminium = 5) + id = "astral" + results = list("astral" = 5) + required_reagents = list("eigenstate" = 1, "plasma" = 3, "synaptizine" = 1, "aluminium" = 5) //FermiChem vars: OptimalTempMin = 700 OptimalTempMax = 800 @@ -279,12 +278,12 @@ PurityMin = 0.25 -/datum/chemical_reaction/fermi/enthrall //check this +/datum/chemical_reaction/fermi/enthrall/ //check this name = "MKUltra" - id = /datum/reagent/fermi/enthrall - results = list(/datum/reagent/fermi/enthrall = 5) - required_reagents = list(/datum/reagent/consumable/coco = 1, /datum/reagent/bluespace = 1, /datum/reagent/toxin/mindbreaker = 1, /datum/reagent/medicine/psicodine = 1, /datum/reagent/drug/happiness = 1) - required_catalysts = list(/datum/reagent/blood = 1) + id = "enthrall" + results = list("enthrall" = 5) + required_reagents = list("cocoa" = 1, "bluespace" = 1, "mindbreaker" = 1, "psicodine" = 1, "happiness" = 1) + required_catalysts = list("blood" = 1) mix_message = "the reaction gives off a burgundy plume of smoke!" //FermiChem vars: OptimalTempMin = 780 @@ -326,8 +325,7 @@ //So slimes can play too. /datum/chemical_reaction/fermi/enthrall/slime - id = "enthrall2" - required_catalysts = list(/datum/reagent/blood/jellyblood = 1) + required_catalysts = list("jellyblood" = 1) /datum/chemical_reaction/fermi/enthrall/slime/FermiFinish(datum/reagents/holder, var/atom/my_atom) var/datum/reagent/blood/jellyblood/B = locate(/datum/reagent/blood/jellyblood) in my_atom.reagents.reagent_list//The one line change. @@ -352,16 +350,16 @@ var/turf/T = get_turf(my_atom) var/datum/reagents/R = new/datum/reagents(1000) var/datum/effect_system/smoke_spread/chem/s = new() - R.add_reagent(/datum/reagent/fermi/enthrallExplo, volume) + R.add_reagent("enthrallExplo", volume) s.set_up(R, volume/2, T) s.start() my_atom.reagents.clear_reagents() /datum/chemical_reaction/fermi/hatmium // done name = "Hat growth serum" - id = /datum/reagent/fermi/hatmium - results = list(/datum/reagent/fermi/hatmium = 5) - required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/cooking_oil = 2, /datum/reagent/iron = 1, /datum/reagent/gold = 3) + id = "hatmium" + results = list("hatmium" = 5) + required_reagents = list("ethanol" = 1, "nutriment" = 3, "cooking_oil" = 2, "iron" = 1, "gold" = 3) //mix_message = "" //FermiChem vars: OptimalTempMin = 500 @@ -394,9 +392,9 @@ /datum/chemical_reaction/fermi/furranium name = "Furranium" - id = /datum/reagent/fermi/furranium - results = list(/datum/reagent/fermi/furranium = 5) - required_reagents = list(/datum/reagent/drug/aphrodisiac = 1, /datum/reagent/moonsugar = 1, /datum/reagent/silver = 2, /datum/reagent/medicine/salglu_solution = 1) + id = "furranium" + results = list("furranium" = 5) + required_reagents = list("aphro" = 1, "moonsugar" = 1, "silver" = 2, "salglu_solution" = 1) mix_message = "You think you can hear a howl come from the beaker." //FermiChem vars: OptimalTempMin = 350 @@ -415,8 +413,7 @@ PurityMin = 0.3 /datum/chemical_reaction/fermi/furranium/organic - id = "furranium_organic" - required_reagents = list(/datum/reagent/drug/aphrodisiac = 1, /datum/reagent/pax/catnip = 1, /datum/reagent/silver = 2, /datum/reagent/medicine/salglu_solution = 1) + required_reagents = list("aphro" = 1, "catnip" = 1, "silver" = 2, "salglu_solution" = 1) //FOR INSTANT REACTIONS - DO NOT MULTIPLY LIMIT BY 10. //There's a weird rounding error or something ugh. @@ -424,9 +421,9 @@ //Nano-b-gone /datum/chemical_reaction/fermi/nanite_b_gone//done test name = "Naninte bain" - id = /datum/reagent/fermi/nanite_b_gone - results = list(/datum/reagent/fermi/nanite_b_gone = 4) - required_reagents = list(/datum/reagent/medicine/synthflesh = 1, /datum/reagent/uranium = 1, /datum/reagent/iron = 1, /datum/reagent/medicine/salglu_solution = 1) + id = "nanite_b_gone" + results = list("nanite_b_gone" = 4) + required_reagents = list("synthflesh" = 1, "uranium" = 1, "iron" = 1, "salglu_solution" = 1) mix_message = "the reaction gurgles, encapsulating the reagents in flesh before the emp can be set off." required_temp = 450//To force fermireactions before EMP. //FermiChem vars: @@ -446,9 +443,9 @@ /datum/chemical_reaction/fermi/acidic_buffer//done test name = "Acetic acid buffer" - id = /datum/reagent/fermi/acidic_buffer - results = list(/datum/reagent/fermi/acidic_buffer = 10) //acetic acid - required_reagents = list(/datum/reagent/medicine/salglu_solution = 1, /datum/reagent/consumable/ethanol = 3, /datum/reagent/oxygen = 3, /datum/reagent/water = 3) + id = "acidic_buffer" + results = list("acidic_buffer" = 10) //acetic acid + required_reagents = list("salglu_solution" = 1, "ethanol" = 3, "oxygen" = 3, "water" = 3) //FermiChem vars: OptimalTempMin = 250 OptimalTempMax = 500 @@ -473,10 +470,10 @@ /datum/chemical_reaction/fermi/basic_buffer//done test name = "Ethyl Ethanoate buffer" - id = /datum/reagent/fermi/basic_buffer - results = list(/datum/reagent/fermi/basic_buffer = 5) - required_reagents = list(/datum/reagent/lye = 1, /datum/reagent/consumable/ethanol = 2, /datum/reagent/water = 2) - required_catalysts = list(/datum/reagent/toxin/acid = 1) //vagely acetic + id = "basic_buffer" + results = list("basic_buffer" = 5) + required_reagents = list("lye" = 1, "ethanol" = 2, "water" = 2) + required_catalysts = list("sacid" = 1) //vagely acetic //FermiChem vars: OptimalTempMin = 250 OptimalTempMax = 500 @@ -505,10 +502,10 @@ //ChemReactionVars: /datum/chemical_reaction/fermi/secretcatchem //DONE name = "secretcatchem" - id = /datum/reagent/fermi/secretcatchem - results = list(/datum/reagent/fermi/secretcatchem = 5) - required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/consumable/caramel = 1, /datum/reagent/consumable/cream = 1, /datum/reagent/medicine/clonexadone = 1)//Yes this will make a kitty if you don't lucky guess. It'll eat all your reagents too. - required_catalysts = list(/datum/reagent/fermi/SDGF = 1) + id = "secretcatchem" + results = list("secretcatchem" = 5) + required_reagents = list("stable_plasma" = 1, "sugar" = 1, "cream" = 1, "clonexadone" = 1)//Yes this will make a kitty if you don't lucky guess. It'll eat all your reagents too. + required_catalysts = list("SDGF" = 1) required_temp = 500 mix_message = "the reaction gives off a meow!" mix_sound = "modular_citadel/sound/voice/merowr.ogg" @@ -539,8 +536,8 @@ HIonRelease += (rand(-25, 25)/100) RateUpLim += (rand(1, 1000)/100) PurityMin += (rand(-1, 1)/10) - var/picked = pick(/datum/reagent/aluminium, /datum/reagent/silver, /datum/reagent/gold, /datum/reagent/toxin/plasma, /datum/reagent/silicon, /datum/reagent/uranium, /datum/reagent/consumable/milk) - required_reagents[picked] = rand(1, 5)//weird + var/additions = list("aluminium", "silver", "gold", "plasma", "silicon", "uranium", "milk") + required_reagents[pick(additions)] = rand(1, 5)//weird /datum/chemical_reaction/fermi/secretcatchem/FermiFinish(datum/reagents/holder, var/atom/my_atom) SSblackbox.record_feedback("tally", "catgirlium")//log @@ -558,9 +555,9 @@ /datum/chemical_reaction/fermi/yamerol//done test name = "Yamerol" - id = /datum/reagent/fermi/yamerol - results = list(/datum/reagent/fermi/yamerol = 3) - required_reagents = list(/datum/reagent/medicine/perfluorodecalin = 1, /datum/reagent/medicine/salbutamol = 1, /datum/reagent/water = 1) + id = "yamerol" + results = list("yamerol" = 3) + required_reagents = list("perfluorodecalin" = 1, "salbutamol" = 1, "water" = 1) //FermiChem vars: OptimalTempMin = 300 OptimalTempMax = 500 diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm index b907c27329..aa4c65c3bb 100644 --- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm +++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm @@ -1,6 +1,7 @@ //body bluids /datum/reagent/consumable/semen name = "Semen" + id = "semen" description = "Sperm from some animal. I bet you'll drink this out of a bucket someday." taste_description = "something salty" taste_mult = 2 //Not very overpowering flavor @@ -44,6 +45,7 @@ /datum/reagent/consumable/femcum name = "Female Ejaculate" + id = "femcum" description = "Vaginal lubricant found in most mammals and other animals of similar nature. Where you found this is your own business." taste_description = "something with a tang" // wew coders who haven't eaten out a girl. taste_mult = 2 @@ -91,13 +93,14 @@ /datum/reagent/drug/aphrodisiac name = "Crocin" + id = "aphro" description = "Naturally found in the crocus and gardenia flowers, this drug acts as a natural and safe aphrodisiac." taste_description = "strawberry roofies" taste_mult = 2 //Hide the roofies in stronger flavors color = "#FFADFF"//PINK, rgb(255, 173, 255) /datum/reagent/drug/aphrodisiac/on_mob_life(mob/living/M) - if(M && M.canbearoused && !(M.client?.prefs.cit_toggles & NO_APHRO)) + if(M && M.canbearoused && !HAS_TRAIT(M, TRAIT_CROCRIN_IMMUNE)) if(prob(33)) M.adjustArousalLoss(2) if(prob(5)) @@ -109,6 +112,7 @@ /datum/reagent/drug/aphrodisiacplus name = "Hexacrocin" + id = "aphro+" description = "Chemically condensed form of basic crocin. This aphrodisiac is extremely powerful and addictive in most animals.\ Addiction withdrawals can cause brain damage and shortness of breath. Overdosage can lead to brain damage and a \ permanent increase in libido (commonly referred to as 'bimbofication')." @@ -118,7 +122,7 @@ overdose_threshold = 20 /datum/reagent/drug/aphrodisiacplus/on_mob_life(mob/living/M) - if(M && M.canbearoused && !(M.client?.prefs.cit_toggles & NO_APHRO)) + if(M && M.canbearoused && !HAS_TRAIT(M, TRAIT_CROCRIN_IMMUNE)) if(prob(33)) M.adjustArousalLoss(6)//not quite six times as powerful, but still considerably more powerful. if(prob(5)) @@ -150,7 +154,7 @@ ..() /datum/reagent/drug/aphrodisiacplus/overdose_process(mob/living/M) - if(M && M.canbearoused && !(M.client?.prefs.cit_toggles & NO_APHRO) && prob(33)) + if(M && M.canbearoused && !HAS_TRAIT(M, TRAIT_CROCRIN_IMMUNE) && prob(33)) if(prob(5) && M.getArousalLoss() >= 100 && ishuman(M) && M.has_dna()) if(prob(5)) //Less spam to_chat(M, "Your libido is going haywire!") @@ -163,6 +167,7 @@ /datum/reagent/drug/anaphrodisiac name = "Camphor" + id = "anaphro" description = "Naturally found in some species of evergreen trees, camphor is a waxy substance. When injested by most animals, it acts as an anaphrodisiac\ , reducing libido and calming them. Non-habit forming and not addictive." taste_description = "dull bitterness" @@ -177,6 +182,7 @@ /datum/reagent/drug/anaphrodisiacplus name = "Hexacamphor" + id = "anaphro+" description = "Chemically condensed camphor. Causes an extreme reduction in libido and a permanent one if overdosed. Non-addictive." taste_description = "tranquil celibacy" color = "#D9D9D9"//rgb(217, 217, 217) @@ -200,32 +206,32 @@ //recipes /datum/chemical_reaction/aphro name = "crocin" - id = /datum/reagent/drug/aphrodisiac - results = list(/datum/reagent/drug/aphrodisiac = 6) - required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/oxygen = 2, /datum/reagent/water = 1) + id = "aphro" + results = list("aphro" = 6) + required_reagents = list("carbon" = 2, "hydrogen" = 2, "oxygen" = 2, "water" = 1) required_temp = 400 mix_message = "The mixture boils off a pink vapor..."//The water boils off, leaving the crocin /datum/chemical_reaction/aphroplus name = "hexacrocin" - id = /datum/reagent/drug/aphrodisiacplus - results = list(/datum/reagent/drug/aphrodisiacplus = 1) - required_reagents = list(/datum/reagent/drug/aphrodisiac = 6, /datum/reagent/phenol = 1) + id = "aphro+" + results = list("aphro+" = 1) + required_reagents = list("aphro" = 6, "phenol" = 1) required_temp = 400 mix_message = "The mixture rapidly condenses and darkens in color..." /datum/chemical_reaction/anaphro name = "camphor" - id = /datum/reagent/drug/anaphrodisiac - results = list(/datum/reagent/drug/anaphrodisiac = 6) - required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/oxygen = 2, /datum/reagent/sulfur = 1) + id = "anaphro" + results = list("anaphro" = 6) + required_reagents = list("carbon" = 2, "hydrogen" = 2, "oxygen" = 2, "sulfur" = 1) required_temp = 400 mix_message = "The mixture boils off a yellow, smelly vapor..."//Sulfur burns off, leaving the camphor /datum/chemical_reaction/anaphroplus name = "pentacamphor" - id = /datum/reagent/drug/anaphrodisiacplus - results = list(/datum/reagent/drug/anaphrodisiacplus = 1) - required_reagents = list(/datum/reagent/drug/aphrodisiac = 5, /datum/reagent/acetone = 1) + id = "anaphro+" + results = list("anaphro+" = 1) + required_reagents = list("anaphro" = 5, "acetone" = 1) required_temp = 300 mix_message = "The mixture thickens and heats up slighty..." diff --git a/code/modules/research/designs/autoylathe_designs.dm b/modular_citadel/code/modules/research/designs/autoylathe_designs.dm similarity index 100% rename from code/modules/research/designs/autoylathe_designs.dm rename to modular_citadel/code/modules/research/designs/autoylathe_designs.dm diff --git a/modular_citadel/icons/mob/widerobot.dmi b/modular_citadel/icons/mob/widerobot.dmi index 43a6863ece..7e9da953c9 100644 Binary files a/modular_citadel/icons/mob/widerobot.dmi and b/modular_citadel/icons/mob/widerobot.dmi differ diff --git a/sound/effects/bonghit.ogg b/sound/effects/bonghit.ogg deleted file mode 100644 index 45a0dec1b6..0000000000 Binary files a/sound/effects/bonghit.ogg and /dev/null differ diff --git a/sound/weapons/klonk.ogg b/sound/weapons/klonk.ogg deleted file mode 100644 index 471f3ad8b7..0000000000 Binary files a/sound/weapons/klonk.ogg and /dev/null differ diff --git a/tgstation.dme b/tgstation.dme index 4372f525b3..5526e5eaf0 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -43,7 +43,6 @@ #include "code\__DEFINES\diseases.dm" #include "code\__DEFINES\DNA.dm" #include "code\__DEFINES\donator_groupings.dm" -#include "code\__DEFINES\dynamic.dm" #include "code\__DEFINES\events.dm" #include "code\__DEFINES\exports.dm" #include "code\__DEFINES\fantasy_affixes.dm" @@ -109,7 +108,6 @@ #include "code\__DEFINES\typeids.dm" #include "code\__DEFINES\vehicles.dm" #include "code\__DEFINES\voreconstants.dm" -#include "code\__DEFINES\vote.dm" #include "code\__DEFINES\vv.dm" #include "code\__DEFINES\wall_dents.dm" #include "code\__DEFINES\wires.dm" @@ -120,7 +118,6 @@ #include "code\__HELPERS\areas.dm" #include "code\__HELPERS\AStar.dm" #include "code\__HELPERS\cmp.dm" -#include "code\__HELPERS\custom_holoforms.dm" #include "code\__HELPERS\dates.dm" #include "code\__HELPERS\donator_groupings.dm" #include "code\__HELPERS\files.dm" @@ -229,7 +226,6 @@ #include "code\controllers\configuration\entries\dbconfig.dm" #include "code\controllers\configuration\entries\donator.dm" #include "code\controllers\configuration\entries\dynamic.dm" -#include "code\controllers\configuration\entries\fail2topic.dm" #include "code\controllers\configuration\entries\game_options.dm" #include "code\controllers\configuration\entries\general.dm" #include "code\controllers\subsystem\acid.dm" @@ -246,7 +242,6 @@ #include "code\controllers\subsystem\dcs.dm" #include "code\controllers\subsystem\disease.dm" #include "code\controllers\subsystem\events.dm" -#include "code\controllers\subsystem\fail2topic.dm" #include "code\controllers\subsystem\fire_burning.dm" #include "code\controllers\subsystem\garbage.dm" #include "code\controllers\subsystem\icon_smooth.dm" @@ -472,8 +467,6 @@ #include "code\datums\elements\_element.dm" #include "code\datums\elements\cleaning.dm" #include "code\datums\elements\earhealing.dm" -#include "code\datums\elements\ghost_role_eligibility.dm" -#include "code\datums\elements\wuv.dm" #include "code\datums\helper_datums\events.dm" #include "code\datums\helper_datums\getrev.dm" #include "code\datums\helper_datums\icon_snapshot.dm" @@ -529,7 +522,6 @@ #include "code\datums\wires\airlock.dm" #include "code\datums\wires\apc.dm" #include "code\datums\wires\autolathe.dm" -#include "code\datums\wires\autoylathe.dm" #include "code\datums\wires\emitter.dm" #include "code\datums\wires\explosive.dm" #include "code\datums\wires\microwave.dm" @@ -587,7 +579,6 @@ #include "code\game\gamemodes\dynamic\dynamic_rulesets_latejoin.dm" #include "code\game\gamemodes\dynamic\dynamic_rulesets_midround.dm" #include "code\game\gamemodes\dynamic\dynamic_rulesets_roundstart.dm" -#include "code\game\gamemodes\dynamic\dynamic_storytellers.dm" #include "code\game\gamemodes\extended\extended.dm" #include "code\game\gamemodes\gangs\dominator.dm" #include "code\game\gamemodes\gangs\dominator_countdown.dm" @@ -665,7 +656,6 @@ #include "code\game\machinery\syndicatebeacon.dm" #include "code\game\machinery\syndicatebomb.dm" #include "code\game\machinery\teleporter.dm" -#include "code\game\machinery\toylathe.dm" #include "code\game\machinery\transformer.dm" #include "code\game\machinery\turnstile.dm" #include "code\game\machinery\washing_machine.dm" @@ -892,7 +882,6 @@ #include "code\game\objects\items\taster.dm" #include "code\game\objects\items\teleportation.dm" #include "code\game\objects\items\teleprod.dm" -#include "code\game\objects\items\telescopic_iv.dm" #include "code\game\objects\items\theft_tools.dm" #include "code\game\objects\items\toys.dm" #include "code\game\objects\items\trash.dm" @@ -1446,7 +1435,6 @@ #include "code\modules\assembly\igniter.dm" #include "code\modules\assembly\infrared.dm" #include "code\modules\assembly\mousetrap.dm" -#include "code\modules\assembly\playback.dm" #include "code\modules\assembly\proximity.dm" #include "code\modules\assembly\shock_kit.dm" #include "code\modules\assembly\signaler.dm" @@ -1610,7 +1598,6 @@ #include "code\modules\clothing\clothing.dm" #include "code\modules\clothing\ears\_ears.dm" #include "code\modules\clothing\glasses\_glasses.dm" -#include "code\modules\clothing\glasses\disablerglasses.dm" #include "code\modules\clothing\glasses\engine_goggles.dm" #include "code\modules\clothing\glasses\hud.dm" #include "code\modules\clothing\glasses\phantomthief.dm" @@ -2036,7 +2023,6 @@ #include "code\modules\mining\mint.dm" #include "code\modules\mining\money_bag.dm" #include "code\modules\mining\ores_coins.dm" -#include "code\modules\mining\point_bank.dm" #include "code\modules\mining\satchel_ore_boxdm.dm" #include "code\modules\mining\shelters.dm" #include "code\modules\mining\equipment\explorer_gear.dm" @@ -2120,7 +2106,6 @@ #include "code\modules\mob\living\say.dm" #include "code\modules\mob\living\status_procs.dm" #include "code\modules\mob\living\taste.dm" -#include "code\modules\mob\living\update_icons.dm" #include "code\modules\mob\living\ventcrawling.dm" #include "code\modules\mob\living\brain\brain.dm" #include "code\modules\mob\living\brain\brain_item.dm" @@ -2227,7 +2212,6 @@ #include "code\modules\mob\living\carbon\monkey\monkey_defense.dm" #include "code\modules\mob\living\carbon\monkey\punpun.dm" #include "code\modules\mob\living\carbon\monkey\update_icons.dm" -#include "code\modules\mob\living\silicon\custom_holoform.dm" #include "code\modules\mob\living\silicon\damage_procs.dm" #include "code\modules\mob\living\silicon\death.dm" #include "code\modules\mob\living\silicon\examine.dm" @@ -2259,7 +2243,6 @@ #include "code\modules\mob\living\silicon\pai\personality.dm" #include "code\modules\mob\living\silicon\pai\say.dm" #include "code\modules\mob\living\silicon\pai\software.dm" -#include "code\modules\mob\living\silicon\pai\update_icon.dm" #include "code\modules\mob\living\silicon\robot\death.dm" #include "code\modules\mob\living\silicon\robot\emote.dm" #include "code\modules\mob\living\silicon\robot\examine.dm" @@ -2732,7 +2715,6 @@ #include "code\modules\research\stock_parts.dm" #include "code\modules\research\designs\AI_module_designs.dm" #include "code\modules\research\designs\autobotter_designs.dm" -#include "code\modules\research\designs\autoylathe_designs.dm" #include "code\modules\research\designs\biogenerator_designs.dm" #include "code\modules\research\designs\bluespace_designs.dm" #include "code\modules\research\designs\computer_part_designs.dm" @@ -2997,18 +2979,6 @@ #include "code\modules\uplink\uplink_devices.dm" #include "code\modules\uplink\uplink_items.dm" #include "code\modules\uplink\uplink_purchase_log.dm" -#include "code\modules\uplink\uplink_items\uplink_ammo.dm" -#include "code\modules\uplink\uplink_items\uplink_badass.dm" -#include "code\modules\uplink\uplink_items\uplink_bundles.dm" -#include "code\modules\uplink\uplink_items\uplink_clothing.dm" -#include "code\modules\uplink\uplink_items\uplink_dangerous.dm" -#include "code\modules\uplink\uplink_items\uplink_devices.dm" -#include "code\modules\uplink\uplink_items\uplink_explosives.dm" -#include "code\modules\uplink\uplink_items\uplink_implants.dm" -#include "code\modules\uplink\uplink_items\uplink_roles.dm" -#include "code\modules\uplink\uplink_items\uplink_stealth.dm" -#include "code\modules\uplink\uplink_items\uplink_stealthdevices.dm" -#include "code\modules\uplink\uplink_items\uplink_support.dm" #include "code\modules\vehicles\_vehicle.dm" #include "code\modules\vehicles\atv.dm" #include "code\modules\vehicles\bicycle.dm" @@ -3037,7 +3007,6 @@ #include "code\modules\vending\engineering.dm" #include "code\modules\vending\engivend.dm" #include "code\modules\vending\games.dm" -#include "code\modules\vending\kinkmate.dm" #include "code\modules\vending\liberation.dm" #include "code\modules\vending\liberation_toy.dm" #include "code\modules\vending\magivend.dm" @@ -3050,7 +3019,6 @@ #include "code\modules\vending\security.dm" #include "code\modules\vending\snack.dm" #include "code\modules\vending\sovietsoda.dm" -#include "code\modules\vending\sovietvend.dm" #include "code\modules\vending\sustenance.dm" #include "code\modules\vending\toys.dm" #include "code\modules\vending\wardrobes.dm" @@ -3083,9 +3051,15 @@ #include "modular_citadel\code\_onclick\hud\screen_objects.dm" #include "modular_citadel\code\_onclick\hud\sprint.dm" #include "modular_citadel\code\_onclick\hud\stamina.dm" +#include "modular_citadel\code\datums\components\material_container.dm" #include "modular_citadel\code\datums\components\souldeath.dm" #include "modular_citadel\code\datums\status_effects\chems.dm" #include "modular_citadel\code\datums\status_effects\debuffs.dm" +#include "modular_citadel\code\datums\wires\autoylathe.dm" +#include "modular_citadel\code\game\machinery\displaycases.dm" +#include "modular_citadel\code\game\machinery\Sleeper.dm" +#include "modular_citadel\code\game\machinery\toylathe.dm" +#include "modular_citadel\code\game\machinery\vending.dm" #include "modular_citadel\code\game\machinery\wishgranter.dm" #include "modular_citadel\code\game\objects\cit_screenshake.dm" #include "modular_citadel\code\game\objects\items.dm" @@ -3094,9 +3068,12 @@ #include "modular_citadel\code\game\objects\items\balls.dm" #include "modular_citadel\code\game\objects\items\boombox.dm" #include "modular_citadel\code\game\objects\items\stunsword.dm" +#include "modular_citadel\code\game\objects\items\circuitboards\machine_circuitboards.dm" #include "modular_citadel\code\game\objects\items\devices\radio\encryptionkey.dm" #include "modular_citadel\code\game\objects\items\devices\radio\headset.dm" #include "modular_citadel\code\game\objects\items\devices\radio\shockcollar.dm" +#include "modular_citadel\code\game\objects\structures\tables_racks.dm" +#include "modular_citadel\code\game\objects\structures\beds_chairs\chair.dm" #include "modular_citadel\code\modules\admin\admin.dm" #include "modular_citadel\code\modules\admin\chat_commands.dm" #include "modular_citadel\code\modules\admin\holder2.dm" @@ -3193,5 +3170,6 @@ #include "modular_citadel\code\modules\reagents\objects\clothes.dm" #include "modular_citadel\code\modules\reagents\objects\items.dm" #include "modular_citadel\code\modules\reagents\reagents\cit_reagents.dm" +#include "modular_citadel\code\modules\research\designs\autoylathe_designs.dm" #include "modular_citadel\interface\skin.dmf" // END_INCLUDE diff --git a/tgui/src/interfaces/point_bank.ract b/tgui/src/interfaces/point_bank.ract deleted file mode 100644 index 837a66427a..0000000000 --- a/tgui/src/interfaces/point_bank.ract +++ /dev/null @@ -1,60 +0,0 @@ - - - Current stored points: {{data.totalPoints}} -
      -
      - - -All - -
      -
      - - -1000 - -
      -
      - - -100 - -
      -
      - - -10 - -
      -
      - - -1 - -
      -
      - Transfer Points -
      -
      - - +1 - -
      -
      - - +10 - -
      -
      - - +100 - -
      -
      - - +1000 - -
      -
      - - +All - -
      -
      -
      -