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