diff --git a/_maps/map_files/dun_world/dun_world.dmm b/_maps/map_files/dun_world/dun_world.dmm index 36cf52a08d..1e9c5688d7 100644 --- a/_maps/map_files/dun_world/dun_world.dmm +++ b/_maps/map_files/dun_world/dun_world.dmm @@ -827,6 +827,10 @@ }, /turf/open/floor/rogue/cobble, /area/provincial/underground/dungeon/cursed_labyrinth) +"anx" = ( +/obj/structure/fluff/ceramicswheel, +/turf/open/floor/rogue/tile, +/area/provincial/indoors/town/dusk_quarter) "anI" = ( /obj/structure/fluff/statue/myth, /turf/open/floor/rogue/naturalstone, @@ -1392,6 +1396,9 @@ /obj/item/reagent_containers/glass/beaker/jar, /obj/item/reagent_containers/glass/beaker/jar, /obj/item/reagent_containers/glass/beaker/jar, +/obj/item/reagent_containers/glass/bucket/pot/teapot, +/obj/item/reagent_containers/glass/cup/ceramic, +/obj/item/reagent_containers/glass/cup/ceramic, /turf/open/floor/rogue/blocks, /area/provincial/indoors/town/tavern/kitchen) "awp" = ( @@ -4093,7 +4100,7 @@ /turf/open/floor/rogue/ruinedwood/spiral, /area/provincial/indoors/town/province_keep/garrison/gate/south) "btp" = ( -/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/debris/glassy, /obj/structure/closet/crate/chest, /obj/effect/spawner/lootdrop/roguetown/dungeon, /obj/effect/spawner/lootdrop/roguetown/dungeon, @@ -4573,6 +4580,16 @@ /obj/item/reagent_containers/glass/bowl, /obj/item/cooking/platter, /obj/item/cooking/platter, +/obj/item/reagent_containers/glass/bowl/iron, +/obj/item/reagent_containers/glass/bowl/iron, +/obj/item/reagent_containers/glass/bowl/iron, +/obj/item/reagent_containers/glass/bowl/iron, +/obj/item/kitchen/spoon/tin, +/obj/item/kitchen/spoon/tin, +/obj/item/kitchen/spoon/tin, +/obj/item/kitchen/spoon/tin, +/obj/item/kitchen/spoon/tin, +/obj/item/kitchen/spoon/tin, /turf/open/floor/rogue/blocks, /area/provincial/indoors/town/tavern/kitchen) "bAV" = ( @@ -5085,7 +5102,9 @@ /turf/open/floor/rogue/naturalstone, /area/provincial/underground/dungeon/dragonden) "bJa" = ( -/obj/structure/closet/crate/chest/old_crate, +/obj/structure/closet/crate/chest/old_crate{ + name = "stone crate" + }, /obj/item/natural/stone, /obj/item/natural/stone, /obj/item/natural/stone, @@ -11540,7 +11559,7 @@ /obj/item/natural/stone{ pixel_y = -14 }, -/obj/item/rogueweapon/hammer/claw, +/obj/item/rogueweapon/hammer/steel, /turf/open/floor/rogue/greenstone, /area/provincial/underground/dungeon/gethsmane/inner) "dQZ" = ( @@ -13811,6 +13830,9 @@ /obj/item/candle/yellow/lit{ pixel_x = 6 }, +/obj/item/reagent_containers/glass/cup/ceramic, +/obj/item/reagent_containers/glass/cup/ceramic, +/obj/item/reagent_containers/glass/bucket/pot/teapot, /turf/open/floor/rogue/ruinedwood{ icon_state = "weird1" }, @@ -14034,7 +14056,7 @@ icon_state = "tablewood1" }, /obj/machinery/light/rogue/wallfire/candle/directional/west, -/obj/item/cooking/platter, +/obj/item/reagent_containers/glass/bucket/pot/teapot/fancy, /turf/open/floor/rogue/ruinedwood{ icon_state = "weird1" }, @@ -14938,6 +14960,11 @@ }, /turf/open/floor/rogue/grass, /area/provincial/indoors/town/province_keep/magician/alchemylab) +"eXT" = ( +/obj/structure/table/wood, +/obj/item/cooking/platter/gold, +/turf/open/floor/carpet/royalblack, +/area/provincial/indoors/town/province_keep/quarters/marquis) "eYf" = ( /obj/structure/chair/wood/rogue{ dir = 8 @@ -16223,6 +16250,15 @@ /obj/machinery/light/rogue/torchholder/directional/west, /turf/open/floor/rogue/ruinedwood/spiral, /area/provincial/underground/dungeon/old_ruin) +"fvq" = ( +/obj/item/reagent_containers/glass/cup/silver, +/obj/structure/table/wood, +/obj/item/candle/candlestick/gold/single/lit{ + pixel_x = -14; + pixel_y = 12 + }, +/turf/open/floor/carpet/royalblack, +/area/provincial/indoors/town/province_keep/quarters/marquis) "fvv" = ( /obj/structure/bars/passage/shutter{ redstone_id = "golgothaone" @@ -17984,7 +18020,7 @@ dir = 1 }, /obj/structure/flora/roguegrass, -/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/debris/glassy, /turf/open/floor/rogue/grass, /area/provincial/indoors/town) "gaC" = ( @@ -18076,7 +18112,11 @@ /area/provincial/underground/dungeon/old_university) "gcb" = ( /obj/structure/table/wood, -/obj/item/cooking/platter, +/obj/item/cooking/platter/gold, +/obj/item/candle/candlestick/gold/single/lit{ + pixel_x = -14; + pixel_y = 12 + }, /turf/open/floor/carpet/royalblack, /area/provincial/indoors/town/province_keep/quarters/marquis) "gcn" = ( @@ -26794,7 +26834,7 @@ /turf/open/floor/rogue/rooftop/green, /area/provincial/outdoors/town/roofs) "iNr" = ( -/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/debris/glassy, /turf/open/floor/rogue/cobble, /area/provincial/indoors/town/sewer) "iNK" = ( @@ -30338,6 +30378,9 @@ /obj/item/reagent_containers/glass/cup, /obj/item/reagent_containers/glass/cup/wooden, /obj/item/reagent_containers/glass/cup/wooden, +/obj/item/reagent_containers/glass/cup, +/obj/item/reagent_containers/glass/cup, +/obj/item/reagent_containers/glass/cup, /turf/open/floor/rogue/blocks, /area/provincial/indoors/town/tavern/kitchen) "jRS" = ( @@ -31012,11 +31055,13 @@ icon_state = "tablewood1" }, /obj/item/rogueweapon/huntingknife/chefknife, -/obj/item/reagent_containers/glass/cup/wooden{ - pixel_x = -7 - }, /obj/machinery/light/rogue/wallfire/candle/directional/west, /obj/structure/fluff/railing/border, +/obj/item/reagent_containers/glass/cup/ceramic, +/obj/item/reagent_containers/glass/cup/ceramic, +/obj/item/reagent_containers/glass/bucket/pot/teapot, +/obj/item/cooking/platter/silver, +/obj/item/cooking/platter/silver, /turf/open/floor/rogue/blocks, /area/provincial/indoors/town/steward) "ken" = ( @@ -31252,14 +31297,6 @@ "khB" = ( /obj/structure/rack/rogue/shelf/big, /obj/structure/rack/rogue/shelf, -/obj/item/reagent_containers/glass/cup/wooden{ - pixel_x = -6; - pixel_y = 16 - }, -/obj/item/reagent_containers/glass/cup/wooden{ - pixel_x = 8; - pixel_y = 16 - }, /obj/item/reagent_containers/glass/cup{ pixel_x = -6; pixel_y = 38 @@ -31268,6 +31305,14 @@ pixel_x = 8; pixel_y = 38 }, +/obj/item/reagent_containers/glass/cup{ + pixel_x = 8; + pixel_y = 12 + }, +/obj/item/reagent_containers/glass/cup{ + pixel_y = 12; + pixel_x = -8 + }, /turf/open/floor/rogue/ruinedwood{ icon_state = "weird1" }, @@ -33765,6 +33810,11 @@ "kVS" = ( /obj/structure/table/wood, /obj/machinery/light/rogue/wallfire/candle/blue/directional/east, +/obj/item/reagent_containers/glass/bucket/pot/teapot, +/obj/item/reagent_containers/glass/cup/ceramic, +/obj/item/reagent_containers/glass/cup/ceramic, +/obj/item/reagent_containers/glass/cup/ceramic, +/obj/item/reagent_containers/glass/cup/ceramic, /turf/open/floor/rogue/churchmarble, /area/provincial/indoors/town/mages_university/head_mage) "kVV" = ( @@ -35158,6 +35208,8 @@ /obj/structure/table/wood, /obj/item/kitchen/fork/ironfork, /obj/item/kitchen/fork/ironfork, +/obj/item/kitchen/spoon/ironspoon, +/obj/item/kitchen/spoon/ironspoon, /turf/open/floor/rogue/blocks, /area/provincial/indoors/town/province_keep/kitchen) "lvR" = ( @@ -35212,6 +35264,32 @@ "lwO" = ( /obj/structure/fluff/walldeco/rpainting/forest/directional/north, /obj/structure/closet/crate/chest, +/obj/item/kitchen/fork/gold, +/obj/item/kitchen/fork/gold, +/obj/item/kitchen/fork/gold, +/obj/item/kitchen/fork/gold, +/obj/item/kitchen/fork/gold, +/obj/item/kitchen/fork/gold, +/obj/item/kitchen/spoon/gold, +/obj/item/kitchen/spoon/gold, +/obj/item/kitchen/spoon/gold, +/obj/item/kitchen/spoon/gold, +/obj/item/kitchen/spoon/gold, +/obj/item/kitchen/spoon/gold, +/obj/item/cooking/platter/gold, +/obj/item/cooking/platter/gold, +/obj/item/cooking/platter/gold, +/obj/item/cooking/platter/gold, +/obj/item/reagent_containers/glass/cup/silver/small, +/obj/item/reagent_containers/glass/cup/silver/small, +/obj/item/reagent_containers/glass/cup/silver/small, +/obj/item/reagent_containers/glass/cup/silver/small, +/obj/item/reagent_containers/glass/cup/ceramic/fancy, +/obj/item/reagent_containers/glass/cup/ceramic/fancy, +/obj/item/reagent_containers/glass/cup/ceramic/fancy, +/obj/item/reagent_containers/glass/cup/ceramic/fancy, +/obj/item/reagent_containers/glass/cup/ceramic/fancy, +/obj/item/reagent_containers/glass/cup/ceramic/fancy, /turf/open/floor/rogue/ruinedwood{ icon_state = "weird1" }, @@ -38935,6 +39013,10 @@ /obj/item/reagent_containers/powder/flour, /obj/item/reagent_containers/powder/flour, /obj/item/clothing/cloak/apron/waist, +/obj/item/kitchen/fork/tin, +/obj/item/kitchen/fork/tin, +/obj/item/kitchen/spoon/tin, +/obj/item/kitchen/spoon/tin, /turf/open/floor/rogue/cobble, /area/provincial/indoors/town/mages_university/artificer) "mHv" = ( @@ -39711,7 +39793,12 @@ /obj/effect/decal/herringbone{ dir = 1 }, -/obj/item/reagent_containers/glass/cup/wooden, +/obj/item/reagent_containers/glass/cup{ + pixel_x = 8 + }, +/obj/item/reagent_containers/glass/cup{ + pixel_x = -8 + }, /turf/open/floor/rogue/hexstone, /area/provincial/indoors/town/steward) "mWx" = ( @@ -39929,7 +40016,7 @@ dir = 1; icon_state = "borderfall" }, -/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/debris/glassy, /turf/open/floor/rogue/dirt/road, /area/provincial/outdoors/field) "mZW" = ( @@ -40703,6 +40790,10 @@ dir = 10; icon_state = "largetable" }, +/obj/item/candle/candlestick/gold/lit{ + pixel_y = 23; + pixel_x = 15 + }, /turf/open/floor/carpet/royalblack, /area/provincial/indoors/town/province_keep/councillor) "nmS" = ( @@ -42480,7 +42571,7 @@ /obj/structure/chair/bench/church/smallbench{ dir = 1 }, -/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/debris/glassy, /turf/open/floor/rogue/hexstone, /area/provincial/indoors/town) "nRw" = ( @@ -44564,6 +44655,14 @@ /obj/item/candle/skull/lit, /turf/open/floor/rogue/wood/herringbone, /area/provincial/underground/dungeon/gargoyles_rest) +"oyU" = ( +/obj/item/candle/candlestick/gold/single/lit{ + pixel_x = -14; + pixel_y = 12 + }, +/obj/structure/table/wood, +/turf/open/floor/carpet/royalblack, +/area/provincial/indoors/town/province_keep/quarters/marquis) "oyY" = ( /turf/open/transparent/openspace, /area/provincial/indoors/town/farm/barn) @@ -45452,11 +45551,7 @@ /turf/open/floor/rogue/grass, /area/provincial/underground/forest/brightway) "oNB" = ( -/obj/structure/rack/rogue, -/obj/item/rogueweapon/pick, -/obj/item/rogueweapon/pick, -/obj/item/rogueweapon/pick, -/obj/item/rogueweapon/pick, +/obj/machinery/light/rogue/oven/west, /turf/open/floor/rogue/tile, /area/provincial/indoors/town/dusk_quarter) "oNF" = ( @@ -47331,29 +47426,31 @@ /area/provincial/indoors/town/mages_university/library) "pwc" = ( /obj/structure/closet/crate/roguecloset, -/obj/item/reagent_containers/glass/cup/wooden, -/obj/item/reagent_containers/glass/cup/wooden, /obj/item/reagent_containers/glass/cup, /obj/item/reagent_containers/glass/cup/silver, /obj/item/kitchen/rollingpin, /obj/item/reagent_containers/glass/bowl, -/obj/item/reagent_containers/glass/bowl, -/obj/item/cooking/platter, -/obj/item/cooking/platter, /obj/effect/decal/cobbleedge/directional/east, -/obj/item/cooking/platter, -/obj/item/cooking/platter, -/obj/item/reagent_containers/glass/bowl, -/obj/item/reagent_containers/glass/bowl, -/obj/item/reagent_containers/glass/bowl, -/obj/item/reagent_containers/glass/bowl, -/obj/item/cooking/platter, -/obj/item/cooking/platter, -/obj/item/cooking/platter, -/obj/item/cooking/platter, -/obj/item/reagent_containers/glass/beaker/jar, /obj/item/reagent_containers/glass/beaker/jar, /obj/item/reagent_containers/glass/beaker/jar, +/obj/item/reagent_containers/glass/bowl/silver, +/obj/item/reagent_containers/glass/bowl/silver, +/obj/item/reagent_containers/glass/bowl/iron, +/obj/item/reagent_containers/glass/bowl/iron, +/obj/item/reagent_containers/glass/bowl/iron, +/obj/item/reagent_containers/glass/bowl/iron, +/obj/item/cooking/platter/silver, +/obj/item/cooking/platter/silver, +/obj/item/cooking/platter/copper, +/obj/item/cooking/platter/copper, +/obj/item/cooking/platter/copper, +/obj/item/cooking/platter/copper, +/obj/item/cooking/platter/pewter, +/obj/item/cooking/platter/pewter, +/obj/item/reagent_containers/glass/cup/steel, +/obj/item/reagent_containers/glass/cup/steel, +/obj/item/reagent_containers/glass/cup/steel, +/obj/item/reagent_containers/glass/cup/steel, /turf/open/floor/rogue/ruinedwood{ icon_state = "weird1" }, @@ -47520,12 +47617,18 @@ /obj/item/rogueweapon/huntingknife/cleaver, /obj/item/rogueweapon/huntingknife/cleaver, /obj/item/clothing/head/roguetown/chef, -/obj/item/kitchen/spoon/ironspoon, -/obj/item/kitchen/spoon/ironspoon, -/obj/item/kitchen/spoon/ironspoon, -/obj/item/kitchen/spoon/ironspoon, -/obj/item/kitchen/spoon/ironspoon, -/obj/item/kitchen/spoon/ironspoon, +/obj/item/kitchen/spoon/silver, +/obj/item/kitchen/spoon/silver, +/obj/item/kitchen/spoon/silver, +/obj/item/kitchen/spoon/silver, +/obj/item/kitchen/spoon/silver, +/obj/item/kitchen/spoon/silver, +/obj/item/kitchen/fork/silver, +/obj/item/kitchen/fork/silver, +/obj/item/kitchen/fork/silver, +/obj/item/kitchen/fork/silver, +/obj/item/kitchen/fork/silver, +/obj/item/kitchen/fork/silver, /turf/open/floor/rogue/ruinedwood{ icon_state = "weird1" }, @@ -48415,9 +48518,22 @@ /turf/open/floor/rogue/churchmarble, /area/provincial/underground/dungeon/cursed_labyrinth) "pNb" = ( -/obj/machinery/light/rogue/wallfire, -/turf/closed/wall/mineral/rogue/stone, -/area/provincial/indoors/town/sewer) +/obj/structure/closet/crate/chest/old_crate{ + name = "clay crate" + }, +/obj/item/natural/clay, +/obj/item/natural/clay, +/obj/item/natural/clay, +/obj/item/natural/clay, +/obj/item/natural/clay, +/obj/item/natural/clay, +/obj/item/natural/clay, +/obj/item/natural/clay, +/obj/item/natural/clay, +/obj/item/natural/clay, +/obj/item/recipe_book/ceramics, +/turf/open/floor/rogue/tile, +/area/provincial/indoors/town/dusk_quarter) "pNf" = ( /turf/closed/wall/mineral/rogue/pipe{ icon_state = "iron_line" @@ -48961,7 +49077,7 @@ /turf/open/floor/rogue/hexstone, /area/provincial/underground/dungeon/fogotten_church) "pVQ" = ( -/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/debris/glassy, /turf/open/floor/rogue/naturalstone, /area/provincial/outdoors/beach) "pVS" = ( @@ -49643,6 +49759,14 @@ }, /turf/open/floor/rogue/twig, /area/provincial/indoors) +"qhc" = ( +/obj/structure/rack/rogue, +/obj/item/rogueweapon/pick, +/obj/item/rogueweapon/pick, +/obj/item/rogueweapon/pick, +/obj/item/rogueweapon/pick, +/turf/open/floor/rogue/tile, +/area/provincial/indoors/town/mages_university/shared_storage) "qhi" = ( /obj/structure/chair/wood/rogue{ dir = 8 @@ -49911,6 +50035,9 @@ /obj/item/seeds/onion, /obj/item/seeds/onion, /obj/structure/closet/crate/chest/wicker, +/obj/item/seeds/rice, +/obj/item/seeds/rice, +/obj/item/seeds/rice, /obj/item/seeds/pumpkin, /obj/item/seeds/pumpkin, /obj/item/seeds/pumpkin, @@ -50100,12 +50227,6 @@ /obj/structure/fluff/railing/border{ dir = 1 }, -/obj/structure/fluff/railing/border{ - dir = 8 - }, -/obj/structure/fluff/railing/border{ - dir = 9 - }, /turf/open/floor/rogue/herringbone, /area/provincial/indoors/town/mages_university/archivist/quarters) "qnL" = ( @@ -53174,12 +53295,20 @@ /obj/structure/table/wood{ icon_state = "largetable" }, -/obj/item/reagent_containers/glass/bowl{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/item/reagent_containers/glass/bowl, /obj/structure/rack/rogue/shelf, +/obj/item/cooking/platter/copper{ + pixel_y = 12; + pixel_x = 12 + }, +/obj/item/cooking/platter/copper, +/obj/item/reagent_containers/glass/bowl/iron{ + pixel_y = 32; + pixel_x = 12 + }, +/obj/item/reagent_containers/glass/bowl/iron{ + pixel_y = 32; + pixel_x = -8 + }, /turf/open/floor/rogue/herringbone, /area/provincial/indoors/town/mages_university/artificer) "rnM" = ( @@ -53766,7 +53895,7 @@ dir = 1; icon_state = "borderfall" }, -/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/debris/glassy, /turf/open/floor/rogue/grassyel, /area/provincial/outdoors/field) "rzk" = ( @@ -56686,7 +56815,7 @@ /turf/open/floor/rogue/ruinedwood, /area/provincial/indoors) "szy" = ( -/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/debris/glassy, /obj/item/natural/glass/shard, /turf/open/floor/rogue/blocks, /area/provincial/indoors/town/sewer) @@ -56824,6 +56953,9 @@ /area/provincial/outdoors/forest) "sBD" = ( /obj/structure/table/wood, +/obj/item/candle/candlestick/silver/lit{ + pixel_y = 23 + }, /turf/open/floor/rogue/tile/masonic/single, /area/provincial/indoors/town/province_keep/throneroom) "sBG" = ( @@ -60068,14 +60200,6 @@ dir = 4; icon_state = "largetable" }, -/obj/item/kitchen/spoon{ - pixel_x = -12; - pixel_y = 4 - }, -/obj/item/kitchen/spoon{ - pixel_x = -9; - pixel_y = 0 - }, /obj/item/reagent_containers/glass/bucket/wooden{ pixel_x = 1; pixel_y = 7 @@ -64788,6 +64912,15 @@ /obj/item/seeds/wheat/oat, /obj/item/seeds/wheat/oat, /obj/structure/closet/crate/chest/wicker, +/obj/item/seeds/nut, +/obj/item/seeds/nut, +/obj/item/seeds/nut, +/obj/item/seeds/poppy, +/obj/item/seeds/poppy, +/obj/item/seeds/poppy, +/obj/item/seeds/coffee, +/obj/item/seeds/coffee, +/obj/item/seeds/coffee, /obj/item/seeds/carrot, /obj/item/seeds/carrot, /obj/item/seeds/carrot, @@ -64852,7 +64985,7 @@ pixel_x = 5; pixel_y = 4 }, -/obj/item/rogueweapon/hammer/claw{ +/obj/item/rogueweapon/hammer/steel{ pixel_x = -2; pixel_y = 5 }, @@ -67561,6 +67694,12 @@ }, /turf/open/floor/rogue/grassred, /area/provincial/underground/dungeon/old_university_garden) +"wiR" = ( +/obj/structure/fluff/ceramicswheel, +/turf/open/floor/rogue/ruinedwood{ + icon_state = "weird1" + }, +/area/provincial/indoors/town/house) "wiT" = ( /obj/effect/landmark/start/lunatic, /turf/open/floor/rogue/grasscold, @@ -71527,6 +71666,11 @@ /obj/item/paper, /obj/item/paper/scroll, /obj/item/natural/feather, +/obj/item/reagent_containers/glass/bucket/pot/teapot, +/obj/item/reagent_containers/glass/cup/ceramic, +/obj/item/reagent_containers/glass/cup/ceramic, +/obj/item/reagent_containers/glass/cup/ceramic, +/obj/item/reagent_containers/glass/cup/ceramic, /turf/open/floor/rogue/blocks/stonered/tiny, /area/provincial/indoors/town/shop) "xAY" = ( @@ -154246,7 +154390,7 @@ kAe bni kAe bki -okr +pNb okr jBW okr @@ -155606,7 +155750,7 @@ bki okr okr okr -okr +anx wSb qGR qGR @@ -159224,7 +159368,7 @@ iwa cbs qGR cbs -vbc +vPO vbc vbc nxz @@ -160129,7 +160273,7 @@ pqN cqq dxI unn -vPO +qhc dDs mXS pJA @@ -162353,7 +162497,7 @@ mRT wSb wSb wSb -pNb +wSb wSb wSb wSb @@ -166394,13 +166538,13 @@ mRT mRT mRT mRT -wpa -wpa -wpa -wpa -wpa -wpa -wpa +fyA +fyA +fyA +fyA +fyA +fyA +fyA rRL rRL fyA @@ -166846,12 +166990,12 @@ mRT mRT mRT wsb -wpa -wpa -wpa -wpa -wpa -wpa +fyA +fyA +fyA +fyA +fyA +fyA vyi rRL fyA @@ -167298,12 +167442,12 @@ mRT mRT mRT mRT -wpa -wpa -wpa -wpa -wpa -wpa +fyA +fyA +fyA +fyA +fyA +fyA rRL oYU vyi @@ -167372,13 +167516,13 @@ aBy aBy tYa qxY -wpa -wpa -wpa -wpa -wpa -wpa -wpa +fyA +fyA +fyA +fyA +fyA +fyA +fyA vFX cFo umD @@ -167750,11 +167894,11 @@ mRT mRT mRT mRT -wpa -wpa -wpa -wpa -wpa +fyA +fyA +fyA +fyA +fyA rRL rRL rRL @@ -167824,13 +167968,13 @@ aBy aBy lmi iDF -bVo -bVo -bVo -bVo -bVo -bVo -bVo +umD +kOH +kOH +kOH +kOH +umD +umD cFo cFo cFo @@ -168202,10 +168346,10 @@ mRT mRT mRT mRT -wpa -wpa -wpa -wpa +fyA +fyA +fyA +fyA rZG rRL vyi @@ -168276,13 +168420,13 @@ imC tsk aMc iDF -bVo -bVo -bVo -bVo -bVo -bVo -bVo +umD +kOH +kOH +kOH +kOH +umD +umD cFo cFo cFo @@ -168654,9 +168798,9 @@ mRT mRT mRT mRT -wpa -wpa -wpa +fyA +fyA +fyA vyi rRL rRL @@ -168728,13 +168872,13 @@ imC tYa iDF iDF -bVo -bVo -bVo -bVo -bVo -bVo +umD +kOH +kOH +nXg nXg +umD +umD cFo cFo cFo @@ -169106,8 +169250,8 @@ mRT mRT mRT mRT -wpa -wpa +fyA +fyA rRL rRL rRL @@ -169179,14 +169323,14 @@ vhc vhc iDF iDF -bVo -bVo -bVo -bVo -bVo +umD +kOH +kOH nXg nXg nXg +umD +umD cFo cFo umD @@ -169558,7 +169702,7 @@ mRT mRT wsb mRT -wpa +fyA rZG rRL fyA @@ -169624,21 +169768,21 @@ cqq pqN dxI bVo -bVo +kOH iDF iDF iDF iDF iDF -bVo -bVo -bVo -bVo -bVo -bVo +umD +umD +kOH +nXg nXg nXg nXg +umD +umD jsh jsh umD @@ -170010,7 +170154,7 @@ mRT mRT mRT mRT -wpa +fyA vyi rRL fyA @@ -170076,21 +170220,21 @@ iBz pqN dxI bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo +kOH +kOH +kOH +kOH +kOH +kOH +kOH +kOH nXg nXg nXg nXg +nXg +umD +umD jsh jsh umD @@ -170462,7 +170606,7 @@ mRT mRT mRT mRT -wpa +fyA rRL rRL vyi @@ -170528,21 +170672,21 @@ cqq pqN dxI bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo +kOH +kOH +kOH +kOH +kOH +kOH +kOH +kOH +nXg nXg nXg nXg nXg +umD +umD jsh jsh umD @@ -170980,21 +171124,21 @@ cqq pqN dxI bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo +kOH +kOH +kOH +kOH +kOH nXg nXg nXg -kOH +nXg +nXg +nXg +nXg +nXg +umD +umD jsh jsh umD @@ -171367,7 +171511,7 @@ mRT mRT mRT rRL -wpa +fyA rRL rRL rRL @@ -171432,21 +171576,21 @@ cqq pqN dxI bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo +kOH +kOH +kOH +kOH nXg nXg nXg nXg -kOH +nXg +nXg +nXg +nXg +nXg +umD +umD jsh jsh umD @@ -171818,9 +171962,9 @@ mRT mRT mRT mRT -wpa -wpa -wpa +fyA +fyA +fyA rRL rRL fyA @@ -171884,21 +172028,21 @@ cqq pqN dxI bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo +kOH +kOH +kOH nXg nXg nXg nXg -kOH +nXg +nXg +nXg +nXg +nXg +nXg +umD +umD jsh jsh umD @@ -172270,9 +172414,9 @@ mRT mRT mRT mRT -wpa -bVo -wpa +fyA +umD +fyA rRL oYU fyA @@ -172336,21 +172480,21 @@ pqN pqN dxI bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo +kOH +kOH nXg nXg nXg nXg -kOH +nXg +nXg +nXg +nXg +nXg +nXg +nXg +umD +umD jsh jsh umD @@ -172722,9 +172866,9 @@ mRT mRT mRT wsb -wpa -bVo -wpa +fyA +umD +fyA rRL rRL fyA @@ -172788,20 +172932,20 @@ pqN pqN dxI bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo +kOH +kOH +nXg +nXg +nXg +nXg +nXg +nXg +nXg nXg nXg nXg nXg -kOH +umD umD jsh jsh @@ -173174,9 +173318,9 @@ mRT mRT mRT mRT -wpa -bVo -wpa +fyA +umD +fyA vyi rRL fyA @@ -173240,20 +173384,20 @@ pqN sGr pQm bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo +kOH +kOH +nXg +nXg +nXg +nXg +nXg +nXg +nXg nXg nXg nXg nXg -kOH +umD umD jsh jsh @@ -173626,10 +173770,10 @@ mRT mRT mRT mRT -wpa -bVo -wpa -wpa +fyA +umD +fyA +fyA rRL rRL fyA @@ -173692,15 +173836,15 @@ pqN dxI bVo bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo +kOH +kOH +nXg +nXg +nXg +nXg +nXg +nXg +nXg nXg nXg nXg @@ -174078,11 +174222,11 @@ mRT mRT mRT mRT -wpa -bVo -bVo -wpa -wpa +fyA +umD +umD +fyA +fyA rZG fyA umD @@ -174143,15 +174287,15 @@ uOl uOl dxI bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo +kOH +kOH +kOH +nXg +nXg +nXg +nXg +nXg +nXg nXg nXg nXg @@ -174530,11 +174674,11 @@ mRT mRT mRT mRT -wpa -bVo -bVo -wpa -wpa +fyA +umD +umD +fyA +fyA vyi fyA umD @@ -174595,14 +174739,14 @@ qGR qGR pQm bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo +kOH +kOH +kOH +nXg +nXg +nXg +nXg +nXg nXg nXg kOH @@ -174982,10 +175126,10 @@ mRT mRT mRT mRT -wpa -bVo -bVo -wpa +fyA +umD +umD +fyA rRL rRL fyA @@ -175047,14 +175191,14 @@ bVo bVo bVo bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo +kOH +kOH +kOH +nXg +nXg +nXg +nXg +nXg nXg nXg kOH @@ -175434,10 +175578,10 @@ mRT mRT wsb mRT -wpa -bVo -bVo -wpa +fyA +umD +umD +fyA vyi rRL fyA @@ -175500,19 +175644,19 @@ bVo bVo bVo bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo +kOH +kOH +kOH +nXg +nXg +nXg +nXg nXg nXg -kOH kOH umD umD +umD fTx fTx fTx @@ -175883,14 +176027,14 @@ nXg wpa mRT mRT -wpa +fyA mRT mRT -wpa -bVo -bVo -wpa -wpa +fyA +umD +umD +fyA +fyA rRL rRL fyA @@ -175952,16 +176096,16 @@ cqJ cqJ cqJ bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo kOH kOH kOH +kOH +kOH +kOH +kOH +kOH +kOH +umD umD umD fTx @@ -176335,13 +176479,13 @@ nXg wpa mRT mRT -wpa +fyA mRT mRT -wpa -bVo -bVo -wpa +fyA +umD +umD +fyA rZG rRL rRL @@ -176404,15 +176548,15 @@ dDm mbv cqJ bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo kOH kOH +kOH +kOH +kOH +kOH +kOH +umD +umD umD umD jsh @@ -176787,14 +176931,14 @@ nXg wpa mRT mRT -wpa +fyA mRT mRT -wpa -bVo -bVo -wpa -wpa +fyA +umD +umD +fyA +fyA rRL rRL rRL @@ -176856,13 +177000,13 @@ eEF eEF cqJ bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo +kOH +kOH +umD +umD +umD +umD +umD umD umD umD @@ -177238,15 +177382,15 @@ nXg nXg wpa mRT -wpa -wpa +fyA +fyA mRT -wpa -wpa -bVo -bVo -bVo -wpa +fyA +fyA +umD +umD +umD +fyA rRL rRL rRL @@ -177309,10 +177453,10 @@ gzJ cqJ bVo bVo -bVo -bVo -bVo -bVo +kOH +umD +umD +umD umD umD umD @@ -177689,16 +177833,16 @@ nXg nXg nXg trj -wpa +fyA trj -wpa -wpa -wpa -bVo -bVo -bVo -bVo -wpa +fyA +fyA +fyA +umD +umD +umD +umD +fyA vyi rRL vyi @@ -177761,9 +177905,9 @@ mhs cqJ rvi bVo -bVo -bVo -bVo +kOH +umD +umD umD umD jsh @@ -178143,14 +178287,14 @@ nXg nXg nXg nXg -bVo -bVo -bVo -bVo -bVo -wpa -wpa -wpa +umD +umD +umD +umD +umD +fyA +fyA +fyA rRL ptI ptI @@ -178213,9 +178357,9 @@ lNQ lQL rvi bVo -bVo -bVo -bVo +kOH +umD +umD umD umD jsh @@ -178595,12 +178739,12 @@ qMW nXg nXg nXg -bVo -bVo -bVo -bVo -bVo -wpa +umD +umD +umD +umD +umD +fyA wsb mRT mRT @@ -178665,8 +178809,8 @@ wFq vKK rvi bVo -bVo -bVo +kOH +kOH umD umD jsh @@ -179047,13 +179191,13 @@ stK stK nXg nXg -bVo -bVo -bVo -bVo -bVo -wpa -wpa +umD +umD +umD +umD +umD +fyA +fyA mRT mRT mRT @@ -179103,10 +179247,10 @@ pqN cqq dxI bVo -bVo -bVo -bVo -bVo +kOH +kOH +kOH +kOH bVo bVo bVo @@ -179117,8 +179261,8 @@ rvi rvi rvi bVo -bVo -bVo +kOH +kOH umD jsh jsh @@ -179500,14 +179644,14 @@ eGf stK nXg umD -bVo -bVo -bVo -bVo -bVo -wpa -wpa -wpa +umD +umD +umD +umD +umD +fyA +fyA +fyA wsb mRT mRT @@ -179555,21 +179699,21 @@ pqN cqq dxI bVo +kOH +kOH +kOH +kOH +kOH +kOH +kOH +kOH bVo bVo bVo bVo bVo bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo +kOH umD umD jsh @@ -179953,14 +180097,14 @@ stK qMW kOH umD -bVo +umD jsh prs -bVo -bVo -bVo -wpa -wpa +umD +umD +umD +fyA +fyA mRT mRT mRT @@ -180007,21 +180151,21 @@ pqN cqq dxI bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo +kOH +nXg +nXg +nXg +kOH +kOH +kOH +kOH +kOH +kOH +kOH +kOH +kOH +kOH +kOH umD jsh jsh @@ -180409,10 +180553,10 @@ stK jsh jsh jsh -bVo -bVo -bVo -wpa +umD +umD +umD +fyA mRT wsb mRT @@ -180459,25 +180603,25 @@ pqN uOl dxI bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo +kOH +nXg +nXg +nXg +nXg +kOH +kOH +kOH +kOH +kOH +umD +umD +umD +umD +umD jsh jsh jsh -bVo +umD blu blu rHS @@ -180861,10 +181005,10 @@ stK stK jsh jsh -bVo -bVo -bVo -wpa +umD +umD +umD +fyA mRT mRT mRT @@ -180911,25 +181055,25 @@ pqN iqS dxI bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo +kOH +nXg +nXg +nXg +nXg +kOH +kOH +umD +umD +umD +umD +umD +umD +umD jsh jsh jsh -bVo -bVo +umD +umD blu rHS rHS @@ -181314,13 +181458,13 @@ umD umD jsh jsh -bVo -bVo -wpa -wpa -wpa -wpa -wpa +umD +umD +fyA +fyA +fyA +fyA +fyA mRT mRT mRT @@ -181363,25 +181507,25 @@ pqN cqq dxI bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo +kOH +kOH +nXg +nXg +kOH +kOH +umD +umD +umD +umD +umD +umD +umD jsh jsh jsh jsh -bVo -bVo +umD +umD blu rHS rHS @@ -181768,12 +181912,12 @@ jsh jsh jsh jsh -bVo -bVo -bVo -bVo -wpa -wpa +umD +umD +umD +umD +fyA +fyA mRT mRT mRT @@ -181815,15 +181959,15 @@ cqq cqq dxI bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo +kOH +kOH +nXg +nXg +kOH +kOH +umD +umD +umD jsh jsh jsh @@ -181831,8 +181975,8 @@ jsh jsh jsh jsh -bVo -bVo +umD +umD blu blu rHS @@ -182221,12 +182365,12 @@ jsh jsh jsh jsh -bVo -bVo -bVo -bVo -wpa -wpa +umD +umD +umD +umD +fyA +fyA mRT mRT mRT @@ -182267,14 +182411,14 @@ qGR qGR pQm bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo +kOH +kOH +kOH +kOH +kOH +umD +umD +umD jsh jsh jsh @@ -182282,9 +182426,9 @@ jsh jsh jsh jsh -bVo -bVo -bVo +umD +umD +umD blu blu rHS @@ -182673,12 +182817,12 @@ blu blu blu blu -bVo -bVo -bVo -bVo -bVo -wpa +umD +umD +umD +umD +umD +fyA mRT mRT mRT @@ -182719,24 +182863,24 @@ bVo bVo bVo bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo +umD +kOH +kOH +kOH +kOH +umD +umD jsh jsh jsh jsh jsh jsh -bVo -bVo -bVo -bVo -bVo +umD +umD +umD +umD +umD blu blu rHS @@ -183126,12 +183270,12 @@ blu blu blu blu -bVo -bVo -bVo -bVo -wpa -wpa +umD +umD +umD +umD +fyA +fyA mRT mRT mRT @@ -183154,40 +183298,40 @@ pqN cqq dxI bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo -bVo +umD +umD +umD +umD +umD +umD +umD +umD +umD +umD +umD +umD +umD +umD +umD +umD +umD +umD +umD +umD +umD +umD +umD blu blu blu jsh jsh -bVo -bVo -bVo -bVo -bVo -bVo +umD +umD +umD +kOH +kOH +umD blu blu blu @@ -183579,12 +183723,12 @@ blu blu blu blu -bVo -bVo -bVo -bVo -wpa -wpa +umD +umD +umD +umD +fyA +fyA mRT mRT hxB @@ -183606,8 +183750,8 @@ pqN cqq dxI bVo -bVo -bVo +umD +umD jsh jsh jsh @@ -183621,12 +183765,12 @@ blu blu blu blu -bVo -bVo -bVo -bVo -bVo -bVo +umD +umD +umD +umD +umD +umD blu blu blu @@ -183634,11 +183778,11 @@ blu blu blu blu -bVo -bVo -bVo -bVo -bVo +umD +umD +umD +umD +umD blu blu blu @@ -184036,8 +184180,8 @@ blu blu blu bVo -wpa -wpa +fyA +fyA mRT wXW mRT @@ -184058,7 +184202,7 @@ cqq cqq dxI bVo -bVo +umD blu blu blu @@ -184489,7 +184633,7 @@ blu blu blu blu -wpa +fyA wpa qCy qCy @@ -257706,7 +257850,7 @@ yem ggU pyK pyK -pyK +wiR yem xnC xnC @@ -400598,7 +400742,7 @@ fFm rbs bZZ rcb -rcb +qnH oxD jAX bSa @@ -515365,7 +515509,7 @@ hHG egw uaq krk -gcb +eXT tlT dVX uaq @@ -515817,8 +515961,8 @@ vcW jnF uaq krk -dVX -tlT +fvq +oyU gcb uaq egw diff --git a/code/datums/skills/misc.dm b/code/datums/skills/misc.dm index b191bd2142..05f0107772 100644 --- a/code/datums/skills/misc.dm +++ b/code/datums/skills/misc.dm @@ -98,3 +98,11 @@ "...as the years go by, the mantra becomes increasingly oppressive. Stitch, sew, cut ties, stitch, sew, thread the needle twice...", "...you turn over the fabric, and within the two layers of the gown, you hide a secret stitched into the gown, your initials, hidden within. A forbidden mark in some cultures... you never liked the bride much..." ) + +/datum/skill/misc/ceramics + name = "Pottery" + desc = "Handles crafting and making of clay into vases and other fine-craft works." + dreams = list( + "...the wheel spins, and spins.. yet you watch as a work of art grows from its center...", + "...a slab of clay is molded into a beautiful statue. A testiment to Malum's blessings, and Xylix's insperation. A pure work of beauty..." + ) diff --git a/code/datums/status_effects/rogue/roguebuff.dm b/code/datums/status_effects/rogue/roguebuff.dm index 89556b9d28..1f0cc4fa21 100644 --- a/code/datums/status_effects/rogue/roguebuff.dm +++ b/code/datums/status_effects/rogue/roguebuff.dm @@ -46,6 +46,26 @@ desc = "" icon_state = "foodbuff" +//coffee buff +/datum/status_effect/buff/vigorized + id = "vigorized" + alert_type = /atom/movable/screen/alert/status_effect/vigorized + duration = 10 MINUTES + effectedstats = list("speed" = 1, "intelligence" = 1) + +/atom/movable/screen/alert/status_effect/vigorized + name = "Vigorized" + desc = "I feel a surge of energy inside, quickening my speed and sharpening my focus." + icon_state = "drunk" + +/datum/status_effect/buff/vigorized/on_apply() + . = ..() + to_chat(owner, span_warning("I feel a surge of energy inside me!")) + +/datum/status_effect/buff/vigorized/on_remove() + . = ..() + to_chat(owner, span_warning("The surge of energy inside me fades...")) + /datum/status_effect/buff/druqks id = "druqks" alert_type = /atom/movable/screen/alert/status_effect/buff/druqks diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index 6a0309d052..946ac0cb85 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/misc.dm @@ -103,21 +103,6 @@ desc = "" . = ..() -/obj/effect/decal/cleanable/glass - name = "tiny shards" - desc = "" - icon = 'icons/effects/debris.dmi' - icon_state = "tiny" - beauty = -100 - -/obj/effect/decal/cleanable/glass/Initialize(mapload) - . = ..() - setDir(pick(GLOB.cardinals)) - -/obj/effect/decal/cleanable/glass/ex_act() - qdel(src) - return TRUE - /obj/effect/decal/cleanable/glitter name = "generic glitter pile" desc = "" @@ -158,3 +143,39 @@ icon = 'icons/effects/confetti_and_decor.dmi' icon_state = "confetti" mouse_opacity = MOUSE_OPACITY_TRANSPARENT //the confetti itself might be annoying enough + +//................ Debris decals (result from crafting or destroying items thats just visual) ............... // +/obj/effect/decal/cleanable/debris + name = "" + desc = "" + icon = 'icons/roguetown/items/crafting.dmi' + icon_state = "tiny" + beauty = -20 +/obj/effect/decal/cleanable/debris/Initialize() + . = ..() + setDir(pick(GLOB.cardinals)) + +/obj/effect/decal/cleanable/debris/glassy + name = "glass shards" + icon_state = "tiny" + beauty = -100 +/obj/effect/decal/cleanable/debris/glassy/Crossed(mob/living/L) + . = ..() + playsound(loc,'sound/foley/glass_step.ogg', 50, FALSE) + +/obj/effect/decal/cleanable/debris/stony + name = "stone chippings" + icon_state = "pebbly" + +/obj/effect/decal/cleanable/debris/woody // sawdust gets cleared by weather + name = "sawdust" + icon_state = "woody" +/obj/effect/decal/cleanable/debris/woody/Initialize() + START_PROCESSING(SSprocessing, src) + GLOB.weather_act_upon_list += src + . = ..() +/obj/effect/decal/cleanable/debris/woody/Destroy() + STOP_PROCESSING(SSprocessing, src) + GLOB.weather_act_upon_list -= src + . = ..() +/obj/effect/decal/cleanable/debris/woody/weath diff --git a/code/game/objects/effects/spawners/lootdrops/dungeons.dm b/code/game/objects/effects/spawners/lootdrops/dungeons.dm index b55b2dcd3b..2c4448e110 100644 --- a/code/game/objects/effects/spawners/lootdrops/dungeons.dm +++ b/code/game/objects/effects/spawners/lootdrops/dungeons.dm @@ -227,8 +227,8 @@ /obj/item/storage/roguebag/crafted = 3, /obj/item/clothing/mask/cigarette/pipe = 3, /obj/item/clothing/mask/cigarette/rollie = 3, - /datum/crafting_recipe/roguetown/sigsweet = 2, - /datum/crafting_recipe/roguetown/sigdry = 2, + /datum/crafting_recipe/roguetown/survival/sigsweet = 2, + /datum/crafting_recipe/roguetown/survival/sigdry = 2, /obj/item/paper = 3, /obj/item/reagent_containers/glass/bowl = 3, /obj/item/storage/bag/tray = 3, diff --git a/code/game/objects/items/candle.dm b/code/game/objects/items/candle.dm index 6c3c95b028..f450db4dc5 100644 --- a/code/game/objects/items/candle.dm +++ b/code/game/objects/items/candle.dm @@ -122,5 +122,89 @@ /obj/item/candle/skull/lit start_lit = TRUE icon_state = "skullcandle_lit" + +/obj/item/candle/candlestick/gold + name = "three-stick gold candlestick" + icon = 'icons/roguetown/items/lighting.dmi' + icon_state = "gcandelabra" + infinite = TRUE + sellprice = 40 + +/obj/item/candle/candlestick/gold/update_icon() + icon_state = "gcandelabra[lit ? "_lit" : ""]" + +/obj/item/candle/candlestick/gold/lit + icon_state = "gcandelabra_lit" + start_lit = TRUE + +/obj/item/candle/candlestick/silver + name = "three-stick silver candlestick" + icon = 'icons/roguetown/items/lighting.dmi' + icon_state = "scandelabra" + infinite = TRUE + sellprice = 60 + +/obj/item/candle/candlestick/silver/update_icon() + icon_state = "scandelabra[lit ? "_lit" : ""]" + +/obj/item/candle/candlestick/silver/lit + icon_state = "scandelabra_lit" + start_lit = TRUE + +/obj/item/candle/candlestick/gold/single + name = "one-stick gold candlestick" + icon = 'icons/roguetown/items/lighting.dmi' + icon_state = "singlegcandelabra" + infinite = TRUE + sellprice = 30 + +/obj/item/candle/candlestick/gold/single/update_icon() + icon_state = "singlegcandelabra[lit ? "_lit" : ""]" + +/obj/item/candle/candlestick/gold/single/lit + icon_state = "singlegcandelabra_lit" + start_lit = TRUE + +/obj/item/candle/candlestick/silver/single + name = "one-stick silver candlestick" + icon = 'icons/roguetown/items/lighting.dmi' + icon_state = "singlescandelabra" + infinite = TRUE + sellprice = 50 + +/obj/item/candle/candlestick/silver/single/update_icon() + icon_state = "singlescandelabra[lit ? "_lit" : ""]" + +/obj/item/candle/candlestick/silver/single/lit + icon_state = "singlescandelabra_lit" + start_lit = TRUE + +/obj/item/candle/gold + name = "gold candle" + icon = 'icons/roguetown/items/lighting.dmi' + icon_state = "gcandle" + infinite = TRUE + sellprice = 30 + +/obj/item/candle/gold/update_icon() + icon_state = "gcandle[lit ? "_lit" : ""]" + +/obj/item/candle/gold/lit + icon_state = "gcandle_lit" + start_lit = TRUE + +/obj/item/candle/silver + name = "silver candle" + icon = 'icons/roguetown/items/lighting.dmi' + icon_state = "scandle" + infinite = TRUE + sellprice = 50 + +/obj/item/candle/silver/update_icon() + icon_state = "scandle[lit ? "_lit" : ""]" + +/obj/item/candle/silver/lit + icon_state = "scandle_lit" + start_lit = TRUE #undef CANDLE_LUMINOSITY diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 838d36b0a6..643965754a 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -273,6 +273,7 @@ light_outer_range = 6 fuel = 120 MINUTES should_self_destruct = TRUE + extinguishable = TRUE /obj/item/flashlight/flare/torch/metal/afterattack(atom/movable/A, mob/user, proximity) . = ..() @@ -294,7 +295,7 @@ name = "iron lamptern" icon_state = "lamp" desc = "A light to guide the way." - light_outer_range = 7 + light_outer_range = 5 on = FALSE flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_HIP @@ -304,6 +305,8 @@ should_self_destruct = FALSE grid_width = 32 grid_height = 64 + extinguishable = FALSE + weather_resistant = TRUE /obj/item/flashlight/flare/torch/lantern/afterattack(atom/movable/A, mob/user, proximity) . = ..() @@ -322,9 +325,6 @@ turn_off() STOP_PROCESSING(SSobj, src) -/obj/item/flashlight/flare/torch/lantern/extinguish() - return - /obj/item/flashlight/flare/torch/lantern/getonmobprop(tag) . = ..() if(tag) @@ -343,7 +343,7 @@ icon_state = "bronzelamp" item_state = "bronzelamp" desc = "A marvel of engineering that emits a pale green glow." - light_outer_range = 8 + light_outer_range = 6 light_color ="#bdf4d4" on = FALSE @@ -351,7 +351,6 @@ name = "copper lamptern" icon_state = "clamp" desc = "A simple and cheap lamptern." - light_outer_range = 7 on = FALSE flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_HIP diff --git a/code/game/objects/items/rogueitems/ceramics.dm b/code/game/objects/items/rogueitems/ceramics.dm new file mode 100644 index 0000000000..d2d799f919 --- /dev/null +++ b/code/game/objects/items/rogueitems/ceramics.dm @@ -0,0 +1,129 @@ +/* Tools for using with Pottery */ + +/* Items made from Pottery */ + +// Uncooked items -- Still need to be brought to a kiln +// Those are all children of natural/clay so that they can inherit the Glaze method. + +//Bottle - subtype of glass bottle +/obj/item/natural/clay/claybottle + name = "unglazed clay bottle" + icon = 'icons/roguetown/items/cooking.dmi' + icon_state = "claybottleraw" + desc = "A bottle fashioned from clay. Still needs to be glazed to be useful." + cooked_type = /obj/item/reagent_containers/glass/bottle/claybottle + +/obj/item/reagent_containers/glass/bottle/claybottle + name = "clay vessel" + desc = "A small ceramic bottle." + icon = 'icons/roguetown/items/cooking.dmi' + icon_state = "claybottlecook" + sellprice = 6 + reagent_flags = OPENCONTAINER //So it doesn't appear through + +//Vase - bigger bottle +/obj/item/natural/clay/clayvase + name = "unglazed clay vase" + icon = 'icons/roguetown/items/cooking.dmi' + icon_state = "clayvaseraw" + desc = "A vase fashioned from clay. Still needs to be glazed to be useful." + cooked_type = /obj/item/reagent_containers/glass/bottle/clayvase + +/obj/item/reagent_containers/glass/bottle/clayvase + name = "ceramic vase" + desc = "A large sized ceramic vase." + icon = 'icons/roguetown/items/cooking.dmi' + icon_state = "clayvasecook" + volume = 65 // Larger than glass bottle + sellprice = 9 + reagent_flags = OPENCONTAINER //So it doesn't appear through + +//Fancy vase - bigger bottle + fancy +/obj/item/natural/clay/clayfancyvase + name = "unglazed fancy clay vase" + icon = 'icons/roguetown/items/cooking.dmi' + icon_state = "clayfancyvaseraw" + desc = "A fancy vase fashioned from clay. Still needs to be glazed to be useful." + cooked_type = /obj/item/reagent_containers/glass/bottle/clayfancyvase + +/obj/item/reagent_containers/glass/bottle/clayfancyvase + name = "fancy ceramic vase" + desc = "A large sized fancy ceramic vase." + icon = 'icons/roguetown/items/cooking.dmi' + icon_state = "clayfancyvasecook" + volume = 65 // Larger than glass bottle + sellprice = 14 + reagent_flags = OPENCONTAINER //So it doesn't appear through + +//Flask (was a cup) - subtype of regular cup but can shatter. +/obj/item/natural/clay/claycup + name = "unglazed clay flask" + icon = 'icons/roguetown/items/cooking.dmi' + icon_state = "claycupraw" + desc = "A small flask fashioned from clay. Still needs to be glazed to be useful." + cooked_type = /obj/item/reagent_containers/glass/cup/claycup + +/obj/item/reagent_containers/glass/cup/claycup + name = "clay flask" + desc = "A small ceramic flask." + icon = 'icons/roguetown/items/cooking.dmi' + icon_state = "claybottlecook" + sellprice = 3 + reagent_flags = OPENCONTAINER //So it doesn't appear through + +// Raw teapot +/obj/item/natural/clay/rawteapot + name = "raw teapot" + icon = 'icons/roguetown/items/cooking.dmi' + icon_state = "teapot_raw" + desc = "A teapot fashioned from clay. Still needs to be baked to be useful." + cooked_type = /obj/item/reagent_containers/glass/bucket/pot/teapot + +// Raw teacup +/obj/item/natural/clay/rawteacup + name = "raw teacup" + icon = 'icons/roguetown/items/cooking.dmi' + icon_state = "teacup_raw" + desc = "A teacup fashioned from clay. Still needs to be baked to be useful." + cooked_type = /obj/item/reagent_containers/glass/cup/ceramic + +//Bricks - Makes bricks which are used for building. (Need brick-wall sprites for this.. augh..) +/obj/item/natural/clay/claybrick + name = "uncooked clay brick" + desc = "an uncooked clay brick. Still needs to be cooked in a kilm." + icon = 'icons/roguetown/items/cooking.dmi' + icon_state = "claybrickraw" + cooked_type = /obj/item/natural/brick + + +//Statues - Basically cheapest version of the metal-made statues, but way easier to make given no rare material usage. Just skill. Plus, dyeable. +/obj/item/natural/clay/claystatue + name = "uncooked clay statue" + desc = "an uncooked clay statue. Still needs to be cooked in a kilm." + icon = 'icons/roguetown/items/cooking.dmi' + icon_state = "claystatueraw" + cooked_type = /obj/item/roguestatue/clay + +/obj/item/roguestatue/clay + name = "ceramic statue" + desc = "A ceramic statue, shining in its eligance!" + icon = 'icons/roguetown/items/cooking.dmi' + icon_state = "claystatuecooked1" + smeltresult = null //No resource return + sellprice = 15 //Iron is worth 20, so these gotta be a little cheaper + +/obj/item/roguestatue/clay/Initialize() + . = ..() + icon_state = "claystatuecook[pick(1,2)]" + +/obj/item/roguestatue/glass + name = "glass statue" + desc = "A statue made of fine glass. An incredible amount of skill must have went into this fragile masterpiece!" + icon = 'icons/roguetown/items/cooking.dmi' + icon_state = "statueglass1" + smeltresult = null //No resource return + sellprice = 70 //Silver is roughly 90 mammon, steel is 40. This sits roughly between. It's high skill to make and a bit of a grind so - worth it since resources to make aren't rare.. + +/obj/item/roguestatue/glass/Initialize() + . = ..() + icon_state = "statueglass[pick(1,2)]" diff --git a/code/game/objects/items/rogueitems/cup.dm b/code/game/objects/items/rogueitems/cup.dm index fa7812b7e0..5cf3764c5b 100644 --- a/code/game/objects/items/rogueitems/cup.dm +++ b/code/game/objects/items/rogueitems/cup.dm @@ -52,6 +52,12 @@ last_used = 0 is_silver = TRUE +/obj/item/reagent_containers/glass/cup/silver/small + name = "silver cup" + desc = "A silver cup, its surface adorned with intricate carvings and runes." + icon_state = "scup" + sellprice = 20 + /obj/item/reagent_containers/glass/cup/silver/pickup(mob/user) . = ..() var/mob/living/carbon/human/H = user @@ -119,6 +125,12 @@ icon_state = "golden" sellprice = 50 +/obj/item/reagent_containers/glass/cup/golden/small + name = "golden cup" + desc = "Adorned with gemstones, this cup radiates opulence and grandeur." + icon_state = "gcup" + sellprice = 40 + /obj/item/reagent_containers/glass/cup/golden/poison name = "golden goblet" desc = "Adorned with gemstones, this goblet radiates opulence and grandeur." @@ -161,3 +173,32 @@ add_overlay(filling) else icon_state = "bowl" + +/obj/item/reagent_containers/glass/cup/ceramic + name = "teacup" + desc = "A tea cup made out of ceramic. Used to serve tea." + dropshrink = 0.7 + icon_state = "cup" + sellprice = 10 + +/obj/item/reagent_containers/glass/cup/ceramic/examine() + . = ..() + . += span_info("It can be brushed with a dye brush to glaze it.") + +/obj/item/reagent_containers/glass/cup/ceramic/attackby(obj/item/I, mob/living/carbon/human/user) + . = ..() + if(istype(I, /obj/item/dye_brush)) + if(reagents.total_volume) + to_chat(user, span_notice("I can't glaze the cup while it has liquid in it.")) + return + if(do_after(user, 2 SECONDS, target = src)) + to_chat(user, span_notice("I glaze the cup with the dye brush.")) + new /obj/item/reagent_containers/glass/cup/ceramic/fancy(get_turf(src)) + qdel(src) + return + +/obj/item/reagent_containers/glass/cup/ceramic/fancy + name = "fancy teacup" + desc = "A fancy tea cup made out of ceramic. Used to serve tea." + icon_state = "cup_fancy" + sellprice = 12 diff --git a/code/game/objects/items/rogueitems/natural.dm b/code/game/objects/items/rogueitems/natural.dm index ab7681c6ac..606dc2eb52 100644 --- a/code/game/objects/items/rogueitems/natural.dm +++ b/code/game/objects/items/rogueitems/natural.dm @@ -6,6 +6,7 @@ desc = "" w_class = WEIGHT_CLASS_TINY var/bundletype = null + var/bundling_time = 4 SECONDS // Base bundling time - make lower for small objects. Higher for large. var/quality = SMELTERY_LEVEL_NORMAL // To not ruin blacksmith recipes grid_width = 32 grid_height = 32 @@ -151,7 +152,10 @@ /obj/item/natural/bundle/examine(mob/user) . = ..() - to_chat(user, span_notice("There are [amount] [stackname] in this bundle.")) + if(amount == maxamount ) + to_chat(user, span_notice("There are [amount] [stackname] in this bundle. It can not take any more.")) + else + to_chat(user, span_notice("There are [amount] [stackname] in this bundle.")) /obj/item/natural/bundle/proc/update_bundle() if(firefuel != 0) diff --git a/code/game/objects/items/rogueitems/natural/brick.dm b/code/game/objects/items/rogueitems/natural/brick.dm new file mode 100644 index 0000000000..547d53f35b --- /dev/null +++ b/code/game/objects/items/rogueitems/natural/brick.dm @@ -0,0 +1,72 @@ +/obj/item/natural/brick + name = "brick" + desc = "A cooked red brick." + icon = 'icons/roguetown/items/cooking.dmi' //It's because these are cooked via clay. Don't ask questions. + icon_state = "claybrickcook" + gripped_intents = null + sellprice = 3 + dropshrink = 0.75 + possible_item_intents = list(INTENT_GENERIC) + force = 14 //stronger than rock + throwforce = 18 //stronger than rock + slot_flags = ITEM_SLOT_MOUTH + obj_flags = null + w_class = WEIGHT_CLASS_TINY + experimental_inhand = FALSE + hitsound = list('sound/combat/hits/blunt/brick.ogg') + bundletype = /obj/item/natural/bundle/brick + +/obj/item/natural/brick/attackby(obj/item, mob/living/user) + if(item_flags & IN_STORAGE) + return + . = ..() + +/obj/item/natural/brick/attack_right(mob/user) + . = ..() + if(user.get_active_held_item()) + return + to_chat(user, span_warning("I start to collect [src]...")) + if(move_after(user, bundling_time, target = src)) + var/stackcount = 0 + for(var/obj/item/natural/brick/F in get_turf(src)) + stackcount++ + while(stackcount > 0) + if(stackcount == 1) + var/obj/item/natural/brick/S = new(get_turf(user)) + user.put_in_hands(S) + stackcount-- + else if(stackcount >= 2) + var/obj/item/natural/bundle/brick/B = new(get_turf(user)) + B.amount = clamp(stackcount, 2, 4) + B.update_bundle() + stackcount -= clamp(stackcount, 2, 4) + user.put_in_hands(B) + for(var/obj/item/natural/brick/F in get_turf(src)) + playsound(get_turf(user.loc), 'sound/foley/brickdrop.ogg', 100) + qdel(F) + +/obj/item/natural/bundle/brick + name = "stack of bricks" + desc = "A stack of bricks." + icon_state = "brickbundle1" + icon = 'icons/roguetown/items/cooking.dmi' //It's because these are cooked via clay. Don't ask questions. + experimental_inhand = FALSE + grid_width = 64 + grid_height = 64 + base_width = 64 + base_height = 64 + drop_sound = 'sound/foley/brickdrop.ogg' + pickup_sound = 'sound/foley/brickdrop.ogg' + hitsound = list('sound/combat/hits/blunt/shovel_hit.ogg', 'sound/combat/hits/blunt/shovel_hit2.ogg', 'sound/combat/hits/blunt/shovel_hit3.ogg') + possible_item_intents = list(/datum/intent/use) + force = 2 + throwforce = 0 // useless for throwing unless solo + throw_range = 2 + w_class = WEIGHT_CLASS_NORMAL + stackname = "bricks" + stacktype = /obj/item/natural/brick + maxamount = 4 + icon1 = "brickbundle2" + icon1step = 3 + icon2 = "brickbundle3" + icon2step = 4 diff --git a/code/game/objects/items/rogueitems/natural/clothfibersthorn.dm b/code/game/objects/items/rogueitems/natural/clothfibersthorn.dm index 13fc96640e..24c1c49862 100644 --- a/code/game/objects/items/rogueitems/natural/clothfibersthorn.dm +++ b/code/game/objects/items/rogueitems/natural/clothfibersthorn.dm @@ -7,6 +7,7 @@ throwforce = 0 obj_flags = null color = "#575e4a" + bundling_time = 1 SECONDS firefuel = 5 MINUTES resistance_flags = FLAMMABLE slot_flags = ITEM_SLOT_MOUTH @@ -15,17 +16,19 @@ w_class = WEIGHT_CLASS_TINY spitoutmouth = FALSE experimental_inhand = FALSE + sellprice = 2 bundletype = /obj/item/natural/bundle/fibers /obj/item/natural/fibers/attack_right(mob/user) + if(user.get_active_held_item()) + return var/is_legendary = FALSE if(user.mind.get_skill_level(/datum/skill/labor/farming) == SKILL_LEVEL_LEGENDARY) //check if the user has legendary farming skill is_legendary = TRUE //they do - var/work_time = 1 SECONDS //time to gather fibers if(is_legendary) - work_time = 2 //if legendary skill, the move_after is fast, 0.2 seconds + bundling_time = 2 //if legendary skill, the move_after is fast, 0.2 seconds to_chat(user, span_warning("I start to collect [src]...")) - if(move_after(user, work_time, target = src)) + if(move_after(user, bundling_time, target = src)) var/fibercount = 0 for(var/obj/item/natural/fibers/F in get_turf(src)) fibercount++ @@ -38,6 +41,7 @@ B.amount = clamp(fibercount, 2, 6) B.update_bundle() fibercount -= clamp(fibercount, 2, 6) + user.put_in_hands(B) for(var/obj/item/natural/fibers/F in get_turf(src)) qdel(F) @@ -50,6 +54,7 @@ throwforce = 0 obj_flags = null color = "#e6e3db" + bundling_time = 1 SECONDS firefuel = 5 MINUTES resistance_flags = FLAMMABLE slot_flags = ITEM_SLOT_MOUTH @@ -62,7 +67,7 @@ /obj/item/natural/silk/attack_right(mob/user) to_chat(user, span_warning("I start to collect [src]...")) - if(move_after(user, 1 SECONDS, target = src)) + if(move_after(user, bundling_time, target = src)) var/silkcount = 0 for(var/obj/item/natural/silk/F in get_turf(src)) silkcount++ @@ -103,6 +108,7 @@ force = 0 throwforce = 0 obj_flags = null + bundling_time = 2 SECONDS firefuel = 5 MINUTES resistance_flags = FLAMMABLE slot_flags = ITEM_SLOT_MOUTH|ITEM_SLOT_HIP @@ -114,13 +120,16 @@ spitoutmouth = FALSE experimental_inhand = FALSE bundletype = /obj/item/natural/bundle/cloth + sellprice = 4 var/wet = 0 /// Effectiveness when used as a bandage, how much bloodloss we can staunch var/bandage_effectiveness = 0.9 /obj/item/natural/cloth/attack_right(mob/user) + if(user.get_active_held_item()) + return to_chat(user, span_warning("I start to collect [src]...")) - if(move_after(user, 1 SECONDS, target = src)) + if(move_after(user, bundling_time, target = src)) var/clothcount = 0 for(var/obj/item/natural/cloth/F in get_turf(src)) clothcount++ @@ -133,7 +142,9 @@ B.amount = clamp(clothcount, 2, 10) B.update_bundle() clothcount -= clamp(clothcount, 2, 10) + user.put_in_hands(B) for(var/obj/item/natural/cloth/F in get_turf(src)) + playsound(user, "rustle", 70, FALSE, -4) qdel(F) /obj/item/natural/cloth/examine(mob/user) @@ -141,9 +152,6 @@ if(wet) . += span_notice("It's wet!") -/obj/item/natural/cloth/bandit - color = "#ff0000" - // CLEANING /obj/item/natural/cloth/attack_obj(obj/O, mob/living/user) @@ -466,10 +474,11 @@ icon3 = "worm6" stacktype = /obj/item/natural/worms stackname = "worms" + bundling_time = 1 SECONDS /obj/item/natural/worms/attack_right(mob/user) to_chat(user, span_warning("I start to collect [src]...")) - if(move_after(user, 1 SECONDS, target = src)) + if(move_after(user, bundling_time, target = src)) var/wormcount = 0 for(var/obj/item/natural/worms/F in get_turf(src)) wormcount++ @@ -482,6 +491,7 @@ B.amount = clamp(wormcount, 2, 12) B.update_bundle() wormcount -= clamp(wormcount, 2, 12) + user.put_in_hands(B) for(var/obj/item/natural/worms/F in get_turf(src)) qdel(F) diff --git a/code/game/objects/items/rogueitems/natural/glass.dm b/code/game/objects/items/rogueitems/natural/glass.dm index ebff70adc2..05b57851fe 100644 --- a/code/game/objects/items/rogueitems/natural/glass.dm +++ b/code/game/objects/items/rogueitems/natural/glass.dm @@ -1,22 +1,113 @@ -/obj/item/natural/glass/shard +/obj/item/natural/glass + name = "glass" + desc = "Windowpanes for construction work." + icon = 'icons/roguetown/items/crafting.dmi' + icon_state = "glasspane" + dropshrink = 0.8 + grid_width = 64 + grid_height = 64 + drop_sound = 'sound/foley/dropsound/glass_drop.ogg' + possible_item_intents = list(/datum/intent/use) + force = 0 + throwforce = 8 + throw_range = 5 + obj_flags = null + max_integrity = 20 + w_class = WEIGHT_CLASS_BULKY + bundletype = /obj/item/natural/bundle/glass + sellprice = 6 + +/obj/item/natural/glass/attackby(obj/item, mob/living/user) + if(item_flags & IN_STORAGE) + return + . = ..() + +/obj/item/natural/glass/throw_impact(atom/hit_atom, datum/thrownthing/thrownthing) + if(!..()) //was it caught by a mob? + new /obj/item/natural/glass_shard(get_turf(src)) + pixel_x = rand(-3, 3) + pixel_y = rand(-3, 3) + new /obj/effect/decal/cleanable/debris/glassy(get_turf(src)) + playsound(src, 'sound/foley/glassbreak.ogg', 90, TRUE) + qdel(src) + +/obj/item/natural/glass/attack_right(mob/user) + if(user.get_active_held_item()) + return + to_chat(user, span_warning("I start to collect [src]...")) + if(move_after(user, 4 SECONDS, target = src)) + var/stackcount = 0 + for(var/obj/item/natural/glass/F in get_turf(src)) + stackcount++ + while(stackcount > 0) + if(stackcount == 1) + new /obj/item/natural/glass(get_turf(user)) + stackcount-- + else if(stackcount >= 2) + var/obj/item/natural/bundle/glass/B = new(get_turf(user)) + B.amount = clamp(stackcount, 2, 3) + B.update_bundle() + stackcount -= clamp(stackcount, 2, 3) + user.put_in_hands(B) + for(var/obj/item/natural/glass/F in get_turf(src)) + playsound(get_turf(user.loc), 'sound/foley/dropsound/glass_drop.ogg', 90) + qdel(F) + +//................ Glass panes stack ............... // +/obj/item/natural/bundle/glass + name = "stack of glass" + desc = "A stack of fragile glass panes." + icon = 'icons/roguetown/items/crafting.dmi' + experimental_inhand = FALSE + icon_state = "glasspane1" + item_state = "glasspane" + dropshrink = 0.8 + grid_width = 64 + grid_height = 64 + drop_sound = 'sound/foley/dropsound/glass_drop.ogg' + possible_item_intents = list(/datum/intent/use) + force = 15 + throwforce = 18 + throw_range = 2 + firefuel = null + resistance_flags = null + firemod = null + w_class = WEIGHT_CLASS_HUGE + stackname = "glass" + stacktype = /obj/item/natural/glass + maxamount = 3 + icon1 = "glasspane1" + icon1step = 2 + icon2 = "glasspane2" + icon2step = 3 + +/obj/item/natural/bundle/glass/throw_impact(atom/hit_atom, datum/thrownthing/thrownthing) + if(!..()) //was it caught by a mob? + new /obj/item/natural/glass_shard(get_turf(src)) + pixel_x = rand(-3, 3) + pixel_y = rand(-3, 3) + new /obj/item/natural/glass_shard(get_turf(src)) + new /obj/effect/decal/cleanable/debris/glassy(get_turf(src)) + playsound(src, 'sound/foley/glassbreak.ogg', 95, TRUE) + qdel(src) + +//................ Glass shard ............... // +/obj/item/natural/glass_shard name = "shard" desc = "A sharp shard of glass." - icon = 'icons/obj/shards.dmi' - icon_state = "large" + icon = 'icons/roguetown/items/crafting.dmi' + experimental_inhand = FALSE + icon_state = "shard1" + item_state = "shard" + drop_sound = 'sound/foley/dropsound/glass_drop.ogg' possible_item_intents = list(/datum/intent/dagger/cut, /datum/intent/stab) force = 3 throwforce = 5 - item_state = "shard-glass" resistance_flags = null w_class = WEIGHT_CLASS_TINY - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' attack_verb = list("stabbed", "slashed", "sliced", "cut") max_integrity = 40 - sharpness = IS_SHARP smeltresult = /obj/item/natural/glass - pickup_sound = 'sound/items/glass_pick_up.ogg' - drop_sound = 'sound/items/glass_drop.ogg' /obj/item/natural/glass/shard/Initialize() . = ..() diff --git a/code/game/objects/items/rogueitems/natural/stones.dm b/code/game/objects/items/rogueitems/natural/stones.dm index 289a470621..ef015756e0 100644 --- a/code/game/objects/items/rogueitems/natural/stones.dm +++ b/code/game/objects/items/rogueitems/natural/stones.dm @@ -100,6 +100,7 @@ GLOBAL_LIST_INIT(stone_personalities, list( "Goring", "Destruction", "Hell", + // "Flames", "Darkness", "Light", @@ -140,6 +141,19 @@ GLOBAL_LIST_INIT(stone_personality_descs, list( mill_result = /obj/item/reagent_containers/powder/mineral /// If our stone is magical, this lets us know -how- magical. Maximum is 15. var/magic_power = 0 + var/sharpening_factor = 0.1 + var/spark_chance = 35 + +/obj/item/natural/stone/whetstone + name = "whetstone" + icon_state = "whetstone" + desc = "A honed slab made for sharpening blades and striking flames." + possible_item_intents = list(/datum/intent/hit, /datum/intent/mace/smash/wood, /datum/intent/dagger/cut) + sharpening_factor = 0.4 + spark_chance = 80 + +/obj/item/natural/stone/whetstone/stone_lore() + return /obj/item/natural/stone/Initialize() . = ..() @@ -249,8 +263,10 @@ GLOBAL_LIST_INIT(stone_personality_descs, list( throwforce += bonus_force // It gets added to throw damage too possible_item_intents = given_intent_list // And heres ur new extra intents too -/obj/item/natural/stone/attackby(obj/item/W, mob/user, params) +/obj/item/natural/stone/attackby(obj/item/W, mob/living/user, params) user.changeNext_move(CLICK_CD_MELEE) + var/skill_level = user.mind.get_skill_level(/datum/skill/craft/masonry) + var/work_time = (35 - (skill_level * 5)) if(istype(W, /obj/item/natural/stone)) playsound(src.loc, pick('sound/items/stonestone.ogg'), 100) user.visible_message(span_info("[user] strikes the stones together.")) @@ -259,6 +275,18 @@ GLOBAL_LIST_INIT(stone_personality_descs, list( var/turf/front = get_step(user,user.dir) S.set_up(1, 1, front) S.start() + if( user.used_intent.type == /datum/intent/chisel ) + playsound(src.loc, pick('sound/combat/hits/onrock/onrock (1).ogg', 'sound/combat/hits/onrock/onrock (2).ogg', 'sound/combat/hits/onrock/onrock (3).ogg', 'sound/combat/hits/onrock/onrock (4).ogg'), 100) + user.visible_message("[user] chisels the stone into a block.") + if(do_after(user, work_time)) + new /obj/item/natural/stoneblock(get_turf(src.loc)) + new /obj/effect/decal/cleanable/debris/stony(get_turf(src)) + playsound(src.loc, pick('sound/combat/hits/onrock/onrock (1).ogg', 'sound/combat/hits/onrock/onrock (2).ogg', 'sound/combat/hits/onrock/onrock (3).ogg', 'sound/combat/hits/onrock/onrock (4).ogg'), 100) + qdel(src) + user.mind.add_sleep_experience(/datum/skill/craft/masonry, (user.STAINT*0.2)) + return + else if(istype(W, /obj/item/rogueweapon/chisel/assembly)) + to_chat(user, span_warning("You most use both hands to chisel blocks.")) else ..() @@ -316,8 +344,10 @@ GLOBAL_LIST_INIT(stone_personality_descs, list( S.set_up(1, 1, front) S.start() -/obj/item/natural/rock/attackby(obj/item/W, mob/user, params) +/obj/item/natural/rock/attackby(obj/item/W, mob/living/user, params) user.changeNext_move(CLICK_CD_MELEE) + var/skill_level = user.mind.get_skill_level(/datum/skill/craft/masonry) + var/work_time = (120 - (skill_level * 15)) if(istype(W, /obj/item/natural/stone)) user.visible_message(span_info("[user] strikes the stone against the rock.")) playsound(src.loc, 'sound/items/stonestone.ogg', 100) @@ -336,6 +366,20 @@ GLOBAL_LIST_INIT(stone_personality_descs, list( S.set_up(1, 1, front) S.start() return + if( user.used_intent.type == /datum/intent/chisel ) + playsound(src.loc, pick('sound/combat/hits/onrock/onrock (1).ogg', 'sound/combat/hits/onrock/onrock (2).ogg', 'sound/combat/hits/onrock/onrock (3).ogg', 'sound/combat/hits/onrock/onrock (4).ogg'), 100) + user.visible_message("[user] chisels the rock into blocks.") + if(do_after(user, work_time)) + new /obj/item/natural/stoneblock(get_turf(src.loc)) + new /obj/item/natural/stoneblock(get_turf(src.loc)) + new /obj/item/natural/stoneblock(get_turf(src.loc)) + new /obj/effect/decal/cleanable/debris/stony(get_turf(src)) + playsound(src.loc, pick('sound/combat/hits/onrock/onrock (1).ogg', 'sound/combat/hits/onrock/onrock (2).ogg', 'sound/combat/hits/onrock/onrock (3).ogg', 'sound/combat/hits/onrock/onrock (4).ogg'), 100) + user.mind.add_sleep_experience(/datum/skill/craft/masonry, (user.STAINT*0.5)) + qdel(src) + return + else if(istype(W, /obj/item/rogueweapon/chisel/assembly)) + to_chat(user, span_warning("You most use both hands to chisel blocks.")) ..() //begin ore loot rocks @@ -362,3 +406,93 @@ GLOBAL_LIST_INIT(stone_personality_descs, list( /obj/item/natural/rock/gem mineralType = /obj/effect/spawner/lootdrop/roguetown/gems + +//................ Stone blocks ............... // +/obj/item/natural/stoneblock + name = "stone block" + desc = "A rectangular stone block for building." + icon = 'icons/roguetown/items/crafting.dmi' + icon_state = "stoneblock" + drop_sound = 'sound/foley/brickdrop.ogg' + hitsound = 'sound/foley/brickdrop.ogg' + possible_item_intents = list(INTENT_GENERIC) + force = 10 + throwforce = 18 //brick is valid weapon + w_class = WEIGHT_CLASS_SMALL + bundletype = /obj/item/natural/bundle/stoneblock + sellprice = 2 + +/obj/item/natural/stoneblock/attackby(obj/item, mob/living/user) + if(item_flags & IN_STORAGE) + return + . = ..() + +/obj/item/natural/stoneblock/attack_right(mob/user) + . = ..() + if(user.get_active_held_item()) + return + to_chat(user, span_warning("I start to collect [src]...")) + if(move_after(user, bundling_time, target = src)) + var/stackcount = 0 + for(var/obj/item/natural/stoneblock/F in get_turf(src)) + stackcount++ + while(stackcount > 0) + if(stackcount == 1) + var/obj/item/natural/stoneblock/S = new(get_turf(user)) + user.put_in_hands(S) + stackcount-- + else if(stackcount >= 2) + var/obj/item/natural/bundle/stoneblock/B = new(get_turf(user)) + B.amount = clamp(stackcount, 2, 4) + B.update_bundle() + stackcount -= clamp(stackcount, 2, 4) + user.put_in_hands(B) + for(var/obj/item/natural/stoneblock/F in get_turf(src)) + playsound(get_turf(user.loc), 'sound/foley/stone_scrape.ogg', 100) + qdel(F) + +//................ Stone block stack ............... // +/obj/item/natural/bundle/stoneblock + name = "stack of stone blocks" + desc = "A stack of stone blocks." + icon_state = "stoneblockbundle1" + icon = 'icons/roguetown/items/crafting.dmi' + item_state = "block" + experimental_inhand = FALSE + grid_width = 64 + grid_height = 64 + base_width = 64 + base_height = 64 + drop_sound = 'sound/foley/brickdrop.ogg' + pickup_sound = 'sound/foley/brickdrop.ogg' + hitsound = list('sound/combat/hits/blunt/shovel_hit.ogg', 'sound/combat/hits/blunt/shovel_hit2.ogg', 'sound/combat/hits/blunt/shovel_hit3.ogg') + possible_item_intents = list(/datum/intent/use) + force = 2 + throwforce = 0 // useless for throwing unless solo + throw_range = 2 + w_class = WEIGHT_CLASS_NORMAL + stackname = "stone blocks" + stacktype = /obj/item/natural/stoneblock + maxamount = 4 + icon1 = "stoneblockbundle2" + icon1step = 3 + icon2 = "stoneblockbundle3" + icon2step = 4 + +/obj/structure/roguerock/attackby(obj/item/W, mob/living/user, params) + . = ..() + if( user.used_intent.type == /datum/intent/chisel ) + playsound(src.loc, pick('sound/combat/hits/onrock/onrock (1).ogg', 'sound/combat/hits/onrock/onrock (2).ogg', 'sound/combat/hits/onrock/onrock (3).ogg', 'sound/combat/hits/onrock/onrock (4).ogg'), 100) + user.visible_message("[user] chisels the rock into blocks.") + if(do_after(user, 10 SECONDS)) + new /obj/item/natural/stoneblock(get_turf(src.loc)) + new /obj/item/natural/stoneblock(get_turf(src.loc)) + new /obj/item/natural/stoneblock(get_turf(src.loc)) + new /obj/item/natural/stoneblock(get_turf(src.loc)) + new /obj/effect/decal/cleanable/debris/stony(get_turf(src)) + playsound(src.loc, pick('sound/combat/hits/onrock/onrock (1).ogg', 'sound/combat/hits/onrock/onrock (2).ogg', 'sound/combat/hits/onrock/onrock (3).ogg', 'sound/combat/hits/onrock/onrock (4).ogg'), 100) + user.mind.add_sleep_experience(/datum/skill/craft/masonry, (user.STAINT*1)) + qdel(src) + return + else if(istype(W, /obj/item/rogueweapon/chisel/assembly)) + to_chat(user, span_warning("You most use both hands to chisel blocks.")) diff --git a/code/game/objects/items/rogueitems/natural/wood.dm b/code/game/objects/items/rogueitems/natural/wood.dm index 26742c7182..bf40b9180b 100644 --- a/code/game/objects/items/rogueitems/natural/wood.dm +++ b/code/game/objects/items/rogueitems/natural/wood.dm @@ -1,10 +1,11 @@ /obj/item/grown/log/tree icon = 'icons/roguetown/items/natural.dmi' name = "log" - desc = "A heavy and bulky tree log. The prize of many a lumberjack." + desc = "A big tree log. It's very heavy and cumbersome, best cut into pieces for more uses." icon_state = "log" blade_dulling = DULLING_CUT attacked_sound = 'sound/misc/woodhit.ogg' + drop_sound = 'sound/foley/dropsound/wooden_drop.ogg' max_integrity = 30 static_debris = list(/obj/item/grown/log/tree/small = 1) obj_flags = CAN_BE_HIT @@ -21,8 +22,24 @@ grid_height = 32 /obj/item/grown/log/tree/attacked_by(obj/item/I, mob/living/user) //This serves to reward woodcutting + user.changeNext_move(CLICK_CD_MELEE) + var/skill_level = user.mind.get_skill_level(/datum/skill/labor/lumberjacking) + var/planking_time = (40 - (skill_level * 5)) + if(lumber_amount && I.tool_behaviour == TOOL_SAW) + playsound(get_turf(src.loc), 'sound/foley/sawing.ogg', 100) + user.visible_message("[user] starts sawing [src] to smaller pieces.") + if(do_after(user, planking_time)) + new /obj/item/grown/log/tree/small(get_turf(src.loc)) + new /obj/item/grown/log/tree/small(get_turf(src.loc)) + if(prob(skill_level + user.goodluck(2))) // when sawing instead of essence you get extra small log + new /obj/item/grown/log/tree/small(get_turf(src.loc)) + if(user.is_holding(src)) + user.dropItemToGround(src) + user.mind.add_sleep_experience(/datum/skill/labor/lumberjacking, (user.STAINT*0.5)) + new /obj/effect/decal/cleanable/debris/woody(get_turf(src)) + qdel(src) + return if(user.used_intent.blade_class == BCLASS_CHOP && lumber_amount && lumber) - var/skill_level = user.mind.get_skill_level(/datum/skill/labor/lumberjacking) var/lumber_time = (40 - (skill_level * 5)) var/minimum = 1 playsound(src, 'sound/misc/woodhit.ogg', 100, TRUE) @@ -43,8 +60,10 @@ /obj/item/grown/log/tree/small name = "small log" - desc = "A smaller log that came from a larger log. Suitable for building." + desc = "Piece of lumber cut from a larger log. Suitable for building." icon_state = "logsmall" + grid_width = 64 + grid_height = 96 attacked_sound = 'sound/misc/woodhit.ogg' max_integrity = 30 static_debris = list(/obj/item/grown/log/tree/stick = 3) @@ -55,6 +74,26 @@ smeltresult = /obj/item/rogueore/coal lumber_amount = 0 +/obj/item/grown/log/tree/small/attackby(obj/item/I, mob/living/user, params) + if(item_flags & IN_STORAGE) + return + user.changeNext_move(CLICK_CD_MELEE) + var/skill_level = user.mind.get_skill_level(/datum/skill/craft/carpentry) + var/planking_time = (45 - (skill_level * 5)) + if(I.tool_behaviour == TOOL_SAW) + playsound(get_turf(src.loc), 'sound/foley/sawing.ogg', 100) + user.visible_message("[user] starts sawing planks from [src].") + if(do_after(user, planking_time)) + var/obj/item/natural/wood/plank/S = new /obj/item/natural/wood/plank(get_turf(src.loc)) + if(user.is_holding(src)) + user.dropItemToGround(src) + user.put_in_hands(S) + user.mind.add_sleep_experience(/datum/skill/craft/carpentry, (user.STAINT*0.5)) + new /obj/effect/decal/cleanable/debris/woody(get_turf(src)) + qdel(src) + return + ..() + /obj/item/grown/log/tree/bowpartial name = "crude bowstave" desc = "A partially completed bow, waiting to be strung." @@ -82,7 +121,7 @@ /obj/item/grown/log/tree/stick name = "stick" icon_state = "stick1" - desc = "A dry stick from a tree branch." + desc = "A tree branch perhaps." blade_dulling = 0 max_integrity = 20 static_debris = null @@ -124,11 +163,35 @@ playsound(user,'sound/items/seedextract.ogg', 100, FALSE) qdel(src) +/obj/item/grown/log/tree/stick/attack_right(mob/living/user) + . = ..() + if(user.get_active_held_item()) + return + to_chat(user, span_warning("I start to collect [src]...")) + if(move_after(user, 4 SECONDS, target = src)) + var/stackcount = 0 + for(var/obj/item/grown/log/tree/stick/F in get_turf(src)) + stackcount++ + while(stackcount > 0) + if(stackcount == 1) + var/obj/item/grown/log/tree/stick/S = new(get_turf(user)) + user.put_in_hands(S) + stackcount-- + else if(stackcount >= 2) + var/obj/item/natural/bundle/stick/B = new(get_turf(user)) + B.amount = clamp(stackcount, 2, 4) + B.update_bundle() + stackcount -= clamp(stackcount, 2, 4) + user.put_in_hands(B) + for(var/obj/item/grown/log/tree/stick/F in get_turf(src)) + playsound(get_turf(user.loc), 'sound/foley/dropsound/wooden_drop.ogg', 100) + qdel(F) /obj/item/grown/log/tree/stick/attackby(obj/item/I, mob/living/user, params) user.changeNext_move(CLICK_CD_MELEE) if(user.used_intent?.blade_class == BCLASS_CUT) playsound(get_turf(src.loc), 'sound/items/wood_sharpen.ogg', 100) - if(do_after(user, 20)) + user.visible_message(span_notice("[user] starts sharpening [src].")) + if(do_after(user, 4 SECONDS)) user.visible_message(span_notice("[user] sharpens [src].")) var/obj/item/grown/log/tree/stake/S = new /obj/item/grown/log/tree/stake(get_turf(src.loc)) if(user.is_holding(src)) @@ -184,7 +247,9 @@ /obj/item/grown/log/tree/stake name = "stake" icon_state = "stake" - desc = "A wooden stake. Mind the pointy end!" + desc = "A sharpened piece of wood, fantastic for piercing" + grid_width = 32 + grid_height = 64 force = 10 throwforce = 5 possible_item_intents = list(/datum/intent/stab, /datum/intent/pick) @@ -200,11 +265,75 @@ slot_flags = ITEM_SLOT_MOUTH|ITEM_SLOT_HIP lumber_amount = 0 -/*/obj/item/grown/log/tree/lumber - name = "lumber" - icon_state = "lumber" - desc = "This is some lumber." // i haven't seen this ingame yet - blade_dulling = 0 - max_integrity = 50 +///////////// +// Planks // +//////////// + +/obj/item/natural/wood/plank + name = "wooden plank" + desc = "A flat piece of wood, useful for flooring." + icon = 'icons/roguetown/items/crafting.dmi' + icon_state = "plank" + grid_width = 64 + grid_height = 224 + attacked_sound = 'sound/misc/woodhit.ogg' + drop_sound = 'sound/foley/dropsound/wooden_drop.ogg' + possible_item_intents = list(/datum/intent/use) + force = 6 + throwforce = 0 + obj_flags = null + resistance_flags = FLAMMABLE + slot_flags = null + max_integrity = 20 firefuel = 5 MINUTES -Removed for lumberjacking/handcart upgrade PR */ + w_class = WEIGHT_CLASS_BULKY + bundletype = /obj/item/natural/bundle/plank + smeltresult = /obj/item/ash + +/obj/item/natural/wood/plank/attack_right(mob/living/user) + if(user.get_active_held_item()) + return + to_chat(user, span_warning("I start to collect [src]...")) + if(move_after(user, 4 SECONDS, target = src)) + var/stackcount = 0 + for(var/obj/item/natural/wood/plank/F in get_turf(src)) + stackcount++ + while(stackcount > 0) + if(stackcount == 1) + var/obj/item/natural/wood/plank/S = new(get_turf(user)) + user.put_in_hands(S) + stackcount-- + else if(stackcount >= 2) + var/obj/item/natural/bundle/plank/B = new(get_turf(user)) + B.amount = clamp(stackcount, 2, 6) + B.update_bundle() + stackcount -= clamp(stackcount, 2, 6) + user.put_in_hands(B) + for(var/obj/item/natural/wood/plank/F in get_turf(src)) + playsound(get_turf(user.loc), 'sound/foley/dropsound/wooden_drop.ogg', 80) + qdel(F) + +/obj/item/natural/bundle/plank + name = "stack of wooden planks" + desc = "Several planks in a neat pile." + icon_state = "plankbundle1" + item_state = "plankbundle" + icon = 'icons/roguetown/items/crafting.dmi' + grid_width = 128 + grid_height = 224 + drop_sound = 'sound/foley/dropsound/wooden_drop.ogg' + possible_item_intents = list(/datum/intent/use) + force = 0 + throwforce = 0 + throw_range = 2 + firefuel = 10 MINUTES + w_class = WEIGHT_CLASS_BULKY + stackname = "plank" + stacktype = /obj/item/natural/wood/plank + maxamount = 6 + icon1 = "plankbundle2" + icon1step = 3 + icon2 = "plankbundle3" + icon2step = 5 + smeltresult = /obj/item/ash + diff --git a/code/game/objects/items/rogueweapons/melee/blunt.dm b/code/game/objects/items/rogueweapons/melee/blunt.dm index 25044e2894..04c537cb22 100644 --- a/code/game/objects/items/rogueweapons/melee/blunt.dm +++ b/code/game/objects/items/rogueweapons/melee/blunt.dm @@ -183,17 +183,18 @@ /obj/item/rogueweapon/mace/cudgel name = "cudgel" - desc = "A stubby little club for brigands." + desc = "A stubby little club for brigands or thieves. Attempting parries with this is a bad idea." force = 25 icon_state = "cudgel" force_wielded = 25 - gripped_intents = list(/datum/intent/mace/strike,/datum/intent/mace/smash) + possible_item_intents = list(/datum/intent/mace/strike) + gripped_intents = list(/datum/intent/mace/smash, /datum/intent/mace/strike) smeltresult = /obj/item/ash wlength = WLENGTH_SHORT w_class = WEIGHT_CLASS_NORMAL wbalance = 0 minstr = 7 - wdefense = 3 + wdefense = 1 resistance_flags = FLAMMABLE grid_width = 32 grid_height = 96 diff --git a/code/game/objects/items/rogueweapons/ranged/ammo.dm b/code/game/objects/items/rogueweapons/ranged/ammo.dm index 594f95c90b..41432ad158 100644 --- a/code/game/objects/items/rogueweapons/ranged/ammo.dm +++ b/code/game/objects/items/rogueweapons/ranged/ammo.dm @@ -277,6 +277,52 @@ M.adjustFireLoss(2) M.IgniteMob() +/obj/item/ammo_casing/caseless/rogue/bolt/water + name = "water bolt" + desc = "A bolt with its tip containing a glass ampule filled with water. It will shatter on impact, useful for taking out pesky lights." + projectile_type = /obj/projectile/bullet/bolt/water + possible_item_intents = list(/datum/intent/mace/strike) + caliber = "regbolt" + icon = 'icons/roguetown/weapons/ammo.dmi' + icon_state = "bolt_water" + dropshrink = 0.8 + max_integrity = 10 + force = 0 + +/obj/projectile/bullet/bolt/water + name = "water bolt" + desc = "A bolt with its tip containing a glass ampule filled with water. It will shatter on impact, useful for taking out pesky lights." + damage = 0 + damage_type = BRUTE + icon = 'icons/roguetown/weapons/ammo.dmi' + icon_state = "boltwater_proj" + ammo_type = /obj/item/ammo_casing/caseless/rogue/bolt/water + range = 15 + hitsound = 'sound/blank.ogg' + embedchance = 0 + woundclass = BCLASS_BLUNT + flag = "piercing" + speed = 0.3 + + var/explode_sound = list('sound/misc/explode/incendiary (1).ogg','sound/misc/explode/incendiary (2).ogg') + + //explosion values + var/exp_heavy = 0 + var/exp_light = 0 + var/exp_flash = 0 + var/exp_fire = 1 + +/obj/projectile/bullet/bolt/water/on_hit(target) + . = ..() + if(ismob(target)) + var/mob/living/M = target + for(var/obj/O in M.contents) //Checks for light sources in the mob's inventory + O.extinguish() //Extinguishes light sources on the mob you hit with the arrow. + var/turf/T = get_turf(target) + for(var/obj/O in T) + O.extinguish() + +//pyro arrows /obj/item/ammo_casing/caseless/rogue/arrow/pyro name = "pyroclastic arrow" desc = "An arrow with its tip drenched in a flammable tincture." @@ -312,6 +358,47 @@ M.adjustFireLoss(10) M.IgniteMob() +/obj/item/ammo_casing/caseless/rogue/arrow/water + name = "water arrow" + desc = "An arrow with its tip containing a glass ampule filled with water. It will shatter on impact, useful for taking out pesky lights." + projectile_type = /obj/projectile/bullet/arrow/water + possible_item_intents = list(/datum/intent/mace/strike) + caliber = "arrow" + icon = 'icons/roguetown/weapons/ammo.dmi' + icon_state = "arrow_water" + dropshrink = 0.8 + max_integrity = 10 + force = 0 + +/obj/projectile/bullet/arrow/water + name = "water arrow" + desc = "An arrow with its tip containing a glass ampule filled with water. It will shatter on impact, useful for taking out pesky lights." + damage = 0 + damage_type = BRUTE + icon = 'icons/roguetown/weapons/ammo.dmi' + icon_state = "arrowwater_proj" + ammo_type = /obj/item/ammo_casing/caseless/rogue/arrow + range = 15 + hitsound = 'sound/blank.ogg' + embedchance = 0 + woundclass = BCLASS_BLUNT + flag = "piercing" + speed = 0.4 + + +/obj/projectile/bullet/arrow/water/on_hit(target) + . = ..() + if(ismob(target)) + var/mob/living/M = target + for(var/obj/O in M.contents) //Checks for light sources in the mob's inventory. + O.extinguish() //Extinguishes light sources on the mob you hit with the arrow. + var/turf/T = get_turf(target) + for(var/obj/O in T) + O.extinguish() +/obj/projectile/bullet/reusable/arrow/poison/stone + name = "stone arrow" + ammo_type = /obj/item/ammo_casing/caseless/rogue/arrow/stone + // GUNPOWDER AMMO /obj/projectile/bullet/reusable/bullet diff --git a/code/game/objects/lighting/rogue_fires.dm b/code/game/objects/lighting/rogue_fires.dm index 65e45e9e96..1a0ddb8faa 100644 --- a/code/game/objects/lighting/rogue_fires.dm +++ b/code/game/objects/lighting/rogue_fires.dm @@ -109,7 +109,7 @@ name = "fireplace" icon_state = "wallfire1" base_state = "wallfire" - brightness = 10 + light_outer_range = 4 //slightly weaker than a torch bulb_colour = "#ffa35c" density = FALSE fueluse = 0 @@ -165,7 +165,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/light/rogue/wallfire/candle/tree, 32) /obj/machinery/light/rogue/wallfire/candle/weak light_power = 0.9 - light_outer_range = 6 + light_outer_range = 4 MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/light/rogue/wallfire/candle/weak, 32) @@ -174,6 +174,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/light/rogue/wallfire/candle/weak, 32) icon_state = "torchwall1" base_state = "torchwall" density = FALSE + light_outer_range = 5 //same as the held torch, if you put a torch into a sconce, it shouldn't magically become twice as bright, it's inconsistent. var/obj/item/flashlight/flare/torch/torchy fueluse = FALSE //we use the torch's fuel soundloop = null @@ -456,6 +457,22 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/light/rogue/torchholder, 0) pot.reagents.remove_reagent(/datum/reagent/water, VOLUME_PER_STEW_COOK_AFTER) // Remove water first prevent overfill pot.reagents.add_reagent(R.output, VOLUME_PER_STEW_COOK + VOLUME_PER_STEW_COOK_AFTER) return + if(istype(W, /obj/item/reagent_containers/food/snacks/grown/rogue/rosa_petals_dried)) + if(!pot.reagents.has_reagent(/datum/reagent/water, 33)) + to_chat(user, "Not enough water.") + return TRUE + if(pot.reagents.chem_temp < 374) + to_chat(user, "[pot] isn't boiling!") + return + if(do_after(user,2 SECONDS, target = src)) + user.visible_message("[user] places [W] into the pot.") + playsound(src.loc, 'sound/items/Fish_out.ogg', 20, TRUE) + pot.reagents.remove_reagent(/datum/reagent/water, 32) + qdel(W) + sleep(15 SECONDS/cooktime_divisor) // No nutritional value so make it much faster + playsound(src, "bubbles", 30, TRUE) + pot.reagents.add_reagent(/datum/reagent/water/rosewater, 32) + pot.reagents.remove_reagent(/datum/reagent/water, 1) . = ..() ////////////////////////////////// diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 15cec73979..2b27f9ce4a 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -19,6 +19,8 @@ var/obj_broken = FALSE var/obj_destroyed = FALSE + var/extinguishable = TRUE // flag for torches, lanterns, clothing, and the like. + var/resistance_flags = NONE // INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ON_FIRE | UNACIDABLE | ACID_PROOF var/acid_level = 0 //how much acid is on that obj diff --git a/code/game/objects/structures/roguewindow.dm b/code/game/objects/structures/roguewindow.dm index 5550831c46..199cf4e2ad 100644 --- a/code/game/objects/structures/roguewindow.dm +++ b/code/game/objects/structures/roguewindow.dm @@ -76,6 +76,15 @@ icon_state = "tree_window" base_state = "tree_window" +/obj/structure/roguewindow/openclose/OnCrafted(dirin) + dir = turn(dirin, 180) + lockdir = dir + +/obj/structure/roguewindow/openclose/Initialize() + ..() + lockdir = dir + icon_state = base_state + /obj/structure/roguewindow/openclose/reinforced desc = "A glass window. This one looks reinforced with a metal mesh." icon_state = "reinforcedwindowdir" @@ -83,6 +92,30 @@ max_integrity = 800 integrity_failure = 0.1 +/obj/structure/roguewindow/openclose/reinforced/OnCrafted(dirin) + dir = turn(dirin, 180) + lockdir = dir + +/obj/structure/roguewindow/openclose/reinforced/Initialize() + ..() + lockdir = dir + icon_state = base_state + +/obj/structure/roguewindow/openclose/reinforced/brick + desc = "A glass window. This one looks reinforced with a metal frame." + icon_state = "brickwindowdir" + base_state = "brickwindow" + max_integrity = 1000 //Better than reinforced by a bit; metal frame. + +/obj/structure/roguewindow/openclose/reinforced/brick/OnCrafted(dirin) + dir = turn(dirin, 180) + lockdir = dir + +/obj/structure/roguewindow/openclose/reinforced/brick/Initialize() + ..() + lockdir = dir + icon_state = base_state + /obj/structure/roguewindow/openclose/Initialize() lockdir = dir icon_state = base_state @@ -215,7 +248,7 @@ attacked_sound = list('sound/combat/hits/onwood/woodimpact (1).ogg','sound/combat/hits/onwood/woodimpact (2).ogg') log_admin("Window broken at X:[src.x] Y:[src.y] Z:[src.z] in area: [get_area(src)]") new /obj/item/natural/glass/shard (get_turf(src)) - new /obj/effect/decal/cleanable/glass(get_turf(src)) + new /obj/effect/decal/cleanable/debris/glassy(get_turf(src)) climbable = TRUE brokenstate = TRUE opacity = FALSE diff --git a/code/game/turfs/closed/wall/roguewalls.dm b/code/game/turfs/closed/wall/roguewalls.dm index f37e8e2fff..08be40834f 100644 --- a/code/game/turfs/closed/wall/roguewalls.dm +++ b/code/game/turfs/closed/wall/roguewalls.dm @@ -311,8 +311,35 @@ /turf/closed/wall/mineral/rogue/decostone/fluffstone icon_state = "fluffstone" +//Mildly better than stone-wall due to it being harder to make, plus not loose-stone cobbled together. Also higher climbing diff akin to stone-brick wall. +/turf/closed/wall/mineral/rogue/brick + name = "brick wall" + desc = "Several rows of bricks form this wall, held together by motar." + icon = 'icons/turf/walls/brick_wall.dmi' + icon_state = "brick" + smooth = SMOOTH_MORE + blade_dulling = DULLING_BASH + max_integrity = 2000 //200 more than base stone wall + sheet_type = /obj/item/natural/brick + break_sound = 'sound/combat/hits/onstone/stonedeath.ogg' + attacked_sound = list('sound/combat/hits/onstone/wallhit.ogg', 'sound/combat/hits/onstone/wallhit2.ogg', 'sound/combat/hits/onstone/wallhit3.ogg') + canSmoothWith = list(/turf/closed/wall/mineral/rogue/brick) + above_floor = /turf/open/floor/rogue/tile/brick + baseturfs = list(/turf/open/floor/rogue/tile/brick) + neighborlay = "dirtedge" + climbdiff = 4 //Same as stone-brick wall + damage_deflection = 20 +/turf/closed/wall/mineral/rogue/brick/window + name = "brick window" + desc = "A window with solid and sturdy stone frame." + opacity = FALSE + max_integrity = 1500 +/turf/closed/wall/mineral/rogue/brick/window/Initialize() + . = ..() + var/mutable_appearance/M = mutable_appearance(icon, "brickhole", layer = ABOVE_NORMAL_TURF_LAYER) + add_overlay(M) /turf/closed/wall/shroud //vines name = "thick treetop" diff --git a/code/game/turfs/open/floor/roguefloor.dm b/code/game/turfs/open/floor/roguefloor.dm index 8312b6f25d..2749560d57 100644 --- a/code/game/turfs/open/floor/roguefloor.dm +++ b/code/game/turfs/open/floor/roguefloor.dm @@ -75,8 +75,8 @@ /turf/open/floor/rogue/twig/platform name = "platform" desc = "A destructible platform." - damage_deflection = 6 - max_integrity = 200 + damage_deflection = 4 + max_integrity = 100 //It's fucking twig. break_sound = 'sound/combat/hits/onwood/destroywalldoor.ogg' attacked_sound = list('sound/combat/hits/onwood/woodimpact (1).ogg','sound/combat/hits/onwood/woodimpact (2).ogg') diff --git a/code/game/turfs/open/water.dm b/code/game/turfs/open/water.dm index db3e31c322..baf4f495d1 100644 --- a/code/game/turfs/open/water.dm +++ b/code/game/turfs/open/water.dm @@ -236,9 +236,12 @@ QDEL_NULL(water_top_overlay) /turf/open/water/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum, damage_flag = "blunt") - if(isobj(AM)) - var/obj/O = AM - O.extinguish() + if(!isobj(AM)) + return + var/obj/O = AM + if(!O.extinguishable) + return + O.extinguish() /turf/open/water/get_slowdown(mob/user) var/returned = slowdown diff --git a/code/modules/cargo/packsrogue/knave.dm b/code/modules/cargo/packsrogue/knave.dm index c8cecb3604..00dffcc376 100644 --- a/code/modules/cargo/packsrogue/knave.dm +++ b/code/modules/cargo/packsrogue/knave.dm @@ -110,6 +110,17 @@ cost = 3 contains = list(/obj/item/ammo_casing/caseless/rogue/arrow/steel) +/datum/supply_pack/rogue/Knave/Warrows + name = "Water Arrows (x5)" + cost = 1 + contains = list( + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + ) + /datum/supply_pack/rogue/Knave/Parrows name = "Poisoned Arrow" cost = 5 diff --git a/code/modules/cargo/packsrogue/luxury.dm b/code/modules/cargo/packsrogue/luxury.dm index 1485a18332..834603fd91 100644 --- a/code/modules/cargo/packsrogue/luxury.dm +++ b/code/modules/cargo/packsrogue/luxury.dm @@ -77,6 +77,16 @@ contains = list(/obj/item/roguegem/yellow) +/datum/supply_pack/rogue/luxury/fancyteaset + name = "Fancy Tea Set" + cost = 110 + contains = list(/obj/item/reagent_containers/glass/bucket/pot/teapot/fancy, + /obj/item/reagent_containers/glass/cup/ceramic/fancy, + /obj/item/reagent_containers/glass/cup/ceramic/fancy, + /obj/item/reagent_containers/glass/cup/ceramic/fancy, + /obj/item/reagent_containers/glass/cup/ceramic/fancy) + + /datum/supply_pack/rogue/luxury/silverdagger name = "Silver Dagger" cost = 150 diff --git a/code/modules/cargo/packsrogue/tools.dm b/code/modules/cargo/packsrogue/tools.dm index f949c56827..518965ae45 100644 --- a/code/modules/cargo/packsrogue/tools.dm +++ b/code/modules/cargo/packsrogue/tools.dm @@ -236,6 +236,16 @@ /obj/item/flashlight/flare/torch/metal, /obj/item/flashlight/flare/torch/metal) +/datum/supply_pack/rogue/tools/handsaw + name = "Handsaw" + cost = 60 + contains = list(/obj/item/rogueweapon/handsaw) + +/datum/supply_pack/rogue/tools/hammer + name = "Hammer" + cost = 60 + contains = list(/obj/item/rogueweapon/hammer/iron) + /datum/supply_pack/rogue/tools/fryingpan name = "Frying Pan" cost = 20 // May actually be the most dangerous tool with 20 force in it. So a little bit more expensive. diff --git a/code/modules/clothing/rogueclothes/quiver.dm b/code/modules/clothing/rogueclothes/quiver.dm index 3e886b247a..39af7c2213 100644 --- a/code/modules/clothing/rogueclothes/quiver.dm +++ b/code/modules/clothing/rogueclothes/quiver.dm @@ -114,6 +114,20 @@ var/obj/item/ammo_casing/caseless/rogue/bolt/A = new() arrows += A update_icon() + +/obj/item/quiver/Wbolts/Initialize() + . = ..() + for(var/i in 1 to max_storage) + var/obj/item/ammo_casing/caseless/rogue/bolt/water/A = new() + arrows += A + update_icon() + +/obj/item/quiver/Warrows/Initialize() + . = ..() + for(var/i in 1 to max_storage) + var/obj/item/ammo_casing/caseless/rogue/arrow/water/A = new() + arrows += A + update_icon() /* /obj/item/quiver/Parrows/Initialize() . = ..() diff --git a/code/modules/crafting/recipe_books/recipe_books_list.dm b/code/modules/crafting/recipe_books/recipe_books_list.dm index f44f37e1a2..9ebde0572d 100644 --- a/code/modules/crafting/recipe_books/recipe_books_list.dm +++ b/code/modules/crafting/recipe_books/recipe_books_list.dm @@ -47,6 +47,16 @@ /datum/crafting_recipe/roguetown/structure ) +/obj/item/recipe_book/ceramics + name = "The Potter's Handbook" + icon_state = "book5_0" + base_icon_state = "book5" + + types = list( + /datum/crafting_recipe/roguetown/structure/ceramicswheel, + /datum/crafting_recipe/roguetown/ceramics, + ) + // This book should be widely given to everyone /obj/item/recipe_book/survival name = "The Survival Handbook" @@ -70,6 +80,6 @@ /datum/crafting_recipe/roguetown/survival/mortar, /datum/crafting_recipe/roguetown/survival/pestle, /datum/crafting_recipe/roguetown/alchemy, - /datum/alch_grind_recipe//, + /datum/alch_grind_recipe, ///datum/alch_cauldron_recipe //leaving this out for now, it doesn't look nice for players and shows mostly back end ingredients. ) diff --git a/code/modules/farming/crafting_recipes.dm b/code/modules/farming/crafting_recipes.dm index 7c038ab9ef..326f031d5e 100644 --- a/code/modules/farming/crafting_recipes.dm +++ b/code/modules/farming/crafting_recipes.dm @@ -36,7 +36,7 @@ skillcraft = /datum/skill/craft/carpentry time = 4 SECONDS -/datum/crafting_recipe/roguetown/dryleaf +/datum/crafting_recipe/roguetown/survival/dryleaf name = "dry swampweed" result = /obj/item/reagent_containers/food/snacks/grown/rogue/sweetleafdry reqs = list(/obj/item/reagent_containers/food/snacks/grown/rogue/sweetleaf = 1) @@ -47,7 +47,7 @@ craftsound = null skillcraft = null -/datum/crafting_recipe/roguetown/sigsweet +/datum/crafting_recipe/roguetown/survival/sigsweet name = "swampweed zig" result = /obj/item/clothing/mask/cigarette/rollie/cannabis reqs = list(/obj/item/reagent_containers/food/snacks/grown/rogue/sweetleafdry = 1, @@ -58,7 +58,18 @@ verbage = "rolls" craftdiff = 0 -/datum/crafting_recipe/roguetown/dryweed +/datum/crafting_recipe/roguetown/survival/drytea + name = "dry tea leaves" + result = /obj/item/reagent_containers/food/snacks/grown/rogue/tealeaves_dry + reqs = list(/obj/item/reagent_containers/food/snacks/grown/tea = 1) + structurecraft = /obj/machinery/tanningrack + time = 2 SECONDS + verbage_simple = "dry" + verbage = "dries" + craftsound = null + skillcraft = null + +/datum/crafting_recipe/roguetown/survival/dryweed name = "dry westleach leaf" result = /obj/item/reagent_containers/food/snacks/grown/rogue/pipeweeddry reqs = list(/obj/item/reagent_containers/food/snacks/grown/rogue/pipeweed = 1) @@ -69,7 +80,18 @@ craftsound = null skillcraft = null -/datum/crafting_recipe/roguetown/sigdry +/datum/crafting_recipe/roguetown/survival/dryrosa + name = "dry rosa petals" + result = /obj/item/reagent_containers/food/snacks/grown/rogue/rosa_petals_dried + reqs = list(/obj/item/reagent_containers/food/snacks/grown/rogue/rosa_petals = 1) + structurecraft = /obj/machinery/tanningrack + time = 2 SECONDS + verbage_simple = "dry" + verbage = "dries" + craftsound = null + skillcraft = null + +/datum/crafting_recipe/roguetown/survival/sigdry name = "westleach zig" result = /obj/item/clothing/mask/cigarette/rollie/nicotine reqs = list(/obj/item/reagent_containers/food/snacks/grown/rogue/pipeweeddry = 1, @@ -79,3 +101,14 @@ verbage_simple = "roll" verbage = "rolls" craftdiff = 0 + +/datum/crafting_recipe/roguetown/survival/rocksigdry + name = "rocknut zig" + result = /obj/item/clothing/mask/cigarette/rollie/nicotine + reqs = list(/obj/item/reagent_containers/powder/rocknut = 1, + /obj/item/paper = 1) + req_table = TRUE + time = 10 SECONDS + verbage_simple = "roll" + verbage = "rolls" + craftdiff = 0 diff --git a/code/modules/farming/plant_def.dm b/code/modules/farming/plant_def.dm index 0b06fdebc7..c48ca0e3cf 100644 --- a/code/modules/farming/plant_def.dm +++ b/code/modules/farming/plant_def.dm @@ -224,3 +224,19 @@ maturation_time = 4 MINUTES produce_time = 2 MINUTES weed_immune = FALSE + +/datum/plant_def/coffee + name = "coffee bush" + icon = 'icons/roguetown/misc/crops.dmi' + icon_state = "coffee" + produce_type = /obj/item/reagent_containers/food/snacks/grown/coffee + produce_amount_min = 2 + produce_amount_max = 3 + +/datum/plant_def/tea + name = "tea bush" + icon = 'icons/roguetown/misc/crops.dmi' + icon_state = "tea" + produce_type = /obj/item/reagent_containers/food/snacks/grown/tea + produce_amount_min = 2 + produce_amount_max = 3 diff --git a/code/modules/farming/produce.dm b/code/modules/farming/produce.dm index b35e2dbef5..35454dcb01 100644 --- a/code/modules/farming/produce.dm +++ b/code/modules/farming/produce.dm @@ -81,7 +81,7 @@ /obj/item/reagent_containers/food/snacks/grown/rice seed = /obj/item/seeds/rice name = "rice grain" - desc = "" + desc = "Rice grains, ready to be worked with water to be cleaned." icon = 'icons/roguetown/items/produce.dmi' icon_state = "rice" gender = PLURAL @@ -91,11 +91,12 @@ tastes = list("rice" = 1) can_distill = TRUE distill_reagent = /datum/reagent/consumable/ethanol/sake - distill_amt = 12 + distill_amt = 24 grind_results = list(/datum/reagent/floure = 10) + mill_result = /obj/item/reagent_containers/powder/flour can_press = TRUE //Rice can be pressed into rice milk. press_reagent = /datum/reagent/consumable/rice_milk //Pressing rice produces rice milk. - press_amt = 12 + press_amt = 24 /obj/item/reagent_containers/food/snacks/grown/apple seed = /obj/item/seeds/apple @@ -216,9 +217,9 @@ /obj/item/reagent_containers/food/snacks/grown/nut name = "rocknut" - desc = "a nut with mild stimulant properties" + desc = "a nut with mild stimulant properties. In powderized form, it can be used to make a zig." seed = /obj/item/seeds/nut - icon_state = "nut" + icon_state = "rocknut" tastes = list("nutty" = 1) filling_color = "#6b4d18" bitesize = 1 @@ -454,3 +455,24 @@ can_press = TRUE //Carrots can be pressed into juice. press_reagent = /datum/reagent/consumable/carrotjuice press_amt = 12 //Pressing a carrot produces 12 units of carrot juice. + +/obj/item/reagent_containers/food/snacks/grown/coffee + name = "coffee cherry" + desc = "A small sweet, small red fruit that contains coffee bean(s) inside. Can be grounded in a millstone for coffee beans." + icon_state = "coffee" + seed = /obj/item/seeds/coffee + tastes = list("hibicus sweetness" = 1) + bitesize = 1 + list_reagents = list(/datum/reagent/consumable/nutriment = 1) + mill_result = /obj/item/reagent_containers/food/snacks/grown/coffeebeans + rotprocess = null + +/obj/item/reagent_containers/food/snacks/grown/tea + name = "tea leaves" + desc = "Tea leaves plucked from the plant. It is still fresh and needs to be dried before use." + icon_state = "tea" + seed = /obj/item/seeds/tea + tastes = list("grass" = 1) + bitesize = 1 + list_reagents = list(/datum/reagent/consumable/nutriment = 1) + rotprocess = null diff --git a/code/modules/farming/seeds.dm b/code/modules/farming/seeds.dm index d9c31142bf..f55c42062a 100644 --- a/code/modules/farming/seeds.dm +++ b/code/modules/farming/seeds.dm @@ -127,3 +127,11 @@ /obj/item/seeds/carrot seed_identity = "carrot seeds" plant_def_type = /datum/plant_def/carrot + +/obj/item/seeds/coffee + seed_identity = "coffee seeds" + plant_def_type = /datum/plant_def/coffee + +/obj/item/seeds/tea + seed_identity = "tea seeds" + plant_def_type = /datum/plant_def/tea diff --git a/code/modules/jobs/job_types/roguetown/external/adventurer/types/combat/potter.dm b/code/modules/jobs/job_types/roguetown/external/adventurer/types/combat/potter.dm new file mode 100644 index 0000000000..df8c51f2ab --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/external/adventurer/types/combat/potter.dm @@ -0,0 +1,47 @@ +/datum/advclass/potter + name = "Potter" + tutorial = "You are a skilled artisan in the manipulation of ceramics, \ + and their fashioning into a multitude of different objects and valuables, including glass." + allowed_sexes = list(MALE, FEMALE) + allowed_races = RACES_ALL_KINDS + outfit = /datum/outfit/job/roguetown/adventurer/potter + + category_tags = list(CTAG_PILGRIM, CTAG_TOWNER) + +/datum/outfit/job/roguetown/adventurer/potter/pre_equip(mob/living/carbon/human/H) + ..() + if(H.mind) + H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE) // Potters are fairly active, having to source their own clay. + H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 3, TRUE) // They mostly work with their bare hands...? + H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE) // Something about wrestling clay into shape? + H.mind.adjust_skillrank(/datum/skill/combat/knives, 1, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/craft/crafting, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/craft/carpentry, 2, TRUE) // They probably have some insight in carpentry and masonry. + H.mind.adjust_skillrank(/datum/skill/craft/masonry, 2, TRUE) // They probably have some insight in carpentry and masonry. + H.mind.adjust_skillrank(/datum/skill/misc/reading, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/ceramics, 5, TRUE) + head = /obj/item/clothing/head/roguetown/hatfur + if(prob(50)) + head = /obj/item/clothing/head/roguetown/hatblu + + cloak = /obj/item/clothing/cloak/apron/blacksmith + pants = /obj/item/clothing/under/roguetown/trou + shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/random + shoes = /obj/item/clothing/shoes/roguetown/boots/leather + belt = /obj/item/storage/belt/rogue/leather + neck = /obj/item/storage/belt/rogue/pouch/coins/mid + beltl = /obj/item/rogueweapon/blowrod + beltr = /obj/item/rogueweapon/tongs // Necessary for removing hot glass panes from furnaces. + backl = /obj/item/storage/backpack/rogue/backpack + backr = /obj/item/rogueweapon/shovel // For getting clay + + backpack_contents = list(/obj/item/natural/clay = 3, /obj/item/natural/clay/glassbatch = 1, /obj/item/rogueore/coal=1, /obj/item/roguegear = 1) + // Clay and glassBatch are raw materials + // Coal so he can build an ore furnace for glass blowing + // Coggers so he can build a potter's wheel. + + H.change_stat("endurance", 2) + H.change_stat("constitution", 1) + H.change_stat("perception", 2) + H.change_stat("speed", -1) diff --git a/code/modules/jobs/job_types/roguetown/external/adventurer/types/combat/rogue.dm b/code/modules/jobs/job_types/roguetown/external/adventurer/types/combat/rogue.dm index 56268473a1..085f93c7f0 100644 --- a/code/modules/jobs/job_types/roguetown/external/adventurer/types/combat/rogue.dm +++ b/code/modules/jobs/job_types/roguetown/external/adventurer/types/combat/rogue.dm @@ -75,18 +75,21 @@ armor = /obj/item/clothing/suit/roguetown/armor/leather cloak = /obj/item/clothing/cloak/raincloak/mortus shirt = /obj/item/clothing/suit/roguetown/armor/gambeson - backl = /obj/item/storage/backpack/rogue/satchel + backl = /obj/item/storage/backpack/rogue/backpack + backr = /obj/item/gun/ballistic/revolver/grenadelauncher/bow belt = /obj/item/storage/belt/rogue/leather/knifebelt/iron gloves = /obj/item/clothing/gloves/roguetown/fingerless shoes = /obj/item/clothing/shoes/roguetown/boots neck = /obj/item/storage/belt/rogue/pouch/coins/poor wrists = /obj/item/clothing/wrists/roguetown/bracers/leather - beltl = /obj/item/lockpickring/mundane - beltr = /obj/item/rogueweapon/huntingknife/idagger/steel - backpack_contents = list(/obj/item/flashlight/flare/torch = 1, /obj/item/roguekey/adventurers_guild = 1) + beltl = /obj/item/quiver/Warrows + beltr = /obj/item/rogueweapon/mace/cudgel + backpack_contents = list(/obj/item/flashlight/flare/torch = 1, /obj/item/rogueweapon/huntingknife/idagger/steel = 1, /obj/item/lockpickring/mundane = 1, /obj/item/roguekey/adventurers_guild = 1) H.cmode_music = 'sound/music/combat_rogue.ogg' H.mind.adjust_skillrank(/datum/skill/misc/tracking, 4, TRUE) H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/bows, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/maces, 3, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE) H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 2, TRUE) H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE) diff --git a/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/blacksmith.dm b/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/blacksmith.dm index ee121ca7cd..79f3e3abd7 100644 --- a/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/blacksmith.dm +++ b/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/blacksmith.dm @@ -12,7 +12,7 @@ ..() belt = /obj/item/storage/belt/rogue/leather - beltr = /obj/item/rogueweapon/hammer + beltr = /obj/item/rogueweapon/hammer/iron beltl = /obj/item/rogueweapon/tongs neck = /obj/item/storage/belt/rogue/pouch/coins/poor diff --git a/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/carpenter.dm b/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/carpenter.dm index cf6df280db..270ecf93d4 100644 --- a/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/carpenter.dm +++ b/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/carpenter.dm @@ -37,7 +37,7 @@ shoes = /obj/item/clothing/shoes/roguetown/boots/leather belt = /obj/item/storage/belt/rogue/leather beltr = /obj/item/storage/belt/rogue/pouch/coins/mid - beltl = /obj/item/rogueweapon/hammer/claw + beltl = /obj/item/rogueweapon/hammer/steel backl = /obj/item/storage/backpack/rogue/backpack backpack_contents = list( /obj/item/flint = 1, diff --git a/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/miner.dm b/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/miner.dm index c7362ad0d0..d1eee5b5d2 100644 --- a/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/miner.dm +++ b/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/miner.dm @@ -20,6 +20,8 @@ backpack_contents = list( /obj/item/flint = 1, /obj/item/flashlight/flare/torch = 1, + /obj/item/rogueweapon/chisel = 1, + /obj/item/rogueweapon/hammer/wood = 1, ) if(H.pronouns == SHE_HER || H.pronouns == THEY_THEM_F) armor = /obj/item/clothing/suit/roguetown/shirt/dress/gen diff --git a/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/potter.dm b/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/potter.dm new file mode 100644 index 0000000000..26635c91ce --- /dev/null +++ b/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/potter.dm @@ -0,0 +1,47 @@ +/datum/advclass/potter + name = "Potter" + tutorial = "You are a skilled artisan in the manipulation of ceramics, \ + and their fashioning into a multitude of different objects and valuables, including glass." + allowed_sexes = list(MALE, FEMALE) + allowed_races = RACES_ALL_KINDS + outfit = /datum/outfit/job/roguetown/adventurer/potter + + category_tags = list(CTAG_PILGRIM, CTAG_TOWNER) + +/datum/outfit/job/roguetown/adventurer/potter/pre_equip(mob/living/carbon/human/H) + ..() + if(H.mind) + H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE) // Potters are fairly active, having to source their own clay. + H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 3, TRUE) // They mostly work with their bare hands...? + H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE) // Something about wrestling clay into shape? + H.mind.adjust_skillrank(/datum/skill/combat/knives, 1, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/craft/crafting, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/craft/carpentry, 2, TRUE) // They probably have some insight in carpentry and masonry. + H.mind.adjust_skillrank(/datum/skill/craft/masonry, 2, TRUE) // They probably have some insight in carpentry and masonry. + H.mind.adjust_skillrank(/datum/skill/misc/reading, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/ceramics, 5, TRUE) + head = /obj/item/clothing/head/roguetown/hatfur + if(prob(50)) + head = /obj/item/clothing/head/roguetown/hatblu + + cloak = /obj/item/clothing/cloak/apron/blacksmith + pants = /obj/item/clothing/under/roguetown/trou + shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/random + shoes = /obj/item/clothing/shoes/roguetown/boots/leather + belt = /obj/item/storage/belt/rogue/leather + neck = /obj/item/storage/belt/rogue/pouch/coins/mid + beltl = /obj/item/rogueweapon/blowrod + beltr = /obj/item/rogueweapon/tongs // Necessary for removing hot glass panes from furnaces. + backl = /obj/item/storage/backpack/rogue/backpack + backr = /obj/item/rogueweapon/shovel // For getting clay + + backpack_contents = list(/obj/item/natural/clay = 3, /obj/item/natural/clay/glassbatch = 1, /obj/item/rogueore/coal=1, /obj/item/roguegear = 1, /obj/item/dye_brush = 1) + // Clay and glassBatch are raw materials + // Coal so he can build an ore furnace for glass blowing + // Coggers so he can build a potter's wheel. + + H.change_stat("endurance", 2) + H.change_stat("constitution", 1) + H.change_stat("perception", 2) + H.change_stat("speed", -1) diff --git a/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/rare/Lcarp.dm b/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/rare/Lcarp.dm index 04859c3768..492816aba6 100644 --- a/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/rare/Lcarp.dm +++ b/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/rare/Lcarp.dm @@ -39,7 +39,7 @@ shoes = /obj/item/clothing/shoes/roguetown/boots/leather belt = /obj/item/storage/belt/rogue/leather beltr = /obj/item/storage/belt/rogue/pouch/coins/mid - beltl = /obj/item/rogueweapon/hammer/claw + beltl = /obj/item/rogueweapon/hammer/steel backl = /obj/item/storage/backpack/rogue/backpack backpack_contents = list( /obj/item/flint = 1, diff --git a/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/rare/Lmason.dm b/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/rare/Lmason.dm index 944db53d4a..3a4f681c61 100644 --- a/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/rare/Lmason.dm +++ b/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/rare/Lmason.dm @@ -26,6 +26,7 @@ H.mind.adjust_skillrank(/datum/skill/craft/engineering, 5, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/lockpicking, 3, TRUE) H.mind.adjust_skillrank(/datum/skill/craft/smelting, 6, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/ceramics, 4, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/swimming, 3, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/climbing, 4, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/athletics, 4, TRUE) diff --git a/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/rare/Lsmith.dm b/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/rare/Lsmith.dm index 5b6b110053..46d93121b0 100644 --- a/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/rare/Lsmith.dm +++ b/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/rare/Lsmith.dm @@ -16,7 +16,7 @@ /datum/outfit/job/roguetown/adventurer/masterblacksmith/pre_equip(mob/living/carbon/human/H) ..() belt = /obj/item/storage/belt/rogue/leather - beltr = /obj/item/rogueweapon/hammer + beltr = /obj/item/rogueweapon/hammer/iron beltl = /obj/item/rogueweapon/tongs neck = /obj/item/storage/belt/rogue/pouch/coins/mid mouth = /obj/item/rogueweapon/huntingknife diff --git a/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/woodcutter.dm b/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/woodcutter.dm index 0a5df47dc7..cb62174aab 100644 --- a/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/woodcutter.dm +++ b/code/modules/jobs/job_types/roguetown/external/adventurer/types/pilgrim/woodcutter.dm @@ -32,13 +32,15 @@ head = /obj/item/clothing/head/roguetown/roguehood shoes = /obj/item/clothing/shoes/roguetown/boots/leather backr = /obj/item/storage/backpack/rogue/satchel + backl = /obj/item/rogueweapon/stoneaxe/woodcut neck = /obj/item/storage/belt/rogue/pouch/coins/poor wrists = /obj/item/clothing/wrists/roguetown/bracers/leather - beltr = /obj/item/rogueweapon/stoneaxe/woodcut - beltl = /obj/item/rogueweapon/huntingknife + beltr = /obj/item/rogueweapon/handsaw + beltl = /obj/item/rogueweapon/hammer/wood backpack_contents = list( /obj/item/flint = 1, /obj/item/flashlight/flare/torch = 1, + /obj/item/rogueweapon/huntingknife = 1, ) if(H.pronouns == SHE_HER || H.pronouns == THEY_THEM_F) armor = /obj/item/clothing/suit/roguetown/shirt/dress/gen diff --git a/code/modules/jobs/job_types/roguetown/external/adventurer/wretch.dm b/code/modules/jobs/job_types/roguetown/external/adventurer/wretch.dm index 24a6ec47e7..b753c2e220 100644 --- a/code/modules/jobs/job_types/roguetown/external/adventurer/wretch.dm +++ b/code/modules/jobs/job_types/roguetown/external/adventurer/wretch.dm @@ -124,20 +124,21 @@ cloak = /obj/item/clothing/cloak/raincloak/mortus shirt = /obj/item/clothing/suit/roguetown/armor/gambeson backr = /obj/item/gun/ballistic/revolver/grenadelauncher/crossbow - backl = /obj/item/storage/backpack/rogue/satchel + backl = /obj/item/storage/backpack/rogue/backpack belt = /obj/item/storage/belt/rogue/leather gloves = /obj/item/clothing/gloves/roguetown/fingerless_leather shoes = /obj/item/clothing/shoes/roguetown/boots neck = /obj/item/clothing/neck/roguetown/gorget wrists = /obj/item/clothing/wrists/roguetown/bracers/leather/heavy mask = /obj/item/clothing/mask/rogue/ragmask/black - beltr = /obj/item/quiver/bolts - backpack_contents = list(/obj/item/storage/belt/rogue/pouch/coins/poor = 1, /obj/item/lockpickring/mundane = 1, /obj/item/flashlight/flare/torch/lantern/prelit = 1) + beltr = /obj/item/quiver/Wbolts + backpack_contents = list(/obj/item/storage/belt/rogue/pouch/coins/poor = 1, /obj/item/lockpickring/mundane = 1, /obj/item/flashlight/flare/torch/lantern/prelit = 1, /obj/item/rogueweapon/mace/cudgel = 1, /obj/item/rope/chain = 1) H.mind.adjust_skillrank(/datum/skill/misc/tracking, 5, TRUE) H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/knives, 2, TRUE) H.mind.adjust_skillrank(/datum/skill/combat/swords, 3, TRUE) H.mind.adjust_skillrank(/datum/skill/combat/whipsflails, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/combat/maces, 3, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/swimming, 3, TRUE) H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE) H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 3, TRUE) diff --git a/code/modules/jobs/job_types/roguetown/mages_university/artificer.dm b/code/modules/jobs/job_types/roguetown/mages_university/artificer.dm index 9c4cc32171..f91edbfab1 100644 --- a/code/modules/jobs/job_types/roguetown/mages_university/artificer.dm +++ b/code/modules/jobs/job_types/roguetown/mages_university/artificer.dm @@ -46,6 +46,7 @@ H.mind.adjust_skillrank(/datum/skill/craft/smelting, 4, TRUE) H.mind.adjust_skillrank(/datum/skill/craft/traps, 2, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/reading, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/ceramics, 3, TRUE) H.mind.adjust_skillrank(/datum/skill/craft/alchemy, 2, TRUE) H.mind.adjust_skillrank(/datum/skill/magic/arcane, 1, TRUE) @@ -62,9 +63,10 @@ mask = /obj/item/clothing/mask/rogue/spectacles/golden backl = /obj/item/storage/backpack/rogue/backpack backpack_contents = list( - /obj/item/rogueweapon/hammer/claw = 1, + /obj/item/rogueweapon/hammer/steel = 1, + /obj/item/rogueweapon/handsaw = 1, + /obj/item/rogueweapon/chisel = 1, /obj/item/lockpickring/mundane = 1, - /obj/item/clothing/cloak/apron/blacksmith = 1, /obj/item/contraption/linker = 1 ) H.change_stat("strength", 1) diff --git a/code/modules/jobs/job_types/roguetown/town/yeomen/blacksmith.dm b/code/modules/jobs/job_types/roguetown/town/yeomen/blacksmith.dm index be9fa31e10..87cc94ee43 100644 --- a/code/modules/jobs/job_types/roguetown/town/yeomen/blacksmith.dm +++ b/code/modules/jobs/job_types/roguetown/town/yeomen/blacksmith.dm @@ -50,7 +50,7 @@ pants = /obj/item/clothing/under/roguetown/trou armor = /obj/item/clothing/suit/roguetown/shirt/dress/gen/random backr = /obj/item/storage/backpack/rogue/satchel - backpack_contents = list(/obj/item/rogueweapon/hammer = 1, /obj/item/rogueweapon/tongs = 1) + backpack_contents = list(/obj/item/rogueweapon/hammer/iron = 1, /obj/item/rogueweapon/tongs = 1) shoes = /obj/item/clothing/shoes/roguetown/shortboots belt = /obj/item/storage/belt/rogue/leather cloak = /obj/item/clothing/cloak/apron/blacksmith @@ -61,7 +61,7 @@ shoes = /obj/item/clothing/shoes/roguetown/boots/leather shirt = /obj/item/clothing/suit/roguetown/shirt/shortshirt backr = /obj/item/storage/backpack/rogue/satchel - backpack_contents = list(/obj/item/rogueweapon/hammer = 1, /obj/item/rogueweapon/tongs = 1) + backpack_contents = list(/obj/item/rogueweapon/hammer/iron = 1, /obj/item/rogueweapon/tongs = 1) belt = /obj/item/storage/belt/rogue/leather beltl = /obj/item/storage/belt/rogue/pouch/coins/poor beltr = /obj/item/roguekey/blacksmith diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 18fb15b9c1..181ac8cd63 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -1086,13 +1086,14 @@ if(itemz) for(var/X in get_equipped_items()) var/obj/item/I = X + if(I.extinguishable) + I.extinguish() //extinguishes our clothes I.acid_level = 0 //washes off the acid on our clothes - I.extinguish() //extinguishes our clothes var/obj/item/I = get_active_held_item() - if(I) + if(I && I.extinguishable) I.extinguish() I = get_inactive_held_item() - if(I) + if(I && I.extinguishable) I.extinguish() ..() diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 26742b0074..7528b9e620 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -2190,7 +2190,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(flying_species && H.movement_type & FLYING) ToggleFlight(H) flyslip(H) - . = stunmod * H.physiology.stun_mod * amount + . = stunmod * H.physiology?.stun_mod * amount ////////////// //Space Move// diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm index db664ad3b2..a3419242f0 100644 --- a/code/modules/reagents/reagent_containers/bottle.dm +++ b/code/modules/reagents/reagent_containers/bottle.dm @@ -59,7 +59,7 @@ GLOBAL_LIST_INIT(wisdoms, world.file2list("strings/rt/wisdoms.txt")) shatter(GET_TURF_BELOW(T)) return new /obj/item/natural/glass/shard(get_turf(T)) - new /obj/effect/decal/cleanable/glass(get_turf(T)) + new /obj/effect/decal/cleanable/debris/glassy(get_turf(T)) qdel(src) /obj/item/reagent_containers/glass/bottle/rmb_self(mob/user) diff --git a/code/modules/roguetown/roguecrafting/alchemy/cauldron_recipes.dm b/code/modules/roguetown/roguecrafting/alchemy/cauldron_recipes.dm index 07d87ed75e..d0c6875090 100644 --- a/code/modules/roguetown/roguecrafting/alchemy/cauldron_recipes.dm +++ b/code/modules/roguetown/roguecrafting/alchemy/cauldron_recipes.dm @@ -58,12 +58,6 @@ skill_required = SKILL_LEVEL_JOURNEYMAN // If it has "Strong", lock it roundstart for Apothecary or above output_reagents = list(/datum/reagent/medicine/healthpot = 81,/datum/reagent/additive = 81) -/datum/alch_cauldron_recipe/rosewater_potion - recipe_name = "Rose Water" - smells_like = "roses" - skill_required = SKILL_LEVEL_NONE // Everyone can put rose in water - output_reagents = list(/datum/reagent/water/rosewater = 81) - /datum/alch_cauldron_recipe/mana_potion recipe_name = "Arcane Elixir" smells_like = "power" diff --git a/code/modules/roguetown/roguecrafting/alchemy/ingredients.dm b/code/modules/roguetown/roguecrafting/alchemy/ingredients.dm index d84fff56a2..7e9c6bf9a0 100644 --- a/code/modules/roguetown/roguecrafting/alchemy/ingredients.dm +++ b/code/modules/roguetown/roguecrafting/alchemy/ingredients.dm @@ -393,11 +393,7 @@ spitoutmouth = FALSE muteinmouth = FALSE alternate_worn_layer = 8.9 //On top of helmet - //mill_result = /obj/item/reagent_containers/food/snacks/grown/rogue/rosa_petals - - major_pot = /datum/alch_cauldron_recipe/rosewater_potion - med_pot = /datum/alch_cauldron_recipe/rosewater_potion - minor_pot = /datum/alch_cauldron_recipe/rosewater_potion + mill_result = /obj/item/reagent_containers/food/snacks/grown/rogue/rosa_petals /obj/item/alch/rosa/equipped(mob/living/carbon/human/user, slot) . = ..() diff --git a/code/modules/roguetown/roguecrafting/alchemy/reagents.dm b/code/modules/roguetown/roguecrafting/alchemy/reagents.dm index 8cb692fe5a..00045f51df 100644 --- a/code/modules/roguetown/roguecrafting/alchemy/reagents.dm +++ b/code/modules/roguetown/roguecrafting/alchemy/reagents.dm @@ -57,30 +57,6 @@ ..() . = 1 -/datum/reagent/water/rosewater - name = "Rose Water" - description = "Steeped rose petals with mild regeneration." - reagent_state = LIQUID - color = "#f398b6" - taste_description = "floral" - overdose_threshold = 0 - metabolization_rate = REAGENTS_METABOLISM - alpha = 173 - -/datum/reagent/water/rosewater/on_mob_life(mob/living/carbon/M) - . = ..() - if (M.mob_biotypes & MOB_BEAST) - M.adjustFireLoss(0.5*REM) - else - M.adjustBruteLoss(-0.1*REM) - M.adjustFireLoss(-0.1*REM) - M.adjustOxyLoss(-0.1, 0) - var/list/our_wounds = M.get_wounds() - if (LAZYLEN(our_wounds)) - var/upd = M.heal_wounds(1) - if (upd) - M.update_damage_overlays() - /datum/reagent/medicine/gender_potion name = "Gender Potion" description = "Change the user's gender." diff --git a/code/modules/roguetown/roguecrafting/ceramics.dm b/code/modules/roguetown/roguecrafting/ceramics.dm new file mode 100644 index 0000000000..80e88e14de --- /dev/null +++ b/code/modules/roguetown/roguecrafting/ceramics.dm @@ -0,0 +1,141 @@ +/datum/crafting_recipe/roguetown/ceramics + abstract_type = /datum/crafting_recipe/roguetown/ceramics + skillcraft = /datum/skill/misc/ceramics + +/datum/crafting_recipe/roguetown/ceramics/clay + structurecraft = /obj/structure/fluff/ceramicswheel + +/datum/crafting_recipe/roguetown/ceramics/glass + tools = list(/obj/item/rogueweapon/blowrod) // To shape it + structurecraft = /obj/machinery/light/rogue/smelter // To heat it + +/* 0 diff */ +/datum/crafting_recipe/roguetown/ceramics/clay/claycup + name = "clay cup" + result = list(/obj/item/natural/clay/claycup) + reqs = list(/obj/item/natural/clay = 1) + craftdiff = 0 + +/datum/crafting_recipe/roguetown/ceramics/clay/claycup3 + name = "clay cup 3x" + result = list(/obj/item/natural/clay/claycup, /obj/item/natural/clay/claycup, /obj/item/natural/clay/claycup) + reqs = list(/obj/item/natural/clay = 3) + craftdiff = 0 + +/* 1 diff */ +/datum/crafting_recipe/roguetown/ceramics/clay/claybottle + name = "clay bottle" + result = list(/obj/item/natural/clay/claybottle) + reqs = list(/obj/item/natural/clay = 1) + craftdiff = 0 + +/datum/crafting_recipe/roguetown/ceramics/clay/claybottle3 + name = "clay bottle 3x" + result = list(/obj/item/natural/clay/claybottle, /obj/item/natural/clay/claybottle, /obj/item/natural/clay/claybottle) + reqs = list(/obj/item/natural/clay = 3) + craftdiff = 1 + +/* 2 diff */ +/datum/crafting_recipe/roguetown/ceramics/clay/clayvase + name = "clay vase" + result = list(/obj/item/natural/clay/clayvase) + reqs = list(/obj/item/natural/clay = 2) + craftdiff = 2 + +/datum/crafting_recipe/roguetown/ceramics/clay/clayvase3 + name = "clay vase 3x" + result = list(/obj/item/natural/clay/clayvase, /obj/item/natural/clay/clayvase, /obj/item/natural/clay/clayvase) + reqs = list(/obj/item/natural/clay = 5) //Slightly less cost to mass-craft than fancy ones. + craftdiff = 2 + +/* 3 diff */ +/datum/crafting_recipe/roguetown/ceramics/clay/clayfancyvase + name = "fancy clay vase" + result = list(/obj/item/natural/clay/clayfancyvase) + reqs = list(/obj/item/natural/clay = 2) + craftdiff = 3 + +/datum/crafting_recipe/roguetown/ceramics/clay/clayfancyvase3 + name = "fancy clay vase 3x" + result = list(/obj/item/natural/clay/clayfancyvase, /obj/item/natural/clay/clayfancyvase, /obj/item/natural/clay/clayfancyvase) + reqs = list(/obj/item/natural/clay = 6) + craftdiff = 3 + +/datum/crafting_recipe/roguetown/ceramics/clay/teapot + name = "teapot" + result = list(/obj/item/natural/clay/rawteapot) + reqs = list(/obj/item/natural/clay = 2) + craftdiff = 3 + +/datum/crafting_recipe/roguetown/ceramics/clay/teapot3 + name = "teapot 3x" + result = list(/obj/item/natural/clay/rawteapot, /obj/item/natural/clay/rawteapot, /obj/item/natural/clay/rawteapot) + reqs = list(/obj/item/natural/clay = 6) + craftdiff = 3 + +/datum/crafting_recipe/roguetown/ceramics/clay/teacup + name = "teacup" + result = list(/obj/item/natural/clay/rawteacup) + reqs = list(/obj/item/natural/clay = 1) + craftdiff = 3 + +/datum/crafting_recipe/roguetown/ceramics/clay/teacup + name = "teacup 3x" + result = list(/obj/item/natural/clay/rawteacup, /obj/item/natural/clay/rawteacup, /obj/item/natural/clay/rawteacup) + reqs = list(/obj/item/natural/clay = 3) + craftdiff = 3 + +/* 4 diff */ + + // '''Clay''' for making glass. + // In reality, this isn't a clay, but rather, a batch of different materials. + /* + Traditionally, this 'batch' used to make glass panes requires three different types of materials to make: + * A silica source, like sand, quartz or flint (This is the primary material. Silica has a melting point + of about 1700C.) + * flux, like soda ash (Na2CO3), potash(K2CO3) or Natron (sodium carbonate IIRC?), commonly used in ancient egyptian glassmaking. + Flux is paramount to reduce the melting point of silica to something achievable in a kiln. + * a Stablizer, like limestone, bone ash, or marble dust. + Did you know 'pure' glass dissolves in water? The stablizer is what binds everything together and makes it strong. + In reality, those different components will be abstracted in game, respectively to: + *2x clay (Assuming it is a base for acquiring Silica) + *2x ash (No abstraction needed. Plant/wood ash IS Na2CO3) + *1x stone (We'll just assume that regular stones have enough limestone in them) (We could use bones but those are too hard to get.) + This should make glass neither trivial nor too challenging to make, especially given its a high-skill recipe. + Smelting it into a pane is a fairly straightforward process with a mold. + The goal should be to make it hard enough that only a dedicated potter can do it + But not to the point of apothecary health potions where no one bothers with it. + */// -SunriseOYH + +/datum/crafting_recipe/roguetown/ceramics/glassraw + name = "glass clay" // This is not a clay, but I don't personally think 'batch' is fitting ICly. + tools = list(/obj/item/reagent_containers/glass/mortar, /obj/item/pestle) + result = list(/obj/item/natural/clay/glassbatch) + reqs = list(/obj/item/natural/clay = 2, /obj/item/ash = 2, /obj/item/natural/stone = 1) + craftdiff = 4 // Knowing how to mix glass is not a trivial knowledge. + +/datum/crafting_recipe/roguetown/ceramics/glass/bottles3 + name = "glass bottles(3x)" + result = list(/obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/bottle) + reqs = list(/obj/item/natural/glass = 1) + craftdiff = 4 + +/datum/crafting_recipe/roguetown/ceramics/clay/claystatue + name = "clay statue" + result = list(/obj/item/natural/clay/claystatue) + reqs = list(/obj/item/natural/clay = 2) + craftdiff = 4 + +/* 5 diff */ // High-end glass containers. Should be a direct upgrade to clay in every possible way. + +/datum/crafting_recipe/roguetown/ceramics/clay/claystatue3 + name = "ceramic statue (3x)" + result = list(/obj/item/natural/clay/claystatue, /obj/item/natural/clay/claystatue, /obj/item/natural/clay/claystatue) + reqs = list(/obj/item/natural/clay = 6) + craftdiff = 5 + +/datum/crafting_recipe/roguetown/ceramics/glass/statue + name = "glass statue" + result = list(/obj/item/roguestatue/glass) + reqs = list(/obj/item/natural/glass = 2) + craftdiff = 5 diff --git a/code/modules/roguetown/roguecrafting/engineering.dm b/code/modules/roguetown/roguecrafting/engineering.dm index 6f694266e2..4b405f3e7a 100644 --- a/code/modules/roguetown/roguecrafting/engineering.dm +++ b/code/modules/roguetown/roguecrafting/engineering.dm @@ -273,6 +273,56 @@ craftdiff = 1 skillcraft = /datum/skill/craft/engineering +/datum/crafting_recipe/roguetown/waterbolt_ten + name = "water bolt (x10)" + result = list( + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water + ) + reqs = list(/obj/item/natural/glass_shard = 1, + /obj/item/grown/log/tree/stick = 10) + req_table = TRUE + craftdiff = 0 + skillcraft = /datum/skill/craft/engineering + +/datum/crafting_recipe/roguetown/waterbolt_twenty + name = "water bolt (x20)" + result = list( + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water, + /obj/item/ammo_casing/caseless/rogue/bolt/water + ) + reqs = list(/obj/item/natural/glass_shard = 2, + /obj/item/grown/log/tree/stick = 10) + req_table = TRUE + craftdiff = 0 + skillcraft = /datum/skill/craft/engineering + /datum/crafting_recipe/roguetown/engineering/pyroarrow name = "pyroclastic arrow" category = "Ammo" @@ -299,6 +349,56 @@ craftdiff = 1 skillcraft = /datum/skill/craft/engineering +/datum/crafting_recipe/roguetown/waterarrow_ten + name = "water arrow (x10)" + result = list( + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water + ) + reqs = list(/obj/item/natural/glass_shard = 1, + /obj/item/grown/log/tree/stick = 10) + req_table = TRUE + craftdiff = 0 + skillcraft = /datum/skill/craft/engineering + +/datum/crafting_recipe/roguetown/waterarrow_twenty + name = "water arrow (x20)" + result = list( + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water, + /obj/item/ammo_casing/caseless/rogue/arrow/water + ) + reqs = list(/obj/item/natural/glass_shard = 2, + /obj/item/grown/log/tree/stick = 20) + req_table = TRUE + craftdiff = 0 + skillcraft = /datum/skill/craft/engineering + //gunmaking slop /*/datum/crafting_recipe/roguetown/firingpim name = "Firing pin" diff --git a/code/modules/roguetown/roguecrafting/structure.dm b/code/modules/roguetown/roguecrafting/structure.dm index 56ec76eaec..97beffc50f 100644 --- a/code/modules/roguetown/roguecrafting/structure.dm +++ b/code/modules/roguetown/roguecrafting/structure.dm @@ -630,3 +630,11 @@ verbage = "assembles" skillcraft = /datum/skill/craft/alchemy craftdiff = 1 + +/datum/crafting_recipe/roguetown/structure/ceramicswheel + name = "potter's wheel" + result = /obj/structure/fluff/ceramicswheel + reqs = list(/obj/item/natural/stone = 2, /obj/item/grown/log/tree/small = 2, /obj/item/roguegear = 1) + verbage_simple = "construct" + craftdiff = 2 + verbage = "constructs" diff --git a/code/modules/roguetown/roguecrafting/turfs.dm b/code/modules/roguetown/roguecrafting/turfs.dm index ff32f71817..b326d3fde9 100644 --- a/code/modules/roguetown/roguecrafting/turfs.dm +++ b/code/modules/roguetown/roguecrafting/turfs.dm @@ -1,7 +1,9 @@ +/////////// +// WOOD // +////////// -/// WOOD - -/datum/crafting_recipe/roguetown/turfs/woodfloor +//Master wood crafting - standardizes all wood crafting. +/datum/crafting_recipe/roguetown/turfs/wood name = "wooden floor" result = /turf/open/floor/rogue/ruinedwood reqs = list(/obj/item/grown/log/tree/small = 1) @@ -10,24 +12,32 @@ verbage = "constructs" craftdiff = 0 -/datum/crafting_recipe/roguetown/turfs/woodfloor/TurfCheck(mob/user, turf/T) +/datum/crafting_recipe/roguetown/turfs/wood/TurfCheck(mob/user, turf/T) if(isclosedturf(T)) return if(!istype(T, /turf/open/floor/rogue)) return return TRUE -/datum/crafting_recipe/roguetown/turfs/woodplatform - name = "wooden platform" +/datum/crafting_recipe/roguetown/turfs/wood/floor + name = "floor (crude wood)" + result = /turf/open/floor/rogue/ruinedwood + reqs = list(/obj/item/natural/wood/plank = 1) + +/datum/crafting_recipe/roguetown/turfs/wood/floor + name = "floor (wood)" + result = /turf/open/floor/rogue/wood + reqs = list(/obj/item/natural/wood/plank = 1) + craftdiff = 2 + +/datum/crafting_recipe/roguetown/turfs/wood/platform + name = "platform (wood)" result = /turf/open/floor/rogue/ruinedwood/platform - reqs = list(/obj/item/grown/log/tree/small = 1, - /obj/item/natural/fibers = 1) - skillcraft = /datum/skill/craft/carpentry - verbage_simple = "construct" - verbage = "constructs" - craftdiff = 1 + reqs = list(/obj/item/natural/wood/plank = 2) + craftdiff = 2 -/datum/crafting_recipe/roguetown/turfs/woodplatform/TurfCheck(mob/user, turf/T) +//Platform has unique turf-check vs normal turf. +/datum/crafting_recipe/roguetown/turfs/wood/platform/TurfCheck(mob/user, turf/T) if(isclosedturf(T)) return if(!istype(T, /turf/open/transparent/openspace)) @@ -35,40 +45,23 @@ return return TRUE -/datum/crafting_recipe/roguetown/turfs/woodwall - name = "wooden wall" +/datum/crafting_recipe/roguetown/turfs/wood/wall + name = "wall (wood)" result = /turf/closed/wall/mineral/rogue/wood reqs = list(/obj/item/grown/log/tree/small = 2) - skillcraft = /datum/skill/craft/carpentry - verbage_simple = "construct" - verbage = "constructs" craftdiff = 2 -/datum/crafting_recipe/roguetown/turfs/woodwall/TurfCheck(mob/user, turf/T) - if(isclosedturf(T)) - return - if(!istype(T, /turf/open/floor/rogue)) - return - return TRUE +/datum/crafting_recipe/roguetown/turfs/wood/wall/alt + reqs = list(/obj/item/natural/wood/plank = 2) -/datum/crafting_recipe/roguetown/turfs/fancywwall - name = "fancy wooden wall" +/datum/crafting_recipe/roguetown/turfs/wood/fancy + name = "wall (fancy wood)" result = /turf/closed/wall/mineral/rogue/decowood - reqs = list(/obj/item/grown/log/tree/small = 2) - skillcraft = /datum/skill/craft/carpentry - verbage_simple = "construct" - verbage = "constructs" + reqs = list(/obj/item/natural/wood/plank = 2) craftdiff = 3 -/datum/crafting_recipe/roguetown/turfs/fancywwall/TurfCheck(mob/user, turf/T) - if(isclosedturf(T)) - return - if(!istype(T, /turf/open/floor/rogue)) - return - return TRUE - -/datum/crafting_recipe/roguetown/turfs/woodwindow - name = "wooden murder hole" +/datum/crafting_recipe/roguetown/turfs/wood/murderhole + name = "murder hole (wood)" result = /turf/closed/wall/mineral/rogue/wood/window reqs = list(/obj/item/grown/log/tree/small = 2) skillcraft = /datum/skill/craft/carpentry @@ -76,115 +69,157 @@ verbage = "constructs" craftdiff = 2 -/datum/crafting_recipe/roguetown/turfs/woodwindow/TurfCheck(mob/user, turf/T) +/datum/crafting_recipe/roguetown/turfs/wood/murderhole/alt + reqs = list(/obj/item/natural/wood/plank = 2) + +/// STONE + +/datum/crafting_recipe/roguetown/turfs/stone + reqs = list(/obj/item/natural/stoneblock = 1) + skillcraft = /datum/skill/craft/masonry + verbage_simple = "build" + verbage = "builds" + +/datum/crafting_recipe/roguetown/turfs/stone/TurfCheck(mob/user, turf/T) if(isclosedturf(T)) return if(!istype(T, /turf/open/floor/rogue)) return return TRUE -/// STONE - -/datum/crafting_recipe/roguetown/turfs/stonefloor - name = "stone floor" - result = /turf/open/floor/rogue/blocks +/datum/crafting_recipe/roguetown/turfs/stone/cobblerock + name = "road (cobblerock)" + result = /turf/open/floor/rogue/cobblerock reqs = list(/obj/item/natural/stone = 1) - skillcraft = /datum/skill/craft/masonry - verbage_simple = "build" - verbage = "builds" craftdiff = 0 -/datum/crafting_recipe/roguetown/turfs/stonefloor/TurfCheck(mob/user, turf/T) +/datum/crafting_recipe/roguetown/turfs/stone/cobblerock/TurfCheck(mob/user, turf/T) if(isclosedturf(T)) return - if(!istype(T, /turf/open/floor/rogue)) + if(!istype(T, /turf/open/floor/rogue/dirt)) return return TRUE -/datum/crafting_recipe/roguetown/turfs/stoneplatform - name = "stone platform" - result = /turf/open/floor/rogue/blocks/platform - reqs = list(/obj/item/natural/stone = 1, - /obj/item/natural/fibers = 1) - skillcraft = /datum/skill/craft/masonry - verbage_simple = "build" - verbage = "builds" +/datum/crafting_recipe/roguetown/turfs/stone/cobble + name = "floor (cobblestone)" + result = /turf/open/floor/rogue/cobble + reqs = list(/obj/item/natural/stone = 1) + craftdiff = 1 + +/datum/crafting_recipe/roguetown/turfs/stone/block + name = "floor (stoneblock)" + result = /turf/open/floor/rogue/blocks craftdiff = 1 -/datum/crafting_recipe/roguetown/turfs/stoneplatform/TurfCheck(mob/user, turf/T) +/datum/crafting_recipe/roguetown/turfs/stone/newstone + name = "floor (newstone)" + result = /turf/open/floor/rogue/blocks/newstone/alt + craftdiff = 2 + +/datum/crafting_recipe/roguetown/turfs/stone/herringbone + name = "floor (herringbone)" + result = /turf/open/floor/rogue/herringbone + craftdiff = 3 + +/datum/crafting_recipe/roguetown/turfs/stone/hexstone + name = "floor (hexstone)" + result = /turf/open/floor/rogue/hexstone + craftdiff = 4 + +/datum/crafting_recipe/roguetown/turfs/stone/platform + name = "platform (stone)" + result = /turf/open/floor/rogue/blocks/platform + reqs = list(/obj/item/natural/stoneblock = 2) + craftdiff = 2 + +/datum/crafting_recipe/roguetown/turfs/stone/platform/TurfCheck(mob/user, turf/T) if(isclosedturf(T)) return if(!istype(T, /turf/open/transparent/openspace)) if(!istype(T, /turf/open/water)) return - if(!istype(T, /turf/open/lava)) - return return TRUE -/datum/crafting_recipe/roguetown/turfs/stonewall - name = "stone wall" +/datum/crafting_recipe/roguetown/turfs/stone/wall + name = "wall (stone)" result = /turf/closed/wall/mineral/rogue/stone reqs = list(/obj/item/natural/stone = 2) - skillcraft = /datum/skill/craft/masonry - verbage_simple = "build" - verbage = "builds" craftdiff = 2 -/datum/crafting_recipe/roguetown/turfs/stonewall/TurfCheck(mob/user, turf/T) - if(isclosedturf(T)) - return - if(!istype(T, /turf/open/floor/rogue)) - return - return TRUE +/datum/crafting_recipe/roguetown/turfs/stone/brick + name = "wall (stonebrick)" + result = /turf/closed/wall/mineral/rogue/stonebrick + reqs = list(/obj/item/natural/stoneblock = 2) + craftdiff = 3 -/datum/crafting_recipe/roguetown/turfs/fancyswall - name = "fancy stone wall" +/datum/crafting_recipe/roguetown/turfs/stone/decorated + name = "wall (decorated stone)" result = /turf/closed/wall/mineral/rogue/decostone reqs = list(/obj/item/natural/stone = 2) - skillcraft = /datum/skill/craft/masonry - verbage_simple = "build" - verbage = "builds" craftdiff = 3 -/datum/crafting_recipe/roguetown/turfs/fancyswall/TurfCheck(mob/user, turf/T) - if(isclosedturf(T)) - return - if(!istype(T, /turf/open/floor/rogue)) - return - return TRUE - -/datum/crafting_recipe/roguetown/turfs/craftstone - name = "craftstone wall" +/datum/crafting_recipe/roguetown/turfs/stone/craft + name = "wall (craftstone)" result = /turf/closed/wall/mineral/rogue/craftstone - reqs = list(/obj/item/natural/stone = 3) + reqs = list(/obj/item/natural/stoneblock = 3) + craftdiff = 4 + +/datum/crafting_recipe/roguetown/turfs/stone/window + name = "murder hole (stone)" + result = /turf/closed/wall/mineral/rogue/stone/window + reqs = list(/obj/item/natural/stoneblock = 2) + craftdiff = 2 + + +/// BRICK + +/datum/crafting_recipe/roguetown/turfs/brick + reqs = list(/obj/item/natural/brick = 1) skillcraft = /datum/skill/craft/masonry verbage_simple = "build" verbage = "builds" - craftdiff = 4 -/datum/crafting_recipe/roguetown/turfs/fancyswall/TurfCheck(mob/user, turf/T) +/datum/crafting_recipe/roguetown/turfs/brick/TurfCheck(mob/user, turf/T) if(isclosedturf(T)) return if(!istype(T, /turf/open/floor/rogue)) return return TRUE -/datum/crafting_recipe/roguetown/turfs/stonewindow - name = "stone murder hole" - result = /turf/closed/wall/mineral/rogue/stone/window - reqs = list(/obj/item/natural/stone = 2) - skillcraft = /datum/skill/craft/masonry +//Needs brick walls, windows, and platforms added at some point but need sprites for this. +/datum/crafting_recipe/roguetown/turfs/brick/floor + name = "floor (brick)" + result = /turf/open/floor/rogue/tile/brick + reqs = list(/obj/item/natural/brick = 1) + craftdiff = 1 + +/datum/crafting_recipe/roguetown/turfs/brick/wall + name = "wall (brick)" + result = /turf/closed/wall/mineral/rogue/brick + reqs = list(/obj/item/natural/brick = 1) + craftdiff = 2 + +/datum/crafting_recipe/roguetown/turfs/brick/window + name = "murder hole (brick)" + result = /turf/closed/wall/mineral/rogue/brick/window + reqs = list(/obj/item/natural/brick = 2) + craftdiff = 2 + +/datum/crafting_recipe/roguetown/turfs/brick/window/openclose + name = "reinforced window (brick)" + result = /obj/structure/roguewindow/openclose/reinforced/brick + reqs = list( + /obj/item/natural/brick = 2, + /obj/item/ingot/iron = 1, + /obj/item/natural/glass = 1, + /obj/item/natural/dirtclod = 1, + ) + skillcraft = /datum/skill/craft/blacksmithing + craftsound = 'sound/items/bsmith1.ogg' verbage_simple = "build" verbage = "builds" craftdiff = 2 -/datum/crafting_recipe/roguetown/turfs/stonewindow/TurfCheck(mob/user, turf/T) - if(isclosedturf(T)) - return - if(!istype(T, /turf/open/floor/rogue)) - return - return TRUE - /// WINDOWS /datum/crafting_recipe/roguetown/turfs/roguewindow @@ -203,7 +238,7 @@ reqs = list( /obj/item/grown/log/tree/small = 2, /obj/item/natural/stone = 1, - /obj/item/ash = 1, + /obj/item/natural/glass = 1, /obj/item/natural/dirtclod = 1, ) skillcraft = /datum/skill/craft/carpentry @@ -216,10 +251,10 @@ name = "reinforced window" result = /obj/structure/roguewindow/openclose/reinforced reqs = list( - /obj/item/grown/log/tree/small = 2, - /obj/item/ingot/iron = 1, - /obj/item/ash = 1, - /obj/item/natural/dirtclod = 1, + /obj/item/grown/log/tree/small = 2, + /obj/item/ingot/iron = 1, + /obj/item/natural/glass = 1, + /obj/item/natural/dirtclod = 1, ) skillcraft = /datum/skill/craft/blacksmithing craftsound = 'sound/items/bsmith1.ogg' @@ -230,7 +265,7 @@ /// HAY, TWIG AND TENT /datum/crafting_recipe/roguetown/turfs/hay - name = "hay" + name = "floor (hay)" result = /turf/open/floor/rogue/hay reqs = list(/obj/item/natural/chaff/wheat = 2) skillcraft = /datum/skill/craft/crafting @@ -239,13 +274,14 @@ craftdiff = 0 /datum/crafting_recipe/roguetown/turfs/twig - name = "twig floor" + name = "floor (twig)" result = /turf/open/floor/rogue/twig reqs = list(/obj/item/grown/log/tree/stick = 2) skillcraft = /datum/skill/craft/crafting verbage_simple = "assemble" verbage = "assembles" craftdiff = 0 + //loud = TRUE /datum/crafting_recipe/roguetown/turfs/twig/TurfCheck(mob/user, turf/T) if(isclosedturf(T)) @@ -256,13 +292,14 @@ return TRUE /datum/crafting_recipe/roguetown/turfs/twigplatform - name = "twig platform" + name = "platform (twig)" result = /turf/open/floor/rogue/twig/platform reqs = list(/obj/item/grown/log/tree/stick = 3) skillcraft = /datum/skill/craft/crafting verbage_simple = "assemble" verbage = "assembles" craftdiff = 1 + //loud = TRUE /datum/crafting_recipe/roguetown/turfs/twigplatform/TurfCheck(mob/user, turf/T) if(isclosedturf(T)) @@ -305,3 +342,48 @@ if(!istype(T, /turf/open/floor/rogue)) return return ..() + +// Normal, non-openable window +/datum/crafting_recipe/roguetown/turfs/roguewindow + name = "static glass window" + result = /obj/structure/roguewindow + reqs = list(/obj/item/grown/log/tree/small = 2, /obj/item/natural/glass = 1) + skillcraft = /datum/skill/craft/carpentry + verbage_simple = "build" + verbage = "builds" + craftdiff = 3 + + /* + By the way, glass windows needing Masonry and Carpentry instead of Ceramics isn't an oversight. + The Mason and the Carpenter are the ones who will build the window itself from wood and + an already prepared pane of glass. The potter has nothing to do with this part of the process. + */// - SunriseOYH + +/datum/crafting_recipe/roguetown/turfs/roguewindow/TurfCheck(mob/user, turf/T) + if(isclosedturf(T)) + return + if(!istype(T, /turf/open/floor/rogue)) + return + return TRUE + +// The windows you can open and close +/datum/crafting_recipe/roguetown/turfs/roguewindow/dynamic + name = "openable glass window" + result = /obj/structure/roguewindow/openclose + reqs = list(/obj/item/grown/log/tree/small = 2, /obj/item/natural/glass = 1) + craftdiff = 3 + +// The 'windows' of the church that almost no one knows exists. +/datum/crafting_recipe/roguetown/turfs/roguewindow/stone + name = "static glass window" + result = /obj/structure/roguewindow/stained/silver + reqs = list(/obj/item/natural/stone = 2, /obj/item/natural/glass = 1) + skillcraft = /datum/skill/craft/masonry + craftdiff = 3 + +// Reinfored windows +/datum/crafting_recipe/roguetown/turfs/roguewindow/reinforced + name = "reinforced glass window" + result = /obj/structure/roguewindow/openclose/reinforced + reqs = list(/obj/item/grown/log/tree/small = 2, /obj/item/natural/glass = 1, /obj/item/ingot/iron = 1) + craftdiff = 3 diff --git a/code/modules/roguetown/roguejobs/artificer/handsaw_chisel.dm b/code/modules/roguetown/roguejobs/artificer/handsaw_chisel.dm new file mode 100644 index 0000000000..01a409053e --- /dev/null +++ b/code/modules/roguetown/roguejobs/artificer/handsaw_chisel.dm @@ -0,0 +1,177 @@ +#define BCLASS_CHISEL "chisel" +//................ Handsaw ............... // +/obj/item/rogueweapon/handsaw + force = 5 + possible_item_intents = list(/datum/intent/dagger/cut, /datum/intent/dagger/chop/cleaver) + gripped_intents = null + name = "handsaw" + desc = "Iron tool for woodworking." + icon_state = "handsaw" + icon = 'icons/roguetown/items/crafting.dmi' + grid_width = 32 + grid_height = 96 + sharpness = IS_SHARP + wdefense = 0 + wlength = WLENGTH_LONG + w_class = WEIGHT_CLASS_NORMAL + slot_flags = ITEM_SLOT_HIP + tool_behaviour = TOOL_SAW + swingsound = list('sound/combat/wooshes/blunt/shovel_swing.ogg','sound/combat/wooshes/blunt/shovel_swing2.ogg') + drop_sound = 'sound/foley/dropsound/shovel_drop.ogg' + smeltresult = /obj/item/ingot/iron + associated_skill = /datum/skill/combat/axes //Not an axe but fuck it - you're logging anyway. + max_blade_int = 50 + +//................ Chisel ............... // +/obj/item/rogueweapon/chisel + name = "chisel" + desc = "Add something to strike it with before doing stonework. Like a mallet or a stone." + icon_state = "chisel" + icon = 'icons/roguetown/items/crafting.dmi' + grid_width = 32 + grid_height = 64 + force = 10 + throwforce = 2 + possible_item_intents = list(/datum/intent/stab) + sharpness = IS_SHARP + dropshrink = 0.9 + w_class = WEIGHT_CLASS_SMALL + wdefense = 0 + blade_dulling = 0 + max_integrity = 140 + slot_flags = ITEM_SLOT_HIP + swingsound = list('sound/combat/wooshes/blunt/shovel_swing.ogg','sound/combat/wooshes/blunt/shovel_swing2.ogg') + drop_sound = 'sound/foley/dropsound/shovel_drop.ogg' + associated_skill = /datum/skill/combat/knives //Not a knife but kinda similar to etching so.. + max_blade_int = 50 + dropshrink = 0.9 + var/already_assembled + +/obj/item/rogueweapon/chisel/attackby(obj/item/W, mob/living/user, params) + . = ..() + if(already_assembled) + return + + if(istype(W,/obj/item/natural/stoneblock)) + playsound(get_turf(user.loc), 'sound/foley/brickdrop.ogg', 100) + user.visible_message("[user] adds a striking tool to the chisel set.") + var/obj/item/rogueweapon/chisel/assembly/stoneblock/F = new(src.loc) + qdel(W) + user.put_in_hands(F) + qdel(src) + return + + else if(istype(W,/obj/item/natural/stone)) + playsound(get_turf(user.loc), 'sound/foley/brickdrop.ogg', 100) + user.visible_message("[user] adds a striking tool to the chisel set.") + var/obj/item/rogueweapon/chisel/assembly/stone/F = new(src.loc) + qdel(W) + user.put_in_hands(F) + qdel(src) + return + + else if(istype(W, /obj/item/rogueweapon/hammer/steel)) + playsound(get_turf(user.loc), 'sound/foley/brickdrop.ogg', 100) + user.visible_message("[user] adds a striking tool to the chisel set.") + var/obj/item/rogueweapon/chisel/assembly/hammerclaw/F = new(src.loc) + qdel(W) + user.put_in_hands(F) + qdel(src) + return + + else if(istype(W, /obj/item/rogueweapon/hammer/iron)) + playsound(get_turf(user.loc), 'sound/foley/brickdrop.ogg', 100) + user.visible_message("[user] adds a striking tool to the chisel set.") + var/obj/item/rogueweapon/chisel/assembly/hammer/F = new(src.loc) + qdel(W) + user.put_in_hands(F) + qdel(src) + return + + else if(istype(W, /obj/item/rogueweapon/hammer/wood)) + playsound(get_turf(user.loc), 'sound/foley/brickdrop.ogg', 100) + user.visible_message("[user] adds a striking tool to the chisel set.") + var/obj/item/rogueweapon/chisel/assembly/mallet/F = new(src.loc) + qdel(W) + user.put_in_hands(F) + qdel(src) + return + +//................ Chisel toolset ............... // +/obj/item/rogueweapon/chisel/assembly // template + name = "chisel set" + desc = "Ready to shape stones when held in a steady grip. Can be separated easily." + grid_width = 64 + grid_height = 64 + possible_item_intents = list(/datum/intent/hit) + gripped_intents = list(/datum/intent/chisel) + already_assembled = TRUE + +/obj/item/rogueweapon/chisel/assembly/mallet + icon_state = "chiselm" + item_state = "hammer_w" + +/obj/item/rogueweapon/chisel/assembly/mallet/attack_right(mob/user) + var/obj/item/rogueweapon/chisel/F = new(user.loc) + var/obj/item/rogueweapon/hammer/wood/E = new(user.loc) + user.put_in_hands(E) + playsound(get_turf(user.loc), 'sound/foley/brickdrop.ogg', 100) + qdel(src) + user.put_in_hands(F) + +/obj/item/rogueweapon/chisel/assembly/hammer + icon_state = "chiselh" + item_state = "hammer_i" + +/obj/item/rogueweapon/chisel/assembly/hammer/attack_right(mob/user) + var/obj/item/rogueweapon/chisel/F = new(user.loc) + var/obj/item/rogueweapon/hammer/iron/E = new(user.loc) + user.put_in_hands(E) + playsound(get_turf(user.loc), 'sound/foley/brickdrop.ogg', 100) + qdel(src) + user.put_in_hands(F) + +/obj/item/rogueweapon/chisel/assembly/hammerclaw + icon_state = "chiselc" + item_state = "hammer_s" +/obj/item/rogueweapon/chisel/assembly/hammerclaw/attack_right(mob/user) + var/obj/item/rogueweapon/chisel/F = new(user.loc) + var/obj/item/rogueweapon/hammer/steel/E = new(user.loc) + user.put_in_hands(E) + playsound(get_turf(user.loc), 'sound/foley/brickdrop.ogg', 100) + qdel(src) + user.put_in_hands(F) + +/obj/item/rogueweapon/chisel/assembly/stone + icon_state = "chisels" + item_state = "stone" +/obj/item/rogueweapon/chisel/assembly/stone/attack_right(mob/user) + var/obj/item/rogueweapon/chisel/F = new(user.loc) + var/obj/item/natural/stone/E = new(user.loc) + user.put_in_hands(E) + playsound(get_turf(user.loc), 'sound/foley/brickdrop.ogg', 100) + qdel(src) + user.put_in_hands(F) + +/obj/item/rogueweapon/chisel/assembly/stoneblock + icon_state = "chiselb" + item_state = "block" +/obj/item/rogueweapon/chisel/assembly/stoneblock/attack_right(mob/user) + var/obj/item/rogueweapon/chisel/F = new(user.loc) + var/obj/item/natural/stoneblock/E = new(user.loc) + user.put_in_hands(E) + playsound(get_turf(user.loc), 'sound/foley/brickdrop.ogg', 100) + qdel(src) + user.put_in_hands(F) + + +/datum/intent/chisel + name = "chisel" + icon_state = "inchisel" + attack_verb = list("chisels") + hitsound = list('sound/combat/hits/pick/genpick (1).ogg', 'sound/combat/hits/pick/genpick (2).ogg') + animname = "strike" + item_d_type = "stab" + blade_class = BCLASS_CHISEL + chargetime = 0 + swingdelay = 3 diff --git a/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/tools.dm b/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/tools.dm index e9d36b8caf..e9095606f0 100644 --- a/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/tools.dm +++ b/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/tools.dm @@ -4,6 +4,13 @@ craftdiff = 1 // --------- IRON ----------- + +/datum/anvil_recipe/tools/iron/blowrod + name = "Glass Blowing Rod" + req_bar = /obj/item/ingot/iron + created_item = /obj/item/rogueweapon/blowrod + craftdiff = 0 + /datum/anvil_recipe/tools/surgery/surgerytools name = "Surgeon's Bag (+1 Iron, +1 Cured Leather)" category = "Tools" @@ -72,9 +79,23 @@ category = "Tools" req_bar = /obj/item/ingot/iron additional_items = list(/obj/item/grown/log/tree/stick) - created_item = /obj/item/rogueweapon/hammer + created_item = /obj/item/rogueweapon/hammer/iron i_type = "Tools" + +/datum/anvil_recipe/tools/iron/handsaw + name = "Handsaw (+1 Stick)" + category = "Tools" + req_bar = /obj/item/ingot/iron + additional_items = list(/obj/item/grown/log/tree/stick) + created_item = /obj/item/rogueweapon/handsaw + +/datum/anvil_recipe/tools/iron/chisel + name = "Chisel" + category = "Tools" + req_bar = /obj/item/ingot/iron + created_item = /obj/item/rogueweapon/chisel + /datum/anvil_recipe/tools/iron/tongs name = "Tongs" category = "Tools" @@ -138,11 +159,52 @@ i_type = "Tools" /datum/anvil_recipe/tools/iron/pot - name = "Pot" + name = "Cooking Pot (Iron)" category = "Tools" req_bar = /obj/item/ingot/iron created_item = /obj/item/reagent_containers/glass/bucket/pot +/datum/anvil_recipe/tools/pote/copper + name = "Cooking Pot (Copper)" + category = "Tools" + req_bar = /obj/item/ingot/copper + created_item = /obj/item/reagent_containers/glass/bucket/pot/copper + +/datum/anvil_recipe/tools/platter + name = "2x Platters (Copper)" + category = "Tools" + req_bar = /obj/item/ingot/copper + created_item = /obj/item/cooking/platter/copper + craftdiff = 1 + createditem_num = 1 + +/datum/anvil_recipe/tools/platter + name = "2x Platters (Copper)" + category = "Tools" + req_bar = /obj/item/ingot/copper + created_item = /obj/item/cooking/platter/copper + craftdiff = 1 + createditem_num = 1 + +/datum/anvil_recipe/tools/platter/tin + name = "2x Platters (Tin)" + category = "Tools" + req_bar = /obj/item/ingot/tin + created_item = /obj/item/cooking/platter/pewter + +/datum/anvil_recipe/tools/platter/gold + name = "2x Platters (Gold)" + category = "Tools" + req_bar = /obj/item/ingot/gold + created_item = /obj/item/cooking/platter/gold + +/datum/anvil_recipe/tools/platter/silver + name = "2x Platters (Silver)" + category = "Tools" + req_bar = /obj/item/ingot/silver + created_item = /obj/item/cooking/platter/silver + + /datum/anvil_recipe/tools/iron/fork name = "Iron Fork x3" category = "Tools" @@ -151,6 +213,12 @@ createditem_num = 3 craftdiff = 1 +/datum/anvil_recipe/tools/fork/tin + name = "Tin Fork x3" + category = "Tools" + req_bar = /obj/item/ingot/tin + created_item = /obj/item/kitchen/fork/tin + /datum/anvil_recipe/tools/iron/spoon name = "Iron Spoon x3" category = "Tools" @@ -159,6 +227,12 @@ createditem_num = 3 craftdiff = 1 +/datum/anvil_recipe/tools/spoon/tin + name = "Tin Spoon x3" + category = "Tools" + req_bar = /obj/item/ingot/tin + created_item = /obj/item/kitchen/spoon/tin + /datum/anvil_recipe/tools/iron/bowl name = "Iron Bowl" category = "Tools" @@ -175,6 +249,13 @@ // --------- Steel ----------- +/datum/anvil_recipe/tools/steel/hammer + name = "Claw hammer (+1 Stick)" + category = "Tools" + req_bar = /obj/item/ingot/iron + additional_items = list(/obj/item/grown/log/tree/stick) + created_item = /obj/item/rogueweapon/hammer/steel + /datum/anvil_recipe/tools/steel/pick name = "Pickaxe (+1 Stick)" category = "Tools" diff --git a/code/modules/roguetown/roguejobs/blacksmith/grindwheel.dm b/code/modules/roguetown/roguejobs/blacksmith/grindwheel.dm index 60a78ff6ba..d90928869d 100644 --- a/code/modules/roguetown/roguejobs/blacksmith/grindwheel.dm +++ b/code/modules/roguetown/roguejobs/blacksmith/grindwheel.dm @@ -8,11 +8,23 @@ blade_dulling = DULLING_BASH max_integrity = 300 -/obj/structure/fluff/grindwheel/attackby(obj/item/W, mob/living/user, params) - if(W.max_blade_int) +/obj/structure/fluff/grindwheel/attackby(obj/item/I, mob/living/user, params) + if(I.max_blade_int) playsound(loc,'sound/foley/grindblade.ogg', 100, FALSE) if(do_after(user, 41, target = src)) - W.add_bintegrity(999) -// W.degrade_bintegrity(1) + I.add_bintegrity(999) return + if(istype(I, /obj/item/grown/log/tree/small)) + var/skill_level = user.mind.get_skill_level(/datum/skill/craft/carpentry) + var/wood_time = (40 - (skill_level * 5)) + playsound(src, pick('sound/misc/slide_wood (2).ogg', 'sound/misc/slide_wood (1).ogg'), 100, FALSE) + if(do_after(user, wood_time, target = src)) + if(prob(max(40 - (skill_level * 10), 0)) || !skill_level) //Chance maxes at level 4 + to_chat(user, span_info("Curses! I ruined this piece of wood...")) + playsound(src,'sound/combat/hits/onwood/destroyfurniture.ogg', 100, FALSE) + else + new /obj/item/natural/wood/plank(get_turf(src)) + user.mind.add_sleep_experience(/datum/skill/craft/carpentry, (user.STAINT*0.5)) + qdel(I) + return . = ..() diff --git a/code/modules/roguetown/roguejobs/blacksmith/tools.dm b/code/modules/roguetown/roguejobs/blacksmith/tools.dm index c079495bdf..96b3ef7b32 100644 --- a/code/modules/roguetown/roguejobs/blacksmith/tools.dm +++ b/code/modules/roguetown/roguejobs/blacksmith/tools.dm @@ -1,9 +1,9 @@ - +//Base hammer type. (Wood / Iron / Steel) /obj/item/rogueweapon/hammer force = 21 possible_item_intents = list(/datum/intent/mace/strike, /datum/intent/mace/smash) - name = "hammer" - desc = "Each strikes reverberate loudly chanting war!" + name = "template hammer" + desc = "If you see this - scream, cry, piss, run, shit yourself, then report it to a dev. Shouldn't be here." icon_state = "hammer" icon = 'icons/roguetown/weapons/tools.dmi' sharpness = IS_BLUNT @@ -12,7 +12,7 @@ slot_flags = ITEM_SLOT_HIP w_class = WEIGHT_CLASS_NORMAL associated_skill = /datum/skill/combat/maces - smeltresult = /obj/item/ingot/iron + smeltresult = /obj/item/ash grid_width = 32 grid_height = 64 @@ -157,18 +157,33 @@ else //Non-construct. to_chat(user, span_warning("I can't tinker on living flesh!")) -/obj/item/rogueweapon/hammer/stone - name = "stone hammer" - icon_state = "stonehammer" +/obj/item/rogueweapon/hammer/wood // wood hammer (mallet) + name = "wooden mallet" + desc = "A wooden mallet is an artificers second best friend! But it may also come in handy to a smith..." + icon_state = "hammer_w" force = 16 - smeltresult = null + +/obj/item/rogueweapon/hammer/stone // stone hammer + name = "stone hammer" + desc = "A makeshift hammer, made with a crudly chisled-down rock." + icon_state = "hammer_r" + force = 18 max_integrity = 15 -/obj/item/rogueweapon/hammer/claw - icon_state = "clawh" +/obj/item/rogueweapon/hammer/iron // iron hammer + name = "hammer" + desc = "Each strikes reverberate loudly chanting war!" + icon_state = "hammer_i" + smeltresult = /obj/item/ingot/iron + +/obj/item/rogueweapon/hammer/steel // steel hammer + name = "claw hammer" + desc = "Steel to drive the iron nail without mercy." + icon_state = "hammer_s" + smeltresult = /obj/item/ingot/steel /* -/obj/item/rogueweapon/hammer/claw/attack_turf(turf/T, mob/living/user) +/obj/item/rogueweapon/hammer/steel/attack_turf(turf/T, mob/living/user) if(!user.cmode) if(T.hammer_repair && T.max_integrity && !T.obj_broken) var/repair_percent = 0.05 @@ -214,8 +229,6 @@ if("onbelt") return list("shrink" = 0.3,"sx" = -2,"sy" = -5,"nx" = 4,"ny" = -5,"wx" = 0,"wy" = -5,"ex" = 2,"ey" = -5,"nturn" = 0,"sturn" = 0,"wturn" = 0,"eturn" = 0,"nflip" = 0,"sflip" = 0,"wflip" = 0,"eflip" = 0,"northabove" = 0,"southabove" = 1,"eastabove" = 1,"westabove" = 0) - - /obj/item/rogueweapon/tongs force = 10 possible_item_intents = list(/datum/intent/mace/strike) diff --git a/code/modules/roguetown/roguejobs/ceramicist/clay.dm b/code/modules/roguetown/roguejobs/ceramicist/clay.dm new file mode 100644 index 0000000000..353609709b --- /dev/null +++ b/code/modules/roguetown/roguejobs/ceramicist/clay.dm @@ -0,0 +1,71 @@ +/obj/item/natural/clay + name = "clay" + icon_state = "clay" // Placeholder. TODO: Get an icon for clay. + desc = "A handful of damp, malleable clay" + gripped_intents = null + dropshrink = 0.75 + possible_item_intents = list(INTENT_GENERIC) + force = 0 + throwforce = 0 + slot_flags = null + obj_flags = null + w_class = WEIGHT_CLASS_TINY + var/cooked_type = /obj/item/natural/stone // What does this item turn into when glazed in a kiln? + // A regular clay lump just becomes an ordinary stone. + // ...Possibly used to make bricks in a separate PR? Interesting way to integrate + // the mason's construction work with the new Potter profession. - SunriseOYH + + var/cooking = 0 // This variable measures the progress of the glazing act. + var/cooktime = 1 MINUTES // This dictates the time needed to glaze. + var/burning = 0 // This variable measures the progress of the burning act + var/burntime = 5 MINUTES // How long must it be left unattended to burn and be ruined? + var/burned_color = "#302d2d" + +// '''Clay''' for making glass. +/obj/item/natural/clay/glassbatch + name = "glass batch" + icon_state = "glassBatch" + desc = "A mixture of finely ground silica, flux and a stablizer. It glistens against the light, and could be turned into precious glass by a competent potter." + smeltresult = /obj/item/natural/glass // Smelted in a furnace, like a ore. + grind_results = list(/datum/reagent/iron = 15) + sellprice = 5 + cooktime = 0 + burntime = 0 + +/obj/item/natural/clay/Initialize() + if(cooked_type) + cooktime = 30 SECONDS + ..() // The ..() refers to calling the parent class's (obj/item/natural) Initialize() proc. + +/obj/item/natural/clay/cooking(input as num, burninput, atom/A) // I am using the same variable names from cooking + if(!input) + return + if(cooktime) + if(cooking < cooktime) + cooking = cooking + input + if(cooking >= cooktime) + return heating_act(A) + return + burning(burninput) + +/obj/item/natural/clay/heating_act(atom/A) + var/obj/item/result + if(istype(A,/obj/machinery/light/rogue/oven)) + if(cooked_type) + result = new cooked_type(A) + return result + result = new /obj/item/ash(A) // No cooked_type? Pulverized. + return result + +/obj/item/natural/clay/burning(input as num) // Overrides the generic /obj/item/proc/burning in snacks.dm + if(!input) + return + if(burntime) + burning = burning + input + if(burning >= burntime) // Left it glazing for too long. Right now, it only makes it ugly. + // Maybe reduce selling price? + color = burned_color + name = "burnt [name]" + desc = "It's dark and charred, but still functional." + if(burning > (burntime * 2)) // Way too long. Incinerate. + burn() // Burn is a method of obj/items that Qdels something and replaces it with ash. diff --git a/code/modules/roguetown/roguejobs/ceramicist/items.dm b/code/modules/roguetown/roguejobs/ceramicist/items.dm new file mode 100644 index 0000000000..106546e255 --- /dev/null +++ b/code/modules/roguetown/roguejobs/ceramicist/items.dm @@ -0,0 +1,14 @@ +//Not clay but part of pottery/glassblowing. +/obj/item/rogueweapon/blowrod + force = 10 + possible_item_intents = list(/datum/intent/mace/strike) + name = "Blowing Rod" + desc = "A blowing rod for shaping glass." + icon_state = "blowJobRod" // sorry not sorry + icon = 'icons/roguetown/weapons/tools.dmi' + sharpness = IS_BLUNT + //dropshrink = 0.8 + wlength = 10 + slot_flags = ITEM_SLOT_HIP + associated_skill = null + smeltresult = /obj/item/ingot/iron diff --git a/code/modules/roguetown/roguejobs/ceramicist/potterwheel.dm b/code/modules/roguetown/roguejobs/ceramicist/potterwheel.dm new file mode 100644 index 0000000000..5fd67e4ad3 --- /dev/null +++ b/code/modules/roguetown/roguejobs/ceramicist/potterwheel.dm @@ -0,0 +1,12 @@ +/obj/structure/fluff/ceramicswheel + name = "Potter's Wheel" + desc = "A rotating platform used by skilled artisans to mold and shape clay." + icon = 'icons/roguetown/misc/structure.dmi' + icon_state = "potwheel" + density = TRUE + anchored = TRUE + layer = BELOW_OBJ_LAYER + blade_dulling = DULLING_BASHCHOP + max_integrity = 150 + destroy_sound = 'sound/combat/hits/onwood/destroyfurniture.ogg' + attacked_sound = list('sound/combat/hits/onwood/woodimpact (1).ogg','sound/combat/hits/onwood/woodimpact (2).ogg') diff --git a/code/modules/roguetown/roguejobs/cook/tools/pot.dm b/code/modules/roguetown/roguejobs/cook/tools/pot.dm index d265ebb7fd..a4e154e5ae 100644 --- a/code/modules/roguetown/roguejobs/cook/tools/pot.dm +++ b/code/modules/roguetown/roguejobs/cook/tools/pot.dm @@ -44,3 +44,38 @@ name = "stone pot" desc = "A pot made out of stone. It can hold less than a metal pot." volume = 99 // 99 is the max volume for a stone pot + +/obj/item/reagent_containers/glass/bucket/pot/copper + name = "copper pot" + desc = "A pot made out of copper. It can hold a lot of liquid." + icon_state = "pote_copper" + +/obj/item/reagent_containers/glass/bucket/pot/teapot + name = "teapot" + desc = "A teapot made out of ceramic. Used to serve tea, it can hold a lot of liquid. It can still spill, however." + dropshrink = 0.7 + icon_state = "teapot" + sellprice = 20 + +/obj/item/reagent_containers/glass/bucket/pot/teapot/examine() + . = ..() + . += span_info("It can be brushed with a dye brush to glaze it.") + +/obj/item/reagent_containers/glass/bucket/pot/teapot/attackby(obj/item/I, mob/living/carbon/human/user) + if(istype(I, /obj/item/dye_brush)) + if(reagents.total_volume) + to_chat(user, span_notice("I can't glaze the teapot while it has liquid in it.")) + return + if(do_after(user, 3 SECONDS, target = src)) + to_chat(user, span_notice("I glaze the teapot with the dye brush.")) + new /obj/item/reagent_containers/glass/bucket/pot/teapot/fancy(get_turf(src)) + qdel(src) + return + . = ..() + +/obj/item/reagent_containers/glass/bucket/pot/teapot/fancy + icon_state = "teapot_fancy" + sellprice = 24 + +/obj/item/reagent_containers/glass/bucket/pot/teapot/update_icon(dont_fill=FALSE) + return FALSE // There's no filling for teapot diff --git a/code/modules/roguetown/roguejobs/gravedigger/hole.dm b/code/modules/roguetown/roguejobs/gravedigger/hole.dm index b03355dd2a..885063234d 100644 --- a/code/modules/roguetown/roguejobs/gravedigger/hole.dm +++ b/code/modules/roguetown/roguejobs/gravedigger/hole.dm @@ -287,6 +287,10 @@ if(!(locate(/obj/item/natural/stone) in T)) if(prob(23)) new /obj/item/natural/stone(T) + else + if(!(locate(/obj/item/natural/clay) in T)) + if(prob(40)) + new /obj/item/natural/clay(T) return ..() /obj/structure/closet/dirthole/Destroy() diff --git a/code/modules/roguetown/roguestock/import.dm b/code/modules/roguetown/roguestock/import.dm index 313801ce1b..46a009ad8d 100644 --- a/code/modules/roguetown/roguestock/import.dm +++ b/code/modules/roguetown/roguestock/import.dm @@ -222,7 +222,7 @@ /obj/structure/closet/crate/chest/steward/blacksmith/Initialize() . = ..() - new /obj/item/rogueweapon/hammer(src) + new /obj/item/rogueweapon/hammer/iron(src) new /obj/item/rogueweapon/tongs(src) new /obj/item/natural/stone(src) new /obj/item/natural/stone(src) @@ -238,9 +238,33 @@ new /obj/item/roguebin(src) new /obj/item/reagent_containers/glass/bucket/wooden(src) +/datum/roguestock/import/craftsman + name = "Craftsman Crate" + desc = "Handsaw, chisel, hammer." + item_type = /obj/structure/closet/crate/chest/steward/craftsman + export_price = 60 + importexport_amt = 1 +/obj/structure/closet/crate/chest/steward/craftsman/Initialize() + . = ..() + new /obj/item/rogueweapon/hammer/wood(src) + new /obj/item/rogueweapon/chisel(src) + new /obj/item/rogueweapon/handsaw(src) + +/datum/roguestock/import/glasscrate + name = "Glass Crate" + desc = "A crate full of glass for windows, repairs, and works of art.." + item_type = /obj/structure/closet/crate/chest/steward/glasscrate + export_price = 150 + importexport_amt = 1 - +/obj/structure/closet/crate/chest/steward/glasscrate/Initialize() + . = ..() + new /obj/item/natural/glass(src) + new /obj/item/natural/glass(src) + new /obj/item/natural/glass(src) + new /obj/item/natural/glass(src) + new /obj/item/natural/glass(src) diff --git a/code/modules/roguetown/roguestock/stockpile_food.dm b/code/modules/roguetown/roguestock/stockpile_food.dm index afdb23825b..d547c3e350 100644 --- a/code/modules/roguetown/roguestock/stockpile_food.dm +++ b/code/modules/roguetown/roguestock/stockpile_food.dm @@ -255,3 +255,55 @@ importexport_amt = 10 passive_generation = 2 category = "Foodstuffs" + +/datum/roguestock/stockpile/poppy + name = "Poppy" + desc = "A seed with a sedative effect." + item_type = /obj/item/reagent_containers/food/snacks/grown/rogue/poppy + held_items = list(0, 0) + payout_price = 4 + withdraw_price = 5 + transport_fee = 1 + export_price = 3 + importexport_amt = 10 + passive_generation = 2 + category = "Foodstuffs" + +/datum/roguestock/stockpile/rocknut + name = "Rocknut" + desc = "A nut with mild stimulant properties." + item_type = /obj/item/reagent_containers/food/snacks/grown/nut + held_items = list(0, 0) + payout_price = 3 + withdraw_price = 4 + transport_fee = 1 + export_price = 3 + importexport_amt = 10 + passive_generation = 2 + category = "Foodstuffs" + +/datum/roguestock/stockpile/coffee + name = "Coffee Beans" + desc = "The seed of the coffee plant, used to make a stimulating drink." + item_type = /obj/item/reagent_containers/food/snacks/grown/coffeebeans + held_items = list(0, 0) + payout_price = 3 + withdraw_price = 4 + transport_fee = 1 + export_price = 3 + importexport_amt = 10 + passive_generation = 2 + category = "Foodstuffs" + +/datum/roguestock/stockpile/tea + name = "Dried Tea Leaves" + desc = "Dried tea leaves from the tea plant. Can be grounded and brewed to make tea." + item_type = /obj/item/reagent_containers/food/snacks/grown/rogue/tealeaves_dry + held_items = list(0, 0) + payout_price = 3 + withdraw_price = 4 + transport_fee = 1 + export_price = 3 + importexport_amt = 10 + passive_generation = 2 + category = "Foodstuffs" diff --git a/code/modules/roguetown/roguestock/stockpile_rawmat.dm b/code/modules/roguetown/roguestock/stockpile_rawmat.dm index 3fd8d87beb..a12b118337 100644 --- a/code/modules/roguetown/roguestock/stockpile_rawmat.dm +++ b/code/modules/roguetown/roguestock/stockpile_rawmat.dm @@ -22,6 +22,18 @@ importexport_amt = 10 passive_generation = 2 +/datum/roguestock/stockpile/glass + name = "Glass Batch" //'Raw' glass + desc = "A mixture of finely ground materials that is used to make glass." + item_type = /obj/item/natural/clay/glassbatch + held_items = list(5, 0) + payout_price = 4 + withdraw_price = 7 + transport_fee = 5 + export_price = 5 + importexport_amt = 10 + passive_generation = 3 + /datum/roguestock/stockpile/iron name = "Raw Iron" desc = "Chunks of iron used for smithing." diff --git a/code/modules/surgery/bodyparts/bodypart_wounds.dm b/code/modules/surgery/bodyparts/bodypart_wounds.dm index 68c1e0a5eb..394c230cb5 100644 --- a/code/modules/surgery/bodyparts/bodypart_wounds.dm +++ b/code/modules/surgery/bodyparts/bodypart_wounds.dm @@ -302,7 +302,7 @@ if(HAS_TRAIT(src, TRAIT_BRITTLE)) used += 20 if(user) - if(istype(user.rmb_intent, /datum/rmb_intent/strong)) + if(istype(user.rmb_intent, /datum/rmb_intent/strong) || (user.m_intent == MOVE_INTENT_SNEAK)) used += 10 if(!owner.stat && !resistance && (zone_precise in knockout_zones) && (bclass != BCLASS_CHOP) && prob(used)) owner.next_attack_msg += " Critical hit! [owner] is knocked out[from_behind ? " FROM BEHIND" : ""]!" diff --git a/icons/mob/roguehud.dmi b/icons/mob/roguehud.dmi index a4df87f8de..703c0c3ee6 100644 Binary files a/icons/mob/roguehud.dmi and b/icons/mob/roguehud.dmi differ diff --git a/icons/roguetown/items/AP produce.dmi b/icons/roguetown/items/AP produce.dmi new file mode 100644 index 0000000000..843b02b3cf Binary files /dev/null and b/icons/roguetown/items/AP produce.dmi differ diff --git a/icons/roguetown/items/cooking.dmi b/icons/roguetown/items/cooking.dmi index 57b7698a37..04a4c0dc8b 100644 Binary files a/icons/roguetown/items/cooking.dmi and b/icons/roguetown/items/cooking.dmi differ diff --git a/icons/roguetown/items/crafting.dmi b/icons/roguetown/items/crafting.dmi new file mode 100644 index 0000000000..19b3ba510e Binary files /dev/null and b/icons/roguetown/items/crafting.dmi differ diff --git a/icons/roguetown/items/lighting.dmi b/icons/roguetown/items/lighting.dmi index 3ec813edc0..1b1e703778 100644 Binary files a/icons/roguetown/items/lighting.dmi and b/icons/roguetown/items/lighting.dmi differ diff --git a/icons/roguetown/items/natural.dmi b/icons/roguetown/items/natural.dmi index f34e7796a4..d7fea8fa83 100644 Binary files a/icons/roguetown/items/natural.dmi and b/icons/roguetown/items/natural.dmi differ diff --git a/icons/roguetown/items/ore.dmi b/icons/roguetown/items/ore.dmi index 6d2838dc7c..bbea5cb1f3 100644 Binary files a/icons/roguetown/items/ore.dmi and b/icons/roguetown/items/ore.dmi differ diff --git a/icons/roguetown/items/produce.dmi b/icons/roguetown/items/produce.dmi index ebbe117352..18eea1dc59 100644 Binary files a/icons/roguetown/items/produce.dmi and b/icons/roguetown/items/produce.dmi differ diff --git a/icons/roguetown/misc/AP crops.dmi b/icons/roguetown/misc/AP crops.dmi new file mode 100644 index 0000000000..07776d8c39 Binary files /dev/null and b/icons/roguetown/misc/AP crops.dmi differ diff --git a/icons/roguetown/misc/crops.dmi b/icons/roguetown/misc/crops.dmi index fc3bde85d0..912245fa3b 100644 Binary files a/icons/roguetown/misc/crops.dmi and b/icons/roguetown/misc/crops.dmi differ diff --git a/icons/roguetown/misc/structure.dmi b/icons/roguetown/misc/structure.dmi index a8df1520bd..0c43ba6616 100644 Binary files a/icons/roguetown/misc/structure.dmi and b/icons/roguetown/misc/structure.dmi differ diff --git a/icons/roguetown/weapons/ammo.dmi b/icons/roguetown/weapons/ammo.dmi index 1f968e3087..555a567933 100644 Binary files a/icons/roguetown/weapons/ammo.dmi and b/icons/roguetown/weapons/ammo.dmi differ diff --git a/icons/roguetown/weapons/tools.dmi b/icons/roguetown/weapons/tools.dmi index e19764d7b0..805d7f67ae 100644 Binary files a/icons/roguetown/weapons/tools.dmi and b/icons/roguetown/weapons/tools.dmi differ diff --git a/icons/turf/roguefloor.dmi b/icons/turf/roguefloor.dmi index c8bdfc7f7d..97ad67a29c 100644 Binary files a/icons/turf/roguefloor.dmi and b/icons/turf/roguefloor.dmi differ diff --git a/icons/turf/walls/brick_wall.dmi b/icons/turf/walls/brick_wall.dmi new file mode 100644 index 0000000000..dbe2e06f71 Binary files /dev/null and b/icons/turf/walls/brick_wall.dmi differ diff --git a/icons/turf/walls/stonebrick.dmi b/icons/turf/walls/stonebrick.dmi index c092d3d5ad..9f24fa317d 100644 Binary files a/icons/turf/walls/stonebrick.dmi and b/icons/turf/walls/stonebrick.dmi differ diff --git a/modular/Neu_Food/code/NeuFood.dm b/modular/Neu_Food/code/NeuFood.dm index 10e78f275b..e5fd522a27 100644 --- a/modular/Neu_Food/code/NeuFood.dm +++ b/modular/Neu_Food/code/NeuFood.dm @@ -102,6 +102,20 @@ desc = "Traditional utensil for shoveling soup into your mouth, now made with iron for that metallic taste!" icon_state = "spoon_iron" +/obj/item/kitchen/spoon/tin + name = "pewter spoon" + icon_state = "spoon_iron" + +/obj/item/kitchen/spoon/gold + name = "gold spoon" + icon_state = "spoon_gold" + sellprice = 10 + +/obj/item/kitchen/spoon/silver + name = "silver spoon" + icon_state = "spoon_silver" + sellprice = 20 + /obj/item/kitchen/fork name = "wooden fork" desc = "Traditional utensil for stabbing your food in order to shove it into your mouth." @@ -115,6 +129,20 @@ desc = "Traditional utensil for stabbing your food, now made with iron for extra stabbiness!" icon_state = "fork_iron" +/obj/item/kitchen/fork/tin + name = "pewter fork" + icon_state = "fork_iron" + +/obj/item/kitchen/fork/gold + name = "gold fork" + icon_state = "fork_gold" + sellprice = 10 + +/obj/item/kitchen/fork/silver + name = "silver fork" + icon_state = "fork_silver" + sellprice = 20 + /obj/item/kitchen/rollingpin icon = 'modular/Neu_Food/icons/cooking.dmi' lefthand_file = 'modular/Neu_Food/icons/food_lefthand.dmi' @@ -154,8 +182,19 @@ var/in_use // so you can't spam eating with spoon /obj/item/reagent_containers/glass/bowl/iron + name = "iron bowl" icon_state = "bowl_iron" +/obj/item/reagent_containers/glass/bowl/gold + name = "gold bowl" + icon_state = "bowl_gold" + sellprice = 40 + +/obj/item/reagent_containers/glass/bowl/silver + name = "silver bowl" + icon_state = "bowl_silver" + sellprice = 60 + /obj/item/reagent_containers/glass/bowl/update_icon() cut_overlays() if(reagents) @@ -252,7 +291,7 @@ /obj/item/reagent_containers/food/snacks/rogue/wienercabbage = "wienercabbage_platter", /obj/item/reagent_containers/food/snacks/rogue/wienerpotato = "wienerpotato_platter", /obj/item/reagent_containers/food/snacks/rogue/wienerpotatonions = "wpotonion_platter", - ) + ) /obj/item/cooking/platter @@ -269,19 +308,42 @@ grid_height = 32 var/datum/platter_sprites/sprite_choice = new /datum/platter_sprites/ +/obj/item/cooking/platter/copper + name = "copper platter" + desc = "A platter made from a sheet of copper. Known to impart a metallic taste when combined with acidic food." + icon_state = "platter_copper" + resistance_flags = FIRE_PROOF + drop_sound = 'sound/foley/dropsound/armor_drop.ogg' + sellprice = 5 /obj/item/cooking/platter/pewter name = "pewter platter" desc = "Made from an alloy of tin and mercury. Rolls off the tongue quite nicely." - icon_state = "p_platter" + icon_state = "platter_tin" sellprice = 10 /obj/item/cooking/platter/silver name = "silver platter" desc = "Made from polished silver. Fancy!" - icon_state = "s_platter" + icon_state = "platter_silver" sellprice = 30 +/obj/item/cooking/platter/gold + name = "gold platter" + desc = "A fancy gold plate often used by the nobility as a symbol of class." + icon_state = "platter_gold" + resistance_flags = FIRE_PROOF + drop_sound = 'sound/foley/dropsound/armor_drop.ogg' + sellprice = 25 + smeltresult = /obj/item/ingot/gold + +/obj/item/tablecloth/silk + name = "silk tablecloth" + desc = "A fancy silk tablecloth, laid out for diplomatic feasts and other important events." + icon = 'modular/Neu_Food/icons/cooking.dmi' + icon_state = "tablecloth_silk" + sellprice = 40 + w_class = WEIGHT_CLASS_NORMAL /* * * * * * * * * * * * * * * * * * @@ -367,11 +429,9 @@ /* -------------- RICE ----------------- */ /obj/item/reagent_containers/food/snacks/grown/rice - desc = "" - gender = PLURAL list_reagents = list(/datum/reagent/floure = 1) volume = 1 - sellprice = 0 + sellprice = 3 var/water_added /obj/item/reagent_containers/food/snacks/grown/rice/attackby(obj/item/I, mob/living/user, params) diff --git a/modular/Neu_Food/code/drinks/drinks_reagents.dm b/modular/Neu_Food/code/drinks/drinks_reagents.dm new file mode 100644 index 0000000000..b1ee7354e2 --- /dev/null +++ b/modular/Neu_Food/code/drinks/drinks_reagents.dm @@ -0,0 +1,60 @@ +/datum/reagent/water/rosewater + name = "Rose Tea" + description = "Steeped rose petals with mild regeneration." + reagent_state = LIQUID + color = "#f398b6" + taste_description = "floral sweetness" + overdose_threshold = 0 + metabolization_rate = REAGENTS_METABOLISM + alpha = 173 + +/datum/reagent/water/rosewater/on_mob_life(mob/living/carbon/M) + . = ..() + if (M.mob_biotypes & MOB_BEAST) + M.adjustFireLoss(0.5*REM) + else + M.adjustBruteLoss(-0.1*REM) + M.adjustFireLoss(-0.1*REM) + M.adjustOxyLoss(-0.1, 0) + var/list/our_wounds = M.get_wounds() + if (LAZYLEN(our_wounds)) + var/upd = M.heal_wounds(1) + if (upd) + M.update_damage_overlays() + +// Reagents system don't have the idea of solute and solvent so we need a type for each +/datum/reagent/consumable/caffeine/ + name = "Caffeine" + description = "Why are you seeing this?" + hydration_factor = 5 + overdose_threshold = 60 + +/datum/reagent/consumable/caffeine/on_mob_life(mob/living/carbon/M) + . = ..() + if(!HAS_TRAIT(M,TRAIT_NOROGSTAM)) + M.rogstam_add(5) // 1/6th of mana pot + M.apply_status_effect(/datum/status_effect/buff/vigorized) + +/datum/reagent/consumable/caffeine/overdose_process(mob/living/carbon/M) + . = ..() + M.Jitter(2) + if(prob(5)) + M.heart_attack() + +/datum/reagent/consumable/caffeine/coffee + name = "Coffee" + description = "Coffee beans brewed into a hot drink. With a hint of bitterness. Rejuvenating." + reagent_state = LIQUID + color = "#482000" + taste_description = "caramelized bitterness" // coffee has so many flavors I am going for one + metabolization_rate = REAGENTS_METABOLISM + alpha = 173 + +/datum/reagent/consumable/caffeine/tea + name = "Tea" + description = "Tea leaves brewed into a hot drink. Slight hint of bitterness. Smooth." + reagent_state = LIQUID + color = "#508141" // Deeper green to make it look better + taste_description = "smooth grassiness" // Yeah, uh. + metabolization_rate = REAGENTS_METABOLISM + alpha = 173 diff --git a/modular/Neu_Food/code/drinks/tea_coffee_drinks.dm b/modular/Neu_Food/code/drinks/tea_coffee_drinks.dm new file mode 100644 index 0000000000..b52aeefda0 --- /dev/null +++ b/modular/Neu_Food/code/drinks/tea_coffee_drinks.dm @@ -0,0 +1,70 @@ +// If there's ever more than 10 drinks maybe split this file OK? +/obj/item/reagent_containers/food/snacks/grown/rogue/rosa_petals + name = "fresh rosa petals" + desc = "Crushed rosa petals. Edible." + icon = 'modular/Neu_Food/icons/drinks.dmi' + icon_state = "rosamatter" + tastes = list("mild sweetness" = 1) + bitesize = 1 + list_reagents = list(/datum/reagent/consumable/nutriment = 2) + rotprocess = null + w_class = WEIGHT_CLASS_TINY + +/obj/item/reagent_containers/food/snacks/grown/rogue/rosa_petals_dried + name = "dried rosa petals" + desc = "Dried rosa petals, can be used to brew tea." + icon = 'modular/Neu_Food/icons/drinks.dmi' + icon_state = "rosamatter_dried" + tastes = list("mild sweetness" = 1) + bitesize = 1 + list_reagents = list(/datum/reagent/consumable/nutriment = 2) + rotprocess = null + w_class = WEIGHT_CLASS_TINY + +/obj/item/reagent_containers/food/snacks/grown/coffeebeans + name = "coffee beans" + desc = "Freshly extracted coffee beans, with a hard texture. Should be roasted first." + icon = 'modular/Neu_Food/icons/drinks.dmi' + icon_state = "coffeebeans" + tastes = list("unpleasant bitterness" = 1) + bitesize = 1 + seed = /obj/item/seeds/coffee + list_reagents = list(/datum/reagent/consumable/nutriment = 1) + cooked_type = /obj/item/reagent_containers/food/snacks/grown/coffeebeansroasted + rotprocess = null + w_class = WEIGHT_CLASS_TINY + +/obj/item/reagent_containers/food/snacks/grown/coffeebeansroasted + name = "roasted coffee beans" + desc = "Roasted coffee beans, with a much deeper flavor. Can be used to brew coffee. The variant grown in Azuria can be brewed without being ground." + icon = 'modular/Neu_Food/icons/drinks.dmi' + icon_state = "coffeebeans_roasted" + tastes = list("rich caramel smoothness" = 1) + bitesize = 1 + list_reagents = list(/datum/reagent/consumable/nutriment = 2) + rotprocess = null + w_class = WEIGHT_CLASS_TINY + +/obj/item/reagent_containers/food/snacks/grown/rogue/tealeaves_dry + name = "dried tea leaves" + desc = "Dried tea leaves. Edible. Seeds can be extracted from them. Needs to be processed in a millstone." + icon = 'modular/Neu_Food/icons/drinks.dmi' + icon_state = "teadry" + tastes = list("bitterness" = 1) + seed = /obj/item/seeds/tea + bitesize = 1 + list_reagents = list(/datum/reagent/consumable/nutriment = 2) + rotprocess = null + w_class = WEIGHT_CLASS_TINY + mill_result = /obj/item/reagent_containers/food/snacks/grown/rogue/tealeaves_ground + +/obj/item/reagent_containers/food/snacks/grown/rogue/tealeaves_ground + name = "ground tea leaves" + desc = "Ground tea leaves that can be used to brew tea" + icon = 'modular/Neu_Food/icons/drinks.dmi' + icon_state = "teaground" + tastes = list("bitterness" = 1) + bitesize = 1 + list_reagents = list(/datum/reagent/consumable/nutriment = 2) + rotprocess = null + w_class = WEIGHT_CLASS_TINY diff --git a/modular/Neu_Food/code/recipes/stew_recipes.dm b/modular/Neu_Food/code/recipes/stew_recipes.dm index fdd2623371..ee8c6fe592 100644 --- a/modular/Neu_Food/code/recipes/stew_recipes.dm +++ b/modular/Neu_Food/code/recipes/stew_recipes.dm @@ -59,11 +59,6 @@ inputs = list(/obj/item/reagent_containers/food/snacks/rogue/veg/carrot_sliced) output = /datum/reagent/consumable/soup/stew/carrot -// /datum/stew_recipe/rose_tea -// inputs = list(/obj/item/reagent_containers/food/snacks/grown/rogue/rosa_petals_dried) -// output = /datum/reagent/water/rosewater -// cooktime = STEW_COOKING_TIME / 4 // Ultra fast - // Yet another order issue - specific berries must go before generic. Sigh. /datum/stew_recipe/berry_poisoned inputs = list(/obj/item/reagent_containers/food/snacks/grown/berries/rogue/poison) @@ -73,4 +68,20 @@ inputs = list(/obj/item/reagent_containers/food/snacks/grown/berries/rogue) output = /datum/reagent/consumable/soup/stew/berry +// DRINKS +/datum/stew_recipe/rose_tea + inputs = list(/obj/item/reagent_containers/food/snacks/grown/rogue/rosa_petals_dried) + output = /datum/reagent/water/rosewater + cooktime = STEW_COOKING_TIME / 4 // Ultra fast + +/datum/stew_recipe/coffee + inputs = list(/obj/item/reagent_containers/food/snacks/grown/coffeebeansroasted) + output = /datum/reagent/consumable/caffeine/coffee + cooktime = STEW_COOKING_TIME / 4 + +/datum/stew_recipe/tea + inputs = list(/obj/item/reagent_containers/food/snacks/grown/) + output = /datum/reagent/consumable/caffeine/tea + cooktime = STEW_COOKING_TIME / 4 + #undef STEW_COOKING_TIME diff --git a/modular/Neu_Food/icons/buns.dmi b/modular/Neu_Food/icons/buns.dmi new file mode 100644 index 0000000000..f46ef7d271 Binary files /dev/null and b/modular/Neu_Food/icons/buns.dmi differ diff --git a/modular/Neu_Food/icons/cooking.dmi b/modular/Neu_Food/icons/cooking.dmi index 7e0944c47d..d187bbba7e 100644 Binary files a/modular/Neu_Food/icons/cooking.dmi and b/modular/Neu_Food/icons/cooking.dmi differ diff --git a/modular/Neu_Food/icons/cup.dmi b/modular/Neu_Food/icons/cup.dmi new file mode 100644 index 0000000000..4379a1b928 Binary files /dev/null and b/modular/Neu_Food/icons/cup.dmi differ diff --git a/modular/Neu_Food/icons/drinks.dmi b/modular/Neu_Food/icons/drinks.dmi new file mode 100644 index 0000000000..7335c25094 Binary files /dev/null and b/modular/Neu_Food/icons/drinks.dmi differ diff --git a/roguetown.dme b/roguetown.dme index 647b927be9..16bca693ce 100644 --- a/roguetown.dme +++ b/roguetown.dme @@ -895,6 +895,7 @@ #include "code\game\objects\items\rogueitems\bombs.dm" #include "code\game\objects\items\rogueitems\bouquet.dm" #include "code\game\objects\items\rogueitems\broom.dm" +#include "code\game\objects\items\rogueitems\ceramics.dm" #include "code\game\objects\items\rogueitems\coins.dm" #include "code\game\objects\items\rogueitems\cup.dm" #include "code\game\objects\items\rogueitems\devices.dm" @@ -921,6 +922,7 @@ #include "code\game\objects\items\rogueitems\books\religious.dm" #include "code\game\objects\items\rogueitems\natural\animals.dm" #include "code\game\objects\items\rogueitems\natural\ash.dm" +#include "code\game\objects\items\rogueitems\natural\brick.dm" #include "code\game\objects\items\rogueitems\natural\clothfibersthorn.dm" #include "code\game\objects\items\rogueitems\natural\dirtclod.dm" #include "code\game\objects\items\rogueitems\natural\feather.dm" @@ -1375,6 +1377,7 @@ #include "code\modules\jobs\job_types\roguetown\external\adventurer\types\pilgrim\miner.dm" #include "code\modules\jobs\job_types\roguetown\external\adventurer\types\pilgrim\minstrel.dm" #include "code\modules\jobs\job_types\roguetown\external\adventurer\types\pilgrim\peasant.dm" +#include "code\modules\jobs\job_types\roguetown\external\adventurer\types\pilgrim\potter.dm" #include "code\modules\jobs\job_types\roguetown\external\adventurer\types\pilgrim\seamstress.dm" #include "code\modules\jobs\job_types\roguetown\external\adventurer\types\pilgrim\tbutcher.dm" #include "code\modules\jobs\job_types\roguetown\external\adventurer\types\pilgrim\thug.dm" @@ -1808,6 +1811,7 @@ #include "code\modules\roguetown\mapgen\underdark.dm" #include "code\modules\roguetown\roguecrafting\alchemy.dm" #include "code\modules\roguetown\roguecrafting\carpentry.dm" +#include "code\modules\roguetown\roguecrafting\ceramics.dm" #include "code\modules\roguetown\roguecrafting\cooking.dm" #include "code\modules\roguetown\roguecrafting\engineering.dm" #include "code\modules\roguetown\roguecrafting\farming.dm" @@ -1841,6 +1845,7 @@ #include "code\modules\roguetown\roguejobs\alchemist\container.dm" #include "code\modules\roguetown\roguejobs\alchemist\herb_flora.dm" #include "code\modules\roguetown\roguejobs\alchemist\herb_seeds.dm" +#include "code\modules\roguetown\roguejobs\artificer\handsaw_chisel.dm" #include "code\modules\roguetown\roguejobs\blacksmith\anvil.dm" #include "code\modules\roguetown\roguejobs\blacksmith\forge.dm" #include "code\modules\roguetown\roguejobs\blacksmith\grindwheel.dm" @@ -1852,6 +1857,9 @@ #include "code\modules\roguetown\roguejobs\blacksmith\anvil_recipes\tools.dm" #include "code\modules\roguetown\roguejobs\blacksmith\anvil_recipes\valuables.dm" #include "code\modules\roguetown\roguejobs\blacksmith\anvil_recipes\weapons.dm" +#include "code\modules\roguetown\roguejobs\ceramicist\clay.dm" +#include "code\modules\roguetown\roguejobs\ceramicist\items.dm" +#include "code\modules\roguetown\roguejobs\ceramicist\potterwheel.dm" #include "code\modules\roguetown\roguejobs\cook\tools\cooktools.dm" #include "code\modules\roguetown\roguejobs\cook\tools\grinding.dm" #include "code\modules\roguetown\roguejobs\cook\tools\oven.dm" @@ -1892,8 +1900,6 @@ #include "code\modules\roguetown\roguemachine\titan.dm" #include "code\modules\roguetown\roguemachine\vendor.dm" #include "code\modules\roguetown\roguemachine\withdraw.dm" -#include "code\modules\roguetown\roguemachine\stockpile\stockpile.dm" -#include "code\modules\roguetown\roguemachine\stockpile\withdraw_tab.dm" #include "code\modules\roguetown\roguemachine\questing\questing.dm" #include "code\modules\roguetown\roguemachine\questing\questing_components.dm" #include "code\modules\roguetown\roguemachine\questing\questing_datum.dm" @@ -1907,10 +1913,12 @@ #include "code\modules\roguetown\roguemachine\questing\guild_upgrades\upgrade_types\convenience.dm" #include "code\modules\roguetown\roguemachine\questing\guild_upgrades\upgrade_types\storage.dm" #include "code\modules\roguetown\roguemachine\questing\guild_upgrades\upgrade_types\utility.dm" +#include "code\modules\roguetown\roguemachine\steward\steward.dm" +#include "code\modules\roguetown\roguemachine\stockpile\stockpile.dm" +#include "code\modules\roguetown\roguemachine\stockpile\withdraw_tab.dm" #include "code\modules\roguetown\roguestock\_roguestock.dm" #include "code\modules\roguetown\roguestock\bounties.dm" #include "code\modules\roguetown\roguestock\import.dm" -#include "code\modules\roguetown\roguemachine\steward\steward.dm" #include "code\modules\roguetown\roguestock\stockpile_food.dm" #include "code\modules\roguetown\roguestock\stockpile_rawmat.dm" #include "code\modules\roguetown\wild_magic\code\effects.dm" @@ -2172,7 +2180,9 @@ #include "modular\Neu_Food\code\cooked\NeuFood_meals.dm" #include "modular\Neu_Food\code\cooked\NeuFood_pies.dm" #include "modular\Neu_Food\code\cooked\NeuFood_snacks.dm" +#include "modular\Neu_Food\code\drinks\drinks_reagents.dm" #include "modular\Neu_Food\code\drinks\stew.dm" +#include "modular\Neu_Food\code\drinks\tea_coffee_drinks.dm" #include "modular\Neu_Food\code\raw\NeuFood_dough.dm" #include "modular\Neu_Food\code\raw\NeuFood_meat.dm" #include "modular\Neu_Food\code\raw\NeuFood_processed.dm" diff --git a/sound/foley/brickdrop.ogg b/sound/foley/brickdrop.ogg new file mode 100644 index 0000000000..f8bf598629 Binary files /dev/null and b/sound/foley/brickdrop.ogg differ diff --git a/sound/foley/glass_clatter.ogg b/sound/foley/glass_clatter.ogg new file mode 100644 index 0000000000..80d25f4a89 Binary files /dev/null and b/sound/foley/glass_clatter.ogg differ diff --git a/sound/foley/glassbreak.ogg b/sound/foley/glassbreak.ogg new file mode 100644 index 0000000000..4f46dd1a1c Binary files /dev/null and b/sound/foley/glassbreak.ogg differ diff --git a/sound/foley/sawing.ogg b/sound/foley/sawing.ogg new file mode 100644 index 0000000000..bebbff622b Binary files /dev/null and b/sound/foley/sawing.ogg differ diff --git a/sound/foley/stone_scrape.ogg b/sound/foley/stone_scrape.ogg new file mode 100644 index 0000000000..d6eb5d3fd6 Binary files /dev/null and b/sound/foley/stone_scrape.ogg differ diff --git a/sound/foley/wood_cutting.ogg b/sound/foley/wood_cutting.ogg new file mode 100644 index 0000000000..db6b74dac6 Binary files /dev/null and b/sound/foley/wood_cutting.ogg differ