diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_wizard.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_wizard.dmm new file mode 100644 index 0000000000..05155ee2a8 --- /dev/null +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_wizard.dmm @@ -0,0 +1,755 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/mineral/volcanic/lava_land_surface, +/area/lavaland/surface/outdoors) +"b" = ( +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"c" = ( +/turf/template_noop, +/area/template_noop) +"d" = ( +/obj/structure/stone_tile/slab, +/turf/closed/mineral/volcanic/lava_land_surface, +/area/lavaland/surface/outdoors) +"e" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/indestructible/boss/air, +/area/lavaland/surface/outdoors) +"f" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/indestructible/boss/air, +/area/lavaland/surface/outdoors) +"g" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood, +/turf/open/indestructible/boss/air, +/area/lavaland/surface/outdoors) +"h" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/indestructible/boss/air, +/area/lavaland/surface/outdoors) +"i" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/indestructible/boss/air, +/area/lavaland/surface/outdoors) +"j" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/indestructible/boss/air, +/area/lavaland/surface/outdoors) +"k" = ( +/obj/structure/stone_tile/surrounding_tile/cracked, +/obj/structure/stone_tile/center, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/turf/open/indestructible/necropolis, +/area/lavaland/surface/outdoors) +"l" = ( +/obj/structure/stone_tile/block/cracked, +/turf/open/indestructible/necropolis, +/area/lavaland/surface/outdoors) +"m" = ( +/obj/structure/stone_tile/surrounding_tile/cracked, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/center, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/turf/open/indestructible/necropolis, +/area/lavaland/surface/outdoors) +"n" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile, +/turf/open/indestructible/boss/air, +/area/lavaland/surface/outdoors) +"o" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood, +/turf/open/indestructible/boss/air, +/area/lavaland/surface/outdoors) +"p" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/table/bronze, +/obj/item/disk/design_disk/adv/knight_gear, +/turf/open/indestructible/necropolis, +/area/lavaland/surface/outdoors) +"q" = ( +/obj/structure/table/bronze, +/obj/item/stack/sheet/mineral/runite{ + amount = 5 + }, +/turf/open/indestructible/necropolis, +/area/lavaland/surface/outdoors) +"r" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/table/bronze, +/obj/item/stack/sheet/mineral/runite{ + amount = 5 + }, +/turf/open/indestructible/necropolis, +/area/lavaland/surface/outdoors) +"s" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/open/indestructible/boss/air, +/area/lavaland/surface/outdoors) +"t" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/indestructible/boss/air, +/area/lavaland/surface/outdoors) +"u" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/center/cracked, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/turf/open/indestructible/necropolis, +/area/lavaland/surface/outdoors) +"v" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/turf/open/indestructible/necropolis, +/area/lavaland/surface/outdoors) +"w" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/center, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/turf/open/indestructible/necropolis, +/area/lavaland/surface/outdoors) +"x" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile, +/turf/open/indestructible/boss/air, +/area/lavaland/surface/outdoors) +"y" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/indestructible/boss/air, +/area/lavaland/surface/outdoors) +"z" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/indestructible/boss/air, +/area/lavaland/surface/outdoors) +"A" = ( +/obj/structure/stone_tile/slab/cracked, +/turf/open/indestructible/boss/air, +/area/lavaland/surface/outdoors) +"B" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile, +/obj/effect/decal/cleanable/blood, +/turf/open/indestructible/boss/air, +/area/lavaland/surface/outdoors) +"C" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/open/indestructible/boss/air, +/area/lavaland/surface/outdoors) +"D" = ( +/turf/closed/indestructible/riveted/boss, +/area/lavaland/surface/outdoors) +"E" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/turf/open/indestructible/boss/air, +/area/lavaland/surface/outdoors) +"F" = ( +/obj/structure/stone_tile/slab, +/obj/effect/mapping_helpers/no_lava, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"G" = ( +/turf/closed/indestructible/riveted/boss/see_through, +/area/lavaland/surface/outdoors) +"H" = ( +/obj/structure/necropolis_gate, +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/obj/structure/fans/tiny/invisible, +/obj/effect/decal/cleanable/blood, +/turf/open/indestructible/boss/air, +/area/lavaland/surface/outdoors) +"I" = ( +/obj/structure/stone_tile/slab/cracked, +/turf/closed/mineral/volcanic/lava_land_surface, +/area/lavaland/surface/outdoors) +"J" = ( +/obj/structure/fluff/divine/convertaltar, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"K" = ( +/mob/living/simple_animal/hostile/dark_wizard, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) + +(1,1,1) = {" +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +"} +(2,1,1) = {" +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +"} +(3,1,1) = {" +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +"} +(4,1,1) = {" +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +"} +(5,1,1) = {" +c +c +a +a +a +c +c +c +c +c +c +c +c +c +a +a +a +a +a +a +"} +(6,1,1) = {" +c +c +a +a +a +c +c +a +a +c +c +a +a +a +a +a +b +b +a +a +"} +(7,1,1) = {" +c +c +c +a +d +a +a +a +a +a +a +a +F +a +b +b +b +b +b +a +"} +(8,1,1) = {" +c +c +a +a +a +a +a +a +a +a +a +a +D +b +b +b +b +b +b +a +"} +(9,1,1) = {" +c +c +a +a +a +a +e +j +o +t +y +D +D +b +K +b +b +b +K +a +"} +(10,1,1) = {" +c +c +a +a +a +a +f +k +p +u +z +D +G +b +b +b +b +b +b +a +"} +(11,1,1) = {" +c +c +a +a +a +a +g +l +q +v +A +E +H +b +b +b +J +b +b +a +"} +(12,1,1) = {" +c +c +a +a +a +a +h +m +r +w +B +D +G +b +b +b +b +b +b +a +"} +(13,1,1) = {" +c +c +a +a +a +a +i +n +s +x +C +D +D +b +K +b +b +b +K +a +"} +(14,1,1) = {" +c +c +c +a +a +a +a +a +a +a +a +a +D +b +b +b +b +b +b +a +"} +(15,1,1) = {" +c +c +c +a +d +a +a +a +a +a +a +a +I +a +b +b +b +b +b +a +"} +(16,1,1) = {" +c +c +a +a +a +a +c +c +c +a +a +a +a +a +a +a +b +b +a +a +"} +(17,1,1) = {" +c +c +a +a +a +c +c +c +c +c +c +c +c +a +a +a +a +a +a +c +"} +(18,1,1) = {" +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +"} +(19,1,1) = {" +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +"} +(20,1,1) = {" +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +"} diff --git a/_maps/RandomRuins/SpaceRuins/clericden.dmm b/_maps/RandomRuins/SpaceRuins/clericden.dmm new file mode 100644 index 0000000000..0b6ca24dd3 --- /dev/null +++ b/_maps/RandomRuins/SpaceRuins/clericden.dmm @@ -0,0 +1,579 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/turf/closed/mineral/random/no_caves, +/area/ruin/unpowered/no_grav) +"c" = ( +/turf/open/floor/plating/asteroid/airless, +/area/ruin/unpowered/no_grav) +"d" = ( +/turf/closed/wall, +/area/ruin/unpowered/no_grav) +"e" = ( +/turf/closed/wall/rust, +/area/ruin/unpowered/no_grav) +"f" = ( +/obj/item/stack/rods{ + amount = 2 + }, +/obj/item/shard, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/unpowered/no_grav) +"g" = ( +/obj/structure/grille, +/obj/structure/window/fulltile, +/turf/open/floor/plating, +/area/ruin/unpowered/no_grav) +"h" = ( +/obj/structure/grille/broken, +/obj/structure/barricade/wooden/crude, +/obj/structure/trap/cult, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating/airless, +/area/ruin/unpowered/no_grav) +"i" = ( +/obj/structure/light_prism, +/turf/open/floor/plasteel/airless/dark, +/area/ruin/unpowered/no_grav) +"j" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/plating/airless, +/area/ruin/unpowered/no_grav) +"k" = ( +/obj/item/ectoplasm, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/unpowered/no_grav) +"l" = ( +/obj/structure/closet/crate/coffin, +/turf/open/floor/plasteel/airless/dark, +/area/ruin/unpowered/no_grav) +"m" = ( +/turf/open/floor/plating/airless, +/area/ruin/unpowered/no_grav) +"n" = ( +/turf/open/floor/carpet/royalblack/airless, +/area/ruin/unpowered/no_grav) +"o" = ( +/obj/structure/table/wood/fancy, +/obj/item/reagent_containers/food/drinks/bottle/holywater, +/turf/open/floor/carpet/airless, +/area/ruin/unpowered/no_grav) +"p" = ( +/obj/structure/table/wood/fancy, +/obj/item/melee/cleric_mace, +/turf/open/floor/carpet/airless, +/area/ruin/unpowered/no_grav) +"q" = ( +/obj/effect/decal/cleanable/shreds, +/turf/open/floor/carpet/airless, +/area/ruin/unpowered/no_grav) +"r" = ( +/obj/effect/decal/cleanable/shreds, +/obj/effect/decal/remains/human, +/obj/item/disk/design_disk/adv/cleric_mace, +/obj/structure/trap/cult, +/turf/open/floor/carpet/airless, +/area/ruin/unpowered/no_grav) +"s" = ( +/obj/effect/decal/cleanable/shreds, +/turf/open/floor/carpet/royalblack/airless, +/area/ruin/unpowered/no_grav) +"t" = ( +/turf/open/floor/carpet/royalblue/airless, +/area/ruin/unpowered/no_grav) +"u" = ( +/turf/open/floor/carpet/airless, +/area/ruin/unpowered/no_grav) +"v" = ( +/obj/effect/decal/cleanable/blood/splatter, +/obj/effect/decal/cleanable/blood/footprints, +/obj/effect/decal/cleanable/shreds, +/turf/open/floor/carpet/airless, +/area/ruin/unpowered/no_grav) +"w" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/carpet/royalblack/airless, +/area/ruin/unpowered/no_grav) +"x" = ( +/obj/structure/bonfire, +/turf/open/floor/plasteel/airless/dark, +/area/ruin/unpowered/no_grav) +"y" = ( +/obj/effect/decal/cleanable/blood/tracks, +/turf/open/floor/carpet/airless, +/area/ruin/unpowered/no_grav) +"z" = ( +/obj/item/paper/fluff/ruins/clericsden/contact, +/turf/open/floor/plating/airless, +/area/ruin/unpowered/no_grav) +"A" = ( +/obj/structure/table/wood{ + layer = 3.3 + }, +/turf/open/floor/carpet/royalblack/airless, +/area/ruin/unpowered/no_grav) +"B" = ( +/obj/effect/decal/cleanable/blood/footprints, +/obj/effect/decal/cleanable/blood/tracks, +/turf/open/floor/carpet/airless, +/area/ruin/unpowered/no_grav) +"C" = ( +/obj/structure/chair/wood{ + dir = 1 + }, +/turf/open/floor/carpet/royalblue/airless, +/area/ruin/unpowered/no_grav) +"D" = ( +/obj/effect/decal/remains/human, +/obj/structure/trap/cult, +/turf/open/floor/carpet/airless, +/area/ruin/unpowered/no_grav) +"E" = ( +/obj/effect/decal/cleanable/blood/tracks, +/mob/living/simple_animal/hostile/construct/proteon/hostile, +/turf/open/floor/carpet/airless, +/area/ruin/unpowered/no_grav) +"F" = ( +/obj/item/flashlight/flare/torch, +/turf/open/floor/plating/airless, +/area/ruin/unpowered/no_grav) +"G" = ( +/obj/effect/decal/cleanable/blood/tracks, +/obj/structure/trap/cult, +/turf/open/floor/carpet/airless, +/area/ruin/unpowered/no_grav) +"H" = ( +/obj/structure/light_prism, +/turf/open/floor/plating/airless, +/area/ruin/unpowered/no_grav) +"I" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/carpet/airless, +/area/ruin/unpowered/no_grav) +"J" = ( +/obj/structure/rack, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/turf/open/floor/plasteel/airless/dark, +/area/ruin/unpowered/no_grav) +"K" = ( +/obj/structure/grille, +/obj/structure/window/fulltile, +/turf/open/floor/plating/airless, +/area/ruin/unpowered/no_grav) +"L" = ( +/obj/machinery/door/airlock/wood, +/turf/open/floor/plating/airless, +/area/ruin/unpowered/no_grav) +"M" = ( +/obj/effect/decal/cleanable/blood/tracks, +/obj/machinery/door/airlock/wood, +/turf/open/floor/plating/airless, +/area/ruin/unpowered/no_grav) +"N" = ( +/mob/living/simple_animal/hostile/construct/proteon, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/unpowered/no_grav) +"O" = ( +/obj/structure/grille, +/obj/structure/window/fulltile, +/obj/structure/barricade/wooden/crude, +/turf/open/floor/plating/airless, +/area/ruin/unpowered/no_grav) +"Q" = ( +/obj/item/storage/book/bible, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/unpowered/no_grav) +"S" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/unpowered/no_grav) +"U" = ( +/obj/effect/decal/remains/human, +/obj/item/paper/fluff/ruins/clericsden/warning, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/unpowered/no_grav) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +c +b +c +c +c +c +a +a +a +a +"} +(2,1,1) = {" +a +a +a +c +c +c +c +c +c +c +c +b +c +c +b +c +c +a +"} +(3,1,1) = {" +a +c +b +c +c +b +c +b +c +c +b +b +b +c +b +b +b +a +"} +(4,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +c +a +"} +(5,1,1) = {" +a +b +d +d +e +d +e +K +d +d +d +d +d +d +e +c +c +a +"} +(6,1,1) = {" +a +b +e +i +l +e +x +m +e +x +m +e +m +J +d +e +b +a +"} +(7,1,1) = {" +a +a +e +j +n +n +t +w +A +C +n +A +C +n +H +e +d +a +"} +(8,1,1) = {" +a +f +h +m +o +q +u +u +u +D +u +u +u +u +I +L +c +c +"} +(9,1,1) = {" +a +b +g +m +p +r +v +y +B +E +B +y +B +G +B +M +U +S +"} +(10,1,1) = {" +a +b +d +m +n +s +t +n +A +C +n +A +C +n +H +d +e +c +"} +(11,1,1) = {" +a +c +e +i +l +d +x +z +e +x +F +e +m +J +e +d +b +b +"} +(12,1,1) = {" +a +a +e +e +d +d +e +O +d +d +d +e +e +d +d +b +b +c +"} +(13,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +c +c +"} +(14,1,1) = {" +a +c +b +b +b +c +b +b +c +b +c +Q +b +b +b +c +S +a +"} +(15,1,1) = {" +a +a +c +c +c +c +c +c +N +c +c +c +c +S +c +c +a +a +"} +(16,1,1) = {" +a +a +k +c +b +b +c +c +b +c +c +b +c +b +b +b +a +a +"} +(17,1,1) = {" +a +b +c +b +c +b +b +b +b +b +b +b +b +b +c +a +a +a +"} +(18,1,1) = {" +b +b +b +a +a +c +c +c +c +c +c +c +c +a +a +a +a +a +"} +(19,1,1) = {" +a +b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index a86d9c30b1..45301329d3 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -9316,8 +9316,8 @@ /obj/item/clothing/under/trek/medsci/next, /obj/item/clothing/under/trek/medsci/next, /obj/item/clothing/under/trek/medsci/next, -/obj/item/clothing/under/mw2_russian_para, -/obj/item/clothing/under/mw2_russian_para, +/obj/item/clothing/under/russobluecamooutfit, +/obj/item/clothing/under/russobluecamooutfit, /obj/item/clothing/under/gladiator, /obj/item/clothing/under/gladiator, /obj/machinery/firealarm{ @@ -31389,6 +31389,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, +/obj/effect/landmark/start/paramedic, /turf/open/floor/plasteel/white, /area/medical/sleeper) "bzg" = ( @@ -44022,12 +44023,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/science/misc_lab) -"ccS" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) "ccT" = ( /obj/machinery/light{ dir = 4 @@ -52193,14 +52188,6 @@ }, /turf/closed/wall/r_wall, /area/engine/engineering) -"cDM" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "PoolShut"; - name = "Pool Shutters" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/fitness/pool) "cDN" = ( /obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 4 @@ -53223,11 +53210,6 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel/white, /area/science/circuit) -"cVU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/bed, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness/pool) "cXU" = ( /obj/effect/turf_decal/tile/red, /obj/machinery/light{ @@ -53235,9 +53217,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/fore) -"cYG" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "daI" = ( /obj/structure/reagent_dispensers/foamtank, /obj/effect/turf_decal/tile/yellow{ @@ -53322,9 +53301,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"diM" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "dly" = ( /obj/machinery/door/window/southright{ name = "Target Storage" @@ -53430,14 +53406,6 @@ "dFX" = ( /turf/closed/wall, /area/crew_quarters/fitness/pool) -"dGN" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "PoolShut"; - name = "Pool Shutters" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/fitness/pool) "dKP" = ( /turf/closed/wall, /area/maintenance/bar) @@ -53461,23 +53429,20 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"dOr" = ( -/turf/closed/wall, -/area/crew_quarters/fitness/pool) "dPk" = ( /obj/structure/closet{ name = "Costume Closet" }, /obj/item/clothing/head/russobluecamohat, /obj/item/clothing/head/russobluecamohat, -/obj/item/clothing/head/helmet/rus_ushanka, -/obj/item/clothing/head/helmet/rus_ushanka, -/obj/item/clothing/head/helmet/rus_ushanka, -/obj/item/clothing/head/helmet/rus_ushanka, -/obj/item/clothing/under/mw2_russian_para, -/obj/item/clothing/under/mw2_russian_para, -/obj/item/clothing/under/mw2_russian_para, -/obj/item/clothing/under/mw2_russian_para, +/obj/item/clothing/head/ushanka, +/obj/item/clothing/head/ushanka, +/obj/item/clothing/head/ushanka, +/obj/item/clothing/head/ushanka, +/obj/item/clothing/under/russobluecamooutfit, +/obj/item/clothing/under/russobluecamooutfit, +/obj/item/clothing/under/russobluecamooutfit, +/obj/item/clothing/under/russobluecamooutfit, /obj/item/clothing/shoes/jackboots, /obj/item/clothing/shoes/jackboots, /obj/item/clothing/shoes/jackboots, @@ -53493,9 +53458,6 @@ "dVU" = ( /turf/open/floor/plating, /area/space/nearstation) -"dXo" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "dXq" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 @@ -53522,14 +53484,6 @@ }, /turf/open/space, /area/solar/starboard/fore) -"ebT" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "PoolShut"; - name = "Pool Shutters" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/fitness/pool) "ecg" = ( /turf/open/floor/plasteel/yellowsiding/corner{ dir = 4 @@ -53570,9 +53524,6 @@ }, /turf/open/floor/plasteel/dark, /area/hallway/primary/central) -"ekE" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "elh" = ( /obj/structure/chair/comfy/black{ dir = 8 @@ -53613,9 +53564,6 @@ }, /turf/open/floor/plasteel/freezer, /area/security/prison) -"esx" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "esZ" = ( /obj/machinery/door/airlock{ desc = "Private study room where nerds are probably playing Dungeons and Dragons 13e, or a place for blood cult rituals."; @@ -53814,11 +53762,6 @@ }, /turf/open/floor/wood, /area/crew_quarters/bar) -"ffy" = ( -/turf/open/floor/plasteel/yellowsiding{ - dir = 8 - }, -/area/crew_quarters/fitness/pool) "fgG" = ( /obj/structure/table/wood, /obj/machinery/requests_console{ @@ -54030,11 +53973,6 @@ "fHG" = ( /turf/open/floor/plasteel, /area/crew_quarters/fitness) -"fIq" = ( -/turf/open/floor/plasteel/yellowsiding{ - dir = 1 - }, -/area/crew_quarters/fitness/pool) "fIs" = ( /obj/structure/grille, /obj/structure/lattice, @@ -54045,17 +53983,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel, /area/science/circuit) -"fKF" = ( -/turf/open/floor/plasteel, -/area/crew_quarters/fitness/pool) -"fKZ" = ( -/turf/closed/wall, -/area/crew_quarters/fitness/pool) -"fMZ" = ( -/turf/open/floor/plasteel/yellowsiding{ - dir = 1 - }, -/area/crew_quarters/fitness/pool) "fOA" = ( /obj/machinery/door/airlock{ name = "Theatre Backstage"; @@ -54142,14 +54069,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"geH" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "PoolShut"; - name = "Pool Shutters" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/fitness/pool) "gfr" = ( /obj/structure/bed, /turf/open/floor/plating, @@ -54196,15 +54115,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) -"gni" = ( -/turf/open/floor/plasteel, -/area/crew_quarters/fitness/pool) -"gob" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness/pool) "gpD" = ( /obj/machinery/light_switch{ pixel_y = 28 @@ -54308,14 +54218,6 @@ }, /turf/open/floor/wood, /area/maintenance/bar) -"gMV" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "PoolShut"; - name = "Pool Shutters" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/fitness/pool) "gNC" = ( /obj/structure/cable{ icon_state = "1-2" @@ -54482,12 +54384,6 @@ }, /turf/open/floor/plating, /area/space/nearstation) -"hul" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/fitness/pool) "hzK" = ( /turf/open/floor/plasteel/yellowsiding/corner{ dir = 1 @@ -54636,11 +54532,6 @@ /obj/structure/falsewall, /turf/open/floor/plating, /area/maintenance/bar) -"inO" = ( -/turf/open/floor/plasteel/yellowsiding{ - dir = 8 - }, -/area/crew_quarters/fitness/pool) "inR" = ( /obj/structure/chair/stool{ pixel_y = 8 @@ -54704,9 +54595,6 @@ /obj/effect/turf_decal/tile/green, /turf/open/floor/plasteel, /area/hallway/primary/starboard) -"iwv" = ( -/turf/open/floor/plasteel, -/area/crew_quarters/fitness/pool) "iwB" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -54721,18 +54609,12 @@ }, /turf/open/floor/wood, /area/maintenance/bar) -"iAv" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "iBv" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, /turf/open/floor/plasteel, /area/crew_quarters/fitness/pool) -"iBU" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "iDo" = ( /obj/structure/grille, /turf/open/space/basic, @@ -54787,14 +54669,6 @@ /obj/structure/reagent_dispensers/cooking_oil, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) -"iOe" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "PoolShut"; - name = "Pool Shutters" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/fitness/pool) "iTq" = ( /obj/structure/chair/stool{ pixel_y = 8 @@ -54832,11 +54706,6 @@ /obj/item/storage/firstaid/regular, /turf/open/floor/plasteel, /area/crew_quarters/fitness/pool) -"iYY" = ( -/turf/open/floor/plasteel/yellowsiding{ - dir = 1 - }, -/area/crew_quarters/fitness/pool) "jaF" = ( /obj/machinery/light/small, /obj/machinery/atmospherics/components/unary/tank/air{ @@ -54961,12 +54830,6 @@ }, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) -"juP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness/pool) "jvd" = ( /obj/structure/closet/athletic_mixed, /turf/open/floor/plasteel, @@ -54978,12 +54841,6 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/maintenance/port) -"jzi" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) -"jzF" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "jAD" = ( /obj/structure/grille, /turf/open/floor/plating/airless, @@ -55154,6 +55011,10 @@ }, /turf/open/floor/plasteel, /area/science/circuit) +"jUN" = ( +/obj/effect/landmark/start/paramedic, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) "jVl" = ( /obj/structure/cable{ icon_state = "4-8" @@ -55163,14 +55024,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"jWJ" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "PoolShut"; - name = "Pool Shutters" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/fitness/pool) "jZT" = ( /obj/structure/cable{ icon_state = "4-8" @@ -55183,14 +55036,6 @@ "kaq" = ( /turf/closed/wall/mineral/titanium, /area/space/nearstation) -"kcB" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "PoolShut"; - name = "Pool Shutters" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/fitness/pool) "kdO" = ( /obj/machinery/pool/controller, /turf/open/floor/plasteel/yellowsiding, @@ -55383,9 +55228,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/science/mixing) -"kzV" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "kAH" = ( /obj/machinery/camera{ c_tag = "Bar West"; @@ -55444,14 +55286,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"kLk" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "PoolShut"; - name = "Pool Shutters" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/fitness/pool) "kMt" = ( /obj/structure/lattice, /turf/closed/wall, @@ -55471,11 +55305,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) -"kNN" = ( -/turf/open/floor/plasteel/yellowsiding{ - dir = 4 - }, -/area/crew_quarters/fitness/pool) "kPd" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/structure/cable{ @@ -55507,11 +55336,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/quartermaster/miningdock) -"kSu" = ( -/turf/open/floor/plasteel/yellowsiding{ - dir = 1 - }, -/area/crew_quarters/fitness/pool) "kWp" = ( /obj/structure/shuttle/engine/heater{ dir = 1 @@ -55525,12 +55349,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) -"kZa" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) -"kZw" = ( -/turf/open/floor/plasteel/yellowsiding, -/area/crew_quarters/fitness/pool) "laq" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plasteel, @@ -55596,29 +55414,11 @@ }, /turf/open/floor/plasteel, /area/hydroponics) -"lvU" = ( -/turf/open/floor/plasteel/yellowsiding{ - dir = 4 - }, -/area/crew_quarters/fitness/pool) -"lwb" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "PoolShut"; - name = "Pool Shutters" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/fitness/pool) "lyR" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/security/prison) -"lzC" = ( -/turf/open/floor/plasteel/yellowsiding{ - dir = 1 - }, -/area/crew_quarters/fitness/pool) "lAB" = ( /obj/structure/sign/nanotrasen, /turf/closed/wall, @@ -55650,11 +55450,6 @@ }, /turf/open/floor/plasteel, /area/science/circuit) -"lOe" = ( -/turf/open/floor/plasteel/yellowsiding{ - dir = 4 - }, -/area/crew_quarters/fitness/pool) "lPr" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "applebush" @@ -55671,9 +55466,6 @@ }, /turf/open/floor/carpet, /area/crew_quarters/theatre) -"lSk" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "lUS" = ( /obj/structure/table/wood/fancy/black, /obj/machinery/light/small, @@ -55721,9 +55513,6 @@ /obj/item/target/syndicate, /turf/open/floor/plating, /area/security/prison) -"mcA" = ( -/turf/open/floor/plasteel/yellowsiding, -/area/crew_quarters/fitness/pool) "meb" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/bed, @@ -55733,24 +55522,10 @@ /obj/structure/bed, /turf/open/floor/plasteel, /area/crew_quarters/fitness/pool) -"miN" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "PoolShut"; - name = "Pool Shutters" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/fitness/pool) "mjr" = ( /obj/structure/reagent_dispensers/keg/milk, /turf/open/floor/wood, /area/crew_quarters/bar) -"mjw" = ( -/turf/open/floor/plasteel/yellowsiding, -/area/crew_quarters/fitness/pool) -"mko" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "mkv" = ( /obj/machinery/camera{ c_tag = "Gravity Generator Room"; @@ -55809,13 +55584,6 @@ /obj/effect/spawner/lootdrop/keg, /turf/open/floor/wood, /area/maintenance/bar) -"mse" = ( -/obj/structure/pool/ladder{ - dir = 1; - pixel_y = -24 - }, -/turf/open/pool, -/area/crew_quarters/fitness/pool) "mvt" = ( /obj/machinery/airalarm{ dir = 1; @@ -55823,14 +55591,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) -"mwU" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "PoolShut"; - name = "Pool Shutters" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/fitness/pool) "myh" = ( /obj/structure/piano, /obj/structure/window/reinforced, @@ -56004,9 +55764,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/locker) -"mWU" = ( -/turf/open/floor/plasteel/yellowsiding, -/area/crew_quarters/fitness/pool) "nbT" = ( /obj/structure/cable{ icon_state = "0-8" @@ -56052,9 +55809,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"nji" = ( -/turf/closed/wall, -/area/crew_quarters/fitness/pool) "nkP" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance{ @@ -56079,9 +55833,6 @@ "nsA" = ( /turf/closed/wall, /area/crew_quarters/abandoned_gambling_den) -"ntF" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "nuw" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance{ @@ -56105,9 +55856,6 @@ }, /turf/open/floor/plating, /area/construction) -"nFm" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "nGf" = ( /obj/machinery/hydroponics/constructable, /obj/machinery/light{ @@ -56246,12 +55994,6 @@ }, /turf/open/floor/wood, /area/crew_quarters/bar) -"obc" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) -"obd" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "oce" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 @@ -56272,25 +56014,12 @@ /obj/machinery/vending/kink, /turf/open/floor/plating, /area/maintenance/bar) -"oer" = ( -/turf/open/floor/plasteel/yellowsiding, -/area/crew_quarters/fitness/pool) -"ofa" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "ofU" = ( /obj/structure/chair/comfy/black{ dir = 4 }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) -"ogc" = ( -/obj/structure/pool/ladder{ - dir = 2; - pixel_y = 24 - }, -/turf/open/pool, -/area/crew_quarters/fitness/pool) "ohq" = ( /obj/machinery/airalarm{ dir = 4; @@ -56365,9 +56094,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/grass, /area/crew_quarters/bar) -"oxp" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "oyl" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -56433,11 +56159,6 @@ /obj/effect/spawner/lootdrop/keg, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"oFi" = ( -/turf/open/floor/plasteel/yellowsiding{ - dir = 4 - }, -/area/crew_quarters/fitness/pool) "oHB" = ( /turf/open/floor/plasteel/dark, /area/crew_quarters/dorms) @@ -56477,14 +56198,6 @@ }, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) -"oLn" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) "oTW" = ( /obj/structure/chair/stool{ pixel_y = 8 @@ -56507,9 +56220,6 @@ /obj/structure/pool/ladder, /turf/open/pool, /area/crew_quarters/fitness/pool) -"oWT" = ( -/turf/open/floor/plasteel/yellowsiding, -/area/crew_quarters/fitness/pool) "oZl" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/closet/wardrobe/pjs, @@ -56655,14 +56365,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/fitness) -"pHa" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "PoolShut"; - name = "Pool Shutters" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/fitness/pool) "pHl" = ( /obj/structure/table, /obj/item/storage/box/beakers{ @@ -56721,9 +56423,6 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) -"pNf" = ( -/turf/closed/wall, -/area/crew_quarters/fitness/pool) "pPi" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -56762,15 +56461,6 @@ }, /turf/open/floor/plating, /area/crew_quarters/fitness) -"pSl" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) -"pSK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness/pool) "pTB" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -56888,9 +56578,6 @@ /obj/structure/grille/broken, /turf/open/space/basic, /area/space/nearstation) -"qAm" = ( -/turf/open/floor/plasteel, -/area/crew_quarters/fitness/pool) "qBi" = ( /obj/structure/lattice, /turf/closed/wall/r_wall, @@ -56908,9 +56595,6 @@ }, /turf/open/space, /area/solar/port/aft) -"qLk" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "qLR" = ( /obj/structure/mirror{ pixel_y = 32 @@ -57002,17 +56686,6 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel, /area/maintenance/disposal/incinerator) -"rgW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness/pool) -"rje" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/bed, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness/pool) "rjQ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/wood, @@ -57178,22 +56851,12 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) -"rHr" = ( -/turf/open/floor/plasteel/yellowsiding{ - dir = 1 - }, -/area/crew_quarters/fitness/pool) "rIA" = ( /obj/machinery/light{ dir = 8 }, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) -"rKg" = ( -/turf/open/floor/plasteel/yellowsiding{ - dir = 1 - }, -/area/crew_quarters/fitness/pool) "rKP" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 @@ -57237,9 +56900,6 @@ }, /turf/open/floor/plasteel/dark, /area/bridge/meeting_room) -"rTT" = ( -/turf/closed/wall, -/area/crew_quarters/fitness/pool) "rXl" = ( /obj/structure/chair/office/light, /obj/machinery/firealarm{ @@ -57323,9 +56983,6 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) -"soq" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "spu" = ( /obj/effect/turf_decal/tile/red{ dir = 1 @@ -57456,9 +57113,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) -"sGo" = ( -/turf/closed/wall, -/area/crew_quarters/fitness/pool) "sHx" = ( /obj/structure/table, /obj/item/book/manual/hydroponics_pod_people{ @@ -57523,9 +57177,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"sNo" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "sNK" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /obj/structure/cable{ @@ -57610,19 +57261,10 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel/dark, /area/crew_quarters/bar) -"sZG" = ( -/turf/open/floor/plasteel/yellowsiding{ - dir = 8 - }, -/area/crew_quarters/fitness/pool) "tal" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/hallway/secondary/service) -"tbG" = ( -/obj/structure/bed, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness/pool) "tgH" = ( /obj/structure/filingcabinet/employment, /turf/open/floor/wood, @@ -57724,9 +57366,6 @@ /obj/item/crowbar/red, /turf/open/floor/plating, /area/maintenance/port) -"tyd" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "tyX" = ( /obj/structure/cable{ icon_state = "4-8" @@ -57759,9 +57398,6 @@ }, /turf/open/floor/plating, /area/maintenance/fore/secondary) -"tAN" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "tCa" = ( /obj/structure/table/wood, /obj/item/instrument/guitar{ @@ -57784,9 +57420,6 @@ }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) -"tFa" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "tJi" = ( /obj/machinery/airalarm{ dir = 4; @@ -57846,9 +57479,6 @@ /obj/effect/turf_decal/loading_area, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) -"tMM" = ( -/turf/open/floor/plasteel/yellowsiding, -/area/crew_quarters/fitness/pool) "tNF" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 @@ -57882,10 +57512,6 @@ }, /turf/open/floor/wood, /area/maintenance/bar) -"tSh" = ( -/obj/structure/bed, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness/pool) "tWj" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4; @@ -57906,11 +57532,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) -"tZk" = ( -/turf/open/floor/plasteel/yellowsiding{ - dir = 1 - }, -/area/crew_quarters/fitness/pool) "uaj" = ( /obj/effect/turf_decal/tile/red{ dir = 4 @@ -58053,9 +57674,6 @@ }, /turf/open/floor/plasteel/grimy, /area/security/detectives_office) -"upW" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "usO" = ( /obj/machinery/vending/snack/random, /obj/machinery/light/small{ @@ -58086,9 +57704,6 @@ /obj/structure/mineral_door/wood, /turf/open/floor/wood, /area/maintenance/bar) -"uxe" = ( -/turf/closed/wall, -/area/crew_quarters/fitness/pool) "uxY" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ @@ -58231,9 +57846,6 @@ /obj/machinery/power/terminal, /turf/closed/wall/r_wall, /area/engine/gravity_generator) -"uRu" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "uRS" = ( /obj/structure/chair/stool{ pixel_y = 8 @@ -58335,9 +57947,6 @@ }, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/locker) -"vie" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "viF" = ( /obj/structure/table/wood, /obj/item/instrument/trumpet, @@ -58599,9 +58208,6 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"vSu" = ( -/turf/open/floor/plasteel, -/area/crew_quarters/fitness/pool) "vZA" = ( /obj/structure/lattice/catwalk, /obj/structure/cable, @@ -58689,9 +58295,6 @@ }, /turf/open/floor/plating, /area/construction/mining/aux_base) -"wpR" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "wql" = ( /obj/structure/extinguisher_cabinet, /turf/closed/wall/r_wall, @@ -58753,9 +58356,6 @@ }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) -"wHU" = ( -/turf/closed/wall, -/area/crew_quarters/fitness/pool) "wIG" = ( /obj/effect/turf_decal/tile/red{ dir = 1 @@ -58831,14 +58431,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/fitness/pool) -"wXa" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "PoolShut"; - name = "Pool Shutters" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/fitness/pool) "wXl" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /obj/machinery/camera{ @@ -58909,9 +58501,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) -"xgo" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "xgC" = ( /obj/structure/cable{ icon_state = "0-4" @@ -59038,12 +58627,6 @@ /obj/machinery/light, /turf/open/floor/plasteel, /area/crew_quarters/dorms) -"xsO" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) -"xtO" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "xtP" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -59062,9 +58645,6 @@ }, /turf/open/floor/plating, /area/maintenance/fore) -"xyT" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "xzd" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -59152,9 +58732,6 @@ /obj/machinery/vending/wardrobe/curator_wardrobe, /turf/open/floor/carpet, /area/library) -"xFB" = ( -/turf/closed/wall, -/area/crew_quarters/fitness/pool) "xIa" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/grille_or_trash, @@ -59296,12 +58873,6 @@ /obj/machinery/suit_storage_unit/rd, /turf/open/floor/plasteel, /area/science/mixing) -"yfk" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) -"yfL" = ( -/turf/open/pool, -/area/crew_quarters/fitness/pool) "yhz" = ( /obj/structure/table, /obj/item/folder/blue, @@ -94095,7 +93666,7 @@ aiA ahn ahn grc -ccS +anE aod ahn apx @@ -94352,7 +93923,7 @@ uei ahn ahn grc -ccS +anE aod aoK oyX @@ -95123,7 +94694,7 @@ aaa aaa dFX wWW -iwv +dqb lCo ohq wXl @@ -95378,17 +94949,17 @@ aaa aaa aaa aaa -miN +uEx ulM wcR -oFi -oFi -oFi -oFi -oFi +uzs +uzs +uzs +uzs +uzs ecg jLT -hul +veS arm fHG aya @@ -95635,15 +95206,15 @@ aaa aaa aaa aaa -miN +uEx azm -oer +gvX qWV -ekE +con oVo -ekE -ekE -tZk +con +con +eVJ ujS aqs coh @@ -95892,16 +95463,16 @@ aaa aaa aaa aaa -miN +uEx stF -oer -ekE -ekE -ekE -ekE -ekE -tZk -iwv +gvX +con +con +con +con +con +eVJ +dqb qeA lXE pFX @@ -96151,15 +95722,15 @@ aaa aaa dFX lnk -oer -ogc -ekE -ekE -ekE +gvX +wQg +con +con +con fyS -tZk -iwv -hul +eVJ +dqb +veS xzd sJI jJg @@ -96406,15 +95977,15 @@ aaa aaa aaa aaa -miN -iwv -oer -ekE -ekE -ekE -ekE -ekE -tZk +uEx +dqb +gvX +con +con +con +con +con +eVJ iBv lZK fZm @@ -96663,16 +96234,16 @@ aaa aaa aaa aaa -miN -iwv +uEx +dqb kdO -ekE -ekE +con +con uSC -ekE -ekE -tZk -pSK +con +con +eVJ +wHk ewu pQp pQp @@ -96725,7 +96296,7 @@ bAv bvj bCO bDR -bDR +jUN bDR bIn bJC @@ -96920,16 +96491,16 @@ aaa aaa aaa aaa -miN -iwv -oer -ekE -ekE -ekE -ekE -ekE -tZk -pSK +uEx +dqb +gvX +con +con +con +con +con +eVJ +wHk aqu aro aro @@ -97179,14 +96750,14 @@ aaa aaa dFX jMW -oer -ogc -ekE -ekE -ekE +gvX +wQg +con +con +con fyS -tZk -pSK +eVJ +wHk aqu aro aro @@ -97434,16 +97005,16 @@ aaa aaa aaa aaa -miN +uEx sth -oer -ekE -ekE -ekE -ekE -ekE -tZk -pSK +gvX +con +con +con +con +con +eVJ +wHk aqu aro aro @@ -97691,16 +97262,16 @@ aaa aaa aaa aaa -miN +uEx wag -oer -ekE -ekE +gvX +con +con voW -ekE -ekE -tZk -pSK +con +con +eVJ +wHk aqu aro aro @@ -97948,14 +97519,14 @@ aaa aaa aaa aaa -miN +uEx tAC uAH -ffy -ffy +unR +unR dCr -ffy -ffy +unR +unR hzK iYE aqu @@ -98211,9 +97782,9 @@ mgF mgF mgF vAl -rje -rje -rje +meb +meb +meb iMv vmQ pQp @@ -98464,13 +98035,13 @@ aaS aaa dFX dFX -miN -miN -miN +uEx +uEx +uEx dFX -miN -miN -miN +uEx +uEx +uEx dFX dFX aaa diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 13597584ae..1d738b7382 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -86375,6 +86375,7 @@ /obj/effect/turf_decal/tile/blue{ dir = 4 }, +/obj/effect/landmark/start/paramedic, /turf/open/floor/plasteel/white, /area/medical/storage) "cPF" = ( @@ -127461,6 +127462,22 @@ /obj/machinery/light/small, /turf/open/floor/plasteel, /area/security/prison) +"vEq" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/landmark/start/paramedic, +/turf/open/floor/plasteel/white, +/area/medical/storage) "wei" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, @@ -174855,7 +174872,7 @@ cAm cKO cMm cNO -cPF +vEq cRi cSV cUN diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 3c8e251bb1..e33bb015f4 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -52211,6 +52211,7 @@ /obj/effect/turf_decal/tile/blue{ dir = 8 }, +/obj/effect/landmark/start/paramedic, /turf/open/floor/plasteel/white, /area/medical/storage) "bZZ" = ( @@ -54651,6 +54652,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 }, +/obj/effect/landmark/start/paramedic, /turf/open/floor/plasteel/white, /area/medical/storage) "cez" = ( diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index 13dd939ad7..dcfdc3408c 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -2034,6 +2034,13 @@ /obj/structure/stone_tile, /turf/open/indestructible/boss, /area/ruin/unpowered/ash_walkers) +"DQ" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/item/book/granter/crafting_recipe/bone_bow, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) "Ef" = ( /obj/structure/stone_tile/block/cracked, /turf/open/lava/smooth{ @@ -2401,6 +2408,7 @@ }, /obj/structure/table/wood, /obj/item/kitchen/knife/combat/bone, +/obj/item/book/granter/crafting_recipe/bone_bow, /turf/open/indestructible/boss, /area/ruin/unpowered/ash_walkers) "TN" = ( @@ -2507,6 +2515,11 @@ /obj/structure/stone_tile/surrounding_tile/cracked, /turf/closed/mineral/volcanic/lava_land_surface, /area/ruin/unpowered/ash_walkers) +"WA" = ( +/obj/structure/stone_tile/block/cracked, +/obj/item/book/granter/crafting_recipe/bone_bow, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) "WL" = ( /obj/structure/stone_tile{ dir = 4 @@ -57415,7 +57428,7 @@ Ds Ds KV nI -Ad +DQ Si aa ab @@ -57915,7 +57928,7 @@ aa aa Rk Si -sR +WA rz qh pq diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index b34da30300..e6b2af59e1 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -57031,6 +57031,10 @@ }, /turf/open/floor/engine, /area/science/xenobiology) +"naS" = ( +/obj/effect/landmark/start/paramedic, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) "ncm" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 @@ -61095,6 +61099,13 @@ }, /turf/open/floor/wood, /area/lawoffice) +"wtE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/landmark/start/paramedic, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) "wun" = ( /obj/structure/cable{ icon_state = "1-2" @@ -88795,7 +88806,7 @@ bzQ ioj bsA bEw -bkh +naS bkh bId bFO @@ -89566,7 +89577,7 @@ bBc bCm bDr bEz -bnF +wtE buh bIg bjc diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index c76b5d4070..52645ba885 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -220,6 +220,7 @@ // /obj/item signals #define COMSIG_ITEM_ATTACK "item_attack" //from base of obj/item/attack(): (/mob/living/target, /mob/living/user) +#define COMSIG_MOB_APPLY_DAMGE "mob_apply_damage" //from base of /mob/living/proc/apply_damage(): (damage, damagetype, def_zone) #define COMSIG_ITEM_ATTACK_SELF "item_attack_self" //from base of obj/item/attack_self(): (/mob) #define COMPONENT_NO_INTERACT 1 #define COMSIG_ITEM_ATTACK_OBJ "item_attack_obj" //from base of obj/item/attack_obj(): (/obj, /mob) @@ -233,6 +234,7 @@ #define COMSIG_ITEM_ATTACK_ZONE "item_attack_zone" //from base of mob/living/carbon/attacked_by(): (mob/living/carbon/target, mob/living/user, hit_zone) #define COMSIG_ITEM_IMBUE_SOUL "item_imbue_soul" //return a truthy value to prevent ensouling, checked in /obj/effect/proc_holder/spell/targeted/lichdom/cast(): (mob/user) #define COMSIG_ITEM_HIT_REACT "item_hit_react" //from base of obj/item/hit_reaction(): (list/args) +#define COMSIG_ITEM_WEARERCROSSED "wearer_crossed" //called on item when crossed by something (): (/atom/movable) // /obj/item/clothing signals #define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): () diff --git a/code/__DEFINES/construction.dm b/code/__DEFINES/construction.dm index c93f1b2435..48db759b5a 100644 --- a/code/__DEFINES/construction.dm +++ b/code/__DEFINES/construction.dm @@ -59,19 +59,6 @@ //let's just pretend fulltile windows being children of border windows is fine #define FULLTILE_WINDOW_DIR NORTHEAST -//Material defines, for determining how much of a given material an item contains -#define MAT_METAL "$metal" -#define MAT_GLASS "$glass" -#define MAT_SILVER "$silver" -#define MAT_GOLD "$gold" -#define MAT_DIAMOND "$diamond" -#define MAT_URANIUM "$uranium" -#define MAT_PLASMA "$plasma" -#define MAT_BLUESPACE "$bluespace" -#define MAT_BANANIUM "$bananium" -#define MAT_TITANIUM "$titanium" -#define MAT_BIOMASS "$biomass" -#define MAT_PLASTIC "$plastic" //The amount of materials you get from a sheet of mineral like iron/diamond/glass etc #define MINERAL_MATERIAL_AMOUNT 2000 //The maximum size of a stack object. diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index 9bc8127c3d..35348df3d1 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -23,6 +23,7 @@ #define DOCTOR (1<<4) #define GENETICIST (1<<5) #define VIROLOGIST (1<<6) +#define PARAMEDIC (1<<7) #define CIVILIAN (1<<2) @@ -58,32 +59,33 @@ #define JOB_DISPLAY_ORDER_ASSISTANT 1 #define JOB_DISPLAY_ORDER_CAPTAIN 2 #define JOB_DISPLAY_ORDER_HEAD_OF_PERSONNEL 3 -#define JOB_DISPLAY_ORDER_BARTENDER 4 -#define JOB_DISPLAY_ORDER_COOK 5 -#define JOB_DISPLAY_ORDER_BOTANIST 6 -#define JOB_DISPLAY_ORDER_JANITOR 7 -#define JOB_DISPLAY_ORDER_CLOWN 8 -#define JOB_DISPLAY_ORDER_MIME 9 -#define JOB_DISPLAY_ORDER_CURATOR 10 -#define JOB_DISPLAY_ORDER_LAWYER 11 -#define JOB_DISPLAY_ORDER_CHAPLAIN 12 -#define JOB_DISPLAY_ORDER_QUARTERMASTER 13 -#define JOB_DISPLAY_ORDER_CARGO_TECHNICIAN 14 -#define JOB_DISPLAY_ORDER_SHAFT_MINER 15 -#define JOB_DISPLAY_ORDER_CHIEF_ENGINEER 16 -#define JOB_DISPLAY_ORDER_STATION_ENGINEER 17 -#define JOB_DISPLAY_ORDER_ATMOSPHERIC_TECHNICIAN 18 -#define JOB_DISPLAY_ORDER_CHIEF_MEDICAL_OFFICER 19 -#define JOB_DISPLAY_ORDER_MEDICAL_DOCTOR 20 -#define JOB_DISPLAY_ORDER_CHEMIST 21 -#define JOB_DISPLAY_ORDER_GENETICIST 22 -#define JOB_DISPLAY_ORDER_VIROLOGIST 23 -#define JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR 24 -#define JOB_DISPLAY_ORDER_SCIENTIST 25 -#define JOB_DISPLAY_ORDER_ROBOTICIST 26 -#define JOB_DISPLAY_ORDER_HEAD_OF_SECURITY 27 -#define JOB_DISPLAY_ORDER_WARDEN 28 -#define JOB_DISPLAY_ORDER_DETECTIVE 29 -#define JOB_DISPLAY_ORDER_SECURITY_OFFICER 30 -#define JOB_DISPLAY_ORDER_AI 31 -#define JOB_DISPLAY_ORDER_CYBORG 32 +#define JOB_DISPLAY_ORDER_QUARTERMASTER 4 +#define JOB_DISPLAY_ORDER_CARGO_TECHNICIAN 5 +#define JOB_DISPLAY_ORDER_SHAFT_MINER 6 +#define JOB_DISPLAY_ORDER_BARTENDER 7 +#define JOB_DISPLAY_ORDER_COOK 8 +#define JOB_DISPLAY_ORDER_BOTANIST 9 +#define JOB_DISPLAY_ORDER_JANITOR 10 +#define JOB_DISPLAY_ORDER_CLOWN 11 +#define JOB_DISPLAY_ORDER_MIME 12 +#define JOB_DISPLAY_ORDER_CURATOR 13 +#define JOB_DISPLAY_ORDER_LAWYER 14 +#define JOB_DISPLAY_ORDER_CHAPLAIN 15 +#define JOB_DISPLAY_ORDER_AI 16 +#define JOB_DISPLAY_ORDER_CYBORG 17 +#define JOB_DISPLAY_ORDER_CHIEF_ENGINEER 18 +#define JOB_DISPLAY_ORDER_STATION_ENGINEER 19 +#define JOB_DISPLAY_ORDER_ATMOSPHERIC_TECHNICIAN 20 +#define JOB_DISPLAY_ORDER_CHIEF_MEDICAL_OFFICER 21 +#define JOB_DISPLAY_ORDER_MEDICAL_DOCTOR 22 +#define JOB_DISPLAY_ORDER_PARAMEDIC 23 +#define JOB_DISPLAY_ORDER_CHEMIST 24 +#define JOB_DISPLAY_ORDER_VIROLOGIST 25 +#define JOB_DISPLAY_ORDER_GENETICIST 26 +#define JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR 27 +#define JOB_DISPLAY_ORDER_SCIENTIST 28 +#define JOB_DISPLAY_ORDER_ROBOTICIST 29 +#define JOB_DISPLAY_ORDER_HEAD_OF_SECURITY 30 +#define JOB_DISPLAY_ORDER_WARDEN 31 +#define JOB_DISPLAY_ORDER_DETECTIVE 32 +#define JOB_DISPLAY_ORDER_SECURITY_OFFICER 33 diff --git a/code/__DEFINES/materials.dm b/code/__DEFINES/materials.dm new file mode 100644 index 0000000000..0e5234792a --- /dev/null +++ b/code/__DEFINES/materials.dm @@ -0,0 +1,14 @@ +/// Is the material from an ore? currently unused but exists atm for categorizations sake +#define MAT_CATEGORY_ORE "ore capable" + +/// Hard materials, such as iron or metal +#define MAT_CATEGORY_RIGID "rigid material" + + +/// Gets the reference for the material type that was given +#define getmaterialref(A) (SSmaterials.materials[A] || A) + +/// Flag for atoms, this flag ensures it isn't re-colored by materials. Useful for snowflake icons such as default toolboxes. +#define MATERIAL_COLOR (1<<0) +#define MATERIAL_ADD_PREFIX (1<<1) +#define MATERIAL_NO_EFFECTS (1<<2) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index ac8681ead7..881a02c38b 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -521,3 +521,5 @@ GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_S #define NIGHTSHIFT_AREA_RECREATION 2 //dorms common areas, etc #define NIGHTSHIFT_AREA_DEPARTMENT_HALLS 3 //interior hallways, etc #define NIGHTSHIFT_AREA_NONE 4 //default/highest. + +#define UNTIL(X) while(!(X)) stoplag() diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 162c898917..903e5cbbe1 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -47,26 +47,27 @@ // Subsystems shutdown in the reverse of the order they initialize in // The numbers just define the ordering, they are meaningless otherwise. -#define INIT_ORDER_PROFILER 101 -#define INIT_ORDER_FAIL2TOPIC 22 -#define INIT_ORDER_TITLE 20 -#define INIT_ORDER_GARBAGE 19 -#define INIT_ORDER_DBCORE 18 -#define INIT_ORDER_BLACKBOX 17 -#define INIT_ORDER_SERVER_MAINT 16 -#define INIT_ORDER_INPUT 15 -#define INIT_ORDER_VIS 14 -#define INIT_ORDER_RESEARCH 13 -#define INIT_ORDER_EVENTS 12 -#define INIT_ORDER_JOBS 11 -#define INIT_ORDER_QUIRKS 10 -#define INIT_ORDER_TICKER 9 -#define INIT_ORDER_MAPPING 8 -#define INIT_ORDER_NETWORKS 7 -#define INIT_ORDER_ATOMS 6 -#define INIT_ORDER_LANGUAGE 5 -#define INIT_ORDER_MACHINES 4 -#define INIT_ORDER_CIRCUIT 3 +#define INIT_ORDER_PROFILER 100 +#define INIT_ORDER_FAIL2TOPIC 99 +#define INIT_ORDER_TITLE 98 +#define INIT_ORDER_GARBAGE 97 +#define INIT_ORDER_DBCORE 95 +#define INIT_ORDER_BLACKBOX 94 +#define INIT_ORDER_SERVER_MAINT 93 +#define INIT_ORDER_INPUT 85 +#define INIT_ORDER_VIS 80 +#define INIT_ORDER_MATERIALS 76 +#define INIT_ORDER_RESEARCH 75 +#define INIT_ORDER_EVENTS 70 +#define INIT_ORDER_JOBS 65 +#define INIT_ORDER_QUIRKS 60 +#define INIT_ORDER_TICKER 55 +#define INIT_ORDER_MAPPING 50 +#define INIT_ORDER_NETWORKS 45 +#define INIT_ORDER_ATOMS 30 +#define INIT_ORDER_LANGUAGE 25 +#define INIT_ORDER_MACHINES 20 +#define INIT_ORDER_CIRCUIT 15 #define INIT_ORDER_TIMER 1 #define INIT_ORDER_DEFAULT 0 #define INIT_ORDER_AIR -1 diff --git a/code/__HELPERS/_cit_helpers.dm b/code/__HELPERS/_cit_helpers.dm index 26910a916b..a26b9285d4 100644 --- a/code/__HELPERS/_cit_helpers.dm +++ b/code/__HELPERS/_cit_helpers.dm @@ -129,7 +129,7 @@ GLOBAL_VAR_INIT(miscreants_allowed, FALSE) flavor_text_2 = new_flavor to_chat(src, "Your temporary flavor text has been updated.") -/mob/proc/print_flavor_text(flavor) +/mob/proc/print_flavor_text(flavor,temp = FALSE) if(!flavor) return // We are decoding and then encoding to not only get correct amount of characters, but also to prevent partial escaping characters being shown. @@ -137,7 +137,7 @@ GLOBAL_VAR_INIT(miscreants_allowed, FALSE) if(length_char(msg) <= 40) return "[html_encode(msg)]" else - return "[html_encode(copytext_char(msg, 1, 37))]... More..." + return "[html_encode(copytext_char(msg, 1, 37))]... More..." //LOOC toggles /client/verb/listen_looc() diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 7045767f98..8c73d32583 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -76,11 +76,6 @@ for(var/path in subtypesof(/datum/surgery)) GLOB.surgeries_list += new path() - //Materials - for(var/path in subtypesof(/datum/material)) - var/datum/material/D = new path() - GLOB.materials_list[D.id] = D - //Emotes for(var/path in subtypesof(/datum/emote)) var/datum/emote/E = new path() @@ -98,6 +93,8 @@ init_subtypes(/datum/crafting_recipe, GLOB.crafting_recipes) + INVOKE_ASYNC(GLOBAL_PROC, /proc/init_ref_coin_values) //so the current procedure doesn't sleep because of UNTIL() + //creates every subtype of prototype (excluding prototype) and adds it to list L. //if no list/L is provided, one is created. /proc/init_subtypes(prototype, list/L) @@ -115,3 +112,10 @@ for(var/path in subtypesof(prototype)) L+= path return L + +/proc/init_ref_coin_values() + for(var/path in typesof(/obj/item/coin)) + var/obj/item/coin/C = new path + UNTIL(C.flags_1 & INITIALIZED_1) //we want to make sure the value is calculated and not null. + GLOB.coin_values[path] = C.value + qdel(C) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 2cb088c654..af2fb281e6 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1234,8 +1234,6 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) return FALSE return TRUE -#define UNTIL(X) while(!(X)) stoplag() - /proc/pass() return diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index 6a0d8201a7..4de7c88bf7 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -16,7 +16,6 @@ GLOBAL_LIST_EMPTY(singularities) //list of all singularities on the stati GLOBAL_LIST(chemical_reactions_list) //list of all /datum/chemical_reaction datums. Used during chemical reactions GLOBAL_LIST(chemical_reagents_list) //list of all /datum/reagent datums indexed by reagent id. Used by chemistry stuff -GLOBAL_LIST_EMPTY(materials_list) //list of all /datum/material datums indexed by material id. GLOBAL_LIST_EMPTY(tech_list) //list of all /datum/tech datums indexed by id. GLOBAL_LIST_EMPTY(surgeries_list) //list of all surgeries by name, associated with their path. GLOBAL_LIST_EMPTY(uplink_items) //list of all uplink item typepaths, ascendingly sorted by their initial name. @@ -33,6 +32,7 @@ GLOBAL_LIST_EMPTY(meteor_list) // List of all meteors. GLOBAL_LIST_EMPTY(active_jammers) // List of active radio jammers GLOBAL_LIST_EMPTY(ladders) GLOBAL_LIST_EMPTY(trophy_cases) +GLOBAL_LIST_EMPTY(coin_values) GLOBAL_LIST_EMPTY(wire_color_directory) GLOBAL_LIST_EMPTY(wire_name_directory) diff --git a/code/controllers/subsystem/materials.dm b/code/controllers/subsystem/materials.dm new file mode 100644 index 0000000000..96b9e68904 --- /dev/null +++ b/code/controllers/subsystem/materials.dm @@ -0,0 +1,27 @@ +/*! How material datums work +Materials are now instanced datums, with an associative list of them being kept in SSmaterials. We only instance the materials once and then re-use these instances for everything. +These materials call on_applied() on whatever item they are applied to, common effects are adding components, changing color and changing description. This allows us to differentiate items based on the material they are made out of.area +*/ + +SUBSYSTEM_DEF(materials) + name = "Materials" + flags = SS_NO_FIRE + init_order = INIT_ORDER_MATERIALS + ///Dictionary of material.type || material ref + var/list/materials = list() + ///Dictionary of category || list of material refs + var/list/materials_by_category = list() + ///List of stackcrafting recipes for materials using rigid materials + var/list/rigid_stack_recipes = list(new/datum/stack_recipe("chair", /obj/structure/chair/greyscale, one_per_turf = TRUE, on_floor = TRUE, applies_mats = TRUE)) + +/datum/controller/subsystem/materials/Initialize(timeofday) + InitializeMaterials() + return ..() + +///Ran on initialize, populated the materials and materials_by_category dictionaries with their appropiate vars (See these variables for more info) +/datum/controller/subsystem/materials/proc/InitializeMaterials(timeofday) + for(var/type in subtypesof(/datum/material)) + var/datum/material/ref = new type + materials[type] = ref + for(var/c in ref.categories) + materials_by_category[c] += list(ref) diff --git a/code/controllers/subsystem/research.dm b/code/controllers/subsystem/research.dm index 3b2df8bade..f158574763 100644 --- a/code/controllers/subsystem/research.dm +++ b/code/controllers/subsystem/research.dm @@ -416,6 +416,7 @@ SUBSYSTEM_DEF(research) stack_trace("WARNING: Design ID clash with ID [initial(DN.id)] detected! Path: [path]") errored_datums[DN] = initial(DN.id) continue + DN.InitializeMaterials() //Initialize the materials in the design returned[initial(DN.id)] = DN techweb_designs = returned verify_techweb_designs() diff --git a/code/datums/action.dm b/code/datums/action.dm index 04d9c706ed..602dd2c37a 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -301,10 +301,7 @@ /datum/action/item_action/synthswitch/Trigger() if(istype(target, /obj/item/instrument/piano_synth)) var/obj/item/instrument/piano_synth/synth = target - var/chosen = input("Choose the type of instrument you want to use", "Instrument Selection", "piano") as null|anything in synth.insTypes - if(!synth.insTypes[chosen]) - return - return synth.changeInstrument(chosen) + return synth.selectInstrument() return ..() /datum/action/item_action/vortex_recall @@ -827,4 +824,4 @@ for(var/datum/action/A in M.actions) if(istype(A, action_type)) return A - return \ No newline at end of file + return diff --git a/code/datums/components/crafting/guncrafting.dm b/code/datums/components/crafting/guncrafting.dm index d421a6e42a..89868c2332 100644 --- a/code/datums/components/crafting/guncrafting.dm +++ b/code/datums/components/crafting/guncrafting.dm @@ -16,6 +16,6 @@ /obj/item/weaponcrafting/silkstring name = "silkstring" - desc = "A long pice of silk looks like cable coil." + desc = "A long piece of silk with some resemblance to cable coil." icon = 'icons/obj/improvised.dmi' - icon_state = "silkstring" \ No newline at end of file + icon_state = "silkstring" diff --git a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm index 76f8f119e0..c132d8106d 100644 --- a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm +++ b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm @@ -204,7 +204,7 @@ result = /obj/item/gun/ballistic/bow/pipe reqs = list(/obj/item/pipe = 5, /obj/item/stack/sheet/plastic = 15, - /obj/item/weaponcrafting/silkstring = 10) + /obj/item/weaponcrafting/silkstring = 5) time = 450 category = CAT_WEAPONRY subcategory = CAT_WEAPON @@ -291,17 +291,17 @@ /datum/crafting_recipe/arrow name = "Arrow" result = /obj/item/ammo_casing/caseless/arrow - time = 40 + time = 30 reqs = list(/obj/item/stack/sheet/mineral/wood = 1, - /obj/item/weaponcrafting/silkstring = 1, - /obj/item/stack/rods = 3) // 1 metal sheet is worth 1.5 arrows + /obj/item/stack/sheet/silk = 1, + /obj/item/stack/rods = 1) // 1 metal sheet = 2 rods = 2 arrows category = CAT_WEAPONRY subcategory = CAT_AMMO /datum/crafting_recipe/bone_arrow name = "Bone Arrow" result = /obj/item/ammo_casing/caseless/arrow/bone - time = 40 + time = 30 always_availible = FALSE reqs = list(/obj/item/stack/sheet/bone = 1, /obj/item/stack/sheet/sinew = 1, @@ -310,15 +310,19 @@ subcategory = CAT_AMMO /datum/crafting_recipe/ashen_arrow - name = "Harden Arrow" + name = "Bonfire-Hardened Arrow" result = /obj/item/ammo_casing/caseless/arrow/ashen tools = list(/obj/structure/bonfire) - time = 20 + time = 30 always_availible = FALSE reqs = list(/obj/item/ammo_casing/caseless/arrow = 1) category = CAT_WEAPONRY subcategory = CAT_AMMO +/datum/crafting_recipe/ashen_arrow/welder + name = "Welder-Hardened Arrow" + tools = list(TOOL_WELDER) + /datum/crafting_recipe/smartdart name = "Medical smartdart" result = /obj/item/reagent_containers/syringe/dart diff --git a/code/datums/components/explodable.dm b/code/datums/components/explodable.dm new file mode 100644 index 0000000000..820208a319 --- /dev/null +++ b/code/datums/components/explodable.dm @@ -0,0 +1,105 @@ +///Component specifically for explosion sensetive things, currently only applies to heat based explosions but can later perhaps be used for things that are dangerous to handle carelessly like nitroglycerin. +/datum/component/explodable + var/devastation_range = 0 + var/heavy_impact_range = 0 + var/light_impact_range = 2 + var/flash_range = 3 + var/equipped_slot //For items, lets us determine where things should be hit. + +/datum/component/explodable/Initialize(devastation_range_override, heavy_impact_range_override, light_impact_range_override, flash_range_override) + if(!isatom(parent)) + return COMPONENT_INCOMPATIBLE + + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/explodable_attack) + RegisterSignal(parent, COMSIG_TRY_STORAGE_INSERT, .proc/explodable_insert_item) + RegisterSignal(parent, COMSIG_ATOM_EX_ACT, .proc/detonate) + if(ismovableatom(parent)) + RegisterSignal(parent, COMSIG_MOVABLE_IMPACT, .proc/explodable_impact) + RegisterSignal(parent, COMSIG_MOVABLE_BUMP, .proc/explodable_bump) + if(isitem(parent)) + RegisterSignal(parent, list(COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ, COMSIG_ITEM_HIT_REACT), .proc/explodable_attack) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop) + + + + if(devastation_range_override) + devastation_range = devastation_range_override + if(heavy_impact_range_override) + heavy_impact_range = heavy_impact_range_override + if(light_impact_range_override) + light_impact_range = light_impact_range_override + if(flash_range_override) + flash_range = flash_range_override + +/datum/component/explodable/proc/explodable_insert_item(datum/source, obj/item/I, mob/M, silent = FALSE, force = FALSE) + check_if_detonate(I) + +/datum/component/explodable/proc/explodable_impact(datum/source, atom/hit_atom, datum/thrownthing/throwingdatum) + check_if_detonate(hit_atom) + +/datum/component/explodable/proc/explodable_bump(datum/source, atom/A) + check_if_detonate(A) + +///Called when you use this object to attack sopmething +/datum/component/explodable/proc/explodable_attack(datum/source, atom/movable/target, mob/living/user) + check_if_detonate(target) + +///Called when you attack a specific body part of the thing this is equipped on. Useful for exploding pants. +/datum/component/explodable/proc/explodable_attack_zone(datum/source, damage, damagetype, def_zone) + if(!def_zone) + return + if(damagetype != BURN) //Don't bother if it's not fire. + return + if(!is_hitting_zone(def_zone)) //You didn't hit us! ha! + return + detonate() + +/datum/component/explodable/proc/on_equip(datum/source, mob/equipper, slot) + RegisterSignal(equipper, COMSIG_MOB_APPLY_DAMGE, .proc/explodable_attack_zone, TRUE) + +/datum/component/explodable/proc/on_drop(datum/source, mob/user) + UnregisterSignal(user, COMSIG_MOB_APPLY_DAMGE) + +/// Checks if we're hitting the zone this component is covering +/datum/component/explodable/proc/is_hitting_zone(def_zone) + var/obj/item/item = parent + var/mob/living/L = item.loc //Get whoever is equipping the item currently + + if(!istype(L)) + return + + var/obj/item/bodypart/bodypart = L.get_bodypart(check_zone(def_zone)) + + var/list/equipment_items = list() + if(iscarbon(L)) + var/mob/living/carbon/C = L + equipment_items += list(C.head, C.wear_mask, C.back, C.gloves, C.shoes, C.glasses, C.ears) + if(ishuman(C)) + var/mob/living/carbon/human/H = C + equipment_items += list(H.wear_suit, H.w_uniform, H.belt, H.s_store, H.wear_id) + + for(var/bp in equipment_items) + if(!bp) + continue + + var/obj/item/I = bp + if(I.body_parts_covered & bodypart.body_part) + return TRUE + return FALSE + + +/datum/component/explodable/proc/check_if_detonate(target) + if(!isitem(target)) + return + var/obj/item/I = target + if(!I.get_temperature()) + return + detonate() //If we're touching a hot item we go boom + + +/// Expldoe and remove the object +/datum/component/explodable/proc/detonate() + var/atom/A = parent + explosion(A, devastation_range, heavy_impact_range, light_impact_range, flash_range) //epic explosion time + qdel(A) diff --git a/code/datums/components/material_container.dm b/code/datums/components/material_container.dm index 25094518b8..aab84d9ebb 100644 --- a/code/datums/components/material_container.dm +++ b/code/datums/components/material_container.dm @@ -1,4 +1,4 @@ -/* +/*! This datum should be used for handling mineral contents of machines and whatever else is supposed to hold minerals and make use of them. Variables: @@ -13,7 +13,7 @@ var/total_amount = 0 var/max_amount var/sheet_type - var/list/materials + var/list/materials //Map of key = material ref | Value = amount var/show_on_examine var/disable_attackby var/list/allowed_typecache @@ -22,6 +22,7 @@ var/datum/callback/precondition var/datum/callback/after_insert +/// Sets up the proper signals and fills the list of materials with the appropriate references. /datum/component/material_container/Initialize(list/mat_list, max_amt = 0, _show_on_examine = FALSE, list/allowed_types, datum/callback/_precondition, datum/callback/_after_insert, _disable_attackby) materials = list() max_amount = max(0, max_amt) @@ -40,23 +41,19 @@ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/OnAttackBy) RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/OnExamine) - var/list/possible_mats = list() - for(var/mat_type in subtypesof(/datum/material)) - var/datum/material/MT = mat_type - possible_mats[initial(MT.id)] = mat_type - for(var/id in mat_list) - if(possible_mats[id]) - var/mat_path = possible_mats[id] - materials[id] = new mat_path() + for(var/mat in mat_list) //Make the assoc list ref | amount + var/datum/material/M = getmaterialref(mat) || mat + materials[M] = 0 /datum/component/material_container/proc/OnExamine(datum/source, mob/user, list/examine_list) if(show_on_examine) for(var/I in materials) - var/datum/material/M = materials[I] - var/amt = amount(M.id) + var/datum/material/M = I + var/amt = materials[I] if(amt) examine_list += "It has [amt] units of [lowertext(M.name)] stored." +/// Proc that allows players to fill the parent with mats /datum/component/material_container/proc/OnAttackBy(datum/source, obj/item/I, mob/living/user) var/list/tc = allowed_typecache if(disable_attackby) @@ -74,13 +71,14 @@ return var/material_amount = get_item_material_amount(I) if(!material_amount) - to_chat(user, "[I] does not contain sufficient amounts of metal or glass to be accepted by [parent].") + to_chat(user, "[I] does not contain sufficient materials to be accepted by [parent].") return if(!has_space(material_amount)) - to_chat(user, "[parent] is full. Please remove metal or glass from [parent] in order to insert more.") + to_chat(user, "[parent] has not enough space. Please remove materials from [parent] in order to insert more.") return user_insert(I, user) +/// Proc used for when player inserts materials /datum/component/material_container/proc/user_insert(obj/item/I, mob/living/user) set waitfor = FALSE var/requested_amount @@ -98,299 +96,225 @@ return var/inserted = insert_item(I, stack_amt = requested_amount) if(inserted) - if(istype(I, /obj/item/stack)) - var/obj/item/stack/S = I - to_chat(user, "You insert [inserted] [S.singular_name][inserted>1 ? "s" : ""] into [parent].") - if(!QDELETED(I) && I == active_held && !user.put_in_hands(I)) - stack_trace("Warning: User could not put object back in hand during material container insertion, line [__LINE__]! This can lead to issues.") - I.forceMove(user.drop_location()) - else - to_chat(user, "You insert a material total of [inserted] into [parent].") - qdel(I) + to_chat(user, "You insert a material total of [inserted] into [parent].") + qdel(I) if(after_insert) - after_insert.Invoke(I.type, last_inserted_id, inserted) + after_insert.Invoke(I, last_inserted_id, inserted) else if(I == active_held) user.put_in_active_hand(I) -//For inserting an amount of material -/datum/component/material_container/proc/insert_amount(amt, id = null) - if(amt > 0 && has_space(amt)) - var/total_amount_saved = total_amount - if(id) - var/datum/material/M = materials[id] - if(M) - M.amount += amt - total_amount += amt - else - for(var/i in materials) - var/datum/material/M = materials[i] - M.amount += amt - total_amount += amt - return (total_amount - total_amount_saved) - return FALSE - -/datum/component/material_container/proc/insert_stack(obj/item/stack/S, amt, multiplier = 1) - if(isnull(amt)) - amt = S.amount - - if(amt <= 0) - return FALSE - - if(amt > S.amount) - amt = S.amount - - var/material_amt = get_item_material_amount(S) - if(!material_amt) - return FALSE - - amt = min(amt, round(((max_amount - total_amount) / material_amt))) - if(!amt) - return FALSE - - last_inserted_id = insert_materials(S,amt * multiplier) - S.use(amt) - return amt - -/datum/component/material_container/proc/insert_item(obj/item/I, multiplier = 1, stack_amt) +/// Proc specifically for inserting items, returns the amount of materials entered. +/datum/component/material_container/proc/insert_item(obj/item/I, var/multiplier = 1, stack_amt) if(!I) return FALSE - if(istype(I, /obj/item/stack)) - return insert_stack(I, stack_amt, multiplier) + + multiplier = CEILING(multiplier, 0.01) var/material_amount = get_item_material_amount(I) if(!material_amount || !has_space(material_amount)) return FALSE - last_inserted_id = insert_materials(I, multiplier) + last_inserted_id = insert_item_materials(I, multiplier) return material_amount -/datum/component/material_container/proc/insert_materials(obj/item/I, multiplier = 1) //for internal usage only - var/datum/material/M +/datum/component/material_container/proc/insert_item_materials(obj/item/I, multiplier = 1) var/primary_mat var/max_mat_value = 0 for(var/MAT in materials) - M = materials[MAT] - M.amount += I.materials[MAT] * multiplier - total_amount += I.materials[MAT] * multiplier - if(I.materials[MAT] > max_mat_value) + materials[MAT] += I.custom_materials[MAT] * multiplier + total_amount += I.custom_materials[MAT] * multiplier + if(I.custom_materials[MAT] > max_mat_value) primary_mat = MAT return primary_mat -//For consuming material -//mats is a list of types of material to use and the corresponding amounts, example: list(MAT_METAL=100, MAT_GLASS=200) -/datum/component/material_container/proc/use_amount(list/mats, multiplier=1) - if(!mats || !mats.len) - return FALSE +/// For inserting an amount of material +/datum/component/material_container/proc/insert_amount_mat(amt, var/datum/material/mat) + if(!istype(mat)) + mat = getmaterialref(mat) + if(amt > 0 && has_space(amt)) + var/total_amount_saved = total_amount + if(mat) + materials[mat] += amt + else + for(var/i in materials) + materials[i] += amt + total_amount += amt + return (total_amount - total_amount_saved) + return FALSE - var/datum/material/M - for(var/MAT in materials) - M = materials[MAT] - if(M.amount < (mats[MAT] * multiplier)) - return FALSE - - var/total_amount_save = total_amount - for(var/MAT in materials) - M = materials[MAT] - M.amount -= mats[MAT] * multiplier - total_amount -= mats[MAT] * multiplier - - return total_amount_save - total_amount - - -/datum/component/material_container/proc/use_amount_type(amt, id) - var/datum/material/M = materials[id] - if(M) - if(M.amount >= amt) - M.amount -= amt +/// Uses an amount of a specific material, effectively removing it. +/datum/component/material_container/proc/use_amount_mat(amt, var/datum/material/mat) + if(!istype(mat)) + mat = getmaterialref(mat) + var/amount = materials[mat] + if(mat) + if(amount >= amt) + materials[mat] -= amt total_amount -= amt return amt return FALSE -/datum/component/material_container/proc/transer_amt_to(var/datum/component/material_container/T, amt, id) - if((amt==0)||(!T)||(!id)) +/// Proc for transfering materials to another container. +/datum/component/material_container/proc/transer_amt_to(var/datum/component/material_container/T, amt, var/datum/material/mat) + if(!istype(mat)) + mat = getmaterialref(mat) + if((amt==0)||(!T)||(!mat)) return FALSE if(amt<0) - return T.transer_amt_to(src, -amt, id) - var/datum/material/M = materials[id] - - if(M) - var/tr = min(amt, M.amount,T.can_insert_amount(amt, id)) - if(tr) - use_amount_type(tr, id) - T.insert_amount(tr, id) - return tr + return T.transer_amt_to(src, -amt, mat) + var/tr = min(amt, materials[mat],T.can_insert_amount_mat(amt, mat)) + if(tr) + use_amount_mat(tr, mat) + T.insert_amount_mat(tr, mat) + return tr return FALSE -/datum/component/material_container/proc/can_insert_amount(amt, id) - if(amt && id) - var/datum/material/M = materials[id] +/// Proc for checking if there is room in the component, returning the amount or else the amount lacking. +/datum/component/material_container/proc/can_insert_amount_mat(amt, mat) + if(amt && mat) + var/datum/material/M = mat if(M) if((total_amount + amt) <= max_amount) return amt else return (max_amount-total_amount) -/datum/component/material_container/proc/can_use_amount(amt, id, list/mats) - if(amt && id) - var/datum/material/M = materials[id] - if(M && M.amount >= amt) - return TRUE - else if(istype(mats)) - for(var/M in mats) - if(materials[M] && (mats[M] <= materials[M])) - continue - else - return FALSE - return TRUE - return FALSE -//For spawning mineral sheets; internal use only -/datum/component/material_container/proc/retrieve(sheet_amt, datum/material/M, target = null) +/// For consuming a dictionary of materials. mats is the map of materials to use and the corresponding amounts, example: list(M/datum/material/glass =100, datum/material/iron=200) +/datum/component/material_container/proc/use_materials(list/mats, multiplier=1) + if(!mats || !length(mats)) + return FALSE + + var/list/mats_to_remove = list() //Assoc list MAT | AMOUNT + + for(var/x in mats) //Loop through all required materials + var/datum/material/req_mat = x + if(!istype(req_mat)) + req_mat = getmaterialref(req_mat) //Get the ref if necesary + if(!materials[req_mat]) //Do we have the resource? + return FALSE //Can't afford it + var/amount_required = mats[x] * multiplier + if(!(materials[req_mat] >= amount_required)) // do we have enough of the resource? + return FALSE //Can't afford it + mats_to_remove[req_mat] += amount_required //Add it to the assoc list of things to remove + continue + + var/total_amount_save = total_amount + + for(var/i in mats_to_remove) + total_amount_save -= use_amount_mat(mats_to_remove[i], i) + + return total_amount_save - total_amount + +/// For spawning mineral sheets at a specific location. Used by machines to output sheets. +/datum/component/material_container/proc/retrieve_sheets(sheet_amt, var/datum/material/M, target = null) if(!M.sheet_type) - return 0 + return 0 //Add greyscale sheet handling here later if(sheet_amt <= 0) return 0 if(!target) target = get_turf(parent) - if(M.amount < (sheet_amt * MINERAL_MATERIAL_AMOUNT)) - sheet_amt = round(M.amount / MINERAL_MATERIAL_AMOUNT) + if(materials[M] < (sheet_amt * MINERAL_MATERIAL_AMOUNT)) + sheet_amt = round(materials[M] / MINERAL_MATERIAL_AMOUNT) var/count = 0 while(sheet_amt > MAX_STACK_SIZE) new M.sheet_type(target, MAX_STACK_SIZE) count += MAX_STACK_SIZE - use_amount_type(sheet_amt * MINERAL_MATERIAL_AMOUNT, M.id) + use_amount_mat(sheet_amt * MINERAL_MATERIAL_AMOUNT, M) sheet_amt -= MAX_STACK_SIZE if(sheet_amt >= 1) new M.sheet_type(target, sheet_amt) count += sheet_amt - use_amount_type(sheet_amt * MINERAL_MATERIAL_AMOUNT, M.id) + use_amount_mat(sheet_amt * MINERAL_MATERIAL_AMOUNT, M) return count -/datum/component/material_container/proc/retrieve_sheets(sheet_amt, id, target = null) - if(materials[id]) - return retrieve(sheet_amt, materials[id], target) - return FALSE - -/datum/component/material_container/proc/retrieve_amount(amt, id, target) - return retrieve_sheets(amount2sheet(amt), id, target) +/// Proc to get all the materials and dump them as sheets /datum/component/material_container/proc/retrieve_all(target = null) var/result = 0 - var/datum/material/M for(var/MAT in materials) - M = materials[MAT] - result += retrieve_sheets(amount2sheet(M.amount), MAT, target) + var/amount = materials[MAT] + result += retrieve_sheets(amount2sheet(amount), MAT, target) return result +/// Proc that returns TRUE if the container has space /datum/component/material_container/proc/has_space(amt = 0) return (total_amount + amt) <= max_amount +/// Checks if its possible to afford a certain amount of materials. Takes a dictionary of materials. /datum/component/material_container/proc/has_materials(list/mats, multiplier=1) if(!mats || !mats.len) return FALSE - var/datum/material/M - for(var/MAT in mats) - M = materials[MAT] - if(M.amount < (mats[MAT] * multiplier)) + for(var/x in mats) //Loop through all required materials + var/datum/material/req_mat = x + if(!istype(req_mat)) + if(ispath(req_mat)) //Is this an actual material, or is it a category? + req_mat = getmaterialref(req_mat) //Get the ref + + else // Its a category. (For example MAT_CATEGORY_RIGID) + if(!has_enough_of_category(req_mat, mats[req_mat], multiplier)) //Do we have enough of this category? + return FALSE + else + continue + + if(!has_enough_of_material(req_mat, mats[req_mat], multiplier))//Not a category, so just check the normal way return FALSE + return TRUE +/// Returns all the categories in a recipe. +/datum/component/material_container/proc/get_categories(list/mats) + var/list/categories = list() + for(var/x in mats) //Loop through all required materials + if(!istext(x)) //This means its not a category + continue + categories += x + return categories + + +/// Returns TRUE if you have enough of the specified material. +/datum/component/material_container/proc/has_enough_of_material(var/datum/material/req_mat, amount, multiplier=1) + if(!materials[req_mat]) //Do we have the resource? + return FALSE //Can't afford it + var/amount_required = amount * multiplier + if(materials[req_mat] >= amount_required) // do we have enough of the resource? + return TRUE + return FALSE //Can't afford it + +/// Returns TRUE if you have enough of a specified material category (Which could be multiple materials) +/datum/component/material_container/proc/has_enough_of_category(category, amount, multiplier=1) + for(var/i in SSmaterials.materials_by_category[category]) + var/datum/material/mat = i + if(materials[mat] >= amount) //we have enough + return TRUE + return FALSE + +/// Turns a material amount into the amount of sheets it should output /datum/component/material_container/proc/amount2sheet(amt) if(amt >= MINERAL_MATERIAL_AMOUNT) return round(amt / MINERAL_MATERIAL_AMOUNT) return FALSE +/// Turns an amount of sheets into the amount of material amount it should output /datum/component/material_container/proc/sheet2amount(sheet_amt) if(sheet_amt > 0) return sheet_amt * MINERAL_MATERIAL_AMOUNT return FALSE -/datum/component/material_container/proc/amount(id) - var/datum/material/M = materials[id] - return M ? M.amount : 0 -//returns the amount of material relevant to this container; -//if this container does not support glass, any glass in 'I' will not be taken into account +///returns the amount of material relevant to this container; if this container does not support glass, any glass in 'I' will not be taken into account /datum/component/material_container/proc/get_item_material_amount(obj/item/I) - if(!istype(I)) + if(!istype(I) || !I.custom_materials) return FALSE var/material_amount = 0 for(var/MAT in materials) - material_amount += I.materials[MAT] + material_amount += I.custom_materials[MAT] return material_amount - -/datum/material - var/name - var/amount = 0 - var/id = null - var/sheet_type = null - var/coin_type = null - -/datum/material/metal - name = "Metal" - id = MAT_METAL - sheet_type = /obj/item/stack/sheet/metal - coin_type = /obj/item/coin/iron - -/datum/material/glass - name = "Glass" - id = MAT_GLASS - sheet_type = /obj/item/stack/sheet/glass - -/datum/material/silver - name = "Silver" - id = MAT_SILVER - sheet_type = /obj/item/stack/sheet/mineral/silver - coin_type = /obj/item/coin/silver - -/datum/material/gold - name = "Gold" - id = MAT_GOLD - sheet_type = /obj/item/stack/sheet/mineral/gold - coin_type = /obj/item/coin/gold - -/datum/material/diamond - name = "Diamond" - id = MAT_DIAMOND - sheet_type = /obj/item/stack/sheet/mineral/diamond - coin_type = /obj/item/coin/diamond - -/datum/material/uranium - name = "Uranium" - id = MAT_URANIUM - sheet_type = /obj/item/stack/sheet/mineral/uranium - coin_type = /obj/item/coin/uranium - -/datum/material/plasma - name = "Solid Plasma" - id = MAT_PLASMA - sheet_type = /obj/item/stack/sheet/mineral/plasma - coin_type = /obj/item/coin/plasma - -/datum/material/bluespace - name = "Bluespace Mesh" - id = MAT_BLUESPACE - sheet_type = /obj/item/stack/sheet/bluespace_crystal - -/datum/material/bananium - name = "Bananium" - id = MAT_BANANIUM - sheet_type = /obj/item/stack/sheet/mineral/bananium - coin_type = /obj/item/coin/bananium - -/datum/material/titanium - name = "Titanium" - id = MAT_TITANIUM - sheet_type = /obj/item/stack/sheet/mineral/titanium - -/datum/material/biomass - name = "Biomass" - id = MAT_BIOMASS - -/datum/material/plastic - name = "Plastic" - id = MAT_PLASTIC - sheet_type = /obj/item/stack/sheet/plastic +/// Returns the amount of a specific material in this container. +/datum/component/material_container/proc/get_material_amount(var/datum/material/mat) + if(!istype(mat)) + mat = getmaterialref(mat) + return(materials[mat]) diff --git a/code/datums/components/radioactive.dm b/code/datums/components/radioactive.dm index 9dac20d94f..240eed7747 100644 --- a/code/datums/components/radioactive.dm +++ b/code/datums/components/radioactive.dm @@ -77,6 +77,8 @@ /datum/component/radioactive/proc/rad_attack(datum/source, atom/movable/target, mob/living/user) radiation_pulse(parent, strength/20) target.rad_act(strength/2) + if(!hl3_release_date) + return strength -= strength / hl3_release_date #undef RAD_AMOUNT_LOW diff --git a/code/datums/components/remote_materials.dm b/code/datums/components/remote_materials.dm index dd05660b3e..245e89bd0c 100644 --- a/code/datums/components/remote_materials.dm +++ b/code/datums/components/remote_materials.dm @@ -54,7 +54,7 @@ handles linking back and forth. /datum/component/remote_materials/proc/_MakeLocal() silo = null mat_container = parent.AddComponent(/datum/component/material_container, - list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE, MAT_PLASTIC), + list(/datum/material/iron, /datum/material/glass, /datum/material/silver, /datum/material/gold, /datum/material/diamond, /datum/material/plasma, /datum/material/uranium, /datum/material/bananium, /datum/material/titanium, /datum/material/bluespace, /datum/material/plastic), local_size, FALSE, /obj/item/stack) diff --git a/code/datums/components/slippery.dm b/code/datums/components/slippery.dm index bf53414537..7e263c4f30 100644 --- a/code/datums/components/slippery.dm +++ b/code/datums/components/slippery.dm @@ -7,7 +7,7 @@ intensity = max(_intensity, 0) lube_flags = _lube_flags callback = _callback - RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED, COMSIG_ATOM_ENTERED), .proc/Slip) + RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED, COMSIG_ATOM_ENTERED, COMSIG_ITEM_WEARERCROSSED), .proc/Slip) /datum/component/slippery/proc/Slip(datum/source, atom/movable/AM) var/mob/victim = AM diff --git a/code/datums/components/squeak.dm b/code/datums/components/squeak.dm index 29b074c3a7..ad538760db 100644 --- a/code/datums/components/squeak.dm +++ b/code/datums/components/squeak.dm @@ -18,7 +18,7 @@ RegisterSignal(parent, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_BLOB_ACT, COMSIG_ATOM_HULK_ATTACK, COMSIG_PARENT_ATTACKBY), .proc/play_squeak) if(ismovableatom(parent)) RegisterSignal(parent, list(COMSIG_MOVABLE_BUMP, COMSIG_MOVABLE_IMPACT), .proc/play_squeak) - RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, .proc/play_squeak_crossed) + RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED, COMSIG_ITEM_WEARERCROSSED), .proc/play_squeak_crossed) RegisterSignal(parent, COMSIG_MOVABLE_DISPOSING, .proc/disposing_react) if(isitem(parent)) RegisterSignal(parent, list(COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ, COMSIG_ITEM_HIT_REACT), .proc/play_squeak) diff --git a/code/datums/elements/firestacker.dm b/code/datums/elements/firestacker.dm new file mode 100644 index 0000000000..39021d23bb --- /dev/null +++ b/code/datums/elements/firestacker.dm @@ -0,0 +1,40 @@ +/** + * Can be applied to /atom/movable subtypes to make them apply fire stacks to things they hit + */ +/datum/element/firestacker + element_flags = ELEMENT_BESPOKE + id_arg_index = 2 + /// How many firestacks to apply per hit + var/amount + +/datum/element/firestacker/Attach(datum/target, amount) + . = ..() + + if(!ismovableatom(target)) + return ELEMENT_INCOMPATIBLE + + src.amount = amount + + RegisterSignal(target, COMSIG_MOVABLE_IMPACT, .proc/impact, override = TRUE) + if(isitem(target)) + RegisterSignal(target, COMSIG_ITEM_ATTACK, .proc/item_attack, override = TRUE) + RegisterSignal(target, COMSIG_ITEM_ATTACK_SELF, .proc/item_attack_self, override = TRUE) + +/datum/element/firestacker/Detach(datum/source, force) + . = ..() + UnregisterSignal(source, list(COMSIG_MOVABLE_IMPACT, COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_SELF)) + +/datum/element/firestacker/proc/stack_on(datum/owner, mob/living/target) + target.adjust_fire_stacks(amount) + +/datum/element/firestacker/proc/impact(datum/source, atom/hit_atom, datum/thrownthing/throwingdatum) + if(isliving(hit_atom)) + stack_on(source, hit_atom) + +/datum/element/firestacker/proc/item_attack(datum/source, atom/movable/target, mob/living/user) + if(isliving(target)) + stack_on(source, target) + +/datum/element/firestacker/proc/item_attack_self(datum/source, mob/user) + if(isliving(user)) + stack_on(source, user) diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm index e0b0072808..0f4f02ae2a 100644 --- a/code/datums/holocall.dm +++ b/code/datums/holocall.dm @@ -216,7 +216,7 @@ desc = "Stores recorder holocalls." icon_state = "holodisk" obj_flags = UNIQUE_RENAME - materials = list(MAT_METAL = 100, MAT_GLASS = 100) + custom_materials = list(/datum/material/iron = 100, /datum/material/glass = 100) var/datum/holorecord/record //Preset variables var/preset_image_type diff --git a/code/datums/materials/_material.dm b/code/datums/materials/_material.dm new file mode 100644 index 0000000000..796ebc42c7 --- /dev/null +++ b/code/datums/materials/_material.dm @@ -0,0 +1,77 @@ +/*! Material datum +Simple datum which is instanced once per type and is used for every object of said material. It has a variety of variables that define behavior. Subtyping from this makes it easier to create your own materials. +*/ + + +/datum/material + var/name = "material" + var/desc = "its..stuff." + ///Var that's mostly used by science machines to identify specific materials, should most likely be phased out at some point + var/id = "mat" + ///Base color of the material, is used for greyscale. Item isn't changed in color if this is null. + var/color + ///Base alpha of the material, is used for greyscale icons. + var/alpha + ///Materials "Traits". its a map of key = category | Value = Bool. Used to define what it can be used for + var/list/categories = list() + ///The type of sheet this material creates. This should be replaced as soon as possible by greyscale sheets + var/sheet_type + ///This is a modifier for force, and resembles the strength of the material + var/strength_modifier = 1 + ///This is a modifier for integrity, and resembles the strength of the material + var/integrity_modifier = 1 + ///This is the amount of value per 1 unit of the material + var/value_per_unit = 0 + ///Armor modifiers, multiplies an items normal armor vars by these amounts. + var/armor_modifiers = list("melee" = 1, "bullet" = 1, "laser" = 1, "energy" = 1, "bomb" = 1, "bio" = 1, "rad" = 1, "fire" = 1, "acid" = 1) + +///This proc is called when the material is added to an object. +/datum/material/proc/on_applied(atom/source, amount, material_flags) + if(material_flags & MATERIAL_COLOR) //Prevent changing things with pre-set colors, to keep colored toolboxes their looks for example + if(color) //Do we have a custom color? + source.add_atom_colour(color, FIXED_COLOUR_PRIORITY) + if(alpha) + source.alpha = alpha + + if(material_flags & MATERIAL_ADD_PREFIX) + source.name = "[name] [source.name]" + + if(istype(source, /obj)) //objs + on_applied_obj(source, amount, material_flags) + +///This proc is called when the material is added to an object specifically. +/datum/material/proc/on_applied_obj(var/obj/o, amount, material_flags) + var/new_max_integrity = CEILING(o.max_integrity * integrity_modifier, 1) + o.modify_max_integrity(new_max_integrity) + o.force *= strength_modifier + o.throwforce *= strength_modifier + + var/list/temp_armor_list = list() //Time to add armor modifiers! + + if(!istype(o.armor)) + return + var/list/current_armor = o.armor?.getList() + + for(var/i in current_armor) + temp_armor_list[i] = current_armor[i] * armor_modifiers[i] + o.armor = getArmor(arglist(temp_armor_list)) + +///This proc is called when the material is removed from an object. +/datum/material/proc/on_removed(atom/source, material_flags) + if(material_flags & MATERIAL_COLOR) //Prevent changing things with pre-set colors, to keep colored toolboxes their looks for example + if(color) + source.remove_atom_colour(FIXED_COLOUR_PRIORITY, color) + source.alpha = initial(source.alpha) + + if(material_flags & MATERIAL_ADD_PREFIX) + source.name = initial(source.name) + + if(istype(source, /obj)) //objs + on_removed_obj(source, material_flags) + +///This proc is called when the material is removed from an object specifically. +/datum/material/proc/on_removed_obj(var/obj/o, amount, material_flags) + var/new_max_integrity = initial(o.max_integrity) + o.modify_max_integrity(new_max_integrity) + o.force = initial(o.force) + o.throwforce = initial(o.throwforce) diff --git a/code/datums/materials/basemats.dm b/code/datums/materials/basemats.dm new file mode 100644 index 0000000000..6511950c87 --- /dev/null +++ b/code/datums/materials/basemats.dm @@ -0,0 +1,210 @@ +///Has no special properties. +/datum/material/iron + name = "iron" + id = "iron" + desc = "Common iron ore often found in sedimentary and igneous layers of the crust." + color = "#878687" + categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE) + sheet_type = /obj/item/stack/sheet/metal + value_per_unit = 0.0025 + +///Breaks extremely easily but is transparent. +/datum/material/glass + name = "glass" + id = "glass" + desc = "Glass forged by melting sand." + color = "#88cdf1" + alpha = 150 + categories = list(MAT_CATEGORY_RIGID = TRUE) + integrity_modifier = 0.1 + sheet_type = /obj/item/stack/sheet/glass + value_per_unit = 0.0025 + armor_modifiers = list("melee" = 0.2, "bullet" = 0.2, "laser" = 0, "energy" = 1, "bomb" = 0, "bio" = 0.2, "rad" = 0.2, "fire" = 1, "acid" = 0.2) // yeah ok retard + +/* +Color matrices are like regular colors but unlike with normal colors, you can go over 255 on a channel. +Unless you know what you're doing, only use the first three numbers. They're in RGB order. +*/ + +///Has no special properties. Could be good against vampires in the future perhaps. +/datum/material/silver + name = "silver" + id = "silver" + desc = "Silver" + color = list(255/255, 284/255, 302/255,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0) + categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE) + sheet_type = /obj/item/stack/sheet/mineral/silver + value_per_unit = 0.025 + +///Slight force increase +/datum/material/gold + name = "gold" + id = "gold" + desc = "Gold" + color = list(340/255, 240/255, 50/255,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0) //gold is shiny, but not as bright as bananium + strength_modifier = 1.2 + categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE) + sheet_type = /obj/item/stack/sheet/mineral/gold + value_per_unit = 0.0625 + armor_modifiers = list("melee" = 1.1, "bullet" = 1.1, "laser" = 1.15, "energy" = 1.15, "bomb" = 1, "bio" = 1, "rad" = 1, "fire" = 0.7, "acid" = 1.1) + +///Has no special properties +/datum/material/diamond + name = "diamond" + id = "diamond" + desc = "Highly pressurized carbon" + color = list(48/255, 272/255, 301/255,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0) + alpha = 132 + categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE) + sheet_type = /obj/item/stack/sheet/mineral/diamond + value_per_unit = 0.25 + +///Is slightly radioactive +/datum/material/uranium + name = "uranium" + id = "uranium" + desc = "Uranium" + color = rgb(48, 237, 26) + categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE) + sheet_type = /obj/item/stack/sheet/mineral/uranium + value_per_unit = 0.05 + armor_modifiers = list("melee" = 1.5, "bullet" = 1.4, "laser" = 0.5, "energy" = 0.5, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 1, "acid" = 1) + +/datum/material/uranium/on_applied(atom/source, amount, material_flags) + . = ..() + source.AddComponent(/datum/component/radioactive, amount / 20, source, 0) //half-life of 0 because we keep on going. + +/datum/material/uranium/on_removed(atom/source, material_flags) + . = ..() + qdel(source.GetComponent(/datum/component/radioactive)) + + +///Adds firestacks on hit (Still needs support to turn into gas on destruction) +/datum/material/plasma + name = "plasma" + id = "plasma" + desc = "Isn't plasma a state of matter? Oh whatever." + color = list(298/255, 46/255, 352/255,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0) + categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE) + sheet_type = /obj/item/stack/sheet/mineral/plasma + value_per_unit = 0.1 + armor_modifiers = list("melee" = 1.4, "bullet" = 0.7, "laser" = 0, "energy" = 1.2, "bomb" = 0, "bio" = 1.2, "rad" = 1, "fire" = 0, "acid" = 0.5) + +/datum/material/plasma/on_applied(atom/source, amount, material_flags) + . = ..() + if(ismovableatom(source)) + source.AddElement(/datum/element/firestacker) + source.AddComponent(/datum/component/explodable, 0, 0, amount / 2500, amount / 1250) + +/datum/material/plasma/on_removed(atom/source, material_flags) + . = ..() + source.RemoveElement(/datum/element/firestacker) + qdel(source.GetComponent(/datum/component/explodable)) + +///Can cause bluespace effects on use. (Teleportation) (Not yet implemented) +/datum/material/bluespace + name = "bluespace crystal" + id = "bluespace_crystal" + desc = "Crystals with bluespace properties" + color = list(119/255, 217/255, 396/255,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0) + alpha = 200 + categories = list(MAT_CATEGORY_ORE = TRUE) + sheet_type = /obj/item/stack/sheet/bluespace_crystal + value_per_unit = 0.15 + +///Honks and slips +/datum/material/bananium + name = "bananium" + id = "bananium" + desc = "Material with hilarious properties" + color = list(460/255, 464/255, 0, 0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0) //obnoxiously bright yellow + categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE) + sheet_type = /obj/item/stack/sheet/mineral/bananium + value_per_unit = 0.5 + armor_modifiers = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 100, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0) //Clowns cant be blown away + +/datum/material/bananium/on_applied(atom/source, amount, material_flags) + . = ..() + source.AddComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 50) + source.AddComponent(/datum/component/slippery, min(amount / 10, 80)) + +/datum/material/bananium/on_removed(atom/source, amount, material_flags) + . = ..() + qdel(source.GetComponent(/datum/component/slippery)) + qdel(source.GetComponent(/datum/component/squeak)) + + +///Mediocre force increase +/datum/material/titanium + name = "titanium" + id = "titanium" + desc = "Titanium" + color = "#b3c0c7" + strength_modifier = 1.3 + categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE) + sheet_type = /obj/item/stack/sheet/mineral/titanium + value_per_unit = 0.0625 + armor_modifiers = list("melee" = 1.35, "bullet" = 1.3, "laser" = 1.3, "energy" = 1.25, "bomb" = 1.25, "bio" = 1, "rad" = 1, "fire" = 0.7, "acid" = 1) + +/datum/material/runite + name = "runite" + id = "runite" + desc = "Runite" + color = "#3F9995" + strength_modifier = 1.3 + categories = list(MAT_CATEGORY_RIGID = TRUE) + sheet_type = /obj/item/stack/sheet/mineral/runite + armor_modifiers = list("melee" = 1.35, "bullet" = 2, "laser" = 0.5, "energy" = 1.25, "bomb" = 1.25, "bio" = 1, "rad" = 1, "fire" = 1.4, "acid" = 1) //rune is weak against magic lasers but strong against bullets. This is the combat triangle. + +///Force decrease +/datum/material/plastic + name = "plastic" + id = "plastic" + desc = "Plastic" + color = "#caccd9" + strength_modifier = 0.85 + sheet_type = /obj/item/stack/sheet/plastic + value_per_unit = 0.0125 + armor_modifiers = list("melee" = 1.5, "bullet" = 1.1, "laser" = 0.3, "energy" = 0.5, "bomb" = 1, "bio" = 1, "rad" = 1, "fire" = 1.1, "acid" = 1) + +///Force decrease and mushy sound effect. (Not yet implemented) +/datum/material/biomass + name = "biomass" + id = "biomass" + desc = "Organic matter" + color = "#735b4d" + strength_modifier = 0.8 + value_per_unit = 0.025 + +///Stronk force increase +/datum/material/adamantine + name = "adamantine" + id = "adamantine" + desc = "A powerful material made out of magic, I mean science!" + color = "#6d7e8e" + strength_modifier = 1.5 + categories = list(MAT_CATEGORY_RIGID = TRUE) + sheet_type = /obj/item/stack/sheet/mineral/adamantine + value_per_unit = 0.25 + armor_modifiers = list("melee" = 1.5, "bullet" = 1.5, "laser" = 1.3, "energy" = 1.3, "bomb" = 1, "bio" = 1, "rad" = 1, "fire" = 2.5, "acid" = 1) + +///RPG Magic. (Admin only) +/datum/material/mythril + name = "mythril" + id = "mythril" + desc = "How this even exists is byond me" + color = "#f2d5d7" + categories = list(MAT_CATEGORY_RIGID = TRUE) + sheet_type = /obj/item/stack/sheet/mineral/mythril + value_per_unit = 0.75 + armor_modifiers = list("melee" = 2, "bullet" = 2, "laser" = 2, "energy" = 2, "bomb" = 2, "bio" = 2, "rad" = 2, "fire" = 2, "acid" = 2) + +/datum/material/mythril/on_applied_obj(atom/source, amount, material_flags) + . = ..() + if(istype(source, /obj/item)) + source.AddComponent(/datum/component/fantasy) + +/datum/material/mythril/on_removed_obj(atom/source, material_flags) + . = ..() + if(istype(source, /obj/item)) + qdel(source.GetComponent(/datum/component/fantasy)) diff --git a/code/datums/ruins/lavaland.dm b/code/datums/ruins/lavaland.dm index 7ea2d2615d..52bf4fe229 100644 --- a/code/datums/ruins/lavaland.dm +++ b/code/datums/ruins/lavaland.dm @@ -224,6 +224,13 @@ allow_duplicates = FALSE cost = 5 +/datum/map_template/ruin/lavaland/dark_wizards + name = "Dark Wizard Altar" + id = "dark_wizards" + description = "A ruin with dark wizards. What secret do they guard?" + suffix = "lavaland_surface_wizard.dmm" + cost = 5 + /datum/map_template/ruin/lavaland/puzzle name = "Ancient Puzzle" id = "puzzle" diff --git a/code/datums/ruins/space.dm b/code/datums/ruins/space.dm index 34a676603e..da5398713e 100644 --- a/code/datums/ruins/space.dm +++ b/code/datums/ruins/space.dm @@ -311,6 +311,12 @@ name = "Space Hermit" description = "A late awakening cryo pod in a crashed escape pod wakes up to find what befell of his fellow survivors. Contains all the necessary resources to actually make it out alive. Good luck." +/datum/map_template/ruin/space/clericden + id = "clericden" + suffix = "clericden.dmm" + name = "Cleric's Den" + description = "Once part of a larger monastery, this holy order of long dead clerics practiced far less non-violence than they preached. Appears to have been untouched by looters, however. Odd." + /datum/map_template/ruin/space/advancedlab id = "advancedlab" suffix = "advancedlab.dmm" diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index b2177a860a..9c2128163f 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -55,6 +55,8 @@ GLOBAL_LIST_EMPTY(family_heirlooms) heirloom_type = pick(/obj/item/cultivator, /obj/item/reagent_containers/glass/bucket, /obj/item/storage/bag/plants, /obj/item/toy/plush/beeplushie) if("Medical Doctor") heirloom_type = /obj/item/healthanalyzer/advanced + if("Paramedic") + heirloom_type = pick(/obj/item/clothing/neck/stethoscope, /obj/item/bodybag) if("Station Engineer") heirloom_type = /obj/item/wirecutters/brass if("Atmospheric Technician") diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 83117bad64..4adfdf72d2 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -38,6 +38,13 @@ var/rad_flags = NONE // Will move to flags_1 when i can be arsed to var/rad_insulation = RAD_NO_INSULATION + ///The custom materials this atom is made of, used by a lot of things like furniture, walls, and floors (if I finish the functionality, that is.) + var/list/custom_materials + ///Bitfield for how the atom handles materials. + var/material_flags = NONE + ///Modifier that raises/lowers the effect of the amount of a material, prevents small and easy to get items from being death machines. + var/material_modifier = 1 + var/icon/blood_splatter_icon var/list/fingerprints var/list/fingerprintshidden @@ -89,6 +96,12 @@ if (canSmoothWith) canSmoothWith = typelist("canSmoothWith", canSmoothWith) + var/temp_list = list() + for(var/i in custom_materials) + temp_list[getmaterialref(i)] = custom_materials[i] //Get the proper instanced version + custom_materials = null //Null the list to prepare for applying the materials properly + set_custom_materials(temp_list) + ComponentInitialize() return INITIALIZE_HINT_NORMAL @@ -290,6 +303,11 @@ if(desc) . += desc + if(custom_materials) + for(var/i in custom_materials) + var/datum/material/M = i + . += "It is made out of [M.name]." + if(reagents) if(reagents.reagents_holder_flags & TRANSPARENT) . += "It contains:" @@ -872,3 +890,26 @@ Proc for attack log creation, because really why not /atom/proc/intercept_zImpact(atom/movable/AM, levels = 1) . |= SEND_SIGNAL(src, COMSIG_ATOM_INTERCEPT_Z_FALL, AM, levels) + +///Sets the custom materials for an item. +/atom/proc/set_custom_materials(var/list/materials, multiplier = 1) + + if(!materials) + materials = custom_materials + + if(custom_materials) //Only runs if custom materials existed at first. Should usually be the case but check anyways + for(var/i in custom_materials) + var/datum/material/custom_material = getmaterialref(i) + custom_material.on_removed(src, material_flags) //Remove the current materials + + if(!length(materials)) + return + + custom_materials = list() //Reset the list + + for(var/x in materials) + var/datum/material/custom_material = getmaterialref(x) + + if(!(material_flags & MATERIAL_NO_EFFECTS)) + custom_material.on_applied(src, materials[custom_material] * multiplier * material_modifier, material_flags) + custom_materials[custom_material] += materials[x] * multiplier diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index 674afad88e..0a231a5ff1 100644 --- a/code/game/gamemodes/clown_ops/clown_weapons.dm +++ b/code/game/gamemodes/clown_ops/clown_weapons.dm @@ -40,14 +40,14 @@ /obj/item/clothing/shoes/clown_shoes/banana_shoes/combat/Initialize() . = ..() var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) - bananium.insert_amount(max_recharge, MAT_BANANIUM) + bananium.insert_amount_mat(max_recharge, /datum/material/bananium) START_PROCESSING(SSobj, src) /obj/item/clothing/shoes/clown_shoes/banana_shoes/combat/process() var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) - var/bananium_amount = bananium.amount(MAT_BANANIUM) + var/bananium_amount = bananium.get_material_amount(/datum/material/bananium) if(bananium_amount < max_recharge) - bananium.insert_amount(min(recharge_rate, max_recharge - bananium_amount), MAT_BANANIUM) + bananium.insert_amount_mat(min(recharge_rate, max_recharge - bananium_amount), /datum/material/bananium) /obj/item/clothing/shoes/clown_shoes/banana_shoes/combat/attack_self(mob/user) ui_action_click(user) diff --git a/code/game/gamemodes/gangs/dominator.dm b/code/game/gamemodes/gangs/dominator.dm index db060a6539..858c10c46c 100644 --- a/code/game/gamemodes/gangs/dominator.dm +++ b/code/game/gamemodes/gangs/dominator.dm @@ -13,7 +13,7 @@ anchored = TRUE layer = HIGH_OBJ_LAYER max_integrity = 300 - integrity_failure = 100 + integrity_failure = 0.33 armor = list("melee" = 20, "bullet" = 50, "laser" = 50, "energy" = 50, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 10, "acid" = 70) var/datum/team/gang/gang var/operating = FALSE //false=standby or broken, true=takeover diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm index 5a597f7280..84e5910731 100644 --- a/code/game/machinery/announcement_system.dm +++ b/code/game/machinery/announcement_system.dm @@ -29,7 +29,7 @@ GLOBAL_LIST_EMPTY(announcement_systems) /obj/machinery/announcement_system/Initialize() . = ..() GLOB.announcement_systems += src - radio = new /obj/item/radio/headset/ai(src) + radio = new /obj/item/radio/headset/silicon/ai(src) update_icon() /obj/machinery/announcement_system/update_icon() diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index c9d26905f5..872b9e1d85 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -47,7 +47,23 @@ ) /obj/machinery/autolathe/Initialize() - AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS), 0, TRUE, null, null, CALLBACK(src, .proc/AfterMaterialInsert)) + AddComponent(/datum/component/material_container, + list(/datum/material/iron, + /datum/material/glass, + /datum/material/gold, + /datum/material/silver, + /datum/material/diamond, + /datum/material/uranium, + /datum/material/plasma, + /datum/material/bluespace, + /datum/material/bananium, + /datum/material/titanium, + /datum/material/runite, + /datum/material/plastic, + /datum/material/adamantine, + /datum/material/mythril + ), + 0, TRUE, null, null, CALLBACK(src, .proc/AfterMaterialInsert)) . = ..() wires = new /datum/wires/autolathe(src) @@ -121,15 +137,14 @@ return ..() -/obj/machinery/autolathe/proc/AfterMaterialInsert(type_inserted, id_inserted, amount_inserted) - if(ispath(type_inserted, /obj/item/stack/ore/bluespace_crystal)) +/obj/machinery/autolathe/proc/AfterMaterialInsert(obj/item/item_inserted, id_inserted, amount_inserted) + if(istype(item_inserted, /obj/item/stack/ore/bluespace_crystal)) use_power(MINERAL_MATERIAL_AMOUNT / 10) + else if(item_inserted.custom_materials?.len && item_inserted.custom_materials[getmaterialref(/datum/material/glass)]) + flick("autolathe_r",src)//plays glass insertion animation by default otherwise else - switch(id_inserted) - if (MAT_METAL) - flick("autolathe_o",src)//plays metal insertion animation - if (MAT_GLASS) - flick("autolathe_r",src)//plays glass insertion animation + flick("autolathe_o",src)//plays metal insertion animation + use_power(min(1000, amount_inserted / 100)) updateUsrDialog() @@ -160,18 +175,42 @@ ///////////////// var/coeff = (is_stack ? 1 : prod_coeff) //stacks are unaffected by production coefficient - var/metal_cost = being_built.materials[MAT_METAL] - var/glass_cost = being_built.materials[MAT_GLASS] + var/total_amount = 0 - var/power = max(2000, (metal_cost+glass_cost)*multiplier/5) + for(var/MAT in being_built.materials) + total_amount += being_built.materials[MAT] + + var/power = max(2000, (total_amount)*multiplier/5) //Change this to use all materials var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - if((materials.amount(MAT_METAL) >= metal_cost*multiplier*coeff) && (materials.amount(MAT_GLASS) >= glass_cost*multiplier*coeff)) + + var/list/materials_used = list() + var/list/custom_materials = list() //These will apply their material effect, This should usually only be one. + + for(var/MAT in being_built.materials) + var/datum/material/used_material = MAT + var/amount_needed = being_built.materials[MAT] * coeff * multiplier + if(istext(used_material)) //This means its a category + var/list/list_to_show = list() + for(var/i in SSmaterials.materials_by_category[used_material]) + if(materials.materials[i] > 0) + list_to_show += i + + used_material = input("Choose [used_material]", "Custom Material") as null|anything in list_to_show + if(!used_material) + return //Didn't pick any material, so you can't build shit either. + custom_materials[used_material] += amount_needed + + materials_used[used_material] = amount_needed + + if(materials.has_materials(materials_used)) busy = TRUE use_power(power) icon_state = "autolathe_n" var/time = is_stack ? 32 : 32*coeff*multiplier - addtimer(CALLBACK(src, .proc/make_item, power, metal_cost, glass_cost, multiplier, coeff, is_stack), time) + addtimer(CALLBACK(src, .proc/make_item, power, materials_used, custom_materials, multiplier, coeff, is_stack), time) + else + to_chat(usr, "Not enough materials for this operation.") if(href_list["search"]) matching_designs.Cut() @@ -188,12 +227,11 @@ return -/obj/machinery/autolathe/proc/make_item(power, metal_cost, glass_cost, multiplier, coeff, is_stack) +/obj/machinery/autolathe/proc/make_item(power, var/list/materials_used, var/list/picked_materials, multiplier, coeff, is_stack) var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/atom/A = drop_location() use_power(power) - var/list/materials_used = list(MAT_METAL=metal_cost*coeff*multiplier, MAT_GLASS=glass_cost*coeff*multiplier) - materials.use_amount(materials_used) + materials.use_materials(materials_used) if(is_stack) var/obj/item/stack/N = new being_built.build_path(A, multiplier) @@ -202,10 +240,11 @@ else for(var/i=1, i<=multiplier, i++) var/obj/item/new_item = new being_built.build_path(A) - new_item.materials = new_item.materials.Copy() - for(var/mat in materials_used) - new_item.materials[mat] = materials_used[mat] / multiplier new_item.autolathe_crafted(src) + + if(length(picked_materials)) + new_item.set_custom_materials(picked_materials, 1 / multiplier) //Ensure we get the non multiplied amount + icon_state = "autolathe" busy = FALSE updateDialog() @@ -270,7 +309,9 @@ if(ispath(D.build_path, /obj/item/stack)) var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS]?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY) + var/max_multiplier + for(var/datum/material/mat in D.materials) + max_multiplier = min(D.maxstack, round(materials.get_material_amount(mat)/D.materials[mat])) if (max_multiplier>10 && !disabled) dat += " x10" if (max_multiplier>25 && !disabled) @@ -302,7 +343,9 @@ if(ispath(D.build_path, /obj/item/stack)) var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS]?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY) + var/max_multiplier + for(var/datum/material/mat in D.materials) + max_multiplier = min(D.maxstack, round(materials.get_material_amount(mat)/D.materials[mat])) if (max_multiplier>10 && !disabled) dat += " x10" if (max_multiplier>25 && !disabled) @@ -319,8 +362,10 @@ var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/dat = "Total amount: [materials.total_amount] / [materials.max_amount] cm3
" for(var/mat_id in materials.materials) - var/datum/material/M = materials.materials[mat_id] - dat += "[M.name] amount: [M.amount] cm3
" + var/datum/material/M = mat_id + var/mineral_amount = materials.materials[mat_id] + if(mineral_amount > 0) + dat += "[M.name] amount: [mineral_amount] cm3
" return dat /obj/machinery/autolathe/proc/can_build(datum/design/D, amount = 1) @@ -329,20 +374,24 @@ var/coeff = (ispath(D.build_path, /obj/item/stack) ? 1 : prod_coeff) + var/list/required_materials = list() + + for(var/i in D.materials) + required_materials[i] = D.materials[i] * coeff * amount + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - if(D.materials[MAT_METAL] && (materials.amount(MAT_METAL) < (D.materials[MAT_METAL] * coeff * amount))) - return FALSE - if(D.materials[MAT_GLASS] && (materials.amount(MAT_GLASS) < (D.materials[MAT_GLASS] * coeff * amount))) - return FALSE - return TRUE + + return materials.has_materials(required_materials) /obj/machinery/autolathe/proc/get_design_cost(datum/design/D) var/coeff = (ispath(D.build_path, /obj/item/stack) ? 1 : prod_coeff) var/dat - if(D.materials[MAT_METAL]) - dat += "[D.materials[MAT_METAL] * coeff] metal " - if(D.materials[MAT_GLASS]) - dat += "[D.materials[MAT_GLASS] * coeff] glass" + for(var/i in D.materials) + if(istext(i)) //Category handling + dat += "[D.materials[i] * coeff] [i]" + else + var/datum/material/M = i + dat += "[D.materials[i] * coeff] [M.name] " return dat /obj/machinery/autolathe/proc/reset(wire) diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index 3a9b560bd6..ad3dd5d720 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -265,4 +265,4 @@ desc = "Used for building buttons." icon_state = "button" result_path = /obj/machinery/button - materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/iron = MINERAL_MATERIAL_AMOUNT) diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 22c1ff811c..760d48b57b 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -17,7 +17,7 @@ armor = list("melee" = 50, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 50) max_integrity = 100 - integrity_failure = 50 + integrity_failure = 0.5 var/list/network = list("ss13") var/c_tag = null var/status = TRUE diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm index 66e302bab6..1766391709 100644 --- a/code/game/machinery/camera/camera_assembly.dm +++ b/code/game/machinery/camera/camera_assembly.dm @@ -3,7 +3,7 @@ desc = "The basic construction for Nanotrasen-Always-Watching-You cameras." icon = 'icons/obj/machines/camera.dmi' icon_state = "cameracase" - materials = list(MAT_METAL=400, MAT_GLASS=250) + custom_materials = list(/datum/material/iron=400, /datum/material/glass=250) result_path = /obj/structure/camera_assembly diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm index 2eea845c70..c748270793 100644 --- a/code/game/machinery/computer/_computer.dm +++ b/code/game/machinery/computer/_computer.dm @@ -7,7 +7,7 @@ idle_power_usage = 300 active_power_usage = 300 max_integrity = 200 - integrity_failure = 100 + integrity_failure = 0.5 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 40, "acid" = 20) var/brightness_on = 1 var/icon_keyboard = "generic_key" diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm index f6d0fcfc0d..01a1d043a2 100644 --- a/code/game/machinery/computer/crew.dm +++ b/code/game/machinery/computer/crew.dm @@ -40,6 +40,7 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new) jobs["Geneticist"] = 22 jobs["Virologist"] = 23 jobs["Medical Doctor"] = 24 + jobs["Paramedic"] = 25 jobs["Research Director"] = 30 jobs["Scientist"] = 31 jobs["Roboticist"] = 32 @@ -207,4 +208,4 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new) if ("select_person") AI.ai_camera_track(params["name"]) -#undef SENSORS_UPDATE_PERIOD \ No newline at end of file +#undef SENSORS_UPDATE_PERIOD diff --git a/code/game/machinery/defibrillator_mount.dm b/code/game/machinery/defibrillator_mount.dm index a1931e133a..5c13bfdf5d 100644 --- a/code/game/machinery/defibrillator_mount.dm +++ b/code/game/machinery/defibrillator_mount.dm @@ -145,7 +145,7 @@ desc = "A frame for a defibrillator mount. It can't be removed once it's placed." icon = 'icons/obj/machines/defib_mount.dmi' icon_state = "defibrillator_mount" - materials = list(MAT_METAL = 300, MAT_GLASS = 100) + custom_materials = list(/datum/material/iron = 300, /datum/material/glass = 100) w_class = WEIGHT_CLASS_BULKY result_path = /obj/machinery/defibrillator_mount pixel_shift = -28 diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 7614630477..686b62d1c3 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -15,7 +15,7 @@ density = TRUE max_integrity = 100 var/proj_pass_rate = 50 //How many projectiles will pass the cover. Lower means stronger cover - var/material = METAL + var/bar_material = METAL /obj/structure/barricade/deconstruct(disassembled = TRUE) if(!(flags_1 & NODECONSTRUCT_1)) @@ -26,7 +26,7 @@ return /obj/structure/barricade/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/weldingtool) && user.a_intent != INTENT_HARM && material == METAL) + if(istype(I, /obj/item/weldingtool) && user.a_intent != INTENT_HARM && bar_material == METAL) if(obj_integrity < max_integrity) if(!I.tool_start_check(user, amount=0)) return @@ -61,7 +61,7 @@ desc = "This space is blocked off by a wooden barricade." icon = 'icons/obj/structures.dmi' icon_state = "woodenbarricade" - material = WOOD + bar_material = WOOD var/drop_amount = 3 /obj/structure/barricade/wooden/attackby(obj/item/I, mob/user) @@ -106,7 +106,7 @@ max_integrity = 280 proj_pass_rate = 20 pass_flags = LETPASSTHROW - material = SAND + bar_material = SAND climbable = TRUE smooth = SMOOTH_TRUE canSmoothWith = list(/obj/structure/barricade/sandbags, /turf/closed/wall, /turf/closed/wall/r_wall, /obj/structure/falsewall, /obj/structure/falsewall/reinforced, /turf/closed/wall/rust, /turf/closed/wall/r_wall/rust, /obj/structure/barricade/security) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 863f1e7b46..d626c76aca 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -47,7 +47,7 @@ icon_state = "closed" max_integrity = 300 var/normal_integrity = AIRLOCK_INTEGRITY_N - integrity_failure = 70 + integrity_failure = 0.25 damage_deflection = AIRLOCK_DAMAGE_DEFLECTION_N autoclose = TRUE secondsElectrified = 0 //How many seconds remain until the door is no longer electrified. -1 if it is permanently electrified until someone fixes it. @@ -469,7 +469,7 @@ panel_overlay = get_airlock_overlay("panel_closed", overlays_file) if(welded) weld_overlay = get_airlock_overlay("welded", overlays_file) - if(obj_integrity &" = 2, "@" = 2, "$" = 2, "?" = 2, "#" = 2, "!" = 2, "%" = 2) //if people are winning too much, multiply every number in this list by 2 and see if they are still winning too much. @@ -45,10 +44,6 @@ toggle_reel_spin(0) - for(var/cointype in typesof(/obj/item/coin)) - var/obj/item/coin/C = cointype - coinvalues["[cointype]"] = initial(C.value) - /obj/machinery/computer/slot_machine/Destroy() if(balance) give_coins(balance) @@ -92,7 +87,7 @@ else if(!user.temporarilyRemoveItemFromInventory(C)) return - to_chat(user, "You insert a [C.cmineral] coin into [src]'s slot!") + to_chat(user, "You insert [C] into [src]'s slot!") balance += C.value qdel(C) else @@ -294,19 +289,22 @@ return amount -/obj/machinery/computer/slot_machine/proc/dispense(amount = 0, cointype = /obj/item/coin/silver, mob/living/target, throwit = 0) - var/value = coinvalues["[cointype]"] +/obj/machinery/computer/slot_machine/proc/dispense(amount = 0, cointype = /obj/item/coin/silver, mob/living/target, throwit = FALSE) + var/value = GLOB.coin_values[cointype] || GLOB.coin_values[/obj/item/coin/iron] + INVOKE_ASYNC(src, .proc/become_rich, amount, value, cointype, target, throwit) + return amount % value - - while(amount >= value) +/obj/machinery/computer/slot_machine/proc/become_rich(amount, value, cointype = /obj/item/coin/silver, mob/living/target, throwit = FALSE) + if(value <= 0) + return + while(amount >= value && !QDELETED(src)) var/obj/item/coin/C = new cointype(loc) //DOUBLE THE PAIN amount -= value if(throwit && target) C.throw_at(target, 3, 10) else random_step(C, 2, 40) - - return amount + CHECK_TICK #undef SEVEN #undef SPIN_TIME diff --git a/code/game/machinery/toylathe.dm b/code/game/machinery/toylathe.dm index ecd2132a9d..a286bcdc25 100644 --- a/code/game/machinery/toylathe.dm +++ b/code/game/machinery/toylathe.dm @@ -46,7 +46,7 @@ ) /obj/machinery/autoylathe/Initialize() - AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_PLASTIC), 0, TRUE, null, null, CALLBACK(src, .proc/AfterMaterialInsert)) + AddComponent(/datum/component/material_container, list(/datum/material/iron, /datum/material/glass, /datum/material/plastic), 0, TRUE, null, null, CALLBACK(src, .proc/AfterMaterialInsert)) . = ..() wires = new /datum/wires/autoylathe(src) @@ -120,18 +120,13 @@ return ..() -/obj/machinery/autoylathe/proc/AfterMaterialInsert(type_inserted, id_inserted, amount_inserted) - if(ispath(type_inserted, /obj/item/stack/ore/bluespace_crystal)) - use_power(amount_inserted / 10) +/obj/machinery/autoylathe/proc/AfterMaterialInsert(obj/item/item_inserted, id_inserted, amount_inserted) + if(item_inserted.custom_materials?.len && item_inserted.custom_materials[getmaterialref(/datum/material/glass)]) + flick("autolathe_r",src)//plays glass insertion animation by default otherwise else - switch(id_inserted) - if (MAT_METAL) - flick("autolathe_o",src)//plays metal insertion animation - if (MAT_GLASS) - flick("autolathe_r",src)//plays glass insertion animation - if (MAT_PLASTIC) - flick("autolathe_o",src)//plays metal insertion animation - use_power(amount_inserted / 10) + flick("autolathe_o",src)//plays metal insertion animation + + use_power(min(1000, amount_inserted / 100)) updateUsrDialog() /obj/machinery/autoylathe/Topic(href, href_list) @@ -161,18 +156,40 @@ ///////////////// var/coeff = (is_stack ? 1 : prod_coeff) //stacks are unaffected by production coefficient - var/metal_cost = being_built.materials[MAT_METAL] - var/glass_cost = being_built.materials[MAT_GLASS] - var/plastic_cost = being_built.materials[MAT_PLASTIC] - var/power = max(2000, (metal_cost+glass_cost+plastic_cost)*multiplier/5) + var/total_amount = 0 + for(var/MAT in being_built.materials) + total_amount += being_built.materials[MAT] + var/power = max(2000, (total_amount)*multiplier/5) //Change this to use all materials var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - if((materials.amount(MAT_METAL) >= metal_cost*multiplier*coeff) && (materials.amount(MAT_GLASS) >= glass_cost*multiplier*coeff) && (materials.amount(MAT_PLASTIC) >= plastic_cost*multiplier*coeff)) + + var/list/materials_used = list() + var/list/custom_materials = list() //These will apply their material effect, This should usually only be one. + + for(var/MAT in being_built.materials) + var/datum/material/used_material = MAT + var/amount_needed = being_built.materials[MAT] * coeff * multiplier + if(istext(used_material)) //This means its a category + var/list/list_to_show = list() + for(var/i in SSmaterials.materials_by_category[used_material]) + if(materials.materials[i] > 0) + list_to_show += i + + used_material = input("Choose [used_material]", "Custom Material") as null|anything in list_to_show + if(!used_material) + return //Didn't pick any material, so you can't build shit either. + custom_materials[used_material] += amount_needed + + materials_used[used_material] = amount_needed + + if(materials.has_materials(materials_used)) busy = TRUE use_power(power) icon_state = "autolathe_n" var/time = is_stack ? 32 : 32*coeff*multiplier - addtimer(CALLBACK(src, .proc/make_item, power, metal_cost, glass_cost, plastic_cost, multiplier, coeff, is_stack), time) + addtimer(CALLBACK(src, .proc/make_item, power, materials_used, custom_materials, multiplier, coeff, is_stack), time) + else + to_chat(usr, "Not enough materials for this operation.") if(href_list["search"]) matching_designs.Cut() @@ -189,12 +206,11 @@ return -/obj/machinery/autoylathe/proc/make_item(power, metal_cost, glass_cost, plastic_cost, multiplier, coeff, is_stack) +/obj/machinery/autoylathe/proc/make_item(power, list/materials_used, list/picked_materials, multiplier, coeff, is_stack) var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/atom/A = drop_location() use_power(power) - var/list/materials_used = list(MAT_METAL=metal_cost*coeff*multiplier, MAT_GLASS=glass_cost*coeff*multiplier, MAT_PLASTIC=plastic_cost*coeff*multiplier) - materials.use_amount(materials_used) + materials.use_materials(materials_used) if(is_stack) var/obj/item/stack/N = new being_built.build_path(A, multiplier) @@ -203,10 +219,9 @@ else for(var/i=1, i<=multiplier, i++) var/obj/item/new_item = new being_built.build_path(A) - new_item.materials = new_item.materials.Copy() - for(var/mat in materials_used) - new_item.materials[mat] = materials_used[mat] / multiplier new_item.autoylathe_crafted(src) + if(length(picked_materials)) + new_item.set_custom_materials(picked_materials, 1 / multiplier) //Ensure we get the non multiplied amount icon_state = "autolathe" busy = FALSE updateDialog() @@ -265,7 +280,9 @@ if(ispath(D.build_path, /obj/item/stack)) var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS] ?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY,D.materials[MAT_PLASTIC] ?round(materials.amount(MAT_PLASTIC)/D.materials[MAT_PLASTIC]):INFINITY) + var/max_multiplier + for(var/datum/material/mat in D.materials) + max_multiplier = min(D.maxstack, round(materials.get_material_amount(mat)/D.materials[mat])) if (max_multiplier>10 && !disabled) dat += " x10" if (max_multiplier>25 && !disabled) @@ -297,7 +314,9 @@ if(ispath(D.build_path, /obj/item/stack)) var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS] ?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY,D.materials[MAT_PLASTIC] ?round(materials.amount(MAT_PLASTIC)/D.materials[MAT_PLASTIC]):INFINITY) + var/max_multiplier + for(var/datum/material/mat in D.materials) + max_multiplier = min(D.maxstack, round(materials.get_material_amount(mat)/D.materials[mat])) if (max_multiplier>10 && !disabled) dat += " x10" if (max_multiplier>25 && !disabled) @@ -314,8 +333,10 @@ var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/dat = "Total amount: [materials.total_amount] / [materials.max_amount] cm3
" for(var/mat_id in materials.materials) - var/datum/material/M = materials.materials[mat_id] - dat += "[M.name] amount: [M.amount] cm3
" + var/datum/material/M = mat_id + var/mineral_amount = materials.materials[mat_id] + if(mineral_amount > 0) + dat += "[M.name] amount: [mineral_amount] cm3
" return dat /obj/machinery/autoylathe/proc/can_build(datum/design/D, amount = 1) @@ -324,24 +345,24 @@ var/coeff = (ispath(D.build_path, /obj/item/stack) ? 1 : prod_coeff) + var/list/required_materials = list() + + for(var/i in D.materials) + required_materials[i] = D.materials[i] * coeff * amount + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - if(D.materials[MAT_METAL] && (materials.amount(MAT_METAL) < (D.materials[MAT_METAL] * coeff * amount))) - return FALSE - if(D.materials[MAT_GLASS] && (materials.amount(MAT_GLASS) < (D.materials[MAT_GLASS] * coeff * amount))) - return FALSE - if(D.materials[MAT_PLASTIC] && (materials.amount(MAT_PLASTIC) < (D.materials[MAT_PLASTIC] * coeff * amount))) - return FALSE - return TRUE + + return materials.has_materials(required_materials) /obj/machinery/autoylathe/proc/get_design_cost(datum/design/D) var/coeff = (ispath(D.build_path, /obj/item/stack) ? 1 : prod_coeff) var/dat - if(D.materials[MAT_METAL]) - dat += "[D.materials[MAT_METAL] * coeff] metal " - if(D.materials[MAT_GLASS]) - dat += "[D.materials[MAT_GLASS] * coeff] glass " - if(D.materials[MAT_PLASTIC]) - dat += "[D.materials[MAT_PLASTIC] * coeff] plastic" + for(var/i in D.materials) + if(istext(i)) //Category handling + dat += "[D.materials[i] * coeff] [i]" + else + var/datum/material/M = i + dat += "[D.materials[i] * coeff] [M.name] " return dat /obj/machinery/autoylathe/proc/reset(wire) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 1595c4bb07..5f6b709d1a 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -527,7 +527,8 @@ range = MELEE|RANGED equip_cooldown = 0 var/obj/item/gun/medbeam/mech/medigun - materials = list(MAT_METAL = 15000, MAT_GLASS = 8000, MAT_PLASMA = 3000, MAT_GOLD = 8000, MAT_DIAMOND = 2000) + custom_materials = list(/datum/material/iron = 15000, /datum/material/glass = 8000, /datum/material/plasma = 3000, /datum/material/gold = 8000, /datum/material/diamond = 2000) + material_flags = MATERIAL_NO_EFFECTS /obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam/Initialize() . = ..() diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index 70f4af8f7f..38ef518f49 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -388,7 +388,7 @@ /obj/item/mecha_parts/mecha_equipment/generator/get_equip_info() var/output = ..() if(output) - return "[output] \[[fuel]: [round(fuel.amount*fuel.perunit,0.1)] cm3\] - [equip_ready?"A":"Dea"]ctivate" + return "[output] \[[fuel]: [round(fuel.amount*fuel.mats_per_stack,0.1)] cm3\] - [equip_ready?"A":"Dea"]ctivate" /obj/item/mecha_parts/mecha_equipment/generator/action(target) if(chassis) @@ -398,9 +398,9 @@ /obj/item/mecha_parts/mecha_equipment/generator/proc/load_fuel(var/obj/item/stack/sheet/P) if(P.type == fuel.type && P.amount > 0) - var/to_load = max(max_fuel - fuel.amount*fuel.perunit,0) + var/to_load = max(max_fuel - fuel.amount*fuel.mats_per_stack,0) if(to_load) - var/units = min(max(round(to_load / P.perunit),1),P.amount) + var/units = min(max(round(to_load / P.mats_per_stack),1),P.amount) fuel.amount += units P.use(units) occupant_message("[units] unit\s of [fuel] successfully loaded.") @@ -454,7 +454,7 @@ if(cur_charge < chassis.cell.maxcharge) use_fuel = fuel_per_cycle_active chassis.give_power(power_per_cycle) - fuel.amount -= min(use_fuel/fuel.perunit,fuel.amount) + fuel.amount -= min(use_fuel/fuel.mats_per_stack,fuel.amount) update_equip_info() return 1 diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 442e4f5464..f9b8f31bca 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -36,7 +36,7 @@ /obj/machinery/mecha_part_fabricator/Initialize() var/datum/component/material_container/materials = AddComponent(/datum/component/material_container, - list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE), 0, + list(/datum/material/iron, /datum/material/glass, /datum/material/silver, /datum/material/gold, /datum/material/diamond, /datum/material/plasma, /datum/material/uranium, /datum/material/bananium, /datum/material/titanium, /datum/material/bluespace), 0, TRUE, /obj/item/stack, CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert)) materials.precise_insertion = TRUE stored_research = new @@ -109,7 +109,8 @@ var/i = 0 var/output for(var/c in D.materials) - output += "[i?" | ":null][get_resource_cost_w_coeff(D, c)] [material2name(c)]" + var/datum/material/M = c + output += "[i?" | ":null][get_resource_cost_w_coeff(D, M)] [M.name]" i++ return output @@ -117,20 +118,22 @@ var/output var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) for(var/mat_id in materials.materials) - var/datum/material/M = materials.materials[mat_id] - output += "[M.name]: [M.amount] cm³" - if(M.amount >= MINERAL_MATERIAL_AMOUNT) - output += "- Remove \[1\]" - if(M.amount >= (MINERAL_MATERIAL_AMOUNT * 10)) - output += " | \[10\]" - output += " | \[All\]" + var/datum/material/M = mat_id + var/amount = materials.materials[mat_id] + output += "[M.name]: [amount] cm³" + if(amount >= MINERAL_MATERIAL_AMOUNT) + output += "- Remove \[1\]" + if(amount >= (MINERAL_MATERIAL_AMOUNT * 10)) + output += " | \[10\]" + output += " | \[All\]" output += "
" return output /obj/machinery/mecha_part_fabricator/proc/get_resources_w_coeff(datum/design/D) var/list/resources = list() for(var/R in D.materials) - resources[R] = get_resource_cost_w_coeff(D, R) + var/datum/material/M = R + resources[M] = get_resource_cost_w_coeff(D, M) return resources /obj/machinery/mecha_part_fabricator/proc/check_resources(datum/design/D) @@ -147,7 +150,7 @@ var/list/res_coef = get_resources_w_coeff(D) var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - materials.use_amount(res_coef) + materials.use_materials(res_coef) add_overlay("fab-active") use_power = ACTIVE_POWER_USE updateUsrDialog() @@ -158,7 +161,8 @@ var/location = get_step(src,(dir)) var/obj/item/I = new D.build_path(location) - I.materials = res_coef + I.material_flags |= MATERIAL_NO_EFFECTS //Find a better way to do this. + I.set_custom_materials(res_coef) say("\The [I] is complete.") being_built = null @@ -251,7 +255,7 @@ updateUsrDialog() return -/obj/machinery/mecha_part_fabricator/proc/get_resource_cost_w_coeff(datum/design/D, resource, roundto = 1) +/obj/machinery/mecha_part_fabricator/proc/get_resource_cost_w_coeff(datum/design/D, var/datum/material/resource, roundto = 1) return round(D.materials[resource]*component_coeff, roundto) /obj/machinery/mecha_part_fabricator/proc/get_construction_time_w_coeff(datum/design/D, roundto = 1) //aran @@ -390,7 +394,8 @@ if(href_list["remove_mat"] && href_list["material"]) var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - materials.retrieve_sheets(text2num(href_list["remove_mat"]), href_list["material"]) + var/datum/material/Mat = locate(href_list["material"]) + materials.retrieve_sheets(text2num(href_list["remove_mat"]), Mat) updateUsrDialog() return @@ -400,10 +405,10 @@ materials.retrieve_all() ..() -/obj/machinery/mecha_part_fabricator/proc/AfterMaterialInsert(type_inserted, id_inserted, amount_inserted) - var/stack_name = material2name(id_inserted) - add_overlay("fab-load-[stack_name]") - addtimer(CALLBACK(src, /atom/proc/cut_overlay, "fab-load-[stack_name]"), 10) +/obj/machinery/mecha_part_fabricator/proc/AfterMaterialInsert(item_inserted, id_inserted, amount_inserted) + var/datum/material/M = id_inserted + add_overlay("fab-load-[M.name]") + addtimer(CALLBACK(src, /atom/proc/cut_overlay, "fab-load-[M.name]"), 10) updateUsrDialog() /obj/machinery/mecha_part_fabricator/attackby(obj/item/W, mob/user, params) @@ -415,9 +420,6 @@ return ..() -/obj/machinery/mecha_part_fabricator/proc/material2name(ID) - return copytext_char(ID,2) - /obj/machinery/mecha_part_fabricator/proc/is_insertion_ready(mob/user) if(panel_open) to_chat(user, "You can't load [src] while it's opened!") diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 7a45bdcf0c..4ed6dc9dc9 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -151,6 +151,10 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark) name = "Medical Doctor" icon_state = "Medical Doctor" +/obj/effect/landmark/start/paramedic + name = "Paramedic" + icon_state = "Paramedic" + /obj/effect/landmark/start/scientist name = "Scientist" icon_state = "Scientist" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index cdd0cf3966..8dfb36ce8a 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -68,7 +68,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/equip_delay_other = 20 //In deciseconds, how long an item takes to put on another person var/strip_delay = 40 //In deciseconds, how long an item takes to remove from another person var/breakouttime = 0 - var/list/materials var/reskinned = FALSE var/list/attack_verb //Used in attackby() to say how something was attacked "[x] has been [z.attack_verb] by [y] with [z]" @@ -112,8 +111,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) /obj/item/Initialize() - materials = typelist("materials", materials) - if (attack_verb) attack_verb = typelist("attack_verb", attack_verb) @@ -233,9 +230,9 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) // Extractable materials. Only shows the names, not the amounts. research_msg += ".
Extractable materials: " - if (materials.len) + if (length(custom_materials)) sep = "" - for(var/mat in materials) + for(var/mat in custom_materials) research_msg += sep research_msg += CallMaterialName(mat) sep = ", " diff --git a/code/game/objects/items/AI_modules.dm b/code/game/objects/items/AI_modules.dm index 2808a77365..59dd420d23 100644 --- a/code/game/objects/items/AI_modules.dm +++ b/code/game/objects/items/AI_modules.dm @@ -22,7 +22,7 @@ AI MODULES throw_range = 7 var/list/laws = list() var/bypass_law_amt_check = 0 - materials = list(MAT_GOLD=50) + custom_materials = list(/datum/material/gold=50) /obj/item/aiModule/examine(var/mob/user as mob) . = ..() diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm index 3fad8cc53d..9f1d425d6c 100644 --- a/code/game/objects/items/RCD.dm +++ b/code/game/objects/items/RCD.dm @@ -22,7 +22,7 @@ RLD throw_speed = 3 throw_range = 5 w_class = WEIGHT_CLASS_NORMAL - materials = list(MAT_METAL=100000) + custom_materials = list(/datum/material/iron=100000) req_access_txt = "11" armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF @@ -603,7 +603,7 @@ RLD energyfactor = 66 /obj/item/construction/rcd/loaded - materials = list(MAT_METAL=48000, MAT_GLASS=32000) + custom_materials = list(/datum/material/iron = 48000, /datum/material/glass = 32000) matter = 160 /obj/item/construction/rcd/loaded/upgraded @@ -635,13 +635,13 @@ RLD item_state = "rcdammo" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - materials = list(MAT_METAL=12000, MAT_GLASS=8000) + custom_materials = list(/datum/material/iron=12000, /datum/material/glass=8000) var/ammoamt = 40 /obj/item/rcd_ammo/large name = "large compressed matter cartridge" desc = "Highly compressed matter for the RCD. Has four times the matter packed into the same space as a normal cartridge." - materials = list(MAT_METAL=48000, MAT_GLASS=32000) + custom_materials = list(/datum/material/iron=48000, /datum/material/glass=32000) ammoamt = 160 diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm index 8b8a02d190..665082d1d2 100644 --- a/code/game/objects/items/RPD.dm +++ b/code/game/objects/items/RPD.dm @@ -188,7 +188,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( throw_speed = 1 throw_range = 5 w_class = WEIGHT_CLASS_NORMAL - materials = list(MAT_METAL=75000, MAT_GLASS=37500) + custom_materials = list(/datum/material/iron=75000, /datum/material/glass=37500) armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF var/datum/effect_system/spark_spread/spark_system diff --git a/code/game/objects/items/airlock_painter.dm b/code/game/objects/items/airlock_painter.dm index b7c76cad2d..45fea91e49 100644 --- a/code/game/objects/items/airlock_painter.dm +++ b/code/game/objects/items/airlock_painter.dm @@ -7,7 +7,7 @@ w_class = WEIGHT_CLASS_SMALL - materials = list(MAT_METAL=50, MAT_GLASS=50) + custom_materials = list(/datum/material/iron=50, /datum/material/glass=50) flags_1 = CONDUCT_1 item_flags = NOBLUDGEON diff --git a/code/game/objects/items/apc_frame.dm b/code/game/objects/items/apc_frame.dm index c725148d9a..3b1d9a8096 100644 --- a/code/game/objects/items/apc_frame.dm +++ b/code/game/objects/items/apc_frame.dm @@ -1,6 +1,6 @@ /obj/item/wallframe icon = 'icons/obj/wallframe.dmi' - materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT*2) + custom_materials = list(/datum/material/iron=MINERAL_MATERIAL_AMOUNT*2) flags_1 = CONDUCT_1 item_state = "syringe_kit" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' @@ -66,8 +66,8 @@ if(iswallturf(T)) T.attackby(src, user, params) - var/metal_amt = round(materials[MAT_METAL]/MINERAL_MATERIAL_AMOUNT) - var/glass_amt = round(materials[MAT_GLASS]/MINERAL_MATERIAL_AMOUNT) + var/metal_amt = round(custom_materials[getmaterialref(/datum/material/iron)]/MINERAL_MATERIAL_AMOUNT) + var/glass_amt = round(custom_materials[getmaterialref(/datum/material/glass)]/MINERAL_MATERIAL_AMOUNT) if(istype(W, /obj/item/wrench) && (metal_amt || glass_amt)) to_chat(user, "You dismantle [src].") @@ -119,5 +119,5 @@ righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' flags_1 = CONDUCT_1 w_class = WEIGHT_CLASS_SMALL - materials = list(MAT_METAL=50, MAT_GLASS=50) + custom_materials = list(/datum/material/iron=50, /datum/material/glass=50) grind_results = list(/datum/reagent/iron = 10, /datum/reagent/silicon = 10) diff --git a/code/game/objects/items/circuitboards/circuitboard.dm b/code/game/objects/items/circuitboards/circuitboard.dm index 5f87f9ffd9..6dc5db970d 100644 --- a/code/game/objects/items/circuitboards/circuitboard.dm +++ b/code/game/objects/items/circuitboards/circuitboard.dm @@ -10,7 +10,7 @@ item_state = "electronic" lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - materials = list(MAT_GLASS=1000) + custom_materials = list(/datum/material/glass=1000) w_class = WEIGHT_CLASS_SMALL grind_results = list(/datum/reagent/silicon = 20) var/build_path = null diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index 3a2470e5e0..e35d398021 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -730,22 +730,22 @@ name = "Defibrillator Healing Disk" desc = "An upgrade which increases the healing power of the defibrillator" icon_state = "heal_disk" - materials = list(MAT_METAL=16000, MAT_GLASS = 18000, MAT_GOLD = 6000, MAT_SILVER = 6000) + custom_materials = list(/datum/material/iron=16000, /datum/material/glass = 18000, /datum/material/gold = 6000, /datum/material/silver = 6000) /obj/item/disk/medical/defib_shock name = "Defibrillator Anti-Shock Disk" desc = "A safety upgrade that guarantees only the patient will get shocked" icon_state = "zap_disk" - materials = list(MAT_METAL=16000, MAT_GLASS = 18000, MAT_GOLD = 6000, MAT_SILVER = 6000) + custom_materials = list(/datum/material/iron=16000, /datum/material/glass = 18000, /datum/material/gold = 6000, /datum/material/silver = 6000) /obj/item/disk/medical/defib_decay name = "Defibrillator Body-Decay Extender Disk" desc = "An upgrade allowing the defibrillator to work on more decayed bodies" icon_state = "body_disk" - materials = list(MAT_METAL=16000, MAT_GLASS = 18000, MAT_GOLD = 16000, MAT_SILVER = 6000, MAT_TITANIUM = 2000) + custom_materials = list(/datum/material/iron=16000, /datum/material/glass = 18000, /datum/material/gold = 16000, /datum/material/silver = 6000, /datum/material/titanium = 2000) /obj/item/disk/medical/defib_speed name = "Defibrillator Fast Charge Disk" desc = "An upgrade to the defibrillator capacitors, which let it charge faster" icon_state = "fast_disk" - materials = list(MAT_METAL=16000, MAT_GLASS = 8000, MAT_GOLD = 26000, MAT_SILVER = 26000) + custom_materials = list(/datum/material/iron=16000, /datum/material/glass = 8000, /datum/material/gold = 26000, /datum/material/silver = 26000) diff --git a/code/game/objects/items/devices/desynchronizer.dm b/code/game/objects/items/devices/desynchronizer.dm index 0fa557f666..e5dcfc0075 100644 --- a/code/game/objects/items/devices/desynchronizer.dm +++ b/code/game/objects/items/devices/desynchronizer.dm @@ -8,7 +8,7 @@ item_flags = NOBLUDGEON lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - materials = list(MAT_METAL = 250, MAT_GLASS = 500) + custom_materials = list(/datum/material/iron = 250, /datum/material/glass = 500) var/max_duration = 3000 var/duration = 300 var/last_use = 0 diff --git a/code/game/objects/items/devices/doorCharge.dm b/code/game/objects/items/devices/doorCharge.dm index e9ba9ea4a4..c38eb46baf 100644 --- a/code/game/objects/items/devices/doorCharge.dm +++ b/code/game/objects/items/devices/doorCharge.dm @@ -12,7 +12,7 @@ item_flags = NOBLUDGEON force = 3 attack_verb = list("blown up", "exploded", "detonated") - materials = list(MAT_METAL=50, MAT_GLASS=30) + custom_materials = list(/datum/material/iron=50, /datum/material/glass=30) /obj/item/doorCharge/ex_act(severity, target) switch(severity) diff --git a/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm index 97392ca71e..5dbda8de54 100644 --- a/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm +++ b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm @@ -5,7 +5,7 @@ icon = 'icons/obj/module.dmi' icon_state = "boris" w_class = WEIGHT_CLASS_TINY - materials = list(MAT_METAL = 50, MAT_GLASS = 300) + custom_materials = list(/datum/material/iron = 50, /datum/material/glass = 300) var/recharging = FALSE var/circuits = 5 //How many circuits the pseudocircuit has left var/static/recycleable_circuits = typecacheof(list(/obj/item/electronics/firelock, /obj/item/electronics/airalarm, /obj/item/electronics/firealarm, \ diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index e43aa681ce..82644cb0fe 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -9,7 +9,7 @@ w_class = WEIGHT_CLASS_SMALL flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BELT - materials = list(MAT_METAL=50, MAT_GLASS=20) + custom_materials = list(/datum/material/iron=50, /datum/material/glass=20) actions_types = list(/datum/action/item_action/toggle_light) var/on = FALSE var/brightness_on = 4 //range of light when on @@ -224,7 +224,7 @@ light_color = "#FFDDBB" w_class = WEIGHT_CLASS_BULKY flags_1 = CONDUCT_1 - materials = list() + custom_materials = null on = TRUE @@ -362,7 +362,7 @@ item_state = "slime" w_class = WEIGHT_CLASS_SMALL slot_flags = ITEM_SLOT_BELT - materials = list() + custom_materials = null brightness_on = 6 //luminosity when on light_color = "#FFEEAA" flashlight_power = 0.6 diff --git a/code/game/objects/items/devices/forcefieldprojector.dm b/code/game/objects/items/devices/forcefieldprojector.dm index 905428ae1f..03ca110ec8 100644 --- a/code/game/objects/items/devices/forcefieldprojector.dm +++ b/code/game/objects/items/devices/forcefieldprojector.dm @@ -9,7 +9,7 @@ item_state = "electronic" lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - materials = list(MAT_METAL=250, MAT_GLASS=500) + custom_materials = list(/datum/material/iron=250, /datum/material/glass=500) var/max_shield_integrity = 100 var/shield_integrity = 250 var/max_fields = 3 diff --git a/code/game/objects/items/devices/geiger_counter.dm b/code/game/objects/items/devices/geiger_counter.dm index 2af449df24..6168e2dabe 100644 --- a/code/game/objects/items/devices/geiger_counter.dm +++ b/code/game/objects/items/devices/geiger_counter.dm @@ -18,7 +18,7 @@ righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' w_class = WEIGHT_CLASS_SMALL slot_flags = ITEM_SLOT_BELT - materials = list(MAT_METAL = 150, MAT_GLASS = 150) + custom_materials = list(/datum/material/iron = 150, /datum/material/glass = 150) var/grace = RAD_GRACE_PERIOD var/datum/looping_sound/geiger/soundloop diff --git a/code/game/objects/items/devices/instruments.dm b/code/game/objects/items/devices/instruments.dm index dd7c5b15d9..4c46d064c4 100644 --- a/code/game/objects/items/devices/instruments.dm +++ b/code/game/objects/items/devices/instruments.dm @@ -108,6 +108,12 @@ song.instrumentDir = name song.instrumentExt = insTypes[name] +/obj/item/instrument/piano_synth/proc/selectInstrument() // Moved here so it can be used by the action and PAI software panel without copypasta + var/chosen = input("Choose the type of instrument you want to use", "Instrument Selection", song.instrumentDir) as null|anything in insTypes + if(!insTypes[chosen]) + return + return changeInstrument(chosen) + /obj/item/instrument/banjo name = "banjo" desc = "A 'Mura' brand banjo. It's pretty much just a drum with a neck and strings." diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index 1f2f1ddda2..5b23f6f169 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -8,7 +8,7 @@ flags_1 = CONDUCT_1 item_flags = NOBLUDGEON slot_flags = ITEM_SLOT_BELT - materials = list(MAT_METAL=500, MAT_GLASS=500) + custom_materials = list(/datum/material/iron=500, /datum/material/glass=500) w_class = WEIGHT_CLASS_SMALL var/turf/pointer_loc var/energy = 5 diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index 6d0a78974a..65c3a96572 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -24,7 +24,7 @@ throwforce = 0 throw_range = 7 throw_speed = 3 - materials = list(MAT_METAL=50, MAT_GLASS=20) + custom_materials = list(/datum/material/iron=50, /datum/material/glass=20) var/obj/machinery/buffer // simple machine buffer for device linkage toolspeed = 1 tool_behaviour = TOOL_MULTITOOL diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index f28aacc46c..5b332cda46 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -94,10 +94,8 @@ to_chat(pai, "Your mental faculties leave you.") to_chat(pai, "oblivion... ") qdel(pai) - if(href_list["wires"]) - var/wire = text2num(href_list["wires"]) - if(pai.radio) - pai.radio.wires.cut(wire) + if(href_list["wires"] && pai.radio) + pai.radio.wires.cut(href_list["wires"]) if(href_list["reset_radio_short"]) pai.unshort_radio() if(href_list["setlaws"]) diff --git a/code/game/objects/items/devices/pipe_painter.dm b/code/game/objects/items/devices/pipe_painter.dm index 2d0af2cf3c..a6323cfd7f 100644 --- a/code/game/objects/items/devices/pipe_painter.dm +++ b/code/game/objects/items/devices/pipe_painter.dm @@ -6,7 +6,7 @@ item_flags = NOBLUDGEON var/paint_color = "grey" - materials = list(MAT_METAL=5000, MAT_GLASS=2000) + custom_materials = list(/datum/material/iron=5000, /datum/material/glass=2000) /obj/item/pipe_painter/afterattack(atom/A, mob/user, proximity_flag) . = ..() diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index 58fc77e739..ba877f1dd7 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -13,7 +13,7 @@ throwforce = 5 throw_speed = 1 throw_range = 2 - materials = list(MAT_METAL=750) + custom_materials = list(/datum/material/iron=750) var/drain_rate = 1600000 // amount of power to drain per tick var/power_drained = 0 // has drained this much power var/max_power = 1e10 // maximum power that can be drained before exploding diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index d499683fbc..a173453f1c 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -9,7 +9,7 @@ flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BACK w_class = WEIGHT_CLASS_HUGE - materials = list(MAT_METAL=10000, MAT_GLASS=2500) + custom_materials = list(/datum/material/iron=10000, /datum/material/glass=2500) var/code = 2 var/frequency = FREQ_ELECTROPACK @@ -157,7 +157,7 @@ Code: w_class = WEIGHT_CLASS_SMALL strip_delay = 60 equip_delay_other = 60 - materials = list(MAT_METAL=5000, MAT_GLASS=2000) + custom_materials = list(/datum/material/iron = 5000, /datum/material/glass = 2000) var/tagname = null @@ -166,7 +166,7 @@ Code: id = "shockcollar" build_type = AUTOLATHE build_path = /obj/item/electropack/shockcollar - materials = list(MAT_METAL=5000, MAT_GLASS=2000) + materials = list(/datum/material/iron = 5000, /datum/material/glass =2000) category = list("hacked", "Misc") /obj/item/electropack/shockcollar/attack_hand(mob/user) diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index e04501144e..5728a97dda 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -19,7 +19,7 @@ GLOBAL_LIST_INIT(channel_tokens, list( desc = "An updated, modular intercom that fits over the head. Takes encryption keys." icon_state = "headset" item_state = "headset" - materials = list(MAT_METAL=75) + custom_materials = list(/datum/material/iron=75) subspace_transmission = TRUE canhear_range = 0 // can't hear headsets from very far away @@ -254,12 +254,17 @@ GLOBAL_LIST_INIT(channel_tokens, list( keyslot = null bowman = TRUE -/obj/item/radio/headset/ai +/obj/item/radio/headset/silicon/pai + name = "\proper mini Integrated Subspace Transceiver " + subspace_transmission = FALSE + + +/obj/item/radio/headset/silicon/ai name = "\proper Integrated Subspace Transceiver " keyslot2 = new /obj/item/encryptionkey/ai command = TRUE -/obj/item/radio/headset/ai/can_receive(freq, level) +/obj/item/radio/headset/silicon/can_receive(freq, level) return ..(freq, level, TRUE) /obj/item/radio/headset/attackby(obj/item/W, mob/user, params) diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 41161b46c9..ada598866b 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -147,4 +147,4 @@ result_path = /obj/item/radio/intercom/unscrewed pixel_shift = 29 inverse = TRUE - materials = list(MAT_METAL = 75, MAT_GLASS = 25) + custom_materials = list(/datum/material/iron = 75, /datum/material/glass = 25) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index b87b7b11bd..60b93d9461 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -11,7 +11,7 @@ throw_speed = 3 throw_range = 7 w_class = WEIGHT_CLASS_SMALL - materials = list(MAT_METAL=75, MAT_GLASS=25) + custom_materials = list(/datum/material/iron=75, /datum/material/glass=25) obj_flags = USES_TGUI var/on = TRUE diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index c23311cf22..1b8058e3d4 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -19,7 +19,7 @@ SLIME SCANNER item_state = "electronic" lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - materials = list(MAT_METAL=150) + custom_materials = list(/datum/material/iron=150) /obj/item/t_scanner/suicide_act(mob/living/carbon/user) user.visible_message("[user] begins to emit terahertz-rays into [user.p_their()] brain with [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -75,7 +75,7 @@ SLIME SCANNER w_class = WEIGHT_CLASS_TINY throw_speed = 3 throw_range = 7 - materials = list(MAT_METAL=200) + custom_materials = list(/datum/material/iron=200) var/mode = 1 var/scanmode = 0 var/advanced = FALSE @@ -516,7 +516,7 @@ SLIME SCANNER throw_speed = 3 throw_range = 7 tool_behaviour = TOOL_ANALYZER - materials = list(MAT_METAL=30, MAT_GLASS=20) + custom_materials = list(/datum/material/iron=30, /datum/material/glass=20) grind_results = list(/datum/reagent/mercury = 5, /datum/reagent/iron = 5, /datum/reagent/silicon = 5) var/cooldown = FALSE var/cooldown_time = 250 @@ -706,7 +706,7 @@ SLIME SCANNER throwforce = 0 throw_speed = 3 throw_range = 7 - materials = list(MAT_METAL=30, MAT_GLASS=20) + custom_materials = list(/datum/material/iron=30, /datum/material/glass=20) /obj/item/slime_scanner/attack(mob/living/M, mob/living/user) if(user.stat || user.eye_blind) @@ -765,7 +765,7 @@ SLIME SCANNER w_class = WEIGHT_CLASS_TINY throw_speed = 3 throw_range = 7 - materials = list(MAT_METAL=200) + custom_materials = list(/datum/material/iron=200) /obj/item/nanite_scanner/attack(mob/living/M, mob/living/carbon/human/user) user.visible_message("[user] has analyzed [M]'s nanites.") diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index ebc7c520ef..fc8679aa03 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -9,7 +9,7 @@ w_class = WEIGHT_CLASS_SMALL flags_1 = HEAR_1 slot_flags = ITEM_SLOT_BELT - materials = list(MAT_METAL=60, MAT_GLASS=30) + custom_materials = list(/datum/material/iron=60, /datum/material/glass=30) force = 2 throwforce = 0 var/recording = 0 @@ -243,7 +243,7 @@ lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' w_class = WEIGHT_CLASS_TINY - materials = list(MAT_METAL=20, MAT_GLASS=5) + custom_materials = list(/datum/material/iron=20, /datum/material/glass=5) force = 1 throwforce = 0 var/max_capacity = 600 diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 64e2830dd4..1d42198a23 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -69,7 +69,7 @@ effective or pretty fucking useless. */ /obj/item/healthanalyzer/rad_laser - materials = list(MAT_METAL=400) + custom_materials = list(/datum/material/iron=400) var/irradiate = 1 var/intensity = 10 // how much damage the radiation does var/wavelength = 10 // time it takes for the radiation to kick in, in seconds diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm index 5cd1f4831c..2d9d0b61c2 100644 --- a/code/game/objects/items/extinguisher.dm +++ b/code/game/objects/items/extinguisher.dm @@ -11,7 +11,7 @@ throw_speed = 2 throw_range = 7 force = 10 - materials = list(MAT_METAL = 90) + custom_materials = list(/datum/material/iron = 90) attack_verb = list("slammed", "whacked", "bashed", "thunked", "battered", "bludgeoned", "thrashed") dog_fashion = /datum/dog_fashion/back resistance_flags = FIRE_PROOF @@ -36,7 +36,7 @@ throwforce = 2 w_class = WEIGHT_CLASS_SMALL force = 3 - materials = list(MAT_METAL = 50, MAT_GLASS = 40) + custom_materials = list(/datum/material/iron = 50, /datum/material/glass = 40) max_water = 30 sprite_name = "miniFE" dog_fashion = null diff --git a/code/game/objects/items/flamethrower.dm b/code/game/objects/items/flamethrower.dm index 906572d018..e307b9d626 100644 --- a/code/game/objects/items/flamethrower.dm +++ b/code/game/objects/items/flamethrower.dm @@ -12,7 +12,7 @@ throw_speed = 1 throw_range = 5 w_class = WEIGHT_CLASS_NORMAL - materials = list(MAT_METAL=500) + custom_materials = list(/datum/material/iron=500) resistance_flags = FIRE_PROOF var/status = FALSE var/lit = FALSE //on or off diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index 986090212e..24fc1043d8 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -491,12 +491,12 @@ remarks = list("Looks like these would sell much better in a plasma fire...", "Using glass bowls rather then cones?", "Mixing soda and ice-cream?", "Tall glasses with of liquids and solids...", "Just add a bit of icecream and cherry on top?") /obj/item/book/granter/crafting_recipe/bone_bow //Bow crafting for non-ashwalkers - name = "Sandstone manual on bows" - desc = "A standstone slab with everything you need to know for making bows and arrows just like an ashwalker would." + name = "bowyery sandstone slab" // this is an actual word + desc = "A sandstone slab with inscriptions describing the Ash Walkers of Lavaland's bowyery." crafting_recipe_types = list(/datum/crafting_recipe/bone_arrow, /datum/crafting_recipe/bone_bow, /datum/crafting_recipe/ashen_arrow, /datum/crafting_recipe/quiver, /datum/crafting_recipe/bow_tablet) icon_state = "stone_tablet" oneuse = FALSE - remarks = list("Sticking burning arrows into the sand makes them stronger?", "Breaking the bone apart to get shards, not sharpening the bone.", "Sinew is just like rope?") + remarks = list("Sticking burning arrows into the sand makes them stronger...", "Breaking the bone apart to get shards, not sharpening the bone...", "Sinew is just like rope...") /obj/item/book/granter/crafting_recipe/under_the_oven //Illegal cook book name = "Under The Oven" diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 8ce0f33307..f458fe7e63 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -36,7 +36,7 @@ w_class = WEIGHT_CLASS_SMALL throw_speed = 3 throw_range = 5 - materials = list(MAT_METAL=500) + custom_materials = list(/datum/material/iron=500) breakouttime = 600 //Deciseconds = 60s = 1 minute armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) var/cuffsound = 'sound/weapons/handcuffs.ogg' @@ -117,7 +117,7 @@ color = "#ff0000" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - materials = list(MAT_METAL=150, MAT_GLASS=75) + custom_materials = list(/datum/material/iron=150, /datum/material/glass=75) breakouttime = 300 //Deciseconds = 30s cuffsound = 'sound/weapons/cablecuff.ogg' @@ -202,7 +202,7 @@ item_state = "zipties" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' - materials = list() + custom_materials = null breakouttime = 450 //Deciseconds = 45s trashtype = /obj/item/restraints/handcuffs/cable/zipties/used item_color = "white" diff --git a/code/game/objects/items/implants/implantcase.dm b/code/game/objects/items/implants/implantcase.dm index 4b8427386c..c1734cb24e 100644 --- a/code/game/objects/items/implants/implantcase.dm +++ b/code/game/objects/items/implants/implantcase.dm @@ -9,7 +9,7 @@ throw_speed = 2 throw_range = 5 w_class = WEIGHT_CLASS_TINY - materials = list(MAT_GLASS=500) + custom_materials = list(/datum/material/glass=500) var/obj/item/implant/imp = null var/imp_type diff --git a/code/game/objects/items/implants/implanter.dm b/code/game/objects/items/implants/implanter.dm index a0e27f14f0..414bb3ea69 100644 --- a/code/game/objects/items/implants/implanter.dm +++ b/code/game/objects/items/implants/implanter.dm @@ -9,7 +9,7 @@ throw_speed = 3 throw_range = 5 w_class = WEIGHT_CLASS_SMALL - materials = list(MAT_METAL=600, MAT_GLASS=200) + custom_materials = list(/datum/material/iron=600, /datum/material/glass=200) var/obj/item/implant/imp = null var/imp_type = null diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index e28909c84f..22a8d2c92a 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -22,7 +22,7 @@ throwforce = 0 throw_speed = 3 throw_range = 5 - materials = list(MAT_METAL=80) + custom_materials = list(/datum/material/iron=80) flags_1 = CONDUCT_1 attack_verb = list("attacked", "stabbed", "poked") hitsound = 'sound/weapons/bladeslice.ogg' @@ -65,7 +65,7 @@ hitsound = 'sound/weapons/bladeslice.ogg' throw_speed = 3 throw_range = 6 - materials = list(MAT_METAL=12000) + custom_materials = list(/datum/material/iron=12000) attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") sharpness = IS_SHARP_ACCURATE armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) @@ -104,7 +104,7 @@ flags_1 = CONDUCT_1 force = 15 throwforce = 10 - materials = list(MAT_METAL=18000) + custom_materials = list(/datum/material/iron=18000) attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") w_class = WEIGHT_CLASS_NORMAL @@ -136,7 +136,7 @@ desc = "A sharpened bone. The bare minimum in survival." force = 15 throwforce = 15 - materials = list() + custom_materials = null /obj/item/kitchen/knife/combat/cyborg name = "cyborg knife" @@ -153,7 +153,7 @@ desc = "Unlike other carrots, you should probably keep this far away from your eyes." force = 8 throwforce = 12//fuck git - materials = list() + custom_materials = null attack_verb = list("shanked", "shivved") armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 4b071d6a34..a71e82d865 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -24,7 +24,7 @@ w_class = WEIGHT_CLASS_NORMAL attack_verb = list("flogged", "whipped", "lashed", "disciplined") hitsound = 'sound/weapons/chainhit.ogg' - materials = list(MAT_METAL = 1000) + custom_materials = list(/datum/material/iron = 1000) /obj/item/melee/chainofcommand/suicide_act(mob/user) user.visible_message("[user] is strangling [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -67,7 +67,7 @@ sharpness = IS_SHARP attack_verb = list("slashed", "cut") hitsound = 'sound/weapons/rapierhit.ogg' - materials = list(MAT_METAL = 1000) + custom_materials = list(/datum/material/iron = 1000) total_mass = 3.4 /obj/item/melee/sabre/Initialize() @@ -507,3 +507,29 @@ held_sausage.name = "[target.name]-roasted [held_sausage.name]" held_sausage.desc = "[held_sausage.desc] It has been cooked to perfection on \a [target]." update_icon() + +/obj/item/melee/cleric_mace + name = "cleric mace" + desc = "The grandson of the club, yet the grandfather of the baseball bat. Most notably used by holy orders in days past." + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "mace_greyscale" + item_state = "mace_greyscale" + lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR //Material type changes the prefix as well as the color. + custom_materials = list(/datum/material/iron = 12000) //Defaults to an Iron Mace. + slot_flags = ITEM_SLOT_BELT + force = 14 + w_class = WEIGHT_CLASS_BULKY + throwforce = 8 + block_chance = 10 + armour_penetration = 50 + attack_verb = list("smacked", "struck", "cracked", "beaten") + var/overlay_state = "mace_handle" + var/mutable_appearance/overlay + +/obj/item/melee/cleric_mace/Initialize() + . = ..() + overlay = mutable_appearance(icon, overlay_state) + overlay.appearance_flags = RESET_COLOR + add_overlay(overlay) \ No newline at end of file diff --git a/code/game/objects/items/pet_carrier.dm b/code/game/objects/items/pet_carrier.dm index 5af9c70d9b..5f49f6b06d 100644 --- a/code/game/objects/items/pet_carrier.dm +++ b/code/game/objects/items/pet_carrier.dm @@ -15,7 +15,7 @@ w_class = WEIGHT_CLASS_BULKY throw_speed = 2 throw_range = 3 - materials = list(MAT_METAL = 7500, MAT_GLASS = 100) + custom_materials = list(/datum/material/iron = 7500, /datum/material/glass = 100) var/open = TRUE var/locked = FALSE var/list/occupants = list() diff --git a/code/game/objects/items/pinpointer.dm b/code/game/objects/items/pinpointer.dm index 151df7694a..57f247cdb2 100644 --- a/code/game/objects/items/pinpointer.dm +++ b/code/game/objects/items/pinpointer.dm @@ -12,7 +12,7 @@ righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' throw_speed = 3 throw_range = 7 - materials = list(MAT_METAL = 500, MAT_GLASS = 250) + custom_materials = list(/datum/material/iron = 500, /datum/material/glass = 250) resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF var/active = FALSE var/atom/movable/target //The thing we're searching for diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index 3be698dd3a..4f5f264c0e 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -20,7 +20,7 @@ throw_speed = 2 throw_range = 3 w_class = WEIGHT_CLASS_BULKY - materials = list(MAT_GLASS=7500, MAT_METAL=1000) + custom_materials = list(/datum/material/glass=7500, /datum/material/iron=1000) attack_verb = list("shoved", "bashed") var/cooldown = 0 //shield bash cooldown. based on world.time transparent = TRUE @@ -106,7 +106,7 @@ item_state = "buckler" lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' - materials = list() + custom_materials = null resistance_flags = FLAMMABLE block_chance = 30 transparent = FALSE @@ -217,7 +217,7 @@ icon = 'icons/obj/items_and_weapons.dmi' item_state = "metal" icon_state = "makeshift_shield" - materials = list(MAT_METAL = 18000) + custom_materials = list(/datum/material/iron = 18000) slot_flags = null block_chance = 35 force = 10 diff --git a/code/game/objects/items/stacks/bscrystal.dm b/code/game/objects/items/stacks/bscrystal.dm index e2357e8f6d..f864df5a21 100644 --- a/code/game/objects/items/stacks/bscrystal.dm +++ b/code/game/objects/items/stacks/bscrystal.dm @@ -6,7 +6,7 @@ icon_state = "bluespace_crystal" singular_name = "bluespace crystal" w_class = WEIGHT_CLASS_TINY - materials = list(MAT_BLUESPACE=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/bluespace=MINERAL_MATERIAL_AMOUNT) points = 50 var/blink_range = 8 // The teleport range when crushed/thrown at someone. refined_type = /obj/item/stack/sheet/bluespace_crystal @@ -49,7 +49,7 @@ /obj/item/stack/ore/bluespace_crystal/artificial name = "artificial bluespace crystal" desc = "An artificially made bluespace crystal, it looks delicate." - materials = list(MAT_BLUESPACE=MINERAL_MATERIAL_AMOUNT*0.5) + custom_materials = list(/datum/material/bluespace=MINERAL_MATERIAL_AMOUNT*0.5) blink_range = 4 // Not as good as the organic stuff! points = 0 //nice try refined_type = null @@ -63,7 +63,7 @@ item_state = "sheet-polycrystal" singular_name = "bluespace polycrystal" desc = "A stable polycrystal, made of fused-together bluespace crystals. You could probably break one off." - materials = list(MAT_BLUESPACE=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/bluespace=MINERAL_MATERIAL_AMOUNT) attack_verb = list("bluespace polybashed", "bluespace polybattered", "bluespace polybludgeoned", "bluespace polythrashed", "bluespace polysmashed") novariants = TRUE grind_results = list(/datum/reagent/bluespace = 20) diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index baf099fdb5..205ce57251 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -126,7 +126,7 @@ heal_brute = 0 /obj/item/stack/medical/gauze/cyborg - materials = list() + custom_materials = null is_cyborg = 1 cost = 250 diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index 537873624c..fb5adea3b0 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -16,7 +16,8 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \ throwforce = 10 throw_speed = 3 throw_range = 7 - materials = list(MAT_METAL=1000) + custom_materials = list(/datum/material/iron=1000) + mats_per_stack = 1000 max_amount = 50 attack_verb = list("hit", "bludgeoned", "whacked") hitsound = 'sound/weapons/grenadelaunch.ogg' @@ -25,13 +26,15 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \ /obj/item/stack/rods/suicide_act(mob/living/carbon/user) user.visible_message("[user] begins to stuff \the [src] down [user.p_their()] throat! It looks like [user.p_theyre()] trying to commit suicide!")//it looks like theyre ur mum return BRUTELOSS - + /obj/item/stack/rods/Initialize(mapload, new_amount, merge = TRUE) . = ..() - - recipes = GLOB.rod_recipes update_icon() +/obj/item/stack/rods/get_main_recipes() + . = ..() + . += GLOB.rod_recipes + /obj/item/stack/rods/update_icon() var/amount = get_amount() if((amount <= 5) && (amount > 0)) @@ -70,7 +73,7 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \ return ..() /obj/item/stack/rods/cyborg - materials = list() + custom_materials = null is_cyborg = 1 cost = 250 diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 934273ae46..75db89f616 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -31,11 +31,12 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \ singular_name = "glass sheet" icon_state = "sheet-glass" item_state = "sheet-glass" - materials = list(MAT_GLASS=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/glass=MINERAL_MATERIAL_AMOUNT) armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 100) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/glass grind_results = list(/datum/reagent/silicon = 20) + material_type = /datum/material/glass point_value = 1 tableVariant = /obj/structure/table/glass shard_type = /obj/item/shard @@ -45,7 +46,7 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \ return BRUTELOSS /obj/item/stack/sheet/glass/cyborg - materials = list() + custom_materials = null is_cyborg = 1 cost = 500 @@ -55,9 +56,9 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \ /obj/item/stack/sheet/glass/five amount = 5 -/obj/item/stack/sheet/glass/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.glass_recipes - return ..() +/obj/item/stack/sheet/glass/get_main_recipes() + . = ..() + . += GLOB.glass_recipes /obj/item/stack/sheet/glass/attackby(obj/item/W, mob/user, params) add_fingerprint(user) @@ -100,20 +101,21 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \ singular_name = "plasma glass sheet" icon_state = "sheet-pglass" item_state = "sheet-pglass" - materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/plasma=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT) armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 75, "acid" = 100) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/plasmaglass grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10) tableVariant = /obj/structure/table/plasmaglass + material_flags = MATERIAL_NO_EFFECTS shard_type = /obj/item/shard/plasma /obj/item/stack/sheet/plasmaglass/fifty amount = 50 -/obj/item/stack/sheet/plasmaglass/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.pglass_recipes - return ..() +/obj/item/stack/sheet/plasmaglass/get_main_recipes() + . = ..() + . += GLOB.pglass_recipes /obj/item/stack/sheet/plasmaglass/attackby(obj/item/W, mob/user, params) add_fingerprint(user) @@ -155,7 +157,7 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \ singular_name = "reinforced glass sheet" icon_state = "sheet-rglass" item_state = "sheet-rglass" - materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/iron=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT) armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 100) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/rglass @@ -171,7 +173,7 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \ S.obj_integrity *= 2 /obj/item/stack/sheet/rglass/cyborg - materials = list() + custom_materials = null var/datum/robot_energy_storage/glasource var/metcost = 250 var/glacost = 500 @@ -187,9 +189,9 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \ source.add_charge(amount * metcost) glasource.add_charge(amount * glacost) -/obj/item/stack/sheet/rglass/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.reinforced_glass_recipes - return ..() +/obj/item/stack/sheet/rglass/get_main_recipes() + . = ..() + . += GLOB.reinforced_glass_recipes GLOBAL_LIST_INIT(prglass_recipes, list ( \ new/datum/stack_recipe("directional reinforced window", /obj/structure/window/plasma/reinforced/unanchored, time = 0, on_floor = TRUE, window_checks = TRUE), \ @@ -202,22 +204,23 @@ GLOBAL_LIST_INIT(prglass_recipes, list ( \ singular_name = "reinforced plasma glass sheet" icon_state = "sheet-prglass" item_state = "sheet-prglass" - materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS=MINERAL_MATERIAL_AMOUNT, MAT_METAL=MINERAL_MATERIAL_AMOUNT * 0.5,) + custom_materials = list(/datum/material/plasma=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT, /datum/material/iron=MINERAL_MATERIAL_AMOUNT * 0.5,) armor = list("melee" = 20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100) resistance_flags = ACID_PROOF + material_flags = MATERIAL_NO_EFFECTS merge_type = /obj/item/stack/sheet/plasmarglass grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10, /datum/reagent/iron = 10) point_value = 23 shard_type = /obj/item/shard/plasma +/obj/item/stack/sheet/plasmarglass/get_main_recipes() + . = ..() + . += GLOB.prglass_recipes + /obj/item/stack/sheet/plasmarglass/on_solar_construction(obj/machinery/power/solar/S) S.obj_integrity *= 2.2 S.efficiency *= 1.2 -/obj/item/stack/sheet/plasmarglass/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.prglass_recipes - return ..() - GLOBAL_LIST_INIT(titaniumglass_recipes, list( new/datum/stack_recipe("shuttle window", /obj/structure/window/shuttle/unanchored, 2, time = 0, on_floor = TRUE, window_checks = TRUE) )) @@ -228,20 +231,20 @@ GLOBAL_LIST_INIT(titaniumglass_recipes, list( singular_name = "titanium glass sheet" icon_state = "sheet-titaniumglass" item_state = "sheet-titaniumglass" - materials = list(MAT_TITANIUM=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/titanium=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT) armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/titaniumglass shard_type = /obj/item/shard +/obj/item/stack/sheet/titaniumglass/get_main_recipes() + . = ..() + . += GLOB.titaniumglass_recipes + /obj/item/stack/sheet/titaniumglass/on_solar_construction(obj/machinery/power/solar/S) S.obj_integrity *= 2.5 S.efficiency *= 1.5 -/obj/item/stack/sheet/titaniumglass/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.titaniumglass_recipes - return ..() - GLOBAL_LIST_INIT(plastitaniumglass_recipes, list( new/datum/stack_recipe("plastitanium window", /obj/structure/window/plastitanium/unanchored, 2, time = 0, on_floor = TRUE, window_checks = TRUE) )) @@ -252,8 +255,9 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list( singular_name = "plastitanium glass sheet" icon_state = "sheet-plastitaniumglass" item_state = "sheet-plastitaniumglass" - materials = list(MAT_TITANIUM=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_PLASMA=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/titanium=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/plasma=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT) armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100) + material_flags = MATERIAL_NO_EFFECTS resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/plastitaniumglass shard_type = /obj/item/shard @@ -261,9 +265,9 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list( /obj/item/stack/sheet/plastitaniumglass/fifty amount = 50 -/obj/item/stack/sheet/plastitaniumglass/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.plastitaniumglass_recipes - return ..() +/obj/item/stack/sheet/plastitaniumglass/get_main_recipes() + . = ..() + . += GLOB.plastitaniumglass_recipes /obj/item/stack/sheet/titaniumglass/on_solar_construction(obj/machinery/power/solar/S) S.obj_integrity *= 2 @@ -280,7 +284,7 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list( item_state = "shard-glass" lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - materials = list(MAT_GLASS=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/glass=MINERAL_MATERIAL_AMOUNT) attack_verb = list("stabbed", "slashed", "sliced", "cut") hitsound = 'sound/weapons/bladeslice.ogg' resistance_flags = ACID_PROOF @@ -379,7 +383,7 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list( force = 6 throwforce = 11 icon_state = "plasmalarge" - materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/plasma=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT) icon_prefix = "plasma" /obj/item/shard/plasma/alien diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index 0b85bf351e..2ffa38ea3c 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -15,9 +15,9 @@ GLOBAL_LIST_INIT(human_recipes, list( \ new/datum/stack_recipe("bloated human costume", /obj/item/clothing/suit/hooded/bloated_human, 5), \ )) -/obj/item/stack/sheet/animalhide/human/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.human_recipes - return ..() +/obj/item/stack/sheet/animalhide/human/get_main_recipes() + . = ..() + . += GLOB.human_recipes /obj/item/stack/sheet/animalhide/generic name = "skin" @@ -46,17 +46,17 @@ GLOBAL_LIST_INIT(gondola_recipes, list ( \ icon_state = "sheet-gondola" item_state = "sheet-gondola" -/obj/item/stack/sheet/animalhide/gondola/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.gondola_recipes - return ..() +/obj/item/stack/sheet/animalhide/gondola/get_main_recipes() + . = ..() + . += GLOB.gondola_recipes GLOBAL_LIST_INIT(corgi_recipes, list ( \ new/datum/stack_recipe("corgi costume", /obj/item/clothing/suit/hooded/ian_costume, 3), \ )) -/obj/item/stack/sheet/animalhide/corgi/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.corgi_recipes - return ..() +/obj/item/stack/sheet/animalhide/corgi/get_main_recipes() + . = ..() + . += GLOB.corgi_recipes /obj/item/stack/sheet/animalhide/cat name = "cat hide" @@ -77,9 +77,9 @@ GLOBAL_LIST_INIT(monkey_recipes, list ( \ new/datum/stack_recipe("monkey suit", /obj/item/clothing/suit/monkeysuit, 2), \ )) -/obj/item/stack/sheet/animalhide/monkey/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.monkey_recipes - return ..() +/obj/item/stack/sheet/animalhide/monkey/get_main_recipes() + . = ..() + . += GLOB.monkey_recipes /obj/item/stack/sheet/animalhide/lizard name = "lizard skin" @@ -100,9 +100,9 @@ GLOBAL_LIST_INIT(xeno_recipes, list ( \ new/datum/stack_recipe("alien suit", /obj/item/clothing/suit/xenos, 2), \ )) -/obj/item/stack/sheet/animalhide/xeno/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.xeno_recipes - return ..() +/obj/item/stack/sheet/animalhide/xeno/get_main_recipes() + . = ..() + . += GLOB.xeno_recipes //don't see anywhere else to put these, maybe together they could be used to make the xenos suit? /obj/item/stack/sheet/xenochitin @@ -163,9 +163,9 @@ GLOBAL_LIST_INIT(leather_recipes, list ( \ new/datum/stack_recipe("leather overcoat", /obj/item/clothing/suit/jacket/leather/overcoat, 10), \ )) -/obj/item/stack/sheet/leather/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.leather_recipes - return ..() +/obj/item/stack/sheet/leather/get_main_recipes() + . = ..() + . += GLOB.leather_recipes /* * Sinew @@ -183,9 +183,9 @@ GLOBAL_LIST_INIT(sinew_recipes, list ( \ new/datum/stack_recipe("sinew restraints", /obj/item/restraints/handcuffs/sinew, 1), \ )) -/obj/item/stack/sheet/sinew/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.sinew_recipes - return ..() +/obj/item/stack/sheet/sinew/get_main_recipes() + . = ..() + . += GLOB.sinew_recipes /* * Plates diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 6ff6cdfbbf..4a7156db72 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -19,11 +19,6 @@ Mineral Sheets - Coal */ -/obj/item/stack/sheet/mineral/Initialize(mapload) - pixel_x = rand(-4, 4) - pixel_y = rand(-4, 4) - . = ..() - /* * Sandstone */ @@ -44,13 +39,13 @@ GLOBAL_LIST_INIT(sandstone_recipes, list ( \ item_state = "sheet-sandstone" throw_speed = 3 throw_range = 5 - materials = list(MAT_GLASS=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/glass=MINERAL_MATERIAL_AMOUNT) sheettype = "sandstone" merge_type = /obj/item/stack/sheet/mineral/sandstone -/obj/item/stack/sheet/mineral/sandstone/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.sandstone_recipes +/obj/item/stack/sheet/mineral/sandstone/get_main_recipes() . = ..() + . += GLOB.sandstone_recipes /obj/item/stack/sheet/mineral/sandstone/thirty amount = 30 @@ -74,9 +69,9 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \ new/datum/stack_recipe("sandbags", /obj/structure/barricade/sandbags, 1, time = 25, one_per_turf = 1, on_floor = 1), \ )) -/obj/item/stack/sheet/mineral/sandbags/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.sandbag_recipes +/obj/item/stack/sheet/mineral/sandbags/get_main_recipes() . = ..() + . += GLOB.sandbag_recipes /obj/item/emptysandbag name = "empty sandbag" @@ -106,11 +101,12 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \ item_state = "sheet-diamond" singular_name = "diamond" sheettype = "diamond" - materials = list(MAT_DIAMOND=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/diamond=MINERAL_MATERIAL_AMOUNT) novariants = TRUE grind_results = list(/datum/reagent/carbon = 20) point_value = 25 merge_type = /obj/item/stack/sheet/mineral/diamond + material_type = /datum/material/diamond GLOBAL_LIST_INIT(diamond_recipes, list ( \ new/datum/stack_recipe("diamond door", /obj/structure/mineral_door/transparent/diamond, 10, one_per_turf = 1, on_floor = 1), \ @@ -120,9 +116,9 @@ GLOBAL_LIST_INIT(diamond_recipes, list ( \ new/datum/stack_recipe("AI Core Statue", /obj/structure/statue/diamond/ai2, 5, one_per_turf = 1, on_floor = 1), \ )) -/obj/item/stack/sheet/mineral/diamond/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.diamond_recipes +/obj/item/stack/sheet/mineral/diamond/get_main_recipes() . = ..() + . += GLOB.diamond_recipes /* * Uranium @@ -133,11 +129,12 @@ GLOBAL_LIST_INIT(diamond_recipes, list ( \ item_state = "sheet-uranium" singular_name = "uranium sheet" sheettype = "uranium" - materials = list(MAT_URANIUM=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/uranium=MINERAL_MATERIAL_AMOUNT) novariants = TRUE grind_results = list(/datum/reagent/uranium = 20) point_value = 20 merge_type = /obj/item/stack/sheet/mineral/uranium + material_type = /datum/material/uranium GLOBAL_LIST_INIT(uranium_recipes, list ( \ new/datum/stack_recipe("uranium door", /obj/structure/mineral_door/uranium, 10, one_per_turf = 1, on_floor = 1), \ @@ -146,9 +143,9 @@ GLOBAL_LIST_INIT(uranium_recipes, list ( \ new/datum/stack_recipe("Engineer Statue", /obj/structure/statue/uranium/eng, 5, one_per_turf = 1, on_floor = 1), \ )) -/obj/item/stack/sheet/mineral/uranium/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.uranium_recipes +/obj/item/stack/sheet/mineral/uranium/get_main_recipes() . = ..() + . += GLOB.uranium_recipes /* * Plasma @@ -161,10 +158,11 @@ GLOBAL_LIST_INIT(uranium_recipes, list ( \ sheettype = "plasma" resistance_flags = FLAMMABLE max_integrity = 100 - materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/plasma=MINERAL_MATERIAL_AMOUNT) grind_results = list(/datum/reagent/toxin/plasma = 20) point_value = 20 merge_type = /obj/item/stack/sheet/mineral/plasma + material_type = /datum/material/plasma /obj/item/stack/sheet/mineral/plasma/suicide_act(mob/living/carbon/user) user.visible_message("[user] begins licking \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -176,9 +174,9 @@ GLOBAL_LIST_INIT(plasma_recipes, list ( \ new/datum/stack_recipe("Scientist Statue", /obj/structure/statue/plasma/scientist, 5, one_per_turf = 1, on_floor = 1), \ )) -/obj/item/stack/sheet/mineral/plasma/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.plasma_recipes +/obj/item/stack/sheet/mineral/plasma/get_main_recipes() . = ..() + . += GLOB.plasma_recipes /obj/item/stack/sheet/mineral/plasma/attackby(obj/item/W as obj, mob/user as mob, params) if(W.get_temperature() > 300)//If the temperature of the object is over 300, then ignite @@ -202,10 +200,11 @@ GLOBAL_LIST_INIT(plasma_recipes, list ( \ item_state = "sheet-gold" singular_name = "gold bar" sheettype = "gold" - materials = list(MAT_GOLD=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/gold=MINERAL_MATERIAL_AMOUNT) grind_results = list(/datum/reagent/gold = 20) point_value = 20 merge_type = /obj/item/stack/sheet/mineral/gold + material_type = /datum/material/gold GLOBAL_LIST_INIT(gold_recipes, list ( \ new/datum/stack_recipe("golden door", /obj/structure/mineral_door/gold, 10, one_per_turf = 1, on_floor = 1), \ @@ -218,9 +217,9 @@ GLOBAL_LIST_INIT(gold_recipes, list ( \ new/datum/stack_recipe("CMO Statue", /obj/structure/statue/gold/cmo, 5, one_per_turf = 1, on_floor = 1), \ )) -/obj/item/stack/sheet/mineral/gold/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.gold_recipes +/obj/item/stack/sheet/mineral/gold/get_main_recipes() . = ..() + . += GLOB.gold_recipes /* * Silver @@ -231,10 +230,11 @@ GLOBAL_LIST_INIT(gold_recipes, list ( \ item_state = "sheet-silver" singular_name = "silver bar" sheettype = "silver" - materials = list(MAT_SILVER=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/silver=MINERAL_MATERIAL_AMOUNT) grind_results = list(/datum/reagent/silver = 20) point_value = 20 merge_type = /obj/item/stack/sheet/mineral/silver + material_type = /datum/material/silver tableVariant = /obj/structure/table/optable GLOBAL_LIST_INIT(silver_recipes, list ( \ @@ -247,9 +247,9 @@ GLOBAL_LIST_INIT(silver_recipes, list ( \ new/datum/stack_recipe("Med Borg Statue", /obj/structure/statue/silver/medborg, 5, one_per_turf = 1, on_floor = 1), \ )) -/obj/item/stack/sheet/mineral/silver/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.silver_recipes +/obj/item/stack/sheet/mineral/silver/get_main_recipes() . = ..() + . += GLOB.silver_recipes /* * Clown @@ -260,20 +260,21 @@ GLOBAL_LIST_INIT(silver_recipes, list ( \ item_state = "sheet-bananium" singular_name = "bananium sheet" sheettype = "bananium" - materials = list(MAT_BANANIUM=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/bananium=MINERAL_MATERIAL_AMOUNT) novariants = TRUE grind_results = list(/datum/reagent/consumable/banana = 20) point_value = 50 merge_type = /obj/item/stack/sheet/mineral/bananium + material_type = /datum/material/bananium GLOBAL_LIST_INIT(bananium_recipes, list ( \ new/datum/stack_recipe("bananium tile", /obj/item/stack/tile/mineral/bananium, 1, 4, 20), \ new/datum/stack_recipe("Clown Statue", /obj/structure/statue/bananium/clown, 5, one_per_turf = 1, on_floor = 1), \ )) -/obj/item/stack/sheet/mineral/bananium/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.bananium_recipes +/obj/item/stack/sheet/mineral/bananium/get_main_recipes() . = ..() + . += GLOB.bananium_recipes /* * Titanium @@ -289,17 +290,18 @@ GLOBAL_LIST_INIT(bananium_recipes, list ( \ throw_speed = 1 throw_range = 3 sheettype = "titanium" - materials = list(MAT_TITANIUM=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/titanium=MINERAL_MATERIAL_AMOUNT) point_value = 20 merge_type = /obj/item/stack/sheet/mineral/titanium + material_type = /datum/material/titanium GLOBAL_LIST_INIT(titanium_recipes, list ( \ new/datum/stack_recipe("titanium tile", /obj/item/stack/tile/mineral/titanium, 1, 4, 20), \ )) -/obj/item/stack/sheet/mineral/titanium/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.titanium_recipes +/obj/item/stack/sheet/mineral/titanium/get_main_recipes() . = ..() + . += GLOB.titanium_recipes /obj/item/stack/sheet/mineral/titanium/fifty amount = 50 @@ -319,9 +321,10 @@ GLOBAL_LIST_INIT(titanium_recipes, list ( \ throw_speed = 1 throw_range = 3 sheettype = "plastitanium" - materials = list(MAT_TITANIUM=MINERAL_MATERIAL_AMOUNT, MAT_PLASMA=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/titanium=MINERAL_MATERIAL_AMOUNT, /datum/material/plasma=MINERAL_MATERIAL_AMOUNT) point_value = 45 merge_type = /obj/item/stack/sheet/mineral/plastitanium + material_flags = MATERIAL_NO_EFFECTS /obj/item/stack/sheet/mineral/plastitanium/fifty amount = 50 @@ -330,9 +333,9 @@ GLOBAL_LIST_INIT(plastitanium_recipes, list ( \ new/datum/stack_recipe("plastitanium tile", /obj/item/stack/tile/mineral/plastitanium, 1, 4, 20), \ )) -/obj/item/stack/sheet/mineral/plastitanium/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.plastitanium_recipes +/obj/item/stack/sheet/mineral/plastitanium/get_main_recipes() . = ..() + . += GLOB.plastitanium_recipes /****************************** Others ****************************/ @@ -348,11 +351,26 @@ GLOBAL_LIST_INIT(adamantine_recipes, list( icon_state = "sheet-adamantine" item_state = "sheet-adamantine" singular_name = "adamantine sheet" + custom_materials = list(/datum/material/adamantine=MINERAL_MATERIAL_AMOUNT) merge_type = /obj/item/stack/sheet/mineral/adamantine -/obj/item/stack/sheet/mineral/adamantine/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.adamantine_recipes +/obj/item/stack/sheet/mineral/adamantine/get_main_recipes() . = ..() + . += GLOB.adamantine_recipes + +/* + * Runite + */ + +/obj/item/stack/sheet/mineral/runite + name = "Runite" + desc = "Rare material found in distant lands." + singular_name = "runite bar" + icon_state = "sheet-runite" + item_state = "sheet-runite" + custom_materials = list(/datum/material/runite=MINERAL_MATERIAL_AMOUNT) + merge_type = /obj/item/stack/sheet/mineral/runite + material_type = /datum/material/runite /* * Mythril @@ -363,6 +381,7 @@ GLOBAL_LIST_INIT(adamantine_recipes, list( item_state = "sheet-mythril" singular_name = "mythril sheet" novariants = TRUE + custom_materials = list(/datum/material/mythril=MINERAL_MATERIAL_AMOUNT) merge_type = /obj/item/stack/sheet/mineral/mythril /* @@ -384,9 +403,9 @@ GLOBAL_LIST_INIT(snow_recipes, list ( \ new/datum/stack_recipe("Snowball", /obj/item/toy/snowball, 1), \ )) -/obj/item/stack/sheet/mineral/snow/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.snow_recipes +/obj/item/stack/sheet/mineral/snow/get_main_recipes() . = ..() + . += GLOB.snow_recipes /* * Alien Alloy @@ -411,9 +430,9 @@ GLOBAL_LIST_INIT(abductor_recipes, list ( \ new/datum/stack_recipe("alien floor tile", /obj/item/stack/tile/mineral/abductor, 1, 4, 20), \ )) -/obj/item/stack/sheet/mineral/abductor/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.abductor_recipes +/obj/item/stack/sheet/mineral/abductor/get_main_recipes() . = ..() + . += GLOB.abductor_recipes /* * Coal diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 64875a4cc3..0eefb88417 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -24,7 +24,6 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ new/datum/stack_recipe("stool", /obj/structure/chair/stool, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("bar stool", /obj/structure/chair/stool/bar, one_per_turf = TRUE, on_floor = TRUE), \ - new/datum/stack_recipe("chair", /obj/structure/chair, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("bed", /obj/structure/bed, 2, one_per_turf = TRUE, on_floor = TRUE), \ //CIT CHANGE - adds sofas to metal recipe list new/datum/stack_recipe_list("sofas", list( \ @@ -107,14 +106,14 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ singular_name = "metal sheet" icon_state = "sheet-metal" item_state = "sheet-metal" - materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/iron=MINERAL_MATERIAL_AMOUNT) throwforce = 10 flags_1 = CONDUCT_1 resistance_flags = FIRE_PROOF merge_type = /obj/item/stack/sheet/metal grind_results = list(/datum/reagent/iron = 20) point_value = 2 - tableVariant = /obj/structure/table + material_type = /datum/material/iron /obj/item/stack/sheet/metal/ratvar_act() new /obj/item/stack/tile/brass(loc, amount) @@ -137,13 +136,13 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ amount = 5 /obj/item/stack/sheet/metal/cyborg - materials = list() + custom_materials = null is_cyborg = 1 cost = 500 -/obj/item/stack/sheet/metal/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.metal_recipes - return ..() +/obj/item/stack/sheet/metal/get_main_recipes() + . = ..() + . += GLOB.metal_recipes /obj/item/stack/sheet/metal/suicide_act(mob/living/carbon/user) user.visible_message("[user] begins whacking [user.p_them()]self over the head with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -169,7 +168,7 @@ GLOBAL_LIST_INIT(plasteel_recipes, list ( \ desc = "This sheet is an alloy of iron and plasma." icon_state = "sheet-plasteel" item_state = "sheet-metal" - materials = list(MAT_METAL=2000, MAT_PLASMA=2000) + custom_materials = list(/datum/material/iron=2000, /datum/material/plasma=2000) throwforce = 10 flags_1 = CONDUCT_1 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 80) @@ -178,10 +177,11 @@ GLOBAL_LIST_INIT(plasteel_recipes, list ( \ grind_results = list(/datum/reagent/iron = 20, /datum/reagent/toxin/plasma = 20) point_value = 23 tableVariant = /obj/structure/table/reinforced + material_flags = MATERIAL_NO_EFFECTS -/obj/item/stack/sheet/plasteel/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.plasteel_recipes - return ..() +/obj/item/stack/sheet/plasteel/get_main_recipes() + . = ..() + . += GLOB.plasteel_recipes /obj/item/stack/sheet/plasteel/twenty amount = 20 @@ -275,9 +275,9 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \ else . = ..() -/obj/item/stack/sheet/mineral/wood/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.wood_recipes - return ..() +/obj/item/stack/sheet/mineral/wood/get_main_recipes() + . = ..() + . += GLOB.wood_recipes /obj/item/stack/sheet/mineral/wood/twenty amount = 20 @@ -307,9 +307,9 @@ GLOBAL_LIST_INIT(bamboo_recipes, list ( \ merge_type = /obj/item/stack/sheet/mineral/bamboo grind_results = list(/datum/reagent/carbon = 5) -/obj/item/stack/sheet/mineral/bamboo/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.bamboo_recipes - return ..() +/obj/item/stack/sheet/mineral/bamboo/get_main_recipes() + . = ..() + . += GLOB.bamboo_recipes /obj/item/stack/sheet/mineral/bamboo/ten amount = 10 @@ -363,9 +363,9 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \ loom_result = /obj/item/stack/sheet/silk merge_type = /obj/item/stack/sheet/cloth -/obj/item/stack/sheet/cloth/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.cloth_recipes - return ..() +/obj/item/stack/sheet/cloth/get_main_recipes() + . = ..() + . += GLOB.cloth_recipes /obj/item/stack/sheet/cloth/ten amount = 10 @@ -381,21 +381,21 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \ new/datum/stack_recipe("white jumpsuit", /obj/item/clothing/under/color/white, 4, time = 40), \ new/datum/stack_recipe("white gloves", /obj/item/clothing/gloves/color/white, 2, time = 40), \ null, \ - new/datum/stack_recipe("silk string", /obj/item/weaponcrafting/silkstring, 2, time = 40), \ + new/datum/stack_recipe("silk string", /obj/item/weaponcrafting/silkstring, 1, time = 40), \ )) /obj/item/stack/sheet/silk name = "silk" - desc = "A long soft material. This one is just made out of cotton rather then any spiders or wyrms" + desc = "A long, soft material. Made out of refined cotton, instead of relying on the habits of spiders or silkworms." singular_name = "silk sheet" icon_state = "sheet-silk" item_state = "sheet-cloth" novariants = TRUE merge_type = /obj/item/stack/sheet/silk -/obj/item/stack/sheet/silk/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.silk_recipes - return ..() +/obj/item/stack/sheet/silk/get_main_recipes() + . = ..() + . += GLOB.silk_recipes /* * Durathread @@ -418,9 +418,9 @@ GLOBAL_LIST_INIT(durathread_recipes, list ( \ throwforce = 0 merge_type = /obj/item/stack/sheet/durathread -/obj/item/stack/sheet/durathread/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.durathread_recipes - return ..() +/obj/item/stack/sheet/durathread/get_main_recipes() + . = ..() + . += GLOB.durathread_recipes /* * Cardboard @@ -497,9 +497,9 @@ GLOBAL_LIST_INIT(cardboard_recipes, list ( \ merge_type = /obj/item/stack/sheet/cardboard novariants = TRUE -/obj/item/stack/sheet/cardboard/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.cardboard_recipes - return ..() +/obj/item/stack/sheet/cardboard/get_main_recipes() + . = ..() + . += GLOB.cardboard_recipes /obj/item/stack/sheet/cardboard/fifty amount = 50 @@ -555,9 +555,9 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list ( \ return FALSE return ..() -/obj/item/stack/sheet/runed_metal/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.runed_metal_recipes - return ..() +/obj/item/stack/sheet/runed_metal/get_main_recipes() + . = ..() + . += GLOB.runed_metal_recipes /obj/item/stack/sheet/runed_metal/fifty amount = 50 @@ -627,11 +627,9 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \ return ..() -/obj/item/stack/tile/brass/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.brass_recipes +/obj/item/stack/tile/brass/get_main_recipes() . = ..() - pixel_x = 0 - pixel_y = 0 + . += GLOB.brass_recipes /obj/item/stack/tile/brass/fifty amount = 50 @@ -675,11 +673,9 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \ to_chat(user, "Wha... what is this cheap imitation crap? This isn't brass at all!") ..() -/obj/item/stack/tile/bronze/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.bronze_recipes +/obj/item/stack/tile/bronze/get_main_recipes() . = ..() - pixel_x = 0 - pixel_y = 0 + . += GLOB.bronze_recipes /obj/item/stack/tile/bronze/thirty amount = 30 @@ -713,10 +709,6 @@ GLOBAL_LIST_INIT(bone_recipes, list( new /datum/stack_recipe("Skull Helmet", /obj/item/clothing/head/helmet/skull, 4, time = 30), \ new /datum/stack_recipe("Bone Armor", /obj/item/clothing/suit/armor/bone, 6, time = 30))) -/obj/item/stack/sheet/bone/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.bone_recipes - . = ..() - /obj/item/stack/sheet/bone name = "bones" icon = 'icons/obj/mining.dmi' @@ -733,6 +725,10 @@ GLOBAL_LIST_INIT(bone_recipes, list( grind_results = list(/datum/reagent/carbon = 10) merge_type = /obj/item/stack/sheet/bone +/obj/item/stack/sheet/bone/get_main_recipes() + . = ..() + . += GLOB.bone_recipes + /* * Plastic */ @@ -750,7 +746,7 @@ GLOBAL_LIST_INIT(plastic_recipes, list( singular_name = "plastic sheet" icon_state = "sheet-plastic" item_state = "sheet-plastic" - materials = list(MAT_PLASTIC=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/plastic=MINERAL_MATERIAL_AMOUNT) throwforce = 7 grind_results = list(/datum/reagent/glitter/white = 60) merge_type = /obj/item/stack/sheet/plastic @@ -761,9 +757,9 @@ GLOBAL_LIST_INIT(plastic_recipes, list( /obj/item/stack/sheet/plastic/five amount = 5 -/obj/item/stack/sheet/plastic/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.plastic_recipes +/obj/item/stack/sheet/plastic/get_main_recipes() . = ..() + . += GLOB.plastic_recipes GLOBAL_LIST_INIT(paperframe_recipes, list( new /datum/stack_recipe("paper frame separator", /obj/structure/window/paperframe, 2, one_per_turf = TRUE, on_floor = TRUE, time = 10), \ @@ -779,9 +775,10 @@ new /datum/stack_recipe("paper frame door", /obj/structure/mineral_door/paperfra resistance_flags = FLAMMABLE merge_type = /obj/item/stack/sheet/paperframes -/obj/item/stack/sheet/paperframes/Initialize() - recipes = GLOB.paperframe_recipes +/obj/item/stack/sheet/paperframes/get_main_recipes() . = ..() + . += GLOB.paperframe_recipes + /obj/item/stack/sheet/paperframes/five amount = 5 /obj/item/stack/sheet/paperframes/twenty diff --git a/code/game/objects/items/stacks/sheets/sheets.dm b/code/game/objects/items/stacks/sheets/sheets.dm index b7ab760659..378855707e 100644 --- a/code/game/objects/items/stacks/sheets/sheets.dm +++ b/code/game/objects/items/stacks/sheets/sheets.dm @@ -10,7 +10,7 @@ throw_range = 3 attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "smashed") novariants = FALSE - var/perunit = MINERAL_MATERIAL_AMOUNT + mats_per_stack = MINERAL_MATERIAL_AMOUNT var/sheettype = null //this is used for girders in the creation of walls/false walls var/point_value = 0 //turn-in value for the gulag stacker - loosely relative to its rarity var/is_fabric = FALSE //is this a valid material for the loom? @@ -18,6 +18,11 @@ var/pull_effort = 0 //amount of delay when pulling on the loom var/shard_type // the shard debris typepath left over by solar panels and windows etc. +/obj/item/stack/sheet/Initialize(mapload, new_amount, merge) + . = ..() + pixel_x = rand(-4, 4) + pixel_y = rand(-4, 4) + /** * Called on the glass sheet upon solar construction (duh): * Different glass sheets can modify different stas/vars, such as obj_integrity or efficiency diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 36c4992e8f..131980e43a 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -11,6 +11,7 @@ /obj/item/stack icon = 'icons/obj/stack_objects.dmi' gender = PLURAL + material_modifier = 0.01 var/list/datum/stack_recipe/recipes var/singular_name var/amount = 1 @@ -21,6 +22,9 @@ var/merge_type = null // This path and its children should merge with this stack, defaults to src.type var/full_w_class = WEIGHT_CLASS_NORMAL //The weight class the stack should have at amount > 2/3rds max_amount var/novariants = TRUE //Determines whether the item should update it's sprites based on amount. + var/mats_per_stack = 0 + ///Datum material type that this stack is made of + var/material_type //NOTE: When adding grind_results, the amounts should be for an INDIVIDUAL ITEM - these amounts will be multiplied by the stack size in on_grind() var/obj/structure/table/tableVariant // we tables now (stores table variant to be built from this stack) @@ -35,7 +39,6 @@ return TRUE /obj/item/stack/Initialize(mapload, new_amount, merge = TRUE) - . = ..() if(new_amount != null) amount = new_amount while(amount > max_amount) @@ -43,13 +46,29 @@ new type(loc, max_amount, FALSE) if(!merge_type) merge_type = type + if(custom_materials && custom_materials.len) + for(var/i in custom_materials) + custom_materials[getmaterialref(i)] = mats_per_stack * amount + . = ..() if(merge) for(var/obj/item/stack/S in loc) if(S.merge_type == merge_type) merge(S) + var/list/temp_recipes = get_main_recipes() + recipes = temp_recipes.Copy() + if(material_type) + var/datum/material/M = getmaterialref(material_type) //First/main material + for(var/i in M.categories) + switch(i) + if(MAT_CATEGORY_RIGID) + var/list/temp = SSmaterials.rigid_stack_recipes.Copy() + recipes += temp update_weight() update_icon() +/obj/item/stack/proc/get_main_recipes() + return list()//empty list + /obj/item/stack/proc/update_weight() if(amount <= (max_amount * (1/3))) w_class = CLAMP(full_w_class-2, WEIGHT_CLASS_TINY, full_w_class) @@ -204,6 +223,12 @@ use(R.req_amount * multiplier) log_craft("[O] crafted by [usr] at [loc_name(O.loc)]") + if(R.applies_mats && custom_materials && custom_materials.len) + var/list/used_materials = list() + for(var/i in custom_materials) + used_materials[getmaterialref(i)] = R.req_amount / R.res_amount * (MINERAL_MATERIAL_AMOUNT / custom_materials.len) + O.set_custom_materials(used_materials) + //START: oh fuck i'm so sorry if(istype(O, /obj/structure/windoor_assembly)) var/obj/structure/windoor_assembly/W = O @@ -288,6 +313,8 @@ amount -= used if(check) zero_amount() + for(var/i in custom_materials) + custom_materials[i] = amount * mats_per_stack update_icon() update_weight() return TRUE @@ -319,6 +346,10 @@ source.add_charge(amount * cost) else src.amount += amount + if(custom_materials && custom_materials.len) + for(var/i in custom_materials) + custom_materials[getmaterialref(i)] = MINERAL_MATERIAL_AMOUNT * src.amount + set_custom_materials() //Refresh update_icon() update_weight() @@ -426,8 +457,9 @@ var/on_floor = FALSE var/window_checks = FALSE var/placement_checks = FALSE + var/applies_mats = FALSE -/datum/stack_recipe/New(title, result_type, req_amount = 1, res_amount = 1, max_res_amount = 1,time = 0, one_per_turf = FALSE, on_floor = FALSE, window_checks = FALSE, placement_checks = FALSE ) +/datum/stack_recipe/New(title, result_type, req_amount = 1, res_amount = 1, max_res_amount = 1,time = 0, one_per_turf = FALSE, on_floor = FALSE, window_checks = FALSE, placement_checks = FALSE, applies_mats = FALSE) src.title = title @@ -440,6 +472,7 @@ src.on_floor = on_floor src.window_checks = window_checks src.placement_checks = placement_checks + src.applies_mats = applies_mats /* * Recipe list datum */ diff --git a/code/game/objects/items/stacks/tiles/tile_mineral.dm b/code/game/objects/items/stacks/tiles/tile_mineral.dm index 64be8853a7..50edc9d15a 100644 --- a/code/game/objects/items/stacks/tiles/tile_mineral.dm +++ b/code/game/objects/items/stacks/tiles/tile_mineral.dm @@ -5,7 +5,7 @@ icon_state = "tile_plasma" turf_type = /turf/open/floor/mineral/plasma mineralType = "plasma" - materials = list(MAT_PLASMA=500) + custom_materials = list(/datum/material/plasma=500) /obj/item/stack/tile/mineral/uranium name = "uranium tile" @@ -14,7 +14,7 @@ icon_state = "tile_uranium" turf_type = /turf/open/floor/mineral/uranium mineralType = "uranium" - materials = list(MAT_URANIUM=500) + custom_materials = list(/datum/material/uranium=500) /obj/item/stack/tile/mineral/gold name = "gold tile" @@ -23,7 +23,7 @@ icon_state = "tile_gold" turf_type = /turf/open/floor/mineral/gold mineralType = "gold" - materials = list(MAT_GOLD=500) + custom_materials = list(/datum/material/gold=500) /obj/item/stack/tile/mineral/silver name = "silver tile" @@ -32,7 +32,7 @@ icon_state = "tile_silver" turf_type = /turf/open/floor/mineral/silver mineralType = "silver" - materials = list(MAT_SILVER=500) + custom_materials = list(/datum/material/silver=500) /obj/item/stack/tile/mineral/diamond name = "diamond tile" @@ -41,7 +41,7 @@ icon_state = "tile_diamond" turf_type = /turf/open/floor/mineral/diamond mineralType = "diamond" - materials = list(MAT_DIAMOND=500) + custom_materials = list(/datum/material/diamond=500) /obj/item/stack/tile/mineral/bananium name = "bananium tile" @@ -50,7 +50,7 @@ icon_state = "tile_bananium" turf_type = /turf/open/floor/mineral/bananium mineralType = "bananium" - materials = list(MAT_BANANIUM=500) + custom_materials = list(/datum/material/bananium=500) /obj/item/stack/tile/mineral/abductor name = "alien floor tile" @@ -68,7 +68,7 @@ icon_state = "tile_shuttle" turf_type = /turf/open/floor/mineral/titanium mineralType = "titanium" - materials = list(MAT_TITANIUM=500) + custom_materials = list(/datum/material/titanium=500) /obj/item/stack/tile/mineral/plastitanium name = "plastitanium tile" @@ -77,4 +77,5 @@ icon_state = "tile_darkshuttle" turf_type = /turf/open/floor/mineral/plastitanium mineralType = "plastitanium" - materials = list(MAT_TITANIUM=250, MAT_PLASMA=250) \ No newline at end of file + custom_materials = list(/datum/material/titanium=250, /datum/material/plasma=250) + material_flags = MATERIAL_NO_EFFECTS \ No newline at end of file diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index fa4e5a3886..2e537d3eff 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -9,6 +9,7 @@ throw_speed = 3 throw_range = 7 max_amount = 60 + mats_per_stack = 500 var/turf_type = null var/mineralType = null novariants = TRUE @@ -434,7 +435,7 @@ desc = "Those could work as a pretty decent throwing weapon." icon_state = "tile" force = 6 - materials = list(MAT_METAL=500) + custom_materials = list(/datum/material/iron=500) throwforce = 10 flags_1 = CONDUCT_1 turf_type = /turf/open/floor/plasteel @@ -444,6 +445,6 @@ /obj/item/stack/tile/plasteel/cyborg desc = "The ground you walk on." //Not the usual floor tile desc as that refers to throwing, Cyborgs can't do that - RR - materials = list() // All other Borg versions of items have no Metal or Glass - RR + custom_materials = null // All other Borg versions of items have no Metal or Glass - RR is_cyborg = 1 cost = 125 diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index 67e54128a4..eacf48d96d 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -114,6 +114,7 @@ /obj/item/storage/bag/ore/ComponentInitialize() . = ..() + AddComponent(/datum/component/rad_insulation, 0.01) //please datum mats no more cancer var/datum/component/storage/concrete/stack/STR = GetComponent(/datum/component/storage/concrete/stack) STR.allow_quick_empty = TRUE STR.can_hold = typecacheof(list(/obj/item/stack/ore)) @@ -321,7 +322,7 @@ throw_range = 5 w_class = WEIGHT_CLASS_BULKY flags_1 = CONDUCT_1 - materials = list(MAT_METAL=3000) + custom_materials = list(/datum/material/iron=3000) /obj/item/storage/bag/tray/ComponentInitialize() . = ..() diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 25dd746008..829c89be0e 100755 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -334,7 +334,7 @@ desc = "Proves to the world that you are the strongest!" icon_state = "championbelt" item_state = "champion" - materials = list(MAT_GOLD=400) + custom_materials = list(/datum/material/gold=400) /obj/item/storage/belt/champion/ComponentInitialize() . = ..() diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index bfffe0fc60..f1db164b31 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -3,8 +3,8 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) /obj/item/storage/toolbox name = "toolbox" desc = "Danger. Very robust." - icon_state = "red" - item_state = "toolbox_red" + icon_state = "toolbox_default" + item_state = "toolbox_default" lefthand_file = 'icons/mob/inhands/equipment/toolbox_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/toolbox_righthand.dmi' flags_1 = CONDUCT_1 @@ -13,16 +13,16 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) throw_speed = 2 throw_range = 7 w_class = WEIGHT_CLASS_BULKY - materials = list(MAT_METAL = 500) attack_verb = list("robusted") hitsound = 'sound/weapons/smash.ogg' + custom_materials = list(/datum/material/iron = 500) + material_flags = MATERIAL_COLOR var/latches = "single_latch" var/has_latches = TRUE var/can_rubberify = TRUE rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE //very protecc too /obj/item/storage/toolbox/Initialize(mapload) - . = ..() if(has_latches) if(prob(10)) latches = "double_latch" @@ -30,6 +30,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) latches = "triple_latch" if(mapload && can_rubberify && prob(5)) rubberify() + . = ..() update_icon() /obj/item/storage/toolbox/update_icon() @@ -48,6 +49,9 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) /obj/item/storage/toolbox/emergency name = "emergency toolbox" + icon_state = "red" + item_state = "toolbox_red" + material_flags = NONE /obj/item/storage/toolbox/emergency/PopulateContents() new /obj/item/crowbar/red(src) @@ -72,6 +76,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) name = "mechanical toolbox" icon_state = "blue" item_state = "toolbox_blue" + material_flags = NONE /obj/item/storage/toolbox/mechanical/PopulateContents() new /obj/item/screwdriver(src) @@ -100,6 +105,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) name = "electrical toolbox" icon_state = "yellow" item_state = "toolbox_yellow" + material_flags = NONE /obj/item/storage/toolbox/electrical/PopulateContents() var/pickedcolor = pick("red","yellow","green","blue","pink","orange","cyan","white") @@ -121,6 +127,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) desc = "A toolbox painted black with a red stripe. It looks more heavier than normal toolboxes." force = 15 throwforce = 18 + material_flags = NONE /obj/item/storage/toolbox/syndicate/ComponentInitialize() . = ..() @@ -140,6 +147,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) name = "mechanical toolbox" icon_state = "blue" item_state = "toolbox_blue" + material_flags = NONE /obj/item/storage/toolbox/drone/PopulateContents() var/pickedcolor = pick("red","yellow","green","blue","pink","orange","cyan","white") @@ -161,6 +169,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) w_class = WEIGHT_CLASS_HUGE attack_verb = list("robusted", "crushed", "smashed") can_rubberify = FALSE + material_flags = NONE var/fabricator_type = /obj/item/clockwork/replica_fabricator/scarab /obj/item/storage/toolbox/brass/ComponentInitialize() @@ -202,6 +211,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) w_class = WEIGHT_CLASS_HUGE //heyo no bohing this! force = 18 //spear damage can_rubberify = FALSE + material_flags = NONE /obj/item/storage/toolbox/plastitanium/afterattack(atom/A, mob/user, proximity) . = ..() @@ -217,6 +227,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) icon_state = "green" item_state = "toolbox_green" w_class = WEIGHT_CLASS_GIGANTIC //Holds more than a regular toolbox! + material_flags = NONE /obj/item/storage/toolbox/artistic/ComponentInitialize() . = ..() @@ -257,6 +268,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) icon_state = "gold" item_state = "toolbox_gold" has_latches = FALSE + material_flags = NONE /obj/item/storage/toolbox/gold_real/PopulateContents() new /obj/item/screwdriver/nuke(src) @@ -282,6 +294,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) force = 0 throwforce = 0 can_rubberify = FALSE + material_flags = NONE /obj/item/storage/toolbox/proc/rubberify() name = "rubber [name]" @@ -289,7 +302,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) desc = replacetext(desc, "robust", "safe") desc = replacetext(desc, "heavier", "bouncier") DISABLE_BITFIELD(flags_1, CONDUCT_1) - materials = typelist("materials", null) + custom_materials = null damtype = STAMINA force += 3 //to compensate the higher stamina K.O. threshold compared to actual health. throwforce += 3 @@ -311,12 +324,13 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) name = "rubber toolbox" desc = "Bouncy. Very safe." flags_1 = null - materials = null + custom_materials = null damtype = STAMINA force = 15 throwforce = 15 attack_verb = list("robusted", "bounced") can_rubberify = FALSE //we are already the future. + material_flags = NONE /obj/item/storage/toolbox/rubber/Initialize() icon_state = pick("blue", "red", "yellow", "green") diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm index 7157103f14..58e16ad615 100644 --- a/code/game/objects/items/tanks/tanks.dm +++ b/code/game/objects/items/tanks/tanks.dm @@ -11,7 +11,7 @@ throwforce = 10 throw_speed = 1 throw_range = 4 - materials = list(MAT_METAL = 500) + custom_materials = list(/datum/material/iron = 500) actions_types = list(/datum/action/item_action/set_internals) armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 30) var/datum/gas_mixture/air_contents = null diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm index 347717dd63..3dab4c4c04 100644 --- a/code/game/objects/items/teleportation.dm +++ b/code/game/objects/items/teleportation.dm @@ -24,7 +24,7 @@ righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' throw_speed = 3 throw_range = 7 - materials = list(MAT_METAL=400) + custom_materials = list(/datum/material/iron=400) /obj/item/locator/attack_self(mob/user) user.set_machine(src) @@ -125,7 +125,7 @@ w_class = WEIGHT_CLASS_SMALL throw_speed = 3 throw_range = 5 - materials = list(MAT_METAL=10000) + custom_materials = list(/datum/material/iron=10000) armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF var/list/active_portal_pairs diff --git a/code/game/objects/items/tools/crowbar.dm b/code/game/objects/items/tools/crowbar.dm index 7a6318cc4b..91e8c49e5a 100644 --- a/code/game/objects/items/tools/crowbar.dm +++ b/code/game/objects/items/tools/crowbar.dm @@ -11,7 +11,7 @@ force = 5 throwforce = 7 w_class = WEIGHT_CLASS_SMALL - materials = list(MAT_METAL=50) + custom_materials = list(/datum/material/iron=50) attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked") tool_behaviour = TOOL_CROWBAR @@ -55,7 +55,7 @@ w_class = WEIGHT_CLASS_NORMAL throw_speed = 3 throw_range = 3 - materials = list(MAT_METAL=70) + custom_materials = list(/datum/material/iron=70) icon_state = "crowbar_large" item_state = "crowbar" toolspeed = 0.5 @@ -76,7 +76,7 @@ item_state = "jawsoflife" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25) + custom_materials = list(/datum/material/iron=150,/datum/material/silver=50,/datum/material/titanium=25) usesound = 'sound/items/jaws_pry.ogg' force = 15 diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm index 115598fead..a36314ccb7 100644 --- a/code/game/objects/items/tools/screwdriver.dm +++ b/code/game/objects/items/tools/screwdriver.dm @@ -13,7 +13,7 @@ throwforce = 5 throw_speed = 3 throw_range = 5 - materials = list(MAT_METAL=75) + custom_materials = list(/datum/material/iron=75) attack_verb = list("stabbed") hitsound = 'sound/weapons/bladeslice.ogg' usesound = list('sound/items/screwdriver.ogg', 'sound/items/screwdriver2.ogg') @@ -114,7 +114,7 @@ item_state = "drill" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25) //done for balance reasons, making them high value for research, but harder to get + custom_materials = list(/datum/material/iron=150,/datum/material/silver=50,/datum/material/titanium=25) //done for balance reasons, making them high value for research, but harder to get force = 8 //might or might not be too high, subject to change w_class = WEIGHT_CLASS_SMALL throwforce = 8 diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index a74ce67128..b172cc25dd 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -21,7 +21,7 @@ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30) resistance_flags = FIRE_PROOF - materials = list(MAT_METAL=70, MAT_GLASS=30) + custom_materials = list(/datum/material/iron=70, /datum/material/glass=30) var/welding = 0 //Whether or not the welding tool is off(0), on(1) or currently welding(2) var/status = TRUE //Whether the welder is secured or unsecured (able to attach rods to it to make a flamethrower) var/max_fuel = 20 //The max amount of fuel the welder can hold @@ -297,7 +297,7 @@ desc = "A slightly larger welder with a larger tank." icon_state = "indwelder" max_fuel = 40 - materials = list(MAT_GLASS=60) + custom_materials = list(/datum/material/glass=60) /obj/item/weldingtool/largetank/cyborg name = "integrated welding tool" @@ -316,7 +316,7 @@ icon_state = "miniwelder" max_fuel = 10 w_class = WEIGHT_CLASS_TINY - materials = list(MAT_METAL=30, MAT_GLASS=10) + custom_materials = list(/datum/material/iron=30, /datum/material/glass=10) change_icons = 0 /obj/item/weldingtool/mini/flamethrower_screwdriver() @@ -342,7 +342,7 @@ icon_state = "upindwelder" item_state = "upindwelder" max_fuel = 80 - materials = list(MAT_METAL=70, MAT_GLASS=120) + custom_materials = list(/datum/material/iron=70, /datum/material/glass=120) /obj/item/weldingtool/experimental name = "experimental welding tool" @@ -350,7 +350,7 @@ icon_state = "exwelder" item_state = "exwelder" max_fuel = 40 - materials = list(MAT_METAL=70, MAT_GLASS=120) + custom_materials = list(/datum/material/iron=70, /datum/material/glass=120) var/last_gen = 0 change_icons = 0 can_off_process = 1 diff --git a/code/game/objects/items/tools/wirecutters.dm b/code/game/objects/items/tools/wirecutters.dm index 33fe8052e9..37d8fe8824 100644 --- a/code/game/objects/items/tools/wirecutters.dm +++ b/code/game/objects/items/tools/wirecutters.dm @@ -12,7 +12,7 @@ throw_speed = 3 throw_range = 7 w_class = WEIGHT_CLASS_SMALL - materials = list(MAT_METAL=80) + custom_materials = list(/datum/material/iron=80) attack_verb = list("pinched", "nipped") hitsound = 'sound/items/wirecutter.ogg' usesound = 'sound/items/wirecutter.ogg' @@ -98,7 +98,7 @@ icon_state = "jaws_cutter" item_state = "jawsoflife" - materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25) + custom_materials = list(/datum/material/iron=150,/datum/material/silver=50,/datum/material/titanium=25) usesound = 'sound/items/jaws_cut.ogg' toolspeed = 0.25 random_color = FALSE diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm index b20fab2760..678096db28 100644 --- a/code/game/objects/items/tools/wrench.dm +++ b/code/game/objects/items/tools/wrench.dm @@ -11,7 +11,7 @@ throwforce = 7 w_class = WEIGHT_CLASS_SMALL usesound = 'sound/items/ratchet.ogg' - materials = list(MAT_METAL=150) + custom_materials = list(/datum/material/iron=150) attack_verb = list("bashed", "battered", "bludgeoned", "whacked") tool_behaviour = TOOL_WRENCH @@ -59,7 +59,7 @@ lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' usesound = 'sound/items/drill_use.ogg' - materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25) + custom_materials = list(/datum/material/iron=150,/datum/material/silver=50,/datum/material/titanium=25) //done for balance reasons, making them high value for research, but harder to get force = 8 //might or might not be too high, subject to change w_class = WEIGHT_CLASS_SMALL diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index a95eefe1ea..fd897174cf 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -143,7 +143,7 @@ flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_NORMAL - materials = list(MAT_METAL=10, MAT_GLASS=10) + custom_materials = list(/datum/material/iron=10, /datum/material/glass=10) attack_verb = list("struck", "pistol whipped", "hit", "bashed") var/bullets = 7 @@ -197,7 +197,7 @@ icon = 'icons/obj/ammo.dmi' icon_state = "357OLD-7" w_class = WEIGHT_CLASS_TINY - materials = list(MAT_METAL=10, MAT_GLASS=10) + custom_materials = list(/datum/material/iron=10, /datum/material/glass=10) var/amount_left = 7 /obj/item/toy/ammo/gun/update_icon() diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index 72a5c5b1da..0cd60804db 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -592,7 +592,7 @@ throw_speed = 4 embedding = list("embedded_impact_pain_multiplier" = 3, "embed_chance" = 90) armour_penetration = 10 - materials = list(MAT_METAL=1150, MAT_GLASS=2075) + custom_materials = list(/datum/material/iron=1150, /datum/material/glass=2075) hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "poked", "jabbed", "torn", "gored") sharpness = IS_SHARP @@ -708,7 +708,7 @@ throwforce = 13 throw_speed = 2 throw_range = 4 - materials = list(MAT_METAL=13000) + custom_materials = list(/datum/material/iron=13000) attack_verb = list("sawed", "torn", "cut", "chopped", "diced") hitsound = "swing_hit" sharpness = IS_SHARP diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index ea9899b2c2..7499d9de09 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -252,7 +252,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 force = 9 throwforce = 10 w_class = WEIGHT_CLASS_NORMAL - materials = list(MAT_METAL=1150, MAT_GLASS=75) + custom_materials = list(/datum/material/iron=1150, /datum/material/glass=75) attack_verb = list("hit", "bludgeoned", "whacked", "bonked") /obj/item/wirerod/attackby(obj/item/I, mob/user, params) @@ -296,7 +296,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 embedding = list("embedded_pain_multiplier" = 4, "embed_chance" = 100, "embedded_fall_chance" = 0) w_class = WEIGHT_CLASS_SMALL sharpness = IS_SHARP - materials = list(MAT_METAL=500, MAT_GLASS=500) + custom_materials = list(/datum/material/iron=500, /datum/material/glass=500) resistance_flags = FIRE_PROOF @@ -312,7 +312,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 throwforce = 5 throw_speed = 3 throw_range = 6 - materials = list(MAT_METAL=12000) + custom_materials = list(/datum/material/iron=12000) hitsound = 'sound/weapons/genhit.ogg' attack_verb = list("stubbed", "poked") resistance_flags = FIRE_PROOF @@ -396,7 +396,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 force = 5 throwforce = 5 w_class = WEIGHT_CLASS_SMALL - materials = list(MAT_METAL=50) + custom_materials = list(/datum/material/iron=50) attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed") /obj/item/staff diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm index 2d99f0e073..2fd6cf9f4c 100644 --- a/code/game/objects/obj_defense.dm +++ b/code/game/objects/obj_defense.dm @@ -6,20 +6,19 @@ return if(sound_effect) play_attack_sound(damage_amount, damage_type, damage_flag) - if(!(resistance_flags & INDESTRUCTIBLE) && obj_integrity > 0) - damage_amount = run_obj_armor(damage_amount, damage_type, damage_flag, attack_dir, armour_penetration) - if(damage_amount >= DAMAGE_PRECISION) - . = damage_amount - var/old_integ = obj_integrity - obj_integrity = max(old_integ - damage_amount, 0) - if(obj_integrity <= 0) - var/int_fail = integrity_failure - if(int_fail && old_integ > int_fail) - obj_break(damage_flag) - obj_destruction(damage_flag) - else if(integrity_failure) - if(obj_integrity <= integrity_failure) - obj_break(damage_flag) + if((resistance_flags & INDESTRUCTIBLE) || obj_integrity <= 0) + return + damage_amount = run_obj_armor(damage_amount, damage_type, damage_flag, attack_dir, armour_penetration) + if(damage_amount < DAMAGE_PRECISION) + return + . = damage_amount + obj_integrity = max(obj_integrity - damage_amount, 0) + //BREAKING FIRST + if(integrity_failure && obj_integrity <= integrity_failure * max_integrity) + obj_break(damage_flag) + //DESTROYING SECOND + if(obj_integrity <= 0) + obj_destruction(damage_flag) //returns the damage value of the attack after processing the obj's various armor protections /obj/proc/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir, armour_penetration = 0) @@ -271,7 +270,7 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e //changes max_integrity while retaining current health percentage //returns TRUE if the obj broke, FALSE otherwise -/obj/proc/modify_max_integrity(new_max, can_break = TRUE, damage_type = BRUTE, new_failure_integrity = null) +/obj/proc/modify_max_integrity(new_max, can_break = TRUE, damage_type = BRUTE) var/current_integrity = obj_integrity var/current_max = max_integrity @@ -282,10 +281,7 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e max_integrity = new_max - if(new_failure_integrity != null) - integrity_failure = new_failure_integrity - - if(can_break && integrity_failure && current_integrity <= integrity_failure) + if(can_break && integrity_failure && current_integrity <= integrity_failure * max_integrity) obj_break(damage_type) return TRUE return FALSE diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 7fbdddbdc4..3fc183edc6 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -12,7 +12,7 @@ var/datum/armor/armor var/obj_integrity //defaults to max_integrity var/max_integrity = 500 - var/integrity_failure = 0 //0 if we have no special broken behavior + var/integrity_failure = 0 //0 if we have no special broken behavior, otherwise is a percentage of at what point the obj breaks. 0.5 being 50% var/resistance_flags = NONE // INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ON_FIRE | UNACIDABLE | ACID_PROOF @@ -46,7 +46,6 @@ return ..() /obj/Initialize() - . = ..() if (islist(armor)) armor = getArmor(arglist(armor)) else if (!armor) @@ -56,6 +55,9 @@ if(obj_integrity == null) obj_integrity = max_integrity + + . = ..() //Do this after, else mat datums is mad. + if (set_obj_flags) var/flagslist = splittext(set_obj_flags,";") var/list/string_to_objflag = GLOB.bitfields["obj_flags"] diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm index 3cc40c8415..32e40bedec 100644 --- a/code/game/objects/structures/aliens.dm +++ b/code/game/objects/structures/aliens.dm @@ -218,7 +218,7 @@ density = FALSE anchored = TRUE max_integrity = 100 - integrity_failure = 5 + integrity_failure = 0.05 var/status = GROWING //can be GROWING, GROWN or BURST; all mutually exclusive layer = MOB_LAYER var/obj/item/clothing/mask/facehugger/child @@ -232,7 +232,7 @@ addtimer(CALLBACK(src, .proc/Grow), rand(MIN_GROWTH_TIME, MAX_GROWTH_TIME)) proximity_monitor = new(src, status == GROWN ? 1 : 0) if(status == BURST) - obj_integrity = integrity_failure + obj_integrity = integrity_failure * max_integrity /obj/structure/alien/egg/update_icon() ..() diff --git a/code/game/objects/structures/barsigns.dm b/code/game/objects/structures/barsigns.dm index b72a4b816e..d2fff9649d 100644 --- a/code/game/objects/structures/barsigns.dm +++ b/code/game/objects/structures/barsigns.dm @@ -5,7 +5,7 @@ icon_state = "empty" req_access = list(ACCESS_BAR) max_integrity = 500 - integrity_failure = 250 + integrity_failure = 0.5 armor = list("melee" = 20, "bullet" = 20, "laser" = 20, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) buildable_sign = 0 var/list/barsigns=list() @@ -308,28 +308,26 @@ icon = "Meow Mix" desc = "No, we don't serve catnip, officer!" +/datum/barsign/the_hive + name = "The Hive" + icon = "thehive" + desc = "Comb in for some sweet drinks! Not known for serving any sappy drink." + /datum/barsign/hiddensigns hidden = TRUE - //Hidden signs list below this point - - /datum/barsign/hiddensigns/empbarsign name = "Haywire Barsign" icon = "empbarsign" desc = "Something has gone very wrong." - - /datum/barsign/hiddensigns/syndibarsign name = "Syndi Cat Takeover" icon = "syndibarsign" desc = "Syndicate or die." - - /datum/barsign/hiddensigns/signoff name = "Bar Sign" icon = "empty" diff --git a/code/game/objects/structures/beds_chairs/bed.dm b/code/game/objects/structures/beds_chairs/bed.dm index e9e09ddc91..5f01a27825 100644 --- a/code/game/objects/structures/beds_chairs/bed.dm +++ b/code/game/objects/structures/beds_chairs/bed.dm @@ -17,7 +17,7 @@ buckle_lying = TRUE resistance_flags = FLAMMABLE max_integrity = 100 - integrity_failure = 30 + integrity_failure = 0.35 var/buildstacktype = /obj/item/stack/sheet/metal var/buildstackamount = 2 var/bolts = TRUE diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index cc1a3c0922..fbb98f4299 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -8,7 +8,8 @@ buckle_lying = 0 //you sit in a chair, not lay resistance_flags = NONE max_integrity = 250 - integrity_failure = 25 + integrity_failure = 0.1 + custom_materials = list(/datum/material/iron = 2000) var/buildstacktype = /obj/item/stack/sheet/metal var/buildstackamount = 1 var/item_chair = /obj/item/chair // if null it can't be picked up @@ -53,8 +54,13 @@ /obj/structure/chair/deconstruct() // If we have materials, and don't have the NOCONSTRUCT flag - if(buildstacktype && (!(flags_1 & NODECONSTRUCT_1))) - new buildstacktype(loc,buildstackamount) + if(!(flags_1 & NODECONSTRUCT_1)) + if(buildstacktype) + new buildstacktype(loc,buildstackamount) + else + for(var/i in custom_materials) + var/datum/material/M = i + new M.sheet_type(loc, FLOOR(custom_materials[M] / MINERAL_MATERIAL_AMOUNT, 1)) ..() /obj/structure/chair/attack_paw(mob/user) @@ -142,6 +148,15 @@ handle_rotation(newdir) // Chair types + + +///Material chair +/obj/structure/chair/greyscale + icon_state = "chair_greyscale" + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR + item_chair = /obj/item/chair/greyscale + buildstacktype = null //Custom mats handle this + /obj/structure/chair/wood icon_state = "wooden_chair" name = "wooden chair" @@ -271,7 +286,8 @@ if(!usr.canUseTopic(src, BE_CLOSE, ismonkey(usr))) return usr.visible_message("[usr] grabs \the [src.name].", "You grab \the [src.name].") - var/C = new item_chair(loc) + var/obj/item/C = new item_chair(loc) + C.set_custom_materials(custom_materials) TransferComponents(C) usr.put_in_hands(C) qdel(src) @@ -296,7 +312,7 @@ throw_range = 3 hitsound = 'sound/items/trayhit1.ogg' hit_reaction_chance = 50 - materials = list(MAT_METAL = 2000) + custom_materials = list(/datum/material/iron = 2000) var/break_chance = 5 //Likely hood of smashing the chair. var/obj/structure/chair/origin_type = /obj/structure/chair @@ -324,6 +340,7 @@ user.visible_message("[user] rights \the [src.name].", "You right \the [name].") var/obj/structure/chair/C = new origin_type(get_turf(loc)) + C.set_custom_materials(custom_materials) TransferComponents(C) C.setDir(dir) qdel(src) @@ -357,6 +374,12 @@ C.Knockdown(20) smash(user) +/obj/item/chair/greyscale + icon_state = "chair_greyscale_toppled" + item_state = "chair_greyscale" + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR + origin_type = /obj/structure/chair/greyscale + /obj/item/chair/stool name = "stool" icon_state = "stool_toppled" @@ -482,7 +505,7 @@ max_integrity = 70 hitsound = 'sound/weapons/genhit1.ogg' origin_type = /obj/structure/chair/wood - materials = null + custom_materials = null break_chance = 50 /obj/item/chair/wood/narsie_act() diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index daf15832fb..71fcef753c 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -13,7 +13,7 @@ var/large = TRUE var/wall_mounted = 0 //never solid (You can always pass over it) max_integrity = 200 - integrity_failure = 50 + integrity_failure = 0.25 armor = list("melee" = 20, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 60) var/breakout_time = 1200 var/message_cooldown diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 70533df0ad..8a5b678f22 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -8,7 +8,7 @@ resistance_flags = ACID_PROOF armor = list("melee" = 30, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 100) max_integrity = 200 - integrity_failure = 50 + integrity_failure = 0.25 var/obj/item/showpiece = null var/alert = TRUE var/open = FALSE diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm index 7014081042..2124c83d7d 100644 --- a/code/game/objects/structures/extinguisher.dm +++ b/code/game/objects/structures/extinguisher.dm @@ -6,7 +6,7 @@ anchored = TRUE density = FALSE max_integrity = 200 - integrity_failure = 50 + integrity_failure = 0.25 var/obj/item/extinguisher/stored_extinguisher var/opened = FALSE diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm index 448734d917..8457a397a9 100644 --- a/code/game/objects/structures/fireaxe.dm +++ b/code/game/objects/structures/fireaxe.dm @@ -7,7 +7,7 @@ density = FALSE armor = list("melee" = 50, "bullet" = 20, "laser" = 0, "energy" = 100, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 50) max_integrity = 150 - integrity_failure = 50 + integrity_failure = 0.33 var/locked = TRUE var/open = FALSE var/obj/item/twohanded/fireaxe/fireaxe diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 0d4444303e..0f43040c87 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -10,7 +10,7 @@ layer = BELOW_OBJ_LAYER armor = list("melee" = 50, "bullet" = 70, "laser" = 70, "energy" = 100, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 0, "acid" = 0) max_integrity = 50 - integrity_failure = 20 + integrity_failure = 0.4 var/rods_type = /obj/item/stack/rods var/rods_amount = 2 var/rods_broken = TRUE diff --git a/code/game/objects/structures/holosign.dm b/code/game/objects/structures/holosign.dm index 92fda29101..fc1e642468 100644 --- a/code/game/objects/structures/holosign.dm +++ b/code/game/objects/structures/holosign.dm @@ -110,10 +110,10 @@ CanAtmosPass = ATMOS_PASS_NO resistance_flags = FIRE_PROOF -/obj/structure/holosign/barrier/combolock/blocksTemperature() +/obj/structure/holosign/barrier/combifan/blocksTemperature() return TRUE -/obj/structure/holosign/barrier/combolock/Initialize() +/obj/structure/holosign/barrier/combifan/Initialize() . = ..() air_update_turf(TRUE) diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index d4645ec69a..e5ca09c7b8 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -7,7 +7,7 @@ density = FALSE anchored = TRUE max_integrity = 200 - integrity_failure = 100 + integrity_failure = 0.5 /obj/structure/mirror/Initialize(mapload) . = ..() diff --git a/code/game/objects/structures/table_frames.dm b/code/game/objects/structures/table_frames.dm index f62bed878b..e3cd053d94 100644 --- a/code/game/objects/structures/table_frames.dm +++ b/code/game/objects/structures/table_frames.dm @@ -31,21 +31,34 @@ return var/obj/item/stack/material = I - if (istype(I, /obj/item/stack) && material?.tableVariant) - if(material.get_amount() < 1) - to_chat(user, "You need one [material.name] sheet to do this!") - return - to_chat(user, "You start adding [material] to [src]...") - if(do_after(user, 20, target = src) && material.use(1)) - make_new_table(material.tableVariant) + if (istype(I, /obj/item/stack)) + if(material?.tableVariant) + if(material.get_amount() < 1) + to_chat(user, "You need one [material.name] sheet to do this!") + return + to_chat(user, "You start adding [material] to [src]...") + if(do_after(user, 20, target = src) && material.use(1)) + make_new_table(material.tableVariant) + else + if(material.get_amount() < 1) + to_chat(user, "You need one metal sheet to do this!") + return + to_chat(user, "You start adding [material] to [src]...") + if(do_after(user, 20, target = src) && material.use(1)) + var/list/material_list = list() + if(material.material_type) + material_list[material.material_type] = MINERAL_MATERIAL_AMOUNT + make_new_table(/obj/structure/table/greyscale, material_list) else return ..() -/obj/structure/table_frame/proc/make_new_table(table_type) //makes sure the new table made retains what we had as a frame +/obj/structure/table_frame/proc/make_new_table(table_type, custom_materials) //makes sure the new table made retains what we had as a frame var/obj/structure/table/T = new table_type(loc) T.frame = type T.framestack = framestack T.framestackamount = framestackamount + if(custom_materials) + T.set_custom_materials(custom_materials) qdel(src) /obj/structure/table_frame/deconstruct(disassembled = TRUE) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index f64f740a27..4eba21b8f9 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -31,9 +31,9 @@ var/framestackamount = 2 var/deconstruction_ready = 1 max_integrity = 100 - integrity_failure = 30 + integrity_failure = 0.33 smooth = SMOOTH_TRUE - canSmoothWith = list(/obj/structure/table, /obj/structure/table/reinforced) + canSmoothWith = list(/obj/structure/table, /obj/structure/table/reinforced, /obj/structure/table/greyscale) /obj/structure/table/examine(mob/user) . = ..() @@ -197,13 +197,23 @@ /obj/structure/table/deconstruct(disassembled = TRUE, wrench_disassembly = 0) if(!(flags_1 & NODECONSTRUCT_1)) var/turf/T = get_turf(src) - new buildstack(T, buildstackamount) + if(buildstack) + new buildstack(T, buildstackamount) + else + for(var/i in custom_materials) + var/datum/material/M = i + new M.sheet_type(T, FLOOR(custom_materials[M] / MINERAL_MATERIAL_AMOUNT, 1)) if(!wrench_disassembly) new frame(T) else new framestack(T, framestackamount) qdel(src) +/obj/structure/table/greyscale + icon = 'icons/obj/smooth_structures/table_greyscale.dmi' + icon_state = "table" + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR + buildstack = null //No buildstack, so generate from mat datums /* * Glass tables @@ -456,9 +466,8 @@ icon_state = "r_table" deconstruction_ready = 0 buildstack = /obj/item/stack/sheet/plasteel - canSmoothWith = list(/obj/structure/table/reinforced, /obj/structure/table) max_integrity = 200 - integrity_failure = 50 + integrity_failure = 0.25 armor = list("melee" = 10, "bullet" = 30, "laser" = 30, "energy" = 100, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70) /obj/structure/table/reinforced/deconstruction_hints(mob/user) @@ -674,7 +683,7 @@ icon = 'icons/obj/items_and_weapons.dmi' icon_state = "rack_parts" flags_1 = CONDUCT_1 - materials = list(MAT_METAL=2000) + custom_materials = list(/datum/material/iron=2000) var/building = FALSE /obj/item/rack_parts/attackby(obj/item/W, mob/user, params) diff --git a/code/game/objects/structures/traps.dm b/code/game/objects/structures/traps.dm index 2cdc082ef3..3f559382f0 100644 --- a/code/game/objects/structures/traps.dm +++ b/code/game/objects/structures/traps.dm @@ -135,7 +135,19 @@ density = TRUE time_between_triggers = 1200 //Exists for 2 minutes - /obj/structure/trap/ward/New() ..() QDEL_IN(src, time_between_triggers) + +/obj/structure/trap/cult + name = "unholy trap" + desc = "A trap that rings with unholy energy. You think you hear... chittering?" + icon_state = "trap-cult" + +/obj/structure/trap/cult/trap_effect(mob/living/L) + to_chat(L, "With a crack, the hostile constructs come out of hiding, stunning you!") + L.electrocute_act(10, src, safety = TRUE) // electrocute act does a message. + L.Knockdown(20) + new /mob/living/simple_animal/hostile/construct/proteon/hostile(loc) + new /mob/living/simple_animal/hostile/construct/proteon/hostile(loc) + QDEL_IN(src, 30) \ No newline at end of file diff --git a/code/game/turfs/simulated/floor/fancy_floor.dm b/code/game/turfs/simulated/floor/fancy_floor.dm index f38a8a3d9b..c9b429cecc 100644 --- a/code/game/turfs/simulated/floor/fancy_floor.dm +++ b/code/game/turfs/simulated/floor/fancy_floor.dm @@ -214,7 +214,7 @@ floor_tile = /obj/item/stack/tile/carpet broken_states = list("damaged") smooth = SMOOTH_TRUE - canSmoothWith = list(/turf/open/floor/carpet) + canSmoothWith = list(/turf/open/floor/carpet, /turf/open/floor/carpet/airless) flags_1 = NONE bullet_bounce_sound = null footstep = FOOTSTEP_CARPET @@ -245,59 +245,99 @@ /turf/open/floor/carpet/black icon = 'icons/turf/floors/carpet_black.dmi' floor_tile = /obj/item/stack/tile/carpet/black - canSmoothWith = list(/turf/open/floor/carpet/black, /turf/open/floor/carpet/blackred, /turf/open/floor/carpet/monochrome) + smooth = SMOOTH_MORE + canSmoothWith = list(/turf/open/floor/carpet/black, /turf/open/floor/carpet/blackred, /turf/open/floor/carpet/monochrome) /turf/open/floor/carpet/blackred icon = 'icons/turf/floors/carpet_blackred.dmi' floor_tile = /obj/item/stack/tile/carpet/blackred icon_state = "tile-carpet-blackred" - canSmoothWith = list(/turf/open/floor/carpet/black, /turf/open/floor/carpet/blackred, /turf/open/floor/carpet/monochrome) + smooth = SMOOTH_MORE + canSmoothWith = list(/turf/open/floor/carpet/black, /turf/open/floor/carpet/blackred, /turf/open/floor/carpet/monochrome) /turf/open/floor/carpet/monochrome icon = 'icons/turf/floors/carpet_monochrome.dmi' floor_tile = /obj/item/stack/tile/carpet/monochrome icon_state = "tile-carpet-monochrome" - canSmoothWith = list(/turf/open/floor/carpet/black, /turf/open/floor/carpet/blackred, /turf/open/floor/carpet/monochrome) + smooth = SMOOTH_MORE + canSmoothWith = list(/turf/open/floor/carpet/black, /turf/open/floor/carpet/blackred, /turf/open/floor/carpet/monochrome) /turf/open/floor/carpet/blue icon = 'icons/turf/floors/carpet_blue.dmi' floor_tile = /obj/item/stack/tile/carpet/blue - canSmoothWith = list(/turf/open/floor/carpet/blue) + canSmoothWith = list(/turf/open/floor/carpet/blue, /turf/open/floor/carpet/blue/airless) /turf/open/floor/carpet/cyan icon = 'icons/turf/floors/carpet_cyan.dmi' floor_tile = /obj/item/stack/tile/carpet/cyan - canSmoothWith = list(/turf/open/floor/carpet/cyan) + canSmoothWith = list(/turf/open/floor/carpet/cyan, /turf/open/floor/carpet/cyan/airless) /turf/open/floor/carpet/green icon = 'icons/turf/floors/carpet_green.dmi' floor_tile = /obj/item/stack/tile/carpet/green - canSmoothWith = list(/turf/open/floor/carpet/green) + canSmoothWith = list(/turf/open/floor/carpet/green, /turf/open/floor/carpet/green/airless) /turf/open/floor/carpet/orange icon = 'icons/turf/floors/carpet_orange.dmi' floor_tile = /obj/item/stack/tile/carpet/orange - canSmoothWith = list(/turf/open/floor/carpet/orange) + canSmoothWith = list(/turf/open/floor/carpet/orange, /turf/open/floor/carpet/orange/airless) /turf/open/floor/carpet/purple icon = 'icons/turf/floors/carpet_purple.dmi' floor_tile = /obj/item/stack/tile/carpet/purple - canSmoothWith = list(/turf/open/floor/carpet/purple) + canSmoothWith = list(/turf/open/floor/carpet/purple, /turf/open/floor/carpet/purple/airless) /turf/open/floor/carpet/red icon = 'icons/turf/floors/carpet_red.dmi' floor_tile = /obj/item/stack/tile/carpet/red - canSmoothWith = list(/turf/open/floor/carpet/red) + canSmoothWith = list(/turf/open/floor/carpet/red, /turf/open/floor/carpet/red/airless) /turf/open/floor/carpet/royalblack icon = 'icons/turf/floors/carpet_royalblack.dmi' floor_tile = /obj/item/stack/tile/carpet/royalblack - canSmoothWith = list(/turf/open/floor/carpet/royalblack) + canSmoothWith = list(/turf/open/floor/carpet/royalblack, /turf/open/floor/carpet/royalblack/airless) /turf/open/floor/carpet/royalblue icon = 'icons/turf/floors/carpet_royalblue.dmi' floor_tile = /obj/item/stack/tile/carpet/royalblue - canSmoothWith = list(/turf/open/floor/carpet/royalblue) + canSmoothWith = list(/turf/open/floor/carpet/royalblue, /turf/open/floor/carpet/royalblue/airless) + +//*****Airless versions of all of the above.***** +/turf/open/floor/carpet/airless + initial_gas_mix = AIRLESS_ATMOS + +/turf/open/floor/carpet/black/airless + initial_gas_mix = AIRLESS_ATMOS + +/turf/open/floor/carpet/blackred/airless + initial_gas_mix = AIRLESS_ATMOS + +/turf/open/floor/carpet/monochrome/airless + initial_gas_mix = AIRLESS_ATMOS + +/turf/open/floor/carpet/blue/airless + initial_gas_mix = AIRLESS_ATMOS + +/turf/open/floor/carpet/cyan/airless + initial_gas_mix = AIRLESS_ATMOS + +/turf/open/floor/carpet/green/airless + initial_gas_mix = AIRLESS_ATMOS + +/turf/open/floor/carpet/orange/airless + initial_gas_mix = AIRLESS_ATMOS + +/turf/open/floor/carpet/purple/airless + initial_gas_mix = AIRLESS_ATMOS + +/turf/open/floor/carpet/red/airless + initial_gas_mix = AIRLESS_ATMOS + +/turf/open/floor/carpet/royalblack/airless + initial_gas_mix = AIRLESS_ATMOS + +/turf/open/floor/carpet/royalblue/airless + initial_gas_mix = AIRLESS_ATMOS /turf/open/floor/carpet/narsie_act(force, ignore_mobs, probability = 20) . = (prob(probability) || force) diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm index d0e941e69f..c61ac8972c 100644 --- a/code/game/turfs/simulated/minerals.dm +++ b/code/game/turfs/simulated/minerals.dm @@ -168,6 +168,11 @@ M.levelupdate() +/turf/closed/mineral/random/no_caves + mineralSpawnChanceList = list(/turf/closed/mineral/uranium = 5, /turf/closed/mineral/diamond = 1, /turf/closed/mineral/gold = 10, + /turf/closed/mineral/silver = 12, /turf/closed/mineral/plasma = 20, /turf/closed/mineral/iron = 40, /turf/closed/mineral/titanium = 11, + /turf/closed/mineral/gibtonite = 4, /turf/closed/mineral/bscrystal = 1) + /turf/closed/mineral/random/high_chance icon_state = "rock_highchance" mineralChance = 25 diff --git a/code/modules/antagonists/overthrow/overthrow_converter.dm b/code/modules/antagonists/overthrow/overthrow_converter.dm index 23599bd01b..99d1a52de8 100644 --- a/code/modules/antagonists/overthrow/overthrow_converter.dm +++ b/code/modules/antagonists/overthrow/overthrow_converter.dm @@ -9,7 +9,7 @@ throw_speed = 3 throw_range = 5 w_class = WEIGHT_CLASS_SMALL - materials = list(MAT_METAL=600, MAT_GLASS=200) + custom_materials = list(/datum/material/iron=600, /datum/material/glass=200) var/uses = 2 /obj/item/overthrow_converter/proc/convert(mob/living/carbon/human/target, mob/living/carbon/human/user) // Should probably also delete any mindshield implant. Not sure. diff --git a/code/modules/antagonists/swarmer/swarmer.dm b/code/modules/antagonists/swarmer/swarmer.dm index bf976e3cca..99d12972d8 100644 --- a/code/modules/antagonists/swarmer/swarmer.dm +++ b/code/modules/antagonists/swarmer/swarmer.dm @@ -4,7 +4,7 @@ desc = "A shell of swarmer that was completely powered down. It can no longer activate itself." icon = 'icons/mob/swarmer.dmi' icon_state = "swarmer_unactivated" - materials = list(MAT_METAL=10000, MAT_GLASS=4000) + custom_materials = list(/datum/material/iron=10000, /datum/material/glass=4000) /obj/effect/mob_spawn/swarmer name = "unactivated swarmer" @@ -191,7 +191,7 @@ return 0 /obj/item/IntegrateAmount() //returns the amount of resources gained when eating this item - if(materials[MAT_METAL] || materials[MAT_GLASS]) + if(custom_materials[getmaterialref(/datum/material/iron)] || custom_materials[getmaterialref(/datum/material/glass)]) return 1 return ..() diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm index 2d291c580e..c50ca2f187 100644 --- a/code/modules/assembly/assembly.dm +++ b/code/modules/assembly/assembly.dm @@ -12,7 +12,7 @@ icon_state = "" flags_1 = CONDUCT_1 w_class = WEIGHT_CLASS_SMALL - materials = list(MAT_METAL=100) + custom_materials = list(/datum/material/iron=100) throwforce = 2 throw_speed = 3 throw_range = 7 diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm index 56e21aa79a..b6afc3cc0b 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -8,7 +8,7 @@ righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' throwforce = 0 w_class = WEIGHT_CLASS_TINY - materials = list(MAT_METAL = 300, MAT_GLASS = 300) + custom_materials = list(/datum/material/iron = 300, /datum/material/glass = 300) crit_fail = FALSE //Is the flash burnt out? light_color = LIGHT_COLOR_WHITE light_power = FLASH_LIGHT_POWER @@ -267,7 +267,7 @@ throw_speed = 2 throw_range = 3 w_class = WEIGHT_CLASS_BULKY - materials = list(MAT_GLASS=7500, MAT_METAL=1000) + custom_materials = list(/datum/material/glass=7500, /datum/material/iron=1000) attack_verb = list("shoved", "bashed") block_chance = 50 armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70) diff --git a/code/modules/assembly/health.dm b/code/modules/assembly/health.dm index 3fca066f86..cddc4fb08f 100644 --- a/code/modules/assembly/health.dm +++ b/code/modules/assembly/health.dm @@ -2,7 +2,7 @@ name = "health sensor" desc = "Used for scanning and monitoring health." icon_state = "health" - materials = list(MAT_METAL=800, MAT_GLASS=200) + custom_materials = list(/datum/material/iron=800, /datum/material/glass=200) attachable = TRUE secured = FALSE diff --git a/code/modules/assembly/igniter.dm b/code/modules/assembly/igniter.dm index 36bbb509fb..dbd8f834ca 100644 --- a/code/modules/assembly/igniter.dm +++ b/code/modules/assembly/igniter.dm @@ -2,7 +2,7 @@ name = "igniter" desc = "A small electronic device able to ignite combustible substances." icon_state = "igniter" - materials = list(MAT_METAL=500, MAT_GLASS=50) + custom_materials = list(/datum/material/iron=500, /datum/material/glass=50) var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread heat = 1000 diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index b223992d2c..d19666077d 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -2,7 +2,7 @@ name = "infrared emitter" desc = "Emits a visible or invisible beam and is triggered when the beam is interrupted." icon_state = "infrared" - materials = list(MAT_METAL=1000, MAT_GLASS=500) + custom_materials = list(/datum/material/iron=1000, /datum/material/glass=500) is_position_sensitive = TRUE var/on = FALSE diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm index 7c8952eb33..c701e13a26 100644 --- a/code/modules/assembly/mousetrap.dm +++ b/code/modules/assembly/mousetrap.dm @@ -3,7 +3,7 @@ desc = "A handy little spring-loaded trap for catching pesty rodents." icon_state = "mousetrap" item_state = "mousetrap" - materials = list(MAT_METAL=100) + custom_materials = list(/datum/material/iron=100) attachable = TRUE var/armed = FALSE diff --git a/code/modules/assembly/playback.dm b/code/modules/assembly/playback.dm index 42135f7ff9..14ad8c96c9 100644 --- a/code/modules/assembly/playback.dm +++ b/code/modules/assembly/playback.dm @@ -2,7 +2,7 @@ name = "playback device" desc = "A small electronic device able to record a voice sample, and repeat that sample when it receive a signal." icon_state = "radio" - materials = list(MAT_METAL=500, MAT_GLASS=50) + custom_materials = list(/datum/material/iron = 500, /datum/material/glass = 50) flags_1 = HEAR_1 attachable = TRUE verb_say = "beeps" diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm index 329ea85c0e..f1a4ce47cc 100644 --- a/code/modules/assembly/proximity.dm +++ b/code/modules/assembly/proximity.dm @@ -2,7 +2,7 @@ name = "proximity sensor" desc = "Used for scanning and alerting when someone enters a certain proximity." icon_state = "prox" - materials = list(MAT_METAL=800, MAT_GLASS=200) + custom_materials = list(/datum/material/iron=800, /datum/material/glass=200) attachable = TRUE var/scanning = FALSE diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm index 53cbb8ea2a..cee0a9054c 100644 --- a/code/modules/assembly/signaler.dm +++ b/code/modules/assembly/signaler.dm @@ -5,7 +5,7 @@ item_state = "signaler" lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - materials = list(MAT_METAL=400, MAT_GLASS=120) + custom_materials = list(/datum/material/iron=400, /datum/material/glass=120) wires = WIRE_RECEIVE | WIRE_PULSE | WIRE_RADIO_PULSE | WIRE_RADIO_RECEIVE attachable = TRUE diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm index a5c6298910..bbcddbdb93 100644 --- a/code/modules/assembly/timer.dm +++ b/code/modules/assembly/timer.dm @@ -2,7 +2,7 @@ name = "timer" desc = "Used to time things. Works well with contraptions which has to count down. Tick tock." icon_state = "timer" - materials = list(MAT_METAL=500, MAT_GLASS=50) + custom_materials = list(/datum/material/iron=500, /datum/material/glass=50) attachable = TRUE var/timing = FALSE diff --git a/code/modules/assembly/voice.dm b/code/modules/assembly/voice.dm index 3f37969e82..15c9afbf00 100644 --- a/code/modules/assembly/voice.dm +++ b/code/modules/assembly/voice.dm @@ -7,7 +7,7 @@ name = "voice analyzer" desc = "A small electronic device able to record a voice sample, and send a signal when that sample is repeated." icon_state = "voice" - materials = list(MAT_METAL=500, MAT_GLASS=50) + custom_materials = list(/datum/material/iron=500, /datum/material/glass=50) flags_1 = HEAR_1 attachable = TRUE verb_say = "beeps" diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index 36a128f2eb..4d2b8de586 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -72,7 +72,7 @@ power_channel = ENVIRON req_access = list(ACCESS_ATMOSPHERICS) max_integrity = 250 - integrity_failure = 80 + integrity_failure = 0.33 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 30) resistance_flags = FIRE_PROOF diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index bad2b85bfe..0d335da482 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -19,7 +19,7 @@ armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 100, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 50) max_integrity = 250 - integrity_failure = 100 + integrity_failure = 0.4 pressure_resistance = 7 * ONE_ATMOSPHERE var/temperature_resistance = 1000 + T0C var/starter_temp diff --git a/code/modules/awaymissions/super_secret_room.dm b/code/modules/awaymissions/super_secret_room.dm index 3903df9686..0bc0abef1e 100644 --- a/code/modules/awaymissions/super_secret_room.dm +++ b/code/modules/awaymissions/super_secret_room.dm @@ -122,7 +122,7 @@ icon = 'icons/obj/economy.dmi' icon_state = "rupee" w_class = WEIGHT_CLASS_SMALL - materials = list(MAT_GLASS = 500) + custom_materials = list(/datum/material/glass = 500) /obj/item/rupee/New() var/newcolor = color2hex(pick(10;"green", 5;"blue", 3;"red", 1;"purple")) diff --git a/code/modules/cargo/exports/materials.dm b/code/modules/cargo/exports/materials.dm index 1b38a809cf..a9d3b25d90 100644 --- a/code/modules/cargo/exports/materials.dm +++ b/code/modules/cargo/exports/materials.dm @@ -15,16 +15,13 @@ if(!isitem(O)) return 0 var/obj/item/I = O - if(!(material_id in I.materials)) + if(!(getmaterialref(material_id) in I.custom_materials)) return 0 - var/amount = I.materials[material_id] + var/amount = I.custom_materials[getmaterialref(material_id)] - if(istype(I, /obj/item/stack)) - var/obj/item/stack/S = I - amount *= S.amount - if(istype(I, /obj/item/stack/ore)) - amount *= 0.8 // Station's ore redemption equipment is really goddamn good. + if(istype(I, /obj/item/stack/ore)) + amount *= 0.8 // Station's ore redemption equipment is really goddamn good. return round(amount/MINERAL_MATERIAL_AMOUNT) @@ -32,48 +29,48 @@ /datum/export/material/bananium cost = 500 - material_id = MAT_BANANIUM + material_id = /datum/material/bananium message = "cm3 of bananium" /datum/export/material/diamond cost = 250 - material_id = MAT_DIAMOND + material_id = /datum/material/diamond message = "cm3 of diamonds" /datum/export/material/plasma cost = 100 - material_id = MAT_PLASMA + material_id = /datum/material/plasma message = "cm3 of plasma" /datum/export/material/uranium cost = 50 - material_id = MAT_URANIUM + material_id = /datum/material/uranium message = "cm3 of uranium" /datum/export/material/gold cost = 60 - material_id = MAT_GOLD + material_id = /datum/material/gold message = "cm3 of gold" /datum/export/material/silver cost = 25 - material_id = MAT_SILVER + material_id = /datum/material/silver message = "cm3 of silver" /datum/export/material/titanium cost = 60 - material_id = MAT_TITANIUM + material_id = /datum/material/titanium message = "cm3 of titanium" /datum/export/material/plastic cost = 5 - material_id = MAT_PLASTIC + material_id = /datum/material/plastic message = "cm3 of plastic" /datum/export/material/metal cost = 3 message = "cm3 of metal" - material_id = MAT_METAL + material_id = /datum/material/iron export_types = list( /obj/item/stack/sheet/metal, /obj/item/stack/tile/plasteel, /obj/item/stack/rods, /obj/item/stack/ore, /obj/item/coin) @@ -81,6 +78,26 @@ /datum/export/material/glass cost = 3 message = "cm3 of glass" - material_id = MAT_GLASS + material_id = /datum/material/glass export_types = list(/obj/item/stack/sheet/glass, /obj/item/stack/ore, /obj/item/shard) + +/datum/export/material/adamantine + cost = 300 + material_id = /datum/material/adamantine + message = "cm3 of adamantine" + +/datum/export/material/mythril + cost = 1000 + material_id = /datum/material/mythril + message = "cm3 of mythril" + +/datum/export/material/bscrystal + cost = 150 + message = "cm3 of bluespace crystals" + material_id = /datum/material/bluespace + +/datum/export/material/runite + cost = 300 + message = "cm3 of runite" + material_id = /datum/material/runite \ No newline at end of file diff --git a/code/modules/cargo/exports/sheets.dm b/code/modules/cargo/exports/sheets.dm index df1704d660..be0d2d6bee 100644 --- a/code/modules/cargo/exports/sheets.dm +++ b/code/modules/cargo/exports/sheets.dm @@ -83,10 +83,10 @@ message = "of reinforced glass" export_types = list(/obj/item/stack/sheet/rglass) -/datum/export/stack/bscrystal - cost = 150 - message = "of bluespace crystals" - export_types = list(/obj/item/stack/sheet/bluespace_crystal) +/datum/export/stack/plastitanium + cost = 165 // plasma + titanium costs + message = "of plastitanium" + export_types = list(/obj/item/stack/sheet/mineral/plastitanium) /datum/export/stack/wood cost = 15 @@ -139,12 +139,6 @@ message = "of alien alloy" export_types = list(/obj/item/stack/sheet/mineral/abductor) -/datum/export/stack/adamantine - unit_name = "bar" - cost = 250 - message = "of adamantine" - export_types = list(/obj/item/stack/sheet/mineral/adamantine) - /datum/export/stack/bone cost = 20 message = "of bones" diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 431947d9c1..ef2ee331a9 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -2,7 +2,7 @@ name = "clothing" resistance_flags = FLAMMABLE max_integrity = 200 - integrity_failure = 80 + integrity_failure = 0.4 var/damaged_clothes = 0 //similar to machine's BROKEN stat and structure's broken var var/flash_protect = 0 //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 //Sets the item's level of visual impairment tint, normally set to the same as flash_protect diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index b60856001e..5ae86636d6 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -8,7 +8,7 @@ strip_delay = 20 equip_delay_other = 25 resistance_flags = NONE - materials = list(MAT_GLASS = 250) + custom_materials = list(/datum/material/glass = 250) var/vision_flags = 0 var/darkness_view = 2//Base human is 2 var/invis_view = SEE_INVISIBLE_LIVING //admin only for now @@ -286,7 +286,7 @@ icon_state = "welding-g" item_state = "welding-g" actions_types = list(/datum/action/item_action/toggle) - materials = list(MAT_METAL = 250) + custom_materials = list(/datum/material/iron = 250) flash_protect = 2 tint = 2 visor_vars_to_toggle = VISOR_FLASHPROTECT | VISOR_TINT diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index e7f20e1358..50e458a224 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -237,6 +237,14 @@ icon_state = "knight_red" item_state = "knight_red" +/obj/item/clothing/head/helmet/knight/greyscale + name = "knight helmet" + desc = "A classic medieval helmet, if you hold it upside down you could see that it's actually a bucket." + icon_state = "knight_greyscale" + item_state = "knight_greyscale" + armor = list("melee" = 35, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 10, "bio" = 10, "rad" = 10, "fire" = 40, "acid" = 40) + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR //Can change color and add prefix + /obj/item/clothing/head/helmet/skull name = "skull helmet" desc = "An intimidating tribal helmet, it doesn't look very comfortable." diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index bb2014db5c..4be949a65e 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -19,7 +19,7 @@ icon_state = "welding" flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH item_state = "welding" - materials = list(MAT_METAL=1750, MAT_GLASS=400) + custom_materials = list(/datum/material/iron=1750, /datum/material/glass=400) flash_protect = 2 tint = 2 armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 60) diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index e6c68f2662..38f0a7c20a 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -25,7 +25,7 @@ name = "welding mask" desc = "A gas mask with built-in welding goggles and a face shield. Looks like a skull - clearly designed by a nerd." icon_state = "weldingmask" - materials = list(MAT_METAL=4000, MAT_GLASS=2000) + custom_materials = list(/datum/material/iron=4000, /datum/material/glass=2000) flash_protect = 2 tint = 2 armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 55) diff --git a/code/modules/clothing/shoes/bananashoes.dm b/code/modules/clothing/shoes/bananashoes.dm index c4d06ea14c..ffb7771d2f 100644 --- a/code/modules/clothing/shoes/bananashoes.dm +++ b/code/modules/clothing/shoes/bananashoes.dm @@ -10,7 +10,7 @@ /obj/item/clothing/shoes/clown_shoes/banana_shoes/Initialize() . = ..() - AddComponent(/datum/component/material_container, list(MAT_BANANIUM), 200000, TRUE, /obj/item/stack) + AddComponent(/datum/component/material_container, list(/datum/material/bananium), 200000, TRUE, /obj/item/stack) AddComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 75) if(always_noslip) clothing_flags |= NOSLIP @@ -19,7 +19,7 @@ . = ..() var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) if(on) - if(bananium.amount(MAT_BANANIUM) < 100) + if(bananium.get_material_amount(/datum/material/bananium) < 100) on = !on if(!always_noslip) clothing_flags &= ~NOSLIP @@ -27,7 +27,7 @@ to_chat(loc, "You ran out of bananium!") else new /obj/item/grown/bananapeel/specialpeel(get_step(src,turn(usr.dir, 180))) //honk - bananium.use_amount_type(100, MAT_BANANIUM) + bananium.use_amount_mat(100, /datum/material/bananium) /obj/item/clothing/shoes/clown_shoes/banana_shoes/attack_self(mob/user) var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) @@ -43,7 +43,7 @@ /obj/item/clothing/shoes/clown_shoes/banana_shoes/ui_action_click(mob/user) var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) - if(bananium.amount(MAT_BANANIUM)) + if(bananium.get_material_amount(/datum/material/bananium)) on = !on update_icon() to_chat(user, "You [on ? "activate" : "deactivate"] the prototype shoes.") diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 4591ba8b4e..1f0214cade 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -261,6 +261,14 @@ icon_state = "knight_red" item_state = "knight_red" +/obj/item/clothing/suit/armor/riot/knight/greyscale + name = "knight armour" + desc = "A classic suit of armour, able to be made from many different materials." + icon_state = "knight_greyscale" + item_state = "knight_greyscale" + armor = list("melee" = 35, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 10, "bio" = 10, "rad" = 10, "fire" = 40, "acid" = 40) + material_flags = MATERIAL_ADD_PREFIX //Can change color and add prefix + /obj/item/clothing/suit/armor/vest/durathread name = "makeshift vest" desc = "A vest made of durathread with strips of leather acting as trauma plates." diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm index 86d2b40d0f..628f7187ca 100644 --- a/code/modules/clothing/under/accessories.dm +++ b/code/modules/clothing/under/accessories.dm @@ -105,7 +105,7 @@ desc = "A bronze medal." icon_state = "bronze" item_color = "bronze" - materials = list(MAT_METAL=1000) + custom_materials = list(/datum/material/iron=1000) resistance_flags = FIRE_PROOF var/medaltype = "medal" //Sprite used for medalbox var/commended = FALSE @@ -190,7 +190,7 @@ icon_state = "silver" item_color = "silver" medaltype = "medal-silver" - materials = list(MAT_SILVER=1000) + custom_materials = list(/datum/material/silver=1000) /obj/item/clothing/accessory/medal/silver/valor name = "medal of valor" @@ -206,7 +206,7 @@ icon_state = "gold" item_color = "gold" medaltype = "medal-gold" - materials = list(MAT_GOLD=1000) + custom_materials = list(/datum/material/gold=1000) /obj/item/clothing/accessory/medal/gold/captain name = "medal of captaincy" @@ -217,7 +217,7 @@ name = "old medal of captaincy" desc = "A rustic badge pure gold, has been through hell and back by the looks, the syndcate have been after these by the looks of it for generations..." armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 10) //Pure gold - materials = list(MAT_GOLD=2000) + custom_materials = list(/datum/material/gold=2000) /obj/item/clothing/accessory/medal/gold/heroism name = "medal of exceptional heroism" @@ -230,7 +230,7 @@ item_color = "plasma" medaltype = "medal-plasma" armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = -10, "acid" = 0) //It's made of plasma. Of course it's flammable. - materials = list(MAT_PLASMA=1000) + custom_materials = list(/datum/material/plasma=1000) /obj/item/clothing/accessory/medal/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 300) diff --git a/code/modules/clothing/under/jobs/medsci.dm b/code/modules/clothing/under/jobs/medsci.dm index 6952a581da..971112ac38 100644 --- a/code/modules/clothing/under/jobs/medsci.dm +++ b/code/modules/clothing/under/jobs/medsci.dm @@ -158,6 +158,23 @@ can_adjust = FALSE fitted = FEMALE_UNIFORM_TOP +/obj/item/clothing/under/rank/medical/paramedic + desc = "It's made of a special fiber that provides minor protection against biohazards. It has a dark blue cross on the chest denoting that the wearer is a trained paramedic." + name = "paramedic jumpsuit" + icon_state = "paramedic" + item_state = "w_suit" + permeability_coefficient = 0.5 + 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/paramedic/skirt + name = "paramedic jumpskirt" + desc = "It's made of a special fiber that provides minor protection against biohazards. It has a dark blue cross on the chest denoting that the wearer is a trained paramedic." + icon_state = "paramedic_skirt" + item_state = "w_suit" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/rank/nursesuit desc = "It's a jumpsuit commonly worn by nursing staff in the medical department." name = "nurse's suit" diff --git a/code/modules/clothing/under/trek.dm b/code/modules/clothing/under/trek.dm index 9564d03909..20852dbe62 100644 --- a/code/modules/clothing/under/trek.dm +++ b/code/modules/clothing/under/trek.dm @@ -19,7 +19,6 @@ 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, "fire" = 0, "acid" = 0) //more sec than eng, but w/e. strip_delay = 50 /obj/item/clothing/under/trek/medsci @@ -69,4 +68,4 @@ desc = "Something about it feels off..." icon_state = "trek_Q" item_color = "trek_Q" - item_state = "r_suit" \ No newline at end of file + item_state = "r_suit" diff --git a/code/modules/events/wizard/departmentrevolt.dm b/code/modules/events/wizard/departmentrevolt.dm index 67e96455f0..b82cd91323 100644 --- a/code/modules/events/wizard/departmentrevolt.dm +++ b/code/modules/events/wizard/departmentrevolt.dm @@ -19,7 +19,7 @@ jobs_to_revolt = list("Assistant") nation_name = pick("Assa", "Mainte", "Tunnel", "Gris", "Grey", "Liath", "Grigio", "Ass", "Assi") if("white") - jobs_to_revolt = list("Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist") + jobs_to_revolt = list("Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Paramedic", "Virologist") nation_name = pick("Mede", "Healtha", "Recova", "Chemi", "Geneti", "Viro", "Psych") if("yellow") jobs_to_revolt = list("Chief Engineer", "Station Engineer", "Atmospheric Technician") diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index d39492d9bf..270e8cff6c 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -202,7 +202,7 @@ force = 1 throwforce = 1 amount_per_transfer_from_this = 5 - materials = list(MAT_METAL=100) + custom_materials = list(/datum/material/iron=100) possible_transfer_amounts = list() volume = 5 flags_1 = CONDUCT_1 @@ -218,7 +218,7 @@ force = 14 throwforce = 10 amount_per_transfer_from_this = 20 - materials = list(MAT_GOLD=1000) + custom_materials = list(/datum/material/gold=1000) volume = 150 /obj/item/reagent_containers/food/drinks/trophy/silver_cup @@ -229,7 +229,7 @@ force = 10 throwforce = 8 amount_per_transfer_from_this = 15 - materials = list(MAT_SILVER=800) + custom_materials = list(/datum/material/silver=800) volume = 100 /obj/item/reagent_containers/food/drinks/trophy/bronze_cup @@ -240,7 +240,7 @@ force = 5 throwforce = 4 amount_per_transfer_from_this = 10 - materials = list(MAT_METAL=400) + custom_materials = list(/datum/material/iron=400) volume = 25 ///////////////////////////////////////////////Drinks///////////////////////////////////////// @@ -400,7 +400,7 @@ name = "shaker" desc = "A metal shaker to mix drinks in." icon_state = "shaker" - materials = list(MAT_METAL=1500) + custom_materials = list(/datum/material/iron=1500) amount_per_transfer_from_this = 10 volume = 100 isGlass = FALSE @@ -409,7 +409,7 @@ name = "flask" desc = "Every good spaceman knows it's a good idea to bring along a couple of pints of whiskey wherever they go." icon_state = "flask" - materials = list(MAT_METAL=250) + custom_materials = list(/datum/material/iron=250) volume = 60 isGlass = FALSE @@ -417,7 +417,7 @@ name = "captain's flask" desc = "A gold flask belonging to the captain." icon_state = "flask_gold" - materials = list(MAT_GOLD=500) + custom_materials = list(/datum/material/gold=500) /obj/item/reagent_containers/food/drinks/flask/det name = "detective's flask" diff --git a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm index 0d769932db..defc44ed51 100644 --- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm @@ -6,7 +6,7 @@ icon_state = "glass_empty" amount_per_transfer_from_this = 10 volume = 50 - materials = list(MAT_GLASS=500) + custom_materials = list(/datum/material/glass=500) max_integrity = 20 spillable = TRUE resistance_flags = ACID_PROOF @@ -45,7 +45,7 @@ amount_per_transfer_from_this = 15 possible_transfer_amounts = list() volume = 15 - materials = list(MAT_GLASS=100) + custom_materials = list(/datum/material/glass=100) /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass/on_reagent_change(changetype) cut_overlays() diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm index 016e37a5c4..2a313361c4 100644 --- a/code/modules/food_and_drinks/food/customizables.dm +++ b/code/modules/food_and_drinks/food/customizables.dm @@ -293,7 +293,7 @@ icon = 'icons/obj/food/soupsalad.dmi' icon_state = "bowl" reagent_flags = OPENCONTAINER - materials = list(MAT_GLASS = 500) + custom_materials = list(/datum/material/glass = 500) w_class = WEIGHT_CLASS_NORMAL /obj/item/reagent_containers/glass/bowl/attackby(obj/item/I,mob/user, params) diff --git a/code/modules/food_and_drinks/food/snacks_meat.dm b/code/modules/food_and_drinks/food/snacks_meat.dm index 5103418e6b..9bf95f65db 100644 --- a/code/modules/food_and_drinks/food/snacks_meat.dm +++ b/code/modules/food_and_drinks/food/snacks_meat.dm @@ -325,7 +325,7 @@ /obj/item/reagent_containers/food/snacks/corndog name = "corndog plate" desc = "A plate with two small corn dogs, with two dimples of ketchup and mustard to dip them in." - icon_state = "dorndog" + icon_state = "corndog" trash = /obj/item/trash/plate/alt tastes = list("hotdog" = 2, "mustard and ketchup" = 1, "fryed bread" = 1) bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/mustard = 5, /datum/reagent/consumable/ketchup = 5) @@ -359,4 +359,4 @@ list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/bbqsauce = 5) bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("meat" = 3, "smokey sauce" = 1) - foodtype = MEAT \ No newline at end of file + foodtype = MEAT diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm index e908662658..eddd1bdc3f 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm @@ -309,8 +309,8 @@ var/metal = 0 for(var/obj/item/O in ingredients) O.microwave_act(src) - if(O.materials[MAT_METAL]) - metal += O.materials[MAT_METAL] + if(O.custom_materials?.len) + metal += O.custom_materials[getmaterialref(/datum/material/iron)] if(metal) spark() diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index 2376010408..6f3c8c9047 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -196,7 +196,7 @@ dat += "x5" if(ispath(D.build_path, /obj/item/stack)) dat += "x10" - dat += "([D.materials[MAT_BIOMASS]/efficiency])
" + dat += "([D.materials[getmaterialref(/datum/material/biomass)]/efficiency])
" dat += "" else dat += "
No container inside, please insert container.
" @@ -232,15 +232,15 @@ else menustat = "void" -/obj/machinery/biogenerator/proc/check_cost(list/materials, multiplier = 1, remove_points = 1) - if(materials.len != 1 || materials[1] != MAT_BIOMASS) +/obj/machinery/biogenerator/proc/check_cost(list/materials, multiplier = 1, remove_points = TRUE) + if(materials.len != 1 || materials[1] != getmaterialref(/datum/material/biomass)) return FALSE - if (materials[MAT_BIOMASS]*multiplier/efficiency > points) + if (materials[getmaterialref(/datum/material/biomass)]*multiplier/efficiency > points) menustat = "nopoints" return FALSE else if(remove_points) - points -= materials[MAT_BIOMASS]*multiplier/efficiency + points -= materials[getmaterialref(/datum/material/biomass)]*multiplier/efficiency update_icon() updateUsrDialog() return TRUE diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index fb9bb8ba7b..fe6d13f69e 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -418,7 +418,7 @@ name = "plant data disk" desc = "A disk for storing plant genetic data." icon_state = "datadisk_hydro" - materials = list(MAT_METAL=30, MAT_GLASS=10) + custom_materials = list(/datum/material/iron=30, /datum/material/glass=10) var/datum/plant_gene/gene var/read_only = 0 //Well, it's still a floppy disk obj_flags = UNIQUE_RENAME diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index e7c548443a..9b5983c8e9 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -9,7 +9,7 @@ righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' w_class = WEIGHT_CLASS_TINY slot_flags = ITEM_SLOT_BELT - materials = list(MAT_METAL=30, MAT_GLASS=20) + custom_materials = list(/datum/material/iron=30, /datum/material/glass=20) // ************************************* // Hydroponics Tools @@ -57,7 +57,7 @@ force = 5 throwforce = 7 w_class = WEIGHT_CLASS_SMALL - materials = list(MAT_METAL=50) + custom_materials = list(/datum/material/iron=50) attack_verb = list("slashed", "sliced", "cut", "clawed") hitsound = 'sound/weapons/bladeslice.ogg' @@ -79,7 +79,7 @@ throwforce = 15 throw_speed = 3 throw_range = 4 - materials = list(MAT_METAL = 15000) + custom_materials = list(/datum/material/iron = 15000) attack_verb = list("chopped", "torn", "cut") hitsound = 'sound/weapons/bladeslice.ogg' sharpness = IS_SHARP diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm index d8bf82a4b4..2a0cf8c334 100644 --- a/code/modules/integrated_electronics/core/assemblies.dm +++ b/code/modules/integrated_electronics/core/assemblies.dm @@ -9,7 +9,7 @@ icon = 'icons/obj/assemblies/electronic_setups.dmi' icon_state = "setup_small" item_flags = NOBLUDGEON - materials = list() // To be filled later + custom_materials = null // To be filled later datum_flags = DF_USE_TAG var/list/assembly_components = list() var/list/ckeys_allowed_to_scan = list() // Players who built the circuit can scan it as a ghost. @@ -95,9 +95,9 @@ D.open() /obj/item/electronic_assembly/Initialize() + LAZYSET(custom_materials, /datum/material/iron, round((max_complexity + max_components) * 0.25) * SScircuit.cost_multiplier) .=..() START_PROCESSING(SScircuit, src) - materials[MAT_METAL] = round((max_complexity + max_components) / 4) * SScircuit.cost_multiplier //sets up diagnostic hud view prepare_huds() diff --git a/code/modules/integrated_electronics/core/integrated_circuit.dm b/code/modules/integrated_electronics/core/integrated_circuit.dm index 40bcbe016b..a73190a005 100644 --- a/code/modules/integrated_electronics/core/integrated_circuit.dm +++ b/code/modules/integrated_electronics/core/integrated_circuit.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/assemblies/electronic_components.dmi' icon_state = "template" w_class = WEIGHT_CLASS_TINY - materials = list() // To be filled later + custom_materials = null // To be filled later var/obj/item/electronic_assembly/assembly // Reference to the assembly holding this circuit, if any. var/extended_desc var/list/inputs = list() @@ -84,7 +84,7 @@ a creative player the means to solve many problems. Circuits are held inside an setup_io(inputs, /datum/integrated_io, inputs_default, IC_INPUT) setup_io(outputs, /datum/integrated_io, outputs_default, IC_OUTPUT) setup_io(activators, /datum/integrated_io/activate, null, IC_ACTIVATOR) - materials[MAT_METAL] = w_class * SScircuit.cost_multiplier + LAZYSET(custom_materials, /datum/material/iron, w_class * SScircuit.cost_multiplier) . = ..() /obj/item/integrated_circuit/proc/on_data_written() //Override this for special behaviour when new data gets pushed to the circuit. diff --git a/code/modules/integrated_electronics/core/printer.dm b/code/modules/integrated_electronics/core/printer.dm index ea52b6d461..cdccc92cfd 100644 --- a/code/modules/integrated_electronics/core/printer.dm +++ b/code/modules/integrated_electronics/core/printer.dm @@ -33,7 +33,8 @@ /obj/item/integrated_circuit_printer/Initialize() . = ..() - AddComponent(/datum/component/material_container, list(MAT_METAL), MINERAL_MATERIAL_AMOUNT * 25, TRUE, list(/obj/item/stack, /obj/item/integrated_circuit, /obj/item/electronic_assembly)) + var/datum/component/material_container/materials = AddComponent(/datum/component/material_container, list(/datum/material/iron), MINERAL_MATERIAL_AMOUNT * 25, TRUE, list(/obj/item/stack, /obj/item/integrated_circuit, /obj/item/electronic_assembly)) + materials.precise_insertion = TRUE /obj/item/integrated_circuit_printer/proc/print_program(mob/user) if(!cloning) @@ -189,16 +190,16 @@ var/cost = 400 if(ispath(build_type, /obj/item/electronic_assembly)) var/obj/item/electronic_assembly/E = SScircuit.cached_assemblies[build_type] - cost = E.materials[MAT_METAL] + cost = E.custom_materials[getmaterialref(/datum/material/iron)] else if(ispath(build_type, /obj/item/integrated_circuit)) var/obj/item/integrated_circuit/IC = SScircuit.cached_components[build_type] - cost = IC.materials[MAT_METAL] + cost = IC.custom_materials[getmaterialref(/datum/material/iron)] else if(!(build_type in SScircuit.circuit_fabricator_recipe_list["Tools"])) return var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - if(!debug && !materials.use_amount_type(cost, MAT_METAL)) + if(!debug && !materials.use_amount_mat(cost, /datum/material/iron)) to_chat(usr, "You need [cost] metal to build that!") return TRUE @@ -270,14 +271,14 @@ return else if(fast_clone) var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - if(debug || materials.use_amount_type(program["metal_cost"], MAT_METAL)) + if(debug || materials.use_amount_mat(program["metal_cost"], /datum/material/iron)) cloning = TRUE print_program(usr) else to_chat(usr, "You need [program["metal_cost"]] metal to build that!") else var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - if(!materials.use_amount_type(program["metal_cost"], MAT_METAL)) + if(!materials.use_amount_mat(program["metal_cost"], /datum/material/iron)) to_chat(usr, "You need [program["metal_cost"]] metal to build that!") return var/cloning_time = round(program["metal_cost"] / 15) @@ -295,7 +296,7 @@ to_chat(usr, "Cloning has been canceled. Metal cost has been refunded.") cloning = FALSE var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - materials.use_amount_type(-program["metal_cost"], MAT_METAL) //use negative amount to regain the cost + materials.use_amount_mat(-program["metal_cost"], /datum/material/iron) //use negative amount to regain the cost interact(usr) diff --git a/code/modules/integrated_electronics/core/saved_circuits.dm b/code/modules/integrated_electronics/core/saved_circuits.dm index 2fe6984808..cbf3bba616 100644 --- a/code/modules/integrated_electronics/core/saved_circuits.dm +++ b/code/modules/integrated_electronics/core/saved_circuits.dm @@ -260,7 +260,7 @@ blocks["max_space"] = assembly.max_components // Start keeping track of total metal cost - blocks["metal_cost"] = assembly.materials[MAT_METAL] + blocks["metal_cost"] = assembly.custom_materials[getmaterialref(/datum/material/iron)] // Block 2. Components. @@ -291,7 +291,7 @@ // Update estimated assembly complexity, taken space and material cost blocks["complexity"] += component.complexity blocks["used_space"] += component.size - blocks["metal_cost"] += component.materials[MAT_METAL] + blocks["metal_cost"] += component.custom_materials[getmaterialref(/datum/material/iron)] // Check if the assembly requires printer upgrades if(!(component.spawn_flags & IC_SPAWN_DEFAULT)) diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm index 4f9afd9ed5..f1cf9dd950 100644 --- a/code/modules/integrated_electronics/subtypes/input.dm +++ b/code/modules/integrated_electronics/subtypes/input.dm @@ -1090,6 +1090,7 @@ "Titanium" = IC_PINTYPE_NUMBER, "Bluespace Mesh" = IC_PINTYPE_NUMBER, "Biomass" = IC_PINTYPE_NUMBER, + "Plastic" = IC_PINTYPE_NUMBER ) activators = list( "scan" = IC_PINTYPE_PULSE_IN, @@ -1098,7 +1099,7 @@ ) spawn_flags = IC_SPAWN_RESEARCH power_draw_per_use = 40 - var/list/mtypes = list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE, MAT_BIOMASS) + var/list/mtypes = list(/datum/material/iron, /datum/material/glass, /datum/material/silver, /datum/material/gold, /datum/material/diamond, /datum/material/plasma, /datum/material/uranium, /datum/material/bananium, /datum/material/titanium, /datum/material/bluespace, /datum/material/biomass, /datum/material/plastic) /obj/item/integrated_circuit/input/matscan/do_work() @@ -1108,10 +1109,9 @@ if(!mt) //Invalid input return if(H in view(T)) // This is a camera. It can't examine thngs,that it can't see. - for(var/I in 1 to mtypes.len) - var/datum/material/M = mt.materials[mtypes[I]] - if(M) - set_pin_data(IC_OUTPUT, I, M.amount) + for(var/I in mtypes) + if(I in mt.materials) + set_pin_data(IC_OUTPUT, I, mt.materials[I]) else set_pin_data(IC_OUTPUT, I, null) push_data() diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm index 0bdf0547f9..9b275d85fe 100644 --- a/code/modules/integrated_electronics/subtypes/manipulation.dm +++ b/code/modules/integrated_electronics/subtypes/manipulation.dm @@ -373,6 +373,7 @@ "Bluespace Mesh" = IC_PINTYPE_NUMBER, "Bananium" = IC_PINTYPE_NUMBER, "Titanium" = IC_PINTYPE_NUMBER, + "Plastic" = IC_PINTYPE_NUMBER ) outputs = list( "self ref" = IC_PINTYPE_REF, @@ -386,7 +387,8 @@ "Solid Plasma" = IC_PINTYPE_NUMBER, "Bluespace Mesh" = IC_PINTYPE_NUMBER, "Bananium" = IC_PINTYPE_NUMBER, - "Titanium" = IC_PINTYPE_NUMBER + "Titanium" = IC_PINTYPE_NUMBER, + "Plastic" = IC_PINTYPE_NUMBER ) activators = list( "insert sheet" = IC_PINTYPE_PULSE_IN, @@ -400,13 +402,11 @@ power_draw_per_use = 40 ext_cooldown = 1 cooldown_per_use = 10 - var/list/mtypes = list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE) + var/list/mtypes = list(/datum/material/iron, /datum/material/glass, /datum/material/silver, /datum/material/gold, /datum/material/diamond, /datum/material/uranium, /datum/material/plasma, /datum/material/bluespace, /datum/material/bananium, /datum/material/titanium, /datum/material/plastic) /obj/item/integrated_circuit/manipulation/matman/Initialize() var/datum/component/material_container/materials = AddComponent(/datum/component/material_container, - list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE), 0, - FALSE, /obj/item/stack, CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert)) - materials.max_amount =100000 + mtypes, 100000, FALSE, /obj/item/stack, CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert)) materials.precise_insertion = TRUE .=..() @@ -414,9 +414,10 @@ var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) set_pin_data(IC_OUTPUT, 2, materials.total_amount) for(var/I in 1 to mtypes.len) - var/datum/material/M = materials.materials[mtypes[I]] + var/datum/material/M = materials.materials[getmaterialref(I)] + var/amount = materials[M] if(M) - set_pin_data(IC_OUTPUT, I+2, M.amount) + set_pin_data(IC_OUTPUT, I+2, amount) push_data() /obj/item/integrated_circuit/manipulation/matman/proc/is_insertion_ready(mob/user) @@ -435,7 +436,7 @@ if(!S) activate_pin(4) return - if(materials.insert_stack(S, CLAMP(get_pin_data(IC_INPUT, 2),0,100), multiplier = 1) ) + if(materials.insert_item(S, CLAMP(get_pin_data(IC_INPUT, 2),0,100), multiplier = 1) ) AfterMaterialInsert() activate_pin(3) else @@ -451,7 +452,7 @@ continue if(!mt) //Invalid input if(U>0) - if(materials.retrieve_amount(U, mtypes[I], T)) + if(materials.retrieve_sheets(U, getmaterialref(mtypes[I]), T)) suc = TRUE else if(mt.transer_amt_to(materials, U, mtypes[I])) diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm index eddb18b25e..9bd5dc1684 100644 --- a/code/modules/jobs/access.dm +++ b/code/modules/jobs/access.dm @@ -357,7 +357,7 @@ /proc/get_all_jobs() return list("Assistant", "Captain", "Head of Personnel", "Bartender", "Cook", "Botanist", "Quartermaster", "Cargo Technician", "Shaft Miner", "Clown", "Mime", "Janitor", "Curator", "Lawyer", "Chaplain", "Chief Engineer", "Station Engineer", - "Atmospheric Technician", "Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist", + "Atmospheric Technician", "Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist", "Paramedic", "Research Director", "Scientist", "Roboticist", "Head of Security", "Warden", "Detective", "Security Officer") /proc/get_all_job_icons() //For all existing HUD icons diff --git a/code/modules/jobs/job_types/paramedic.dm b/code/modules/jobs/job_types/paramedic.dm new file mode 100644 index 0000000000..7c617d3208 --- /dev/null +++ b/code/modules/jobs/job_types/paramedic.dm @@ -0,0 +1,45 @@ +/datum/job/paramedic + title = "Paramedic" + flag = PARAMEDIC + department_head = list("Chief Medical Officer") + department_flag = MEDSCI + faction = "Station" + total_positions = 3 + spawn_positions = 2 + supervisors = "the chief medical officer" + selection_color = "#74b5e0" + + outfit = /datum/outfit/job/paramedic + + access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) + minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) + + display_order = JOB_DISPLAY_ORDER_PARAMEDIC + +/datum/outfit/job/paramedic + name = "Paramedic" + jobtype = /datum/job/paramedic + + ears = /obj/item/radio/headset/headset_med + gloves = /obj/item/clothing/gloves/color/latex/nitrile + uniform = /obj/item/clothing/under/rank/medical/paramedic + mask = /obj/item/clothing/mask/surgical + shoes = /obj/item/clothing/shoes/jackboots + head = /obj/item/clothing/head/soft/emt + suit = /obj/item/clothing/suit/toggle/labcoat/emt + belt = /obj/item/storage/belt/medical + l_hand = /obj/item/storage/firstaid/regular + suit_store = /obj/item/flashlight/pen + id = /obj/item/card/id + r_pocket = /obj/item/pinpointer/crew + l_pocket = /obj/item/pda/medical + backpack_contents = list(/obj/item/roller=1) + pda_slot = ITEM_SLOT_POCKET + + backpack = /obj/item/storage/backpack/medic + satchel = /obj/item/storage/backpack/satchel/med + duffelbag = /obj/item/storage/backpack/duffelbag/med + + backpack_contents = list(/obj/item/storage/hypospraykit/regular) + + chameleon_extras = /obj/item/gun/syringe diff --git a/code/modules/jobs/jobs.dm b/code/modules/jobs/jobs.dm index 92fd25a811..78b7dd3964 100644 --- a/code/modules/jobs/jobs.dm +++ b/code/modules/jobs/jobs.dm @@ -18,6 +18,7 @@ GLOBAL_LIST_INIT(medical_positions, list( "Medical Doctor", "Geneticist", "Virologist", + "Paramedic", "Chemist")) diff --git a/code/modules/language/language_holder.dm b/code/modules/language/language_holder.dm index f8934549d0..b307e66b39 100644 --- a/code/modules/language/language_holder.dm +++ b/code/modules/language/language_holder.dm @@ -138,7 +138,7 @@ /datum/language_holder/synthetic languages = list(/datum/language/common) - shadow_languages = list(/datum/language/common, /datum/language/machine, /datum/language/draconic, /datum/language/slime) + shadow_languages = list(/datum/language/common, /datum/language/machine, /datum/language/draconic, /datum/language/slime, /datum/language/dwarf) /datum/language_holder/empty languages = list() diff --git a/code/modules/mining/aux_base.dm b/code/modules/mining/aux_base.dm index 91eab536c9..6ec205bf7c 100644 --- a/code/modules/mining/aux_base.dm +++ b/code/modules/mining/aux_base.dm @@ -53,7 +53,7 @@ interface with the mining shuttle at the landing site if a mobile beacon is also Unit | Condition | Status | Direction | Distance
" for(var/PDT in turrets) var/obj/machinery/porta_turret/aux_base/T = PDT - var/integrity = max((T.obj_integrity-T.integrity_failure)/(T.max_integrity-T.integrity_failure)*100, 0) + var/integrity = max((T.obj_integrity-T.integrity_failure * T.max_integrity)/(T.max_integrity-T.integrity_failure * max_integrity)*100, 0) var/status if(T.stat & BROKEN) status = "ERROR" @@ -151,7 +151,7 @@ interface with the mining shuttle at the landing site if a mobile beacon is also if(!is_mining_level(T.z)) return BAD_ZLEVEL - + var/list/colony_turfs = base_dock.return_ordered_turfs(T.x,T.y,T.z,base_dock.dir) for(var/i in 1 to colony_turfs.len) CHECK_TICK diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm index b2c0c1cc87..d4b86d5138 100644 --- a/code/modules/mining/equipment/kinetic_crusher.dm +++ b/code/modules/mining/equipment/kinetic_crusher.dm @@ -16,7 +16,7 @@ throwforce = 5 throw_speed = 4 armour_penetration = 10 - materials = list(MAT_METAL=1150, MAT_GLASS=2075) + custom_materials = list(/datum/material/iron=1150, /datum/material/glass=2075) hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("smashed", "crushed", "cleaved", "chopped", "pulped") sharpness = IS_SHARP diff --git a/code/modules/mining/equipment/mining_tools.dm b/code/modules/mining/equipment/mining_tools.dm index 32f9812068..ce76ad04fc 100644 --- a/code/modules/mining/equipment/mining_tools.dm +++ b/code/modules/mining/equipment/mining_tools.dm @@ -11,7 +11,7 @@ lefthand_file = 'icons/mob/inhands/equipment/mining_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/mining_righthand.dmi' w_class = WEIGHT_CLASS_BULKY - materials = list(MAT_METAL=2000) //one sheet, but where can you make them? + custom_materials = list(/datum/material/iron=2000) //one sheet, but where can you make them? tool_behaviour = TOOL_MINING toolspeed = 1 usesound = list('sound/effects/picaxe1.ogg', 'sound/effects/picaxe2.ogg', 'sound/effects/picaxe3.ogg') @@ -46,7 +46,7 @@ throwforce = 7 slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL - materials = list(MAT_METAL=1000) + custom_materials = list(/datum/material/iron=1000) /obj/item/pickaxe/silver name = "silver-plated pickaxe" @@ -55,7 +55,7 @@ toolspeed = 0.5 //mines faster than a normal pickaxe, bought from mining vendor desc = "A silver-plated pickaxe that mines slightly faster than standard-issue." force = 17 - materials = list(MAT_SILVER=4000) + custom_materials = list(/datum/material/silver=4000) /obj/item/pickaxe/diamond name = "diamond-tipped pickaxe" @@ -64,7 +64,7 @@ toolspeed = 0.3 desc = "A pickaxe with a diamond pick head. Extremely robust at cracking rock walls and digging up dirt." force = 19 - materials = list(MAT_DIAMOND=4000) + custom_materials = list(/datum/material/diamond=4000) /obj/item/pickaxe/plasteel name = "plasteel-tipped pickaxe" @@ -72,7 +72,7 @@ toolspeed = 0.5 desc = "A pickaxe with a plasteel pick head. Less robust at cracking rock walls and digging up dirt than the titanium pickaxe, but better at cracking open skulls." force = 19 - materials = list(MAT_METAL=2000, MAT_PLASMA=2000) + custom_materials = list(/datum/material/iron=2000, /datum/material/plasma=2000) /obj/item/pickaxe/titanium name = "titanium-tipped pickaxe" @@ -80,7 +80,7 @@ toolspeed = 0.3 desc = "A pickaxe with a titanium pick head. Extremely robust at cracking rock walls and digging up dirt, but less than the plasteel pickaxe at cracking open skulls." force = 17 - materials = list(MAT_TITANIUM=4000) + custom_materials = list(/datum/material/titanium=4000) /obj/item/pickaxe/drill name = "mining drill" @@ -141,7 +141,7 @@ throwforce = 4 item_state = "shovel" w_class = WEIGHT_CLASS_NORMAL - materials = list(MAT_METAL=350) + custom_materials = list(/datum/material/iron=350) attack_verb = list("bashed", "bludgeoned", "thrashed", "whacked") sharpness = IS_SHARP @@ -166,5 +166,5 @@ toolspeed = 0.5 force = 5 throwforce = 7 - materials = list(MAT_METAL=50) + custom_materials = list(/datum/material/iron=50) w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 11190009cc..343083456d 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -114,28 +114,28 @@ name = "Kinetic Accelerator Offensive Mining Explosion Mod" desc = "A device which causes kinetic accelerators to fire AoE blasts that destroy rock and damage creatures." id = "hyperaoemod" - materials = list(MAT_METAL = 7000, MAT_GLASS = 3000, MAT_SILVER = 3000, MAT_GOLD = 3000, MAT_DIAMOND = 4000) + materials = list(/datum/material/iron = 7000, /datum/material/glass = 3000, /datum/material/silver = 3000, /datum/material/gold = 3000, /datum/material/diamond = 4000) build_path = /obj/item/borg/upgrade/modkit/aoe/turfs/andmobs /datum/design/unique_modkit/rapid_repeater name = "Kinetic Accelerator Rapid Repeater Mod" desc = "A device which greatly reduces a kinetic accelerator's cooldown on striking a living target or rock, but greatly increases its base cooldown." id = "repeatermod" - materials = list(MAT_METAL = 5000, MAT_GLASS = 5000, MAT_URANIUM = 8000, MAT_BLUESPACE = 2000) + materials = list(/datum/material/iron = 5000, /datum/material/glass = 5000, /datum/material/uranium = 8000, /datum/material/bluespace = 2000) build_path = /obj/item/borg/upgrade/modkit/cooldown/repeater /datum/design/unique_modkit/resonator_blast name = "Kinetic Accelerator Resonator Blast Mod" desc = "A device which causes kinetic accelerators to fire shots that leave and detonate resonator blasts." id = "resonatormod" - materials = list(MAT_METAL = 5000, MAT_GLASS = 5000, MAT_SILVER = 5000, MAT_URANIUM = 5000) + materials = list(/datum/material/iron = 5000, /datum/material/glass = 5000, /datum/material/silver = 5000, /datum/material/uranium = 5000) build_path = /obj/item/borg/upgrade/modkit/resonator_blasts /datum/design/unique_modkit/bounty name = "Kinetic Accelerator Death Syphon Mod" desc = "A device which causes kinetic accelerators to permanently gain damage against creature types killed with it." id = "bountymod" - materials = list(MAT_METAL = 4000, MAT_SILVER = 4000, MAT_GOLD = 4000, MAT_BLUESPACE = 4000) + materials = list(/datum/material/iron = 4000, /datum/material/silver = 4000, /datum/material/gold = 4000, /datum/material/bluespace = 4000) reagents_list = list("blood" = 40) build_path = /obj/item/borg/upgrade/modkit/bounty diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index f5150b4753..9561684414 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -47,8 +47,10 @@ add_fingerprint(usr) if(href_list["material"]) - machine.selected_material = href_list["material"] - machine.selected_alloy = null + var/datum/material/new_material = locate(href_list["material"]) + if(istype(new_material)) + machine.selected_material = new_material + machine.selected_alloy = null if(href_list["alloy"]) machine.selected_material = null @@ -75,15 +77,16 @@ density = TRUE var/obj/machinery/mineral/CONSOLE = null var/on = FALSE - var/selected_material = MAT_METAL + var/datum/material/selected_material = null var/selected_alloy = null var/datum/techweb/stored_research /obj/machinery/mineral/processing_unit/Initialize() . = ..() proximity_monitor = new(src, 1) - AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE), INFINITY, TRUE, /obj/item/stack) + AddComponent(/datum/component/material_container, list(/datum/material/iron, /datum/material/glass, /datum/material/silver, /datum/material/gold, /datum/material/diamond, /datum/material/plasma, /datum/material/uranium, /datum/material/bananium, /datum/material/titanium, /datum/material/bluespace), INFINITY, TRUE, /obj/item/stack) stored_research = new /datum/techweb/specialized/autounlocking/smelter + selected_material = getmaterialref(/datum/material/iron) /obj/machinery/mineral/processing_unit/Destroy() CONSOLE = null @@ -108,13 +111,13 @@ /obj/machinery/mineral/processing_unit/proc/get_machine_data() var/dat = "Smelter control console

" var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - for(var/mat_id in materials.materials) - var/datum/material/M = materials.materials[mat_id] - dat += "[M.name]: [M.amount] cm³" - if (selected_material == mat_id) + for(var/datum/material/M in materials.materials) + var/amount = materials.materials[M] + dat += "[M.name]: [amount] cm³" + if (selected_material == M) dat += " Smelting" else - dat += " Not Smelting " + dat += " Not Smelting " dat += "
" dat += "

" @@ -153,14 +156,14 @@ /obj/machinery/mineral/processing_unit/proc/smelt_ore() var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - var/datum/material/mat = materials.materials[selected_material] + var/datum/material/mat = selected_material if(mat) - var/sheets_to_remove = (mat.amount >= (MINERAL_MATERIAL_AMOUNT * SMELT_AMOUNT) ) ? SMELT_AMOUNT : round(mat.amount / MINERAL_MATERIAL_AMOUNT) + var/sheets_to_remove = (materials.materials[mat] >= (MINERAL_MATERIAL_AMOUNT * SMELT_AMOUNT) ) ? SMELT_AMOUNT : round(materials.materials[mat] / MINERAL_MATERIAL_AMOUNT) if(!sheets_to_remove) on = FALSE else var/out = get_step(src, output_dir) - materials.retrieve_sheets(sheets_to_remove, selected_material, out) + materials.retrieve_sheets(sheets_to_remove, mat, out) /obj/machinery/mineral/processing_unit/proc/smelt_alloy() @@ -176,7 +179,7 @@ return var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - materials.use_amount(alloy.materials, amount) + materials.use_materials(alloy.materials, amount) generate_mineral(alloy.build_path) @@ -188,14 +191,11 @@ var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - for(var/mat_id in D.materials) - var/M = D.materials[mat_id] - var/datum/material/smelter_mat = materials.materials[mat_id] + for(var/mat_cat in D.materials) + var/required_amount = D.materials[mat_cat] + var/amount = materials.materials[mat_cat] - if(!M || !smelter_mat) - return FALSE - - build_amount = min(build_amount, round(smelter_mat.amount / M)) + build_amount = min(build_amount, round(amount / required_amount)) return build_amount diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index 0a508cdaf5..0f0ca8bf0c 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -15,9 +15,9 @@ layer = BELOW_OBJ_LAYER var/points = 0 var/ore_pickup_rate = 15 - var/sheet_per_ore = 1 + var/ore_multiplier = 1 var/point_upgrade = 1 - var/list/ore_values = list(MAT_GLASS = 1, MAT_METAL = 1, MAT_PLASMA = 15, MAT_SILVER = 16, MAT_GOLD = 18, MAT_TITANIUM = 30, MAT_URANIUM = 30, MAT_DIAMOND = 50, MAT_BLUESPACE = 50, MAT_BANANIUM = 60) + var/list/ore_values = list(/datum/material/glass = 1, /datum/material/iron = 1, /datum/material/plasma = 15, /datum/material/silver = 16, /datum/material/gold = 18, /datum/material/titanium = 30, /datum/material/uranium = 30, /datum/material/diamond = 50, /datum/material/bluespace = 50, /datum/material/bananium = 60) var/message_sent = FALSE var/list/ore_buffer = list() var/datum/techweb/stored_research @@ -31,26 +31,27 @@ /obj/machinery/mineral/ore_redemption/Destroy() QDEL_NULL(stored_research) + materials = null return ..() /obj/machinery/mineral/ore_redemption/RefreshParts() var/ore_pickup_rate_temp = 15 var/point_upgrade_temp = 1 - var/sheet_per_ore_temp = 1 + var/ore_multiplier_temp = 1 for(var/obj/item/stock_parts/matter_bin/B in component_parts) - sheet_per_ore_temp = 0.65 + (0.35 * B.rating) + ore_multiplier_temp = 0.65 + (0.35 * B.rating) for(var/obj/item/stock_parts/manipulator/M in component_parts) ore_pickup_rate_temp = 15 * M.rating for(var/obj/item/stock_parts/micro_laser/L in component_parts) point_upgrade_temp = 0.65 + (0.35 * L.rating) ore_pickup_rate = ore_pickup_rate_temp point_upgrade = point_upgrade_temp - sheet_per_ore = sheet_per_ore_temp + ore_multiplier = round(ore_multiplier_temp, 0.01) /obj/machinery/mineral/ore_redemption/examine(mob/user) . = ..() if(in_range(user, src) || isobserver(user)) - . += "The status display reads: Smelting [sheet_per_ore] sheet(s) per piece of ore.
Reward point generation at [point_upgrade*100]%.
Ore pickup speed at [ore_pickup_rate].
" + . += "The status display reads: Smelting [ore_multiplier] sheet(s) per piece of ore.
Reward point generation at [point_upgrade*100]%.
Ore pickup speed at [ore_pickup_rate].
" /obj/machinery/mineral/ore_redemption/proc/smelt_ore(obj/item/stack/ore/O) var/datum/component/material_container/mat_container = materials.mat_container @@ -70,13 +71,13 @@ if(!material_amount) qdel(O) //no materials, incinerate it - else if(!mat_container.has_space(material_amount * sheet_per_ore * O.amount)) //if there is no space, eject it + else if(!mat_container.has_space(material_amount * O.amount)) //if there is no space, eject it unload_mineral(O) else - var/mats = O.materials & mat_container.materials + var/mats = O.custom_materials & mat_container.materials var/amount = O.amount - mat_container.insert_item(O, sheet_per_ore) //insert it + mat_container.insert_item(O, ore_multiplier) //insert it materials.silo_log(src, "smelted", amount, "ores", mats) qdel(O) @@ -87,14 +88,14 @@ var/build_amount = 0 - for(var/mat_id in D.materials) - var/M = D.materials[mat_id] - var/datum/material/redemption_mat = mat_container.materials[mat_id] + for(var/mat in D.materials) + var/amount = D.materials[mat] + var/datum/material/redemption_mat_amount = mat_container.materials[mat] - if(!M || !redemption_mat) + if(!amount || !redemption_mat_amount) return FALSE - var/smeltable_sheets = FLOOR(redemption_mat.amount / M, 1) + var/smeltable_sheets = FLOOR(redemption_mat_amount / amount, 1) if(!smeltable_sheets) return FALSE @@ -124,9 +125,9 @@ var/has_minerals = FALSE - for(var/mat_id in mat_container.materials) - var/datum/material/M = mat_container.materials[mat_id] - var/mineral_amount = M.amount / MINERAL_MATERIAL_AMOUNT + for(var/mat in mat_container.materials) + var/datum/material/M = mat + var/mineral_amount = mat_container.materials[mat] / MINERAL_MATERIAL_AMOUNT if(mineral_amount) has_minerals = TRUE msg += "[capitalize(M.name)]: [mineral_amount] sheets
" @@ -202,10 +203,12 @@ data["materials"] = list() var/datum/component/material_container/mat_container = materials.mat_container if (mat_container) - for(var/mat_id in mat_container.materials) - var/datum/material/M = mat_container.materials[mat_id] - var/sheet_amount = M.amount ? M.amount / MINERAL_MATERIAL_AMOUNT : "0" - data["materials"] += list(list("name" = M.name, "id" = M.id, "amount" = sheet_amount, "value" = ore_values[M.id] * point_upgrade)) + for(var/mat in mat_container.materials) + var/datum/material/M = mat + var/amount = mat_container.materials[M] + var/sheet_amount = amount / MINERAL_MATERIAL_AMOUNT + var/ref = REF(M) + data["materials"] += list(list("name" = M.name, "id" = ref, "amount" = sheet_amount, "value" = ore_values[M.type])) data["alloys"] = list() for(var/v in stored_research.researched_designs) @@ -251,16 +254,18 @@ if("Release") if(!mat_container) return + if(materials.on_hold()) to_chat(usr, "Mineral access is on hold, please contact the quartermaster.") else if(!allowed(usr)) //Check the ID inside, otherwise check the user to_chat(usr, "Required access not found.") else - var/mat_id = params["id"] - if(!mat_container.materials[mat_id]) + var/datum/material/mat = locate(params["id"]) + + var/amount = mat_container.materials[mat] + if(!amount) return - var/datum/material/mat = mat_container.materials[mat_id] - var/stored_amount = mat.amount / MINERAL_MATERIAL_AMOUNT + var/stored_amount = CEILING(amount / MINERAL_MATERIAL_AMOUNT, 0.1) if(!stored_amount) return @@ -272,9 +277,10 @@ desired = input("How many sheets?", "How many sheets would you like to smelt?", 1) as null|num var/sheets_to_remove = round(min(desired,50,stored_amount)) - var/count = mat_container.retrieve_sheets(sheets_to_remove, mat_id, get_step(src, output_dir)) + + var/count = mat_container.retrieve_sheets(sheets_to_remove, mat, get_step(src, output_dir)) var/list/mats = list() - mats[mat_id] = MINERAL_MATERIAL_AMOUNT + mats[mat] = MINERAL_MATERIAL_AMOUNT materials.silo_log(src, "released", -count, "sheets", mats) //Logging deleted for quick coding return TRUE @@ -315,7 +321,7 @@ else desired = input("How many sheets?", "How many sheets would you like to smelt?", 1) as null|num var/amount = round(min(desired,50,smelt_amount)) - mat_container.use_amount(alloy.materials, amount) + mat_container.use_materials(alloy.materials, amount) materials.silo_log(src, "released", -amount, "sheets", alloy.materials) var/output if(ispath(alloy.build_path, /obj/item/stack/sheet)) diff --git a/code/modules/mining/machine_silo.dm b/code/modules/mining/machine_silo.dm index 7d6bb80663..c0eba668f1 100644 --- a/code/modules/mining/machine_silo.dm +++ b/code/modules/mining/machine_silo.dm @@ -16,7 +16,7 @@ GLOBAL_LIST_EMPTY(silo_access_logs) /obj/machinery/ore_silo/Initialize(mapload) . = ..() AddComponent(/datum/component/material_container, - list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE, MAT_PLASTIC), + list(/datum/material/iron, /datum/material/glass, /datum/material/silver, /datum/material/gold, /datum/material/diamond, /datum/material/plasma, /datum/material/uranium, /datum/material/bananium, /datum/material/titanium, /datum/material/bluespace, /datum/material/plastic), INFINITY, FALSE, /obj/item/stack, @@ -34,6 +34,8 @@ GLOBAL_LIST_EMPTY(silo_access_logs) var/datum/component/remote_materials/mats = C mats.disconnect_from(src) + connected = null + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.retrieve_all() @@ -49,7 +51,7 @@ GLOBAL_LIST_EMPTY(silo_access_logs) if(!istype(I) || (I.flags_1 & HOLOGRAM_1) || (I.item_flags & NO_MAT_REDEMPTION)) to_chat(user, "[M] won't accept [I]!") return - var/item_mats = I.materials & materials.materials + var/item_mats = I.custom_materials & materials.materials if(!length(item_mats)) to_chat(user, "[I] does not contain sufficient materials to be accepted by [M].") return @@ -75,15 +77,17 @@ GLOBAL_LIST_EMPTY(silo_access_logs) var/list/ui = list("Ore Silo

Stored Material:

") var/any = FALSE for(var/M in materials.materials) - var/datum/material/mat = materials.materials[M] - var/sheets = round(mat.amount) / MINERAL_MATERIAL_AMOUNT + var/datum/material/mat = M + var/amount = materials.materials[M] + var/sheets = round(amount) / MINERAL_MATERIAL_AMOUNT + var/ref = REF(M) if (sheets) if (sheets >= 1) - ui += "Eject" + ui += "Eject" else ui += "Eject" if (sheets >= 20) - ui += "20x" + ui += "20x" else ui += "20x" ui += "[mat.name]: [sheets] sheets
" @@ -148,7 +152,7 @@ GLOBAL_LIST_EMPTY(silo_access_logs) updateUsrDialog() return TRUE else if(href_list["ejectsheet"]) - var/eject_sheet = href_list["ejectsheet"] + var/datum/material/eject_sheet = locate(href_list["ejectsheet"]) var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/count = materials.retrieve_sheets(text2num(href_list["eject_amt"]), eject_sheet, drop_location()) var/list/matlist = list() @@ -227,8 +231,9 @@ GLOBAL_LIST_EMPTY(silo_access_logs) var/list/msg = list("([timestamp]) [machine_name] in [area_name]
[action] [abs(amount)]x [noun]
") var/sep = "" for(var/key in materials) + var/datum/material/M = key var/val = round(materials[key]) / MINERAL_MATERIAL_AMOUNT msg += sep sep = ", " - msg += "[amount < 0 ? "-" : "+"][val] [copytext(key, length(key[1]) + 1)]" + msg += "[amount < 0 ? "-" : "+"][val] [M.name]" formatted = msg.Join() diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machine_stacking.dm index 31e977c6cf..5a83955bce 100644 --- a/code/modules/mining/machine_stacking.dm +++ b/code/modules/mining/machine_stacking.dm @@ -86,6 +86,11 @@ proximity_monitor = new(src, 1) materials = AddComponent(/datum/component/remote_materials, "stacking", mapload, FALSE, mapload && force_connect) +/obj/machinery/mineral/stacking_machine/Destroy() + CONSOLE = null + materials = null + return ..() + /obj/machinery/mineral/stacking_machine/HasProximity(atom/movable/AM) if(istype(AM, /obj/item/stack/sheet) && AM.loc == get_step(src, input_dir)) process_sheet(AM) @@ -107,9 +112,9 @@ qdel(inp) if(materials.silo && !materials.on_hold()) //Dump the sheets to the silo - var/matlist = storage.materials & materials.mat_container.materials + var/matlist = storage.custom_materials & materials.mat_container.materials if (length(matlist)) - var/inserted = materials.mat_container.insert_stack(storage) + var/inserted = materials.mat_container.insert_item(storage) materials.silo_log(src, "collected", inserted, "sheets", matlist) if (QDELETED(storage)) stack_list -= key diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm index f32afb2898..c9f9a2cfbb 100644 --- a/code/modules/mining/mint.dm +++ b/code/modules/mining/mint.dm @@ -8,14 +8,28 @@ density = TRUE var/newCoins = 0 //how many coins the machine made in it's last load var/processing = FALSE - var/chosen = MAT_METAL //which material will be used to make coins + var/chosen = /datum/material/iron //which material will be used to make coins var/coinsToProduce = 10 speed_process = TRUE /obj/machinery/mineral/mint/Initialize() . = ..() - AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_URANIUM, MAT_DIAMOND, MAT_BANANIUM), MINERAL_MATERIAL_AMOUNT * 50, FALSE, /obj/item/stack) + AddComponent(/datum/component/material_container, list( + /datum/material/iron, + /datum/material/plasma, + /datum/material/silver, + /datum/material/gold, + /datum/material/uranium, + /datum/material/titanium, + /datum/material/diamond, + /datum/material/bananium, + /datum/material/adamantine, + /datum/material/mythril, + /datum/material/plastic, + /datum/material/runite + ), MINERAL_MATERIAL_AMOUNT * 50, FALSE, /obj/item/stack) + chosen = getmaterialref(chosen) /obj/machinery/mineral/mint/process() var/turf/T = get_step(src, input_dir) @@ -24,7 +38,9 @@ var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) for(var/obj/item/stack/sheet/O in T) - materials.insert_stack(O, O.amount) + var/inserted = materials.insert_item(O) + if(inserted) + qdel(O) /obj/machinery/mineral/mint/attack_hand(mob/user) . = ..() @@ -33,17 +49,17 @@ var/dat = "Coin Press
" var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - for(var/mat_id in materials.materials) - var/datum/material/M = materials.materials[mat_id] - if(!M.amount && chosen != mat_id) + for(var/datum/material/M in materials.materials) + var/amount = materials.get_material_amount(M) + if(!amount && chosen != M) continue - dat += "
[M.name] amount: [M.amount] cm3 " - if (chosen == mat_id) + dat += "
[M.name] amount: [amount] cm3 " + if (chosen == M) dat += "Chosen" else - dat += "Choose" + dat += "Choose" - var/datum/material/M = materials.materials[chosen] + var/datum/material/M = chosen dat += "

Will produce [coinsToProduce] [lowertext(M.name)] coins if enough materials are available.
" dat += "-10 " @@ -67,22 +83,24 @@ return var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) if(href_list["choose"]) - if(materials.materials[href_list["choose"]]) - chosen = href_list["choose"] + var/datum/material/new_material = locate(href_list["choose"]) + if(istype(new_material)) + chosen = new_material if(href_list["chooseAmt"]) coinsToProduce = CLAMP(coinsToProduce + text2num(href_list["chooseAmt"]), 0, 1000) + updateUsrDialog() if(href_list["makeCoins"]) var/temp_coins = coinsToProduce processing = TRUE icon_state = "coinpress1" var/coin_mat = MINERAL_MATERIAL_AMOUNT * 0.2 - var/datum/material/M = materials.materials[chosen] - if(!M || !M.coin_type) + var/datum/material/M = chosen + if(!M) updateUsrDialog() return - while(coinsToProduce > 0 && materials.use_amount_type(coin_mat, chosen)) - create_coins(M.coin_type) + while(coinsToProduce > 0 && materials.use_amount_mat(coin_mat, chosen)) + create_coins() coinsToProduce-- newCoins++ src.updateUsrDialog() @@ -94,12 +112,15 @@ src.updateUsrDialog() return -/obj/machinery/mineral/mint/proc/create_coins(P) +/obj/machinery/mineral/mint/proc/create_coins() var/turf/T = get_step(src,output_dir) + var/temp_list = list() + temp_list[chosen] = 400 if(T) - var/obj/item/O = new P(src) - var/obj/item/storage/bag/money/M = locate(/obj/item/storage/bag/money, T) - if(!M) - M = new /obj/item/storage/bag/money(src) - unload_mineral(M) - O.forceMove(M) + var/obj/item/O = new /obj/item/coin(src) + var/obj/item/storage/bag/money/B = locate(/obj/item/storage/bag/money, T) + O.set_custom_materials(temp_list) + if(!B) + B = new /obj/item/storage/bag/money(src) + unload_mineral(B) + O.forceMove(B) diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index 7765bf8713..67c26abaef 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -17,6 +17,7 @@ var/points = 0 //How many points this ore gets you from the ore redemption machine var/refined_type = null //What this ore defaults to being refined into novariants = TRUE // Ore stacks handle their icon updates themselves to keep the illusion that there's more going + mats_per_stack = MINERAL_MATERIAL_AMOUNT var/list/stack_overlays /obj/item/stack/ore/update_icon() @@ -69,7 +70,8 @@ item_state = "Uranium ore" singular_name = "uranium ore chunk" points = 30 - materials = list(MAT_URANIUM=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/uranium=MINERAL_MATERIAL_AMOUNT) + material_flags = MATERIAL_NO_EFFECTS refined_type = /obj/item/stack/sheet/mineral/uranium /obj/item/stack/ore/iron @@ -78,7 +80,7 @@ item_state = "Iron ore" singular_name = "iron ore chunk" points = 1 - materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/iron=MINERAL_MATERIAL_AMOUNT) refined_type = /obj/item/stack/sheet/metal /obj/item/stack/ore/glass @@ -87,17 +89,17 @@ item_state = "Glass ore" singular_name = "sand pile" points = 1 - materials = list(MAT_GLASS=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/glass=MINERAL_MATERIAL_AMOUNT) refined_type = /obj/item/stack/sheet/glass w_class = WEIGHT_CLASS_TINY GLOBAL_LIST_INIT(sand_recipes, list(\ - new /datum/stack_recipe("sandstone", /obj/item/stack/sheet/mineral/sandstone, 1, 1, 50)\ - )) + new/datum/stack_recipe("sandstone", /obj/item/stack/sheet/mineral/sandstone, 1, 1, 50),\ + )) -/obj/item/stack/ore/glass/Initialize(mapload, new_amount, merge = TRUE) - recipes = GLOB.sand_recipes +/obj/item/stack/ore/glass/get_main_recipes() . = ..() + . += GLOB.sand_recipes /obj/item/stack/ore/glass/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(..() || !ishuman(hit_atom)) @@ -135,21 +137,20 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ item_state = "Plasma ore" singular_name = "plasma ore chunk" points = 15 - materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/plasma=MINERAL_MATERIAL_AMOUNT) refined_type = /obj/item/stack/sheet/mineral/plasma /obj/item/stack/ore/plasma/welder_act(mob/living/user, obj/item/I) to_chat(user, "You can't hit a high enough temperature to smelt [src] properly!") return TRUE - /obj/item/stack/ore/silver name = "silver ore" icon_state = "Silver ore" item_state = "Silver ore" singular_name = "silver ore chunk" points = 16 - materials = list(MAT_SILVER=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/silver=MINERAL_MATERIAL_AMOUNT) refined_type = /obj/item/stack/sheet/mineral/silver /obj/item/stack/ore/gold @@ -158,7 +159,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "Gold ore" singular_name = "gold ore chunk" points = 18 - materials = list(MAT_GOLD=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/gold=MINERAL_MATERIAL_AMOUNT) refined_type = /obj/item/stack/sheet/mineral/gold /obj/item/stack/ore/diamond @@ -167,7 +168,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ item_state = "Diamond ore" singular_name = "diamond ore chunk" points = 50 - materials = list(MAT_DIAMOND=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/diamond=MINERAL_MATERIAL_AMOUNT) refined_type = /obj/item/stack/sheet/mineral/diamond /obj/item/stack/ore/bananium @@ -176,7 +177,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ item_state = "Bananium ore" singular_name = "bananium ore chunk" points = 60 - materials = list(MAT_BANANIUM=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/bananium=MINERAL_MATERIAL_AMOUNT) refined_type = /obj/item/stack/sheet/mineral/bananium /obj/item/stack/ore/titanium @@ -185,7 +186,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ item_state = "Titanium ore" singular_name = "titanium ore chunk" points = 50 - materials = list(MAT_TITANIUM=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/titanium=MINERAL_MATERIAL_AMOUNT) refined_type = /obj/item/stack/sheet/mineral/titanium /obj/item/stack/ore/slag @@ -313,17 +314,33 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ /obj/item/coin icon = 'icons/obj/economy.dmi' name = "coin" - icon_state = "coin__heads" + icon_state = "coin" flags_1 = CONDUCT_1 force = 1 throwforce = 2 w_class = WEIGHT_CLASS_TINY + custom_materials = list(/datum/material/iron = 400) + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR var/string_attached var/list/sideslist = list("heads","tails") - var/cmineral = null var/cooldown = 0 - var/value = 1 + var/value var/coinflip + item_flags = NO_MAT_REDEMPTION //You know, it's kind of a problem that money is worth more extrinsicly than intrinsically in this universe. + +/obj/item/coin/Initialize() + . = ..() + coinflip = pick(sideslist) + icon_state = "coin_[coinflip]" + pixel_x = rand(0,16)-8 + pixel_y = rand(0,8)-8 + +/obj/item/coin/set_custom_materials(list/materials, multiplier = 1) + . = ..() + value = 0 + for(var/i in custom_materials) + var/datum/material/M = i + value += M.value_per_unit * custom_materials[M] /obj/item/coin/suicide_act(mob/living/user) user.visible_message("[user] contemplates suicide with \the [src]!") @@ -342,101 +359,9 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ else user.visible_message("\the [src] lands on [coinflip]! [user] keeps on living!") -/obj/item/coin/Initialize() - . = ..() - pixel_x = rand(0,16)-8 - pixel_y = rand(0,8)-8 - /obj/item/coin/examine(mob/user) . = ..() - if(value) - . += "It's worth [value] credit\s." - -/obj/item/coin/gold - name = "gold coin" - cmineral = "gold" - icon_state = "coin_gold_heads" - value = 50 - materials = list(MAT_GOLD = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list(/datum/reagent/gold = 4) - -/obj/item/coin/silver - name = "silver coin" - cmineral = "silver" - icon_state = "coin_silver_heads" - value = 20 - materials = list(MAT_SILVER = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list(/datum/reagent/silver = 4) - -/obj/item/coin/diamond - name = "diamond coin" - cmineral = "diamond" - icon_state = "coin_diamond_heads" - value = 500 - materials = list(MAT_DIAMOND = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list(/datum/reagent/carbon = 4) - -/obj/item/coin/iron - name = "iron coin" - cmineral = "iron" - icon_state = "coin_iron_heads" - value = 1 - materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list(/datum/reagent/iron = 4) - -/obj/item/coin/plasma - name = "plasma coin" - cmineral = "plasma" - icon_state = "coin_plasma_heads" - value = 100 - materials = list(MAT_PLASMA = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list(/datum/reagent/toxin/plasma = 4) - -/obj/item/coin/uranium - name = "uranium coin" - cmineral = "uranium" - icon_state = "coin_uranium_heads" - value = 80 - materials = list(MAT_URANIUM = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list(/datum/reagent/uranium = 4) - -/obj/item/coin/bananium - name = "bananium coin" - cmineral = "bananium" - icon_state = "coin_bananium_heads" - value = 1000 //makes the clown cry - materials = list(MAT_BANANIUM = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list(/datum/reagent/consumable/banana = 4) - -/obj/item/coin/adamantine - name = "adamantine coin" - cmineral = "adamantine" - icon_state = "coin_adamantine_heads" - value = 1500 - -/obj/item/coin/mythril - name = "mythril coin" - cmineral = "mythril" - icon_state = "coin_mythril_heads" - value = 3000 - -/obj/item/coin/twoheaded - cmineral = "iron" - icon_state = "coin_iron_heads" - desc = "Hey, this coin's the same on both sides!" - sideslist = list("heads") - materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT*0.2) - value = 1 - grind_results = list(/datum/reagent/iron = 4) - -/obj/item/coin/antagtoken - name = "antag token" - icon_state = "coin_valid_valid" - cmineral = "valid" - desc = "A novelty coin that helps the heart know what hard evidence cannot prove." - sideslist = list("valid", "salad") - value = 0 - grind_results = list(/datum/reagent/consumable/sodiumchloride = 4) + . += "It's worth [value] credit\s." /obj/item/coin/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/stack/cable_coil)) @@ -470,10 +395,10 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ if(string_attached) //does the coin have a wire attached to_chat(user, "The coin won't flip very well with something attached!" ) return FALSE//do not flip the coin - coinflip = pick(sideslist) cooldown = world.time + 15 - flick("coin_[cmineral]_flip", src) - icon_state = "coin_[cmineral]_[coinflip]" + flick("coin_[coinflip]_flip", src) + coinflip = pick(sideslist) + icon_state = "coin_[coinflip]" playsound(user.loc, 'sound/items/coinflip.ogg', 50, 1) var/oldloc = loc sleep(15) @@ -483,5 +408,51 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ "You hear the clattering of loose change.") return TRUE//did the coin flip? useful for suicide_act +/obj/item/coin/gold + custom_materials = list(/datum/material/gold = 400) + +/obj/item/coin/silver + custom_materials = list(/datum/material/silver = 400) + +/obj/item/coin/diamond + custom_materials = list(/datum/material/diamond = 400) + +/obj/item/coin/plasma + custom_materials = list(/datum/material/plasma = 400) + +/obj/item/coin/uranium + custom_materials = list(/datum/material/uranium = 400) + +/obj/item/coin/titanium + custom_materials = list(/datum/material/titanium = 400) + +/obj/item/coin/bananium + custom_materials = list(/datum/material/bananium = 400) + +/obj/item/coin/adamantine + custom_materials = list(/datum/material/adamantine = 400) + +/obj/item/coin/mythril + custom_materials = list(/datum/material/mythril = 400) + +/obj/item/coin/plastic + custom_materials = list(/datum/material/plastic = 400) + +/obj/item/coin/runite + custom_materials = list(/datum/material/runite = 400) + +/obj/item/coin/twoheaded + desc = "Hey, this coin's the same on both sides!" + sideslist = list("heads") + +/obj/item/coin/antagtoken + name = "antag token" + desc = "A novelty coin that helps the heart know what hard evidence cannot prove." + icon_state = "coin_valid" + custom_materials = list(/datum/material/plastic = 400) + sideslist = list("valid", "salad") + material_flags = NONE + +/obj/item/coin/iron #undef ORESTACK_OVERLAYS_MAX diff --git a/code/modules/mining/satchel_ore_boxdm.dm b/code/modules/mining/satchel_ore_boxdm.dm index d78a406b80..1d803371be 100644 --- a/code/modules/mining/satchel_ore_boxdm.dm +++ b/code/modules/mining/satchel_ore_boxdm.dm @@ -18,6 +18,10 @@ else return ..() +/obj/structure/ore_box/ComponentInitialize() + . = ..() + AddComponent(/datum/component/rad_insulation, 0.01) //please datum mats no more cancer + /obj/structure/ore_box/crowbar_act(mob/living/user, obj/item/I) if(I.use_tool(src, user, 50, volume=50)) user.visible_message("[user] pries \the [src] apart.", diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index 5020cc7379..414f339b28 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -1,6 +1,7 @@ /mob/living/carbon/apply_damage(damage, damagetype = BRUTE, def_zone = null, blocked = FALSE, forced = FALSE) + SEND_SIGNAL(src, COMSIG_MOB_APPLY_DAMGE, damage, damagetype, def_zone) var/hit_percent = (100-blocked)/100 if(!forced && hit_percent <= 0) return 0 diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 8e19fa7776..fec82b357f 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -397,7 +397,7 @@ var/flavor = print_flavor_text(flavor_text) if(flavor) . += flavor - var/temp_flavor = print_flavor_text(flavor_text_2) + var/temp_flavor = print_flavor_text(flavor_text_2,TRUE) if(temp_flavor) . += temp_flavor SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, user, .) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index e62177abbb..b1bc47ea4a 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1924,6 +1924,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) log_combat(user, target, "shoved", append_message) /datum/species/proc/apply_damage(damage, damagetype = BRUTE, def_zone = null, blocked, mob/living/carbon/human/H, forced = FALSE) + SEND_SIGNAL(src, COMSIG_MOB_APPLY_DAMGE, damage, damagetype, def_zone) var/hit_percent = (100-(blocked+armor))/100 hit_percent = (hit_percent * (100-H.physiology.damage_resistance))/100 if(!forced && hit_percent <= 0) diff --git a/code/modules/mob/living/carbon/human/species_types/ipc.dm b/code/modules/mob/living/carbon/human/species_types/ipc.dm index 4249be098f..15f3dd808b 100644 --- a/code/modules/mob/living/carbon/human/species_types/ipc.dm +++ b/code/modules/mob/living/carbon/human/species_types/ipc.dm @@ -13,7 +13,13 @@ meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/ipc gib_types = list(/obj/effect/gibspawner/ipc, /obj/effect/gibspawner/ipc/bodypartless) mutanttongue = /obj/item/organ/tongue/robot/ipc +//Just robo looking parts. mutant_heart = /obj/item/organ/heart/ipc + mutantlungs = /obj/item/organ/lungs/ipc + mutantliver = /obj/item/organ/liver/ipc + mutantstomach = /obj/item/organ/stomach/ipc + mutanteyes = /obj/item/organ/eyes/ipc + exotic_bloodtype = "HF" var/datum/action/innate/monitor_change/screen diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 212ea79e9d..e8cf0225e6 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -546,6 +546,12 @@ /mob/living/proc/update_damage_overlays() return +/mob/living/Crossed(atom/movable/AM) + . = ..() + for(var/i in get_equipped_items()) + var/obj/item/item = i + SEND_SIGNAL(item, COMSIG_ITEM_WEARERCROSSED, AM) + /mob/living/Move(atom/newloc, direct) if (buckled && buckled.loc != newloc) //not updating position if (!buckled.anchored) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index ed0d0d02e8..3b15c47bcb 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -146,7 +146,7 @@ aiPDA.name = name + " (" + aiPDA.ownjob + ")" aiMulti = new(src) - radio = new /obj/item/radio/headset/ai(src) + radio = new /obj/item/radio/headset/silicon/ai(src) aicamera = new/obj/item/camera/siliconcam/ai_camera(src) deploy_action.Grant(src) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index daaf9afbe2..074e637120 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -10,6 +10,7 @@ health = 500 maxHealth = 500 layer = BELOW_MOB_LAYER + var/obj/item/instrument/piano_synth/internal_instrument silicon_privileges = PRIVILEDGES_PAI var/datum/element/mob_holder/current_mob_holder //because only a few of their chassis can be actually held. @@ -27,6 +28,7 @@ var/speakDoubleExclamation = "alarms" var/speakQuery = "queries" + var/obj/item/radio/headset // The pAI's headset var/obj/item/pai_cable/cable // The cable we produce and use when door or camera jacking var/master // Name of the one who commands us @@ -54,6 +56,7 @@ var/obj/item/integrated_signaler/signaler // AI's signaller + var/encryptmod = FALSE var/holoform = FALSE var/canholo = TRUE var/obj/item/card/id/access_card = null @@ -84,6 +87,7 @@ var/icon/custom_holoform_icon /mob/living/silicon/pai/Destroy() + QDEL_NULL(internal_instrument) if (loc != card) card.forceMove(drop_location()) card.pai = null @@ -106,7 +110,7 @@ card = P signaler = new(src) if(!radio) - radio = new /obj/item/radio(src) + radio = new /obj/item/radio/headset/silicon/pai(src) //PDA pda = new(src) @@ -296,6 +300,17 @@ /mob/living/silicon/pai/process() emitterhealth = CLAMP((emitterhealth + emitterregen), -50, emittermaxhealth) +/obj/item/paicard/attackby(obj/item/W, mob/user, params) + ..() + user.set_machine(src) + if(pai.encryptmod == TRUE) + if(W.tool_behaviour == TOOL_SCREWDRIVER) + pai.radio.attackby(W, user, params) + else if(istype(W, /obj/item/encryptionkey)) + pai.radio.attackby(W, user, params) + else + to_chat(user, "Encryption Key ports not configured.") + /mob/living/silicon/pai/proc/short_radio() if(radio_short_timerid) deltimer(radio_short_timerid) diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm index 55f4bdd65d..7751632813 100644 --- a/code/modules/mob/living/silicon/pai/software.dm +++ b/code/modules/mob/living/silicon/pai/software.dm @@ -20,6 +20,8 @@ "universal translator" = 35, //"projection array" = 15 "remote signaller" = 5, + "loudness booster" = 25, + "encryption keys" = 20 ) /mob/living/silicon/pai/proc/paiInterface() @@ -50,6 +52,8 @@ left_part = softwareMedicalRecord() if("securityrecord") left_part = softwareSecurityRecord() + if("encryptionkeys") + left_part = softwareEncryptionKeys() if("translator") left_part = softwareTranslator() if("atmosensor") @@ -64,6 +68,8 @@ left_part = softwareCamera() if("signaller") left_part = softwareSignal() + if("loudness") + left_part = softwareLoudness() //usr << browse_rsc('windowbak.png') // This has been moved to the mob's Login() proc @@ -256,6 +262,9 @@ else var/datum/atom_hud/med = GLOB.huds[med_hud] med.remove_hud_from(src) + if("encryptionkeys") + if(href_list["toggle"]) + encryptmod = TRUE if("translator") if(href_list["toggle"]) grant_all_languages(TRUE) @@ -271,6 +280,12 @@ var/turf/T = get_turf(loc) cable = new /obj/item/pai_cable(T) T.visible_message("A port on [src] opens to reveal [cable], which promptly falls to the floor.", "You hear the soft click of something light and hard falling to the ground.") + if("loudness") + if(subscreen == 1) // Open Instrument + internal_instrument.interact(src) + if(subscreen == 2) // Change Instrument type + internal_instrument.selectInstrument() + //updateUsrDialog() We only need to account for the single mob this is intended for, and he will *always* be able to call this window paiInterface() // So we'll just call the update directly rather than doing some default checks return @@ -306,6 +321,8 @@ dat += "Camera Jack
" if(s == "remote signaller") dat += "Remote Signaller
" + if(s == "loudness booster") + dat += "Loudness Booster
" dat += "
" // Advanced @@ -319,6 +336,8 @@ dat += "Facial Recognition Suite[(secHUD) ? " On" : " Off"]
" if(s == "medical HUD") dat += "Medical Analysis Suite[(medHUD) ? " On" : " Off"]
" + if(s == "encryption keys") + dat += "Channel Encryption Firmware[(encryptmod) ? " On" : " Off"]
" if(s == "universal translator") var/datum/language_holder/H = get_language_holder() dat += "Universal Translator[H.omnitongue ? " On" : " Off"]
" @@ -469,6 +488,14 @@ . += "
Requested security record not found,

" . += "
\nBack
" return . +// Encryption Keys +// Encryption kets +/mob/living/silicon/pai/proc/softwareEncryptionKeys() + var/dat = {"

Encryption Key Firmware


+ When enabled, this device will be able to use up to two (2) encryption keys for departmental channel access.

+ The device is currently [encryptmod ? "en" : "dis" ]abled.
[encryptmod ? "" : "Activate Encryption Key Ports
"]"} + return dat + // Universal Translator /mob/living/silicon/pai/proc/softwareTranslator() @@ -630,3 +657,12 @@ dat += "

" dat += "Messages:
[pda.tnote]" return dat + +// Loudness Booster +/mob/living/silicon/pai/proc/softwareLoudness() + if(!internal_instrument) + internal_instrument = new(src) + var/dat = "

Sound Synthetizer

" + dat += "Open Synthesizer Interface
" + dat += "Choose Instrument Type" + return dat diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 13cca376e5..f3e0816b1b 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -97,8 +97,8 @@ var/obj/item/stack/S = I if(is_type_in_list(S, list(/obj/item/stack/sheet/metal, /obj/item/stack/rods, /obj/item/stack/tile/plasteel))) - if(S.materials[MAT_METAL]) - S.cost = S.materials[MAT_METAL] * 0.25 + if(S.custom_materials?.len && S.custom_materials[getmaterialref(/datum/material/iron)]) + S.cost = S.custom_materials[getmaterialref(/datum/material/iron)] * 0.25 S.source = get_or_create_estorage(/datum/robot_energy_storage/metal) else if(istype(S, /obj/item/stack/sheet/glass)) @@ -127,7 +127,7 @@ S.source = get_or_create_estorage(/datum/robot_energy_storage/wrapping_paper) if(S && S.source) - S.materials = list() + S.custom_materials = null S.is_cyborg = 1 if(I.loc != src) diff --git a/code/modules/mob/living/simple_animal/hostile/dark_wizard.dm b/code/modules/mob/living/simple_animal/hostile/dark_wizard.dm new file mode 100644 index 0000000000..aec136af7d --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/dark_wizard.dm @@ -0,0 +1,39 @@ +/mob/living/simple_animal/hostile/dark_wizard + name = "Dark Wizard" + desc = "Killing amateurs since the dawn of times." + icon = 'icons/mob/simple_human.dmi' + icon_state = "dark_wizard" + icon_living = "dark_wizard" + move_to_delay = 10 + projectiletype = /obj/item/projectile/temp/earth_bolt + projectilesound = 'sound/magic/ethereal_enter.ogg' + ranged = TRUE + ranged_message = "earth bolts" + ranged_cooldown_time = 20 + maxHealth = 50 + health = 50 + harm_intent_damage = 5 + obj_damage = 20 + melee_damage_lower = 5 + melee_damage_upper = 5 + attacktext = "staves" + a_intent = INTENT_HARM + speak_emote = list("chants") + attack_sound = 'sound/weapons/bladeslice.ogg' + aggro_vision_range = 9 + turns_per_move = 5 + gold_core_spawnable = HOSTILE_SPAWN + faction = list(ROLE_WIZARD) + do_footstep = TRUE + weather_immunities = list("lava","ash") + minbodytemp = 0 + maxbodytemp = INFINITY + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + loot = list(/obj/effect/decal/remains/human) + +/obj/item/projectile/temp/earth_bolt + name = "earth_bolt" + icon_state = "declone" + damage = 4 + damage_type = BURN + flag = "energy" \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm index 11de9df70b..f949df8012 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @@ -81,11 +81,13 @@ throw_message = "falls right through the strange body of the" obj_damage = 0 environment_smash = ENVIRONMENT_SMASH_NONE - pass_flags = PASSTABLE + pass_flags = PASSTABLE | PASSMOB //they shouldn't get stuck behind hivelords. + density = FALSE del_on_death = 1 /mob/living/simple_animal/hostile/asteroid/hivelordbrood/Initialize() . = ..() + AddComponent(/datum/component/swarming) //oh god not the bees addtimer(CALLBACK(src, .proc/death), 100) //Legion @@ -174,7 +176,6 @@ speak_emote = list("echoes") attack_sound = 'sound/weapons/pierce.ogg' throw_message = "is shrugged off by" - pass_flags = PASSTABLE del_on_death = TRUE stat_attack = UNCONSCIOUS robust_searching = 1 diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm index 551b77dec3..a83720dc23 100644 --- a/code/modules/modular_computers/computers/item/computer.dm +++ b/code/modules/modular_computers/computers/item/computer.dm @@ -29,7 +29,7 @@ var/max_hardware_size = 0 // Maximal hardware w_class. Tablets/PDAs have 1, laptops 2, consoles 4. var/steel_sheet_cost = 5 // Amount of steel sheets refunded when disassembling an empty frame of this computer. - integrity_failure = 50 + integrity_failure = 0.5 max_integrity = 100 armor = list("melee" = 0, "bullet" = 20, "laser" = 20, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 0, "acid" = 0) @@ -203,7 +203,7 @@ /obj/item/modular_computer/examine(mob/user) . = ..() - if(obj_integrity <= integrity_failure) + if(obj_integrity <= integrity_failure * max_integrity) . += "It is heavily damaged!" else if(obj_integrity < max_integrity) . += "It is damaged." @@ -219,7 +219,7 @@ else add_overlay(icon_state_menu) - if(obj_integrity <= integrity_failure) + if(obj_integrity <= integrity_failure * max_integrity) add_overlay("bsod") add_overlay("broken") @@ -233,7 +233,7 @@ /obj/item/modular_computer/proc/turn_on(mob/user) var/issynth = issilicon(user) // Robots and AIs get different activation messages. - if(obj_integrity <= integrity_failure) + if(obj_integrity <= integrity_failure * max_integrity) if(issynth) to_chat(user, "You send an activation signal to \the [src], but it responds with an error code. It must be damaged.") else @@ -265,7 +265,7 @@ last_power_usage = 0 return 0 - if(obj_integrity <= integrity_failure) + if(obj_integrity <= integrity_failure * max_integrity) shutdown_computer() return 0 diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm index 39b2c45d99..a1f13878c1 100644 --- a/code/modules/modular_computers/computers/machinery/modular_computer.dm +++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm @@ -65,7 +65,7 @@ else add_overlay(screen_icon_state_menu) - if(cpu && cpu.obj_integrity <= cpu.integrity_failure) + if(cpu && cpu.obj_integrity <= cpu.integrity_failure * cpu.max_integrity) add_overlay("bsod") add_overlay("broken") diff --git a/code/modules/modular_computers/computers/machinery/modular_console.dm b/code/modules/modular_computers/computers/machinery/modular_console.dm index 026091f88b..3d4ec22e89 100644 --- a/code/modules/modular_computers/computers/machinery/modular_console.dm +++ b/code/modules/modular_computers/computers/machinery/modular_console.dm @@ -15,7 +15,7 @@ steel_sheet_cost = 10 light_strength = 2 max_integrity = 300 - integrity_failure = 150 + integrity_failure = 0.5 var/console_department = "" // Used in New() to set network tag according to our area. /obj/machinery/modular_computer/console/buildable/Initialize() diff --git a/code/modules/newscaster/newscaster_machine.dm b/code/modules/newscaster/newscaster_machine.dm index cb2016a1a1..46dc52e286 100644 --- a/code/modules/newscaster/newscaster_machine.dm +++ b/code/modules/newscaster/newscaster_machine.dm @@ -4,7 +4,7 @@ GLOBAL_LIST_EMPTY(allCasters) name = "newscaster frame" desc = "Used to build newscasters, just secure to the wall." icon_state = "newscaster" - materials = list(MAT_METAL=14000, MAT_GLASS=8000) + custom_materials = list(/datum/material/iron=14000, /datum/material/glass=8000) result_path = /obj/machinery/newscaster /obj/machinery/newscaster @@ -17,7 +17,7 @@ GLOBAL_LIST_EMPTY(allCasters) verb_exclaim = "beeps" armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30) max_integrity = 200 - integrity_failure = 50 + integrity_failure = 0.25 var/screen = 0 var/paper_remaining = 15 var/securityCaster = 0 diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 2650da8c7a..a98f057c4a 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -21,7 +21,7 @@ w_class = WEIGHT_CLASS_TINY throw_speed = 3 throw_range = 7 - materials = list(MAT_METAL=10) + custom_materials = list(/datum/material/iron=10) pressure_resistance = 2 grind_results = list(/datum/reagent/iron = 2, /datum/reagent/iodine = 1) var/colour = "black" //what colour the ink is! @@ -79,7 +79,7 @@ throwforce = 5 throw_speed = 4 colour = "crimson" - materials = list(MAT_GOLD = 750) + custom_materials = list(/datum/material/gold = 750) sharpness = IS_SHARP resistance_flags = FIRE_PROOF unique_reskin = list("Oak" = "pen-fountain-o", @@ -139,6 +139,7 @@ O.name = input to_chat(user, "\The [oldname] has been successfully been renamed to \the [input].") O.renamedByPlayer = TRUE + log_game("[user] [key_name(user)] has renamed [O] to [input]") if(penchoice == "Change description") var/input = stripped_input(user,"Describe \the [O.name] here", ,"", 100) @@ -146,6 +147,7 @@ return O.desc = input to_chat(user, "You have successfully changed \the [O.name]'s description.") + log_game("[user] [key_name(user)] has changed [O]'s description to to [input]") /* * Sleepypens diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 182806388a..97d28d7674 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -18,7 +18,7 @@ active_power_usage = 200 power_channel = EQUIP max_integrity = 300 - integrity_failure = 100 + integrity_failure = 0.33 var/obj/item/paper/copy = null //what's in the copier! var/obj/item/photo/photocopy = null var/obj/item/documents/doccopy = null diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index 1fe59623fb..2beb9296b3 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -8,7 +8,7 @@ w_class = WEIGHT_CLASS_TINY throw_speed = 3 throw_range = 7 - materials = list(MAT_METAL=60) + custom_materials = list(/datum/material/iron=60) item_color = "cargo" pressure_resistance = 2 attack_verb = list("stamped") diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm index 140167c2f0..b7b7bc36b7 100644 --- a/code/modules/photography/camera/camera.dm +++ b/code/modules/photography/camera/camera.dm @@ -14,7 +14,7 @@ w_class = WEIGHT_CLASS_SMALL flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_NECK - materials = list(MAT_METAL = 50, MAT_GLASS = 150) + custom_materials = list(/datum/material/iron = 50, /datum/material/glass = 150) var/flash_enabled = TRUE var/state_on = "camera" var/state_off = "camera_off" diff --git a/code/modules/photography/camera/film.dm b/code/modules/photography/camera/film.dm index b1cd6bae66..b44b933610 100644 --- a/code/modules/photography/camera/film.dm +++ b/code/modules/photography/camera/film.dm @@ -11,4 +11,4 @@ righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' w_class = WEIGHT_CLASS_TINY resistance_flags = FLAMMABLE - materials = list(MAT_METAL = 10, MAT_GLASS = 10) + custom_materials = list(/datum/material/iron = 10, /datum/material/glass = 10) diff --git a/code/modules/photography/photos/frame.dm b/code/modules/photography/photos/frame.dm index f86cae8095..d20a71d1c6 100644 --- a/code/modules/photography/photos/frame.dm +++ b/code/modules/photography/photos/frame.dm @@ -4,7 +4,7 @@ name = "picture frame" desc = "The perfect showcase for your favorite deathtrap memories." icon = 'icons/obj/decals.dmi' - materials = list() + custom_materials = null flags_1 = 0 icon_state = "frame-empty" result_path = /obj/structure/sign/picture_frame diff --git a/code/modules/power/antimatter/shielding.dm b/code/modules/power/antimatter/shielding.dm index 32950a2199..624c4c0316 100644 --- a/code/modules/power/antimatter/shielding.dm +++ b/code/modules/power/antimatter/shielding.dm @@ -243,7 +243,7 @@ throwforce = 5 throw_speed = 1 throw_range = 2 - materials = list(MAT_METAL=100) + custom_materials = list(/datum/material/iron=100) /obj/item/am_shielding_container/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/multitool) && istype(src.loc, /turf)) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index db3e3c83c6..43a1f94ca5 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -53,7 +53,7 @@ use_power = NO_POWER_USE req_access = null max_integrity = 300 - integrity_failure = 50 + integrity_failure = 0.17 var/damage_deflection = 10 resistance_flags = FIRE_PROOF armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 100, "bomb" = 30, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 50) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 3c807390a0..b9d4d1adf1 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -488,7 +488,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai w_class = WEIGHT_CLASS_SMALL throw_speed = 3 throw_range = 5 - materials = list(MAT_METAL=10, MAT_GLASS=5) + custom_materials = list(/datum/material/iron=10, /datum/material/glass=5) flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BELT attack_verb = list("whipped", "lashed", "disciplined", "flogged") @@ -499,7 +499,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai /obj/item/stack/cable_coil/cyborg is_cyborg = 1 - materials = list() + custom_materials = null cost = 1 /obj/item/stack/cable_coil/cyborg/attack_self(mob/user) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index d8d473a3e2..a15580498c 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -13,8 +13,8 @@ w_class = WEIGHT_CLASS_SMALL var/charge = 0 // note %age conveted to actual charge in New var/maxcharge = 1000 + custom_materials = list(/datum/material/iron=700, /datum/material/glass=50) var/start_charged = TRUE - materials = list(MAT_METAL=700, MAT_GLASS=50) grind_results = list(/datum/reagent/lithium = 15, /datum/reagent/iron = 5, /datum/reagent/silicon = 5) var/rigged = FALSE // true if rigged to explode var/chargerate = 100 //how much power is given every tick in a recharger @@ -172,7 +172,7 @@ name = "\improper Nanotrasen brand rechargeable AA battery" desc = "You can't top the plasma top." //TOTALLY TRADEMARK INFRINGEMENT maxcharge = 500 - materials = list(MAT_GLASS=40) + custom_materials = list(/datum/material/glass=40) /obj/item/stock_parts/cell/crap/empty start_charged = FALSE @@ -181,7 +181,7 @@ name = "upgraded power cell" desc = "A power cell with a slightly higher capacity than normal!" maxcharge = 2500 - materials = list(MAT_GLASS=50) + custom_materials = list(/datum/material/glass=50) chargerate = 1000 /obj/item/stock_parts/cell/upgraded/plus @@ -192,7 +192,7 @@ /obj/item/stock_parts/cell/secborg name = "security borg rechargeable D battery" maxcharge = 1250 //25/12/6 disabler/laser/taser shots. - materials = list(MAT_GLASS=40) + custom_materials = list(/datum/material/glass=40) /obj/item/stock_parts/cell/secborg/empty start_charged = FALSE @@ -218,7 +218,7 @@ name = "high-capacity power cell" icon_state = "hcell" maxcharge = 10000 - materials = list(MAT_GLASS=60) + custom_materials = list(/datum/material/glass=60) chargerate = 1500 /obj/item/stock_parts/cell/high/plus @@ -235,7 +235,7 @@ name = "super-capacity power cell" icon_state = "scell" maxcharge = 20000 - materials = list(MAT_GLASS=300) + custom_materials = list(/datum/material/glass=300) chargerate = 2000 /obj/item/stock_parts/cell/super/empty @@ -245,7 +245,7 @@ name = "hyper-capacity power cell" icon_state = "hpcell" maxcharge = 30000 - materials = list(MAT_GLASS=400) + custom_materials = list(/datum/material/glass=400) chargerate = 3000 /obj/item/stock_parts/cell/hyper/empty @@ -256,7 +256,7 @@ desc = "A rechargeable transdimensional power cell." icon_state = "bscell" maxcharge = 40000 - materials = list(MAT_GLASS=600) + custom_materials = list(/datum/material/glass=600) chargerate = 4000 /obj/item/stock_parts/cell/bluespace/empty @@ -266,7 +266,7 @@ name = "infinite-capacity power cell!" icon_state = "icell" maxcharge = 30000 - materials = list(MAT_GLASS=1000) + custom_materials = list(/datum/material/glass=1000) rating = 100 chargerate = 30000 @@ -292,7 +292,7 @@ icon_state = "potato" charge = 100 maxcharge = 300 - materials = list() + custom_materials = null grown_battery = TRUE //it has the overlays for wires /obj/item/stock_parts/cell/high/slime @@ -300,7 +300,7 @@ desc = "A yellow slime core infused with plasma, it crackles with power." icon = 'icons/mob/slimes.dmi' icon_state = "yellow slime extract" - materials = list() + custom_materials = null rating = 5 //self-recharge makes these desirable self_recharge = 1 // Infused slime cores self-recharge, over time @@ -339,7 +339,7 @@ name = "miniature power cell" desc = "A tiny power cell with a very low power capacity. Used in light fixtures to power them in the event of an outage." maxcharge = 120 //Emergency lights use 0.2 W per tick, meaning ~10 minutes of emergency power from a cell - materials = list(MAT_GLASS = 20) + custom_materials = list(/datum/material/glass = 20) w_class = WEIGHT_CLASS_TINY /obj/item/stock_parts/cell/emergency_light/Initialize() diff --git a/code/modules/power/floodlight.dm b/code/modules/power/floodlight.dm index 8da3594d5e..9fb1a1ce7d 100644 --- a/code/modules/power/floodlight.dm +++ b/code/modules/power/floodlight.dm @@ -43,7 +43,7 @@ icon_state = "floodlight" density = TRUE max_integrity = 100 - integrity_failure = 80 + integrity_failure = 0.8 idle_power_usage = 100 active_power_usage = 1000 var/list/light_setting_list = list(0, 5, 10, 15) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 5ca09036ad..6cfcc5192a 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -23,7 +23,7 @@ name = "small light fixture frame" icon_state = "bulb-construct-item" result_path = /obj/structure/light_construct/small - materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/iron=MINERAL_MATERIAL_AMOUNT) /obj/item/wallframe/light_fixture/try_build(turf/on_wall, user) if(!..()) @@ -726,7 +726,7 @@ var/status = LIGHT_OK // LIGHT_OK, LIGHT_BURNED or LIGHT_BROKEN var/base_state var/switchcount = 0 // number of times switched - materials = list(MAT_GLASS=100) + custom_materials = list(/datum/material/glass=100) grind_results = list(/datum/reagent/silicon = 5, /datum/reagent/nitrogen = 10) //Nitrogen is used as a cheaper alternative to argon in incandescent lighbulbs var/rigged = 0 // true if rigged to explode var/brightness = 2 //how much light it gives off diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 0375a00c39..be8d456f20 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -15,7 +15,7 @@ req_access = list(ACCESS_ENGINE_EQUIP) // use_power = NO_POWER_USE max_integrity = 350 - integrity_failure = 80 + integrity_failure = 0.2 circuit = /obj/item/circuitboard/machine/rad_collector var/obj/item/tank/internals/plasma/loaded_tank = null var/stored_power = 0 diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index a0eeae1ea9..92c86ba7b0 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -12,7 +12,7 @@ active_power_usage = 0 var/id = 0 max_integrity = 150 - integrity_failure = 50 + integrity_failure = 0.33 var/obscured = 0 var/sunfrac = 0 var/adir = SOUTH // actual dir @@ -265,7 +265,7 @@ use_power = IDLE_POWER_USE idle_power_usage = 250 max_integrity = 200 - integrity_failure = 100 + integrity_failure = 0.5 var/icon_screen = "solar" var/icon_keyboard = "power_key" var/id = 0 diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm index 8701dfea7f..c3f284bf70 100644 --- a/code/modules/power/tracker.dm +++ b/code/modules/power/tracker.dm @@ -11,7 +11,7 @@ density = TRUE use_power = NO_POWER_USE max_integrity = 250 - integrity_failure = 50 + integrity_failure = 0.2 var/id = 0 var/sun_angle = 0 // sun angle as set by sun datum diff --git a/code/modules/projectiles/ammunition/_ammunition.dm b/code/modules/projectiles/ammunition/_ammunition.dm index 1404529700..28b70bf276 100644 --- a/code/modules/projectiles/ammunition/_ammunition.dm +++ b/code/modules/projectiles/ammunition/_ammunition.dm @@ -7,7 +7,7 @@ slot_flags = ITEM_SLOT_BELT throwforce = 0 w_class = WEIGHT_CLASS_TINY - materials = list(MAT_METAL = 500) + custom_materials = list(/datum/material/iron = 500) var/fire_sound = null //What sound should play when this ammo is fired var/caliber = list() //Which kind of guns it can be loaded into var/projectile_type = null //The bullet type to create when New() is called diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm index 9aabd0e6b1..0599e52a73 100644 --- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm +++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm @@ -6,14 +6,14 @@ icon_state = "blshell" caliber = "shotgun" projectile_type = /obj/item/projectile/bullet/shotgun_slug - materials = list(MAT_METAL=4000) + custom_materials = list(/datum/material/iron=4000) /obj/item/ammo_casing/shotgun/beanbag name = "beanbag slug" desc = "A weak beanbag slug for riot control." icon_state = "bshell" projectile_type = /obj/item/projectile/bullet/shotgun_beanbag - materials = list(MAT_METAL=250) + custom_materials = list(/datum/material/iron=250) /obj/item/ammo_casing/shotgun/incendiary name = "incendiary slug" @@ -34,7 +34,7 @@ desc = "A stunning taser slug." icon_state = "stunshell" projectile_type = /obj/item/projectile/bullet/shotgun_stunslug - materials = list(MAT_METAL=250) + custom_materials = list(/datum/material/iron=250) /obj/item/ammo_casing/shotgun/meteorslug name = "meteorslug shell" @@ -71,14 +71,14 @@ projectile_type = /obj/item/projectile/bullet/pellet/shotgun_rubbershot pellets = 6 variance = 25 - materials = list(MAT_METAL=4000) + custom_materials = list(/datum/material/iron=4000) /obj/item/ammo_casing/shotgun/improvised name = "improvised shell" desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards." icon_state = "improvshell" projectile_type = /obj/item/projectile/bullet/pellet/shotgun_improvised - materials = list(MAT_METAL=250) + custom_materials = list(/datum/material/iron=250) pellets = 10 variance = 25 diff --git a/code/modules/projectiles/ammunition/caseless/arrow.dm b/code/modules/projectiles/ammunition/caseless/arrow.dm index 57f47e2ad9..0543e48f96 100644 --- a/code/modules/projectiles/ammunition/caseless/arrow.dm +++ b/code/modules/projectiles/ammunition/caseless/arrow.dm @@ -9,18 +9,18 @@ /obj/item/ammo_casing/caseless/arrow/ashen name = "ashen arrow" - desc = "Fire harderned wooden arrow." - icon_state = "asharrow" + desc = "An arrow made of wood, hardened by fire." + icon_state = "ashenarrow" projectile_type = /obj/item/projectile/bullet/reusable/arrow/ashen /obj/item/ammo_casing/caseless/arrow/bone name = "bone arrow" - desc = "Arrow made of bone and sinew. The tip is sharp enough to pierce into a goliath plate." + desc = "An arrow made of bone and sinew. The tip is sharp enough to pierce through a goliath plate." icon_state = "bonearrow" projectile_type = /obj/item/projectile/bullet/reusable/arrow/bone /obj/item/ammo_casing/caseless/arrow/bronze name = "bronze arrow" - desc = "Bronze tipped arrow." + desc = "An arrow made of wood, tipped with bronze. The tip is dense enough to provide some armor penetration." icon_state = "bronzearrow" projectile_type = /obj/item/projectile/bullet/reusable/arrow/bronze diff --git a/code/modules/projectiles/ammunition/caseless/foam.dm b/code/modules/projectiles/ammunition/caseless/foam.dm index dd29f075f1..311f76797c 100644 --- a/code/modules/projectiles/ammunition/caseless/foam.dm +++ b/code/modules/projectiles/ammunition/caseless/foam.dm @@ -5,7 +5,7 @@ caliber = "foam_force" icon = 'icons/obj/guns/toy.dmi' icon_state = "foamdart" - materials = list(MAT_METAL = 11.25) + custom_materials = list(/datum/material/iron = 11.25) harmful = FALSE var/modified = FALSE @@ -62,7 +62,7 @@ desc = "Whose smart idea was it to use toys as crowd control? Ages 18 and up." projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/riot icon_state = "foamdart_riot" - materials = list(MAT_METAL = 1125) + custom_materials = list(/datum/material/iron = 1125) /obj/item/ammo_casing/caseless/foam_dart/mag name = "magfoam dart" diff --git a/code/modules/projectiles/boxes_magazines/_box_magazine.dm b/code/modules/projectiles/boxes_magazines/_box_magazine.dm index 3cdb5ca06d..4f37cf3ba9 100644 --- a/code/modules/projectiles/boxes_magazines/_box_magazine.dm +++ b/code/modules/projectiles/boxes_magazines/_box_magazine.dm @@ -8,7 +8,7 @@ item_state = "syringe_kit" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' - materials = list(MAT_METAL = 30000) + custom_materials = list(/datum/material/iron = 30000) throwforce = 2 w_class = WEIGHT_CLASS_TINY throw_speed = 3 @@ -26,8 +26,8 @@ /obj/item/ammo_box/Initialize() . = ..() if (!bullet_cost) - for (var/material in materials) - var/material_amount = materials[material] + for (var/material in custom_materials) + var/material_amount = custom_materials[material] LAZYSET(base_cost, material, (material_amount * 0.10)) material_amount *= 0.90 // 10% for the container @@ -121,7 +121,8 @@ for (var/material in bullet_cost) var/material_amount = bullet_cost[material] material_amount = (material_amount*stored_ammo.len) + base_cost[material] - materials[material] = material_amount + custom_materials[material] = material_amount + set_custom_materials(custom_materials)//make sure we setup the correct properties again //Behavior for magazines /obj/item/ammo_box/magazine/proc/ammo_count() diff --git a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm index 2842f13db5..fbbca99ec2 100644 --- a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm +++ b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm @@ -19,7 +19,7 @@ ammo_type = /obj/item/ammo_casing/c38 max_ammo = 6 multiple_sprites = 1 - materials = list(MAT_METAL = 20000) + custom_materials = list(/datum/material/iron = 20000) /obj/item/ammo_box/c38/lethal name = "speed loader (.38)" @@ -85,7 +85,7 @@ icon_state = "foambox" ammo_type = /obj/item/ammo_casing/caseless/foam_dart max_ammo = 40 - materials = list(MAT_METAL = 500) + custom_materials = list(/datum/material/iron = 500) /obj/item/ammo_box/foambox/mag name = "ammo box (Magnetic Foam Darts)" @@ -97,4 +97,4 @@ /obj/item/ammo_box/foambox/riot icon_state = "foambox_riot" ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot - materials = list(MAT_METAL = 50000) + custom_materials = list(/datum/material/iron = 50000) diff --git a/code/modules/projectiles/boxes_magazines/external/toy.dm b/code/modules/projectiles/boxes_magazines/external/toy.dm index 04bcad284d..57da710ba4 100644 --- a/code/modules/projectiles/boxes_magazines/external/toy.dm +++ b/code/modules/projectiles/boxes_magazines/external/toy.dm @@ -64,4 +64,4 @@ max_ammo = 24 multiple_sprites = 2 ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag - materials = list(MAT_METAL = 200) + custom_materials = list(/datum/material/iron = 200) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 34f7134591..1f9f211154 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -9,7 +9,7 @@ item_state = "gun" flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BELT - materials = list(MAT_METAL=2000) + custom_materials = list(/datum/material/iron=2000) w_class = WEIGHT_CLASS_NORMAL throwforce = 5 throw_speed = 3 diff --git a/code/modules/projectiles/guns/ballistic/bow.dm b/code/modules/projectiles/guns/ballistic/bow.dm index 540ea722b9..0fc181f71c 100644 --- a/code/modules/projectiles/guns/ballistic/bow.dm +++ b/code/modules/projectiles/guns/ballistic/bow.dm @@ -22,11 +22,9 @@ /obj/item/gun/ballistic/bow/chamber_round() chambered = magazine.get_round(1) -/obj/item/gun/ballistic/bow/afterattack() - . = ..() - if (chambered) - chambered = null - magazine.get_round(0) +/obj/item/gun/ballistic/bow/process_chamber() + chambered = null + magazine.get_round(0) update_icon() /obj/item/gun/ballistic/bow/attack_self(mob/living/user) @@ -47,7 +45,7 @@ update_icon() /obj/item/gun/ballistic/bow/update_icon() - icon_state = "bow_[get_ammo() ? (chambered ? "firing" : "loaded") : "unloaded"]" + icon_state = "[initial(icon_state)]_[get_ammo() ? (chambered ? "firing" : "loaded") : "unloaded"]" /obj/item/gun/ballistic/bow/can_shoot() return chambered diff --git a/code/modules/projectiles/guns/ballistic/laser_gatling.dm b/code/modules/projectiles/guns/ballistic/laser_gatling.dm index 49ced8ff39..82f6fa700b 100644 --- a/code/modules/projectiles/guns/ballistic/laser_gatling.dm +++ b/code/modules/projectiles/guns/ballistic/laser_gatling.dm @@ -102,7 +102,7 @@ slowdown = 1 slot_flags = null w_class = WEIGHT_CLASS_HUGE - materials = list() + custom_materials = null burst_size = 3 automatic = 0 fire_delay = 1 diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 4b29b59549..2fe9b326eb 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -4,7 +4,7 @@ icon_state = "laser" item_state = "laser" w_class = WEIGHT_CLASS_NORMAL - materials = list(MAT_METAL=2000) + custom_materials = list(/datum/material/iron=2000) ammo_type = list(/obj/item/ammo_casing/energy/lasergun) ammo_x_offset = 1 shaded_charge = 1 diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 9c6ec446bb..42de0dcae8 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -85,7 +85,7 @@ icon_state = "crossbow" item_state = "crossbow" w_class = WEIGHT_CLASS_SMALL - materials = list(MAT_METAL=2000) + custom_materials = list(/datum/material/iron=2000) suppressed = TRUE ammo_type = list(/obj/item/ammo_casing/energy/bolt) weapon_weight = WEAPON_LIGHT @@ -108,7 +108,7 @@ desc = "A reverse engineered weapon using syndicate technology. This thing seems incredibly unwieldly, and seems to be using similar internals to the Proto-Kinetic Accelerator. It might not play nice when brought near weapons similar to it." icon_state = "crossbowlarge" w_class = WEIGHT_CLASS_BULKY - materials = list(MAT_METAL=4000) + custom_materials = list(/datum/material/iron=4000) suppressed = null ammo_type = list(/obj/item/ammo_casing/energy/bolt/large) weapon_weight = WEAPON_HEAVY diff --git a/code/modules/projectiles/guns/misc/beam_rifle.dm b/code/modules/projectiles/guns/misc/beam_rifle.dm index ec5eee7b6b..098395e0d4 100644 --- a/code/modules/projectiles/guns/misc/beam_rifle.dm +++ b/code/modules/projectiles/guns/misc/beam_rifle.dm @@ -19,7 +19,7 @@ fire_sound = 'sound/weapons/beam_sniper.ogg' slot_flags = ITEM_SLOT_BACK force = 15 - materials = list() + custom_materials = null recoil = 4 ammo_x_offset = 3 ammo_y_offset = 3 diff --git a/code/modules/projectiles/guns/misc/chem_gun.dm b/code/modules/projectiles/guns/misc/chem_gun.dm index 9f8e92a8f8..3d400f0e16 100644 --- a/code/modules/projectiles/guns/misc/chem_gun.dm +++ b/code/modules/projectiles/guns/misc/chem_gun.dm @@ -9,7 +9,7 @@ throw_speed = 3 throw_range = 7 force = 4 - materials = list(MAT_METAL=2000) + custom_materials = list(/datum/material/iron=2000) clumsy_check = FALSE fire_sound = 'sound/items/syringeproj.ogg' var/time_per_syringe = 250 diff --git a/code/modules/projectiles/guns/misc/grenade_launcher.dm b/code/modules/projectiles/guns/misc/grenade_launcher.dm index 5a8c5a066e..6113bc4857 100644 --- a/code/modules/projectiles/guns/misc/grenade_launcher.dm +++ b/code/modules/projectiles/guns/misc/grenade_launcher.dm @@ -10,7 +10,7 @@ force = 5 var/list/grenades = new/list() var/max_grenades = 3 - materials = list(MAT_METAL=2000) + custom_materials = list(/datum/material/iron=2000) /obj/item/gun/grenadelauncher/examine(mob/user) . = ..() diff --git a/code/modules/projectiles/guns/misc/syringe_gun.dm b/code/modules/projectiles/guns/misc/syringe_gun.dm index 3a39d53d82..b3838751eb 100644 --- a/code/modules/projectiles/guns/misc/syringe_gun.dm +++ b/code/modules/projectiles/guns/misc/syringe_gun.dm @@ -7,7 +7,7 @@ throw_speed = 3 throw_range = 7 force = 4 - materials = list(MAT_METAL=2000) + custom_materials = list(/datum/material/iron=2000) clumsy_check = 0 fire_sound = 'sound/items/syringeproj.ogg' var/list/syringes = list() @@ -108,7 +108,7 @@ desc = "A compressed air gun, designed to fit medicinal darts for application of medicine for those patients just out of reach." icon_state = "dartgun" item_state = "dartgun" - materials = list(MAT_METAL=2000, MAT_GLASS=500) + custom_materials = list(/datum/material/iron=2000, /datum/material/glass=500) suppressed = TRUE //Softer fire sound can_unsuppress = FALSE diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index db0aa8ce99..23f149ade4 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -109,7 +109,7 @@ volume = 60 icon_state = "beaker" item_state = "beaker" - materials = list(MAT_GLASS=500) + custom_materials = list(/datum/material/glass=500) possible_transfer_amounts = list(5,10,15,20,25,30,50,60) container_flags = PH_WEAK|APTFT_ALTCLICK|APTFT_VERB @@ -159,7 +159,7 @@ /obj/item/reagent_containers/glass/beaker/glass_dish name = "glass dish" desc = "A tiny glass dish. It can hold up to 3 units. Unable to withstand reagents of an extreme pH." - materials = list(MAT_GLASS=500) + custom_materials = list(/datum/material/glass = 500) icon_state = "glass_disk" possible_transfer_amounts = list(0.1,0.5,0.75,1,2,3) volume = 3 @@ -167,21 +167,21 @@ /obj/item/reagent_containers/glass/beaker/flask/large name = "large flask" desc = "A large flask. It can hold up to 80 units. Unable to withstand reagents of an extreme pH." - materials = list(MAT_GLASS=2500) + custom_materials = list(/datum/material/glass = 2500) icon_state = "flasklarge" volume = 80 /obj/item/reagent_containers/glass/beaker/flask name = "small flask" desc = "A small flask. It can hold up to 40 units. Unable to withstand reagents of an extreme pH." - materials = list(MAT_GLASS=1000) + custom_materials = list(/datum/material/glass = 1000) icon_state = "flasksmall" volume = 40 /obj/item/reagent_containers/glass/beaker/flask/spouty name = "flask with spout" desc = "A flask with a spout! It can hold up to 120 units. Unable to withstand reagents of an extreme pH." - materials = list(MAT_GLASS=2500) + custom_materials = list(/datum/material/glass = 2500) icon_state = "flaskspouty" possible_transfer_amounts = list(1,2,3,4,5,10,15,20,25,30,50,100,120) volume = 120 @@ -190,7 +190,7 @@ name = "large beaker" desc = "A large beaker. Can hold up to 120 units. Unable to withstand reagents of an extreme pH." icon_state = "beakerlarge" - materials = list(MAT_GLASS=2500) + custom_materials = list(/datum/material/glass=2500) volume = 120 amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,20,25,30,40,50,60,120) @@ -200,7 +200,7 @@ name = "x-large beaker" desc = "An extra-large beaker. Can hold up to 180 units. Is able to resist acid and alkaline solutions, but melts at 444 K." icon_state = "beakerwhite" - materials = list(MAT_GLASS=2500, MAT_PLASTIC=3000) + custom_materials = list(/datum/material/glass=2500, /datum/material/plastic=3000) volume = 180 amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,20,25,30,40,50,60,120,180) @@ -215,7 +215,7 @@ name = "metamaterial beaker" desc = "A large beaker. Can hold up to 240 units, and is able to withstand all chemical situations." icon_state = "beakergold" - materials = list(MAT_GLASS=2500, MAT_PLASTIC=3000, MAT_GOLD=1000, MAT_TITANIUM=1000) + custom_materials = list(/datum/material/glass=2500, /datum/material/plastic=3000, /datum/material/gold=1000, /datum/material/titanium=1000) volume = 240 amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,20,25,30,40,50,60,120,200,240) @@ -226,7 +226,7 @@ desc = "A cryostasis beaker that allows for chemical storage without \ reactions. Can hold up to 50 units." icon_state = "beakernoreact" - materials = list(MAT_METAL=3000) + custom_materials = list(/datum/material/iron=3000) reagent_flags = OPENCONTAINER | NO_REACT volume = 50 amount_per_transfer_from_this = 10 @@ -239,8 +239,9 @@ and Element Cuban combined with the Compound Pete. Can hold up to \ 300 units. Unable to withstand reagents of an extreme pH." icon_state = "beakerbluespace" - materials = list(MAT_GLASS=3000) + custom_materials = list(/datum/material/glass = 5000, /datum/material/plasma = 3000, /datum/material/diamond = 1000, /datum/material/bluespace = 1000) volume = 300 + material_flags = MATERIAL_NO_EFFECTS amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,20,25,30,50,100,300) container_HP = 5 @@ -281,7 +282,7 @@ item_state = "bucket" lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi' - materials = list(MAT_METAL=200) + custom_materials = list(/datum/material/iron=200) w_class = WEIGHT_CLASS_NORMAL amount_per_transfer_from_this = 20 possible_transfer_amounts = list(5,10,15,20,25,30,50,70) @@ -348,7 +349,7 @@ icon_state = "smallbottle" item_state = "bottle" list_reagents = list(/datum/reagent/water = 49.5, /datum/reagent/fluorine = 0.5)//see desc, don't think about it too hard - materials = list(MAT_GLASS=0) + custom_materials = list(/datum/material/glass=0) volume = 50 amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,20,25,30,50) @@ -361,7 +362,7 @@ /obj/item/reagent_containers/glass/beaker/waterbottle/large desc = "A fresh commercial-sized bottle of water." icon_state = "largebottle" - materials = list(MAT_GLASS=0) + custom_materials = list(/datum/material/glass=0) list_reagents = list(/datum/reagent/water = 100) volume = 100 amount_per_transfer_from_this = 20 diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 763184da46..45bf8591a8 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -12,7 +12,7 @@ var/mode = SYRINGE_DRAW var/busy = FALSE // needed for delayed drawing of blood var/proj_piercing = 0 //does it pierce through thick clothes when shot with syringe gun - materials = list(MAT_METAL=10, MAT_GLASS=20) + custom_materials = list(/datum/material/iron=10, /datum/material/glass=20) reagent_flags = TRANSPARENT /obj/item/reagent_containers/syringe/Initialize() diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 812637efed..0f9c64545a 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -7,15 +7,6 @@ For the materials datum, it assumes you need reagents unless specified otherwise you use one of the material IDs below. These are NOT ids in the usual sense (they aren't defined in the object or part of a datum), they are simply references used as part of a "has materials?" type proc. They all start with a $ to denote that they aren't reagents. The currently supporting non-reagent materials. All material amounts are set as the define MINERAL_MATERIAL_AMOUNT, which defaults to 2000 -- MAT_METAL (/obj/item/stack/metal). -- MAT_GLASS (/obj/item/stack/glass). -- MAT_PLASMA (/obj/item/stack/plasma). -- MAT_SILVER (/obj/item/stack/silver). -- MAT_GOLD (/obj/item/stack/gold). -- MAT_URANIUM (/obj/item/stack/uranium). -- MAT_DIAMOND (/obj/item/stack/diamond). -- MAT_BANANIUM (/obj/item/stack/bananium). -(Insert new ones here) Don't add new keyword/IDs if they are made from an existing one (such as rods which are made from metal). Only add raw materials. @@ -57,6 +48,17 @@ other types of metals and chemistry for reagents). SSresearch.techweb_designs -= id return ..() +/datum/design/proc/InitializeMaterials() + var/list/temp_list = list() + for(var/i in materials) //Go through all of our materials, get the subsystem instance, and then replace the list. + var/amount = materials[i] + if(!istext(i)) //Not a category, so get the ref the normal way + var/datum/material/M = getmaterialref(i) + temp_list[M] = amount + else + temp_list[i] = amount + materials = temp_list + /datum/design/proc/icon_html(client/user) var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/research_designs) sheet.send(user) @@ -70,7 +72,7 @@ other types of metals and chemistry for reagents). name = "Component Design Disk" desc = "A disk for storing device design data for construction in lathes." icon_state = "datadisk1" - materials = list(MAT_METAL=300, MAT_GLASS=100) + custom_materials = list(/datum/material/iron=300, /datum/material/glass=100) var/list/blueprints = list() var/max_blueprints = 1 @@ -84,5 +86,5 @@ other types of metals and chemistry for reagents). /obj/item/disk/design_disk/adv name = "Advanced Component Design Disk" desc = "A disk for storing device design data for construction in lathes. This one has extra storage space." - materials = list(MAT_METAL=300, MAT_GLASS=100, MAT_SILVER = 50) + custom_materials = list(/datum/material/iron=300, /datum/material/glass=100, /datum/material/silver = 50) max_blueprints = 5 diff --git a/code/modules/research/designs/AI_module_designs.dm b/code/modules/research/designs/AI_module_designs.dm index 305b39b694..98e295b83a 100644 --- a/code/modules/research/designs/AI_module_designs.dm +++ b/code/modules/research/designs/AI_module_designs.dm @@ -14,7 +14,7 @@ name = "Module Design (Safeguard)" desc = "Allows for the construction of a Safeguard AI Module." id = "safeguard_module" - materials = list(MAT_GLASS = 1000, MAT_GOLD = 2000) + materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000) build_path = /obj/item/aiModule/supplied/safeguard category = list("AI Modules") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -23,7 +23,7 @@ name = "Module Design (OneCrew)" desc = "Allows for the construction of a OneCrew AI Module." id = "onehuman_module" - materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 6000) + materials = list(/datum/material/glass = 1000, /datum/material/diamond = 6000) build_path = /obj/item/aiModule/zeroth/oneHuman category = list("AI Modules") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -32,7 +32,7 @@ name = "Module Design (ProtectStation)" desc = "Allows for the construction of a ProtectStation AI Module." id = "protectstation_module" - materials = list(MAT_GLASS = 1000, MAT_GOLD = 2000) + materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000) build_path = /obj/item/aiModule/supplied/protectStation category = list("AI Modules") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -41,7 +41,7 @@ name = "Module Design (Quarantine)" desc = "Allows for the construction of a Quarantine AI Module." id = "quarantine_module" - materials = list(MAT_GLASS = 1000, MAT_GOLD = 2000) + materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000) build_path = /obj/item/aiModule/supplied/quarantine category = list("AI Modules") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -50,7 +50,7 @@ name = "Module Design (OxygenIsToxicToHumans)" desc = "Allows for the construction of a Safeguard AI Module." id = "oxygen_module" - materials = list(MAT_GLASS = 1000, MAT_GOLD = 2000) + materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000) build_path = /obj/item/aiModule/supplied/oxygen category = list("AI Modules") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -59,7 +59,7 @@ name = "Module Design (Freeform)" desc = "Allows for the construction of a Freeform AI Module." id = "freeform_module" - materials = list(MAT_GLASS = 1000, MAT_GOLD = 10000)//Custom inputs should be more expensive to get + materials = list(/datum/material/glass = 1000, /datum/material/gold = 10000)//Custom inputs should be more expensive to get build_path = /obj/item/aiModule/supplied/freeform category = list("AI Modules") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -68,7 +68,7 @@ name = "Module Design (Reset)" desc = "Allows for the construction of a Reset AI Module." id = "reset_module" - materials = list(MAT_GLASS = 1000, MAT_GOLD = 2000) + materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000) build_path = /obj/item/aiModule/reset category = list("AI Modules") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -77,7 +77,7 @@ name = "Module Design (Purge)" desc = "Allows for the construction of a Purge AI Module." id = "purge_module" - materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 2000) + materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000) build_path = /obj/item/aiModule/reset/purge category = list("AI Modules") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -86,7 +86,7 @@ name = "Module Design (Law Removal)" desc = "Allows for the construction of a Law Removal AI Core Module." id = "remove_module" - materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 2000) + materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000) build_path = /obj/item/aiModule/remove category = list("AI Modules") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -95,7 +95,7 @@ name = "AI Core Module (Freeform)" desc = "Allows for the construction of a Freeform AI Core Module." id = "freeformcore_module" - materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 10000)//Ditto + materials = list(/datum/material/glass = 1000, /datum/material/diamond = 10000)//Ditto build_path = /obj/item/aiModule/core/freeformcore category = list("AI Modules") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -104,7 +104,7 @@ name = "Core Module Design (Asimov)" desc = "Allows for the construction of an Asimov AI Core Module." id = "asimov_module" - materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 2000) + materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000) build_path = /obj/item/aiModule/core/full/asimov category = list("AI Modules") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -114,7 +114,7 @@ desc = "Allows for the construction of a P.A.L.A.D.I.N. AI Core Module." id = "paladin_module" build_type = IMPRINTER - materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 2000) + materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000) build_path = /obj/item/aiModule/core/full/paladin category = list("AI Modules") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -123,7 +123,7 @@ name = "Core Module Design (T.Y.R.A.N.T.)" desc = "Allows for the construction of a T.Y.R.A.N.T. AI Module." id = "tyrant_module" - materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 2000) + materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000) build_path = /obj/item/aiModule/core/full/tyrant category = list("AI Modules") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -132,7 +132,7 @@ name = "Core Module Design (Corporate)" desc = "Allows for the construction of a Corporate AI Core Module." id = "corporate_module" - materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 2000) + materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000) build_path = /obj/item/aiModule/core/full/corp category = list("AI Modules") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -141,7 +141,7 @@ name = "Core Module Design (Default)" desc = "Allows for the construction of a Default AI Core Module." id = "default_module" - materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 2000) + materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000) build_path = /obj/item/aiModule/core/full/custom category = list("AI Modules") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE diff --git a/code/modules/research/designs/autobotter_designs.dm b/code/modules/research/designs/autobotter_designs.dm index 6eb7e8354b..eab7423b91 100644 --- a/code/modules/research/designs/autobotter_designs.dm +++ b/code/modules/research/designs/autobotter_designs.dm @@ -6,13 +6,13 @@ name = "Machine Design (AutoBottler)" desc = "Allows for the construction of circuit boards used to build an Autobottler." id = "autobottler" - materials = list(MAT_GLASS = 2000) + materials = list(/datum/material/glass = 2000) build_path = /obj/item/circuitboard/machine/autobottler category = list ("Misc. Machinery") departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SERVICE /datum/design/bottle - materials = list(MAT_GLASS = 1200) + materials = list(/datum/material/glass = 1200) build_type = AUTOBOTTLER category = list("Storge") @@ -143,7 +143,7 @@ build_path = /obj/item/reagent_containers/food/drinks/bottle/grenadine/empty /datum/design/bottle/export - materials = list(MAT_GLASS = 1200) + materials = list(/datum/material/glass = 1200) build_type = AUTOBOTTLER category = list("Brands") diff --git a/code/modules/research/designs/autolathe_desings/autolathe_designs_construction.dm b/code/modules/research/designs/autolathe_desings/autolathe_designs_construction.dm index bfc92d24d8..ee9ee14e4a 100644 --- a/code/modules/research/designs/autolathe_desings/autolathe_designs_construction.dm +++ b/code/modules/research/designs/autolathe_desings/autolathe_designs_construction.dm @@ -11,7 +11,7 @@ name = "Metal Rod" id = "rods" build_type = AUTOLATHE - materials = list(MAT_METAL = 1000) + materials = list(/datum/material/iron = 1000) build_path = /obj/item/stack/rods category = list("initial","Construction") maxstack = 50 @@ -20,7 +20,7 @@ name = "Metal" id = "metal" build_type = AUTOLATHE - materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT) + materials = list(/datum/material/iron = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/metal category = list("initial","Construction") maxstack = 50 @@ -29,7 +29,7 @@ name = "Glass" id = "glass" build_type = AUTOLATHE - materials = list(MAT_GLASS = MINERAL_MATERIAL_AMOUNT) + materials = list(/datum/material/glass = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/glass category = list("initial","Construction") maxstack = 50 @@ -38,7 +38,7 @@ name = "Reinforced Glass" id = "rglass" build_type = AUTOLATHE | SMELTER | PROTOLATHE - materials = list(MAT_METAL = 1000, MAT_GLASS = MINERAL_MATERIAL_AMOUNT) + materials = list(/datum/material/iron = 1000, /datum/material/glass = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/rglass category = list("initial","Construction","Stock Parts") maxstack = 50 @@ -47,7 +47,7 @@ name = "Light Tube" id = "light_tube" build_type = AUTOLATHE - materials = list(MAT_GLASS = 100) + materials = list(/datum/material/glass = 100) build_path = /obj/item/light/tube category = list("initial", "Construction") @@ -55,7 +55,7 @@ name = "Light Bulb" id = "light_bulb" build_type = AUTOLATHE - materials = list(MAT_GLASS = 100) + materials = list(/datum/material/glass = 100) build_path = /obj/item/light/bulb category = list("initial", "Construction") @@ -63,7 +63,7 @@ name = "Camera Assembly" id = "camera_assembly" build_type = AUTOLATHE - materials = list(MAT_METAL = 400, MAT_GLASS = 250) + materials = list(/datum/material/iron = 400, /datum/material/glass = 250) build_path = /obj/item/wallframe/camera category = list("initial", "Construction") @@ -71,7 +71,7 @@ name = "Newscaster Frame" id = "newscaster_frame" build_type = AUTOLATHE - materials = list(MAT_METAL = 14000, MAT_GLASS = 8000) + materials = list(/datum/material/iron = 14000, /datum/material/glass = 8000) build_path = /obj/item/wallframe/newscaster category = list("initial", "Construction") @@ -79,7 +79,7 @@ name = "Turret Control Frame" id = "turret_control" build_type = AUTOLATHE - materials = list(MAT_METAL = 12000) + materials = list(/datum/material/iron = 12000) build_path = /obj/item/wallframe/turret_control category = list("initial", "Construction") @@ -87,7 +87,7 @@ name = "Conveyor Belt" id = "conveyor_belt" build_type = AUTOLATHE - materials = list(MAT_METAL = 3000) + materials = list(/datum/material/iron = 3000) build_path = /obj/item/stack/conveyor category = list("initial", "Construction") maxstack = 30 @@ -96,7 +96,7 @@ name = "Conveyor Belt Switch" id = "conveyor_switch" build_type = AUTOLATHE - materials = list(MAT_METAL = 450, MAT_GLASS = 190) + materials = list(/datum/material/iron = 450, /datum/material/glass = 190) build_path = /obj/item/conveyor_switch_construct category = list("initial", "Construction") @@ -104,7 +104,7 @@ name = "Compressed Matter Cartridge" id = "rcd_ammo" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 12000, MAT_GLASS = 8000) + materials = list(/datum/material/iron = 12000, /datum/material/glass=8000) build_path = /obj/item/rcd_ammo category = list("initial","Construction","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -113,7 +113,7 @@ name = "Large Compressed Matter Cartridge" id = "rcd_ammo_large" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 48000, MAT_GLASS = 32000) + materials = list(/datum/material/iron = 48000, /datum/material/glass = 32000) build_path = /obj/item/rcd_ammo/large category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING diff --git a/code/modules/research/designs/autolathe_desings/autolathe_designs_electronics.dm b/code/modules/research/designs/autolathe_desings/autolathe_designs_electronics.dm index 4ca780620d..86e11010bc 100644 --- a/code/modules/research/designs/autolathe_desings/autolathe_designs_electronics.dm +++ b/code/modules/research/designs/autolathe_desings/autolathe_designs_electronics.dm @@ -10,7 +10,7 @@ name = "APC Module" id = "power control" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 100, MAT_GLASS = 100) + materials = list(/datum/material/iron = 100, /datum/material/glass = 100) build_path = /obj/item/electronics/apc category = list("initial", "Electronics") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -19,7 +19,7 @@ name = "Airlock Electronics" id = "airlock_board" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 50, MAT_GLASS = 50) + materials = list(/datum/material/iron = 50, /datum/material/glass = 50) build_path = /obj/item/electronics/airlock category = list("initial", "Electronics") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -28,7 +28,7 @@ name = "Firelock Circuitry" id = "firelock_board" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 50, MAT_GLASS = 50) + materials = list(/datum/material/iron = 50, /datum/material/glass = 50) build_path = /obj/item/electronics/firelock category = list("initial", "Electronics") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -37,7 +37,7 @@ name = "Air Alarm Electronics" id = "airalarm_electronics" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 50, MAT_GLASS = 50) + materials = list(/datum/material/iron = 50, /datum/material/glass = 50) build_path = /obj/item/electronics/airalarm category = list("initial", "Electronics") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -46,7 +46,7 @@ name = "Fire Alarm Electronics" id = "firealarm_electronics" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 50, MAT_GLASS = 50) + materials = list(/datum/material/iron = 50, /datum/material/glass = 50) build_path = /obj/item/electronics/firealarm category = list("initial", "Electronics") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -55,7 +55,7 @@ name = "Destination Tagger" id = "desttagger" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 250, MAT_GLASS = 125) + materials = list(/datum/material/iron = 250, /datum/material/glass = 125) build_path = /obj/item/destTagger category = list("initial", "Electronics") @@ -63,7 +63,7 @@ name = "Hand Labeler" id = "handlabel" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 150, MAT_GLASS = 125) + materials = list(/datum/material/iron = 150, /datum/material/glass = 125) build_path = /obj/item/hand_labeler category = list("initial", "Electronics") @@ -71,6 +71,6 @@ name = "Light Fixture Battery" id = "miniature_power_cell" build_type = AUTOLATHE - materials = list(MAT_GLASS = 20) + materials = list(/datum/material/glass = 20) build_path = /obj/item/stock_parts/cell/emergency_light category = list("initial", "Electronics") diff --git a/code/modules/research/designs/autolathe_desings/autolathe_designs_medical_and_dinnerware.dm b/code/modules/research/designs/autolathe_desings/autolathe_designs_medical_and_dinnerware.dm index 0d303c3968..b62f30e041 100644 --- a/code/modules/research/designs/autolathe_desings/autolathe_designs_medical_and_dinnerware.dm +++ b/code/modules/research/designs/autolathe_desings/autolathe_designs_medical_and_dinnerware.dm @@ -9,7 +9,7 @@ name = "Kitchen Knife" id = "kitchen_knife" build_type = AUTOLATHE - materials = list(MAT_METAL = 12000) + materials = list(/datum/material/iron = 12000) build_path = /obj/item/kitchen/knife category = list("initial","Dinnerware") @@ -17,7 +17,7 @@ name = "Fork" id = "fork" build_type = AUTOLATHE - materials = list(MAT_METAL = 80) + materials = list(/datum/material/iron = 80) build_path = /obj/item/kitchen/fork category = list("initial","Dinnerware") @@ -25,7 +25,7 @@ name = "Tray" id = "tray" build_type = AUTOLATHE - materials = list(MAT_METAL = 3000) + materials = list(/datum/material/iron = 3000) build_path = /obj/item/storage/bag/tray category = list("initial","Dinnerware") @@ -33,7 +33,7 @@ name = "Bowl" id = "bowl" build_type = AUTOLATHE - materials = list(MAT_GLASS = 500) + materials = list(/datum/material/glass = 500) build_path = /obj/item/reagent_containers/glass/bowl category = list("initial","Dinnerware") @@ -41,7 +41,7 @@ name = "Drinking Glass" id = "drinking_glass" build_type = AUTOLATHE - materials = list(MAT_GLASS = 500) + materials = list(/datum/material/glass = 500) build_path = /obj/item/reagent_containers/food/drinks/drinkingglass category = list("initial","Dinnerware") @@ -49,7 +49,7 @@ name = "Shot Glass" id = "shot_glass" build_type = AUTOLATHE - materials = list(MAT_GLASS = 100) + materials = list(/datum/material/glass = 100) build_path = /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass category = list("initial","Dinnerware") @@ -57,7 +57,7 @@ name = "Shaker" id = "shaker" build_type = AUTOLATHE - materials = list(MAT_METAL = 1500) + materials = list(/datum/material/iron = 1500) build_path = /obj/item/reagent_containers/food/drinks/shaker category = list("initial","Dinnerware") @@ -69,7 +69,7 @@ name = "Scalpel" id = "scalpel" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 4000, MAT_GLASS = 1000) + materials = list(/datum/material/iron = 4000, /datum/material/glass = 1000) build_path = /obj/item/scalpel category = list("initial", "Medical","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE @@ -78,7 +78,7 @@ name = "Circular Saw" id = "circular_saw" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 10000, MAT_GLASS = 6000) + materials = list(/datum/material/iron = 10000, /datum/material/glass = 6000) build_path = /obj/item/circular_saw category = list("initial", "Medical","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE @@ -87,7 +87,7 @@ name = "Surgical Drill" id = "surgicaldrill" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 10000, MAT_GLASS = 6000) + materials = list(/datum/material/iron = 10000, /datum/material/glass = 6000) build_path = /obj/item/surgicaldrill category = list("initial", "Medical","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE @@ -96,7 +96,7 @@ name = "Retractor" id = "retractor" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 6000, MAT_GLASS = 3000) + materials = list(/datum/material/iron = 6000, /datum/material/glass = 3000) build_path = /obj/item/retractor category = list("initial", "Medical","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE @@ -105,7 +105,7 @@ name = "Cautery" id = "cautery" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 2500, MAT_GLASS = 750) + materials = list(/datum/material/iron = 2500, /datum/material/glass = 750) build_path = /obj/item/cautery category = list("initial", "Medical","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE @@ -114,7 +114,7 @@ name = "Hemostat" id = "hemostat" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 2500) + materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500) build_path = /obj/item/hemostat category = list("initial", "Medical","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE @@ -123,7 +123,7 @@ name = "Beaker" id = "beaker" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_GLASS = 500) + materials = list(/datum/material/glass = 500) build_path = /obj/item/reagent_containers/glass/beaker category = list("initial", "Medical","Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SERVICE | DEPARTMENTAL_FLAG_SCIENCE @@ -132,7 +132,7 @@ name = "Large Beaker" id = "large_beaker" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_GLASS = 2500) + materials = list(/datum/material/glass = 2500) build_path = /obj/item/reagent_containers/glass/beaker/large category = list("initial", "Medical","Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SERVICE | DEPARTMENTAL_FLAG_SCIENCE @@ -141,7 +141,7 @@ name = "Health Analyzer" id = "healthanalyzer" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 50) + materials = list(/datum/material/iron = 500, /datum/material/glass = 50) build_path = /obj/item/healthanalyzer category = list("initial", "Medical") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -150,7 +150,7 @@ name = "Pill Bottle" id = "pillbottle" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 20, MAT_GLASS = 100) + materials = list(/datum/material/iron = 20, /datum/material/glass = 100) build_path = /obj/item/storage/pill_bottle category = list("initial", "Medical","Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -159,7 +159,7 @@ name = "Syringe" id = "syringe" build_type = AUTOLATHE - materials = list(MAT_METAL = 10, MAT_GLASS = 20) + materials = list(/datum/material/iron = 10, /datum/material/glass = 20) build_path = /obj/item/reagent_containers/syringe category = list("initial", "Medical") @@ -167,7 +167,7 @@ name = "Health Sensor" id = "health_sensor" build_type = AUTOLATHE - materials = list(MAT_METAL = 800, MAT_GLASS = 200) + materials = list(/datum/material/iron = 800, /datum/material/glass = 200) build_path = /obj/item/assembly/health category = list("initial", "Medical") @@ -175,7 +175,7 @@ name = "Hypovial" id = "hypovial" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 500) + materials = list(/datum/material/iron = 500) build_path = /obj/item/reagent_containers/glass/bottle/vial/small category = list("initial","Medical","Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -184,7 +184,7 @@ name = "Large Hypovial" id = "large_hypovial" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 2500) + materials = list(/datum/material/iron = 2500) build_path = /obj/item/reagent_containers/glass/bottle/vial/large category = list("initial","Medical","Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL diff --git a/code/modules/research/designs/autolathe_desings/autolathe_designs_sec_and_hacked.dm b/code/modules/research/designs/autolathe_desings/autolathe_designs_sec_and_hacked.dm index ae0f13764b..173240e196 100644 --- a/code/modules/research/designs/autolathe_desings/autolathe_designs_sec_and_hacked.dm +++ b/code/modules/research/designs/autolathe_desings/autolathe_designs_sec_and_hacked.dm @@ -9,7 +9,7 @@ name = "Beanbag Slug" id = "beanbag_slug" build_type = AUTOLATHE - materials = list(MAT_METAL = 250) + materials = list(/datum/material/iron = 250) build_path = /obj/item/ammo_casing/shotgun/beanbag category = list("initial", "Security") @@ -17,7 +17,7 @@ name = "Rubber Shot" id = "rubber_shot" build_type = AUTOLATHE - materials = list(MAT_METAL = 4000) + materials = list(/datum/material/iron = 4000) build_path = /obj/item/ammo_casing/shotgun/rubbershot category = list("initial", "Security") @@ -25,7 +25,7 @@ name = "Speed Loader (.38 rubber)" id = "c38" build_type = AUTOLATHE - materials = list(MAT_METAL = 20000) + materials = list(/datum/material/iron = 20000) build_path = /obj/item/ammo_box/c38 category = list("initial", "Security") @@ -37,7 +37,7 @@ name = "Industrial Welding Tool" id = "large_welding_tool" build_type = AUTOLATHE - materials = list(MAT_METAL = 70, MAT_GLASS = 60) + materials = list(/datum/material/iron = 70, /datum/material/glass = 60) build_path = /obj/item/weldingtool/largetank category = list("hacked", "Tools") @@ -45,7 +45,7 @@ name = "Flamethrower" id = "flamethrower" build_type = AUTOLATHE - materials = list(MAT_METAL = 500) + materials = list(/datum/material/iron = 500) build_path = /obj/item/flamethrower/full category = list("hacked", "Security") @@ -53,7 +53,7 @@ name = "Rapid Construction Device (RCD)" id = "rcd" build_type = AUTOLATHE - materials = list(MAT_METAL = 30000) + materials = list(/datum/material/iron = 30000) build_path = /obj/item/construction/rcd category = list("hacked", "Construction") @@ -61,7 +61,7 @@ name = "Rapid Pipe Dispenser (RPD)" id = "rpd" build_type = AUTOLATHE - materials = list(MAT_METAL = 75000, MAT_GLASS = 37500) + materials = list(/datum/material/iron = 75000, /datum/material/glass = 37500) build_path = /obj/item/pipe_dispenser category = list("hacked", "Construction") @@ -69,7 +69,7 @@ name = "Handcuffs" id = "handcuffs" build_type = AUTOLATHE - materials = list(MAT_METAL = 500) + materials = list(/datum/material/iron = 500) build_path = /obj/item/restraints/handcuffs category = list("hacked", "Security") @@ -77,7 +77,7 @@ name = "Modular Receiver" id = "receiver" build_type = AUTOLATHE - materials = list(MAT_METAL = 15000) + materials = list(/datum/material/iron = 15000) build_path = /obj/item/weaponcrafting/receiver category = list("hacked", "Security") @@ -85,7 +85,7 @@ name = "Shotgun Slug" id = "shotgun_slug" build_type = AUTOLATHE - materials = list(MAT_METAL = 4000) + materials = list(/datum/material/iron = 4000) build_path = /obj/item/ammo_casing/shotgun category = list("hacked", "Security") @@ -93,7 +93,7 @@ name = "Buckshot Shell" id = "buckshot_shell" build_type = AUTOLATHE - materials = list(MAT_METAL = 4000) + materials = list(/datum/material/iron = 4000) build_path = /obj/item/ammo_casing/shotgun/buckshot category = list("hacked", "Security") @@ -101,7 +101,7 @@ name = "Shotgun Dart" id = "shotgun_dart" build_type = AUTOLATHE - materials = list(MAT_METAL = 4000) + materials = list(/datum/material/iron = 4000) build_path = /obj/item/ammo_casing/shotgun/dart category = list("hacked", "Security") @@ -109,7 +109,7 @@ name = "Incendiary Slug" id = "incendiary_slug" build_type = AUTOLATHE - materials = list(MAT_METAL = 4000) + materials = list(/datum/material/iron = 4000) build_path = /obj/item/ammo_casing/shotgun/incendiary category = list("hacked", "Security") @@ -117,7 +117,7 @@ name = "Foam Riot Dart" id = "riot_dart" build_type = AUTOLATHE - materials = list(MAT_METAL = 1125) //Discount for making individually - no box = less metal! + materials = list(/datum/material/iron = 1125) //Discount for making individually - no box = less metal! build_path = /obj/item/ammo_casing/caseless/foam_dart/riot category = list("hacked", "Security") @@ -125,7 +125,7 @@ name = "Foam Riot Dart Box" id = "riot_darts" build_type = AUTOLATHE - materials = list(MAT_METAL = 50000) //Comes with 40 darts + materials = list(/datum/material/iron = 50000) //Comes with 40 darts build_path = /obj/item/ammo_box/foambox/riot category = list("hacked", "Security") @@ -133,7 +133,7 @@ name = "Revolver Bullet (.357)" id = "a357" build_type = AUTOLATHE - materials = list(MAT_METAL = 4000) + materials = list(/datum/material/iron = 4000) build_path = /obj/item/ammo_casing/a357 category = list("hacked", "Security") @@ -141,7 +141,7 @@ name = "Rifle Bullet (7.62mm)" id = "a762" build_type = AUTOLATHE - materials = list(MAT_METAL = 5000) //need seclathe for clips + materials = list(/datum/material/iron = 5000) //need seclathe for clips build_path = /obj/item/ammo_casing/a762 category = list("hacked", "Security") @@ -149,7 +149,7 @@ name = "Ammo Box (10mm)" id = "c10mm" build_type = AUTOLATHE - materials = list(MAT_METAL = 30000) + materials = list(/datum/material/iron = 30000) build_path = /obj/item/ammo_box/c10mm category = list("hacked", "Security") @@ -157,7 +157,7 @@ name = "Ammo Box (.45)" id = "c45" build_type = AUTOLATHE - materials = list(MAT_METAL = 30000) + materials = list(/datum/material/iron = 30000) build_path = /obj/item/ammo_box/c45 category = list("hacked", "Security") @@ -165,7 +165,7 @@ name = "Ammo Box (9mm)" id = "c9mm" build_type = AUTOLATHE - materials = list(MAT_METAL = 30000) + materials = list(/datum/material/iron = 30000) build_path = /obj/item/ammo_box/c9mm category = list("hacked", "Security") @@ -173,7 +173,7 @@ name = "Electropack" id = "electropack" build_type = AUTOLATHE - materials = list(MAT_METAL = 10000, MAT_GLASS = 2500) + materials = list(/datum/material/iron = 10000, /datum/material/glass = 2500) build_path = /obj/item/electropack category = list("hacked", "Security") @@ -181,7 +181,7 @@ name = "Butcher's Cleaver" id = "cleaver" build_type = AUTOLATHE - materials = list(MAT_METAL = 18000) + materials = list(/datum/material/iron = 18000) build_path = /obj/item/kitchen/knife/butcher category = list("hacked", "Dinnerware") @@ -189,6 +189,6 @@ name = "Tinfoil Hat" id = "tinfoil_hat" build_type = AUTOLATHE - materials = list(MAT_METAL = 5500) + materials = list(/datum/material/iron = 5500) build_path = /obj/item/clothing/head/foilhat category = list("hacked", "Misc") diff --git a/code/modules/research/designs/autolathe_desings/autolathe_designs_tcomms_and_misc.dm b/code/modules/research/designs/autolathe_desings/autolathe_designs_tcomms_and_misc.dm index a0af3d8b1e..30cd56c66a 100644 --- a/code/modules/research/designs/autolathe_desings/autolathe_designs_tcomms_and_misc.dm +++ b/code/modules/research/designs/autolathe_desings/autolathe_designs_tcomms_and_misc.dm @@ -9,7 +9,7 @@ name = "Remote Signaling Device" id = "signaler" build_type = AUTOLATHE - materials = list(MAT_METAL = 400, MAT_GLASS = 120) + materials = list(/datum/material/iron = 400, /datum/material/glass = 120) build_path = /obj/item/assembly/signaler category = list("initial", "T-Comm") @@ -17,7 +17,7 @@ name = "Radio Headset" id = "radio_headset" build_type = AUTOLATHE - materials = list(MAT_METAL = 75) + materials = list(/datum/material/iron = 75) build_path = /obj/item/radio/headset category = list("initial", "T-Comm") @@ -25,7 +25,7 @@ name = "Station Bounced Radio" id = "bounced_radio" build_type = AUTOLATHE - materials = list(MAT_METAL = 75, MAT_GLASS = 25) + materials = list(/datum/material/iron = 75, /datum/material/glass = 25) build_path = /obj/item/radio/off category = list("initial", "T-Comm") @@ -33,7 +33,7 @@ name = "Intercom Frame" id = "intercom_frame" build_type = AUTOLATHE - materials = list(MAT_METAL = 75, MAT_GLASS = 25) + materials = list(/datum/material/iron = 75, /datum/material/glass = 25) build_path = /obj/item/wallframe/intercom category = list("initial", "T-Comm") @@ -45,7 +45,7 @@ name = "Camera" id = "camera" build_type = AUTOLATHE - materials = list(MAT_METAL = 50, MAT_GLASS = 100) + materials = list(/datum/material/iron = 50, /datum/material/glass = 100) build_path = /obj/item/camera category = list("initial", "Misc") @@ -53,7 +53,7 @@ name = "Camera Film Cartridge" id = "camera_film" build_type = AUTOLATHE - materials = list(MAT_METAL = 10, MAT_GLASS = 10) + materials = list(/datum/material/iron = 10, /datum/material/glass = 10) build_path = /obj/item/camera_film category = list("initial", "Misc") @@ -61,7 +61,7 @@ name = "Earmuffs" id = "earmuffs" build_type = AUTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/clothing/ears/earmuffs category = list("initial", "Misc") @@ -69,7 +69,7 @@ name = "Pipe Painter" id = "pipe_painter" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 2000) + materials = list(/datum/material/iron = 5000, /datum/material/glass = 2000) build_path = /obj/item/pipe_painter category = list("initial", "Misc","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -78,7 +78,7 @@ name = "Airlock Painter" id = "airlock_painter" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 50, MAT_GLASS = 50) + materials = list(/datum/material/iron = 50, /datum/material/glass = 50) build_path = /obj/item/airlock_painter category = list("initial", "Misc","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -87,7 +87,7 @@ name = "Cultivator" id = "cultivator" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL=50) + materials = list(/datum/material/iron=50) build_path = /obj/item/cultivator category = list("initial","Misc","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_SERVICE @@ -96,7 +96,7 @@ name = "Plant Analyzer" id = "plant_analyzer" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 30, MAT_GLASS = 20) + materials = list(/datum/material/iron = 30, /datum/material/glass = 20) build_path = /obj/item/plant_analyzer category = list("initial","Misc","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_SERVICE @@ -105,7 +105,7 @@ name = "Shovel" id = "shovel" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 50) + materials = list(/datum/material/iron = 50) build_path = /obj/item/shovel category = list("initial","Misc","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_SERVICE | DEPARTMENTAL_FLAG_CARGO @@ -114,7 +114,7 @@ name = "Spade" id = "spade" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 50) + materials = list(/datum/material/iron = 50) build_path = /obj/item/shovel/spade category = list("initial","Misc","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_SERVICE @@ -123,7 +123,7 @@ name = "Hatchet" id = "hatchet" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 15000) + materials = list(/datum/material/iron = 15000) build_path = /obj/item/hatchet category = list("initial","Misc","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_SERVICE @@ -132,7 +132,7 @@ name = "Universal Recorder" id = "recorder" build_type = AUTOLATHE - materials = list(MAT_METAL = 60, MAT_GLASS = 30) + materials = list(/datum/material/iron = 60, /datum/material/glass = 30) build_path = /obj/item/taperecorder/empty category = list("initial", "Misc") @@ -140,7 +140,7 @@ name = "Tape" id = "tape" build_type = AUTOLATHE - materials = list(MAT_METAL = 20, MAT_GLASS = 5) + materials = list(/datum/material/iron = 20, /datum/material/glass = 5) build_path = /obj/item/tape/random category = list("initial", "Misc") @@ -148,7 +148,7 @@ name = "Igniter" id = "igniter" build_type = AUTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 50) + materials = list(/datum/material/iron = 500, /datum/material/glass = 50) build_path = /obj/item/assembly/igniter category = list("initial", "Misc") @@ -156,7 +156,7 @@ name = "Infrared Emitter" id = "infrared_emitter" build_type = AUTOLATHE - materials = list(MAT_METAL = 1000, MAT_GLASS = 500) + materials = list(/datum/material/iron = 1000, /datum/material/glass = 500) build_path = /obj/item/assembly/infra category = list("initial", "Misc") @@ -164,7 +164,7 @@ name = "Timer" id = "timer" build_type = AUTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 50) + materials = list(/datum/material/iron = 500, /datum/material/glass = 50) build_path = /obj/item/assembly/timer category = list("initial", "Misc") @@ -172,7 +172,7 @@ name = "Voice Analyser" id = "voice_analyser" build_type = AUTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 50) + materials = list(/datum/material/iron = 500, /datum/material/glass = 50) build_path = /obj/item/assembly/voice category = list("initial", "Misc") @@ -180,7 +180,7 @@ name = "Proximity Sensor" id = "prox_sensor" build_type = AUTOLATHE - materials = list(MAT_METAL = 800, MAT_GLASS = 200) + materials = list(/datum/material/iron = 800, /datum/material/glass = 200) build_path = /obj/item/assembly/prox_sensor category = list("initial", "Misc") @@ -188,7 +188,7 @@ name = "Box of Foam Darts" id = "foam_dart" build_type = AUTOLATHE - materials = list(MAT_METAL = 500) + materials = list(/datum/material/iron = 500) build_path = /obj/item/ammo_box/foambox category = list("initial", "Misc") @@ -196,7 +196,7 @@ name = "Laptop Frame" id = "laptop" build_type = AUTOLATHE - materials = list(MAT_METAL = 10000, MAT_GLASS = 1000) + materials = list(/datum/material/iron = 10000, /datum/material/glass = 1000) build_path = /obj/item/modular_computer/laptop/buildable category = list("initial","Misc") @@ -204,7 +204,7 @@ name = "Tablet Frame" id = "tablet" build_type = AUTOLATHE - materials = list(MAT_METAL = 2000, MAT_GLASS = 1000) + materials = list(/datum/material/iron = 2000, /datum/material/glass = 1000) build_path = /obj/item/modular_computer/tablet category = list("initial","Misc") @@ -212,7 +212,7 @@ name = "Slime Scanner" id = "slime_scanner" build_type = AUTOLATHE - materials = list(MAT_METAL = 300, MAT_GLASS = 200) + materials = list(/datum/material/iron = 300, /datum/material/glass = 200) build_path = /obj/item/slime_scanner category = list("initial", "Misc") @@ -220,7 +220,7 @@ name = "Pet Carrier" id = "pet_carrier" build_type = AUTOLATHE - materials = list(MAT_METAL = 7500, MAT_GLASS = 100) + materials = list(/datum/material/iron = 7500, /datum/material/glass = 100) build_path = /obj/item/pet_carrier category = list("initial", "Misc") @@ -228,7 +228,7 @@ name = "Package Wrapping" id = "packagewrap" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 200, MAT_GLASS = 200) + materials = list(/datum/material/iron = 200, /datum/material/glass = 200) build_path = /obj/item/stack/packageWrap category = list("initial", "Misc","Equipment") maxstack = 30 @@ -237,7 +237,7 @@ name = "Holodisk" id = "holodisk" build_type = AUTOLATHE - materials = list(MAT_METAL = 100, MAT_GLASS = 100) + materials = list(/datum/material/iron = 100, /datum/material/glass = 100) build_path = /obj/item/disk/holodisk category = list("initial", "Misc") @@ -245,7 +245,7 @@ name = "Lockable Collar" id = "lock_collar" build_type = AUTOLATHE - materials = list(MAT_METAL = 1200, MAT_GLASS = 100) + materials = list(/datum/material/iron = 1200, /datum/material/glass = 100) build_path = /obj/item/clothing/neck/petcollar/locked category = list("initial", "Misc") @@ -253,6 +253,6 @@ name = "Collar Key" id = "collar_key" build_type = AUTOLATHE - materials = list(MAT_METAL = 300, MAT_GLASS = 150) + materials = list(/datum/material/iron = 300, /datum/material/glass = 150) build_path = /obj/item/key/collar category = list("initial", "Misc") diff --git a/code/modules/research/designs/autolathe_desings/autolathe_designs_tools.dm b/code/modules/research/designs/autolathe_desings/autolathe_designs_tools.dm index 6affacf1b1..8288ceff23 100644 --- a/code/modules/research/designs/autolathe_desings/autolathe_designs_tools.dm +++ b/code/modules/research/designs/autolathe_desings/autolathe_designs_tools.dm @@ -8,7 +8,7 @@ name = "Bucket" id = "bucket" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 200) + materials = list(/datum/material/iron = 200) build_path = /obj/item/reagent_containers/glass/bucket category = list("initial","Tools","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_SERVICE @@ -17,7 +17,7 @@ name = "Pocket Crowbar" id = "crowbar" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 50) + materials = list(/datum/material/iron = 50) build_path = /obj/item/crowbar category = list("initial","Tools","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE @@ -26,7 +26,7 @@ name = "Flashlight" id = "flashlight" build_type = AUTOLATHE - materials = list(MAT_METAL = 50, MAT_GLASS = 20) + materials = list(/datum/material/iron = 50, /datum/material/glass = 20) build_path = /obj/item/flashlight category = list("initial","Tools") @@ -34,7 +34,7 @@ name = "Fire Extinguisher" id = "extinguisher" build_type = AUTOLATHE - materials = list(MAT_METAL = 90) + materials = list(/datum/material/iron = 90) build_path = /obj/item/extinguisher category = list("initial","Tools") @@ -42,15 +42,15 @@ name = "Pocket Fire Extinguisher" id = "pocketfireextinguisher" build_type = AUTOLATHE - materials = list(MAT_METAL = 50, MAT_GLASS = 40) + materials = list(/datum/material/iron = 50, /datum/material/glass = 40) build_path = /obj/item/extinguisher/mini category = list("initial","Tools") /datum/design/multitool name = "Multitool" id = "multitool" - build_type = AUTOLATHE - materials = list(MAT_METAL = 50, MAT_GLASS = 20) + build_type = AUTOLATHE | PROTOLATHE + materials = list(/datum/material/iron = 50, /datum/material/glass = 20) build_path = /obj/item/multitool category = list("initial","Tools","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE @@ -59,7 +59,7 @@ name = "Analyzer" id = "analyzer" build_type = AUTOLATHE - materials = list(MAT_METAL = 30, MAT_GLASS = 20) + materials = list(/datum/material/iron = 30, /datum/material/glass = 20) build_path = /obj/item/analyzer category = list("initial","Tools") @@ -67,7 +67,7 @@ name = "T-Ray Scanner" id = "tscanner" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 150) + materials = list(/datum/material/iron = 150) build_path = /obj/item/t_scanner category = list("initial","Tools","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -76,7 +76,7 @@ name = "Welding Tool" id = "welding_tool" build_type = AUTOLATHE - materials = list(MAT_METAL = 70, MAT_GLASS = 20) + materials = list(/datum/material/iron = 70, /datum/material/glass = 20) build_path = /obj/item/weldingtool category = list("initial","Tools","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE @@ -85,7 +85,7 @@ name = "Emergency Welding Tool" id = "mini_welding_tool" build_type = AUTOLATHE - materials = list(MAT_METAL = 30, MAT_GLASS = 10) + materials = list(/datum/material/iron = 30, /datum/material/glass = 10) build_path = /obj/item/weldingtool/mini category = list("initial","Tools") @@ -93,7 +93,7 @@ name = "Screwdriver" id = "screwdriver" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 75) + materials = list(/datum/material/iron = 75) build_path = /obj/item/screwdriver category = list("initial","Tools","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE @@ -101,7 +101,7 @@ name = "Wirecutters" id = "wirecutters" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 80) + materials = list(/datum/material/iron = 80) build_path = /obj/item/wirecutters category = list("initial","Tools","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE @@ -110,7 +110,7 @@ name = "Wrench" id = "wrench" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_METAL = 150) + materials = list(/datum/material/iron = 150) build_path = /obj/item/wrench category = list("initial","Tools","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE @@ -119,7 +119,7 @@ name = "Welding Helmet" id = "welding_helmet" build_type = AUTOLATHE - materials = list(MAT_METAL = 1750, MAT_GLASS = 400) + materials = list(/datum/material/iron = 1750, /datum/material/glass = 400) build_path = /obj/item/clothing/head/welding category = list("initial","Tools") @@ -127,7 +127,7 @@ name = "Cable Coil" id = "cable_coil" build_type = AUTOLATHE - materials = list(MAT_METAL = 10, MAT_GLASS = 5) + materials = list(/datum/material/iron = 10, /datum/material/glass = 5) build_path = /obj/item/stack/cable_coil/random category = list("initial","Tools","Tool Designs") maxstack = 30 @@ -137,7 +137,7 @@ name = "Toolbox" id = "tool_box" build_type = AUTOLATHE - materials = list(MAT_METAL = 500) + materials = list(MAT_CATEGORY_RIGID = 500) build_path = /obj/item/storage/toolbox category = list("initial","Tools") @@ -145,7 +145,7 @@ name = "Spraycan" id = "spraycan" build_type = AUTOLATHE - materials = list(MAT_METAL = 100, MAT_GLASS = 100) + materials = list(/datum/material/iron = 100, /datum/material/glass = 100) build_path = /obj/item/toy/crayon/spraycan category = list("initial", "Tools") @@ -153,6 +153,6 @@ name = "Geiger Counter" id = "geigercounter" build_type = AUTOLATHE - materials = list(MAT_METAL = 150, MAT_GLASS = 150) + materials = list(/datum/material/iron = 150, /datum/material/glass = 150) build_path = /obj/item/geiger_counter category = list("initial", "Tools") diff --git a/code/modules/research/designs/autoylathe_designs.dm b/code/modules/research/designs/autoylathe_designs.dm index d54dce9e8a..7811cfdaad 100644 --- a/code/modules/research/designs/autoylathe_designs.dm +++ b/code/modules/research/designs/autoylathe_designs.dm @@ -13,508 +13,508 @@ /datum/design/autoylathe/balloon name = "Empty Water balloon" id = "waterballoon" - materials = list(MAT_PLASTIC = 50) + materials = list(/datum/material/plastic = 50) build_path = /obj/item/toy/balloon category = list("initial", "Toys") /datum/design/autoylathe/spinningtoy name = "Toy Singularity" id = "singuloutoy" - materials = list(MAT_PLASTIC = 500) + materials = list(/datum/material/plastic = 500) build_path = /obj/item/toy/spinningtoy category = list("initial", "Toys") /datum/design/autoylathe/capgun name = "Cap Gun" id = "capgun" - materials = list(MAT_PLASTIC = 500) + materials = list(/datum/material/plastic = 500) build_path = /obj/item/toy/gun category = list("initial", "Pistols") /datum/design/autoylathe/capgunammo name = "Capgun Ammo" id = "capgunammo" - materials = list(MAT_PLASTIC = 50) + materials = list(/datum/material/plastic = 50) build_path = /obj/item/toy/ammo/gun category = list("initial", "misc") /datum/design/autoylathe/toysword name = "Toy Sword" id = "toysword" - materials = list(MAT_PLASTIC = 500) + materials = list(/datum/material/plastic = 500) build_path = /obj/item/toy/sword category = list("initial", "Melee") /datum/design/autoylathe/foamblade name = "Foam Armblade" id = "foamblade" - materials = list(MAT_PLASTIC = 500) + materials = list(/datum/material/plastic = 500) build_path = /obj/item/toy/foamblade category = list("initial", "Melee") /datum/design/autoylathe/windupbox name = "Wind Up Toolbox" id = "windupbox" - materials = list(MAT_PLASTIC = 500) + materials = list(/datum/material/plastic = 500) build_path = /obj/item/toy/windupToolbox category = list("initial", "Toys") /datum/design/autoylathe/toydualsword name = "Double-Bladed Toy Sword" id = "dbtoysword" - materials = list(MAT_PLASTIC = 1000) + materials = list(/datum/material/plastic = 1000) build_path = /obj/item/twohanded/dualsaber/toy category = list("initial", "Melee") /datum/design/autoylathe/toykatana name = "Replica Katana" id = "toykatana" - materials = list(MAT_PLASTIC = 50, MAT_METAL = 450) + materials = list(/datum/material/plastic = 50, /datum/material/iron = 450) build_path = /obj/item/toy/katana category = list("initial", "Melee") /datum/design/autoylathe/snappop name = "Snap Pop" id = "snappop_phoenix" - materials = list(MAT_PLASTIC = 50) + materials = list(/datum/material/plastic = 50) build_path = /obj/item/toy/snappop category = list("initial", "Toys") /datum/design/autoylathe/mech/model1 name = "Toy Ripley" id = "toymech1" - materials = list(MAT_PLASTIC = 250) + materials = list(/datum/material/plastic = 250) build_path = /obj/item/toy/prize/ripley /datum/design/autoylathe/mech/model2 name = "Toy Firefighter Ripley" id = "toymech2" - materials = list(MAT_PLASTIC = 250) + materials = list(/datum/material/plastic = 250) build_path = /obj/item/toy/prize/fireripley /datum/design/autoylathe/mech/contraband/model3 name = "Toy Deathsquad fireripley " id = "toymech3" - materials = list(MAT_PLASTIC = 250) + materials = list(/datum/material/plastic = 250) build_path = /obj/item/toy/prize/deathripley /datum/design/autoylathe/mech/model4 name = "Toy Gygax" id = "toymech4" - materials = list(MAT_PLASTIC = 250) + materials = list(/datum/material/plastic = 250) build_path = /obj/item/toy/prize/gygax /datum/design/autoylathe/mech/model5 name = "Toy Durand" id = "toymech5" - materials = list(MAT_PLASTIC = 250) + materials = list(/datum/material/plastic = 250) build_path = /obj/item/toy/prize/durand /datum/design/autoylathe/mech/contraband/model6 name = "Toy H.O.N.K." id = "toymech6" - materials = list(MAT_PLASTIC = 250) + materials = list(/datum/material/plastic = 250) build_path = /obj/item/toy/prize/honk /datum/design/autoylathe/mech/contraband/model7 name = "Toy Marauder" id = "toymech7" - materials = list(MAT_PLASTIC = 250) + materials = list(/datum/material/plastic = 250) build_path = /obj/item/toy/prize/marauder /datum/design/autoylathe/mech/contraband/model8 name = "Toy Seraph" id = "toymech8" - materials = list(MAT_PLASTIC = 250) + materials = list(/datum/material/plastic = 250) build_path = /obj/item/toy/prize/seraph /datum/design/autoylathe/mech/contraband/model9 name = "Toy Mauler" id = "toymech9" - materials = list(MAT_PLASTIC = 250) + materials = list(/datum/material/plastic = 250) build_path = /obj/item/toy/prize/mauler /datum/design/autoylathe/mech/model10 name = "Toy Odysseus" id = "toymech10" - materials = list(MAT_PLASTIC = 250) + materials = list(/datum/material/plastic = 250) build_path = /obj/item/toy/prize/odysseus /datum/design/autoylathe/mech/model11 name = "Toy Phazon" id = "toymech11" - materials = list(MAT_PLASTIC = 250) + materials = list(/datum/material/plastic = 250) build_path = /obj/item/toy/prize/phazon /datum/design/autoylathe/mech/contraband/model12 name = "Toy Reticence" id = "toymech12" - materials = list(MAT_PLASTIC = 250) + materials = list(/datum/material/plastic = 250) build_path = /obj/item/toy/prize/reticence category = list("hacked", "Figurines") /datum/design/autoylathe/talking/AI name = "Toy AI" id = "ToyAICore" - materials = list(MAT_PLASTIC = 250, MAT_METAL = 50) + materials = list(/datum/material/plastic = 250, /datum/material/iron = 50) build_path = /obj/item/toy/talking/AI category = list("initial", "Toys") /datum/design/autoylathe/talking/codex_gigas name = "Toy Codex Gigas" id = "ToyCodex" - materials = list(MAT_PLASTIC = 250, MAT_METAL = 50) + materials = list(/datum/material/plastic = 250, /datum/material/iron = 50) build_path = /obj/item/toy/talking/codex_gigas category = list("initial", "Toys") /datum/design/autoylathe/talking/owl name = "Owl Action Figure" id = "owlactionfig" - materials = list(MAT_PLASTIC = 250, MAT_METAL = 50) + materials = list(/datum/material/plastic = 250, /datum/material/iron = 50) build_path = /obj/item/toy/talking/owl /datum/design/autoylathe/talking/griffin name = "Griffon Action Figure" id = "griffinactionfig" - materials = list(MAT_PLASTIC = 250, MAT_METAL = 50) + materials = list(/datum/material/plastic = 250, /datum/material/iron = 50) build_path = /obj/item/toy/talking/griffin /datum/design/autoylathe/cards name = "Deck of Cards" id = "carddeck" - materials = list(MAT_PLASTIC = 250) + materials = list(/datum/material/plastic = 250) build_path = /obj/item/toy/cards/deck category = list("initial", "Toys") /datum/design/autoylathe/nuke name = "Nuclear Fission Explosive Toy" id = "nuketoy" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/nuke category = list("initial", "Toys") /datum/design/autoylathe/minimeteor name = "Mini-Meteor" id = "meattoy" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/minimeteor category = list("hacked", "Misc") /datum/design/autoylathe/redbutton name = "Big Red Button" id = "redbutton" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/redbutton category = list("initial", "Toys") /datum/design/autoylathe/beach_ball name = "Beach Ball" id = "beachball" - materials = list(MAT_PLASTIC = 500) + materials = list(/datum/material/plastic = 500) build_path = /obj/item/toy/beach_ball category = list("initial", "Toys") /datum/design/autoylathe/clockwork_watch name = "Clockwork Watch" id = "clockwatch" - materials = list(MAT_PLASTIC = 1000) + materials = list(/datum/material/plastic = 1000) build_path = /obj/item/toy/clockwork_watch category = list("initial", "misc") /datum/design/autoylathe/dagger name = "Toy Dagger" id = "toydagger" - materials = list(MAT_PLASTIC = 1000) + materials = list(/datum/material/plastic = 1000) build_path = /obj/item/toy/toy_dagger category = list("initial", "Melee") /datum/design/autoylathe/xeno name = "Xenomorph" id = "xenomorph" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/toy_xeno /datum/design/autoylathe/cattoy name = "Toy Mouse" id = "cattoy" - materials = list(MAT_PLASTIC = 500) + materials = list(/datum/material/plastic = 500) build_path = /obj/item/toy/cattoy category = list("initial", "Toys") /datum/design/autoylathe/figure/assistant name = "Assistant" id = "assfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/assistant /datum/design/autoylathe/figure/atmos name = "Atmos Tech" id = "atmfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/atmos /datum/design/autoylathe/figure/bartender name = "Bartender" id = "barfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/bartender /datum/design/autoylathe/figure/botanist name = "Botanist" id = "botfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/botanist /datum/design/autoylathe/figure/captain name = "Captain" id = "capfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/captain /datum/design/autoylathe/figure/cargotech name = "Cargo Technician" id = "carfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/cargotech /datum/design/autoylathe/figure/ce name = "Chief Engineer" id = "cefigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/ce /datum/design/autoylathe/figure/chaplain name = "Chaplain" id = "chafigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/chaplain /datum/design/autoylathe/figure/chef name = "Chef" id = "chefigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/chef /datum/design/autoylathe/figure/chemist name = "Chemist" id = "chmfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/chemist /datum/design/autoylathe/figure/clown name = "Clown" id = "clnfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/clown /datum/design/autoylathe/figure/cmo name = "Chief Medical Officer" id = "cmofigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/cmo /datum/design/autoylathe/figure/curator name = "Curator" id = "curfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/curator /datum/design/autoylathe/figure/borg name = "Cyborg" id = "cybfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/borg /datum/design/autoylathe/figure/detective name = "Detective" id = "detfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/detective /datum/design/autoylathe/figure/engineer name = "Engineer" id = "engfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/engineer /datum/design/autoylathe/figure/geneticist name = "Geneticist" id = "genfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/geneticist /datum/design/autoylathe/figure/hop name = "Head of Personnel" id = "hopfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/hop /datum/design/autoylathe/figure/hos name = "Head of Security" id = "hosfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/hos /datum/design/autoylathe/figure/janitor name = "Janitor" id = "janfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/janitor /datum/design/autoylathe/figure/lawyer name = "Lawyer" id = "lawfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/lawyer /datum/design/autoylathe/figure/md name = "Medical Doctor" id = "medfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/md /datum/design/autoylathe/figure/mime name = "Mime" id = "mimfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/mime /datum/design/autoylathe/figure/miner name = "Miner" id = "minfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/miner /datum/design/autoylathe/figure/rd name = "Research Director" id = "rdfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/rd /datum/design/autoylathe/figure/robotocist name = "Robotocist" id = "robfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/roboticist /datum/design/autoylathe/figure/qm name = "Quartermaster" id = "qtmfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/qm /datum/design/autoylathe/figure/scientist name = "Scientist" id = "scifigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/scientist /datum/design/autoylathe/figure/secofficer name = "Security Officer" id = "secfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/secofficer /datum/design/autoylathe/figure/virologist name = "Virologist" id = "virfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/virologist /datum/design/autoylathe/figure/warden name = "Warden" id = "warfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/warden /datum/design/autoylathe/figure/dsquad name = "Deathsquad" id = "dsqfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/dsquad category = list("hacked", "Figurines") /datum/design/autoylathe/figure/ian name = "Ian" id = "ianfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/ian category = list("hacked", "Figurines") /datum/design/autoylathe/figure/ninja name = "Ninja" id = "ninfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/ninja category = list("hacked", "Figurines") /datum/design/autoylathe/figure/syndie name = "Nuclear Operative" id = "nucfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/syndie category = list("hacked", "Figurines") /datum/design/autoylathe/figure/wizard name = "Wizard" id = "wizfigure" - materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 50) build_path = /obj/item/toy/figure/wizard category = list("hacked", "Figurines") /datum/design/autoylathe/dildo name = "Customizable Dildo" id = "dildo" - materials = list(MAT_PLASTIC = 2000) + materials = list(/datum/material/plastic = 2000) build_path = /obj/item/dildo/custom category = list("initial", "Adult") /datum/design/autoylathe/collar name = "Collar" id = "collar" - materials = list(MAT_PLASTIC = 250, MAT_METAL = 50) + materials = list(/datum/material/plastic = 250, /datum/material/iron = 50) build_path = /obj/item/clothing/neck/petcollar category = list("initial", "Adult") /datum/design/autoylathe/lastag/blue/gun name = "Blue Lasertag Rifle" id = "lastagrifleblue" - materials = list(MAT_PLASTIC = 2000, MAT_METAL = 500, MAT_GLASS = 500) + materials = list(/datum/material/plastic = 2000, /datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/gun/energy/laser/bluetag category = list("initial", "Rifles") /datum/design/autoylathe/lastag/red/gun name = "Red Lasertag Rifle" id = "lastagriflered" - materials = list(MAT_PLASTIC = 2000, MAT_METAL = 500, MAT_GLASS = 500) + materials = list(/datum/material/plastic = 2000, /datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/gun/energy/laser/redtag category = list("initial", "Rifles") /datum/design/autoylathe/lastag/blue/hat name = "Blue Lasertag Helmet" id = "lastaghatblue" - materials = list(MAT_PLASTIC = 4000, MAT_METAL = 1000, MAT_GLASS = 500) + materials = list(/datum/material/plastic = 4000, /datum/material/iron = 1000, /datum/material/glass = 500) build_path = /obj/item/clothing/head/helmet/bluetaghelm category = list("initial", "Armor") /datum/design/autoylathe/lastag/blue/armor name = "Blue Lasertag Armor" id = "lastagarmorblue" - materials = list(MAT_PLASTIC = 8000, MAT_METAL = 2000, MAT_GLASS = 100) + materials = list(/datum/material/plastic = 8000, /datum/material/iron = 2000, /datum/material/glass = 100) build_path = /obj/item/clothing/suit/bluetag category = list("initial", "Armor") /datum/design/autoylathe/lastag/red/hat name = "Red Lasertag Helmet" id = "lastaghelmetred" - materials = list(MAT_PLASTIC = 4000, MAT_METAL = 1000, MAT_GLASS = 500) + materials = list(/datum/material/plastic = 4000, /datum/material/iron = 1000, /datum/material/glass = 500) build_path = /obj/item/clothing/head/helmet/redtaghelm category = list("initial", "Armor") /datum/design/autoylathe/lastag/red/armor name = "Red Lasertag Armor" id = "lastagarmorred" - materials = list(MAT_PLASTIC = 8000, MAT_METAL = 2000, MAT_GLASS = 1000) + materials = list(/datum/material/plastic = 8000, /datum/material/iron = 2000, /datum/material/glass = 1000) build_path = /obj/item/clothing/suit/redtag category = list("initial", "Armor") @@ -544,14 +544,14 @@ /datum/design/autoylathe/lastag/blue name = "Blue Lasertag Kit" id = "lastagkitblue" - materials = list(MAT_PLASTIC = 16000, MAT_METAL = 4000, MAT_GLASS = 2000) + materials = list(/datum/material/plastic = 16000, /datum/material/iron = 4000, /datum/material/glass = 2000) build_path = /obj/item/storage/box/blueteam category = list("initial", "Misc") /datum/design/autoylathe/lastag/red name = "Red Lasertag Kit" id = "lastagkitred" - materials = list(MAT_PLASTIC = 16000, MAT_METAL = 4000, MAT_GLASS = 2000) + materials = list(/datum/material/plastic = 16000, /datum/material/iron = 4000, /datum/material/glass = 2000) build_path = /obj/item/storage/box/redteam category = list("initial", "Misc") @@ -559,7 +559,7 @@ name = "Foam Force X9 Rifle" id = "foam_x9" build_type = AUTOYLATHE - materials = list(MAT_PLASTIC = 4000, MAT_METAL = 500) + materials = list(/datum/material/plastic = 4000, /datum/material/iron = 500) build_path = /obj/item/gun/ballistic/automatic/x9/toy category = list("initial", "Rifles") @@ -567,7 +567,7 @@ name = "Box of Foam Darts" id = "foam_dart" build_type = AUTOYLATHE - materials = list(MAT_PLASTIC = 500, MAT_METAL = 100) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 100) build_path = /obj/item/ammo_box/foambox category = list("initial", "Misc") @@ -575,7 +575,7 @@ name = "Foam Force Magpistol" id = "magfoam_launcher" build_type = AUTOYLATHE - materials = list(MAT_PLASTIC = 2000, MAT_METAL = 250) + materials = list(/datum/material/plastic = 2000, /datum/material/iron = 250) build_path = /obj/item/gun/ballistic/shotgun/toy/mag category = list("initial", "Pistols") @@ -583,7 +583,7 @@ name = "Foam Force MagRifle" id = "foam_magrifle" build_type = AUTOYLATHE - materials = list(MAT_PLASTIC = 4000, MAT_METAL = 500) + materials = list(/datum/material/plastic = 4000, /datum/material/iron = 500) build_path = /obj/item/gun/ballistic/automatic/toy/magrifle category = list("initial", "Rifles") @@ -591,7 +591,7 @@ name = "MagTag Hyper Rifle" id = "foam_hyperburst" build_type = AUTOYLATHE - materials = list(MAT_PLASTIC = 4000, MAT_METAL = 2000, MAT_GLASS = 1000) + materials = list(/datum/material/plastic = 4000, /datum/material/iron = 2000, /datum/material/glass = 1000) build_path = /obj/item/gun/energy/laser/practice/hyperburst category = list("initial", "Rifles") @@ -599,7 +599,7 @@ name = "Foam Force Stealth Pistol" id = "foam_sp" build_type = AUTOYLATHE - materials = list(MAT_PLASTIC = 2000, MAT_METAL = 1000) + materials = list(/datum/material/plastic = 2000, /datum/material/iron = 1000) build_path = /obj/item/gun/ballistic/automatic/toy/pistol/stealth category = list("initial", "Pistols") @@ -607,7 +607,7 @@ name = "RayTag Gun" id = "toyray" build_type = AUTOYLATHE - materials = list(MAT_PLASTIC = 2000, MAT_METAL = 1000, MAT_GLASS = 1000) + materials = list(/datum/material/plastic = 2000, /datum/material/iron = 1000, /datum/material/glass = 1000) build_path = /obj/item/gun/energy/laser/practice/raygun category = list("initial", "Pistols") @@ -615,7 +615,7 @@ name = "Foam Force AM4-C Rifle" id = "foam_am4c" build_type = AUTOYLATHE - materials = list(MAT_PLASTIC = 4000, MAT_METAL = 500) + materials = list(/datum/material/plastic = 4000, /datum/material/iron = 500) build_path = /obj/item/gun/ballistic/automatic/AM4C category = list("initial", "Rifles") @@ -623,7 +623,7 @@ name = "Replica F3 Justicar" id = "foam_f3" build_type = AUTOYLATHE - materials = list(MAT_PLASTIC = 2000, MAT_METAL = 250) + materials = list(/datum/material/plastic = 2000, /datum/material/iron = 250) build_path = /obj/item/toy/gun/justicar category = list("initial", "Pistols") @@ -631,7 +631,7 @@ name = "pump-action plastic blaster" id = "toy_blaster" build_type = AUTOYLATHE - materials = list(MAT_PLASTIC = 2000, MAT_METAL = 750, MAT_GLASS = 1000) + materials = list(/datum/material/plastic = 2000, /datum/material/iron = 750, /datum/material/glass = 1000) build_path = /obj/item/gun/energy/pumpaction/toy category = list("initial", "Rifles") @@ -639,7 +639,7 @@ name = "Box of Caps" id = "capammo" build_type = AUTOYLATHE - materials = list(MAT_METAL = 10, MAT_GLASS = 10) + materials = list(/datum/material/iron = 10, /datum/material/glass = 10) build_path = /obj/item/toy/ammo/gun category = list("initial", "Misc") @@ -647,7 +647,7 @@ name = "Foam Force SMG" id = "foam_smg" build_type = AUTOYLATHE - materials = list(MAT_PLASTIC = 2000, MAT_METAL = 250) + materials = list(/datum/material/plastic = 2000, /datum/material/iron = 250) build_path = /obj/item/gun/ballistic/automatic/toy/unrestricted category = list("initial", "Pistols") @@ -655,7 +655,7 @@ name = "Foam Force Pistol" id = "foam_pistol" build_type = AUTOYLATHE - materials = list(MAT_PLASTIC = 2000, MAT_METAL = 250) + materials = list(/datum/material/plastic = 2000, /datum/material/iron = 250) build_path = /obj/item/gun/ballistic/automatic/toy/pistol/unrestricted category = list("initial", "Pistols") @@ -663,7 +663,7 @@ name = "Foam Force Shotgun" id = "foam_shotgun" build_type = AUTOYLATHE - materials = list(MAT_PLASTIC = 4000, MAT_METAL = 500) + materials = list(/datum/material/plastic = 4000, /datum/material/iron = 500) build_path = /obj/item/gun/ballistic/shotgun/toy/unrestricted category = list("initial", "Rifles") @@ -671,7 +671,7 @@ name = "Box of Lastag Red Foam Darts" id = "redfoam_dart" build_type = AUTOYLATHE - materials = list(MAT_PLASTIC = 500, MAT_METAL = 100) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 100) build_path = /obj/item/ammo_box/foambox/tag/red category = list("initial", "Misc") @@ -679,7 +679,7 @@ name = "Box of Lastag Blue Foam Darts" id = "bluefoam_dart" build_type = AUTOYLATHE - materials = list(MAT_PLASTIC = 500, MAT_METAL = 100) + materials = list(/datum/material/plastic = 500, /datum/material/iron = 100) build_path = /obj/item/ammo_box/foambox/tag/blue category = list("initial", "Misc") @@ -687,7 +687,7 @@ name = "Foam Force Crossbow" id = "foam_bow" build_type = AUTOYLATHE - materials = list(MAT_PLASTIC = 2000, MAT_METAL = 250) + materials = list(/datum/material/plastic = 2000, /datum/material/iron = 250) build_path = /obj/item/gun/ballistic/shotgun/toy/crossbow category = list("initial", "Pistols") @@ -695,7 +695,7 @@ name = "Donksoft C20R" id = "foam_c20" build_type = AUTOYLATHE - materials = list(MAT_PLASTIC = 4000, MAT_METAL = 500) + materials = list(/datum/material/plastic = 4000, /datum/material/iron = 500) build_path = /obj/item/gun/ballistic/automatic/c20r/toy/unrestricted category = list("hacked", "Rifles") @@ -703,6 +703,6 @@ name = "Donksoft LMG" id = "foam_LMG" build_type = AUTOYLATHE - materials = list(MAT_PLASTIC = 4000, MAT_METAL = 500) + materials = list(/datum/material/plastic = 4000, /datum/material/iron = 500) build_path = /obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted category = list("hacked", "Rifles") diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm index ab0460974c..e82dffbe07 100644 --- a/code/modules/research/designs/biogenerator_designs.dm +++ b/code/modules/research/designs/biogenerator_designs.dm @@ -6,7 +6,7 @@ name = "10u Milk" id = "milk" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 20) + materials = list(/datum/material/biomass = 20) make_reagents = list(/datum/reagent/consumable/milk = 10) category = list("initial","Food") @@ -14,7 +14,7 @@ name = "10u Cream" id = "cream" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 30) + materials = list(/datum/material/biomass = 30) make_reagents = list(/datum/reagent/consumable/cream = 10) category = list("initial","Food") @@ -22,7 +22,7 @@ name = "Milk Carton" id = "milk_carton" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 100) + materials = list(/datum/material/biomass = 100) build_path = /obj/item/reagent_containers/food/condiment/milk category = list("initial","Food") @@ -30,7 +30,7 @@ name = "Cream Carton" id = "cream_carton" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 300) + materials = list(/datum/material/biomass = 300) build_path = /obj/item/reagent_containers/food/drinks/bottle/cream category = list("initial","Food") @@ -38,7 +38,7 @@ name = "10u Black Pepper" id = "black_pepper" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 25) + materials = list(/datum/material/biomass = 25) make_reagents = list(/datum/reagent/consumable/blackpepper = 10) category = list("initial","Food") @@ -46,7 +46,7 @@ name = "Pepper Mill" id = "pepper_mill" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 50) + materials = list(/datum/material/biomass = 50) build_path = /obj/item/reagent_containers/food/condiment/peppermill make_reagents = list() category = list("initial","Food") @@ -55,15 +55,15 @@ name = "10u Universal Enzyme" id = "enzyme" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 30) - make_reagents = list("enzyme" = 10) + materials = list(/datum/material/biomass = 30) + make_reagents = list(/datum/reagent/consumable/enzyme = 10) category = list("initial","Food") /datum/design/flour_sack name = "Flour Sack" id = "flour_sack" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 150) + materials = list(/datum/material/biomass = 150) build_path = /obj/item/reagent_containers/food/condiment/flour category = list("initial","Food") @@ -71,7 +71,7 @@ name = "Monkey Cube" id = "mcube" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 250) + materials = list(/datum/material/biomass = 250) build_path = /obj/item/reagent_containers/food/snacks/monkeycube category = list("initial", "Food") @@ -79,7 +79,7 @@ name = "Biomass Meat Slab" id = "smeat" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 175) + materials = list(/datum/material/biomass = 175) build_path = /obj/item/reagent_containers/food/snacks/meat/slab/synthmeat category = list("initial", "Food") @@ -87,7 +87,7 @@ name = "E-Z Nutrient" id = "ez_nut" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 10) + materials = list(/datum/material/biomass = 10) build_path = /obj/item/reagent_containers/glass/bottle/nutrient/ez category = list("initial","Botany Chemicals") @@ -95,7 +95,7 @@ name = "Left 4 Zed" id = "l4z_nut" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 20) + materials = list(/datum/material/biomass = 20) build_path = /obj/item/reagent_containers/glass/bottle/nutrient/l4z category = list("initial","Botany Chemicals") @@ -103,7 +103,7 @@ name = "Robust Harvest" id = "rh_nut" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 25) + materials = list(/datum/material/biomass = 25) build_path = /obj/item/reagent_containers/glass/bottle/nutrient/rh category = list("initial","Botany Chemicals") @@ -111,7 +111,7 @@ name = "Weed Killer" id = "weed_killer" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 50) + materials = list(/datum/material/biomass = 50) build_path = /obj/item/reagent_containers/glass/bottle/killer/weedkiller category = list("initial","Botany Chemicals") @@ -119,7 +119,7 @@ name = "Pest Killer" id = "pest_spray" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 50) + materials = list(/datum/material/biomass = 50) build_path = /obj/item/reagent_containers/glass/bottle/killer/pestkiller category = list("initial","Botany Chemicals") @@ -127,7 +127,7 @@ name = "10u Ammonia" id = "ammonia_biogen" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 25) + materials = list(/datum/material/biomass = 25) make_reagents = list(/datum/reagent/ammonia = 10) category = list("initial","Botany Chemicals") @@ -135,7 +135,7 @@ name = "10u Saltpetre" id = "saltpetre_biogen" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 75) + materials = list(/datum/material/biomass = 75) make_reagents = list(/datum/reagent/saltpetre = 10) category = list("initial","Botany Chemicals") @@ -143,7 +143,7 @@ name = "Empty Bottle" id = "botany_bottle" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 5) + materials = list(/datum/material/biomass = 5) build_path = /obj/item/reagent_containers/glass/bottle/nutrient/empty category = list("initial", "Botany Chemicals") @@ -151,7 +151,7 @@ name = "Roll of Cloth" id = "cloth" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 50) + materials = list(/datum/material/biomass = 50) build_path = /obj/item/stack/sheet/cloth category = list("initial","Organic Materials") @@ -159,7 +159,7 @@ name = "Sheet of Cardboard" id = "cardboard" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 25) + materials = list(/datum/material/biomass = 25) build_path = /obj/item/stack/sheet/cardboard category = list("initial","Organic Materials") @@ -167,7 +167,7 @@ name = "Sheet of Leather" id = "leather" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 150) + materials = list(/datum/material/biomass = 150) build_path = /obj/item/stack/sheet/leather category = list("initial","Organic Materials") @@ -175,7 +175,7 @@ name = "Security Belt" id = "secbelt" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 300) + materials = list(/datum/material/biomass = 300) build_path = /obj/item/storage/belt/security category = list("initial","Organic Materials") @@ -183,7 +183,7 @@ name = "Medical Belt" id = "medbel" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 300) + materials = list(/datum/material/biomass = 300) build_path = /obj/item/storage/belt/medical category = list("initial","Organic Materials") @@ -191,7 +191,7 @@ name = "Janitorial Belt" id = "janibelt" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 300) + materials = list(/datum/material/biomass = 300) build_path = /obj/item/storage/belt/janitor category = list("initial","Organic Materials") @@ -199,7 +199,7 @@ name = "Shoulder Holster" id = "s_holster" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 400) + materials = list(/datum/material/biomass = 400) build_path = /obj/item/storage/belt/holster category = list("initial","Organic Materials") @@ -207,6 +207,6 @@ name = "Rice Hat" id = "rice_hat" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 300) + materials = list(/datum/material/biomass = 300) build_path = /obj/item/clothing/head/rice_hat category = list("initial","Organic Materials") diff --git a/code/modules/research/designs/bluespace_designs.dm b/code/modules/research/designs/bluespace_designs.dm index 84fe526cd8..b03b85f99b 100644 --- a/code/modules/research/designs/bluespace_designs.dm +++ b/code/modules/research/designs/bluespace_designs.dm @@ -8,7 +8,7 @@ desc = "A blue space tracking beacon." id = "beacon" build_type = PROTOLATHE - materials = list(MAT_METAL = 150, MAT_GLASS = 100) + materials = list(/datum/material/iron = 150, /datum/material/glass = 100) build_path = /obj/item/beacon category = list("Bluespace Designs") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SECURITY @@ -18,7 +18,7 @@ desc = "A backpack that opens into a localized pocket of bluespace." id = "bag_holding" build_type = PROTOLATHE - materials = list(MAT_GOLD = 3000, MAT_DIAMOND = 1500, MAT_URANIUM = 250, MAT_BLUESPACE = 2000) + materials = list(/datum/material/gold = 3000, /datum/material/diamond = 1500, /datum/material/uranium = 250, /datum/material/bluespace = 2000) build_path = /obj/item/storage/backpack/holding category = list("Bluespace Designs") dangerous_construction = TRUE @@ -29,7 +29,7 @@ desc = "A satchel that opens into a localized pocket of bluespace." id = "satchel_holding" build_type = PROTOLATHE - materials = list(MAT_GOLD = 3000, MAT_DIAMOND = 1500, MAT_URANIUM = 250, MAT_BLUESPACE = 2000) + materials = list(/datum/material/gold = 3000, /datum/material/diamond = 1500, /datum/material/uranium = 250, /datum/material/bluespace = 2000) build_path = /obj/item/storage/backpack/holding/satchel category = list("Bluespace Designs") dangerous_construction = TRUE @@ -40,7 +40,7 @@ desc = "A chemical holding thingy. Mostly used for xenobiology." id = "biobag_holding" build_type = PROTOLATHE - materials = list(MAT_GOLD = 1500, MAT_DIAMOND = 750, MAT_URANIUM = 250, MAT_BLUESPACE = 1000) + materials = list(/datum/material/gold = 1500, /datum/material/diamond = 750, /datum/material/uranium = 250, /datum/material/bluespace = 1000) build_path = /obj/item/storage/bag/bio/holding category = list("Bluespace Designs") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -50,7 +50,7 @@ desc = "A small blue crystal with mystical properties." id = "bluespace_crystal" build_type = PROTOLATHE - materials = list(MAT_DIAMOND = 1500, MAT_PLASMA = 1500) + materials = list(/datum/material/diamond = 1500, /datum/material/plasma = 1500) build_path = /obj/item/stack/ore/bluespace_crystal/artificial category = list("Bluespace Designs") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -60,7 +60,7 @@ desc = "Little thingie that can track its position at all times." id = "telesci_gps" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 1000) + materials = list(/datum/material/iron = 500, /datum/material/glass = 1000) build_path = /obj/item/gps category = list("Bluespace Designs") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_CARGO @@ -70,7 +70,7 @@ desc = "A device that can desynchronize the user from spacetime." id = "desynchronizer" build_type = PROTOLATHE - materials = list(MAT_METAL = 1000, MAT_GLASS = 500, MAT_SILVER = 1500, MAT_BLUESPACE = 1000) + materials = list(/datum/material/iron = 1000, /datum/material/glass = 500, /datum/material/silver = 1500, /datum/material/bluespace = 1000) build_path = /obj/item/desynchronizer category = list("Bluespace Designs") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -80,7 +80,7 @@ desc = "A mining satchel that can hold an infinite amount of ores." id = "minerbag_holding" build_type = PROTOLATHE - materials = list(MAT_GOLD = 250, MAT_URANIUM = 500) //quite cheap, for more convenience + materials = list(/datum/material/gold = 250, /datum/material/uranium = 500) //quite cheap, for more convenience build_path = /obj/item/storage/bag/ore/holding category = list("Bluespace Designs") departmental_flags = DEPARTMENTAL_FLAG_CARGO diff --git a/code/modules/research/designs/comp_board_designs/comp_board_designs_all_misc.dm b/code/modules/research/designs/comp_board_designs/comp_board_designs_all_misc.dm index 65a435a309..27560f29a1 100644 --- a/code/modules/research/designs/comp_board_designs/comp_board_designs_all_misc.dm +++ b/code/modules/research/designs/comp_board_designs/comp_board_designs_all_misc.dm @@ -3,7 +3,7 @@ name = "Computer Design ( NULL ENTRY )" desc = "A blank compurter board!" build_type = IMPRINTER - materials = list(MAT_GLASS = 1000) + materials = list(/datum/material/glass = 1000) /datum/design/board/arcade_battle name = "Computer Design (Battle Arcade Machine)" diff --git a/code/modules/research/designs/comp_board_designs/comp_board_designs_sci.dm b/code/modules/research/designs/comp_board_designs/comp_board_designs_sci.dm index e0b0a22be6..55171e2221 100644 --- a/code/modules/research/designs/comp_board_designs/comp_board_designs_sci.dm +++ b/code/modules/research/designs/comp_board_designs/comp_board_designs_sci.dm @@ -22,7 +22,7 @@ name = "Computer Design (AI Upload)" desc = "Allows for the construction of circuit boards used to build an AI Upload Console." id = "aiupload" - materials = list(MAT_GLASS = 1000, MAT_GOLD = 2000) + materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000) build_path = /obj/item/circuitboard/computer/aiupload category = list("Computer Boards") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -31,7 +31,7 @@ name = "Computer Design (Cyborg Upload)" desc = "Allows for the construction of circuit boards used to build a Cyborg Upload Console." id = "borgupload" - materials = list(MAT_GLASS = 1000, MAT_GOLD = 2000) + materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000) build_path = /obj/item/circuitboard/computer/borgupload category = list("Computer Boards") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE diff --git a/code/modules/research/designs/computer_part_designs.dm b/code/modules/research/designs/computer_part_designs.dm index a8813b726d..ab487b0aaa 100644 --- a/code/modules/research/designs/computer_part_designs.dm +++ b/code/modules/research/designs/computer_part_designs.dm @@ -6,7 +6,7 @@ name = "Hard Disk Drive" id = "hdd_basic" build_type = PROTOLATHE - materials = list(MAT_METAL = 400, MAT_GLASS = 100) + materials = list(/datum/material/iron = 400, /datum/material/glass = 100) build_path = /obj/item/computer_hardware/hard_drive category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -15,7 +15,7 @@ name = "Advanced Hard Disk Drive" id = "hdd_advanced" build_type = PROTOLATHE - materials = list(MAT_METAL = 800, MAT_GLASS = 200) + materials = list(/datum/material/iron = 800, /datum/material/glass = 200) build_path = /obj/item/computer_hardware/hard_drive/advanced category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -24,7 +24,7 @@ name = "Super Hard Disk Drive" id = "hdd_super" build_type = PROTOLATHE - materials = list(MAT_METAL = 1600, MAT_GLASS = 400) + materials = list(/datum/material/iron = 1600, /datum/material/glass = 400) build_path = /obj/item/computer_hardware/hard_drive/super category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -33,7 +33,7 @@ name = "Cluster Hard Disk Drive" id = "hdd_cluster" build_type = PROTOLATHE - materials = list(MAT_METAL = 3200, MAT_GLASS = 800) + materials = list(/datum/material/iron = 3200, /datum/material/glass = 800) build_path = /obj/item/computer_hardware/hard_drive/cluster category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -42,7 +42,7 @@ name = "Solid State Drive" id = "ssd_small" build_type = PROTOLATHE - materials = list(MAT_METAL = 800, MAT_GLASS = 200) + materials = list(/datum/material/iron = 800, /datum/material/glass = 200) build_path = /obj/item/computer_hardware/hard_drive/small category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -51,7 +51,7 @@ name = "Micro Solid State Drive" id = "ssd_micro" build_type = PROTOLATHE - materials = list(MAT_METAL = 400, MAT_GLASS = 100) + materials = list(/datum/material/iron = 400, /datum/material/glass = 100) build_path = /obj/item/computer_hardware/hard_drive/micro category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -61,7 +61,7 @@ name = "Network Card" id = "netcard_basic" build_type = IMPRINTER - materials = list(MAT_METAL = 250, MAT_GLASS = 100) + materials = list(/datum/material/iron = 250, /datum/material/glass = 100) build_path = /obj/item/computer_hardware/network_card category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -70,7 +70,7 @@ name = "Advanced Network Card" id = "netcard_advanced" build_type = IMPRINTER - materials = list(MAT_METAL = 500, MAT_GLASS = 200) + materials = list(/datum/material/iron = 500, /datum/material/glass = 200) build_path = /obj/item/computer_hardware/network_card/advanced category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -79,7 +79,7 @@ name = "Wired Network Card" id = "netcard_wired" build_type = IMPRINTER - materials = list(MAT_METAL = 2500, MAT_GLASS = 400) + materials = list(/datum/material/iron = 2500, /datum/material/glass = 400) build_path = /obj/item/computer_hardware/network_card/wired category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -89,7 +89,7 @@ name = "Data Disk" id = "portadrive_basic" build_type = IMPRINTER - materials = list(MAT_GLASS = 800) + materials = list(/datum/material/glass = 800) build_path = /obj/item/computer_hardware/hard_drive/portable category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -98,7 +98,7 @@ name = "Advanced Data Disk" id = "portadrive_advanced" build_type = IMPRINTER - materials = list(MAT_GLASS = 1600) + materials = list(/datum/material/glass = 1600) build_path = /obj/item/computer_hardware/hard_drive/portable/advanced category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -107,7 +107,7 @@ name = "Super Data Disk" id = "portadrive_super" build_type = IMPRINTER - materials = list(MAT_GLASS = 3200) + materials = list(/datum/material/glass = 3200) build_path = /obj/item/computer_hardware/hard_drive/portable/super category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -117,7 +117,7 @@ name = "ID Card Slot" id = "cardslot" build_type = PROTOLATHE - materials = list(MAT_METAL = 600) + materials = list(/datum/material/iron = 600) build_path = /obj/item/computer_hardware/card_slot category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -127,7 +127,7 @@ name = "Intellicard Slot" id = "aislot" build_type = PROTOLATHE - materials = list(MAT_METAL = 600) + materials = list(/datum/material/iron = 600) build_path = /obj/item/computer_hardware/ai_slot category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -137,7 +137,7 @@ name = "Miniprinter" id = "miniprinter" build_type = PROTOLATHE - materials = list(MAT_METAL = 600) + materials = list(/datum/material/iron = 600) build_path = /obj/item/computer_hardware/printer/mini category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -147,7 +147,7 @@ name = "Area Power Connector" id = "APClink" build_type = PROTOLATHE - materials = list(MAT_METAL = 2000) + materials = list(/datum/material/iron = 2000) build_path = /obj/item/computer_hardware/recharger/APC category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -157,7 +157,7 @@ name = "Power Cell Controller" id = "bat_control" build_type = PROTOLATHE - materials = list(MAT_METAL = 400) + materials = list(/datum/material/iron = 400) build_path = /obj/item/computer_hardware/battery category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -166,7 +166,7 @@ name = "Battery Module" id = "bat_normal" build_type = PROTOLATHE - materials = list(MAT_METAL = 400) + materials = list(/datum/material/iron = 400) build_path = /obj/item/stock_parts/cell/computer category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -175,7 +175,7 @@ name = "Advanced Battery Module" id = "bat_advanced" build_type = PROTOLATHE - materials = list(MAT_METAL = 800) + materials = list(/datum/material/iron = 800) build_path = /obj/item/stock_parts/cell/computer/advanced category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -184,7 +184,7 @@ name = "Super Battery Module" id = "bat_super" build_type = PROTOLATHE - materials = list(MAT_METAL = 1600) + materials = list(/datum/material/iron = 1600) build_path = /obj/item/stock_parts/cell/computer/super category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -193,7 +193,7 @@ name = "Nano Battery Module" id = "bat_nano" build_type = PROTOLATHE - materials = list(MAT_METAL = 200) + materials = list(/datum/material/iron = 200) build_path = /obj/item/stock_parts/cell/computer/nano category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -202,7 +202,7 @@ name = "Micro Battery Module" id = "bat_micro" build_type = PROTOLATHE - materials = list(MAT_METAL = 400) + materials = list(/datum/material/iron = 400) build_path = /obj/item/stock_parts/cell/computer/micro category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -212,7 +212,7 @@ name = "Processor Board" id = "cpu_normal" build_type = IMPRINTER - materials = list(MAT_GLASS = 1600) + materials = list(/datum/material/glass = 1600) build_path = /obj/item/computer_hardware/processor_unit category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -221,7 +221,7 @@ name = "Microprocessor" id = "cpu_small" build_type = IMPRINTER - materials = list(MAT_GLASS = 800) + materials = list(/datum/material/glass = 800) build_path = /obj/item/computer_hardware/processor_unit/small category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -230,7 +230,7 @@ name = "Photonic Processor Board" id = "pcpu_normal" build_type = IMPRINTER - materials = list(MAT_GLASS= 6400, MAT_GOLD = 2000) + materials = list(/datum/material/glass= 6400, /datum/material/gold = 2000) build_path = /obj/item/computer_hardware/processor_unit/photonic category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -239,7 +239,7 @@ name = "Photonic Microprocessor" id = "pcpu_small" build_type = IMPRINTER - materials = list(MAT_GLASS = 3200, MAT_GOLD = 1000) + materials = list(/datum/material/glass = 3200, /datum/material/gold = 1000) build_path = /obj/item/computer_hardware/processor_unit/photonic/small category = list("Computer Parts") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING diff --git a/code/modules/research/designs/electronics_designs.dm b/code/modules/research/designs/electronics_designs.dm index 82fd71d895..57d0b78547 100644 --- a/code/modules/research/designs/electronics_designs.dm +++ b/code/modules/research/designs/electronics_designs.dm @@ -8,7 +8,7 @@ desc = "Allows for the construction of an intellicard." id = "intellicard" build_type = PROTOLATHE - materials = list(MAT_GLASS = 1000, MAT_GOLD = 200) + materials = list(/datum/material/glass = 1000, /datum/material/gold = 200) build_path = /obj/item/aicard category = list("Electronics") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -18,7 +18,7 @@ desc = "Allows for the construction of a pAI Card." id = "paicard" build_type = PROTOLATHE - materials = list(MAT_GLASS = 500, MAT_METAL = 500) + materials = list(/datum/material/glass = 500, /datum/material/iron = 500) build_path = /obj/item/paicard category = list("Electronics") departmental_flags = DEPARTMENTAL_FLAG_ALL @@ -28,7 +28,7 @@ desc = "A software package that will allow an artificial intelligence to 'hear' from its cameras via lip reading." id = "ai_cam_upgrade" build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 5000, MAT_GOLD = 15000, MAT_SILVER = 15000, MAT_DIAMOND = 20000, MAT_PLASMA = 10000) + materials = list(/datum/material/iron = 5000, /datum/material/glass = 5000, /datum/material/gold = 15000, /datum/material/silver = 15000, /datum/material/diamond = 20000, /datum/material/plasma = 10000) build_path = /obj/item/surveillance_upgrade category = list("Electronics") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -41,7 +41,7 @@ desc = "Allows for the construction of a nanite remote." id = "nanite_remote" build_type = PROTOLATHE - materials = list(MAT_GLASS = 500, MAT_METAL = 500) + materials = list(/datum/material/glass = 500, /datum/material/iron = 500) build_path = /obj/item/nanite_remote category = list("Electronics") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -51,7 +51,7 @@ desc = "Allows for the construction of a nanite communication remote." id = "nanite_comm_remote" build_type = PROTOLATHE - materials = list(MAT_GLASS = 500, MAT_METAL = 500) + materials = list(/datum/material/glass = 500, /datum/material/iron = 500) build_path = /obj/item/nanite_remote/comm category = list("Electronics") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -61,7 +61,7 @@ desc = "Allows for the construction of a nanite scanner." id = "nanite_scanner" build_type = PROTOLATHE - materials = list(MAT_GLASS = 500, MAT_METAL = 500) + materials = list(/datum/material/glass = 500, /datum/material/iron = 500) build_path = /obj/item/nanite_scanner category = list("Electronics") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -74,7 +74,7 @@ desc = "Produce additional disks for storing device designs." id = "design_disk" build_type = PROTOLATHE | AUTOLATHE - materials = list(MAT_METAL = 300, MAT_GLASS = 100) + materials = list(/datum/material/iron = 300, /datum/material/glass = 100) build_path = /obj/item/disk/design_disk category = list("Electronics") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -84,7 +84,7 @@ desc = "Produce additional disks for storing device designs." id = "design_disk_adv" build_type = PROTOLATHE - materials = list(MAT_METAL = 300, MAT_GLASS = 100, MAT_SILVER=50) + materials = list(/datum/material/iron = 300, /datum/material/glass = 100, /datum/material/silver=50) build_path = /obj/item/disk/design_disk/adv category = list("Electronics") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -94,7 +94,7 @@ desc = "Produce additional disks for storing technology data." id = "tech_disk" build_type = PROTOLATHE | AUTOLATHE - materials = list(MAT_METAL = 300, MAT_GLASS = 100) + materials = list(/datum/material/iron = 300, /datum/material/glass = 100) build_path = /obj/item/disk/tech_disk category = list("Electronics") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -104,7 +104,7 @@ desc = "Stores nanite programs." id = "nanite_disk" build_type = PROTOLATHE - materials = list(MAT_METAL = 300, MAT_GLASS = 100) + materials = list(/datum/material/iron = 300, /datum/material/glass = 100) build_path = /obj/item/disk/nanite_program category = list("Electronics") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -114,7 +114,7 @@ desc = "This machine provides all necessary things for circuitry." id = "icprinter" build_type = PROTOLATHE - materials = list(MAT_GLASS = 5000, MAT_METAL = 10000) + materials = list(/datum/material/glass = 5000, /datum/material/iron = 10000) build_path = /obj/item/integrated_circuit_printer category = list("Electronics") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -124,7 +124,7 @@ desc = "This disk allows for integrated circuit printers to print advanced circuitry designs." id = "icupgadv" build_type = PROTOLATHE - materials = list(MAT_GLASS = 10000, MAT_METAL = 10000) + materials = list(/datum/material/glass = 10000, /datum/material/iron = 10000) build_path = /obj/item/disk/integrated_circuit/upgrade/advanced category = list("Electronics") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -134,7 +134,7 @@ desc = "This disk allows for integrated circuit printers to clone designs instantaneously." id = "icupgclo" build_type = PROTOLATHE - materials = list(MAT_GLASS = 10000, MAT_METAL = 10000) + materials = list(/datum/material/glass = 10000, /datum/material/iron = 10000) build_path = /obj/item/disk/integrated_circuit/upgrade/clone category = list("Electronics") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -145,7 +145,7 @@ desc = "A shell of a maintenance drone, an expendable robot built to perform station repairs." id = "drone_shell" build_type = MECHFAB | PROTOLATHE - materials = list(MAT_METAL = 800, MAT_GLASS = 350) + materials = list(/datum/material/iron = 800, /datum/material/glass = 350) construction_time = 150 build_path = /obj/item/drone_shell category = list("Misc") @@ -155,7 +155,7 @@ name = "owo" desc = "someone's bussin" build_type = PROTOLATHE - materials = list(MAT_METAL = 300, MAT_GLASS = 100) + materials = list(/datum/material/iron = 300, /datum/material/glass = 100) category = list("Electronics") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE diff --git a/code/modules/research/designs/equipment_designs.dm b/code/modules/research/designs/equipment_designs.dm index 9f954adb33..de97747928 100644 --- a/code/modules/research/designs/equipment_designs.dm +++ b/code/modules/research/designs/equipment_designs.dm @@ -5,7 +5,7 @@ id = "flightsuit" build_type = PROTOLATHE build_path = /obj/item/clothing/suit/space/hardsuit/flightsuit - materials = list(MAT_METAL=16000, MAT_GLASS = 8000, MAT_DIAMOND = 200, MAT_GOLD = 3000, MAT_SILVER = 3000, MAT_TITANIUM = 16000) //This expensive enough for you? + materials = list(/datum/material/iron=16000, /datum/material/glass = 8000, /datum/material/diamond = 200, /datum/material/gold = 3000, /datum/material/silver = 3000, /datum/material/titanium = 16000) //This expensive enough for you? construction_time = 250 category = list("Misc") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -16,7 +16,7 @@ id = "flightpack" build_type = PROTOLATHE build_path = /obj/item/flightpack - materials = list(MAT_METAL=16000, MAT_GLASS = 8000, MAT_DIAMOND = 4000, MAT_GOLD = 12000, MAT_SILVER = 12000, MAT_URANIUM = 20000, MAT_PLASMA = 16000, MAT_TITANIUM = 16000) //This expensive enough for you? + materials = list(/datum/material/iron=16000, /datum/material/glass = 8000, /datum/material/diamond = 4000, /datum/material/gold = 12000, /datum/material/silver = 12000, /datum/material/uranium = 20000, /datum/material/plasma = 16000, /datum/material/titanium = 16000) //This expensive enough for you? construction_time = 250 category = list("Misc") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -27,7 +27,7 @@ id = "flightshoes" build_type = PROTOLATHE build_path = /obj/item/clothing/shoes/flightshoes - materials = list(MAT_METAL = 5000, MAT_GLASS = 5000, MAT_GOLD = 1500, MAT_SILVER = 1500, MAT_PLASMA = 2000, MAT_TITANIUM = 2000) + materials = list(/datum/material/iron = 5000, /datum/material/glass = 5000, /datum/material/gold = 1500, /datum/material/silver = 1500, /datum/material/plasma = 2000, /datum/material/titanium = 2000) construction_time = 100 category = list("Misc") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING */ @@ -38,7 +38,7 @@ id = "chardsuit" build_type = PROTOLATHE build_path = /obj/item/clothing/suit/space/hardsuit/engine - materials = list(MAT_METAL=16000, MAT_GLASS = 8000, MAT_DIAMOND = 200, MAT_GOLD = 3000, MAT_SILVER = 3000, MAT_TITANIUM = 16000) + materials = list(/datum/material/iron=16000, /datum/material/glass = 8000, /datum/material/diamond = 200, /datum/material/gold = 3000, /datum/material/silver = 3000, /datum/material/titanium = 16000) construction_time = 100 category = list("Misc") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -49,7 +49,7 @@ id = "hardsuitjpack" build_type = PROTOLATHE build_path = /obj/item/tank/jetpack/suit - materials = list(MAT_METAL=16000, MAT_GLASS = 8000, MAT_DIAMOND = 2000, MAT_GOLD = 6000, MAT_SILVER = 6000, MAT_URANIUM = 10000, MAT_PLASMA = 8000, MAT_TITANIUM = 16000) + materials = list(/datum/material/iron=16000, /datum/material/glass = 8000, /datum/material/diamond = 2000, /datum/material/gold = 6000, /datum/material/silver = 6000, /datum/material/uranium = 10000, /datum/material/plasma = 8000, /datum/material/titanium = 16000) construction_time = 100 category = list("Misc") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING \ No newline at end of file diff --git a/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm b/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm index 6ccbf32615..c5f6b01e57 100644 --- a/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm +++ b/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm @@ -38,7 +38,7 @@ name = "Machine Design (Weapon Recharger Board)" desc = "The circuit board for a Weapon Recharger." id = "recharger" - materials = list(MAT_GLASS = 1000, MAT_GOLD = 2000) + materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000) build_path = /obj/item/circuitboard/machine/recharger category = list("Misc. Machinery") departmental_flags = DEPARTMENTAL_FLAG_ALL diff --git a/code/modules/research/designs/mecha_designs.dm b/code/modules/research/designs/mecha_designs.dm index 32272dc2bc..7d651a84d8 100644 --- a/code/modules/research/designs/mecha_designs.dm +++ b/code/modules/research/designs/mecha_designs.dm @@ -110,7 +110,7 @@ name = "\"Phazon\" Central Control module" desc = "Allows for the construction of a \"Phazon\" Central Control module." id = "phazon_main" - materials = list(MAT_GLASS = 1000, MAT_BLUESPACE = 100) + materials = list(/datum/material/glass = 1000, /datum/material/bluespace = 100) build_path = /obj/item/circuitboard/mecha/phazon/main category = list("Exosuit Modules") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -119,7 +119,7 @@ name = "\"Phazon\" Peripherals Control module" desc = "Allows for the construction of a \"Phazon\" Peripheral Control module." id = "phazon_peri" - materials = list(MAT_GLASS = 1000, MAT_BLUESPACE = 100) + materials = list(/datum/material/glass = 1000, /datum/material/bluespace = 100) build_path = /obj/item/circuitboard/mecha/phazon/peripherals category = list("Exosuit Modules") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -128,7 +128,7 @@ name = "\"Phazon\" Weapons & Targeting Control module" desc = "Allows for the construction of a \"Phazon\" Weapons & Targeting Control module." id = "phazon_targ" - materials = list(MAT_GLASS = 1000, MAT_BLUESPACE = 100) + materials = list(/datum/material/glass = 1000, /datum/material/bluespace = 100) build_path = /obj/item/circuitboard/mecha/phazon/targeting category = list("Exosuit Modules") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -143,7 +143,7 @@ id = "mech_scattershot" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot - materials = list(MAT_METAL=10000) + materials = list(/datum/material/iron=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -153,7 +153,7 @@ id = "mech_seedscatter" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/seedscatter - materials = list(MAT_METAL=10000, MAT_GLASS = 10000) + materials = list(/datum/material/iron=10000, /datum/material/glass = 10000) construction_time = 70 category = list("Exosuit Equipment") @@ -163,7 +163,7 @@ id = "mech_scattershot_ammo" build_type = PROTOLATHE | MECHFAB build_path = /obj/item/mecha_ammo/scattershot - materials = list(MAT_METAL=6000) + materials = list(/datum/material/iron=6000) construction_time = 20 category = list("Exosuit Ammunition", "Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -174,7 +174,7 @@ id = "mech_carbine" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/carbine - materials = list(MAT_METAL=10000) + materials = list(/datum/material/iron=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -184,7 +184,7 @@ id = "mech_carbine_ammo" build_type = PROTOLATHE | MECHFAB build_path = /obj/item/mecha_ammo/incendiary - materials = list(MAT_METAL=6000) + materials = list(/datum/material/iron=6000) construction_time = 20 category = list("Exosuit Ammunition", "Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -195,7 +195,7 @@ id = "mech_ion" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/ion - materials = list(MAT_METAL=20000,MAT_SILVER=6000,MAT_URANIUM=2000) + materials = list(/datum/material/iron=20000,/datum/material/silver=6000,/datum/material/uranium=2000) construction_time = 100 category = list("Exosuit Equipment") @@ -205,7 +205,7 @@ id = "mech_tesla" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/tesla - materials = list(MAT_METAL=20000,MAT_SILVER=8000) + materials = list(/datum/material/iron=20000,/datum/material/silver=8000) construction_time = 100 category = list("Exosuit Equipment") @@ -215,7 +215,7 @@ id = "mech_laser" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser - materials = list(MAT_METAL=10000) + materials = list(/datum/material/iron=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -225,7 +225,7 @@ id = "mech_laser_heavy" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy - materials = list(MAT_METAL=10000) + materials = list(/datum/material/iron=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -235,7 +235,7 @@ id = "mech_grenade_launcher" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang - materials = list(MAT_METAL=22000,MAT_GOLD=6000,MAT_SILVER=8000) + materials = list(/datum/material/iron=22000,/datum/material/gold=6000,/datum/material/silver=8000) construction_time = 100 category = list("Exosuit Equipment") @@ -245,7 +245,7 @@ id = "mech_grenade_launcher_ammo" build_type = PROTOLATHE | MECHFAB build_path = /obj/item/mecha_ammo/flashbang - materials = list(MAT_METAL=4000,MAT_GOLD=500,MAT_SILVER=500) + materials = list(/datum/material/iron=4000,/datum/material/gold=500,/datum/material/silver=500) construction_time = 20 category = list("Exosuit Ammunition", "Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -256,7 +256,7 @@ id = "mech_missile_rack" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/breaching - materials = list(MAT_METAL=22000,MAT_GOLD=6000,MAT_SILVER=8000) + materials = list(/datum/material/iron=22000,/datum/material/gold=6000,/datum/material/silver=8000) construction_time = 100 category = list("Exosuit Equipment") @@ -266,7 +266,7 @@ id = "mech_missile_rack_ammo" build_type = PROTOLATHE | MECHFAB build_path = /obj/item/mecha_ammo/missiles_br - materials = list(MAT_METAL=8000,MAT_GOLD=500,MAT_SILVER=500) + materials = list(/datum/material/iron=8000,/datum/material/gold=500,/datum/material/silver=500) construction_time = 20 category = list("Exosuit Ammunition", "Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -277,7 +277,7 @@ id = "clusterbang_launcher" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/clusterbang - materials = list(MAT_METAL=20000,MAT_GOLD=10000,MAT_URANIUM=10000) + materials = list(/datum/material/iron=20000,/datum/material/gold=10000,/datum/material/uranium=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -287,7 +287,7 @@ id = "clusterbang_launcher_ammo" build_type = PROTOLATHE | MECHFAB build_path = /obj/item/mecha_ammo/clusterbang - materials = list(MAT_METAL=6000,MAT_GOLD=1500,MAT_URANIUM=1500) + materials = list(/datum/material/iron=6000,/datum/material/gold=1500,/datum/material/uranium=1500) construction_time = 20 category = list("Exosuit Ammunition", "Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -298,7 +298,7 @@ id = "mech_wormhole_gen" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/wormhole_generator - materials = list(MAT_METAL=10000) + materials = list(/datum/material/iron=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -308,7 +308,7 @@ id = "mech_teleporter" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/teleporter - materials = list(MAT_METAL=10000,MAT_DIAMOND=10000) + materials = list(/datum/material/iron=10000,/datum/material/diamond=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -318,7 +318,7 @@ id = "mech_rcd" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/rcd - materials = list(MAT_METAL=30000,MAT_GOLD=20000,MAT_PLASMA=25000,MAT_SILVER=20000) + materials = list(/datum/material/iron=30000,/datum/material/gold=20000,/datum/material/plasma=25000,/datum/material/silver=20000) construction_time = 1200 category = list("Exosuit Equipment") @@ -328,7 +328,7 @@ id = "mech_gravcatapult" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/gravcatapult - materials = list(MAT_METAL=10000) + materials = list(/datum/material/iron=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -338,7 +338,7 @@ id = "mech_repair_droid" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/repair_droid - materials = list(MAT_METAL=10000,MAT_GLASS=5000,MAT_GOLD=1000,MAT_SILVER=2000) + materials = list(/datum/material/iron=10000,/datum/material/glass=5000,/datum/material/gold=1000,/datum/material/silver=2000) construction_time = 100 category = list("Exosuit Equipment") @@ -348,7 +348,7 @@ id = "mech_energy_relay" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay - materials = list(MAT_METAL=10000,MAT_GLASS=2000,MAT_GOLD=2000,MAT_SILVER=3000) + materials = list(/datum/material/iron=10000,/datum/material/glass=2000,/datum/material/gold=2000,/datum/material/silver=3000) construction_time = 100 category = list("Exosuit Equipment") @@ -358,7 +358,7 @@ id = "mech_ccw_armor" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster - materials = list(MAT_METAL=20000,MAT_SILVER=5000) + materials = list(/datum/material/iron=20000,/datum/material/silver=5000) construction_time = 100 category = list("Exosuit Equipment") @@ -368,7 +368,7 @@ id = "mech_proj_armor" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster - materials = list(MAT_METAL=20000,MAT_GOLD=5000) + materials = list(/datum/material/iron=20000,/datum/material/gold=5000) construction_time = 100 category = list("Exosuit Equipment") @@ -378,7 +378,7 @@ id = "mech_diamond_drill" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/drill/diamonddrill - materials = list(MAT_METAL=10000,MAT_DIAMOND=6500) + materials = list(/datum/material/iron=10000,/datum/material/diamond=6500) construction_time = 100 category = list("Exosuit Equipment") @@ -388,7 +388,7 @@ id = "mech_generator_nuclear" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/generator/nuclear - materials = list(MAT_METAL=10000,MAT_GLASS=1000,MAT_SILVER=500) + materials = list(/datum/material/iron=10000,/datum/material/glass=1000,/datum/material/silver=500) construction_time = 100 category = list("Exosuit Equipment") @@ -398,7 +398,7 @@ id = "mech_plasma_cutter" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma - materials = list(MAT_METAL = 8000, MAT_GLASS = 1000, MAT_PLASMA = 2000) + materials = list(/datum/material/iron = 8000, /datum/material/glass = 1000, /datum/material/plasma = 2000) construction_time = 100 category = list("Exosuit Equipment") @@ -408,7 +408,7 @@ id = "mech_taser" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser - materials = list(MAT_METAL=10000) + materials = list(/datum/material/iron=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -418,7 +418,7 @@ id = "mech_lmg" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg - materials = list(MAT_METAL=10000) + materials = list(/datum/material/iron=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -428,7 +428,7 @@ id = "mech_lmg_ammo" build_type = PROTOLATHE | MECHFAB build_path = /obj/item/mecha_ammo/lmg - materials = list(MAT_METAL=4000) + materials = list(/datum/material/iron=4000) construction_time = 20 category = list("Exosuit Ammunition", "Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -439,7 +439,7 @@ id = "mech_sleeper" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/medical/sleeper - materials = list(MAT_METAL=5000,MAT_GLASS=10000) + materials = list(/datum/material/iron=5000,/datum/material/glass=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -449,7 +449,7 @@ id = "mech_syringe_gun" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun - materials = list(MAT_METAL=3000,MAT_GLASS=2000) + materials = list(/datum/material/iron=3000,/datum/material/glass=2000) construction_time = 200 category = list("Exosuit Equipment") @@ -458,7 +458,7 @@ desc = "Equipment for medical exosuits. A mounted medical nanite projector which will treat patients with a focused beam." id = "mech_medi_beam" build_type = MECHFAB - materials = list(MAT_METAL = 15000, MAT_GLASS = 8000, MAT_PLASMA = 3000, MAT_GOLD = 8000, MAT_DIAMOND = 2000) + materials = list(/datum/material/iron = 15000, /datum/material/glass = 8000, /datum/material/plasma = 3000, /datum/material/gold = 8000, /datum/material/diamond = 2000) construction_time = 250 build_path = /obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam category = list("Exosuit Equipment") diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 5fab7705a8..a5ad3287fc 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -4,7 +4,7 @@ id = "borg_suit" build_type = MECHFAB build_path = /obj/item/robot_suit - materials = list(MAT_METAL=15000) + materials = list(/datum/material/iron=15000) construction_time = 500 category = list("Cyborg") @@ -13,7 +13,7 @@ id = "borg_chest" build_type = MECHFAB build_path = /obj/item/bodypart/chest/robot - materials = list(MAT_METAL=40000) + materials = list(/datum/material/iron=40000) construction_time = 350 category = list("Cyborg") @@ -22,7 +22,7 @@ id = "borg_head" build_type = MECHFAB build_path = /obj/item/bodypart/head/robot - materials = list(MAT_METAL=5000) + materials = list(/datum/material/iron=5000) construction_time = 350 category = list("Cyborg") @@ -31,7 +31,7 @@ id = "borg_l_arm" build_type = MECHFAB build_path = /obj/item/bodypart/l_arm/robot - materials = list(MAT_METAL=10000) + materials = list(/datum/material/iron=10000) construction_time = 200 category = list("Cyborg") @@ -40,7 +40,7 @@ id = "borg_r_arm" build_type = MECHFAB build_path = /obj/item/bodypart/r_arm/robot - materials = list(MAT_METAL=10000) + materials = list(/datum/material/iron=10000) construction_time = 200 category = list("Cyborg") @@ -49,7 +49,7 @@ id = "borg_l_leg" build_type = MECHFAB build_path = /obj/item/bodypart/l_leg/robot - materials = list(MAT_METAL=10000) + materials = list(/datum/material/iron=10000) construction_time = 200 category = list("Cyborg") @@ -58,7 +58,7 @@ id = "borg_r_leg" build_type = MECHFAB build_path = /obj/item/bodypart/r_leg/robot - materials = list(MAT_METAL=10000) + materials = list(/datum/material/iron=10000) construction_time = 200 category = list("Cyborg") @@ -68,7 +68,7 @@ id = "ripley_chassis" build_type = MECHFAB build_path = /obj/item/mecha_parts/chassis/ripley - materials = list(MAT_METAL=20000) + materials = list(/datum/material/iron=20000) construction_time = 100 category = list("Ripley") @@ -78,7 +78,7 @@ id = "firefighter_chassis" build_type = MECHFAB build_path = /obj/item/mecha_parts/chassis/firefighter - materials = list(MAT_METAL=20000) + materials = list(/datum/material/iron=20000) construction_time = 100 category = list("Firefighter") @@ -87,7 +87,7 @@ id = "ripley_torso" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/ripley_torso - materials = list(MAT_METAL=20000, MAT_GLASS=7500) + materials = list(/datum/material/iron=20000, /datum/material/glass=7500) construction_time = 200 category = list("Ripley","Firefighter") @@ -96,7 +96,7 @@ id = "ripley_left_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/ripley_left_arm - materials = list(MAT_METAL=15000) + materials = list(/datum/material/iron=15000) construction_time = 150 category = list("Ripley","Firefighter") @@ -105,7 +105,7 @@ id = "ripley_right_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/ripley_right_arm - materials = list(MAT_METAL=15000) + materials = list(/datum/material/iron=15000) construction_time = 150 category = list("Ripley","Firefighter") @@ -114,7 +114,7 @@ id = "ripley_left_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/ripley_left_leg - materials = list(MAT_METAL=15000) + materials = list(/datum/material/iron=15000) construction_time = 150 category = list("Ripley","Firefighter") @@ -123,7 +123,7 @@ id = "ripley_right_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/ripley_right_leg - materials = list(MAT_METAL=15000) + materials = list(/datum/material/iron=15000) construction_time = 150 category = list("Ripley","Firefighter") @@ -133,7 +133,7 @@ id = "odysseus_chassis" build_type = MECHFAB build_path = /obj/item/mecha_parts/chassis/odysseus - materials = list(MAT_METAL=20000) + materials = list(/datum/material/iron=20000) construction_time = 100 category = list("Odysseus") @@ -142,7 +142,7 @@ id = "odysseus_torso" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/odysseus_torso - materials = list(MAT_METAL=12000) + materials = list(/datum/material/iron=12000) construction_time = 180 category = list("Odysseus") @@ -151,7 +151,7 @@ id = "odysseus_head" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/odysseus_head - materials = list(MAT_METAL=6000,MAT_GLASS=10000) + materials = list(/datum/material/iron=6000,/datum/material/glass=10000) construction_time = 100 category = list("Odysseus") @@ -160,7 +160,7 @@ id = "odysseus_left_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/odysseus_left_arm - materials = list(MAT_METAL=6000) + materials = list(/datum/material/iron=6000) construction_time = 120 category = list("Odysseus") @@ -169,7 +169,7 @@ id = "odysseus_right_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/odysseus_right_arm - materials = list(MAT_METAL=6000) + materials = list(/datum/material/iron=6000) construction_time = 120 category = list("Odysseus") @@ -178,7 +178,7 @@ id = "odysseus_left_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/odysseus_left_leg - materials = list(MAT_METAL=7000) + materials = list(/datum/material/iron=7000) construction_time = 130 category = list("Odysseus") @@ -187,7 +187,7 @@ id = "odysseus_right_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/odysseus_right_leg - materials = list(MAT_METAL=7000) + materials = list(/datum/material/iron=7000) construction_time = 130 category = list("Odysseus") @@ -197,7 +197,7 @@ id = "gygax_chassis" build_type = MECHFAB build_path = /obj/item/mecha_parts/chassis/gygax - materials = list(MAT_METAL=20000) + materials = list(/datum/material/iron=20000) construction_time = 100 category = list("Gygax") @@ -206,7 +206,7 @@ id = "gygax_torso" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/gygax_torso - materials = list(MAT_METAL=20000,MAT_GLASS=10000,MAT_DIAMOND=2000) + materials = list(/datum/material/iron=20000,/datum/material/glass=10000,/datum/material/diamond=2000) construction_time = 300 category = list("Gygax") @@ -215,7 +215,7 @@ id = "gygax_head" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/gygax_head - materials = list(MAT_METAL=10000,MAT_GLASS=5000, MAT_DIAMOND=2000) + materials = list(/datum/material/iron=10000,/datum/material/glass=5000, /datum/material/diamond=2000) construction_time = 200 category = list("Gygax") @@ -224,7 +224,7 @@ id = "gygax_left_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/gygax_left_arm - materials = list(MAT_METAL=15000, MAT_DIAMOND=1000) + materials = list(/datum/material/iron=15000, /datum/material/diamond=1000) construction_time = 200 category = list("Gygax") @@ -233,7 +233,7 @@ id = "gygax_right_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/gygax_right_arm - materials = list(MAT_METAL=15000, MAT_DIAMOND=1000) + materials = list(/datum/material/iron=15000, /datum/material/diamond=1000) construction_time = 200 category = list("Gygax") @@ -242,7 +242,7 @@ id = "gygax_left_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/gygax_left_leg - materials = list(MAT_METAL=15000, MAT_DIAMOND=2000) + materials = list(/datum/material/iron=15000, /datum/material/diamond=2000) construction_time = 200 category = list("Gygax") @@ -251,7 +251,7 @@ id = "gygax_right_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/gygax_right_leg - materials = list(MAT_METAL=15000, MAT_DIAMOND=2000) + materials = list(/datum/material/iron=15000, /datum/material/diamond=2000) construction_time = 200 category = list("Gygax") @@ -260,7 +260,7 @@ id = "gygax_armor" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/gygax_armor - materials = list(MAT_METAL=15000,MAT_DIAMOND=10000,MAT_TITANIUM=10000) + materials = list(/datum/material/iron=15000,/datum/material/diamond=10000,/datum/material/titanium=10000) construction_time = 600 category = list("Gygax") @@ -270,7 +270,7 @@ id = "durand_chassis" build_type = MECHFAB build_path = /obj/item/mecha_parts/chassis/durand - materials = list(MAT_METAL=25000) + materials = list(/datum/material/iron=25000) construction_time = 100 category = list("Durand") @@ -279,7 +279,7 @@ id = "durand_torso" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/durand_torso - materials = list(MAT_METAL=25000,MAT_GLASS=10000,MAT_SILVER=10000) + materials = list(/datum/material/iron=25000,/datum/material/glass=10000,/datum/material/silver=10000) construction_time = 300 category = list("Durand") @@ -288,7 +288,7 @@ id = "durand_head" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/durand_head - materials = list(MAT_METAL=10000,MAT_GLASS=15000,MAT_SILVER=2000) + materials = list(/datum/material/iron=10000,/datum/material/glass=15000,/datum/material/silver=2000) construction_time = 200 category = list("Durand") @@ -297,7 +297,7 @@ id = "durand_left_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/durand_left_arm - materials = list(MAT_METAL=10000,MAT_SILVER=4000) + materials = list(/datum/material/iron=10000,/datum/material/silver=4000) construction_time = 200 category = list("Durand") @@ -306,7 +306,7 @@ id = "durand_right_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/durand_right_arm - materials = list(MAT_METAL=10000,MAT_SILVER=4000) + materials = list(/datum/material/iron=10000,/datum/material/silver=4000) construction_time = 200 category = list("Durand") @@ -315,7 +315,7 @@ id = "durand_left_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/durand_left_leg - materials = list(MAT_METAL=15000,MAT_SILVER=4000) + materials = list(/datum/material/iron=15000,/datum/material/silver=4000) construction_time = 200 category = list("Durand") @@ -324,7 +324,7 @@ id = "durand_right_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/durand_right_leg - materials = list(MAT_METAL=15000,MAT_SILVER=4000) + materials = list(/datum/material/iron=15000,/datum/material/silver=4000) construction_time = 200 category = list("Durand") @@ -333,7 +333,7 @@ id = "durand_armor" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/durand_armor - materials = list(MAT_METAL=30000,MAT_URANIUM=25000,MAT_TITANIUM=20000) + materials = list(/datum/material/iron=30000,/datum/material/uranium=25000,/datum/material/titanium=20000) construction_time = 600 category = list("Durand") @@ -343,7 +343,7 @@ id = "honk_chassis" build_type = MECHFAB build_path = /obj/item/mecha_parts/chassis/honker - materials = list(MAT_METAL=20000) + materials = list(/datum/material/iron=20000) construction_time = 100 category = list("H.O.N.K") @@ -352,7 +352,7 @@ id = "honk_torso" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/honker_torso - materials = list(MAT_METAL=20000,MAT_GLASS=10000,MAT_BANANIUM=10000) + materials = list(/datum/material/iron=20000,/datum/material/glass=10000,/datum/material/bananium=10000) construction_time = 300 category = list("H.O.N.K") @@ -361,7 +361,7 @@ id = "honk_head" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/honker_head - materials = list(MAT_METAL=10000,MAT_GLASS=5000,MAT_BANANIUM=5000) + materials = list(/datum/material/iron=10000,/datum/material/glass=5000,/datum/material/bananium=5000) construction_time = 200 category = list("H.O.N.K") @@ -370,7 +370,7 @@ id = "honk_left_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/honker_left_arm - materials = list(MAT_METAL=15000,MAT_BANANIUM=5000) + materials = list(/datum/material/iron=15000,/datum/material/bananium=5000) construction_time = 200 category = list("H.O.N.K") @@ -379,7 +379,7 @@ id = "honk_right_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/honker_right_arm - materials = list(MAT_METAL=15000,MAT_BANANIUM=5000) + materials = list(/datum/material/iron=15000,/datum/material/bananium=5000) construction_time = 200 category = list("H.O.N.K") @@ -388,7 +388,7 @@ id = "honk_left_leg" build_type = MECHFAB build_path =/obj/item/mecha_parts/part/honker_left_leg - materials = list(MAT_METAL=20000,MAT_BANANIUM=5000) + materials = list(/datum/material/iron=20000,/datum/material/bananium=5000) construction_time = 200 category = list("H.O.N.K") @@ -397,7 +397,7 @@ id = "honk_right_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/honker_right_leg - materials = list(MAT_METAL=20000,MAT_BANANIUM=5000) + materials = list(/datum/material/iron=20000,/datum/material/bananium=5000) construction_time = 200 category = list("H.O.N.K") @@ -408,7 +408,7 @@ id = "phazon_chassis" build_type = MECHFAB build_path = /obj/item/mecha_parts/chassis/phazon - materials = list(MAT_METAL=20000) + materials = list(/datum/material/iron=20000) construction_time = 100 category = list("Phazon") @@ -417,7 +417,7 @@ id = "phazon_torso" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/phazon_torso - materials = list(MAT_METAL=35000,MAT_GLASS=10000,MAT_PLASMA=20000) + materials = list(/datum/material/iron=35000,/datum/material/glass=10000,/datum/material/plasma=20000) construction_time = 300 category = list("Phazon") @@ -426,7 +426,7 @@ id = "phazon_head" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/phazon_head - materials = list(MAT_METAL=15000,MAT_GLASS=5000,MAT_PLASMA=10000) + materials = list(/datum/material/iron=15000,/datum/material/glass=5000,/datum/material/plasma=10000) construction_time = 200 category = list("Phazon") @@ -435,7 +435,7 @@ id = "phazon_left_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/phazon_left_arm - materials = list(MAT_METAL=20000,MAT_PLASMA=10000) + materials = list(/datum/material/iron=20000,/datum/material/plasma=10000) construction_time = 200 category = list("Phazon") @@ -444,7 +444,7 @@ id = "phazon_right_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/phazon_right_arm - materials = list(MAT_METAL=20000,MAT_PLASMA=10000) + materials = list(/datum/material/iron=20000,/datum/material/plasma=10000) construction_time = 200 category = list("Phazon") @@ -453,7 +453,7 @@ id = "phazon_left_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/phazon_left_leg - materials = list(MAT_METAL=20000,MAT_PLASMA=10000) + materials = list(/datum/material/iron=20000,/datum/material/plasma=10000) construction_time = 200 category = list("Phazon") @@ -462,7 +462,7 @@ id = "phazon_right_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/phazon_right_leg - materials = list(MAT_METAL=20000,MAT_PLASMA=10000) + materials = list(/datum/material/iron=20000,/datum/material/plasma=10000) construction_time = 200 category = list("Phazon") @@ -471,7 +471,7 @@ id = "phazon_armor" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/phazon_armor - materials = list(MAT_METAL=25000,MAT_PLASMA=20000,MAT_TITANIUM=20000) + materials = list(/datum/material/iron=25000,/datum/material/plasma=20000,/datum/material/titanium=20000) construction_time = 300 category = list("Phazon") @@ -481,7 +481,7 @@ id = "mech_hydraulic_clamp" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/hydraulic_clamp - materials = list(MAT_METAL=10000) + materials = list(/datum/material/iron=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -490,7 +490,7 @@ id = "mech_drill" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/drill - materials = list(MAT_METAL=10000) + materials = list(/datum/material/iron=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -499,7 +499,7 @@ id = "mech_mscanner" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/mining_scanner - materials = list(MAT_METAL=5000,MAT_GLASS=2500) + materials = list(/datum/material/iron=5000,/datum/material/glass=2500) construction_time = 50 category = list("Exosuit Equipment") @@ -508,7 +508,7 @@ id = "mech_extinguisher" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/extinguisher - materials = list(MAT_METAL=10000) + materials = list(/datum/material/iron=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -517,7 +517,7 @@ id = "mech_cable_layer" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/cable_layer - materials = list(MAT_METAL=10000) + materials = list(/datum/material/iron=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -526,7 +526,7 @@ id = "mech_generator" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/generator - materials = list(MAT_METAL=10000,MAT_GLASS=1000,MAT_SILVER=2000,MAT_PLASMA=5000) + materials = list(/datum/material/iron=10000,/datum/material/glass=1000,/datum/material/silver=2000,/datum/material/plasma=5000) construction_time = 100 category = list("Exosuit Equipment") @@ -535,7 +535,7 @@ id = "mech_mousetrap_mortar" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/mousetrap_mortar - materials = list(MAT_METAL=20000,MAT_BANANIUM=5000) + materials = list(/datum/material/iron=20000,/datum/material/bananium=5000) construction_time = 300 category = list("Exosuit Equipment") @@ -544,7 +544,7 @@ id = "mech_banana_mortar" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/banana_mortar - materials = list(MAT_METAL=20000,MAT_BANANIUM=5000) + materials = list(/datum/material/iron=20000,/datum/material/bananium=5000) construction_time = 300 category = list("Exosuit Equipment") @@ -553,7 +553,7 @@ id = "mech_honker" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/honker - materials = list(MAT_METAL=20000,MAT_BANANIUM=10000) + materials = list(/datum/material/iron=20000,/datum/material/bananium=10000) construction_time = 500 category = list("Exosuit Equipment") @@ -562,7 +562,7 @@ id = "mech_punching_face" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/punching_glove - materials = list(MAT_METAL=20000,MAT_BANANIUM=7500) + materials = list(/datum/material/iron=20000,/datum/material/bananium=7500) construction_time = 400 category = list("Exosuit Equipment") @@ -575,7 +575,7 @@ id = "borg_upgrade_rename" build_type = MECHFAB build_path = /obj/item/borg/upgrade/rename - materials = list(MAT_METAL=35000) + materials = list(/datum/material/iron=35000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -584,7 +584,7 @@ id = "borg_upgrade_restart" build_type = MECHFAB build_path = /obj/item/borg/upgrade/restart - materials = list(MAT_METAL=60000 , MAT_GLASS=5000) + materials = list(/datum/material/iron=60000 , /datum/material/glass=5000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -593,7 +593,7 @@ id = "borg_upgrade_vtec" build_type = MECHFAB build_path = /obj/item/borg/upgrade/vtec - materials = list(MAT_METAL=80000 , MAT_GLASS=6000 , MAT_URANIUM= 5000) + materials = list(/datum/material/iron=80000 , /datum/material/glass=6000 , /datum/material/uranium= 5000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -602,7 +602,7 @@ id = "borg_upgrade_thrusters" build_type = MECHFAB build_path = /obj/item/borg/upgrade/thrusters - materials = list(MAT_METAL=10000, MAT_PLASMA=5000, MAT_URANIUM = 6000) + materials = list(/datum/material/iron=10000, /datum/material/plasma=5000, /datum/material/uranium = 6000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -611,7 +611,7 @@ id = "borg_upgrade_disablercooler" build_type = MECHFAB build_path = /obj/item/borg/upgrade/disablercooler - materials = list(MAT_METAL=80000 , MAT_GLASS=6000 , MAT_GOLD= 2000, MAT_DIAMOND = 500) + materials = list(/datum/material/iron=80000 , /datum/material/glass=6000 , /datum/material/gold= 2000, /datum/material/diamond = 500) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -620,7 +620,7 @@ id = "borg_upgrade_diamonddrill" build_type = MECHFAB build_path = /obj/item/borg/upgrade/ddrill - materials = list(MAT_METAL=10000, MAT_DIAMOND=2000) + materials = list(/datum/material/iron=10000, /datum/material/diamond=2000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -629,7 +629,7 @@ id = "borg_upgrade_advcutter" build_type = MECHFAB build_path = /obj/item/borg/upgrade/advcutter - materials = list(MAT_METAL=8000, MAT_PLASMA=2000, MAT_GOLD= 2000) + materials = list(/datum/material/iron = 8000, /datum/material/plasma = 2000, /datum/material/gold = 2000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -638,7 +638,7 @@ id = "borg_upgrade_premiumka" build_type = MECHFAB build_path = /obj/item/borg/upgrade/premiumka - materials = list(MAT_METAL=8000, MAT_GLASS=4000, MAT_TITANIUM=2000) + materials = list(/datum/material/iron=8000, /datum/material/glass=4000, /datum/material/titanium=2000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -647,7 +647,7 @@ id = "borg_upgrade_lavaproof" build_type = MECHFAB build_path = /obj/item/borg/upgrade/lavaproof - materials = list(MAT_METAL = 10000, MAT_PLASMA = 4000, MAT_TITANIUM = 5000) + materials = list(/datum/material/iron = 10000, /datum/material/plasma = 4000, /datum/material/titanium = 5000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -656,7 +656,7 @@ id = "borg_syndicate_module" build_type = MECHFAB build_path = /obj/item/borg/upgrade/syndicate - materials = list(MAT_METAL=10000,MAT_GLASS=15000,MAT_DIAMOND = 10000) + materials = list(/datum/material/iron=10000,/datum/material/glass=15000,/datum/material/diamond = 10000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -665,7 +665,7 @@ id = "borg_transform_clown" build_type = MECHFAB build_path = /obj/item/borg/upgrade/transform/clown - materials = list(MAT_METAL=10000, MAT_GLASS=15000, MAT_BANANIUM = 1000) + materials = list(/datum/material/iron=10000, /datum/material/glass=15000, /datum/material/bananium = 1000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -674,7 +674,7 @@ id = "borg_upgrade_selfrepair" build_type = MECHFAB build_path = /obj/item/borg/upgrade/selfrepair - materials = list(MAT_METAL=15000, MAT_GLASS=15000) + materials = list(/datum/material/iron=15000, /datum/material/glass=15000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -683,7 +683,7 @@ id = "borg_upgrade_expandedsynthesiser" build_type = MECHFAB build_path = /obj/item/borg/upgrade/hypospray/expanded - materials = list(MAT_METAL=15000, MAT_GLASS=15000, MAT_PLASMA=5000) + materials = list(/datum/material/iron=15000, /datum/material/glass=15000, /datum/material/plasma=5000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -692,7 +692,7 @@ id = "borg_upgrade_highstrengthsynthesiser" build_type = MECHFAB build_path = /obj/item/borg/upgrade/hypospray/high_strength - materials = list(MAT_METAL=15000, MAT_GLASS=15000, MAT_PLASMA=10000, MAT_URANIUM=5000) + materials = list(/datum/material/iron=15000, /datum/material/glass=15000, /datum/material/plasma=10000, /datum/material/uranium=5000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -701,7 +701,7 @@ id = "borg_upgrade_piercinghypospray" build_type = MECHFAB build_path = /obj/item/borg/upgrade/piercing_hypospray - materials = list(MAT_METAL=15000, MAT_GLASS=15000, MAT_TITANIUM=10000, MAT_DIAMOND=5000) + materials = list(/datum/material/iron=15000, /datum/material/glass=15000, /datum/material/titanium=10000, /datum/material/diamond=5000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -710,7 +710,7 @@ id = "borg_upgrade_surgicalprocessor" build_type = MECHFAB build_path = /obj/item/borg/upgrade/processor - materials = list(MAT_METAL=15000, MAT_GLASS=15000, MAT_SILVER=10000) + materials = list(/datum/material/iron=15000, /datum/material/glass=15000, /datum/material/silver=10000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -719,7 +719,7 @@ id = "borg_upgrade_trashofholding" build_type = MECHFAB build_path = /obj/item/borg/upgrade/tboh - materials = list(MAT_METAL=10000, MAT_GOLD=1500, MAT_URANIUM=250, MAT_PLASMA=1500) + materials = list(/datum/material/iron=10000, /datum/material/gold=1500, /datum/material/uranium=250, /datum/material/plasma=1500) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -728,7 +728,7 @@ id = "borg_upgrade_advancedmop" build_type = MECHFAB build_path = /obj/item/borg/upgrade/amop - materials = list(MAT_METAL=10000, MAT_GLASS=200, MAT_TITANIUM=1000) + materials = list(/datum/material/iron=10000, /datum/material/glass=200, /datum/material/titanium=1000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -737,7 +737,7 @@ id = "borg_upgrade_expand" build_type = MECHFAB build_path = /obj/item/borg/upgrade/expand - materials = list(MAT_METAL=200000, MAT_TITANIUM=5000) + materials = list(/datum/material/iron=200000, /datum/material/titanium=5000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -746,7 +746,7 @@ id = "borg_ai_control" build_type = MECHFAB build_path = /obj/item/borg/upgrade/ai - materials = list(MAT_METAL = 1200, MAT_GLASS = 1500, MAT_GOLD = 200) + materials = list(/datum/material/iron = 1200, /datum/material/glass = 1500, /datum/material/gold = 200) construction_time = 50 category = list("Misc") @@ -755,7 +755,7 @@ id = "borg_upgrade_rped" build_type = MECHFAB build_path = /obj/item/borg/upgrade/rped - materials = list(MAT_METAL = 10000, MAT_GLASS = 5000) + materials = list(/datum/material/iron = 10000, /datum/material/glass = 5000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -764,7 +764,7 @@ id = "borg_upgrade_pinpointer" build_type = MECHFAB build_path = /obj/item/borg/upgrade/pinpointer - materials = list(MAT_METAL = 1000, MAT_GLASS = 500) + materials = list(/datum/material/iron = 1000, /datum/material/glass = 500) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -773,7 +773,7 @@ id = "borg_upgrade_advhealth" build_type = MECHFAB build_path = /obj/item/borg/upgrade/advhealth - materials = list(MAT_METAL=7500, MAT_GLASS=7500, MAT_SILVER=1000, MAT_GOLD=1000, MAT_TITANIUM=2000) + materials = list(/datum/material/iron=7500, /datum/material/glass=7500, /datum/material/silver=1000, /datum/material/gold=1000, /datum/material/titanium=2000) construction_time = 100 category = list("Cyborg Upgrade Modules") @@ -783,7 +783,7 @@ id = "mecha_tracking" build_type = MECHFAB build_path =/obj/item/mecha_parts/mecha_tracking - materials = list(MAT_METAL=500) + materials = list(/datum/material/iron=500) construction_time = 50 category = list("Misc") @@ -792,7 +792,7 @@ id = "mecha_tracking_ai_control" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_tracking/ai_control - materials = list(MAT_METAL = 1000, MAT_GLASS = 500, MAT_SILVER = 200) + materials = list(/datum/material/iron = 1000, /datum/material/glass = 500, /datum/material/silver = 200) construction_time = 50 category = list("Misc") @@ -801,7 +801,7 @@ desc = "When a problem arises, SCIENCE is the solution." id = "sflash" build_type = MECHFAB - materials = list(MAT_METAL = 750, MAT_GLASS = 750) + materials = list(/datum/material/iron = 750, /datum/material/glass = 750) construction_time = 100 build_path = /obj/item/assembly/flash/handheld category = list("Misc") diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index bef25456ca..af80aa6671 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -7,7 +7,7 @@ desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity." id = "mmi" build_type = PROTOLATHE | MECHFAB - materials = list(MAT_METAL = 1000, MAT_GLASS = 500) + materials = list(/datum/material/iron = 1000, /datum/material/glass = 500) construction_time = 75 build_path = /obj/item/mmi category = list("Misc","Medical Designs") @@ -18,7 +18,7 @@ desc = "The latest in Artificial Intelligences." id = "mmi_posi" build_type = PROTOLATHE | MECHFAB - materials = list(MAT_METAL = 1700, MAT_GLASS = 1350, MAT_GOLD = 500) //Gold, because SWAG. + materials = list(/datum/material/iron = 1700, /datum/material/glass = 1350, /datum/material/gold = 500) //Gold, because SWAG. construction_time = 75 build_path = /obj/item/mmi/posibrain category = list("Misc", "Medical Designs") @@ -29,7 +29,7 @@ desc = "A bluespace beaker, powered by experimental bluespace technology and Element Cuban combined with the Compound Pete. Can hold up to 300 units." id = "bluespacebeaker" build_type = PROTOLATHE - materials = list(MAT_GLASS = 3000, MAT_PLASMA = 3000, MAT_DIAMOND = 250, MAT_BLUESPACE = 250) + materials = list(/datum/material/glass = 3000, /datum/material/plasma = 3000, /datum/material/diamond = 250, /datum/material/bluespace = 250) build_path = /obj/item/reagent_containers/glass/beaker/bluespace category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE @@ -39,7 +39,7 @@ desc = "A cryostasis beaker that allows for chemical storage without reactions. Can hold up to 50 units." id = "splitbeaker" build_type = PROTOLATHE - materials = list(MAT_METAL = 3000) + materials = list(/datum/material/iron = 3000) build_path = /obj/item/reagent_containers/glass/beaker/noreact category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -49,7 +49,7 @@ id = "xlarge_beaker" build_type = PROTOLATHE departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - materials = list(MAT_GLASS = 2500, MAT_PLASTIC = 3000) + materials = list(/datum/material/glass = 2500, /datum/material/plastic = 3000) build_path = /obj/item/reagent_containers/glass/beaker/plastic category = list("Medical Designs") @@ -58,7 +58,7 @@ id = "meta_beaker" build_type = PROTOLATHE departmental_flags = DEPARTMENTAL_FLAG_MEDICAL - materials = list(MAT_GLASS = 2500, MAT_PLASTIC = 3000, MAT_GOLD = 1000, MAT_TITANIUM = 1000) + materials = list(/datum/material/glass = 2500, /datum/material/plastic = 3000, /datum/material/gold = 1000, /datum/material/titanium = 1000) build_path = /obj/item/reagent_containers/glass/beaker/meta category = list("Medical Designs") @@ -67,7 +67,7 @@ desc = "An advanced syringe that can hold 60 units of chemicals" id = "bluespacesyringe" build_type = PROTOLATHE - materials = list(MAT_GLASS = 2000, MAT_PLASMA = 1000, MAT_DIAMOND = 1000, MAT_BLUESPACE = 500) + materials = list(/datum/material/glass = 2000, /datum/material/plasma = 1000, /datum/material/diamond = 1000, /datum/material/bluespace = 500) build_path = /obj/item/reagent_containers/syringe/bluespace category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE @@ -77,7 +77,7 @@ desc = "An advanced syringe that stops reagents inside from reacting. It can hold up to 20 units." id = "noreactsyringe" build_type = PROTOLATHE - materials = list(MAT_GLASS = 2000, MAT_GOLD = 1000) + materials = list(/datum/material/glass = 2000, /datum/material/gold = 1000) build_path = /obj/item/reagent_containers/syringe/noreact category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -87,7 +87,7 @@ desc = "A diamond-tipped syringe that pierces armor when launched at high velocity. It can hold up to 10 units." id = "piercesyringe" build_type = PROTOLATHE - materials = list(MAT_GLASS = 2000, MAT_DIAMOND = 1000) + materials = list(/datum/material/glass = 2000, /datum/material/diamond = 1000) build_path = /obj/item/reagent_containers/syringe/piercing category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -97,7 +97,7 @@ desc = "A non-harmful dart that can administer medication from a range. Once it hits a patient using it's smart nanofilter technology only medicines contained within the dart are administered to the patient. Additonally, due to capillary action, injection of chemicals past the overdose limit is prevented." id = "medicinalsmartdart" build_type = PROTOLATHE - materials = list(MAT_GLASS = 100, MAT_PLASTIC = 100, MAT_METAL = 100) + materials = list(/datum/material/glass = 100, /datum/material/plastic = 100, /datum/material/iron = 100) build_path = /obj/item/reagent_containers/syringe/dart category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -107,7 +107,7 @@ desc = "A non-harmful dart that can administer medication from a range. Once it hits a patient using it's smart nanofilter technology only medicines contained within the dart are administered to the patient. Additonally, due to capillary action, injection of chemicals past the overdose limit is prevented. Has an extended volume capacity thanks to bluespace foam." id = "bluespacesmartdart" build_type = PROTOLATHE - materials = list(MAT_GLASS = 250, MAT_PLASTIC = 250, MAT_METAL = 250, MAT_BLUESPACE = 250) + materials = list(/datum/material/glass = 250, /datum/material/plastic = 250, /datum/material/iron = 250, /datum/material/bluespace = 250) build_path = /obj/item/reagent_containers/syringe/dart/bluespace category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -117,7 +117,7 @@ desc = "A compressed air gun, designed to fit medicinal darts for application of medicine for those patients just out of reach." id = "smartdartgun" build_type = PROTOLATHE - materials = list(MAT_GLASS = 500, MAT_PLASTIC = 1000, MAT_METAL = 500) + materials = list(/datum/material/glass = 500, /datum/material/plastic = 1000, /datum/material/iron = 500) build_path = /obj/item/gun/syringe/dart category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -127,7 +127,7 @@ desc = "A bluespace body bag, powered by experimental bluespace technology. It can hold loads of bodies and the largest of creatures." id = "bluespacebodybag" build_type = PROTOLATHE - materials = list(MAT_METAL = 3000, MAT_PLASMA = 2000, MAT_DIAMOND = 500, MAT_BLUESPACE = 500) + materials = list(/datum/material/iron = 3000, /datum/material/plasma = 2000, /datum/material/diamond = 500, /datum/material/bluespace = 500) build_path = /obj/item/bodybag/bluespace category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE @@ -137,7 +137,7 @@ desc = "A refill pack for the auto-extinguisher on Plasma-man suits." id = "plasmarefiller" //Why did this have no plasmatech build_type = PROTOLATHE - materials = list(MAT_METAL = 4000, MAT_PLASMA = 1000) + materials = list(/datum/material/iron = 4000, /datum/material/plasma = 1000) build_path = /obj/item/extinguisher_refill category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_ALL @@ -147,7 +147,7 @@ desc = "Allows tracking of someone's location if their suit sensors are turned to tracking beacon." id = "crewpinpointer" build_type = PROTOLATHE - materials = list(MAT_METAL = 3000, MAT_GLASS = 1500, MAT_GOLD = 200) + materials = list(/datum/material/iron = 3000, /datum/material/glass = 1500, /datum/material/gold = 200) build_path = /obj/item/pinpointer/crew category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -157,7 +157,7 @@ desc = "An IV drip with an advanced infusion pump that can both drain blood into and inject liquids from attached containers. Blood packs are processed at an accelerated rate. This one is telescopic, and can be picked up and put down." id = "telescopiciv" build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 3500, MAT_SILVER = 1000) + materials = list(/datum/material/iron = 5000, /datum/material/glass = 3500, /datum/material/silver = 1000) build_path = /obj/item/tele_iv category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -168,7 +168,7 @@ id = "healthanalyzer_advanced" build_path = /obj/item/healthanalyzer/advanced build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 2500, MAT_SILVER = 2000, MAT_GOLD = 1500) + materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500, /datum/material/silver = 2000, /datum/material/gold = 1500) category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -178,7 +178,7 @@ id = "medspray" build_path = /obj/item/reagent_containers/medspray build_type = PROTOLATHE - materials = list(MAT_METAL = 2500, MAT_GLASS = 500) + materials = list(/datum/material/iron = 2500, /datum/material/glass = 500) category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -187,7 +187,7 @@ desc = "A plastic medical kit for storging medical items." id = "medicalkit" build_type = PROTOLATHE - materials = list(MAT_PLASTIC = 5000) + materials = list(/datum/material/plastic = 5000) build_path = /obj/item/storage/firstaid //So we dont spawn medical items in it category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE @@ -198,7 +198,7 @@ id = "blood_bag" build_path = /obj/item/reagent_containers/blood build_type = PROTOLATHE - materials = list(MAT_GLASS = 1500, MAT_PLASTIC = 3500) + materials = list(/datum/material/glass = 1500, /datum/material/plastic = 3500) category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -208,7 +208,7 @@ id = "bsblood_bag" build_path = /obj/item/reagent_containers/blood/bluespace build_type = PROTOLATHE - materials = list(MAT_GLASS = 2500, MAT_PLASTIC = 4500, MAT_BLUESPACE = 250) + materials = list(/datum/material/glass = 2500, /datum/material/plastic = 4500, /datum/material/bluespace = 250) category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -217,7 +217,7 @@ desc = "Produce additional disks for storing genetic data." id = "cloning_disk" build_type = PROTOLATHE - materials = list(MAT_METAL = 300, MAT_GLASS = 100, MAT_SILVER = 50) + materials = list(/datum/material/iron = 300, /datum/material/glass = 100, /datum/material/silver=50) build_path = /obj/item/disk/data category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE @@ -227,7 +227,7 @@ desc = "A large cool box that can hold large amouts of medical tools or organs." id = "organbox" build_type = PROTOLATHE - materials = list(MAT_METAL = 3000, MAT_GLASS = 1000, MAT_SILVER= 3500, MAT_GOLD = 3500, MAT_PLASTIC = 5000) + materials = list(/datum/material/iron = 3000, /datum/material/glass = 1000, /datum/material/silver= 3500, /datum/material/gold = 3500, /datum/material/plastic = 5000) build_path = /obj/item/storage/belt/organbox category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE @@ -242,7 +242,7 @@ id = "defibrillator" build_type = PROTOLATHE build_path = /obj/item/defibrillator - materials = list(MAT_METAL = 8000, MAT_GLASS = 4000, MAT_SILVER = 3000, MAT_GOLD = 1500) + materials = list(/datum/material/iron = 8000, /datum/material/glass = 4000, /datum/material/silver = 3000, /datum/material/gold = 1500) category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -251,7 +251,7 @@ desc = "An all-in-one mounted frame for holding defibrillators, complete with ID-locked clamps and recharging cables." id = "defibmount" build_type = PROTOLATHE - materials = list(MAT_METAL = 2000, MAT_GLASS = 1000) + materials = list(/datum/material/iron = 2000, /datum/material/glass = 1000) build_path = /obj/item/wallframe/defib_mount category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -261,7 +261,7 @@ desc = "An upgrade which increases the healing power of the defibrillator." id = "defib_heal" build_type = PROTOLATHE - materials = list(MAT_METAL = 16000, MAT_GLASS = 18000, MAT_GOLD = 6000, MAT_SILVER = 6000) + materials = list(/datum/material/iron = 16000, /datum/material/glass = 18000, /datum/material/gold = 6000, /datum/material/silver = 6000) build_path = /obj/item/disk/medical/defib_heal construction_time = 10 category = list("Misc") @@ -272,7 +272,7 @@ desc = "A safety upgrade that guarantees only the patient will get shocked." id = "defib_shock" build_type = PROTOLATHE - materials = list(MAT_METAL = 16000, MAT_GLASS = 18000, MAT_GOLD = 6000, MAT_SILVER = 6000) + materials = list(/datum/material/iron = 16000, /datum/material/glass = 18000, /datum/material/gold = 6000, /datum/material/silver = 6000) build_path = /obj/item/disk/medical/defib_shock construction_time = 10 category = list("Misc") @@ -283,7 +283,7 @@ desc = "An upgrade allowing the defibrillator to work on more decayed bodies." id = "defib_decay" build_type = PROTOLATHE - materials = list(MAT_METAL = 16000, MAT_GLASS = 18000, MAT_GOLD = 16000, MAT_SILVER = 6000, MAT_TITANIUM = 2000) + materials = list(/datum/material/iron = 16000, /datum/material/glass = 18000, /datum/material/gold = 16000, /datum/material/silver = 6000, /datum/material/titanium = 2000) build_path = /obj/item/disk/medical/defib_decay construction_time = 10 category = list("Misc") @@ -295,7 +295,7 @@ id = "defib_speed" build_type = PROTOLATHE build_path = /obj/item/disk/medical/defib_speed - materials = list(MAT_METAL = 16000, MAT_GLASS = 8000, MAT_GOLD = 26000, MAT_SILVER = 26000) + materials = list(/datum/material/iron = 16000, /datum/material/glass = 8000, /datum/material/gold = 26000, /datum/material/silver = 26000) construction_time = 10 category = list("Misc") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -306,7 +306,7 @@ id = "defibrillator_compact" build_type = PROTOLATHE build_path = /obj/item/defibrillator/compact - materials = list(MAT_METAL = 16000, MAT_GLASS = 8000, MAT_SILVER = 6000, MAT_GOLD = 3000) + materials = list(/datum/material/iron = 16000, /datum/material/glass = 8000, /datum/material/silver = 6000, /datum/material/gold = 3000) category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -320,7 +320,7 @@ id = "ci-welding" build_type = PROTOLATHE | MECHFAB construction_time = 40 - materials = list(MAT_METAL = 600, MAT_GLASS = 400) + materials = list(/datum/material/iron = 600, /datum/material/glass = 400) build_path = /obj/item/organ/eyes/robotic/shield category = list("Misc", "Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -331,7 +331,7 @@ id = "ci-gloweyes" build_type = PROTOLATHE | MECHFAB construction_time = 40 - materials = list(MAT_METAL = 600, MAT_GLASS = 1000) + materials = list(/datum/material/iron = 600, /datum/material/glass = 1000) build_path = /obj/item/organ/eyes/robotic/glow category = list("Misc", "Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -342,7 +342,7 @@ id = "ci-breather" build_type = PROTOLATHE | MECHFAB construction_time = 35 - materials = list(MAT_METAL = 600, MAT_GLASS = 250) + materials = list(/datum/material/iron = 600, /datum/material/glass = 250) build_path = /obj/item/organ/cyberimp/mouth/breathing_tube category = list("Misc", "Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -352,7 +352,7 @@ desc = "A set of surgical tools hidden behind a concealed panel on the user's arm." id = "ci-surgery" build_type = PROTOLATHE | MECHFAB - materials = list (MAT_METAL = 2500, MAT_GLASS = 1500, MAT_SILVER = 1500) + materials = list (/datum/material/iron = 2500, /datum/material/glass = 1500, /datum/material/silver = 1500) construction_time = 200 build_path = /obj/item/organ/cyberimp/arm/surgery category = list("Misc", "Medical Designs") @@ -363,7 +363,7 @@ desc = "A stripped-down version of engineering cyborg toolset, designed to be installed on subject's arm." id = "ci-toolset" build_type = PROTOLATHE | MECHFAB - materials = list (MAT_METAL = 2500, MAT_GLASS = 1500, MAT_SILVER = 1500) + materials = list (/datum/material/iron = 2500, /datum/material/glass = 1500, /datum/material/silver = 1500) construction_time = 200 build_path = /obj/item/organ/cyberimp/arm/toolset category = list("Misc", "Medical Designs") @@ -375,7 +375,7 @@ id = "ci-medhud" build_type = PROTOLATHE | MECHFAB construction_time = 50 - materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 500, MAT_GOLD = 500) + materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/silver = 500, /datum/material/gold = 500) build_path = /obj/item/organ/cyberimp/eyes/hud/medical category = list("Misc", "Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -386,7 +386,7 @@ id = "ci-sechud" build_type = PROTOLATHE | MECHFAB construction_time = 50 - materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 750, MAT_GOLD = 750) + materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/silver = 750, /datum/material/gold = 750) build_path = /obj/item/organ/cyberimp/eyes/hud/security category = list("Misc", "Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -397,7 +397,7 @@ id = "ci-xray" build_type = PROTOLATHE | MECHFAB construction_time = 60 - materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 600, MAT_GOLD = 600, MAT_PLASMA = 1000, MAT_URANIUM = 1000, MAT_DIAMOND = 1000, MAT_BLUESPACE = 1000) + materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/silver = 600, /datum/material/gold = 600, /datum/material/plasma = 1000, /datum/material/uranium = 1000, /datum/material/diamond = 1000, /datum/material/bluespace = 1000) build_path = /obj/item/organ/eyes/robotic/xray category = list("Misc", "Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -408,7 +408,7 @@ id = "ci-thermals" build_type = PROTOLATHE | MECHFAB construction_time = 60 - materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 600, MAT_GOLD = 600, MAT_PLASMA = 1000, MAT_DIAMOND = 2000) + materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/silver = 600, /datum/material/gold = 600, /datum/material/plasma = 1000, /datum/material/diamond = 2000) build_path = /obj/item/organ/eyes/robotic/thermals category = list("Misc", "Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -419,7 +419,7 @@ id = "ci-antidrop" build_type = PROTOLATHE | MECHFAB construction_time = 60 - materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 400, MAT_GOLD = 400) + materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/silver = 400, /datum/material/gold = 400) build_path = /obj/item/organ/cyberimp/brain/anti_drop category = list("Misc", "Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -430,7 +430,7 @@ id = "ci-antistun" build_type = PROTOLATHE | MECHFAB construction_time = 60 - materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 500, MAT_GOLD = 1000) + materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/silver = 500, /datum/material/gold = 1000) build_path = /obj/item/organ/cyberimp/brain/anti_stun category = list("Misc", "Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -441,7 +441,7 @@ id = "ci-nutriment" build_type = PROTOLATHE | MECHFAB construction_time = 40 - materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_GOLD = 500) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/gold = 500) build_path = /obj/item/organ/cyberimp/chest/nutriment category = list("Misc", "Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -452,7 +452,7 @@ id = "ci-nutrimentplus" build_type = PROTOLATHE | MECHFAB construction_time = 50 - materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_GOLD = 500, MAT_URANIUM = 750) + materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/gold = 500, /datum/material/uranium = 750) build_path = /obj/item/organ/cyberimp/chest/nutriment/plus category = list("Misc", "Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -463,7 +463,7 @@ id = "ci-reviver" build_type = PROTOLATHE | MECHFAB construction_time = 60 - materials = list(MAT_METAL = 800, MAT_GLASS = 800, MAT_GOLD = 300, MAT_URANIUM = 500) + materials = list(/datum/material/iron = 800, /datum/material/glass = 800, /datum/material/gold = 300, /datum/material/uranium = 500) build_path = /obj/item/organ/cyberimp/chest/reviver category = list("Misc", "Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -474,7 +474,7 @@ id = "ci-thrusters" build_type = PROTOLATHE | MECHFAB construction_time = 80 - materials = list(MAT_METAL = 4000, MAT_GLASS = 2000, MAT_SILVER = 1000, MAT_DIAMOND = 1000) + materials = list(/datum/material/iron = 4000, /datum/material/glass = 2000, /datum/material/silver = 1000, /datum/material/diamond = 1000) build_path = /obj/item/organ/cyberimp/chest/thrusters category = list("Misc", "Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -488,7 +488,7 @@ desc = "A sterile automatic implant injector." id = "implanter" build_type = PROTOLATHE - materials = list(MAT_METAL = 600, MAT_GLASS = 200) + materials = list(/datum/material/iron = 600, /datum/material/glass = 200) build_path = /obj/item/implanter category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL @@ -498,7 +498,7 @@ desc = "A glass case for containing an implant." id = "implantcase" build_type = PROTOLATHE - materials = list(MAT_GLASS = 500) + materials = list(/datum/material/glass = 500) build_path = /obj/item/implantcase category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL @@ -508,7 +508,7 @@ desc = "Makes death amusing." id = "implant_trombone" build_type = PROTOLATHE - materials = list(MAT_GLASS = 500, MAT_BANANIUM = 500) + materials = list(/datum/material/glass = 500, /datum/material/bananium = 500) build_path = /obj/item/implantcase/sad_trombone category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_ALL //if you get bananium you get the sad trombones. @@ -518,7 +518,7 @@ desc = "A glass case containing an implant." id = "implant_chem" build_type = PROTOLATHE - materials = list(MAT_GLASS = 700) + materials = list(/datum/material/glass = 700) build_path = /obj/item/implantcase/chem category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL @@ -528,7 +528,7 @@ desc = "A glass case containing an implant." id = "implant_tracking" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/implantcase/track category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL @@ -540,7 +540,7 @@ desc = "A cybernetic liver" id = "cybernetic_liver" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/organ/liver/cybernetic category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -550,7 +550,7 @@ desc = "A cybernetic heart" id = "cybernetic_heart" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/organ/heart/cybernetic category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -561,7 +561,7 @@ id = "cybernetic_heart_u" build_type = PROTOLATHE | MECHFAB construction_time = 50 - materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 500) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/silver = 500) build_path = /obj/item/organ/heart/cybernetic/upgraded category = list("Misc", "Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -571,7 +571,7 @@ desc = "An upgraded cybernetic liver" id = "cybernetic_liver_u" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/organ/liver/cybernetic/upgraded category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -581,7 +581,7 @@ desc = "A pair of cybernetic lungs." id = "cybernetic_lungs" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/organ/lungs/cybernetic category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -591,7 +591,7 @@ desc = "A pair of upgraded cybernetic lungs." id = "cybernetic_lungs_u" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 500) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/silver = 500) build_path = /obj/item/organ/lungs/cybernetic/upgraded category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -601,7 +601,7 @@ desc = "A fancy cybernetic tongue." id = "cybernetic_tongue" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/organ/tongue/cybernetic category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -612,7 +612,7 @@ id = "cybernetic_ears" build_type = PROTOLATHE | MECHFAB construction_time = 30 - materials = list(MAT_METAL = 250, MAT_GLASS = 400) + materials = list(/datum/material/iron = 250, /datum/material/glass = 400) build_path = /obj/item/organ/ears/cybernetic category = list("Misc", "Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -623,7 +623,7 @@ id = "cybernetic_ears_u" build_type = PROTOLATHE | MECHFAB construction_time = 40 - materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 500) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/silver = 500) build_path = /obj/item/organ/ears/cybernetic/upgraded category = list("Misc", "Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -802,7 +802,7 @@ desc = "Basic outdated and fragile prosthetic left arm." id = "basic_l_arm" build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 2500) + materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500) construction_time = 20 build_path = /obj/item/bodypart/l_arm/robot/surplus category = list("Medical Designs") @@ -813,7 +813,7 @@ desc = "Basic outdated and fragile prosthetic left arm." id = "basic_r_arm" build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 2500) + materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500) construction_time = 20 build_path = /obj/item/bodypart/r_arm/robot/surplus category = list("Medical Designs") @@ -824,7 +824,7 @@ desc = "Basic outdated and fragile prosthetic left leg." id = "basic_l_leg" build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 2500) + materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500) construction_time = 20 build_path = /obj/item/bodypart/l_leg/robot/surplus category = list("Medical Designs") @@ -835,7 +835,7 @@ desc = "Basic outdated and fragile prosthetic right leg." id = "basic_r_leg" build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 2500) + materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500) construction_time = 20 build_path = /obj/item/bodypart/r_leg/robot/surplus category = list("Medical Designs") @@ -846,7 +846,7 @@ desc = "A renforced prosthetic right leg." id = "adv_r_leg" build_type = PROTOLATHE - materials = list(MAT_METAL = 6000, MAT_GLASS = 3500, MAT_GOLD = 500, MAT_TITANIUM = 800) + materials = list(/datum/material/iron = 6000, /datum/material/glass = 3500, /datum/material/gold = 500, /datum/material/titanium = 800) construction_time = 40 build_path = /obj/item/bodypart/r_leg/robot/surplus_upgraded category = list("Medical Designs") @@ -857,7 +857,7 @@ desc = "A renforced prosthetic left leg." id = "adv_l_leg" build_type = PROTOLATHE - materials = list(MAT_METAL = 6000, MAT_GLASS = 3500, MAT_GOLD = 500, MAT_TITANIUM = 800) + materials = list(/datum/material/iron = 6000, /datum/material/glass = 3500, /datum/material/gold = 500, /datum/material/titanium = 800) construction_time = 40 build_path = /obj/item/bodypart/l_leg/robot/surplus_upgraded category = list("Medical Designs") @@ -868,7 +868,7 @@ desc = "A renforced prosthetic left arm." id = "adv_l_arm" build_type = PROTOLATHE - materials = list(MAT_METAL = 6000, MAT_GLASS = 3500, MAT_GOLD = 500, MAT_TITANIUM = 800) + materials = list(/datum/material/iron = 6000, /datum/material/glass = 3500, /datum/material/gold = 500, /datum/material/titanium = 800) construction_time = 40 build_path = /obj/item/bodypart/l_arm/robot/surplus_upgraded category = list("Medical Designs") @@ -879,7 +879,7 @@ desc = "A renforced prosthetic right arm." id = "adv_r_arm" build_type = PROTOLATHE - materials = list(MAT_METAL = 6000, MAT_GLASS = 3500, MAT_GOLD = 500, MAT_TITANIUM = 800) + materials = list(/datum/material/iron = 6000, /datum/material/glass = 3500, /datum/material/gold = 500, /datum/material/titanium = 800) construction_time = 40 build_path = /obj/item/bodypart/r_arm/robot/surplus_upgraded category = list("Medical Designs") diff --git a/code/modules/research/designs/mining_designs.dm b/code/modules/research/designs/mining_designs.dm index 69e695afac..53fa5b21ea 100644 --- a/code/modules/research/designs/mining_designs.dm +++ b/code/modules/research/designs/mining_designs.dm @@ -7,7 +7,7 @@ desc = "Allows for the construction of circuit boards used to build an Express Supply Console."//who? id = "cargoexpress"//the coder reading this build_type = IMPRINTER - materials = list(MAT_GLASS = 1000) + materials = list(/datum/material/glass = 1000) build_path = /obj/item/circuitboard/computer/cargo/express category = list("Mining Designs") departmental_flags = DEPARTMENTAL_FLAG_CARGO @@ -17,7 +17,7 @@ desc = "Allows the Cargo Express Console to call down the Bluespace Drop Pod, greatly increasing user safety."//who? id = "bluespace_pod"//the coder reading this build_type = PROTOLATHE - materials = list(MAT_GLASS = 1000) + materials = list(/datum/material/glass = 1000) build_path = /obj/item/disk/cargo/bluespace_pod category = list("Mining Designs") departmental_flags = DEPARTMENTAL_FLAG_CARGO @@ -27,7 +27,7 @@ desc = "Yours is the drill that will pierce through the rock walls." id = "drill" build_type = PROTOLATHE - materials = list(MAT_METAL = 6000, MAT_GLASS = 1000) //expensive, but no need for miners. + materials = list(/datum/material/iron = 6000, /datum/material/glass = 1000) //expensive, but no need for miners. build_path = /obj/item/pickaxe/drill category = list("Mining Designs") departmental_flags = DEPARTMENTAL_FLAG_CARGO @@ -37,7 +37,7 @@ desc = "Yours is the drill that will pierce the heavens!" id = "drill_diamond" build_type = PROTOLATHE - materials = list(MAT_METAL = 6000, MAT_GLASS = 1000, MAT_DIAMOND = 2000) //Yes, a whole diamond is needed. + materials = list(/datum/material/iron = 6000, /datum/material/glass = 1000, /datum/material/diamond = 2000) //Yes, a whole diamond is needed. build_path = /obj/item/pickaxe/drill/diamonddrill category = list("Mining Designs") departmental_flags = DEPARTMENTAL_FLAG_CARGO @@ -47,7 +47,7 @@ desc = "You could use it to cut limbs off of xenos! Or, you know, mine stuff." id = "plasmacutter" build_type = PROTOLATHE - materials = list(MAT_METAL = 1500, MAT_GLASS = 500, MAT_PLASMA = 400) + materials = list(/datum/material/iron = 1500, /datum/material/glass = 500, /datum/material/plasma = 400) build_path = /obj/item/gun/energy/plasmacutter category = list("Mining Designs") departmental_flags = DEPARTMENTAL_FLAG_CARGO @@ -57,7 +57,7 @@ desc = "It's an advanced plasma cutter, oh my god." id = "plasmacutter_adv" build_type = PROTOLATHE - materials = list(MAT_METAL = 3000, MAT_GLASS = 1000, MAT_PLASMA = 2000, MAT_GOLD = 500) + materials = list(/datum/material/iron = 3000, /datum/material/glass = 1000, /datum/material/plasma = 2000, /datum/material/gold = 500) build_path = /obj/item/gun/energy/plasmacutter/adv category = list("Mining Designs") departmental_flags = DEPARTMENTAL_FLAG_CARGO @@ -67,7 +67,7 @@ desc = "A pickaxe with a plasteel pick head. Less robust at cracking rock walls and digging up dirt than the titanium pickaxe, but better at cracking open skulls." id = "plasteel_pick" build_type = PROTOLATHE - materials = list(MAT_METAL=2000, MAT_PLASMA=2000) + materials = list(/datum/material/iron=2000, /datum/material/plasma=2000) build_path = /obj/item/pickaxe/plasteel category = list("Mining Designs") departmental_flags = DEPARTMENTAL_FLAG_CARGO @@ -77,7 +77,7 @@ desc = "A pickaxe with a titanium pick head. Extremely robust at cracking rock walls and digging up dirt, but less than the plasteel pickaxe at cracking open skulls." id = "titanium_pick" build_type = PROTOLATHE - materials = list(MAT_TITANIUM = 4000) + materials = list(/datum/material/titanium = 4000) build_path = /obj/item/pickaxe/titanium category = list("Mining Designs") departmental_flags = DEPARTMENTAL_FLAG_CARGO @@ -87,7 +87,7 @@ desc = "Essentially a handheld planet-cracker. Can drill through walls with ease as well." id = "jackhammer" build_type = PROTOLATHE - materials = list(MAT_METAL = 6000, MAT_GLASS = 2000, MAT_SILVER = 2000, MAT_DIAMOND = 6000) + materials = list(/datum/material/iron = 6000, /datum/material/glass = 2000, /datum/material/silver = 2000, /datum/material/diamond = 6000) build_path = /obj/item/pickaxe/drill/jackhammer category = list("Mining Designs") departmental_flags = DEPARTMENTAL_FLAG_CARGO @@ -97,7 +97,7 @@ desc = "An upgraded version of the resonator that allows more fields to be active at once." id = "superresonator" build_type = PROTOLATHE - materials = list(MAT_METAL = 4000, MAT_GLASS = 1500, MAT_SILVER = 1000, MAT_URANIUM = 1000) + materials = list(/datum/material/iron = 4000, /datum/material/glass = 1500, /datum/material/silver = 1000, /datum/material/uranium = 1000) build_path = /obj/item/resonator/upgraded category = list("Mining Designs") departmental_flags = DEPARTMENTAL_FLAG_CARGO @@ -107,7 +107,7 @@ desc = "A device which allows kinetic accelerators to be wielded by any organism." id = "triggermod" build_type = PROTOLATHE - materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000) + materials = list(/datum/material/iron = 2000, /datum/material/glass = 1500, /datum/material/gold = 1500, /datum/material/uranium = 1000) build_path = /obj/item/borg/upgrade/modkit/trigger_guard category = list("Mining Designs") departmental_flags = DEPARTMENTAL_FLAG_CARGO @@ -117,7 +117,7 @@ desc = "A device which allows kinetic accelerators to deal more damage." id = "damagemod" build_type = PROTOLATHE | MECHFAB - materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000) + materials = list(/datum/material/iron = 2000, /datum/material/glass = 1500, /datum/material/gold = 1500, /datum/material/uranium = 1000) build_path = /obj/item/borg/upgrade/modkit/damage category = list("Mining Designs", "Cyborg Upgrade Modules") departmental_flags = DEPARTMENTAL_FLAG_CARGO @@ -127,7 +127,7 @@ desc = "A device which decreases the cooldown of a Kinetic Accelerator." id = "cooldownmod" build_type = PROTOLATHE | MECHFAB - materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000) + materials = list(/datum/material/iron = 2000, /datum/material/glass = 1500, /datum/material/gold = 1500, /datum/material/uranium = 1000) build_path = /obj/item/borg/upgrade/modkit/cooldown category = list("Mining Designs", "Cyborg Upgrade Modules") departmental_flags = DEPARTMENTAL_FLAG_CARGO @@ -137,7 +137,7 @@ desc = "A device which allows kinetic accelerators to fire at a further range." id = "rangemod" build_type = PROTOLATHE | MECHFAB - materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000) + materials = list(/datum/material/iron = 2000, /datum/material/glass = 1500, /datum/material/gold = 1500, /datum/material/uranium = 1000) build_path = /obj/item/borg/upgrade/modkit/range category = list("Mining Designs", "Cyborg Upgrade Modules") departmental_flags = DEPARTMENTAL_FLAG_CARGO @@ -147,7 +147,7 @@ desc = "A modification kit for Kinetic Accelerators which causes it to fire AoE blasts that destroy rock." id = "hypermod" build_type = PROTOLATHE | MECHFAB - materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_DIAMOND = 2000) + materials = list(/datum/material/iron = 8000, /datum/material/glass = 1500, /datum/material/silver = 2000, /datum/material/gold = 2000, /datum/material/diamond = 2000) build_path = /obj/item/borg/upgrade/modkit/aoe/turfs category = list("Mining Designs", "Cyborg Upgrade Modules") departmental_flags = DEPARTMENTAL_FLAG_CARGO diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm index df1c1edd9c..c18c33b04b 100644 --- a/code/modules/research/designs/misc_designs.dm +++ b/code/modules/research/designs/misc_designs.dm @@ -7,7 +7,7 @@ desc = "A heads-up display that scans the humans in view and provides accurate data about their health status." id = "health_hud" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/clothing/glasses/hud/health category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -17,7 +17,7 @@ desc = "A heads-up display that scans the humans in view and provides accurate data about their health status. This one has a prescription lens." id = "health_hud_prescription" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 350) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/silver = 350) build_path = /obj/item/clothing/glasses/hud/health/prescription category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -27,7 +27,7 @@ desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness." id = "health_hud_night" build_type = PROTOLATHE - materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_SILVER = 350) + materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/uranium = 1000, /datum/material/silver = 350) build_path = /obj/item/clothing/glasses/hud/health/night category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -37,7 +37,7 @@ desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status." id = "security_hud" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/clothing/glasses/hud/security category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -47,7 +47,7 @@ desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status. This one has a prescription lens." id = "security_hud_prescription" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 350) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/silver = 350) build_path = /obj/item/clothing/glasses/hud/security/prescription category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -57,7 +57,7 @@ desc = "A heads-up display which provides id data and vision in complete darkness." id = "security_hud_night" build_type = PROTOLATHE - materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_GOLD = 350) + materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/uranium = 1000, /datum/material/gold = 350) build_path = /obj/item/clothing/glasses/hud/security/night category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -67,7 +67,7 @@ desc = "A HUD used to analyze and determine faults within robotic machinery." id = "diagnostic_hud" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/clothing/glasses/hud/diagnostic category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -77,7 +77,7 @@ desc = "A HUD used to analyze and determine faults within robotic machinery. This one has a prescription lens." id = "diagnostic_hud_prescription" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_GOLD = 350) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/gold = 350) build_path = /obj/item/clothing/glasses/hud/diagnostic/prescription category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -87,7 +87,7 @@ desc = "Upgraded version of the diagnostic HUD designed to function during a power failure." id = "diagnostic_hud_night" build_type = PROTOLATHE - materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_PLASMA = 300) + materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/uranium = 1000, /datum/material/plasma = 300) build_path = /obj/item/clothing/glasses/hud/diagnostic/night category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -97,7 +97,7 @@ desc = "Goggles fitted with a portable analyzer capable of determining the research worth of an item or components of a machine." id = "scigoggles" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/clothing/glasses/science category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -107,7 +107,7 @@ desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition." id = "mesons" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/clothing/glasses/meson category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_ENGINEERING @@ -117,7 +117,7 @@ desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition. Prescription lens has been added into this design." id = "mesons_prescription" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 350) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/silver = 350) build_path = /obj/item/clothing/glasses/meson/prescription category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_ENGINEERING @@ -127,7 +127,7 @@ desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, regardless of lighting condition. The T-ray Scanner mode lets you see underfloor objects such as cables and pipes." id = "engine_goggles" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_PLASMA = 100) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/plasma = 100) build_path = /obj/item/clothing/glasses/meson/engine category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -137,7 +137,7 @@ desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, regardless of lighting condition. The T-ray Scanner mode lets you see underfloor objects such as cables and pipes. Prescription lens has been added into this design." id = "engine_goggles_prescription" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_PLASMA = 100, MAT_SILVER = 350) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/plasma = 100, /datum/material/silver = 350) build_path = /obj/item/clothing/glasses/meson/engine/prescription category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -147,7 +147,7 @@ desc = "Used by engineering staff to see underfloor objects such as cables and pipes." id = "tray_goggles" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/clothing/glasses/meson/engine/tray category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -157,7 +157,7 @@ desc = "Used by engineering staff to see underfloor objects such as cables and pipes. Prescription lens has been added into this design." id = "tray_goggles_prescription" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 150) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/silver = 150) build_path = /obj/item/clothing/glasses/meson/engine/tray/prescription category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -167,7 +167,7 @@ desc = "Prototype meson scanners fitted with an extra sensor which amplifies the visible light spectrum and overlays it to the UHD display." id = "nvgmesons" build_type = PROTOLATHE - materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000) + materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/plasma = 350, /datum/material/uranium = 1000) build_path = /obj/item/clothing/glasses/meson/night category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_CARGO @@ -177,7 +177,7 @@ desc = "Goggles that let you see through darkness unhindered." id = "night_visision_goggles" build_type = PROTOLATHE - materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000) + materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/plasma = 350, /datum/material/uranium = 1000) build_path = /obj/item/clothing/glasses/night category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY @@ -187,7 +187,7 @@ desc = "Goggles that let you see through darkness unhindered. Corrects vision." id = "night_visision_goggles_glasses" build_type = PROTOLATHE - materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000) + materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/plasma = 350, /datum/material/uranium = 1000) build_path = /obj/item/clothing/glasses/night/prescription category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_ENGINEERING @@ -201,7 +201,7 @@ desc = "A gas mask with built in welding goggles and face shield. Looks like a skull, clearly designed by a nerd." id = "weldingmask" build_type = PROTOLATHE - materials = list(MAT_METAL = 3000, MAT_GLASS = 1000) + materials = list(/datum/material/iron = 3000, /datum/material/glass = 1000) build_path = /obj/item/clothing/mask/gas/welding category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -211,7 +211,7 @@ desc = "For the enterprising botanist on the go. Less efficient than the stationary model, it creates one seed per plant." id = "portaseeder" build_type = PROTOLATHE - materials = list(MAT_METAL = 1000, MAT_GLASS = 400) + materials = list(/datum/material/iron = 1000, /datum/material/glass = 400) build_path = /obj/item/storage/bag/plants/portaseeder category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SERVICE @@ -221,7 +221,7 @@ desc = "Damn son, where'd you find this?" id = "air_horn" build_type = PROTOLATHE - materials = list(MAT_METAL = 4000, MAT_BANANIUM = 1000) + materials = list(/datum/material/iron = 4000, /datum/material/bananium = 1000) build_path = /obj/item/bikehorn/airhorn category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_ALL //HONK! @@ -231,7 +231,7 @@ desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle." id = "magboots" build_type = PROTOLATHE - materials = list(MAT_METAL = 4500, MAT_SILVER = 1500, MAT_GOLD = 2500) + materials = list(/datum/material/iron = 4500, /datum/material/silver = 1500, /datum/material/gold = 2500) build_path = /obj/item/clothing/shoes/magboots category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -241,7 +241,7 @@ desc = "Goggles fitted with a portable analyzer capable of determining the research worth of an item or components of a machine." id = "scigoggles" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500) build_path = /obj/item/clothing/glasses/science category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -251,7 +251,7 @@ desc = "A disk for storing plant genetic data." id = "diskplantgene" build_type = PROTOLATHE | AUTOLATHE - materials = list(MAT_METAL=200, MAT_GLASS=100) + materials = list(/datum/material/iron=200, /datum/material/glass=100) build_path = /obj/item/disk/plantgene category = list("Electronics","Imported") departmental_flags = DEPARTMENTAL_FLAG_SERVICE @@ -261,7 +261,7 @@ desc = "A roasting stick for cooking sausages in exotic ovens." id = "roastingstick" build_type = PROTOLATHE - materials = list(MAT_METAL=1000, MAT_GLASS=500, MAT_BLUESPACE = 250) + materials = list(/datum/material/iron=1000, /datum/material/glass=500, /datum/material/bluespace = 250) build_path = /obj/item/melee/roastingstick category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SERVICE @@ -271,7 +271,7 @@ desc = "Used to track portable teleportation beacons and targets with embedded tracking implants." id = "locator" build_type = PROTOLATHE - materials = list(MAT_METAL=1000, MAT_GLASS=500, MAT_SILVER = 500) + materials = list(/datum/material/iron=1000, /datum/material/glass=500, /datum/material/silver = 500) build_path = /obj/item/locator category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -281,7 +281,7 @@ desc = "A refill canister for Donksoft Toy Vendors." id = "donksoft_refill" build_type = PROTOLATHE - materials = list(MAT_METAL = 25000, MAT_GLASS = 15000, MAT_PLASMA = 20000, MAT_GOLD = 10000, MAT_SILVER = 10000) + materials = list(/datum/material/iron = 25000, /datum/material/glass = 15000, /datum/material/plasma = 20000, /datum/material/gold = 10000, /datum/material/silver = 10000) build_path = /obj/item/vending_refill/donksoft category = list("Equipment") @@ -294,7 +294,7 @@ desc = "Just your everyday standard broom." id = "broom" build_type = PROTOLATHE - materials = list(MAT_METAL = 1000, MAT_GLASS = 600) + materials = list(/datum/material/iron = 1000, /datum/material/glass = 600) build_path = /obj/item/twohanded/broom category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SERVICE @@ -304,7 +304,7 @@ desc = "Just your everyday standard mop." id = "mop" build_type = PROTOLATHE - materials = list(MAT_METAL = 1200, MAT_GLASS = 100) + materials = list(/datum/material/iron = 1200, /datum/material/glass = 100) build_path = /obj/item/mop category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SERVICE @@ -314,7 +314,7 @@ desc = "An upgraded mop with a large internal capacity for holding water or other cleaning chemicals." id = "advmop" build_type = PROTOLATHE - materials = list(MAT_METAL = 2500, MAT_GLASS = 200) + materials = list(/datum/material/iron = 2500, /datum/material/glass = 200) build_path = /obj/item/mop/advanced category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SERVICE @@ -324,7 +324,7 @@ desc = "A device to automatically replace lights. Refill with working light bulbs." id = "light_replacer" build_type = PROTOLATHE - materials = list(MAT_METAL = 1500, MAT_SILVER = 150, MAT_GLASS = 3000) + materials = list(/datum/material/iron = 1500, /datum/material/silver = 150, /datum/material/glass = 3000) build_path = /obj/item/lightreplacer category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SERVICE @@ -334,7 +334,7 @@ desc = "An advanced trash bag with bluespace properties; capable of holding a plethora of garbage." id = "blutrash" build_type = PROTOLATHE - materials = list(MAT_GOLD = 1500, MAT_URANIUM = 250, MAT_PLASMA = 1500) + materials = list(/datum/material/gold = 1500, /datum/material/uranium = 250, /datum/material/plasma = 1500) build_path = /obj/item/storage/bag/trash/bluespace category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SERVICE @@ -344,7 +344,7 @@ desc = "A floor buffer that can be attached to vehicular janicarts." id = "buffer" build_type = PROTOLATHE - materials = list(MAT_METAL = 3000, MAT_GLASS = 200) + materials = list(/datum/material/iron = 3000, /datum/material/glass = 200) build_path = /obj/item/janiupgrade category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SERVICE @@ -354,7 +354,7 @@ desc = "A spray bottle, with an unscrewable top." id = "spraybottle" build_type = PROTOLATHE - materials = list(MAT_METAL = 3000, MAT_GLASS = 200) + materials = list(/datum/material/iron = 3000, /datum/material/glass = 200) build_path = /obj/item/reagent_containers/spray category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SERVICE @@ -364,7 +364,7 @@ desc = "A trap used to catch space bears and other legged creatures." id = "beartrap" build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_TITANIUM = 1000) + materials = list(/datum/material/iron = 5000, /datum/material/titanium = 1000) build_path = /obj/item/restraints/legcuffs/beartrap category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SERVICE @@ -378,7 +378,7 @@ desc = "A holograpic projector used to project various warning signs." id = "holosign" build_type = PROTOLATHE - materials = list(MAT_METAL = 2000, MAT_GLASS = 1000) + materials = list(/datum/material/iron = 2000, /datum/material/glass = 1000) build_path = /obj/item/holosign_creator category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SERVICE @@ -388,7 +388,7 @@ desc = "A holographic projector that creates holographic security barriers." id = "holosignsec" build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_SILVER = 1000) + materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000, /datum/material/gold = 1000, /datum/material/silver = 1000) build_path = /obj/item/holosign_creator/security category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -398,7 +398,7 @@ desc = "A holographic projector that creates holographic engineering barriers." id = "holosignengi" build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_SILVER = 1000) + materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000, /datum/material/gold = 1000, /datum/material/silver = 1000) build_path = /obj/item/holosign_creator/engineering category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -408,7 +408,7 @@ desc = "A holographic projector that creates holographic barriers that prevent changes in atmospheric conditions." id = "holosignatmos" build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_SILVER = 1000) + materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000, /datum/material/gold = 1000, /datum/material/silver = 1000) build_path = /obj/item/holosign_creator/atmos category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -418,7 +418,7 @@ desc = "A holographic projector that creates holographic barriers that prevent changes in temperature conditions." id = "holosignfirelock" build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_SILVER = 1000) + materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000, /datum/material/gold = 1000, /datum/material/silver = 1000) build_path = /obj/item/holosign_creator/firelock category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -428,7 +428,7 @@ desc = "A holographic projector that creates holographic barriers that prevent changes in atmospheric and temperature conditions." id = "holosigncombifan" build_type = PROTOLATHE - materials = list(MAT_METAL = 7500, MAT_GLASS = 2500, MAT_SILVER = 2500, MAT_GOLD = 2500, MAT_TITANIUM = 1750) + materials = list(/datum/material/iron = 7500, /datum/material/glass = 2500, /datum/material/silver = 2500, /datum/material/gold = 2500, /datum/material/titanium = 1750) build_path = /obj/item/holosign_creator/combifan category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -438,7 +438,7 @@ desc = "A device which can project temporary forcefields to seal off an area." id = "forcefield_projector" build_type = PROTOLATHE - materials = list(MAT_METAL = 2500, MAT_GLASS = 1000) + materials = list(/datum/material/iron = 2500, /datum/material/glass = 1000) build_path = /obj/item/forcefield_projector category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -448,7 +448,7 @@ desc = "PENLITE holobarriers, a device that halts individuals with malicious diseases." build_type = PROTOLATHE build_path = /obj/item/holosign_creator/medical - materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 100) //a hint of silver since it can troll 2 antags (bad viros and sentient disease) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/silver = 100) //a hint of silver since it can troll 2 antags (bad viros and sentient disease) id = "holobarrier_med" category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -462,7 +462,7 @@ desc = "Allows for the construction of a quantum keycard." id = "quantum_keycard" build_type = PROTOLATHE - materials = list(MAT_GLASS = 500, MAT_METAL = 500, MAT_SILVER = 500, MAT_BLUESPACE = 1000) + materials = list(/datum/material/glass = 500, /datum/material/iron = 500, /datum/material/silver = 500, /datum/material/bluespace = 1000) build_path = /obj/item/quantum_keycard category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -472,7 +472,7 @@ desc = "An advanced tool capable of instantly neutralizing anomalies, designed to capture the fleeting aberrations created by the engine." id = "anomaly_neutralizer" build_type = PROTOLATHE - materials = list(MAT_METAL = 2000, MAT_GOLD = 2000, MAT_PLASMA = 5000, MAT_URANIUM = 2000) + materials = list(/datum/material/iron = 2000, /datum/material/gold = 2000, /datum/material/plasma = 5000, /datum/material/uranium = 2000) build_path = /obj/item/anomaly_neutralizer category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -482,7 +482,7 @@ desc = "A a electrode attached to a small circuit box that will tell you the pH of a solution." id = "pHmeter" build_type = PROTOLATHE - materials = list(MAT_METAL = 1000, MAT_SILVER = 100, MAT_PLASTIC = 100) + materials = list(/datum/material/iron = 1000, /datum/material/silver = 100, /datum/material/plastic = 100) build_path = /obj/item/fermichem/pHmeter category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE @@ -496,11 +496,29 @@ desc = "An experimental suit of armour capable of utilizing an implanted anomaly core to protect the user." id = "reactive_armour" build_type = PROTOLATHE - materials = list(MAT_METAL = 10000, MAT_DIAMOND = 5000, MAT_URANIUM = 8000, MAT_SILVER = 4500, MAT_GOLD = 5000) + materials = list(/datum/material/iron = 10000, /datum/material/diamond = 5000, /datum/material/uranium = 8000, /datum/material/silver = 4500, /datum/material/gold = 5000) build_path = /obj/item/reactive_armour_shell category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING +/datum/design/knight_armour + name = "Knight Armour" + desc = "A royal knight's favorite garments. Can be trimmed by any friendly person." + id = "knight_armour" + build_type = AUTOLATHE + materials = list(MAT_CATEGORY_RIGID = 10000) + build_path = /obj/item/clothing/suit/armor/riot/knight/greyscale + category = list("Imported") + +/datum/design/knight_helmet + name = "Knight Helmet" + desc = "A royal knight's favorite hat. If you hold it upside down it's actually a bucket." + id = "knight_helmet" + build_type = AUTOLATHE + materials = list(MAT_CATEGORY_RIGID = 5000) + build_path = /obj/item/clothing/head/helmet/knight/greyscale + category = list("Imported") + ///////////////////////////////////////// /////////////Security//////////////////// ///////////////////////////////////////// @@ -510,57 +528,57 @@ desc = "A robust flashlight used by security." id = "seclite" build_type = PROTOLATHE - materials = list(MAT_METAL = 2500) + materials = list(/datum/material/iron = 2500) build_path = /obj/item/flashlight/seclite category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SECURITY - + /datum/design/detective_scanner name = "Forensic Scanner" desc = "Used to remotely scan objects and biomass for DNA and fingerprints. Can print a report of the findings." id = "detective_scanner" build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_GOLD = 2500, MAT_SILVER = 2000) + materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000, /datum/material/gold = 2500, /datum/material/silver = 2000) build_path = /obj/item/detective_scanner category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SECURITY - + /datum/design/pepperspray name = "Pepper Spray" desc = "Manufactured by UhangInc, used to blind and down an opponent quickly. Printed pepper sprays do not contain reagents." id = "pepperspray" build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 1000) + materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000) build_path = /obj/item/reagent_containers/spray/pepper/empty category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SECURITY - + /datum/design/bola_energy name = "Energy Bola" desc = "A specialized hard-light bola designed to ensnare fleeing criminals and aid in arrests." id = "bola_energy" build_type = PROTOLATHE - materials = list(MAT_SILVER = 500, MAT_PLASMA = 500, MAT_TITANIUM = 500) + materials = list(/datum/material/silver = 500, /datum/material/plasma = 500, /datum/material/titanium = 500) build_path = /obj/item/restraints/legcuffs/bola/energy category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SECURITY - + /datum/design/zipties name = "Zipties" desc = "Plastic, disposable zipties that can be used to restrain temporarily but are destroyed after use." id = "zipties" build_type = PROTOLATHE - materials = list(MAT_PLASTIC = 250) + materials = list(/datum/material/plastic = 250) build_path = /obj/item/restraints/handcuffs/cable/zipties category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SECURITY - + /datum/design/evidencebag name = "Evidence Bag" desc = "An empty evidence bag." id = "evidencebag" build_type = PROTOLATHE - materials = list(MAT_PLASTIC = 100) + materials = list(/datum/material/plastic = 100) build_path = /obj/item/evidencebag category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -574,7 +592,7 @@ desc = "A blue print of a early model of the Meteor defence turret." id = "meteor_defence" build_type = PROTOLATHE - materials = list(MAT_METAL = 50000, MAT_GLASS = 50000, MAT_SILVER = 8500, MAT_GOLD = 8500, MAT_TITANIUM = 7500, MAT_URANIUM = 7500) + materials = list(/datum/material/iron = 50000, /datum/material/glass = 50000, /datum/material/silver = 8500, /datum/material/gold = 8500, /datum/material/titanium = 7500, /datum/material/uranium = 7500) build_path = /obj/machinery/satellite/meteor_shield/sci category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -584,7 +602,7 @@ desc = "A disk containing debugging programming to solve and monitor meteors more effectively." id = "meteor_disk" build_type = PROTOLATHE - materials = list(MAT_METAL = 1500, MAT_GLASS = 1500, MAT_SILVER = 2500, MAT_GOLD = 1000) + materials = list(/datum/material/iron = 1500, /datum/material/glass = 1500, /datum/material/silver = 2500, /datum/material/gold = 1000) build_path = /obj/item/disk/meteor category = list("Electronics") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING diff --git a/code/modules/research/designs/power_designs.dm b/code/modules/research/designs/power_designs.dm index 1dbd111785..3403d96049 100644 --- a/code/modules/research/designs/power_designs.dm +++ b/code/modules/research/designs/power_designs.dm @@ -7,7 +7,7 @@ desc = "A basic power cell that holds 1 MJ of energy." id = "basic_cell" build_type = PROTOLATHE | AUTOLATHE |MECHFAB - materials = list(MAT_METAL = 700, MAT_GLASS = 50) + materials = list(/datum/material/iron = 700, /datum/material/glass = 50) construction_time=100 build_path = /obj/item/stock_parts/cell/empty category = list("Misc","Power Designs","Machinery","initial") @@ -18,7 +18,7 @@ desc = "A power cell that holds 10 MJ of energy." id = "high_cell" build_type = PROTOLATHE | AUTOLATHE | MECHFAB - materials = list(MAT_METAL = 700, MAT_GLASS = 60) + materials = list(/datum/material/iron = 700, /datum/material/glass = 60) construction_time=100 build_path = /obj/item/stock_parts/cell/high/empty category = list("Misc","Power Designs") @@ -29,7 +29,7 @@ desc = "A power cell that holds 20 MJ of energy." id = "super_cell" build_type = PROTOLATHE | MECHFAB - materials = list(MAT_METAL = 700, MAT_GLASS = 70) + materials = list(/datum/material/iron = 700, /datum/material/glass = 70) construction_time=100 build_path = /obj/item/stock_parts/cell/super/empty category = list("Misc","Power Designs") @@ -40,7 +40,7 @@ desc = "A power cell that holds 30 MJ of energy." id = "hyper_cell" build_type = PROTOLATHE | MECHFAB - materials = list(MAT_METAL = 700, MAT_GOLD = 150, MAT_SILVER = 150, MAT_GLASS = 80) + materials = list(/datum/material/iron = 700, /datum/material/gold = 150, /datum/material/silver = 150, /datum/material/glass = 80) construction_time=100 build_path = /obj/item/stock_parts/cell/hyper/empty category = list("Misc","Power Designs") @@ -51,7 +51,7 @@ desc = "A power cell that holds 40 MJ of energy." id = "bluespace_cell" build_type = PROTOLATHE | MECHFAB - materials = list(MAT_METAL = 800, MAT_GOLD = 120, MAT_GLASS = 160, MAT_DIAMOND = 160, MAT_TITANIUM = 300, MAT_BLUESPACE = 100) + materials = list(/datum/material/iron = 800, /datum/material/gold = 120, /datum/material/glass = 160, /datum/material/diamond = 160, /datum/material/titanium = 300, /datum/material/bluespace = 100) construction_time=100 build_path = /obj/item/stock_parts/cell/bluespace/empty category = list("Misc","Power Designs") @@ -62,7 +62,7 @@ desc = "The NT-75 Electromagnetic Power Inducer can wirelessly induce electric charge in an object, allowing you to recharge power cells without having to remove them." id = "inducer" build_type = PROTOLATHE - materials = list(MAT_METAL = 3000, MAT_GLASS = 1000) + materials = list(/datum/material/iron = 3000, /datum/material/glass = 1000) build_path = /obj/item/inducer/sci category = list("Power Designs") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -72,7 +72,7 @@ desc = "The improved NT-8475 Electromagnetic Power Inducer can this one has been SCIENCED to allow for combat. It still comes printed with SCIENCED colors!" id = "combatinducer" build_type = PROTOLATHE - materials = list(MAT_METAL = 13000, MAT_GLASS = 10000, MAT_SILVER = 1500, MAT_GOLD = 1250, MAT_DIAMOND = 500, MAT_TITANIUM = 1200) + materials = list(/datum/material/iron = 13000, /datum/material/glass = 10000, /datum/material/silver = 1500, /datum/material/gold = 1250, /datum/material/diamond = 500, /datum/material/titanium = 1200) build_path = /obj/item/inducer/sci/combat/dry category = list("Power Designs") departmental_flags = DEPARTMENTAL_FLAG_SECURITY diff --git a/code/modules/research/designs/smelting_designs.dm b/code/modules/research/designs/smelting_designs.dm index 64dcb5f754..3c83698fd1 100644 --- a/code/modules/research/designs/smelting_designs.dm +++ b/code/modules/research/designs/smelting_designs.dm @@ -4,7 +4,7 @@ name = "Plasma + Iron alloy" id = "plasteel" build_type = SMELTER | PROTOLATHE - materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT, MAT_PLASMA = MINERAL_MATERIAL_AMOUNT) + materials = list(/datum/material/iron = MINERAL_MATERIAL_AMOUNT, /datum/material/plasma = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/plasteel category = list("initial", "Stock Parts") departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SECURITY @@ -14,7 +14,7 @@ name = "Plasma + Titanium alloy" id = "plastitanium" build_type = SMELTER | PROTOLATHE - materials = list(MAT_TITANIUM = MINERAL_MATERIAL_AMOUNT, MAT_PLASMA = MINERAL_MATERIAL_AMOUNT) + materials = list(/datum/material/titanium = MINERAL_MATERIAL_AMOUNT, /datum/material/plasma = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/mineral/plastitanium category = list("initial", "Stock Parts") departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -24,7 +24,7 @@ name = "Plasma + Glass alloy" id = "plasmaglass" build_type = SMELTER | PROTOLATHE - materials = list(MAT_PLASMA = MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS = MINERAL_MATERIAL_AMOUNT) + materials = list(/datum/material/plasma = MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/plasmaglass category = list("initial", "Stock Parts") departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -34,7 +34,7 @@ name = "Plasma + Metal + Glass alloy" id = "plasmareinforcedglass" build_type = SMELTER | PROTOLATHE - materials = list(MAT_PLASMA = MINERAL_MATERIAL_AMOUNT * 0.5, MAT_METAL = MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS = MINERAL_MATERIAL_AMOUNT) + materials = list(/datum/material/plasma = MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/iron = MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/plasmarglass category = list("initial", "Stock Parts") departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -44,7 +44,7 @@ name = "Titanium + Glass alloy" id = "titaniumglass" build_type = SMELTER | PROTOLATHE - materials = list(MAT_TITANIUM = MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS = MINERAL_MATERIAL_AMOUNT) + materials = list(/datum/material/titanium = MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/titaniumglass category = list("initial", "Stock Parts") departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -54,7 +54,7 @@ name = "Plasma + Titanium + Glass alloy" id = "plastitaniumglass" build_type = SMELTER | PROTOLATHE - materials = list(MAT_PLASMA = MINERAL_MATERIAL_AMOUNT * 0.5, MAT_TITANIUM = MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS = MINERAL_MATERIAL_AMOUNT) + materials = list(/datum/material/plasma = MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/titanium = MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/plastitaniumglass category = list("initial", "Stock Parts") departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -65,7 +65,7 @@ desc = "A sheet of reverse-engineered alien alloy." id = "alienalloy" build_type = PROTOLATHE | SMELTER - materials = list(MAT_METAL = 4000, MAT_PLASMA = 4000) + materials = list(/datum/material/iron = 4000, /datum/material/plasma = 4000) build_path = /obj/item/stack/sheet/mineral/abductor category = list("Stock Parts") departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING diff --git a/code/modules/research/designs/stock_parts_designs.dm b/code/modules/research/designs/stock_parts_designs.dm index 6526599179..7392f83975 100644 --- a/code/modules/research/designs/stock_parts_designs.dm +++ b/code/modules/research/designs/stock_parts_designs.dm @@ -7,7 +7,7 @@ desc = "Special mechanical module made to store, sort, and apply standard machine parts." id = "rped" build_type = PROTOLATHE - materials = list(MAT_METAL = 10000, MAT_GLASS = 5000) //hardcore + materials = list(/datum/material/iron = 10000, /datum/material/glass = 5000) //hardcore build_path = /obj/item/storage/part_replacer category = list("Stock Parts") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE @@ -17,7 +17,7 @@ desc = "Powered by bluespace technology, this RPED variant can upgrade buildings from a distance, without needing to remove the panel first." id = "bs_rped" build_type = PROTOLATHE - materials = list(MAT_METAL = 15000, MAT_GLASS = 5000, MAT_SILVER = 2500) //hardcore + materials = list(/datum/material/iron = 15000, /datum/material/glass = 5000, /datum/material/silver = 2500) //hardcore build_path = /obj/item/storage/part_replacer/bluespace category = list("Stock Parts") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE @@ -28,7 +28,7 @@ desc = "A stock part used in the construction of various devices." id = "basic_capacitor" build_type = PROTOLATHE | AUTOLATHE - materials = list(MAT_METAL = 100, MAT_GLASS = 100) + materials = list(/datum/material/iron = 100, /datum/material/glass = 100) build_path = /obj/item/stock_parts/capacitor category = list("Stock Parts","Machinery","initial") lathe_time_factor = 0.2 @@ -39,7 +39,7 @@ desc = "A stock part used in the construction of various devices." id = "adv_capacitor" build_type = PROTOLATHE - materials = list(MAT_METAL = 150, MAT_GLASS = 150) + materials = list(/datum/material/iron = 150, /datum/material/glass = 150) build_path = /obj/item/stock_parts/capacitor/adv category = list("Stock Parts") lathe_time_factor = 0.2 @@ -50,7 +50,7 @@ desc = "A stock part used in the construction of various devices." id = "super_capacitor" build_type = PROTOLATHE - materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_GOLD = 100) + materials = list(/datum/material/iron = 200, /datum/material/glass = 200, /datum/material/gold = 100) build_path = /obj/item/stock_parts/capacitor/super category = list("Stock Parts") lathe_time_factor = 0.2 @@ -61,7 +61,7 @@ desc = "A stock part used in the construction of various devices." id = "quadratic_capacitor" build_type = PROTOLATHE - materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_GOLD = 100, MAT_DIAMOND = 100) + materials = list(/datum/material/iron = 200, /datum/material/glass = 200, /datum/material/gold = 100, /datum/material/diamond = 100) build_path = /obj/item/stock_parts/capacitor/quadratic category = list("Stock Parts") lathe_time_factor = 0.2 @@ -73,7 +73,7 @@ desc = "A stock part used in the construction of various devices." id = "basic_scanning" build_type = PROTOLATHE | AUTOLATHE - materials = list(MAT_METAL = 100, MAT_GLASS = 50) + materials = list(/datum/material/iron = 100, /datum/material/glass = 50) build_path = /obj/item/stock_parts/scanning_module category = list("Stock Parts","Machinery","initial") lathe_time_factor = 0.2 @@ -84,7 +84,7 @@ desc = "A stock part used in the construction of various devices." id = "adv_scanning" build_type = PROTOLATHE - materials = list(MAT_METAL = 150, MAT_GLASS = 100) + materials = list(/datum/material/iron = 150, /datum/material/glass = 100) build_path = /obj/item/stock_parts/scanning_module/adv category = list("Stock Parts") lathe_time_factor = 0.2 @@ -95,7 +95,7 @@ desc = "A stock part used in the construction of various devices." id = "phasic_scanning" build_type = PROTOLATHE - materials = list(MAT_METAL = 200, MAT_GLASS = 150, MAT_SILVER = 60) + materials = list(/datum/material/iron = 200, /datum/material/glass = 150, /datum/material/silver = 60) build_path = /obj/item/stock_parts/scanning_module/phasic category = list("Stock Parts") lathe_time_factor = 0.2 @@ -106,7 +106,7 @@ desc = "A stock part used in the construction of various devices." id = "triphasic_scanning" build_type = PROTOLATHE - materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_DIAMOND = 30, MAT_BLUESPACE = 30) + materials = list(/datum/material/iron = 200, /datum/material/glass = 200, /datum/material/diamond = 30, /datum/material/bluespace = 30) build_path = /obj/item/stock_parts/scanning_module/triphasic category = list("Stock Parts") lathe_time_factor = 0.2 @@ -118,7 +118,7 @@ desc = "A stock part used in the construction of various devices." id = "micro_mani" build_type = PROTOLATHE | AUTOLATHE - materials = list(MAT_METAL = 100) + materials = list(/datum/material/iron = 100) build_path = /obj/item/stock_parts/manipulator category = list("Stock Parts","Machinery","initial") lathe_time_factor = 0.2 @@ -129,7 +129,7 @@ desc = "A stock part used in the construction of various devices." id = "nano_mani" build_type = PROTOLATHE - materials = list(MAT_METAL = 150) + materials = list(/datum/material/iron = 150) build_path = /obj/item/stock_parts/manipulator/nano category = list("Stock Parts") lathe_time_factor = 0.2 @@ -140,7 +140,7 @@ desc = "A stock part used in the construction of various devices." id = "pico_mani" build_type = PROTOLATHE - materials = list(MAT_METAL = 200) + materials = list(/datum/material/iron = 200) build_path = /obj/item/stock_parts/manipulator/pico category = list("Stock Parts") lathe_time_factor = 0.2 @@ -151,7 +151,7 @@ desc = "A stock part used in the construction of various devices." id = "femto_mani" build_type = PROTOLATHE - materials = list(MAT_METAL = 200, MAT_DIAMOND = 30, MAT_TITANIUM = 30) + materials = list(/datum/material/iron = 200, /datum/material/diamond = 30, /datum/material/titanium = 30) build_path = /obj/item/stock_parts/manipulator/femto category = list("Stock Parts") lathe_time_factor = 0.2 @@ -163,7 +163,7 @@ desc = "A stock part used in the construction of various devices." id = "basic_micro_laser" build_type = PROTOLATHE | AUTOLATHE - materials = list(MAT_METAL = 100, MAT_GLASS = 50) + materials = list(/datum/material/iron = 100, /datum/material/glass = 50) build_path = /obj/item/stock_parts/micro_laser category = list("Stock Parts","Machinery","initial") lathe_time_factor = 0.2 @@ -174,7 +174,7 @@ desc = "A stock part used in the construction of various devices." id = "high_micro_laser" build_type = PROTOLATHE - materials = list(MAT_METAL = 150, MAT_GLASS = 100) + materials = list(/datum/material/iron = 150, /datum/material/glass = 100) build_path = /obj/item/stock_parts/micro_laser/high category = list("Stock Parts") lathe_time_factor = 0.2 @@ -185,7 +185,7 @@ desc = "A stock part used in the construction of various devices." id = "ultra_micro_laser" build_type = PROTOLATHE - materials = list(MAT_METAL = 200, MAT_GLASS = 150, MAT_URANIUM = 60) + materials = list(/datum/material/iron = 200, /datum/material/glass = 150, /datum/material/uranium = 60) build_path = /obj/item/stock_parts/micro_laser/ultra category = list("Stock Parts") lathe_time_factor = 0.2 @@ -196,7 +196,7 @@ desc = "A stock part used in the construction of various devices." id = "quadultra_micro_laser" build_type = PROTOLATHE - materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_URANIUM = 100, MAT_DIAMOND = 60) + materials = list(/datum/material/iron = 200, /datum/material/glass = 200, /datum/material/uranium = 100, /datum/material/diamond = 60) build_path = /obj/item/stock_parts/micro_laser/quadultra category = list("Stock Parts") lathe_time_factor = 0.2 @@ -207,7 +207,7 @@ desc = "A stock part used in the construction of various devices." id = "basic_matter_bin" build_type = PROTOLATHE | AUTOLATHE - materials = list(MAT_METAL = 100) + materials = list(/datum/material/iron = 100) build_path = /obj/item/stock_parts/matter_bin category = list("Stock Parts","Machinery","initial") lathe_time_factor = 0.2 @@ -218,7 +218,7 @@ desc = "A stock part used in the construction of various devices." id = "adv_matter_bin" build_type = PROTOLATHE - materials = list(MAT_METAL = 150) + materials = list(/datum/material/iron = 150) build_path = /obj/item/stock_parts/matter_bin/adv category = list("Stock Parts") lathe_time_factor = 0.2 @@ -229,7 +229,7 @@ desc = "A stock part used in the construction of various devices." id = "super_matter_bin" build_type = PROTOLATHE - materials = list(MAT_METAL = 200) + materials = list(/datum/material/iron = 200) build_path = /obj/item/stock_parts/matter_bin/super category = list("Stock Parts") lathe_time_factor = 0.2 @@ -240,7 +240,7 @@ desc = "A stock part used in the construction of various devices." id = "bluespace_matter_bin" build_type = PROTOLATHE - materials = list(MAT_METAL = 250, MAT_DIAMOND = 100, MAT_BLUESPACE = 100) + materials = list(/datum/material/iron = 250, /datum/material/diamond = 100, /datum/material/bluespace = 100) build_path = /obj/item/stock_parts/matter_bin/bluespace category = list("Stock Parts") lathe_time_factor = 0.2 @@ -252,7 +252,7 @@ desc = "A compact module capable of sensing extradimensional activity." id = "s-ansible" build_type = PROTOLATHE - materials = list(MAT_METAL = 100, MAT_SILVER = 100) + materials = list(/datum/material/iron = 100, /datum/material/silver = 100) build_path = /obj/item/stock_parts/subspace/ansible category = list("Stock Parts") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE @@ -262,7 +262,7 @@ desc = "A tiny device capable of filtering and converting super-intense radiowaves." id = "s-filter" build_type = PROTOLATHE - materials = list(MAT_METAL = 100, MAT_SILVER = 100) + materials = list(/datum/material/iron = 100, /datum/material/silver = 100) build_path = /obj/item/stock_parts/subspace/filter category = list("Stock Parts") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE @@ -272,7 +272,7 @@ desc = "A compact micro-machine capable of amplifying weak subspace transmissions." id = "s-amplifier" build_type = PROTOLATHE - materials = list(MAT_METAL = 100, MAT_GOLD = 100, MAT_URANIUM = 100) + materials = list(/datum/material/iron = 100, /datum/material/gold = 100, /datum/material/uranium = 100) build_path = /obj/item/stock_parts/subspace/amplifier category = list("Stock Parts") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE @@ -282,7 +282,7 @@ desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves." id = "s-treatment" build_type = PROTOLATHE - materials = list(MAT_METAL = 100, MAT_SILVER = 200) + materials = list(/datum/material/iron = 100, /datum/material/silver = 200) build_path = /obj/item/stock_parts/subspace/treatment category = list("Stock Parts") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE @@ -292,7 +292,7 @@ desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths." id = "s-analyzer" build_type = PROTOLATHE - materials = list(MAT_METAL = 100, MAT_GOLD = 100) + materials = list(/datum/material/iron = 100, /datum/material/gold = 100) build_path = /obj/item/stock_parts/subspace/analyzer category = list("Stock Parts") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE @@ -302,7 +302,7 @@ desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths." id = "s-crystal" build_type = PROTOLATHE - materials = list(MAT_GLASS = 800, MAT_SILVER = 100, MAT_GOLD = 100) + materials = list(/datum/material/glass = 800, /datum/material/silver = 100, /datum/material/gold = 100) build_path = /obj/item/stock_parts/subspace/crystal category = list("Stock Parts") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE @@ -312,7 +312,7 @@ desc = "A large piece of equipment used to open a window into the subspace dimension." id = "s-transmitter" build_type = PROTOLATHE - materials = list(MAT_GLASS = 100, MAT_SILVER = 100, MAT_URANIUM = 100) + materials = list(/datum/material/glass = 100, /datum/material/silver = 100, /datum/material/uranium = 100) build_path = /obj/item/stock_parts/subspace/transmitter category = list("Stock Parts") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE diff --git a/code/modules/research/designs/tool_designs.dm b/code/modules/research/designs/tool_designs.dm index cf1c0563d5..2d938bc38c 100644 --- a/code/modules/research/designs/tool_designs.dm +++ b/code/modules/research/designs/tool_designs.dm @@ -7,7 +7,7 @@ desc = "Adds the computer frame and machine frame to the RCD." id = "rcd_upgrade_frames" build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 2500, MAT_SILVER = 1500, MAT_TITANIUM = 2000) + materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500, /datum/material/silver = 1500, /datum/material/titanium = 2000) build_path = /obj/item/rcd_upgrade/frames category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -17,7 +17,7 @@ desc = "Adds the simple circuits to the RCD." id = "rcd_upgrade_simple_circuits" build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 2500, MAT_SILVER = 1500, MAT_TITANIUM = 2000) + materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500, /datum/material/silver = 1500, /datum/material/titanium = 2000) build_path = /obj/item/rcd_upgrade/simple_circuits category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -27,7 +27,7 @@ desc = "A tool that can construct and deconstruct walls, airlocks and floors on the fly." id = "rcd_loaded" build_type = PROTOLATHE - materials = list(MAT_METAL = 36000) // costs more than what it did in the autolathe, this one comes loaded. + materials = list(/datum/material/iron = 36000) // costs more than what it did in the autolathe, this one comes loaded. build_path = /obj/item/construction/rcd/loaded category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -37,7 +37,7 @@ desc = "A tool that can construct and deconstruct pipes on the fly." id = "rpd" build_type = PROTOLATHE - materials = list(MAT_METAL = 75000, MAT_GLASS = 37500) + materials = list(/datum/material/iron = 75000, /datum/material/glass = 37500) build_path = /obj/item/pipe_dispenser category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -47,7 +47,7 @@ desc = "A small electric hand drill with an interchangeable screwdriver and bolt bit" id = "handdrill" build_type = PROTOLATHE - materials = list(MAT_METAL = 3500, MAT_SILVER = 1500, MAT_TITANIUM = 2500) + materials = list(/datum/material/iron = 3500, /datum/material/silver = 1500, /datum/material/titanium = 2500) build_path = /obj/item/screwdriver/power category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -58,7 +58,7 @@ id = "jawsoflife" // added one more requirment since the Jaws of Life are a bit OP build_path = /obj/item/crowbar/power build_type = PROTOLATHE - materials = list(MAT_METAL = 4500, MAT_SILVER = 2500, MAT_TITANIUM = 3500) + materials = list(/datum/material/iron = 4500, /datum/material/silver = 2500, /datum/material/titanium = 3500) category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -67,7 +67,7 @@ desc = "An experimental welder capable of self-fuel generation." id = "exwelder" build_type = PROTOLATHE - materials = list(MAT_METAL = 1000, MAT_GLASS = 500, MAT_PLASMA = 1500, MAT_URANIUM = 200) + materials = list(/datum/material/iron = 1000, /datum/material/glass = 500, /datum/material/plasma = 1500, /datum/material/uranium = 200) build_path = /obj/item/weldingtool/experimental category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -82,7 +82,7 @@ id = "alien_wrench" build_path = /obj/item/wrench/abductor build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000) + materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 1000, /datum/material/titanium = 2000, /datum/material/diamond = 2000) category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -92,7 +92,7 @@ id = "alien_wirecutters" build_path = /obj/item/wirecutters/abductor build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000) + materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 1000, /datum/material/titanium = 2000, /datum/material/diamond = 2000) category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -102,7 +102,7 @@ id = "alien_screwdriver" build_path = /obj/item/screwdriver/abductor build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000) + materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 1000, /datum/material/titanium = 2000, /datum/material/diamond = 2000) category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -112,7 +112,7 @@ id = "alien_crowbar" build_path = /obj/item/crowbar/abductor build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000) + materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 1000, /datum/material/titanium = 2000, /datum/material/diamond = 2000) category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -122,7 +122,7 @@ id = "alien_welder" build_path = /obj/item/weldingtool/abductor build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000) + materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 5000, /datum/material/titanium = 2000, /datum/material/diamond = 2000) category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -132,7 +132,7 @@ id = "alien_multitool" build_path = /obj/item/multitool/abductor build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000) + materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 5000, /datum/material/titanium = 2000, /datum/material/diamond = 2000) category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING @@ -146,7 +146,7 @@ id = "alien_scalpel" build_path = /obj/item/scalpel/alien build_type = PROTOLATHE - materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500) + materials = list(/datum/material/iron = 2000, /datum/material/silver = 1500, /datum/material/plasma = 500, /datum/material/titanium = 1500) category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -156,7 +156,7 @@ id = "alien_hemostat" build_path = /obj/item/hemostat/alien build_type = PROTOLATHE - materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500) + materials = list(/datum/material/iron = 2000, /datum/material/silver = 1500, /datum/material/plasma = 500, /datum/material/titanium = 1500) category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -166,7 +166,7 @@ id = "alien_retractor" build_path = /obj/item/retractor/alien build_type = PROTOLATHE - materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500) + materials = list(/datum/material/iron = 2000, /datum/material/silver = 1500, /datum/material/plasma = 500, /datum/material/titanium = 1500) category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -176,7 +176,7 @@ id = "alien_saw" build_path = /obj/item/circular_saw/alien build_type = PROTOLATHE - materials = list(MAT_METAL = 10000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 1500) + materials = list(/datum/material/iron = 10000, /datum/material/silver = 2500, /datum/material/plasma = 1000, /datum/material/titanium = 1500) category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -186,7 +186,7 @@ id = "alien_drill" build_path = /obj/item/surgicaldrill/alien build_type = PROTOLATHE - materials = list(MAT_METAL = 10000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 1500) + materials = list(/datum/material/iron = 10000, /datum/material/silver = 2500, /datum/material/plasma = 1000, /datum/material/titanium = 1500) category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -196,7 +196,7 @@ id = "alien_cautery" build_path = /obj/item/cautery/alien build_type = PROTOLATHE - materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500) + materials = list(/datum/material/iron = 2000, /datum/material/silver = 1500, /datum/material/plasma = 500, /datum/material/titanium = 1500) category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -210,7 +210,7 @@ desc = "A large surgery drape made of plastic." id = "drapes" build_type = PROTOLATHE - materials = list(MAT_PLASTIC = 2500) + materials = list(/datum/material/plastic = 2500) build_path = /obj/item/surgical_drapes category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE @@ -220,7 +220,7 @@ desc = "An almagation of rods and gears, able to function as both a surgical clamp and retractor. " id = "retractor_adv" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 1500, MAT_GOLD = 1000) + materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/silver = 1500, /datum/material/gold = 1000) build_path = /obj/item/retractor/advanced category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE @@ -230,7 +230,7 @@ desc = "It projects a high power laser used for medical applications." id = "surgicaldrill_adv" build_type = PROTOLATHE - materials = list(MAT_METAL = 2500, MAT_GLASS = 2500, MAT_SILVER = 6000, MAT_GOLD = 5500, MAT_DIAMOND = 3500) + materials = list(/datum/material/iron = 2500, /datum/material/glass = 2500, /datum/material/silver = 6000, /datum/material/gold = 5500, /datum/material/diamond = 3500) build_path = /obj/item/surgicaldrill/advanced category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE @@ -240,7 +240,7 @@ desc = "An advanced scalpel which uses laser technology to cut." id = "scalpel_adv" build_type = PROTOLATHE - materials = list(MAT_METAL = 1500, MAT_GLASS = 1500, MAT_SILVER = 4000, MAT_GOLD = 2500) + materials = list(/datum/material/iron = 1500, /datum/material/glass = 1500, /datum/material/silver = 4000, /datum/material/gold = 2500) build_path = /obj/item/scalpel/advanced category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 467679fea6..658e108288 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -22,7 +22,7 @@ desc = "Designed to quickly reload revolvers. TRAC bullets embed a tracking implant within the target's body." id = "c38_trac" build_type = PROTOLATHE - materials = list(MAT_METAL = 20000, MAT_SILVER = 5000, MAT_GOLD = 1000) + materials = list(/datum/material/iron = 20000, /datum/material/silver = 5000, /datum/material/gold = 1000) build_path = /obj/item/ammo_box/c38/trac category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -32,7 +32,7 @@ desc = "Designed to quickly reload revolvers. Hot Shot bullets contain an incendiary payload." id = "c38_hotshot" build_type = PROTOLATHE - materials = list(MAT_METAL = 20000, MAT_PLASMA = 5000) + materials = list(/datum/material/iron = 20000, /datum/material/plasma = 5000) build_path = /obj/item/ammo_box/c38/hotshot category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -42,7 +42,7 @@ desc = "Designed to quickly reload revolvers. Iceblox bullets contain a cryogenic payload." id = "c38_iceblox" build_type = PROTOLATHE - materials = list(MAT_METAL = 20000, MAT_PLASMA = 5000) + materials = list(/datum/material/iron = 20000, /datum/material/plasma = 5000) build_path = /obj/item/ammo_box/c38/iceblox category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -56,7 +56,7 @@ desc = "A 24-round magazine for the Magrifle." id = "mag_magrifle" build_type = PROTOLATHE - materials = list(MAT_METAL = 8000, MAT_SILVER = 1000) + materials = list(/datum/material/iron = 8000, /datum/material/silver = 1000) build_path = /obj/item/ammo_box/magazine/mmag/lethal category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -65,7 +65,7 @@ name = "Magrifle Magazine (Non-Lethal)" desc = "A 24- round non-lethal magazine for the Magrifle." id = "mag_magrifle_nl" - materials = list(MAT_METAL = 6000, MAT_SILVER = 500, MAT_TITANIUM = 500) + materials = list(/datum/material/iron = 6000, /datum/material/silver = 500, /datum/material/titanium = 500) build_path = /obj/item/ammo_box/magazine/mmag /datum/design/mag_magpistol @@ -73,7 +73,7 @@ desc = "A 14 round magazine for the Magpistol." id = "mag_magpistol" build_type = PROTOLATHE - materials = list(MAT_METAL = 4000, MAT_SILVER = 500) + materials = list(/datum/material/iron = 4000, /datum/material/silver = 500) build_path = /obj/item/ammo_box/magazine/mmag/small/lethal category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -82,7 +82,7 @@ name = "Magpistol Magazine (Non-Lethal)" desc = "A 14 round non-lethal magazine for the Magpistol." id = "mag_magpistol_nl" - materials = list(MAT_METAL = 3000, MAT_SILVER = 250, MAT_TITANIUM = 250) + materials = list(/datum/material/iron = 3000, /datum/material/silver = 250, /datum/material/titanium = 250) build_path = /obj/item/ammo_box/magazine/mmag/small ////////////// @@ -94,7 +94,7 @@ desc = "A 20 round magazine for the out of date security WT-550 Semi-Auto SMG." id = "mag_oldsmg" build_type = PROTOLATHE - materials = list(MAT_METAL = 4000) + materials = list(/datum/material/iron = 4000) build_path = /obj/item/ammo_box/magazine/wt550m9 category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -103,7 +103,7 @@ name = "WT-550 Semi-Auto SMG Armour Piercing Magazine (4.6x30mm AP)" desc = "A 20 round armour piercing magazine for the out of date security WT-550 Semi-Auto SMG." id = "mag_oldsmg_ap" - materials = list(MAT_METAL = 6000, MAT_SILVER = 600) + materials = list(/datum/material/iron = 6000, /datum/material/silver = 600) build_path = /obj/item/ammo_box/magazine/wt550m9/wtap departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -111,7 +111,7 @@ name = "WT-550 Semi-Auto SMG Incendiary Magazine (4.6x30mm IC)" desc = "A 20 round armour piercing magazine for the out of date security WT-550 Semi-Auto SMG." id = "mag_oldsmg_ic" - materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_GLASS = 1000) + materials = list(/datum/material/iron = 6000, /datum/material/silver = 600, /datum/material/glass = 1000) build_path = /obj/item/ammo_box/magazine/wt550m9/wtic departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -119,7 +119,7 @@ name = "WT-550 Semi-Auto SMG Uranium Magazine (4.6x30mm TX)" desc = "A 20 round uranium tipped magazine for the out of date security WT-550 Semi-Auto SMG." id = "mag_oldsmg_tx" - materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_URANIUM = 2000) + materials = list(/datum/material/iron = 6000, /datum/material/silver = 600, /datum/material/uranium = 2000) build_path = /obj/item/ammo_box/magazine/wt550m9/wttx departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -127,7 +127,7 @@ name = "WT-550 Semi-Auto SMG rubberbullets Magazine (4.6x30mm rubber)" desc = "A 20 round rubber shots magazine for the out of date security WT-550 Semi-Auto SMG" id = "mag_oldsmg_rubber" - materials = list(MAT_METAL = 6000) + materials = list(/datum/material/iron = 6000) build_path = /obj/item/ammo_box/magazine/wt550m9/wtrubber departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -176,7 +176,7 @@ desc = "A stunning shell for a shotgun." id = "stunshell" build_type = PROTOLATHE - materials = list(MAT_METAL = 200) + materials = list(/datum/material/iron = 200) build_path = /obj/item/ammo_casing/shotgun/stunslug category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_SCIENCE @@ -186,7 +186,7 @@ desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects." id = "techshotshell" build_type = PROTOLATHE - materials = list(MAT_METAL = 1000, MAT_GLASS = 200) + materials = list(/datum/material/iron = 1000, /datum/material/glass = 200) build_path = /obj/item/ammo_casing/shotgun/techshell category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_SCIENCE @@ -196,7 +196,7 @@ desc = "A shotgun dart designed with similar internals to that of a cryostatis beaker, allowing reagents to not react when inside." id = "shotgundartcryostatis" build_type = PROTOLATHE - materials = list(MAT_METAL = 3500) + materials = list(/datum/material/iron = 3500) build_path = /obj/item/ammo_casing/shotgun/dart/noreact category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -210,7 +210,7 @@ desc = "This safety firing pin allows firearms to be operated within proximity to a firing range." id = "pin_testing" build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 300) + materials = list(/datum/material/iron = 500, /datum/material/glass = 300) build_path = /obj/item/firing_pin/test_range category = list("Firing Pins") departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_SCIENCE @@ -220,7 +220,7 @@ desc = "This is a security firing pin which only authorizes users who are mindshield-implanted." id = "pin_loyalty" build_type = PROTOLATHE - materials = list(MAT_SILVER = 600, MAT_DIAMOND = 600, MAT_URANIUM = 200) + materials = list(/datum/material/silver = 600, /datum/material/diamond = 600, /datum/material/uranium = 200) build_path = /obj/item/firing_pin/implant/mindshield category = list("Firing Pins") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -230,7 +230,7 @@ desc = "This is a security firing pin which only authorizes users who are off station." id = "pin_away" build_type = PROTOLATHE - materials = list(MAT_METAL = 1500, MAT_GLASS = 2000) + materials = list(/datum/material/iron = 1500, /datum/material/glass = 2000) build_path = /obj/item/firing_pin/away category = list("Firing Pins") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -244,7 +244,7 @@ desc = "Beefed up version of a standard laser gun." id = "lasercarbine" build_type = PROTOLATHE - materials = list(MAT_METAL = 15000, MAT_GLASS = 10000, MAT_GOLD = 2500, MAT_SILVER = 2500) + materials = list(/datum/material/iron = 15000, /datum/material/glass = 10000, /datum/material/gold = 2500, /datum/material/silver = 2500) build_path = /obj/item/gun/energy/laser/carbine/nopin category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -254,7 +254,7 @@ desc = "A high-tech revolver that fires internal, reusable shock cartridges in a revolving cylinder. The cartridges can be recharged using conventional rechargers." id = "stunrevolver" build_type = PROTOLATHE - materials = list(MAT_METAL = 10000, MAT_GLASS = 10000, MAT_SILVER = 10000) + materials = list(/datum/material/iron = 10000, /datum/material/glass = 10000, /datum/material/silver = 10000) build_path = /obj/item/gun/energy/tesla_revolver category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -264,7 +264,7 @@ desc = "An energy gun with an experimental miniaturized reactor." id = "nuclear_gun" build_type = PROTOLATHE - materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 3000, MAT_TITANIUM = 1000) + materials = list(/datum/material/iron = 10000, /datum/material/glass = 2000, /datum/material/uranium = 3000, /datum/material/titanium = 1000) build_path = /obj/item/gun/energy/e_gun/nuclear category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -274,7 +274,7 @@ desc = "A powerful long ranged anti-material rifle that fires charged particle beams to obliterate targets." id = "beamrifle" build_type = PROTOLATHE - materials = list(MAT_METAL = 10000, MAT_GLASS = 5000, MAT_DIAMOND = 5000, MAT_URANIUM = 8000, MAT_SILVER = 4500, MAT_GOLD = 5000) + materials = list(/datum/material/iron = 10000, /datum/material/glass = 5000, /datum/material/diamond = 5000, /datum/material/uranium = 8000, /datum/material/silver = 4500, /datum/material/gold = 5000) build_path = /obj/item/gun/energy/beam_rifle category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -284,7 +284,7 @@ desc = "Your opponent will bubble into a messy pile of goop." id = "decloner" build_type = PROTOLATHE - materials = list(MAT_GOLD = 5000,MAT_URANIUM = 10000) + materials = list(/datum/material/gold = 5000,/datum/material/uranium = 10000) reagents_list = list(/datum/reagent/toxin/mutagen = 40) build_path = /obj/item/gun/energy/decloner category = list("Weapons") @@ -295,7 +295,7 @@ desc = "A gun that fires many syringes." id = "rapidsyringe" build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 1000) + materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000) build_path = /obj/item/gun/syringe/rapidsyringe category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL @@ -305,7 +305,7 @@ desc = "A gun that shoots temperature beam like projectiles to change temperature." id = "temp_gun" build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 500, MAT_SILVER = 3000) + materials = list(/datum/material/iron = 5000, /datum/material/glass = 500, /datum/material/silver = 3000) build_path = /obj/item/gun/energy/temperature category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -315,7 +315,7 @@ desc = "A tool that discharges controlled radiation which induces mutation in plant cells. Harmless to other organic life." id = "flora_gun" build_type = PROTOLATHE - materials = list(MAT_METAL = 2000, MAT_GLASS = 500) + materials = list(/datum/material/iron = 2000, /datum/material/glass = 500) reagents_list = list(/datum/reagent/radium = 20) build_path = /obj/item/gun/energy/floragun category = list("Weapons") @@ -326,7 +326,7 @@ desc = "Not quite as menacing as it sounds" id = "xray_laser" build_type = PROTOLATHE - materials = list(MAT_GOLD = 5000, MAT_URANIUM = 4000, MAT_METAL = 5000, MAT_TITANIUM = 2000, MAT_BLUESPACE = 2000) + materials = list(/datum/material/gold = 5000, /datum/material/uranium = 4000, /datum/material/iron = 5000, /datum/material/titanium = 2000, /datum/material/bluespace = 2000) build_path = /obj/item/gun/energy/xray category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -336,7 +336,7 @@ desc = "How to dismantle a cyborg : The gun." id = "ioncarbine" build_type = PROTOLATHE - materials = list(MAT_SILVER = 6000, MAT_METAL = 8000, MAT_URANIUM = 2000) + materials = list(/datum/material/silver = 6000, /datum/material/iron = 8000, /datum/material/uranium = 2000) build_path = /obj/item/gun/energy/ionrifle/carbine category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -346,7 +346,7 @@ desc = "A projector that emits high density quantum-coupled bluespace beams." id = "wormholeprojector" build_type = PROTOLATHE - materials = list(MAT_SILVER = 2000, MAT_METAL = 5000, MAT_DIAMOND = 2000, MAT_BLUESPACE = 3000) + materials = list(/datum/material/silver = 2000, /datum/material/iron = 5000, /datum/material/diamond = 2000, /datum/material/bluespace = 3000) build_path = /obj/item/gun/energy/wormhole_projector category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -356,7 +356,7 @@ desc = "A multi-mode device that blasts one-point bluespace-gravitational bolts that locally distort gravity." id = "gravitygun" build_type = PROTOLATHE - materials = list(MAT_SILVER = 8000, MAT_URANIUM = 8000, MAT_GLASS = 12000, MAT_METAL = 12000, MAT_DIAMOND = 3000, MAT_BLUESPACE = 3000) + materials = list(/datum/material/silver = 8000, /datum/material/uranium = 8000, /datum/material/glass = 12000, /datum/material/iron = 12000, /datum/material/diamond = 3000, /datum/material/bluespace = 3000) build_path = /obj/item/gun/energy/gravity_gun category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE @@ -366,7 +366,7 @@ desc = "A reverse-engineered energy crossbow favored by syndicate infiltration teams and carp hunters." id = "largecrossbow" build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 1500, MAT_URANIUM = 1500, MAT_SILVER = 1500) + materials = list(/datum/material/iron = 5000, /datum/material/glass = 1500, /datum/material/uranium = 1500, /datum/material/silver = 1500) build_path = /obj/item/gun/energy/kinetic_accelerator/crossbow/large category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -376,7 +376,7 @@ desc = "A weapon which fires ferromagnetic slugs." id = "magpistol" build_type = PROTOLATHE - materials = list(MAT_METAL = 7500, MAT_GLASS = 1000, MAT_URANIUM = 1000, MAT_TITANIUM = 5000, MAT_SILVER = 2000) + materials = list(/datum/material/iron = 7500, /datum/material/glass = 1000, /datum/material/uranium = 1000, /datum/material/titanium = 5000, /datum/material/silver = 2000) build_path = /obj/item/gun/ballistic/automatic/magrifle/pistol/nopin category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -386,7 +386,7 @@ desc = "An upscaled Magpistol in rifle form." id = "magrifle" build_type = PROTOLATHE - materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 2000, MAT_TITANIUM = 10000, MAT_SILVER = 4000, MAT_GOLD = 2000) + materials = list(/datum/material/iron = 10000, /datum/material/glass = 2000, /datum/material/uranium = 2000, /datum/material/titanium = 10000, /datum/material/silver = 4000, /datum/material/gold = 2000) build_path = /obj/item/gun/ballistic/automatic/magrifle/nopin category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -400,7 +400,7 @@ desc = "A grenade that affects a larger area and use larger containers." id = "large_Grenade" build_type = PROTOLATHE - materials = list(MAT_METAL = 3000) + materials = list(/datum/material/iron = 3000) build_path = /obj/item/grenade/chem_grenade/large category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE @@ -410,7 +410,7 @@ desc = "An advanced grenade that is able to self ignite its mixture." id = "pyro_Grenade" build_type = PROTOLATHE - materials = list(MAT_METAL = 2000, MAT_PLASMA = 500) + materials = list(/datum/material/iron = 2000, /datum/material/plasma = 500) build_path = /obj/item/grenade/chem_grenade/pyro category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE @@ -420,7 +420,7 @@ desc = "An advanced grenade that rapidly cools its contents upon detonation." id = "cryo_Grenade" build_type = PROTOLATHE - materials = list(MAT_METAL = 2000, MAT_SILVER = 500) + materials = list(/datum/material/iron = 2000, /datum/material/silver = 500) build_path = /obj/item/grenade/chem_grenade/cryo category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE @@ -430,7 +430,7 @@ desc = "An advanced grenade that can be detonated several times, best used with a repeating igniter." id = "adv_Grenade" build_type = PROTOLATHE - materials = list(MAT_METAL = 3000, MAT_GLASS = 500) + materials = list(/datum/material/iron = 3000, /datum/material/glass = 500) build_path = /obj/item/grenade/chem_grenade/adv_release category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE @@ -444,7 +444,7 @@ desc = "An advanced riot shield made of lightweight materials that collapses for easy storage." id = "tele_shield" build_type = PROTOLATHE - materials = list(MAT_METAL = 4000, MAT_GLASS = 4000, MAT_SILVER = 300, MAT_TITANIUM = 200) + materials = list(/datum/material/iron = 4000, /datum/material/glass = 4000, /datum/material/silver = 300, /datum/material/titanium = 200) build_path = /obj/item/shield/riot/tele category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -454,7 +454,16 @@ desc = "A reverse-engineered suppressor that fits on most small arms with threaded barrels." id = "suppressor" build_type = PROTOLATHE - materials = list(MAT_METAL = 2000, MAT_SILVER = 500) + materials = list(/datum/material/iron = 2000, /datum/material/silver = 500) build_path = /obj/item/suppressor category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/cleric_mace + name = "Cleric Mace" + desc = "A mace fit for a cleric. Useful for bypassing plate armor, but too bulky for much else." + id = "cleric_mace" + build_type = AUTOLATHE + materials = list(MAT_CATEGORY_RIGID = 12000) + build_path = /obj/item/melee/cleric_mace + category = list("Imported") diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index 7dd7b76007..10566b7de2 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -61,12 +61,12 @@ Note: Must be placed within 3 tiles of the R&D Console . = 0 var/datum/component/material_container/storage = linked_console?.linked_lathe?.materials.mat_container if(storage) //Also sends salvaged materials to a linked protolathe, if any. - for(var/material in thing.materials) - var/can_insert = min((storage.max_amount - storage.total_amount), (max(thing.materials[material]*(decon_mod/10), thing.materials[material]))) - storage.insert_amount(can_insert, material) + for(var/material in thing.custom_materials) + var/can_insert = min((storage.max_amount - storage.total_amount), (min(thing.custom_materials[material]*(decon_mod/10), thing.custom_materials[material]))) + storage.insert_amount_mat(can_insert, material) . += can_insert if (.) - linked_console.linked_lathe.materials.silo_log(src, "reclaimed", 1, "[thing.name]", thing.materials) + linked_console.linked_lathe.materials.silo_log(src, "reclaimed", 1, "[thing.name]", thing.custom_materials) /obj/machinery/rnd/destructive_analyzer/proc/destroy_item(obj/item/thing, innermode = FALSE) if(QDELETED(thing) || QDELETED(src) || QDELETED(linked_console)) @@ -132,7 +132,7 @@ Note: Must be placed within 3 tiles of the R&D Console var/user_mode_string = "" if(length(point_value)) user_mode_string = " for [json_encode(point_value)] points" - else if(loaded_item.materials.len) + else if(loaded_item.custom_materials?.len) user_mode_string = " for material reclamation" var/choice = input("Are you sure you want to destroy [loaded_item][user_mode_string]?") in list("Proceed", "Cancel") if(choice == "Cancel") diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index fd68a393f9..b43abf97b2 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -430,8 +430,8 @@ visible_message("[exp_on] activates the crushing mechanism, [exp_on] is destroyed!") if(linked_console.linked_lathe) var/datum/component/material_container/linked_materials = linked_console.linked_lathe.GetComponent(/datum/component/material_container) - for(var/material in exp_on.materials) - linked_materials.insert_amount( min((linked_materials.max_amount - linked_materials.total_amount), (exp_on.materials[material])), material) + for(var/material in exp_on.custom_materials) + linked_materials.insert_amount_mat( min((linked_materials.max_amount - linked_materials.total_amount), (exp_on.custom_materials[material])), material) if(prob(EFFECT_PROB_LOW) && criticalReaction) visible_message("[src]'s crushing mechanism slowly and smoothly descends, flattening the [exp_on]!") new /obj/item/stack/sheet/plasteel(get_turf(pick(oview(1,src)))) diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm index 25e8b82cc4..41ed6a556e 100644 --- a/code/modules/research/machinery/_production.dm +++ b/code/modules/research/machinery/_production.dm @@ -29,6 +29,14 @@ materials = AddComponent(/datum/component/remote_materials, "lathe", mapload) RefreshParts() +/obj/machinery/rnd/production/Destroy() + materials = null + cached_designs = null + matching_designs = null + QDEL_NULL(stored_research) + host_research = null + return ..() + /obj/machinery/rnd/production/proc/update_research() host_research.copy_research_to(stored_research, TRUE) update_designs() @@ -51,10 +59,6 @@ popup.set_content(generate_ui()) popup.open() -/obj/machinery/rnd/production/Destroy() - QDEL_NULL(stored_research) - return ..() - /obj/machinery/rnd/production/proc/calculate_efficiency() efficiency_coeff = 1 if(reagents) //If reagents/materials aren't initialized, don't bother, we'll be doing this again after reagents init anyways. @@ -92,23 +96,24 @@ var/obj/O = new path(get_turf(src)) if(efficient_with(O.type) && isitem(O)) var/obj/item/I = O - I.materials = matlist.Copy() + I.material_flags |= MATERIAL_NO_EFFECTS //Find a better way to do this. + I.set_custom_materials(matlist.Copy()) SSblackbox.record_feedback("nested tally", "item_printed", amount, list("[type]", "[path]")) investigate_log("[key_name(user)] built [amount] of [path] at [src]([type]).", INVESTIGATE_RESEARCH) -/obj/machinery/rnd/production/proc/check_mat(datum/design/being_built, M) // now returns how many times the item can be built with the material +/obj/machinery/rnd/production/proc/check_mat(datum/design/being_built, var/mat) // now returns how many times the item can be built with the material if (!materials.mat_container) // no connected silo return 0 var/list/all_materials = being_built.reagents_list + being_built.materials - var/A = materials.mat_container.amount(M) + var/A = materials.mat_container.get_material_amount(mat) if(!A) - A = reagents.get_reagent_amount(M) + A = reagents.get_reagent_amount(mat) // these types don't have their .materials set in do_print, so don't allow // them to be constructed efficiently var/ef = efficient_with(being_built.build_path) ? efficiency_coeff : 1 - return round(A / max(1, all_materials[M] / ef)) + return round(A / max(1, all_materials[mat] / ef)) /obj/machinery/rnd/production/proc/efficient_with(path) return !ispath(path, /obj/item/stack/sheet) && !ispath(path, /obj/item/stack/ore/bluespace_crystal) @@ -152,7 +157,7 @@ if(!reagents.has_reagent(R, D.reagents_list[R]*amount/coeff)) say("Not enough reagents to complete prototype[amount > 1? "s" : ""].") return FALSE - materials.mat_container.use_amount(efficient_mats, amount) + materials.mat_container.use_materials(efficient_mats, amount) materials.silo_log(src, "built", -amount, "[D.name]", efficient_mats) for(var/R in D.reagents_list) reagents.remove_reagent(R, D.reagents_list[R]*amount/coeff) @@ -213,11 +218,13 @@ var/list/l = list() l += "

Material Storage:

" for(var/mat_id in materials.mat_container.materials) - var/datum/material/M = materials.mat_container.materials[mat_id] - l += "* [M.amount] of [M.name]: " - if(M.amount >= MINERAL_MATERIAL_AMOUNT) l += "Eject [RDSCREEN_NOBREAK]" - if(M.amount >= MINERAL_MATERIAL_AMOUNT*5) l += "5x [RDSCREEN_NOBREAK]" - if(M.amount >= MINERAL_MATERIAL_AMOUNT) l += "All[RDSCREEN_NOBREAK]" + var/datum/material/M = mat_id + var/amount = materials.mat_container.materials[mat_id] + var/ref = REF(M) + l += "* [amount] of [M.name]: " + if(amount >= MINERAL_MATERIAL_AMOUNT) l += "Eject [RDSCREEN_NOBREAK]" + if(amount >= MINERAL_MATERIAL_AMOUNT*5) l += "5x [RDSCREEN_NOBREAK]" + if(amount >= MINERAL_MATERIAL_AMOUNT) l += "All[RDSCREEN_NOBREAK]" l += "" l += "
[RDSCREEN_NOBREAK]" return l @@ -305,7 +312,8 @@ if(ls["disposeall"]) //Causes the protolathe to dispose of all it's reagents. reagents.clear_reagents() if(ls["ejectsheet"]) //Causes the protolathe to eject a sheet of material - eject_sheets(ls["ejectsheet"], ls["eject_amt"]) + var/datum/material/M = locate(ls["ejectsheet"]) + eject_sheets(M, ls["eject_amt"]) updateUsrDialog() /obj/machinery/rnd/production/proc/eject_sheets(eject_sheet, eject_amt) diff --git a/code/modules/research/nanites/nanite_programs/healing.dm b/code/modules/research/nanites/nanite_programs/healing.dm index 5114e156d8..70a1412b11 100644 --- a/code/modules/research/nanites/nanite_programs/healing.dm +++ b/code/modules/research/nanites/nanite_programs/healing.dm @@ -23,7 +23,7 @@ if(!parts.len) return for(var/obj/item/bodypart/L in parts) - if(L.heal_damage(0.5/parts.len, 0.5/parts.len, null, BODYPART_ORGANIC)) + if(L.heal_damage(0.5/parts.len, 0.5/parts.len)) host_mob.update_damage_overlays() else host_mob.adjustBruteLoss(-0.5, TRUE) @@ -136,7 +136,7 @@ return var/update = FALSE for(var/obj/item/bodypart/L in parts) - if(L.heal_damage(1.5/parts.len, 1.5/parts.len, null, BODYPART_ROBOTIC)) //much faster than organic healing + if(L.heal_damage(1.5/parts.len, 1.5/parts.len, null, TRUE, FALSE)) //much faster than organic healing update = TRUE if(update) host_mob.update_damage_overlays() @@ -180,7 +180,7 @@ return var/update = FALSE for(var/obj/item/bodypart/L in parts) - if(L.heal_damage(3/parts.len, 3/parts.len, null, BODYPART_ORGANIC)) + if(L.heal_damage(3/parts.len, 3/parts.len, FALSE)) update = TRUE if(update) host_mob.update_damage_overlays() diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 71cfe7c0f5..0104bfba7b 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -52,13 +52,10 @@ Nothing else in the console has ID requirements. research_control = FALSE /proc/CallMaterialName(ID) - if(GLOB.chemical_reagents_list[ID]) - var/datum/reagent/reagent = GLOB.chemical_reagents_list[ID] - return reagent.name - if (ID[1] == "$" && GLOB.materials_list[ID]) - var/datum/material/material = GLOB.materials_list[ID] + if (istype(ID, /datum/material)) + var/datum/material/material = ID return material.name - return "ERROR: Report This" + return ID /obj/machinery/computer/rdconsole/proc/SyncRDevices() //Makes sure it is properly sync'ed up with the devices attached to it (if any). for(var/obj/machinery/rnd/D in oview(3,src)) @@ -376,11 +373,13 @@ Nothing else in the console has ID requirements. l += ui_protolathe_header() l += "

Material Storage:

" for(var/mat_id in mat_container.materials) - var/datum/material/M = mat_container.materials[mat_id] - l += "* [M.amount] of [M.name]: " - if(M.amount >= MINERAL_MATERIAL_AMOUNT) l += "Eject [RDSCREEN_NOBREAK]" - if(M.amount >= MINERAL_MATERIAL_AMOUNT*5) l += "5x [RDSCREEN_NOBREAK]" - if(M.amount >= MINERAL_MATERIAL_AMOUNT) l += "All[RDSCREEN_NOBREAK]" + var/datum/material/M = mat_id + var/amount = mat_container.materials[mat_id] + var/ref = REF(M) + l += "* [amount] of [M.name]: " + if(amount >= MINERAL_MATERIAL_AMOUNT) l += "Eject [RDSCREEN_NOBREAK]" + if(amount >= MINERAL_MATERIAL_AMOUNT*5) l += "5x [RDSCREEN_NOBREAK]" + if(amount >= MINERAL_MATERIAL_AMOUNT) l += "All[RDSCREEN_NOBREAK]" l += "" l += "
[RDSCREEN_NOBREAK]" return l @@ -509,11 +508,13 @@ Nothing else in the console has ID requirements. l += ui_circuit_header() l += "

Material Storage:

" for(var/mat_id in mat_container.materials) - var/datum/material/M = mat_container.materials[mat_id] - l += "* [M.amount] of [M.name]: " - if(M.amount >= MINERAL_MATERIAL_AMOUNT) l += "Eject [RDSCREEN_NOBREAK]" - if(M.amount >= MINERAL_MATERIAL_AMOUNT*5) l += "5x [RDSCREEN_NOBREAK]" - if(M.amount >= MINERAL_MATERIAL_AMOUNT) l += "All[RDSCREEN_NOBREAK]
" + var/datum/material/M = mat_id + var/amount = mat_container.materials[mat_id] + var/ref = REF(M) + l += "* [amount] of [M.name]: " + if(amount >= MINERAL_MATERIAL_AMOUNT) l += "Eject [RDSCREEN_NOBREAK]" + if(amount >= MINERAL_MATERIAL_AMOUNT*5) l += "5x [RDSCREEN_NOBREAK]" + if(amount >= MINERAL_MATERIAL_AMOUNT) l += "All[RDSCREEN_NOBREAK]" return l /obj/machinery/computer/rdconsole/proc/ui_techdisk() //Legacy code @@ -615,8 +616,8 @@ Nothing else in the console has ID requirements. l += "[RDSCREEN_NOBREAK]" if(!(linked_destroy.loaded_item.resistance_flags & INDESTRUCTIBLE)) - var/list/materials = linked_destroy.loaded_item.materials - l += "
[materials.len? "Material Reclamation" : "Destroy Item"]" + var/list/materials = linked_destroy.loaded_item.custom_materials + l += "
[LAZYLEN(materials)? "Material Reclamation" : "Destroy Item"]" for (var/M in materials) l += "* [CallMaterialName(M)] x [materials[M]]" l += "
[RDSCREEN_NOBREAK]" @@ -933,7 +934,8 @@ Nothing else in the console has ID requirements. if(!linked_lathe.materials.mat_container) say("No material storage linked to protolathe!") return - linked_lathe.eject_sheets(ls["ejectsheet"], ls["eject_amt"]) + var/datum/material/M = locate(ls["ejectsheet"]) in linked_lathe.materials.mat_container.materials + linked_lathe.eject_sheets(M, ls["eject_amt"]) //Circuit Imprinter Materials if(ls["disposeI"]) //Causes the circuit imprinter to dispose of a single reagent (all of it) if(QDELETED(linked_imprinter)) @@ -952,7 +954,8 @@ Nothing else in the console has ID requirements. if(!linked_imprinter.materials.mat_container) say("No material storage linked to circuit imprinter!") return - linked_imprinter.eject_sheets(ls["imprinter_ejectsheet"], ls["eject_amt"]) + var/datum/material/M = locate(ls["imprinter_ejectsheet"]) in linked_imprinter.materials.mat_container.materials + linked_imprinter.eject_sheets(M, ls["eject_amt"]) if(ls["disk_slot"]) disk_slot_selected = text2num(ls["disk_slot"]) if(ls["research_node"]) @@ -1015,7 +1018,7 @@ Nothing else in the console has ID requirements. D.category -= "Imported" else for(var/x in D.materials) - if( !(x in list(MAT_METAL, MAT_GLASS))) + if( !(x in list(/datum/material/iron, /datum/material/glass))) autolathe_friendly = FALSE D.category -= "Imported" diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm index 18bf8033b9..2237284a64 100644 --- a/code/modules/research/rdmachines.dm +++ b/code/modules/research/rdmachines.dm @@ -93,14 +93,14 @@ loaded_item.forceMove(loc) ..() -/obj/machinery/rnd/proc/AfterMaterialInsert(type_inserted, id_inserted, amount_inserted) +/obj/machinery/rnd/proc/AfterMaterialInsert(item_inserted, id_inserted, amount_inserted) var/stack_name - if(ispath(type_inserted, /obj/item/stack/ore/bluespace_crystal)) + if(istype(item_inserted, /obj/item/stack/ore/bluespace_crystal)) stack_name = "bluespace" use_power(MINERAL_MATERIAL_AMOUNT / 10) else - var/obj/item/stack/S = type_inserted - stack_name = initial(S.name) + var/obj/item/stack/S = item_inserted + stack_name = S.name use_power(min(1000, (amount_inserted / 100))) add_overlay("protolathe_[stack_name]") addtimer(CALLBACK(src, /atom/proc/cut_overlay, "protolathe_[stack_name]"), 10) diff --git a/code/modules/research/research_disk.dm b/code/modules/research/research_disk.dm index e4c036f7ff..aa781ca06b 100644 --- a/code/modules/research/research_disk.dm +++ b/code/modules/research/research_disk.dm @@ -3,7 +3,7 @@ name = "technology disk" desc = "A disk for storing technology data for further research." icon_state = "datadisk0" - materials = list(MAT_METAL=300, MAT_GLASS=100) + custom_materials = list(/datum/material/iron=300, /datum/material/glass=100) var/datum/techweb/stored_research /obj/item/disk/tech_disk/Initialize() @@ -15,7 +15,7 @@ /obj/item/disk/tech_disk/debug name = "\improper CentCom technology disk" desc = "A debug item for research" - materials = list() + custom_materials = null /obj/item/disk/tech_disk/debug/Initialize() . = ..() @@ -24,7 +24,7 @@ /obj/item/disk/tech_disk/illegal name = "Illegal technology disk" desc = "A technology disk containing schematics for syndicate inspired equipment." - materials = list() + custom_materials = null /obj/item/disk/tech_disk/illegal/Initialize() . = ..() @@ -33,7 +33,7 @@ /obj/item/disk/tech_disk/abductor name = "Gray technology disk" desc = "You feel like it's not Gray because of its color." - materials = list() + custom_materials = null /obj/item/disk/tech_disk/abductor/Initialize() . = ..() diff --git a/code/modules/research/stock_parts.dm b/code/modules/research/stock_parts.dm index befaf3d96a..fb29399064 100644 --- a/code/modules/research/stock_parts.dm +++ b/code/modules/research/stock_parts.dm @@ -136,31 +136,31 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi name = "capacitor" desc = "A basic capacitor used in the construction of a variety of devices." icon_state = "capacitor" - materials = list(MAT_METAL=50, MAT_GLASS=50) + custom_materials = list(/datum/material/iron=50, /datum/material/glass=50) /obj/item/stock_parts/scanning_module name = "scanning module" desc = "A compact, high resolution scanning module used in the construction of certain devices." icon_state = "scan_module" - materials = list(MAT_METAL=50, MAT_GLASS=20) + custom_materials = list(/datum/material/iron=50, /datum/material/glass=20) /obj/item/stock_parts/manipulator name = "micro-manipulator" desc = "A tiny little manipulator used in the construction of certain devices." icon_state = "micro_mani" - materials = list(MAT_METAL=30) + custom_materials = list(/datum/material/iron=30) /obj/item/stock_parts/micro_laser name = "micro-laser" desc = "A tiny laser used in certain devices." icon_state = "micro_laser" - materials = list(MAT_METAL=10, MAT_GLASS=20) + custom_materials = list(/datum/material/iron=10, /datum/material/glass=20) /obj/item/stock_parts/matter_bin name = "matter bin" desc = "A container designed to hold compressed matter awaiting reconstruction." icon_state = "matter_bin" - materials = list(MAT_METAL=80) + custom_materials = list(/datum/material/iron=80) //Rating 2 @@ -169,35 +169,35 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi desc = "An advanced capacitor used in the construction of a variety of devices." icon_state = "adv_capacitor" rating = 2 - materials = list(MAT_METAL=50, MAT_GLASS=50) + custom_materials = list(/datum/material/iron=50, /datum/material/glass=50) /obj/item/stock_parts/scanning_module/adv name = "advanced scanning module" desc = "A compact, high resolution scanning module used in the construction of certain devices." icon_state = "adv_scan_module" rating = 2 - materials = list(MAT_METAL=50, MAT_GLASS=20) + custom_materials = list(/datum/material/iron=50, /datum/material/glass=20) /obj/item/stock_parts/manipulator/nano name = "nano-manipulator" desc = "A tiny little manipulator used in the construction of certain devices." icon_state = "nano_mani" rating = 2 - materials = list(MAT_METAL=30) + custom_materials = list(/datum/material/iron=30) /obj/item/stock_parts/micro_laser/high name = "high-power micro-laser" desc = "A tiny laser used in certain devices." icon_state = "high_micro_laser" rating = 2 - materials = list(MAT_METAL=10, MAT_GLASS=20) + custom_materials = list(/datum/material/iron=10, /datum/material/glass=20) /obj/item/stock_parts/matter_bin/adv name = "advanced matter bin" desc = "A container designed to hold compressed matter awaiting reconstruction." icon_state = "advanced_matter_bin" rating = 2 - materials = list(MAT_METAL=80) + custom_materials = list(/datum/material/iron=80) //Rating 3 @@ -206,35 +206,35 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi desc = "A super-high capacity capacitor used in the construction of a variety of devices." icon_state = "super_capacitor" rating = 3 - materials = list(MAT_METAL=50, MAT_GLASS=50) + custom_materials = list(/datum/material/iron=50, /datum/material/glass=50) /obj/item/stock_parts/scanning_module/phasic name = "phasic scanning module" desc = "A compact, high resolution phasic scanning module used in the construction of certain devices." icon_state = "super_scan_module" rating = 3 - materials = list(MAT_METAL=50, MAT_GLASS=20) + custom_materials = list(/datum/material/iron=50, /datum/material/glass=20) /obj/item/stock_parts/manipulator/pico name = "pico-manipulator" desc = "A tiny little manipulator used in the construction of certain devices." icon_state = "pico_mani" rating = 3 - materials = list(MAT_METAL=30) + custom_materials = list(/datum/material/iron=30) /obj/item/stock_parts/micro_laser/ultra name = "ultra-high-power micro-laser" icon_state = "ultra_high_micro_laser" desc = "A tiny laser used in certain devices." rating = 3 - materials = list(MAT_METAL=10, MAT_GLASS=20) + custom_materials = list(/datum/material/iron=10, /datum/material/glass=20) /obj/item/stock_parts/matter_bin/super name = "super matter bin" desc = "A container designed to hold compressed matter awaiting reconstruction." icon_state = "super_matter_bin" rating = 3 - materials = list(MAT_METAL=80) + custom_materials = list(/datum/material/iron=80) //Rating 4 @@ -243,35 +243,35 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi desc = "An capacity capacitor used in the construction of a variety of devices." icon_state = "quadratic_capacitor" rating = 4 - materials = list(MAT_METAL=50, MAT_GLASS=50) + custom_materials = list(/datum/material/iron=50, /datum/material/glass=50) /obj/item/stock_parts/scanning_module/triphasic name = "triphasic scanning module" desc = "A compact, ultra resolution triphasic scanning module used in the construction of certain devices." icon_state = "triphasic_scan_module" rating = 4 - materials = list(MAT_METAL=50, MAT_GLASS=20) + custom_materials = list(/datum/material/iron=50, /datum/material/glass=20) /obj/item/stock_parts/manipulator/femto name = "femto-manipulator" desc = "A tiny little manipulator used in the construction of certain devices." icon_state = "femto_mani" rating = 4 - materials = list(MAT_METAL=30) + custom_materials = list(/datum/material/iron=30) /obj/item/stock_parts/micro_laser/quadultra name = "quad-ultra micro-laser" icon_state = "quadultra_micro_laser" desc = "A tiny laser used in certain devices." rating = 4 - materials = list(MAT_METAL=10, MAT_GLASS=20) + custom_materials = list(/datum/material/iron=10, /datum/material/glass=20) /obj/item/stock_parts/matter_bin/bluespace name = "bluespace matter bin" desc = "A container designed to hold compressed matter awaiting reconstruction." icon_state = "bluespace_matter_bin" rating = 4 - materials = list(MAT_METAL=80) + custom_materials = list(/datum/material/iron=80) // Subspace stock parts @@ -279,43 +279,43 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi name = "subspace ansible" icon_state = "subspace_ansible" desc = "A compact module capable of sensing extradimensional activity." - materials = list(MAT_METAL=30, MAT_GLASS=10) + custom_materials = list(/datum/material/iron=30, /datum/material/glass=10) /obj/item/stock_parts/subspace/filter name = "hyperwave filter" icon_state = "hyperwave_filter" desc = "A tiny device capable of filtering and converting super-intense radiowaves." - materials = list(MAT_METAL=30, MAT_GLASS=10) + custom_materials = list(/datum/material/iron=30, /datum/material/glass=10) /obj/item/stock_parts/subspace/amplifier name = "subspace amplifier" icon_state = "subspace_amplifier" desc = "A compact micro-machine capable of amplifying weak subspace transmissions." - materials = list(MAT_METAL=30, MAT_GLASS=10) + custom_materials = list(/datum/material/iron=30, /datum/material/glass=10) /obj/item/stock_parts/subspace/treatment name = "subspace treatment disk" icon_state = "treatment_disk" desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves." - materials = list(MAT_METAL=30, MAT_GLASS=10) + custom_materials = list(/datum/material/iron=30, /datum/material/glass=10) /obj/item/stock_parts/subspace/analyzer name = "subspace wavelength analyzer" icon_state = "wavelength_analyzer" desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths." - materials = list(MAT_METAL=30, MAT_GLASS=10) + custom_materials = list(/datum/material/iron=30, /datum/material/glass=10) /obj/item/stock_parts/subspace/crystal name = "ansible crystal" icon_state = "ansible_crystal" desc = "A crystal made from pure glass used to transmit laser databursts to subspace." - materials = list(MAT_GLASS=50) + custom_materials = list(/datum/material/glass=50) /obj/item/stock_parts/subspace/transmitter name = "subspace transmitter" icon_state = "subspace_transmitter" desc = "A large piece of equipment used to open a window into the subspace dimension." - materials = list(MAT_METAL=50) + custom_materials = list(/datum/material/iron=50) /obj/item/research//Makes testing much less of a pain -Sieve name = "research" diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 0c21b19b5f..af825eb5ee 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -983,7 +983,7 @@ icon_state = "tile-bluespace" w_class = WEIGHT_CLASS_NORMAL force = 6 - materials = list(MAT_METAL=500) + custom_materials = list(/datum/material/iron=500) throwforce = 10 throw_speed = 3 throw_range = 7 @@ -999,7 +999,7 @@ icon_state = "tile-sepia" w_class = WEIGHT_CLASS_NORMAL force = 6 - materials = list(MAT_METAL=500) + custom_materials = list(/datum/material/iron=500) throwforce = 10 throw_speed = 0.1 throw_range = 28 diff --git a/code/modules/ruins/lavaland_ruin_code.dm b/code/modules/ruins/lavaland_ruin_code.dm index 6e3b452b81..d09c1ce86f 100644 --- a/code/modules/ruins/lavaland_ruin_code.dm +++ b/code/modules/ruins/lavaland_ruin_code.dm @@ -3,6 +3,17 @@ /obj/structure/fans/tiny/invisible //For blocking air in ruin doorways invisibility = INVISIBILITY_ABSTRACT +///Wizard tower item +/obj/item/disk/design_disk/adv/knight_gear + name = "Magic Disk of Smithing" + +/obj/item/disk/design_disk/adv/knight_gear/Initialize() + . = ..() + var/datum/design/knight_armour/A = new + var/datum/design/knight_helmet/H = new + blueprints[1] = A + blueprints[2] = H + //lavaland_surface_seed_vault.dmm //Seed Vault @@ -45,7 +56,7 @@ desc = "Allows for the construction of a Golem Shell." id = "golem" build_type = AUTOLATHE - materials = list(MAT_METAL = 40000) + materials = list(/datum/material/iron = 40000) build_path = /obj/item/golem_shell category = list("Imported") diff --git a/code/modules/ruins/spaceruin_code/clericsden.dm b/code/modules/ruins/spaceruin_code/clericsden.dm new file mode 100644 index 0000000000..46f8f806e4 --- /dev/null +++ b/code/modules/ruins/spaceruin_code/clericsden.dm @@ -0,0 +1,36 @@ +/////////// cleric's den items. + +//Primary reward: the cleric's mace design disk. +/obj/item/disk/design_disk/adv/cleric_mace + name = "Enshrined Disc of Smiting" + +/obj/item/disk/design_disk/adv/cleric_mace/Initialize() + . = ..() + var/datum/design/cleric_mace/M = new + blueprints[1] = M + +/obj/item/paper/fluff/ruins/clericsden/contact + info = "Father Aurellion, the ritual is complete, and soon our brothers at the bastion will see the error of our ways. After all, a god of clockwork or blood? Preposterous. Only the TRUE GOD should have so much power. Signed, Father Odivallus." + +/obj/item/paper/fluff/ruins/clericsden/warning + info = "FATHER ODIVALLUS DO NOT GO FORWARD WITH THE RITUAL. THE ASTEROID WE'RE ANCHORED TO IS UNSTABLE, YOU WILL DESTROY THE STATION. I HOPE THIS REACHES YOU IN TIME. FATHER AURELLION." + +/mob/living/simple_animal/hostile/construct/proteon + name = "Proteon" + real_name = "Proteon" + desc = "A weaker construct meant to scour ruins for objects of Nar'Sie's affection. Those barbed claws are no joke." + icon_state = "proteon" + icon_living = "proteon" + maxHealth = 35 + health = 35 + melee_damage_lower = 8 + melee_damage_upper = 10 + retreat_distance = 4 //AI proteons will rapidly move in and out of combat to avoid conflict, but will still target and follow you. + attacktext = "pinches" + environment_smash = ENVIRONMENT_SMASH_WALLS + attack_sound = 'sound/weapons/punch2.ogg' + playstyle_string = "You are a Proteon. Your abilities in combat are outmatched by most combat constructs, but you are still fast and nimble. Run metal and supplies, and cooperate with your fellow cultists." + +/mob/living/simple_animal/hostile/construct/proteon/hostile //Style of mob spawned by trapped cult runes in the cleric ruin. + AIStatus = AI_ON + environment_smash = ENVIRONMENT_SMASH_STRUCTURES //standard ai construct behavior, breaks things if it wants, but not walls. diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index a3cbe2c82d..9919a6bf26 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -585,7 +585,7 @@ anchored = TRUE icon = 'icons/obj/storage.dmi' icon_state = "safe" - integrity_failure = 100 + integrity_failure = 0.2 component_type = /datum/component/storage/concrete/emergency /obj/item/storage/pod/PopulateContents() diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index 792facd360..7371afd40f 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -92,7 +92,7 @@ ADD_TRAIT(holder, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) holder.resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF holder.slot_flags = null - holder.materials = null + holder.set_custom_materials(null) if(istype(holder, /obj/item/assembly/flash/armimplant)) var/obj/item/assembly/flash/F = holder diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index bdd1a444bb..a915d12838 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -377,3 +377,7 @@ name = "insect eyes" desc = "These eyes seem to have increased sensitivity to bright light, with no improvement to low light vision." flash_protect = -1 + +/obj/item/organ/eyes/ipc + name = "ipc eyes" + icon_state = "cybernetic_eyeballs" \ No newline at end of file diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index 5767e84c73..547ca38ead 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -222,9 +222,8 @@ obj/item/organ/heart/cybernetic/upgraded/on_life() /obj/item/organ/heart/ipc name = "IPC heart" - desc = "An electronic pump that regulates hydraulic functions, they have an auto-restart after EMPs." + desc = "An electronic pump that regulates hydraulic functions, the electronics have EMP shielding." icon_state = "heart-c" - organ_flags = ORGAN_SYNTHETIC /obj/item/organ/heart/freedom name = "heart of freedom" diff --git a/code/modules/surgery/organs/liver.dm b/code/modules/surgery/organs/liver.dm index 680d2389de..73225fc41c 100755 --- a/code/modules/surgery/organs/liver.dm +++ b/code/modules/surgery/organs/liver.dm @@ -95,6 +95,10 @@ icon_state = "liver-p" desc = "A large crystal that is somehow capable of metabolizing chemicals, these are found in plasmamen." +/obj/item/organ/liver/ipc + name = "reagent processing liver" + icon_state = "liver-c" + /obj/item/organ/liver/cybernetic name = "cybernetic liver" icon_state = "liver-c" diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index 91153655d3..b774aaf793 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -2,6 +2,7 @@ /obj/item/organ/lungs name = "lungs" + desc = "Looking at them makes you start manual breathing." icon_state = "lungs" zone = BODY_ZONE_CHEST slot = ORGAN_SLOT_LUNGS @@ -462,6 +463,10 @@ S.reagents.add_reagent(/datum/reagent/medicine/salbutamol, 5) return S +/obj/item/organ/lungs/ipc + name = "ipc lungs" + icon_state = "lungs-c" + /obj/item/organ/lungs/plasmaman name = "plasma filter" desc = "A spongy rib-shaped mass for filtering plasma from the air." @@ -543,4 +548,4 @@ /obj/item/organ/lungs/yamerol/on_life() ..() - damage += 2 //Yamerol lungs are temporary + damage += 2 //Yamerol lungs are temporary \ No newline at end of file diff --git a/code/modules/surgery/organs/stomach.dm b/code/modules/surgery/organs/stomach.dm index 94f88cbe67..3b383581cf 100755 --- a/code/modules/surgery/organs/stomach.dm +++ b/code/modules/surgery/organs/stomach.dm @@ -96,3 +96,7 @@ name = "digestive crystal" icon_state = "stomach-p" desc = "A strange crystal that is responsible for metabolizing the unseen energy force that feeds plasmamen." + +/obj/item/organ/stomach/ipc + name = "ipc stomach" + icon_state = "stomach-ipc" diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index a289f25d8b..51ce2726b0 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -131,14 +131,14 @@ name = "Surgery Procedure Disk" desc = "A disk that contains advanced surgery procedures, must be loaded into an Operating Console." icon_state = "datadisk1" - materials = list(MAT_METAL=300, MAT_GLASS=100) + custom_materials = list(/datum/material/iron=300, /datum/material/glass=100) var/list/surgeries /obj/item/disk/surgery/debug name = "Debug Surgery Disk" desc = "A disk that contains all existing surgery procedures." icon_state = "datadisk1" - materials = list(MAT_METAL=300, MAT_GLASS=100) + custom_materials = list(/datum/material/iron=300, /datum/material/glass=100) /obj/item/disk/surgery/debug/Initialize() . = ..() diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index 1a56a510c5..8dae96eaf9 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -3,7 +3,7 @@ desc = "Retracts stuff." icon = 'icons/obj/surgery.dmi' icon_state = "retractor" - materials = list(MAT_METAL=6000, MAT_GLASS=3000) + custom_materials = list(/datum/material/iron=6000, /datum/material/glass=3000) item_flags = SURGICAL_TOOL flags_1 = CONDUCT_1 w_class = WEIGHT_CLASS_TINY @@ -37,7 +37,7 @@ desc = "Micro-mechanical manipulator for retracting stuff." icon = 'icons/obj/surgery.dmi' icon_state = "retractor" - materials = list(MAT_METAL=6000, MAT_GLASS=3000) + custom_materials = list(/datum/material/iron=6000, /datum/material/glass=3000) flags_1 = CONDUCT_1 w_class = WEIGHT_CLASS_TINY toolspeed = 0.5 @@ -47,7 +47,7 @@ desc = "You think you have seen this before." icon = 'icons/obj/surgery.dmi' icon_state = "hemostat" - materials = list(MAT_METAL=5000, MAT_GLASS=2500) + custom_materials = list(/datum/material/iron=5000, /datum/material/glass=2500) item_flags = SURGICAL_TOOL flags_1 = CONDUCT_1 w_class = WEIGHT_CLASS_TINY @@ -60,7 +60,7 @@ desc = "Tiny servos power a pair of pincers to stop bleeding." icon = 'icons/obj/surgery.dmi' icon_state = "hemostat" - materials = list(MAT_METAL=5000, MAT_GLASS=2500) + custom_materials = list(/datum/material/iron=5000, /datum/material/glass=2500) flags_1 = CONDUCT_1 w_class = WEIGHT_CLASS_TINY toolspeed = 0.5 @@ -72,7 +72,7 @@ desc = "This stops bleeding." icon = 'icons/obj/surgery.dmi' icon_state = "cautery" - materials = list(MAT_METAL=2500, MAT_GLASS=750) + custom_materials = list(/datum/material/iron=2500, /datum/material/glass=750) item_flags = SURGICAL_TOOL flags_1 = CONDUCT_1 w_class = WEIGHT_CLASS_TINY @@ -85,7 +85,7 @@ desc = "A heated element that cauterizes wounds." icon = 'icons/obj/surgery.dmi' icon_state = "cautery" - materials = list(MAT_METAL=2500, MAT_GLASS=750) + custom_materials = list(/datum/material/iron=2500, /datum/material/glass=750) flags_1 = CONDUCT_1 w_class = WEIGHT_CLASS_TINY toolspeed = 0.5 @@ -100,7 +100,7 @@ lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' hitsound = 'sound/weapons/circsawhit.ogg' - materials = list(MAT_METAL=10000, MAT_GLASS=6000) + custom_materials = list(/datum/material/iron=10000, /datum/material/glass=6000) item_flags = SURGICAL_TOOL flags_1 = CONDUCT_1 force = 15 @@ -141,7 +141,7 @@ icon = 'icons/obj/surgery.dmi' icon_state = "drill" hitsound = 'sound/weapons/circsawhit.ogg' - materials = list(MAT_METAL=10000, MAT_GLASS=6000) + custom_materials = list(/datum/material/iron=10000, /datum/material/glass=6000) flags_1 = CONDUCT_1 force = 10 w_class = WEIGHT_CLASS_SMALL @@ -162,7 +162,7 @@ throwforce = 5 throw_speed = 3 throw_range = 5 - materials = list(MAT_METAL=4000, MAT_GLASS=1000) + custom_materials = list(/datum/material/iron=4000, /datum/material/glass=1000) item_flags = SURGICAL_TOOL attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") hitsound = 'sound/weapons/bladeslice.ogg' @@ -219,7 +219,7 @@ throwforce = 5 throw_speed = 3 throw_range = 5 - materials = list(MAT_METAL=4000, MAT_GLASS=1000) + custom_materials = list(/datum/material/iron=4000, /datum/material/glass=1000) attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") toolspeed = 0.5 hitsound = 'sound/weapons/bladeslice.ogg' @@ -246,7 +246,7 @@ throwforce = 9 throw_speed = 2 throw_range = 5 - materials = list(MAT_METAL=10000, MAT_GLASS=6000) + custom_materials = list(/datum/material/iron=10000, /datum/material/glass=6000) attack_verb = list("attacked", "slashed", "sawed", "cut") sharpness = IS_SHARP tool_behaviour = TOOL_SAW @@ -270,7 +270,7 @@ throwforce = 9 throw_speed = 2 throw_range = 5 - materials = list(MAT_METAL=10000, MAT_GLASS=6000) + custom_materials = list(/datum/material/iron=10000, /datum/material/glass=6000) toolspeed = 0.5 attack_verb = list("attacked", "slashed", "sawed", "cut") sharpness = IS_SHARP diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index 7089845dce..8a62c19e16 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -33,7 +33,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C verb_ask = "beeps" verb_exclaim = "beeps" max_integrity = 300 - integrity_failure = 100 + integrity_failure = 0.33 armor = list("melee" = 20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 70) circuit = /obj/item/circuitboard/machine/vendor var/active = 1 //No sales pitches if off! diff --git a/config/jobs.txt b/config/jobs.txt index a0c1ffa970..1bf271763b 100644 --- a/config/jobs.txt +++ b/config/jobs.txt @@ -31,6 +31,7 @@ Station Engineer=5,5 Atmospheric Technician=3,2 Medical Doctor=5,3 +Paramedic=2,2 Chemist=2,2 Geneticist=2,2 Virologist=1,1 @@ -43,4 +44,4 @@ Detective=1,1 Security Officer=5,5 AI=0,1 -Cyborg=0,1 \ No newline at end of file +Cyborg=0,1 diff --git a/config/spaceRuinBlacklist.txt b/config/spaceRuinBlacklist.txt index 4ea7611937..90682f5bad 100644 --- a/config/spaceRuinBlacklist.txt +++ b/config/spaceRuinBlacklist.txt @@ -13,6 +13,7 @@ #_maps/RandomRuins/SpaceRuins/bigderelict1.dmm #_maps/RandomRuins/SpaceRuins/bus.dmm #_maps/RandomRuins/SpaceRuins/caravanambush.dmm +#_maps/RandomRuins/SpaceRuins/clericden.dmm #_maps/RandomRuins/SpaceRuins/cloning_facility.dmm #_maps/RandomRuins/SpaceRuins/crashedclownship.dmm #_maps/RandomRuins/SpaceRuins/crashedship.dmm diff --git a/html/changelogs/AutoChangeLog-pr-10848.yml b/html/changelogs/AutoChangeLog-pr-10848.yml new file mode 100644 index 0000000000..b620b95ba7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10848.yml @@ -0,0 +1,16 @@ +author: "Ghommie (original PRs by Floyd/Qustinnus, 4Dplanner, Willox, ninjanomnom, mrdoombringer, Fikou, Fox McCloud, TheChosenEvilOne, nemvar, bobbahbrown, Time-Green, Stonebaykyle, MrPerson, ArcaneMusic and zxaber)" +delete-after: True +changes: + - rscadd: "You can now make toolboxes out of almost any solid material in an autolathe" + - rscadd: "adds Knight's Armour made out of any materials" + - rscadd: "new ruin found in lavaland protected by dark wizards, I wonder what they're guarding" + - rscadd: "You can now put a bunch more mats in the coin mint and autolathe" + - rscadd: "Adamantine and Mythril are now materials (Adamantine still only from xenobio, Mythril still only from badminnery). Adamantine boosts an item's force by 1.5, Mythril gives an item RPG statistics." + - rscdel: "most custom sprites for coins have been lost" + - rscadd: "You can now give your ass acute radiation poisoning" + - rscadd: "floydmats now apply to all objs / items" + - rscadd: "you can now make tables and chairs out of any material" + - bugfix: "Fixes being able to exploit fully upgraded destructive analyzers to multiply materials" + - rscadd: "An old monastery from a previously abandoned sector of space has recently resurfaced in some regions surrounding the station." + - rscadd: "Latent scans of the surrounding systems have picked up trace signs of new, smaller cult constructs, however these signatures quickly vanished." + - rscadd: "In other news, scavengers in your sector have been seen occasionally with classically recreated maces, so autolathe firmware has been upgraded to accommodate this." diff --git a/html/changelogs/AutoChangeLog-pr-11162.yml b/html/changelogs/AutoChangeLog-pr-11162.yml new file mode 100644 index 0000000000..3ea1b88ef7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11162.yml @@ -0,0 +1,5 @@ +author: "Hatterhat" +delete-after: True +changes: + - bugfix: "Biogenerators can now actually generate universal enzyme." + - bugfix: "The Basic Tools node now unlocks the multitool for printing on Engineering and Science fabricators." diff --git a/html/changelogs/AutoChangeLog-pr-11172.yml b/html/changelogs/AutoChangeLog-pr-11172.yml new file mode 100644 index 0000000000..83deba9652 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11172.yml @@ -0,0 +1,5 @@ +author: "Linzolle" +delete-after: True +changes: + - bugfix: "Bows now will not delete an arrow if it cant fire it." + - bugfix: "bows now like and respect sprite changes" diff --git a/html/changelogs/AutoChangeLog-pr-11175.yml b/html/changelogs/AutoChangeLog-pr-11175.yml new file mode 100644 index 0000000000..89d82068f1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11175.yml @@ -0,0 +1,6 @@ +author: "keronshb" +delete-after: True +changes: + - bugfix: "fixed accelerated regeneration nanites" + - bugfix: "fixed mechanical repair nanites" + - bugfix: "fixed bio reconstruction nanites" diff --git a/html/changelogs/AutoChangeLog-pr-11179.yml b/html/changelogs/AutoChangeLog-pr-11179.yml new file mode 100644 index 0000000000..6c538d5476 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11179.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - bugfix: "AIs now understand the old ways of drunken dwarfs" diff --git a/html/changelogs/AutoChangeLog-pr-11182.yml b/html/changelogs/AutoChangeLog-pr-11182.yml new file mode 100644 index 0000000000..a5f8d5081e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11182.yml @@ -0,0 +1,5 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - balance: "Removes some armored Russian hats from box station round start" + - bugfix: "Doner items spawning" diff --git a/html/changelogs/AutoChangeLog-pr-11183.yml b/html/changelogs/AutoChangeLog-pr-11183.yml new file mode 100644 index 0000000000..26a325cb08 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11183.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - balance: "Engi/Sec Trek suit no longer has 10% melee protection" diff --git a/html/changelogs/AutoChangeLog-pr-11184.yml b/html/changelogs/AutoChangeLog-pr-11184.yml new file mode 100644 index 0000000000..cb8ba1da3e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11184.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - bugfix: "IPC hearts are now made of robomeat and roboblood thats emp proof. Heals and is all and all just like an normal heart" diff --git a/html/changelogs/AutoChangeLog-pr-11185.yml b/html/changelogs/AutoChangeLog-pr-11185.yml new file mode 100644 index 0000000000..347dc9a3ad --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11185.yml @@ -0,0 +1,5 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - imageadd: "All robotic organs now have an animation." + - imageadd: "IPC's now organs now look like robotic ones, even tho thats not the case game wise" diff --git a/html/changelogs/AutoChangeLog-pr-11186.yml b/html/changelogs/AutoChangeLog-pr-11186.yml new file mode 100644 index 0000000000..7a0c97379a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11186.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - bugfix: "temporary flavor text can now be of reasonable length" diff --git a/html/changelogs/AutoChangeLog-pr-11187.yml b/html/changelogs/AutoChangeLog-pr-11187.yml new file mode 100644 index 0000000000..4a2bf49530 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11187.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - imageadd: "Added a new bee themed bar sign" diff --git a/html/changelogs/AutoChangeLog-pr-11188.yml b/html/changelogs/AutoChangeLog-pr-11188.yml new file mode 100644 index 0000000000..24aae51503 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11188.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - imageadd: "Makes plywood chair not look as bad." diff --git a/html/changelogs/AutoChangeLog-pr-11191.yml b/html/changelogs/AutoChangeLog-pr-11191.yml new file mode 100644 index 0000000000..12b80bf1c3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11191.yml @@ -0,0 +1,4 @@ +author: "YakumoChen" +delete-after: True +changes: + - tweak: "Legion skulls behave like bees!!!!" diff --git a/html/changelogs/AutoChangeLog-pr-11199.yml b/html/changelogs/AutoChangeLog-pr-11199.yml new file mode 100644 index 0000000000..70aae404e1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11199.yml @@ -0,0 +1,5 @@ +author: "Detective-Google" +delete-after: True +changes: + - rscadd: "Loudness Booster pAI program" + - rscadd: "Encryption Key pAI program" diff --git a/html/changelogs/AutoChangeLog-pr-11201.yml b/html/changelogs/AutoChangeLog-pr-11201.yml new file mode 100644 index 0000000000..4b7749eee2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11201.yml @@ -0,0 +1,8 @@ +author: "Hatterhat" +delete-after: True +changes: + - rscadd: "The Ash Walkers' nest on Lavaland now starts with three bowyery slabs." + - rscadd: "You can now welder-harden arrows. It might take longer." + - balance: "Silkstring's costs adjusted for bows and whatnot." + - spellcheck: "Grammar adjusted on a lot of things relating to bows." + - bugfix: "Pipe bows' bowstring doesn't look like it replicated itself upon draw." diff --git a/html/changelogs/AutoChangeLog-pr-11206.yml b/html/changelogs/AutoChangeLog-pr-11206.yml new file mode 100644 index 0000000000..5f6889ec94 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11206.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - bugfix: "corndog sprite being miss-spelled" diff --git a/html/changelogs/AutoChangeLog-pr-11207.yml b/html/changelogs/AutoChangeLog-pr-11207.yml new file mode 100644 index 0000000000..db73ed666f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11207.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - bugfix: "Ash from land of lava now is useable for sandstone" diff --git a/html/changelogs/AutoChangeLog-pr-11214.yml b/html/changelogs/AutoChangeLog-pr-11214.yml new file mode 100644 index 0000000000..1a602727a8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11214.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed pAI radios inability to be toggled on/off." diff --git a/html/changelogs/AutoChangeLog-pr-11216.yml b/html/changelogs/AutoChangeLog-pr-11216.yml new file mode 100644 index 0000000000..40bb5067e3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11216.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - rscadd: "Logging for renaming" diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 499b1db21d..01e9f2ac2c 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/head_muzzled.dmi b/icons/mob/head_muzzled.dmi index a318f394f8..5430f07726 100644 Binary files a/icons/mob/head_muzzled.dmi and b/icons/mob/head_muzzled.dmi differ diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index 8ea155256c..c21fa47b9c 100644 Binary files a/icons/mob/hud.dmi and b/icons/mob/hud.dmi differ diff --git a/icons/mob/inhands/equipment/toolbox_lefthand.dmi b/icons/mob/inhands/equipment/toolbox_lefthand.dmi index c0caf78855..06cdd60168 100644 Binary files a/icons/mob/inhands/equipment/toolbox_lefthand.dmi and b/icons/mob/inhands/equipment/toolbox_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/toolbox_righthand.dmi b/icons/mob/inhands/equipment/toolbox_righthand.dmi index 1d016e35a9..acb93257c9 100644 Binary files a/icons/mob/inhands/equipment/toolbox_righthand.dmi and b/icons/mob/inhands/equipment/toolbox_righthand.dmi differ diff --git a/icons/mob/inhands/misc/chairs_lefthand.dmi b/icons/mob/inhands/misc/chairs_lefthand.dmi index 7377787a63..a74ac1f58b 100644 Binary files a/icons/mob/inhands/misc/chairs_lefthand.dmi and b/icons/mob/inhands/misc/chairs_lefthand.dmi differ diff --git a/icons/mob/inhands/misc/chairs_righthand.dmi b/icons/mob/inhands/misc/chairs_righthand.dmi index f04962de18..9a0d2a478b 100644 Binary files a/icons/mob/inhands/misc/chairs_righthand.dmi and b/icons/mob/inhands/misc/chairs_righthand.dmi differ diff --git a/icons/mob/inhands/weapons/melee_lefthand.dmi b/icons/mob/inhands/weapons/melee_lefthand.dmi index fc82db43ae..bb4289a860 100644 Binary files a/icons/mob/inhands/weapons/melee_lefthand.dmi and b/icons/mob/inhands/weapons/melee_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/melee_righthand.dmi b/icons/mob/inhands/weapons/melee_righthand.dmi index a93a4e38d5..4e9f5266b2 100644 Binary files a/icons/mob/inhands/weapons/melee_righthand.dmi and b/icons/mob/inhands/weapons/melee_righthand.dmi differ diff --git a/icons/mob/landmarks.dmi b/icons/mob/landmarks.dmi index 120745ed44..284809da70 100644 Binary files a/icons/mob/landmarks.dmi and b/icons/mob/landmarks.dmi differ diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index 4de67f41f8..de09fb1c63 100644 Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ diff --git a/icons/mob/simple_human.dmi b/icons/mob/simple_human.dmi index bd6472ed42..a6080838f1 100644 Binary files a/icons/mob/simple_human.dmi and b/icons/mob/simple_human.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index 6b1b9591b7..30c43985fa 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/mob/suit_digi.dmi b/icons/mob/suit_digi.dmi index c6bda60d38..da51f9e621 100644 Binary files a/icons/mob/suit_digi.dmi and b/icons/mob/suit_digi.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index 69d8966329..bcde4d84f7 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/obj/barsigns.dmi b/icons/obj/barsigns.dmi index 1fffa2e540..22f3071862 100644 Binary files a/icons/obj/barsigns.dmi and b/icons/obj/barsigns.dmi differ diff --git a/icons/obj/chairs.dmi b/icons/obj/chairs.dmi index 9e8fb64aba..1c09cf94dc 100644 Binary files a/icons/obj/chairs.dmi and b/icons/obj/chairs.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index d355ade9fe..d5f3be5fdd 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 81ef85bb08..470f2a9d69 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index ce458a1de3..0881a2c289 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/economy.dmi b/icons/obj/economy.dmi index fef7637ba6..9cc6498454 100644 Binary files a/icons/obj/economy.dmi and b/icons/obj/economy.dmi differ diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi index 58e427a3fb..f859e8b1e7 100644 Binary files a/icons/obj/guns/projectile.dmi and b/icons/obj/guns/projectile.dmi differ diff --git a/icons/obj/hand_of_god_structures.dmi b/icons/obj/hand_of_god_structures.dmi index 4f18b2e68d..3f640d4d57 100644 Binary files a/icons/obj/hand_of_god_structures.dmi and b/icons/obj/hand_of_god_structures.dmi differ diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi index 561b1890e8..7058b9918b 100644 Binary files a/icons/obj/items_and_weapons.dmi and b/icons/obj/items_and_weapons.dmi differ diff --git a/icons/obj/smooth_structures/table_greyscale.dmi b/icons/obj/smooth_structures/table_greyscale.dmi new file mode 100644 index 0000000000..a04a51efc7 Binary files /dev/null and b/icons/obj/smooth_structures/table_greyscale.dmi differ diff --git a/icons/obj/stack_objects.dmi b/icons/obj/stack_objects.dmi index a80dc92b9a..5b0c05d43d 100644 Binary files a/icons/obj/stack_objects.dmi and b/icons/obj/stack_objects.dmi differ diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index a92af16e96..998ccc948d 100644 Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index fcc28de7b9..e998ce442d 100755 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ diff --git a/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm b/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm index dd45c0278a..c39c66578b 100644 --- a/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm +++ b/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm @@ -3,7 +3,7 @@ desc = "A gun magazine. Loaded with rounds which ignite the target.." id = "10mminc" build_type = PROTOLATHE - materials = list(MAT_PLASMA = 50000, MAT_METAL = 18000) + materials = list(/datum/material/plasma = 50000, /datum/material/iron = 18000) reagents_list = list(/datum/reagent/toxin/plasma = 120, /datum/reagent/napalm = 240) build_path = /obj/item/ammo_box/magazine/m10mm/fire category = list("Weapons") @@ -14,7 +14,7 @@ desc = "A gun magazine." id = "10mm" build_type = PROTOLATHE - materials = list(MAT_METAL = 55000) + materials = list(/datum/material/iron = 55000) build_path = /obj/item/ammo_box/magazine/m10mm category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -24,7 +24,7 @@ desc = "A gun magazine. Loaded with hollow-point rounds, extremely effective against unarmored targets, but nearly useless against protective clothing." id = "10mmhp" build_type = PROTOLATHE - materials = list(MAT_METAL = 40000, MAT_GLASS = 50000) + materials = list(/datum/material/iron = 40000, /datum/material/glass = 50000) reagents_list = list(/datum/reagent/sonic_powder = 280) build_path = /obj/item/ammo_box/magazine/m10mm/hp category = list("Ammo") @@ -35,7 +35,7 @@ desc = "A gun magazine. Loaded with rounds which penetrate armour, but are less effective against normal targets." id = "10mmap" build_type = PROTOLATHE - materials = list(MAT_METAL = 40000, MAT_TITANIUM = 60000) + materials = list(/datum/material/iron = 40000, /datum/material/titanium = 60000) build_path = /obj/item/ammo_box/magazine/m10mm/ap category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -45,7 +45,7 @@ desc = "A stripper clip used to quickly load bolt action rifles. Contains 5 rounds." id = "bolt_clip" build_type = PROTOLATHE - materials = list(MAT_METAL = 8000) + materials = list(/datum/material/iron = 8000) build_path = /obj/item/ammo_box/a762 category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -54,7 +54,7 @@ name = "handgun magazine (.45)" id = "m45" build_type = PROTOLATHE - materials = list(MAT_METAL = 80000) + materials = list(/datum/material/iron = 80000) build_path = /obj/item/ammo_box/magazine/m45 category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -64,7 +64,7 @@ desc = "A gun magazine." id = "pistolm9mm" build_type = PROTOLATHE - materials = list(MAT_METAL = 80000) + materials = list(/datum/material/iron = 80000) build_path = /obj/item/ammo_box/magazine/pistolm9mm category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -74,7 +74,7 @@ desc = "A revolver speedloader." id = "sl357" build_type = PROTOLATHE - materials = list(MAT_METAL = 30000) + materials = list(/datum/material/iron = 30000) build_path = /obj/item/ammo_box/a357 category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -84,7 +84,7 @@ desc = "A revolver speedloader. Cuts through like a hot knife through butter." id = "sl357ap" build_type = PROTOLATHE - materials = list(MAT_METAL = 30000, MAT_TITANIUM = 45000) + materials = list(/datum/material/iron = 30000, /datum/material/titanium = 45000) build_path = /obj/item/ammo_box/a357/ap category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm index 37198e87cf..8a1310d2f1 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm @@ -24,7 +24,7 @@ icon_state = "toy9magazine" max_ammo = 30 multiple_sprites = 2 - materials = list(MAT_METAL = 200) + custom_materials = list(/datum/material/iron = 200) /obj/item/gun/ballistic/automatic/x9/toy name = "\improper Foam Force X9" @@ -65,7 +65,7 @@ icon_state = "toy9magazine" max_ammo = 30 multiple_sprites = 2 - materials = list(MAT_METAL = 200) + custom_materials = list(/datum/material/iron = 200) /obj/item/gun/ballistic/automatic/x9/toy name = "\improper Foam Force X9" @@ -201,7 +201,7 @@ icon_state = "AM4MAG-60" max_ammo = 60 multiple_sprites = 0 - materials = list(MAT_METAL = 200) + custom_materials = list(/datum/material/iron = 200) /obj/item/gun/ballistic/automatic/AM4B name = "AM4-B" @@ -253,7 +253,7 @@ icon_state = "AM4MAG-32" max_ammo = 32 multiple_sprites = 0 - materials = list(MAT_METAL = 200) + custom_materials = list(/datum/material/iron = 200) /obj/item/gun/ballistic/automatic/AM4C name = "AM4-C" diff --git a/modular_citadel/code/modules/projectiles/guns/toys.dm b/modular_citadel/code/modules/projectiles/guns/toys.dm index 731f990cfb..6715c64d4e 100644 --- a/modular_citadel/code/modules/projectiles/guns/toys.dm +++ b/modular_citadel/code/modules/projectiles/guns/toys.dm @@ -57,7 +57,7 @@ desc = "An authentic cap-firing reproduction of a F3 Justicar big-bore revolver! Pretend to blow your friend's brains out with this 100% safe toy! Satisfaction guaranteed!" icon_state = "justicar" icon = 'modular_citadel/icons/obj/guns/toys.dmi' - materials = list(MAT_METAL=2000, MAT_GLASS=250) + custom_materials = list(/datum/material/iron=2000, /datum/material/glass=250) /obj/item/toy/gun/m41 @@ -65,4 +65,4 @@ desc = "A toy replica of the Corporate Mercenaries' standard issue rifle. For Avtomat is inscribed on the side." icon_state = "toym41" icon = 'modular_citadel/icons/obj/guns/toys.dmi' - materials = list(MAT_METAL=2000, MAT_GLASS=250) + custom_materials = list(/datum/material/iron=2000, /datum/material/glass=250) diff --git a/strings/ion_laws.json b/strings/ion_laws.json index 1c28d5d5e5..55913dc3f4 100644 --- a/strings/ion_laws.json +++ b/strings/ion_laws.json @@ -331,7 +331,8 @@ "BOTANISTS", "RESEARCH DIRECTORS", "CHIEF MEDICAL OFFICERS", - "MEDICAL DOCTORS", + "MEDICAL DOCTORS", + "PARAMEDICS", "CHEMISTS", "GENETICISTS", "VIROLOGISTS", diff --git a/tgstation.dme b/tgstation.dme index 75b6b253fb..a4b9834b92 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -63,6 +63,7 @@ #include "code\__DEFINES\logging.dm" #include "code\__DEFINES\machines.dm" #include "code\__DEFINES\maps.dm" +#include "code\__DEFINES\materials.dm" #include "code\__DEFINES\maths.dm" #include "code\__DEFINES\MC.dm" #include "code\__DEFINES\medal.dm" @@ -264,6 +265,7 @@ #include "code\controllers\subsystem\lighting.dm" #include "code\controllers\subsystem\machines.dm" #include "code\controllers\subsystem\mapping.dm" +#include "code\controllers\subsystem\materials.dm" #include "code\controllers\subsystem\medals.dm" #include "code\controllers\subsystem\minor_mapping.dm" #include "code\controllers\subsystem\mobs.dm" @@ -371,6 +373,7 @@ #include "code\datums\components\earprotection.dm" #include "code\datums\components\edit_complainer.dm" #include "code\datums\components\empprotection.dm" +#include "code\datums\components\explodable.dm" #include "code\datums\components\footstep.dm" #include "code\datums\components\forced_gravity.dm" #include "code\datums\components\igniter.dm" @@ -493,6 +496,7 @@ #include "code\datums\elements\dusts_on_catatonia.dm" #include "code\datums\elements\dusts_on_leaving_area.dm" #include "code\datums\elements\earhealing.dm" +#include "code\datums\elements\firestacker.dm" #include "code\datums\elements\ghost_role_eligibility.dm" #include "code\datums\elements\mob_holder.dm" #include "code\datums\elements\swimming.dm" @@ -514,6 +518,8 @@ #include "code\datums\martial\rising_bass.dm" #include "code\datums\martial\sleeping_carp.dm" #include "code\datums\martial\wrestling.dm" +#include "code\datums\materials\_material.dm" +#include "code\datums\materials\basemats.dm" #include "code\datums\mood_events\beauty_events.dm" #include "code\datums\mood_events\drink_events.dm" #include "code\datums\mood_events\drug_events.dm" @@ -1980,6 +1986,7 @@ #include "code\modules\jobs\job_types\lawyer.dm" #include "code\modules\jobs\job_types\medical_doctor.dm" #include "code\modules\jobs\job_types\mime.dm" +#include "code\modules\jobs\job_types\paramedic.dm" #include "code\modules\jobs\job_types\quartermaster.dm" #include "code\modules\jobs\job_types\research_director.dm" #include "code\modules\jobs\job_types\roboticist.dm" @@ -2360,6 +2367,7 @@ #include "code\modules\mob\living\simple_animal\hostile\bees.dm" #include "code\modules\mob\living\simple_animal\hostile\carp.dm" #include "code\modules\mob\living\simple_animal\hostile\cat_butcher.dm" +#include "code\modules\mob\living\simple_animal\hostile\dark_wizard.dm" #include "code\modules\mob\living\simple_animal\hostile\eyeballs.dm" #include "code\modules\mob\living\simple_animal\hostile\faithless.dm" #include "code\modules\mob\living\simple_animal\hostile\giant_spider.dm" @@ -2885,6 +2893,7 @@ #include "code\modules\ruins\spaceruin_code\asteroid4.dm" #include "code\modules\ruins\spaceruin_code\bigderelict1.dm" #include "code\modules\ruins\spaceruin_code\caravanambush.dm" +#include "code\modules\ruins\spaceruin_code\clericsden.dm" #include "code\modules\ruins\spaceruin_code\cloning_lab.dm" #include "code\modules\ruins\spaceruin_code\crashedclownship.dm" #include "code\modules\ruins\spaceruin_code\crashedship.dm"