From 3834c0d50452b807af0a339528a98729fe67ca57 Mon Sep 17 00:00:00 2001 From: Monkeke2 Date: Thu, 14 May 2026 17:45:18 +0300 Subject: [PATCH 1/6] Adds the Street Sweeper --- _maps/map_files/vanderlin/vanderlin.dmm | 58 +++++++++++++--- code/__DEFINES/access.dm | 1 + code/__DEFINES/jobs.dm | 2 + code/game/objects/effects/landmarks.dm | 4 ++ code/game/objects/items/keys.dm | 6 ++ .../jobs/job_types/peasants/sweeper.dm | 67 +++++++++++++++++++ code/modules/jobs/jobs.dm | 1 + .../mapping/mapping_helpers/access_helper.dm | 6 ++ vanderlin.dme | 1 + 9 files changed, 137 insertions(+), 9 deletions(-) create mode 100644 code/modules/jobs/job_types/peasants/sweeper.dm diff --git a/_maps/map_files/vanderlin/vanderlin.dmm b/_maps/map_files/vanderlin/vanderlin.dmm index f6bbb1706b7..d7310e2a290 100644 --- a/_maps/map_files/vanderlin/vanderlin.dmm +++ b/_maps/map_files/vanderlin/vanderlin.dmm @@ -1991,7 +1991,17 @@ /turf/open/floor/blocks/paving, /area/indoors/town/bath) "aWB" = ( -/obj/structure/table/wood/plain_alt, +/obj/structure/closet/crate/chest/crate, +/obj/item/key/sweeper, +/obj/item/broom, +/obj/item/natural/bundle/cloth{ + amount = 5; + pixel_y = 7 + }, +/obj/item/reagent_containers/glass/bucket/wooden, +/obj/item/reagent_containers/glass/bucket/wooden, +/obj/item/soap, +/obj/item/soap, /turf/open/floor/ruinedwood/turned, /area/indoors/town) "aWO" = ( @@ -17991,6 +18001,20 @@ /area/indoors/town/keep/captain) "iGe" = ( /obj/effect/decal/cleanable/dirt/cobweb, +/obj/structure/rack/shelf, +/obj/item/storage/sack{ + pixel_x = 6; + pixel_y = 39 + }, +/obj/item/storage/sack{ + pixel_x = -2; + pixel_y = 39 + }, +/obj/item/storage/sack{ + pixel_x = -10; + pixel_y = 39 + }, +/obj/structure/fermentation_keg/water, /turf/open/floor/ruinedwood/turned, /area/indoors/town) "iGp" = ( @@ -21553,7 +21577,8 @@ /turf/open/floor/grass, /area/indoors/town/church/inquisition) "klY" = ( -/obj/machinery/light/fueled/torchholder/r, +/obj/machinery/light/fueled/wallfire/candle/weak/r, +/obj/effect/landmark/start/sweeper, /turf/open/floor/ruinedwood/turned, /area/indoors/town) "kma" = ( @@ -23406,9 +23431,9 @@ /turf/open/floor/metal/barograte, /area/indoors/town/dwarfin) "lec" = ( -/obj/structure/door/weak/bolt{ - dir = 4 - }, +/obj/structure/door, +/obj/effect/mapping_helpers/access/locker, +/obj/effect/mapping_helpers/access/keyset/town/sweeper, /turf/open/floor/ruinedwood/turned, /area/indoors/town) "leJ" = ( @@ -24164,6 +24189,23 @@ }, /turf/open/floor/cobblerock, /area/outdoors/town) +"lwR" = ( +/obj/structure/handcart, +/obj/structure/rack/shelf, +/obj/item/burial_shroud{ + pixel_x = 6; + pixel_y = 38 + }, +/obj/item/burial_shroud{ + pixel_x = 0; + pixel_y = 38 + }, +/obj/item/burial_shroud{ + pixel_x = -7; + pixel_y = 38 + }, +/turf/open/floor/ruinedwood/turned, +/area/indoors/town) "lwS" = ( /obj/structure/fluff/walldeco/bath/wallpipes{ dir = 1; @@ -29526,9 +29568,7 @@ /turf/open/openspace, /area/indoors/town/garrison) "nYo" = ( -/obj/structure/chair/wood/alt/chair3{ - dir = 4 - }, +/obj/structure/bed/shit, /turf/open/floor/ruinedwood/turned, /area/indoors/town) "nYq" = ( @@ -151729,7 +151769,7 @@ biy biy xhZ nKC -qcD +lwR klY aWB pkd diff --git a/code/__DEFINES/access.dm b/code/__DEFINES/access.dm index c6eebf563aa..ae09e058557 100644 --- a/code/__DEFINES/access.dm +++ b/code/__DEFINES/access.dm @@ -18,6 +18,7 @@ #define ACCESS_ARTIFICER "artificer" #define ACCESS_MINER "miner" #define ACCESS_BATHHOUSE "bathhouse" +#define ACCESS_SWEEPER "sweeper" // Town Garrison (Including forest) #define ACCESS_GARRISON "garrison" diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index 2ca14bb3e31..949f7b5784c 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -168,6 +168,7 @@ #define JDO_BOGWITCH 35.1 #define JDO_BOGWITCH_APP 35.2 +#define JDO_SWEEPER 35.3 #define JDO_VAGRANT 36 #define JDO_ORPHAN 37 #define JDO_SOILCHILD 38 @@ -228,6 +229,7 @@ #define JOB_BARD "Bard" #define JOB_PRISONER "Prisoner" #define JOB_BEGGAR "Beggar" +#define JOB_SWEEPER "Sweeper" #define JOB_SQUIRE "Squire" diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index daf330ca262..254eae04395 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -300,6 +300,10 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark) name = JOB_BEGGAR jobs_to_spawn = list(JOB_BEGGAR) +/obj/effect/landmark/start/sweeper + name = JOB_SWEEPER + jobs_to_spawn = list(JOB_SWEEPER) + /obj/effect/landmark/start/consort name = JOB_CONSORT jobs_to_spawn = list(JOB_CONSORT) diff --git a/code/game/objects/items/keys.dm b/code/game/objects/items/keys.dm index ae804c22b6f..64b52918779 100644 --- a/code/game/objects/items/keys.dm +++ b/code/game/objects/items/keys.dm @@ -185,6 +185,12 @@ icon_state = "brownkey" lockids = list(ACCESS_MINER) +/obj/item/key/sweeper + name = "sweeper's key" + desc = "This key opens the Sweeper's room. It smells foul." + icon_state = "rustkey" + lockids = list(ACCESS_SWEEPER) + // Residents /obj/item/key/matron diff --git a/code/modules/jobs/job_types/peasants/sweeper.dm b/code/modules/jobs/job_types/peasants/sweeper.dm new file mode 100644 index 00000000000..a76a944f678 --- /dev/null +++ b/code/modules/jobs/job_types/peasants/sweeper.dm @@ -0,0 +1,67 @@ +/datum/attribute_holder/sheet/job/sweeper + attribute_variance = list( + STAT_FORTUNE = list(-9, 9), + /datum/attribute/skill/misc/sneaking = list(10, 40), + /datum/attribute/skill/misc/climbing = list(10, 30), + /datum/attribute/skill/combat/wrestling = list(-10, 10), + /datum/attribute/skill/combat/unarmed = list(10, 20), + ) + raw_attribute_list = list( + STAT_STRENGTH = 1, + STAT_ENDURANCE = 2, + STAT_SPEED = 1, + STAT_INTELLIGENCE = -2, + ) + +/datum/job/sweeper + title = JOB_SWEEPER + tutorial = "You are the street cleaner of Vanderlin, the one who takes care of the rot and refuse." + + department_flag = PEASANTS + display_order = JDO_SWEEPER + job_flags = (JOB_ANNOUNCE_ARRIVAL | JOB_EQUIP_RANK | JOB_NEW_PLAYER_JOINABLE | JOB_SHOW_IN_CREDITS) + faction = FACTION_TOWN + total_positions = 1 + spawn_positions = 1 + bypass_lastclass = TRUE + banned_leprosy = FALSE + + allowed_races = RACES_PLAYER_ALL + + outfit = /datum/outfit/sweeper + can_random = FALSE + can_have_apprentices = FALSE + can_be_apprentice = TRUE + + cmode_music = 'sound/music/cmode/towner/CombatBeggar.ogg' + + traits = list( + TRAIT_DEADNOSE, + ) + + attribute_sheet = /datum/attribute_holder/sheet/job/sweeper + +/datum/job/sweeper/New() + . = ..() + peopleknowme = list() + +/datum/job/sweeper/after_spawn(mob/living/carbon/human/spawned, client/player_client) + . = ..() + // Hygiene roll + if(prob(25)) + spawned.set_hygiene(HYGIENE_LEVEL_DISGUSTING) + else + spawned.set_hygiene(HYGIENE_LEVEL_DIRTY) + + +/datum/outfit/sweeper + name = JOB_SWEEPER + pants = /obj/item/clothing/pants/tights/colored/black + gloves =/obj/item/clothing/gloves/leather/black + shirt = /obj/item/clothing/shirt/shortshirt/colored/grey + backl = /obj/item/storage/backpack/satchel/cloth + head = /obj/item/clothing/head/strawhat + shoes = /obj/item/clothing/shoes/boots + ring = /obj/item/key/sweeper + belt = /obj/item/storage/belt/leather/black + neck = /obj/item/storage/belt/pouch diff --git a/code/modules/jobs/jobs.dm b/code/modules/jobs/jobs.dm index b40579c3af3..0a697d833a3 100644 --- a/code/modules/jobs/jobs.dm +++ b/code/modules/jobs/jobs.dm @@ -101,6 +101,7 @@ GLOBAL_LIST_INIT(peasant_positions, list( /datum/job/bard::title, /datum/job/prisoner::title, /datum/job/vagrant::title, + /datum/job/sweeper::title, /datum/job/persistence/woodsman::title, /datum/job/persistence/miner::title, /datum/job/persistence/farmer::title, diff --git a/code/modules/mapping/mapping_helpers/access_helper.dm b/code/modules/mapping/mapping_helpers/access_helper.dm index 431385bb7a8..76237fe1109 100644 --- a/code/modules/mapping/mapping_helpers/access_helper.dm +++ b/code/modules/mapping/mapping_helpers/access_helper.dm @@ -101,6 +101,12 @@ accesses = list(ACCESS_BATHHOUSE) difficulty = 5 +/obj/effect/mapping_helpers/access/keyset/town/bathhouse + accesses = list(ACCESS_BATHHOUSE) + +/obj/effect/mapping_helpers/access/keyset/town/sweeper + accesses = list(ACCESS_SWEEPER) + // Town Garrison /obj/effect/mapping_helpers/access/keyset/garrison color = "#b02323" diff --git a/vanderlin.dme b/vanderlin.dme index fc7844fc371..7af2d067e9d 100644 --- a/vanderlin.dme +++ b/vanderlin.dme @@ -3190,6 +3190,7 @@ #include "code\modules\jobs\job_types\peasants\miner.dm" #include "code\modules\jobs\job_types\peasants\prisoner.dm" #include "code\modules\jobs\job_types\peasants\soilson.dm" +#include "code\modules\jobs\job_types\peasants\sweeper.dm" #include "code\modules\jobs\job_types\persistence\caravanguard.dm" #include "code\modules\jobs\job_types\persistence\carpenter.dm" #include "code\modules\jobs\job_types\persistence\farmer.dm" From a0962bdb4b4d286e5b6389f3778d68234ab3b2e7 Mon Sep 17 00:00:00 2001 From: Monkeke2 Date: Thu, 14 May 2026 18:08:21 +0300 Subject: [PATCH 2/6] Tweaks sweeper stats --- code/modules/jobs/job_types/peasants/sweeper.dm | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/code/modules/jobs/job_types/peasants/sweeper.dm b/code/modules/jobs/job_types/peasants/sweeper.dm index a76a944f678..61c7650c5bf 100644 --- a/code/modules/jobs/job_types/peasants/sweeper.dm +++ b/code/modules/jobs/job_types/peasants/sweeper.dm @@ -1,16 +1,13 @@ /datum/attribute_holder/sheet/job/sweeper - attribute_variance = list( - STAT_FORTUNE = list(-9, 9), - /datum/attribute/skill/misc/sneaking = list(10, 40), - /datum/attribute/skill/misc/climbing = list(10, 30), - /datum/attribute/skill/combat/wrestling = list(-10, 10), - /datum/attribute/skill/combat/unarmed = list(10, 20), - ) raw_attribute_list = list( - STAT_STRENGTH = 1, STAT_ENDURANCE = 2, STAT_SPEED = 1, STAT_INTELLIGENCE = -2, + /datum/attribute/skill/misc/climbing = 20, + /datum/attribute/skill/combat/wrestling = 10, + /datum/attribute/skill/combat/unarmed = 20, + /datum/attribute/skill/misc/athletics = 30, + /datum/attribute/skill/craft/crafting = 20, ) /datum/job/sweeper From 09a24594e573fc71eef2839bc66a73a0c97e0fba Mon Sep 17 00:00:00 2001 From: Monkeke2 Date: Thu, 14 May 2026 18:19:55 +0300 Subject: [PATCH 3/6] forgot to name the door properly --- _maps/map_files/vanderlin/vanderlin.dmm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/_maps/map_files/vanderlin/vanderlin.dmm b/_maps/map_files/vanderlin/vanderlin.dmm index d7310e2a290..d7a2b5d5c76 100644 --- a/_maps/map_files/vanderlin/vanderlin.dmm +++ b/_maps/map_files/vanderlin/vanderlin.dmm @@ -23431,7 +23431,9 @@ /turf/open/floor/metal/barograte, /area/indoors/town/dwarfin) "lec" = ( -/obj/structure/door, +/obj/structure/door{ + name = "Sweeper's Quarters" + }, /obj/effect/mapping_helpers/access/locker, /obj/effect/mapping_helpers/access/keyset/town/sweeper, /turf/open/floor/ruinedwood/turned, From dae008911478f17a364c60ef81eaa68c6b4019ca Mon Sep 17 00:00:00 2001 From: Monkeke2 Date: Fri, 15 May 2026 15:37:05 +0300 Subject: [PATCH 4/6] removes duplicate bathhouse keyset --- code/modules/mapping/mapping_helpers/access_helper.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/modules/mapping/mapping_helpers/access_helper.dm b/code/modules/mapping/mapping_helpers/access_helper.dm index 76237fe1109..1c7da91b737 100644 --- a/code/modules/mapping/mapping_helpers/access_helper.dm +++ b/code/modules/mapping/mapping_helpers/access_helper.dm @@ -101,9 +101,6 @@ accesses = list(ACCESS_BATHHOUSE) difficulty = 5 -/obj/effect/mapping_helpers/access/keyset/town/bathhouse - accesses = list(ACCESS_BATHHOUSE) - /obj/effect/mapping_helpers/access/keyset/town/sweeper accesses = list(ACCESS_SWEEPER) From 380bf1335b8643a48a28ea723cc2fe2988b4e2f9 Mon Sep 17 00:00:00 2001 From: Monkeke2 Date: Sat, 16 May 2026 17:57:14 +0300 Subject: [PATCH 5/6] Gives the sweeper a bank account because they are supposed to be known by the townspeople --- code/modules/jobs/job_types/peasants/sweeper.dm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/code/modules/jobs/job_types/peasants/sweeper.dm b/code/modules/jobs/job_types/peasants/sweeper.dm index 61c7650c5bf..d75bcd7728c 100644 --- a/code/modules/jobs/job_types/peasants/sweeper.dm +++ b/code/modules/jobs/job_types/peasants/sweeper.dm @@ -26,6 +26,7 @@ allowed_races = RACES_PLAYER_ALL outfit = /datum/outfit/sweeper + give_bank_account = 10 can_random = FALSE can_have_apprentices = FALSE can_be_apprentice = TRUE @@ -38,10 +39,6 @@ attribute_sheet = /datum/attribute_holder/sheet/job/sweeper -/datum/job/sweeper/New() - . = ..() - peopleknowme = list() - /datum/job/sweeper/after_spawn(mob/living/carbon/human/spawned, client/player_client) . = ..() // Hygiene roll From fcfe892f8389546e0ab8d579ba896f7d5027aba4 Mon Sep 17 00:00:00 2001 From: Monkeke2 Date: Mon, 18 May 2026 20:19:20 +0300 Subject: [PATCH 6/6] Empty commit to restart checks