diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm index 736cc0dfa45..707cabff31b 100644 --- a/code/datums/components/crafting/crafting.dm +++ b/code/datums/components/crafting/crafting.dm @@ -321,7 +321,12 @@ if(ispath(R.result, /turf)) var/turf/X = T.PlaceOnTop(R.result) if(X) - X.OnCrafted(user.dir, user) + // Caustic Edit - Allows 'diagonal' turfs. Used for roof corners atm + if(R.diagonal) + X.OnCrafted(X.SelectDiagDirection(), user) + else + X.OnCrafted(user.dir, user) + // Caustic Edit end X.add_fingerprint(user) if(R.loud) X.loud_message("Construction sounds can be heard") diff --git a/code/game/objects/items/rogueitems/natural/dirtclod.dm b/code/game/objects/items/rogueitems/natural/dirtclod.dm index 4094a205cfb..5e8ae769469 100644 --- a/code/game/objects/items/rogueitems/natural/dirtclod.dm +++ b/code/game/objects/items/rogueitems/natural/dirtclod.dm @@ -139,3 +139,19 @@ dirtamt = min(dirtamt + 1, 5) return ..() + +// Caustic Edit Start - Allows RMBing dirt piles to take dirt out +/obj/structure/fluff/clodpile/attack_right(mob/user) + if(isliving(user)) + var/mob/living/L = user + if(L.stat != CONSCIOUS) + return + var/obj/item/I = new /obj/item/natural/dirtclod(src) + if(L.put_in_active_hand(I)) + L.visible_message(span_warning("[L] picks up some dirt from the [name].")) + dirtamt-- + if(dirtamt <= 0) + qdel(src) + return + .=..() +// Caustic Edit End diff --git a/code/game/objects/lighting/rogue_fires.dm b/code/game/objects/lighting/rogue_fires.dm index a34523ca25f..5b8a4b58b2d 100644 --- a/code/game/objects/lighting/rogue_fires.dm +++ b/code/game/objects/lighting/rogue_fires.dm @@ -152,6 +152,22 @@ return TRUE return ..() +// Caustic Edit +/obj/machinery/light/rogue/campfire/fireplace/OnCrafted(dirin) + pixel_x = 0 + pixel_y = 0 + switch(dirin) + if(NORTH) + pixel_y = 32 + if(SOUTH) + pixel_y = -32 + if(EAST) + pixel_x = 32 + if(WEST) + pixel_x = -32 + . = ..() +// Caustic Edit End + /obj/machinery/light/rogue/candle name = "candles" desc = "Tiny flames flicker to the slightest breeze and offer enough light to see." @@ -163,6 +179,8 @@ pixel_y = 32 soundloop = null + var/move_on_craft = TRUE // Caustic Edit + /obj/machinery/light/rogue/candle/off name = "candles" desc = "Cold wax sticks in sad half-melted repose. All they need is a spark." @@ -184,15 +202,16 @@ /obj/machinery/light/rogue/candle/OnCrafted(dirin) pixel_x = 0 pixel_y = 0 - switch(dirin) - if(NORTH) - pixel_y = 32 - if(SOUTH) - pixel_y = -32 - if(EAST) - pixel_x = 32 - if(WEST) - pixel_x = -32 + if(move_on_craft) // Caustic Edit. Allows floor candles to not shift 1 tile forwards on crafting + switch(dirin) + if(NORTH) + pixel_y = 32 + if(SOUTH) + pixel_y = -32 + if(EAST) + pixel_x = 32 + if(WEST) + pixel_x = -32 . = ..() /obj/machinery/light/rogue/candle/attack_hand(mob/user) @@ -242,6 +261,8 @@ layer = TABLE_LAYER cookonme = FALSE + move_on_craft = FALSE // Caustic Edit + /obj/machinery/light/rogue/candle/floorcandle/alt icon_state = "floorcandlee1" base_state = "floorcandlee" @@ -270,6 +291,8 @@ plane = GAME_PLANE_UPPER cookonme = FALSE + var/move_on_craft = TRUE // Caustic Edit + //CC Edit: Optimizing torches to only be in SSobj when off a torch holder /obj/machinery/light/rogue/torchholder/Entered(atom/movable/arrived, atom/old_loc) . = ..() @@ -317,6 +340,13 @@ /obj/machinery/light/rogue/torchholder/OnCrafted(dirin, user) dirin = turn(dirin, 180) + // Caustic Edit / Actually offsets crafted sconces + if(move_on_craft) + switch(dirin) + if(SOUTH) + pixel_y = 32 + // Caustic Edit end + . = ..() QDEL_NULL(torchy) on = FALSE set_light(0) diff --git a/code/game/objects/structures/deer_trophy.dm b/code/game/objects/structures/deer_trophy.dm index ca375486fc1..286638094e8 100644 --- a/code/game/objects/structures/deer_trophy.dm +++ b/code/game/objects/structures/deer_trophy.dm @@ -5,3 +5,19 @@ icon_state = "deer_trophy" dir = SOUTH pixel_y = 32 + +// Caustic Edit +/obj/structure/rogue/trophy/deer/OnCrafted(dirin) + pixel_x = 0 + pixel_y = 0 + switch(dirin) + if(NORTH) + pixel_y = 32 + if(SOUTH) + pixel_y = -32 + if(EAST) + pixel_x = 32 + if(WEST) + pixel_x = -32 + . = ..() +// Caustic Edit End diff --git a/code/game/objects/structures/fluff.dm b/code/game/objects/structures/fluff.dm index d6b97bac233..aff390c629e 100644 --- a/code/game/objects/structures/fluff.dm +++ b/code/game/objects/structures/fluff.dm @@ -282,6 +282,13 @@ icon_state = "border" pass_crawl = FALSE +// Caustic edit - These were mapped in as var-edited decals before +/obj/structure/fluff/railing/plat_edge + name = "platform edge" + icon = 'icons/turf/roguefloor.dmi' + icon_state = "borderfall" +// Caustic Edit end + /obj/structure/fluff/railing/fence name = "palisade" desc = "A rudimentary barrier that might keep the monsters at bay." diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 125a1a0d409..671720ace7e 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -646,12 +646,33 @@ climb_offset = 0 pixel_y = 32 + var/move_on_craft = TRUE // Caustic Edit + +// Caustic Edit +/obj/structure/rack/rogue/shelf/OnCrafted(dirin) + if(move_on_craft) + pixel_x = 0 + pixel_y = 0 + switch(dirin) + if(NORTH) + pixel_y = 32 + if(SOUTH) + pixel_y = -32 + if(EAST) + pixel_x = 32 + if(WEST) + pixel_x = -32 + . = ..() +// Caustic Edit end + /obj/structure/rack/rogue/shelf/big icon = 'icons/roguetown/misc/structure.dmi' icon_state = "shelf_big" dir = SOUTH pixel_y = 16 + move_on_craft = FALSE // Caustic Edit + /obj/structure/rack/rogue/shelf/biggest icon_state = "shelf_biggest" pixel_y = 0 @@ -659,6 +680,8 @@ density = TRUE climb_offset = 10 + move_on_craft = FALSE // Caustic Edit + /obj/structure/rack/rogue/shelf/notdense // makes the wall mounted one less weird in a way, got downside of offset when loaded again tho density = FALSE pixel_y = 24 diff --git a/code/game/turfs/open/floor/roguefloor.dm b/code/game/turfs/open/floor/roguefloor.dm index 1b4fbfccfb8..9c26461e0bf 100644 --- a/code/game/turfs/open/floor/roguefloor.dm +++ b/code/game/turfs/open/floor/roguefloor.dm @@ -174,12 +174,60 @@ /turf/open/floor/rogue/rooftop/green/west dir = 8 +// Caustic Edit start +// Proper roofg directionals + +/turf/open/floor/rogue/rooftop/green/northeast + dir = 5 + +/turf/open/floor/rogue/rooftop/green/northwest + dir = 9 + +/turf/open/floor/rogue/rooftop/green/southeast + dir = 6 + +/turf/open/floor/rogue/rooftop/green/southwest + dir = 10 + +/turf/open/floor/rogue/rooftop/green/alt + icon_state = "roofgalt-arw" + +/turf/open/floor/rogue/rooftop/green/alt/Initialize() + . = ..() + icon_state = "roofgalt" + +/turf/open/floor/rogue/rooftop/green/alt/north + dir = 1 + +/turf/open/floor/rogue/rooftop/green/alt/east + dir = 4 + +/turf/open/floor/rogue/rooftop/green/alt/west + dir = 8 + +/turf/open/floor/rogue/rooftop/green/alt/northeast + dir = 5 + +/turf/open/floor/rogue/rooftop/green/alt/northwest + dir = 9 + +/turf/open/floor/rogue/rooftop/green/alt/southeast + dir = 6 + +/turf/open/floor/rogue/rooftop/green/alt/southwest + dir = 10 + +// Old directionals to not break mapping +//TODO: Mapping, change out all the corner turf subtypes for the directional ones above. + /turf/open/floor/rogue/rooftop/green/corner1 - icon_state = "roofgc1-arw" + // icon_state = "roofgc1-arw" // Caustic Edit +/* /turf/open/floor/rogue/rooftop/green/corner1/Initialize() . = ..() icon_state = "roofgc1" +*/ /turf/open/floor/rogue/rooftop/green/corner1/dirone dir = 1 @@ -205,6 +253,7 @@ /turf/open/floor/rogue/rooftop/green/corner1/dirten dir = 10 +// Caustic Edit end - old directionals end /turf/open/floor/rogue/AzureSand name = "sand" diff --git a/code/modules/hotspring/hotspring.dm b/code/modules/hotspring/hotspring.dm index 8215bc7fbdf..861cda3171a 100644 --- a/code/modules/hotspring/hotspring.dm +++ b/code/modules/hotspring/hotspring.dm @@ -201,6 +201,8 @@ torch_off_state = "stonelantern" base_state = "stonelantern" + move_on_craft = FALSE // Caustic Edit + /obj/machinery/light/rogue/torchholder/hotspring/standing name = "standing stone lantern" icon_state = "stonelantern_standing1" diff --git a/code/modules/roguetown/roguecrafting/items.dm b/code/modules/roguetown/roguecrafting/items.dm index d2d104c7cc7..a19668b46ab 100644 --- a/code/modules/roguetown/roguecrafting/items.dm +++ b/code/modules/roguetown/roguecrafting/items.dm @@ -357,6 +357,7 @@ /obj/item/natural/fur = 1 ) craftdiff = 1 + subtype_reqs = TRUE // Caustic Edit. Allows using any furs /datum/crafting_recipe/roguetown/survival/whetstone name = "whetstone" diff --git a/code/modules/roguetown/roguecrafting/sewing.dm b/code/modules/roguetown/roguecrafting/sewing.dm index 9c79f0d3b3d..dca2cf04c28 100644 --- a/code/modules/roguetown/roguecrafting/sewing.dm +++ b/code/modules/roguetown/roguecrafting/sewing.dm @@ -141,18 +141,6 @@ craftdiff = 4 bypass_dupe_test = TRUE -/datum/crafting_recipe/roguetown/sewing/nurseveil - name = "nurse's veil, improvised" - category = "Hats" - result = list(/obj/item/clothing/head/roguetown/veiled) - tools = list(/obj/item/rogueweapon/huntingknife) - reqs = list( - /obj/item/tablecloth/silk = 1 - ) - craftdiff = 1 - sellprice = 5 - bypass_dupe_test = TRUE // Uses the tablecloth, a much rarer and valuable article, in lieu of cloth. - /* craftdif of 1 */ /datum/crafting_recipe/roguetown/sewing/clothgloves @@ -950,7 +938,7 @@ craftdiff = 2 sellprice = 5 -/datum/crafting_recipe/roguetown/sewing/nurseveil +/datum/crafting_recipe/roguetown/sewing/nurseveil_improv // Caustic Edit name = "nurse's veil, improvised" category = "Hats" result = list(/obj/item/clothing/head/roguetown/veiled) diff --git a/code/modules/roguetown/roguecrafting/structure.dm b/code/modules/roguetown/roguecrafting/structure.dm index 28b6d068781..d241a2019ff 100644 --- a/code/modules/roguetown/roguecrafting/structure.dm +++ b/code/modules/roguetown/roguecrafting/structure.dm @@ -1033,7 +1033,7 @@ wallcraft = TRUE /datum/crafting_recipe/roguetown/structure/fireplace - name = "Fireplace (North)" + name = "Fireplace" category = "Misc" result = /obj/machinery/light/rogue/campfire/fireplace reqs = list(/obj/item/grown/log/tree/small = 1, @@ -1235,12 +1235,18 @@ name = "large table" category = "Tables" result = /obj/structure/table/wood/large_table - reqs = list(/obj/item/natural/wood/plank = 2) + reqs = list(/obj/item/natural/wood/plank = 1) verbage_simple = "construct" verbage = "constructs" skillcraft = /datum/skill/craft/carpentry craftdiff = 3 +// Caustic Edit +/datum/crafting_recipe/roguetown/structure/largetable/corner + name = "large table (corner)" + diagonal = TRUE +// Caustic Edit end + /datum/crafting_recipe/roguetown/structure/operatingtable name = "operating table" category = "Beds" @@ -1577,4 +1583,214 @@ verbage = "grinds" craftsound = null +/datum/crafting_recipe/roguetown/structure/furrug + name = "giant fur rug" + category = "Floors" + result = /obj/structure/giantfur + reqs = list(/obj/item/natural/fur = 3) + craftdiff = 0 + subtype_reqs = FALSE // Allows using any furs + +/datum/crafting_recipe/roguetown/structure/furrugsmall + name = "giant fur pelt" + category = "Floors" + result = /obj/structure/giantfur/small + reqs = list(/obj/item/natural/fur = 2) + craftdiff = 0 + subtype_reqs = FALSE // Allows using any furs + +/datum/crafting_recipe/roguetown/structure/floorcandle + name = "floor candles" + category = "Lighting" + result = /obj/machinery/light/rogue/candle/floorcandle + reqs = list(/obj/item/candle/yellow = 1) + verbage_simple = "lay out" + verbage = "lays out" + craftdiff = 0 + ignoredensity = TRUE + +/datum/crafting_recipe/roguetown/structure/floorcandlealt + name = "floor candles (alt)" + category = "Lighting" + result = /obj/machinery/light/rogue/candle/floorcandle/alt + reqs = list(/obj/item/candle/yellow = 1) + verbage_simple = "lay out" + verbage = "lays out" + craftdiff = 0 + ignoredensity = TRUE + +/datum/crafting_recipe/roguetown/structure/floorcandlepink + name = "floor candles (Eoran)" + category = "Lighting" + result = /obj/machinery/light/rogue/candle/floorcandle/pink + reqs = list(/obj/item/candle/eora = 1) + verbage_simple = "lay out" + verbage = "lays out" + craftdiff = 0 + ignoredensity = TRUE + +/datum/crafting_recipe/roguetown/structure/floorcandlepinkalt + name = "floor candles (Eoran) (alt)" + category = "Lighting" + result = /obj/machinery/light/rogue/candle/floorcandle/alt/pink + reqs = list(/obj/item/candle/eora = 1) + verbage_simple = "lay out" + verbage = "lays out" + craftdiff = 0 + ignoredensity = TRUE + +/datum/crafting_recipe/roguetown/structure/closetdark + name = "closet (dark)" + category = "Containers" + result = /obj/structure/closet/crate/roguecloset/dark + reqs = list(/obj/item/natural/wood/plank = 2) + verbage_simple = "construct" + verbage = "constructs" + skillcraft = /datum/skill/craft/carpentry + +/datum/crafting_recipe/roguetown/structure/closetdark + name = "toilet" + result = /obj/structure/toilet + reqs = list(/obj/item/natural/wood/plank = 2) + verbage_simple = "construct" + verbage = "constructs" + skillcraft = /datum/skill/craft/carpentry + +/datum/crafting_recipe/roguetown/structure/shelf + name = "shelf (wall)" + result = /obj/structure/rack/rogue/shelf + reqs = list(/obj/item/natural/wood/plank = 2) + verbage_simple = "build" + verbage = "builds" + skillcraft = /datum/skill/craft/carpentry + wallcraft = TRUE + craftdiff = 1 + ignoredensity = TRUE // So you can put them over tables + +/datum/crafting_recipe/roguetown/structure/shelf_big + name = "shelf (standing small)" + result = /obj/structure/rack/rogue/shelf/big + reqs = list(/obj/item/natural/wood/plank = 1) + verbage_simple = "build" + verbage = "builds" + skillcraft = /datum/skill/craft/carpentry + craftdiff = 1 + ignoredensity = TRUE // So you can put them over tables + +/datum/crafting_recipe/roguetown/structure/shelf_biggest + name = "shelf (standing)" + result = /obj/structure/rack/rogue/shelf/biggest + reqs = list(/obj/item/natural/wood/plank = 2) + verbage_simple = "build" + verbage = "builds" + skillcraft = /datum/skill/craft/carpentry + craftdiff = 1 + +/datum/crafting_recipe/roguetown/structure/drawer + name = "drawer" + result = /obj/structure/closet/crate/drawer + reqs = list(/obj/item/natural/wood/plank = 2) + verbage_simple = "build" + verbage = "builds" + skillcraft = /datum/skill/craft/carpentry + craftdiff = 2 + +/datum/crafting_recipe/roguetown/structure/crate + name = "old crate" + category = "Containers" + result = /obj/structure/closet/crate/chest/old_crate + reqs = list(/obj/item/grown/log/tree/small = 1) + verbage_simple = "construct" + verbage = "constructs" + skillcraft = /datum/skill/craft/carpentry + craftdiff = 0 + +/datum/crafting_recipe/roguetown/structure/chest_sturdy + name = "sturdy chest" + category = "Containers" + result = /obj/structure/closet/crate/chest/neu + reqs = list(/obj/item/natural/wood/plank = 1) + verbage_simple = "construct" + verbage = "constructs" + skillcraft = /datum/skill/craft/carpentry + craftdiff = 1 + +/datum/crafting_recipe/roguetown/structure/chest_sturdy_iron + name = "reinforced chest" + category = "Containers" + result = /obj/structure/closet/crate/chest/neu_iron + reqs = list(/obj/item/natural/wood/plank = 1, /obj/item/scrap = 1) + verbage_simple = "construct" + verbage = "constructs" + skillcraft = /datum/skill/craft/carpentry + craftdiff = 2 + +/datum/crafting_recipe/roguetown/structure/closet_dark + name = "dark closet" + category = "Containers" + result = /obj/structure/closet/crate/roguecloset/dark + reqs = list(/obj/item/natural/wood/plank = 1) + verbage_simple = "construct" + verbage = "constructs" + skillcraft = /datum/skill/craft/carpentry + craftdiff = 1 + +/datum/crafting_recipe/roguetown/structure/closet_alt + name = "closet (alt)" + category = "Containers" + result = /obj/structure/closet/crate/roguecloset/inn + reqs = list(/obj/item/natural/wood/plank = 1) + verbage_simple = "construct" + verbage = "constructs" + skillcraft = /datum/skill/craft/carpentry + craftdiff = 1 + +/datum/crafting_recipe/roguetown/structure/deer_trophy + name = "saiga trophy" + result = /obj/structure/rogue/trophy/deer + reqs = list(/obj/item/natural/wood/plank = 1, /obj/item/natural/head/saiga = 1) + verbage_simple = "build" + verbage = "builds" + skillcraft = /datum/skill/craft/carpentry + wallcraft = TRUE + craftdiff = 1 + +/datum/crafting_recipe/roguetown/structure/chair_plain + name = "wooden chair (plain)" + category = "Seats" + result = /obj/item/chair/rogue/chair3 + reqs = list(/obj/item/natural/wood/plank = 1) + verbage_simple = "construct" + verbage = "constructs" + skillcraft = /datum/skill/craft/carpentry + +/datum/crafting_recipe/roguetown/structure/bench_plain + name = "wooden bench (plain)" + category = "Seats" + result = /obj/structure/chair/bench/church/smallbench + reqs = list(/obj/item/natural/wood/plank = 1) + verbage_simple = "construct" + verbage = "constructs" + skillcraft = /datum/skill/craft/carpentry + +/datum/crafting_recipe/roguetown/structure/bookcase + name = "Bookcase" + result = /obj/structure/bookcase + reqs = list(/obj/item/natural/wood/plank = 2) + verbage_simple = "construct" + verbage = "constructs" + skillcraft = /datum/skill/craft/carpentry + +/datum/crafting_recipe/roguetown/structure/plat_edge + name = "platform edge" + category = "Railings" + result = /obj/structure/fluff/railing/plat_edge + reqs = list(/obj/item/natural/wood/plank = 1) + ontile = TRUE + verbage_simple = "construct" + verbage = "constructs" + skillcraft = /datum/skill/craft/carpentry + buildsame = TRUE + craftdiff = 1 + // Caustic Edit End diff --git a/code/modules/roguetown/roguecrafting/turfs.dm b/code/modules/roguetown/roguecrafting/turfs.dm index fd943fbae41..407e7636686 100644 --- a/code/modules/roguetown/roguecrafting/turfs.dm +++ b/code/modules/roguetown/roguecrafting/turfs.dm @@ -390,7 +390,7 @@ /datum/crafting_recipe/roguetown/turfs/hay name = "floor (hay)" result = /turf/open/floor/rogue/hay - reqs = list(/obj/item/natural/chaff/wheat = 2) + reqs = list(/obj/item/natural/fibers = 2) // Caustic Edit. Using a whole 2 wheat is very expensive for just 1 tile skillcraft = /datum/skill/craft/crafting verbage_simple = "assemble" verbage = "assembles" @@ -519,3 +519,41 @@ reqs = list(/obj/item/grown/log/tree/small = 2, /obj/item/natural/glass = 1, /obj/item/ingot/iron = 1) craftdiff = 3 category = "Windows" + +// Caustic Edit Start + +/datum/crafting_recipe/roguetown/turfs/wood/roofg + name = "wooden shingles" + result = /turf/open/floor/rogue/rooftop/green + reqs = list(/obj/item/natural/wood/plank = 1) + skillcraft = /datum/skill/craft/carpentry + verbage_simple = "construct" + verbage = "constructs" + craftdiff = 3 + category = "Floors" + +/datum/crafting_recipe/roguetown/turfs/wood/roofg/corner + name = "wooden shingles (corner)" + result = /turf/open/floor/rogue/rooftop/green + diagonal = TRUE + +/datum/crafting_recipe/roguetown/turfs/wood/roofg/alt + name = "wooden shingles (alt)" + result = /turf/open/floor/rogue/rooftop/green/alt + +/datum/crafting_recipe/roguetown/turfs/wood/roofg/corner_alt + name = "wooden shingles (alt corner)" + result = /turf/open/floor/rogue/rooftop/green/alt + diagonal = TRUE + +/datum/crafting_recipe/roguetown/turfs/wood/roof + name = "wooden shingles (brown)" // No corner sprites for these ones, sadly + result = /turf/open/floor/rogue/rooftop + reqs = list(/obj/item/natural/wood/plank = 1) + skillcraft = /datum/skill/craft/carpentry + verbage_simple = "construct" + verbage = "constructs" + craftdiff = 3 + category = "Floors" + +// Caustic Edit End diff --git a/icons/turf/roguefloor.dmi b/icons/turf/roguefloor.dmi index d1060d9146f..6ce764ce33f 100644 Binary files a/icons/turf/roguefloor.dmi and b/icons/turf/roguefloor.dmi differ diff --git a/modular_causticcove/code/game/objects/items/rogueitems/plumb.dm b/modular_causticcove/code/game/objects/items/rogueitems/plumb.dm new file mode 100644 index 00000000000..2a1c8723699 --- /dev/null +++ b/modular_causticcove/code/game/objects/items/rogueitems/plumb.dm @@ -0,0 +1,111 @@ +// Plumb! To pixelshift structures + +/obj/item/plumbbob + name = "builder's plumb" + desc = "A traditional plumb, used by carpenters and other makers to ensure that angles are straight, and if not, adjust them as needed.
Traditionally made with lead, this one is made out of cheaper, and equally effective stone attached to a spool of twine." + icon = 'modular_causticcove/icons/obj/plumb.dmi' + icon_state = "plumb_bob" + slot_flags = ITEM_SLOT_HIP + grid_height = 64 + grid_width = 32 + + var/x_change = 0 + var/y_change = 0 + var/layer_change = 2.9 + var/rotation = 0 + + var/list/structure_blacklist = list( + /obj/structure/roguewindow, + /obj/structure/mineral_door, + /obj/structure/bars, + /obj/structure/dungeon_entry, + /obj/structure/far_travel, + /obj/structure/minecart_rail, + /obj/structure/ladder, + /obj/structure/flora/newtree, // Could add the other flora types, but moving flowers can be pretty + /obj/structure/flora/newbranch, + /obj/structure/flora/newleaf, + /obj/structure/table, // Tables and shelves get weird when offset + /obj/structure/rack/rogue/shelf, + /obj/structure/fluff/railing, + ) + +/obj/item/plumbbob/examine(mob/user) + . = ..() + . += span_notice("Current offsets:
X axis - [x_change].
Y axis - [y_change].
Layer - [layer_change].
Rotation - [rotation].
") + +/obj/item/plumbbob/attack_self(mob/living/user) + . = ..() + if(.) + return + var/choice = input(user, "Which parameter?", "DECORATION", name) as null|anything in list("X axis","Y axis","Layer","Rotation") + if(!choice || !user) + return + switch(choice) + if("X axis") + var/offset = input(user, "X AXIS", "DECORATION", 0) as null|num + x_change = offset + if(offset > 32) + x_change = 32 + if(offset < -32) + x_change = -32 + to_chat(user, "The X axis offset has been set to: [x_change]") + if("Y axis") + var/offset = input(user, "Y AXIS", "DECORATION", 0) as null|num + y_change = offset + if(offset > 32) + y_change = 32 + if(offset < -32) + y_change = -32 + to_chat(user, "The Y axis offset has been set to: [y_change]") + if("Layer") + var/offset = input(user, "LAYER", "DECORATION", 2.91) as null|num + layer_change = offset + to_chat(user, "The layer offset has been set to: [layer_change]. (Default is 2.91)") + if("Rotation") + var/offset = input(user, "ROTATION", "DECORATION", 0) as null|num + rotation = offset + to_chat(user, "The rotation offset has been set to: [rotation]") + return + +/obj/item/plumbbob/attack_right(mob/living/user) + . = ..() + x_change = 0 + y_change = 0 + layer_change = 2.9 + rotation = 0 + to_chat(user, "The [name] has been reset.") + return + +/obj/item/plumbbob/attack_obj(obj/target, mob/living/user) + if(is_type_in_list(target,structure_blacklist)) + to_chat(user, "[target.name]'s position cannot be adjusted.") + return + if(do_after(user, 1 SECONDS)) + visible_message("[user] uses the plumb to adjust the [target]'s position.", "I adjust the [target]'s position.") + var/matrix/M = matrix() + M.Turn(rotation) + M.Translate(x_change,y_change) + target.layer = layer_change + target.transform = M + var/was_dense = initial(target.density) + if(was_dense) + if(x_change >= 10 || x_change <= -10 || y_change >= 10 || y_change <= -10) + target.density = FALSE + else + target.density = TRUE + return + else + to_chat(user, "I must stand still to adjust the [target.name]'s position.") + return + + +/datum/crafting_recipe/roguetown/survival/plumbbob + name = "builder's plumb" + category = "Tools" + result = /obj/item/plumbbob + reqs = list( + /obj/item/natural/fibers = 2, + /obj/item/natural/whetstone = 1, + ) + craftdiff = 2 diff --git a/modular_causticcove/icons/obj/plumb.dmi b/modular_causticcove/icons/obj/plumb.dmi new file mode 100644 index 00000000000..422c30d1ef6 Binary files /dev/null and b/modular_causticcove/icons/obj/plumb.dmi differ diff --git a/roguetown.dme b/roguetown.dme index 04fe89223ce..f2e24e55636 100644 --- a/roguetown.dme +++ b/roguetown.dme @@ -3479,6 +3479,7 @@ #include "modular_causticcove\code\game\objects\items\clothes\stockings.dm" #include "modular_causticcove\code\game\objects\items\rogueitems\leash.dm" #include "modular_causticcove\code\game\objects\items\rogueitems\util.dm" +#include "modular_causticcove\code\game\objects\items\rogueitems\plumb.dm" #include "modular_causticcove\code\game\objects\items\weapons\ranged\ammo_bullets.dm" #include "modular_causticcove\code\game\objects\items\weapons\ranged\blackpowder.dm" #include "modular_causticcove\code\game\objects\structures\staircase_helper.dm"