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/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index e688e19691d..9142670609e 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -3117,15 +3117,13 @@ /obj/machinery/door/poddoor/preopen{ desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; id = "Awaybiohazard"; - name = "Acid-Proof biohazard containment door"; - unacidable = 1 + name = "Acid-Proof biohazard containment door" }, /obj/machinery/door/poddoor{ desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; id = "Awaybiohazard"; layer = 2.9; - name = "Acid-Proof biohazard containment door"; - unacidable = 1 + name = "Acid-Proof biohazard containment door" }, /obj/structure/window/reinforced/fulltile, /turf/open/floor/plating{ @@ -3306,8 +3304,7 @@ id = "awayxenobio"; name = "Acid-Proof mounted igniter"; pixel_x = 0; - pixel_y = 25; - unacidable = 1 + pixel_y = 25 }, /obj/structure/alien/weeds{ icon_state = "weeds1" @@ -3438,8 +3435,7 @@ /obj/machinery/door/poddoor/preopen{ desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; id = "Awaylab"; - name = "Acid-Proof containment chamber blast door"; - unacidable = 1 + name = "Acid-Proof containment chamber blast door" }, /obj/structure/cable, /obj/structure/grille, @@ -4021,8 +4017,7 @@ /obj/machinery/door/poddoor/preopen{ desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; id = "Awaylab"; - name = "Acid-Proof containment chamber blast door"; - unacidable = 1 + name = "Acid-Proof containment chamber blast door" }, /obj/structure/grille, /obj/structure/window/reinforced/fulltile, @@ -4280,8 +4275,7 @@ /obj/machinery/atmospherics/pipe/simple/general/visible{ desc = "A one meter section of pipe. This one has been applied with an acid-proof coating."; dir = 4; - name = "Acid-Proof Pipe"; - unacidable = 1 + name = "Acid-Proof Pipe" }, /obj/item/stack/rods, /obj/item/stack/cable_coil{ @@ -4302,14 +4296,12 @@ /obj/machinery/door/poddoor/preopen{ desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; id = "Awaylab"; - name = "Acid-Proof containment chamber blast door"; - unacidable = 1 + name = "Acid-Proof containment chamber blast door" }, /obj/machinery/atmospherics/pipe/simple/general/visible{ desc = "A one meter section of pipe. This one has been applied with an acid-proof coating."; dir = 4; - name = "Acid-Proof Pipe"; - unacidable = 1 + name = "Acid-Proof Pipe" }, /obj/item/stack/rods, /obj/item/stack/cable_coil{ @@ -4333,8 +4325,7 @@ /obj/machinery/atmospherics/pipe/simple/general/visible{ desc = "A one meter section of pipe. This one has been applied with an acid-proof coating."; dir = 4; - name = "Acid-Proof Pipe"; - unacidable = 1 + name = "Acid-Proof Pipe" }, /obj/structure/alien/weeds{ icon_state = "weeds1" @@ -4348,8 +4339,7 @@ /obj/machinery/atmospherics/pipe/simple/general/visible{ desc = "A one meter section of pipe. This one has been applied with an acid-proof coating."; dir = 4; - name = "Acid-Proof Pipe"; - unacidable = 1 + name = "Acid-Proof Pipe" }, /obj/structure/alien/weeds{ icon_state = "weeds1" @@ -4364,8 +4354,7 @@ /obj/machinery/atmospherics/pipe/simple/general/visible{ desc = "A one meter section of pipe. This one has been applied with an acid-proof coating."; dir = 4; - name = "Acid-Proof Pipe"; - unacidable = 1 + name = "Acid-Proof Pipe" }, /obj/structure/alien/weeds{ icon_state = "weeds1" @@ -4380,8 +4369,7 @@ /obj/machinery/atmospherics/pipe/simple/general/visible{ desc = "A one meter section of pipe. This one has been applied with an acid-proof coating."; dir = 4; - name = "Acid-Proof Pipe"; - unacidable = 1 + name = "Acid-Proof Pipe" }, /obj/structure/alien/weeds, /obj/structure/alien/resin/wall, @@ -4396,8 +4384,7 @@ dir = 8; icon_state = "on"; name = "Acid-Proof Air Injector"; - on = 1; - unacidable = 1 + on = 1 }, /obj/structure/alien/weeds, /turf/open/floor/engine, @@ -4667,8 +4654,7 @@ /obj/machinery/door/poddoor/preopen{ desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; id = "Awaylab"; - name = "Acid-Proof containment chamber blast door"; - unacidable = 1 + name = "Acid-Proof containment chamber blast door" }, /obj/item/stack/cable_coil/cut{ amount = 1; @@ -4889,8 +4875,7 @@ /obj/structure/disposalpipe/trunk{ desc = "An underfloor disposal pipe. This one has been applied with an acid-proof coating."; dir = 4; - name = "Acid-Proof disposal pipe"; - unacidable = 1 + name = "Acid-Proof disposal pipe" }, /obj/structure/alien/weeds, /turf/open/floor/plasteel/warning{ @@ -4909,14 +4894,12 @@ /obj/structure/disposalpipe/segment{ desc = "An underfloor disposal pipe. This one has been applied with an acid-proof coating."; dir = 4; - name = "Acid-Proof disposal pipe"; - unacidable = 1 + name = "Acid-Proof disposal pipe" }, /obj/machinery/door/poddoor/preopen{ desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; id = "Awaylab"; - name = "Acid-Proof containment chamber blast door"; - unacidable = 1 + name = "Acid-Proof containment chamber blast door" }, /obj/structure/cable, /obj/structure/grille, @@ -4932,8 +4915,7 @@ /obj/structure/disposalpipe/segment{ desc = "An underfloor disposal pipe. This one has been applied with an acid-proof coating."; dir = 4; - name = "Acid-Proof disposal pipe"; - unacidable = 1 + name = "Acid-Proof disposal pipe" }, /obj/structure/alien/weeds, /obj/structure/alien/resin/wall, @@ -4947,8 +4929,7 @@ desc = "An underfloor disposal pipe. This one has been applied with an acid-proof coating."; dir = 2; icon_state = "pipe-c"; - name = "Acid-Proof disposal pipe"; - unacidable = 1 + name = "Acid-Proof disposal pipe" }, /obj/structure/alien/weeds{ icon_state = "weeds2" @@ -5195,8 +5176,7 @@ /obj/machinery/door/poddoor/preopen{ desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; id = "Awaylab"; - name = "Acid-Proof containment chamber blast door"; - unacidable = 1 + name = "Acid-Proof containment chamber blast door" }, /obj/structure/cable{ icon_state = "0-2"; @@ -5214,8 +5194,7 @@ "gM" = ( /obj/structure/disposalpipe/segment{ desc = "An underfloor disposal pipe. This one has been applied with an acid-proof coating."; - name = "Acid-Proof disposal pipe"; - unacidable = 1 + name = "Acid-Proof disposal pipe" }, /obj/structure/alien/weeds{ icon_state = "weeds1" @@ -5422,14 +5401,12 @@ /obj/structure/disposaloutlet{ desc = "An outlet for the pneumatic disposal system. This one has been applied with an acid-proof coating."; dir = 1; - name = "Acid-Proof disposal outlet"; - unacidable = 1 + name = "Acid-Proof disposal outlet" }, /obj/structure/disposalpipe/trunk{ desc = "An underfloor disposal pipe. This one has been applied with an acid-proof coating."; dir = 1; - name = "Acid-Proof disposal pipe"; - unacidable = 1 + name = "Acid-Proof disposal pipe" }, /obj/structure/alien/weeds{ icon_state = "weeds1" @@ -5465,8 +5442,7 @@ id = "awayxenobio"; name = "Acid-Proof mounted igniter"; pixel_x = 0; - pixel_y = -25; - unacidable = 1 + pixel_y = -25 }, /obj/structure/alien/weeds{ icon_state = "weeds2" @@ -5993,8 +5969,7 @@ desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; id = "Awaybiohazard"; layer = 2.9; - name = "Acid-Proof biohazard containment door"; - unacidable = 1 + name = "Acid-Proof biohazard containment door" }, /turf/open/floor/plasteel/delivery{ heat_capacity = 1e+006; 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 8fa869b173d..9a7f95d8ccc 100644 --- a/_maps/map_files/BirdStation/BirdStation.dmm +++ b/_maps/map_files/BirdStation/BirdStation.dmm @@ -15000,8 +15000,7 @@ /area/maintenance/asmaint2) "aLm" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on{ - name = "acidproof air injector"; - unacidable = 1 + name = "acidproof air injector" }, /turf/open/floor/engine, /area/toxins/xenobiology) @@ -20926,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/DreamStation/dreamstation04.dmm b/_maps/map_files/DreamStation/dreamstation04.dmm index 3dd81290705..721fc91755e 100644 --- a/_maps/map_files/DreamStation/dreamstation04.dmm +++ b/_maps/map_files/DreamStation/dreamstation04.dmm @@ -73553,8 +73553,7 @@ }, /obj/machinery/door/poddoor/preopen{ id = "Xenolab"; - name = "test chamber blast door"; - unacidable = 1 + name = "test chamber blast door" }, /turf/open/floor/engine, /area/toxins/xenobiology) @@ -73671,8 +73670,7 @@ /area/toxins/xenobiology) "cPV" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 1; - unacidable = 1 + dir = 1 }, /turf/open/floor/engine, /area/toxins/xenobiology) diff --git a/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm b/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm index fbc55052aad..3b3e3b58934 100644 --- a/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm +++ b/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm @@ -11881,8 +11881,7 @@ /area/toxins/misc_lab) "awm" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 1; - unacidable = 1 + dir = 1 }, /turf/open/floor/engine, /area/toxins/misc_lab) diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 80d1fb08afe..a4545d7ad81 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -93290,8 +93290,7 @@ /area/toxins/xenobiology) "deG" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 1; - unacidable = 1 + dir = 1 }, /turf/open/floor/engine, /area/toxins/xenobiology) 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/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm index 862a88aeaf2..b9bf7fc16cf 100644 --- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm +++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm @@ -46887,8 +46887,7 @@ /area/toxins/xenobiology) "bZc" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 1; - unacidable = 1 + dir = 1 }, /turf/open/floor/engine, /area/toxins/misc_lab) diff --git a/_maps/map_files/generic/z2.dmm b/_maps/map_files/generic/z2.dmm index 98896517220..e6daf908885 100644 --- a/_maps/map_files/generic/z2.dmm +++ b/_maps/map_files/generic/z2.dmm @@ -2915,14 +2915,11 @@ /turf/open/floor/plasteel/black, /area/centcom/evac) "iZ" = ( -/obj/item/weapon/shard{ +/turf/closed/indestructible/fakeglass{ color = "#008000"; - icon_state = "small" + dir = 8; + icon_state = "fakewindows" }, -/obj/structure/grille/broken{ - color = "#008000" - }, -/turf/open/floor/plating/airless, /area/wizard_station) "ja" = ( /turf/closed/indestructible/fakeglass{ @@ -3051,8 +3048,8 @@ }, /area/tdome/tdomeobserve) "ju" = ( -/obj/structure/lattice, -/turf/open/space/transit, +/obj/machinery/computer/camera_advanced, +/turf/open/floor/wood, /area/wizard_station) "jv" = ( /obj/item/weapon/shard{ @@ -3064,9 +3061,7 @@ /area/wizard_station) "jw" = ( /obj/machinery/computer/shuttle, -/turf/open/floor/plasteel/cult/airless{ - icon_state = "cultdamage" - }, +/turf/open/floor/engine/cult, /area/wizard_station) "jx" = ( /turf/open/floor/engine/cult/airless, @@ -3180,9 +3175,8 @@ }, /area/wizard_station) "jP" = ( -/turf/open/floor/plasteel/cult/airless{ - icon_state = "cultdamage3" - }, +/obj/structure/bookcase/random/adult, +/turf/open/floor/plasteel/white, /area/wizard_station) "jQ" = ( /obj/effect/decal/cleanable/blood/gibs/body, @@ -3305,7 +3299,7 @@ icon_state = "processor"; name = "byond random number generator" }, -/turf/open/floor/plasteel/cult/airless, +/turf/open/floor/engine/cult, /area/wizard_station) "kj" = ( /turf/open/floor/plasteel/cult/airless{ @@ -3323,7 +3317,7 @@ icon_state = "nim"; name = "wizard of yendor showcase" }, -/turf/open/floor/engine/cult/airless, +/turf/open/floor/engine/cult, /area/wizard_station) "km" = ( /turf/closed/indestructible/fakeglass{ @@ -3392,12 +3386,11 @@ }, /area/wizard_station) "kv" = ( -/obj/effect/forcefield, -/obj/structure/door_assembly/door_assembly_uranium{ - anchored = 1; - name = "Bridge" +/obj/machinery/door/airlock{ + icon = 'icons/obj/doors/airlocks/station/uranium.dmi'; + name = "Cockpit" }, -/turf/open/floor/plasteel/cult, +/turf/open/floor/engine/cult/airless, /area/wizard_station) "kw" = ( /turf/closed/indestructible/fakeglass{ @@ -3447,7 +3440,7 @@ /area/wizard_station) "kF" = ( /obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/engine/cult, +/turf/open/floor/grass, /area/wizard_station) "kG" = ( /turf/open/floor/engine/cult, @@ -3507,12 +3500,14 @@ }, /area/shuttle/assault_pod) "kP" = ( -/turf/closed/wall/mineral/titanium, +/turf/open/floor/wood, /area/wizard_station) "kQ" = ( -/turf/closed/indestructible/fakedoor{ - name = "Squad 4 Pod" +/obj/structure/chair/wood/wings{ + icon_state = "wooden_chair_wings"; + dir = 1 }, +/turf/open/floor/wood, /area/wizard_station) "kR" = ( /turf/closed/wall/shuttle{ @@ -3521,8 +3516,7 @@ }, /area/wizard_station) "kS" = ( -/turf/open/floor/plasteel/cult, -/turf/closed/wall/mineral/titanium/interior, +/turf/open/floor/grass, /area/wizard_station) "kT" = ( /obj/effect/forcefield, @@ -3534,10 +3528,11 @@ }, /area/wizard_station) "kV" = ( -/obj/effect/forcefield, -/turf/open/floor/plasteel/cult{ - icon_state = "cultdamage" +/obj/structure/table/wood/fancy, +/obj/item/weapon/storage/pill_bottle/dice{ + icon_state = "magicdicebag" }, +/turf/open/floor/carpet, /area/wizard_station) "kW" = ( /turf/open/floor/plasteel/darkred/side{ @@ -3624,12 +3619,18 @@ /turf/open/floor/plasteel/airless, /area/wizard_station) "ll" = ( -/turf/open/floor/plasteel/airless, +/obj/structure/table/wood/fancy, +/obj/item/weapon/skub{ + pixel_y = 16 + }, +/turf/open/floor/plasteel/white, /area/wizard_station) "lm" = ( -/obj/machinery/door/poddoor/preopen, -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/plating/airless, +/obj/machinery/door/airlock{ + icon = 'icons/obj/doors/airlocks/station/uranium.dmi'; + name = "Observation Room" + }, +/turf/open/floor/engine/cult, /area/wizard_station) "ln" = ( /turf/open/floor/plasteel/cult{ @@ -3637,16 +3638,16 @@ }, /area/wizard_station) "lo" = ( -/obj/effect/forcefield, -/turf/open/floor/plasteel/cult{ - icon_state = "cultdamage7" +/obj/machinery/door/airlock{ + icon = 'icons/obj/doors/airlocks/station/uranium.dmi'; + name = "Game Room" }, +/turf/open/floor/engine/cult, /area/wizard_station) "lp" = ( -/obj/effect/forcefield, -/turf/open/floor/plasteel/cult{ - icon_state = "cultdamage5" - }, +/obj/structure/table/wood/fancy, +/obj/item/device/camera/spooky, +/turf/open/floor/carpet, /area/wizard_station) "lq" = ( /turf/open/floor/plasteel/black, @@ -3710,10 +3711,8 @@ /area/wizard_station) "lB" = ( /obj/structure/table/wood/poker, -/obj/item/toy/cards/cardhand, -/turf/open/floor/plasteel/cult/airless{ - icon_state = "cultdamage2" - }, +/obj/item/toy/cards/deck, +/turf/open/floor/carpet, /area/wizard_station) "lC" = ( /obj/machinery/computer/telecrystals/boss, @@ -3762,7 +3761,7 @@ /area/wizard_station) "lH" = ( /obj/machinery/vending/magivend, -/turf/open/floor/plasteel/cult, +/turf/open/floor/engine/cult, /area/wizard_station) "lI" = ( /turf/open/floor/plasteel/cult{ @@ -3798,9 +3797,9 @@ /turf/open/floor/plasteel/black, /area/syndicate_mothership) "lQ" = ( -/obj/structure/door_assembly/door_assembly_uranium{ - anchored = 1; - name = "Break Room" +/obj/machinery/door/airlock{ + icon = 'icons/obj/doors/airlocks/station/uranium.dmi'; + name = "Study" }, /turf/open/floor/engine/cult, /area/wizard_station) @@ -3857,20 +3856,17 @@ /turf/open/floor/engine/cult, /area/wizard_station) "mb" = ( -/obj/structure/rack, -/obj/item/clothing/head/helmet/space/hardsuit/wizard, -/turf/open/floor/engine/cult, +/obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/lizard, +/turf/open/floor/grass, /area/wizard_station) "mc" = ( /obj/effect/decal/cleanable/blood/splatter, /obj/effect/decal/cleanable/blood/gibs/body, -/turf/open/floor/engine/cult, +/turf/open/floor/grass, /area/wizard_station) "md" = ( -/obj/effect/forcefield, -/turf/open/floor/plasteel/cult/airless{ - icon_state = "cultdamage" - }, +/obj/effect/decal/remains/xeno/larva, +/turf/open/floor/grass, /area/wizard_station) "me" = ( /obj/structure/flora/grass/brown, @@ -4024,7 +4020,7 @@ }, /area/wizard_station) "mA" = ( -/obj/structure/bookcase, +/obj/structure/bookcase/random/reference, /turf/open/floor/engine/cult, /area/wizard_station) "mB" = ( @@ -4048,7 +4044,7 @@ /mob/living/simple_animal/hostile/creature{ name = "Experiment 35b" }, -/turf/open/floor/engine/cult, +/turf/open/floor/grass, /area/wizard_station) "mF" = ( /obj/machinery/door/poddoor/preopen, @@ -4133,14 +4129,12 @@ /obj/effect/landmark/start{ name = "wizard" }, -/turf/open/floor/plasteel/cult{ - icon_state = "cultdamage5" - }, +/turf/open/floor/engine/cult, /area/wizard_station) "mR" = ( /obj/effect/decal/remains/human, /obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/engine/cult, +/turf/open/floor/grass, /area/wizard_station) "mS" = ( /turf/open/floor/plasteel/cult, @@ -4150,9 +4144,8 @@ }, /area/wizard_station) "mT" = ( -/turf/closed/indestructible/fakedoor{ - name = "Squad 3 Pod" - }, +/obj/effect/decal/remains/xeno, +/turf/open/floor/grass, /area/wizard_station) "mU" = ( /obj/machinery/camera{ @@ -4170,7 +4163,11 @@ /turf/open/floor/engine/cult, /area/wizard_station) "mW" = ( -/obj/structure/destructible/cult/pylon, +/mob/living/simple_animal/bot/medbot/mysterious{ + desc = "If you don't accidentally blow yourself up from time to time you're not really a wizard anyway."; + faction = list("neutral","silicon","creature"); + name = "Nobody's Perfect" + }, /turf/open/floor/engine/cult, /area/wizard_station) "mX" = ( @@ -4189,14 +4186,13 @@ /turf/open/floor/engine/cult, /area/wizard_station) "na" = ( -/turf/open/floor/plasteel/cult/airless{ - icon_state = "cultdamage4" - }, +/obj/item/weapon/reagent_containers/food/snacks/meat/slab/xeno, +/turf/open/floor/grass, /area/wizard_station) "nb" = ( -/obj/structure/door_assembly/door_assembly_uranium{ - anchored = 1; - name = "Corridor A" +/obj/machinery/door/airlock{ + icon = 'icons/obj/doors/airlocks/station/uranium.dmi'; + name = "Observation Deck" }, /turf/open/floor/engine/cult, /area/wizard_station) @@ -4228,9 +4224,10 @@ /turf/open/floor/plasteel/black, /area/tdome/arena) "nh" = ( -/turf/open/floor/plasteel/cult/airless{ - icon_state = "cultdamage2" +/obj/structure/urinal{ + pixel_y = 28 }, +/turf/open/floor/plasteel/white, /area/wizard_station) "ni" = ( /obj/effect/forcefield, @@ -4415,10 +4412,8 @@ /turf/open/floor/carpet, /area/wizard_station) "nL" = ( -/obj/effect/decal/cleanable/blood/gibs/body, -/turf/open/floor/plasteel/cult/airless{ - icon_state = "cultdamage" - }, +/obj/item/weapon/soap/homemade, +/turf/open/floor/plasteel/white, /area/wizard_station) "nM" = ( /turf/closed/wall/shuttle{ @@ -4433,9 +4428,7 @@ }, /area/wizard_station) "nO" = ( -/turf/open/floor/plasteel/cult/airless{ - icon_state = "cultdamage7" - }, +/turf/open/floor/plasteel/warning, /area/wizard_station) "nP" = ( /obj/structure/dresser, @@ -4449,9 +4442,12 @@ /turf/open/floor/carpet, /area/wizard_station) "nR" = ( -/turf/closed/indestructible/fakedoor{ - name = "Squad 2 Pod" +/obj/structure/toilet{ + tag = "icon-toilet00 (NORTH)"; + icon_state = "toilet00"; + dir = 1 }, +/turf/open/floor/plasteel/white, /area/wizard_station) "nS" = ( /turf/closed/wall/shuttle, @@ -4646,10 +4642,11 @@ /area/centcom/holding) "ow" = ( /obj/structure/window/reinforced{ + burn_state = -2; color = "#008000"; dir = 1 }, -/turf/open/floor/plating/lava/airless, +/turf/open/floor/plating/lava, /area/wizard_station) "ox" = ( /obj/structure/rack, @@ -4663,8 +4660,10 @@ /turf/open/floor/plating/beach/sand, /area/centcom/holding) "oz" = ( -/obj/structure/shuttle/engine/heater, -/turf/open/floor/plating/lava/airless, +/obj/structure/shuttle/engine/heater{ + burn_state = -2 + }, +/turf/open/floor/plating/lava, /area/wizard_station) "oA" = ( /obj/structure/rack, @@ -5797,6 +5796,152 @@ dir = 8 }, /area/holodeck/rec_center/medical) +"sK" = ( +/obj/structure/table/wood/fancy, +/obj/item/device/radio/intercom{ + desc = "Talk smack through this." + }, +/turf/open/floor/wood, +/area/wizard_station) +"sL" = ( +/obj/structure/chair/wood/wings, +/turf/open/floor/carpet, +/area/wizard_station) +"sM" = ( +/obj/structure/chair/wood/wings{ + tag = "icon-wooden_chair_wings (EAST)"; + icon_state = "wooden_chair_wings"; + dir = 4 + }, +/turf/open/floor/carpet, +/area/wizard_station) +"sN" = ( +/obj/structure/table/wood/poker, +/obj/item/toy/figure/wizard, +/turf/open/floor/carpet, +/area/wizard_station) +"sO" = ( +/obj/structure/chair/wood/wings{ + tag = "icon-wooden_chair_wings (WEST)"; + icon_state = "wooden_chair_wings"; + dir = 8 + }, +/turf/open/floor/carpet, +/area/wizard_station) +"sP" = ( +/obj/structure/chair/wood/wings{ + icon_state = "wooden_chair_wings"; + dir = 1 + }, +/turf/open/floor/carpet, +/area/wizard_station) +"sQ" = ( +/obj/structure/chair/wood/wings{ + tag = "icon-wooden_chair_wings (WEST)"; + icon_state = "wooden_chair_wings"; + dir = 8 + }, +/turf/open/floor/wood, +/area/wizard_station) +"sR" = ( +/obj/item/weapon/statuebust{ + pixel_y = 12 + }, +/obj/structure/table/wood/fancy, +/turf/open/floor/wood, +/area/wizard_station) +"sS" = ( +/obj/structure/table/wood/fancy, +/obj/item/weapon/storage/photo_album, +/turf/open/floor/carpet, +/area/wizard_station) +"sT" = ( +/obj/item/weapon/reagent_containers/food/snacks/meat/slab/corgi, +/turf/open/floor/grass, +/area/wizard_station) +"sU" = ( +/obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/slime, +/turf/open/floor/grass, +/area/wizard_station) +"sV" = ( +/obj/machinery/door/airlock{ + icon = 'icons/obj/doors/airlocks/station/uranium.dmi'; + name = "Storage" + }, +/turf/open/floor/engine/cult, +/area/wizard_station) +"sW" = ( +/obj/machinery/door/airlock{ + icon = 'icons/obj/doors/airlocks/station/uranium.dmi'; + name = "Bathroom" + }, +/turf/open/floor/engine/cult, +/area/wizard_station) +"sX" = ( +/obj/item/clothing/suit/wizrobe/black, +/obj/item/clothing/head/wizard/black, +/turf/open/floor/plasteel/bot, +/area/wizard_station) +"sY" = ( +/turf/open/floor/plasteel/bot, +/area/wizard_station) +"sZ" = ( +/obj/item/cardboard_cutout, +/turf/open/floor/plasteel/bot, +/area/wizard_station) +"ta" = ( +/obj/structure/punching_bag, +/turf/open/floor/carpet, +/area/wizard_station) +"tb" = ( +/turf/open/floor/plasteel/white, +/area/wizard_station) +"tc" = ( +/obj/structure/mirror/magic{ + pixel_y = 28 + }, +/obj/structure/sink{ + pixel_y = 20 + }, +/turf/open/floor/plasteel/white, +/area/wizard_station) +"td" = ( +/obj/item/weapon/cautery/alien, +/turf/open/floor/plasteel/bot, +/area/wizard_station) +"te" = ( +/obj/item/weapon/coin/antagtoken, +/turf/open/floor/plasteel/bot, +/area/wizard_station) +"tf" = ( +/obj/structure/closet/cardboard, +/obj/item/weapon/banhammer, +/turf/open/floor/plasteel/warning, +/area/wizard_station) +"tg" = ( +/obj/vehicle/scooter/skateboard{ + tag = "icon-skateboard (EAST)"; + icon_state = "skateboard"; + dir = 4 + }, +/turf/open/floor/plasteel/warning, +/area/wizard_station) +"th" = ( +/obj/machinery/door/airlock{ + icon = 'icons/obj/doors/airlocks/station/uranium.dmi'; + name = "Engine Room" + }, +/obj/structure/barricade/wooden, +/turf/open/floor/engine/cult, +/area/wizard_station) +"ti" = ( +/obj/structure/table/wood, +/obj/item/weapon/bikehorn/golden{ + pixel_x = -8; + pixel_y = 8 + }, +/turf/open/floor/engine/cult, +/area/wizard_station) "tj" = ( /turf/closed/indestructible/riveted, /area/awaymission/errorroom) @@ -8619,7 +8764,7 @@ aa aa aa aa -ab +aa ab ab ab @@ -8876,7 +9021,7 @@ aa aa aa aa -ab +aa ab ab ab @@ -9133,7 +9278,7 @@ aa aa aa aa -ab +aa ab ab ab @@ -9390,7 +9535,7 @@ aa aa aa aa -ab +aa ab ab ab @@ -9647,7 +9792,7 @@ aa aa aa aa -ab +aa ab ab ab @@ -9904,7 +10049,7 @@ aa aa aa aa -ab +aa ab ab ab @@ -10161,7 +10306,7 @@ aa aa aa aa -ab +aa ab ab ab @@ -10418,7 +10563,7 @@ aa aa aa aa -ab +aa ab ab ab @@ -10650,9 +10795,9 @@ aa aa aa aa -aa -aa -aa +jc +jc +jc jc sa sb @@ -10660,6 +10805,9 @@ mA sb mV jc +mo +mO +jc aa aa aa @@ -10673,9 +10821,6 @@ aa aa aa aa -aa -aa -ab ab ab ab @@ -10906,10 +11051,10 @@ aa aa aa aa -aa -aa +jc +jc ju -kV +kP lQ kG kG @@ -10917,8 +11062,10 @@ kG kG kG nb -md -ju +kG +kG +jc +jc aa aa aa @@ -10927,7 +11074,6 @@ aa aa aa aa -ju aa aa aa @@ -10989,7 +11135,6 @@ ab ab ab ab -ab "} (21,1,1) = {" ab @@ -11162,20 +11307,26 @@ aa aa aa aa -aa -aa -li -aa -ju +jc +jc +sK +sQ +kP jc kG kG -ln -lI +kG +kG kG jc -ju -ju +kG +nD +kG +jc +jc +jc +jc +jc aa aa aa @@ -11184,12 +11335,6 @@ aa aa aa aa -ju -ju -aa -aa -aa -ab ab ab ab @@ -11418,35 +11563,35 @@ aa aa aa aa -aa -aa -kP -lj -kP -aa jc -lW -mp +jc +kP +kP +kP +kP +jc +sa +sb kG -lz +sb mV jc -aa -aa -aa -aa -aa -aa -aa -aa -aa -ju -nO +kG +kG +kG +jc +sX +td +tf +jc +jc +ku jc aa aa aa -ab +aa +aa ab ab ab @@ -11675,35 +11820,35 @@ aa aa aa aa -aa +jc ju kQ -lk kP -aa +kP +kP jc jc mo -mB -mP +mz +mO jc jc -ju -nh -ju -aa -aa -aa +kG +nD +kG +sV +sY +sY nO -ju -ju -kj -jx +th +kG +kG jc aa aa aa -ab +aa +aa ab ab ab @@ -11929,38 +12074,38 @@ aa aa aa aa -ju -ju jc jc -ju +jc +jc +sK kP -ll kP -ju +kP +sR jc lX -kF -lz -lI +kG +kG +kG mW jc -aa -kj -ju -ju -aa -aa -ju +kG +kG +kG +jc +sZ +te +tg jc jc -ok +th jc jc jc aa aa -ab +aa ab ab ab @@ -12185,29 +12330,29 @@ aa aa aa aa -aa -aa -jN +jc +jc +kG ki jc jc -kS +jc lm -kS -lG +jc +jc jc lY -kF -ln +kG +kG kG kG jc -ju -aa -aa +kG +nD +kG +jc jc jc -ku jc jc kG @@ -12217,7 +12362,7 @@ ow jc aa aa -ab +aa ab ab ab @@ -12443,25 +12588,25 @@ aa aa aa iZ -jv -jO -kj +kG +kG +kG ku -kE -kT -kT -kT +kG +kG +kG +kG lH jc kG kG kG kG -ln +kG ku -ne -ni -nr +kG +kG +kG jc nC nD @@ -12474,7 +12619,7 @@ ow oz oC aa -ab +aa ab ab ab @@ -12701,24 +12846,24 @@ aa aa ja jw -jP -sc +kG +kG kv -kF -kU kG kG -lI +kG +kG +kG lR kG kG hL mQ -lI -nc -kU -nj -ln +kG +nb +kG +nD +kG ny nD nK @@ -12731,7 +12876,7 @@ ow oz oC aa -ab +aa ab ab ab @@ -12957,14 +13102,14 @@ aa aa aa jb -jx -jx -kk +kG +kG +kG ku kG kG -ln -lz +kG +kG lJ jc kG @@ -12973,11 +13118,11 @@ kG kG kG ku -nr -nr -ni +kG +kG +kG jc -nD +ta nD nQ jc @@ -12988,7 +13133,7 @@ ow oz oC aa -ab +aa ab ab ab @@ -13215,14 +13360,14 @@ aa aa jc jc -jQ +kG kl jc jc -kV +jc lo -ln -lI +jc +jc jc lZ kG @@ -13230,22 +13375,22 @@ kG kG kG jc -aa -ju -aa -jc -jc -ku -jc -jc kG +nD +kG +jc +jc +jc +jc +jc +ti kG oo ow jc aa aa -ab +aa ab ab ab @@ -13475,9 +13620,9 @@ jc jc jc jc -aa -ju -lp +nD +sM +nD lp kV jc @@ -13485,24 +13630,24 @@ ma mr mD kG -mW +kG +jc +kG +kG +kG jc -aa -aa -aa -ju nh nL jP jc jc -sc +ku jc jc jc aa aa -ab +aa ab ab ab @@ -13731,12 +13876,12 @@ aa aa aa aa -aa -aa -aa -ju -aa -ju +jc +sL +sN +sP +nD +sS jc jc mo @@ -13744,14 +13889,15 @@ mz mO jc jc -ju -nk -aa -aa -kS -kP +kG +nD +kG +sW +tb +tb nR -kP +jc +aa aa aa aa @@ -13759,7 +13905,6 @@ aa aa aa aa -ab ab ab ab @@ -13988,28 +14133,29 @@ aa aa aa aa -aa -aa -aa -ju -lA -ju jc +jc +sO +nD +sM +nD +iZ mb -ms +kF mE mR -mX +kF +iZ +kG +kG +kG +jc +tc +tb +ll jc aa aa -ju -ju -lm -ll -ll -nT -nX aa aa aa @@ -14073,7 +14219,6 @@ ab ab ab ab -ab "} (33,1,1) = {" ab @@ -14246,34 +14391,34 @@ aa aa aa aa -aa -aa -aa +jc +jc +sL lB -aa +sP +ja +mc +kS +mc +sU +mc +ja +kG +nD +kG +jc +jc +jc jc -mc -kS -mF -kS -mc jc aa aa aa -ju -kS -kP -kP -kP aa aa aa aa aa -aa -aa -ab ab ab ab @@ -14504,23 +14649,24 @@ aa aa aa aa -aa -aa -aa -aa -aa +jc +jc +sO +nD +jb md -kP -mG -kP -mZ -ju -aa -aa -aa -aa -nF -jx +sT +kF +kS +kF +jb +kG +kG +jc +jc +aa +aa +aa aa aa aa @@ -14530,7 +14676,6 @@ aa aa aa aa -ab ab ab ab @@ -14762,32 +14907,32 @@ aa aa aa aa -aa -aa -aa -ju +jc +jc +jc +jc kF -kP -mH +kS +mc mT na -ju -aa -aa -aa -aa -ju jc -ju -ju -ju -kj +mo +mO +jc +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa aa aa -ab ab ab ab @@ -15022,14 +15167,15 @@ aa aa aa aa -aa -ju -kP -mI -kP -aa -ju -ju +jc +jc +jc +jc +jc +jc +jc +aa +aa aa aa aa @@ -15044,7 +15190,6 @@ aa aa aa aa -ab ab ab ab @@ -15280,9 +15425,6 @@ aa aa aa aa -ju -aa -mJ aa aa aa @@ -15301,7 +15443,10 @@ aa aa aa aa -ab +aa +aa +aa +aa ab ab ab @@ -15558,7 +15703,7 @@ aa aa aa aa -ab +aa ab ab ab @@ -15815,7 +15960,7 @@ aa aa aa aa -ab +aa ab ab ab @@ -16072,7 +16217,7 @@ aa aa aa aa -ab +aa ab ab ab @@ -16286,50 +16431,50 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa ab ab ab @@ -16543,50 +16688,50 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa ab ab ab 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/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 1ec6a0ed426..a9821785a81 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -340,11 +340,15 @@ var/list/bloody_footprints_cache = list() #define SENTIENCE_MINEBOT 4 #define SENTIENCE_BOSS 5 -//Fire stuff, for burn_state -#define LAVA_PROOF -2 -#define FIRE_PROOF -1 -#define FLAMMABLE 0 -#define ON_FIRE 1 + +//Fire and Acid stuff, for resistance_flags +#define LAVA_PROOF 1 +#define FIRE_PROOF 2 //not flammable (but may or may not take damage from fire) +#define ON_FIRE 4 +#define UNACIDABLE 8 //acid can't even appear on it, let alone melt it. +#define ACID_PROOF 16 //acid stuck on it doesn't melt it. +#define INDESTRUCTIBLE 32 //doesn't take damage +#define EMP_PROOF 64 //immune to emp //Ghost orbit types: 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/__HELPERS/pronouns.dm b/code/__HELPERS/pronouns.dm new file mode 100644 index 00000000000..c3f2d4c18c8 --- /dev/null +++ b/code/__HELPERS/pronouns.dm @@ -0,0 +1,166 @@ +//pronoun procs, for getting pronouns without using the text macros that only work in certain positions +//datums don't have gender, but most of their subtypes do! +/datum/proc/they_pronoun(capitalized, temp_gender) + . = "it" + if(capitalized) + . = capitalize(.) + +/datum/proc/their_pronoun(capitalized, temp_gender) + . = "its" + if(capitalized) + . = capitalize(.) + +/datum/proc/them_pronoun(capitalized, temp_gender) + . = "it" + if(capitalized) + . = capitalize(.) + +/datum/proc/get_has(temp_gender) + . = "has" + +/datum/proc/get_is(temp_gender) + . = "is" + +//like clients, which do have gender. +/client/they_pronoun(capitalized, temp_gender) + if(!temp_gender) + temp_gender = gender + . = "they" + switch(temp_gender) + if(FEMALE) + . = "she" + if(MALE) + . = "he" + if(capitalized) + . = capitalize(.) + +/client/their_pronoun(capitalized, temp_gender) + if(!temp_gender) + temp_gender = gender + . = "their" + switch(temp_gender) + if(FEMALE) + . = "her" + if(MALE) + . = "his" + if(capitalized) + . = capitalize(.) + +/client/them_pronoun(capitalized, temp_gender) + if(!temp_gender) + temp_gender = gender + . = "them" + switch(temp_gender) + if(FEMALE) + . = "her" + if(MALE) + . = "him" + if(capitalized) + . = capitalize(.) + +/client/get_has(temp_gender) + if(!temp_gender) + temp_gender = gender + . = "has" + if(temp_gender == PLURAL || temp_gender == NEUTER) + . = "have" + +/client/get_is(temp_gender) + if(!temp_gender) + temp_gender = gender + . = "is" + if(temp_gender == PLURAL || temp_gender == NEUTER) + . = "are" + +//mobs(and atoms but atoms don't really matter write your own proc overrides) also have gender! +/mob/they_pronoun(capitalized, temp_gender) + if(!temp_gender) + temp_gender = gender + . = "it" + switch(temp_gender) + if(FEMALE) + . = "she" + if(MALE) + . = "he" + if(PLURAL) + . = "they" + if(capitalized) + . = capitalize(.) + +/mob/their_pronoun(capitalized, temp_gender) + if(!temp_gender) + temp_gender = gender + . = "its" + switch(temp_gender) + if(FEMALE) + . = "her" + if(MALE) + . = "his" + if(PLURAL) + . = "their" + if(capitalized) + . = capitalize(.) + +/mob/them_pronoun(capitalized, temp_gender) + if(!temp_gender) + temp_gender = gender + . = "it" + switch(temp_gender) + if(FEMALE) + . = "her" + if(MALE) + . = "him" + if(PLURAL) + . = "them" + if(capitalized) + . = capitalize(.) + +/mob/get_has(temp_gender) + if(!temp_gender) + temp_gender = gender + . = "has" + if(temp_gender == PLURAL) + . = "have" + +/mob/get_is(temp_gender) + if(!temp_gender) + temp_gender = gender + . = "is" + if(temp_gender == PLURAL) + . = "are" + +//humans need special handling, because they can have their gender hidden +/mob/living/carbon/human/they_pronoun(capitalized, temp_gender) + var/list/obscured = check_obscured_slots() + var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) + if((slot_w_uniform in obscured) && skipface) + temp_gender = PLURAL + return ..() + +/mob/living/carbon/human/their_pronoun(capitalized, temp_gender) + var/list/obscured = check_obscured_slots() + var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) + if((slot_w_uniform in obscured) && skipface) + temp_gender = PLURAL + return ..() + +/mob/living/carbon/human/them_pronoun(capitalized, temp_gender) + var/list/obscured = check_obscured_slots() + var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) + if((slot_w_uniform in obscured) && skipface) + temp_gender = PLURAL + return ..() + +/mob/living/carbon/human/get_has(temp_gender) + var/list/obscured = check_obscured_slots() + var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) + if((slot_w_uniform in obscured) && skipface) + temp_gender = PLURAL + return ..() + +/mob/living/carbon/human/get_is(temp_gender) + var/list/obscured = check_obscured_slots() + var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) + if((slot_w_uniform in obscured) && skipface) + temp_gender = PLURAL + return ..() 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/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 8dedf4b91b7..adfe508f6c8 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -10,7 +10,7 @@ name = "" icon = 'icons/mob/screen_gen.dmi' layer = ABOVE_HUD_LAYER - unacidable = 1 + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE appearance_flags = APPEARANCE_UI var/obj/master = null //A reference to the object in the slot. Grabs or items, generally. var/datum/hud/hud = null // A reference to the owner HUD, if any. diff --git a/code/controllers/subsystem/processing/objects.dm b/code/controllers/subsystem/processing/objects.dm index c3c01ec47e4..fbb716ba326 100644 --- a/code/controllers/subsystem/processing/objects.dm +++ b/code/controllers/subsystem/processing/objects.dm @@ -56,7 +56,7 @@ var/datum/subsystem/objects/SSobj return for(var/obj/burningobj in SSobj.burning) - if(burningobj && (burningobj.burn_state == ON_FIRE)) + if(burningobj && (burningobj.resistance_flags & ON_FIRE)) if(burningobj.burn_world_time < world.time) burningobj.burn() else diff --git a/code/datums/antagonists/antag_datum.dm b/code/datums/antagonists/antag_datum.dm new file mode 100644 index 00000000000..07109d242d1 --- /dev/null +++ b/code/datums/antagonists/antag_datum.dm @@ -0,0 +1,87 @@ +//The Datum, Antagonist. Handles various antag things via a datum. +/datum/antagonist + var/mob/living/owner //who's our owner and accordingly an antagonist + var/some_flufftext = "yer an antag larry" + var/prevented_antag_datum_type //the type of antag datum that this datum can't coexist with; should probably be a list + var/silent_update = FALSE //if we suppress messages during on_gain, apply_innate_effects, remove_innate_effects, and on_remove + +/datum/antagonist/New() + if(!prevented_antag_datum_type) + prevented_antag_datum_type = type + +/datum/antagonist/Destroy() + owner = null + return ..() + +/datum/antagonist/proc/can_be_owned(mob/living/new_body) + return new_body && !new_body.has_antag_datum(prevented_antag_datum_type, TRUE) + +/datum/antagonist/proc/give_to_body(mob/living/new_body) //tries to give an antag datum to a mob. cancels out if it can't be owned by the new body + if(new_body && can_be_owned(new_body)) + new_body.antag_datums += src + owner = new_body + on_gain() + . = src //return the datum if successful + else + qdel(src) + . = FALSE + +/datum/antagonist/proc/on_gain() //on initial gain of antag datum, do this. should only be called once per datum + apply_innate_effects() + if(!silent_update && some_flufftext) + owner << some_flufftext + +/datum/antagonist/proc/apply_innate_effects() //applies innate effects to the owner, may be called multiple times due to mind transferral, but should only be called once per mob + //antag huds would go here if antag huds were less completely unworkable as-is + +/datum/antagonist/proc/remove_innate_effects() //removes innate effects from the owner, may be called multiple times due to mind transferral, but should only be called once per mob + //also antag huds but see above antag huds a shit + +/datum/antagonist/proc/on_remove() //totally removes the antag datum from the owner; can only be called once per owner + remove_innate_effects() + owner.antag_datums -= src + qdel(src) + +/datum/antagonist/proc/transfer_to_new_body(mob/living/new_body) + remove_innate_effects() + if(!islist(new_body.antag_datums)) + new_body.antag_datums = list() + new_body.antag_datums += src + owner.antag_datums -= src + owner = new_body + apply_innate_effects() + +//mob var and helper procs/Destroy override +/mob/living + var/list/antag_datums + +/mob/living/Destroy() //TODO: merge this with the living/Destroy() in code\modules\mob\living\living.dm (currently line 29) + if(islist(antag_datums)) + for(var/i in antag_datums) + qdel(i) + antag_datums = null + return ..() + +/mob/living/proc/can_have_antag_datum(datum_type) //if we can have this specific antagonist datum; neccessary, but requires creating a new antag datum each time. + var/datum/antagonist/D = new datum_type() + . = D.can_be_owned(src) //we can't exactly cache the results, either, because conditions might change. avoid use? TODO: better proc + qdel(D) + +/mob/living/proc/gain_antag_datum(datum_type) //tries to give a mob a specific antagonist datum; returns the datum if successful. + if(!islist(antag_datums)) + antag_datums = list() + var/datum/antagonist/D = new datum_type() + . = D.give_to_body(src) + +/mob/living/proc/has_antag_datum(type, check_subtypes) //checks this mob for if it has the antagonist datum. can either check specific type or subtypes + if(!islist(antag_datums)) + return FALSE + for(var/i in antag_datums) + var/datum/antagonist/D = i + if(check_subtypes) + if(istype(D, type)) + return D //if it finds the datum, will return it so you can mess with it + else + if(D.type == type) + return D + return FALSE diff --git a/code/datums/antagonists/datum_clockcult.dm b/code/datums/antagonists/datum_clockcult.dm new file mode 100644 index 00000000000..ad369769eb8 --- /dev/null +++ b/code/datums/antagonists/datum_clockcult.dm @@ -0,0 +1,133 @@ +//CLOCKCULT PROOF OF CONCEPT + +/datum/antagonist/clockcultist + prevented_antag_datum_type = /datum/antagonist/clockcultist + some_flufftext = null + var/datum/action/innate/hierophant/hierophant_network = new() + +/datum/antagonist/clockcultist/silent + silent_update = TRUE + +/datum/antagonist/clockcultist/Destroy() + qdel(hierophant_network) + ..() + +/datum/antagonist/clockcultist/can_be_owned(mob/living/new_body) + . = ..() + if(.) + . = is_eligible_servant(new_body) + +/datum/antagonist/clockcultist/give_to_body(mob/living/new_body) + if(!silent_update) + if(issilicon(new_body)) + new_body << "You are unable to compute this truth. Your vision glows a brilliant yellow, and all at once it comes to you. Ratvar, the Clockwork Justiciar, \ + lies in exile, derelict and forgotten in an unseen realm." + else + new_body << "[iscarbon(new_body) ? "Your mind is racing! Your body feels incredibly light! ":""]Your world glows a brilliant yellow! All at once it comes to you. \ + Ratvar, the Clockwork Justiciar, lies in exile, derelict and forgotten in an unseen realm." + . = ..() + if(!silent_update && new_body) + if(.) + new_body.visible_message("[new_body]'s eyes glow a blazing yellow!", \ + "Assist your new companions in their righteous efforts. Your goal is theirs, and theirs yours. You serve the Clockwork Justiciar above all else. Perform his every \ + whim without hesitation.") + else + new_body.visible_message("[new_body] seems to resist an unseen force!") + new_body << "And yet, you somehow push it all away." + +/datum/antagonist/clockcultist/on_gain() + if(ticker && ticker.mode && owner.mind) + ticker.mode.servants_of_ratvar += owner.mind + ticker.mode.update_servant_icons_added(owner.mind) + if(jobban_isbanned(owner, ROLE_SERVANT_OF_RATVAR)) + addtimer(ticker.mode, "replace_jobbaned_player", 0, FALSE, owner, ROLE_SERVANT_OF_RATVAR, ROLE_SERVANT_OF_RATVAR) + if(owner.mind) + owner.mind.special_role = "Servant of Ratvar" + owner.attack_log += "\[[time_stamp()]\] Has been converted to the cult of Ratvar!" + if(issilicon(owner)) + var/mob/living/silicon/S = owner + if(isrobot(S) && !silent_update) + S << "You have been desynced from your master AI. In addition, your onboard camera is no longer active and your safeties have been disabled." + S << "You can communicate with other servants by using the Hierophant Network action button in the upper left." + else if(isbrain(owner) || isclockmob(owner)) + owner << "You can communicate with other servants by using the Hierophant Network action button in the upper left." + ..() + +/datum/antagonist/clockcultist/apply_innate_effects() + all_clockwork_mobs += owner + owner.faction |= "ratvar" + owner.languages_spoken |= RATVAR + owner.languages_understood |= RATVAR + owner.update_action_buttons_icon() //because a few clockcult things are action buttons and we may be wearing/holding them for whatever reason, we need to update buttons + if(issilicon(owner)) + var/mob/living/silicon/S = owner + if(isrobot(S)) + var/mob/living/silicon/robot/R = S + R.UnlinkSelf() + R.emagged = 1 + else if(isAI(S)) + var/mob/living/silicon/ai/A = S + for(var/C in A.connected_robots) + var/mob/living/silicon/robot/R = C + if(R.connected_ai == A) + R.visible_message("[R]'s eyes glow a blazing yellow!", \ + "Assist your new companions in their righteous efforts. Your goal is theirs, and theirs yours. You serve the Clockwork Justiciar above all else. Perform his every \ + whim without hesitation.") + R << "Your onboard camera is no longer active and your safeties have been disabled." + add_servant_of_ratvar(R, TRUE) + S.laws = new/datum/ai_laws/ratvar + S.laws.associate(S) + S.update_icons() + S.show_laws() + hierophant_network.Grant(S) + hierophant_network.title = "Silicon" + hierophant_network.span_for_name = "nezbere" + hierophant_network.span_for_message = "brass" + else if(isbrain(owner)) + hierophant_network.Grant(owner) + hierophant_network.title = "Vessel" + hierophant_network.span_for_name = "nezbere" + hierophant_network.span_for_message = "alloy" + else if(isclockmob(owner)) + hierophant_network.Grant(owner) + hierophant_network.title = "Construct" + hierophant_network.span_for_name = "nezbere" + hierophant_network.span_for_message = "brass" + owner.throw_alert("clockinfo", /obj/screen/alert/clockwork/infodump) + cache_check(owner) + ..() + +/datum/antagonist/clockcultist/remove_innate_effects() + all_clockwork_mobs -= owner + owner.faction -= "ratvar" + owner.languages_spoken &= ~RATVAR + owner.languages_understood &= ~RATVAR + owner.update_action_buttons_icon() //because a few clockcult things are action buttons and we may be wearing/holding them, we need to update buttons + owner.clear_alert("clockinfo") + owner.clear_alert("nocache") + for(var/datum/action/innate/function_call/F in owner.actions) //Removes any bound Ratvarian spears + qdel(F) + if(issilicon(owner)) + var/mob/living/silicon/S = owner + if(isrobot(S)) + var/mob/living/silicon/robot/R = S + R.emagged = initial(R.emagged) + S.make_laws() + S.update_icons() + S.show_laws() + ..() + +/datum/antagonist/clockcultist/on_remove() + if(!silent_update) + owner.visible_message("[owner] seems to have remembered their true allegiance!", \ + "A cold, cold darkness flows through your mind, extinguishing the Justiciar's light and all of your memories as his servant.") + if(ticker && ticker.mode && owner.mind) + ticker.mode.servants_of_ratvar -= owner.mind + ticker.mode.update_servant_icons_removed(owner.mind) + if(owner.mind) + owner.mind.memory = "" //Not sure if there's a better way to do this + owner.mind.special_role = null + owner.attack_log += "\[[time_stamp()]\] Has renounced the cult of Ratvar!" + if(isrobot(owner)) + owner << "Despite your freedom from Ratvar's influence, you are still irreparably damaged and no longer possess certain functions such as AI linking." + ..() diff --git a/code/datums/antagonists/datum_cult.dm b/code/datums/antagonists/datum_cult.dm new file mode 100644 index 00000000000..6bc2fe69381 --- /dev/null +++ b/code/datums/antagonists/datum_cult.dm @@ -0,0 +1,47 @@ +/datum/antagonist/cultist + prevented_antag_datum_type = /datum/antagonist/cultist + some_flufftext = null + var/datum/action/innate/cultcomm/communion = new() + +/datum/antagonist/cultist/Destroy() + qdel(communion) + return ..() + +/datum/antagonist/cultist/can_be_owned(mob/living/new_body) + . = ..() + if(.) + . = is_convertable_to_cult(new_body) + +/datum/antagonist/cultist/on_gain() + if(ticker && ticker.mode && owner.mind) + ticker.mode.cult += owner.mind + ticker.mode.servants_of_ratvar += owner.mind + ticker.mode.update_cult_icons_added(owner.mind) + if(jobban_isbanned(owner, ROLE_CULTIST)) + addtimer(ticker.mode, "replace_jobbaned_player", 0, FALSE, owner, ROLE_CULTIST, ROLE_CULTIST) + if(owner.mind) + owner.mind.special_role = "Cultist" + owner.attack_log += "\[[time_stamp()]\] Has been converted to the cult of Nar'Sie!" + ..() + +/datum/antagonist/cultist/apply_innate_effects() + owner.faction |= "cult" + owner.verbs += /mob/living/proc/cult_help + communion.Grant(owner) + ..() + +/datum/antagonist/cultist/remove_innate_effects() + owner.faction -= "cult" + owner.verbs -= /mob/living/proc/cult_help + ..() + +/datum/antagonist/cultist/on_remove() + if(ticker && ticker.mode && owner.mind) + ticker.mode.cult -= owner.mind + ticker.mode.update_cult_icons_removed(owner.mind) + owner << "An unfamiliar white light flashes through your mind, cleansing the taint of the Dark One and all your memories as its servant." + owner.memory = "" + owner.attack_log += "\[[time_stamp()]\] Has renounced the cult of Nar'Sie!" + if(!silent_update) + owner.visible_message("[owner] looks like they just reverted to their old faith!") + ..() 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/datums/martial/krav_maga.dm b/code/datums/martial/krav_maga.dm index 330ca40d1c5..1370278bf6d 100644 --- a/code/datums/martial/krav_maga.dm +++ b/code/datums/martial/krav_maga.dm @@ -172,4 +172,4 @@ datum/martial_art/krav_maga/grab_act(var/mob/living/carbon/human/A, var/mob/livi min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT - burn_state = FIRE_PROOF \ No newline at end of file + resistance_flags = FIRE_PROOF \ No newline at end of file diff --git a/code/datums/mind.dm b/code/datums/mind.dm index b335ccdd762..b7c70b57878 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -83,6 +83,10 @@ if(new_character.mind) //disassociate any mind currently in our new body's mind variable new_character.mind.current = null + if(istype(current) && islist(current.antag_datums)) //wow apparently current isn't always living good fucking job SOMEONE + for(var/i in current.antag_datums) + var/datum/antagonist/D = i + D.transfer_to_new_body(new_character) var/datum/atom_hud/antag/hud_to_transfer = antag_hud//we need this because leave_hud() will clear this list leave_all_huds() //leave all the huds in the old body, so it won't get huds if somebody else enters it current = new_character //associate ourself with our new body @@ -215,7 +219,7 @@ ticker.mode.add_revolutionary(src) else if(is_servant_of_ratvar(creator)) - add_servant_of_ratvar(src) + add_servant_of_ratvar(current) else if(is_nuclear_operative(creator)) make_Nuke(null, null, 0, FALSE) diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index a64a16fb836..494b9ed9984 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -61,7 +61,7 @@ ..() /datum/status_effect/vanguard_shield/on_apply() - owner.add_stun_absorption("vanguard", 200, 1, "'s yellow aura momentarily intensifies!", "Your ward absorbs the stun!", " is radiating with a soft yellow light!") + owner.add_stun_absorption("vanguard", 200, 1, "'s yellow aura momentarily intensifies!", "Your ward absorbs the stun!", " radiating with a soft yellow light!") owner.visible_message("[owner] begins to faintly glow!", "You will absorb all stuns for the next twenty seconds.") /datum/status_effect/vanguard_shield/on_remove() @@ -102,7 +102,7 @@ owner.visible_message("[owner] shines with azure light!", "You feel Inath-neq's power flow through you! You're invincible!") owner.color = "#1E8CE1" owner.fully_heal() - owner.add_stun_absorption("inathneq", 150, 2, "'s flickering blue aura momentarily intensifies!", "Inath-neq's power absorbs the stun!", " is glowing with a flickering blue light!") + owner.add_stun_absorption("inathneq", 150, 2, "'s flickering blue aura momentarily intensifies!", "Inath-neq's power absorbs the stun!", " glowing with a flickering blue light!") owner.status_flags |= GODMODE animate(owner, color = initial(owner.color), time = 150, easing = EASE_IN) playsound(owner, 'sound/magic/Ethereal_Enter.ogg', 50, 1) 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..f08316fc060 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() @@ -326,7 +326,7 @@ var/list/blood_splatter_icons = list() G.add_blood(blood_dna) else transfer_blood_dna(blood_dna) - bloody_hands = rand(2, 4) + bloody_hands = rand(2, 4) update_inv_gloves() //handles bloody hands overlays and updating return 1 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/mutations.dm b/code/game/gamemodes/changeling/powers/mutations.dm index 08efd29bbf4..d0ed5163056 100644 --- a/code/game/gamemodes/changeling/powers/mutations.dm +++ b/code/game/gamemodes/changeling/powers/mutations.dm @@ -271,7 +271,7 @@ desc = "A huge, bulky mass of pressure and temperature-resistant organic tissue, evolved to facilitate space travel." flags = STOPSPRESSUREDMAGE | NODROP | DROPDEL //Not THICKMATERIAL because it's organic tissue, so if somebody tries to inject something into it, it still ends up in your blood. (also balance but muh fluff) allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals/emergency_oxygen, /obj/item/weapon/tank/internals/oxygen) - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) //No armor at all. + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 90, acid = 90) //No armor at all. /obj/item/clothing/suit/space/changeling/New() ..() @@ -289,7 +289,7 @@ icon_state = "lingspacehelmet" desc = "A covering of pressure and temperature-resistant organic tissue with a glass-like chitin front." flags = STOPSPRESSUREDMAGE | NODROP | DROPDEL //Again, no THICKMATERIAL. - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 90, acid = 90) flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH /***************************************\ @@ -317,7 +317,7 @@ icon_state = "lingarmor" flags = NODROP | DROPDEL body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - armor = list(melee = 40, bullet = 40, laser = 40, energy = 20, bomb = 10, bio = 4, rad = 0) + armor = list(melee = 40, bullet = 40, laser = 40, energy = 20, bomb = 10, bio = 4, rad = 0, fire = 90, acid = 90) flags_inv = HIDEJUMPSUIT cold_protection = 0 heat_protection = 0 @@ -332,5 +332,5 @@ desc = "A tough, hard covering of black chitin with transparent chitin in front." icon_state = "lingarmorhelmet" flags = NODROP | DROPDEL - armor = list(melee = 30, bullet = 30, laser = 40, energy = 20, bomb = 10, bio = 4, rad = 0) + armor = list(melee = 40, bullet = 40, laser = 40, energy = 20, bomb = 10, bio = 4, rad = 0, fire = 90, acid = 90) flags_inv = HIDEEARS|HIDEHAIR|HIDEEYES|HIDEFACIALHAIR|HIDEFACE 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/clock_cult/clock_cult.dm b/code/game/gamemodes/clock_cult/clock_cult.dm index 81e00e6b877..69c3db97d8d 100644 --- a/code/game/gamemodes/clock_cult/clock_cult.dm +++ b/code/game/gamemodes/clock_cult/clock_cult.dm @@ -43,148 +43,37 @@ Credit where due: /////////// /proc/is_servant_of_ratvar(mob/living/M) - return M && istype(M) && M.mind && ticker && ticker.mode && (M.mind in ticker.mode.servants_of_ratvar) + return istype(M) && M.has_antag_datum(/datum/antagonist/clockcultist, TRUE) /proc/is_eligible_servant(mob/living/M) if(!istype(M)) return 0 - if(!M.mind) - return 0 - if(M.mind.enslaved_to && !is_servant_of_ratvar(M.mind.enslaved_to)) - return 0 - if(iscultist(M) || isconstruct(M)) - return 0 - if(isbrain(M)) - return 1 - if(ishuman(M)) - if(isloyal(M) || (M.mind.assigned_role in list("Captain", "Chaplain"))) + if(M.mind) + if(ishuman(M) && (M.mind.assigned_role in list("Captain", "Chaplain"))) return 0 - return 1 - if(isguardian(M)) - var/mob/living/simple_animal/hostile/guardian/G = M - if(is_servant_of_ratvar(G.summoner)) - return 1 //can't convert it unless the owner is converted - if(issilicon(M) || isclockmob(M) || istype(M, /mob/living/simple_animal/drone/cogscarab)) + if(M.mind.enslaved_to && !is_servant_of_ratvar(M.mind.enslaved_to)) + return 0 + else + return 0 + if(iscultist(M) || isconstruct(M) || isloyal(M)) + return 0 + if(ishuman(M) || isbrain(M) || isguardian(M) || issilicon(M) || isclockmob(M) || istype(M, /mob/living/simple_animal/drone/cogscarab)) return 1 return 0 -/proc/add_servant_of_ratvar(mob/M, silent = FALSE) - if(is_servant_of_ratvar(M) || !ticker || !ticker.mode) - return 0 - if(iscarbon(M)) - if(!silent) - M << "Your mind is racing! Your body feels incredibly light! Your world glows a brilliant yellow! All at once it comes to you. Ratvar, the Clockwork \ - Justiciar, lies in exile, derelict and forgotten in an unseen realm." - else if(issilicon(M)) - if(!silent) - M << "You are unable to compute this truth. Your vision glows a brilliant yellow, and all at once it comes to you. Ratvar, the Clockwork Justiciar, lies in \ - exile, derelict and forgotten in an unseen realm." - if(!is_eligible_servant(M)) - if(!M.stat) - M.visible_message("[M] whirs as it resists an outside influence!") - M << "Corrupt data purged. Resetting cortex chip to factory defaults... complete." //silicons have a custom fail message - return 0 - else if(!silent) - M << "Your world glows a brilliant yellow! All at once it comes to you. Ratvar, the Clockwork Justiciar, lies in exile, derelict and forgotten in an unseen realm." +/proc/add_servant_of_ratvar(mob/living/L, silent = FALSE) + var/update_type = /datum/antagonist/clockcultist + if(silent) + update_type = /datum/antagonist/clockcultist/silent + . = L.gain_antag_datum(update_type) - if(!is_eligible_servant(M)) - if(!silent && !M.stat) - M.visible_message("[M] seems to resist an unseen force!") - M << "And yet, you somehow push it all away." - return 0 - - if(!silent) - M.visible_message("[M]'s eyes glow a blazing yellow!", \ - "Assist your new companions in their righteous efforts. Your goal is theirs, and theirs yours. You serve the Clockwork Justiciar above all else. Perform his every \ - whim without hesitation.") - ticker.mode.servants_of_ratvar += M.mind - ticker.mode.update_servant_icons_added(M.mind) - all_clockwork_mobs += M - M.faction |= "ratvar" - M.mind.special_role = "Servant of Ratvar" - M.languages_spoken |= RATVAR - M.languages_understood |= RATVAR - M.update_action_buttons_icon() //because a few clockcult things are action buttons and we may be wearing/holding them for whatever reason, we need to update buttons - M.attack_log += "\[[time_stamp()]\] Has been converted to the cult of Ratvar!" - if(issilicon(M)) - var/mob/living/silicon/S = M - if(isrobot(S)) - var/mob/living/silicon/robot/R = S - R.UnlinkSelf() - R.emagged = 1 - if(!silent) - R << "You have been desynced from your master AI. In addition, your onboard camera is no longer active and your safeties have been disabled." - else if(isAI(S)) - var/mob/living/silicon/ai/A = S - for(var/C in A.connected_robots) - var/mob/living/silicon/robot/R = C - if(R.connected_ai == A) - R.visible_message("[R]'s eyes glow a blazing yellow!", \ - "Assist your new companions in their righteous efforts. Your goal is theirs, and theirs yours. You serve the Clockwork Justiciar above all else. Perform his every \ - whim without hesitation.") - R << "Your onboard camera is no longer active and your safeties have been disabled." - add_servant_of_ratvar(R, TRUE) - S.laws = new/datum/ai_laws/ratvar - S.laws.associate(S) - S.update_icons() - S.show_laws() - var/datum/action/innate/hierophant/H = new() - H.Grant(S) - H.title = "Silicon" - H.span_for_name = "nezbere" - S << "You can communicate with other servants by using the Hierophant Network action button in the upper left." - else if(isbrain(M)) - var/datum/action/innate/hierophant/H = new() - H.Grant(M) - H.title = "Vessel" - H.span_for_name = "nezbere" - H.span_for_message = "alloy" - M << "You can communicate with other servants by using the Hierophant Network action button in the upper left." - else if(isclockmob(M)) - var/datum/action/innate/hierophant/H = new() - H.Grant(M) - H.title = "Construct" - H.span_for_name = "nezbere" - M << "You can communicate with other servants by using the Hierophant Network action button in the upper left." - if(istype(ticker.mode, /datum/game_mode/clockwork_cult)) - var/datum/game_mode/clockwork_cult/C = ticker.mode - C.present_tasks(M) //Memorize the objectives - M.throw_alert("clockinfo", /obj/screen/alert/clockwork/infodump) - cache_check(M) - return 1 - -/proc/remove_servant_of_ratvar(mob/living/M, silent = FALSE) - if(!is_servant_of_ratvar(M)) //In this way, is_servant_of_ratvar() checks the existence of ticker and minds - return 0 - if(!silent) - M.visible_message("[M] seems to have remembered their true allegiance!", \ - "A cold, cold darkness flows through your mind, extinguishing the Justiciar's light and all of your memories as his servant.") - ticker.mode.servants_of_ratvar -= M.mind - ticker.mode.update_servant_icons_removed(M.mind) - all_clockwork_mobs -= M - M.faction -= "ratvar" - M.mind.memory = "" //Not sure if there's a better way to do this - M.mind.special_role = null - M.languages_spoken &= ~RATVAR - M.languages_understood &= ~RATVAR - M.update_action_buttons_icon() //because a few clockcult things are action buttons and we may be wearing/holding them, we need to update buttons - M.attack_log += "\[[time_stamp()]\] Has renounced the cult of Ratvar!" - M.clear_alert("clockinfo") - M.clear_alert("nocache") - for(var/datum/action/innate/function_call/F in M.actions) //Removes any bound Ratvarian spears - qdel(F) - for(var/datum/action/innate/hierophant/H in M.actions) //Removes any communication actions - qdel(H) - if(issilicon(M)) - var/mob/living/silicon/S = M - if(isrobot(S)) - var/mob/living/silicon/robot/R = S - R.emagged = initial(R.emagged) - R << "Despite your freedom from Ratvar's influence, you are still irreparably damaged and no longer possess certain functions such as AI linking." - S.make_laws() - S.update_icons() - S.show_laws() - return 1 +/proc/remove_servant_of_ratvar(mob/living/L, silent = FALSE) + var/datum/antagonist/clockcultist/clock_datum = L.has_antag_datum(/datum/antagonist/clockcultist, TRUE) + if(!clock_datum) + return FALSE + clock_datum.silent_update = silent + clock_datum.on_remove() + return TRUE /////////////// // GAME MODE // diff --git a/code/game/gamemodes/clock_cult/clock_items.dm b/code/game/gamemodes/clock_cult/clock_items.dm index a69220d5fe5..b1bea18a140 100644 --- a/code/game/gamemodes/clock_cult/clock_items.dm +++ b/code/game/gamemodes/clock_cult/clock_items.dm @@ -568,7 +568,7 @@ icon = 'icons/obj/clothing/clockwork_garb.dmi' icon_state = "clockwork_helmet" w_class = 3 - armor = list(melee = 80, bullet = 50, laser = -15, energy = 0, bomb = 35, bio = 0, rad = 0) + armor = list(melee = 80, bullet = 50, laser = -15, energy = 0, bomb = 35, bio = 0, rad = 0, fire = 10, acid = 50) /obj/item/clothing/head/helmet/clockwork/equipped(mob/living/user, slot) ..() @@ -599,7 +599,8 @@ icon_state = "clockwork_cuirass" w_class = 4 body_parts_covered = CHEST|GROIN|LEGS - armor = list(melee = 80, bullet = 50, laser = -15, energy = 0, bomb = 35, bio = 0, rad = 0) + resistance_flags = FIRE_PROOF | ACID_PROOF + armor = list(melee = 80, bullet = 50, laser = -15, energy = 0, bomb = 35, bio = 0, rad = 0, fire = 100, acid = 100) allowed = list(/obj/item/clockwork, /obj/item/clothing/glasses/wraith_spectacles, /obj/item/clothing/glasses/judicial_visor, /obj/item/device/mmi/posibrain/soul_vessel) /obj/item/clothing/suit/armor/clockwork/mob_can_equip(mob/M, mob/equipper, slot, disable_warning = 0) @@ -635,10 +636,10 @@ strip_delay = 50 put_on_delay = 30 body_parts_covered = ARMS - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF siemens_coefficient = 0 permeability_coefficient = 0.05 - armor = list(melee = 80, bullet = 50, laser = -15, energy = 0, bomb = 35, bio = 0, rad = 0) + armor = list(melee = 80, bullet = 50, laser = -15, energy = 0, bomb = 35, bio = 0, rad = 0, fire = 20, acid = 20) /obj/item/clothing/gloves/clockwork/mob_can_equip(mob/M, mob/equipper, slot, disable_warning = 0) if(equipper && !is_servant_of_ratvar(equipper)) @@ -670,7 +671,7 @@ w_class = 3 strip_delay = 50 put_on_delay = 30 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/clothing/shoes/clockwork/mob_can_equip(mob/M, mob/equipper, slot, disable_warning = 0) if(equipper && !is_servant_of_ratvar(equipper)) @@ -981,7 +982,7 @@ name = "meme component" desc = "A piece of a famous meme." clockwork_desc = null - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF var/component_id //What the component is identified as var/cultist_message = "You are not worthy of this meme." //Showed to Nar-Sian cultists if they pick up the component in addition to chaplains var/list/servant_of_ratvar_messages = list("ayy" = FALSE, "lmao" = TRUE) //Fluff, shown to servants of Ratvar on a low chance, if associated value is TRUE, will automatically apply ratvarian @@ -1124,7 +1125,7 @@ desc = "Broken shards of some oddly malleable metal. They occasionally move and seem to glow." clockwork_desc = "Broken shards of replicant alloy. Could probably be proselytized into replicant alloy, though there's not much left." icon_state = "alloy_shards" - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF var/randomsinglesprite = FALSE var/randomspritemax = 2 diff --git a/code/game/gamemodes/clock_cult/clock_mobs.dm b/code/game/gamemodes/clock_cult/clock_mobs.dm index 4793b33766d..025c1a14765 100644 --- a/code/game/gamemodes/clock_cult/clock_mobs.dm +++ b/code/game/gamemodes/clock_cult/clock_mobs.dm @@ -1,6 +1,7 @@ /mob/living/simple_animal/hostile/clockwork faction = list("ratvar") + gender = NEUTER icon = 'icons/mob/clockwork_mobs.dmi' unique_name = 1 minbodytemp = 0 @@ -31,6 +32,22 @@ ..() src << playstyle_string +/mob/living/simple_animal/hostile/clockwork/examine(mob/user) + var/t_He = they_pronoun(TRUE) + var/plurality = (gender == PLURAL) + var/msg = "*---------*\nThis is \icon[src] \a [src]!\n" + msg += "[desc]\n" + if(health < maxHealth) + msg += "" + if (src.health >= src.maxHealth/2) + msg += "[t_He] look[plurality ? "":"s"] slightly dented.\n" + else + msg += "[t_He] look[plurality ? "":"s"] severely dented!\n" + msg += "" + msg += "*---------*" + + user << msg + /mob/living/simple_animal/hostile/clockwork/fragment //Anima fragment: Low health and high melee damage, but slows down when struck. Created by inserting a soul vessel into an empty fragment. name = "anima fragment" desc = "An ominous humanoid shell with a spinning cogwheel as its head, lifted by a jet of blazing red flame." diff --git a/code/game/gamemodes/clock_cult/clock_ratvar.dm b/code/game/gamemodes/clock_cult/clock_ratvar.dm index 34033722cf7..ec558de31a1 100644 --- a/code/game/gamemodes/clock_cult/clock_ratvar.dm +++ b/code/game/gamemodes/clock_cult/clock_ratvar.dm @@ -3,7 +3,7 @@ desc = "A very large construction." layer = MASSIVE_OBJ_LAYER density = FALSE - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF /obj/structure/destructible/clockwork/massive/New() ..() diff --git a/code/game/gamemodes/clock_cult/clock_scripture.dm b/code/game/gamemodes/clock_cult/clock_scripture.dm index ad2615e54a1..2689358aaee 100644 --- a/code/game/gamemodes/clock_cult/clock_scripture.dm +++ b/code/game/gamemodes/clock_cult/clock_scripture.dm @@ -206,14 +206,15 @@ Judgement: 10 servants, 100 CV, and any existing AIs are converted or destroyed /datum/clockwork_scripture/channeled/belligerent/chant_effects(chant_number) for(var/mob/living/carbon/C in hearers(7, invoker)) - if(!is_servant_of_ratvar(C) && !C.null_rod_check() && C.get_num_legs()) //you have legs right + var/number_legs = C.get_num_legs() + if(!is_servant_of_ratvar(C) && !C.null_rod_check() && number_legs) //you have legs right C.apply_damage(noncultist_damage * 0.5, BURN, "l_leg") C.apply_damage(noncultist_damage * 0.5, BURN, "r_leg") if(C.m_intent != "walk") if(!iscultist(C)) - C << "Your legs shiver with pain!" + C << "Your leg[number_legs > 1 ? "s shiver":" shivers"] with pain!" else //Cultists take extra burn damage - C << "Your legs burn with pain!" + C << "Your leg[number_legs > 1 ? "s burn":" burns"] with pain!" C.apply_damage(cultist_damage * 0.5, BURN, "l_leg") C.apply_damage(cultist_damage * 0.5, BURN, "r_leg") C.m_intent = "walk" @@ -300,7 +301,7 @@ Judgement: 10 servants, 100 CV, and any existing AIs are converted or destroyed for(var/i in 1 to healseverity) PoolOrNew(/obj/effect/overlay/temp/heal, list(targetturf, "#1E8CE1")) invoker << "You bathe [L] in Inath-neq's power!" - L.visible_message("A blue light washes over [L], mending their bruises and burns!", \ + L.visible_message("A blue light washes over [L], mending [L.their_pronoun()] bruises and burns!", \ "You feel Inath-neq's power healing your wounds, but a deep nausea overcomes you!") playsound(targetturf, 'sound/magic/Staff_Healing.ogg', 50, 1) return 1 @@ -824,7 +825,7 @@ Judgement: 10 servants, 100 CV, and any existing AIs are converted or destroyed return create_marauder() /datum/clockwork_scripture/memory_allocation/proc/create_marauder() - invoker.visible_message("A yellow tendril appears from [invoker]'s [slab.name] and impales itself in their forehead!", \ + invoker.visible_message("A yellow tendril appears from [invoker]'s [slab.name] and impales itself in [invoker.their_pronoun()] forehead!", \ "A tendril flies from [slab] into your forehead. You begin waiting while it painfully rearranges your thought pattern...") invoker.notransform = TRUE //Vulnerable during the process slab.busy = "Thought modification in process" @@ -1054,7 +1055,7 @@ Judgement: 10 servants, 100 CV, and any existing AIs are converted or destroyed /datum/clockwork_scripture/invoke_sevtug/check_special_requirements() if(!slab.no_cost && clockwork_generals_invoked["sevtug"] > world.time) - invoker << "\"[text2ratvar("Is it really so hard - even for a simpleton like you - to grasp the concept-of waiting?")]\"\n\ + invoker << "\"[text2ratvar("Is it really so hard - even for a simpleton like you - to grasp the concept of waiting?")]\"\n\ Sevtug has already been invoked recently! You must wait several minutes before calling upon the Formless Pariah." return 0 if(!slab.no_cost && ratvar_awakens) diff --git a/code/game/gamemodes/clock_cult/clock_structures.dm b/code/game/gamemodes/clock_cult/clock_structures.dm index a543a5d2d3b..400c680ba19 100644 --- a/code/game/gamemodes/clock_cult/clock_structures.dm +++ b/code/game/gamemodes/clock_cult/clock_structures.dm @@ -42,19 +42,21 @@ ..() desc = initial(desc) if(takes_damage) - var/servant_message = "It is at [health]/[max_health] integrity" - var/other_message = "It seems pristine and undamaged" + var/t_It = they_pronoun(TRUE) + var/t_is = get_is() + var/servant_message = "[t_It] [t_is] at [health]/[max_health] integrity" + var/other_message = "[t_It] seems pristine and undamaged" var/heavily_damaged = FALSE var/healthpercent = (health/max_health) * 100 if(healthpercent >= 100) - other_message = "It seems pristine and undamaged" + other_message = "[t_It] seems pristine and undamaged" else if(healthpercent >= 50) - other_message = "It looks slightly dented" + other_message = "[t_It] looks slightly dented" else if(healthpercent >= 25) - other_message = "It appears heavily damaged" + other_message = "[t_It] appears heavily damaged" heavily_damaged = TRUE else if(healthpercent >= 0) - other_message = "It's falling apart" + other_message = "[t_It] [t_is] falling apart" heavily_damaged = TRUE user << "[can_see_clockwork ? "[servant_message]":"[other_message]"][heavily_damaged ? "!":"."]" @@ -130,7 +132,7 @@ return 1 else if(istype(I, /obj/item/clockwork/daemon_shell)) var/component_type - switch(alert(user, "Will this daemon produce a specific type of component or produce randomly?.", , "Specific Type", "Random Component")) + switch(alert(user, "Will this daemon produce a specific type of component or produce randomly?", , "Specific Type", "Random Component")) if("Specific Type") component_type = get_component_id(input(user, "Choose a component type.", name) as null|anything in list("Belligerent Eye", "Vanguard Cogwheel", "Guvax Capacitor", "Replicant Alloy", "Hierophant Ansible")) if(!component_type) @@ -182,7 +184,7 @@ layer = HIGH_OBJ_LAYER break_message = "The warden's eye gives a glare of utter hate before falling dark!" debris = list(/obj/item/clockwork/component/belligerent_eye/blind_eye = 1) - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF var/damage_per_tick = 2.5 var/sight_range = 3 var/atom/movable/target @@ -250,10 +252,10 @@ if(!is_servant_of_ratvar(L) && !L.stat && L.mind && !(L.disabilities & BLIND) && !L.null_rod_check() && !B) . += L else if(B) - if(B.burn_state != ON_FIRE) + if(!(B.resistance_flags & ON_FIRE)) L << "Your [B.name] bursts into flames!" for(var/obj/item/weapon/storage/book/bible/BI in L.GetAllContents()) - if(BI.burn_state != ON_FIRE) + if(!(BI.resistance_flags & ON_FIRE)) BI.fire_act() for(var/N in mechas_list) var/obj/mecha/M = N @@ -274,7 +276,7 @@ anchored = 0 density = 0 takes_damage = FALSE - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF var/mobtype = /mob/living/simple_animal/hostile/clockwork var/spawn_message = " is an error and you should yell at whoever spawned this shell." @@ -293,9 +295,7 @@ user.visible_message("[user] places [S] in [src], where it fuses to the shell.", "You place [S] in [src], fusing it to the shell.") var/mob/living/simple_animal/A = new mobtype(get_turf(src)) A.visible_message("[src][spawn_message]") - remove_servant_of_ratvar(S.brainmob, TRUE) S.brainmob.mind.transfer_to(A) - add_servant_of_ratvar(A, TRUE) user.drop_item() qdel(S) qdel(src) @@ -389,7 +389,7 @@ anchored = 1 density = 0 opacity = 0 - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE /obj/effect/clockwork/New() ..() @@ -697,7 +697,7 @@ icon_state = "sigil" layer = LOW_OBJ_LAYER alpha = 50 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF burntime = 1 var/affects_servants = FALSE var/stat_affected = CONSCIOUS @@ -929,7 +929,7 @@ var/obj/effect/overlay/temp/ratvar/sigil/vitality/V = PoolOrNew(/obj/effect/overlay/temp/ratvar/sigil/vitality, get_turf(src)) animate(V, alpha = 0, transform = matrix()*2, time = 8) playsound(L, 'sound/magic/WandODeath.ogg', 50, 1) - L.visible_message("[L] collapses in on themself as [src] flares bright blue!") + L.visible_message("[L] collapses in on [L.them_pronoun()]self as [src] flares bright blue!") L << "\"[text2ratvar("Your life will not be wasted.")]\"" for(var/obj/item/W in L) L.unEquip(W) @@ -957,7 +957,7 @@ ghost.reenter_corpse() L.revive(1, 1) playsound(L, 'sound/magic/Staff_Healing.ogg', 50, 1) - L.visible_message("[L] suddenly gets back up, their mouth dripping blue ichor!", \ + L.visible_message("[L] suddenly gets back up, [L.their_pronoun()] mouth dripping blue ichor!", \ "\"[text2ratvar("You will be okay, child.")]\"") vitality -= revival_cost break diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index b80a7e692ea..7597b4b2bbb 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -5,7 +5,7 @@ var/list/cult_objectives = list() /proc/iscultist(mob/living/M) - return istype(M) && M.mind && ticker && ticker.mode && (M.mind in ticker.mode.cult) + return istype(M) && M.has_antag_datum(/datum/antagonist/cultist, TRUE) /proc/is_sacrifice_target(datum/mind/mind) if(ticker.mode.name == "cult") @@ -14,21 +14,20 @@ return 1 return 0 -/proc/is_convertable_to_cult(datum/mind/mind) - if(!istype(mind)) +/proc/is_convertable_to_cult(mob/living/M) + if(!istype(M)) return 0 - if(istype(mind.current, /mob/living/carbon/human) && (mind.assigned_role in list("Captain", "Chaplain"))) - return 0 - if(isloyal(mind.current)) - return 0 - if(issilicon(mind.current) || isbot(mind.current) || isdrone(mind.current)) - return 0 //can't convert machines, that's ratvar's thing - if(is_sacrifice_target(mind)) - return 0 - if(mind.enslaved_to && !iscultist(mind.enslaved_to)) - return 0 - if(is_servant_of_ratvar(mind.current)) + if(M.mind) + if(ishuman(M) && (M.mind.assigned_role in list("Captain", "Chaplain"))) + return 0 + if(is_sacrifice_target(M.mind)) + return 0 + if(M.mind.enslaved_to && !iscultist(M.mind.enslaved_to)) + return 0 + else return 0 + if(isloyal(M) || issilicon(M) || isbot(M) || isdrone(M) || is_servant_of_ratvar(M)) + return 0 //can't convert machines, shielded, or ratvar's dogs return 1 /datum/game_mode/cult @@ -159,19 +158,10 @@ /datum/game_mode/proc/add_cultist(datum/mind/cult_mind, stun) //BASE if (!istype(cult_mind)) return 0 - if(!(cult_mind in cult) && is_convertable_to_cult(cult_mind)) + if(cult_mind.current.gain_antag_datum(/datum/antagonist/cultist)) if(stun) cult_mind.current.Paralyse(5) - cult += cult_mind - cult_mind.current.faction |= "cult" - cult_mind.current.verbs += /mob/living/proc/cult_help - var/datum/action/innate/cultcomm/C = new() - C.Grant(cult_mind.current) - update_cult_icons_added(cult_mind) - cult_mind.current.attack_log += "\[[time_stamp()]\] Has been converted to the cult of Nar'Sie!" - if(jobban_isbanned(cult_mind.current, ROLE_CULTIST)) - replace_jobbaned_player(cult_mind.current, ROLE_CULTIST, ROLE_CULTIST) - return 1 + return 1 /datum/game_mode/cult/add_cultist(datum/mind/cult_mind, stun) //INHERIT @@ -181,21 +171,15 @@ /datum/game_mode/proc/remove_cultist(datum/mind/cult_mind, show_message = 1, stun) - if(cult_mind in cult) - cult -= cult_mind - cult_mind.current.faction -= "cult" - cult_mind.current.verbs -= /mob/living/proc/cult_help - for(var/datum/action/innate/cultcomm/C in cult_mind.current.actions) - qdel(C) + if(cult_mind.current) + var/datum/antagonist/cultist/cult_datum = cult_mind.current.has_antag_datum(/datum/antagonist/cultist, TRUE) + if(!cult_datum) + return FALSE + cult_datum.silent_update = show_message + cult_datum.on_remove() if(stun) cult_mind.current.Paralyse(5) - cult_mind.current << "An unfamiliar white light flashes through your mind, cleansing the taint of the Dark One and all your memories as its servant." - cult_mind.memory = "" - update_cult_icons_removed(cult_mind) - cult_mind.current.attack_log += "\[[time_stamp()]\] Has renounced the cult of Nar'Sie!" - if(show_message) - for(var/mob/M in viewers(cult_mind.current)) - M << "[cult_mind.current] looks like they just reverted to their old faith!" + return TRUE /datum/game_mode/proc/update_cult_icons_added(datum/mind/cult_mind) var/datum/atom_hud/antag/culthud = huds[ANTAG_HUD_CULT] @@ -206,12 +190,14 @@ var/datum/atom_hud/antag/culthud = huds[ANTAG_HUD_CULT] culthud.leave_hud(cult_mind.current) set_antag_hud(cult_mind.current, null) + /datum/game_mode/cult/proc/get_unconvertables() var/list/ucs = list() for(var/mob/living/carbon/human/player in player_list) if(player.mind && !is_convertable_to_cult(player.mind)) ucs += player.mind return ucs + /datum/game_mode/cult/proc/check_cult_victory() var/cult_fail = 0 if(cult_objectives.Find("survive")) diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 499c09eca84..977e10023fd 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -73,7 +73,7 @@ desc = "A torn, dust-caked hood. Strange letters line the inside." flags_inv = HIDEFACE|HIDEHAIR|HIDEEARS flags_cover = HEADCOVERSEYES - armor = list(melee = 30, bullet = 10, laser = 5,energy = 5, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 30, bullet = 10, laser = 5,energy = 5, bomb = 0, bio = 0, rad = 0, fire = 10, acid = 10) cold_protection = HEAD min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT heat_protection = HEAD @@ -86,7 +86,7 @@ item_state = "cultrobes" body_parts_covered = CHEST|GROIN|LEGS|ARMS allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade) - armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0) + armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0, fire = 10, acid = 10) flags_inv = HIDEJUMPSUIT cold_protection = CHEST|GROIN|LEGS|ARMS min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT @@ -113,7 +113,7 @@ item_state = "magus" desc = "A helm worn by the followers of Nar-Sie." flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDEEARS|HIDEEYES - armor = list(melee = 30, bullet = 30, laser = 30,energy = 20, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 30, bullet = 30, laser = 30,energy = 20, bomb = 0, bio = 0, rad = 0, fire = 10, acid = 10) flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH /obj/item/clothing/suit/magusred @@ -123,7 +123,7 @@ item_state = "magusred" body_parts_covered = CHEST|GROIN|LEGS|ARMS allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade) - armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0) + armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0, fire = 10, acid = 10) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT /obj/item/clothing/head/helmet/space/hardsuit/cult @@ -131,7 +131,7 @@ desc = "A heavily-armored helmet worn by warriors of the Nar-Sien cult. It can withstand hard vacuum." icon_state = "cult_helmet" item_state = "cult_helmet" - armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) + armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 40, acid = 75) brightness_on = 0 actions_types = list() @@ -142,7 +142,7 @@ desc = "A heavily-armored exosuit worn by warriors of the Nar-Sien cult. It can withstand hard vacuum." w_class = 2 allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade,/obj/item/weapon/tank/internals/) - armor = list(melee = 70, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) + armor = list(melee = 70, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 40, acid = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/cult /obj/item/weapon/sharpener/cult @@ -159,7 +159,7 @@ icon_state = "cult_armor" item_state = "cult_armor" w_class = 4 - armor = list(melee = 50, bullet = 40, laser = 50,energy = 30, bomb = 50, bio = 30, rad = 30) + armor = list(melee = 50, bullet = 40, laser = 50,energy = 30, bomb = 50, bio = 30, rad = 30, fire = 50, acid = 60) body_parts_covered = CHEST|GROIN|LEGS|ARMS allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade) var/current_charges = 3 @@ -170,7 +170,7 @@ name = "empowered cultist armor" desc = "Empowered garb which creates a powerful shield around the user." icon_state = "cult_hoodalt" - armor = list(melee = 50, bullet = 40, laser = 50,energy = 30, bomb = 50, bio = 30, rad = 30) + armor = list(melee = 50, bullet = 40, laser = 50,energy = 30, bomb = 50, bio = 30, rad = 30, fire = 50, acid = 50) body_parts_covered = HEAD flags = NODROP flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS @@ -215,7 +215,7 @@ flags_inv = HIDEJUMPSUIT allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade) body_parts_covered = CHEST|GROIN|LEGS|ARMS - armor = list(melee = -50, bullet = -50, laser = -100,energy = -50, bomb = -50, bio = -50, rad = -50) + armor = list(melee = -50, bullet = -50, laser = -100,energy = -50, bomb = -50, bio = -50, rad = -50, fire = 0, acid = 0) slowdown = -1 hooded = 1 hoodtype = /obj/item/clothing/head/berserkerhood @@ -227,7 +227,7 @@ body_parts_covered = HEAD flags = NODROP flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS - armor = list(melee = -50, bullet = -50, laser = -50,energy = -50, bomb = -50, bio = -50, rad = -50) + armor = list(melee = -50, bullet = -50, laser = -50, energy = -50, bomb = -50, bio = -50, rad = -50, fire = 0, acid = 0) /obj/item/clothing/suit/hooded/cultrobes/berserker/equipped(mob/living/user, slot) ..() diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm index 980fbc9dd11..c01036257ff 100644 --- a/code/game/gamemodes/cult/cult_structures.dm +++ b/code/game/gamemodes/cult/cult_structures.dm @@ -10,24 +10,26 @@ var/can_see_cult = iscultist(user) || isobserver(user) ..() if(takes_damage) - var/cultist_message = "It is at [health]/[max_health] stability" - var/other_message = "It seems extremely stable" + var/t_It = they_pronoun(TRUE) + var/t_is = get_is() + var/cultist_message = "[t_It] [t_is] at [health]/[max_health] stability" + var/other_message = "[t_It] seems extremely stable" var/heavily_damaged = FALSE var/healthpercent = (health/max_health) * 100 if(healthpercent >= 100) - other_message = "It seems extremely stable" + other_message = "[t_It] seems extremely stable" else if(healthpercent >= 50) - other_message = "It looks slightly unstable" + other_message = "[t_It] looks slightly unstable" else if(healthpercent >= 25) - other_message = "It appears very unstable" + other_message = "[t_It] appears very unstable" heavily_damaged = TRUE else if(healthpercent >= 0) - other_message = "It's glowing faintly and is extremely unstable" + other_message = "[t_It] [t_is] glowing faintly and is extremely unstable" heavily_damaged = TRUE user << "[heavily_damaged ? "":""][can_see_cult ? "[cultist_message]":"[other_message]"][heavily_damaged ? "!":"."]" user << "\The [src] is [anchored ? "":"not "]secured to the floor." if(can_see_cult && cooldowntime > world.time) - user << "The magic in [src] is weak, it will be ready to use again in [getETA()]." + user << "The magic in [src] is too weak, [they_pronoun()] will be ready to use again in [getETA()]." /obj/structure/destructible/cult/attack_animal(mob/living/simple_animal/M) if(istype(M, /mob/living/simple_animal/hostile/construct/builder)) @@ -35,9 +37,9 @@ health = min(max_health, health + 5) Beam(M, icon_state="sendbeam", time=4) M.visible_message("[M] repairs \the [src].", \ - "You repair [src], leaving it at [health]/[max_health] stability.") + "You repair [src], leaving [they_pronoun()] at [health]/[max_health] stability.") else - M << "You cannot repair [src], as it is undamaged!" + M << "You cannot repair [src], as [they_pronoun()] [get_is()] undamaged!" else ..() @@ -238,5 +240,4 @@ var/list/blacklisted_pylon_turfs = typecacheof(list( icon = 'icons/obj/cult.dmi' icon_state = "hole" density = 1 - unacidable = 1 anchored = 1 diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index d42b1bdeaff..a04e96cd6ac 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -21,7 +21,7 @@ To draw a rune, use an arcane tome. anchored = 1 icon = 'icons/obj/rune.dmi' icon_state = "1" - unacidable = 1 + resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE layer = ABOVE_NORMAL_TURF_LAYER color = "#FF0000" @@ -392,7 +392,7 @@ var/list/teleport_runes = list() convertee.adjustBruteLoss(-(brutedamage * 0.75)) convertee.adjustFireLoss(-(burndamage * 0.75)) convertee.visible_message("[convertee] writhes in pain \ - [brutedamage || burndamage ? "even as their wounds heal and close" : "as the markings below them glow a bloody red"]!", \ + [brutedamage || burndamage ? "even as [convertee.their_pronoun()] wounds heal and close" : "as the markings below [convertee.them_pronoun()] glow a bloody red"]!", \ "AAAAAAAAAAAAAA-") ticker.mode.add_cultist(convertee.mind, 1) new /obj/item/weapon/tome(get_turf(src)) @@ -572,7 +572,7 @@ var/list/teleport_runes = list() mob_to_revive.revive(1, 1) //This does remove disabilities and such, but the rune might actually see some use because of it! mob_to_revive.grab_ghost() mob_to_revive << "\"PASNAR SAVRAE YAM'TOTH. Arise.\"" - mob_to_revive.visible_message("[mob_to_revive] draws in a huge breath, red light shining from their eyes.", \ + mob_to_revive.visible_message("[mob_to_revive] draws in a huge breath, red light shining from [mob_to_revive.their_pronoun()] eyes.", \ "You awaken suddenly from the void. You're alive!") rune_in_use = 0 @@ -687,11 +687,11 @@ var/list/teleport_runes = list() return affecting.apply_damage(0.1, BRUTE) if(!(user in T)) - user.visible_message("A spectral tendril wraps around [user] and pulls them back to the rune!") + user.visible_message("A spectral tendril wraps around [user] and pulls [user.them_pronoun()] back to the rune!") Beam(user,icon_state="drainbeam",time=2) user.forceMove(get_turf(src)) //NO ESCAPE :^) if(user.key) - user.visible_message("[user] slowly relaxes, the glow around them dimming.", \ + user.visible_message("[user] slowly relaxes, the glow around [user.them_pronoun()] dimming.", \ "You are re-united with your physical form. [src] releases its hold over you.") user.color = initial(user.color) user.Weaken(3) @@ -754,7 +754,7 @@ var/list/wall_runes = list() update_state() if(density) spread_density() - user.visible_message("[user] [iscarbon(user) ? "places their hands on":"stares intently at"] [src], and [density ? "the air above it begins to shimmer" : "the shimmer above it fades"].", \ + user.visible_message("[user] [iscarbon(user) ? "places [user.their_pronoun()] hands on":"stares intently at"] [src], and [density ? "the air above it begins to shimmer" : "the shimmer above it fades"].", \ "You channel your life energy into [src], [density ? "temporarily preventing" : "allowing"] passage above it.") if(iscarbon(user)) var/mob/living/carbon/C = user diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index e4311624dc5..6dc61afc365 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -539,8 +539,6 @@ ticker.mode.remove_cultist(newborgie, 0, 0) ticker.mode.remove_revolutionary(newborgie, 0) ticker.mode.remove_gangster(newborgie, 0, remove_bosses=1) - remove_servant_of_ratvar(newborgie.current, TRUE) - /datum/game_mode/proc/generate_station_goals() var/list/possible = list() diff --git a/code/game/gamemodes/gang/dominator.dm b/code/game/gamemodes/gang/dominator.dm index 27818366d82..32c81ff0cad 100644 --- a/code/game/gamemodes/gang/dominator.dm +++ b/code/game/gamemodes/gang/dominator.dm @@ -8,6 +8,7 @@ layer = HIGH_OBJ_LAYER var/maxhealth = 200 var/health = 200 + armor = list(melee = 20, bullet = 50, laser = 50, energy = 0, bomb = 10, bio = 100, rad = 100, fire = 10, acid = 0) var/datum/gang/gang var/operating = 0 //0=standby or broken, 1=takeover var/warned = 0 //if this device has set off the warning at <3 minutes yet @@ -155,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/gang/gang.dm b/code/game/gamemodes/gang/gang.dm index eefbf5689f1..b9f5eaebc28 100644 --- a/code/game/gamemodes/gang/gang.dm +++ b/code/game/gamemodes/gang/gang.dm @@ -177,7 +177,7 @@ var/list/gang_colors_pool = list("red","orange","yellow","green","blue","purple" gangster_mind.store_memory("You are a member of the [G.name] Gang!") G.add_gang_hud(gangster_mind) if(jobban_isbanned(gangster_mind.current, ROLE_GANG)) - replace_jobbaned_player(gangster_mind.current, ROLE_GANG, ROLE_GANG) + addtimer(src, "replace_jobbaned_player", 0, FALSE, gangster_mind.current, ROLE_GANG, ROLE_GANG) return 2 //////////////////////////////////////////////////////////////////// //Deals with players reverting to neutral (Not a gangster anymore)// diff --git a/code/game/gamemodes/gang/gang_datum.dm b/code/game/gamemodes/gang/gang_datum.dm index 67e8268f087..b78e961c9ad 100644 --- a/code/game/gamemodes/gang/gang_datum.dm +++ b/code/game/gamemodes/gang/gang_datum.dm @@ -106,7 +106,7 @@ if(outfit_path) var/obj/item/clothing/outfit = new outfit_path(user.loc) - outfit.armor = list(melee = 20, bullet = 30, laser = 10, energy = 10, bomb = 20, bio = 0, rad = 0) + outfit.armor = list(melee = 20, bullet = 30, laser = 10, energy = 10, bomb = 20, bio = 0, rad = 0, fire = 30, acid = 30) outfit.desc += " Tailored for the [name] Gang to offer the wearer moderate protection against ballistics and physical trauma." outfit.gang = src user.put_in_hands(outfit) diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm index 55a703913be..da641ae216c 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm @@ -12,14 +12,14 @@ item_state = "armor" blood_overlay_type = "armor" origin_tech = "magnets=7;biotech=4;powerstorage=4;abductor=4" - armor = list(melee = 15, bullet = 15, laser = 15, energy = 15, bomb = 15, bio = 15, rad = 15) + armor = list(melee = 15, bullet = 15, laser = 15, energy = 15, bomb = 15, bio = 15, rad = 15, fire = 70, acid = 70) actions_types = list(/datum/action/item_action/hands_free/activate) var/mode = VEST_STEALTH var/stealth_active = 0 var/combat_cooldown = 10 var/datum/icon_snapshot/disguise - var/stealth_armor = list(melee = 15, bullet = 15, laser = 15, energy = 15, bomb = 15, bio = 15, rad = 15) - var/combat_armor = list(melee = 50, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 50, rad = 50) + var/stealth_armor = list(melee = 15, bullet = 15, laser = 15, energy = 15, bomb = 15, bio = 15, rad = 15, fire = 70, acid = 70) + var/combat_armor = list(melee = 50, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 50, rad = 50, fire = 90, acid = 90) /obj/item/clothing/suit/armor/abductor/vest/proc/flip_mode() switch(mode) 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 2c33fe43b1d..e36d330fb26 100644 --- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm +++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm @@ -392,16 +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 - unacidable = 1 - /obj/effect/overlay/temp/swarmer //temporary swarmer visual feedback objects icon = 'icons/mob/swarmer.dmi' layer = BELOW_MOB_LAYER @@ -422,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) @@ -441,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) @@ -471,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)) @@ -498,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" @@ -521,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/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index b67617ae380..901d6f986eb 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -253,7 +253,7 @@ rev_mind.special_role = "Revolutionary" update_rev_icons_added(rev_mind) if(jobban_isbanned(rev_mind.current, ROLE_REV)) - replace_jobbaned_player(rev_mind.current, ROLE_REV, ROLE_REV) + addtimer(src, "replace_jobbaned_player", 0, FALSE, rev_mind.current, ROLE_REV, ROLE_REV) return 1 ////////////////////////////////////////////////////////////////////////////// //Deals with players being converted from the revolution (Not a rev anymore)// // Modified to handle borged MMIs. Accepts another var if the target is being borged at the time -- Polymorph. diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 75b44b7edc9..7bd85dfdd35 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -34,7 +34,6 @@ icon = 'icons/obj/biomass.dmi' icon_state = "rift" density = 1 - unacidable = 1 anchored = 1 var/spawn_path = /mob/living/simple_animal/cow //defaulty cows to prevent unintentional narsies var/spawn_amt_left = 20 @@ -483,7 +482,7 @@ var/global/list/multiverse = list() var/cooldown_time = 30 //3s var/cooldown = 0 burntime = 0 - burn_state = FLAMMABLE + resistance_flags = 0 /obj/item/voodoo/attackby(obj/item/I, mob/user, params) if(target && cooldown < world.time) 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 d58b2f71d03..180f3f80d32 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -12,6 +12,7 @@ active_power_usage = 10 layer = WALL_OBJ_LAYER + armor = list(melee = 50, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) var/health = 50 var/list/network = list("SS13") var/c_tag = null @@ -111,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 f462c813ed5..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. @@ -151,6 +151,7 @@ maxhealth = 180 proj_pass_rate = 20 ranged_damage_modifier = 0.5 + armor = list(melee = 10, bullet = 50, laser = 50, energy = 0, bomb = 10, bio = 100, rad = 100, fire = 10, acid = 0) /obj/structure/barricade/security/New() diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index ac8291cd6b0..a7b193653d7 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -9,6 +9,8 @@ layer = OPEN_DOOR_LAYER power_channel = ENVIRON + armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 10, bio = 100, rad = 100, fire = 100, acid = 0) + var/secondsElectrified = 0 var/shockedby = list() var/visible = 1 @@ -185,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/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 50edc96d054..8b8e68e0d55 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -5,6 +5,7 @@ icon_state = "left" var/base_state = "left" var/health = 150 //If you change this, consider changing ../door/window/brigdoor/ health at the bottom of this .dm file + armor = list(melee = 20, bullet = 50, laser = 50, energy = 100, bomb = 10, bio = 100, rad = 100, fire = 0, acid = 0) visible = 0 flags = ON_BORDER opacity = 0 diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 3dbeadfd33d..80ff532d236 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -31,6 +31,10 @@ else bulb = new /obj/item/device/assembly/flash/handheld(src) +/obj/machinery/flasher/Destroy() + remove_from_proximity_list(src, range) + ..() + /obj/machinery/flasher/Move() remove_from_proximity_list(src, range) ..() 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/newscaster.dm b/code/game/machinery/newscaster.dm index bf6a43b8d6c..ff65967f610 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -175,6 +175,7 @@ var/list/obj/machinery/newscaster/allCasters = list() verb_say = "beeps" verb_ask = "beeps" verb_exclaim = "beeps" + armor = list(melee = 50, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) var/screen = 0 var/paper_remaining = 15 var/securityCaster = 0 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/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index e482fa45c3f..2d7a16be1e2 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -25,6 +25,8 @@ var/raised = 0 //if the turret cover is "open" and the turret is raised var/raising= 0 //if the turret is currently opening or closing its cover var/health = 80 //the turret's health + armor = list(melee = 50, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) + var/locked = 1 //if the turret's behaviour control access is locked var/controllock = 0 //if the turret responds to control panels diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 345dfec4454..89c4e64995f 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -6,7 +6,7 @@ density = 1 opacity = 0 anchored = 1 - unacidable = 1 + resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE var/const/max_health = 200 var/health = max_health //The shield can only take so much beating (prevents perma-prisons) @@ -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) @@ -478,7 +478,7 @@ icon_state = "shieldwall" anchored = 1 density = 1 - unacidable = 1 + resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE luminosity = 3 var/needs_power = 0 var/active = 1 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/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm index 80e88062012..87b05258593 100644 --- a/code/game/machinery/syndicatebeacon.dm +++ b/code/game/machinery/syndicatebeacon.dm @@ -1,101 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - -// Beacon randomly spawns in space -// When a non-traitor (no special role in /mind) uses it, he is given the choice to become a traitor -// If he accepts there is a random chance he will be accepted, rejected, or rejected and killed -// Bringing certain items can help improve the chance to become a traitor - - -/obj/machinery/syndicate_beacon - name = "ominous beacon" - desc = "This looks suspicious..." - icon = 'icons/obj/device.dmi' - icon_state = "syndbeacon" - - anchored = 1 - density = 1 - - var/temptext = "" - var/selfdestructing = 0 - var/charges = 1 - -/obj/machinery/syndicate_beacon/attack_hand(mob/user) - usr.set_machine(src) - var/dat = "Scanning [pick("retina pattern", "voice print", "fingerprints", "dna sequence")]...
Identity confirmed,
" - if(istype(user, /mob/living/carbon/human) || istype(user, /mob/living/silicon/ai)) - if(is_special_character(user)) - dat += "Operative record found. Greetings, Agent [user.name].
" - else if(charges < 1) - dat += "Connection severed.
" - else - var/honorific = "Mr." - if(user.gender == FEMALE) - honorific = "Ms." - dat += "Identity not found in operative database. What can the Syndicate do for you today, [honorific] [user.name]?
" - if(!selfdestructing) - dat += "

\"[pick("I want to switch teams.", "I want to work for you.", "Let me join you.", "I can be of use to you.", "You want me working for you, and here's why...", "Give me an objective.", "How's the 401k over at the Syndicate?")]\"
" - dat += temptext - user << browse(dat, "window=syndbeacon") - onclose(user, "syndbeacon") - -/obj/machinery/syndicate_beacon/Topic(href, href_list) - if(..()) - return - if(href_list["betraitor"]) - if(charges < 1) - src.updateUsrDialog() - return - var/mob/M = locate(href_list["traitormob"]) - if(M.mind.special_role) - temptext = "We have no need for you at this time. Have a pleasant day.
" - src.updateUsrDialog() - return - charges -= 1 - switch(rand(1,2)) - if(1) - temptext = "Double-crosser. You planned to betray us from the start. Allow us to repay the favor in kind." - src.updateUsrDialog() - addtimer(src, "selfdestruct", rand(50, 200)) - return - if(istype(M, /mob/living/carbon/human)) - var/mob/living/carbon/human/N = M - ticker.mode.equip_traitor(N) - ticker.mode.traitors += N.mind - N.mind.special_role = "traitor" - var/objective = "Free Objective" - switch(rand(1,100)) - if(1 to 50) - objective = "Steal [pick("a hand teleporter", "the Captain's antique laser gun", "a jetpack", "the Captain's ID", "the Captain's jumpsuit")]." - if(51 to 60) - objective = "Destroy 70% or more of the station's plasma tanks." - if(61 to 70) - objective = "Cut power to 80% or more of the station's tiles." - if(71 to 80) - objective = "Destroy the AI." - if(81 to 90) - objective = "Kill all monkeys aboard the station." - else - objective = "Make certain at least 80% of the station evacuates on the shuttle." - var/datum/objective/custom_objective = new(objective) - custom_objective.owner = N.mind - N.mind.objectives += custom_objective - - var/datum/objective/escape/escape_objective = new - escape_objective.owner = N.mind - N.mind.objectives += escape_objective - - - M << "You have joined the ranks of the Syndicate and become a traitor to the station!" - - M.mind.announce_objectives() - - src.updateUsrDialog() - - -/obj/machinery/syndicate_beacon/proc/selfdestruct() - selfdestructing = 1 - spawn() explosion(src.loc, rand(3,8), rand(1,3), 1, 10) - //////////////////////////////////////// //Singularity beacon //////////////////////////////////////// diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index bdd9cb59616..bc5486dbbf0 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -9,7 +9,7 @@ anchored = 0 density = 0 layer = BELOW_MOB_LAYER //so people can't hide it and it's REALLY OBVIOUS - unacidable = 1 + resistance_flags = FIRE_PROOF | ACID_PROOF var/minimum_timer = 60 var/timer_set = 60 @@ -256,7 +256,7 @@ item_state = "eshield0" w_class = 3 origin_tech = "syndicate=5;combat=6" - burn_state = FLAMMABLE //Burnable (but the casing isn't) + resistance_flags = 0 //Burnable (but the casing isn't) var/adminlog = null /obj/item/weapon/bombcore/ex_act(severity, target) // Little boom can chain a big boom. 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/combat/combat.dm b/code/game/mecha/combat/combat.dm index 7bb81bc54e0..ff1dced21fd 100644 --- a/code/game/mecha/combat/combat.dm +++ b/code/game/mecha/combat/combat.dm @@ -2,6 +2,7 @@ force = 30 internal_damage_threshold = 50 damage_absorption = list("brute"=0.7,"fire"=1,"bullet"=0.7,"laser"=0.85,"energy"=1,"bomb"=0.8) + armor = list(melee = 30, bullet = 30, laser = 15, energy = 0, bomb = 20, bio = 0, rad = 0, fire = 0, acid = 0) /obj/mecha/combat/CheckParts(atom/holder) ..() diff --git a/code/game/mecha/combat/durand.dm b/code/game/mecha/combat/durand.dm index 43849b204c5..b9aa9037743 100644 --- a/code/game/mecha/combat/durand.dm +++ b/code/game/mecha/combat/durand.dm @@ -7,6 +7,7 @@ health = 400 deflect_chance = 20 damage_absorption = list("brute"=0.5,"fire"=1.1,"bullet"=0.65,"laser"=0.85,"energy"=0.9,"bomb"=0.8) + armor = list(melee = 40, bullet = 35, laser = 15, energy = 10, bomb = 20, bio = 0, rad = 0, fire = 0, acid = 0) max_temperature = 30000 infra_luminosity = 8 force = 40 diff --git a/code/game/mecha/combat/gygax.dm b/code/game/mecha/combat/gygax.dm index ba288e3c61d..1992d48671e 100644 --- a/code/game/mecha/combat/gygax.dm +++ b/code/game/mecha/combat/gygax.dm @@ -7,6 +7,7 @@ health = 250 deflect_chance = 5 damage_absorption = list("brute"=0.75,"fire"=1,"bullet"=0.8,"laser"=0.7,"energy"=0.85,"bomb"=1) + armor = list(melee = 40, bullet = 35, laser = 15, energy = 10, bomb = 20, bio = 0, rad = 0, fire = 0, acid = 0) max_temperature = 25000 infra_luminosity = 6 wreckage = /obj/structure/mecha_wreckage/gygax @@ -21,6 +22,7 @@ health = 300 deflect_chance = 15 damage_absorption = list("brute"=0.6,"fire"=0.8,"bullet"=0.6,"laser"=0.5,"energy"=0.65,"bomb"=0.8) + armor = list(melee = 40, bullet = 40, laser = 50, energy = 35, bomb = 20, bio = 0, rad = 0, fire = 0, acid = 0) max_temperature = 35000 leg_overload_coeff = 100 operation_req_access = list(access_syndicate) diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm index ec9fcf0bd6e..441577a9c2c 100644 --- a/code/game/mecha/combat/marauder.dm +++ b/code/game/mecha/combat/marauder.dm @@ -6,8 +6,9 @@ health = 500 deflect_chance = 25 damage_absorption = list("brute"=0.5,"fire"=0.7,"bullet"=0.45,"laser"=0.6,"energy"=0.7,"bomb"=0.7) + armor = list(melee = 50, bullet = 55, laser = 40, energy = 30, bomb = 30, bio = 0, rad = 0, fire = 0, acid = 0) max_temperature = 60000 - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF |FIRE_PROOF | ACID_PROOF infra_luminosity = 3 operation_req_access = list(access_cent_specops) wreckage = /obj/structure/mecha_wreckage/marauder diff --git a/code/game/mecha/combat/phazon.dm b/code/game/mecha/combat/phazon.dm index 9c5a6f1c1c2..b05a01435f1 100644 --- a/code/game/mecha/combat/phazon.dm +++ b/code/game/mecha/combat/phazon.dm @@ -8,6 +8,7 @@ health = 200 deflect_chance = 30 damage_absorption = list("brute"=0.7,"fire"=0.7,"bullet"=0.7,"laser"=0.7,"energy"=0.7,"bomb"=0.7) + armor = list(melee = 30, bullet = 30, laser = 30, energy = 30, bomb = 30, bio = 0, rad = 0, fire = 0, acid = 0) max_temperature = 25000 infra_luminosity = 3 wreckage = /obj/structure/mecha_wreckage/phazon diff --git a/code/game/mecha/combat/reticence.dm b/code/game/mecha/combat/reticence.dm index 612add46853..d25d67f4af3 100644 --- a/code/game/mecha/combat/reticence.dm +++ b/code/game/mecha/combat/reticence.dm @@ -7,6 +7,7 @@ health = 100 deflect_chance = 3 damage_absorption = list("brute"=0.75,"fire"=1,"bullet"=0.8,"laser"=0.7,"energy"=0.85,"bomb"=1) + armor = list(melee = 25, bullet = 20, laser = 30, energy = 15, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) max_temperature = 15000 wreckage = /obj/structure/mecha_wreckage/reticence operation_req_access = list(access_theatre) diff --git a/code/game/mecha/equipment/tools/mining_tools.dm b/code/game/mecha/equipment/tools/mining_tools.dm index 37bde068e28..5c52da34820 100644 --- a/code/game/mecha/equipment/tools/mining_tools.dm +++ b/code/game/mecha/equipment/tools/mining_tools.dm @@ -17,7 +17,7 @@ return if(isobj(target)) var/obj/target_obj = target - if(target_obj.unacidable) + if(target_obj.resistance_flags & UNACIDABLE) return target.visible_message("[chassis] starts to drill [target].", \ "[chassis] starts to drill [target]...", \ diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index ce76435de19..a1daa55e41b 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -154,8 +154,8 @@ var/damage_coeff = 0.8 selectable = 0 -/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster/proc/attack_react(mob/user as mob) - if(action_checks(user)) +/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster/proc/attack_react() + if(action_checks(src)) start_cooldown() return 1 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.dm b/code/game/mecha/mecha.dm index 58ec13fa682..12e6d5f0005 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -19,7 +19,7 @@ density = 1 //Dense. To raise the heat. opacity = 1 ///opaque. Menacing. anchored = 1 //no pulling around. - unacidable = 1 //and no deleting hoomans inside + resistance_flags = FIRE_PROOF | ACID_PROOF layer = BELOW_MOB_LAYER//icon draw layer infra_luminosity = 15 //byond implementation is bugged. force = 5 @@ -33,6 +33,7 @@ var/deflect_chance = 10 //chance to deflect the incoming projectiles, hits, or lesser the effect of ex_act. //the values in this list show how much damage will pass through, not how much will be absorbed. var/list/damage_absorption = list("brute"=0.8,"fire"=1.2,"bullet"=0.9,"laser"=1,"energy"=1,"bomb"=1) + armor = list(melee = 20, bullet = 10, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) var/list/facing_modifiers = list(FRONT_ARMOUR = 1.5, SIDE_ARMOUR = 1, BACK_ARMOUR = 0.5) var/obj/item/weapon/stock_parts/cell/cell var/state = 0 @@ -138,7 +139,6 @@ diag_hud_set_mechcell() diag_hud_set_mechstat() - return /obj/mecha/Destroy() go_out() diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm index 438c868d041..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) @@ -301,7 +301,7 @@ var/deflection = deflect_chance var/dam_coeff = 1 for(var/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster/B in equipment) - if(B.attack_react(user)) + if(B.attack_react()) deflection *= B.deflect_coeff dam_coeff *= B.damage_coeff break diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index 0b6b6cae361..b9d693deb91 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -10,6 +10,7 @@ lights_power = 7 deflect_chance = 15 damage_absorption = list("brute"=0.6,"fire"=1,"bullet"=0.8,"laser"=0.9,"energy"=1,"bomb"=0.6) + armor = list(melee = 40, bullet = 20, laser = 10, energy = 0, bomb = 40, bio = 0, rad = 0, fire = 0, acid = 0) max_equip = 6 wreckage = /obj/structure/mecha_wreckage/ripley var/list/cargo = new @@ -63,9 +64,10 @@ icon_state = "firefighter" max_temperature = 65000 health = 250 - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF |FIRE_PROOF | ACID_PROOF lights_power = 7 damage_absorption = list("brute"=0.6,"fire"=0.5,"bullet"=0.7,"laser"=0.7,"energy"=1,"bomb"=0.4) + armor = list(melee = 40, bullet = 30, laser = 30, energy = 0, bomb = 60, bio = 0, rad = 0, fire = 0, acid = 0) max_equip = 5 // More armor, less tools wreckage = /obj/structure/mecha_wreckage/ripley/firefighter diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 90208bccb45..1fe0fb49515 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -61,7 +61,7 @@ /obj/buckle_mob(mob/living/M, force = 0) . = ..() if(.) - if(burn_state == ON_FIRE) //Sets the mob on fire if you buckle them to a burning atom/movableect + if(resistance_flags & ON_FIRE) //Sets the mob on fire if you buckle them to a burning atom/movableect M.adjust_fire_stacks(1) M.IgniteMob() diff --git a/code/game/objects/effects/alien_acid.dm b/code/game/objects/effects/alien_acid.dm index 7247baac95e..6cc2831d154 100644 --- a/code/game/objects/effects/alien_acid.dm +++ b/code/game/objects/effects/alien_acid.dm @@ -15,7 +15,7 @@ density = 0 opacity = 0 anchored = 1 - unacidable = 1 + resistance_flags = FIRE_PROOF | UNACIDABLE var/atom/target var/ticks = 0 var/target_strength = 0 diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index e79f76f6722..c8897fc356c 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -4,7 +4,6 @@ name = "anomaly" desc = "A mysterious anomaly, seen commonly only in the region of space that the station orbits..." icon_state = "bhole3" - unacidable = 1 density = 0 anchored = 1 luminosity = 3 diff --git a/code/game/objects/effects/contraband.dm b/code/game/objects/effects/contraband.dm index 28c5fca5cc1..2e54d2f2b0b 100644 --- a/code/game/objects/effects/contraband.dm +++ b/code/game/objects/effects/contraband.dm @@ -103,7 +103,7 @@ list(name = "- Carbon Dioxide", desc = " This informational poster teaches the v desc = "You probably shouldn't be holding this." icon = 'icons/obj/contraband.dmi' force = 0 - burn_state = FLAMMABLE + resistance_flags = 0 var/serial_number = 0 var/obj/structure/sign/poster/resulting_poster = null //The poster that will be created is initialised and stored through contraband/poster's constructor var/official = 0 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/effect_system.dm b/code/game/objects/effects/effect_system/effect_system.dm index 11b6b3e7096..cd45c7fd560 100644 --- a/code/game/objects/effects/effect_system/effect_system.dm +++ b/code/game/objects/effects/effect_system/effect_system.dm @@ -9,7 +9,6 @@ would spawn and follow the beaker, even if it is carried or thrown. /obj/effect/particle_effect name = "particle effect" mouse_opacity = 0 - unacidable = 1//So effects are not targeted by alien acid. pass_flags = PASSTABLE | PASSGRILLE /obj/effect/particle_effect/New() diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index 3e68fc24e98..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) @@ -172,7 +173,7 @@ density = 1 opacity = 1 // changed in New() anchored = 1 - unacidable = 1 + resistance_flags = FIRE_PROOF | ACID_PROOF name = "foamed metal" desc = "A lightweight foamed metal wall." gender = PLURAL @@ -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/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm index 20ac8176ef4..42eecf20b49 100644 --- a/code/game/objects/effects/effect_system/effects_smoke.dm +++ b/code/game/objects/effects/effect_system/effects_smoke.dm @@ -287,10 +287,10 @@ var/more = "" if(M) more = "(?) (FLW) " - message_admins("A chemical smoke reaction has taken place in ([whereLink])[contained]. Last associated key is [carry.my_atom.fingerprintslast][more].", 0, 1) + message_admins("Smoke: ([whereLink])[contained]. Key: [carry.my_atom.fingerprintslast][more].", 0, 1) log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last associated key is [carry.my_atom.fingerprintslast].") else - message_admins("A chemical smoke reaction has taken place in ([whereLink]). No associated key.", 0, 1) + message_admins("Smoke: ([whereLink])[contained]. No associated key.", 0, 1) log_game("A chemical smoke reaction has taken place in ([where])[contained]. No associated key.") diff --git a/code/game/objects/effects/effects.dm b/code/game/objects/effects/effects.dm new file mode 100644 index 00000000000..51d8f30feb8 --- /dev/null +++ b/code/game/objects/effects/effects.dm @@ -0,0 +1,9 @@ + +//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' + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE + + diff --git a/code/game/objects/effects/forcefields.dm b/code/game/objects/effects/forcefields.dm index 5ec9788a733..fda824a8c7e 100644 --- a/code/game/objects/effects/forcefields.dm +++ b/code/game/objects/effects/forcefields.dm @@ -5,7 +5,6 @@ anchored = 1 opacity = 0 density = 1 - unacidable = 1 /obj/effect/forcefield/CanAtmosPass(turf/T) return !density 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/landmarks.dm b/code/game/objects/effects/landmarks.dm index d3f42f00d59..12d40b9f44c 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -3,7 +3,6 @@ icon = 'icons/mob/screen_gen.dmi' icon_state = "x2" anchored = 1 - unacidable = 1 invisibility = INVISIBILITY_ABSTRACT /obj/effect/landmark/New() diff --git a/code/game/objects/effects/manifest.dm b/code/game/objects/effects/manifest.dm index f00d154b024..5052531cf38 100644 --- a/code/game/objects/effects/manifest.dm +++ b/code/game/objects/effects/manifest.dm @@ -2,7 +2,6 @@ name = "manifest" icon = 'icons/mob/screen_gen.dmi' icon_state = "x" - unacidable = 1//Just to be sure. /obj/effect/manifest/New() src.invisibility = INVISIBILITY_ABSTRACT diff --git a/code/game/objects/effects/misc.dm b/code/game/objects/effects/misc.dm index 712d8c6c59f..f34a4c719c7 100644 --- a/code/game/objects/effects/misc.dm +++ b/code/game/objects/effects/misc.dm @@ -9,7 +9,6 @@ /obj/effect/beam name = "beam" - unacidable = 1//Just to be sure. var/def_zone pass_flags = PASSTABLE diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index e63dcbb7840..93a16e2b624 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -1,6 +1,5 @@ /obj/effect/overlay name = "overlay" - unacidable = 1 var/i_attached//Added for possible image attachments to objects. For hallucinations and the like. /obj/effect/overlay/singularity_act() @@ -23,7 +22,7 @@ icon_state = "nothing" anchored = 1 layer = ABOVE_MOB_LAYER - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE mouse_opacity = 0 var/duration = 10 //in deciseconds var/randomdir = TRUE diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index 7f4e1cb173c..2451d3a3942 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -1,14 +1,10 @@ -/obj/effect - icon = 'icons/effects/effects.dmi' - /obj/effect/portal name = "portal" desc = "Looks unstable. Best to test it with the clown." icon = 'icons/obj/stationobjs.dmi' icon_state = "portal" density = 1 - unacidable = 1//Can't destroy energy portals. var/obj/item/target = null var/creator = null anchored = 1 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 1e0b83f6ffd..61323895705 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -47,7 +47,6 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s var/permeability_coefficient = 1 // for chemicals/diseases var/siemens_coefficient = 1 // for electrical admittance/conductance (electrocution checks and shit) var/slowdown = 0 // How much clothing is slowing you down. Negative values speeds you up - var/list/armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) var/armour_penetration = 0 //percentage of armour effectiveness to remove var/list/allowed = null //suit storage stuff. var/obj/item/device/uplink/hidden_uplink = null @@ -117,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) @@ -220,7 +219,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s if(anchored) return - if(burn_state == ON_FIRE) + if(resistance_flags & ON_FIRE) var/mob/living/carbon/human/H = user if(istype(H)) if(H.gloves && (H.gloves.max_heat_protection_temperature > 360)) @@ -504,7 +503,7 @@ obj/item/proc/item_action_slot_check(slot, mob/user) /obj/item/acid_act(acidpwr, acid_volume) . = 1 - if(unacidable) + if(resistance_flags & UNACIDABLE) return var/meltingpwr = acid_volume*acidpwr diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm index 6be0b791f13..2a02f5f8139 100644 --- a/code/game/objects/items/cardboard_cutouts.dm +++ b/code/game/objects/items/cardboard_cutouts.dm @@ -5,7 +5,7 @@ icon = 'icons/obj/cardboard_cutout.dmi' icon_state = "cutout_basic" w_class = 4 - burn_state = FLAMMABLE + resistance_flags = 0 // Possible restyles for the cutout; // add an entry in change_appearance() if you add to here var/list/possible_appearances = list("Assistant", "Clown", "Mime", 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/devices/instruments.dm b/code/game/objects/items/devices/instruments.dm index afa648051c5..53e40bfba80 100644 --- a/code/game/objects/items/devices/instruments.dm +++ b/code/game/objects/items/devices/instruments.dm @@ -1,7 +1,7 @@ //copy pasta of the space piano, don't hurt me -Pete /obj/item/device/instrument name = "generic instrument" - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 20 var/datum/song/handheld/song var/instrumentId = "generic" diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index 21aab1670c9..f89954ad43a 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -213,11 +213,10 @@ O.make_laws() ticker.mode.remove_antag_for_borging(BM.mind) + if(!M.clockwork) + remove_servant_of_ratvar(BM, TRUE) BM.mind.transfer_to(O) - if(M.clockwork) - add_servant_of_ratvar(O) - if(O.mind && O.mind.special_role) O.mind.store_memory("As a cyborg, you must obey your silicon laws and master AI above all else. Your objectives will consider you to be dead.") O << "You have been robotized!" diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index e1f1419cb77..74246e2e36b 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -197,7 +197,7 @@ name = "mining cyborg lavaproof tracks" desc = "An upgrade kit to apply specialized coolant systems and insulation layers to mining cyborg tracks, enabling them to withstand exposure to molten rock." icon_state = "ash_plating" - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF require_module = 1 module_type = /obj/item/weapon/robot_module/miner origin_tech = "engineering=4;materials=4;plasmatech=4" diff --git a/code/game/objects/items/stacks/cash.dm b/code/game/objects/items/stacks/cash.dm index b68b14dafe4..948aeff5910 100644 --- a/code/game/objects/items/stacks/cash.dm +++ b/code/game/objects/items/stacks/cash.dm @@ -10,7 +10,7 @@ throw_speed = 2 throw_range = 2 w_class = 1 - burn_state = FLAMMABLE + resistance_flags = 0 var/value = 1 /obj/item/stack/spacecash/c10 diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 8d0009c181d..27c78cd1bbe 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -7,7 +7,7 @@ w_class = 1 throw_speed = 3 throw_range = 7 - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 5 var/heal_brute = 0 var/heal_burn = 0 diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 2a5674f1a9a..d7d8f3e66ba 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -135,7 +135,7 @@ var/global/list/datum/stack_recipe/uranium_recipes = list ( \ singular_name = "plasma sheet" origin_tech = "plasmatech=2;materials=2" sheettype = "plasma" - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 5 materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 86bbfa50683..78b27c7a287 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -146,7 +146,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \ icon = 'icons/obj/items.dmi' origin_tech = "materials=1;biotech=1" sheettype = "wood" - burn_state = FLAMMABLE + resistance_flags = 0 /obj/item/stack/sheet/mineral/wood/New(var/loc, var/amount=null) recipes = wood_recipes @@ -183,7 +183,7 @@ var/global/list/datum/stack_recipe/cloth_recipes = list ( \ singular_name = "cloth roll" icon_state = "sheet-cloth" origin_tech = "materials=2" - burn_state = FLAMMABLE + resistance_flags = 0 force = 0 throwforce = 0 @@ -216,7 +216,7 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \ singular_name = "cardboard sheet" icon_state = "sheet-card" origin_tech = "materials=1" - burn_state = FLAMMABLE + resistance_flags = 0 /obj/item/stack/sheet/cardboard/New(var/loc, var/amount=null) recipes = cardboard_recipes diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 4977360b0df..39f50a2d1c2 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -79,7 +79,7 @@ icon_state = "tile_grass" origin_tech = "biotech=1" turf_type = /turf/open/floor/grass - burn_state = FLAMMABLE + resistance_flags = 0 //Wood @@ -90,7 +90,7 @@ icon_state = "tile-wood" origin_tech = "biotech=1" turf_type = /turf/open/floor/wood - burn_state = FLAMMABLE + resistance_flags = 0 //Carpets @@ -100,7 +100,7 @@ desc = "A piece of carpet. It is the same size as a floor tile." icon_state = "tile-carpet" turf_type = /turf/open/floor/carpet - burn_state = FLAMMABLE + resistance_flags = 0 /obj/item/stack/tile/fakespace @@ -109,7 +109,7 @@ desc = "A piece of carpet with a convincing star pattern." icon_state = "tile_space" turf_type = /turf/open/floor/fakespace - burn_state = FLAMMABLE + resistance_flags = 0 /obj/item/stack/tile/fakespace/loaded amount = 30 diff --git a/code/game/objects/items/stacks/wrap.dm b/code/game/objects/items/stacks/wrap.dm index f210f43a5dc..b90798aeb33 100644 --- a/code/game/objects/items/stacks/wrap.dm +++ b/code/game/objects/items/stacks/wrap.dm @@ -12,7 +12,7 @@ flags = NOBLUDGEON amount = 25 max_amount = 25 - burn_state = FLAMMABLE + resistance_flags = 0 /obj/item/stack/wrapping_paper/Destroy() if(!amount) @@ -32,7 +32,7 @@ flags = NOBLUDGEON amount = 25 max_amount = 25 - burn_state = FLAMMABLE + resistance_flags = 0 /obj/item/proc/can_be_package_wrapped() //can the item be wrapped with package wrapper into a delivery package return 1 diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index e2924db1ac9..e8a53bdaa11 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -277,7 +277,7 @@ item_state = "arm_blade" attack_verb = list("pricked", "absorbed", "gored") w_class = 2 - burn_state = FLAMMABLE + resistance_flags = 0 /* @@ -638,7 +638,7 @@ /obj/item/toy/cards - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 5 var/parentdeck = null var/deckstyle = "nanotrasen" @@ -873,8 +873,8 @@ newobj.card_throw_speed = sourceobj.card_throw_speed newobj.card_throw_range = sourceobj.card_throw_range newobj.card_attack_verb = sourceobj.card_attack_verb - if(sourceobj.burn_state == FIRE_PROOF) - newobj.burn_state = FIRE_PROOF + if(sourceobj.resistance_flags & FIRE_PROOF) + newobj.resistance_flags |= FIRE_PROOF /obj/item/toy/cards/singlecard name = "card" @@ -991,7 +991,7 @@ card_throw_speed = 3 card_throw_range = 7 card_attack_verb = list("attacked", "sliced", "diced", "slashed", "cut") - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /* * Fake nuke @@ -1051,7 +1051,7 @@ item_state = "carp_plushie" w_class = 2 attack_verb = list("bitten", "eaten", "fin slapped") - burn_state = FLAMMABLE + resistance_flags = 0 var/bitesound = 'sound/weapons/bite.ogg' //Attack mob @@ -1161,7 +1161,7 @@ icon_state = "toy_mouse" w_class = 2.0 var/cooldown = 0 - burn_state = FLAMMABLE + resistance_flags = 0 /* diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index ecc3b4776b4..aeea6c170d0 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -3,7 +3,7 @@ icon = 'icons/obj/janitor.dmi' desc = "This is rubbish." w_class = 1 - burn_state = FLAMMABLE + resistance_flags = 0 /obj/item/trash/raisins name = "\improper 4no raisins" @@ -40,7 +40,7 @@ /obj/item/trash/plate name = "plate" icon_state = "plate" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/trash/pistachios name = "pistachios pack" @@ -53,7 +53,7 @@ /obj/item/trash/tray name = "tray" icon_state = "tray" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/trash/candle name = "candle" @@ -63,7 +63,7 @@ /obj/item/trash/can name = "crushed can" icon_state = "cola" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/trash/attack(mob/M, mob/living/user) return diff --git a/code/game/objects/items/weapons/chrono_eraser.dm b/code/game/objects/items/weapons/chrono_eraser.dm index 3ef008add20..21533c55cd0 100644 --- a/code/game/objects/items/weapons/chrono_eraser.dm +++ b/code/game/objects/items/weapons/chrono_eraser.dm @@ -152,7 +152,6 @@ icon_state = "chronofield" density = 0 anchored = 1 - unacidable = 1 blend_mode = BLEND_MULTIPLY var/mob/living/captured = null var/obj/item/weapon/gun/energy/chrono_gun/gun = null @@ -255,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/courtroom.dm b/code/game/objects/items/weapons/courtroom.dm index 403dfebb49e..e2f9b2fd21d 100644 --- a/code/game/objects/items/weapons/courtroom.dm +++ b/code/game/objects/items/weapons/courtroom.dm @@ -11,7 +11,7 @@ throwforce = 6 w_class = 2 attack_verb = list("bashed", "battered", "judged", "whacked") - burn_state = FLAMMABLE + resistance_flags = 0 /obj/item/weapon/gavelhammer/suicide_act(mob/user) user.visible_message("[user] has sentenced \himself to death with the [src.name]! It looks like \he's trying to commit suicide.") @@ -26,7 +26,7 @@ force = 2 throwforce = 2 w_class = 1 - burn_state = FLAMMABLE + resistance_flags = 0 /obj/item/weapon/gavelblock/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/gavelhammer)) diff --git a/code/game/objects/items/weapons/gift.dm b/code/game/objects/items/weapons/gift.dm index 566855f15fa..ffeeefe3865 100644 --- a/code/game/objects/items/weapons/gift.dm +++ b/code/game/objects/items/weapons/gift.dm @@ -13,7 +13,7 @@ icon = 'icons/obj/storage.dmi' icon_state = "giftdeliverypackage3" item_state = "gift1" - burn_state = FLAMMABLE + resistance_flags = 0 /obj/item/weapon/a_gift/New() ..() 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/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm index c5e24fc13a4..4328f3bb274 100644 --- a/code/game/objects/items/weapons/grenades/grenade.dm +++ b/code/game/objects/items/weapons/grenades/grenade.dm @@ -9,7 +9,7 @@ throw_range = 7 flags = CONDUCT slot_flags = SLOT_BELT - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 5 var/active = 0 var/det_time = 50 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 1f036cb24a1..4fa45cb7d8c 100644 --- a/code/game/objects/items/weapons/holosign_creator.dm +++ b/code/game/objects/items/weapons/holosign_creator.dm @@ -118,6 +118,7 @@ icon = 'icons/effects/effects.dmi' anchored = 1 var/holo_integrity = 1 + armor = list(melee = 0, bullet = 50, laser = 50, energy = 50, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) var/obj/item/weapon/holosign_creator/projector /obj/effect/overlay/holograph/New(loc, source_projector) @@ -136,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/mop.dm b/code/game/objects/items/weapons/mop.dm index feeab19e611..7a8b36c66db 100644 --- a/code/game/objects/items/weapons/mop.dm +++ b/code/game/objects/items/weapons/mop.dm @@ -9,7 +9,7 @@ throw_range = 7 w_class = 3 attack_verb = list("mopped", "bashed", "bludgeoned", "whacked") - burn_state = FLAMMABLE + resistance_flags = 0 var/mopping = 0 var/mopcount = 0 var/mopcap = 5 diff --git a/code/game/objects/items/weapons/paint.dm b/code/game/objects/items/weapons/paint.dm index bab00418b8c..b15225639fe 100644 --- a/code/game/objects/items/weapons/paint.dm +++ b/code/game/objects/items/weapons/paint.dm @@ -10,7 +10,7 @@ item_color = "FFFFFF" item_state = "paintcan" w_class = 3 - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 5 var/paintleft = 10 diff --git a/code/game/objects/items/weapons/scrolls.dm b/code/game/objects/items/weapons/scrolls.dm index 8f236fc5727..45d3b2e6d60 100644 --- a/code/game/objects/items/weapons/scrolls.dm +++ b/code/game/objects/items/weapons/scrolls.dm @@ -9,7 +9,7 @@ throw_speed = 3 throw_range = 7 origin_tech = "bluespace=6" - burn_state = FLAMMABLE + resistance_flags = 0 /obj/item/weapon/teleportation_scroll/apprentice name = "lesser scroll of teleportation" diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm index 26513f300b5..1f510031439 100644 --- a/code/game/objects/items/weapons/shields.dm +++ b/code/game/objects/items/weapons/shields.dm @@ -48,7 +48,7 @@ item_state = "buckler" materials = list() origin_tech = "materials=1;combat=3;biotech=2" - burn_state = FLAMMABLE + resistance_flags = 0 block_chance = 30 /obj/item/weapon/shield/energy diff --git a/code/game/objects/items/weapons/signs.dm b/code/game/objects/items/weapons/signs.dm index 622f4225166..9950d25a61d 100644 --- a/code/game/objects/items/weapons/signs.dm +++ b/code/game/objects/items/weapons/signs.dm @@ -5,7 +5,7 @@ force = 5 w_class = 4 attack_verb = list("bashed","smacked") - burn_state = FLAMMABLE + resistance_flags = 0 var/label = "" var/last_wave = 0 diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 21014fb080d..8a8c6987103 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -19,7 +19,7 @@ max_w_class = 3 max_combined_w_class = 21 storage_slots = 21 - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 20 /obj/item/weapon/storage/backpack/attackby(obj/item/weapon/W, mob/user, params) @@ -37,7 +37,7 @@ icon_state = "holdingpack" max_w_class = 6 max_combined_w_class = 35 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF var/pshoom = 'sound/items/PSHOOM.ogg' var/alt_sound = 'sound/items/PSHOOM_2.ogg' @@ -141,14 +141,14 @@ desc = "It's a special backpack made exclusively for Nanotrasen officers." icon_state = "captainpack" item_state = "captainpack" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/weapon/storage/backpack/industrial name = "industrial backpack" desc = "It's a tough backpack for the daily grind of station life." icon_state = "engiepack" item_state = "engiepack" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/weapon/storage/backpack/botany name = "botany backpack" @@ -173,7 +173,7 @@ desc = "A specially designed backpack. It's fire resistant and smells vaguely of plasma." icon_state = "toxpack" item_state = "toxpack" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/weapon/storage/backpack/virology name = "virology backpack" @@ -196,7 +196,7 @@ name = "leather satchel" desc = "It's a very fancy satchel made with fine leather." icon_state = "satchel" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/weapon/storage/backpack/satchel/leather/withwallet/New() ..() @@ -207,7 +207,7 @@ desc = "A tough satchel with extra pockets." icon_state = "satchel-eng" item_state = "engiepack" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/weapon/storage/backpack/satchel/med name = "medical satchel" @@ -238,7 +238,7 @@ desc = "Useful for holding research materials." icon_state = "satchel-tox" item_state = "satchel-tox" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/weapon/storage/backpack/satchel/hyd name = "botanist satchel" @@ -263,7 +263,7 @@ desc = "An exclusive satchel for Nanotrasen officers." icon_state = "satchel-cap" item_state = "captainpack" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/weapon/storage/backpack/satchel/flat name = "smuggler's satchel" @@ -328,7 +328,7 @@ desc = "A large dufflebag for holding extra captainly goods." icon_state = "duffle-captain" item_state = "duffle-captain" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/weapon/storage/backpack/dufflebag/med name = "medical dufflebag" @@ -347,14 +347,14 @@ desc = "A large dufflebag for holding extra tools and supplies." icon_state = "duffle-eng" item_state = "duffle-eng" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/weapon/storage/backpack/dufflebag/drone name = "drone dufflebag" desc = "A large dufflebag for holding tools and hats." icon_state = "duffle-drone" item_state = "duffle-drone" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/weapon/storage/backpack/dufflebag/drone/New() ..() diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 9216f54280d..ea0d4721f78 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -113,7 +113,7 @@ max_w_class = 3 w_class = 1 can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/weapon/grown) - burn_state = FLAMMABLE + resistance_flags = 0 //////// @@ -294,7 +294,7 @@ max_w_class = 3 w_class = 4 //Bigger than a book because physics can_hold = list(/obj/item/weapon/book, /obj/item/weapon/storage/book, /obj/item/weapon/spellbook) - burn_state = FLAMMABLE + resistance_flags = 0 /* * Trays - Agouri @@ -364,7 +364,7 @@ w_class = 1 preposition = "in" can_hold = list(/obj/item/weapon/reagent_containers/pill, /obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/reagent_containers/glass/bottle) - burn_state = FLAMMABLE + resistance_flags = 0 /* * Biowaste bag (mostly for xenobiologists) @@ -380,4 +380,4 @@ w_class = 1 preposition = "in" can_hold = list(/obj/item/slime_extract, /obj/item/weapon/reagent_containers/syringe, /obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/reagent_containers/glass/bottle, /obj/item/weapon/reagent_containers/blood, /obj/item/weapon/reagent_containers/hypospray/medipen, /obj/item/trash/deadmouse) - burn_state = FLAMMABLE + resistance_flags = 0 diff --git a/code/game/objects/items/weapons/storage/book.dm b/code/game/objects/items/weapons/storage/book.dm index ab3d92007ea..7e308b91523 100644 --- a/code/game/objects/items/weapons/storage/book.dm +++ b/code/game/objects/items/weapons/storage/book.dm @@ -6,7 +6,7 @@ throw_speed = 2 throw_range = 5 w_class = 3 - burn_state = FLAMMABLE + resistance_flags = 0 var/title = "book" /obj/item/weapon/storage/book/attack_self(mob/user) user << "The pages of [title] have been cut out!" diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 241474b391b..99c11c88f3b 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -25,7 +25,7 @@ desc = "It's just an ordinary box." icon_state = "box" item_state = "syringe_kit" - burn_state = FLAMMABLE + resistance_flags = 0 var/foldable = /obj/item/stack/sheet/cardboard @@ -634,7 +634,7 @@ desc = "A sack neatly crafted out of paper." icon_state = "paperbag_None" item_state = "paperbag_None" - burn_state = FLAMMABLE + resistance_flags = 0 foldable = null var/design = NODESIGN diff --git a/code/game/objects/items/weapons/storage/briefcase.dm b/code/game/objects/items/weapons/storage/briefcase.dm index 67780096d0e..a540ed7080c 100644 --- a/code/game/objects/items/weapons/storage/briefcase.dm +++ b/code/game/objects/items/weapons/storage/briefcase.dm @@ -11,7 +11,7 @@ max_w_class = 3 max_combined_w_class = 21 attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 20 var/folder_path = /obj/item/weapon/folder //this is the path of the folder that gets spawned in New() @@ -42,7 +42,7 @@ max_w_class = 3 max_combined_w_class = 21 attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 20 /obj/item/weapon/storage/briefcase/sniperbundle/New() diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index fd8d6395ec5..6111e75fe85 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -17,7 +17,7 @@ icon = 'icons/obj/food/containers.dmi' icon_state = "donutbox6" name = "donut box" - burn_state = FLAMMABLE + resistance_flags = 0 var/icon_type = "donut" var/spawn_type = null var/fancy_open = FALSE diff --git a/code/game/objects/items/weapons/storage/wallets.dm b/code/game/objects/items/weapons/storage/wallets.dm index cc861ffaeb6..3dd8d772de1 100644 --- a/code/game/objects/items/weapons/storage/wallets.dm +++ b/code/game/objects/items/weapons/storage/wallets.dm @@ -4,7 +4,7 @@ storage_slots = 4 icon_state = "wallet" w_class = 2 - burn_state = FLAMMABLE + resistance_flags = 0 can_hold = list( /obj/item/stack/spacecash, /obj/item/weapon/card, 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/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index 07d09d07451..f5b4175f753 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -393,14 +393,14 @@ var/highlander_claymores = 0 w_class = 2 armour_penetration = 100 attack_verb = list("bludgeoned", "whacked", "disciplined") - burn_state = FLAMMABLE + resistance_flags = 0 /obj/item/weapon/staff/broom name = "broom" desc = "Used for sweeping, and flying into the night while cackling. Black cat not included." icon = 'icons/obj/wizard.dmi' icon_state = "broom" - burn_state = FLAMMABLE + resistance_flags = 0 /obj/item/weapon/staff/stick name = "stick" diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 89a48c7c22c..a8730411187 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -2,7 +2,6 @@ languages_spoken = HUMAN languages_understood = HUMAN var/crit_fail = 0 - var/unacidable = 0 //universal "unacidabliness" var, here so you can use it in any obj. animate_movement = 2 var/throwforce = 0 var/in_use = 0 // If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING! @@ -10,7 +9,9 @@ var/damtype = "brute" var/force = 0 - var/burn_state = FIRE_PROOF // LAVA_PROOF | FIRE_PROOF | FLAMMABLE | ON_FIRE + var/list/armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) + var/resistance_flags = FIRE_PROOF // INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ON_FIRE | UNACIDABLE | ACID_PROOF + var/burntime = 10 //How long it takes to burn to ashes, in seconds var/burn_world_time //What world time the object will burn up completely var/being_shocked = 0 @@ -189,8 +190,8 @@ return T.storage_contents_dump_act(src_object, user) /obj/fire_act(global_overlay=1) - if(!burn_state) - burn_state = ON_FIRE + if(!(resistance_flags & (FIRE_PROOF|ON_FIRE))) + resistance_flags |= ON_FIRE SSobj.burning += src burn_world_time = world.time + burntime*rand(10,20) if(global_overlay) @@ -205,8 +206,8 @@ qdel(src) /obj/proc/extinguish() - if(burn_state == ON_FIRE) - burn_state = FLAMMABLE + if(resistance_flags & ON_FIRE) + resistance_flags &= ~ON_FIRE overlays -= fire_overlay SSobj.burning -= src 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/ai_core.dm b/code/game/objects/structures/ai_core.dm index 9ad75378d04..e1bcccebac1 100644 --- a/code/game/objects/structures/ai_core.dm +++ b/code/game/objects/structures/ai_core.dm @@ -156,6 +156,7 @@ return ticker.mode.remove_antag_for_borging(M.brainmob.mind) + remove_servant_of_ratvar(M, TRUE) M.loc = src brain = M user << "Added a brain." 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/artstuff.dm b/code/game/objects/structures/artstuff.dm index 59929295365..53351dab39e 100644 --- a/code/game/objects/structures/artstuff.dm +++ b/code/game/objects/structures/artstuff.dm @@ -9,7 +9,7 @@ icon = 'icons/obj/artstuff.dmi' icon_state = "easel" density = 1 - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 15 var/obj/item/weapon/canvas/painting = null @@ -51,7 +51,7 @@ var/global/list/globalBlankCanvases[AMT_OF_CANVASES] desc = "draw out your soul on this canvas!" icon = 'icons/obj/artstuff.dmi' icon_state = "11x11" - burn_state = FLAMMABLE + resistance_flags = 0 var/whichGlobalBackup = 1 //List index /obj/item/weapon/canvas/nineteenXnineteen diff --git a/code/game/objects/structures/beds_chairs/bed.dm b/code/game/objects/structures/beds_chairs/bed.dm index c6f3b7831c4..e77f9a7845e 100644 --- a/code/game/objects/structures/beds_chairs/bed.dm +++ b/code/game/objects/structures/beds_chairs/bed.dm @@ -15,7 +15,7 @@ anchored = 1 can_buckle = 1 buckle_lying = 1 - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 30 var/buildstacktype = /obj/item/stack/sheet/metal var/buildstackamount = 2 @@ -61,7 +61,7 @@ icon = 'icons/obj/rollerbed.dmi' icon_state = "down" anchored = 0 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF var/foldabletype = /obj/item/roller /obj/structure/bed/roller/MouseDrop(over_object, src_location, over_location) diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index 395b9b05dae..65e2d09eac2 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -6,7 +6,7 @@ anchored = 1 can_buckle = 1 buckle_lying = 0 //you sit in a chair, not lay - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF var/buildstacktype = /obj/item/stack/sheet/metal var/buildstackamount = 1 var/item_chair = /obj/item/chair // if null it can't be picked up @@ -118,7 +118,7 @@ icon_state = "wooden_chair" name = "wooden chair" desc = "Old is never too old to not be in fashion." - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 20 buildstacktype = /obj/item/stack/sheet/mineral/wood buildstackamount = 3 @@ -139,7 +139,7 @@ desc = "It looks comfy.\nAlt-click to rotate it clockwise." icon_state = "comfychair" color = rgb(255,255,255) - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 30 buildstackamount = 2 var/image/armrest = null @@ -308,7 +308,7 @@ name = "wooden chair" icon_state = "wooden_chair_toppled" item_state = "woodenchair" - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 20 hitsound = 'sound/weapons/genhit1.ogg' origin_type = /obj/structure/chair/wood diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index b81634de888..9bbe254094f 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -17,7 +17,7 @@ LINEN BINS throw_range = 2 w_class = 1 item_color = "white" - burn_state = FLAMMABLE + resistance_flags = 0 dog_fashion = /datum/dog_fashion/head/ghost @@ -205,7 +205,7 @@ LINEN BINS icon = 'icons/obj/structures.dmi' icon_state = "linenbin-full" anchored = 1 - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 20 var/amount = 10 var/list/sheets = list() diff --git a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm index f450be51072..80f9282f457 100644 --- a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm +++ b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm @@ -4,7 +4,7 @@ icon_state = "cardboard" health = 10 mob_storage_capacity = 1 - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 20 can_weld_shut = 0 cutting_tool = /obj/item/weapon/wirecutters @@ -61,7 +61,7 @@ icon_state = "metalbox" health = 500 mob_storage_capacity = 5 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF move_speed_multiplier = 2 cutting_tool = /obj/item/weapon/weldingtool open_sound = 'sound/machines/click.ogg' diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm index e2d7f9c2ac1..3d9a7a36790 100644 --- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm +++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm @@ -2,7 +2,7 @@ name = "cabinet" desc = "Old will forever be in fashion." icon_state = "cabinet" - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 20 /obj/structure/closet/acloset @@ -72,7 +72,7 @@ new /obj/item/weapon/storage/box/flashbangs(src) for(var/i in 1 to 3) new /obj/item/clothing/head/helmet/thunderdome(src) - + /obj/structure/closet/thunderdome/tdgreen name = "green-team Thunderdome closet" icon_door = "green" @@ -91,7 +91,7 @@ new /obj/item/weapon/storage/box/flashbangs(src) for(var/i in 1 to 3) new /obj/item/clothing/head/helmet/thunderdome(src) - + /obj/structure/closet/malf/suits desc = "It's a storage unit for operational gear." icon_state = "syndicate" diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 7a7fa7b76a3..bcfc691703a 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -121,7 +121,7 @@ name = "coffin" desc = "It's a burial receptacle for the dearly departed." icon_state = "coffin" - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 20 /obj/structure/closet/wardrobe/red diff --git a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm index 72fc2ad7bb8..59a88859d99 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm @@ -2,7 +2,7 @@ name = "booze storage" req_access = list(access_bar) icon_state = "cabinet" - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 20 /obj/structure/closet/secure_closet/bar/New() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm index 5042d5b037b..22773137de4 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm @@ -25,7 +25,7 @@ /obj/structure/closet/secure_closet/personal/cabinet icon_state = "cabinet" - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 20 /obj/structure/closet/secure_closet/personal/cabinet/New() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index f4c3fb67fb9..785aeaacdc3 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -157,7 +157,7 @@ name = "\proper detective's cabinet" req_access = list(access_forensics_lockers) icon_state = "cabinet" - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 20 /obj/structure/closet/secure_closet/detective/New() 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 acbb40fd495..0194e0d9f40 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -5,7 +5,7 @@ desc = "A display case for prized possessions." density = 1 anchored = 1 - unacidable = 1//Dissolving the case would also delete the gun. + resistance_flags = FIRE_PROOF | ACID_PROOF var/health = 30 var/destroyed = 0 var/obj/item/showpiece = null @@ -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 91c748c0e0c..840613533ad 100644 --- a/code/game/objects/structures/fireaxe.dm +++ b/code/game/objects/structures/fireaxe.dm @@ -6,6 +6,7 @@ icon_state = "fireaxe" anchored = 1 density = 0 + armor = list(melee = 50, bullet = 20, laser = 0, energy = 100, bomb = 10, bio = 100, rad = 100, fire = 0, acid = 0) var/locked = 1 var/open = 0 var/health = 60 @@ -82,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/fireplace.dm b/code/game/objects/structures/fireplace.dm index 4da513ce352..da7fa68666b 100644 --- a/code/game/objects/structures/fireplace.dm +++ b/code/game/objects/structures/fireplace.dm @@ -10,7 +10,7 @@ density = FALSE anchored = TRUE pixel_x = -16 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF var/lit = FALSE var/fuel_added = 0 diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index a94dd50fe7a..f9f4b0d0d95 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -1,5 +1,5 @@ /obj/structure/flora - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 30 anchored = 1 @@ -290,7 +290,7 @@ icon_state = "basalt" desc = "A volcanic rock" icon = 'icons/obj/flora/rocks.dmi' - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF density = 1 /obj/structure/flora/rock/New() 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 91a840b1e3c..f3cbde713e8 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -9,6 +9,7 @@ pressure_resistance = 5*ONE_ATMOSPHERE layer = BELOW_OBJ_LAYER var/health = 10 + armor = list(melee = 50, bullet = 70, laser = 70, energy = 100, bomb = 10, bio = 100, rad = 100, fire = 0, acid = 0) var/destroyed = 0 var/obj/item/stack/rods/stored @@ -31,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 d9454083422..bf40a96002b 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -5,6 +5,7 @@ icon_state = "lattice" density = 0 anchored = 1 + armor = list(melee = 100, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) layer = LATTICE_LAYER //under pipes var/obj/item/stack/rods/stored canSmoothWith = list(/obj/structure/lattice, @@ -26,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/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 317ba4e9a37..b10348b7435 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -243,5 +243,5 @@ openSound = 'sound/effects/doorcreaky.ogg' closeSound = 'sound/effects/doorcreaky.ogg' sheetType = /obj/item/stack/sheet/mineral/wood - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 30 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 4594c4714d4..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) @@ -87,7 +87,7 @@ icon = 'icons/obj/decals.dmi' icon_state = "backing" w_class = 3 - burn_state = FLAMMABLE + resistance_flags = 0 var/sign_path = /obj/structure/sign/basic //the type of sign that will be created when placed on a turf /obj/item/sign_backing/afterattack(atom/target, mob/user, proximity) diff --git a/code/game/objects/structures/table_frames.dm b/code/game/objects/structures/table_frames.dm index e5ead848f85..5a86a818633 100644 --- a/code/game/objects/structures/table_frames.dm +++ b/code/game/objects/structures/table_frames.dm @@ -96,7 +96,7 @@ icon_state = "wood_frame" framestack = /obj/item/stack/sheet/mineral/wood framestackamount = 2 - burn_state = FLAMMABLE + resistance_flags = 0 /obj/structure/table_frame/wood/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/stack/sheet/mineral/wood)) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 9a9e11d2091..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() @@ -315,7 +315,7 @@ frame = /obj/structure/table_frame/wood framestack = /obj/item/stack/sheet/mineral/wood buildstack = /obj/item/stack/sheet/mineral/wood - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 20 canSmoothWith = list(/obj/structure/table/wood, /obj/structure/table/wood/poker, @@ -364,6 +364,7 @@ buildstack = /obj/item/stack/sheet/plasteel canSmoothWith = list(/obj/structure/table/reinforced, /obj/structure/table) health = 200 + armor = list(melee = 10, bullet = 10, laser = 10, energy = 100, bomb = 20, bio = 0, rad = 0, fire = 0, acid = 70) /obj/structure/table/reinforced/attackby(obj/item/weapon/W, mob/user, params) if(istype(W, /obj/item/weapon/weldingtool)) @@ -476,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/watercloset.dm b/code/game/objects/structures/watercloset.dm index 92e2ca87b76..1328572f43b 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -332,7 +332,7 @@ if(H.w_uniform.clean_blood()) H.update_inv_w_uniform() if(washgloves) - clean_blood() + H.clean_blood() if(H.shoes && washshoes) if(H.shoes.clean_blood()) H.update_inv_shoes() diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 9b076bcd5c2..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() @@ -434,6 +434,7 @@ name = "reinforced window" icon_state = "rwindow" reinf = 1 + armor = list(melee = 50, bullet = 0, laser = 0, energy = 0, bomb = 25, bio = 100, rad = 100, fire = 0, acid = 0) maxhealth = 50 explosion_block = 1 @@ -494,6 +495,7 @@ wtype = "shuttle" fulltile = 1 reinf = 1 + armor = list(melee = 50, bullet = 0, laser = 0, energy = 0, bomb = 25, bio = 100, rad = 100, fire = 0, acid = 0) smooth = SMOOTH_TRUE canSmoothWith = null explosion_block = 1 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/plating.dm b/code/game/turfs/simulated/floor/plating.dm index 8e4841da760..91c259c7061 100644 --- a/code/game/turfs/simulated/floor/plating.dm +++ b/code/game/turfs/simulated/floor/plating.dm @@ -272,14 +272,14 @@ for(var/thing in thing_to_check) if(isobj(thing)) var/obj/O = thing - if(O.burn_state == LAVA_PROOF || O.throwing) + if(O.resistance_flags & LAVA_PROOF || O.throwing) continue if(istype(O, /obj/effect/decal/cleanable/ash)) //So we don't get stuck burning the same ash pile forever qdel(O) continue . = 1 - if(O.burn_state == FIRE_PROOF) - O.burn_state = FLAMMABLE //Even fireproof things burn up in lava + if(O.resistance_flags & FIRE_PROOF) + O.resistance_flags &= ~FIRE_PROOF //Even fireproof things burn up in lava O.fire_act() @@ -292,7 +292,7 @@ if(L.buckled) if(isobj(L.buckled)) var/obj/O = L.buckled - if(O.burn_state == LAVA_PROOF) + if(O.resistance_flags & LAVA_PROOF) continue if(isliving(L.buckled)) //Goliath riding var/mob/living/live = L.buckled 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/assembly/flash.dm b/code/modules/assembly/flash.dm index f174129c534..4b8d3042fc6 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -48,7 +48,8 @@ crit_fail = 1 update_icon() var/turf/T = get_turf(src) - T.visible_message("The [src.name] burns out!") + if(T) + T.visible_message("[src] burns out!") /obj/item/device/assembly/flash/proc/flash_recharge(interval=10) @@ -135,10 +136,10 @@ /obj/item/device/assembly/flash/emp_act(severity) - if(!try_use_flash() || !loc) + if(!try_use_flash()) return 0 - for(var/mob/living/carbon/M in viewers(3, loc)) - flash_carbon(M, null, 10, 0) + if(iscarbon(loc)) + flash_carbon(loc, null, 10, 0) burn_out() ..() diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm index 083709793b0..8690a82d115 100644 --- a/code/modules/assembly/proximity.dm +++ b/code/modules/assembly/proximity.dm @@ -81,6 +81,9 @@ if(scanning) addtimer(src, "sense", 0) +/obj/item/device/assembly/prox_sensor/Destroy() + remove_from_proximity_list(src, sensitivity) + ..() /obj/item/device/assembly/prox_sensor/toggle_scan(scan) if(!secured) diff --git a/code/modules/atmospherics/environmental/LINDA_fire.dm b/code/modules/atmospherics/environmental/LINDA_fire.dm index 1c2ec88a9d5..7ce4eba77b1 100644 --- a/code/modules/atmospherics/environmental/LINDA_fire.dm +++ b/code/modules/atmospherics/environmental/LINDA_fire.dm @@ -46,7 +46,6 @@ /obj/effect/hotspot anchored = 1 mouse_opacity = 0 - unacidable = 1//So you can't melt fire with acid. icon = 'icons/effects/fire.dmi' icon_state = "1" layer = ABOVE_OPEN_TURF_LAYER 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/pipes/heat_exchange/he_pipes.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm index c78e9de2e9c..9585fb6b8fb 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm @@ -7,7 +7,7 @@ color = "#404040" buckle_lying = 1 var/icon_temperature = T20C //stop small changes in temperature causing icon refresh - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF /obj/machinery/atmospherics/pipe/heat_exchanging/New() ..() diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 2188de76733..df48ca85a8d 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -17,6 +17,7 @@ var/gas_type = "" var/release_pressure = ONE_ATMOSPHERE + armor = list(melee = 50, bullet = 50, laser = 50, energy = 100, bomb = 10, bio = 100, rad = 100, fire = 10, acid = 0) var/health = 100 pressure_resistance = 7 * ONE_ATMOSPHERE var/temperature_resistance = 1000 + T0C @@ -235,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/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm index 4d772168da7..8a77545144c 100644 --- a/code/modules/awaymissions/gateway.dm +++ b/code/modules/awaymissions/gateway.dm @@ -7,7 +7,7 @@ var/obj/machinery/gateway/centerstation/the_gateway = null icon_state = "off" density = 1 anchored = 1 - unacidable = 1 + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE var/active = 0 diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index 35dcdc3b70d..8368096be0f 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -193,7 +193,7 @@ obj/item/weapon/paper/crumpled/snowdin/shovel /obj/item/clothing/under/syndicate/coldres name = "insulated tactical turtleneck" desc = "A non-descript and slightly suspicious looking turtleneck with digital camouflage cargo pants. The interior has been padded with special insulation for both warmth and protection" - armor = list(melee = 20, bullet = 10, laser = 0,energy = 5, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 20, bullet = 10, laser = 0,energy = 5, bomb = 0, bio = 0, rad = 0, fire = 25, acid = 25) cold_protection = CHEST|GROIN|ARMS|LEGS min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT /obj/item/clothing/shoes/combat/coldres diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index 7e9ab1f85c3..b57b4ad5927 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -159,8 +159,8 @@ origin_tech = "syndicate=2" sensor_mode = 0 //Hey who's this guy on the Syndicate Shuttle?? random_sensor = 0 - burn_state = FIRE_PROOF - armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0) + resistance_flags = FIRE_PROOF + armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) /obj/item/clothing/under/chameleon/New() ..() @@ -176,8 +176,8 @@ item_state = "armor" blood_overlay_type = "armor" origin_tech = "syndicate=2" - burn_state = FIRE_PROOF - armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0) + resistance_flags = FIRE_PROOF + armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) /obj/item/clothing/suit/chameleon/New() ..() @@ -192,8 +192,8 @@ icon_state = "meson" item_state = "meson" origin_tech = "syndicate=2" - burn_state = FIRE_PROOF - armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0) + resistance_flags = FIRE_PROOF + armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) /obj/item/clothing/glasses/chameleon/New() ..() @@ -208,8 +208,8 @@ icon_state = "yellow" item_state = "ygloves" - burn_state = FIRE_PROOF - armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0) + resistance_flags = FIRE_PROOF + armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) /obj/item/clothing/gloves/chameleon/New() ..() @@ -224,8 +224,8 @@ icon_state = "greysoft" item_color = "grey" - burn_state = FIRE_PROOF - armor = list(melee = 5, bullet = 5, laser = 5, energy = 0, bomb = 0, bio = 0, rad = 0) + resistance_flags = FIRE_PROOF + armor = list(melee = 5, bullet = 5, laser = 5, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) var/datum/action/item_action/chameleon/change/chameleon_action = null @@ -240,7 +240,7 @@ // The camohat, I mean, holographic hat projection, is part of the // drone itself. flags = NODROP - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) // which means it offers no protection, it's just air and light /obj/item/clothing/head/chameleon/drone/New() @@ -256,8 +256,8 @@ desc = "A face-covering mask that can be connected to an air supply. While good for concealing your identity, it isn't good for blocking gas flow." //More accurate icon_state = "gas_alt" item_state = "gas_alt" - burn_state = FIRE_PROOF - armor = list(melee = 5, bullet = 5, laser = 5, energy = 0, bomb = 0, bio = 0, rad = 0) + resistance_flags = FIRE_PROOF + armor = list(melee = 5, bullet = 5, laser = 5, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR @@ -284,7 +284,7 @@ /obj/item/clothing/mask/chameleon/drone //Same as the drone chameleon hat, undroppable and no protection flags = NODROP - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) // Can drones use the voice changer part? Let's not find out. vchange = 0 @@ -307,9 +307,9 @@ permeability_coefficient = 0.05 flags = NOSLIP origin_tech = "syndicate=2" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF pockets = /obj/item/weapon/storage/internal/pocket/shoes - armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) /obj/item/clothing/shoes/chameleon/New() ..() diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index c69c6a2a579..a6c062a3642 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -1,6 +1,6 @@ /obj/item/clothing name = "clothing" - burn_state = FLAMMABLE + resistance_flags = 0 var/flash_protect = 0 //Malk: What level of bright light protection item has. 1 = Flashers, Flashes, & Flashbangs | 2 = Welding | -1 = OH GOD WELDING BURNT OUT MY RETINAS var/tint = 0 //Malk: Sets the item's level of visual impairment tint, normally set to the same as flash_protect var/up = 0 // but seperated to allow items to protect but not impair vision, like space helmets @@ -117,7 +117,7 @@ w_class = 1 throwforce = 0 slot_flags = SLOT_EARS - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/clothing/ears/earmuffs name = "earmuffs" @@ -127,7 +127,7 @@ flags = EARBANGPROTECT strip_delay = 15 put_on_delay = 25 - burn_state = FLAMMABLE + resistance_flags = 0 //Glasses /obj/item/clothing/glasses @@ -145,7 +145,7 @@ var/vision_correction = 0 //does wearing these glasses correct some of our vision defects? strip_delay = 20 put_on_delay = 25 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /* SEE_SELF // can see self, no matter what SEE_MOBS // can see all mobs, no matter what @@ -172,13 +172,12 @@ BLIND // can't see anything put_on_delay = 40 -/obj/item/clothing/gloves/worn_overlays(var/isinhands = FALSE) +/obj/item/clothing/gloves/worn_overlays(isinhands = FALSE) . = list() if(!isinhands) if(blood_DNA) . += image("icon"='icons/effects/blood.dmi', "icon_state"="bloodyhands") - // Called just before an attack_hand(), in mob/UnarmedAttack() /obj/item/clothing/gloves/proc/Touch(atom/A, proximity) return 0 // return 1 to cancel attack_hand() @@ -193,7 +192,7 @@ BLIND // can't see anything var/can_toggle = null -/obj/item/clothing/head/worn_overlays(var/isinhands = FALSE) +/obj/item/clothing/head/worn_overlays(isinhands = FALSE) . = list() if(!isinhands) if(blood_DNA) @@ -211,7 +210,7 @@ BLIND // can't see anything var/adjusted_flags = null -/obj/item/clothing/mask/worn_overlays(var/isinhands = FALSE) +/obj/item/clothing/mask/worn_overlays(isinhands = FALSE) . = list() if(!isinhands) if(blood_DNA && (body_parts_covered & HEAD)) @@ -268,7 +267,7 @@ BLIND // can't see anything var/blood_state = BLOOD_STATE_NOT_BLOODY var/list/bloody_shoes = list(BLOOD_STATE_HUMAN = 0,BLOOD_STATE_XENO = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) -/obj/item/clothing/shoes/worn_overlays(var/isinhands = FALSE) +/obj/item/clothing/shoes/worn_overlays(isinhands = FALSE) . = list() if(!isinhands) var/bloody = 0 @@ -298,13 +297,13 @@ BLIND // can't see anything name = "suit" var/fire_resist = T0C+100 allowed = list(/obj/item/weapon/tank/internals/emergency_oxygen) - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) slot_flags = SLOT_OCLOTHING var/blood_overlay_type = "suit" var/togglename = null -/obj/item/clothing/suit/worn_overlays(var/isinhands = FALSE) +/obj/item/clothing/suit/worn_overlays(isinhands = FALSE) . = list() if(!isinhands) if(blood_DNA) @@ -320,7 +319,7 @@ BLIND // can't see anything flags = STOPSPRESSUREDMAGE | THICKMATERIAL item_state = "spaceold" permeability_coefficient = 0.01 - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50, fire = 0, acid = 70) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR cold_protection = HEAD min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT @@ -330,7 +329,7 @@ BLIND // can't see anything strip_delay = 50 put_on_delay = 50 flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/clothing/suit/space name = "space suit" @@ -344,7 +343,7 @@ BLIND // can't see anything body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals) slowdown = 1 - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50, fire = 0, acid = 70) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT @@ -352,7 +351,7 @@ BLIND // can't see anything max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT strip_delay = 80 put_on_delay = 80 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF //Under clothing @@ -362,7 +361,7 @@ BLIND // can't see anything body_parts_covered = CHEST|GROIN|LEGS|ARMS permeability_coefficient = 0.90 slot_flags = SLOT_ICLOTHING - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) var/fitted = FEMALE_UNIFORM_FULL // For use in alternate clothing styles for women var/has_sensor = 1//For the crew computer 2 = unable to change mode var/random_sensor = 1 @@ -373,13 +372,12 @@ BLIND // can't see anything var/obj/item/clothing/tie/hastie = null var/mutantrace_variation = NO_MUTANTRACE_VARIATION //Are there special sprites for specific situations? Don't use this unless you need to. -/obj/item/clothing/under/worn_overlays(var/isinhands = FALSE) +/obj/item/clothing/under/worn_overlays(isinhands = FALSE) . = list() if(!isinhands) if(blood_DNA) . += image("icon"='icons/effects/blood.dmi', "icon_state"="uniformblood") - if(hastie) var/tie_color = hastie.item_color if(!tie_color) diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 8ca4bf66cc4..05206e37108 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -56,6 +56,7 @@ scan_reagents = 1 //You can see reagents while wearing science goggles actions_types = list(/datum/action/item_action/toggle_research_scanner) glass_colour_type = /datum/client_colour/glass_colour/purple + resistance_flags = FIRE_PROOF | ACID_PROOF /obj/item/clothing/glasses/science/item_action_slot_check(slot) if(slot == slot_glasses) diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index e70b3ef14b0..8dc34e005c4 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -6,7 +6,7 @@ siemens_coefficient = 0 permeability_coefficient = 0.05 item_color="yellow" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/clothing/gloves/color/fyellow //Cheap Chinese Crap desc = "These gloves are cheap knockoffs of the coveted ones - no way this can end badly." @@ -16,7 +16,7 @@ siemens_coefficient = 1 //Set to a default of 1, gets overridden in New() permeability_coefficient = 0.05 item_color="yellow" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/clothing/gloves/color/fyellow/New() ..() @@ -32,7 +32,7 @@ min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF var/can_be_cut = 1 /obj/item/clothing/gloves/color/black/hos @@ -70,7 +70,7 @@ desc = "These gloves will protect the wearer from electric shock." siemens_coefficient = 0 permeability_coefficient = 0.05 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/clothing/gloves/color/rainbow name = "rainbow gloves" @@ -156,7 +156,7 @@ permeability_coefficient = 0.01 item_color="white" transfer_prints = TRUE - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/clothing/gloves/color/latex/nitrile name = "nitrile gloves" diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 007138caadb..47e4f799474 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -21,7 +21,8 @@ min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 30) /obj/item/clothing/gloves/combat name = "combat gloves" @@ -35,7 +36,9 @@ min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 50) + /obj/item/clothing/gloves/bracer name = "bone bracers" @@ -50,6 +53,5 @@ cold_protection = ARMS min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT - burn_state = FIRE_PROOF - armor = list(melee = 15, bullet = 35, laser = 35, energy = 20, bomb = 35, bio = 35, rad = 35) //Not like anything ever hits the arms anyways. - + resistance_flags = FIRE_PROOF + armor = list(melee = 15, bullet = 35, laser = 35, energy = 20, bomb = 35, bio = 35, rad = 35, fire = 0, acid = 0) diff --git a/code/modules/clothing/head/collectable.dm b/code/modules/clothing/head/collectable.dm index c969147f9a3..5e61b69a2eb 100644 --- a/code/modules/clothing/head/collectable.dm +++ b/code/modules/clothing/head/collectable.dm @@ -68,7 +68,7 @@ desc = "A collectable welding helmet. Now with 80% less lead! Not for actual welding. Any welding done while wearing this helmet is done so at the owner's own risk!" icon_state = "welding" item_state = "welding" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/clothing/head/collectable/slime name = "collectable slime hat" @@ -137,11 +137,11 @@ desc = "Go Red! I mean Green! I mean Red! No Green!" icon_state = "thunderdome" item_state = "thunderdome" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/clothing/head/collectable/swat name = "collectable SWAT helmet" desc = "That's not real blood. That's red paint." //Reference to the actual description icon_state = "swat" item_state = "swat" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 8751493b999..7ea5150f4d1 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -6,10 +6,10 @@ var/brightness_on = 4 //luminosity when on var/on = 0 item_color = "yellow" //Determines used sprites: hardhat[on]_[item_color] and hardhat[on]_[item_color]2 (lying down sprite) - armor = list(melee = 15, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20) + armor = list(melee = 15, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20, fire = 0, acid = 50) flags_inv = 0 actions_types = list(/datum/action/item_action/toggle_helmet_light) - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF dog_fashion = /datum/dog_fashion/head diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index b4f057cacf5..a69289080ce 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -4,14 +4,14 @@ icon_state = "helmet" flags = HEADBANGPROTECT item_state = "helmet" - armor = list(melee = 40, bullet = 30, laser = 30,energy = 10, bomb = 25, bio = 0, rad = 0) + armor = list(melee = 40, bullet = 30, laser = 30,energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 50) flags_inv = HIDEEARS cold_protection = HEAD min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT heat_protection = HEAD max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT strip_delay = 60 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF flags_cover = HEADCOVERSEYES dog_fashion = /datum/dog_fashion/head/helmet @@ -31,7 +31,7 @@ desc = "A bulletproof combat helmet that excels in protecting the wearer against traditional projectile weaponry and explosives to a minor extent." icon_state = "helmetalt" item_state = "helmetalt" - armor = list(melee = 15, bullet = 40, laser = 10, energy = 10, bomb = 40, bio = 0, rad = 0) + armor = list(melee = 15, bullet = 40, laser = 10, energy = 10, bomb = 40, bio = 0, rad = 0, fire = 0, acid = 50) can_flashlight = 1 dog_fashion = null @@ -48,7 +48,7 @@ alt_toggle_message = "You push the visor up on" can_toggle = 1 flags = HEADBANGPROTECT - armor = list(melee = 41, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0) + armor = list(melee = 41, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0, fire = 0, acid = 50) flags_inv = HIDEEARS|HIDEFACE strip_delay = 80 actions_types = list(/datum/action/item_action/toggle) @@ -102,7 +102,7 @@ desc = "An extremely robust, space-worthy helmet in a nefarious red and black stripe pattern." icon_state = "swatsyndie" item_state = "swatsyndie" - armor = list(melee = 40, bullet = 30, laser = 30,energy = 30, bomb = 50, bio = 90, rad = 20) + armor = list(melee = 40, bullet = 30, laser = 30,energy = 30, bomb = 50, bio = 90, rad = 20, fire = 20, acid = 50) cold_protection = HEAD min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT heat_protection = HEAD @@ -123,7 +123,7 @@ flags_inv = HIDEEARS|HIDEHAIR icon_state = "thunderdome" item_state = "thunderdome" - armor = list(melee = 40, bullet = 30, laser = 25,energy = 10, bomb = 25, bio = 10, rad = 0) + armor = list(melee = 40, bullet = 30, laser = 25,energy = 10, bomb = 25, bio = 10, rad = 0, fire = 0, acid = 50) cold_protection = HEAD min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT heat_protection = HEAD @@ -136,7 +136,7 @@ desc = "An ancient helmet made of bronze and leather." flags_inv = HIDEEARS|HIDEHAIR flags_cover = HEADCOVERSEYES - armor = list(melee = 25, bullet = 0, laser = 25, energy = 10, bomb = 10, bio = 0, rad = 0) + armor = list(melee = 25, bullet = 0, laser = 25, energy = 10, bomb = 10, bio = 0, rad = 0, fire = 0, acid = 50) icon_state = "roman" item_state = "roman" strip_delay = 100 @@ -163,7 +163,7 @@ icon_state = "redtaghelm" flags_cover = HEADCOVERSEYES item_state = "redtaghelm" - armor = list(melee = 15, bullet = 10, laser = 20,energy = 10, bomb = 20, bio = 0, rad = 0) + armor = list(melee = 15, bullet = 10, laser = 20,energy = 10, bomb = 20, bio = 0, rad = 0, fire = 0, acid = 50) // Offer about the same protection as a hardhat. dog_fashion = null @@ -173,7 +173,7 @@ icon_state = "bluetaghelm" flags_cover = HEADCOVERSEYES item_state = "bluetaghelm" - armor = list(melee = 15, bullet = 10, laser = 20,energy = 10, bomb = 20, bio = 0, rad = 0) + armor = list(melee = 15, bullet = 10, laser = 20,energy = 10, bomb = 20, bio = 0, rad = 0, fire = 0, acid = 50) // Offer about the same protection as a hardhat. dog_fashion = null @@ -182,7 +182,7 @@ desc = "A classic metal helmet." icon_state = "knight_green" item_state = "knight_green" - armor = list(melee = 41, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0) + armor = list(melee = 41, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0, fire = 0, acid = 50) flags = null flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH @@ -212,7 +212,7 @@ desc = "An intimidating tribal helmet, it doesn't look very comfortable." flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE flags_cover = HEADCOVERSEYES - armor = list(melee = 25, bullet = 25, laser = 25, energy = 10, bomb = 10, bio = 5, rad = 20) + armor = list(melee = 25, bullet = 25, laser = 25, energy = 10, bomb = 10, bio = 5, rad = 20, fire = 20, acid = 20) icon_state = "skull" item_state = "skull" strip_delay = 100 diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 1c3de2d39d3..f013c37db74 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -26,9 +26,8 @@ icon_state = "captain" item_state = "that" flags_inv = 0 - armor = list(melee = 25, bullet = 15, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0) + armor = list(melee = 25, bullet = 15, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 50) strip_delay = 60 - dog_fashion = /datum/dog_fashion/head/captain //Captain: This is no longer space-worthy @@ -45,8 +44,7 @@ name = "head of personnel's cap" icon_state = "hopcap" desc = "The symbol of true bureaucratic micromanagement." - armor = list(melee = 25, bullet = 15, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0) - + armor = list(melee = 25, bullet = 15, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 50) dog_fashion = /datum/dog_fashion/head/hop //Chaplain @@ -61,7 +59,7 @@ name = "detective's fedora" desc = "There's only one man who can sniff out the dirty stench of crime, and he's likely wearing this hat." icon_state = "detective" - armor = list(melee = 25, bullet = 5, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 25, bullet = 5, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 50) var/candy_cooldown = 0 pockets = /obj/item/weapon/storage/internal/pocket/small/detective dog_fashion = /datum/dog_fashion/head/detective @@ -98,7 +96,7 @@ name = "head of security cap" desc = "The robust standard-issue cap of the Head of Security. For showing the officers who's in charge." icon_state = "hoscap" - armor = list(melee = 40, bullet = 30, laser = 25, energy = 10, bomb = 25, bio = 10, rad = 0) + armor = list(melee = 40, bullet = 30, laser = 25, energy = 10, bomb = 25, bio = 10, rad = 0, fire = 0, acid = 60) strip_delay = 80 /obj/item/clothing/head/HoS/beret @@ -110,16 +108,15 @@ name = "warden's police hat" desc = "It's a special armored hat issued to the Warden of a security force. Protects the head from impacts." icon_state = "policehelm" - armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0) + armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 60) strip_delay = 60 - dog_fashion = /datum/dog_fashion/head/warden /obj/item/clothing/head/beret/sec name = "security beret" desc = "A robust beret with the security insignia emblazoned on it. Uses reinforced fabric to offer sufficent protection." icon_state = "beret_badge" - armor = list(melee = 40, bullet = 30, laser = 30,energy = 10, bomb = 25, bio = 0, rad = 0) + armor = list(melee = 40, bullet = 30, laser = 30,energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 50) strip_delay = 60 dog_fashion = null @@ -132,7 +129,7 @@ name = "warden's beret" desc = "A special beret with the Warden's insignia emblazoned on it. For wardens with class." icon_state = "wardenberet" - armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0) + armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 50) strip_delay = 60 /obj/item/clothing/head/beret/sec/navyofficer diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 8577285ea1c..4ebcd8a4a27 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -6,7 +6,7 @@ desc = "It's good to be emperor." item_state = "that" flags_inv = 0 - armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0) + armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 50) strip_delay = 80 /obj/item/clothing/head/powdered_wig @@ -24,7 +24,7 @@ /obj/item/clothing/head/canada name = "striped red tophat" - desc = " It feels sticky, like maple syrup - il se sent collante, comme le sirop d'érable" + desc = " It feels sticky, like maple syrup - il se sent collante, comme le sirop d'érable" icon_state = "canada" item_state = "canada" @@ -222,7 +222,7 @@ throw_range = 5 w_class = 2 attack_verb = list("warned", "cautioned", "smashed") - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/clothing/head/santa name = "santa hat" @@ -264,7 +264,7 @@ name = "crown" desc = "A crown fit for a king, a petty king maybe." icon_state = "crown" - armor = list(melee = 15, bullet = 0, laser = 0,energy = 15, bomb = 0, bio = 0, rad = 0) //for a warrior king //energy cause gold is reflective //worse than sec helm overall + armor = list(melee = 15, bullet = 0, laser = 0,energy = 15, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 50) /obj/item/clothing/head/crown/fancy name = "magnificent crown" diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index e2dfe0f6cb8..6d623c22c39 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -21,12 +21,12 @@ // var/up = 0 flash_protect = 2 tint = 2 - armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 60) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE actions_types = list(/datum/action/item_action/toggle) visor_flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE visor_flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/clothing/head/welding/attack_self() toggle() @@ -51,7 +51,7 @@ item_color = "cakehat" hitsound = 'sound/weapons/tap.ogg' flags_inv = HIDEEARS|HIDEHAIR - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) brightness_on = 2 //luminosity when on flags_cover = HEADCOVERSEYES heat = 1000 @@ -121,7 +121,7 @@ item_state = "hardhat0_pumpkin" item_color = "pumpkin" flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) brightness_on = 2 //luminosity when on flags_cover = HEADCOVERSEYES @@ -153,7 +153,7 @@ item_state = "hardhat0_reindeer" item_color = "reindeer" flags_inv = 0 - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) brightness_on = 1 //luminosity when on dog_fashion = /datum/dog_fashion/head/reindeer diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm index 1ce016c73fe..eb52e83640f 100644 --- a/code/modules/clothing/head/soft_caps.dm +++ b/code/modules/clothing/head/soft_caps.dm @@ -120,7 +120,7 @@ desc = "It's a robust baseball hat in tasteful red colour." icon_state = "secsoft" item_color = "sec" - armor = list(melee = 30, bullet = 25, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0) + armor = list(melee = 30, bullet = 25, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 50) strip_delay = 60 dog_fashion = null diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm index ca7f65f42c5..7c79e261c96 100644 --- a/code/modules/clothing/masks/breath.dm +++ b/code/modules/clothing/masks/breath.dm @@ -12,7 +12,7 @@ actions_types = list(/datum/action/item_action/adjust) flags_cover = MASKCOVERSMOUTH visor_flags_cover = MASKCOVERSMOUTH - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/clothing/mask/breath/attack_self(mob/user) adjustmask(user) diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 2d0f64c7306..7ba9af72bf7 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -9,7 +9,7 @@ gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF // **** Welding gas mask **** @@ -20,7 +20,7 @@ materials = list(MAT_METAL=4000, MAT_GLASS=2000) flash_protect = 2 tint = 2 - armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 55) origin_tech = "materials=2;engineering=3" actions_types = list(/datum/action/item_action/toggle) flags_inv = HIDEEARS|HIDEEYES|HIDEFACE @@ -46,7 +46,7 @@ desc = "A modernised version of the classic design, this mask will not only filter out toxins but it can also be connected to an air supply." icon_state = "plaguedoctor" item_state = "gas_mask" - armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 75, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 75, rad = 0, fire = 0, acid = 0) /obj/item/clothing/mask/gas/syndicate name = "syndicate mask" @@ -61,7 +61,7 @@ icon_state = "clown" item_state = "clown_hat" flags_cover = MASKCOVERSEYES - burn_state = FLAMMABLE + resistance_flags = 0 actions_types = list(/datum/action/item_action/adjust) dog_fashion = /datum/dog_fashion/head/clown @@ -93,7 +93,7 @@ icon_state = "sexyclown" item_state = "sexyclown" flags_cover = MASKCOVERSEYES - burn_state = FLAMMABLE + resistance_flags = 0 /obj/item/clothing/mask/gas/mime name = "mime mask" @@ -102,7 +102,7 @@ icon_state = "mime" item_state = "mime" flags_cover = MASKCOVERSEYES - burn_state = FLAMMABLE + resistance_flags = 0 actions_types = list(/datum/action/item_action/adjust) /obj/item/clothing/mask/gas/mime/attack_self(mob/user) @@ -132,7 +132,7 @@ icon_state = "monkeymask" item_state = "monkeymask" flags_cover = MASKCOVERSEYES - burn_state = FLAMMABLE + resistance_flags = 0 /obj/item/clothing/mask/gas/sexymime name = "sexy mime mask" @@ -141,7 +141,7 @@ icon_state = "sexymime" item_state = "sexymime" flags_cover = MASKCOVERSEYES - burn_state = FLAMMABLE + resistance_flags = 0 /obj/item/clothing/mask/gas/death_commando name = "Death Commando Mask" @@ -152,7 +152,7 @@ name = "cyborg visor" desc = "Beep boop." icon_state = "death" - burn_state = FLAMMABLE + resistance_flags = 0 /obj/item/clothing/mask/gas/owl_mask name = "owl mask" @@ -160,7 +160,7 @@ icon_state = "owl" flags = MASKINTERNALS flags_cover = MASKCOVERSEYES - burn_state = FLAMMABLE + resistance_flags = 0 /obj/item/clothing/mask/gas/carp name = "carp mask" diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm index 82fd000760d..9e1a9e60cb4 100644 --- a/code/modules/clothing/shoes/magboots.dm +++ b/code/modules/clothing/shoes/magboots.dm @@ -8,7 +8,7 @@ actions_types = list(/datum/action/item_action/toggle) strip_delay = 70 put_on_delay = 70 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF origin_tech = "materials=3;magnets=4;engineering=4" /obj/item/clothing/shoes/magboots/verb/toggle() diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 01263250ce5..4fc5182db7c 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -17,9 +17,9 @@ desc = "High speed, low drag combat boots." icon_state = "jackboots" item_state = "jackboots" - armor = list(melee = 25, bullet = 25, laser = 25, energy = 25, bomb = 50, bio = 10, rad = 0) + armor = list(melee = 25, bullet = 25, laser = 25, energy = 25, bomb = 50, bio = 10, rad = 0, fire = 0, acid = 50) strip_delay = 70 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF pockets = /obj/item/weapon/storage/internal/pocket/shoes /obj/item/clothing/shoes/combat/swat //overpowered boots for death squads @@ -27,7 +27,7 @@ desc = "High speed, no drag combat boots." permeability_coefficient = 0.01 flags = NOSLIP - armor = list(melee = 40, bullet = 30, laser = 25, energy = 25, bomb = 50, bio = 30, rad = 30) + armor = list(melee = 40, bullet = 30, laser = 25, energy = 25, bomb = 50, bio = 30, rad = 30, fire = 0, acid = 50) /obj/item/clothing/shoes/sandal desc = "A pair of rather plain, wooden sandals." @@ -35,7 +35,7 @@ icon_state = "wizard" strip_delay = 50 put_on_delay = 50 - unacidable = 1 + resistance_flags = FIRE_PROOF | ACID_PROOF /obj/item/clothing/shoes/sandal/marisa desc = "A pair of magic black shoes." @@ -51,7 +51,8 @@ slowdown = SHOES_SLOWDOWN+1 strip_delay = 50 put_on_delay = 50 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 75) /obj/item/clothing/shoes/galoshes/dry name = "absorbent galoshes" @@ -89,7 +90,7 @@ item_color = "hosred" strip_delay = 50 put_on_delay = 50 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF pockets = /obj/item/weapon/storage/internal/pocket/shoes /obj/item/clothing/shoes/jackboots/fast @@ -119,7 +120,7 @@ name = "mining boots" desc = "Steel-toed mining boots for mining in hazardous environments. Very good at keeping toes uncrushed." icon_state = "explorer" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/clothing/shoes/cult name = "nar-sian invoker boots" @@ -168,7 +169,7 @@ icon_state = "jetboots" item_state = "jackboots" item_color = "hosred" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF actions_types = list(/datum/action/item_action/bhop) var/jumpdistance = 5 //-1 from to see the actual distance, e.g 4 goes over 3 tiles var/recharging_rate = 60 //default 6 seconds between each dash diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm index 48154a4ae46..be717658e23 100644 --- a/code/modules/clothing/spacesuits/chronosuit.dm +++ b/code/modules/clothing/spacesuits/chronosuit.dm @@ -4,7 +4,7 @@ icon_state = "chronohelmet" item_state = "chronohelmet" slowdown = 1 - armor = list(melee = 60, bullet = 30/*bullet through the visor*/, laser = 60, energy = 60, bomb = 30, bio = 90, rad = 90) + armor = list(melee = 60, bullet = 30/*bullet through the visor*/, laser = 60, energy = 60, bomb = 30, bio = 90, rad = 90, fire = 95, acid = 95) var/obj/item/clothing/suit/space/chronos/suit = null /obj/item/clothing/head/helmet/space/chronos/dropped() @@ -23,7 +23,7 @@ icon_state = "chronosuit" item_state = "chronosuit" actions_types = list(/datum/action/item_action/toggle) - armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 30, bio = 90, rad = 90) + armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 30, bio = 90, rad = 90, fire = 95, acid = 95) var/list/chronosafe_items = list(/obj/item/weapon/chrono_eraser, /obj/item/weapon/gun/energy/chrono_gun) var/list/hands_nodrop = list() var/obj/item/clothing/head/helmet/space/chronos/helmet = null diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 74dbb9819db..37a2973c461 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -4,7 +4,7 @@ desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding." icon_state = "hardsuit0-engineering" item_state = "eng_helm" - armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75) + armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75, fire = 50, acid = 75) var/basestate = "hardsuit" var/brightness_on = 4 //luminosity when on var/on = 0 @@ -72,7 +72,7 @@ desc = "A special suit that protects against hazardous, low pressure environments. Has radiation shielding." icon_state = "hardsuit-engineering" item_state = "eng_hardsuit" - armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75) + armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75, fire = 50, acid = 75) allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals,/obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/weapon/pipe_dispenser) siemens_coefficient = 0 var/obj/item/clothing/head/helmet/space/hardsuit/helmet @@ -142,7 +142,7 @@ desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding." icon_state = "hardsuit0-engineering" item_state = "eng_helm" - armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75) + armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75, fire = 50, acid = 75) item_color = "engineering" /obj/item/clothing/suit/space/hardsuit/engine @@ -150,7 +150,7 @@ desc = "A special suit that protects against hazardous, low pressure environments. Has radiation shielding." icon_state = "hardsuit-engineering" item_state = "eng_hardsuit" - armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75) + armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75, fire = 50, acid = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine //Atmospherics @@ -160,7 +160,7 @@ icon_state = "hardsuit0-atmospherics" item_state = "atmo_helm" item_color = "atmospherics" - armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 0) + armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 0, fire = 100, acid = 75) heat_protection = HEAD //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT @@ -169,7 +169,7 @@ desc = "A special suit that protects against hazardous, low pressure environments. Has thermal shielding." icon_state = "hardsuit-atmospherics" item_state = "atmo_hardsuit" - armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 0) + armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 0, fire = 100, acid = 75) heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/atmos @@ -182,17 +182,16 @@ icon_state = "hardsuit0-white" item_state = "ce_helm" item_color = "white" - armor = list(melee = 40, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 90) + armor = list(melee = 40, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 90, fire = 100, acid = 90) heat_protection = HEAD //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT - /obj/item/clothing/suit/space/hardsuit/engine/elite icon_state = "hardsuit-white" name = "advanced hardsuit" desc = "An advanced suit that protects against hazardous, low pressure environments. Shines with a high polish." item_state = "ce_hardsuit" - armor = list(melee = 40, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 90) + armor = list(melee = 40, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 90, fire = 100, acid = 90) heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/elite @@ -207,7 +206,7 @@ item_color = "mining" max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT heat_protection = CHEST|GROIN|LEGS|ARMS - armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 50) + armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 50, fire = 50, acid = 75) brightness_on = 7 allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals, /obj/item/weapon/resonator, /obj/item/device/mining_scanner, /obj/item/device/t_scanner/adv_mining_scanner, /obj/item/weapon/gun/energy/kinetic_accelerator) @@ -218,7 +217,7 @@ desc = "A special suit that protects against hazardous, low pressure environments. Has reinforced plating for wildlife encounters." item_state = "mining_hardsuit" max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT - armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 50) + armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 50, fire = 50, acid = 75) allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/pickaxe) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/mining @@ -230,7 +229,7 @@ icon_state = "hardsuit1-syndi" item_state = "syndie_helm" item_color = "syndi" - armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50) + armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50, fire = 50, acid = 90) on = 1 var/obj/item/clothing/suit/space/hardsuit/syndi/linkedsuit = null actions_types = list(/datum/action/item_action/toggle_helmet_mode) @@ -308,12 +307,11 @@ item_state = "syndie_hardsuit" item_color = "syndi" w_class = 3 - armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50) + armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50, fire = 50, acid = 90) allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi jetpack = /obj/item/weapon/tank/jetpack/suit - //Elite Syndie suit /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite name = "elite syndicate hardsuit helmet" @@ -321,12 +319,13 @@ alt_desc = "An elite version of the syndicate helmet, with improved armour and fire shielding. It is in combat mode. Property of Gorlex Marauders." icon_state = "hardsuit0-syndielite" item_color = "syndielite" - armor = list(melee = 60, bullet = 60, laser = 50, energy = 25, bomb = 55, bio = 100, rad = 70) + armor = list(melee = 60, bullet = 60, laser = 50, energy = 25, bomb = 55, bio = 100, rad = 70, fire = 95, acid = 100) heat_protection = HEAD max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT visor_flags_inv = 0 visor_flags = 0 on = 0 + resistance_flags = FIRE_PROOF | ACID_PROOF /obj/item/clothing/suit/space/hardsuit/syndi/elite @@ -336,10 +335,10 @@ icon_state = "hardsuit0-syndielite" item_color = "syndielite" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite - armor = list(melee = 60, bullet = 60, laser = 50, energy = 25, bomb = 55, bio = 100, rad = 70) + armor = list(melee = 60, bullet = 60, laser = 50, energy = 25, bomb = 55, bio = 100, rad = 70, fire = 95, acid = 100) heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT - + resistance_flags = FIRE_PROOF | ACID_PROOF //The Owl Hardsuit /obj/item/clothing/head/helmet/space/hardsuit/syndi/owl @@ -370,8 +369,8 @@ icon_state = "hardsuit0-wiz" item_state = "wiz_helm" item_color = "wiz" - unacidable = 1 //No longer shall our kind be foiled by lone chemists with spray bottles! - armor = list(melee = 40, bullet = 40, laser = 40, energy = 20, bomb = 35, bio = 100, rad = 50) + resistance_flags = FIRE_PROOF | ACID_PROOF //No longer shall our kind be foiled by lone chemists with spray bottles! + armor = list(melee = 40, bullet = 40, laser = 40, energy = 20, bomb = 35, bio = 100, rad = 50, fire = 100, acid = 100) heat_protection = HEAD //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT @@ -381,8 +380,8 @@ desc = "A bizarre gem-encrusted suit that radiates magical energies." item_state = "wiz_hardsuit" w_class = 3 - unacidable = 1 - armor = list(melee = 40, bullet = 40, laser = 40, energy = 20, bomb = 35, bio = 100, rad = 50) + resistance_flags = FIRE_PROOF | ACID_PROOF + armor = list(melee = 40, bullet = 40, laser = 40, energy = 20, bomb = 35, bio = 100, rad = 50, fire = 100, acid = 100) allowed = list(/obj/item/weapon/teleportation_scroll,/obj/item/weapon/tank/internals) heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT @@ -397,7 +396,7 @@ item_state = "medical_helm" item_color = "medical" flash_protect = 0 - armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50) + armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50, fire = 75, acid = 75) scan_reagents = 1 /obj/item/clothing/suit/space/hardsuit/medical @@ -406,7 +405,7 @@ desc = "A special suit that protects against hazardous, low pressure environments. Built with lightweight materials for easier movement." item_state = "medical_hardsuit" allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical) - armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50) + armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50, fire = 75, acid = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/medical //Research Director hardsuit @@ -415,10 +414,10 @@ desc = "A prototype helmet designed for research in a hazardous, low pressure environment. Scientific data flashes across the visor." icon_state = "hardsuit0-rd" item_color = "rd" - unacidable = 1 + resistance_flags = FIRE_PROOF | ACID_PROOF var/onboard_hud_enabled = 0 //stops conflicts with another diag HUD max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT - armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 100, bio = 100, rad = 60) + armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 100, bio = 100, rad = 60, fire = 60, acid = 80) var/obj/machinery/doppler_array/integrated/bomb_radar scan_reagents = 1 actions_types = list(/datum/action/item_action/toggle_helmet_light, /datum/action/item_action/toggle_research_scanner) @@ -447,11 +446,11 @@ name = "prototype hardsuit" desc = "A prototype suit that protects against hazardous, low pressure environments. Fitted with extensive plating for handling explosives and dangerous research materials." item_state = "hardsuit-rd" - unacidable = 1 + resistance_flags = ACID_PROOF max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT //Same as an emergency firesuit. Not ideal for extended exposure. allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals, /obj/item/weapon/gun/energy/wormhole_projector, /obj/item/weapon/hand_tele, /obj/item/device/aicard) - armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 100, bio = 100, rad = 60) + armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 100, bio = 100, rad = 60, fire = 60, acid = 80) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/rd @@ -463,7 +462,7 @@ icon_state = "hardsuit0-sec" item_state = "sec_helm" item_color = "sec" - armor = list(melee = 30, bullet = 15, laser = 30,energy = 10, bomb = 10, bio = 100, rad = 50) + armor = list(melee = 30, bullet = 15, laser = 30,energy = 10, bomb = 10, bio = 100, rad = 50, fire = 75, acid = 75) /obj/item/clothing/suit/space/hardsuit/security @@ -472,7 +471,7 @@ desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor." item_state = "sec_hardsuit" allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals, /obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs) - armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50) + armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50, fire = 75, acid = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security /obj/item/clothing/head/helmet/space/hardsuit/security/hos @@ -480,14 +479,14 @@ desc = "a special bulky helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor." icon_state = "hardsuit0-hos" item_color = "hos" - armor = list(melee = 45, bullet = 25, laser = 30,energy = 10, bomb = 25, bio = 100, rad = 50) + armor = list(melee = 45, bullet = 25, laser = 30,energy = 10, bomb = 25, bio = 100, rad = 50, fire = 95, acid = 95) /obj/item/clothing/suit/space/hardsuit/security/hos icon_state = "hardsuit-hos" name = "head of security's hardsuit" desc = "A special bulky suit that protects against hazardous, low pressure environments. Has an additional layer of armor." - armor = list(melee = 45, bullet = 25, laser = 30, energy = 10, bomb = 25, bio = 100, rad = 50) + armor = list(melee = 45, bullet = 25, laser = 30, energy = 10, bomb = 25, bio = 100, rad = 50, fire = 95, acid = 95) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/hos //Captain @@ -496,9 +495,8 @@ icon_state = "capspace" item_state = "capspacehelmet" desc = "A special hardsuit helmet designed for only the most fashionable of military figureheads." - armor = list(melee = 40, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50) + armor = list(melee = 40, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50, fire = 100, acid = 95) actions_types = list() - flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR //we want to see the mask /obj/item/clothing/head/helmet/space/hardsuit/captain/attack_self() return //Sprites required for flashlight @@ -509,7 +507,7 @@ icon_state = "caparmor" item_state = "capspacesuit" allowed = list(/obj/item/weapon/tank/internals, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs) - armor = list(melee = 40, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50) + armor = list(melee = 40, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50, fire = 100, acid = 95) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/captain //Clown @@ -518,7 +516,7 @@ desc = "A special helmet designed for work in a hazardous, low-humor environment. Has radiation shielding." icon_state = "hardsuit0-clown" item_state = "hardsuit0-clown" - armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75) + armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75, fire = 60, acid = 30) item_color = "clown" /obj/item/clothing/suit/space/hardsuit/clown @@ -526,7 +524,7 @@ desc = "A special suit that protects against hazardous, low humor environments. Has radiation shielding. Only a true clown can wear it." icon_state = "hardsuit-clown" item_state = "clown_hardsuit" - armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75) + armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75, fire = 60, acid = 30) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/clown /obj/item/clothing/suit/space/hardsuit/clown/mob_can_equip(mob/M, slot) @@ -547,7 +545,8 @@ icon_state = "hardsuit-hos" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/hos allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals, /obj/item/weapon/gun,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs) - armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50) + armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50, fire = 95, acid = 100) + resistance_flags = FIRE_PROOF | ACID_PROOF var/current_charges = 3 var/max_charges = 3 //How many charges total the shielding has var/recharge_delay = 200 //How long after we've been shot before we can start recharging. 20 seconds here @@ -595,6 +594,8 @@ if(!isinhands) . += image(icon = 'icons/effects/effects.dmi', icon_state = "[shield_state]") +/obj/item/clothing/head/helmet/space/hardsuit/shielded + resistance_flags = FIRE_PROOF | ACID_PROOF ///////////////Capture the Flag//////////////////// @@ -606,7 +607,7 @@ item_color = "ert_medical" flags = STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP //Dont want people changing into the other teams gear helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf - armor = list(melee = 0, bullet = 30, laser = 30, energy = 30, bomb = 50, bio = 100, rad = 100) + armor = list(melee = 0, bullet = 30, laser = 30, energy = 30, bomb = 50, bio = 100, rad = 100, fire = 95, acid = 95) slowdown = 0 max_charges = 5 @@ -634,7 +635,7 @@ icon_state = "hardsuit0-ert_medical" item_state = "hardsuit0-ert_medical" item_color = "ert_medical" - armor = list(melee = 0, bullet = 30, laser = 30, energy = 30, bomb = 50, bio = 100, rad = 100) + armor = list(melee = 0, bullet = 30, laser = 30, energy = 30, bomb = 50, bio = 100, rad = 100, fire = 95, acid = 95) /obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/red @@ -661,7 +662,7 @@ icon_state = "hardsuit1-syndi" item_state = "syndie_hardsuit" item_color = "syndi" - armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50) + armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50, fire = 95, acid = 100) allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi slowdown = 0 @@ -677,7 +678,7 @@ icon_state = "hardsuit1-syndi" item_state = "syndie_helm" item_color = "syndi" - armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50) + armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50, fire = 95, acid = 100) ///SWAT version /obj/item/clothing/suit/space/hardsuit/shielded/swat @@ -689,10 +690,10 @@ max_charges = 4 current_charges = 4 recharge_delay = 15 - armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100) + armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 95, acid = 95) strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT - unacidable = 1 + resistance_flags = FIRE_PROOF | ACID_PROOF helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/swat dog_fashion = /datum/dog_fashion/back/deathsquad @@ -702,8 +703,8 @@ icon_state = "deathsquad" item_state = "deathsquad" item_color = "syndi" - armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100) + armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 95, acid = 95) strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT - unacidable = 1 + resistance_flags = ACID_PROOF actions_types = list() \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 10bdf923bbb..895b1ef9dc1 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -20,10 +20,10 @@ Contains: desc = "That's not red paint. That's real blood." icon_state = "deathsquad" item_state = "deathsquad" - armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100) + armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100) strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT - unacidable = 1 + resistance_flags = FIRE_PROOF | ACID_PROOF actions_types = list() /obj/item/clothing/head/helmet/space/hardsuit/deathsquad/attack_self(mob/user) @@ -35,10 +35,10 @@ Contains: icon_state = "deathsquad" item_state = "swat_suit" allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals,/obj/item/weapon/kitchen/knife/combat) - armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100) + armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100) strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT - unacidable = 1 + resistance_flags = FIRE_PROOF | ACID_PROOF helmettype = /obj/item/clothing/head/helmet/space/hardsuit/deathsquad dog_fashion = /datum/dog_fashion/back/deathsquad @@ -49,8 +49,9 @@ Contains: icon_state = "heavy" item_state = "swat_suit" allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals,/obj/item/weapon/kitchen/knife/combat) - armor = list(melee = 40, bullet = 30, laser = 30,energy = 30, bomb = 50, bio = 90, rad = 20) + armor = list(melee = 40, bullet = 30, laser = 30,energy = 30, bomb = 50, bio = 90, rad = 20, fire = 60, acid = 75) strip_delay = 120 + resistance_flags = FIRE_PROOF | ACID_PROOF /obj/item/clothing/head/helmet/space/beret name = "officer's beret" @@ -58,10 +59,10 @@ Contains: icon_state = "beret_badge" flags = STOPSPRESSUREDMAGE flags_inv = 0 - armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100) + armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 80, acid = 80) strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT - unacidable = 1 + resistance_flags = FIRE_PROOF | ACID_PROOF /obj/item/clothing/suit/space/officer name = "officer's jacket" @@ -73,10 +74,10 @@ Contains: flags_inv = 0 w_class = 3 allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals) - armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100) + armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 80, acid = 80) strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT - unacidable = 1 + resistance_flags = FIRE_PROOF | ACID_PROOF //NASA Voidsuit @@ -120,7 +121,7 @@ Contains: desc = "Yarr." icon_state = "pirate" item_state = "pirate" - armor = list(melee = 30, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) + armor = list(melee = 30, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 60, acid = 75) flags = STOPSPRESSUREDMAGE strip_delay = 40 put_on_delay = 20 @@ -135,7 +136,7 @@ Contains: flags_inv = 0 allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals, /obj/item/weapon/melee/energy/sword/pirate, /obj/item/clothing/glasses/eyepatch, /obj/item/weapon/reagent_containers/food/drinks/bottle/rum) slowdown = 0 - armor = list(melee = 30, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) + armor = list(melee = 30, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 60, acid = 75) strip_delay = 40 put_on_delay = 20 @@ -146,7 +147,7 @@ Contains: icon_state = "hardsuit0-ert_commander" item_state = "hardsuit0-ert_commander" item_color = "ert_commander" - armor = list(melee = 65, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 100, rad = 100) + armor = list(melee = 65, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 100, rad = 100, fire = 80, acid = 80) strip_delay = 130 flags = STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP brightness_on = 7 @@ -158,7 +159,7 @@ Contains: item_state = "ert_command" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals) - armor = list(melee = 30, bullet = 50, laser = 30, energy = 50, bomb = 50, bio = 100, rad = 100) + armor = list(melee = 30, bullet = 50, laser = 30, energy = 50, bomb = 50, bio = 100, rad = 100, fire = 0, acid = 95) slowdown = 0 strip_delay = 130 @@ -207,7 +208,7 @@ Contains: icon_state = "space" item_state = "s_suit" desc = "A lightweight space suit with the basic ability to protect the wearer from the vacuum of space during emergencies." - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20, fire = 50, acid = 65) /obj/item/clothing/head/helmet/space/eva name = "EVA helmet" @@ -215,17 +216,17 @@ Contains: item_state = "space" desc = "A lightweight space helmet with the basic ability to protect the wearer from the vacuum of space during emergencies." flash_protect = 0 - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20, fire = 50, acid = 65) /obj/item/clothing/head/helmet/space/freedom name = "eagle helmet" desc = "An advanced, space-proof helmet. It appears to be modeled after an old-world eagle." icon_state = "griffinhat" item_state = "griffinhat" - armor = list(melee = 20, bullet = 40, laser = 30, energy = 25, bomb = 100, bio = 100, rad = 100) + armor = list(melee = 20, bullet = 40, laser = 30, energy = 25, bomb = 100, bio = 100, rad = 100, fire = 80, acid = 80) strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT - unacidable = 1 + resistance_flags = ACID_PROOF /obj/item/clothing/suit/space/freedom name = "eagle suit" @@ -233,10 +234,10 @@ Contains: icon_state = "freedom" item_state = "freedom" allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals) - armor = list(melee = 20, bullet = 40, laser = 30,energy = 25, bomb = 100, bio = 100, rad = 100) + armor = list(melee = 20, bullet = 40, laser = 30,energy = 25, bomb = 100, bio = 100, rad = 100, fire = 80, acid = 80) strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT - unacidable = 1 + resistance_flags = ACID_PROOF //Carpsuit, bestsuit, lovesuit /obj/item/clothing/head/helmet/space/hardsuit/carp @@ -244,7 +245,7 @@ Contains: desc = "Spaceworthy and it looks like a space carp's head, smells like one too." icon_state = "carp_helm" item_state = "syndicate" - armor = list(melee = -20, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 75) //As whimpy as a space carp + armor = list(melee = -20, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 75, fire = 60, acid = 75) //As whimpy as a space carp brightness_on = 0 //luminosity when on actions_types = list() flags = STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP @@ -256,7 +257,7 @@ Contains: icon_state = "carp_suit" item_state = "space_suit_syndicate" slowdown = 0 //Space carp magic, never stop believing - armor = list(melee = -20, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 75) //As whimpy whimpy whoo + armor = list(melee = -20, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 75, fire = 60, acid = 75) //As whimpy whimpy whoo allowed = list(/obj/item/weapon/tank/internals, /obj/item/weapon/gun/projectile/automatic/speargun) //I'm giving you a hint here helmettype = /obj/item/clothing/head/helmet/space/hardsuit/carp diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index fbd5b33ad73..fedbd537c0b 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -5,7 +5,7 @@ name = "plasmaman suit" desc = "A special containment suit designed to protect a plasmaman's volatile body from outside exposure and quickly extinguish it in emergencies." allowed = list(/obj/item/weapon/gun,/obj/item/ammo_casing,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank) - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 0, fire = 95, acid = 75) icon_state = "plasmaman_suit" item_state = "plasmaman_suit" var/next_extinguish = 0 diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm index 9aceb965f84..e16905ca28b 100644 --- a/code/modules/clothing/spacesuits/syndi.dm +++ b/code/modules/clothing/spacesuits/syndi.dm @@ -5,7 +5,7 @@ icon_state = "syndicate" item_state = "syndicate" desc = "Has a tag: Totally not property of an enemy corporation, honest." - armor = list(melee = 40, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) + armor = list(melee = 40, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 80, acid = 85) /obj/item/clothing/suit/space/syndicate name = "red space suit" @@ -14,7 +14,7 @@ desc = "Has a tag on it: Totally not property of of a hostile corporation, honest!" w_class = 3 allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals) - armor = list(melee = 40, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) + armor = list(melee = 40, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 80, acid = 85) //Green syndicate space suit diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 5a77d9f2f7f..18bc250016c 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -7,7 +7,8 @@ max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT strip_delay = 60 put_on_delay = 40 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF + armor = list(melee = 30, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 50) /obj/item/clothing/suit/armor/vest name = "armor" @@ -15,7 +16,7 @@ icon_state = "armoralt" item_state = "armoralt" blood_overlay_type = "armor" - armor = list(melee = 30, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0) + armor = list(melee = 30, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 75) dog_fashion = /datum/dog_fashion/back /obj/item/clothing/suit/armor/vest/alt @@ -33,7 +34,7 @@ icon_state = "hos" item_state = "greatcoat" body_parts_covered = CHEST|GROIN|ARMS|LEGS - armor = list(melee = 30, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0) + armor = list(melee = 30, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 90) cold_protection = CHEST|GROIN|LEGS|ARMS heat_protection = CHEST|GROIN|LEGS|ARMS strip_delay = 80 @@ -55,7 +56,7 @@ cold_protection = CHEST|GROIN|ARMS|HANDS heat_protection = CHEST|GROIN|ARMS|HANDS strip_delay = 70 - burn_state = FLAMMABLE + resistance_flags = 0 dog_fashion = null /obj/item/clothing/suit/armor/vest/warden/alt @@ -79,7 +80,7 @@ icon_state = "capcarapace" item_state = "armor" body_parts_covered = CHEST|GROIN - armor = list(melee = 50, bullet = 40, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) + armor = list(melee = 50, bullet = 40, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 90, acid = 90) dog_fashion = null /obj/item/clothing/suit/armor/vest/capcarapace/alt @@ -96,7 +97,7 @@ body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - armor = list(melee = 50, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 50, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 80) flags_inv = HIDEJUMPSUIT strip_delay = 80 put_on_delay = 60 @@ -107,7 +108,7 @@ icon_state = "bonearmor" item_state = "bonearmor" blood_overlay_type = "armor" - armor = list(melee = 35, bullet = 25, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0) + armor = list(melee = 35, bullet = 25, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 50, acid = 50) body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS /obj/item/clothing/suit/armor/bulletproof @@ -116,7 +117,7 @@ icon_state = "bulletproof" item_state = "armor" blood_overlay_type = "armor" - armor = list(melee = 15, bullet = 80, laser = 10, energy = 10, bomb = 40, bio = 0, rad = 0) + armor = list(melee = 15, bullet = 80, laser = 10, energy = 10, bomb = 40, bio = 0, rad = 0, fire = 50, acid = 50) strip_delay = 70 put_on_delay = 50 @@ -126,7 +127,7 @@ icon_state = "armor_reflec" item_state = "armor_reflec" blood_overlay_type = "armor" - armor = list(melee = 10, bullet = 10, laser = 60, energy = 50, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 10, bullet = 10, laser = 60, energy = 50, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 50) var/hit_reflect_chance = 40 /obj/item/clothing/suit/armor/laserproof/IsReflect(def_zone) @@ -140,7 +141,7 @@ desc = "An armored vest with a detective's badge on it." icon_state = "detective-armor" allowed = list(/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/device/flashlight,/obj/item/weapon/gun/energy,/obj/item/weapon/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter,/obj/item/device/detective_scanner,/obj/item/device/taperecorder,/obj/item/weapon/melee/classic_baton/telescopic) - burn_state = FLAMMABLE + resistance_flags = 0 dog_fashion = null @@ -154,9 +155,9 @@ icon_state = "reactiveoff" item_state = "reactiveoff" blood_overlay_type = "armor" - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 80) actions_types = list(/datum/action/item_action/toggle) - unacidable = 1 + resistance_flags = FIRE_PROOF | ACID_PROOF hit_reaction_chance = 50 @@ -340,7 +341,7 @@ min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT - armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100) + armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 95, acid = 95) /obj/item/clothing/suit/armor/heavy name = "heavy armor" @@ -353,7 +354,7 @@ body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS slowdown = 3 flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100) + armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 90, acid = 90) /obj/item/clothing/suit/armor/tdome body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS @@ -361,7 +362,7 @@ flags = THICKMATERIAL cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100) + armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 90, acid = 90) /obj/item/clothing/suit/armor/tdome/red name = "thunderdome suit" diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index d5d66b162c8..9a7c584f968 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -5,10 +5,9 @@ desc = "A hood that protects the head and face from biological comtaminants." permeability_coefficient = 0.01 flags = THICKMATERIAL - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20, fire = 30, acid = 100) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDEFACE - unacidable = 1 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF | ACID_PROOF flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH /obj/item/clothing/suit/bio_suit @@ -23,12 +22,11 @@ body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS slowdown = 1 allowed = list(/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/weapon/pen,/obj/item/device/flashlight/pen, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/syringe, /obj/item/weapon/reagent_containers/hypospray) - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20, fire = 30, acid = 100) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT strip_delay = 70 put_on_delay = 70 - unacidable = 1 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF | ACID_PROOF //Standard biosuit, orange stripe /obj/item/clothing/head/bio_hood/general @@ -48,11 +46,11 @@ //Security biosuit, grey with red stripe across the chest /obj/item/clothing/head/bio_hood/security - armor = list(melee = 25, bullet = 15, laser = 25, energy = 10, bomb = 25, bio = 100, rad = 20) + armor = list(melee = 25, bullet = 15, laser = 25, energy = 10, bomb = 25, bio = 100, rad = 20, fire = 30, acid = 100) icon_state = "bio_security" /obj/item/clothing/suit/bio_suit/security - armor = list(melee = 25, bullet = 15, laser = 25, energy = 10, bomb = 25, bio = 100, rad = 20) + armor = list(melee = 25, bullet = 15, laser = 25, energy = 10, bomb = 25, bio = 100, rad = 20, fire = 30, acid = 100) icon_state = "bio_security" diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm index a021f5a244a..a25d4044482 100644 --- a/code/modules/clothing/suits/cloaks.dm +++ b/code/modules/clothing/suits/cloaks.dm @@ -27,7 +27,7 @@ desc = "Worn by Securistan, ruling the station with an iron fist. It's slightly armored." icon_state = "hoscloak" allowed = list(/obj/item/weapon/gun/energy/gun/hos) - armor = list(melee = 30, bullet = 30, laser = 10, energy = 10, bomb = 25, bio = 0, rad = 0) + armor = list(melee = 30, bullet = 30, laser = 10, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 60) /obj/item/clothing/suit/cloak/qm name = "quartermaster's cloak" @@ -38,56 +38,56 @@ desc = "Worn by Meditopia, the valiant men and women keeping pestilence at bay. It's slightly shielded from contaminants." icon_state = "cmocloak" allowed = list(/obj/item/weapon/reagent_containers/hypospray/CMO) - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 25, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 25, rad = 0, fire = 0, acid = 25) /obj/item/clothing/suit/cloak/ce name = "chief engineer's cloak" desc = "Worn by Engitopia, wielders of an unlimited power. It's slightly shielded against radiation." icon_state = "cecloak" allowed = list(/obj/item/weapon/rcd, /obj/item/weapon/pipe_dispenser) - armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 10) + armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 10, fire = 0, acid = 25) /obj/item/clothing/suit/cloak/rd name = "research director's cloak." desc = "Worn by Sciencia, thaumaturges and researchers of the universe. It's slightly shielded from contaminants." icon_state = "rdcloak" allowed = list(/obj/item/weapon/hand_tele, /obj/item/weapon/storage/part_replacer) - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 10, bio = 10, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 10, bio = 10, rad = 0, fire = 0, acid = 25) /obj/item/clothing/suit/cloak/cap name = "captain's cloak" desc = "Worn by the commander of Space Station 13." icon_state = "capcloak" allowed = list(/obj/item/weapon/gun/energy/laser/captain) - armor = list(melee = 30, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 10, rad = 10) + armor = list(melee = 30, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 10, rad = 10, fire = 0, acid = 50) /obj/item/clothing/suit/hooded/cloak/drake name = "drake armour" icon_state = "dragon" desc = "A suit of armour fashioned from the remains of an ash drake. " allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals, /obj/item/weapon/resonator, /obj/item/device/mining_scanner, /obj/item/device/t_scanner/adv_mining_scanner, /obj/item/weapon/gun/energy/kinetic_accelerator, /obj/item/weapon/pickaxe, /obj/item/weapon/twohanded/spear) - armor = list(melee = 70, bullet = 30, laser = 50, energy = 40, bomb = 70, bio = 60, rad = 50) + armor = list(melee = 70, bullet = 30, laser = 50, energy = 40, bomb = 70, bio = 60, rad = 50, fire = 50, acid = 100) hooded = 1 hoodtype = /obj/item/clothing/head/cloakhood/drake heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT - unacidable = 1 + resistance_flags = FIRE_PROOF | ACID_PROOF /obj/item/clothing/head/cloakhood/drake name = "drake helm" icon_state = "dragon" desc = "The skull of a dragon." - armor = list(melee = 70, bullet = 30, laser = 50, energy = 40, bomb = 70, bio = 60, rad = 50) + armor = list(melee = 70, bullet = 30, laser = 50, energy = 40, bomb = 70, bio = 60, rad = 50, fire = 50, acid = 100) heat_protection = HEAD max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT - unacidable = 1 + resistance_flags = FIRE_PROOF | ACID_PROOF /* //wip /obj/item/clothing/cloak/wizard //Not actually obtainable until proper balancing can be done name = "cloak of invisibility" desc = "A tattered old thing that apparently gifts the wearer with near-invisibility." - armor = list(melee = 10, bullet = 10, laser = 10, energy = 10, bomb = 10, bio = 10, rad = 10) + armor = list(melee = 10, bullet = 10, laser = 10, energy = 10, bomb = 10, bio = 10, rad = 10, fire = 10, acid = 10) action_button_name = "Flaunt Cloak" var/invisible = 0 diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 1032ae12431..ad821773ac7 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -82,7 +82,7 @@ blood_overlay_type = "coat" body_parts_covered = CHEST|GROIN|LEGS|ARMS allowed = list(/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/device/flashlight,/obj/item/weapon/gun/energy,/obj/item/weapon/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter,/obj/item/device/detective_scanner,/obj/item/device/taperecorder,/obj/item/weapon/melee/classic_baton/telescopic) - armor = list(melee = 25, bullet = 10, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 25, bullet = 10, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 45) cold_protection = CHEST|GROIN|LEGS|ARMS heat_protection = CHEST|GROIN|LEGS|ARMS @@ -100,7 +100,7 @@ item_state = "hazard" blood_overlay_type = "armor" allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/device/t_scanner,/obj/item/device/radio) - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF //Lawyer /obj/item/clothing/suit/toggle/lawyer name = "blue suit jacket" diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index 29708eadebf..3f19e7a86fc 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -6,7 +6,7 @@ blood_overlay_type = "coat" body_parts_covered = CHEST|ARMS allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper,/obj/item/weapon/melee/classic_baton/telescopic,/obj/item/weapon/soap,/obj/item/device/sensor_device,/obj/item/weapon/tank/internals/emergency_oxygen) - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0, fire = 50, acid = 50) togglename = "buttons" pockets = /obj/item/weapon/storage/internal/pocket diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 98c4e5e2d7d..f19764bed15 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -16,7 +16,7 @@ blood_overlay_type = "armor" body_parts_covered = CHEST allowed = list (/obj/item/weapon/gun/energy/laser/bluetag) - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/clothing/suit/redtag name = "red laser tag armor" @@ -26,7 +26,7 @@ blood_overlay_type = "armor" body_parts_covered = CHEST allowed = list (/obj/item/weapon/gun/energy/laser/redtag) - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /* * Costume @@ -89,7 +89,7 @@ w_class = 3 allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/toy) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/clothing/suit/hastur name = "\improper Hastur's robe" @@ -342,7 +342,7 @@ desc = "Pompadour not included." icon_state = "leatherjacket" item_state = "hostrench" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/toy,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter,/obj/item/weapon/gun/projectile/automatic/pistol,/obj/item/weapon/gun/projectile/revolver,/obj/item/weapon/gun/projectile/revolver/detective,/obj/item/device/radio) @@ -358,7 +358,7 @@ desc = "A thick jacket with a rubbery, water-resistant shell." icon_state = "pufferjacket" item_state = "hostrench" - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0, fire = 0, acid = 0) /obj/item/clothing/suit/jacket/puffer/vest name = "puffer vest" @@ -367,7 +367,7 @@ item_state = "armor" body_parts_covered = CHEST|GROIN cold_protection = CHEST|GROIN - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 30, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 30, rad = 0, fire = 0, acid = 0) /obj/item/clothing/suit/jacket/miljacket name = "military jacket" @@ -420,7 +420,7 @@ body_parts_covered = CHEST|GROIN|ARMS cold_protection = CHEST|GROIN|ARMS min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 0, acid = 0) allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/toy,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter) hooded = 1 @@ -437,7 +437,7 @@ /obj/item/clothing/suit/hooded/wintercoat/captain name = "captain's winter coat" icon_state = "coatcaptain" - armor = list(melee = 25, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0) + armor = list(melee = 25, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 50) allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/device/flashlight/seclite,/obj/item/weapon/melee/classic_baton/telescopic) hoodtype = /obj/item/clothing/head/winterhood/captain @@ -447,7 +447,7 @@ /obj/item/clothing/suit/hooded/wintercoat/security name = "security winter coat" icon_state = "coatsecurity" - armor = list(melee = 25, bullet = 15, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0) + armor = list(melee = 25, bullet = 15, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 45) allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/device/flashlight/seclite,/obj/item/weapon/melee/classic_baton/telescopic) hoodtype = /obj/item/clothing/head/winterhood/security @@ -458,7 +458,7 @@ name = "medical winter coat" icon_state = "coatmedical" allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper,/obj/item/weapon/melee/classic_baton/telescopic) - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0, fire = 0, acid = 45) hoodtype = /obj/item/clothing/head/winterhood/medical /obj/item/clothing/head/winterhood/medical @@ -468,7 +468,7 @@ name = "science winter coat" icon_state = "coatscience" allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper,/obj/item/weapon/melee/classic_baton/telescopic) - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0, fire = 0, acid = 0) hoodtype = /obj/item/clothing/head/winterhood/science /obj/item/clothing/head/winterhood/science @@ -477,7 +477,7 @@ /obj/item/clothing/suit/hooded/wintercoat/engineering name = "engineering winter coat" icon_state = "coatengineer" - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 20) + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 20, fire = 30, acid = 45) allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/weapon/pipe_dispenser) hoodtype = /obj/item/clothing/head/winterhood/engineering @@ -513,7 +513,7 @@ name = "mining winter coat" icon_state = "coatminer" allowed = list(/obj/item/weapon/pickaxe,/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/toy,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter) - armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) hoodtype = /obj/item/clothing/head/winterhood/miner /obj/item/clothing/head/winterhood/miner diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index 7fa36f22b3e..bbca34cbf4f 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -28,7 +28,7 @@ min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT strip_delay = 60 put_on_delay = 60 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/clothing/suit/fire/firefighter icon_state = "firesuit" @@ -57,7 +57,7 @@ desc = "Use in case of bomb." icon_state = "bombsuit" flags = THICKMATERIAL - armor = list(melee = 20, bullet = 0, laser = 20,energy = 10, bomb = 100, bio = 0, rad = 0) + armor = list(melee = 20, bullet = 0, laser = 20,energy = 10, bomb = 100, bio = 0, rad = 0, fire = 25, acid = 50) flags_inv = HIDEFACE|HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR cold_protection = HEAD min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT @@ -66,7 +66,8 @@ strip_delay = 70 put_on_delay = 70 flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF + /obj/item/clothing/suit/bomb_suit name = "bomb suit" @@ -79,7 +80,7 @@ flags = THICKMATERIAL body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS slowdown = 2 - armor = list(melee = 20, bullet = 0, laser = 20,energy = 10, bomb = 100, bio = 0, rad = 0) + armor = list(melee = 20, bullet = 0, laser = 20,energy = 10, bomb = 100, bio = 0, rad = 0, fire = 25, acid = 50) flags_inv = HIDEJUMPSUIT heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT @@ -87,7 +88,7 @@ min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT strip_delay = 70 put_on_delay = 70 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/clothing/head/bomb_hood/security @@ -109,11 +110,11 @@ desc = "A hood with radiation protective properties. The label reads, 'Made with lead. Please do not consume insulation.'" flags = THICKMATERIAL flags_inv = HIDEMASK|HIDEEARS|HIDEFACE|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100, fire = 30, acid = 30) strip_delay = 60 put_on_delay = 60 flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/clothing/suit/radiation name = "radiation suit" @@ -127,8 +128,8 @@ body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/device/geiger_counter) slowdown = 1.5 - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100, fire = 30, acid = 30) strip_delay = 60 put_on_delay = 60 flags_inv = HIDEJUMPSUIT - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm index 980c9603357..d2cd1a16b96 100644 --- a/code/modules/clothing/suits/wiz_robe.dm +++ b/code/modules/clothing/suits/wiz_robe.dm @@ -4,11 +4,10 @@ icon_state = "wizard" gas_transfer_coefficient = 0.01 // IT'S MAGICAL OKAY JEEZ +1 TO NOT DIE permeability_coefficient = 0.01 - armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 20, bio = 20, rad = 20) + armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 20, bio = 20, rad = 20, fire = 100, acid = 100) strip_delay = 50 put_on_delay = 50 - unacidable = 1 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF | ACID_PROOF dog_fashion = /datum/dog_fashion/head/blue_wizard /obj/item/clothing/head/wizard/red @@ -35,7 +34,8 @@ icon_state = "wizard-fake" gas_transfer_coefficient = 1 permeability_coefficient = 1 - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) + resistance_flags = 0 dog_fashion = /datum/dog_fashion/head/blue_wizard /obj/item/clothing/head/wizard/marisa @@ -66,13 +66,12 @@ gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 body_parts_covered = CHEST|GROIN|ARMS|LEGS - armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 20, bio = 20, rad = 20) + armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 20, bio = 20, rad = 20, fire = 100, acid = 100) allowed = list(/obj/item/weapon/teleportation_scroll) flags_inv = HIDEJUMPSUIT strip_delay = 50 put_on_delay = 50 - unacidable = 1 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF | ACID_PROOF /obj/item/clothing/suit/wizrobe/red name = "red wizard robe" @@ -124,9 +123,8 @@ item_state = "wizrobe" gas_transfer_coefficient = 1 permeability_coefficient = 1 - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) - unacidable = 0 - burn_state = FLAMMABLE + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) + resistance_flags = 0 /obj/item/clothing/head/wizard/marisa/fake name = "witch hat" @@ -134,9 +132,8 @@ icon_state = "marisa" gas_transfer_coefficient = 1 permeability_coefficient = 1 - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) - unacidable = 0 - burn_state = FLAMMABLE + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) + resistance_flags = 0 /obj/item/clothing/suit/wizrobe/marisa/fake name = "witch robe" @@ -145,12 +142,11 @@ item_state = "marisarobe" gas_transfer_coefficient = 1 permeability_coefficient = 1 - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) - unacidable = 0 - burn_state = FLAMMABLE + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) + resistance_flags = 0 /obj/item/clothing/suit/wizrobe/paper - name = "papier-mâché robe" + name = "papier-mâché robe" desc = "A robe held together by various bits of clear-tape and paste." icon_state = "wizard-paper" item_state = "wizrobe" @@ -198,9 +194,9 @@ min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/wizard - armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 20, bio = 20, rad = 20) - unacidable = 1 + armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 20, bio = 20, rad = 20, fire = 100, acid = 100) slowdown = 0 + resistance_flags = FIRE_PROOF | ACID_PROOF /obj/item/clothing/head/helmet/space/hardsuit/shielded/wizard name = "battlemage helmet" @@ -209,9 +205,9 @@ item_state = "battlemage" min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT - armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 20, bio = 20, rad = 20) - unacidable = 1 + armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 20, bio = 20, rad = 20, fire = 100, acid = 100) actions_types = null //No inbuilt light + resistance_flags = FIRE_PROOF | ACID_PROOF /obj/item/clothing/head/helmet/space/hardsuit/shielded/wizard/attack_self(mob/user) return diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index 16d994bde9c..7ac3b606184 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -14,7 +14,7 @@ icon_state = "black" item_state = "bl_suit" item_color = "black" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/clothing/under/color/grey name = "grey jumpsuit" diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm index 2f23d7a4eff..28b1a7f8e42 100644 --- a/code/modules/clothing/under/jobs/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian.dm @@ -88,7 +88,7 @@ name = "janitor's jumpsuit" icon_state = "janitor" item_color = "janitor" - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 0, acid = 0) /obj/item/clothing/under/lawyer diff --git a/code/modules/clothing/under/jobs/engineering.dm b/code/modules/clothing/under/jobs/engineering.dm index 2d5518c2861..3ac2b59656d 100644 --- a/code/modules/clothing/under/jobs/engineering.dm +++ b/code/modules/clothing/under/jobs/engineering.dm @@ -5,8 +5,8 @@ icon_state = "chiefengineer" item_state = "gy_suit" item_color = "chief" - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10) - burn_state = FIRE_PROOF + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10, fire = 40, acid = 40) + resistance_flags = FIRE_PROOF /obj/item/clothing/under/rank/atmospheric_technician desc = "It's a jumpsuit worn by atmospheric technicians." @@ -14,7 +14,7 @@ icon_state = "atmos" item_state = "atmos_suit" item_color = "atmos" - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/clothing/under/rank/engineer desc = "It's an orange high visibility jumpsuit worn by engineers. It has minor radiation shielding." @@ -22,7 +22,7 @@ icon_state = "engine" item_state = "engi_suit" item_color = "engine" - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10, fire = 30, acid = 20) /obj/item/clothing/under/rank/roboticist desc = "It's a slimming black with reinforced seams; great for industrial work." diff --git a/code/modules/clothing/under/jobs/medsci.dm b/code/modules/clothing/under/jobs/medsci.dm index 428633cdbd0..914f3eadec9 100644 --- a/code/modules/clothing/under/jobs/medsci.dm +++ b/code/modules/clothing/under/jobs/medsci.dm @@ -7,7 +7,7 @@ icon_state = "director" item_state = "lb_suit" item_color = "director" - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 10, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 10, rad = 0, fire = 0, acid = 35) can_adjust = 0 /obj/item/clothing/under/rank/research_director/alt @@ -16,7 +16,7 @@ icon_state = "rdwhimsy" item_state = "rdwhimsy" item_color = "rdwhimsy" - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 10, bio = 10, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 10, bio = 10, rad = 0, fire = 0, acid = 0) can_adjust = 1 alt_covers_chest = 1 @@ -26,7 +26,7 @@ icon_state = "rdturtle" item_state = "p_suit" item_color = "rdturtle" - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 10, bio = 10, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 10, bio = 10, rad = 0, fire = 0, acid = 0) can_adjust = 1 alt_covers_chest = 1 @@ -37,7 +37,7 @@ item_state = "w_suit" item_color = "toxinswhite" permeability_coefficient = 0.50 - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0, fire = 0, acid = 0) /obj/item/clothing/under/rank/chemist @@ -47,7 +47,7 @@ item_state = "w_suit" item_color = "chemistrywhite" permeability_coefficient = 0.50 - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 50, acid = 65) /* * Medical @@ -59,7 +59,7 @@ item_state = "w_suit" item_color = "cmo" permeability_coefficient = 0.50 - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 0, acid = 0) /obj/item/clothing/under/rank/geneticist desc = "It's made of a special fiber that gives special protection against biohazards. It has a genetics rank stripe on it." @@ -68,7 +68,7 @@ item_state = "w_suit" item_color = "geneticswhite" permeability_coefficient = 0.50 - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 0, acid = 0) /obj/item/clothing/under/rank/virologist desc = "It's made of a special fiber that gives special protection against biohazards. It has a virologist rank stripe on it." @@ -77,7 +77,7 @@ item_state = "w_suit" item_color = "virologywhite" permeability_coefficient = 0.50 - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 0, acid = 0) /obj/item/clothing/under/rank/nursesuit desc = "It's a jumpsuit commonly worn by nursing staff in the medical department." @@ -86,7 +86,7 @@ item_state = "w_suit" item_color = "nursesuit" permeability_coefficient = 0.50 - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 0, acid = 0) fitted = NO_FEMALE_UNIFORM can_adjust = 0 @@ -97,7 +97,7 @@ item_state = "w_suit" item_color = "medical" permeability_coefficient = 0.50 - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 0, acid = 0) /obj/item/clothing/under/rank/medical/blue name = "medical scrubs" diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm index 472e15dd446..3dc94b7eddf 100644 --- a/code/modules/clothing/under/jobs/security.dm +++ b/code/modules/clothing/under/jobs/security.dm @@ -15,7 +15,7 @@ icon_state = "rsecurity" item_state = "r_suit" item_color = "rsecurity" - armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 30, acid = 30) strip_delay = 50 alt_covers_chest = 1 @@ -30,7 +30,7 @@ icon_state = "rwarden" item_state = "r_suit" item_color = "rwarden" - armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 30, acid = 30) strip_delay = 50 alt_covers_chest = 1 @@ -48,7 +48,7 @@ icon_state = "detective" item_state = "det" item_color = "detective" - armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 30, acid = 30) strip_delay = 50 alt_covers_chest = 1 @@ -69,7 +69,7 @@ icon_state = "rhos" item_state = "r_suit" item_color = "rhos" - armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50) strip_delay = 60 alt_covers_chest = 1 diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 6ee8b505403..f88d34d1ba7 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -37,7 +37,7 @@ item_state = "armor" can_adjust = 0 strip_delay = 100 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/clothing/under/waiter name = "waiter's outfit" @@ -125,7 +125,7 @@ heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT can_adjust = 0 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/clothing/under/acj name = "administrative cybernetic jumpsuit" @@ -136,13 +136,13 @@ gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - armor = list(melee = 100, bullet = 100, laser = 100,energy = 100, bomb = 100, bio = 100, rad = 100) + armor = list(melee = 100, bullet = 100, laser = 100,energy = 100, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100) cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT can_adjust = 0 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF | ACID_PROOF /obj/item/clothing/under/owl name = "owl uniform" @@ -378,7 +378,7 @@ body_parts_covered = CHEST|GROIN|ARMS fitted = NO_FEMALE_UNIFORM can_adjust = 0 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/clothing/under/sundress name = "sundress" @@ -532,7 +532,7 @@ icon_state = "plasmaman" item_state = "plasmaman" item_color = "plasmaman" - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 0, fire = 95, acid = 95) body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS can_adjust = 0 strip_delay = 80 diff --git a/code/modules/clothing/under/syndicate.dm b/code/modules/clothing/under/syndicate.dm index 2aa229b2ede..4ae10c98d94 100644 --- a/code/modules/clothing/under/syndicate.dm +++ b/code/modules/clothing/under/syndicate.dm @@ -5,7 +5,7 @@ item_state = "bl_suit" item_color = "syndicate" has_sensor = 0 - armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 40) alt_covers_chest = 1 /obj/item/clothing/under/syndicate/tacticool @@ -14,7 +14,7 @@ icon_state = "tactifool" item_state = "bl_suit" item_color = "tactifool" - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 40) /obj/item/clothing/under/syndicate/sniper name = "Tactical turtleneck suit" @@ -36,5 +36,5 @@ icon_state = "trackpants" item_color = "trackpants" can_adjust = 0 - armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - burn_state = FIRE_PROOF \ No newline at end of file + armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) + resistance_flags = FIRE_PROOF \ No newline at end of file diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm index 0968a13b1b8..84b94a58d23 100644 --- a/code/modules/clothing/under/ties.dm +++ b/code/modules/clothing/under/ties.dm @@ -134,7 +134,7 @@ icon_state = "bronze" item_color = "bronze" materials = list(MAT_METAL=1000) - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF //Pinning medals on people /obj/item/clothing/tie/medal/attack(mob/living/carbon/human/M, mob/living/user) @@ -370,7 +370,7 @@ desc = "A hunter's talisman, some say the old gods smile on those who wear it." icon_state = "talisman" item_color = "talisman" - armor = list(melee = 5, bullet = 5, laser = 5, energy = 5, bomb = 20, bio = 20, rad = 5) //Faith is the best armor. + armor = list(melee = 5, bullet = 5, laser = 5, energy = 5, bomb = 20, bio = 20, rad = 5, fire = 0, acid = 25) ////////////// //OBJECTION!// @@ -403,4 +403,3 @@ if(!isliving(U.loc)) return var/mob/living/L = U.loc - L.bubble_icon = initial(L.bubble_icon) diff --git a/code/modules/clothing/under/trek.dm b/code/modules/clothing/under/trek.dm index 6a2aed8bc7a..b777312da78 100644 --- a/code/modules/clothing/under/trek.dm +++ b/code/modules/clothing/under/trek.dm @@ -19,7 +19,7 @@ icon_state = "trek_engsec" item_color = "trek_engsec" item_state = "r_suit" - armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) //more sec than eng, but w/e. + armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) //more sec than eng, but w/e. strip_delay = 50 /obj/item/clothing/under/trek/medsci 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/holiday/vday.dm b/code/modules/events/holiday/vday.dm index c94c4bf1edc..276e88d82a9 100644 --- a/code/modules/events/holiday/vday.dm +++ b/code/modules/events/holiday/vday.dm @@ -28,7 +28,7 @@ icon = 'icons/obj/toy.dmi' icon_state = "sc_Ace of Hearts_syndicate" // shut up var/message = "A generic message of love or whatever." - burn_state = FLAMMABLE + resistance_flags = 0 w_class = 1 /obj/item/weapon/valentine/New() diff --git a/code/modules/events/holiday/xmas.dm b/code/modules/events/holiday/xmas.dm index ec21c483973..c6f6ed5c910 100644 --- a/code/modules/events/holiday/xmas.dm +++ b/code/modules/events/holiday/xmas.dm @@ -78,7 +78,7 @@ icon_state = "xmashat" desc = "A crappy paper hat that you are REQUIRED to wear." flags_inv = 0 - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) /datum/round_event_control/santa name = "Santa is coming to town! (Christmas)" 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/events/wizard/greentext.dm b/code/modules/events/wizard/greentext.dm index a35e1d6c2dd..1f8827b1770 100644 --- a/code/modules/events/wizard/greentext.dm +++ b/code/modules/events/wizard/greentext.dm @@ -28,7 +28,7 @@ var/mob/living/last_holder var/mob/living/new_holder var/list/color_altered_mobs = list() - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF | ACID_PROOF var/quiet = FALSE /obj/item/weapon/greentext/New() @@ -69,7 +69,7 @@ new_holder.mind.objectives += O new_holder.attack_log += "\[[time_stamp()]\] Won with greentext!!!" color_altered_mobs -= new_holder - burn_state = ON_FIRE + resistance_flags |= ON_FIRE qdel(src) if(last_holder && last_holder != new_holder) //Somehow it was swiped without ever getting dropped @@ -78,7 +78,7 @@ last_holder = new_holder //long live the king /obj/item/weapon/greentext/Destroy(force) - if((burn_state != ON_FIRE) && (!force)) + if(!(resistance_flags & ON_FIRE) && !force) return QDEL_HINT_LETMELIVE . = ..() diff --git a/code/modules/events/wizard/rpgloot.dm b/code/modules/events/wizard/rpgloot.dm index 709079c3a74..961671763ec 100644 --- a/code/modules/events/wizard/rpgloot.dm +++ b/code/modules/events/wizard/rpgloot.dm @@ -49,8 +49,8 @@ var/quality = target.force - initial(target.force) if(quality > 9 && prob((quality - 9)*10)) user << "[target] catches fire!" - if(target.burn_state < FLAMMABLE) - target.burn_state = FLAMMABLE + if(target.resistance_flags & (LAVA_PROOF|FIRE_PROOF)) + target.resistance_flags &= ~(LAVA_PROOF|FIRE_PROOF) target.fire_act() qdel(src) return diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index c600fe3e206..05a4b68164b 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -10,7 +10,7 @@ var/gulp_size = 5 //This is now officially broken ... need to think of a nice way to fix it. possible_transfer_amounts = list(5,10,15,20,25,30,50) volume = 50 - burn_state = FIRE_PROOF + resistance_flags = FIRE_PROOF /obj/item/weapon/reagent_containers/food/drinks/New() ..() diff --git a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm index 7668bf14b7a..41473bcfc9f 100644 --- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm @@ -7,7 +7,7 @@ amount_per_transfer_from_this = 10 volume = 50 materials = list(MAT_GLASS=500) - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 5 spillable = 1 diff --git a/code/modules/food_and_drinks/food.dm b/code/modules/food_and_drinks/food.dm index 53afb299cf8..9905d061150 100644 --- a/code/modules/food_and_drinks/food.dm +++ b/code/modules/food_and_drinks/food.dm @@ -4,7 +4,7 @@ /obj/item/weapon/reagent_containers/food possible_transfer_amounts = list() volume = 50 //Sets the default container amount for all food items. - burn_state = FLAMMABLE + resistance_flags = 0 /obj/item/weapon/reagent_containers/food/New() ..() diff --git a/code/modules/food_and_drinks/food/snacks/meat.dm b/code/modules/food_and_drinks/food/snacks/meat.dm index ae777bcbcd1..f16532a9bf9 100644 --- a/code/modules/food_and_drinks/food/snacks/meat.dm +++ b/code/modules/food_and_drinks/food/snacks/meat.dm @@ -237,7 +237,7 @@ /obj/item/weapon/reagent_containers/food/snacks/meat/steak/goliath name = "goliath steak" desc = "A delicious, lava cooked steak." - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF icon_state = "goliathsteak" trash = null 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 2f8e95e799c..cf7e6ae024d 100644 --- a/code/modules/games/cards.dm +++ b/code/modules/games/cards.dm @@ -125,7 +125,7 @@ var/blank = 0 var/list/cards = list() var/datum/html_interface/hi - burn_state = FLAMMABLE + resistance_flags = 0 /obj/item/weapon/hand/New(loc) . = ..() @@ -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/area_copy.dm b/code/modules/holodeck/area_copy.dm index 9d17d72f67e..3f31cddf91d 100644 --- a/code/modules/holodeck/area_copy.dm +++ b/code/modules/holodeck/area_copy.dm @@ -21,7 +21,7 @@ O.vars[V] = original.vars[V] if(istype(O)) - O.burn_state = FIRE_PROOF // holoitems do not burn + O.resistance_flags |= LAVA_PROOF | FIRE_PROOF | UNACIDABLE // holoitems do not burn if(nerf && istype(O,/obj/item)) var/obj/item/I = O I.damtype = STAMINA // thou shalt not 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.dm b/code/modules/hydroponics/grown.dm index 9c34f22ad3f..77f04b08ccc 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -14,7 +14,7 @@ dried_type = -1 // Saves us from having to define each stupid grown's dried_type as itself. // If you don't want a plant to be driable (watermelons) set this to null in the time definition. - burn_state = FLAMMABLE + resistance_flags = 0 origin_tech = "biotech=1" /obj/item/weapon/reagent_containers/food/snacks/grown/New(newloc, var/obj/item/seeds/new_seed = null) 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/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm index 4eb2df03372..96b40353db3 100644 --- a/code/modules/hydroponics/grown/towercap.dm +++ b/code/modules/hydroponics/grown/towercap.dm @@ -104,7 +104,6 @@ anchored = TRUE buckle_lying = 0 var/burning = 0 - var/flame_strength = FLAMMABLE var/fire_stack_strength = 5 /obj/structure/bonfire/attackby(obj/item/W, mob/user, params) @@ -166,7 +165,7 @@ continue if(isobj(A)) var/obj/O = A - if(O.burn_state < flame_strength) + if(O.resistance_flags & FIRE_PROOF) continue O.fire_act() else if(isliving(A)) diff --git a/code/modules/hydroponics/growninedible.dm b/code/modules/hydroponics/growninedible.dm index 6cd064ac23d..4fe9efe83c6 100644 --- a/code/modules/hydroponics/growninedible.dm +++ b/code/modules/hydroponics/growninedible.dm @@ -5,7 +5,7 @@ /obj/item/weapon/grown // Grown weapons name = "grown_weapon" icon = 'icons/obj/hydroponics/harvest.dmi' - burn_state = FLAMMABLE + resistance_flags = 0 var/obj/item/seeds/seed = null // type path, gets converted to item on New(). It's safe to assume it's always a seed item. /obj/item/weapon/grown/New(newloc, var/obj/item/seeds/new_seed = null) 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/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 5ad7aeafaae..51bdb5b7fb8 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -6,7 +6,7 @@ icon = 'icons/obj/hydroponics/seeds.dmi' icon_state = "seed" // Unknown plant seed - these shouldn't exist in-game. w_class = 1 - burn_state = FLAMMABLE + resistance_flags = 0 var/plantname = "Plants" // Name of plant when planted. var/product // A type path. The thing that is created when the plant is harvested. var/species = "" // Used to update icons. Should match the name in the sprites unless all icon_* are overriden. diff --git a/code/modules/library/lib_codex_gigas.dm b/code/modules/library/lib_codex_gigas.dm index 03f62d84d2b..da9878dee05 100644 --- a/code/modules/library/lib_codex_gigas.dm +++ b/code/modules/library/lib_codex_gigas.dm @@ -3,7 +3,7 @@ icon_state ="demonomicon" throw_speed = 1 throw_range = 10 - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF author = "Forces beyond your comprehension" unique = 1 title = "The codex gigas" diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 43ca9d51012..abdd72df540 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -17,7 +17,7 @@ anchored = 0 density = 1 opacity = 0 - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 30 var/state = 0 var/list/allowed_books = list(/obj/item/weapon/book, /obj/item/weapon/spellbook, /obj/item/weapon/storage/book) //Things allowed in the bookcase @@ -167,7 +167,7 @@ throw_range = 5 w_class = 3 //upped to three because books are, y'know, pretty big. (and you could hide them inside eachother recursively forever) attack_verb = list("bashed", "whacked", "educated") - burn_state = FLAMMABLE + resistance_flags = 0 var/dat //Actual page content var/due_date = 0 //Game time in 1/10th seconds var/author //Who wrote the thing, can be changed by pen or PC. It is not automatically assigned 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/equipment.dm b/code/modules/mining/equipment.dm index adcd2b4762c..7e139965aa2 100644 --- a/code/modules/mining/equipment.dm +++ b/code/modules/mining/equipment.dm @@ -12,7 +12,7 @@ heat_protection = CHEST|GROIN|LEGS|ARMS hooded = 1 hoodtype = /obj/item/clothing/head/explorer - armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 50) + armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 50, fire = 50, acid = 50) allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals, /obj/item/weapon/resonator, /obj/item/device/mining_scanner, /obj/item/device/t_scanner/adv_mining_scanner, /obj/item/weapon/gun/energy/kinetic_accelerator, /obj/item/weapon/pickaxe) /obj/item/clothing/head/explorer @@ -24,7 +24,7 @@ flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT - armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 50) + armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 50, fire = 50, acid = 50) /obj/item/clothing/mask/gas/explorer name = "explorer gas mask" @@ -34,7 +34,7 @@ visor_flags_inv = HIDEFACIALHAIR visor_flags_cover = MASKCOVERSMOUTH actions_types = list(/datum/action/item_action/adjust) - armor = list(melee = 10, bullet = 5, laser = 5, energy = 5, bomb = 0, bio = 50, rad = 0) + armor = list(melee = 10, bullet = 5, laser = 5, energy = 5, bomb = 0, bio = 50, rad = 0, fire = 20, acid = 40) /obj/item/clothing/mask/gas/explorer/attack_self(mob/user) adjustmask(user) @@ -476,10 +476,10 @@ icon_state = "mining_hammer1" item_state = "mining_hammer1" name = "proto-kinetic crusher" - desc = "An early design of the proto-kinetic accelerator, it is little more than an combination of various mining tools cobbled together, forming a high-tech club.\ - While it is an effective mining tool, it did little to aid any but the most skilled and/or suicidal miners against local fauna. \ - \nMark a mob with the destabilizing force, then hit them in melee to activate it for extra damage. Extra damage if backstabbed in this fashion. \ - This weapon is only particularly effective against large creatures." + desc = "An early design of the proto-kinetic accelerator, it is little more than an combination of various mining tools cobbled together, forming a high-tech club. \ + While it is an effective mining tool, it did little to aid any but the most skilled and/or suicidal miners against local fauna.\ + \nMark a mob with the destabilizing force, then hit them in melee to activate it for extra damage. Extra damage if backstabbed in this fashion. \ + This weapon is only particularly effective against large creatures." force = 20 //As much as a bone spear, but this is significantly more annoying to carry around due to requiring the use of both hands at all times w_class = 4 slot_flags = SLOT_BACK @@ -491,7 +491,7 @@ armour_penetration = 10 materials = list(MAT_METAL=1150, MAT_GLASS=2075) hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("smashes", "crushes", "cleaves", "chops", "pulps") + attack_verb = list("smashed", "crushed", "cleaved", "chopped", "pulped") sharpness = IS_SHARP var/charged = 1 var/charge_time = 16 diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm index eb9e319ee09..ae054817156 100644 --- a/code/modules/mining/lavaland/ash_flora.dm +++ b/code/modules/mining/lavaland/ash_flora.dm @@ -152,7 +152,7 @@ icon = 'icons/obj/lavaland/ash_flora.dmi' icon_state = "mushroom_shavings" w_class = 1 - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 30 var/prepared = FALSE var/prepared_type = /obj/item/ash_flora/shavings @@ -240,7 +240,7 @@ icon = 'icons/obj/lavaland/ash_flora.dmi' icon_state = "mushroom_bowl" w_class = 2 - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 40 //what you can craft with these things diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 2545d47892c..e97a66b7070 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -4,7 +4,7 @@ name = "necropolis chest" desc = "It's watching you closely." icon_state = "necrocrate" - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF /obj/structure/closet/crate/necropolis/tendril desc = "It's watching you suspiciously." @@ -252,7 +252,7 @@ /obj/effect/immortality_talisman icon_state = "blank" icon = 'icons/effects/effects.dmi' - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF var/can_destroy = FALSE /obj/effect/immortality_talisman/attackby() @@ -355,7 +355,7 @@ icon_state = "goliath_boat" icon = 'icons/obj/lavaland/dragonboat.dmi' keytype = /obj/item/weapon/oar - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF /obj/vehicle/lavaboat/relaymove(mob/user, direction) var/turf/next = get_step(src, direction) @@ -375,7 +375,7 @@ desc = "Not to be confused with the kind Research hassles you for." force = 12 w_class = 3 - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF /datum/crafting_recipe/oar name = "goliath bone oar" @@ -633,7 +633,7 @@ w_class = 4 force = 25 damtype = BURN - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF hitsound = 'sound/weapons/sear.ogg' var/turf_type = /turf/open/floor/plating/lava/smooth var/transform_string = "lava" 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/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 1bd06bab451..4474a48fc0c 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -4,7 +4,6 @@ /obj/effect/light_emitter name = "Light emitter" anchored = 1 - unacidable = 1 invisibility = 101 var/set_luminosity = 8 var/set_cap = 0 diff --git a/code/modules/mining/money_bag.dm b/code/modules/mining/money_bag.dm index 3f4449a8256..d98a98b714c 100644 --- a/code/modules/mining/money_bag.dm +++ b/code/modules/mining/money_bag.dm @@ -5,7 +5,7 @@ icon_state = "moneybag" force = 10 throwforce = 0 - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 20 w_class = 4 max_w_class = 3 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/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm index fd09b35a440..9f9b9fb5e30 100644 --- a/code/modules/mob/living/bloodcrawl.dm +++ b/code/modules/mob/living/bloodcrawl.dm @@ -6,7 +6,7 @@ density = 0 anchored = 1 invisibility = 60 - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE /obj/effect/dummy/slaughter/relaymove(mob/user, direction) forceMove(get_step(src,direction)) 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/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm index f05c74bc115..c9ef0237605 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm @@ -145,7 +145,7 @@ Doesn't work on other aliens/AI.*/ // OBJ CHECK if(isobj(target)) var/obj/I = target - if(I.unacidable) //So the aliens don't destroy energy fields/singularies/other aliens/etc with their acid. + if(I.resistance_flags & UNACIDABLE)//So the aliens don't destroy energy fields/singularies/other aliens/etc with their acid. user << "You cannot dissolve this object." return 0 // TURF CHECK 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/examine.dm b/code/modules/mob/living/carbon/examine.dm index 61d30f7b8e9..44a0a94a0d2 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -1,78 +1,85 @@ /mob/living/carbon/examine(mob/user) + var/t_He = they_pronoun(TRUE) + var/t_His = their_pronoun(TRUE) + var/t_his = their_pronoun() + var/t_him = them_pronoun() + var/t_has = get_has() + var/t_is = get_is() + var/msg = "*---------*\nThis is \icon[src] \a [src]!\n" if (handcuffed) - msg += "It is \icon[src.handcuffed] handcuffed!\n" + msg += "[t_He] [t_is] \icon[src.handcuffed] handcuffed!\n" if (head) - msg += "It has \icon[src.head] \a [src.head] on its head. \n" + msg += "[t_He] [t_is] wearing \icon[src.head] \a [src.head] on [t_his] head. \n" if (wear_mask) - msg += "It has \icon[src.wear_mask] \a [src.wear_mask] on its face.\n" + msg += "[t_He] [t_is] wearing \icon[src.wear_mask] \a [src.wear_mask] on [t_his] face.\n" for(var/obj/item/I in held_items) if(!(I.flags & ABSTRACT)) if(I.blood_DNA) - msg += "It has \icon[I] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in its [get_held_index_name(get_held_index_of_item(I))]!\n" + msg += "[t_He] [t_is] holding \icon[I] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in [t_his] [get_held_index_name(get_held_index_of_item(I))]!\n" else - msg += "It has \icon[I] \a [I] in its [get_held_index_name(get_held_index_of_item(I))].\n" + msg += "[t_He] [t_is] holding \icon[I] \a [I] in [t_his] [get_held_index_name(get_held_index_of_item(I))].\n" if (back) - msg += "It has \icon[src.back] \a [src.back] on its back.\n" + msg += "[t_He] [t_has] \icon[src.back] \a [src.back] on [t_his] back.\n" var/appears_dead = 0 if (stat == DEAD) appears_dead = 1 if(getorgan(/obj/item/organ/brain)) - msg += "It is limp and unresponsive, with no signs of life.\n" + msg += "[t_He] [t_is] limp and unresponsive, with no signs of life.\n" else if(get_bodypart("head")) - msg += "It appears that it's brain is missing...\n" + msg += "[t_He] appears that [t_his] brain is missing...\n" var/list/missing = get_missing_limbs() for(var/t in missing) if(t=="head") - msg += "Its [parse_zone(t)] is missing!\n" + msg += "[t_His] [parse_zone(t)] is missing!\n" continue - msg += "<Its [parse_zone(t)] is missing!\n" + msg += "<[t_His] [parse_zone(t)] is missing!\n" msg += "" var/temp = getBruteLoss() if(temp) if (temp < 30) - msg += "It has minor bruising.\n" + msg += "[t_He] [t_has] minor bruising.\n" else - msg += "It has severe bruising!\n" + msg += "[t_He] [t_has] severe bruising!\n" temp = getFireLoss() if(temp) if (temp < 30) - msg += "It has minor burns.\n" + msg += "[t_He] [t_has] minor burns.\n" else - msg += "It has severe burns!\n" + msg += "[t_He] [t_has] severe burns!\n" temp = getCloneLoss() if(temp) if(getCloneLoss() < 30) - msg += "It is slightly deformed.\n" + msg += "[t_He] [t_has] slightly deformed.\n" else - msg += "It is severely deformed.\n" + msg += "[t_He] [t_has] severely deformed.\n" if(getBrainLoss() > 60) - msg += "It seems to be clumsy and unable to think.\n" + msg += "[t_He] seems to be clumsy and unable to think.\n" if(fire_stacks > 0) - msg += "It's covered in something flammable.\n" + msg += "[t_He] [t_is] covered in something flammable.\n" if(fire_stacks < 0) - msg += "It's soaked in water.\n" + msg += "[t_He] [t_is] looks a little soaked.\n" if(pulledby && pulledby.grab_state) - msg += "It's restrained by [pulledby]'s grip.\n" + msg += "[t_He] [t_is] restrained by [pulledby]'s grip.\n" msg += "" if(!appears_dead) if(stat == UNCONSCIOUS) - msg += "It isn't responding to anything around it; it seems to be asleep.\n" + msg += "[t_He] [t_is]n't responding to anything around [t_him] and seems to be asleep.\n" if(digitalcamo) - msg += "It is moving its body in an unnatural and blatantly unsimian manner.\n" + msg += "[t_He] [t_is] moving [t_his] body in an unnatural and blatantly unsimian manner.\n" diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 7b71530d27f..dc076f45497 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -1,36 +1,17 @@ /mob/living/carbon/human/examine(mob/user) +//this is very slightly better than it was because you can use it more places. still can't do \his[src] though. + var/t_He = they_pronoun(TRUE) + var/t_His = their_pronoun(TRUE) + var/t_his = their_pronoun() + var/t_him = them_pronoun() + var/t_has = get_has() + var/t_is = get_is() + + var/msg = "*---------*\nThis is [src.name]!\n" var/list/obscured = check_obscured_slots() var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) - // crappy hacks because you can't do \his[src] etc. I'm sorry this proc is so unreadable, blame the text macros :< - var/t_He = "It" //capitalised for use at the start of each line. - var/t_his = "its" - var/t_him = "it" - var/t_has = "has" - var/t_is = "is" - - var/msg = "*---------*\nThis is " - - if( (slot_w_uniform in obscured) && skipface ) //big suits/masks/helmets make it hard to tell their gender - t_He = "They" - t_his = "their" - t_him = "them" - t_has = "have" - t_is = "are" - else - switch(gender) - if(MALE) - t_He = "He" - t_his = "his" - t_him = "him" - if(FEMALE) - t_He = "She" - t_his = "her" - t_him = "her" - - msg += "[src.name]!\n" - //uniform if(w_uniform && !(slot_w_uniform in obscured)) //Ties @@ -163,7 +144,7 @@ if(suiciding) msg += "[t_He] appears to have commited suicide... there is no hope of recovery.\n" if(hellbound) - msg += "[t_his] soul seems to have been ripped out of [t_his] body. Revival is impossible.\n" + msg += "[t_His] soul seems to have been ripped out of [t_his] body. Revival is impossible.\n" msg += "[t_He] [t_is] limp and unresponsive; there are no signs of life" if(!key) var/foundghost = 0 @@ -196,7 +177,7 @@ var/r_limbs_missing = 0 for(var/t in missing) if(t=="head") - msg += "[capitalize(t_his)] [parse_zone(t)] is missing!\n" + msg += "[t_His] [parse_zone(t)] is missing!\n" continue if(t == "l_arm" || t == "l_leg") l_limbs_missing++ @@ -267,9 +248,9 @@ if(islist(stun_absorption)) for(var/i in stun_absorption) if(stun_absorption[i]["end_time"] > world.time && stun_absorption[i]["examine_message"]) - msg += "[t_He][stun_absorption[i]["examine_message"]]\n" + msg += "[t_He] [t_is][stun_absorption[i]["examine_message"]]\n" - if(drunkenness && !skipface && stat != DEAD) //Drunkenness + if(drunkenness && !skipface && !appears_dead) //Drunkenness switch(drunkenness) if(11 to 21) msg += "[t_He] [t_is] slightly flushed.\n" @@ -305,7 +286,7 @@ if(digitalcamo) msg += "[t_He] [t_is] moving [t_his] body in an unnatural and blatantly inhuman manner.\n" - if(istype(user, /mob/living/carbon/human)) + if(ishuman(user)) var/mob/living/carbon/human/H = user var/obj/item/organ/cyberimp/eyes/hud/CIH = H.getorgan(/obj/item/organ/cyberimp/eyes/hud) if(istype(H.glasses, /obj/item/clothing/glasses/hud) || CIH) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 1c7a02138df..833d5c1772d 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -496,7 +496,7 @@ . = 0 if(!. && error_msg && user) // Might need re-wording. - user << "There is no exposed flesh or thin material [above_neck(target_zone) ? "on their head" : "on their body"]." + user << "There is no exposed flesh or thin material [above_neck(target_zone) ? "on [their_pronoun()] head" : "on [their_pronoun()] body"]." /mob/living/carbon/human/proc/check_obscured_slots() var/list/obscured = list() @@ -521,7 +521,7 @@ if(wear_mask.flags_inv & HIDEEYES) obscured |= slot_glasses - if(obscured.len > 0) + if(obscured.len) return obscured else return null @@ -630,7 +630,7 @@ src << "Remove your mask first!" return 0 if(C.is_mouth_covered()) - src << "Remove their mask first!" + src << "Remove [their_pronoun()] mask first!" return 0 if(C.cpr_time < world.time + 30) @@ -889,7 +889,7 @@ if(blood && (NOBLOOD in dna.species.specflags)) if(message) visible_message("[src] dry heaves!", \ - "You try to throw up, but there's nothing your stomach!") + "You try to throw up, but there's nothing in your stomach!") if(stun) Weaken(10) return 1 diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index a3a7413932b..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!") @@ -449,7 +449,7 @@ if(head) head_clothes = head if(head_clothes) - if(!head_clothes.unacidable) + if(!(head_clothes.resistance_flags & UNACIDABLE)) head_clothes.acid_act(acidpwr, acid_volume_left) acid_volume_left = max(acid_volume_left - acid_decay, 0) //We remove some of the acid volume. update_inv_glasses() @@ -471,7 +471,7 @@ if(wear_suit) chest_clothes = wear_suit if(chest_clothes) - if(!chest_clothes.unacidable) + if(!(chest_clothes.resistance_flags & UNACIDABLE)) chest_clothes.acid_act(acidpwr, acid_volume_left) acid_volume_left = max(acid_volume_left - acid_decay, 0) update_inv_w_uniform() @@ -501,7 +501,7 @@ if(wear_suit && (wear_suit.body_parts_covered & HANDS) || wear_suit && (wear_suit.body_parts_covered & ARMS)) arm_clothes = wear_suit if(arm_clothes) - if(!arm_clothes.unacidable) + if(!(arm_clothes.resistance_flags & UNACIDABLE)) arm_clothes.acid_act(acidpwr, acid_volume_left) acid_volume_left = max(acid_volume_left - acid_decay, 0) update_inv_gloves() @@ -527,7 +527,7 @@ if(wear_suit && (wear_suit.body_parts_covered & FEET) || wear_suit && (wear_suit.body_parts_covered & LEGS)) leg_clothes = wear_suit if(leg_clothes) - if(!leg_clothes.unacidable) + if(!(leg_clothes.resistance_flags & UNACIDABLE)) leg_clothes.acid_act(acidpwr, acid_volume_left) acid_volume_left = max(acid_volume_left - acid_decay, 0) update_inv_shoes() diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 7a0cb8e246a..4d82003dadf 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -268,7 +268,7 @@ var/shredded if(!bomb) - if(burn_state != -1) + if(!(resistance_flags & FIRE_PROOF)) shredded = 1 //No heat protection, it burns else shredded = -1 //Heat protection = Fireproof diff --git a/code/modules/mob/living/carbon/human/whisper.dm b/code/modules/mob/living/carbon/human/whisper.dm index 181d5dee7f3..951d93d9238 100644 --- a/code/modules/mob/living/carbon/human/whisper.dm +++ b/code/modules/mob/living/carbon/human/whisper.dm @@ -59,13 +59,13 @@ watching -= eavesdropping var/rendered - whispers = critical ? "whispers something in their final breath." : "whispers something." + whispers = critical ? "whispers something in [their_pronoun()] final breath." : "whispers something." rendered = "[src.name] [whispers]" for(var/mob/M in watching) M.show_message(rendered, 2) var/spans = list(SPAN_ITALICS) - whispers = critical ? "whispers in their final breath" : "whispers" + whispers = critical ? "whispers in [their_pronoun()] final breath" : "whispers" rendered = "[GetVoice()][alt_name] [whispers], \"[attach_spans(message, spans)]\"" for(var/atom/movable/AM in listening) diff --git a/code/modules/mob/living/carbon/monkey/monkey_defense.dm b/code/modules/mob/living/carbon/monkey/monkey_defense.dm index c3a1818b242..112999aff67 100644 --- a/code/modules/mob/living/carbon/monkey/monkey_defense.dm +++ b/code/modules/mob/living/carbon/monkey/monkey_defense.dm @@ -144,7 +144,7 @@ /mob/living/carbon/monkey/acid_act(acidpwr, toxpwr, acid_volume) if(wear_mask) - if(!wear_mask.unacidable) + if(!(wear_mask.resistance_flags & UNACIDABLE)) wear_mask.acid_act(acidpwr) update_inv_wear_mask() else 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/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index af34d8a989f..4893c83ed86 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -38,13 +38,16 @@ AddSpell(new spell(null)) /mob/living/simple_animal/hostile/construct/examine(mob/user) - var/msg = "*---------*\nThis is \icon[src] \a [src]!\n" - if (src.health < src.maxHealth) + var/t_He = they_pronoun(TRUE) + var/plurality = (gender == PLURAL) + var/msg = "*---------*\nThis is \icon[src] \a [src]!\n" + msg += "[desc]\n" + if(health < maxHealth) msg += "" if (src.health >= src.maxHealth/2) - msg += "It looks slightly dented.\n" + msg += "[t_He] look[plurality ? "":"s"] slightly dented.\n" else - msg += "It looks severely dented!\n" + msg += "[t_He] look[plurality ? "":"s"] severely dented!\n" msg += "" msg += "*---------*" @@ -59,11 +62,11 @@ M.visible_message("[M] repairs some of \the [src]'s dents.", \ "You repair some of [src]'s dents, leaving [src] at [health]/[maxHealth] health.") else - M.visible_message("[M] repairs some of its own dents.", \ + M.visible_message("[M] repairs some of [their_pronoun()] own dents.", \ "You repair some of your own dents, leaving you at [M.health]/[M.maxHealth] health.") else if(src != M) - M << "You cannot repair [src]'s dents, as it has none!" + M << "You cannot repair [src]'s dents, as [they_pronoun()] [get_has()] none!" else M << "You cannot repair your own dents, as you have none!" else if(src != M) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm index d940daf1a5b..4500cb5ae05 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm @@ -144,4 +144,4 @@ return //we don't get hacked or give a shit about it /mob/living/simple_animal/drone/cogscarab/drone_chat(msg) - titled_hierophant_message(src, msg, "heavy_alloy") //HIEROPHANT DRONES + titled_hierophant_message(src, msg, "nezbere", "brass", "Construct") //HIEROPHANT DRONES diff --git a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm index d3d99174436..c2c6563c926 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm @@ -84,7 +84,7 @@ user << "You start to tighten loose screws on [src]..." if(do_after(user,80/I.toolspeed,target=user)) adjustBruteLoss(-getBruteLoss()) - visible_message("[user] tightens [src == user ? "their" : "[src]'s"] loose screws!", "You tighten [src == user ? "your" : "[src]'s"] loose screws.") + visible_message("[user] tightens [src == user ? "[user.their_pronoun()]" : "[src]'s"] loose screws!", "You tighten [src == user ? "your" : "[src]'s"] loose screws.") else user << "You need to remain still to tighten [src]'s screws!" else 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/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index 5dc6b9643bc..ce7c655206d 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -94,7 +94,7 @@ A.melee_damage_lower += 5 A.melee_damage_upper += 5 A.update_icons() - user << "You strap the armor plating to [A] and sharpen their claws with the nail filer. This was a great idea." + user << "You strap the armor plating to [A] and sharpen [A.their_pronoun()] claws with the nail filer. This was a great idea." qdel(src) 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/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index 22719303693..83354cdfe63 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -274,7 +274,7 @@ Difficulty: Very Hard icon_off = "blackbox" luminosity = 8 max_n_of_items = INFINITY - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF pixel_y = -4 use_power = 0 var/memory_saved = FALSE @@ -366,7 +366,7 @@ Difficulty: Very Hard icon = 'icons/obj/lavaland/artefacts.dmi' icon_state = "anomaly_crystal" luminosity = 8 - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF use_power = 0 density = 1 languages_spoken = ALL diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm index a6387667c7a..b66571bdb74 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -2,7 +2,7 @@ name = "Shade" real_name = "Shade" desc = "A bound spirit" - gender = NEUTER + gender = PLURAL icon = 'icons/mob/mob.dmi' icon_state = "shade" icon_living = "shade" @@ -29,7 +29,10 @@ flying = 1 loot = list(/obj/item/weapon/ectoplasm) del_on_death = 1 - deathmessage = "lets out a contented sigh as their form unwinds." + +/mob/living/simple_animal/shade/death() + deathmessage = "lets out a contented sigh as [their_pronoun()] form unwinds." + ..() /mob/living/simple_animal/shade/canSuicide() if(istype(loc, /obj/item/device/soulstone)) //do not suicide inside the soulstone @@ -47,7 +50,7 @@ M.visible_message("[M] heals \the [src].", \ "You heal [src], leaving [src] at [health]/[maxHealth] health.") else - M << "You cannot heal [src], as it is unharmed!" + M << "You cannot heal [src], as [they_pronoun()] [get_is()] unharmed!" else if(src != M) ..() diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm index 942a114dc56..e8e09b4943a 100644 --- a/code/modules/modular_computers/computers/item/computer.dm +++ b/code/modules/modular_computers/computers/item/computer.dm @@ -35,6 +35,7 @@ var/broken_damage = 50 // Damage level at which the computer ceases to operate var/max_damage = 100 // Damage level at which the computer breaks apart. + armor = list(melee = 0, bullet = 20, laser = 20, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 0, acid = 0) // Important hardware (must be installed for computer to work) // Optional hardware (improves functionality, but is not critical for computer to work) diff --git a/code/modules/ninja/energy_katana.dm b/code/modules/ninja/energy_katana.dm index 75490674b9a..0218ba27db8 100644 --- a/code/modules/ninja/energy_katana.dm +++ b/code/modules/ninja/energy_katana.dm @@ -6,7 +6,7 @@ force = 40 throwforce = 20 armour_penetration = 50 - unacidable = 1 + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF var/datum/effect_system/spark_spread/spark_system /obj/item/weapon/katana/energy/afterattack(atom/target, mob/user, proximity_flag, click_parameters) diff --git a/code/modules/ninja/suit/gloves.dm b/code/modules/ninja/suit/gloves.dm index 5e441da8472..f4273460c7c 100644 --- a/code/modules/ninja/suit/gloves.dm +++ b/code/modules/ninja/suit/gloves.dm @@ -31,7 +31,7 @@ heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT strip_delay = 120 - unacidable = 1 + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF var/draining = 0 var/candrain = 0 var/mindrain = 200 diff --git a/code/modules/ninja/suit/head.dm b/code/modules/ninja/suit/head.dm index cb4921fd7df..7ada5de3ead 100644 --- a/code/modules/ninja/suit/head.dm +++ b/code/modules/ninja/suit/head.dm @@ -5,8 +5,8 @@ name = "ninja hood" icon_state = "s-ninja" item_state = "s-ninja_mask" - armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 25) + armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 25, fire = 100, acid = 100) strip_delay = 12 - unacidable = 1 + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF blockTracking = 1//Roughly the only unique thing about this helmet. flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR \ No newline at end of file diff --git a/code/modules/ninja/suit/mask.dm b/code/modules/ninja/suit/mask.dm index ca549aab8e6..81d37886ddf 100644 --- a/code/modules/ninja/suit/mask.dm +++ b/code/modules/ninja/suit/mask.dm @@ -16,4 +16,4 @@ Contents: icon_state = "s-ninja" item_state = "s-ninja_mask" strip_delay = 120 - unacidable = 1 + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF 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/ninja/suit/ninjaDrainAct.dm b/code/modules/ninja/suit/ninjaDrainAct.dm index 3a48faefcbe..68a8645ccc5 100644 --- a/code/modules/ninja/suit/ninjaDrainAct.dm +++ b/code/modules/ninja/suit/ninjaDrainAct.dm @@ -281,5 +281,5 @@ They *could* go in their appropriate files, but this is supposed to be modular var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread() spark_system.set_up(5, 0, loc) playsound(src, "sparks", 50, 1) - visible_message("[H] electrocutes [src] with their touch!", "[H] electrocutes you with their touch!") + visible_message("[H] electrocutes [src] with [H.their_pronoun()] touch!", "[H] electrocutes you with [H.their_pronoun()] touch!") electrocute_act(25, H) diff --git a/code/modules/ninja/suit/shoes.dm b/code/modules/ninja/suit/shoes.dm index ca5761014bd..fa8013941ad 100644 --- a/code/modules/ninja/suit/shoes.dm +++ b/code/modules/ninja/suit/shoes.dm @@ -6,7 +6,7 @@ item_state = "secshoes" permeability_coefficient = 0.01 flags = NOSLIP - unacidable = 1 + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) strip_delay = 120 cold_protection = FEET diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm index 65d10c3eb07..70c3a964374 100644 --- a/code/modules/ninja/suit/suit.dm +++ b/code/modules/ninja/suit/suit.dm @@ -18,7 +18,7 @@ Contents: item_state = "s-ninja_suit" allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals,/obj/item/weapon/stock_parts/cell) slowdown = 0 - unacidable = 1 + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) strip_delay = 12 diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm index f9e66b606ee..b1ef1644340 100644 --- a/code/modules/paperwork/clipboard.dm +++ b/code/modules/paperwork/clipboard.dm @@ -10,7 +10,7 @@ var/obj/item/weapon/pen/haspen //The stored pen. var/obj/item/weapon/paper/toppaper //The topmost piece of paper. slot_flags = SLOT_BELT - burn_state = FLAMMABLE + resistance_flags = 0 /obj/item/weapon/clipboard/New() update_icon() diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm index 27ee45fe457..212cd9372d1 100644 --- a/code/modules/paperwork/contract.dm +++ b/code/modules/paperwork/contract.dm @@ -55,7 +55,7 @@ /obj/item/weapon/paper/contract/infernal var/contractType = 0 - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF var/datum/mind/owner icon_state = "paper_onfire" @@ -172,7 +172,7 @@ /obj/item/weapon/paper/contract/infernal/attack(mob/M, mob/living/user) add_fingerprint(user) if(M == user && target == M.mind && M.mind.soulOwner != owner && attempt_signature(user, 1)) - user.visible_message("[user] slices their wrist with [src], and scrawls their name in blood.", "You slice your wrist open and scrawl your name in blood.") + user.visible_message("[user] slices [user.their_pronoun()] wrist with [src], and scrawls [user.their_pronoun()] name in blood.", "You slice your wrist open and scrawl your name in blood.") user.blood_volume = max(user.blood_volume - 100, 0) else return ..() diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index e1a58fa4680..cec63a72253 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -5,7 +5,7 @@ icon_state = "folder" w_class = 2 pressure_resistance = 2 - burn_state = FLAMMABLE + resistance_flags = 0 /obj/item/weapon/folder/blue desc = "A blue folder." diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 87b424efbfb..64d0ad1ca6d 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -17,7 +17,7 @@ pressure_resistance = 0 slot_flags = SLOT_HEAD body_parts_covered = HEAD - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 5 dog_fashion = /datum/dog_fashion/head @@ -40,7 +40,7 @@ /obj/item/weapon/paper/update_icon() - if(burn_state == ON_FIRE) + if(resistance_flags & ON_FIRE) icon_state = "paper_onfire" return if(info) @@ -283,7 +283,7 @@ /obj/item/weapon/paper/attackby(obj/item/weapon/P, mob/living/carbon/human/user, params) ..() - if(burn_state == ON_FIRE) + if(resistance_flags & ON_FIRE) return if(is_blind(user)) diff --git a/code/modules/paperwork/paper_cutter.dm b/code/modules/paperwork/paper_cutter.dm index d147fb85a14..487a7457a4c 100644 --- a/code/modules/paperwork/paper_cutter.dm +++ b/code/modules/paperwork/paper_cutter.dm @@ -106,7 +106,7 @@ desc = "A little slip of paper left over after a larger piece was cut. Whoa." icon_state = "paperslip" icon = 'icons/obj/bureaucracy.dmi' - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 3 /obj/item/weapon/paperslip/New() diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index f559e5bde98..4c9da27c069 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -9,7 +9,7 @@ throw_speed = 3 throw_range = 7 pressure_resistance = 8 - burn_state = FLAMMABLE + resistance_flags = 0 var/amount = 30 //How much paper is in the bin. var/list/papers = list() //List of papers put in the bin for reference. diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index dab3ef6cdb1..a5a72604e93 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -7,7 +7,7 @@ throw_speed = 1 throwforce = 0 w_class = 1 - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 4 var/obj/item/weapon/paper/internalPaper diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 1ccf0aa5068..b5e0c64b81a 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -251,7 +251,7 @@ if(copier_empty()) if(istype(O,/obj/item/weapon/paper/contract/infernal)) user << "The [src] smokes, smelling of brimstone!" - burn_state = ON_FIRE + resistance_flags |= ON_FIRE else if(!user.drop_item()) return @@ -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/paperwork/photography.dm b/code/modules/paperwork/photography.dm index 4007929f9a9..58fcfd4e639 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -17,7 +17,7 @@ icon_state = "film" item_state = "electropack" w_class = 1 - burn_state = FLAMMABLE + resistance_flags = 0 /* * Photo @@ -28,7 +28,7 @@ icon_state = "photo" item_state = "paper" w_class = 1 - burn_state = FLAMMABLE + resistance_flags = 0 burntime = 5 var/icon/img //Big photo image var/scribble //Scribble on the back. @@ -94,7 +94,7 @@ icon_state = "album" item_state = "briefcase" can_hold = list(/obj/item/weapon/photo) - burn_state = FLAMMABLE + resistance_flags = 0 /* * Camera 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 80b96c18152..395eebbb65b 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -25,14 +25,14 @@ var/const/GRAV_NEEDS_WRENCH = 3 anchored = 1 density = 1 use_power = 0 - unacidable = 1 + resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE var/sprite_number = 0 /obj/machinery/gravity_generator/ex_act(severity, target) 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 08611b40c63..6b3f4deb296 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -7,7 +7,7 @@ icon_state = "Contain_F" anchored = 1 density = 0 - unacidable = 1 + resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE use_power = 0 luminosity = 4 layer = ABOVE_OBJ_LAYER @@ -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 a3469c6b699..2dda4c96dbb 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -9,7 +9,6 @@ density = 1 layer = MASSIVE_OBJ_LAYER luminosity = 6 - unacidable = 1 //Don't comment this out. appearance_flags = 0 var/current_size = 1 var/allowed_size = 1 @@ -27,7 +26,7 @@ var/last_failed_movement = 0//Will not move in the same dir if it couldnt before, will help with the getting stuck on fields thing var/last_warning var/consumedSupermatter = 0 //If the singularity has eaten a supermatter shard and can go to stage six - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE /obj/singularity/New(loc, var/starting_energy = 50, var/temp = 0) //CARN: admin-alert for chuckle-fuckery. @@ -64,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/projectiles/gun.dm b/code/modules/projectiles/gun.dm index b1ec4893a43..ede8268be7d 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -389,7 +389,7 @@ obj/item/weapon/gun/proc/newshot() return if(user == target) - target.visible_message("[user] sticks [src] in their mouth, ready to pull the trigger...", \ + target.visible_message("[user] sticks [src] in [user.their_pronoun()] mouth, ready to pull the trigger...", \ "You stick [src] in your mouth, ready to pull the trigger...") else target.visible_message("[user] points [src] at [target]'s head, ready to pull the trigger...", \ diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index e5da7f76ca2..313e2814ccc 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -5,13 +5,12 @@ density = 0 anchored = 1 flags = ABSTRACT - unacidable = 1 pass_flags = PASSTABLE mouse_opacity = 0 hitsound = 'sound/weapons/pierce.ogg' var/hitsound_wall = "" - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE var/def_zone = "" //Aiming at var/mob/firer = null//Who shot it var/obj/item/ammo_casing/ammo_casing = null diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index 2cb6f9312e8..e2431c24375 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -68,7 +68,6 @@ icon = 'icons/effects/effects.dmi' icon_state = "dragnetfield" anchored = 1 - unacidable = 1 /obj/effect/nettingportal/New() ..() 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/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 94ab3c7db79..7dc3b698f84 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -346,9 +346,9 @@ N.regenerate_icons() if(prob(7)) if(N.w_uniform) - M.visible_message(pick("[M]'s collar pops up without warning.", "[M] flexes their arms.")) + M.visible_message(pick("[M]'s collar pops up without warning.
", "[M] flexes [M.their_pronoun()] arms.")) else - M.visible_message("[M] flexes their arms.") + M.visible_message("[M] [M.their_pronoun()] their arms.") if(prob(10)) M.say(pick("Check these sweet biceps bro!", "Deal with it.", "CHUG! CHUG! CHUG! CHUG!", "Winning!", "NERDS!", "My name is John and I hate every single one of you.")) ..() @@ -370,7 +370,7 @@ /datum/reagent/unstableslimetoxin/on_mob_life(mob/living/carbon/human/H) ..() H << "You crumple in agony as your flesh wildly morphs into new forms!" - H.visible_message("[H] falls to the ground and screams as their skin bubbles and froths!") //'froths' sounds painful when used with SKIN. + H.visible_message("[H] falls to the ground and screams as [H.their_pronoun()] skin bubbles and froths!") //'froths' sounds painful when used with SKIN. H.Weaken(3, 0) spawn(30) if(!H || qdeleted(H)) diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index 2d344c1276e..69255dee31c 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) @@ -525,7 +525,7 @@ if(!H.heart_attack) H.heart_attack = 1 // rip in pepperoni if(H.stat == CONSCIOUS) - H.visible_message("[H] clutches at their chest as if their heart stopped!") + H.visible_message("[H] clutches at [H.their_pronoun()] chest as if [H.their_pronoun()] heart stopped!") else H.losebreath += 10 H.adjustOxyLoss(rand(5,25), 0) diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 77f656ab024..1c54b6f22ce 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -62,7 +62,7 @@ else if(C.is_mouth_covered(mask_only = 1)) covered = "mask" if(covered) - var/who = (isnull(user) || eater == user) ? "your" : "their" + var/who = (isnull(user) || eater == user) ? "your" : "[eater.their_pronoun()]" user << "You have to remove [who] [covered] first!" return 0 return 1 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/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 e8516bc7aca..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 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/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index cc5f39f8672..c42594790e9 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -194,7 +194,7 @@ SM.mind.enslave_mind_to_creator(user) SM.sentience_act() SM << "All at once it makes sense: you know what you are and who you are! Self awareness is yours!" - SM << "You are grateful to be self aware and owe [user] a great debt. Serve [user], and assist them in completing their goals at any cost." + SM << "You are grateful to be self aware and owe [user] a great debt. Serve [user], and assist [user.them_pronoun()] in completing [user.their_pronoun()] goals at any cost." user << "[SM] accepts the potion and suddenly becomes attentive and aware. It worked!" qdel(src) else @@ -378,7 +378,7 @@ C.color = "#000080" C.max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT C.heat_protection = C.body_parts_covered - C.burn_state = FIRE_PROOF + C.resistance_flags |= FIRE_PROOF uses -- if(!uses) qdel(src) @@ -418,6 +418,7 @@ item_state = "golem" item_color = "golem" flags = ABSTRACT | NODROP + resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE has_sensor = 0 /obj/item/clothing/suit/golem @@ -430,6 +431,7 @@ permeability_coefficient = 0.50 body_parts_covered = FULL_BODY flags_inv = HIDEGLOVES | HIDESHOES | HIDEJUMPSUIT + resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE flags = ABSTRACT | NODROP /obj/item/clothing/shoes/golem @@ -437,6 +439,7 @@ desc = "sturdy adamantine feet" icon_state = "golem" item_state = null + resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE flags = NOSLIP | ABSTRACT | NODROP @@ -446,7 +449,7 @@ icon_state = "golem" item_state = "golem" siemens_coefficient = 0 - unacidable = 1 + resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE flags = ABSTRACT | NODROP @@ -457,6 +460,7 @@ item_state = null siemens_coefficient = 0 flags = ABSTRACT | NODROP + resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE /obj/item/clothing/head/space/golem @@ -465,7 +469,7 @@ item_color = "dermal" name = "golem's head" desc = "a golem's head" - unacidable = 1 + resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE flags = ABSTRACT | NODROP /obj/effect/golemrune @@ -474,7 +478,7 @@ name = "rune" icon = 'icons/obj/rune.dmi' icon_state = "golem" - unacidable = 1 + resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE layer = TURF_LAYER /obj/effect/golemrune/New() @@ -541,7 +545,6 @@ layer = FLY_LAYER pixel_x = -64 pixel_y = -64 - unacidable = 1 mouse_opacity = 0 var/mob/living/immune = list() // the one who creates the timestop is immune var/list/stopped_atoms = list() diff --git a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm index 7795c1a81e0..71ee2153806 100644 --- a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm +++ b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm @@ -10,7 +10,7 @@ bound_width = 96 bound_height = 96 pixel_x = -32 - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF luminosity = 1 var/boss = FALSE var/is_anyone_home = FALSE diff --git a/code/modules/ruins/objects_and_mobs/sin_ruins.dm b/code/modules/ruins/objects_and_mobs/sin_ruins.dm index 7a71d8f5ae5..609f295acbd 100644 --- a/code/modules/ruins/objects_and_mobs/sin_ruins.dm +++ b/code/modules/ruins/objects_and_mobs/sin_ruins.dm @@ -20,7 +20,7 @@ user << "No... just one more try..." user.gib() else - user.visible_message("[user], pulls [src]'s lever with a glint in their eyes!", "You feel a draining as you pull the lever, but you \ + user.visible_message("[user] pulls [src]'s lever with a glint in [user.their_pronoun()] eyes!", "You feel a draining as you pull the lever, but you \ know it'll be worth it.") icon_state = "slots2" playsound(src, 'sound/lavaland/cursed_slot_machine.ogg', 50, 0) @@ -97,7 +97,7 @@ icon_state = "magic_mirror" /obj/structure/mirror/magic/pride/curse(mob/user) - user.visible_message("The ground splits beneath [user] as their hand leaves the mirror!", \ + user.visible_message("The ground splits beneath [user] as [user.their_pronoun()] hand leaves the mirror!", \ "Perfect. Much better! Now nobody will be able to resist yo-") var/turf/T = get_turf(user) T.ChangeTurf(/turf/open/chasm/straight_down) diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index cb5999e88cd..76bc75f6128 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -8,7 +8,7 @@ //icon = 'icons/dirsquare.dmi' icon_state = "pinonfar" - unacidable = 1 + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE anchored = 1 var/id diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm index 9a7ddfed202..f018168952c 100644 --- a/code/modules/shuttle/special.dm +++ b/code/modules/shuttle/special.dm @@ -185,7 +185,7 @@ // with CENTCOM_BARSTAFF) /obj/structure/table/wood/bar - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF flags = NODECONSTRUCT health = 1000 var/boot_dir = 1 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/spells/spell_types/ethereal_jaunt.dm b/code/modules/spells/spell_types/ethereal_jaunt.dm index 84cfcc108aa..5aba7f5b5c3 100644 --- a/code/modules/spells/spell_types/ethereal_jaunt.dm +++ b/code/modules/spells/spell_types/ethereal_jaunt.dm @@ -78,7 +78,7 @@ density = 0 anchored = 1 invisibility = 60 - burn_state = LAVA_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE /obj/effect/dummy/spell_jaunt/Destroy() // Eject contents if deleted somehow 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


" for(var/D in stockExchange.logs) diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 8077daf2371..7c153342226 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -307,7 +307,7 @@ for(var/Z in limb_list) . += regenerate_limb(Z, noheal) -/ + /mob/living/proc/regenerate_limb(limb_zone, noheal) return @@ -320,7 +320,8 @@ if(!noheal) L.brute_dam = 0 L.burn_dam = 0 - L.burn_state = 0 + L.brutestate = 0 + L.burnstate = 0 L.attach_limb(src, 1) return 1 diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index 9cfed984f4c..c07e5208bef 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -84,7 +84,7 @@ holder = item holder.flags |= NODROP - holder.unacidable = 1 + holder.resistance_flags |= LAVA_PROOF | UNACIDABLE holder.slot_flags = null holder.w_class = 5 holder.materials = null diff --git a/code/modules/zombie/organs.dm b/code/modules/zombie/organs.dm index 35f0b611686..f3f127071a7 100644 --- a/code/modules/zombie/organs.dm +++ b/code/modules/zombie/organs.dm @@ -52,15 +52,12 @@ owner.revive(full_heal = TRUE) switch(old_stat) if(DEAD, UNCONSCIOUS) - owner.visible_message("[owner] staggers to \ - their feet!") + owner.visible_message("[owner] staggers to [owner.their_pronoun()] feet!") owner << "You stagger to your feet!" // Conscious conversions will generally only happen for an event // or for a converts_living=TRUE infection if(CONSCIOUS) - owner.visible_message("[owner] suddenly \ - convulses, as they gain a ravenous hunger in their \ - eyes!", + owner.visible_message("[owner] suddenly convulses, as [owner.they_pronoun()] gain a ravenous hunger in [owner.their_pronoun()] eyes!", "You HUNGER!") playsound(owner.loc, 'sound/hallucinations/growl3.ogg', 50, 1) owner.do_jitter_animation(living_transformation_time) diff --git a/html/changelog.html b/html/changelog.html index d9cb717bbc3..35cadd978c2 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,17 @@ -->
+

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:

    @@ -1107,65 +1118,6 @@
    • Admins can now turn people into red god.
    - -

    28 July 2016

    -

    Cruix updated:

    -
      -
    • Fixed a bug where some objects in photos would not be displayed if they were facing a certain direction.
    • -
    • Photograph descriptions will no longer claim that mobs with low max health are hurt when they are not.
    • -
    -

    Incoming5643 updated:

    -
      -
    • The previously underwhelming viscerator robot has been made a lot more terrifying by the new ability to proactively target and dismember limbs.
    • -
    -

    Joan updated:

    -
      -
    • The Tinkerer's Cache cost increase for having multiple Tinkerer's Caches now happens every 5 caches, from every 3.
    • -
    • If the invoker of Nzcrentr is knocked unconscious or killed, they will gib instead of producing a lighting blast.
    • -
    • Anima Fragments slow down for slightly less time when hit.
    • -
    • Clockwork Marauders do 1 more damage on every attack.
    • -
    • Wraith Spectacles are now less hard on the eyes, and can be used without permanent vision impairment for about 50% longer; from 40~ seconds to about 1 minute.
    • -
    • Halves the Interdiction Lens' disrupt cost from 100 per disrupted object to 50 per disrupted object.
    • -
    • Clockwork Sigils will now be destroyed by any level of explosion, except for Sigils of Transmission, which will gain a small amount of power if hit by a light explosion instead of breaking.
    • -
    • Clockwork Structures will now properly take damage from explosions instead of variably not taking damage or instantly being destroyed.
    • -
    • Ghosts can now click Spatial Gateways to teleport to the other gateway.
    • -
    • Spatial Gateways are now properly disrupted by devastating explosions(but not heavy or light explosions)
    • -
    • Striking a Sigil with any damaging item as a non-servant will remove it. Servants still need to be on harm intent with an empty hand to remove Sigils.
    • -
    -

    Kor updated:

    -
      -
    • The Staff of Storms, dropped by Legion, can now be used on station.
    • -
    -

    MMMiracles updated:

    -
      -
    • Adds jump boots, a mid/end-tier mining equipment that allows the user to dash over 4-wide chasms.
    • -
    -

    ModernViolence updated:

    -
      -
    • Hulk now has default cooldown for melee attacks against dominator
    • -
    -

    MrStonedOne updated:

    -
      -
    • Space wind (movement from pressure differentials (like a hole to space)) has been improved.
    • -
    • Space wind's rate of movement now scales with pressure differential amount.
    • -
    • Actively moving (as in holding down a move key) reduces chance/rate of getting moved by space wind.
    • -
    • Having a wall or dense anchored object to your left or right will lower the chance/rate of getting moved by space wind for each direction (IE: a wall on both sides of you will be a double reduction)
    • -
    • Added Lazy airlock cycling. Bump opening an airlock with this system will close its partner. This system has been added to most airlocks that go to space on boxstation, as well as airlocks to secure areas like brig, bridge, engine.
    • -
    • This can be overridden by click opening, having a shuttle docked, or setting emergency mode on one of the doors.
    • -
    -

    PKPenguin321 updated:

    -
      -
    • Laughter no longer makes you laugh if you're muted.
    • -
    • Laughter can now be brewed with banana juice and sugar.
    • -
    -

    Thunder12345 updated:

    -
      -
    • An old rapier was found rusting in the back of a closet. We cleaned it up, polished it, and assigned it to your captain as a ceremonial weapon only. Warranty void if used in combat.
    • -
    -

    incoming5643 updated:

    -
      -
    • viscerator grenades are now more generous with viscerators spawned
    • -
GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 60b72ddde0d..2e5523ab41a 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -7272,3 +7272,11 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. 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-20748.yml b/html/changelogs/AutoChangeLog-pr-20748.yml new file mode 100644 index 00000000000..dda03562b49 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-20748.yml @@ -0,0 +1,5 @@ +author: "Incoming5643" +delete-after: True +changes: + - rscadd: "After years of having to live on a mostly blown up hunk of junk the wizard's ship has finally been repaired" + - rscdel: "No one paid attention to that lore anyway" 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/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/tgstation.dme b/tgstation.dme index f1bd42061ad..3498b295a39 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -69,6 +69,7 @@ #include "code\__HELPERS\matrices.dm" #include "code\__HELPERS\mobs.dm" #include "code\__HELPERS\names.dm" +#include "code\__HELPERS\pronouns.dm" #include "code\__HELPERS\radio.dm" #include "code\__HELPERS\sanitize_values.dm" #include "code\__HELPERS\text.dm" @@ -188,6 +189,9 @@ #include "code\datums\ruins.dm" #include "code\datums\shuttles.dm" #include "code\datums\votablemap.dm" +#include "code\datums\antagonists\antag_datum.dm" +#include "code\datums\antagonists\datum_clockcult.dm" +#include "code\datums\antagonists\datum_cult.dm" #include "code\datums\diseases\_disease.dm" #include "code\datums\diseases\_MobProcs.dm" #include "code\datums\diseases\anxiety.dm" @@ -553,6 +557,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"