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 += "

Prisoner Implant Management

" dat += "
Chemical Implants
" var/turf/Tr = null - for(var/obj/item/weapon/implant/chem/C in tracked_implants) + for(var/obj/item/weapon/implant/chem/C in tracked_chem_implants) Tr = get_turf(C) if((Tr) && (Tr.z != src.z)) continue//Out of range @@ -114,17 +114,17 @@ num = min(num,1000) //Cap the quota to the equivilent of 10 minutes. inserted_id.goal = num else if(href_list["inject1"]) - var/obj/item/weapon/implant/I = locate(href_list["inject1"]) - if(I) + var/obj/item/weapon/implant/I = locate(href_list["inject1"]) in tracked_chem_implants + if(I && istype(I)) I.activate(1) else if(href_list["inject5"]) - var/obj/item/weapon/implant/I = locate(href_list["inject5"]) - if(I) + var/obj/item/weapon/implant/I = locate(href_list["inject5"]) in tracked_chem_implants + if(I && istype(I)) I.activate(5) else if(href_list["inject10"]) - var/obj/item/weapon/implant/I = locate(href_list["inject10"]) - if(I) + var/obj/item/weapon/implant/I = locate(href_list["inject10"]) in tracked_chem_implants + if(I && istype(I)) I.activate(10) else if(href_list["lock"]) @@ -136,8 +136,8 @@ else if(href_list["warn"]) var/warning = copytext(sanitize(input(usr,"Message:","Enter your message here!","")),1,MAX_MESSAGE_LEN) if(!warning) return - var/obj/item/weapon/implant/I = locate(href_list["warn"]) - if((I)&&(I.imp_in)) + var/obj/item/weapon/implant/I = locate(href_list["warn"]) in tracked_chem_implants + if(I && istype(I) && I.imp_in) var/mob/living/carbon/R = I.imp_in R << "You hear a voice in your head saying: '[warning]'" log_say("[usr]/[usr.ckey] sent an implant message to [R]/[R.ckey]: '[warning]'") diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 27b1aa68c14..def8036d422 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -165,7 +165,7 @@ if(component_check) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) var/obj/machinery/new_machine = new src.circuit.build_path(src.loc, 1) - new_machine.construction() + new_machine.on_construction() for(var/obj/O in new_machine.component_parts) qdel(O) new_machine.component_parts = list() diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 3f5326175fe..e04bcd68c55 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -90,7 +90,7 @@ if(2) take_damage(25, BRUTE, 0) -/obj/structure/barricade/blob_act(obj/effect/blob/B) +/obj/structure/barricade/blob_act(obj/structure/blob/B) take_damage(25, BRUTE, 0) /obj/structure/barricade/CanPass(atom/movable/mover, turf/target, height=0)//So bullets will fly over and stuff. diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 45e1dd514cd..a7b193653d7 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -187,7 +187,7 @@ obj/machinery/door/proc/try_to_crowbar(obj/item/I, mob/user) playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) -/obj/machinery/door/blob_act(obj/effect/blob/B) +/obj/machinery/door/blob_act(obj/structure/blob/B) if(prob(60)) qdel(src) diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm index 14c8415adf8..45b975a89e7 100644 --- a/code/game/machinery/limbgrower.dm +++ b/code/game/machinery/limbgrower.dm @@ -68,7 +68,7 @@ popup.set_content(dat) popup.open() -/obj/machinery/limbgrower/deconstruction() +/obj/machinery/limbgrower/on_deconstruction() for(var/obj/item/weapon/reagent_containers/glass/G in component_parts) reagents.trans_to(G, G.reagents.maximum_volume) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 2b7232cfc6d..c44cae77d61 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -189,7 +189,7 @@ Class Procs: updateUsrDialog() update_icon() -/obj/machinery/blob_act(obj/effect/blob/B) +/obj/machinery/blob_act(obj/structure/blob/B) if(density && prob(75)) qdel(src) @@ -343,15 +343,18 @@ Class Procs: /obj/machinery/proc/default_deconstruction_crowbar(obj/item/weapon/crowbar/C, ignore_panel = 0) . = istype(C) && (panel_open || ignore_panel) && !(flags & NODECONSTRUCT) if(.) - deconstruction() playsound(loc, 'sound/items/Crowbar.ogg', 50, 1) - var/obj/structure/frame/machine/M = new /obj/structure/frame/machine(loc) - transfer_fingerprints_to(M) - M.state = 2 - M.icon_state = "box_1" - for(var/obj/item/I in component_parts) - I.loc = loc - qdel(src) + deconstruct() + +/obj/machinery/proc/deconstruct() + on_deconstruction() + var/obj/structure/frame/machine/M = new /obj/structure/frame/machine(loc) + transfer_fingerprints_to(M) + M.state = 2 + M.icon_state = "box_1" + for(var/obj/item/I in component_parts) + I.forceMove(loc) + qdel(src) /obj/machinery/proc/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/weapon/screwdriver/S) if(istype(S) && !(flags & NODECONSTRUCT)) @@ -433,11 +436,11 @@ Class Procs: display_parts(user) //called on machinery construction (i.e from frame to machinery) but not on initialization -/obj/machinery/proc/construction() +/obj/machinery/proc/on_construction() return //called on deconstruction before the final deletion -/obj/machinery/proc/deconstruction() +/obj/machinery/proc/on_deconstruction() return /obj/machinery/allow_drop() diff --git a/code/game/machinery/overview.dm b/code/game/machinery/overview.dm index 06c78ba1905..f955a12fdf6 100644 --- a/code/game/machinery/overview.dm +++ b/code/game/machinery/overview.dm @@ -246,7 +246,7 @@ else colour = rgb(255,128,128) - //if(istype(AM, /obj/effect/blob)) + //if(istype(AM, /obj/structure/blob)) // colour = rgb(255,0,255) var/area/A = T.loc diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 4f3eaab34ea..b42f5c8c196 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -230,7 +230,7 @@ var/global/list/pipeID2State = list( var/obj/machinery/atmospherics/components/trinary/T = A if(istype(T)) T.flipped = flipped - A.construction(pipe_type, color) + A.on_construction(pipe_type, color) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) user.visible_message( \ diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index ff2433ddb61..89c4e64995f 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -53,7 +53,7 @@ if(2) take_damage(50, BRUTE, 0) -/obj/machinery/shield/blob_act(obj/effect/blob/B) +/obj/machinery/shield/blob_act(obj/structure/blob/B) qdel(src) diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index 4f2ab34d4cb..988678b30ad 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -37,14 +37,14 @@ /obj/item/weapon/stock_parts/capacitor = 1, /obj/item/stack/cable_coil = 3) -/obj/machinery/space_heater/construction() +/obj/machinery/space_heater/on_construction() qdel(cell) cell = null panel_open = TRUE update_icon() return ..() -/obj/machinery/space_heater/deconstruction() +/obj/machinery/space_heater/on_deconstruction() if(cell) component_parts += cell cell = null diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 27278c10bb7..6a58f4a5acc 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -144,7 +144,7 @@ if(prob(25)) malfunction() -/obj/machinery/vending/blob_act(obj/effect/blob/B) +/obj/machinery/vending/blob_act(obj/structure/blob/B) malfunction() ..() @@ -319,7 +319,7 @@ return ..() -/obj/machinery/vending/deconstruction() +/obj/machinery/vending/on_deconstruction() var/product_list = list(product_records, hidden_records, coin_records) for(var/i=1, i<=3, i++) for(var/datum/data/vending_product/machine_content in product_list[i]) diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index f923502ef4b..177e09092b6 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -415,7 +415,7 @@ updateUsrDialog() return -/obj/machinery/mecha_part_fabricator/deconstruction() +/obj/machinery/mecha_part_fabricator/on_deconstruction() materials.retrieve_all() ..() diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm index d661fabaa7f..5c2c5ede2ff 100644 --- a/code/game/mecha/mecha_defense.dm +++ b/code/game/mecha/mecha_defense.dm @@ -158,7 +158,7 @@ check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT),1) return -/obj/mecha/blob_act(obj/effect/blob/B) +/obj/mecha/blob_act(obj/structure/blob/B) take_directional_damage(30, "brute", get_dir(src, B)) /obj/mecha/emp_act(severity) diff --git a/code/game/objects/effects/decals/Cleanable/aliens.dm b/code/game/objects/effects/decals/Cleanable/aliens.dm index b7824b43a97..3ab96f6df59 100644 --- a/code/game/objects/effects/decals/Cleanable/aliens.dm +++ b/code/game/objects/effects/decals/Cleanable/aliens.dm @@ -17,6 +17,18 @@ viruses = null return ..() +/obj/effect/decal/cleanable/xenoblood/xsplatter + random_icon_states = list("xgibbl1", "xgibbl2", "xgibbl3", "xgibbl4", "xgibbl5") + +/obj/effect/decal/cleanable/xenoblood/xgibs + name = "xeno gibs" + desc = "Gnarly..." + icon = 'icons/effects/blood.dmi' + icon_state = "xgib1" + layer = LOW_OBJ_LAYER + random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6") + mergeable_decal = 0 + /obj/effect/decal/cleanable/xenoblood/xgibs/proc/streak(list/directions) set waitfor = 0 var/direction = pick(directions) @@ -31,20 +43,6 @@ if (!step_to(src, get_step(src, direction), 0)) break -/obj/effect/decal/cleanable/xenoblood/xgibs/replace_decal(obj/effect/decal/cleanable/C) - return //gibs can stack, so gibspawner can work properly - -/obj/effect/decal/cleanable/xenoblood/xsplatter - random_icon_states = list("xgibbl1", "xgibbl2", "xgibbl3", "xgibbl4", "xgibbl5") - -/obj/effect/decal/cleanable/xenoblood/xgibs - name = "xeno gibs" - desc = "Gnarly..." - icon = 'icons/effects/blood.dmi' - icon_state = "xgib1" - layer = LOW_OBJ_LAYER - random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6") - /obj/effect/decal/cleanable/xenoblood/xgibs/ex_act() return diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index 688ddf506e1..fec03d416dd 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -48,17 +48,29 @@ icon_state = "gibbl5" layer = LOW_OBJ_LAYER random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") + mergeable_decal = 0 /obj/effect/decal/cleanable/blood/gibs/New() ..() reagents.add_reagent("liquidgibs", 5) -/obj/effect/decal/cleanable/blood/gibs/replace_decal(obj/effect/decal/cleanable/C) - return - /obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target) return +/obj/effect/decal/cleanable/blood/gibs/proc/streak(list/directions) + set waitfor = 0 + var/direction = pick(directions) + for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) + sleep(2) + if (i > 0) + var/obj/effect/decal/cleanable/blood/b = new /obj/effect/decal/cleanable/blood/splatter(src.loc) + for(var/datum/disease/D in src.viruses) + var/datum/disease/ND = D.Copy(1) + b.viruses += ND + ND.holder = b + if (!step_to(src, get_step(src, direction), 0)) + break + /obj/effect/decal/cleanable/blood/gibs/up random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") @@ -79,23 +91,6 @@ random_icon_states = list("gibmid1", "gibmid2", "gibmid3") -/obj/effect/decal/cleanable/blood/gibs/proc/streak(list/directions) - set waitfor = 0 - var/direction = pick(directions) - for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) - sleep(2) - if (i > 0) - var/obj/effect/decal/cleanable/blood/b = new /obj/effect/decal/cleanable/blood/splatter(src.loc) - for(var/datum/disease/D in src.viruses) - var/datum/disease/ND = D.Copy(1) - b.viruses += ND - ND.holder = b - if (!step_to(src, get_step(src, direction), 0)) - break - -/obj/effect/decal/cleanable/blood/gibs/replace_decal(obj/effect/decal/cleanable/C) - return //gibs can stack, so gibspawner can work properly - /obj/effect/decal/cleanable/blood/drip name = "drips of blood" desc = "It's red." diff --git a/code/game/objects/effects/decals/Cleanable/misc.dm b/code/game/objects/effects/decals/Cleanable/misc.dm index 5e460de0b80..e07a94d73e1 100644 --- a/code/game/objects/effects/decals/Cleanable/misc.dm +++ b/code/game/objects/effects/decals/Cleanable/misc.dm @@ -9,6 +9,7 @@ desc = "Ashes to ashes, dust to dust, and into space." icon = 'icons/obj/objects.dmi' icon_state = "ash" + mergeable_decal = 0 /obj/effect/decal/cleanable/ash/New() ..() @@ -16,6 +17,15 @@ pixel_x = rand(-5, 5) pixel_y = rand(-5, 5) +/obj/effect/decal/cleanable/ash/large + name = "large pile of ashes" + icon_state = "big_ash" + +/obj/effect/decal/cleanable/ash/large/New() + ..() + reagents.add_reagent("ash", 30) //double the amount of ash. + + /obj/effect/decal/cleanable/dirt name = "dirt" desc = "Someone should clean that up." @@ -62,6 +72,11 @@ gender = NEUTER icon = 'icons/obj/chemical.dmi' icon_state = "molten" + mergeable_decal = 0 + +/obj/effect/decal/cleanable/molten_object/large + name = "big gooey grey mass" + icon_state = "big_molten" //Vomit (sorry) /obj/effect/decal/cleanable/vomit @@ -133,6 +148,7 @@ desc = "The shredded remains of what appears to be clothing." icon_state = "shreds" gender = PLURAL + mergeable_decal = 0 /obj/effect/decal/cleanable/shreds/New() pixel_x = rand(-5, 5) diff --git a/code/game/objects/effects/decals/Cleanable/robots.dm b/code/game/objects/effects/decals/Cleanable/robots.dm index 30cd95d3a9e..ebcf6f9f7ca 100644 --- a/code/game/objects/effects/decals/Cleanable/robots.dm +++ b/code/game/objects/effects/decals/Cleanable/robots.dm @@ -9,6 +9,7 @@ random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7") blood_state = BLOOD_STATE_OIL bloodiness = MAX_SHOE_BLOODINESS + mergeable_decal = 0 /obj/effect/decal/cleanable/robot_debris/proc/streak(list/directions) set waitfor = 0 @@ -25,9 +26,6 @@ if (!step_to(src, get_step(src, direction), 0)) break -/obj/effect/decal/cleanable/robot_debris/replace_decal(obj/effect/decal/cleanable/C) - return //robot debris can stack, so gibspawner can work properly - /obj/effect/decal/cleanable/robot_debris/ex_act() return diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index b4a78c247b2..d6f40add970 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -4,6 +4,7 @@ var/list/random_icon_states = list() var/blood_state = "" //I'm sorry but cleanable/blood code is ass, and so is blood_DNA var/bloodiness = 0 //0-100, amount of blood in this decal, used for making footprints and affecting the alpha of bloody footprints + var/mergeable_decal = 1 //when two of these are on a same tile or do we need to merge them into just one? /obj/effect/decal/cleanable/New() if (random_icon_states && length(src.random_icon_states) > 0) @@ -18,7 +19,8 @@ /obj/effect/decal/cleanable/proc/replace_decal(obj/effect/decal/cleanable/C) - qdel(C) + if(mergeable_decal) + qdel(C) /obj/effect/decal/cleanable/attackby(obj/item/weapon/W, mob/user, params) if(istype(W, /obj/item/weapon/reagent_containers/glass) || istype(W, /obj/item/weapon/reagent_containers/food/drinks)) diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index 8b149d1ee70..3911ce019a1 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -39,10 +39,11 @@ /obj/effect/particle_effect/foam/proc/kill_foam() STOP_PROCESSING(SSfastprocess, src) - if(metal) - var/obj/structure/foamedmetal/M = new(src.loc) - M.metal = metal - M.updateicon() + switch(metal) + if(1) + new /obj/structure/foamedmetal(src.loc) + if(2) + new /obj/structure/foamedmetal/iron(src.loc) flick("[icon_state]-disolve", src) QDEL_IN(src, 5) @@ -206,7 +207,7 @@ qdel(src) -/obj/structure/foamedmetal/blob_act(obj/effect/blob/B) +/obj/structure/foamedmetal/blob_act(obj/structure/blob/B) qdel(src) @@ -281,3 +282,8 @@ /obj/structure/foamedmetal/CanAtmosPass() return !density + + +/obj/structure/foamedmetal/iron + icon_state = "ironfoam" + metal = 2 \ No newline at end of file diff --git a/code/game/objects/effects/effects.dm b/code/game/objects/effects/effects.dm new file mode 100644 index 00000000000..b0a2edd7a01 --- /dev/null +++ b/code/game/objects/effects/effects.dm @@ -0,0 +1,7 @@ + +//objects in /obj/effect should never be things that are attackable, use obj/structure instead. +//Effects are mostly temporary visual effects like sparks, smoke, as well as decals, etc... + +/obj/effect + icon = 'icons/effects/effects.dmi' + diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm index 8f94e4f1789..f33bb7cd3a3 100644 --- a/code/game/objects/effects/glowshroom.dm +++ b/code/game/objects/effects/glowshroom.dm @@ -4,7 +4,7 @@ var/list/blacklisted_glowshroom_turfs = typecacheof(list( /turf/open/floor/plating/lava, /turf/open/floor/plating/beach/water)) -/obj/effect/glowshroom +/obj/structure/glowshroom name = "glowshroom" desc = "Mycena Bregprox, a species of mushroom that glows in the dark." anchored = 1 @@ -21,18 +21,18 @@ var/list/blacklisted_glowshroom_turfs = typecacheof(list( var/generation = 1 var/spreadIntoAdjacentChance = 60 -obj/effect/glowshroom/glowcap +obj/structure/glowshroom/glowcap name = "glowcap" icon_state = "glowcap" -/obj/effect/glowshroom/single +/obj/structure/glowshroom/single yield = 0 -/obj/effect/glowshroom/examine(mob/user) +/obj/structure/glowshroom/examine(mob/user) . = ..() user << "This is a [generation]\th generation [name]!" -/obj/effect/glowshroom/New() +/obj/structure/glowshroom/New() ..() SetLuminosity(round(potency/10)) setDir(CalcDir()) @@ -53,7 +53,7 @@ obj/effect/glowshroom/glowcap addtimer(src, "Spread", delay) -/obj/effect/glowshroom/proc/Spread() +/obj/structure/glowshroom/proc/Spread() for(var/i = 1 to yield) if(prob(1/(generation * generation) * 100))//This formula gives you diminishing returns based on generation. 100% with 1st gen, decreasing to 25%, 11%, 6, 4, 2... var/list/possibleLocs = list() @@ -65,7 +65,7 @@ obj/effect/glowshroom/glowcap for(var/turf/open/floor/earth in view(3,src)) if(is_type_in_typecache(earth, blacklisted_glowshroom_turfs)) continue - if(spreadsIntoAdjacent || !locate(/obj/effect/glowshroom) in view(1,earth)) + if(spreadsIntoAdjacent || !locate(/obj/structure/glowshroom) in view(1,earth)) possibleLocs += earth CHECK_TICK @@ -76,7 +76,7 @@ obj/effect/glowshroom/glowcap var/shroomCount = 0 //hacky var/placeCount = 1 - for(var/obj/effect/glowshroom/shroom in newLoc) + for(var/obj/structure/glowshroom/shroom in newLoc) shroomCount++ for(var/wallDir in cardinal) var/turf/isWall = get_step(newLoc,wallDir) @@ -85,7 +85,7 @@ obj/effect/glowshroom/glowcap if(shroomCount >= placeCount) continue - var/obj/effect/glowshroom/child = new type(newLoc)//The baby mushrooms have different stats :3 + var/obj/structure/glowshroom/child = new type(newLoc)//The baby mushrooms have different stats :3 child.potency = max(potency + rand(-3,6), 0) child.yield = max(yield + rand(-1,2), 0) child.delay = max(delay + rand(-30,60), 0) @@ -94,7 +94,7 @@ obj/effect/glowshroom/glowcap CHECK_TICK -/obj/effect/glowshroom/proc/CalcDir(turf/location = loc) +/obj/structure/glowshroom/proc/CalcDir(turf/location = loc) var/direction = 16 for(var/wallDir in cardinal) @@ -102,7 +102,7 @@ obj/effect/glowshroom/glowcap if(newTurf.density) direction |= wallDir - for(var/obj/effect/glowshroom/shroom in location) + for(var/obj/structure/glowshroom/shroom in location) if(shroom == src) continue if(shroom.floor) //special @@ -126,13 +126,13 @@ obj/effect/glowshroom/glowcap floor = 1 return 1 -/obj/effect/glowshroom/attacked_by(obj/item/I, mob/user) +/obj/structure/glowshroom/attacked_by(obj/item/I, mob/user) ..() if(I.damtype != STAMINA) endurance -= I.force CheckEndurance() -/obj/effect/glowshroom/ex_act(severity, target) +/obj/structure/glowshroom/ex_act(severity, target) switch(severity) if(1) qdel(src) @@ -143,16 +143,16 @@ obj/effect/glowshroom/glowcap if(prob(5)) qdel(src) -/obj/effect/glowshroom/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/structure/glowshroom/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 300) endurance -= 5 CheckEndurance() -/obj/effect/glowshroom/proc/CheckEndurance() +/obj/structure/glowshroom/proc/CheckEndurance() if(endurance <= 0) qdel(src) -/obj/effect/glowshroom/acid_act(acidpwr, toxpwr, acid_volume) +/obj/structure/glowshroom/acid_act(acidpwr, toxpwr, acid_volume) visible_message("[src] melts away!") var/obj/effect/decal/cleanable/molten_item/I = new (get_turf(src)) I.desc = "Looks like this was \an [src] some time ago." diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index d4c0cfb449a..2451d3a3942 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -1,8 +1,4 @@ -/obj/effect - icon = 'icons/effects/effects.dmi' - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE - /obj/effect/portal name = "portal" desc = "Looks unstable. Best to test it with the clown." diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index 15ca41836fc..48b7a88f0b7 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -1,5 +1,5 @@ //generic procs copied from obj/effect/alien -/obj/effect/spider +/obj/structure/spider name = "web" desc = "it's stringy and sticky" anchored = 1 @@ -7,7 +7,7 @@ var/health = 15 //similar to weeds, but only barfed out by nurses manually -/obj/effect/spider/ex_act(severity, target) +/obj/structure/spider/ex_act(severity, target) switch(severity) if(1) qdel(src) @@ -18,16 +18,16 @@ if (prob(5)) qdel(src) -/obj/effect/spider/attacked_by(obj/item/I, mob/user) +/obj/structure/spider/attacked_by(obj/item/I, mob/user) ..() var/damage = I.force take_damage(damage, I.damtype, 1) -/obj/effect/spider/bullet_act(obj/item/projectile/P) +/obj/structure/spider/bullet_act(obj/item/projectile/P) . = ..() take_damage(P.damage, P.damage_type, 0) -/obj/effect/spider/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1) +/obj/structure/spider/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1) switch(damage_type) if(BURN) damage *= 2 @@ -41,18 +41,18 @@ if(health <= 0) qdel(src) -/obj/effect/spider/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/structure/spider/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 300) take_damage(5, BURN, 0) -/obj/effect/spider/stickyweb +/obj/structure/spider/stickyweb icon_state = "stickyweb1" -/obj/effect/spider/stickyweb/New() +/obj/structure/spider/stickyweb/New() if(prob(50)) icon_state = "stickyweb2" -/obj/effect/spider/stickyweb/CanPass(atom/movable/mover, turf/target, height=0) +/obj/structure/spider/stickyweb/CanPass(atom/movable/mover, turf/target, height=0) if(height==0) return 1 if(istype(mover, /mob/living/simple_animal/hostile/poison/giant_spider)) return 1 @@ -64,7 +64,7 @@ return prob(30) return 1 -/obj/effect/spider/eggcluster +/obj/structure/spider/eggcluster name = "egg cluster" desc = "They seem to pulse slightly with an inner life" icon_state = "eggs" @@ -74,17 +74,17 @@ var/poison_per_bite = 5 var/list/faction = list("spiders") -/obj/effect/spider/eggcluster/New() +/obj/structure/spider/eggcluster/New() pixel_x = rand(3,-3) pixel_y = rand(3,-3) START_PROCESSING(SSobj, src) -/obj/effect/spider/eggcluster/process() +/obj/structure/spider/eggcluster/process() amount_grown += rand(0,2) if(amount_grown >= 100) var/num = rand(3,12) for(var/i=0, i\The [src] splits open.") for(var/atom/movable/A in contents) A.loc = src.loc diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index 2802cce4314..e7c04dcd6fa 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -99,7 +99,7 @@ if(W.reinf && W.fulltile) cached_exp_block[T] += W.explosion_block - for(var/obj/effect/blob/B in T) + for(var/obj/structure/blob/B in T) cached_exp_block[T] += B.explosion_block CHECK_TICK @@ -226,7 +226,7 @@ if(W.explosion_block && W.fulltile) dist += W.explosion_block - for(var/obj/effect/blob/B in T) + for(var/obj/structure/blob/B in T) dist += B.explosion_block if(dist < dev) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 32498877e84..61323895705 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -116,7 +116,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s qdel(X) return ..() -/obj/item/blob_act(obj/effect/blob/B) +/obj/item/blob_act(obj/structure/blob/B) if(B && B.loc == loc) qdel(src) diff --git a/code/game/objects/items/dehy_carp.dm b/code/game/objects/items/dehy_carp.dm index 40da8292a12..70856bc37d5 100644 --- a/code/game/objects/items/dehy_carp.dm +++ b/code/game/objects/items/dehy_carp.dm @@ -36,6 +36,8 @@ flick("carp_swell", src) //Wait for animation to end sleep(6) + if(!src || qdeleted(src))//we got toasted while animating + return //Make space carp var/mob/living/M = new mobtype(get_turf(src)) //Make carp non-hostile to user, and their allies @@ -49,4 +51,4 @@ visible_message("You have a bad feeling about this.") //welcome to the hostile carp enjoy your die else visible_message("The newly grown [M.name] looks up at you with friendly eyes.") - qdel(src) \ No newline at end of file + qdel(src) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 91745ffed8e..017a6076c8b 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -883,6 +883,9 @@ var/global/list/obj/item/device/pda/PDAs = list() /obj/item/device/pda/Destroy() PDAs -= src + if(inserted_item) + qdel(inserted_item) + inserted_item = null return ..() //AI verb and proc for sending PDA messages. diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm index fc18c1a4c0d..81405579707 100644 --- a/code/game/objects/items/devices/camera_bug.dm +++ b/code/game/objects/items/devices/camera_bug.dm @@ -136,11 +136,16 @@ return .(cameras) return html +/obj/item/device/camera_bug/proc/get_seens() + if(current && current.can_use()) + var/list/seen = current.can_see() + return seen + /obj/item/device/camera_bug/proc/camera_report() // this should only be called if current exists var/dat = "" - if(current && current.can_use()) - var/list/seen = current.can_see() + var/list/seen = get_seens() + if(seen && seen.len >= 1) var/list/names = list() for(var/obj/singularity/S in seen) // god help you if you see more than one if(S.name in names) @@ -190,23 +195,29 @@ if("mode" in href_list) track_mode = text2num(href_list["mode"]) if("monitor" in href_list) - var/obj/machinery/camera/C = locate(href_list["monitor"]) - if(C) + //You can't locate on a list with keys + var/list/cameras = flatten_list(bugged_cameras) + var/obj/machinery/camera/C = locate(href_list["monitor"]) in cameras + if(C && istype(C)) track_mode = BUGMODE_MONITOR current = C usr.reset_perspective(null) interact() if("track" in href_list) - var/atom/A = locate(href_list["track"]) - if(A) - tracking = A - tracked_name = A.name - last_found = current.c_tag - last_seen = world.time - track_mode = BUGMODE_TRACK + var/list/seen = get_seens() + if(seen && seen.len >= 1) + var/atom/A = locate(href_list["track"]) in seen + if(A && istype(A)) + tracking = A + tracked_name = A.name + last_found = current.c_tag + last_seen = world.time + track_mode = BUGMODE_TRACK if("emp" in href_list) - var/obj/machinery/camera/C = locate(href_list["emp"]) - if(istype(C) && C.bug == src) + //You can't locate on a list with keys + var/list/cameras = flatten_list(bugged_cameras) + var/obj/machinery/camera/C = locate(href_list["emp"]) in cameras + if(C && istype(C) && C.bug == src) C.emp_act(1) C.bug = null bugged_cameras -= C.c_tag @@ -217,8 +228,10 @@ current = null return if("view" in href_list) - var/obj/machinery/camera/C = locate(href_list["view"]) - if(istype(C)) + //You can't locate on a list with keys + var/list/cameras = flatten_list(bugged_cameras) + var/obj/machinery/camera/C = locate(href_list["view"]) in cameras + if(C && istype(C)) if(!C.can_use()) usr << "Something's wrong with that camera! You can't get a feed." return diff --git a/code/game/objects/items/weapons/chrono_eraser.dm b/code/game/objects/items/weapons/chrono_eraser.dm index 3cd5be20708..21533c55cd0 100644 --- a/code/game/objects/items/weapons/chrono_eraser.dm +++ b/code/game/objects/items/weapons/chrono_eraser.dm @@ -254,7 +254,7 @@ /obj/effect/chrono_field/ex_act() return -/obj/effect/chrono_field/blob_act(obj/effect/blob/B) +/obj/effect/chrono_field/blob_act(obj/structure/blob/B) return diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index c2615f28d7a..96f223e59cb 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -641,7 +641,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM super = 0 user << "You decrease the voltage in the [src]" add_overlay(image(icon, "vapeopen_low")) - + if(screw && emagged) user << "The [name] can't be modified!" @@ -725,13 +725,13 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(super && vapetime > 3)//Time to start puffing those fat vapes, yo. var/datum/effect_system/smoke_spread/chem/s = new - s.set_up(reagents, 1, loc) + s.set_up(reagents, 1, loc, silent=TRUE) s.start() vapetime = 0 if(emagged && vapetime > 3) var/datum/effect_system/smoke_spread/chem/s = new - s.set_up(reagents, 4, loc) + s.set_up(reagents, 4, loc, silent=TRUE) s.start() vapetime = 0 if(prob(5))//small chance for the vape to break and deal damage if it's emagged diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm index 5fdc8e8c197..9ac67af1485 100644 --- a/code/game/objects/items/weapons/grenades/flashbang.dm +++ b/code/game/objects/items/weapons/grenades/flashbang.dm @@ -12,7 +12,7 @@ for(var/mob/living/M in get_hearers_in_view(7, flashbang_turf)) bang(get_turf(M), M) - for(var/obj/effect/blob/B in get_hear(8,flashbang_turf)) //Blob damage here + for(var/obj/structure/blob/B in get_hear(8,flashbang_turf)) //Blob damage here var/distance = get_dist(B, get_turf(src)) var/damage = round(100/(distance*distance)+1) B.take_damage(damage, BURN) diff --git a/code/game/objects/items/weapons/grenades/smokebomb.dm b/code/game/objects/items/weapons/grenades/smokebomb.dm index 7fcc6361441..16a355a1258 100644 --- a/code/game/objects/items/weapons/grenades/smokebomb.dm +++ b/code/game/objects/items/weapons/grenades/smokebomb.dm @@ -24,7 +24,7 @@ smoke.start() - for(var/obj/effect/blob/B in view(8,src)) + for(var/obj/structure/blob/B in view(8,src)) var/damage = round(30/(get_dist(B,src)+1)) B.health -= damage B.update_icon() diff --git a/code/game/objects/items/weapons/holosign_creator.dm b/code/game/objects/items/weapons/holosign_creator.dm index bcecfc97bdc..4fa45cb7d8c 100644 --- a/code/game/objects/items/weapons/holosign_creator.dm +++ b/code/game/objects/items/weapons/holosign_creator.dm @@ -137,7 +137,7 @@ ..() take_damage(I.force * 0.5, I.damtype) -/obj/effect/overlay/holograph/blob_act(obj/effect/blob/B) +/obj/effect/overlay/holograph/blob_act(obj/structure/blob/B) qdel(src) /obj/effect/overlay/holograph/attack_animal(mob/living/simple_animal/M) diff --git a/code/game/objects/items/weapons/implants/implant_chem.dm b/code/game/objects/items/weapons/implants/implant_chem.dm index 731fba971fe..c9270f6da58 100644 --- a/code/game/objects/items/weapons/implants/implant_chem.dm +++ b/code/game/objects/items/weapons/implants/implant_chem.dm @@ -24,11 +24,11 @@ /obj/item/weapon/implant/chem/New() ..() create_reagents(50) - tracked_implants += src + tracked_chem_implants += src /obj/item/weapon/implant/chem/Destroy() ..() - tracked_implants -= src + tracked_chem_implants -= src diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm index 14af6140cad..cfb927e1d15 100644 --- a/code/game/objects/items/weapons/storage/secure.dm +++ b/code/game/objects/items/weapons/storage/secure.dm @@ -21,7 +21,6 @@ var/l_set = 0 var/l_setshort = 0 var/l_hacking = 0 - var/emagged = 0 var/open = 0 w_class = 3 max_w_class = 2 @@ -42,7 +41,7 @@ user.show_message("Now attempting to reset internal memory, please hold.", 1) src.l_hacking = 1 if (do_after(usr, 100/W.toolspeed, target = src)) - if (prob(40)) + if (prob(33)) src.l_setshort = 1 src.l_set = 0 user.show_message("Internal memory reset. Please give it a few seconds to reinitialize.", 1) @@ -62,17 +61,13 @@ // -> storage/attackby() what with handle insertion, etc return ..() -/obj/item/weapon/storage/secure/emag_act(mob/user) - if(locked) - if(!emagged) - emagged = 1 - src.add_overlay(image('icons/obj/storage.dmi', icon_sparking)) - sleep(6) - src.overlays = null - add_overlay(image('icons/obj/storage.dmi', icon_locking)) - locked = 0 - user << "You short out the lock on [src]." - +/obj/item/weapon/storage/secure/attackby(obj/item/weapon/W, mob/user, params) + if(istype(W, /obj/item/weapon/card/emag)) + if(locked) + user << "You take a second to realize there's no ID slot for you to emag this with." + else + user << "You take a second to realize the case is already open, making you look really silly. Hopefully no one saw." + /obj/item/weapon/storage/secure/MouseDrop(over_object, src_location, over_location) if (locked) src.add_fingerprint(usr) @@ -84,10 +79,8 @@ user.set_machine(src) var/dat = text("[]
\n\nLock Status: []",src, (src.locked ? "LOCKED" : "UNLOCKED")) var/message = "Code" - if ((src.l_set == 0) && (!src.emagged) && (!src.l_setshort)) + if ((src.l_set == 0) && (!src.l_setshort)) dat += text("

\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"]

- Installed Modules

- - "} - - for (var/obj in module.modules) - if (!obj) - dat += text("") - else if(activated(obj)) - dat += text("") - else - dat += text("") - if (emagged) - if(activated(module.emag)) - dat += text("") - else - dat += text("") - dat += "
Resource depleted
[obj]Activated
[obj]Activate
[module.emag]Activated
[module.emag]Activate
" -/* - if(activated(obj)) - dat += text("[obj]: \[Activated | Deactivate\]
") - else - dat += text("[obj]: \[Activate | Deactivated\]
") -*/ - var/datum/browser/popup = new(src, "robotmod", "Modules") - popup.set_content(dat) - popup.open() - -/mob/living/silicon/robot/Topic(href, href_list) - ..() - if(usr && (src != usr)) - return - - if (href_list["mach_close"]) - var/t1 = text("window=[href_list["mach_close"]]") - unset_machine() - src << browse(null, t1) - return - - if (href_list["showalerts"]) - robot_alerts() - return - - if (href_list["mod"]) - var/obj/item/O = locate(href_list["mod"]) - if (O) - O.attack_self(src) - - if (href_list["act"]) - var/obj/item/O = locate(href_list["act"]) - activate_module(O) - installed_modules() - - if (href_list["deact"]) - var/obj/item/O = locate(href_list["deact"]) - if(activated(O)) - if(module_state_1 == O) - module_state_1 = null - contents -= O - else if(module_state_2 == O) - module_state_2 = null - contents -= O - else if(module_state_3 == O) - module_state_3 = null - contents -= O - else - src << "Module isn't activated." - else - src << "Module isn't activated" - installed_modules() - #define BORG_CAMERA_BUFFER 30 /mob/living/silicon/robot/Move(a, b, flag) var/oldLoc = src.loc @@ -1161,4 +1077,4 @@ status_flags |= CANPUSH - return 1 \ No newline at end of file + return 1 diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index 7fa7a720d42..a56ef87aedc 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -150,7 +150,7 @@ update_icons() -/mob/living/silicon/robot/blob_act(obj/effect/blob/B) +/mob/living/silicon/robot/blob_act(obj/structure/blob/B) if (stat != 2) adjustBruteLoss(60) updatehealth() diff --git a/code/modules/mob/living/simple_animal/animal_defense.dm b/code/modules/mob/living/simple_animal/animal_defense.dm index 53dd3b50454..0b36b950653 100644 --- a/code/modules/mob/living/simple_animal/animal_defense.dm +++ b/code/modules/mob/living/simple_animal/animal_defense.dm @@ -112,6 +112,6 @@ bloss = bloss / 1.5 adjustBruteLoss(bloss) -/mob/living/simple_animal/blob_act(obj/effect/blob/B) +/mob/living/simple_animal/blob_act(obj/structure/blob/B) adjustBruteLoss(20) return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 0e6495170dc..e36c96c79f5 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -50,14 +50,14 @@ src.visible_message("[src] calms down.") if(stat == CONSCIOUS) udder.generateMilk() - if(locate(/obj/effect/spacevine) in loc) - var/obj/effect/spacevine/SV = locate(/obj/effect/spacevine) in loc + if(locate(/obj/structure/spacevine) in loc) + var/obj/structure/spacevine/SV = locate(/obj/structure/spacevine) in loc SV.eat(src) if(!pulledby) for(var/direction in shuffle(list(1,2,4,8,5,6,9,10))) var/step = get_step(src, direction) if(step) - if(locate(/obj/effect/spacevine) in step) + if(locate(/obj/structure/spacevine) in step) Move(step, get_dir(src, step)) /mob/living/simple_animal/hostile/retaliate/goat/Retaliate() @@ -67,8 +67,8 @@ /mob/living/simple_animal/hostile/retaliate/goat/Move() ..() if(!stat) - if(locate(/obj/effect/spacevine) in loc) - var/obj/effect/spacevine/SV = locate(/obj/effect/spacevine) in loc + if(locate(/obj/structure/spacevine) in loc) + var/obj/structure/spacevine/SV = locate(/obj/structure/spacevine) in loc SV.eat(src) /mob/living/simple_animal/hostile/retaliate/goat/attackby(obj/item/O, mob/user, params) diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index 73395aba50f..2e79f072bf6 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -138,7 +138,7 @@ return //second, spin a sticky spiderweb on this tile - var/obj/effect/spider/stickyweb/W = locate() in get_turf(src) + var/obj/structure/spider/stickyweb/W = locate() in get_turf(src) if(!W) Web() else @@ -183,7 +183,7 @@ stop_automated_movement = 1 if(do_after(src, 40, target = T)) if(busy == SPINNING_WEB && src.loc == T) - new /obj/effect/spider/stickyweb(T) + new /obj/structure/spider/stickyweb(T) busy = 0 stop_automated_movement = 0 @@ -215,7 +215,7 @@ if(do_after(src, 50, target = src)) if(busy == SPINNING_COCOON) if(cocoon_target && istype(cocoon_target.loc, /turf) && get_dist(src,cocoon_target) <= 1) - var/obj/effect/spider/cocoon/C = new(cocoon_target.loc) + var/obj/structure/spider/cocoon/C = new(cocoon_target.loc) var/large_cocoon = 0 C.pixel_x = cocoon_target.pixel_x C.pixel_y = cocoon_target.pixel_y @@ -251,7 +251,7 @@ set category = "Spider" set desc = "Lay a clutch of eggs, but you must wrap a creature for feeding first." - var/obj/effect/spider/eggcluster/E = locate() in get_turf(src) + var/obj/structure/spider/eggcluster/E = locate() in get_turf(src) if(stat == DEAD) return if(E) @@ -266,7 +266,7 @@ if(busy == LAYING_EGGS) E = locate() in get_turf(src) if(!E) - var/obj/effect/spider/eggcluster/C = new /obj/effect/spider/eggcluster(src.loc) + var/obj/structure/spider/eggcluster/C = new /obj/structure/spider/eggcluster(src.loc) if(ckey) C.player_spiders = 1 C.poison_type = poison_type diff --git a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm index 56457b02ba5..67f9e8e8255 100644 --- a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm +++ b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm @@ -3,7 +3,7 @@ It will teleport people to a holding facility after 30 seconds. (Check the proce It is possible to destroy the net by the occupant or someone else. */ -/obj/effect/energy_net +/obj/structure/energy_net name = "energy net" desc = "It's a net made of green energy." icon = 'icons/effects/effects.dmi' @@ -20,7 +20,7 @@ It is possible to destroy the net by the occupant or someone else. -/obj/effect/energy_net/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1) +/obj/structure/energy_net/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1) switch(damage_type) if(BRUTE) if(sound_effect) @@ -34,7 +34,7 @@ It is possible to destroy the net by the occupant or someone else. if(health <=0) qdel(src) -/obj/effect/energy_net/Destroy() +/obj/structure/energy_net/Destroy() if(affecting) var/mob/living/carbon/M = affecting M.anchored = 0 @@ -44,7 +44,7 @@ It is possible to destroy the net by the occupant or someone else. master << "ERROR: unable to initiate transport protocol. Procedure terminated." return ..() -/obj/effect/energy_net/process(mob/living/carbon/M) +/obj/structure/energy_net/process(mob/living/carbon/M) var/check = 30//30 seconds before teleportation. Could be extended I guess. var/mob_name = affecting.name//Since they will report as null if terminated before teleport. //The person can still try and attack the net when inside. @@ -101,13 +101,13 @@ It is possible to destroy the net by the occupant or someone else. -/obj/effect/energy_net/bullet_act(obj/item/projectile/Proj) +/obj/structure/energy_net/bullet_act(obj/item/projectile/Proj) . = ..() take_damage(Proj.damage, Proj.damage_type) -/obj/effect/energy_net/ex_act(severity, target) +/obj/structure/energy_net/ex_act(severity, target) switch(severity) if(1) qdel(src) @@ -116,10 +116,10 @@ It is possible to destroy the net by the occupant or someone else. if(3) take_damage(rand(10,25), BRUTE, 0) -/obj/effect/energy_net/blob_act(obj/effect/blob/B) +/obj/structure/energy_net/blob_act(obj/structure/blob/B) qdel(src) -/obj/effect/energy_net/hitby(atom/movable/AM) +/obj/structure/energy_net/hitby(atom/movable/AM) ..() var/tforce = 0 if(ismob(AM)) @@ -130,7 +130,7 @@ It is possible to destroy the net by the occupant or someone else. take_damage(tforce) -/obj/effect/energy_net/attack_hulk(mob/living/carbon/human/user) +/obj/structure/energy_net/attack_hulk(mob/living/carbon/human/user) ..(user, 1) user.visible_message("[user] rips the energy net apart!", \ "You easily destroy the energy net.") @@ -138,12 +138,12 @@ It is possible to destroy the net by the occupant or someone else. -/obj/effect/energy_net/attack_paw(mob/user) +/obj/structure/energy_net/attack_paw(mob/user) return attack_hand() -/obj/effect/energy_net/attack_alien(mob/living/user) +/obj/structure/energy_net/attack_alien(mob/living/user) user.do_attack_animation(src) user.changeNext_move(CLICK_CD_MELEE) playsound(src.loc, 'sound/weapons/slash.ogg', 80, 1) @@ -153,7 +153,7 @@ It is possible to destroy the net by the occupant or someone else. -/obj/effect/energy_net/attacked_by(obj/item/weapon/W, mob/user) +/obj/structure/energy_net/attacked_by(obj/item/weapon/W, mob/user) ..() take_damage(W.force, W.damtype) diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_net.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_net.dm index a8d6931a951..64666922379 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_net.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_net.dm @@ -9,7 +9,7 @@ if(!ninjacost(200,N_STEALTH_CANCEL) && iscarbon(C)) var/mob/living/carbon/human/H = affecting if(C.client)//Monkeys without a client can still step_to() and bypass the net. Also, netting inactive people is lame. - if(!locate(/obj/effect/energy_net) in C.loc)//Check if they are already being affected by an energy net. + if(!locate(/obj/structure/energy_net) in C.loc)//Check if they are already being affected by an energy net. for(var/turf/T in getline(H.loc, C.loc)) if(T.density)//Don't want them shooting nets through walls. It's kind of cheesy. H << "You may not use an energy net through solid obstacles!" @@ -17,7 +17,7 @@ spawn(0) H.Beam(C,"n_beam",time=15) H.say("Get over here!") - var/obj/effect/energy_net/E = new /obj/effect/energy_net(C.loc) + var/obj/structure/energy_net/E = new /obj/structure/energy_net(C.loc) H.visible_message("[H] caught [C] with an energy net!","You caught [C] with an energy net!") E.affecting = C E.master = H diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 91521b27bba..b5e0c64b81a 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -321,7 +321,7 @@ toner = 0 -/obj/machinery/photocopier/blob_act(obj/effect/blob/B) +/obj/machinery/photocopier/blob_act(obj/structure/blob/B) if(prob(50)) qdel(src) else diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 70e9f80ca89..a394940966d 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -1095,7 +1095,7 @@ if(prob(25)) set_broken() -/obj/machinery/power/apc/blob_act(obj/effect/blob/B) +/obj/machinery/power/apc/blob_act(obj/structure/blob/B) set_broken() /obj/machinery/power/apc/disconnect_terminal() diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 434a31157a4..4ce5dfb3f9a 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -93,7 +93,7 @@ By design, d1 is the smallest direction and d2 is the highest cable_list -= src //remove it from global cable list return ..() // then go ahead and delete the cable -/obj/structure/cable/blob_act(obj/effect/blob/B) +/obj/structure/cable/blob_act(obj/structure/blob/B) if(invisibility != INVISIBILITY_MAXIMUM) qdel(src) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index e4e12b62061..3b176d0a14a 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -146,7 +146,7 @@ corrupt() -/obj/item/weapon/stock_parts/cell/blob_act(obj/effect/blob/B) +/obj/item/weapon/stock_parts/cell/blob_act(obj/structure/blob/B) ex_act(1) /obj/item/weapon/stock_parts/cell/proc/get_electrocute_damage() diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 9409d20d415..395eebbb65b 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -32,7 +32,7 @@ var/const/GRAV_NEEDS_WRENCH = 3 if(severity == 1) // Very sturdy. set_broken() -/obj/machinery/gravity_generator/blob_act(obj/effect/blob/B) +/obj/machinery/gravity_generator/blob_act(obj/structure/blob/B) if(prob(20)) set_broken() diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 56adb1ad851..3647c9173e8 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -116,7 +116,7 @@ return return ..() -/obj/machinery/light_construct/blob_act(obj/effect/blob/B) +/obj/machinery/light_construct/blob_act(obj/structure/blob/B) if(B && B.loc == loc) qdel(src) @@ -529,7 +529,7 @@ if(prob(25)) broken() -/obj/machinery/light/blob_act(obj/effect/blob/B) +/obj/machinery/light/blob_act(obj/structure/blob/B) if(B && B.loc == loc) broken() qdel(src) diff --git a/code/modules/power/rtg.dm b/code/modules/power/rtg.dm index 862228ffb6e..058084e1cec 100644 --- a/code/modules/power/rtg.dm +++ b/code/modules/power/rtg.dm @@ -133,7 +133,7 @@ log_game("[key_name(Proj.firer)] triggered an Abductor Core explosion via projectile.") overload() -/obj/machinery/power/rtg/abductor/blob_act(obj/effect/blob/B) +/obj/machinery/power/rtg/abductor/blob_act(obj/structure/blob/B) overload() /obj/machinery/power/rtg/abductor/ex_act() diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index 152c256b2d5..6b3f4deb296 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -27,7 +27,7 @@ return 1 -/obj/machinery/field/containment/blob_act(obj/effect/blob/B) +/obj/machinery/field/containment/blob_act(obj/structure/blob/B) return 0 diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index 18a44a73ff7..366bab4bad9 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -147,7 +147,7 @@ field_generator power level display return 0 -/obj/machinery/field/generator/blob_act(obj/effect/blob/B) +/obj/machinery/field/generator/blob_act(obj/structure/blob/B) if(active) return 0 else diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index a376041d55b..b8140b80a10 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -149,7 +149,7 @@ master.toggle_power() investigate_log("was moved whilst active; it powered down.","singulo") -/obj/structure/particle_accelerator/blob_act(obj/effect/blob/B) +/obj/structure/particle_accelerator/blob_act(obj/structure/blob/B) if(prob(50)) qdel(src) diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index 3872b404183..e64d304c065 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -320,7 +320,7 @@ ..() -/obj/machinery/particle_accelerator/control_box/blob_act(obj/effect/blob/B) +/obj/machinery/particle_accelerator/control_box/blob_act(obj/structure/blob/B) if(prob(50)) qdel(src) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 67833e0c461..2dda4c96dbb 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -63,7 +63,7 @@ /obj/singularity/Process_Spacemove() //The singularity stops drifting for no man! return 0 -/obj/singularity/blob_act(obj/effect/blob/B) +/obj/singularity/blob_act(obj/structure/blob/B) return /obj/singularity/ex_act(severity, target) diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index 6e3eda3027f..e20e68a1683 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -177,7 +177,7 @@ return ..() -/obj/machinery/power/smes/deconstruction() +/obj/machinery/power/smes/on_deconstruction() for(var/obj/item/weapon/stock_parts/cell/cell in component_parts) cell.charge = (charge / capacity) * cell.maxcharge diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 67c4e448213..d38b2a9c426 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -537,7 +537,7 @@ if(3) take_damage(rand(10,20), BRUTE, 0) -/obj/machinery/power/solar_control/blob_act(obj/effect/blob/B) +/obj/machinery/power/solar_control/blob_act(obj/structure/blob/B) if (prob(75)) set_broken() src.density = 0 diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index a6f99c390a8..28b0a7ef434 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -242,7 +242,7 @@ qdel(src) return(gain) -/obj/machinery/power/supermatter_shard/blob_act(obj/effect/blob/B) +/obj/machinery/power/supermatter_shard/blob_act(obj/structure/blob/B) if(B && !istype(loc, /turf/open/space)) //does nothing in space playsound(get_turf(src), 'sound/effects/supermatter.ogg', 50, 1) damage += B.health * 0.5 //take damage equal to 50% of remaining blob health before it tried to eat us @@ -321,7 +321,7 @@ investigate_log("has consumed [key_name(user)].", "supermatter") user.dust() power += 200 - else if(isobj(AM) && (!istype(AM, /obj/effect) || istype(AM, /obj/effect/blob))) + else if(isobj(AM) && !istype(AM, /obj/effect)) investigate_log("has consumed [AM].", "supermatter") qdel(AM) diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index 46d5f269e33..4f6fc7641b8 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -166,7 +166,7 @@ var/list/blacklisted_tesla_types = typecacheof(list(/obj/machinery/atmospherics, var/mob/living/closest_mob var/obj/machinery/closest_machine var/obj/structure/closest_structure - var/obj/effect/blob/closest_blob + var/obj/structure/blob/closest_blob for(var/A in oview(source, zap_range+2)) if(istype(A, /obj/machinery/power/tesla_coil)) @@ -216,8 +216,8 @@ var/list/blacklisted_tesla_types = typecacheof(list(/obj/machinery/atmospherics, else if(closest_mob) continue - else if(istype(A, /obj/effect/blob)) - var/obj/effect/blob/B = A + else if(istype(A, /obj/structure/blob)) + var/obj/structure/blob/B = A var/dist = get_dist(source, A) if(dist <= zap_range && (dist < closest_dist || !closest_tesla_coil) && !B.being_shocked) closest_blob = B diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index a44f99f2626..7279ec41475 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -84,7 +84,7 @@ if(severity < 3) ..() -/obj/machinery/chem_dispenser/blob_act(obj/effect/blob/B) +/obj/machinery/chem_dispenser/blob_act(obj/structure/blob/B) if(prob(50)) qdel(src) @@ -284,7 +284,7 @@ return return ..() -/obj/machinery/chem_dispenser/constructable/deconstruction() +/obj/machinery/chem_dispenser/constructable/on_deconstruction() if(beaker) beaker.loc = loc beaker = null diff --git a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm index 33daa476e62..aa4955e7ef1 100644 --- a/code/modules/reagents/chemistry/machinery/chem_heater.dm +++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm @@ -68,7 +68,7 @@ return return ..() -/obj/machinery/chem_heater/deconstruction() +/obj/machinery/chem_heater/on_deconstruction() eject_beaker() /obj/machinery/chem_heater/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \ diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 54d2aa60b0b..07042c5e1ad 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -54,7 +54,7 @@ if(severity < 3) ..() -/obj/machinery/chem_master/blob_act(obj/effect/blob/B) +/obj/machinery/chem_master/blob_act(obj/structure/blob/B) if (prob(50)) qdel(src) diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index d63704dc71c..9fd265af203 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -292,7 +292,7 @@ else return ..() -/obj/machinery/computer/pandemic/deconstruction() +/obj/machinery/computer/pandemic/on_deconstruction() if(beaker) beaker.loc = get_turf(src) ..() \ No newline at end of file diff --git a/code/modules/reagents/chemistry/reagents/blob_reagents.dm b/code/modules/reagents/chemistry/reagents/blob_reagents.dm index 7db4cb3c752..3c0e289f6da 100644 --- a/code/modules/reagents/chemistry/reagents/blob_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/blob_reagents.dm @@ -25,22 +25,22 @@ return 0 //the dead, and blob mobs, don't cause reactions return round(reac_volume * min(1.5 - touch_protection, 1), 0.1) //full touch protection means 50% volume, any prot below 0.5 means 100% volume. -/datum/reagent/blob/proc/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) //when the blob takes damage, do this +/datum/reagent/blob/proc/damage_reaction(obj/structure/blob/B, original_health, damage, damage_type, cause) //when the blob takes damage, do this return damage -/datum/reagent/blob/proc/death_reaction(obj/effect/blob/B, cause) //when a blob dies, do this +/datum/reagent/blob/proc/death_reaction(obj/structure/blob/B, cause) //when a blob dies, do this return -/datum/reagent/blob/proc/expand_reaction(obj/effect/blob/B, obj/effect/blob/newB, turf/T) //when the blob expands, do this +/datum/reagent/blob/proc/expand_reaction(obj/structure/blob/B, obj/structure/blob/newB, turf/T) //when the blob expands, do this return -/datum/reagent/blob/proc/tesla_reaction(obj/effect/blob/B, power) //when the blob is hit by a tesla bolt, do this +/datum/reagent/blob/proc/tesla_reaction(obj/structure/blob/B, power) //when the blob is hit by a tesla bolt, do this return 1 //return 0 to ignore damage -/datum/reagent/blob/proc/extinguish_reaction(obj/effect/blob/B) //when the blob is hit with water, do this +/datum/reagent/blob/proc/extinguish_reaction(obj/structure/blob/B) //when the blob is hit with water, do this return -/datum/reagent/blob/proc/emp_reaction(obj/effect/blob/B, severity) //when the blob is hit with an emp, do this +/datum/reagent/blob/proc/emp_reaction(obj/structure/blob/B, severity) //when the blob is hit with an emp, do this return //does brute damage but can replicate when damaged and has a chance of expanding again @@ -59,19 +59,19 @@ reac_volume = ..() M.apply_damage(0.7*reac_volume, BRUTE) -/datum/reagent/blob/replicating_foam/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) +/datum/reagent/blob/replicating_foam/damage_reaction(obj/structure/blob/B, original_health, damage, damage_type, cause) var/effectivedamage = damage if(damage_type == BRUTE) effectivedamage = damage * 2 if(damage_type == BURN && effectivedamage > 0 && original_health - effectivedamage > 0 && prob(60)) - var/obj/effect/blob/newB = B.expand(null, null, 0) + var/obj/structure/blob/newB = B.expand(null, null, 0) if(newB) newB.health = original_health - effectivedamage newB.check_health(cause) newB.update_icon() return effectivedamage -/datum/reagent/blob/replicating_foam/expand_reaction(obj/effect/blob/B, obj/effect/blob/newB, turf/T) +/datum/reagent/blob/replicating_foam/expand_reaction(obj/structure/blob/B, obj/structure/blob/newB, turf/T) if(prob(30)) newB.expand(null, null, 0) //do it again! @@ -90,19 +90,19 @@ reac_volume = ..() M.apply_damage(0.7*reac_volume, BRUTE) -/datum/reagent/blob/shifting_fragments/expand_reaction(obj/effect/blob/B, obj/effect/blob/newB, turf/T) - if(istype(B, /obj/effect/blob/normal) || (istype(B, /obj/effect/blob/shield) && prob(25))) +/datum/reagent/blob/shifting_fragments/expand_reaction(obj/structure/blob/B, obj/structure/blob/newB, turf/T) + if(istype(B, /obj/structure/blob/normal) || (istype(B, /obj/structure/blob/shield) && prob(25))) newB.forceMove(get_turf(B)) B.forceMove(T) -/datum/reagent/blob/shifting_fragments/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) +/datum/reagent/blob/shifting_fragments/damage_reaction(obj/structure/blob/B, original_health, damage, damage_type, cause) if(cause && damage > 0 && original_health - damage > 0 && prob(60-damage)) var/list/blobstopick = list() - for(var/obj/effect/blob/OB in orange(1, B)) - if((istype(OB, /obj/effect/blob/normal) || (istype(OB, /obj/effect/blob/shield) && prob(25))) && OB.overmind && OB.overmind.blob_reagent_datum.id == B.overmind.blob_reagent_datum.id) + for(var/obj/structure/blob/OB in orange(1, B)) + if((istype(OB, /obj/structure/blob/normal) || (istype(OB, /obj/structure/blob/shield) && prob(25))) && OB.overmind && OB.overmind.blob_reagent_datum.id == B.overmind.blob_reagent_datum.id) blobstopick += OB //as long as the blob picked is valid; ie, a normal or shield blob that has the same chemical as we do, we can swap with it if(blobstopick.len) - var/obj/effect/blob/targeted = pick(blobstopick) //randomize the blob chosen, because otherwise it'd tend to the lower left + var/obj/structure/blob/targeted = pick(blobstopick) //randomize the blob chosen, because otherwise it'd tend to the lower left var/turf/T = get_turf(targeted) targeted.forceMove(get_turf(B)) B.forceMove(T) //swap the blobs @@ -131,13 +131,13 @@ if(iscarbon(M)) M.emote("scream") -/datum/reagent/blob/blazing_oil/extinguish_reaction(obj/effect/blob/B) +/datum/reagent/blob/blazing_oil/extinguish_reaction(obj/structure/blob/B) B.take_damage(rand(1, 3), BURN) -/datum/reagent/blob/blazing_oil/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) +/datum/reagent/blob/blazing_oil/damage_reaction(obj/structure/blob/B, original_health, damage, damage_type, cause) if(cause && damage_type == BURN) for(var/turf/open/T in range(1, B)) - var/obj/effect/blob/C = locate() in T + var/obj/structure/blob/C = locate() in T if(!(C && C.overmind && C.overmind.blob_reagent_datum.id == B.overmind.blob_reagent_datum.id) && prob(80)) PoolOrNew(/obj/effect/hotspot, T) return ..() @@ -200,7 +200,7 @@ O.add_points(points) O << "Gained [points] resources from the zombification of [M]." -/datum/reagent/blob/zombifying_pods/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) +/datum/reagent/blob/zombifying_pods/damage_reaction(obj/structure/blob/B, original_health, damage, damage_type, cause) if(!isnull(cause) && damage <= 20 && original_health - damage <= 0 && prob(30)) //if the cause isn't fire or a bomb, the damage is less than 21, we're going to die from that damage, 20% chance of a shitty spore. B.visible_message("A spore floats free of the blob!") var/mob/living/simple_animal/hostile/blob/blobspore/weak/BS = new/mob/living/simple_animal/hostile/blob/blobspore/weak(B.loc) @@ -209,7 +209,7 @@ B.overmind.blob_mobs.Add(BS) return ..() -/datum/reagent/blob/zombifying_pods/expand_reaction(obj/effect/blob/B, obj/effect/blob/newB, turf/T) +/datum/reagent/blob/zombifying_pods/expand_reaction(obj/structure/blob/B, obj/structure/blob/newB, turf/T) if(prob(10)) var/mob/living/simple_animal/hostile/blob/blobspore/weak/BS = new/mob/living/simple_animal/hostile/blob/blobspore/weak(T) BS.overmind = B.overmind @@ -236,16 +236,16 @@ if(M) M.apply_damage(0.6*reac_volume, OXY) -/datum/reagent/blob/energized_jelly/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) +/datum/reagent/blob/energized_jelly/damage_reaction(obj/structure/blob/B, original_health, damage, damage_type, cause) if(!isnull(cause) && original_health - damage <= 0 && prob(10)) spark_system.set_up(rand(2, 4), 0, B) spark_system.start() return ..() -/datum/reagent/blob/energized_jelly/tesla_reaction(obj/effect/blob/B, power) +/datum/reagent/blob/energized_jelly/tesla_reaction(obj/structure/blob/B, power) return 0 -/datum/reagent/blob/energized_jelly/emp_reaction(obj/effect/blob/B, severity) +/datum/reagent/blob/energized_jelly/emp_reaction(obj/structure/blob/B, severity) var/damage = rand(30, 50) - severity * rand(10, 15) B.take_damage(damage, BURN) @@ -278,7 +278,7 @@ else M.apply_damage(0.6*reac_volume, BRUTE) -/datum/reagent/blob/explosive_lattice/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) +/datum/reagent/blob/explosive_lattice/damage_reaction(obj/structure/blob/B, original_health, damage, damage_type, cause) if(isnull(cause)) if(damage_type == BRUTE) return 0 //no-sell the explosion we do not take damage @@ -334,7 +334,7 @@ if(M) M.apply_damage(reac_volume, BURN) -/datum/reagent/blob/electromagnetic_web/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) +/datum/reagent/blob/electromagnetic_web/damage_reaction(obj/structure/blob/B, original_health, damage, damage_type, cause) if(damage_type == BRUTE) //take full brute switch(B.brute_resist) if(0.5) @@ -345,7 +345,7 @@ return damage * 10 return damage * 1.25 //a laser will do 25 damage, which will kill any normal blob -/datum/reagent/blob/electromagnetic_web/death_reaction(obj/effect/blob/B, cause) +/datum/reagent/blob/electromagnetic_web/death_reaction(obj/structure/blob/B, cause) if(cause) empulse(B.loc, 1, 3) //less than screen range, so you can stand out of range to avoid it @@ -366,19 +366,19 @@ reac_volume = ..() M.apply_damage(0.2*reac_volume, BRUTE) if(M && reac_volume) - for(var/obj/effect/blob/B in range(1, M)) //if the target is completely surrounded, this is 2.4*reac_volume bonus damage, total of 2.6*reac_volume + for(var/obj/structure/blob/B in range(1, M)) //if the target is completely surrounded, this is 2.4*reac_volume bonus damage, total of 2.6*reac_volume if(M) B.blob_attack_animation(M) //show them they're getting a bad time M.apply_damage(0.3*reac_volume, BRUTE) -/datum/reagent/blob/synchronous_mesh/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) +/datum/reagent/blob/synchronous_mesh/damage_reaction(obj/structure/blob/B, original_health, damage, damage_type, cause) if(!isnull(cause)) //the cause isn't fire or bombs, so split the damage var/damagesplit = 1 //maximum split is 9, reducing the damage each blob takes to 11% but doing that damage to 9 blobs - for(var/obj/effect/blob/C in orange(1, B)) - if(!istype(C, /obj/effect/blob/core) && !istype(C, /obj/effect/blob/node) && C.overmind && C.overmind.blob_reagent_datum.id == B.overmind.blob_reagent_datum.id) //if it doesn't have the same chemical or is a core or node, don't split damage to it + for(var/obj/structure/blob/C in orange(1, B)) + if(!istype(C, /obj/structure/blob/core) && !istype(C, /obj/structure/blob/node) && C.overmind && C.overmind.blob_reagent_datum.id == B.overmind.blob_reagent_datum.id) //if it doesn't have the same chemical or is a core or node, don't split damage to it damagesplit += 1 - for(var/obj/effect/blob/C in orange(1, B)) - if(!istype(C, /obj/effect/blob/core) && !istype(C, /obj/effect/blob/node) && C.overmind && C.overmind.blob_reagent_datum.id == B.overmind.blob_reagent_datum.id) //only hurt blobs that have the same overmind chemical and aren't cores or nodes + for(var/obj/structure/blob/C in orange(1, B)) + if(!istype(C, /obj/structure/blob/core) && !istype(C, /obj/structure/blob/node) && C.overmind && C.overmind.blob_reagent_datum.id == B.overmind.blob_reagent_datum.id) //only hurt blobs that have the same overmind chemical and aren't cores or nodes C.take_damage(damage/damagesplit, CLONE, B, 0) return damage / damagesplit else @@ -402,7 +402,7 @@ return 0 //the dead, and blob mobs, don't cause reactions M.adjustBruteLoss(0.8*reac_volume) -/datum/reagent/blob/reactive_spines/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) +/datum/reagent/blob/reactive_spines/damage_reaction(obj/structure/blob/B, original_health, damage, damage_type, cause) if(damage && damage_type == BRUTE && original_health - damage > 0) //is there any damage, is it brute, and will we be alive if(isliving(cause)) B.visible_message("The blob retaliates, lashing out!") @@ -437,17 +437,17 @@ if(M) M.adjustStaminaLoss(0.2*reac_volume) -/datum/reagent/blob/pressurized_slime/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) +/datum/reagent/blob/pressurized_slime/damage_reaction(obj/structure/blob/B, original_health, damage, damage_type, cause) if(cause || damage_type != BURN) extinguisharea(B, damage) return ..() -/datum/reagent/blob/pressurized_slime/death_reaction(obj/effect/blob/B, cause) +/datum/reagent/blob/pressurized_slime/death_reaction(obj/structure/blob/B, cause) if(!isnull(cause)) B.visible_message("The blob ruptures, spraying the area with liquid!") extinguisharea(B, 50) -/datum/reagent/blob/pressurized_slime/proc/extinguisharea(obj/effect/blob/B, probchance) +/datum/reagent/blob/pressurized_slime/proc/extinguisharea(obj/structure/blob/B, probchance) for(var/turf/open/T in range(1, B)) if(prob(probchance)) T.MakeSlippery(min_wet_time = 10, wet_time_to_add = 5) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index ce375b1d228..61aeb01946b 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -1058,6 +1058,26 @@ datum/reagent/medicine/syndicate_nanites/on_mob_life(mob/living/M) ..() . = 1 +/datum/reagent/medicine/miningnanites + name = "Nanites" + id = "miningnanites" + description = "It's mining magic. We don't have to explain it." + color = "#C8A5DC" // rgb: 200, 165, 220 + overdose_threshold = 3 //To prevent people stacking massive amounts of a very strong healing reagent + can_synth = 0 + +/datum/reagent/medicine/miningnanites/on_mob_life(mob/living/M) + M.heal_bodypart_damage(5,5, 0) + ..() + . = 1 + +/datum/reagent/medicine/miningnanites/overdose_process(mob/living/M) + M.adjustBruteLoss(3*REM, 0) + M.adjustFireLoss(3*REM, 0) + M.adjustToxLoss(3*REM, 0) + ..() + . = 1 + //used for changeling's adrenaline power /datum/reagent/medicine/changelingAdrenaline name = "Adrenaline" diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index 2d344c1276e..e95cae5ea9b 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -184,10 +184,10 @@ if(istype(O,/obj/structure/alien/weeds)) var/obj/structure/alien/weeds/alien_weeds = O alien_weeds.take_damage(rand(15,35), BRUTE, 0) // Kills alien weeds pretty fast - else if(istype(O,/obj/effect/glowshroom)) //even a small amount is enough to kill it + else if(istype(O,/obj/structure/glowshroom)) //even a small amount is enough to kill it qdel(O) - else if(istype(O,/obj/effect/spacevine)) - var/obj/effect/spacevine/SV = O + else if(istype(O,/obj/structure/spacevine)) + var/obj/structure/spacevine/SV = O SV.on_chem_effect(src) /datum/reagent/toxin/plantbgone/reaction_mob(mob/living/M, method=TOUCH, reac_volume) diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index c03dc50dbb2..b258903653e 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -128,11 +128,11 @@ /obj/item/weapon/reagent_containers/hypospray/medipen/survival name = "survival medipen" - desc = "A medipen for surviving in the harshest of environments, heals and protects from environmental hazards. " + desc = "A medipen for surviving in the harshest of environments, heals and protects from environmental hazards. WARNING: Do not inject more than one pen in quick succession." icon_state = "stimpen" - volume = 82 - amount_per_transfer_from_this = 82 - list_reagents = list("nanites" = 2, "salbutamol" = 10, "coffee" = 20, "leporazine" = 20, "tricordrazine" = 15, "epinephrine" = 10, "omnizine" = 5, "stimulants" = 10) + volume = 57 + amount_per_transfer_from_this = 57 + list_reagents = list("salbutamol" = 10, "leporazine" = 15, "tricordrazine" = 15, "epinephrine" = 10, "miningnanites" = 2, "omnizine" = 5) /obj/item/weapon/reagent_containers/hypospray/medipen/species_mutator name = "species mutator medipen" diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 5ed872fc0ff..962649807d4 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -25,7 +25,7 @@ else return -/obj/structure/reagent_dispensers/blob_act(obj/effect/blob/B) +/obj/structure/reagent_dispensers/blob_act(obj/structure/blob/B) if(prob(50)) boom() @@ -63,7 +63,7 @@ if(tank_volume && istype(Proj) && !Proj.nodamage && ((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE))) boom() -/obj/structure/reagent_dispensers/watertank/blob_act(obj/effect/blob/B) +/obj/structure/reagent_dispensers/watertank/blob_act(obj/structure/blob/B) if(prob(50)) PoolOrNew(/obj/effect/particle_effect/water, loc) qdel(src) @@ -93,7 +93,7 @@ explosion(get_turf(src), 0, 1, 5, flame_range = 5) qdel(src) -/obj/structure/reagent_dispensers/fueltank/blob_act(obj/effect/blob/B) +/obj/structure/reagent_dispensers/fueltank/blob_act(obj/structure/blob/B) boom() /obj/structure/reagent_dispensers/fueltank/ex_act() @@ -174,7 +174,7 @@ icon_state = "beer" reagent_id = "beer" -/obj/structure/reagent_dispensers/beerkeg/blob_act(obj/effect/blob/B) +/obj/structure/reagent_dispensers/beerkeg/blob_act(obj/structure/blob/B) explosion(src.loc,0,3,5,7,10) diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index 010a4105883..a235391790b 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -62,7 +62,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). T += M.rating efficiency_coeff = 2 ** (T - 1) //Only 1 manipulator here, you're making runtimes Razharas -/obj/machinery/r_n_d/circuit_imprinter/blob_act(obj/effect/blob/B) +/obj/machinery/r_n_d/circuit_imprinter/blob_act(obj/structure/blob/B) if (prob(50)) qdel(src) @@ -76,7 +76,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). return round(A / max(1, (all_materials[M]/efficiency_coeff))) //we eject the materials upon deconstruction. -/obj/machinery/r_n_d/circuit_imprinter/deconstruction() +/obj/machinery/r_n_d/circuit_imprinter/on_deconstruction() for(var/obj/item/weapon/reagent_containers/glass/G in component_parts) reagents.trans_to(G, G.reagents.maximum_volume) materials.retrieve_all() diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 8b304469259..a532b35573d 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -39,6 +39,7 @@ other types of metals and chemistry for reagents). var/list/category = null //Primarily used for Mech Fabricators, but can be used for anything var/list/reagents_list = list() //List of reagents. Format: "id" = amount. var/maxstack = 1 + var/lathe_time_factor = 1 //How many times faster than normal is this to build on the protolathe //////////////////////////////////////// diff --git a/code/modules/research/designs/stock_parts_designs.dm b/code/modules/research/designs/stock_parts_designs.dm index 13188c91923..d849a1a95d4 100644 --- a/code/modules/research/designs/stock_parts_designs.dm +++ b/code/modules/research/designs/stock_parts_designs.dm @@ -32,6 +32,7 @@ materials = list(MAT_METAL = 100, MAT_GLASS = 100) build_path = /obj/item/weapon/stock_parts/capacitor category = list("Stock Parts","Machinery","initial") + lathe_time_factor = 0.2 /datum/design/adv_capacitor name = "Advanced Capacitor" @@ -42,6 +43,7 @@ materials = list(MAT_METAL = 150, MAT_GLASS = 150) build_path = /obj/item/weapon/stock_parts/capacitor/adv category = list("Stock Parts") + lathe_time_factor = 0.2 /datum/design/super_capacitor name = "Super Capacitor" @@ -52,6 +54,7 @@ materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_GOLD = 100) build_path = /obj/item/weapon/stock_parts/capacitor/super category = list("Stock Parts") + lathe_time_factor = 0.2 /datum/design/quadratic_capacitor name = "Quadratic Capacitor" @@ -62,6 +65,7 @@ materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_DIAMOND = 100) build_path = /obj/item/weapon/stock_parts/capacitor/quadratic category = list("Stock Parts") + lathe_time_factor = 0.2 //Scanning modules /datum/design/basic_scanning @@ -73,6 +77,7 @@ materials = list(MAT_METAL = 100, MAT_GLASS = 50) build_path = /obj/item/weapon/stock_parts/scanning_module category = list("Stock Parts","Machinery","initial") + lathe_time_factor = 0.2 /datum/design/adv_scanning name = "Advanced Scanning Module" @@ -83,6 +88,7 @@ materials = list(MAT_METAL = 150, MAT_GLASS = 100) build_path = /obj/item/weapon/stock_parts/scanning_module/adv category = list("Stock Parts") + lathe_time_factor = 0.2 /datum/design/phasic_scanning name = "Phasic Scanning Module" @@ -93,6 +99,7 @@ materials = list(MAT_METAL = 200, MAT_GLASS = 150, MAT_SILVER = 60) build_path = /obj/item/weapon/stock_parts/scanning_module/phasic category = list("Stock Parts") + lathe_time_factor = 0.2 /datum/design/triphasic_scanning name = "Triphasic Scanning Module" @@ -103,6 +110,7 @@ materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_DIAMOND = 60) build_path = /obj/item/weapon/stock_parts/scanning_module/triphasic category = list("Stock Parts") + lathe_time_factor = 0.2 //Maipulators /datum/design/micro_mani @@ -114,6 +122,7 @@ materials = list(MAT_METAL = 100) build_path = /obj/item/weapon/stock_parts/manipulator category = list("Stock Parts","Machinery","initial") + lathe_time_factor = 0.2 /datum/design/nano_mani name = "Nano Manipulator" @@ -124,6 +133,7 @@ materials = list(MAT_METAL = 150) build_path = /obj/item/weapon/stock_parts/manipulator/nano category = list("Stock Parts") + lathe_time_factor = 0.2 /datum/design/pico_mani name = "Pico Manipulator" @@ -134,6 +144,7 @@ materials = list(MAT_METAL = 200) build_path = /obj/item/weapon/stock_parts/manipulator/pico category = list("Stock Parts") + lathe_time_factor = 0.2 /datum/design/femto_mani name = "Femto Manipulator" @@ -144,6 +155,7 @@ materials = list(MAT_METAL = 200, MAT_DIAMOND = 30, MAT_TITANIUM = 30) build_path = /obj/item/weapon/stock_parts/manipulator/femto category = list("Stock Parts") + lathe_time_factor = 0.2 //Micro-lasers /datum/design/basic_micro_laser @@ -155,6 +167,7 @@ materials = list(MAT_METAL = 100, MAT_GLASS = 50) build_path = /obj/item/weapon/stock_parts/micro_laser category = list("Stock Parts","Machinery","initial") + lathe_time_factor = 0.2 /datum/design/high_micro_laser name = "High-Power Micro-Laser" @@ -165,6 +178,7 @@ materials = list(MAT_METAL = 150, MAT_GLASS = 100) build_path = /obj/item/weapon/stock_parts/micro_laser/high category = list("Stock Parts") + lathe_time_factor = 0.2 /datum/design/ultra_micro_laser name = "Ultra-High-Power Micro-Laser" @@ -175,6 +189,7 @@ materials = list(MAT_METAL = 200, MAT_GLASS = 150, MAT_URANIUM = 60) build_path = /obj/item/weapon/stock_parts/micro_laser/ultra category = list("Stock Parts") + lathe_time_factor = 0.2 /datum/design/quadultra_micro_laser name = "Quad-Ultra Micro-Laser" @@ -185,6 +200,7 @@ materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_URANIUM = 100, MAT_DIAMOND = 60) build_path = /obj/item/weapon/stock_parts/micro_laser/quadultra category = list("Stock Parts") + lathe_time_factor = 0.2 /datum/design/basic_matter_bin name = "Basic Matter Bin" @@ -195,6 +211,7 @@ materials = list(MAT_METAL = 100) build_path = /obj/item/weapon/stock_parts/matter_bin category = list("Stock Parts","Machinery","initial") + lathe_time_factor = 0.2 /datum/design/adv_matter_bin name = "Advanced Matter Bin" @@ -205,6 +222,7 @@ materials = list(MAT_METAL = 150) build_path = /obj/item/weapon/stock_parts/matter_bin/adv category = list("Stock Parts") + lathe_time_factor = 0.2 /datum/design/super_matter_bin name = "Super Matter Bin" @@ -215,6 +233,7 @@ materials = list(MAT_METAL = 200) build_path = /obj/item/weapon/stock_parts/matter_bin/super category = list("Stock Parts") + lathe_time_factor = 0.2 /datum/design/bluespace_matter_bin name = "Bluespace Matter Bin" @@ -225,6 +244,7 @@ materials = list(MAT_METAL = 250, MAT_DIAMOND = 200) build_path = /obj/item/weapon/stock_parts/matter_bin/bluespace category = list("Stock Parts") + lathe_time_factor = 0.2 //T-Comms devices /datum/design/subspace_ansible diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index 1b526830d0c..7f7c58186cf 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -76,7 +76,7 @@ Note: Must be placed west/left of and R&D console to function. return round(A / max(1, (all_materials[M]*efficiency_coeff))) //we eject the materials upon deconstruction. -/obj/machinery/r_n_d/protolathe/deconstruction() +/obj/machinery/r_n_d/protolathe/on_deconstruction() for(var/obj/item/weapon/reagent_containers/glass/G in component_parts) reagents.trans_to(G, G.reagents.maximum_volume) materials.retrieve_all() diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 76a956259bf..7e06dc89b02 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -138,7 +138,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, updateUsrDialog() -/obj/machinery/computer/rdconsole/deconstruction() +/obj/machinery/computer/rdconsole/on_deconstruction() if(linked_destroy) linked_destroy.linked_console = null linked_destroy = null @@ -438,6 +438,9 @@ won't update every console in existence) but it's more of a hassle to do. Also, linked_lathe.reagents.remove_reagent(R, being_built.reagents_list[R]*coeff) var/P = being_built.build_path //lets save these values before the spawn() just in case. Nobody likes runtimes. + + coeff *= being_built.lathe_time_factor + spawn(32*coeff*amount**0.8) if(linked_lathe) if(g2g) //And if we only fail the material requirements, we still spend time and power diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm index e90dcb20412..339d468a7df 100644 --- a/code/modules/research/rdmachines.dm +++ b/code/modules/research/rdmachines.dm @@ -105,7 +105,7 @@ //we eject the loaded item when deconstructing the machine -/obj/machinery/r_n_d/deconstruction() +/obj/machinery/r_n_d/on_deconstruction() if(loaded_item) loaded_item.loc = loc ..() diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index e57becb8253..7545803b9e0 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -90,7 +90,7 @@ ..() -/obj/machinery/r_n_d/server/blob_act(obj/effect/blob/B) +/obj/machinery/r_n_d/server/blob_act(obj/structure/blob/B) griefProtection() ..() @@ -129,7 +129,7 @@ air_update_turf() //called when the server is deconstructed. -/obj/machinery/r_n_d/server/deconstruction() +/obj/machinery/r_n_d/server/on_deconstruction() griefProtection() ..() diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 4dd4b3f0b3a..464609a046e 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -1,8 +1,8 @@ var/list/blacklisted_cargo_types = typecacheof(list( /mob/living, - /obj/effect/blob, + /obj/structure/blob, /obj/effect/rune, - /obj/effect/spider/spiderling, + /obj/structure/spider/spiderling, /obj/item/weapon/disk/nuclear, /obj/machinery/nuclearbomb, /obj/item/device/radio/beacon, diff --git a/code/modules/stock_market/computer.dm b/code/modules/stock_market/computer.dm index 97a2bc983b1..91802bb473d 100644 --- a/code/modules/stock_market/computer.dm +++ b/code/modules/stock_market/computer.dm @@ -248,7 +248,7 @@ a.updated { usr.machine = src if (href_list["viewhistory"]) - var/datum/stock/S = locate(href_list["viewhistory"]) + var/datum/stock/S = locate(href_list["viewhistory"]) in stockExchange.stocks if (S) S.displayValues(usr) @@ -256,20 +256,15 @@ a.updated { logged_in = null if (href_list["buyshares"]) - var/datum/stock/S = locate(href_list["buyshares"]) + var/datum/stock/S = locate(href_list["buyshares"]) in stockExchange.stocks if (S) buy_some_shares(S, usr) if (href_list["sellshares"]) - var/datum/stock/S = locate(href_list["sellshares"]) + var/datum/stock/S = locate(href_list["sellshares"]) in stockExchange.stocks if (S) sell_some_shares(S, usr) - if (href_list["take"]) - var/datum/borrow/B = locate(href_list["take"]) - if (B && !B.lease_expires) - do_borrowing_deal(B, usr) - if (href_list["show_logs"]) var/dat = "Stock Transaction Logs

Stock Transaction Logs

Refresh

" for(var/D in stockExchange.logs) diff --git a/code/modules/zombie/items.dm b/code/modules/zombie/items.dm index c2aa26041cd..40961cdb193 100644 --- a/code/modules/zombie/items.dm +++ b/code/modules/zombie/items.dm @@ -69,7 +69,7 @@ A.audible_message("You hear a loud metallic \ grinding sound.") - addtimer(src, "growl", 20, unique=FALSE, user) + addtimer(src, "growl", 20, unique=FALSE, target=user) if(do_after(user, delay=160, needhand=FALSE, target=A, progress=TRUE)) playsound(src.loc, 'sound/hallucinations/far_noise.ogg', 50, 1) diff --git a/code/world.dm b/code/world.dm index db19f30966c..97242e14e7e 100644 --- a/code/world.dm +++ b/code/world.dm @@ -198,6 +198,14 @@ var/last_irc_status = 0 world << "An admin has delayed the round end." return world << "Rebooting World in [delay/10] [delay > 10 ? "seconds" : "second"]. [reason]" + var/round_end_sound_sent = FALSE + if(ticker.round_end_sound) + round_end_sound_sent = TRUE + for(var/thing in clients) + var/client/C = thing + if (!C) + continue + C.Export("##action=load_rsc", ticker.round_end_sound) sleep(delay) if(blackbox) blackbox.save_all_data_to_sql() @@ -215,7 +223,7 @@ var/last_irc_status = 0 feedback_set_details("[feedback_c]","[feedback_r]") log_game("Rebooting World. [reason]") kick_clients_in_lobby("The round came to an end with you in the lobby.", 1) //second parameter ensures only afk clients are kicked - #ifdef dellogging +#ifdef dellogging var/log = file("data/logs/del.log") log << time2text(world.realtime) for(var/index in del_counter) @@ -223,12 +231,24 @@ var/last_irc_status = 0 if(count > 10) log << "#[count]\t[index]" #endif - spawn(0) + var/soundwait = 0 + if (ticker.round_end_sound && !round_end_sound_sent) + soundwait = 10 + for(var/thing in clients) + var/client/C = thing + if (!C) + continue + C.Export("##action=load_rsc", ticker.round_end_sound) + spawn(soundwait/2) if(ticker && ticker.round_end_sound) world << sound(ticker.round_end_sound) else world << sound(pick('sound/AI/newroundsexy.ogg','sound/misc/apcdestroyed.ogg','sound/misc/bangindonk.ogg','sound/misc/leavingtg.ogg', 'sound/misc/its_only_game.ogg')) // random end sounds!! - LastyBatsy - for(var/client/C in clients) + sleep(soundwait) + for(var/thing in clients) + var/client/C = thing + if (!C) + continue if(config.server) //if you set a server location in config.txt, it sends you there instead of trying to reconnect to the same world address. -- NeoFite C << link("byond://[config.server]") ..(0) diff --git a/config/admins.txt b/config/admins.txt index 46be5e597e5..8be65927ee9 100644 --- a/config/admins.txt +++ b/config/admins.txt @@ -119,3 +119,4 @@ Quiltyquilty = Game Master SnipeDragon = Game Master Fjeld = Game Master kevinz000 = Game Master +TrustyGun = Game Master diff --git a/html/changelog.html b/html/changelog.html index bd09936a871..2fc8987451f 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,52 @@ -->
+

28 September 2016

+

Cuboos updated:

+
    +
  • Removed the admin message spam from the smoke_spread proc. You may now vape in peace without the threat of a Blue Space Artillery
  • +
+

LanCartwright updated:

+
    +
  • Removed Stimulants and Coffee from survival pens.
  • +
  • Nanites have been replaced with Mining Nanites which heal more when you are lower health, and do not have the ridiculous healing Adminorazine had.
  • +
+ +

27 September 2016

+

Cobby updated:

+
    +
  • Nanotrasen has buffed the electronic safety devices found in Secure Briefcases and Wallsafes, making them... well... more secure. In Particular, we added more wires that do absolutely nothing but hinder the use of the multitool, along with removing the ID slot only used by syndicates to emag the safe.
  • +
+

Incoming5643 updated:

+
    +
  • The secret satchels system has been updated to hide more smuggler's satchels hidden randomly under the station
  • +
  • In case you forgot about the secret satchel system, basically if you take a smuggler's satchel (a traitor item also occasionally found under a random tile in the station [USE T-RAYS]), stow away an item in it, and bury it under the floor tiles that item can reappear in a random later round!
  • +
+

MrStonedOne updated:

+
    +
  • Custom Round end sounds selected by admins will be preloaded to all clients before actually rebooting the world
  • +
+

Shadowlight213 updated:

+
    +
  • Fixes broken icon states when replacing warning floor tile
  • +
+

Supermichael777 updated:

+
    +
  • Cat men have finally achieved equal discrimination.
  • +
+

TrustyGun+Pubby updated:

+
    +
  • Lawyers now have unique speech bubbles.
  • +
+

XDTM updated:

+
    +
  • Using plasma on dark blue slimes will now spawn freon instead of arbitrarily freezing mobs.
  • +
+

uraniummeltdown updated:

+
    +
  • Protolathe stock parts now build 5 times faster
  • +
+

26 September 2016

Cuboos updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 6ced9198133..2e5523ab41a 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -7245,3 +7245,38 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. fall to the floor. oranges: - rscadd: It looks like a pizza delivery from an un-named station got misplaced +2016-09-27: + Cobby: + - tweak: Nanotrasen has buffed the electronic safety devices found in Secure Briefcases + and Wallsafes, making them... well... more secure. In Particular, we added more + wires that do absolutely nothing but hinder the use of the multitool, along + with removing the ID slot only used by syndicates to emag the safe. + Incoming5643: + - rscadd: The secret satchels system has been updated to hide more smuggler's satchels + hidden randomly under the station + - experiment: In case you forgot about the secret satchel system, basically if you + take a smuggler's satchel (a traitor item also occasionally found under a random + tile in the station [USE T-RAYS]), stow away an item in it, and bury it under + the floor tiles that item can reappear in a random later round! + MrStonedOne: + - tweak: Custom Round end sounds selected by admins will be preloaded to all clients + before actually rebooting the world + Shadowlight213: + - bugfix: Fixes broken icon states when replacing warning floor tile + Supermichael777: + - tweak: Cat men have finally achieved equal discrimination. + TrustyGun+Pubby: + - imageadd: Lawyers now have unique speech bubbles. + XDTM: + - tweak: Using plasma on dark blue slimes will now spawn freon instead of arbitrarily + freezing mobs. + uraniummeltdown: + - tweak: Protolathe stock parts now build 5 times faster +2016-09-28: + Cuboos: + - bugfix: Removed the admin message spam from the smoke_spread proc. You may now + vape in peace without the threat of a Blue Space Artillery + LanCartwright: + - rscdel: Removed Stimulants and Coffee from survival pens. + - tweak: Nanites have been replaced with Mining Nanites which heal more when you + are lower health, and do not have the ridiculous healing Adminorazine had. diff --git a/html/changelogs/AutoChangeLog-pr-20664.yml b/html/changelogs/AutoChangeLog-pr-20664.yml deleted file mode 100644 index 8ba6f9a0f90..00000000000 --- a/html/changelogs/AutoChangeLog-pr-20664.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "XDTM" -delete-after: True -changes: - - tweak: "Using plasma on dark blue slimes will now spawn freon instead of arbitrarily freezing mobs." diff --git a/html/changelogs/AutoChangeLog-pr-20686.yml b/html/changelogs/AutoChangeLog-pr-20686.yml deleted file mode 100644 index e3c38d5de30..00000000000 --- a/html/changelogs/AutoChangeLog-pr-20686.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Incoming5643" -delete-after: True -changes: - - rscadd: "The secret satchels system has been updated to hide more smuggler's satchels hidden randomly under the station" - - experiment: "In case you forgot about the secret satchel system, basically if you take a smuggler's satchel (a traitor item also occasionally found under a random tile in the station [USE T-RAYS]), stow away an item in it, and bury it under the floor tiles that item can reappear in a random later round!" diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index 613fdf7e18b..15ad97a0700 100644 Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index fc596866750..299557c4613 100644 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ diff --git a/icons/mob/talk.dmi b/icons/mob/talk.dmi index 3b160b59174..05fe6f56236 100644 Binary files a/icons/mob/talk.dmi and b/icons/mob/talk.dmi differ diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi index e7769484894..97f450831fa 100644 Binary files a/icons/obj/chemical.dmi and b/icons/obj/chemical.dmi differ diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index 505eae306ab..f3edc5716e7 100644 Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi index 260540db932..bdbbef4c1f5 100644 Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ diff --git a/icons/turf/floors/warning.dmi b/icons/turf/floors/warning.dmi deleted file mode 100644 index ece3f5a9e01..00000000000 Binary files a/icons/turf/floors/warning.dmi and /dev/null differ diff --git a/tgstation.dme b/tgstation.dme index f1bd42061ad..dbf30b18350 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -553,6 +553,7 @@ #include "code\game\objects\effects\anomalies.dm" #include "code\game\objects\effects\bump_teleporter.dm" #include "code\game\objects\effects\contraband.dm" +#include "code\game\objects\effects\effects.dm" #include "code\game\objects\effects\forcefields.dm" #include "code\game\objects\effects\glowshroom.dm" #include "code\game\objects\effects\landmarks.dm"