diff --git a/_maps/map_files/AsteroidStation/AsteroidStation.dmm b/_maps/map_files/AsteroidStation/AsteroidStation.dmm index 7ac0ab0170ba..849ca509dc9d 100644 --- a/_maps/map_files/AsteroidStation/AsteroidStation.dmm +++ b/_maps/map_files/AsteroidStation/AsteroidStation.dmm @@ -2340,6 +2340,16 @@ /obj/structure/lattice/catwalk, /turf/open/space, /area/solar/port/fore) +"auw" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 5 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "auC" = ( /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, /turf/open/floor/plating, @@ -6341,13 +6351,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"biA" = ( -/obj/structure/chair, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "biB" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 1 @@ -7782,6 +7785,17 @@ }, /turf/open/floor/plasteel/white, /area/science/misc_lab) +"bKv" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 1 + }, +/obj/machinery/bounty_packager, +/obj/machinery/conveyor{ + dir = 4; + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "bKy" = ( /turf/closed/wall, /area/medical/medbay/central) @@ -9801,6 +9815,12 @@ /obj/effect/turf_decal/trimline/dark_blue/filled/corner/lower, /turf/open/floor/mineral/titanium, /area/teleporter) +"coK" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "coL" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -10080,16 +10100,6 @@ }, /turf/open/floor/plasteel/white, /area/medical/medbay/lobby) -"ctN" = ( -/obj/effect/turf_decal/trimline/brown/filled/line/lower, -/obj/structure/bed/dogbed{ - desc = "Autumn's Bed! Looks comfy."; - name = "Autumn's Bed" - }, -/obj/item/toy/figure/cargotech, -/mob/living/simple_animal/pet/fox/fennec/Autumn, -/turf/open/floor/plasteel, -/area/quartermaster/office) "ctT" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -11966,13 +11976,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"cYr" = ( -/obj/structure/chair, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "cYs" = ( /obj/machinery/door/firedoor/border_only, /obj/machinery/door/firedoor/border_only{ @@ -17178,16 +17181,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) -"eDn" = ( -/obj/structure/table, -/obj/item/folder/yellow, -/obj/effect/turf_decal/trimline/brown/filled/line/lower, -/obj/item/radio/intercom{ - name = "Station Intercom (General)"; - pixel_y = -29 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "eDE" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 1 @@ -20481,15 +20474,6 @@ /obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plating, /area/maintenance/port) -"fEk" = ( -/obj/machinery/computer/bounty{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "fEA" = ( /obj/effect/landmark/start/station_engineer, /obj/effect/turf_decal/trimline/engiyellow/filled/line/lower{ @@ -22589,6 +22573,23 @@ }, /turf/open/floor/engine/air, /area/engine/atmos/distro) +"gnf" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 4 + }, +/obj/structure/table, +/obj/item/folder/yellow, +/obj/item/pen/blue{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/item/pen/red, +/obj/item/storage/pencil_holder/crew/fancy{ + pixel_x = 10 + }, +/obj/item/stamp/qm, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "gng" = ( /obj/machinery/door/window/southleft{ base_state = "left"; @@ -26021,6 +26022,21 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/fore) +"hpW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/computer/bounty{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "hqn" = ( /obj/structure/table/wood, /obj/effect/spawner/lootdrop/randomdrink, @@ -27067,6 +27083,16 @@ }, /turf/open/floor/engine, /area/science/xenobiology) +"hFX" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 1 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "hGo" = ( /obj/structure/table/wood, /obj/effect/turf_decal/tile/red{ @@ -35747,19 +35773,6 @@ }, /turf/open/floor/plasteel/dark, /area/tcommsat/storage) -"kpf" = ( -/obj/machinery/computer/cargo{ - dir = 1 - }, -/obj/machinery/requests_console{ - announcementConsole = 1; - department = "Quartermaster's Desk"; - departmentType = 2; - pixel_y = -33 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "kpv" = ( /obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -38534,6 +38547,19 @@ /obj/machinery/portable_atmospherics/canister, /turf/open/floor/engine, /area/science/storage) +"lmD" = ( +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Quartermaster's Desk"; + departmentType = 2; + pixel_y = -33 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/obj/machinery/modular_computer/console/preset/cargo/qm{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "lmL" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 @@ -43843,13 +43869,6 @@ /obj/effect/turf_decal/trimline/neutral/filled/line/lower, /turf/open/floor/plasteel, /area/hallway/primary/port) -"mTu" = ( -/obj/machinery/computer/bounty{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower, -/turf/open/floor/plasteel, -/area/quartermaster/office) "mTy" = ( /obj/effect/turf_decal/tile/purple{ dir = 1 @@ -46339,6 +46358,24 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) +"nDI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 4 + }, +/obj/machinery/conveyor_switch{ + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "nEa" = ( /obj/structure/closet/secure_closet/lethalshots, /obj/effect/turf_decal/bot_red, @@ -51457,23 +51494,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/aft) -"pjY" = ( -/obj/structure/table, -/obj/item/folder/yellow, -/obj/item/pen/red, -/obj/item/pen/blue{ - pixel_x = 4; - pixel_y = 2 - }, -/obj/item/stamp/qm, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 4 - }, -/obj/item/storage/pencil_holder/crew/fancy{ - pixel_x = 10 - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "pkj" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/official/no_erp{ @@ -61475,15 +61495,6 @@ }, /turf/open/floor/plasteel, /area/security/execution/transfer) -"shP" = ( -/obj/machinery/modular_computer/console/preset/cargo/qm{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "shY" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -62746,14 +62757,6 @@ }, /turf/open/floor/wood, /area/medical/psych) -"sBo" = ( -/obj/effect/landmark/start/assistant, -/obj/structure/chair, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "sBJ" = ( /obj/effect/spawner/structure/window/reinforced/shutter, /turf/open/floor/plating, @@ -63684,6 +63687,14 @@ /obj/structure/flora/ausbushes/brflowers, /turf/open/floor/grass, /area/hallway/primary/port) +"sNS" = ( +/obj/structure/chair, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 1 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel, +/area/quartermaster/office) "sNV" = ( /obj/machinery/door/firedoor/border_only{ dir = 4 @@ -64502,6 +64513,20 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/bar) +"tbw" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/structure/bed/dogbed{ + desc = "Autumn's Bed! Looks comfy."; + name = "Autumn's Bed" + }, +/obj/item/toy/figure/cargotech, +/mob/living/simple_animal/pet/fox/fennec/Autumn, +/turf/open/floor/plasteel, +/area/quartermaster/office) "tbG" = ( /obj/structure/closet/secure_closet/brig, /obj/machinery/button/door{ @@ -66669,6 +66694,12 @@ }, /turf/open/floor/plasteel/dark, /area/engine/engineering) +"tJK" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/obj/structure/table, +/obj/item/folder/yellow, +/turf/open/floor/plasteel, +/area/quartermaster/office) "tJN" = ( /obj/effect/decal/cleanable/food/flour, /turf/open/floor/plasteel{ @@ -74193,21 +74224,6 @@ }, /turf/open/floor/plasteel/white, /area/medical/storage) -"whz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "whA" = ( /obj/machinery/light/small{ dir = 1 @@ -77241,6 +77257,15 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"wXV" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 10 + }, +/obj/machinery/computer/cargo{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "wYf" = ( /obj/structure/table/wood, /obj/item/coin/iron{ @@ -97861,7 +97886,7 @@ oFg xJY aqZ aqZ -ctN +pJa aLm pCN xgD @@ -98118,7 +98143,7 @@ ofT xJY aqZ aqZ -eDn +tbw aDE iZA xgD @@ -98375,7 +98400,7 @@ was xJY aqZ aqZ -mTu +tJK aDE elw wox @@ -98622,7 +98647,7 @@ aZG sZm bbU rfi -biA +sNS uCb euJ ykA @@ -98879,7 +98904,7 @@ iOa oMS bbU rfi -sBo +hFX uCb igi ata @@ -99136,8 +99161,8 @@ jLY ioA bbU rfi -biA -uCb +bKv +hpW aqZ veG sAT @@ -99393,8 +99418,8 @@ sDa sZm bbU rfi -cYr -whz +auw +nDI otj vxU dVX @@ -99665,7 +99690,7 @@ fXn mBQ woV pRr -fEk +wXV apO acb acb @@ -99922,7 +99947,7 @@ tmv eDE jis crm -kpf +lmD apO acb acb @@ -100177,8 +100202,8 @@ ata sIC wyV dAo -shP -pjY +gnf +coK qiG apO acb diff --git a/_maps/map_files/DonutStation/DonutStation.dmm b/_maps/map_files/DonutStation/DonutStation.dmm index 5d41c0ff297b..a983dac0849c 100644 --- a/_maps/map_files/DonutStation/DonutStation.dmm +++ b/_maps/map_files/DonutStation/DonutStation.dmm @@ -642,6 +642,17 @@ }, /turf/open/floor/plasteel, /area/janitor) +"anq" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 1 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "bounty" + }, +/obj/machinery/bounty_packager, +/turf/open/floor/plasteel, +/area/quartermaster/office) "ans" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 9 @@ -1658,6 +1669,16 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"aJG" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 1 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "aJJ" = ( /obj/structure/plasticflaps, /obj/machinery/conveyor{ @@ -6813,6 +6834,11 @@ }, /turf/open/space/basic, /area/space/nearstation) +"cIm" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/obj/machinery/vending/modularpc, +/turf/open/floor/plasteel, +/area/quartermaster/office) "cIr" = ( /turf/closed/wall, /area/lawoffice) @@ -15742,6 +15768,19 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/engine, /area/science/explab) +"grm" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 9 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "grI" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -17823,16 +17862,6 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"hpJ" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 9 - }, -/obj/machinery/vending/modularpc, -/turf/open/floor/plasteel, -/area/quartermaster/office) "hpK" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -21175,28 +21204,6 @@ /obj/item/wirecutters, /turf/open/space/basic, /area/engine/engineering) -"iSo" = ( -/obj/machinery/computer/bounty{ - dir = 4 - }, -/obj/item/radio/intercom{ - pixel_x = -31; - pixel_y = -6 - }, -/obj/machinery/camera{ - c_tag = "Cargo - Quartermaster's Office"; - dir = 4; - network = list("ss13") - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 9 - }, -/obj/machinery/light_switch{ - pixel_x = -24; - pixel_y = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "iSC" = ( /obj/structure/table/wood, /obj/item/toy/figure/lawyer, @@ -21417,19 +21424,6 @@ "iWz" = ( /turf/template_noop, /area/maintenance/port/fore) -"iWA" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 8 - }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = -24 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "iWG" = ( /mob/living/carbon/monkey{ dir = 1 @@ -26651,6 +26645,23 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) +"liA" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + pixel_x = -30 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 8 + }, +/obj/machinery/modular_computer/console/preset/cargo/qm{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "liB" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -30129,13 +30140,6 @@ /obj/structure/closet/lasertag/red, /turf/open/floor/plasteel, /area/crew_quarters/dorms) -"mIc" = ( -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 1 - }, -/obj/machinery/computer/bounty, -/turf/open/floor/plasteel, -/area/quartermaster/office) "mIh" = ( /obj/structure/closet/wardrobe/mixed, /turf/open/floor/plating{ @@ -31386,6 +31390,16 @@ }, /turf/open/floor/plasteel/white, /area/medical/chemistry) +"ngM" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -24 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "ngQ" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ @@ -33269,6 +33283,23 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/chapel/office) +"nTn" = ( +/obj/machinery/status_display/supply{ + pixel_x = -32 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Cargo - Front Lobby"; + dir = 4; + network = list("ss13") + }, +/obj/machinery/conveyor_switch{ + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "nTH" = ( /obj/machinery/smartfridge/food, /turf/open/floor/plasteel/cafeteria{ @@ -33336,15 +33367,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/white, /area/science/research) -"nUV" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "nVh" = ( /obj/structure/window/reinforced{ dir = 4 @@ -36235,21 +36257,6 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) -"pmR" = ( -/obj/machinery/status_display/supply{ - pixel_x = -32 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 8 - }, -/obj/machinery/lapvend, -/obj/machinery/camera{ - c_tag = "Cargo - Front Lobby"; - dir = 4; - network = list("ss13") - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "pmT" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -36617,23 +36624,6 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) -"ptc" = ( -/obj/machinery/computer/security/qm{ - dir = 4 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/requests_console{ - department = "Cargo Bay"; - departmentType = 2; - pixel_x = -30 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "ptd" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 @@ -45821,6 +45811,28 @@ }, /turf/open/floor/plasteel, /area/maintenance/disposal/incinerator) +"tpE" = ( +/obj/item/radio/intercom{ + pixel_x = -31; + pixel_y = -6 + }, +/obj/machinery/camera{ + c_tag = "Cargo - Quartermaster's Office"; + dir = 4; + network = list("ss13") + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 9 + }, +/obj/machinery/light_switch{ + pixel_x = -24; + pixel_y = 8 + }, +/obj/machinery/computer/security/qm{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "tpK" = ( /obj/effect/turf_decal/trimline/blue/filled/line/lower{ dir = 1 @@ -46504,6 +46516,13 @@ /obj/item/restraints/legcuffs/beartrap, /turf/open/floor/plasteel, /area/janitor) +"tCp" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/obj/machinery/computer/bounty, +/turf/open/floor/plasteel, +/area/quartermaster/office) "tCS" = ( /obj/structure/grille/broken, /turf/open/floor/plating, @@ -56200,6 +56219,13 @@ }, /turf/open/floor/plasteel/white, /area/science/xenobiology) +"xCg" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 10 + }, +/obj/machinery/lapvend, +/turf/open/floor/plasteel, +/area/quartermaster/office) "xCh" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -94818,8 +94844,8 @@ foN mdj mHy lwl -iSo -ptc +tpE +liA qwB saU lwl @@ -94827,10 +94853,10 @@ cyW wgo hgq pww -hpJ -pmR -iWA -nUV +grm +nTn +ngM +xCg gAv uTm oZy @@ -95084,10 +95110,10 @@ fvV gNx igx cOe -usN -gWw +anq +tCp gNx -igx +cIm gAv pln rHh @@ -95341,7 +95367,7 @@ awv gWw igx cOe -usN +aJG bsf gNx atp @@ -96360,7 +96386,7 @@ hpj dcG wLL uJQ -mIc +usN gNx bdW gNx diff --git a/_maps/map_files/GaxStation/GaxStation.dmm b/_maps/map_files/GaxStation/GaxStation.dmm index f7c043db5747..6b59d2959861 100644 --- a/_maps/map_files/GaxStation/GaxStation.dmm +++ b/_maps/map_files/GaxStation/GaxStation.dmm @@ -2472,6 +2472,13 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"bhR" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 1 + }, +/obj/machinery/holopad, +/turf/open/floor/plasteel, +/area/quartermaster/office) "bii" = ( /obj/effect/turf_decal/trimline/blue/filled/line/lower{ dir = 4 @@ -3832,6 +3839,15 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel, /area/hallway/primary/starboard) +"bSQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/conveyor_switch{ + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "bSU" = ( /obj/machinery/light{ dir = 1 @@ -3990,20 +4006,6 @@ }, /turf/open/floor/plasteel/dark, /area/bridge) -"bUS" = ( -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 8 - }, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -24 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "bVm" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -8608,12 +8610,6 @@ }, /turf/open/floor/carpet, /area/security/detectives_office) -"eeG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "eeO" = ( /obj/machinery/door/airlock/maintenance_hatch, /obj/machinery/door/firedoor/border_only{ @@ -11205,14 +11201,6 @@ /obj/effect/turf_decal/stripes/corner, /turf/open/floor/plasteel, /area/hallway/secondary/service) -"fkR" = ( -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 1 - }, -/obj/structure/chair, -/obj/effect/landmark/start/assistant, -/turf/open/floor/plasteel, -/area/quartermaster/office) "fli" = ( /obj/machinery/advanced_airlock_controller{ pixel_y = 24 @@ -11543,15 +11531,6 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) -"fsY" = ( -/obj/effect/turf_decal/trimline/brown/filled/line/lower, -/obj/machinery/light, -/obj/item/radio/intercom{ - name = "Station Intercom (General)"; - pixel_y = -30 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "ftr" = ( /turf/closed/wall/r_wall, /area/medical/genetics) @@ -12535,6 +12514,15 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) +"fPY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/computer/bounty{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "fQa" = ( /turf/closed/wall/r_wall, /area/engine/supermatter) @@ -12561,6 +12549,21 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/plasteel, /area/hallway/primary/starboard) +"fQs" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 10 + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Quartermaster's Desk"; + departmentType = 2; + pixel_x = -32 + }, +/obj/machinery/modular_computer/console/preset/cargo/qm{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "fRa" = ( /obj/machinery/light, /obj/structure/disposalpipe/segment{ @@ -20344,13 +20347,6 @@ }, /turf/open/floor/plasteel/dark, /area/medical/morgue) -"jGo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/holopad, -/turf/open/floor/plasteel, -/area/quartermaster/office) "jGV" = ( /obj/structure/fireaxecabinet/bridge{ pixel_x = 32 @@ -22415,6 +22411,23 @@ "kKp" = ( /turf/closed/wall/mineral/plastitanium, /area/maintenance/aft) +"kKE" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24 + }, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/computer/bounty{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "kKN" = ( /obj/effect/turf_decal/bot, /obj/machinery/shieldgen, @@ -24707,21 +24720,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/dark, /area/bridge) -"lQU" = ( -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 10 - }, -/obj/machinery/computer/bounty{ - dir = 1 - }, -/obj/machinery/requests_console{ - announcementConsole = 1; - department = "Quartermaster's Desk"; - departmentType = 2; - pixel_x = -32 - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "lRg" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -28822,19 +28820,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel, /area/quartermaster/qm) -"nTx" = ( -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 4 - }, -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "nTF" = ( /obj/structure/rack, /obj/effect/turf_decal/stripes/corner{ @@ -30259,15 +30244,6 @@ }, /turf/open/floor/carpet/blue, /area/bridge/meeting_room) -"oJl" = ( -/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ - dir = 1 - }, -/obj/machinery/computer/bounty{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "oJs" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -31770,6 +31746,20 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/aft) +"pup" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/obj/machinery/light, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -30 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "bounty" + }, +/obj/machinery/bounty_packager, +/turf/open/floor/plasteel, +/area/quartermaster/office) "puu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -32876,6 +32866,16 @@ /obj/machinery/smartfridge/chemistry/virology/preloaded, /turf/closed/wall/r_wall, /area/medical/virology) +"pWd" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 9 + }, +/obj/machinery/camera{ + c_tag = "Quartermaster's Office"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "pWm" = ( /obj/effect/turf_decal/trimline/blue/filled/line/lower, /obj/structure/table, @@ -36210,6 +36210,14 @@ /obj/structure/closet/secure_closet/security, /turf/open/floor/plasteel, /area/security/checkpoint/customs) +"rBw" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/obj/machinery/conveyor{ + dir = 8; + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "rBC" = ( /turf/closed/wall/r_wall, /area/security/checkpoint/science) @@ -36851,6 +36859,20 @@ /obj/machinery/holopad, /turf/open/floor/plasteel, /area/crew_quarters/heads/hop) +"rTa" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 4 + }, +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel, +/area/quartermaster/office) "rTl" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -49486,19 +49508,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"xZY" = ( -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 9 - }, -/obj/machinery/modular_computer/console/preset/cargo/qm{ - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "Quartermaster's Office"; - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "yab" = ( /obj/machinery/power/apc{ areastring = "/area/security/brig"; @@ -75560,10 +75569,10 @@ hYs ewA hOJ pQR -xZY -bUS +pWd +kKE uZz -lQU +fQs pQR gTy dNz @@ -78132,7 +78141,7 @@ pRg bPi msR fWC -jaW +rBw dby gtb fDV @@ -78387,9 +78396,9 @@ vkW nEQ maX fDA -fkR -jGo -fsY +bhR +fPY +pup laH fDA aPG @@ -78645,11 +78654,11 @@ ewA fbN uwH jHK -eeG -jaW +bSQ +rBw dby dTN -oJl +jHK nFF iLn laH @@ -79159,7 +79168,7 @@ ewA maX fDA iOZ -nTx +rTa hRH dby aGU diff --git a/_maps/map_files/IceMeta/IceMeta.dmm b/_maps/map_files/IceMeta/IceMeta.dmm index 9ab7ad2aa006..e7f6124c5b04 100644 --- a/_maps/map_files/IceMeta/IceMeta.dmm +++ b/_maps/map_files/IceMeta/IceMeta.dmm @@ -2455,6 +2455,15 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/mine/eva) +"aLp" = ( +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "aLq" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/trimline/secred/filled/line/lower{ @@ -3958,16 +3967,6 @@ }, /turf/open/floor/plasteel, /area/storage/primary) -"bgQ" = ( -/obj/machinery/airalarm{ - pixel_y = 24 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/computer/bounty, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "bgW" = ( /obj/machinery/button/door{ id = "QMLoaddoor"; @@ -6063,15 +6062,6 @@ }, /turf/open/floor/plasteel, /area/security/brig) -"bMO" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "bMV" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/holopad, @@ -7864,6 +7854,27 @@ }, /turf/open/floor/plating, /area/maintenance/department/science/central) +"coy" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/obj/machinery/conveyor{ + dir = 8; + id = "bounty" + }, +/obj/machinery/bounty_packager, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "coD" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 @@ -8415,6 +8426,26 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/security/prison) +"cyT" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/filled/corner/lower, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "cyZ" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, @@ -8544,6 +8575,16 @@ }, /turf/open/floor/plasteel, /area/maintenance/department/science) +"cAC" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "cAK" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -16859,16 +16900,6 @@ }, /turf/open/floor/plasteel, /area/storage/primary) -"faX" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "fba" = ( /obj/machinery/firealarm{ dir = 8; @@ -18365,6 +18396,29 @@ dir = 1 }, /area/science/mixing) +"fwS" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 4 + }, +/obj/structure/rack, +/obj/item/storage/box, +/obj/item/storage/box, +/obj/item/storage/box, +/obj/item/stack/packageWrap{ + pixel_x = 2; + pixel_y = -3 + }, +/obj/item/stack/packageWrap{ + pixel_x = 2; + pixel_y = -3 + }, +/obj/item/stack/packageWrap{ + pixel_x = 2; + pixel_y = -3 + }, +/obj/item/hand_labeler, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "fwW" = ( /obj/structure/filingcabinet, /obj/structure/reagent_dispensers/peppertank{ @@ -20140,6 +20194,19 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) +"fWG" = ( +/obj/item/radio/intercom{ + pixel_x = 30 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 6 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "fWR" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on{ dir = 4; @@ -21106,17 +21173,6 @@ }, /turf/open/floor/plasteel, /area/security/brig) -"gjH" = ( -/obj/structure/table, -/obj/item/toner, -/obj/item/radio/intercom{ - pixel_x = 30 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "gjI" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -25373,24 +25429,6 @@ }, /turf/open/floor/noslip, /area/medical/genetics/cloning) -"huY" = ( -/obj/machinery/airalarm{ - pixel_y = 24 - }, -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/folder/yellow, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "hva" = ( /obj/structure/table, /obj/item/camera, @@ -29807,6 +29845,20 @@ }, /turf/open/floor/plasteel, /area/teleporter) +"iKJ" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "iKL" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -30153,6 +30205,14 @@ /obj/structure/grille/broken, /turf/open/floor/plating/asteroid/snow/icemoon/top_layer, /area/icemoon/top_layer/outdoors) +"iOY" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/trimline/brown/warning/lower{ + dir = 8 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "iPc" = ( /mob/living/simple_animal/cow{ name = "Betsy"; @@ -33945,6 +34005,18 @@ /obj/effect/turf_decal/trimline/brown/filled/line/lower, /turf/open/floor/plasteel/dark/telecomms, /area/tcommsat/server) +"jRo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "jRr" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -34548,15 +34620,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) -"kba" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "kbl" = ( /obj/structure/window/reinforced, /obj/machinery/power/terminal{ @@ -35118,13 +35181,6 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) -"kiR" = ( -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/trimline/brown/warning/lower{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "kjc" = ( /obj/machinery/door/airlock/medical{ name = "Patient Room B"; @@ -38258,6 +38314,25 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/white, /area/science/research) +"leT" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Cargo - Foyer"; + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 4 + }, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/folder/yellow, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "lfd" = ( /obj/structure/sign/warning/vacuum/external{ pixel_y = 32 @@ -39162,6 +39237,25 @@ }, /turf/open/floor/plasteel/white, /area/medical/storage) +"lqH" = ( +/obj/structure/noticeboard{ + desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; + name = "requests board"; + pixel_x = 32; + pixel_y = 32 + }, +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + pixel_y = 30 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 9 + }, +/obj/structure/table, +/obj/item/toner, +/turf/open/floor/plasteel, +/area/quartermaster/office) "lqP" = ( /obj/structure/window/reinforced{ dir = 1 @@ -39667,20 +39761,6 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) -"lzO" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "lAg" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -43359,13 +43439,6 @@ }, /turf/open/floor/plating, /area/security/prison/hallway) -"mAG" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "mAN" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/yellow{ @@ -44674,22 +44747,6 @@ }, /turf/open/floor/plating, /area/maintenance/aft) -"mRA" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "mRI" = ( /obj/structure/table, /obj/machinery/button/door{ @@ -52873,24 +52930,6 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) -"pjv" = ( -/obj/structure/noticeboard{ - desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; - name = "requests board"; - pixel_x = 32; - pixel_y = 32 - }, -/obj/machinery/requests_console{ - department = "Cargo Bay"; - departmentType = 2; - pixel_y = 30 - }, -/obj/machinery/computer/bounty, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "pjw" = ( /obj/machinery/light/small{ dir = 4 @@ -55577,6 +55616,18 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) +"pYX" = ( +/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "pZa" = ( /obj/structure/sign/plaques/kiddie/perfect_drone{ pixel_y = 32 @@ -59119,18 +59170,6 @@ }, /turf/open/floor/plasteel, /area/mine/living_quarters) -"qZr" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "qZu" = ( /obj/effect/turf_decal/loading_area{ dir = 4 @@ -59701,6 +59740,15 @@ }, /turf/open/floor/plasteel/dark, /area/teleporter) +"rjj" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 4 + }, +/obj/machinery/conveyor_switch{ + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "rjn" = ( /obj/structure/sign/warning/fire{ pixel_y = -32 @@ -64339,22 +64387,6 @@ /obj/effect/spawner/lootdrop/mob/kitchen_animal, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) -"syx" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "Cargo - Foyer"; - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "syR" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -65103,22 +65135,6 @@ }, /turf/open/floor/plasteel, /area/engine/atmos/distro) -"sKa" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 - }, -/obj/effect/turf_decal/trimline/brown/filled/corner/lower, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "sKi" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -65134,6 +65150,22 @@ }, /turf/open/floor/wood, /area/medical/psych) +"sKK" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "sKP" = ( /obj/item/storage/box/lights/mixed, /turf/open/floor/plating, @@ -67693,16 +67725,6 @@ }, /turf/open/floor/plasteel, /area/security/prison) -"tsN" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen" - }, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "tsY" = ( /obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -69084,6 +69106,26 @@ }, /turf/open/floor/plating, /area/maintenance/aft) +"tPX" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "tQb" = ( /obj/effect/turf_decal/trimline/yellow/filled/corner/lower{ dir = 1 @@ -70327,16 +70369,6 @@ /obj/machinery/atmospherics/pipe/simple/green/visible, /turf/closed/wall/r_wall, /area/engine/atmos/distro) -"ugW" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/landmark/start/assistant, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "uha" = ( /turf/closed/wall, /area/crew_quarters/theatre) @@ -71298,6 +71330,22 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/maintenance/starboard) +"uuK" = ( +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "uuW" = ( /obj/structure/closet/crate, /obj/item/storage/belt/utility, @@ -83777,39 +83825,6 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) -"xNl" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/rack, -/obj/item/storage/box, -/obj/item/storage/box, -/obj/item/storage/box, -/obj/item/stack/packageWrap{ - pixel_x = 2; - pixel_y = -3 - }, -/obj/item/stack/packageWrap{ - pixel_x = 2; - pixel_y = -3 - }, -/obj/item/stack/packageWrap{ - pixel_x = 2; - pixel_y = -3 - }, -/obj/item/hand_labeler, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "xNp" = ( /obj/machinery/camera{ c_tag = "Cryogenics"; @@ -85118,6 +85133,18 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/white, /area/medical/virology) +"yeD" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/computer/bounty{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "yeI" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -236561,7 +236588,7 @@ rXH cEd rSs oDL -pjv +lqH txU mKm boy @@ -237066,7 +237093,7 @@ rQz rNk mKF rNk -bgQ +aLp iZL exg iDS @@ -237333,14 +237360,14 @@ kPd uFA aNL cvP -kiR +iOY cIE cIE jic xcl -tsN -xZv -jLK +xcl +cAC +mTD eSb liR mOp @@ -237595,10 +237622,10 @@ nth axk hXn scN -mAG -faX -mTD -eSb +cyT +sKK +pYX +iKJ scN mOp gnL @@ -237852,10 +237879,10 @@ eHn scN cXK scN -sKa -mRA -qZr -lzO +tPX +xZv +jLK +jRo aOX mOp mOp @@ -238108,8 +238135,8 @@ ruD ruD ruD jIg -kba -xNl +yeD +coy xZv jLK vSx @@ -238360,13 +238387,13 @@ fHY pgm fap rNk -huY -syx -bMO +uuK +leT +fwS qDP nHU -ugW -gjH +rjj +fWG xZv jLK vSx diff --git a/_maps/map_files/YogStation/YogStation.dmm b/_maps/map_files/YogStation/YogStation.dmm index bef3f0129778..8962af5f4a5a 100644 --- a/_maps/map_files/YogStation/YogStation.dmm +++ b/_maps/map_files/YogStation/YogStation.dmm @@ -6769,15 +6769,6 @@ }, /turf/open/floor/grass, /area/medical/genetics) -"aWM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "aXb" = ( /obj/structure/cable{ icon_state = "2-4" @@ -8861,19 +8852,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) -"bpA" = ( -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "bpO" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 @@ -9087,19 +9065,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) -"brM" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "brO" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/turf_decal/trimline/blue/filled/corner/lower, @@ -14380,6 +14345,21 @@ "ctR" = ( /turf/open/floor/engine/n2, /area/engine/atmos/distro) +"cuh" = ( +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Quartermaster's Desk"; + departmentType = 2; + pixel_x = -30 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 9 + }, +/obj/machinery/computer/cargo{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "cuj" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/wood/large, @@ -15929,15 +15909,6 @@ }, /turf/open/floor/plasteel, /area/construction/mining/aux_base) -"cQL" = ( -/obj/machinery/computer/bounty{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "cRb" = ( /obj/structure/table, /obj/item/stock_parts/subspace/amplifier, @@ -16933,10 +16904,6 @@ }, /turf/open/floor/engine/n2, /area/engine/atmos/distro) -"dls" = ( -/obj/effect/turf_decal/trimline/brown/filled/line/lower, -/turf/open/floor/plasteel, -/area/quartermaster/office) "dlt" = ( /obj/machinery/door/airlock{ name = "Law Office"; @@ -17378,6 +17345,14 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/plasteel/dark, /area/engine/engine_smes) +"dto" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "dtp" = ( /obj/effect/landmark/stationroom/maint/fivexfour, /turf/template_noop, @@ -18199,6 +18174,15 @@ /obj/effect/turf_decal/trimline/blue/filled/line/lower, /turf/open/floor/plasteel, /area/hallway/primary/starboard) +"dIG" = ( +/obj/machinery/light_switch{ + pixel_x = -27 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "dIK" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -19794,18 +19778,6 @@ }, /turf/open/floor/plating/airless, /area/security/prison) -"enf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "enr" = ( /obj/effect/turf_decal/trimline/purple/filled/corner/lower{ dir = 4 @@ -21375,6 +21347,29 @@ }, /turf/open/floor/plating, /area/maintenance/aft) +"eNa" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Cargo Office"; + req_access_txt = "50" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/turf/open/floor/plasteel, +/area/quartermaster/office) "eNl" = ( /obj/structure/lattice/catwalk, /obj/structure/cable/yellow{ @@ -21726,6 +21721,16 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/plasteel, /area/crew_quarters/locker) +"eUy" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "eUI" = ( /obj/item/storage/secure/briefcase, /obj/structure/closet/secure_closet/personal, @@ -24053,18 +24058,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/storage/tech) -"fIn" = ( -/obj/machinery/computer/cargo{ - dir = 4 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "fIo" = ( /obj/machinery/hydroponics/soil, /turf/open/floor/plasteel, @@ -25056,6 +25049,15 @@ /obj/item/hand_labeler, /turf/open/floor/plasteel/vaporwave, /area/storage/art) +"gbY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "gcc" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -26633,6 +26635,22 @@ }, /turf/open/floor/plasteel/white, /area/science/research) +"gHI" = ( +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + pixel_x = -30 + }, +/obj/machinery/camera{ + c_tag = "Cargo Office"; + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 8 + }, +/obj/machinery/autolathe, +/turf/open/floor/plasteel, +/area/quartermaster/office) "gHM" = ( /obj/machinery/air_sensor{ id_tag = "tox_sensor" @@ -27964,6 +27982,16 @@ }, /turf/open/floor/plasteel, /area/security/processing) +"hfj" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/obj/structure/table, +/obj/machinery/photocopier/faxmachine{ + density = 0; + department = "Quartermaster"; + name = "Quartermaster's Fax Machine" + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "hfr" = ( /turf/closed/wall/r_wall, /area/space/nearstation) @@ -28949,16 +28977,6 @@ }, /turf/open/floor/stone, /area/crew_quarters/heads/captain) -"huO" = ( -/obj/structure/table, -/obj/machinery/photocopier/faxmachine{ - density = 0; - department = "Quartermaster"; - name = "Quartermaster's Fax Machine" - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "huX" = ( /obj/machinery/smartfridge/chemistry, /turf/closed/wall, @@ -31833,16 +31851,6 @@ }, /turf/open/floor/plasteel/white, /area/medical/genetics) -"ird" = ( -/obj/machinery/autolathe, -/obj/machinery/light_switch{ - pixel_x = -27 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "irm" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -32570,6 +32578,18 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"iFE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "iFF" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -32927,6 +32947,14 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel, /area/engine/atmos/distro) +"iLM" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 10 + }, +/obj/structure/table, +/obj/item/folder/yellow, +/turf/open/floor/plasteel, +/area/quartermaster/office) "iLO" = ( /obj/machinery/door/airlock/security/glass{ name = "Prisoner Processing"; @@ -35282,6 +35310,14 @@ }, /turf/open/floor/plasteel/dark, /area/tcommsat/storage) +"jCZ" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/chair/office/dark, +/obj/effect/landmark/start/quartermaster, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "jDa" = ( /obj/structure/table/wood, /obj/item/folder/blue, @@ -39491,19 +39527,6 @@ }, /turf/open/floor/plasteel, /area/security/prison) -"lld" = ( -/obj/structure/table, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = -26 - }, -/obj/item/storage/firstaid/regular, -/obj/item/multitool, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "llg" = ( /obj/machinery/light/small{ dir = 8 @@ -39589,6 +39612,18 @@ }, /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet/locker) +"llO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "llT" = ( /obj/machinery/airalarm{ dir = 1; @@ -39801,6 +39836,19 @@ /obj/structure/lattice, /turf/closed/wall/r_wall, /area/security/execution/transfer) +"loZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/corner/lower, +/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "lpj" = ( /obj/effect/turf_decal/trimline/purple/filled/line/lower{ dir = 1 @@ -40245,22 +40293,6 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"lzh" = ( -/obj/machinery/requests_console{ - department = "Cargo Bay"; - departmentType = 2; - pixel_x = -30 - }, -/obj/machinery/camera{ - c_tag = "Cargo Office"; - dir = 4 - }, -/obj/machinery/papershredder, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "lzw" = ( /obj/effect/turf_decal/trimline/engiyellow/filled/line/lower{ dir = 1 @@ -40546,16 +40578,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) -"lGw" = ( -/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/quartermaster/office) "lGB" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/effect/turf_decal/tile{ @@ -41702,6 +41724,17 @@ }, /turf/open/floor/plating, /area/maintenance/aft) +"mdI" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/obj/structure/table, +/obj/item/storage/pencil_holder/crew/fancy{ + pixel_y = 12 + }, +/obj/item/folder/yellow, +/obj/item/coin/silver, +/obj/item/pen/red, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "mel" = ( /obj/structure/table, /obj/machinery/photocopier/faxmachine{ @@ -41887,6 +41920,10 @@ /obj/item/flashlight/lamp, /turf/open/floor/plasteel/dark, /area/security/prison) +"mgT" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "mhB" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -45307,29 +45344,6 @@ }, /turf/open/floor/plasteel, /area/vacant_room/commissary) -"nsk" = ( -/obj/machinery/door/airlock/mining/glass{ - name = "Cargo Office"; - req_access_txt = "50" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower, -/turf/open/floor/plasteel, -/area/quartermaster/office) "nsn" = ( /obj/machinery/door/poddoor/preopen{ id = "heads_meeting"; @@ -46075,6 +46089,15 @@ }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) +"nEU" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 4 + }, +/obj/machinery/conveyor_switch{ + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "nFd" = ( /obj/machinery/door/airlock/external{ name = "Solar Maintenance"; @@ -47449,6 +47472,14 @@ }, /turf/open/floor/plasteel/dark, /area/engine/engine_smes) +"ohP" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/obj/machinery/conveyor{ + dir = 8; + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "oif" = ( /obj/effect/turf_decal/trimline/secred/filled/line/lower, /turf/open/floor/plasteel, @@ -47647,19 +47678,6 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) -"olp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/filled/corner/lower, -/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "olG" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/holopad, @@ -48877,12 +48895,6 @@ }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) -"oJt" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "oJT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 @@ -48932,6 +48944,12 @@ }, /turf/open/floor/plating, /area/maintenance/aft) +"oKA" = ( +/obj/machinery/computer/bounty{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "oKX" = ( /obj/item/radio/intercom{ name = "Station Intercom (General)"; @@ -49004,6 +49022,15 @@ }, /turf/open/floor/plasteel, /area/engine/atmos/mix) +"oLy" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/obj/machinery/conveyor{ + dir = 8; + id = "bounty" + }, +/obj/machinery/bounty_packager, +/turf/open/floor/plasteel, +/area/quartermaster/office) "oLD" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 @@ -49158,17 +49185,6 @@ "oNF" = ( /turf/open/floor/stone, /area/crew_quarters/heads/captain) -"oNS" = ( -/obj/structure/table, -/obj/item/coin/silver, -/obj/item/folder/yellow, -/obj/item/pen/red, -/obj/effect/turf_decal/trimline/brown/filled/line/lower, -/obj/item/storage/pencil_holder/crew/fancy{ - pixel_y = 12 - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "oNV" = ( /obj/item/kirbyplants/random, /obj/machinery/firealarm{ @@ -49843,6 +49859,15 @@ }, /turf/open/floor/plasteel/grimy, /area/security/detectives_office) +"pdN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "pdZ" = ( /obj/machinery/holopad, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ @@ -51931,15 +51956,6 @@ /obj/item/stock_parts/subspace/treatment, /turf/open/floor/plasteel/white, /area/storage/tech) -"pPs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "pPt" = ( /obj/structure/grille, /obj/machinery/meter{ @@ -52359,6 +52375,17 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/white, /area/science/research) +"pVP" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -26 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 8 + }, +/obj/machinery/papershredder, +/turf/open/floor/plasteel, +/area/quartermaster/office) "pVW" = ( /obj/item/kirbyplants/random, /obj/machinery/door/firedoor/border_only{ @@ -55211,6 +55238,15 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood/parquet, /area/crew_quarters/bar) +"qWb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "qWk" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -55714,6 +55750,21 @@ }, /turf/open/floor/plasteel, /area/teleporter) +"rge" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "rgh" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -55798,14 +55849,6 @@ }, /turf/open/floor/plasteel/white, /area/science/research) -"rie" = ( -/obj/structure/table, -/obj/item/folder/yellow, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "rig" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 4; @@ -56177,15 +56220,6 @@ "rpB" = ( /turf/open/floor/carpet, /area/crew_quarters/bar) -"rpC" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "rqi" = ( /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 1 @@ -57027,6 +57061,19 @@ /obj/structure/grille/broken, /turf/open/space/basic, /area/space/nearstation) +"rFF" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 8 + }, +/obj/machinery/modular_computer/console/preset/cargo/qm{ + dir = 4 + }, +/obj/item/toy/figure/qm, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "rFH" = ( /obj/effect/turf_decal/ramp_middle{ dir = 1 @@ -58773,17 +58820,6 @@ /obj/effect/turf_decal/trimline/engiyellow/filled/corner/lower, /turf/open/floor/plasteel, /area/engine/foyer) -"skz" = ( -/obj/structure/chair/office/dark, -/obj/effect/landmark/start/quartermaster, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "skM" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -59142,18 +59178,6 @@ }, /turf/open/floor/plasteel/white, /area/medical/medbay/aft) -"stm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "stn" = ( /obj/machinery/door/airlock/external{ name = "Atmospherics External Airlock"; @@ -59192,6 +59216,21 @@ }, /turf/open/floor/plating, /area/ai_monitored/storage/satellite) +"stX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "sud" = ( /obj/structure/cable{ icon_state = "2-4" @@ -63014,21 +63053,6 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/security/main) -"tOZ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "tPj" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 @@ -63632,6 +63656,21 @@ }, /turf/open/space, /area/space) +"uak" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "uar" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -67057,21 +67096,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/heads/chief) -"vpX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "vqa" = ( /obj/machinery/holopad, /obj/effect/turf_decal/box/white{ @@ -68065,21 +68089,6 @@ /obj/structure/table/wood, /turf/open/floor/plasteel, /area/crew_quarters/dorms) -"vGJ" = ( -/obj/machinery/requests_console{ - announcementConsole = 1; - department = "Quartermaster's Desk"; - departmentType = 2; - pixel_x = -30 - }, -/obj/machinery/computer/bounty{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "vGL" = ( /obj/structure/table, /obj/machinery/button/door{ @@ -68877,6 +68886,19 @@ }, /turf/open/floor/plasteel, /area/quartermaster/office) +"vUT" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "vVb" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 @@ -69373,19 +69395,6 @@ "wec" = ( /turf/template_noop, /area/medical/morgue) -"wem" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/light, -/obj/structure/sign/departments/minsky/security/security{ - pixel_y = -32 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "wen" = ( /obj/structure/bed, /obj/item/bedsheet/red, @@ -69604,14 +69613,6 @@ }, /turf/open/floor/plasteel, /area/security/checkpoint/science) -"wit" = ( -/obj/machinery/modular_computer/console/preset/cargo/qm{ - dir = 1 - }, -/obj/item/toy/figure/qm, -/obj/effect/turf_decal/trimline/brown/filled/line/lower, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "wiz" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 @@ -70232,6 +70233,19 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"wva" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "wvg" = ( /obj/machinery/door/airlock/mining/glass{ name = "Cargo Bay"; @@ -70886,6 +70900,20 @@ /obj/effect/spawner/structure/window/reinforced/shutter, /turf/open/floor/plating, /area/tcommsat/computer) +"wJX" = ( +/obj/machinery/light, +/obj/structure/sign/departments/minsky/security/security{ + pixel_y = -32 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 6 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "wKy" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -70942,14 +70970,6 @@ }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) -"wLb" = ( -/obj/structure/disposalpipe/trunk, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 1 - }, -/obj/machinery/disposal/bin/tagger, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "wLh" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 @@ -74360,6 +74380,15 @@ }, /turf/open/floor/plasteel, /area/security/checkpoint/supply) +"yaW" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 8 + }, +/obj/structure/table, +/obj/item/storage/firstaid/regular, +/obj/item/multitool, +/turf/open/floor/plasteel, +/area/quartermaster/office) "ybd" = ( /obj/structure/table/glass, /obj/structure/extinguisher_cabinet{ @@ -74651,21 +74680,6 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"yhe" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "yhk" = ( /obj/structure/table, /obj/item/flashlight, @@ -95928,8 +95942,8 @@ bjr bjr rvc bxu -vGJ -fIn +cuh +rFF nVq bxu aaa @@ -96186,8 +96200,8 @@ bjr sLv bxu mqt -oJt -huO +jCZ +mgT sOj aaa aaa @@ -96444,7 +96458,7 @@ uWZ edT obs kTR -oNS +hfj sOj aaa aaa @@ -96700,8 +96714,8 @@ qas ujQ byz kuY -skz -wit +pdN +mdI sOj aaf aaf @@ -96956,7 +96970,7 @@ tJW qOe bub byz -wLb +dto bzP clf sOj @@ -97462,13 +97476,13 @@ bhW sES aan ivQ -yhe +rge gzl -ird -lzh -lld -rie -cQL +dIG +gHI +pVP +yaW +iLM bxu byz rDa @@ -97719,7 +97733,7 @@ bhW oaG ycm ngZ -enf +llO bbR bbR bbR @@ -97979,7 +97993,7 @@ pFb ucg oBH oBH -brM +vUT vUJ aXc dYn @@ -98236,7 +98250,7 @@ bjj qAt bbR pfK -pPs +gbY bbR fAv iRA @@ -98493,7 +98507,7 @@ bjl gwQ phL atU -olp +loZ uEI urT nKP @@ -98750,7 +98764,7 @@ bjl kHL uqN kHL -nsk +eNa kHL kHL bwe @@ -99007,7 +99021,7 @@ bjl dBh xJY sZy -tOZ +uak gzl idR bzy @@ -99261,12 +99275,12 @@ mqp mqp bct lMB -lGw +eUy cPP -stm -aWM +iFE +qWb bnx -dls +ohP bzy diJ bvI @@ -99520,10 +99534,10 @@ fIc fUQ nwD bbR -bpA +wva blp -bbR -dls +oKA +oLy bzy yaO kSb @@ -99777,10 +99791,10 @@ iHV fUQ fKl uEI -vpX +stX ilc -rpC -wem +nEU +wJX bwe cdM bRh diff --git a/code/__DEFINES/economy.dm b/code/__DEFINES/economy.dm index 94c029ad6ac9..2261bb31c1ee 100644 --- a/code/__DEFINES/economy.dm +++ b/code/__DEFINES/economy.dm @@ -44,3 +44,19 @@ #define MEGAFAUNA_CASH_SCALE 2 #define NO_FREEBIES "commies go home" + +//Defines that set what kind of civilian bounties should be applied mid-round. +#define CIV_JOB_BASIC 1 +#define CIV_JOB_ROBO 2 +#define CIV_JOB_CHEF 3 +#define CIV_JOB_SEC 4 +#define CIV_JOB_DRINK 5 +#define CIV_JOB_CHEM 6 +#define CIV_JOB_VIRO 7 +#define CIV_JOB_SCI 8 +#define CIV_JOB_XENO 9 +#define CIV_JOB_MINE 10 +#define CIV_JOB_MED 11 +#define CIV_JOB_GROW 12 +#define CIV_JOB_ATMOS 13 +#define CIV_JOB_RANDOM 14 // Must be the last index diff --git a/code/datums/components/pricetag.dm b/code/datums/components/pricetag.dm new file mode 100644 index 000000000000..56a4de836ead --- /dev/null +++ b/code/datums/components/pricetag.dm @@ -0,0 +1,71 @@ +/* + * Pricetag component. + * + * Used when exporting items via the cargo system. + * Gives a cut of the profit to one or multiple bank accounts. + */ +/datum/component/pricetag + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + /// List of bank accounts this pricetag pays out to. Format is payees[bank_account] = profit_ratio. + var/list/payees = list() + +/datum/component/pricetag/Initialize(pay_to_account, profit_ratio = 1) + if(!isobj(parent)) //Has to account for both objects and sellable structures like crates. + return COMPONENT_INCOMPATIBLE + + if(isnull(pay_to_account)) + stack_trace("[type] component was added to something without a pay_to_account!") + return COMPONENT_INCOMPATIBLE + + payees[pay_to_account] = profit_ratio + +/datum/component/pricetag/RegisterWithParent() + RegisterSignal(parent, COMSIG_ITEM_EXPORTED, PROC_REF(on_parent_sold)) + +/datum/component/pricetag/UnregisterFromParent() + UnregisterSignal(parent, COMSIG_ITEM_EXPORTED) + +/* + * Inheriting an incoming / new version of price tag: + * + * If the account passed in the incoming version is already in our list, + * only override it if the ratio is better for the payee + * + * If the account passed in the incoming version is not in our list, add it like normal. + */ +/datum/component/pricetag/InheritComponent(datum/component/pricetag/new_comp, i_am_original, argslist) + var/pay_to_account = argslist[1] + var/profit_ratio = argslist[2] + if(!isnull(payees[pay_to_account]) && payees[pay_to_account] >= profit_ratio) // They're already getting a better ratio, don't scam them + return + + payees[pay_to_account] = profit_ratio + +/* + * Signal proc for [COMSIG_ITEM_EXPORTED]. + * + * Pays out money to everyone in the payees list. + */ +/datum/component/pricetag/proc/on_parent_sold(obj/source, datum/export/export, datum/export_report/report, item_value) + + if(!isnum(item_value)) + return + + // Gotta see how much money we've lost by the end of things. + var/overall_item_price = item_value + + for(var/datum/bank_account/payee as anything in payees) + // Every payee with a ratio gets a cut based on the item's total value + var/payee_cut = round(item_value * payees[payee]) + // And of course, the cut is removed from what cargo gets. (But not below zero, just in case) + overall_item_price = max(0, overall_item_price - payee_cut) + + payee.adjust_money(payee_cut) + payee.bank_card_talk("Sale of [source] recorded. [payee_cut] credits added to account.") + + // Update the report with the modified final price + report.total_value[export] += overall_item_price + report.total_amount[export] += export.get_amount(source) + + // And ensure we don't double-add to the report + return COMPONENT_STOP_EXPORT_REPORT diff --git a/code/game/machinery/bounty_packager.dm b/code/game/machinery/bounty_packager.dm new file mode 100644 index 000000000000..a0d4e189e2a8 --- /dev/null +++ b/code/game/machinery/bounty_packager.dm @@ -0,0 +1,172 @@ +GLOBAL_DATUM(bounty_packager, /obj/machinery/bounty_packager) + +/obj/machinery/bounty_packager + name = "\improper Nanotrasen Bounty Encapsulation Device" + desc = "A large metallic machine with an entrance and an exit. A sign on \ + the side reads, 'bounty go in, cube come out'." + icon = 'icons/obj/recycling.dmi' + icon_state = "grinder-b1" + layer = ABOVE_ALL_MOB_LAYER // Overhead + density = TRUE + var/datum/bounty/selected_bounty + var/obj/machinery/computer/bounty/linked_console + +/obj/machinery/bounty_packager/Initialize(mapload) + . = ..() + if(mapload && !GLOB.bounty_packager) + GLOB.bounty_packager = src + +/obj/machinery/bounty_packager/update_icon() + ..() + if(stat & (BROKEN|NOPOWER)) + icon_state = "grinder-b0" + else + icon_state = initial(icon_state) + +/obj/machinery/bounty_packager/Bumped(atom/movable/AM) + if(!selected_bounty) + return + if(selected_bounty.applies_to(AM)) + AM.forceMove(drop_location()) + selected_bounty.ship(AM) + if(istype(AM, /obj/mecha)) + for(var/mob/thing as anything in AM.client_mobs_in_contents) // Get pilot out of mech + thing.forceMove(drop_location()) + qdel(AM) + if(!selected_bounty.can_claim()) + return + var/obj/item/bounty_cube/cube = new(drop_location()) + cube.set_up(selected_bounty) + selected_bounty.claim() + selected_bounty = null + +/obj/machinery/bounty_packager/multitool_act(mob/living/user, obj/item/I) + var/obj/item/multitool/multitool = I + if(!istype(multitool)) return FALSE + if(!istype(multitool.buffer, /obj/machinery/computer/bounty)) + multitool.buffer = src + to_chat(user, span_notice("[src] stored in [I]")) + return TRUE + + linked_console = multitool.buffer + linked_console.linked_packager = src + to_chat(user, span_notice("[src] has been linked to [linked_console]")) + return TRUE + + +/obj/item/bounty_cube + name = "bounty cube" + desc = "A neatly packaged bounty for transport back to central command. Place this on the cargo shuttle to get your reward!" + icon = 'icons/obj/economy.dmi' + icon_state = "bounty_cube" + + ///Value of the bounty that this bounty cube sells for. + var/bounty_value = 0 + ///Multiplier for the bounty payout received by the Supply budget if the cube is sent without having to nag. + var/speed_bonus = 0.2 + ///Multiplier for the bounty payout received by the person who completed the bounty. + var/holder_cut = 0.3 + ///Multiplier for the bounty payout received by the person who claims the handling tip. + var/handler_tip = 0.1 + ///Time between nags. + var/nag_cooldown = 5 MINUTES + ///How much the time between nags extends each nag. + var/nag_cooldown_multiplier = 1.25 + ///Next world tick to nag Supply listeners. + var/next_nag_time + ///Who completed the bounty. + var/bounty_holder + ///What job the bounty holder had. + var/datum/job/bounty_holder_job + ///What the bounty was for. + var/bounty_name + ///Bank account of the person who completed the bounty. + var/datum/bank_account/bounty_holder_account + ///Bank account of the person who receives the handling tip. + var/datum/bank_account/bounty_handler_account + ///Our internal radio. + var/obj/item/radio/radio + ///The key our internal radio uses. + var/radio_key = /obj/item/encryptionkey/headset_cargo + +/obj/item/bounty_cube/Initialize(mapload) + . = ..() + radio = new(src) + radio.keyslot = new radio_key + radio.listening = FALSE + radio.recalculateChannels() + RegisterSignal(radio, COMSIG_ITEM_PRE_EXPORT, PROC_REF(on_export)) + +/obj/item/bounty_cube/Destroy() + UnregisterSignal(radio, COMSIG_ITEM_PRE_EXPORT) + QDEL_NULL(radio) + return ..() + +/obj/item/bounty_cube/proc/on_export() + SIGNAL_HANDLER + + QDEL_NULL(radio) + return COMPONENT_STOP_EXPORT + +/obj/item/bounty_cube/examine() + . = ..() + if(speed_bonus) + . += span_notice("[time2text(next_nag_time - world.time,"mm:ss")] remains until [bounty_value * speed_bonus] credit speedy delivery bonus lost.") + if(handler_tip && !bounty_handler_account) + . += span_notice("Scan this in the cargo shuttle with an export scanner to register your bank account for the [bounty_value * handler_tip] credit handling tip.") + +/obj/item/bounty_cube/process(delta_time) + //if our nag cooldown has finished and we aren't on Centcom or in transit, then nag + if(COOLDOWN_FINISHED(src, next_nag_time) && !is_centcom_level(z) && !is_reserved_level(z)) + //set up our nag message + var/nag_message = "[src] is unsent in [get_area(src)]." + + //nag on Supply channel and reduce the speed bonus multiplier to nothing + var/speed_bonus_lost = "[speed_bonus ? " Speedy delivery bonus of [bounty_value * speed_bonus] credit\s lost." : ""]" + radio.talk_into(src, "[nag_message][speed_bonus_lost]", RADIO_CHANNEL_SUPPLY) + speed_bonus = 0 + + //alert the holder + bounty_holder_account.bank_card_talk("[nag_message]") + + //if someone has registered for the handling tip, nag them + bounty_handler_account?.bank_card_talk(nag_message) + + //increase our cooldown length and start it again + nag_cooldown = nag_cooldown * nag_cooldown_multiplier + COOLDOWN_START(src, next_nag_time, nag_cooldown) + +/obj/item/bounty_cube/proc/set_up(datum/bounty/my_bounty) + bounty_value = my_bounty.reward + bounty_name = my_bounty.name + bounty_holder = my_bounty.account.account_holder + bounty_holder_job = my_bounty.account.account_job + bounty_holder_account = my_bounty.account + name = "\improper [bounty_value] cr [name]" + desc += " The sales tag indicates it contains [bounty_holder] ([bounty_holder_job.title])'s [bounty_name] bounty." + AddComponent(/datum/component/pricetag, bounty_holder_account, holder_cut) + START_PROCESSING(SSobj, src) + COOLDOWN_START(src, next_nag_time, nag_cooldown) + radio.talk_into(src,"Created in [get_area(src)] by [bounty_holder] ([bounty_holder_job.title]). Speedy delivery bonus lost in [time2text(next_nag_time - world.time,"mm:ss")].", RADIO_CHANNEL_SUPPLY) + +/obj/item/bounty_cube/debug_cube + name = "debug bounty cube" + desc = "Use in-hand to set it up with a random bounty. Requires an ID it can detect with a bank account attached. \ + This will alert Supply over the radio with your name and location, and cargo techs will be dispatched with kill on sight clearance." + var/set_up = FALSE + +/obj/item/bounty_cube/debug_cube/attack_self(mob/user) + if(!isliving(user)) + to_chat(user, span_warning("You aren't eligible to use this!")) + return ..() + + if(!set_up) + var/mob/living/squeezer = user + var/obj/item/card/id/id = squeezer.get_idcard() + if(id?.registered_account) + set_up(random_bounty(CIV_JOB_RANDOM, id.registered_account), id) + set_up = TRUE + return ..() + to_chat(user, span_notice("It can't detect your bank account.")) + + return ..() diff --git a/code/modules/cargo/bounties/special.dm b/code/modules/cargo/bounties/special.dm index fce400e49f20..4936727dcfbd 100644 --- a/code/modules/cargo/bounties/special.dm +++ b/code/modules/cargo/bounties/special.dm @@ -25,24 +25,3 @@ reward = 35000 required_count = 10 wanted_types = list(/obj/item/stack/sheet/mineral/adamantine) - -/datum/bounty/more_bounties - name = "More Bounties" - description = "Complete enough bounties and CentCom will issue new ones!" - reward = 5 // number of bounties - var/required_bounties = 5 - -/datum/bounty/more_bounties/can_claim() - return ..() && completed_bounty_count() >= required_bounties - -/datum/bounty/more_bounties/completion_string() - return "[min(required_bounties, completed_bounty_count())]/[required_bounties] Bounties" - -/datum/bounty/more_bounties/reward_string() - return "Up to [reward] new bounties" - -/datum/bounty/more_bounties/claim() - if(can_claim()) - claimed = TRUE - for(var/i = 0; i < reward; ++i) - try_add_bounty(random_bounty()) diff --git a/code/modules/cargo/bounty.dm b/code/modules/cargo/bounty.dm index 2a98d2caa9ec..9db5b362f04c 100644 --- a/code/modules/cargo/bounty.dm +++ b/code/modules/cargo/bounty.dm @@ -1,11 +1,13 @@ -GLOBAL_LIST_EMPTY(bounties_list) - /datum/bounty var/name var/description var/reward = 1000 // In credits. var/claimed = FALSE var/high_priority = FALSE + var/datum/bank_account/account + +/datum/bounty/New(datum/bank_account/account) + src.account = account //SYNDICATE BOUNTY /datum/bounty/syndicate @@ -22,15 +24,17 @@ GLOBAL_LIST_EMPTY(bounties_list) /datum/bounty/proc/can_claim() return !claimed -// Called when the claim button is clicked. Override to provide fancy rewards. -/datum/bounty/proc/claim(mob/user) +// Called when the bounty cube is created +/datum/bounty/proc/claim() if(can_claim()) - var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) - if(D) - D.adjust_money(reward * SSeconomy.bounty_modifier) - D.bounties_claimed += 1 - if(D.bounties_claimed == 10) - SSachievements.unlock_achievement(/datum/achievement/cargo/bounties, user.client) + account.bounties_claimed += 1 + if(account.bounties_claimed == 10) + //So we currently only know what is *supposed* to be the real_name of the client's mob. If we can find them, we can get them this achievement. + for(var/x in GLOB.player_list) + var/mob/M = x + if(M.real_name == account.account_holder) + SSachievements.unlock_achievement(/datum/achievement/cargo/bounties, M.client) + //break would result in the possibility of this being given to changeling who has duplicated the shipper, and not to the actual shipper. claimed = TRUE // If an item sent in the cargo shuttle can satisfy the bounty. @@ -52,159 +56,59 @@ GLOBAL_LIST_EMPTY(bounties_list) high_priority = TRUE reward = round(reward * scale_reward) -// This proc is called when the shuttle docks at CentCom. -// It handles items shipped for bounties. -/proc/bounty_ship_item_and_contents(atom/movable/AM, dry_run=FALSE) - if(!GLOB.bounties_list.len) - setup_bounties() - - var/list/matched_one = FALSE - for(var/thing in reverse_range(AM.get_all_contents())) - var/matched_this = FALSE - for(var/datum/bounty/B as anything in GLOB.bounties_list) - if(B.applies_to(thing)) - matched_one = TRUE - matched_this = TRUE - if(!dry_run) - B.ship(thing) - if(!dry_run && matched_this) - qdel(thing) - return matched_one - -// Returns FALSE if the bounty is incompatible with the current bounties. -/proc/try_add_bounty(datum/bounty/new_bounty) - if(!new_bounty || !new_bounty.name || !new_bounty.description) - return FALSE - for(var/i in GLOB.bounties_list) - var/datum/bounty/B = i - if(!B.compatible_with(new_bounty) || !new_bounty.compatible_with(B)) - return FALSE - GLOB.bounties_list += new_bounty - return TRUE - // Returns a new bounty of random type, but does not add it to GLOB.bounties_list. -/proc/random_bounty() - switch(rand(1, 15)) - if(1) - var/subtype = pick(subtypesof(/datum/bounty/item/assistant)) - return new subtype - if(2) - var/subtype = pick(subtypesof(/datum/bounty/item/mech)) - return new subtype - if(3) - var/subtype = pick(subtypesof(/datum/bounty/item/chef)) - return new subtype - if(4) - var/subtype = pick(subtypesof(/datum/bounty/item/security)) - return new subtype - if(5) - if(rand(2) == 1) - return new /datum/bounty/reagent/simple_drink - return new /datum/bounty/reagent/complex_drink - if(6) - if(rand(2) == 1) - return new /datum/bounty/reagent/chemical_simple - return new /datum/bounty/reagent/chemical_complex - if(7) - var/subtype = pick(subtypesof(/datum/bounty/virus)) - return new subtype - if(8) - var/subtype = pick(subtypesof(/datum/bounty/item/science)) - return new subtype - if(9) - var/subtype = pick(subtypesof(/datum/bounty/item/slime)) - return new subtype - if(10) - var/subtype = pick(subtypesof(/datum/bounty/item/mining)) - return new subtype - if(11) - var/subtype = pick(subtypesof(/datum/bounty/item/medical)) - return new subtype - if(12) - var/subtype = pick(subtypesof(/datum/bounty/item/botany)) - return new subtype - if(13) - var/subtype - if(rand(2) == 1) - subtype = pick(subtypesof(/datum/bounty/item/atmos/simple)) +/proc/random_bounty(guided, datum/bank_account/account) + var/bounty_type + if(!guided || guided == CIV_JOB_RANDOM) + bounty_type = rand(1, CIV_JOB_RANDOM - 1) + else if(islist(guided)) + bounty_type = pick(guided) + else + bounty_type = guided + + var/subtype + switch(bounty_type) + if(CIV_JOB_BASIC) + subtype = pick(subtypesof(/datum/bounty/item/assistant)) + if(CIV_JOB_ROBO) + subtype = pick(subtypesof(/datum/bounty/item/mech)) + if(CIV_JOB_CHEF) + subtype = pick(subtypesof(/datum/bounty/item/chef)) + if(CIV_JOB_SEC) + subtype = pick(subtypesof(/datum/bounty/item/security)) + if(CIV_JOB_DRINK) + if(rand(1) == 1) + subtype = /datum/bounty/reagent/simple_drink else - subtype = pick(subtypesof(/datum/bounty/item/atmos/complex)) - return new subtype - if(14) - var/subtype = pick(subtypesof(/datum/bounty/item/h2metal)) - return new subtype - if(15) - var/subtype = pick(subtypesof(/datum/bounty/item/gems)) - return new subtype - -// Called lazily at startup to populate GLOB.bounties_list with random bounties. -/proc/setup_bounties() - - var/pick // instead of creating it a bunch let's go ahead and toss it here, we know we're going to use it for dynamics and subtypes! - - /********************************Subtype Gens********************************/ - var/list/easy_add_list_subtypes = list(/datum/bounty/item/assistant = 3, - /datum/bounty/item/mech = 1, - /datum/bounty/item/chef = 3, - /datum/bounty/item/security = 1, - /datum/bounty/virus = 1, - /datum/bounty/item/mining = 3, - /datum/bounty/item/medical = 2, - /datum/bounty/item/botany = 3, - /datum/bounty/item/h2metal = 3, - /datum/bounty/item/atmos/complex = 1, - /datum/bounty/item/atmos/simple = 4, - /datum/bounty/item/gems = 4) - - for(var/the_type in easy_add_list_subtypes) - for(var/i in 1 to easy_add_list_subtypes[the_type]) - pick = pick(subtypesof(the_type)) - try_add_bounty(new pick) - - /********************************Strict Type Gens********************************/ - var/list/easy_add_list_strict_types = list(/datum/bounty/reagent/simple_drink = 2, - /datum/bounty/reagent/complex_drink = 1, - /datum/bounty/reagent/chemical_simple = 2, - /datum/bounty/reagent/chemical_complex = 1) - - for(var/the_strict_type in easy_add_list_strict_types) - for(var/i in 1 to easy_add_list_strict_types[the_strict_type]) - try_add_bounty(new the_strict_type) - - /********************************Dynamic Gens********************************/ - - for(var/i in 0 to 1) - if(prob(50)) - pick = pick(subtypesof(/datum/bounty/item/slime)) - else - pick = pick(subtypesof(/datum/bounty/item/science)) - try_add_bounty(new pick) - - /********************************Cutoff for Non-Low Priority Bounties********************************/ - var/datum/bounty/B = pick(GLOB.bounties_list) - B.mark_high_priority() - - /********************************Progression Gens********************************/ - var/list/progression_type_list = typesof(/datum/bounty/item/progression) - - for(var/progression_bounty in progression_type_list) - try_add_bounty(new progression_bounty) - - /********************************Low Priority Gens********************************/ - var/list/low_priority_strict_type_list = list( /datum/bounty/item/alien_organs, - /datum/bounty/item/syndicate_documents, - /datum/bounty/item/adamantine, - /datum/bounty/item/supermatter_silver, - /datum/bounty/more_bounties) - - for(var/low_priority_bounty in low_priority_strict_type_list) - try_add_bounty(new low_priority_bounty) - -/proc/completed_bounty_count() - var/count = 0 - for(var/i in GLOB.bounties_list) - var/datum/bounty/B = i - if(B.claimed) - ++count - return count + subtype = /datum/bounty/reagent/complex_drink + if(CIV_JOB_CHEM) + if(rand(1) == 1) + subtype = /datum/bounty/reagent/chemical_simple + else + subtype = /datum/bounty/reagent/chemical_complex + if(CIV_JOB_VIRO) + subtype = pick(subtypesof(/datum/bounty/virus)) + if(CIV_JOB_SCI) + subtype = pick(subtypesof(/datum/bounty/item/science)) + if(CIV_JOB_XENO) + subtype = pick(subtypesof(/datum/bounty/item/slime)) + if(CIV_JOB_MINE) + if(rand(1) == 1) + subtype = pick(subtypesof(/datum/bounty/item/mining)) + else + subtype = pick(subtypesof(/datum/bounty/item/gems)) + if(CIV_JOB_MED) + subtype = pick(subtypesof(/datum/bounty/item/medical)) + if(CIV_JOB_GROW) + subtype = pick(subtypesof(/datum/bounty/item/botany)) + if(CIV_JOB_ATMOS) + switch(rand(2)) + if(0) + subtype = pick(subtypesof(/datum/bounty/item/atmos/simple)) + if(1) + subtype = pick(subtypesof(/datum/bounty/item/atmos/complex)) + if(2) + subtype = pick(subtypesof(/datum/bounty/item/h2metal)) + + return new subtype(account) diff --git a/code/modules/cargo/bounty_console.dm b/code/modules/cargo/bounty_console.dm index 21db210639c4..74a144c488f2 100644 --- a/code/modules/cargo/bounty_console.dm +++ b/code/modules/cargo/bounty_console.dm @@ -6,38 +6,22 @@ icon_screen = "bounty" circuit = /obj/item/circuitboard/computer/bounty light_color = "#E2853D"//orange - var/printer_ready = 0 //cooldown var - var/static/datum/bank_account/cargocash + var/obj/machinery/bounty_packager/linked_packager /obj/machinery/computer/bounty/Initialize(mapload) . = ..() - printer_ready = world.time + PRINTER_TIMEOUT - cargocash = SSeconomy.get_dep_account(ACCOUNT_CAR) + if(mapload) + addtimer(CALLBACK(src, PROC_REF(linkPackager))) -/obj/machinery/computer/bounty/proc/print_paper() - new /obj/item/paper/bounty_printout(loc) - -/obj/item/paper/bounty_printout - name = "paper - Bounties" - -/obj/item/paper/bounty_printout/Initialize(mapload) - . = ..() - info = "

Nanotrasen Cargo Bounties


" - update_appearance(UPDATE_ICON) - for(var/datum/bounty/B in GLOB.bounties_list) - if(B.claimed) - continue - info += {"

[B.name]

- "} - -/obj/machinery/computer/bounty/proc/get_list_to_use() - return GLOB.bounties_list +/obj/machinery/computer/bounty/proc/linkPackager() + if(GLOB.bounty_packager && !GLOB.bounty_packager.linked_console) + linked_packager = GLOB.bounty_packager + linked_packager.linked_console = src /obj/machinery/computer/bounty/ui_interact(mob/user, datum/tgui/ui) - var/list/list_to_use = get_list_to_use() - if(!list_to_use.len) - setup_bounties() + var/obj/item/card/id/id = user.get_idcard() + if(id && id.registered_account && !id.registered_account.bounties) + id.registered_account.generate_bounties() ui = SStgui.try_update_ui(user, src, ui) if(!ui) ui = new(user, src, "CargoBountyConsole", name) @@ -46,23 +30,45 @@ /obj/machinery/computer/bounty/ui_data(mob/user) var/list/data = list() var/list/bountyinfo = list() - for(var/datum/bounty/B in get_list_to_use()) - bountyinfo += list(list("name" = B.name, "description" = B.description, "reward_string" = B.reward_string(), "completion_string" = B.completion_string() , "claimed" = B.claimed, "can_claim" = B.can_claim(), "priority" = B.high_priority, "bounty_ref" = REF(B))) - data["stored_cash"] = cargocash.account_balance + var/obj/item/card/id/id = user.get_idcard() + for(var/datum/bounty/B in id?.registered_account?.bounties) + bountyinfo += list(list("name" = B.name, "description" = B.description, "reward_string" = B.reward_string(), "completion_string" = B.completion_string() , "claimed" = B.claimed, "selected" = (B == linked_packager?.selected_bounty), "priority" = B.high_priority, "bounty_ref" = REF(B))) data["bountydata"] = bountyinfo + data["is_packager"] = !!linked_packager + data["has_id"] = !!id + data["orig_job"] = id?.originalassignment + data["job"] = id?.assignment + data["name"] = id?.registered_name return data /obj/machinery/computer/bounty/ui_act(action,params) if(..()) return + var/obj/item/card/id/id = usr.get_idcard() switch(action) - if("ClaimBounty") - var/datum/bounty/cashmoney = locate(params["bounty"]) in get_list_to_use() - if(cashmoney) - cashmoney.claim(usr) + if("SelectBounty") + if(!linked_packager || !id?.registered_account?.bounties) + return FALSE + linked_packager.selected_bounty = locate(params["bounty"]) in id.registered_account.bounties return TRUE - if("Print") - if(printer_ready < world.time) - printer_ready = world.time + PRINTER_TIMEOUT - print_paper() - return + if("ReloadBounties") + if(!id?.registered_account) + return FALSE + var/result = id.registered_account.generate_bounties() + if(result != TRUE) + say(result) + return FALSE + return TRUE + +/obj/machinery/computer/bounty/multitool_act(mob/living/user, obj/item/I) + var/obj/item/multitool/multitool = I + if(!istype(multitool)) return FALSE + if(!istype(multitool.buffer, /obj/machinery/bounty_packager)) + multitool.buffer = src + to_chat(user, span_notice("[src] stored in [I]")) + return TRUE + + linked_packager = multitool.buffer + linked_packager.linked_console = src + to_chat(user, span_notice("[src] has been linked to [linked_packager]")) + return TRUE diff --git a/code/modules/cargo/export_scanner.dm b/code/modules/cargo/export_scanner.dm index 95df716acc68..a6f63a723011 100644 --- a/code/modules/cargo/export_scanner.dm +++ b/code/modules/cargo/export_scanner.dm @@ -26,20 +26,44 @@ if(!C.requestonly) cargo_console = C to_chat(user, span_notice("Scanner linked to [C].")) + return else if(!istype(cargo_console)) to_chat(user, span_warning("You must link [src] to a cargo console first!")) + return + + // Before you fix it: + // yes, checking manifests is a part of intended functionality. + + var/datum/export_report/ex = export_item_and_contents(O, cargo_console.get_export_categories(), dry_run=TRUE) + var/price = 0 + for(var/x in ex.total_amount) + price += ex.total_value[x] + + if(price) + to_chat(user, span_notice("Scanned [O], value: [price] credits[O.contents.len ? " (contents included)" : ""].")) else - // Before you fix it: - // yes, checking manifests is a part of intended functionality. - - var/datum/export_report/ex = export_item_and_contents(O, cargo_console.get_export_categories(), dry_run=TRUE) - var/price = 0 - for(var/x in ex.total_amount) - price += ex.total_value[x] - - if(price) - to_chat(user, span_notice("Scanned [O], value: [price] credits[O.contents.len ? " (contents included)" : ""].")) - else - to_chat(user, span_warning("Scanned [O], no export value.")) - if(bounty_ship_item_and_contents(O, dry_run=TRUE)) - to_chat(user, span_notice("Scanned item is eligible for one or more bounties.")) + to_chat(user, span_warning("Scanned [O], no export value.")) + + if(ishuman(user)) + var/mob/living/carbon/human/scan_human = user + if(istype(O, /obj/item/bounty_cube)) + var/obj/item/bounty_cube/cube = O + var/datum/bank_account/scanner_account = scan_human.get_bank_account() + + if(!istype(get_area(cube), /area/shuttle/supply)) + to_chat(user, span_warning("Shuttle placement not detected. Handling tip not registered.")) + + else if(cube.bounty_handler_account) + to_chat(user, span_warning("Bank account for handling tip already registered!")) + + else if(scanner_account) + cube.AddComponent(/datum/component/pricetag, scanner_account, cube.handler_tip) + + cube.bounty_handler_account = scanner_account + cube.bounty_handler_account.bank_card_talk("Bank account for [price ? "[price * cube.handler_tip] credit " : ""]handling tip successfully registered.") + + if(cube.bounty_holder_account != cube.bounty_handler_account) //No need to send a tracking update to the person scanning it + cube.bounty_holder_account.bank_card_talk("[cube] was scanned in \the [get_area(cube)] by [scan_human] ([scan_human.job]).") + + else + to_chat(user, span_warning("Bank account not detected. Handling tip not registered.")) diff --git a/code/modules/cargo/exports.dm b/code/modules/cargo/exports.dm index ecd180168402..00e156827631 100644 --- a/code/modules/cargo/exports.dm +++ b/code/modules/cargo/exports.dm @@ -46,10 +46,12 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they if(QDELETED(thing)) continue if(!(istype(thingy) && thingy.item_flags & AUTOLATHED)) - for(var/datum/export/E in GLOB.exports_list) - if(!E) + for(var/datum/export/E as anything in GLOB.exports_list) + if(!E || !istype(E)) continue if(E.applies_to(thing, allowed_categories, apply_limit)) + if(!dry_run && (SEND_SIGNAL(thing, COMSIG_ITEM_PRE_EXPORT) & COMPONENT_STOP_EXPORT)) + break sold = E.sell_object(thing, report, dry_run, allowed_categories , apply_limit) report.exported_atoms += " [thing.name]" break @@ -118,12 +120,16 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they if(amount <=0 || the_cost <=0 || export_limit <=0) return FALSE - report.total_value[src] += the_cost - - if(istype(src, /datum/export/material)) - report.total_amount[src] += amount*MINERAL_MATERIAL_AMOUNT - else - report.total_amount[src] += amount + var/export_result + if(!dry_run) + export_result = SEND_SIGNAL(O, COMSIG_ITEM_EXPORTED, src, report, the_cost) + + if(!(export_result & COMPONENT_STOP_EXPORT_REPORT)) + report.total_value[src] += the_cost + if(istype(src, /datum/export/material)) + report.total_amount[src] += amount*MINERAL_MATERIAL_AMOUNT + else + report.total_amount[src] += amount if(!dry_run) if(apply_limit && export_limit != NO_LIMIT) diff --git a/code/modules/cargo/exports/bounty.dm b/code/modules/cargo/exports/bounty.dm new file mode 100644 index 000000000000..3f769afbe4a9 --- /dev/null +++ b/code/modules/cargo/exports/bounty.dm @@ -0,0 +1,7 @@ +/datum/export/bounty_box + cost = 1 + unit_name = "completed bounty cube" + export_types = list(/obj/item/bounty_cube) + +/datum/export/bounty_box/get_cost(obj/item/bounty_cube/cube, apply_elastic) + return (cube.bounty_value + (cube.bounty_value * cube.speed_bonus)) * SSeconomy.bounty_modifier diff --git a/code/modules/economy/account.dm b/code/modules/economy/account.dm index 8755d6201bca..8bcaddfe6245 100644 --- a/code/modules/economy/account.dm +++ b/code/modules/economy/account.dm @@ -12,6 +12,8 @@ var/is_bourgeois = FALSE // Marks whether we've tried giving them the achievement already, this round. var/bounties_claimed = 0 // Marks how many bounties this person has successfully claimed var/sec_weapon_claimed = FALSE // If this account has claimed a weapon \code\modules\vending\security_armaments.dm + var/list/datum/bounty/bounties + COOLDOWN_DECLARE(bounty_timer) /datum/bank_account/New(newname, job) var/limiter = 0 @@ -111,6 +113,21 @@ if(M.can_hear()) to_chat(M, "[icon2html(A, M)] *[message]*") +/// Generates bounties for account, returns error string if failed +/datum/bank_account/proc/generate_bounties() + if(bounties && !COOLDOWN_FINISHED(src, bounty_timer)) + return "Unable to issue new bounties, try again in [time2text(COOLDOWN_TIMELEFT(src, bounty_timer),"mm:ss")]" + if(!account_job) + return "Account has no associated job" + if(!account_job.bounty_types) + return "Job not eligible for bounties" + + bounties = list(random_bounty(account_job.bounty_types, src), // Two from your job + random_bounty(account_job.bounty_types, src), + random_bounty(CIV_JOB_BASIC, src)) // One from assistant + COOLDOWN_START(src, bounty_timer, 5 MINUTES) + return TRUE + /datum/bank_account/department account_holder = "Guild Credit Agency" var/department_id = "REPLACE_ME" diff --git a/code/modules/events/high_priority_bounty.dm b/code/modules/events/high_priority_bounty.dm index ffdcd8840b7e..4e25db819d75 100644 --- a/code/modules/events/high_priority_bounty.dm +++ b/code/modules/events/high_priority_bounty.dm @@ -5,16 +5,29 @@ weight = 20 earliest_start = 10 +/datum/round_event/high_priority_bounty + var/datum/bank_account/account + +/datum/round_event/high_priority_bounty/setup() + var/list/datum/bank_account/candidates + + for(var/account_code as anything in SSeconomy.bank_accounts) + var/datum/bank_account/bank_account = SSeconomy.bank_accounts[account_code] + if(!bank_account) continue + if(!bank_account.bounties) continue + if(bank_account.bounties.len > 0) + candidates += bank_account + + account = pick(candidates) + /datum/round_event/high_priority_bounty/announce(fake) - priority_announce("Central Command has issued a high-priority cargo bounty. Details have been sent to all bounty consoles.", "Nanotrasen Bounty Program") + priority_announce("Central Command has issued a high-priority cargo bounty to [account.account_holder]. Details have been sent to all bounty consoles.", "Nanotrasen Bounty Program") /datum/round_event/high_priority_bounty/start() - var/datum/bounty/B - for(var/attempts = 0; attempts < 50; ++attempts) - B = random_bounty() - if(!B) - continue - B.mark_high_priority(3) - if(try_add_bounty(B)) - break + var/datum/bounty/bounty = random_bounty(CIV_JOB_RANDOM, account) + if(!bounty) + return + bounty.mark_high_priority(3) + account.bounties += bounty + diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index a779df14695a..83259d45db08 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -95,6 +95,9 @@ /// Icons to be displayed in the orbit ui. Source: FontAwesome v5. var/orbit_icon + + /// Which bounty type should this job get + var/bounty_types = CIV_JOB_BASIC var/datum/species/forced_species /** diff --git a/code/modules/jobs/job_types/ai.dm b/code/modules/jobs/job_types/ai.dm index 9df34178ac02..b280907b59b8 100644 --- a/code/modules/jobs/job_types/ai.dm +++ b/code/modules/jobs/job_types/ai.dm @@ -24,6 +24,8 @@ //this should never be seen because of the way olfaction works but just in case smells_like = "chained intellect" + bounty_types = NONE + /datum/job/ai/equip(mob/living/equipping, visualsOnly, announce, latejoin, datum/outfit/outfit_override, client/preference_source = null) if(visualsOnly) CRASH("dynamic preview is unsupported") diff --git a/code/modules/jobs/job_types/atmospheric_technician.dm b/code/modules/jobs/job_types/atmospheric_technician.dm index 292d92e020e1..7e32a58cf3b1 100644 --- a/code/modules/jobs/job_types/atmospheric_technician.dm +++ b/code/modules/jobs/job_types/atmospheric_technician.dm @@ -37,6 +37,8 @@ smells_like = "a gas leak" + bounty_types = CIV_JOB_ATMOS + /datum/outfit/job/atmos name = "Atmospheric Technician" jobtype = /datum/job/atmos diff --git a/code/modules/jobs/job_types/bartender.dm b/code/modules/jobs/job_types/bartender.dm index 84cfa3dd6686..6afbabb2503f 100644 --- a/code/modules/jobs/job_types/bartender.dm +++ b/code/modules/jobs/job_types/bartender.dm @@ -39,6 +39,8 @@ ) smells_like = "alcohol" + + bounty_types = CIV_JOB_DRINK /datum/outfit/job/bartender name = "Bartender" diff --git a/code/modules/jobs/job_types/botanist.dm b/code/modules/jobs/job_types/botanist.dm index 48a0552745e0..8fde0510bb1a 100644 --- a/code/modules/jobs/job_types/botanist.dm +++ b/code/modules/jobs/job_types/botanist.dm @@ -36,6 +36,8 @@ smells_like = "fertilizer" + bounty_types = CIV_JOB_GROW + /datum/outfit/job/botanist name = "Botanist" jobtype = /datum/job/hydro diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index fde18435cb5d..e70c83bb382c 100644 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -52,6 +52,8 @@ smells_like = "unquestionable leadership" + bounty_types = CIV_JOB_RANDOM + /datum/job/captain/get_access() return get_all_accesses() diff --git a/code/modules/jobs/job_types/cargo_technician.dm b/code/modules/jobs/job_types/cargo_technician.dm index 5179809e55af..39ccda03f02a 100644 --- a/code/modules/jobs/job_types/cargo_technician.dm +++ b/code/modules/jobs/job_types/cargo_technician.dm @@ -38,6 +38,8 @@ smells_like = "cardboard" + bounty_types = CIV_JOB_RANDOM + /datum/outfit/job/cargo_tech name = "Cargo Technician" jobtype = /datum/job/cargo_tech diff --git a/code/modules/jobs/job_types/chemist.dm b/code/modules/jobs/job_types/chemist.dm index f15b5a5dd66a..247eceb97016 100644 --- a/code/modules/jobs/job_types/chemist.dm +++ b/code/modules/jobs/job_types/chemist.dm @@ -48,6 +48,8 @@ smells_like = "chemicals" + bounty_types = CIV_JOB_CHEM + /datum/outfit/job/chemist name = "Chemist" jobtype = /datum/job/chemist diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm index 1d974c89c824..d78c441c1220 100644 --- a/code/modules/jobs/job_types/chief_engineer.dm +++ b/code/modules/jobs/job_types/chief_engineer.dm @@ -27,6 +27,8 @@ paycheck = PAYCHECK_COMMAND paycheck_department = ACCOUNT_ENG + bounty_types = CIV_JOB_ATMOS + display_order = JOB_DISPLAY_ORDER_CHIEF_ENGINEER minimal_character_age = 30 //Combine all the jobs together; that's a lot of physics, mechanical, electrical, and power-based knowledge diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm index 70ecfd847e23..9b3ccb62ba8c 100644 --- a/code/modules/jobs/job_types/chief_medical_officer.dm +++ b/code/modules/jobs/job_types/chief_medical_officer.dm @@ -52,6 +52,8 @@ ) smells_like = "blood-soaked stress" + + bounty_types = CIV_JOB_MED /datum/outfit/job/cmo name = "Chief Medical Officer" diff --git a/code/modules/jobs/job_types/cook.dm b/code/modules/jobs/job_types/cook.dm index b1f7c3440cdf..7a506b2dfb63 100644 --- a/code/modules/jobs/job_types/cook.dm +++ b/code/modules/jobs/job_types/cook.dm @@ -41,6 +41,8 @@ lightup_areas = list(/area/hydroponics) smells_like = "delicious food" + + bounty_types = CIV_JOB_CHEF /datum/outfit/job/cook name = "Cook" diff --git a/code/modules/jobs/job_types/cyborg.dm b/code/modules/jobs/job_types/cyborg.dm index b2b714a9d6c1..cf8942c52a33 100644 --- a/code/modules/jobs/job_types/cyborg.dm +++ b/code/modules/jobs/job_types/cyborg.dm @@ -20,6 +20,8 @@ smells_like = "inorganic indifference" + bounty_types = NONE + /datum/job/cyborg/equip(mob/living/carbon/human/H, visualsOnly = FALSE, announce = TRUE, latejoin = FALSE, datum/outfit/outfit_override = null, client/preference_source = null) if(visualsOnly) CRASH("dynamic preview is unsupported") diff --git a/code/modules/jobs/job_types/detective.dm b/code/modules/jobs/job_types/detective.dm index 89def9e56e1b..0436dcde6f6f 100644 --- a/code/modules/jobs/job_types/detective.dm +++ b/code/modules/jobs/job_types/detective.dm @@ -42,6 +42,8 @@ minimal_lightup_areas = list(/area/medical/morgue, /area/security/detectives_office) smells_like = "whisky-soaked despair" + + bounty_types = CIV_JOB_SEC /datum/job/detective/after_spawn(mob/living/carbon/human/H, mob/M) . = ..() diff --git a/code/modules/jobs/job_types/geneticist.dm b/code/modules/jobs/job_types/geneticist.dm index 48c91a4329b4..3f01c4d5c8bc 100644 --- a/code/modules/jobs/job_types/geneticist.dm +++ b/code/modules/jobs/job_types/geneticist.dm @@ -41,6 +41,8 @@ smells_like = "monkey hair" + bounty_types = CIV_JOB_MED + /datum/outfit/job/geneticist name = "Geneticist" jobtype = /datum/job/geneticist diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm index 9d429aee2402..3036a23e7532 100644 --- a/code/modules/jobs/job_types/head_of_personnel.dm +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -30,6 +30,8 @@ paycheck = PAYCHECK_COMMAND paycheck_department = ACCOUNT_SRV + bounty_types = CIV_JOB_RANDOM + display_order = JOB_DISPLAY_ORDER_HEAD_OF_PERSONNEL minimal_character_age = 26 //Baseline age requirement and competency, as well as ability to assume leadership in shite situations diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index f3e3820d7a46..ab02ba4b39b5 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -36,6 +36,8 @@ /datum/job_department/command, ) + bounty_types = CIV_JOB_SEC + changed_maps = list("YogsPubby") mail_goodies = list( diff --git a/code/modules/jobs/job_types/medical_doctor.dm b/code/modules/jobs/job_types/medical_doctor.dm index e2a782ececef..3b252f46ab83 100644 --- a/code/modules/jobs/job_types/medical_doctor.dm +++ b/code/modules/jobs/job_types/medical_doctor.dm @@ -47,6 +47,8 @@ smells_like = "a hospital" + bounty_types = CIV_JOB_MED + /datum/outfit/job/doctor name = "Medical Doctor" jobtype = /datum/job/doctor diff --git a/code/modules/jobs/job_types/quartermaster.dm b/code/modules/jobs/job_types/quartermaster.dm index ca92acfb1dea..14e7ab411413 100644 --- a/code/modules/jobs/job_types/quartermaster.dm +++ b/code/modules/jobs/job_types/quartermaster.dm @@ -39,6 +39,8 @@ exp_requirements = 120 exp_type = EXP_TYPE_CREW exp_type_department = EXP_TYPE_SUPPLY + + bounty_types = CIV_JOB_RANDOM /datum/outfit/job/quartermaster name = "Quartermaster" diff --git a/code/modules/jobs/job_types/research_director.dm b/code/modules/jobs/job_types/research_director.dm index 4504449a16e7..d1163a38e68c 100644 --- a/code/modules/jobs/job_types/research_director.dm +++ b/code/modules/jobs/job_types/research_director.dm @@ -67,6 +67,8 @@ smells_like = "theoretical education" + bounty_types = list(CIV_JOB_ROBO, CIV_JOB_SCI, CIV_JOB_XENO) + /datum/outfit/job/rd name = "Research Director" jobtype = /datum/job/rd diff --git a/code/modules/jobs/job_types/roboticist.dm b/code/modules/jobs/job_types/roboticist.dm index 24a090244dc9..41cc0a07e76a 100644 --- a/code/modules/jobs/job_types/roboticist.dm +++ b/code/modules/jobs/job_types/roboticist.dm @@ -43,6 +43,8 @@ smells_like = "burnt solder" + bounty_types = list(CIV_JOB_ROBO, CIV_JOB_SCI) + /datum/outfit/job/roboticist name = "Roboticist" jobtype = /datum/job/roboticist diff --git a/code/modules/jobs/job_types/scientist.dm b/code/modules/jobs/job_types/scientist.dm index cdb4bce39e17..c5d2be69f3d9 100644 --- a/code/modules/jobs/job_types/scientist.dm +++ b/code/modules/jobs/job_types/scientist.dm @@ -47,6 +47,8 @@ smells_like = "slime" + bounty_types = list(CIV_JOB_SCI, CIV_JOB_XENO) + /datum/outfit/job/scientist name = "Scientist" jobtype = /datum/job/scientist diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm index eb7df690e7c3..205ced0de0fd 100644 --- a/code/modules/jobs/job_types/security_officer.dm +++ b/code/modules/jobs/job_types/security_officer.dm @@ -43,6 +43,8 @@ smells_like = "donuts" + bounty_types = CIV_JOB_SEC + /datum/job/officer/get_access() var/list/L = list() L |= ..() | check_config_for_sec_maint() diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm index 78ebe6e7a7cf..4afeb3af3bdd 100644 --- a/code/modules/jobs/job_types/shaft_miner.dm +++ b/code/modules/jobs/job_types/shaft_miner.dm @@ -40,6 +40,8 @@ smells_like = "ash and dust" + bounty_types = CIV_JOB_MINE + /datum/outfit/job/miner name = "Shaft Miner" jobtype = /datum/job/mining diff --git a/code/modules/jobs/job_types/station_engineer.dm b/code/modules/jobs/job_types/station_engineer.dm index ccd3192f6641..8cdc239e9a7f 100644 --- a/code/modules/jobs/job_types/station_engineer.dm +++ b/code/modules/jobs/job_types/station_engineer.dm @@ -40,6 +40,8 @@ lightup_areas = list(/area/engine/atmos) smells_like = "welding fuel" + + bounty_types = CIV_JOB_ATMOS GLOBAL_LIST_INIT(available_depts_eng, list(ENG_DEPT_MEDICAL, ENG_DEPT_SCIENCE, ENG_DEPT_SUPPLY, ENG_DEPT_SERVICE)) diff --git a/code/modules/jobs/job_types/virologist.dm b/code/modules/jobs/job_types/virologist.dm index 9a64807262db..f0799d6cb21b 100644 --- a/code/modules/jobs/job_types/virologist.dm +++ b/code/modules/jobs/job_types/virologist.dm @@ -51,6 +51,8 @@ minimal_lightup_areas = list(/area/medical/virology) smells_like = "germlessness" + + bounty_types = list(CIV_JOB_VIRO, CIV_JOB_VIRO, CIV_JOB_MED) /datum/outfit/job/virologist name = "Virologist" diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm index 3bf719b03290..26bb107c082c 100644 --- a/code/modules/jobs/job_types/warden.dm +++ b/code/modules/jobs/job_types/warden.dm @@ -46,6 +46,8 @@ smells_like = "gunpowdery justice" + bounty_types = CIV_JOB_SEC + /datum/job/warden/get_access() var/list/L = list() L = ..() | check_config_for_sec_maint() diff --git a/code/modules/modular_computers/file_system/programs/supply/cargobounty.dm b/code/modules/modular_computers/file_system/programs/supply/cargobounty.dm index cd4c867db513..720ec9c6edb0 100644 --- a/code/modules/modular_computers/file_system/programs/supply/cargobounty.dm +++ b/code/modules/modular_computers/file_system/programs/supply/cargobounty.dm @@ -16,8 +16,9 @@ var/static/datum/bank_account/cargocash /datum/computer_file/program/cargobounty/ui_interact(mob/user, ui_key, datum/tgui/ui, force_open, datum/tgui/master_ui, datum/ui_state/state) - if(!GLOB.bounties_list.len) - setup_bounties() + var/obj/item/card/id/id = user.get_idcard() + if(id && id.registered_account && !id.registered_account.bounties) + id.registered_account.generate_bounties() printer_ready = world.time + PRINTER_TIMEOUT cargocash = SSeconomy.get_dep_account(ACCOUNT_CAR) . = ..() @@ -25,7 +26,8 @@ /datum/computer_file/program/cargobounty/ui_data(mob/user) var/list/data = get_header_data() var/list/bountyinfo = list() - for(var/datum/bounty/B in GLOB.bounties_list) + var/obj/item/card/id/id = user.get_idcard() + for(var/datum/bounty/B in id?.registered_account?.bounties) bountyinfo += list(list("name" = B.name, "description" = B.description, "reward_string" = B.reward_string(), "completion_string" = B.completion_string() , "claimed" = B.claimed, "can_claim" = B.can_claim(), "priority" = B.high_priority, "bounty_ref" = REF(B))) data["stored_cash"] = cargocash.account_balance data["bountydata"] = bountyinfo @@ -34,21 +36,3 @@ /datum/computer_file/program/cargobounty/ui_act(action, params) if(..()) return - - var/obj/item/computer_hardware/printer/printer - if(computer) - printer = computer.all_components[MC_PRINT] - - switch(action) - if("ClaimBounty") - var/datum/bounty/cashmoney = locate(params["bounty"]) in GLOB.bounties_list - if(cashmoney) - cashmoney.claim() - return TRUE - if("Print") - if(!printer) - to_chat(usr, span_notice("Hardware error: No printer detected.")) - return - if(!printer.print_type(/obj/item/paper/bounty_printout)) - to_chat(usr, span_notice("Hardware error: Printer was unable to print the file. It may be out of paper.")) - return diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 1705ea972032..0f51969b34b6 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -201,8 +201,6 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( var/obj/item/paper/manifest = C.manifest if(!manifest.stamped) // Unstamped papers on crates // Futureproofing continue - if(bounty_ship_item_and_contents(AM, dry_run = FALSE)) - matched_bounty = TRUE if(!AM.anchored || istype(AM, /obj/mecha)) export_item_and_contents(AM, export_categories , dry_run = FALSE, external_report = ex) diff --git a/icons/obj/economy.dmi b/icons/obj/economy.dmi index 656bb4569522..bd161da90494 100644 Binary files a/icons/obj/economy.dmi and b/icons/obj/economy.dmi differ diff --git a/tgui/packages/tgui/interfaces/CargoBountyConsole.js b/tgui/packages/tgui/interfaces/CargoBountyConsole.js index 3c8bbfa4e557..02bd382423eb 100644 --- a/tgui/packages/tgui/interfaces/CargoBountyConsole.js +++ b/tgui/packages/tgui/interfaces/CargoBountyConsole.js @@ -1,5 +1,5 @@ import { useBackend } from '../backend'; -import { AnimatedNumber, Box, Button, Section, Table } from '../components'; +import { AnimatedNumber, Box, Button, NoticeBox, Section, Table, Flex } from '../components'; import { formatMoney } from '../format'; import { Window } from '../layouts'; @@ -7,115 +7,123 @@ export const CargoBountyConsole = (props, context) => { const { act, data } = useBackend(context); const { bountydata = [], - emagged, + is_packager, + has_id, + name, + job, + orig_job, } = data; return ( -
} - buttons={( -
+ {bountydata.map(bounty => ( + + + {bounty.name} + + + {bounty.description} + + + {bounty.priority === 1 + ? High Priority + : ""} + {bounty.completion_string} + + + {bounty.reward_string} + + +