diff --git a/_maps/map_files/roguetown/roguetown.dmm b/_maps/map_files/roguetown/roguetown.dmm index 4e3a56ec5d..5232b8662b 100644 --- a/_maps/map_files/roguetown/roguetown.dmm +++ b/_maps/map_files/roguetown/roguetown.dmm @@ -965,6 +965,10 @@ /obj/item/reagent_containers/glass/cup, /obj/item/reagent_containers/glass/cup/silver, /obj/item/reagent_containers/glass/cup/silver, +/obj/item/reagent_containers/glass/bowl, +/obj/item/reagent_containers/glass/bowl, +/obj/item/kitchen/spoon, +/obj/item/kitchen/spoon, /turf/open/floor/rogue/woodturned, /area/rogue/indoors/town/manor) "beQ" = ( @@ -1025,11 +1029,10 @@ /turf/open/floor/rogue/rooftop, /area/rogue/outdoors/mountains) "bhS" = ( -/obj/machinery/light/rogue/torchholder{ - dir = 4 - }, -/turf/open/floor/rogue/tile/bath, -/area/rogue/under/town/basement) +/obj/structure/rack/rogue, +/obj/item/broom, +/turf/open/floor/rogue/cobblerock, +/area/rogue/outdoors/town) "bhV" = ( /obj/structure/rack/rogue, /obj/item/rogueweapon/huntingknife/cleaver/combat, @@ -1271,9 +1274,9 @@ /turf/open/floor/rogue/tile, /area/rogue/under/town/basement) "bxN" = ( -/obj/structure/rogue/trophy/deer, +/obj/machinery/dye_bin, /turf/open/floor/rogue/wood, -/area/rogue/indoors/town/tavern) +/area/rogue/indoors/town/shop) "bxZ" = ( /obj/structure/closet/crate/roguecloset, /obj/item/clothing/cloak/stabard/guard, @@ -1335,6 +1338,10 @@ "bzO" = ( /turf/open/floor/carpet/royalblack, /area/rogue/indoors/town/garrison) +"bzP" = ( +/obj/structure/roguemachine/vendor/inn, +/turf/closed/wall/mineral/rogue/decowood, +/area/rogue/indoors/town/tavern) "bzQ" = ( /turf/open/water/bath, /area/rogue/indoors/town/bath) @@ -2075,6 +2082,8 @@ /area/rogue/under/town/sewer) "coU" = ( /obj/structure/closet/crate/roguecloset, +/obj/item/clothing/suit/roguetown/shirt/undershirt/random, +/obj/item/clothing/under/roguetown/tights/random, /turf/open/floor/rogue/ruinedwood/turned, /area/rogue/indoors/town) "cpf" = ( @@ -2799,12 +2808,14 @@ "diQ" = ( /obj/structure/closet/crate/chest/wicker, /obj/item/reagent_containers/food/snacks/produce/potato, -/obj/item/reagent_containers/food/snacks/produce/onion, /obj/item/reagent_containers/food/snacks/produce/potato, +/obj/item/reagent_containers/food/snacks/produce/onion, +/obj/item/reagent_containers/food/snacks/produce/onion, /obj/item/reagent_containers/food/snacks/produce/wheat, /obj/item/reagent_containers/food/snacks/produce/wheat, /obj/item/reagent_containers/food/snacks/produce/wheat, /obj/item/reagent_containers/food/snacks/produce/wheat, +/obj/item/reagent_containers/food/snacks/produce/cabbage, /turf/open/floor/rogue/cobble, /area/rogue/under/town/basement) "djr" = ( @@ -3675,6 +3686,8 @@ icon_state = "tablewood2"; dir = 10 }, +/obj/item/rogueweapon/shovel, +/obj/item/rogueweapon/shovel, /turf/open/floor/rogue/dirt, /area/rogue/outdoors/town) "ekE" = ( @@ -3744,6 +3757,7 @@ /obj/item/storage/roguebag{ pixel_y = 22 }, +/obj/item/natural/cloth, /turf/open/floor/rogue/ruinedwood{ icon_state = "weird1" }, @@ -4008,9 +4022,11 @@ /turf/open/transparent/openspace, /area/rogue/outdoors/rtfield) "eDx" = ( -/obj/structure/closet/crate/chest/wicker, -/obj/item/reagent_containers/food/snacks/egg, -/obj/item/reagent_containers/food/snacks/egg, +/obj/structure/rack/rogue, +/obj/item/reagent_containers/glass/cup/wooden, +/obj/item/reagent_containers/glass/cup/wooden, +/obj/item/cooking/pan, +/obj/item/reagent_containers/glass/bucket/pot, /turf/open/floor/rogue/woodturned, /area/rogue/indoors/town) "eDG" = ( @@ -4372,6 +4388,10 @@ /obj/structure/flora/roguetree/burnt, /turf/open/floor/rogue/dirt, /area/rogue/outdoors/mountains) +"eUG" = ( +/obj/item/roguebin/water, +/turf/open/floor/rogue/cobble, +/area/rogue/outdoors/exposed/dwarf) "eVl" = ( /obj/structure/closet/crate/chest/old_crate, /obj/item/natural/chaff/wheat, @@ -5794,6 +5814,10 @@ "gAN" = ( /turf/closed/wall/mineral/rogue/decowood, /area/rogue/indoors/town) +"gAP" = ( +/obj/machinery/light/rogue/wallfire/candle/r, +/turf/open/water/bath, +/area/rogue/under/town/basement) "gBe" = ( /obj/machinery/light/rogue/torchholder{ dir = 8 @@ -8938,6 +8962,7 @@ /obj/item/reagent_containers/food/snacks/produce/potato, /obj/item/reagent_containers/food/snacks/rogue/truffles, /obj/item/reagent_containers/food/snacks/rogue/truffles, +/obj/item/reagent_containers/food/snacks/produce/onion, /turf/open/floor/rogue/woodturned, /area/rogue/indoors/town/manor) "kjw" = ( @@ -10020,6 +10045,7 @@ /obj/item/natural/cloth, /obj/item/natural/cloth, /obj/item/natural/cloth, +/obj/item/broom, /turf/open/floor/rogue/twig, /area/rogue/indoors/town) "lwT" = ( @@ -10546,6 +10572,7 @@ /area/rogue/indoors/town/bath) "mcU" = ( /obj/item/bedsheet/rogue/pelt, +/obj/structure/bed/rogue/mediocre, /turf/open/floor/rogue/wood, /area/rogue/indoors/town/church) "mdb" = ( @@ -10656,9 +10683,9 @@ /turf/open/water/bath, /area/rogue/under/town/basement) "mjs" = ( -/obj/structure/rack/rogue, -/turf/open/floor/rogue/woodturned, -/area/rogue/indoors/town) +/obj/machinery/simple_dye_bin, +/turf/open/floor/rogue/cobble, +/area/rogue/outdoors/exposed/dwarf) "mkh" = ( /turf/open/floor/rogue/cobble, /area/rogue/outdoors/mountains) @@ -11416,6 +11443,7 @@ pixel_y = 8 }, /obj/item/reagent_containers/glass/bucket/wooden, +/obj/item/natural/cloth, /turf/open/floor/rogue/twig, /area/rogue/indoors/town) "mXt" = ( @@ -11504,6 +11532,7 @@ "ncG" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/item/bedsheet/rogue/pelt, +/obj/structure/bed/rogue/mediocre, /turf/open/floor/rogue/wood, /area/rogue/indoors/town/church) "ncH" = ( @@ -12198,6 +12227,10 @@ dir = 8 }, /obj/structure/closet/crate/roguecloset, +/obj/item/clothing/under/roguetown/tights/random, +/obj/item/clothing/under/roguetown/tights/random, +/obj/item/clothing/suit/roguetown/shirt/undershirt/random, +/obj/item/clothing/suit/roguetown/shirt/undershirt/random, /turf/open/floor/rogue/twig, /area/rogue/indoors/town) "nQR" = ( @@ -12515,6 +12548,7 @@ /obj/structure/rack/rogue, /obj/item/clothing/neck/roguetown/psycross/silver, /obj/item/clothing/neck/roguetown/psycross/silver/pestra, +/obj/item/clothing/neck/roguetown/psycross/silver/malum_steel, /turf/open/floor/rogue/herringbone, /area/rogue/indoors/town/church) "oga" = ( @@ -12962,6 +12996,11 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/rogue/twig, /area/rogue/under/town/basement) +"oFh" = ( +/obj/structure/chair/stool/rogue, +/obj/structure/rogue/trophy/deer, +/turf/open/floor/rogue/wood, +/area/rogue/indoors/town/tavern) "oFl" = ( /turf/open/floor/rogue/grass, /area/rogue/outdoors/mountains) @@ -13186,6 +13225,10 @@ /obj/structure/fluff/railing/border, /turf/open/floor/rogue/blocks/stonered/tiny, /area/rogue/indoors/town/bath) +"oQz" = ( +/obj/item/rogueweapon/shovel/small, +/turf/open/floor/rogue/dirt, +/area/rogue/outdoors/town) "oQM" = ( /obj/structure/fluff/traveltile{ aportalgoesto = "bogrtin2"; @@ -14145,6 +14188,8 @@ /obj/item/neuFarm/seed/cabbage, /obj/item/neuFarm/seed/potato, /obj/item/neuFarm/seed/onion, +/obj/item/neuFarm/seed/apple, +/obj/item/neuFarm/seed/apple, /turf/open/floor/rogue/ruinedwood{ dir = 1; icon_state = "vertw" @@ -14332,6 +14377,12 @@ /obj/machinery/light/rogue/cauldron, /turf/open/floor/rogue/blocks, /area/rogue/under/town/basement) +"qjR" = ( +/obj/machinery/light/rogue/wallfire/candle{ + pixel_y = -32 + }, +/turf/open/water/bath, +/area/rogue/under/town/basement) "qjV" = ( /obj/structure/chair/wood/rogue{ dir = 1 @@ -14888,7 +14939,9 @@ }, /area/rogue/indoors/town/manor) "qRp" = ( -/obj/structure/mineral_door/wood/deadbolt, +/obj/structure/mineral_door/wood/deadbolt{ + dir = 1 + }, /turf/open/floor/rogue/woodturned, /area/rogue/indoors/town) "qSp" = ( @@ -15900,6 +15953,8 @@ "sek" = ( /obj/structure/closet/crate/chest/wicker, /obj/item/reagent_containers/food/snacks/butter, +/obj/item/reagent_containers/food/snacks/egg, +/obj/item/reagent_containers/food/snacks/egg, /turf/open/floor/rogue/woodturned, /area/rogue/indoors/town) "ser" = ( @@ -16060,6 +16115,7 @@ /obj/item/reagent_containers/food/snacks/rogue/meat/steak, /obj/item/reagent_containers/food/snacks/rogue/meat/poultry, /obj/item/reagent_containers/food/snacks/rogue/meat/poultry, +/obj/item/reagent_containers/food/snacks/fat, /turf/open/floor/rogue/woodturned, /area/rogue/indoors/town/manor) "spl" = ( @@ -16721,6 +16777,7 @@ pixel_x = 3; pixel_y = 5 }, +/obj/item/broom, /turf/open/floor/rogue/blocks, /area/rogue/under/town/basement) "tgF" = ( @@ -17316,6 +17373,13 @@ icon_state = "weird1" }, /area/rogue/indoors/town/shop) +"tOd" = ( +/obj/structure/closet/crate/roguecloset, +/obj/item/reagent_containers/glass/bucket, +/obj/item/broom, +/obj/item/natural/cloth, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors/town) "tOI" = ( /obj/structure/bookcase, /obj/item/book/rogue/bookofpriests, @@ -19037,6 +19101,9 @@ }, /obj/item/reagent_containers/food/snacks/produce/wheat, /obj/item/reagent_containers/food/snacks/produce/wheat, +/obj/item/reagent_containers/food/snacks/produce/oat, +/obj/item/reagent_containers/food/snacks/produce/oat, +/obj/item/reagent_containers/food/snacks/produce/oat, /turf/open/floor/rogue/wood/nosmooth, /area/rogue/under/town/basement) "vJl" = ( @@ -19113,11 +19180,19 @@ /area/rogue/indoors/town/manor) "vOG" = ( /obj/item/kitchen/fork, -/obj/item/kitchen/spoon, -/obj/item/kitchen/spoon, /obj/structure/rack/rogue/shelf/biggest, /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/kitchen/spoon, +/obj/item/kitchen/spoon, +/obj/item/kitchen/spoon, +/obj/item/kitchen/spoon, +/obj/item/cooking/platter, +/obj/item/cooking/platter, +/obj/item/cooking/platter, +/obj/item/cooking/platter, /turf/open/floor/rogue/cobble, /area/rogue/under/town/basement) "vOZ" = ( @@ -19199,6 +19274,8 @@ /area/rogue/indoors/town/manor) "vRR" = ( /obj/structure/closet/crate/roguecloset/inn, +/obj/item/broom, +/obj/item/natural/cloth, /turf/open/floor/rogue/twig, /area/rogue/indoors/town) "vSb" = ( @@ -20607,6 +20684,14 @@ /obj/item/trash/applecore, /turf/open/floor/rogue/blocks/green, /area/rogue/under/town/sewer) +"xtd" = ( +/obj/structure/table/wood{ + icon_state = "tablewood2"; + dir = 10 + }, +/obj/item/broom, +/turf/open/floor/rogue/wood/nosmooth, +/area/rogue/indoors/town) "xug" = ( /turf/open/floor/rogue/blocks/green, /area/rogue/under/town/sewer) @@ -31248,7 +31333,7 @@ vfb aWn kdB vuj -xTK +pvv qBm kdB kdB @@ -31562,7 +31647,7 @@ aoW aWn xTK xTK -bhS +lfH lfH lfH lfH @@ -31879,7 +31964,7 @@ xTK lfH nQb mjr -mjr +qjR kdB xug czv @@ -32349,7 +32434,7 @@ xTK xTK lfH nQb -mjr +gAP mjr mUi xug @@ -53794,7 +53879,7 @@ ieR uNu sek eDx -mjs +uDV uNu ckZ oOl @@ -54412,7 +54497,7 @@ tui ewn efH tui -lac +bhS lac lac lac @@ -54707,7 +54792,7 @@ bHI uNu tbS jYN -vUw +xtd aBF mWk lac @@ -55162,7 +55247,7 @@ mTN tvd sEX sEX -sEX +eUG tvd pTt pTk @@ -55319,7 +55404,7 @@ ljn tvd sEX sEX -sEX +mjs tvd eBP pTk @@ -59243,7 +59328,7 @@ qEn pqE qdP hsW -tWY +bxN lgi hoy xIk @@ -61457,7 +61542,7 @@ bHI bHI jPn eSf -ieR +oQz eSf ieR eSf @@ -78442,7 +78527,7 @@ doW doW qQG mip -tbS +tOd tbS tbS fha @@ -79472,8 +79557,8 @@ xKa vQk gvW gvW -vQk -bxN +bzP +gaU gaU sUi goT @@ -79627,7 +79712,7 @@ mmG cnQ vQk oAK -nNL +oFh nNL gaU gaU diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index a6f083be9e..3e82a856f9 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -50,6 +50,12 @@ damage_deflection = 10 + var/repairable = FALSE + var/repair_state = 0 + var/obj/item/repair_cost_first = null + var/obj/item/repair_cost_second = null + var/repair_skill = null + /obj/structure/mineral_door/onkick(mob/user) if(isSwitchingStates) return @@ -294,6 +300,18 @@ /obj/structure/mineral_door/update_icon() icon_state = "[base_state][door_opened ? "open":""]" +/obj/structure/mineral_door/examine(mob/user) + . = ..() + if(repairable) + var/obj/cast_repair_cost_first = repair_cost_first + var/obj/cast_repair_cost_second = repair_cost_second + if((repair_state == 0) && (obj_integrity < max_integrity)) + . += span_notice("A [initial(cast_repair_cost_first.name)] can be used to repair it.") + if(brokenstate) + . += span_notice("An additional [initial(cast_repair_cost_second.name)] is needed to finish repairs.") + if(repair_state == 1) + . += span_notice("An additional [initial(cast_repair_cost_second.name)] is needed to finish repairs.") + /obj/structure/mineral_door/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/roguekey) || istype(I, /obj/item/keyring)) trykeylock(I, user) @@ -302,7 +320,56 @@ if(istype(I, /obj/item/lockpick)) trypicklock(I, user) else - return ..() + if(repairable && (user.mind.get_skill_level(repair_skill) > 0) && ((istype(I, repair_cost_first)) || (istype(I, repair_cost_second)))) // At least 1 skill level needed + repairdoor(I,user) + else + return ..() + +/obj/structure/mineral_door/proc/repairdoor(obj/item/I, mob/user) + if(brokenstate) + switch(repair_state) + if(0) + if(istype(I, repair_cost_first)) + user.visible_message(span_notice("[user] starts repairing [src]."), \ + span_notice("I start repairing [src].")) + playsound(user, 'sound/misc/wood_saw.ogg', 100, TRUE) + if(do_after(user, (300 / user.mind.get_skill_level(repair_skill)), target = src)) // 1 skill = 30 secs, 2 skill = 15 secs etc. + qdel(I) + playsound(user, 'sound/misc/wood_saw.ogg', 100, TRUE) + repair_state = 1 + var/obj/cast_repair_cost_second = repair_cost_second + to_chat(user, span_notice("An additional [initial(cast_repair_cost_second.name)] is needed to finish the job.")) + if(1) + if(istype(I, repair_cost_second)) + user.visible_message(span_notice("[user] starts repairing [src]."), \ + span_notice("I start repairing [src].")) + playsound(user, 'sound/misc/wood_saw.ogg', 100, TRUE) + if(do_after(user, (300 / user.mind.get_skill_level(repair_skill)), target = src)) // 1 skill = 30 secs, 2 skill = 15 secs etc. + qdel(I) + playsound(user, 'sound/misc/wood_saw.ogg', 100, TRUE) + icon_state = "[base_state]" + density = TRUE + opacity = TRUE + brokenstate = FALSE + obj_broken = FALSE + obj_integrity = max_integrity + repair_state = 0 + user.visible_message(span_notice("[user] repaired [src]."), \ + span_notice("I repaired [src].")) + else + if(obj_integrity < max_integrity && istype(I, repair_cost_first)) + to_chat(user, span_warning("[obj_integrity]")) + user.visible_message(span_notice("[user] starts repairing [src]."), \ + span_notice("I start repairing [src].")) + playsound(user, 'sound/misc/wood_saw.ogg', 100, TRUE) + if(do_after(user, (300 / user.mind.get_skill_level(repair_skill)), target = src)) // 1 skill = 30 secs, 2 skill = 15 secs etc. + qdel(I) + playsound(user, 'sound/misc/wood_saw.ogg', 100, TRUE) + obj_integrity = obj_integrity + (max_integrity/2) + if(obj_integrity > max_integrity) + obj_integrity = max_integrity + user.visible_message(span_notice("[user] repaired [src]."), \ + span_notice("I repaired [src].")) /obj/structure/mineral_door/proc/trykeylock(obj/item/I, mob/user) if(door_opened || isSwitchingStates) @@ -651,6 +718,10 @@ 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') var/over_state = "woodover" + repairable = TRUE + repair_cost_first = /obj/item/grown/log/tree/small + repair_cost_second = /obj/item/grown/log/tree/small + repair_skill = /datum/skill/craft/carpentry /obj/structure/mineral_door/wood/Initialize() if(icon_state =="woodhandle") @@ -710,6 +781,10 @@ blade_dulling = DULLING_BASHCHOP 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') + repairable = TRUE + repair_cost_first = /obj/item/grown/log/tree/small + repair_cost_second = /obj/item/grown/log/tree/small + repair_skill = /datum/skill/craft/carpentry /obj/structure/mineral_door/wood/window opacity = FALSE @@ -771,6 +846,8 @@ unlocksound = 'sound/foley/doors/lockmetal.ogg' rattlesound = 'sound/foley/doors/lockrattlemetal.ogg' attacked_sound = list("sound/combat/hits/onmetal/metalimpact (1).ogg", "sound/combat/hits/onmetal/metalimpact (2).ogg") + repair_cost_second = /obj/item/ingot/iron + repair_skill = /datum/skill/craft/carpentry /obj/structure/mineral_door/wood/donjon/stone desc = "" @@ -780,6 +857,9 @@ max_integrity = 1000 over_state = "stoneopen" attacked_sound = list('sound/combat/hits/onwood/woodimpact (1).ogg','sound/combat/hits/onwood/woodimpact (2).ogg') + repair_cost_first = /obj/item/natural/stone + repair_cost_second = /obj/item/natural/stone + repair_skill = /datum/skill/craft/masonry /obj/structure/mineral_door/wood/donjon/stone/attack_right(mob/user) return @@ -840,6 +920,9 @@ attacked_sound = list("sound/combat/hits/onmetal/metalimpact (1).ogg", "sound/combat/hits/onmetal/metalimpact (2).ogg") ridethrough = TRUE swing_closed = FALSE + repair_cost_first = /obj/item/ingot/iron + repair_cost_second = /obj/item/ingot/iron + repair_skill = /datum/skill/craft/blacksmithing /obj/structure/mineral_door/bars/Initialize() . = ..()