diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm
index 2bca5b1fa1d..320ea386cd8 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm
@@ -50,7 +50,7 @@
},
/area/ruin/powered)
"k" = (
-/obj/effect/glowshroom/single,
+/obj/structure/glowshroom/single,
/turf/open/floor/plating/asteroid{
baseturf = /turf/open/floor/plating/asteroid/basalt;
name = "dirt"
@@ -89,7 +89,7 @@
/turf/open/floor/plating/asteroid/basalt,
/area/ruin/powered)
"q" = (
-/obj/effect/glowshroom/single,
+/obj/structure/glowshroom/single,
/turf/open/floor/plating{
baseturf = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
},
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm
index 3936fe3ad66..103d828b8fa 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm
@@ -103,7 +103,7 @@
},
/area/ruin/unpowered)
"n" = (
-/obj/effect/glowshroom/single,
+/obj/structure/glowshroom/single,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/wood{
baseturf = /turf/open/floor/plating/asteroid/basalt/lava_land_surface;
@@ -161,7 +161,7 @@
},
/area/ruin/unpowered)
"u" = (
-/obj/effect/glowshroom/single,
+/obj/structure/glowshroom/single,
/turf/open/floor/wood{
baseturf = /turf/open/floor/plating/asteroid/basalt/lava_land_surface;
initial_gas_mix = "o2=14;n2=23;TEMP=300"
@@ -202,7 +202,7 @@
/area/ruin/unpowered)
"z" = (
/obj/structure/table/wood,
-/obj/effect/glowshroom/single,
+/obj/structure/glowshroom/single,
/obj/item/weapon/a_gift,
/turf/open/floor/wood{
baseturf = /turf/open/floor/plating/asteroid/basalt/lava_land_surface;
@@ -283,7 +283,7 @@
},
/area/ruin/unpowered)
"J" = (
-/obj/effect/glowshroom/single,
+/obj/structure/glowshroom/single,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating{
baseturf = /turf/open/floor/plating/asteroid/basalt/lava_land_surface;
diff --git a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm
index d150e59155e..7bffa0bac1f 100644
--- a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm
+++ b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm
@@ -56,7 +56,7 @@
"bd" = (/obj/machinery/power/smes,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Power Storage"})
"be" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/turf/open/floor/plasteel/shuttle,/area/ruin/powered{name = "Derelict Docked Ship"})
"bf" = (/obj/effect/decal/cleanable/blood/old,/turf/open/floor/mineral/titanium/blue,/area/ruin/powered{name = "Derelict Docked Ship"})
-"bg" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/effect/glowshroom/single,/turf/open/floor/plasteel/shuttle,/area/ruin/powered{name = "Derelict Docked Ship"})
+"bg" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/structure/glowshroom/single,/turf/open/floor/plasteel/shuttle,/area/ruin/powered{name = "Derelict Docked Ship"})
"bh" = (/obj/machinery/button/door{id = "bigderelictship"; name = "shuttle cargo doors"; pixel_x = 24},/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/turf/open/floor/plasteel/shuttle,/area/ruin/powered{name = "Derelict Docked Ship"})
"bi" = (/obj/effect/decal/cleanable/cobweb,/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Outpost"})
"bj" = (/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Outpost"})
@@ -64,7 +64,7 @@
"bl" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Outpost"})
"bm" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (NORTHWEST)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 9},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Outpost"})
"bn" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (EAST)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 4},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Outpost"})
-"bo" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/effect/glowshroom/single,/obj/structure/sign/vacuum{pixel_y = 32},/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (EAST)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 4},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Outpost"})
+"bo" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/structure/glowshroom/single,/obj/structure/sign/vacuum{pixel_y = 32},/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (EAST)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 4},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Outpost"})
"bp" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (NORTHEAST)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 5},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Outpost"})
"bq" = (/obj/effect/mob_spawn/human/corpse/nanotrasensoldier{helmet = null; id_job = "Tradepost Officer"; name = "Tradeport Officer"; random = 1},/obj/item/weapon/paper/crumpled/snowdin{icon_state = "scrap_bloodied"; info = "If anyone finds this, please, don't let my kids know I died a coward.."},/obj/effect/decal/cleanable/blood/old{name = "dried blood splatter"; pixel_x = -29},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Power Storage"})
"br" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Power Storage"})
@@ -110,10 +110,10 @@
"cf" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{tag = "icon-rwindow (NORTH)"; icon_state = "rwindow"; dir = 1},/turf/open/floor/plasteel/darkred,/area/ruin/unpowered{name = "Derelict Outpost"})
"cg" = (/obj/item/weapon/shard,/obj/item/stack/cable_coil{amount = 2; icon_state = "coil_red2"; item_state = "coil_red"},/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/structure/table_frame,/obj/item/stack/sheet/metal,/obj/item/stack/sheet/plasteel,/turf/open/floor/plasteel/darkred,/area/ruin/unpowered{name = "Derelict Outpost"})
"ch" = (/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Outpost"})
-"ci" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/effect/glowshroom/single,/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Outpost"})
+"ci" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/structure/glowshroom/single,/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Outpost"})
"cj" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Outpost"})
"ck" = (/obj/machinery/power/apc{cell_type = 0; dir = 2; name = "Tradepost APC"; pixel_x = 0; pixel_y = -24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Outpost"})
-"cl" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/effect/glowshroom/single,/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (NORTH)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 1},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Outpost"})
+"cl" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/structure/glowshroom/single,/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (NORTH)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 1},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Outpost"})
"cm" = (/obj/structure/alien/resin/wall{color = "#8EC127"; desc = "Thick material shaped into a wall. Eugh."; icon_state = "smooth"; name = "gelatinous wall"},/turf/open/floor/plating/asteroid,/area/ruin/unpowered{name = "Derelict Outpost"})
"cn" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/electrical,/obj/item/stack/cable_coil,/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Power Storage"})
"co" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Power Storage"})
@@ -140,7 +140,7 @@
"cJ" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/item/weapon/mop,/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Cargo Bay"})
"cK" = (/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (SOUTHWEST)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 10},/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Cargo Bay"})
"cL" = (/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (NORTHEAST)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 5},/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Cargo Bay"})
-"cM" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/effect/glowshroom/single,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Cargo Bay"})
+"cM" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/structure/glowshroom/single,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Cargo Bay"})
"cN" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Cargo Bay"})
"cO" = (/obj/machinery/light,/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Outpost"})
"cP" = (/obj/item/weapon/shard,/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Outpost"})
@@ -154,7 +154,7 @@
"cX" = (/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (NORTH)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 1},/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Cargo Bay"})
"cY" = (/obj/structure/grille/broken,/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/turf/open/floor/plating,/area/ruin/unpowered{name = "Derelict Outpost"})
"cZ" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/effect/decal/cleanable/blood/old,/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (NORTH)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 1},/turf/open/floor/plating/asteroid,/area/ruin/unpowered{name = "Derelict Outpost"})
-"da" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/effect/glowshroom/single,/obj/machinery/door/firedoor,/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Cargo Bay"})
+"da" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/structure/glowshroom/single,/obj/machinery/door/firedoor,/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Cargo Bay"})
"db" = (/obj/item/ammo_casing/c45{caliber = null; desc = "A .45 bullet casing. This one is spent."; icon_state = "s-casing"; name = "spent bullet casing"},/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Cargo Bay"})
"dc" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/machinery/light,/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Cargo Bay"})
"dd" = (/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (SOUTHWEST)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 10},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Cargo Bay"})
@@ -173,12 +173,12 @@
"dq" = (/obj/effect/decal/cleanable/xenoblood/xsplatter,/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Cargo Bay"})
"dr" = (/obj/effect/decal/cleanable/blood/old{icon_state = "trails_1"; name = "dried blood trail"},/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plating,/area/ruin/unpowered{name = "Derelict Outpost"})
"ds" = (/turf/closed/mineral,/area/ruin/unpowered{name = "Derelict Outpost"})
-"dt" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/effect/glowshroom/single,/turf/open/floor/plating/asteroid,/area/ruin/unpowered{name = "Derelict Outpost"})
+"dt" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/structure/glowshroom/single,/turf/open/floor/plating/asteroid,/area/ruin/unpowered{name = "Derelict Outpost"})
"du" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/item/weapon/gun/projectile/automatic/pistol/m1911{spawnwithmagazine = 0},/obj/item/ammo_box/magazine/m45,/turf/open/floor/plating/asteroid,/area/ruin/unpowered{name = "Derelict Outpost"})
"dv" = (/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (NORTHWEST)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 9},/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/turf/open/floor/plating/asteroid,/area/ruin/unpowered{name = "Derelict Outpost"})
"dw" = (/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (EAST)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 4},/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/turf/open/floor/plating/asteroid,/area/ruin/unpowered{name = "Derelict Outpost"})
"dx" = (/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (EAST)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 4},/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/turf/open/floor/plating/asteroid,/area/ruin/unpowered{name = "Derelict Outpost"})
-"dy" = (/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (EAST)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 4},/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/effect/glowshroom/single,/turf/open/floor/plating/asteroid,/area/ruin/unpowered{name = "Derelict Outpost"})
+"dy" = (/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (EAST)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 4},/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/structure/glowshroom/single,/turf/open/floor/plating/asteroid,/area/ruin/unpowered{name = "Derelict Outpost"})
"dz" = (/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (NORTHEAST)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 5},/obj/effect/decal/cleanable/cobweb{icon_state = "cobweb2"},/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/turf/open/floor/plating/asteroid,/area/ruin/unpowered{name = "Derelict Outpost"})
"dA" = (/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (EAST)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 4},/turf/open/floor/plating/asteroid,/area/ruin/unpowered{name = "Derelict Outpost"})
"dB" = (/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (SOUTHEAST)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 6},/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plating,/area/ruin/unpowered{name = "Derelict Outpost"})
@@ -195,7 +195,7 @@
"dM" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (NORTHWEST)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 9},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plating,/area/ruin/unpowered{name = "Derelict Outpost"})
"dN" = (/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (WEST)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 8},/turf/open/floor/plating{icon_plating = "wall_thermite"; icon_state = "wall_thermite"; name = "melted wall"},/area/ruin/unpowered{name = "Derelict Outpost"})
"dO" = (/obj/structure/alien/resin/membrane{color = "#4BAE56"; desc = "A strange combination of thin, gelatinous material."; icon_state = "smooth"; name = "gelatinous membrane"},/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (WEST)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 8},/turf/open/floor/plating{icon_plating = "wall_thermite"; icon_state = "wall_thermite"; name = "melted wall"},/area/ruin/unpowered{name = "Derelict Outpost"})
-"dP" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/effect/glowshroom/single,/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (WEST)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 8},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Outpost"})
+"dP" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/structure/glowshroom/single,/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (WEST)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 8},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Outpost"})
"dQ" = (/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/effect/decal/cleanable/blood/old{tag = "icon-trails_1 (SOUTHEAST)"; name = "dried blood trail"; icon_state = "trails_1"; dir = 6},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Outpost"})
"dR" = (/obj/structure/alien/resin/membrane{color = "#4BAE56"; desc = "A strange combination of thin, gelatinous material."; icon_state = "smooth"; name = "gelatinous membrane"},/turf/open/floor/plating/asteroid,/area/ruin/unpowered{name = "Derelict Outpost"})
"dS" = (/obj/item/ammo_box/magazine/m45,/obj/structure/alien/weeds{color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor"},/obj/effect/decal/cleanable/blood/old{icon_state = "trails_1"; name = "dried blood trail"},/turf/open/floor/plasteel,/area/ruin/unpowered{name = "Derelict Cargo Bay"})
diff --git a/_maps/RandomRuins/SpaceRuins/spacebar.dmm b/_maps/RandomRuins/SpaceRuins/spacebar.dmm
index daf28eaa458..085a53a88f6 100644
--- a/_maps/RandomRuins/SpaceRuins/spacebar.dmm
+++ b/_maps/RandomRuins/SpaceRuins/spacebar.dmm
@@ -95,7 +95,7 @@
"bQ" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel/freezer,/area/ruin/powered{name = "Space Bar"})
"bR" = (/obj/structure/toilet{dir = 4},/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel/freezer,/area/ruin/powered{name = "Space Bar"})
"bS" = (/obj/machinery/door/airlock{name = "Toilet"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel/freezer,/area/ruin/powered{name = "Space Bar"})
-"bT" = (/obj/effect/glowshroom/single,/turf/open/floor/plasteel/freezer,/area/ruin/powered{name = "Space Bar"})
+"bT" = (/obj/structure/glowshroom/single,/turf/open/floor/plasteel/freezer,/area/ruin/powered{name = "Space Bar"})
"bU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plating/asteroid,/area/ruin/powered)
"bV" = (/obj/machinery/door/airlock/external,/turf/open/floor/plating,/area/ruin/powered)
"bW" = (/turf/open/floor/plating,/area/ruin/powered)
diff --git a/_maps/RandomZLevels/Academy.dmm b/_maps/RandomZLevels/Academy.dmm
index 260a66f8642..3c27dabfd81 100644
--- a/_maps/RandomZLevels/Academy.dmm
+++ b/_maps/RandomZLevels/Academy.dmm
@@ -3961,7 +3961,7 @@
/turf/open/floor/mineral/uranium,
/area/awaymission/academy/academycellar)
"le" = (
-/obj/effect/spider/stickyweb,
+/obj/structure/spider/stickyweb,
/turf/open/floor/engine/cult,
/area/awaymission/academy/academycellar)
"lf" = (
diff --git a/_maps/RandomZLevels/caves.dmm b/_maps/RandomZLevels/caves.dmm
index dea105695ea..801d47134b8 100644
--- a/_maps/RandomZLevels/caves.dmm
+++ b/_maps/RandomZLevels/caves.dmm
@@ -515,7 +515,7 @@
name = "\improper BMP Asteroid Level 3"
})
"bc" = (
-/obj/effect/spider/stickyweb,
+/obj/structure/spider/stickyweb,
/turf/open/floor/plating/asteroid/basalt{
initial_gas_mix = "n2=23;o2=14"
},
@@ -683,7 +683,7 @@
name = "\improper BMP Asteroid Level 4"
})
"bt" = (
-/obj/effect/spider/stickyweb,
+/obj/structure/spider/stickyweb,
/mob/living/simple_animal/hostile/poison/giant_spider/hunter,
/turf/open/floor/plating/asteroid/basalt{
initial_gas_mix = "n2=23;o2=14"
@@ -692,7 +692,7 @@
name = "\improper BMP Asteroid Level 3"
})
"bu" = (
-/obj/effect/spider/cocoon,
+/obj/structure/spider/cocoon,
/turf/open/floor/plating/asteroid/basalt{
initial_gas_mix = "n2=23;o2=14"
},
@@ -1404,7 +1404,7 @@
},
/area/awaymission/research)
"cY" = (
-/obj/effect/glowshroom/single,
+/obj/structure/glowshroom/single,
/turf/open/floor/plasteel{
baseturf = /turf/open/floor/plating/asteroid/basalt;
initial_gas_mix = "n2=23;o2=14"
@@ -1540,7 +1540,7 @@
name = "\improper BMP Asteroid Level 2"
})
"dm" = (
-/obj/effect/spider/stickyweb,
+/obj/structure/spider/stickyweb,
/turf/open/floor/plating{
baseturf = /turf/open/floor/plating/asteroid/basalt
},
@@ -1580,7 +1580,7 @@
icon_state = "bulb1";
dir = 4
},
-/obj/effect/spider/stickyweb,
+/obj/structure/spider/stickyweb,
/turf/open/floor/plasteel{
baseturf = /turf/open/floor/plating/asteroid/basalt
},
@@ -1588,7 +1588,7 @@
name = "\improper BMP Asteroid Level 2"
})
"dr" = (
-/obj/effect/spider/stickyweb,
+/obj/structure/spider/stickyweb,
/turf/open/floor/plasteel{
baseturf = /turf/open/floor/plating/asteroid/basalt
},
@@ -1735,7 +1735,7 @@
/area/awaymission/northblock)
"dJ" = (
/obj/item/stack/rods,
-/obj/effect/spider/stickyweb,
+/obj/structure/spider/stickyweb,
/turf/open/floor/plating{
baseturf = /turf/open/floor/plating/asteroid/basalt
},
@@ -1800,7 +1800,7 @@
},
/area/awaymission/northblock)
"dT" = (
-/obj/effect/spider/stickyweb,
+/obj/structure/spider/stickyweb,
/turf/open/floor/plasteel{
baseturf = /turf/open/floor/plating/asteroid/basalt
},
@@ -2417,7 +2417,7 @@
icon_state = "bulb1";
dir = 1
},
-/obj/effect/spider/stickyweb,
+/obj/structure/spider/stickyweb,
/mob/living/simple_animal/hostile/poison/giant_spider/hunter,
/turf/open/floor/plasteel{
baseturf = /turf/open/floor/plating/asteroid/basalt
@@ -2434,7 +2434,7 @@
/obj/structure/table,
/obj/item/weapon/storage/firstaid/fire,
/obj/item/weapon/storage/firstaid/fire,
-/obj/effect/spider/stickyweb,
+/obj/structure/spider/stickyweb,
/turf/open/floor/plasteel{
baseturf = /turf/open/floor/plating/asteroid/basalt
},
@@ -2448,7 +2448,7 @@
},
/area/awaymission/BMPship)
"fv" = (
-/obj/effect/glowshroom/single,
+/obj/structure/glowshroom/single,
/turf/open/floor/plating/asteroid/basalt{
initial_gas_mix = "n2=23;o2=14"
},
@@ -2493,7 +2493,7 @@
},
/area/awaymission/BMPship)
"fB" = (
-/obj/effect/spider/stickyweb,
+/obj/structure/spider/stickyweb,
/turf/open/floor/plasteel{
baseturf = /turf/open/floor/plating/asteroid/basalt
},
@@ -2505,7 +2505,7 @@
},
/area/awaymission/BMPship)
"fD" = (
-/obj/effect/spider/stickyweb,
+/obj/structure/spider/stickyweb,
/obj/machinery/sleeper{
icon_state = "sleeper-open";
dir = 8
diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm
index 0ff2a5874e1..95a067649e7 100644
--- a/_maps/RandomZLevels/snowdin.dmm
+++ b/_maps/RandomZLevels/snowdin.dmm
@@ -1647,37 +1647,37 @@
},
/area/awaymission/snowdin/dungeon1)
"ek" = (
-/obj/effect/spider/stickyweb,
-/obj/effect/spider/stickyweb,
+/obj/structure/spider/stickyweb,
+/obj/structure/spider/stickyweb,
/turf/open/floor/plating/asteroid/snow{
temperature = 140
},
/area/awaymission/snowdin/dungeon1)
"el" = (
-/obj/effect/spider/stickyweb,
+/obj/structure/spider/stickyweb,
/obj/effect/spawner/lootdrop/snowdin/dungeonheavy,
/turf/open/floor/plating/asteroid/snow{
temperature = 140
},
/area/awaymission/snowdin/dungeon1)
"em" = (
-/obj/effect/spider/stickyweb,
+/obj/structure/spider/stickyweb,
/mob/living/simple_animal/hostile/poison/giant_spider/hunter/ice,
/turf/closed/wall/mineral/snow,
/area/awaymission/snowdin/dungeon1)
"en" = (
-/obj/effect/spider/stickyweb,
+/obj/structure/spider/stickyweb,
/mob/living/simple_animal/hostile/poison/giant_spider/nurse/ice,
/turf/open/floor/plating/asteroid/snow{
temperature = 140
},
/area/awaymission/snowdin/dungeon1)
"eo" = (
-/obj/effect/spider/stickyweb,
+/obj/structure/spider/stickyweb,
/turf/open/floor/plating/ice/colder,
/area/awaymission/snowdin/dungeon1)
"ep" = (
-/obj/effect/spider/stickyweb,
+/obj/structure/spider/stickyweb,
/turf/open/floor/plating/asteroid/snow{
temperature = 140
},
@@ -1686,11 +1686,11 @@
/turf/closed/wall/mineral/snow,
/area/awaymission/snowdin/dungeon1)
"er" = (
-/obj/effect/spider/stickyweb,
+/obj/structure/spider/stickyweb,
/turf/closed/wall/mineral/snow,
/area/awaymission/snowdin/dungeon1)
"es" = (
-/obj/effect/spider/stickyweb,
+/obj/structure/spider/stickyweb,
/obj/structure/barricade/wooden,
/turf/open/floor/plating/asteroid/snow{
temperature = 140
@@ -1712,7 +1712,7 @@
},
/area/awaymission/snowdin/dungeon1)
"ew" = (
-/obj/effect/spider/stickyweb,
+/obj/structure/spider/stickyweb,
/mob/living/simple_animal/hostile/poison/giant_spider/hunter/ice,
/turf/open/floor/plating/asteroid/snow{
temperature = 140
diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm
index 90403d076b8..1ded5e1d37f 100644
--- a/_maps/RandomZLevels/undergroundoutpost45.dmm
+++ b/_maps/RandomZLevels/undergroundoutpost45.dmm
@@ -1144,7 +1144,7 @@
name = "UO45 Central Hall"
})
"bW" = (
-/obj/effect/glowshroom/single,
+/obj/structure/glowshroom/single,
/turf/open/floor/plating/asteroid{
initial_gas_mix = "co2=173.4;n2=135.1;plasma=229.8;TEMP=351.9";
heat_capacity = 1e+006;
@@ -3956,7 +3956,7 @@
name = "UO45 Central Hall"
})
"gf" = (
-/obj/effect/glowshroom/single,
+/obj/structure/glowshroom/single,
/turf/open/floor/plating/asteroid{
initial_gas_mix = "co2=173.4;n2=135.1;plasma=229.8;TEMP=351.9";
heat_capacity = 1e+006;
@@ -17562,7 +17562,7 @@
/obj/structure/alien/weeds{
icon_state = "weeds2"
},
-/obj/effect/glowshroom/single,
+/obj/structure/glowshroom/single,
/obj/effect/decal/cleanable/blood/gibs/down,
/turf/open/floor/plating/asteroid{
initial_gas_mix = "co2=173.4;n2=135.1;plasma=229.8;TEMP=351.9";
@@ -17712,7 +17712,7 @@
/obj/structure/alien/weeds{
icon_state = "weeds1"
},
-/obj/effect/glowshroom/single,
+/obj/structure/glowshroom/single,
/turf/open/floor/plating/asteroid{
initial_gas_mix = "co2=173.4;n2=135.1;plasma=229.8;TEMP=351.9";
heat_capacity = 1e+006;
diff --git a/_maps/map_files/BirdStation/BirdStation.dmm b/_maps/map_files/BirdStation/BirdStation.dmm
index 30520b6a191..9a7f95d8ccc 100644
--- a/_maps/map_files/BirdStation/BirdStation.dmm
+++ b/_maps/map_files/BirdStation/BirdStation.dmm
@@ -20925,7 +20925,7 @@
/turf/open/floor/plasteel/shuttle,
/area/shuttle/arrival)
"aZw" = (
-/obj/effect/spider/stickyweb,
+/obj/structure/spider/stickyweb,
/turf/open/floor/plating{
icon_plating = "asteroidplating";
icon_state = "asteroidplating"
diff --git a/_maps/map_files/MiniStation/uplink_item.dm b/_maps/map_files/MiniStation/uplink_item.dm
deleted file mode 100644
index 7816f01cf7a..00000000000
--- a/_maps/map_files/MiniStation/uplink_item.dm
+++ /dev/null
@@ -1,37 +0,0 @@
-// Modified uplink items to discourage tator murderboning
-
-/datum/uplink_item/dangerous/revolver/New()
- ..()
- cost = 10
-
-/datum/uplink_item/dangerous/crossbow/New()
- ..()
- cost = 8
-
-/datum/uplink_item/dangerous/sword/New()
- ..()
- cost = 7
-
-/datum/uplink_item/dangerous/syndicate_minibomb/New()
- ..()
- cost = 6
-
-/datum/uplink_item/stealthy_weapons/para_pen/New()
- ..()
- item = null // Disabled
-
-/datum/uplink_item/stealthy_tools/syndigolashes/New()
- ..()
- cost = 5
-
-/datum/uplink_item/device_tools/c4/New()
- ..()
- item = null // Disabled
-
-/datum/uplink_item/device_tools/singularity_beacon/New()
- ..()
- cost = 4
-
-/datum/uplink_item/device_tools/syndicate_bomb/New()
- ..()
- item = null // Disabled
\ No newline at end of file
diff --git a/_maps/map_files/generic/z2.dmm b/_maps/map_files/generic/z2.dmm
index 3944bb87a79..98896517220 100644
--- a/_maps/map_files/generic/z2.dmm
+++ b/_maps/map_files/generic/z2.dmm
@@ -279,7 +279,6 @@
/obj/item/weapon/surgicaldrill,
/turf/open/floor/holofloor{
tag = "icon-white_warn (NORTHWEST)";
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn";
dir = 9
},
@@ -289,7 +288,6 @@
/obj/item/weapon/hemostat,
/turf/open/floor/holofloor{
tag = "icon-white_warn (NORTH)";
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn";
dir = 1
},
@@ -302,7 +300,6 @@
/obj/item/weapon/circular_saw,
/turf/open/floor/holofloor{
tag = "icon-white_warn (NORTH)";
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn";
dir = 1
},
@@ -312,7 +309,6 @@
/obj/item/weapon/retractor,
/turf/open/floor/holofloor{
tag = "icon-white_warn (NORTH)";
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn";
dir = 1
},
@@ -322,7 +318,6 @@
/obj/item/weapon/cautery,
/turf/open/floor/holofloor{
tag = "icon-white_warn (NORTHEAST)";
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn";
dir = 5
},
@@ -400,7 +395,6 @@
/obj/item/weapon/razor,
/turf/open/floor/holofloor{
tag = "icon-white_warn (WEST)";
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn";
dir = 8
},
@@ -413,7 +407,6 @@
"bp" = (
/turf/open/floor/holofloor{
tag = "icon-white_warn (EAST)";
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn";
dir = 4
},
@@ -475,28 +468,24 @@
"bB" = (
/turf/open/floor/holofloor{
tag = "icon-white_warn (SOUTHWEST)";
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn";
dir = 10
},
/area/holodeck/rec_center/medical)
"bC" = (
/turf/open/floor/holofloor{
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn"
},
/area/holodeck/rec_center/medical)
"bD" = (
/obj/structure/table/optable,
/turf/open/floor/holofloor{
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn"
},
/area/holodeck/rec_center/medical)
"bE" = (
/obj/machinery/computer/operating,
/turf/open/floor/holofloor{
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn"
},
/area/holodeck/rec_center/medical)
@@ -507,7 +496,6 @@
/obj/item/clothing/mask/surgical,
/turf/open/floor/holofloor{
tag = "icon-white_warn (SOUTHEAST)";
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn";
dir = 6
},
@@ -548,7 +536,6 @@
/obj/machinery/reagentgrinder,
/turf/open/floor/holofloor{
tag = "icon-white_warn (NORTHWEST)";
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn";
dir = 9
},
@@ -556,7 +543,6 @@
"bL" = (
/turf/open/floor/holofloor{
tag = "icon-white_warn (NORTHEAST)";
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn";
dir = 5
},
@@ -649,7 +635,6 @@
/obj/machinery/chem_master,
/turf/open/floor/holofloor{
tag = "icon-white_warn (SOUTHWEST)";
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn";
dir = 10
},
@@ -798,7 +783,6 @@
/obj/item/weapon/bedsheet/medical,
/turf/open/floor/holofloor{
tag = "icon-white_warn (NORTHWEST)";
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn";
dir = 9
},
@@ -812,7 +796,6 @@
/obj/item/weapon/bedsheet/medical,
/turf/open/floor/holofloor{
tag = "icon-white_warn (NORTHEAST)";
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn";
dir = 5
},
@@ -844,7 +827,6 @@
/obj/machinery/door/window/westleft,
/turf/open/floor/holofloor{
dir = 8;
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn_corner";
tag = "icon-white_warn (WEST)"
},
@@ -853,7 +835,6 @@
/obj/machinery/door/window/westleft,
/turf/open/floor/holofloor{
tag = "icon-white_warn (NORTH)";
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn";
dir = 1
},
@@ -861,7 +842,6 @@
"cB" = (
/turf/open/floor/holofloor{
tag = "icon-white_warn (SOUTHEAST)";
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn";
dir = 6
},
@@ -873,7 +853,6 @@
},
/turf/open/floor/holofloor{
tag = "icon-white_warn (NORTHEAST)";
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn";
dir = 5
},
@@ -886,7 +865,6 @@
/obj/item/weapon/bedsheet/medical,
/turf/open/floor/holofloor{
tag = "icon-white_warn (SOUTHWEST)";
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn";
dir = 10
},
@@ -899,7 +877,6 @@
/obj/structure/bed,
/obj/item/weapon/bedsheet/medical,
/turf/open/floor/holofloor{
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn"
},
/area/holodeck/rec_center/medical)
@@ -913,7 +890,6 @@
dir = 1
},
/turf/open/floor/holofloor{
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn"
},
/area/holodeck/rec_center/medical)
@@ -924,7 +900,6 @@
},
/turf/open/floor/holofloor{
tag = "icon-white_warn (SOUTHEAST)";
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn";
dir = 6
},
@@ -5818,7 +5793,6 @@
"sg" = (
/turf/open/floor/holofloor{
tag = "icon-white_warn (WEST)";
- icon = 'icons/turf/floors/warning.dmi';
icon_state = "white_warn";
dir = 8
},
diff --git a/_maps/ministation.dm b/_maps/ministation.dm
index efe6a8b067f..c013f89836b 100644
--- a/_maps/ministation.dm
+++ b/_maps/ministation.dm
@@ -74,7 +74,6 @@ Changes to the uplinks were made to discourage murderboning, the rest is the sam
#define MAP_OVERRIDE_FILES
#include "map_files\MiniStation\misc.dm"
#include "map_files\MiniStation\cargopacks.dm"
- #include "map_files\MiniStation\uplink_item.dm"
#include "map_files\MiniStation\job\jobs.dm"
#include "map_files\MiniStation\job\removed.dm"
#endif
diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm
index 4deb0080014..9218e4f3c23 100644
--- a/code/__HELPERS/lists.dm
+++ b/code/__HELPERS/lists.dm
@@ -392,5 +392,18 @@
if(islist(.[i]))
.[i] = .(.[i])
+#if DM_VERSION > 512
+#error Remie said that lummox was adding a way to get a lists
+#error contents via list.values, if that is true remove this
+#error otherwise, update the version and bug lummox
+#elseif
+//Flattens a keyed list into a list of it's contents
+/proc/flatten_list(list/key_list)
+ if(!islist(key_list))
+ return null
+ . = list()
+ for(var/key in key_list)
+ . |= key_list[key]
+
//Picks from the list, with some safeties, and returns the "default" arg if it fails
#define DEFAULTPICK(L, default) ((istype(L, /list) && L:len) ? pick(L) : default)
diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm
index 28e55d7e03f..8d971ddbb22 100644
--- a/code/_globalvars/lists/objects.dm
+++ b/code/_globalvars/lists/objects.dm
@@ -21,7 +21,8 @@ var/global/list/crafting_recipes = list() //list of all table craft recipes
var/global/list/rcd_list = list() //list of Rapid Construction Devices.
var/global/list/apcs_list = list() //list of all Area Power Controller machines, seperate from machines for powernet speeeeeeed.
var/global/list/tracked_implants = list() //list of all current implants that are tracked to work out what sort of trek everyone is on. Sadly not on lavaworld not implemented...
+var/global/list/tracked_chem_implants = list() //list of implants the prisoner console can track and send inject commands too
var/global/list/poi_list = list() //list of points of interest for observe/follow
var/global/list/pinpointer_list = list() //list of all pinpointers. Used to change stuff they are pointing to all at once.
var/global/list/zombie_infection_list = list() // A list of all zombie_infection organs, for any mass "animation"
-var/global/list/meteor_list = list() // List of all meteors.
\ No newline at end of file
+var/global/list/meteor_list = list() // List of all meteors.
diff --git a/code/datums/helper_datums/getrev.dm b/code/datums/helper_datums/getrev.dm
index 9e8efb85082..5421d6600fb 100644
--- a/code/datums/helper_datums/getrev.dm
+++ b/code/datums/helper_datums/getrev.dm
@@ -18,12 +18,14 @@ var/global/datum/getrev/revdata = new()
commit = head_log.group[4]
world.log << "Running /tg/ revision:"
world.log << "[date]"
- world.log << commit
if(testmerge.len)
+ world.log << commit
for(var/line in testmerge)
if(line)
world.log << "Test merge active of PR #[line]"
world.log << "Based off master commit [parentcommit]"
+ else
+ world.log << parentcommit
world.log << "Current map - [MAP_NAME]" //can't think of anywhere better to put it
/client/verb/showrevinfo()
@@ -31,7 +33,7 @@ var/global/datum/getrev/revdata = new()
set name = "Show Server Revision"
set desc = "Check the current server code revision"
- if(revdata.commit)
+ if(revdata.parentcommit)
src << "Server revision compiled on: [revdata.date]"
if(revdata.testmerge.len)
for(var/line in revdata.testmerge)
@@ -39,7 +41,7 @@ var/global/datum/getrev/revdata = new()
src << "Test merge active of PR #[line]"
src << "Based off master commit [revdata.parentcommit]"
else
- src << "[revdata.commit]"
+ src << "[revdata.parentcommit]"
else
src << "Revision unknown"
src << "Current Infomational Settings:"
diff --git a/code/game/asteroid.dm b/code/game/asteroid.dm
index 64356b908fb..c64d0db642d 100644
--- a/code/game/asteroid.dm
+++ b/code/game/asteroid.dm
@@ -128,7 +128,7 @@ var/global/max_secret_rooms = 6
treasureitems = list(/obj/item/weapon/gun/energy/floragun=1,/obj/item/seeds/sunflower/novaflower=2,/obj/item/seeds/tomato/blue/bluespace=2,/obj/item/seeds/tomato/blue=2,
/obj/item/seeds/coffee/robusta=2, /obj/item/seeds/firelemon=2)
fluffitems = list(/obj/item/weapon/twohanded/required/kirbyplants=1,/obj/structure/table/reinforced=2,/obj/machinery/hydroponics/constructable=1,
- /obj/effect/glowshroom/single=2,/obj/item/weapon/reagent_containers/syringe/charcoal=2,
+ /obj/structure/glowshroom/single=2,/obj/item/weapon/reagent_containers/syringe/charcoal=2,
/obj/item/weapon/reagent_containers/glass/bottle/diethylamine=3,/obj/item/weapon/reagent_containers/glass/bottle/ammonia=3)
/*if("poly")
@@ -180,7 +180,7 @@ var/global/max_secret_rooms = 6
var/list/emptyturfs = room["floors"]
T = pick(emptyturfs)
if(T)
- new /obj/effect/glowshroom/single(T) //Just to make it a little more visible
+ new /obj/structure/glowshroom/single(T) //Just to make it a little more visible
var/surprise = null
surprise = pickweight(treasureitems)
new surprise(T)//here's the prize
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index 1be70564a1b..47f6ffd8c49 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -208,7 +208,7 @@
/atom/proc/ex_act(severity, target)
contents_explosion(severity, target)
-/atom/proc/blob_act(obj/effect/blob/B)
+/atom/proc/blob_act(obj/structure/blob/B)
return
/atom/proc/fire_act()
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index b4dffaf8f51..e71b533d3c8 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -22,10 +22,7 @@
glide_size = 8
appearance_flags = TILE_BOUND
-/atom/movable/New()
- ..()
- if(loc)
- loc.Entered(src)
+
/atom/movable/Move(atom/newloc, direct = 0)
if(!loc || !newloc) return 0
diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm
index c0bfa64bf37..0a751d1bc8d 100644
--- a/code/game/gamemodes/blob/blobs/blob_mobs.dm
+++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm
@@ -16,7 +16,7 @@
unique_name = 1
a_intent = "harm"
var/mob/camera/blob/overmind = null
- var/obj/effect/blob/factory/factory = null
+ var/obj/structure/blob/factory/factory = null
/mob/living/simple_animal/hostile/blob/update_icons()
if(overmind)
@@ -29,7 +29,7 @@
overmind.blob_mobs -= src
return ..()
-/mob/living/simple_animal/hostile/blob/blob_act(obj/effect/blob/B)
+/mob/living/simple_animal/hostile/blob/blob_act(obj/structure/blob/B)
if(stat != DEAD && health < maxHealth)
for(var/i in 1 to 2)
var/obj/effect/overlay/temp/heal/H = PoolOrNew(/obj/effect/overlay/temp/heal, get_turf(src)) //hello yes you are being healed
@@ -44,12 +44,12 @@
adjustFireLoss(Clamp(0.01 * exposed_temperature, 1, 5))
/mob/living/simple_animal/hostile/blob/CanPass(atom/movable/mover, turf/target, height = 0)
- if(istype(mover, /obj/effect/blob))
+ if(istype(mover, /obj/structure/blob))
return 1
return ..()
/mob/living/simple_animal/hostile/blob/Process_Spacemove(movement_dir = 0)
- for(var/obj/effect/blob/B in range(1, src))
+ for(var/obj/structure/blob/B in range(1, src))
return 1
return ..()
@@ -97,7 +97,7 @@
var/is_zombie = 0
gold_core_spawnable = 1
-/mob/living/simple_animal/hostile/blob/blobspore/New(loc, var/obj/effect/blob/factory/linked_node)
+/mob/living/simple_animal/hostile/blob/blobspore/New(loc, var/obj/structure/blob/factory/linked_node)
if(istype(linked_node))
factory = linked_node
factory.spores += src
@@ -228,7 +228,7 @@
if(independent)
return // strong independent blobbernaut that don't need no blob
var/damagesources = 0
- if(!(locate(/obj/effect/blob) in range(2, src)))
+ if(!(locate(/obj/structure/blob) in range(2, src)))
damagesources++
if(!factory)
damagesources++
diff --git a/code/game/gamemodes/blob/blobs/core.dm b/code/game/gamemodes/blob/blobs/core.dm
index 8e0e4b036a1..082f36b64d5 100644
--- a/code/game/gamemodes/blob/blobs/core.dm
+++ b/code/game/gamemodes/blob/blobs/core.dm
@@ -1,4 +1,4 @@
-/obj/effect/blob/core
+/obj/structure/blob/core
name = "blob core"
icon = 'icons/mob/blob.dmi'
icon_state = "blank_blob"
@@ -14,7 +14,7 @@
var/point_rate = 2
-/obj/effect/blob/core/New(loc, client/new_overmind = null, new_rate = 2, placed = 0)
+/obj/structure/blob/core/New(loc, client/new_overmind = null, new_rate = 2, placed = 0)
blob_cores += src
START_PROCESSING(SSobj, src)
poi_list |= src
@@ -26,10 +26,10 @@
point_rate = new_rate
..()
-/obj/effect/blob/core/scannerreport()
+/obj/structure/blob/core/scannerreport()
return "Directs the blob's expansion, gradually expands, and sustains nearby blob spores and blobbernauts."
-/obj/effect/blob/core/update_icon()
+/obj/structure/blob/core/update_icon()
cut_overlays()
color = null
var/image/I = new('icons/mob/blob.dmi', "blob")
@@ -39,7 +39,7 @@
var/image/C = new('icons/mob/blob.dmi', "blob_core_overlay")
add_overlay(C)
-/obj/effect/blob/core/Destroy()
+/obj/structure/blob/core/Destroy()
blob_cores -= src
if(overmind)
overmind.blob_core = null
@@ -48,20 +48,20 @@
poi_list -= src
return ..()
-/obj/effect/blob/core/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+/obj/structure/blob/core/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
exposed_temperature *= 0.5
..()
-/obj/effect/blob/core/ex_act(severity, target)
+/obj/structure/blob/core/ex_act(severity, target)
var/damage = 50 - 10 * severity //remember, the core takes half brute damage, so this is 20/15/10 damage based on severity
take_damage(damage, BRUTE)
-/obj/effect/blob/core/check_health()
+/obj/structure/blob/core/check_health()
..()
if(overmind) //we should have an overmind, but...
overmind.update_health_hud()
-/obj/effect/blob/core/Life()
+/obj/structure/blob/core/Life()
if(qdeleted(src))
return
if(!overmind)
@@ -74,13 +74,13 @@
if(overmind)
overmind.update_health_hud()
Pulse_Area(overmind, 12, 4, 3)
- for(var/obj/effect/blob/normal/B in range(1, src))
+ for(var/obj/structure/blob/normal/B in range(1, src))
if(prob(5))
- B.change_to(/obj/effect/blob/shield/core, overmind)
+ B.change_to(/obj/structure/blob/shield/core, overmind)
..()
-/obj/effect/blob/core/proc/create_overmind(client/new_overmind, override_delay)
+/obj/structure/blob/core/proc/create_overmind(client/new_overmind, override_delay)
if(overmind_get_delay > world.time && !override_delay)
return
diff --git a/code/game/gamemodes/blob/blobs/factory.dm b/code/game/gamemodes/blob/blobs/factory.dm
index ccaf8e12a1a..99d31d97b7e 100644
--- a/code/game/gamemodes/blob/blobs/factory.dm
+++ b/code/game/gamemodes/blob/blobs/factory.dm
@@ -1,4 +1,4 @@
-/obj/effect/blob/factory
+/obj/structure/blob/factory
name = "factory blob"
icon = 'icons/mob/blob.dmi'
icon_state = "blob_factory"
@@ -14,12 +14,12 @@
var/spore_cooldown = 80 //8 seconds between spores and after spore death
-/obj/effect/blob/factory/scannerreport()
+/obj/structure/blob/factory/scannerreport()
if(naut)
return "It is currently sustaining a blobbernaut, making it fragile and unable to produce blob spores."
return "Will produce a blob spore every few seconds."
-/obj/effect/blob/factory/Destroy()
+/obj/structure/blob/factory/Destroy()
for(var/mob/living/simple_animal/hostile/blob/blobspore/spore in spores)
if(spore.factory == src)
spore.factory = null
@@ -30,7 +30,7 @@
spores = null
return ..()
-/obj/effect/blob/factory/Be_Pulsed()
+/obj/structure/blob/factory/Be_Pulsed()
. = ..()
if(naut)
return
diff --git a/code/game/gamemodes/blob/blobs/node.dm b/code/game/gamemodes/blob/blobs/node.dm
index 55214953f64..60b517b0f6d 100644
--- a/code/game/gamemodes/blob/blobs/node.dm
+++ b/code/game/gamemodes/blob/blobs/node.dm
@@ -1,4 +1,4 @@
-/obj/effect/blob/node
+/obj/structure/blob/node
name = "blob node"
icon = 'icons/mob/blob.dmi'
icon_state = "blank_blob"
@@ -9,15 +9,15 @@
point_return = 25
-/obj/effect/blob/node/New(loc)
+/obj/structure/blob/node/New(loc)
blob_nodes += src
START_PROCESSING(SSobj, src)
..(loc)
-/obj/effect/blob/node/scannerreport()
+/obj/structure/blob/node/scannerreport()
return "Gradually expands and sustains nearby blob spores and blobbernauts."
-/obj/effect/blob/node/update_icon()
+/obj/structure/blob/node/update_icon()
cut_overlays()
color = null
var/image/I = new('icons/mob/blob.dmi', "blob")
@@ -27,15 +27,15 @@
var/image/C = new('icons/mob/blob.dmi', "blob_node_overlay")
src.add_overlay(C)
-/obj/effect/blob/node/Destroy()
+/obj/structure/blob/node/Destroy()
blob_nodes -= src
STOP_PROCESSING(SSobj, src)
return ..()
-/obj/effect/blob/node/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+/obj/structure/blob/node/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
exposed_temperature *= 0.75
..()
-/obj/effect/blob/node/Life()
+/obj/structure/blob/node/Life()
Pulse_Area(overmind, 10, 3, 2)
color = null
diff --git a/code/game/gamemodes/blob/blobs/resource.dm b/code/game/gamemodes/blob/blobs/resource.dm
index 75a7ecfa366..ff6bd736eaf 100644
--- a/code/game/gamemodes/blob/blobs/resource.dm
+++ b/code/game/gamemodes/blob/blobs/resource.dm
@@ -1,4 +1,4 @@
-/obj/effect/blob/resource
+/obj/structure/blob/resource
name = "resource blob"
icon = 'icons/mob/blob.dmi'
icon_state = "blob_resource"
@@ -8,19 +8,19 @@
point_return = 15
var/resource_delay = 0
-/obj/effect/blob/resource/scannerreport()
+/obj/structure/blob/resource/scannerreport()
return "Gradually supplies the blob with resources, increasing the rate of expansion."
-/obj/effect/blob/resource/creation_action()
+/obj/structure/blob/resource/creation_action()
if(overmind)
overmind.resource_blobs += src
-/obj/effect/blob/resource/Destroy()
+/obj/structure/blob/resource/Destroy()
if(overmind)
overmind.resource_blobs -= src
return ..()
-/obj/effect/blob/resource/Be_Pulsed()
+/obj/structure/blob/resource/Be_Pulsed()
. = ..()
if(resource_delay > world.time)
return
diff --git a/code/game/gamemodes/blob/blobs/shield.dm b/code/game/gamemodes/blob/blobs/shield.dm
index 515e19cbd61..b7c8d8192ae 100644
--- a/code/game/gamemodes/blob/blobs/shield.dm
+++ b/code/game/gamemodes/blob/blobs/shield.dm
@@ -1,4 +1,4 @@
-/obj/effect/blob/shield
+/obj/structure/blob/shield
name = "strong blob"
icon = 'icons/mob/blob.dmi'
icon_state = "blob_shield"
@@ -11,18 +11,18 @@
atmosblock = 1
-/obj/effect/blob/shield/scannerreport()
+/obj/structure/blob/shield/scannerreport()
if(atmosblock)
return "Will prevent the spread of atmospheric changes."
return "N/A"
-/obj/effect/blob/shield/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+/obj/structure/blob/shield/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
return
-/obj/effect/blob/shield/core
+/obj/structure/blob/shield/core
point_return = 0
-/obj/effect/blob/shield/update_icon()
+/obj/structure/blob/shield/update_icon()
..()
if(health <= 75)
icon_state = "blob_shield_damaged"
diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm
index b5f7a58481c..dc078d4aea5 100644
--- a/code/game/gamemodes/blob/overmind.dm
+++ b/code/game/gamemodes/blob/overmind.dm
@@ -14,7 +14,7 @@
pass_flags = PASSBLOB
faction = list("blob")
- var/obj/effect/blob/core/blob_core = null // The blob overmind's core
+ var/obj/structure/blob/core/blob_core = null // The blob overmind's core
var/blob_points = 0
var/max_blob_points = 100
var/last_attack = 0
@@ -72,7 +72,7 @@
/mob/camera/blob/Destroy()
for(var/BL in blobs)
- var/obj/effect/blob/B = BL
+ var/obj/structure/blob/B = BL
if(B && B.overmind == src)
B.overmind = null
B.update_icon() //reset anything that was ours
@@ -150,7 +150,7 @@
/mob/camera/blob/emote(act,m_type=1,message = null)
return
-/mob/camera/blob/blob_act(obj/effect/blob/B)
+/mob/camera/blob/blob_act(obj/structure/blob/B)
return
/mob/camera/blob/Stat()
@@ -173,7 +173,7 @@
/mob/camera/blob/Move(NewLoc, Dir = 0)
if(placed)
- var/obj/effect/blob/B = locate() in range("3x3", NewLoc)
+ var/obj/structure/blob/B = locate() in range("3x3", NewLoc)
if(B)
loc = NewLoc
else
diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm
index 0d7e5ffe098..7a631a741b1 100644
--- a/code/game/gamemodes/blob/powers.dm
+++ b/code/game/gamemodes/blob/powers.dm
@@ -28,8 +28,8 @@
src << "This spot is too dense to place a blob core on!"
return 0
for(var/obj/O in T)
- if(istype(O, /obj/effect/blob))
- if(istype(O, /obj/effect/blob/normal))
+ if(istype(O, /obj/structure/blob))
+ if(istype(O, /obj/structure/blob/normal))
qdel(O)
else
src << "There is already a blob here!"
@@ -46,7 +46,7 @@
if(placed && blob_core)
blob_core.forceMove(loc)
else
- var/obj/effect/blob/core/core = new(get_turf(src), null, point_rate, 1)
+ var/obj/structure/blob/core/core = new(get_turf(src), null, point_rate, 1)
core.overmind = src
blob_core = core
core.update_icon()
@@ -68,35 +68,35 @@
if(blob_nodes.len)
var/list/nodes = list()
for(var/i in 1 to blob_nodes.len)
- var/obj/effect/blob/node/B = blob_nodes[i]
+ var/obj/structure/blob/node/B = blob_nodes[i]
nodes["Blob Node #[i] ([B.overmind ? "B.overmind.blob_reagent_datum.name":"No Chemical"]"] = B
var/node_name = input(src, "Choose a node to jump to.", "Node Jump") in nodes
- var/obj/effect/blob/node/chosen_node = nodes[node_name]
+ var/obj/structure/blob/node/chosen_node = nodes[node_name]
if(chosen_node)
loc = chosen_node.loc
/mob/camera/blob/proc/createSpecial(price, blobType, nearEquals, needsNode, turf/T)
if(!T)
T = get_turf(src)
- var/obj/effect/blob/B = (locate(/obj/effect/blob) in T)
+ var/obj/structure/blob/B = (locate(/obj/structure/blob) in T)
if(!B)
src << "There is no blob here!"
return
- if(!istype(B, /obj/effect/blob/normal))
+ if(!istype(B, /obj/structure/blob/normal))
src << "Unable to use this blob, find a normal one."
return
if(needsNode && nodes_required)
- if(!(locate(/obj/effect/blob/node) in orange(3, T)) && !(locate(/obj/effect/blob/core) in orange(4, T)))
+ if(!(locate(/obj/structure/blob/node) in orange(3, T)) && !(locate(/obj/structure/blob/core) in orange(4, T)))
src << "You need to place this blob closer to a node or core!"
return //handholdotron 2000
if(nearEquals)
- for(var/obj/effect/blob/L in orange(nearEquals, T))
+ for(var/obj/structure/blob/L in orange(nearEquals, T))
if(L.type == blobType)
src << "There is a similar blob nearby, move more than [nearEquals] tiles away from it!"
return
if(!can_buy(price))
return
- var/obj/effect/blob/N = B.change_to(blobType, src)
+ var/obj/structure/blob/N = B.change_to(blobType, src)
return N
/mob/camera/blob/verb/toggle_node_req()
@@ -116,32 +116,32 @@
create_shield()
/mob/camera/blob/proc/create_shield(turf/T)
- createSpecial(15, /obj/effect/blob/shield, 0, 0, T)
+ createSpecial(15, /obj/structure/blob/shield, 0, 0, T)
/mob/camera/blob/verb/create_resource()
set category = "Blob"
set name = "Create Resource Blob (40)"
set desc = "Create a resource tower which will generate resources for you."
- createSpecial(40, /obj/effect/blob/resource, 4, 1)
+ createSpecial(40, /obj/structure/blob/resource, 4, 1)
/mob/camera/blob/verb/create_node()
set category = "Blob"
set name = "Create Node Blob (50)"
set desc = "Create a node, which will power nearby factory and resource blobs."
- createSpecial(50, /obj/effect/blob/node, 5, 0)
+ createSpecial(50, /obj/structure/blob/node, 5, 0)
/mob/camera/blob/verb/create_factory()
set category = "Blob"
set name = "Create Factory Blob (60)"
set desc = "Create a spore tower that will spawn spores to harass your enemies."
- createSpecial(60, /obj/effect/blob/factory, 7, 1)
+ createSpecial(60, /obj/structure/blob/factory, 7, 1)
/mob/camera/blob/verb/create_blobbernaut()
set category = "Blob"
set name = "Create Blobbernaut (40)"
set desc = "Create a powerful blobbernaut which is mildly smart and will attack enemies."
var/turf/T = get_turf(src)
- var/obj/effect/blob/factory/B = locate(/obj/effect/blob/factory) in T
+ var/obj/structure/blob/factory/B = locate(/obj/structure/blob/factory) in T
if(!B)
src << "You must be on a factory blob!"
return
@@ -186,7 +186,7 @@
set name = "Relocate Core (80)"
set desc = "Swaps the locations of your core and the selected node."
var/turf/T = get_turf(src)
- var/obj/effect/blob/node/B = locate(/obj/effect/blob/node) in T
+ var/obj/structure/blob/node/B = locate(/obj/structure/blob/node) in T
if(!B)
src << "You must be on a blob node!"
return
@@ -214,7 +214,7 @@
remove_blob(T)
/mob/camera/blob/proc/remove_blob(turf/T)
- var/obj/effect/blob/B = locate() in T
+ var/obj/structure/blob/B = locate() in T
if(!B)
src << "There is no blob there!"
return
@@ -240,7 +240,7 @@
if(world.time < last_attack)
return
var/list/possibleblobs = list()
- for(var/obj/effect/blob/AB in range(T, 1))
+ for(var/obj/structure/blob/AB in range(T, 1))
possibleblobs += AB
if(!possibleblobs.len)
src << "There is no blob adjacent to the target tile!"
@@ -255,7 +255,7 @@
var/mob_protection = L.get_permeability_protection()
blob_reagent_datum.reaction_mob(L, VAPOR, 25, 1, mob_protection, src)
blob_reagent_datum.send_message(L)
- var/obj/effect/blob/B = locate() in T
+ var/obj/structure/blob/B = locate() in T
if(B)
if(attacksuccess) //if we successfully attacked a turf with a blob on it, don't refund shit
B.blob_attack_animation(T, src)
@@ -266,12 +266,12 @@
var/list/cardinalblobs = list()
var/list/diagonalblobs = list()
for(var/I in possibleblobs)
- var/obj/effect/blob/IB = I
+ var/obj/structure/blob/IB = I
if(get_dir(IB, T) in cardinal)
cardinalblobs += IB
else
diagonalblobs += IB
- var/obj/effect/blob/OB
+ var/obj/structure/blob/OB
if(cardinalblobs.len)
OB = pick(cardinalblobs)
OB.expand(T, src)
@@ -332,7 +332,7 @@
blob_reagent_datum = new BC
color = blob_reagent_datum.complementary_color
for(var/BL in blobs)
- var/obj/effect/blob/B = BL
+ var/obj/structure/blob/B = BL
B.update_icon()
for(var/BLO in blob_mobs)
var/mob/living/simple_animal/hostile/blob/BM = BLO
diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm
index eb72803f497..d46eba21ee7 100644
--- a/code/game/gamemodes/blob/theblob.dm
+++ b/code/game/gamemodes/blob/theblob.dm
@@ -1,5 +1,5 @@
//I will need to recode parts of this but I am way too tired atm //I don't know who left this comment but they never did come back
-/obj/effect/blob
+/obj/structure/blob
name = "blob"
icon = 'icons/mob/blob.dmi'
luminosity = 1
@@ -20,7 +20,7 @@
var/mob/camera/blob/overmind
-/obj/effect/blob/New(loc)
+/obj/structure/blob/New(loc)
var/area/Ablob = get_area(loc)
if(Ablob.blob_allowed) //Is this area allowed for winning as blob?
blobs_legit += src
@@ -33,10 +33,10 @@
air_update_turf(1)
return
-/obj/effect/blob/proc/creation_action() //When it's created by the overmind, do this.
+/obj/structure/blob/proc/creation_action() //When it's created by the overmind, do this.
return
-/obj/effect/blob/Destroy()
+/obj/structure/blob/Destroy()
if(atmosblock)
atmosblock = 0
air_update_turf(1)
@@ -46,7 +46,7 @@
return ..()
-/obj/effect/blob/Adjacent(var/atom/neighbour)
+/obj/structure/blob/Adjacent(var/atom/neighbour)
. = ..()
if(.)
var/result = 0
@@ -55,61 +55,61 @@
for(var/A in dirs)
if(direction == text2num(A))
for(var/B in dirs[A])
- var/C = locate(/obj/effect/blob) in get_step(src, B)
+ var/C = locate(/obj/structure/blob) in get_step(src, B)
if(C)
result++
. -= result - 1
-/obj/effect/blob/CanAtmosPass(turf/T)
+/obj/structure/blob/CanAtmosPass(turf/T)
return !atmosblock
-/obj/effect/blob/BlockSuperconductivity()
+/obj/structure/blob/BlockSuperconductivity()
return atmosblock
-/obj/effect/blob/CanPass(atom/movable/mover, turf/target, height=0)
+/obj/structure/blob/CanPass(atom/movable/mover, turf/target, height=0)
if(height==0)
return 1
if(istype(mover) && mover.checkpass(PASSBLOB))
return 1
return 0
-/obj/effect/blob/CanAStarPass(ID, dir, caller)
+/obj/structure/blob/CanAStarPass(ID, dir, caller)
. = 0
if(ismovableatom(caller))
var/atom/movable/mover = caller
. = . || mover.checkpass(PASSBLOB)
-/obj/effect/blob/proc/check_health(cause)
+/obj/structure/blob/proc/check_health(cause)
health = Clamp(health, 0, maxhealth)
if(health <= 0)
if(overmind)
overmind.blob_reagent_datum.death_reaction(src, cause)
qdel(src) //we dead now
-/obj/effect/blob/update_icon() //Updates color based on overmind color if we have an overmind.
+/obj/structure/blob/update_icon() //Updates color based on overmind color if we have an overmind.
if(overmind)
color = overmind.blob_reagent_datum.color
else
color = null
-/obj/effect/blob/process()
+/obj/structure/blob/process()
Life()
-/obj/effect/blob/proc/Life()
+/obj/structure/blob/proc/Life()
return
-/obj/effect/blob/proc/Pulse_Area(pulsing_overmind = overmind, claim_range = 10, pulse_range = 3, expand_range = 2)
+/obj/structure/blob/proc/Pulse_Area(pulsing_overmind = overmind, claim_range = 10, pulse_range = 3, expand_range = 2)
src.Be_Pulsed()
var/expanded = FALSE
if(prob(70) && expand())
expanded = TRUE
var/list/blobs_to_affect = list()
- for(var/obj/effect/blob/B in urange(claim_range, src, 1))
+ for(var/obj/structure/blob/B in urange(claim_range, src, 1))
blobs_to_affect += B
shuffle(blobs_to_affect)
for(var/L in blobs_to_affect)
- var/obj/effect/blob/B = L
- if(!B.overmind && !istype(B, /obj/effect/blob/core) && prob(30))
+ var/obj/structure/blob/B = L
+ if(!B.overmind && !istype(B, /obj/structure/blob/core) && prob(30))
B.overmind = pulsing_overmind //reclaim unclaimed, non-core blobs.
B.update_icon()
var/distance = get_dist(get_turf(src), get_turf(B))
@@ -121,7 +121,7 @@
if(blobs_to_affect.len >= 120 && B.heal_timestamp > world.time)
can_expand = FALSE
if(can_expand && B.pulse_timestamp <= world.time && prob(expand_probablity))
- var/obj/effect/blob/newB = B.expand(null, null, !expanded) //expansion falls off with range but is faster near the blob causing the expansion
+ var/obj/structure/blob/newB = B.expand(null, null, !expanded) //expansion falls off with range but is faster near the blob causing the expansion
if(newB)
if(expanded)
qdel(newB)
@@ -129,7 +129,7 @@
if(distance <= pulse_range)
B.Be_Pulsed()
-/obj/effect/blob/proc/Be_Pulsed()
+/obj/structure/blob/proc/Be_Pulsed()
if(pulse_timestamp <= world.time)
ConsumeTile()
if(heal_timestamp <= world.time)
@@ -140,13 +140,13 @@
return 1 //we did it, we were pulsed!
return 0 //oh no we failed
-/obj/effect/blob/proc/ConsumeTile()
+/obj/structure/blob/proc/ConsumeTile()
for(var/atom/A in loc)
A.blob_act(src)
if(istype(loc, /turf/closed/wall))
loc.blob_act(src) //don't ask how a wall got on top of the core, just eat it
-/obj/effect/blob/proc/blob_attack_animation(atom/A = null, controller) //visually attacks an atom
+/obj/structure/blob/proc/blob_attack_animation(atom/A = null, controller) //visually attacks an atom
var/obj/effect/overlay/temp/blob/O = PoolOrNew(/obj/effect/overlay/temp/blob, src.loc)
O.setDir(dir)
if(controller)
@@ -159,14 +159,14 @@
O.do_attack_animation(A) //visually attack the whatever
return O //just in case you want to do something to the animation.
-/obj/effect/blob/proc/expand(turf/T = null, controller = null, expand_reaction = 1)
+/obj/structure/blob/proc/expand(turf/T = null, controller = null, expand_reaction = 1)
if(!T)
var/list/dirs = list(1,2,4,8)
for(var/i = 1 to 4)
var/dirn = pick(dirs)
dirs.Remove(dirn)
T = get_step(src, dirn)
- if(!(locate(/obj/effect/blob) in T))
+ if(!(locate(/obj/structure/blob) in T))
break
else
T = null
@@ -188,7 +188,7 @@
A.blob_act(src) //also hit everything in the turf
if(make_blob) //well, can we?
- var/obj/effect/blob/B = new /obj/effect/blob/normal(src.loc)
+ var/obj/structure/blob/B = new /obj/structure/blob/normal(src.loc)
if(controller)
B.overmind = controller
else
@@ -211,24 +211,24 @@
return null
-/obj/effect/blob/ex_act(severity, target)
+/obj/structure/blob/ex_act(severity, target)
..()
var/damage = 150 - 20 * severity
take_damage(damage, BRUTE)
-/obj/effect/blob/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+/obj/structure/blob/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
..()
var/damage = Clamp(0.01 * exposed_temperature, 0, 4)
take_damage(damage, BURN)
-/obj/effect/blob/emp_act(severity)
+/obj/structure/blob/emp_act(severity)
if(severity > 0)
if(overmind)
overmind.blob_reagent_datum.emp_reaction(src, severity)
if(prob(100 - severity * 30))
PoolOrNew(/obj/effect/overlay/temp/emp, get_turf(src))
-/obj/effect/blob/tesla_act(power)
+/obj/structure/blob/tesla_act(power)
..()
if(overmind)
if(overmind.blob_reagent_datum.tesla_reaction(src, power))
@@ -236,17 +236,17 @@
else
take_damage(power/400, BURN)
-/obj/effect/blob/extinguish()
+/obj/structure/blob/extinguish()
..()
if(overmind)
overmind.blob_reagent_datum.extinguish_reaction(src)
-/obj/effect/blob/bullet_act(var/obj/item/projectile/Proj)
+/obj/structure/blob/bullet_act(var/obj/item/projectile/Proj)
..()
take_damage(Proj.damage, Proj.damage_type, Proj)
return 0
-/obj/effect/blob/attackby(obj/item/I, mob/user, params)
+/obj/structure/blob/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/device/analyzer))
user.changeNext_move(CLICK_CD_MELEE)
user << "The analyzer beeps once, then reports:
"
@@ -256,7 +256,7 @@
else
return ..()
-/obj/effect/blob/proc/chemeffectreport(mob/user)
+/obj/structure/blob/proc/chemeffectreport(mob/user)
if(overmind)
user << "Material: [overmind.blob_reagent_datum.name]."
user << "Material Effects: [overmind.blob_reagent_datum.analyzerdescdamage]"
@@ -264,12 +264,12 @@
else
user << "No Material Detected!
"
-/obj/effect/blob/proc/typereport(mob/user)
+/obj/structure/blob/proc/typereport(mob/user)
user << "Blob Type: [uppertext(initial(name))]"
user << "Health: [health]/[maxhealth]"
user << "Effects: [scannerreport()]"
-/obj/effect/blob/attacked_by(obj/item/I, mob/living/user)
+/obj/structure/blob/attacked_by(obj/item/I, mob/living/user)
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src)
playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
@@ -278,7 +278,7 @@
playsound(src.loc, 'sound/items/Welder.ogg', 100, 1)
take_damage(I.force, I.damtype, user)
-/obj/effect/blob/attack_animal(mob/living/simple_animal/M)
+/obj/structure/blob/attack_animal(mob/living/simple_animal/M)
if("blob" in M.faction) //sorry, but you can't kill the blob as a blobbernaut
return
M.changeNext_move(CLICK_CD_MELEE)
@@ -289,7 +289,7 @@
take_damage(damage, M.melee_damage_type, M)
return
-/obj/effect/blob/attack_alien(mob/living/carbon/alien/humanoid/M)
+/obj/structure/blob/attack_alien(mob/living/carbon/alien/humanoid/M)
M.changeNext_move(CLICK_CD_MELEE)
M.do_attack_animation(src)
playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
@@ -298,7 +298,7 @@
take_damage(damage, BRUTE, M)
return
-/obj/effect/blob/proc/take_damage(damage, damage_type, cause = null, overmind_reagent_trigger = 1)
+/obj/structure/blob/proc/take_damage(damage, damage_type, cause = null, overmind_reagent_trigger = 1)
switch(damage_type) //blobs only take brute and burn damage
if(BRUTE)
damage = max(damage * brute_resist, 0)
@@ -314,11 +314,11 @@
update_icon()
check_health(cause)
-/obj/effect/blob/proc/change_to(type, controller)
+/obj/structure/blob/proc/change_to(type, controller)
if(!ispath(type))
throw EXCEPTION("change_to(): invalid type for blob")
return
- var/obj/effect/blob/B = new type(src.loc)
+ var/obj/structure/blob/B = new type(src.loc)
if(controller)
B.overmind = controller
B.creation_action()
@@ -327,7 +327,7 @@
qdel(src)
return B
-/obj/effect/blob/examine(mob/user)
+/obj/structure/blob/examine(mob/user)
..()
var/datum/atom_hud/hud_to_check = huds[DATA_HUD_MEDICAL_ADVANCED]
if(user.research_scanner || (user in hud_to_check.hudusers))
@@ -337,15 +337,15 @@
else
user << "It seems to be made of [get_chem_name()]."
-/obj/effect/blob/proc/scannerreport()
+/obj/structure/blob/proc/scannerreport()
return "A generic blob. Looks like someone forgot to override this proc, adminhelp this."
-/obj/effect/blob/proc/get_chem_name()
+/obj/structure/blob/proc/get_chem_name()
if(overmind)
return overmind.blob_reagent_datum.name
return "an unknown variant"
-/obj/effect/blob/normal
+/obj/structure/blob/normal
name = "normal blob"
icon_state = "blob"
luminosity = 0
@@ -354,12 +354,12 @@
health_regen = 1
brute_resist = 0.25
-/obj/effect/blob/normal/scannerreport()
+/obj/structure/blob/normal/scannerreport()
if(health <= 15)
return "Currently weak to brute damage."
return "N/A"
-/obj/effect/blob/normal/update_icon()
+/obj/structure/blob/normal/update_icon()
..()
if(health <= 15)
icon_state = "blob_damaged"
diff --git a/code/game/gamemodes/changeling/powers/spiders.dm b/code/game/gamemodes/changeling/powers/spiders.dm
index dc3a5b40cea..b2b48b0b962 100644
--- a/code/game/gamemodes/changeling/powers/spiders.dm
+++ b/code/game/gamemodes/changeling/powers/spiders.dm
@@ -9,7 +9,7 @@
//Makes some spiderlings. Good for setting traps and causing general trouble.
/obj/effect/proc_holder/changeling/spiders/sting_action(mob/user)
for(var/i=0, i<2, i++)
- var/obj/effect/spider/spiderling/S = new(user.loc)
+ var/obj/structure/spider/spiderling/S = new(user.loc)
S.grow_as = /mob/living/simple_animal/hostile/poison/giant_spider/hunter
feedback_add_details("changeling_powers","SI")
diff --git a/code/game/gamemodes/gang/dominator.dm b/code/game/gamemodes/gang/dominator.dm
index efb9709c6c2..32c81ff0cad 100644
--- a/code/game/gamemodes/gang/dominator.dm
+++ b/code/game/gamemodes/gang/dominator.dm
@@ -156,7 +156,7 @@
take_damage(damage_amount, P.damage_type, 0)
-/obj/machinery/dominator/blob_act(obj/effect/blob/B)
+/obj/machinery/dominator/blob_act(obj/structure/blob/B)
take_damage(110, BRUTE, 0)
/obj/machinery/dominator/attack_hand(mob/user)
diff --git a/code/game/gamemodes/miniantags/abduction/gland.dm b/code/game/gamemodes/miniantags/abduction/gland.dm
index 670de74bc0b..32a493a4b65 100644
--- a/code/game/gamemodes/miniantags/abduction/gland.dm
+++ b/code/game/gamemodes/miniantags/abduction/gland.dm
@@ -159,7 +159,7 @@
/obj/item/organ/gland/spiderman/activate()
owner << "You feel something crawling in your skin."
owner.faction |= "spiders"
- new /obj/effect/spider/spiderling(owner.loc)
+ new /obj/structure/spider/spiderling(owner.loc)
/obj/item/organ/gland/egg
cooldown_low = 300
diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
index f33a826afa3..e36d330fb26 100644
--- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
+++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
@@ -392,15 +392,6 @@
qdel(target)
-/obj/effect/swarmer //Default swarmer effect object visual feedback
- name = "swarmer ui"
- desc = null
- gender = NEUTER
- icon = 'icons/mob/swarmer.dmi'
- icon_state = "ui_light"
- mouse_opacity = 0
- layer = MOB_LAYER
-
/obj/effect/overlay/temp/swarmer //temporary swarmer visual feedback objects
icon = 'icons/mob/swarmer.dmi'
layer = BELOW_MOB_LAYER
@@ -421,12 +412,20 @@
icon_state = "integrate"
duration = 5
-/obj/effect/swarmer/destructible //Default destroyable object for swarmer constructions
+
+/obj/structure/swarmer //Default swarmer effect object visual feedback
+ name = "swarmer ui"
+ desc = null
+ gender = NEUTER
+ icon = 'icons/mob/swarmer.dmi'
+ icon_state = "ui_light"
+ layer = MOB_LAYER
+
luminosity = 1
- mouse_opacity = 1
+ anchored = 1
var/health = 30
-/obj/effect/swarmer/destructible/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1)
+/obj/structure/swarmer/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1)
switch(damage_type)
if(BRUTE)
if(sound_effect)
@@ -440,29 +439,29 @@
if(health <= 0)
qdel(src)
-/obj/effect/swarmer/destructible/bullet_act(obj/item/projectile/P)
+/obj/structure/swarmer/bullet_act(obj/item/projectile/P)
. = ..()
take_damage(P.damage, P.damage_type)
-/obj/effect/swarmer/destructible/attacked_by(obj/item/I, mob/living/user)
+/obj/structure/swarmer/attacked_by(obj/item/I, mob/living/user)
..()
take_damage(I.force, I.damtype)
-/obj/effect/swarmer/destructible/ex_act()
+/obj/structure/swarmer/ex_act()
qdel(src)
-/obj/effect/swarmer/destructible/blob_act(obj/effect/blob/B)
+/obj/structure/swarmer/blob_act(obj/structure/blob/B)
qdel(src)
-/obj/effect/swarmer/destructible/emp_act()
+/obj/structure/swarmer/emp_act()
qdel(src)
-/obj/effect/swarmer/destructible/attack_alien(mob/living/user)
+/obj/structure/swarmer/attack_alien(mob/living/user)
user.do_attack_animation(src)
user.changeNext_move(CLICK_CD_MELEE)
take_damage(rand(20,30))
-/obj/effect/swarmer/destructible/attack_animal(mob/living/simple_animal/S)
+/obj/structure/swarmer/attack_animal(mob/living/simple_animal/S)
S.do_attack_animation(src)
S.changeNext_move(CLICK_CD_MELEE)
if(S.obj_damage)
@@ -470,23 +469,14 @@
else if(S.melee_damage_upper)
take_damage(rand(S.melee_damage_lower, S.melee_damage_upper), S.melee_damage_type)
-/mob/living/simple_animal/hostile/swarmer/proc/CreateTrap()
- set name = "Create trap"
- set category = "Swarmer"
- set desc = "Creates a simple trap that will non-lethally electrocute anything that steps on it. Costs 5 resources"
- if(/obj/effect/swarmer/destructible/trap in loc)
- src << "There is already a trap here. Aborting."
- return
- Fabricate(/obj/effect/swarmer/destructible/trap, 5)
-
-/obj/effect/swarmer/destructible/trap
+/obj/structure/swarmer/trap
name = "swarmer trap"
desc = "A quickly assembled trap that electrifies living beings and overwhelms machine sensors. Will not retain its form if damaged enough."
icon_state = "trap"
luminosity = 1
health = 10
-/obj/effect/swarmer/destructible/trap/Crossed(var/atom/movable/AM)
+/obj/structure/swarmer/trap/Crossed(var/atom/movable/AM)
if(isliving(AM))
var/mob/living/L = AM
if(!istype(L, /mob/living/simple_animal/hostile/swarmer))
@@ -497,21 +487,31 @@
qdel(src)
..()
+/mob/living/simple_animal/hostile/swarmer/proc/CreateTrap()
+ set name = "Create trap"
+ set category = "Swarmer"
+ set desc = "Creates a simple trap that will non-lethally electrocute anything that steps on it. Costs 5 resources"
+ if(locate(/obj/structure/swarmer/trap) in loc)
+ src << "There is already a trap here. Aborting."
+ return
+ Fabricate(/obj/structure/swarmer/trap, 5)
+
+
/mob/living/simple_animal/hostile/swarmer/proc/CreateBarricade()
set name = "Create barricade"
set category = "Swarmer"
set desc = "Creates a barricade that will stop anything but swarmers and disabler beams from passing through."
- if(/obj/effect/swarmer/destructible/blockade in loc)
+ if(locate(/obj/structure/swarmer/blockade) in loc)
src << "There is already a blockade here. Aborting."
return
if(resources < 5)
src << "We do not have the resources for this!"
return
if(do_mob(src, src, 10))
- Fabricate(/obj/effect/swarmer/destructible/blockade, 5)
+ Fabricate(/obj/structure/swarmer/blockade, 5)
return
-/obj/effect/swarmer/destructible/blockade
+/obj/structure/swarmer/blockade
name = "swarmer blockade"
desc = "A quickly assembled energy blockade. Will not retain its form if damaged enough, but disabler beams and swarmers pass right through."
icon_state = "barricade"
@@ -520,7 +520,7 @@
density = 1
anchored = 1
-/obj/effect/swarmer/destructible/blockade/CanPass(atom/movable/O)
+/obj/structure/swarmer/blockade/CanPass(atom/movable/O)
if(isswarmer(O))
return 1
if(istype(O, /obj/item/projectile/beam/disabler))
diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm
index 197fda73c5d..70902339dbe 100644
--- a/code/game/gamemodes/miniantags/revenant/revenant.dm
+++ b/code/game/gamemodes/miniantags/revenant/revenant.dm
@@ -165,7 +165,7 @@
/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/effect/blob/B)
+/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()
diff --git a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm
index 85e729c3962..3d3ca500d96 100644
--- a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm
+++ b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm
@@ -366,11 +366,11 @@
mob.reagents.add_reagent("plasma", 5)
else
mob.adjustToxLoss(5)
- for(var/obj/effect/spacevine/vine in T) //Fucking with botanists, the ability.
+ for(var/obj/structure/spacevine/vine in T) //Fucking with botanists, the ability.
vine.color = "#823abb"
PoolOrNew(/obj/effect/overlay/temp/revenant, vine.loc)
QDEL_IN(vine, 10)
- for(var/obj/effect/glowshroom/shroom in T)
+ for(var/obj/structure/glowshroom/shroom in T)
shroom.color = "#823abb"
PoolOrNew(/obj/effect/overlay/temp/revenant, shroom.loc)
QDEL_IN(shroom, 10)
diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm
index e0d0fdb3d00..ae966ae1738 100644
--- a/code/game/gamemodes/nuclear/nuclearbomb.dm
+++ b/code/game/gamemodes/nuclear/nuclearbomb.dm
@@ -396,7 +396,7 @@ var/bomb_set
/obj/machinery/nuclearbomb/ex_act(severity, target)
return
-/obj/machinery/nuclearbomb/blob_act(obj/effect/blob/B)
+/obj/machinery/nuclearbomb/blob_act(obj/structure/blob/B)
if(exploding)
return
. = ..()
diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm
index 64a04f2f3a5..f5c38986ead 100644
--- a/code/game/machinery/autolathe.dm
+++ b/code/game/machinery/autolathe.dm
@@ -92,7 +92,7 @@
popup.set_content(dat)
popup.open()
-/obj/machinery/autolathe/deconstruction()
+/obj/machinery/autolathe/on_deconstruction()
materials.retrieve_all()
/obj/machinery/autolathe/attackby(obj/item/O, mob/user, params)
diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm
index 27a5ad031bd..180f3f80d32 100644
--- a/code/game/machinery/camera/camera.dm
+++ b/code/game/machinery/camera/camera.dm
@@ -112,7 +112,7 @@
..()
qdel(src)//to prevent bomb testing camera from exploding over and over forever
-/obj/machinery/camera/blob_act(obj/effect/blob/B)
+/obj/machinery/camera/blob_act(obj/structure/blob/B)
if(B && B.loc == loc)
take_damage(health, BRUTE, 0)
diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm
index e66248b0a9a..2f49e5f59cb 100644
--- a/code/game/machinery/computer/computer.dm
+++ b/code/game/machinery/computer/computer.dm
@@ -27,6 +27,12 @@
power_change()
update_icon()
+/obj/machinery/computer/Destroy()
+ if(circuit)
+ qdel(circuit)
+ circuit = null
+ return ..()
+
/obj/machinery/computer/initialize()
power_change()
@@ -102,7 +108,7 @@
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
user << " You start to disconnect the monitor..."
if(do_after(user, 20/I.toolspeed, target = src))
- deconstruction()
+ deconstruct()
var/obj/structure/frame/computer/A = new /obj/structure/frame/computer(src.loc)
A.circuit = circuit
A.anchored = 1
@@ -142,3 +148,27 @@
playsound(loc, 'sound/effects/Glassbr3.ogg', 100, 1)
stat |= BROKEN
update_icon()
+
+
+
+/obj/machinery/computer/deconstruct(mob/user)
+ on_deconstruction()
+ var/obj/structure/frame/computer/A = new /obj/structure/frame/computer(src.loc)
+ A.circuit = circuit
+ A.anchored = 1
+ circuit = null
+ for(var/obj/C in src)
+ C.forceMove(loc)
+ if(stat & BROKEN)
+ if(user)
+ user << "The broken glass falls out."
+ new /obj/item/weapon/shard(src.loc)
+ new /obj/item/weapon/shard(src.loc)
+ A.state = 3
+ A.icon_state = "3"
+ else
+ if(user)
+ user << "You disconnect the monitor."
+ A.state = 4
+ A.icon_state = "4"
+ qdel(src)
\ No newline at end of file
diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm
index 8502e90f4f5..9df931c720a 100644
--- a/code/game/machinery/computer/prisoner.dm
+++ b/code/game/machinery/computer/prisoner.dm
@@ -32,7 +32,7 @@
dat += "
\n5-DIGIT PASSCODE NOT SET.
ENTER NEW PASSCODE.")
- if (src.emagged)
- dat += text("
\nLOCKING SYSTEM ERROR - 1701") if (src.l_setshort) dat += text("
\nALERT: MEMORY SYSTEM ERROR - 6040 201")
message = text("[]", src.code)
@@ -105,7 +98,7 @@
if ((src.l_set == 0) && (length(src.code) == 5) && (!src.l_setshort) && (src.code != "ERROR"))
src.l_code = src.code
src.l_set = 1
- else if ((src.code == src.l_code) && (src.emagged == 0) && (src.l_set == 1))
+ else if ((src.code == src.l_code) && (src.l_set == 1))
src.locked = 0
src.overlays = null
add_overlay(image('icons/obj/storage.dmi', icon_opened))
@@ -113,7 +106,7 @@
else
src.code = "ERROR"
else
- if ((href_list["type"] == "R") && (src.emagged == 0) && (!src.l_setshort))
+ if ((href_list["type"] == "R") && (!src.l_setshort))
src.locked = 1
src.overlays = null
src.code = null
@@ -219,4 +212,4 @@
/obj/item/weapon/storage/secure/safe/HoS/New()
..()
- //new /obj/item/weapon/storage/lockbox/clusterbang(src) This item is currently broken... and probably shouldnt exist to begin with (even though it's cool)
\ No newline at end of file
+ //new /obj/item/weapon/storage/lockbox/clusterbang(src) This item is currently broken... and probably shouldnt exist to begin with (even though it's cool)
diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm
index 537c4d37c78..ba3361b4c4e 100644
--- a/code/game/objects/items/weapons/tanks/tanks.dm
+++ b/code/game/objects/items/weapons/tanks/tanks.dm
@@ -91,7 +91,7 @@
user << "It feels [descriptive]."
-/obj/item/weapon/tank/blob_act(obj/effect/blob/B)
+/obj/item/weapon/tank/blob_act(obj/structure/blob/B)
if(B && B.loc == loc)
var/turf/location = get_turf(src)
if(!location)
diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm
index c2904d8e37b..9d446d885a5 100644
--- a/code/game/objects/structures.dm
+++ b/code/game/objects/structures.dm
@@ -15,7 +15,7 @@
if(ticker)
cameranet.updateVisibility(src)
-/obj/structure/blob_act(obj/effect/blob/B)
+/obj/structure/blob_act(obj/structure/blob/B)
if(density && prob(50))
qdel(src)
diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm
index d049a9f1d9b..7d6e95810be 100644
--- a/code/game/objects/structures/aliens.dm
+++ b/code/game/objects/structures/aliens.dm
@@ -119,7 +119,7 @@
if(3)
take_damage(50, BRUTE, 0)
-/obj/structure/alien/blob_act(obj/effect/blob/B)
+/obj/structure/alien/blob_act(obj/structure/blob/B)
take_damage(50, BRUTE, 0)
/obj/structure/alien/resin/hitby(atom/movable/AM)
diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm
index 529443ad568..a28c8b3ebfd 100644
--- a/code/game/objects/structures/crates_lockers/closets/statue.dm
+++ b/code/game/objects/structures/crates_lockers/closets/statue.dm
@@ -120,7 +120,7 @@
if(user.environment_smash)
shatter()
-/obj/structure/closet/statue/blob_act(obj/effect/blob/B)
+/obj/structure/closet/statue/blob_act(obj/structure/blob/B)
shatter()
/obj/structure/closet/statue/attacked_by(obj/item/I, mob/living/user)
diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm
index 203900c76dd..0194e0d9f40 100644
--- a/code/game/objects/structures/displaycase.dm
+++ b/code/game/objects/structures/displaycase.dm
@@ -48,7 +48,7 @@
showpiece.loc = src.loc
showpiece = null
-/obj/structure/displaycase/blob_act(obj/effect/blob/B)
+/obj/structure/displaycase/blob_act(obj/structure/blob/B)
take_damage(30)
/obj/structure/displaycase/hitby(atom/movable/AM)
diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm
index f7118a6c191..840613533ad 100644
--- a/code/game/objects/structures/fireaxe.dm
+++ b/code/game/objects/structures/fireaxe.dm
@@ -83,7 +83,7 @@
take_damage(P.damage, P.damage_type, 0)
-/obj/structure/fireaxecabinet/blob_act(obj/effect/blob/B)
+/obj/structure/fireaxecabinet/blob_act(obj/structure/blob/B)
if(fireaxe)
fireaxe.forceMove(loc)
qdel(src)
diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm
index 4351847af1c..236f88c7f3f 100644
--- a/code/game/objects/structures/girders.dm
+++ b/code/game/objects/structures/girders.dm
@@ -272,7 +272,7 @@
qdel(src)
-/obj/structure/girder/blob_act(obj/effect/blob/B)
+/obj/structure/girder/blob_act(obj/structure/blob/B)
if(prob(40))
qdel(src)
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index 2bd2368370e..f3cbde713e8 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -32,7 +32,7 @@
new /obj/structure/grille/ratvar(src.loc)
qdel(src)
-/obj/structure/grille/blob_act(obj/effect/blob/B)
+/obj/structure/grille/blob_act(obj/structure/blob/B)
if(!destroyed)
Break()
diff --git a/code/game/objects/structures/guncase.dm b/code/game/objects/structures/guncase.dm
index abaebce5de3..9477946c356 100644
--- a/code/game/objects/structures/guncase.dm
+++ b/code/game/objects/structures/guncase.dm
@@ -76,7 +76,9 @@
/obj/structure/guncase/Topic(href, href_list)
if(href_list["retrieve"])
- var/obj/item/O = locate(href_list["retrieve"])
+ var/obj/item/O = locate(href_list["retrieve"]) in contents
+ if(!O || !istype(O))
+ return
if(!usr.canUseTopic(src))
return
if(ishuman(usr))
diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm
index 23aa35ed986..bf40a96002b 100644
--- a/code/game/objects/structures/lattice.dm
+++ b/code/game/objects/structures/lattice.dm
@@ -27,7 +27,7 @@
stored = null
return ..()
-/obj/structure/lattice/blob_act(obj/effect/blob/B)
+/obj/structure/lattice/blob_act(obj/structure/blob/B)
return
/obj/structure/lattice/ex_act(severity, target)
diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm
index 5b1acebb898..e249db51d59 100644
--- a/code/game/objects/structures/safe.dm
+++ b/code/game/objects/structures/safe.dm
@@ -164,7 +164,7 @@ FLOOR SAFES
return ..()
-obj/structure/safe/blob_act(obj/effect/blob/B)
+obj/structure/safe/blob_act(obj/structure/blob/B)
return
obj/structure/safe/ex_act(severity, target)
diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm
index 6abb4c9d244..bf634f55443 100644
--- a/code/game/objects/structures/signs.dm
+++ b/code/game/objects/structures/signs.dm
@@ -13,7 +13,7 @@
/obj/structure/sign/ex_act(severity, target)
qdel(src)
-/obj/structure/sign/blob_act(obj/effect/blob/B)
+/obj/structure/sign/blob_act(obj/structure/blob/B)
qdel(src)
/obj/structure/sign/attackby(obj/item/O, mob/user, params)
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 4f41941388d..067ea45c404 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -53,7 +53,7 @@
if(3)
take_damage(rand(40,80), BRUTE, 0)
-/obj/structure/table/blob_act(obj/effect/blob/B)
+/obj/structure/table/blob_act(obj/structure/blob/B)
take_damage(rand(75,150), BRUTE, 0)
/obj/structure/table/narsie_act()
@@ -477,7 +477,7 @@
if(3)
take_damage(rand(5,25), BRUTE, 0)
-/obj/structure/rack/blob_act(obj/effect/blob/B)
+/obj/structure/rack/blob_act(obj/structure/blob/B)
rack_destroy()
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index a240706f2c7..f6a9cd7b922 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -65,7 +65,7 @@
if(3)
take_damage(rand(25,75), BRUTE, 0)
-/obj/structure/window/blob_act(obj/effect/blob/B)
+/obj/structure/window/blob_act(obj/structure/blob/B)
take_damage(rand(75,150), BRUTE, 0)
/obj/structure/window/narsie_act()
diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm
index 3766ed75826..2ac025cc98a 100644
--- a/code/game/turfs/simulated/floor.dm
+++ b/code/game/turfs/simulated/floor.dm
@@ -77,7 +77,7 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3","
if(A.level == 3)
return 1
-/turf/open/floor/blob_act(obj/effect/blob/B)
+/turf/open/floor/blob_act(obj/structure/blob/B)
return
/turf/open/floor/proc/update_icon()
diff --git a/code/game/turfs/simulated/floor/warning.dm b/code/game/turfs/simulated/floor/warning.dm
index a6d40948936..bc8e5c520a0 100644
--- a/code/game/turfs/simulated/floor/warning.dm
+++ b/code/game/turfs/simulated/floor/warning.dm
@@ -1,6 +1,5 @@
//ASTEROID FLOORS
/turf/open/floor/plasteel/asteroid/warning
- icon = 'icons/turf/floors/warning.dmi'
icon_state = "asteroid_warn"
/turf/open/floor/plasteel/asteroid/warning/side
icon_state = "asteroid_warn_side"
@@ -10,7 +9,6 @@
icon_state = "asteroid_warn_end"
/turf/open/floor/plasteel/airless/asteroid/warning
- icon = 'icons/turf/floors/warning.dmi'
icon_state = "asteroid_warn"
/turf/open/floor/plasteel/airless/asteroid/warning/side
icon_state = "asteroid_warn_side"
@@ -20,7 +18,6 @@
icon_state = "asteroid_warn_end"
/turf/open/floor/plating/astplate/warning
- icon = 'icons/turf/floors/warning.dmi'
icon_state = "astplate_warn"
/turf/open/floor/plating/astplate/warning/corner
icon_state = "astplate_warn_corner"
@@ -30,7 +27,6 @@
icon_state = "astplate_warn_end"
/turf/open/floor/plating/airless/astplate/warning
- icon = 'icons/turf/floors/warning.dmi'
icon_state = "astplate_warn"
/turf/open/floor/plating/airless/astplate/warning/corner
icon_state = "astplate_warn_corner"
@@ -42,7 +38,6 @@
//PLASTEEL
/turf/open/floor/plasteel/warning
- icon = 'icons/turf/floors/warning.dmi'
icon_state = "plasteel_warn"
/turf/open/floor/plasteel/warning/corner
icon_state = "plasteel_warn_corner"
@@ -52,7 +47,6 @@
icon_state = "plasteel_warn_end"
/turf/open/floor/plasteel/airless/warning
- icon = 'icons/turf/floors/warning.dmi'
icon_state = "plasteel_warn"
/turf/open/floor/plasteel/airless/warning/corner
icon_state = "plasteel_warn_corner"
@@ -63,7 +57,6 @@
//PLASTEEL WHITE
/turf/open/floor/plasteel/warnwhite
- icon = 'icons/turf/floors/warning.dmi'
icon_state = "white_warn"
/turf/open/floor/plasteel/warnwhite/corner
icon_state = "white_warn_corner"
@@ -73,7 +66,6 @@
icon_state = "white_warn_end"
/turf/open/floor/plasteel/airless/warnwhite
- icon = 'icons/turf/floors/warning.dmi'
icon_state = "white_warn"
/turf/open/floor/plasteel/airless/warnwhite/corner
icon_state = "white_warn_corner"
@@ -85,7 +77,6 @@
//PLASTEEL BLACK
/turf/open/floor/plasteel/darkwarning
- icon = 'icons/turf/floors/warning.dmi'
icon_state = "black_warn"
/turf/open/floor/plasteel/darkwarning/corner
icon_state = "black_warn_corner"
@@ -95,7 +86,6 @@
icon_state = "black_warn_end"
/turf/open/floor/plasteel/airless/darkwarning
- icon = 'icons/turf/floors/warning.dmi'
icon_state = "black_warn"
/turf/open/floor/plasteel/airless/darkwarning/corner
icon_state = "black_warn_corner"
@@ -107,7 +97,6 @@
//PLATING
/turf/open/floor/plating/warnplate
- icon = 'icons/turf/floors/warning.dmi'
icon_state = "plating_warn"
/turf/open/floor/plating/warnplate/corner
icon_state = "plating_warn_corner"
@@ -117,7 +106,6 @@
icon_state = "plating_warn_end"
/turf/open/floor/plating/airless/warnplate
- icon = 'icons/turf/floors/warning.dmi'
icon_state = "plating_warn"
/turf/open/floor/plating/airless/warnplate/corner
icon_state = "plating_warn_corner"
diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm
index 4e0224b3c41..95ba9cc818d 100644
--- a/code/game/turfs/simulated/walls.dm
+++ b/code/game/turfs/simulated/walls.dm
@@ -80,7 +80,7 @@
..()
return
-/turf/closed/wall/blob_act(obj/effect/blob/B)
+/turf/closed/wall/blob_act(obj/structure/blob/B)
if(prob(50))
dismantle_wall()
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index a229b10f337..843edc9bdc2 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -1140,7 +1140,7 @@ var/list/datum/outfit/custom_outfits = list() //Admin created outfits
/client/proc/modify_goals()
set category = "Debug"
- set name = "Modify station goals"
+ set name = "Modify goals"
if(!check_rights(R_ADMIN))
return
@@ -1152,4 +1152,4 @@ var/list/datum/outfit/custom_outfits = list() //Admin created outfits
for(var/datum/station_goal/S in ticker.mode.station_goals)
dat += "[S.name] - Announce | Remove
"
dat += "
Add New Goal"
- usr << browse(dat, "window=goals;size=400x400")
+ usr << browse(dat, "window=goals;size=400x400")
diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm
index ec1eb426723..0101bd9d415 100644
--- a/code/modules/atmospherics/machinery/atmosmachinery.dm
+++ b/code/modules/atmospherics/machinery/atmosmachinery.dm
@@ -208,7 +208,7 @@ Pipelines + Other Objects -> Pipe network
return img
-/obj/machinery/atmospherics/construction(pipe_type, obj_color)
+/obj/machinery/atmospherics/on_construction(pipe_type, obj_color)
if(can_unwrench)
color = obj_color
pipe_color = obj_color
diff --git a/code/modules/atmospherics/machinery/components/components_base.dm b/code/modules/atmospherics/machinery/components/components_base.dm
index a7b3dddd18d..4e01f5915b3 100644
--- a/code/modules/atmospherics/machinery/components/components_base.dm
+++ b/code/modules/atmospherics/machinery/components/components_base.dm
@@ -72,7 +72,7 @@ Pipenet stuff; housekeeping
qdel(AIR_I)
AIR_I = null
-/obj/machinery/atmospherics/components/construction()
+/obj/machinery/atmospherics/components/on_construction()
..()
update_parents()
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
index 089eea372e5..9ec331734ac 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
@@ -35,7 +35,7 @@
/obj/item/weapon/stock_parts/console_screen = 1,
/obj/item/stack/sheet/glass = 2)
-/obj/machinery/atmospherics/components/unary/cryo_cell/construction()
+/obj/machinery/atmospherics/components/unary/cryo_cell/on_construction()
..(dir, dir)
/obj/machinery/atmospherics/components/unary/cryo_cell/RefreshParts()
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
index de9f37bb4a3..74a0a279188 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
@@ -49,7 +49,7 @@
else
return ..()
-/obj/machinery/atmospherics/components/unary/thermomachine/construction()
+/obj/machinery/atmospherics/components/unary/thermomachine/on_construction()
..(dir,dir)
/obj/machinery/atmospherics/components/unary/thermomachine/RefreshParts()
diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm
index 4065954db83..df48ca85a8d 100644
--- a/code/modules/atmospherics/machinery/portable/canister.dm
+++ b/code/modules/atmospherics/machinery/portable/canister.dm
@@ -236,7 +236,7 @@
air_update_turf() // Update the environment if needed.
update_icon()
-/obj/machinery/portable_atmospherics/canister/blob_act(obj/effect/blob/B)
+/obj/machinery/portable_atmospherics/canister/blob_act(obj/structure/blob/B)
take_damage(100, BRUTE, 0)
/obj/machinery/portable_atmospherics/canister/burn()
diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm
index 2e07b33d86d..1890010e36d 100644
--- a/code/modules/clothing/spacesuits/hardsuit.dm
+++ b/code/modules/clothing/spacesuits/hardsuit.dm
@@ -556,6 +556,7 @@
var/shield_on = "shield-old"
/obj/item/clothing/suit/space/hardsuit/shielded/hit_reaction(mob/living/carbon/human/owner, attack_text)
+ recharge_cooldown = world.time + recharge_delay
if(current_charges > 0)
var/datum/effect_system/spark_spread/s = new
s.set_up(2, 1, src)
@@ -563,7 +564,6 @@
owner.visible_message("[owner]'s shields deflect [attack_text] in a shower of sparks!")
current_charges--
if(recharge_rate)
- recharge_cooldown = world.time + recharge_delay
START_PROCESSING(SSobj, src)
if(current_charges <= 0)
owner.visible_message("[owner]'s shield overloads!")
diff --git a/code/modules/events/blob.dm b/code/modules/events/blob.dm
index 155924c09bd..09c4bf2bc25 100644
--- a/code/modules/events/blob.dm
+++ b/code/modules/events/blob.dm
@@ -30,7 +30,7 @@
if(!candidates.len)
return NOT_ENOUGH_PLAYERS
var/mob/dead/observer/new_blob = pick(candidates)
- var/obj/effect/blob/core/BC = new/obj/effect/blob/core(pick(blobstart), new_blob.client, new_rate)
+ var/obj/structure/blob/core/BC = new/obj/structure/blob/core(pick(blobstart), new_blob.client, new_rate)
BC.overmind.blob_points = min(20 + player_list.len, BC.overmind.max_blob_points)
spawned_mobs += BC.overmind
message_admins("[BC.overmind.key] has been made into a blob overmind by an event.")
diff --git a/code/modules/events/shuttle_loan.dm b/code/modules/events/shuttle_loan.dm
index 328e8af3268..4b894183670 100644
--- a/code/modules/events/shuttle_loan.dm
+++ b/code/modules/events/shuttle_loan.dm
@@ -129,7 +129,7 @@
for(var/i in 1 to 5)
T = pick_n_take(empty_shuttle_turfs)
- new /obj/effect/spider/stickyweb(T)
+ new /obj/structure/spider/stickyweb(T)
if(ANTIDOTE_NEEDED)
var/virus_type = pick(/datum/disease/beesease, /datum/disease/brainrot, /datum/disease/fluspanish)
diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm
index 2fb21e145a5..de3632195d5 100644
--- a/code/modules/events/spacevine.dm
+++ b/code/modules/events/spacevine.dm
@@ -8,7 +8,7 @@
/datum/round_event/spacevine/start()
var/list/turfs = list() //list of all the empty floor turfs in the hallway areas
- var/obj/effect/spacevine/SV = new()
+ var/obj/structure/spacevine/SV = new()
for(var/area/hallway/A in world)
for(var/turf/F in A)
@@ -19,7 +19,7 @@
if(turfs.len) //Pick a turf to spawn at if we can
var/turf/T = pick(turfs)
- new/obj/effect/spacevine_controller(T) //spawn a controller at turf
+ new/obj/structure/spacevine_controller(T) //spawn a controller at turf
/datum/spacevine_mutation
@@ -28,44 +28,44 @@
var/hue
var/quality
-/datum/spacevine_mutation/proc/add_mutation_to_vinepiece(obj/effect/spacevine/holder)
+/datum/spacevine_mutation/proc/add_mutation_to_vinepiece(obj/structure/spacevine/holder)
holder.mutations |= src
holder.color = hue
-/datum/spacevine_mutation/proc/process_mutation(obj/effect/spacevine/holder)
+/datum/spacevine_mutation/proc/process_mutation(obj/structure/spacevine/holder)
return
-/datum/spacevine_mutation/proc/process_temperature(obj/effect/spacevine/holder, temp, volume)
+/datum/spacevine_mutation/proc/process_temperature(obj/structure/spacevine/holder, temp, volume)
return
-/datum/spacevine_mutation/proc/on_birth(obj/effect/spacevine/holder)
+/datum/spacevine_mutation/proc/on_birth(obj/structure/spacevine/holder)
return
-/datum/spacevine_mutation/proc/on_grow(obj/effect/spacevine/holder)
+/datum/spacevine_mutation/proc/on_grow(obj/structure/spacevine/holder)
return
-/datum/spacevine_mutation/proc/on_death(obj/effect/spacevine/holder)
+/datum/spacevine_mutation/proc/on_death(obj/structure/spacevine/holder)
return
-/datum/spacevine_mutation/proc/on_hit(obj/effect/spacevine/holder, mob/hitter, obj/item/I, expected_damage)
+/datum/spacevine_mutation/proc/on_hit(obj/structure/spacevine/holder, mob/hitter, obj/item/I, expected_damage)
. = expected_damage
-/datum/spacevine_mutation/proc/on_cross(obj/effect/spacevine/holder, mob/crosser)
+/datum/spacevine_mutation/proc/on_cross(obj/structure/spacevine/holder, mob/crosser)
return
-/datum/spacevine_mutation/proc/on_chem(obj/effect/spacevine/holder, datum/reagent/R)
+/datum/spacevine_mutation/proc/on_chem(obj/structure/spacevine/holder, datum/reagent/R)
return
-/datum/spacevine_mutation/proc/on_eat(obj/effect/spacevine/holder, mob/living/eater)
+/datum/spacevine_mutation/proc/on_eat(obj/structure/spacevine/holder, mob/living/eater)
return
-/datum/spacevine_mutation/proc/on_spread(obj/effect/spacevine/holder, turf/target)
+/datum/spacevine_mutation/proc/on_spread(obj/structure/spacevine/holder, turf/target)
return
-/datum/spacevine_mutation/proc/on_buckle(obj/effect/spacevine/holder, mob/living/buckled)
+/datum/spacevine_mutation/proc/on_buckle(obj/structure/spacevine/holder, mob/living/buckled)
return
-/datum/spacevine_mutation/proc/on_explosion(severity, target, obj/effect/spacevine/holder)
+/datum/spacevine_mutation/proc/on_explosion(severity, target, obj/structure/spacevine/holder)
return
@@ -111,7 +111,7 @@
ChangeTurf(src.baseturf)
/turf/open/floor/vines/ChangeTurf(turf/open/floor/T)
- for(var/obj/effect/spacevine/SV in src)
+ for(var/obj/structure/spacevine/SV in src)
qdel(SV)
. = ..()
UpdateAffectingLights()
@@ -129,17 +129,17 @@
/turf/open/space/transit
))
-/datum/spacevine_mutation/space_covering/on_grow(obj/effect/spacevine/holder)
+/datum/spacevine_mutation/space_covering/on_grow(obj/structure/spacevine/holder)
process_mutation(holder)
-/datum/spacevine_mutation/space_covering/process_mutation(obj/effect/spacevine/holder)
+/datum/spacevine_mutation/space_covering/process_mutation(obj/structure/spacevine/holder)
var/turf/T = get_turf(holder)
if(is_type_in_typecache(T, coverable_turfs))
var/currtype = T.type
T.ChangeTurf(/turf/open/floor/vines)
T.baseturf = currtype
-/datum/spacevine_mutation/space_covering/on_death(obj/effect/spacevine/holder)
+/datum/spacevine_mutation/space_covering/on_death(obj/structure/spacevine/holder)
var/turf/T = get_turf(holder)
if(istype(T, /turf/open/floor/vines))
T.ChangeTurf(T.baseturf)
@@ -149,8 +149,8 @@
hue = "#3333ff"
quality = MINOR_NEGATIVE
-/datum/spacevine_mutation/bluespace/on_spread(obj/effect/spacevine/holder, turf/target)
- if(holder.energy > 1 && !locate(/obj/effect/spacevine) in target)
+/datum/spacevine_mutation/bluespace/on_spread(obj/structure/spacevine/holder, turf/target)
+ if(holder.energy > 1 && !locate(/obj/structure/spacevine) in target)
holder.master.spawn_spacevine_piece(target, holder)
/datum/spacevine_mutation/light
@@ -159,7 +159,7 @@
quality = POSITIVE
severity = 4
-/datum/spacevine_mutation/light/on_grow(obj/effect/spacevine/holder)
+/datum/spacevine_mutation/light/on_grow(obj/structure/spacevine/holder)
if(holder.energy)
holder.SetLuminosity(severity, 3)
@@ -169,14 +169,14 @@
severity = 10
quality = NEGATIVE
-/datum/spacevine_mutation/toxicity/on_cross(obj/effect/spacevine/holder, mob/living/crosser)
+/datum/spacevine_mutation/toxicity/on_cross(obj/structure/spacevine/holder, mob/living/crosser)
if(issilicon(crosser))
return
if(prob(severity) && istype(crosser) && !isvineimmune(crosser))
crosser << "You accidently touch the vine and feel a strange sensation."
crosser.adjustToxLoss(5)
-/datum/spacevine_mutation/toxicity/on_eat(obj/effect/spacevine/holder, mob/living/eater)
+/datum/spacevine_mutation/toxicity/on_eat(obj/structure/spacevine/holder, mob/living/eater)
if(!isvineimmune(eater))
eater.adjustToxLoss(5)
@@ -186,14 +186,14 @@
quality = NEGATIVE
severity = 2
-/datum/spacevine_mutation/explosive/on_explosion(explosion_severity, target, obj/effect/spacevine/holder)
+/datum/spacevine_mutation/explosive/on_explosion(explosion_severity, target, obj/structure/spacevine/holder)
if(explosion_severity < 3)
qdel(src)
else
. = 1
QDEL_IN(src, 5)
-/datum/spacevine_mutation/explosive/on_death(obj/effect/spacevine/holder, mob/hitter, obj/item/I)
+/datum/spacevine_mutation/explosive/on_death(obj/structure/spacevine/holder, mob/hitter, obj/item/I)
explosion(holder.loc, 0, 0, severity, 0, 0)
/datum/spacevine_mutation/fire_proof
@@ -201,10 +201,10 @@
hue = "#ff8888"
quality = MINOR_NEGATIVE
-/datum/spacevine_mutation/fire_proof/process_temperature(obj/effect/spacevine/holder, temp, volume)
+/datum/spacevine_mutation/fire_proof/process_temperature(obj/structure/spacevine/holder, temp, volume)
return 1
-/datum/spacevine_mutation/fire_proof/on_hit(obj/effect/spacevine/holder, mob/hitter, obj/item/I, expected_damage)
+/datum/spacevine_mutation/fire_proof/on_hit(obj/structure/spacevine/holder, mob/hitter, obj/item/I, expected_damage)
if(I && I.damtype == "fire")
. = 0
else
@@ -215,8 +215,8 @@
hue = "#ff7700"
quality = MINOR_NEGATIVE
-/datum/spacevine_mutation/vine_eating/on_spread(obj/effect/spacevine/holder, turf/target)
- var/obj/effect/spacevine/prey = locate() in target
+/datum/spacevine_mutation/vine_eating/on_spread(obj/structure/spacevine/holder, turf/target)
+ var/obj/structure/spacevine/prey = locate() in target
if(prey && !prey.mutations.Find(src)) //Eat all vines that are not of the same origin
qdel(prey)
@@ -226,10 +226,10 @@
severity = 3
quality = NEGATIVE
-/datum/spacevine_mutation/aggressive_spread/on_spread(obj/effect/spacevine/holder, turf/target)
+/datum/spacevine_mutation/aggressive_spread/on_spread(obj/structure/spacevine/holder, turf/target)
target.ex_act(severity, src) // vine immunity handled at /mob/ex_act
-/datum/spacevine_mutation/aggressive_spread/on_buckle(obj/effect/spacevine/holder, mob/living/buckled)
+/datum/spacevine_mutation/aggressive_spread/on_buckle(obj/structure/spacevine/holder, mob/living/buckled)
buckled.ex_act(severity, src)
/datum/spacevine_mutation/transparency
@@ -237,7 +237,7 @@
hue = ""
quality = POSITIVE
-/datum/spacevine_mutation/transparency/on_grow(obj/effect/spacevine/holder)
+/datum/spacevine_mutation/transparency/on_grow(obj/structure/spacevine/holder)
holder.SetOpacity(0)
holder.alpha = 125
@@ -247,7 +247,7 @@
severity = 3
quality = NEGATIVE
-/datum/spacevine_mutation/oxy_eater/process_mutation(obj/effect/spacevine/holder)
+/datum/spacevine_mutation/oxy_eater/process_mutation(obj/structure/spacevine/holder)
var/turf/open/floor/T = holder.loc
if(istype(T))
var/datum/gas_mixture/GM = T.air
@@ -262,7 +262,7 @@
severity = 3
quality = NEGATIVE
-/datum/spacevine_mutation/nitro_eater/process_mutation(obj/effect/spacevine/holder)
+/datum/spacevine_mutation/nitro_eater/process_mutation(obj/structure/spacevine/holder)
var/turf/open/floor/T = holder.loc
if(istype(T))
var/datum/gas_mixture/GM = T.air
@@ -277,7 +277,7 @@
severity = 3
quality = POSITIVE
-/datum/spacevine_mutation/carbondioxide_eater/process_mutation(obj/effect/spacevine/holder)
+/datum/spacevine_mutation/carbondioxide_eater/process_mutation(obj/structure/spacevine/holder)
var/turf/open/floor/T = holder.loc
if(istype(T))
var/datum/gas_mixture/GM = T.air
@@ -292,7 +292,7 @@
severity = 3
quality = POSITIVE
-/datum/spacevine_mutation/plasma_eater/process_mutation(obj/effect/spacevine/holder)
+/datum/spacevine_mutation/plasma_eater/process_mutation(obj/structure/spacevine/holder)
var/turf/open/floor/T = holder.loc
if(istype(T))
var/datum/gas_mixture/GM = T.air
@@ -307,13 +307,13 @@
severity = 10
quality = NEGATIVE
-/datum/spacevine_mutation/thorns/on_cross(obj/effect/spacevine/holder, mob/living/crosser)
+/datum/spacevine_mutation/thorns/on_cross(obj/structure/spacevine/holder, mob/living/crosser)
if(prob(severity) && istype(crosser) && !isvineimmune(holder))
var/mob/living/M = crosser
M.adjustBruteLoss(5)
M << "You cut yourself on the thorny vines."
-/datum/spacevine_mutation/thorns/on_hit(obj/effect/spacevine/holder, mob/living/hitter, obj/item/I, expected_damage)
+/datum/spacevine_mutation/thorns/on_hit(obj/structure/spacevine/holder, mob/living/hitter, obj/item/I, expected_damage)
if(prob(severity) && istype(hitter) && !isvineimmune(holder))
var/mob/living/M = hitter
M.adjustBruteLoss(5)
@@ -325,13 +325,13 @@
hue = "#997700"
quality = NEGATIVE
-/datum/spacevine_mutation/woodening/on_grow(obj/effect/spacevine/holder)
+/datum/spacevine_mutation/woodening/on_grow(obj/structure/spacevine/holder)
if(holder.energy)
holder.density = 1
holder.maxhealth = 100
holder.health = holder.maxhealth
-/datum/spacevine_mutation/woodening/on_hit(obj/effect/spacevine/holder, mob/living/hitter, obj/item/I, expected_damage)
+/datum/spacevine_mutation/woodening/on_hit(obj/structure/spacevine/holder, mob/living/hitter, obj/item/I, expected_damage)
if(I.is_sharp())
. = expected_damage * 0.5
else
@@ -343,16 +343,16 @@
quality = NEGATIVE
severity = 10
-/datum/spacevine_mutation/flowering/on_grow(obj/effect/spacevine/holder)
+/datum/spacevine_mutation/flowering/on_grow(obj/structure/spacevine/holder)
if(holder.energy == 2 && prob(severity) && !locate(/obj/structure/alien/resin/flower_bud_enemy) in range(5,holder))
new/obj/structure/alien/resin/flower_bud_enemy(get_turf(holder))
-/datum/spacevine_mutation/flowering/on_cross(obj/effect/spacevine/holder, mob/living/crosser)
+/datum/spacevine_mutation/flowering/on_cross(obj/structure/spacevine/holder, mob/living/crosser)
holder.entangle(crosser)
// SPACE VINES (Note that this code is very similar to Biomass code)
-/obj/effect/spacevine
+/obj/structure/spacevine
name = "space vines"
desc = "An extremely expansionistic species of vine."
icon = 'icons/effects/spacevines.dmi'
@@ -365,10 +365,10 @@
var/health = 50
var/maxhealth = 50
var/energy = 0
- var/obj/effect/spacevine_controller/master = null
+ var/obj/structure/spacevine_controller/master = null
var/list/mutations = list()
-/obj/effect/spacevine/examine(mob/user)
+/obj/structure/spacevine/examine(mob/user)
..()
var/text = "This one is a"
if(mutations.len)
@@ -380,7 +380,7 @@
text += " vine."
user << text
-/obj/effect/spacevine/Destroy()
+/obj/structure/spacevine/Destroy()
for(var/datum/spacevine_mutation/SM in mutations)
SM.on_death(src)
if(master)
@@ -397,7 +397,7 @@
unbuckle_all_mobs(force=1)
return ..()
-/obj/effect/spacevine/proc/on_chem_effect(datum/reagent/R)
+/obj/structure/spacevine/proc/on_chem_effect(datum/reagent/R)
var/override = 0
for(var/datum/spacevine_mutation/SM in mutations)
override += SM.on_chem(src, R)
@@ -405,7 +405,7 @@
if(prob(50))
qdel(src)
-/obj/effect/spacevine/proc/eat(mob/eater)
+/obj/structure/spacevine/proc/eat(mob/eater)
var/override = 0
for(var/datum/spacevine_mutation/SM in mutations)
override += SM.on_eat(src, eater)
@@ -414,7 +414,7 @@
eater.say("Nom")
qdel(src)
-/obj/effect/spacevine/attackby(obj/item/weapon/W, mob/user, params)
+/obj/structure/spacevine/attackby(obj/item/weapon/W, mob/user, params)
if (!W || !user || !W.type)
return
user.changeNext_move(CLICK_CD_MELEE)
@@ -422,7 +422,7 @@
if(istype(W, /obj/item/weapon/scythe))
force = force * 4
- for(var/obj/effect/spacevine/B in orange(1,src))
+ for(var/obj/structure/spacevine/B in orange(1,src))
B.health = health - force
if(B.health < 1)
qdel(B)
@@ -449,36 +449,36 @@
..()
-/obj/effect/spacevine/Crossed(mob/crosser)
+/obj/structure/spacevine/Crossed(mob/crosser)
if(isliving(crosser))
for(var/datum/spacevine_mutation/SM in mutations)
SM.on_cross(src, crosser)
-/obj/effect/spacevine/attack_hand(mob/user)
+/obj/structure/spacevine/attack_hand(mob/user)
for(var/datum/spacevine_mutation/SM in mutations)
SM.on_hit(src, user)
user_unbuckle_mob(user, user)
-/obj/effect/spacevine/attack_paw(mob/living/user)
+/obj/structure/spacevine/attack_paw(mob/living/user)
user.do_attack_animation(src)
for(var/datum/spacevine_mutation/SM in mutations)
SM.on_hit(src, user)
user_unbuckle_mob(user,user)
-/obj/effect/spacevine/attack_alien(mob/living/user)
+/obj/structure/spacevine/attack_alien(mob/living/user)
eat(user)
-/obj/effect/spacevine_controller
+/obj/structure/spacevine_controller
invisibility = INVISIBILITY_ABSTRACT
- var/list/obj/effect/spacevine/vines = list()
+ var/list/obj/structure/spacevine/vines = list()
var/list/growth_queue = list()
var/spread_multiplier = 5
var/spread_cap = 30
var/list/mutations_list = list()
var/mutativness = 1
-/obj/effect/spacevine_controller/New(loc, list/muts, mttv, spreading)
+/obj/structure/spacevine_controller/New(loc, list/muts, mttv, spreading)
spawn_spacevine_piece(loc, , muts)
START_PROCESSING(SSobj, src)
init_subtypes(/datum/spacevine_mutation/, mutations_list)
@@ -488,21 +488,21 @@
spread_cap *= spreading / 50
spread_multiplier /= spreading / 50
-/obj/effect/spacevine_controller/ex_act() //only killing all vines will end this suffering
+/obj/structure/spacevine_controller/ex_act() //only killing all vines will end this suffering
return
-/obj/effect/spacevine_controller/singularity_act()
+/obj/structure/spacevine_controller/singularity_act()
return
-/obj/effect/spacevine_controller/singularity_pull()
+/obj/structure/spacevine_controller/singularity_pull()
return
-/obj/effect/spacevine_controller/Destroy()
+/obj/structure/spacevine_controller/Destroy()
STOP_PROCESSING(SSobj, src)
return ..()
-/obj/effect/spacevine_controller/proc/spawn_spacevine_piece(turf/location, obj/effect/spacevine/parent, list/muts)
- var/obj/effect/spacevine/SV = new(location)
+/obj/structure/spacevine_controller/proc/spawn_spacevine_piece(turf/location, obj/structure/spacevine/parent, list/muts)
+ var/obj/structure/spacevine/SV = new(location)
growth_queue += SV
vines += SV
SV.master = src
@@ -520,7 +520,7 @@
for(var/datum/spacevine_mutation/SM in SV.mutations)
SM.on_birth(SV)
-/obj/effect/spacevine_controller/process()
+/obj/structure/spacevine_controller/process()
if(!vines)
qdel(src) //space vines exterminated. Remove the controller
return
@@ -532,9 +532,9 @@
length = min( spread_cap , max( 1 , vines.len / spread_multiplier ) )
var/i = 0
- var/list/obj/effect/spacevine/queue_end = list()
+ var/list/obj/structure/spacevine/queue_end = list()
- for(var/obj/effect/spacevine/SV in growth_queue)
+ for(var/obj/structure/spacevine/SV in growth_queue)
if(qdeleted(SV))
continue
i++
@@ -555,7 +555,7 @@
growth_queue = growth_queue + queue_end
-/obj/effect/spacevine/proc/grow()
+/obj/structure/spacevine/proc/grow()
if(!energy)
src.icon_state = pick("Med1", "Med2", "Med3")
energy = 1
@@ -567,7 +567,7 @@
for(var/datum/spacevine_mutation/SM in mutations)
SM.on_grow(src)
-/obj/effect/spacevine/proc/entangle_mob()
+/obj/structure/spacevine/proc/entangle_mob()
if(!has_buckled_mobs() && prob(25))
for(var/mob/living/V in src.loc)
entangle(V)
@@ -575,7 +575,7 @@
break //only capture one mob at a time
-/obj/effect/spacevine/proc/entangle(mob/living/V)
+/obj/structure/spacevine/proc/entangle(mob/living/V)
if(!V || isvineimmune(V))
return
for(var/datum/spacevine_mutation/SM in mutations)
@@ -584,18 +584,18 @@
V << "The vines [pick("wind", "tangle", "tighten")] around you!"
buckle_mob(V)
-/obj/effect/spacevine/proc/spread()
+/obj/structure/spacevine/proc/spread()
var/direction = pick(cardinal)
var/turf/stepturf = get_step(src,direction)
for(var/datum/spacevine_mutation/SM in mutations)
SM.on_spread(src, stepturf)
stepturf = get_step(src,direction) //in case turf changes, to make sure no runtimes happen
- if(!locate(/obj/effect/spacevine, stepturf))
+ if(!locate(/obj/structure/spacevine, stepturf))
if(stepturf.Enter(src))
if(master)
master.spawn_spacevine_piece(stepturf, src)
-/obj/effect/spacevine/ex_act(severity, target)
+/obj/structure/spacevine/ex_act(severity, target)
if(istype(target, type)) //if its agressive spread vine dont do anything
return
var/i
@@ -604,14 +604,14 @@
if(!i && prob(100/severity))
qdel(src)
-/obj/effect/spacevine/temperature_expose(null, temp, volume)
+/obj/structure/spacevine/temperature_expose(null, temp, volume)
var/override = 0
for(var/datum/spacevine_mutation/SM in mutations)
override += SM.process_temperature(src, temp, volume)
if(!override)
qdel(src)
-/obj/effect/spacevine/CanPass(atom/movable/mover, turf/target, height=0)
+/obj/structure/spacevine/CanPass(atom/movable/mover, turf/target, height=0)
if(isvineimmune(mover))
. = TRUE
else
diff --git a/code/modules/events/spider_infestation.dm b/code/modules/events/spider_infestation.dm
index a25f60366ee..451ad34a466 100644
--- a/code/modules/events/spider_infestation.dm
+++ b/code/modules/events/spider_infestation.dm
@@ -29,7 +29,7 @@
while((spawncount >= 1) && vents.len)
var/obj/vent = pick(vents)
- var/obj/effect/spider/spiderling/S = new(vent.loc)
+ var/obj/structure/spider/spiderling/S = new(vent.loc)
if(prob(66))
S.grow_as = /mob/living/simple_animal/hostile/poison/giant_spider/nurse
vents -= vent
diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm
index a257234425d..db9aacf6ce2 100644
--- a/code/modules/food_and_drinks/food/snacks_other.dm
+++ b/code/modules/food_and_drinks/food/snacks_other.dm
@@ -324,5 +324,9 @@
icon_state = "powercrepe"
bonus_reagents = list("nutriment" = 5, "vitamin" = 3, "iron" = 10)
list_reagents = list("nutriment" = 10, "vitamin" = 5, "cherryjelly" = 5)
- force = 15
+ force = 20
+ throwforce = 10
+ block_chance = 50
+ armour_penetration = 75
+ attack_verb = list("slapped", "slathered")
w_class = 4
\ No newline at end of file
diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
index 480713d7ebc..33e5d058f9c 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
@@ -49,11 +49,11 @@
else
return ..()
-/obj/machinery/smartfridge/construction()
+/obj/machinery/smartfridge/on_construction()
for(var/datum/A in contents)
qdel(A)
-/obj/machinery/smartfridge/deconstruction()
+/obj/machinery/smartfridge/on_deconstruction()
for(var/atom/movable/A in contents)
A.loc = loc
diff --git a/code/modules/games/cards.dm b/code/modules/games/cards.dm
index fb8da24143e..cf7e6ae024d 100644
--- a/code/modules/games/cards.dm
+++ b/code/modules/games/cards.dm
@@ -264,9 +264,8 @@
if (istype(hclient))
switch (href_list["action"])
if ("play_card")
- var/datum/playingcard/card = locate(href_list["card"])
-
- if (card in src.cards)
+ var/datum/playingcard/card = locate(href_list["card"]) in cards
+ if (card && istype(card))
src.discard(card)
if ("toggle_conceal")
src.toggle_conceal()
diff --git a/code/modules/holodeck/computer.dm b/code/modules/holodeck/computer.dm
index cc50f155f0b..c29ebfb5ea7 100644
--- a/code/modules/holodeck/computer.dm
+++ b/code/modules/holodeck/computer.dm
@@ -204,6 +204,6 @@
emergency_shutdown()
..()
-/obj/machinery/computer/holodeck/blob_act(obj/effect/blob/B)
+/obj/machinery/computer/holodeck/blob_act(obj/structure/blob/B)
emergency_shutdown()
..()
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm
index c9f67b39589..04b48caa83a 100644
--- a/code/modules/hydroponics/grown/kudzu.dm
+++ b/code/modules/hydroponics/grown/kudzu.dm
@@ -32,7 +32,7 @@
var/turf/T = get_turf(src)
message_admins("Kudzu planted by [key_name_admin(user)](?) (FLW) at ([T.x],[T.y],[T.z] - (JMP))",0,1)
investigate_log("was planted by [key_name(user)] at ([T.x],[T.y],[T.z])","kudzu")
- new /obj/effect/spacevine_controller(user.loc, mutations, potency, production)
+ new /obj/structure/spacevine_controller(user.loc, mutations, potency, production)
qdel(src)
/obj/item/seeds/kudzu/attack_self(mob/user)
diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm
index b47e119bf2b..9dc0ab8f97c 100644
--- a/code/modules/hydroponics/grown/mushrooms.dm
+++ b/code/modules/hydroponics/grown/mushrooms.dm
@@ -237,13 +237,13 @@
desc = "Mycena Bregprox: This species of mushroom glows in the dark."
icon_state = "glowshroom"
filling_color = "#00FA9A"
- var/effect_path = /obj/effect/glowshroom
+ var/effect_path = /obj/structure/glowshroom
origin_tech = "biotech=4;plasmatech=6"
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/attack_self(mob/user)
if(istype(user.loc,/turf/open/space))
return
- var/obj/effect/glowshroom/planted = new effect_path(user.loc)
+ var/obj/structure/glowshroom/planted = new effect_path(user.loc)
planted.delay = planted.delay - seed.production * 100 //So the delay goes DOWN with better stats instead of up. :I
planted.endurance = seed.endurance
planted.yield = seed.yield
@@ -274,5 +274,5 @@
desc = "Mycena Ruthenia: This species of mushroom glows in the dark, but aren't bioluminescent. They're warm to the touch..."
icon_state = "glowcap"
filling_color = "#00FA9A"
- effect_path = /obj/effect/glowshroom/glowcap
+ effect_path = /obj/structure/glowshroom/glowcap
origin_tech = "biotech=4;powerstorage=6;plasmatech=4"
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index afcf5b0e83d..744b4126cb3 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -444,7 +444,7 @@
if(pestlevel > 5)
visible_message("The pests seem to behave oddly...")
for(var/i=0, i<3, i++)
- var/obj/effect/spider/spiderling/S = new(src.loc)
+ var/obj/structure/spider/spiderling/S = new(src.loc)
S.grow_as = /mob/living/simple_animal/hostile/poison/giant_spider/hunter
else
usr << "The pests seem to behave oddly, but quickly settle down..."
diff --git a/code/modules/jobs/job_types/civilian.dm b/code/modules/jobs/job_types/civilian.dm
index faa6818ec73..6264c73d6ed 100644
--- a/code/modules/jobs/job_types/civilian.dm
+++ b/code/modules/jobs/job_types/civilian.dm
@@ -177,3 +177,5 @@ Lawyer
if(J.lawyers>1)
uniform = /obj/item/clothing/under/lawyer/purpsuit
suit = /obj/item/clothing/suit/toggle/lawyer/purple
+
+ H.bubble_icon = "lawyer"
diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm
index ba15a04fcc6..2d85151c98d 100644
--- a/code/modules/library/lib_machines.dm
+++ b/code/modules/library/lib_machines.dm
@@ -374,11 +374,13 @@ var/global/list/datum/cachedbook/cachedbooks // List of our cached book datums
b.duedate = world.time + (checkoutperiod * 600)
checkouts.Add(b)
if(href_list["checkin"])
- var/datum/borrowbook/b = locate(href_list["checkin"])
- checkouts.Remove(b)
+ var/datum/borrowbook/b = locate(href_list["checkin"]) in checkouts
+ if(b && istype(b))
+ checkouts.Remove(b)
if(href_list["delbook"])
- var/obj/item/weapon/book/b = locate(href_list["delbook"])
- inventory.Remove(b)
+ var/obj/item/weapon/book/b = locate(href_list["delbook"]) in inventory
+ if(b && istype(b))
+ inventory.Remove(b)
if(href_list["setauthor"])
var/newauthor = copytext(sanitize(input("Enter the author's name: ") as text|null),1,MAX_MESSAGE_LEN)
if(newauthor)
@@ -542,4 +544,4 @@ var/global/list/datum/cachedbook/cachedbooks // List of our cached book datums
B.icon_state = "book[rand(1,7)]"
qdel(P)
else
- P.loc = loc
\ No newline at end of file
+ P.loc = loc
diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm
index 443f37ea406..149669a713b 100644
--- a/code/modules/mining/machine_redemption.dm
+++ b/code/modules/mining/machine_redemption.dm
@@ -126,7 +126,7 @@
return ..()
-/obj/machinery/mineral/ore_redemption/deconstruction()
+/obj/machinery/mineral/ore_redemption/on_deconstruction()
empty_content()
/obj/machinery/mineral/ore_redemption/proc/SmeltMineral(obj/item/weapon/ore/O)
diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm
index 377d8ac3b15..542616a278e 100644
--- a/code/modules/mob/inventory.dm
+++ b/code/modules/mob/inventory.dm
@@ -281,42 +281,37 @@
//Outdated but still in use apparently. This should at least be a human proc.
//Daily reminder to murder this - Remie.
-/mob/proc/get_equipped_items()
- var/list/items = list()
+/mob/living/proc/get_equipped_items()
+ return
- if(hasvar(src,"back"))
- if(src:back)
- items += src:back
- if(hasvar(src,"belt"))
- if(src:belt)
- items += src:belt
- if(hasvar(src,"ears"))
- if(src:ears)
- items += src:ears
- if(hasvar(src,"glasses"))
- if(src:glasses)
- items += src:glasses
- if(hasvar(src,"gloves"))
- if(src:gloves)
- items += src:gloves
- if(hasvar(src,"head"))
- if(src:head)
- items += src:head
- if(hasvar(src,"shoes"))
- if(src:shoes)
- items += src:shoes
- if(hasvar(src,"wear_id"))
- if(src:wear_id)
- items += src:wear_id
- if(hasvar(src,"wear_mask"))
- if(src:wear_mask)
- items += src:wear_mask
- if(hasvar(src,"wear_suit"))
- if(src:wear_suit)
- items += src:wear_suit
- if(hasvar(src,"w_uniform"))
- if(src:w_uniform)
- items += src:w_uniform
+/mob/living/carbon/get_equipped_items()
+ var/list/items = list()
+ if(back)
+ items += back
+ if(head)
+ items += head
+ if(wear_mask)
+ items += wear_mask
+ return items
+
+/mob/living/carbon/human/get_equipped_items()
+ var/list/items = ..()
+ if(belt)
+ items += belt
+ if(ears)
+ items += ears
+ if(glasses)
+ items += glasses
+ if(gloves)
+ items += gloves
+ if(shoes)
+ items += shoes
+ if(wear_id)
+ items += wear_id
+ if(wear_suit)
+ items += wear_suit
+ if(w_uniform)
+ items += w_uniform
return items
diff --git a/code/modules/mob/living/brain/brain.dm b/code/modules/mob/living/brain/brain.dm
index dfdf30fb3c5..e90b4a72972 100644
--- a/code/modules/mob/living/brain/brain.dm
+++ b/code/modules/mob/living/brain/brain.dm
@@ -44,7 +44,7 @@
/mob/living/brain/ex_act() //you cant blow up brainmobs because it makes transfer_to() freak out when borgs blow up.
return
-/mob/living/brain/blob_act(obj/effect/blob/B)
+/mob/living/brain/blob_act(obj/structure/blob/B)
return
/mob/living/brain/get_eye_protection()//no eyes
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index 96afa3055f4..ea2195d1727 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -155,7 +155,7 @@ mob/living/carbon/bullet_act(obj/item/projectile/P, def_zone)
return dam_zone
-/mob/living/carbon/blob_act(obj/effect/blob/B)
+/mob/living/carbon/blob_act(obj/structure/blob/B)
if (stat == DEAD)
return
else
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index b0e2feb9fec..766a37aad4a 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -379,7 +379,7 @@
break
..()
-/mob/living/carbon/human/blob_act(obj/effect/blob/B)
+/mob/living/carbon/human/blob_act(obj/structure/blob/B)
if(stat == DEAD)
return
show_message("The blob attacks you!")
diff --git a/code/modules/mob/living/carbon/human/species_types.dm b/code/modules/mob/living/carbon/human/species_types.dm
index 97d1a2dd8ab..faeda3530d7 100644
--- a/code/modules/mob/living/carbon/human/species_types.dm
+++ b/code/modules/mob/living/carbon/human/species_types.dm
@@ -16,18 +16,6 @@
/datum/species/human/qualifies_for_rank(rank, list/features)
if((!features["tail_human"] || features["tail_human"] == "None") && (!features["ears"] || features["ears"] == "None"))
return 1 //Pure humans are always allowed in all roles.
-
- //Mutants are not allowed in most roles.
- if(rank in security_positions) //This list does not include lawyers.
- return 0
- if(rank in science_positions)
- return 0
- if(rank in medical_positions)
- return 0
- if(rank in engineering_positions)
- return 0
- if(rank == "Quartermaster") //QM is not contained in command_positions but we still want to bar mutants from it.
- return 0
return ..()
diff --git a/code/modules/mob/living/silicon/ai/ai_defense.dm b/code/modules/mob/living/silicon/ai/ai_defense.dm
index 771a6d7c2f5..6e08200af66 100644
--- a/code/modules/mob/living/silicon/ai/ai_defense.dm
+++ b/code/modules/mob/living/silicon/ai/ai_defense.dm
@@ -14,7 +14,7 @@
/mob/living/silicon/ai/attack_slime(mob/living/simple_animal/slime/user)
return //immune to slimes
-/mob/living/silicon/ai/blob_act(obj/effect/blob/B)
+/mob/living/silicon/ai/blob_act(obj/structure/blob/B)
if (stat != DEAD)
adjustBruteLoss(60)
updatehealth()
diff --git a/code/modules/mob/living/silicon/pai/pai_defense.dm b/code/modules/mob/living/silicon/pai/pai_defense.dm
index 5cdbebfd995..416ee756b66 100644
--- a/code/modules/mob/living/silicon/pai/pai_defense.dm
+++ b/code/modules/mob/living/silicon/pai/pai_defense.dm
@@ -1,5 +1,5 @@
-/mob/living/silicon/pai/blob_act(obj/effect/blob/B)
+/mob/living/silicon/pai/blob_act(obj/structure/blob/B)
return 0
/mob/living/silicon/pai/emp_act(severity)
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 6f56ca375b9..5b3b3ee6e2e 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -683,90 +683,6 @@
update_fire()
-/mob/living/silicon/robot/proc/installed_modules()
- if(!module)
- pick_module()
- return
- var/dat = {"Close
-
-
- Activated Modules
-
-
| Module 1: | [module_state_1 ? "[module_state_1]" : "No Module"] |
| Module 2: | [module_state_2 ? "[module_state_2]" : "No Module"] |
| Module 3: | [module_state_3 ? "[module_state_3]" : "No Module"] |
| Resource depleted | |
| [obj] | Activated |
| [obj] | Activate |
| [module.emag] | Activated |
| [module.emag] | Activate |