diff --git a/_maps/RandomRuins/StationRuins/Lavaland/Mining_Station/Mining_Station_Public_01.dmm b/_maps/RandomRuins/StationRuins/Lavaland/Mining_Station/Mining_Station_Public_01.dmm index 6d8eb555b0..99c924177a 100644 --- a/_maps/RandomRuins/StationRuins/Lavaland/Mining_Station/Mining_Station_Public_01.dmm +++ b/_maps/RandomRuins/StationRuins/Lavaland/Mining_Station/Mining_Station_Public_01.dmm @@ -2721,10 +2721,6 @@ }, /turf/open/floor/plasteel, /area/mine/living_quarters) -"OI" = ( -/obj/machinery/mineral/mint, -/turf/open/floor/plasteel, -/area/mine/production) "ON" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/tile/brown{ @@ -7039,7 +7035,7 @@ xv bg mI Cd -OI +es sz gk Wf diff --git a/_maps/RandomZLevels/away_mission/caves.dmm b/_maps/RandomZLevels/away_mission/caves.dmm index e33659fbdd..2195b9d0ec 100644 --- a/_maps/RandomZLevels/away_mission/caves.dmm +++ b/_maps/RandomZLevels/away_mission/caves.dmm @@ -1504,12 +1504,6 @@ }, /turf/open/floor/plasteel, /area/awaymission/caves/listeningpost) -"eQ" = ( -/obj/machinery/mineral/mint, -/turf/open/floor/plating/asteroid/basalt{ - initial_gas_mix = "n2=23;o2=14;TEMP=2.7" - }, -/area/awaymission/caves/BMP_asteroid) "eR" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plasteel, @@ -9345,8 +9339,8 @@ bM bM bL bL -eQ -eQ +bV +bV bV bV bV diff --git a/_maps/RandomZLevels/away_mission/wildwest.dmm b/_maps/RandomZLevels/away_mission/wildwest.dmm index 1fc7da1acd..37999e77ab 100644 --- a/_maps/RandomZLevels/away_mission/wildwest.dmm +++ b/_maps/RandomZLevels/away_mission/wildwest.dmm @@ -861,10 +861,6 @@ }, /turf/open/floor/carpet, /area/awaymission/wildwest/gov) -"di" = ( -/obj/machinery/mineral/mint, -/turf/open/floor/plating, -/area/awaymission/wildwest/refine) "dj" = ( /obj/effect/spawner/structure/window, /turf/open/floor/wood, @@ -1282,10 +1278,6 @@ icon_state = "ironsand4" }, /area/awaymission/wildwest/gov) -"eA" = ( -/obj/machinery/mineral/mint, -/turf/open/floor/plasteel, -/area/awaymission/wildwest/refine) "eC" = ( /obj/structure/chair/comfy/brown, /turf/open/floor/wood, @@ -29059,7 +29051,7 @@ aG aG aG et -eA +eu eu eu eu @@ -33673,7 +33665,7 @@ bc bc bc bc -di +bc bc bh aW diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 1af5ec21f6..10c876a2d6 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -29102,9 +29102,6 @@ /turf/open/floor/plasteel/white, /area/science) "btB" = ( -/obj/machinery/computer/bounty{ - dir = 4 - }, /obj/effect/turf_decal/tile/blue{ dir = 1 }, @@ -30024,9 +30021,6 @@ departmentType = 2; pixel_x = -30 }, -/obj/machinery/computer/bounty{ - dir = 4 - }, /obj/effect/turf_decal/tile/brown{ dir = 1 }, @@ -54504,6 +54498,10 @@ }, /turf/open/floor/carpet/arcade, /area/commons/arcade) +"fCV" = ( +/obj/machinery/piratepad/civilian, +/turf/open/floor/plasteel, +/area/cargo/office) "fDn" = ( /obj/structure/table, /obj/item/trash/chips{ @@ -63645,15 +63643,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"sWR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/computer/bounty{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/cargo/office) "sXy" = ( /obj/machinery/door/airlock/external{ name = "Security External Airlock"; @@ -65933,6 +65922,12 @@ /obj/item/assembly/signaler, /turf/open/floor/plating, /area/maintenance/bar) +"wfZ" = ( +/obj/machinery/computer/piratepad_control/civilian{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/cargo/office) "wgo" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -90078,7 +90073,7 @@ bnG bnz bpA bbR -sWR +bkM jlm bud eyM @@ -90593,7 +90588,7 @@ boR bqs bbR bkM -bbR +fCV bwd bxB bvL @@ -90850,7 +90845,7 @@ boT bbR bbR buI -bbR +wfZ bwd bxD byL diff --git a/_maps/map_files/CogStation/CogStation.dmm b/_maps/map_files/CogStation/CogStation.dmm index 50654d4eb3..21cd6335d7 100644 --- a/_maps/map_files/CogStation/CogStation.dmm +++ b/_maps/map_files/CogStation/CogStation.dmm @@ -21248,9 +21248,6 @@ /turf/open/floor/plasteel/dark/side, /area/security/courtroom) "aUF" = ( -/obj/machinery/computer/bounty{ - dir = 1 - }, /turf/open/floor/carpet/green, /area/command/heads_quarters/hop) "aUG" = ( @@ -26775,7 +26772,6 @@ /turf/open/floor/engine, /area/engineering/teg) "bgS" = ( -/obj/machinery/computer/bounty, /obj/effect/turf_decal/tile/brown{ dir = 4 }, @@ -27431,6 +27427,9 @@ dir = 1; pixel_y = -22 }, +/obj/machinery/computer/piratepad_control/civilian{ + dir = 1 + }, /turf/open/floor/plasteel, /area/cargo/office) "bis" = ( @@ -29101,9 +29100,6 @@ /turf/open/floor/plasteel, /area/cargo/sorting) "blR" = ( -/obj/machinery/computer/bounty{ - dir = 4 - }, /obj/effect/turf_decal/tile/brown{ dir = 8 }, @@ -58045,6 +58041,7 @@ /obj/effect/turf_decal/tile/brown, /obj/machinery/atmospherics/pipe/simple/cyan/hidden, /obj/structure/disposalpipe/segment, +/obj/machinery/piratepad/civilian, /turf/open/floor/plasteel, /area/cargo/office) "ctx" = ( diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 2714ee2166..c77be5895d 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -14451,9 +14451,6 @@ /turf/closed/wall, /area/hallway/primary/fore) "bdO" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, /obj/machinery/light{ dir = 8 }, @@ -14470,20 +14467,19 @@ /obj/effect/turf_decal/tile/brown{ dir = 8 }, +/obj/machinery/computer/piratepad_control/civilian, /turf/open/floor/plasteel, /area/hallway/primary/fore) "bdP" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/disposalpipe/segment, -/obj/item/kirbyplants{ - icon_state = "plant-21" - }, /obj/effect/turf_decal/tile/brown{ dir = 1 }, /obj/effect/turf_decal/tile/brown{ dir = 4 }, +/obj/machinery/piratepad/civilian, /turf/open/floor/plasteel, /area/hallway/primary/fore) "bdQ" = ( @@ -73881,16 +73877,6 @@ }, /turf/open/floor/plasteel, /area/engineering/main) -"fdZ" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/computer/bounty{ - dir = 8 - }, -/turf/open/floor/plasteel/grimy, -/area/command/heads_quarters/hop) "fer" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 @@ -74440,9 +74426,6 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/computer/bounty{ - dir = 4 - }, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -115832,9 +115815,6 @@ /obj/machinery/light_switch{ pixel_x = 23 }, -/obj/machinery/computer/bounty{ - dir = 8 - }, /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ dir = 4 @@ -121742,9 +121722,6 @@ name = "Station Intercom (General)"; pixel_x = 28 }, -/obj/machinery/computer/bounty{ - dir = 8 - }, /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ dir = 4 @@ -165179,7 +165156,7 @@ xmR qTU xmR wGq -fdZ +xmR kxP pnQ gEc diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index 94eba129cc..37f9f0c5a8 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -12345,6 +12345,7 @@ /obj/machinery/light{ dir = 4 }, +/obj/structure/closet/firecloset, /turf/open/floor/plasteel, /area/hallway/primary/starboard) "auA" = ( @@ -13138,9 +13139,6 @@ /turf/open/floor/plasteel, /area/command/bridge) "avS" = ( -/obj/machinery/computer/bounty{ - dir = 4 - }, /obj/machinery/requests_console{ announcementConsole = 1; department = "Head of Personnel's Desk"; @@ -35255,7 +35253,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/structure/closet/firecloset, +/obj/machinery/piratepad/civilian, /turf/open/floor/plasteel/dark, /area/hallway/primary/starboard) "beP" = ( @@ -37150,7 +37148,6 @@ /turf/open/floor/plasteel, /area/cargo/miningoffice) "bhO" = ( -/obj/machinery/computer/bounty, /obj/effect/turf_decal/bot, /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -38746,9 +38743,6 @@ dir = 4 }, /obj/effect/turf_decal/bot, -/obj/machinery/computer/bounty{ - dir = 8 - }, /turf/open/floor/plasteel/dark, /area/cargo/office) "bks" = ( @@ -42097,8 +42091,10 @@ /turf/open/floor/plasteel, /area/cargo/storage) "bpF" = ( -/obj/structure/sign/departments/cargo, -/turf/closed/wall, +/obj/machinery/computer/piratepad_control/civilian{ + dir = 8 + }, +/turf/open/floor/plasteel, /area/hallway/primary/starboard) "bpG" = ( /obj/effect/turf_decal/tile/neutral, @@ -49273,10 +49269,6 @@ /area/security/checkpoint/supply) "bBp" = ( /obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, /obj/structure/cable{ icon_state = "1-2" }, @@ -85105,6 +85097,10 @@ "khA" = ( /turf/closed/wall/rust, /area/construction/mining/aux_base) +"kmy" = ( +/obj/structure/sign/departments/cargo, +/turf/closed/wall, +/area/cargo/office) "koc" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1, /turf/open/floor/wood, @@ -122906,7 +122902,7 @@ aYK aYd bhe cLt -bhI +kmy bhX bhs biM diff --git a/_maps/map_files/LambdaStation/lambda.dmm b/_maps/map_files/LambdaStation/lambda.dmm index 3f60c8a105..e518144937 100644 --- a/_maps/map_files/LambdaStation/lambda.dmm +++ b/_maps/map_files/LambdaStation/lambda.dmm @@ -23384,9 +23384,6 @@ /turf/open/floor/plasteel, /area/cargo/miningoffice) "aQs" = ( -/obj/machinery/computer/bounty{ - dir = 4 - }, /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 10 }, @@ -24362,12 +24359,10 @@ /turf/open/floor/plasteel, /area/hallway/primary/fore) "aTo" = ( -/obj/structure/chair{ - dir = 4 - }, /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 }, +/obj/machinery/piratepad/civilian, /turf/open/floor/plasteel, /area/hallway/primary/central) "aTp" = ( @@ -25025,9 +25020,6 @@ name = "Station Intercom"; pixel_y = -28 }, -/obj/machinery/computer/bounty{ - dir = 1 - }, /obj/machinery/light, /turf/open/floor/plasteel, /area/cargo/storage) @@ -25128,9 +25120,6 @@ /turf/open/floor/plasteel, /area/cargo/office) "aVG" = ( -/obj/structure/chair{ - dir = 4 - }, /obj/machinery/light{ dir = 8; light_color = "#e8eaff" @@ -25138,6 +25127,9 @@ /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 }, +/obj/machinery/computer/piratepad_control/civilian{ + dir = 4 + }, /turf/open/floor/plasteel, /area/hallway/primary/central) "aVH" = ( diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index e632a77747..7dae7cbffc 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -14323,9 +14323,6 @@ /turf/open/floor/plasteel, /area/hallway/primary/port) "bca" = ( -/obj/structure/chair{ - dir = 8 - }, /obj/machinery/light{ dir = 4 }, @@ -14337,6 +14334,7 @@ /obj/effect/turf_decal/tile/brown{ dir = 4 }, +/obj/machinery/piratepad/civilian, /turf/open/floor/plasteel, /area/hallway/primary/port) "bcb" = ( @@ -14603,13 +14601,13 @@ /turf/open/floor/plasteel, /area/hallway/primary/port) "bdv" = ( -/obj/structure/chair{ - dir = 8 - }, /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ dir = 4 }, +/obj/machinery/computer/piratepad_control/civilian{ + dir = 8 + }, /turf/open/floor/plasteel, /area/hallway/primary/port) "bdw" = ( @@ -65526,7 +65524,6 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/computer/bounty, /obj/effect/turf_decal/tile/brown{ dir = 1 }, @@ -72167,7 +72164,6 @@ departmentType = 2; pixel_y = 30 }, -/obj/machinery/computer/bounty, /obj/effect/turf_decal/tile/brown{ dir = 1 }, @@ -76705,9 +76701,6 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/computer/bounty{ - dir = 4 - }, /turf/open/floor/wood, /area/command/heads_quarters/hop) "tdQ" = ( diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 1c42b077f8..1100ce3896 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -5246,9 +5246,6 @@ name = "Cargo Office RC"; pixel_x = 32 }, -/obj/machinery/computer/bounty{ - dir = 8 - }, /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ dir = 4 @@ -6770,9 +6767,6 @@ /turf/open/floor/plasteel, /area/hallway/primary/starboard/fore) "amv" = ( -/obj/machinery/computer/bounty{ - dir = 4 - }, /obj/effect/turf_decal/tile/brown{ dir = 1 }, @@ -9012,14 +9006,12 @@ /turf/open/floor/plasteel, /area/hallway/primary/starboard/fore) "aqn" = ( -/obj/structure/chair{ - dir = 1 - }, /obj/machinery/airalarm{ dir = 1; pixel_y = -22 }, /obj/effect/turf_decal/bot, +/obj/machinery/piratepad/civilian, /turf/open/floor/plasteel, /area/hallway/primary/starboard/fore) "aqo" = ( @@ -10231,7 +10223,6 @@ /turf/open/floor/plasteel, /area/maintenance/starboard) "ass" = ( -/obj/machinery/mineral/mint, /obj/structure/sign/poster/official/random{ pixel_y = 32 }, @@ -38524,6 +38515,13 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrous_input, /turf/open/floor/engine/n2o, /area/engineering/atmos) +"svk" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/computer/piratepad_control/civilian{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard/fore) "svX" = ( /obj/structure/sign/warning/fire{ pixel_y = -32 @@ -89669,7 +89667,7 @@ amA ano aog apg -aqk +svk aRz abN acy diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 318e72a0d4..75dfa4b568 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -18187,11 +18187,14 @@ /turf/open/floor/plasteel, /area/cargo/office) "aTe" = ( -/obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plating, +/obj/machinery/mineral/ore_redemption{ + input_dir = 4; + output_dir = 8 + }, +/turf/open/floor/plasteel, /area/cargo/office) "aTf" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -19695,12 +19698,11 @@ /turf/open/floor/plasteel, /area/cargo/office) "aWv" = ( -/obj/machinery/door/firedoor, -/obj/machinery/mineral/ore_redemption{ - input_dir = 4; - output_dir = 8 +/obj/effect/turf_decal/tile/brown, +/obj/machinery/computer/piratepad_control/civilian{ + dir = 1 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel, /area/cargo/office) "aWw" = ( /obj/effect/turf_decal/tile/brown, @@ -21141,9 +21143,6 @@ /obj/machinery/status_display/supply{ pixel_x = -32 }, -/obj/machinery/computer/bounty{ - dir = 4 - }, /turf/open/floor/plasteel, /area/cargo/office) "aZk" = ( @@ -23008,9 +23007,6 @@ /turf/open/floor/plasteel, /area/cargo/qm) "bdH" = ( -/obj/machinery/computer/bounty{ - dir = 8 - }, /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ dir = 4 @@ -59289,11 +59285,10 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) "pHo" = ( -/obj/machinery/computer/bounty{ - dir = 1 - }, -/turf/open/floor/wood, -/area/command/heads_quarters/hop) +/obj/effect/turf_decal/tile/brown, +/obj/machinery/piratepad/civilian, +/turf/open/floor/plasteel, +/area/cargo/office) "pJy" = ( /obj/structure/rack, /obj/item/crowbar, @@ -97203,7 +97198,7 @@ aAG aBA aCQ aDS -pHo +aCS aAH aGu aHh @@ -101589,7 +101584,7 @@ aSe aTc aOT aVp -aWu +pHo aPW aYr aOV @@ -101846,7 +101841,7 @@ aSf aTd aUn aVr -aWu +aWv aLf aYs aZk @@ -102103,7 +102098,7 @@ lAs aTe aUo aVs -aWv +aLf aLf aPW aZl diff --git a/_maps/map_files/Snaxi/Snaxi.dmm b/_maps/map_files/Snaxi/Snaxi.dmm index 53e34ba320..ae13d5c6e9 100644 --- a/_maps/map_files/Snaxi/Snaxi.dmm +++ b/_maps/map_files/Snaxi/Snaxi.dmm @@ -25717,7 +25717,6 @@ /obj/effect/turf_decal/tile/brown{ dir = 4 }, -/obj/machinery/computer/bounty, /turf/open/floor/plasteel, /area/cargo/storage) "jjB" = ( @@ -35746,7 +35745,7 @@ pixel_y = -22 }, /obj/machinery/light, -/obj/structure/closet/emcloset, +/obj/machinery/piratepad/civilian, /turf/open/floor/plasteel, /area/hallway/primary/fore) "pLP" = ( @@ -37124,7 +37123,9 @@ }, /area/service/chapel/main) "qHq" = ( -/obj/structure/closet/crate, +/obj/machinery/computer/piratepad_control/civilian{ + dir = 1 + }, /turf/open/floor/plasteel, /area/hallway/primary/fore) "qHC" = ( @@ -47820,16 +47821,6 @@ }, /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/ai_upload) -"xEf" = ( -/obj/machinery/computer/bounty{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown, -/turf/open/floor/plasteel, -/area/cargo/qm) "xEt" = ( /obj/structure/cable{ icon_state = "4-8" @@ -89702,7 +89693,7 @@ rDE dFF sLn acv -xEf +jmU krH avT xUL diff --git a/_maps/map_files/SpookyStation/SpookyStation.dmm b/_maps/map_files/SpookyStation/SpookyStation.dmm index b40f7adaab..c8fdb504b4 100644 --- a/_maps/map_files/SpookyStation/SpookyStation.dmm +++ b/_maps/map_files/SpookyStation/SpookyStation.dmm @@ -3720,10 +3720,6 @@ }, /turf/open/floor/wood, /area/eventmap/inside) -"alc" = ( -/obj/machinery/computer/bounty, -/turf/open/floor/wood, -/area/eventmap/inside) "ald" = ( /obj/machinery/computer/cargo/request, /turf/open/floor/wood, @@ -12424,9 +12420,6 @@ /turf/open/floor/plasteel, /area/eventmap/mountaininside) "aJT" = ( -/obj/machinery/computer/bounty{ - dir = 8 - }, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -14199,15 +14192,6 @@ }, /turf/open/floor/wood/damturf/broken3, /area/eventmap/inside) -"aOT" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/computer/bounty{ - dir = 1 - }, -/turf/open/floor/wood, -/area/eventmap/inside) "aOU" = ( /obj/structure/cable/white{ icon_state = "4-8" @@ -18162,7 +18146,7 @@ aqr aqr aOG aOM -aOT +aBm aqr aac aac @@ -38454,7 +38438,7 @@ adR aDI aiZ akz -alc +aOE aOo aHT aqa diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm index 3dff7a8f44..569dc9736d 100644 --- a/_maps/map_files/debug/runtimestation.dmm +++ b/_maps/map_files/debug/runtimestation.dmm @@ -1913,9 +1913,6 @@ /obj/machinery/camera/autoname{ dir = 4 }, -/obj/machinery/computer/bounty{ - dir = 4 - }, /turf/open/floor/plasteel, /area/cargo/storage) "fr" = ( diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index 7a54b8482d..2b9fa902e9 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -490,6 +490,14 @@ #define COMPONENT_BLOCK_SHARPEN_ALREADY 4 #define COMPONENT_BLOCK_SHARPEN_MAXED 8 #define COMSIG_ITEM_MICROWAVE_ACT "microwave_act" //called on item when microwaved (): (obj/machinery/microwave/M) + +// /obj/item signals for economy +#define COMSIG_ITEM_SOLD "item_sold" //called when an item is sold by the exports subsystem +#define COMSIG_STRUCTURE_UNWRAPPED "structure_unwrapped" //called when a wrapped up structure is opened by hand +#define COMSIG_ITEM_UNWRAPPED "item_unwrapped" //called when a wrapped up item is opened by hand + #define COMSIG_ITEM_SPLIT_VALUE 1 +#define COMSIG_ITEM_SPLIT_PROFIT "item_split_profits" //Called when getting the item's exact ratio for cargo's profit. + #define COMSIG_ITEM_WORN_OVERLAYS "item_worn_overlays" //from base of obj/item/worn_overlays(): (isinhands, icon_file, used_state, style_flags, list/overlays) #define COMSIG_ARMOR_PLATED "armor_plated" //called when an armor plate is successfully applied to an object // THE FOLLOWING TWO BLOCKS SHOULD RETURN BLOCK FLAGS AS DEFINED IN __DEFINES/combat.dm! diff --git a/code/__DEFINES/economy.dm b/code/__DEFINES/economy.dm index 715469ff78..0d37607b81 100644 --- a/code/__DEFINES/economy.dm +++ b/code/__DEFINES/economy.dm @@ -52,3 +52,18 @@ #define PRICE_ABOVE_EXPENSIVE 500 // RCD, Crew pinpointer/monitor, galoshes #define PRICE_REALLY_EXPENSIVE 700 // More premium stuff. #define PRICE_ALMOST_ONE_GRAND 900 // $$$ Insulated gloves, backpack water-tank spray $$$ + +//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_ENG 9 +#define CIV_JOB_MINE 10 +#define CIV_JOB_MED 11 +#define CIV_JOB_GROW 12 +#define CIV_JOB_RANDOM 13 diff --git a/code/controllers/subsystem/economy.dm b/code/controllers/subsystem/economy.dm index 3f594e170e..88255f375e 100644 --- a/code/controllers/subsystem/economy.dm +++ b/code/controllers/subsystem/economy.dm @@ -52,6 +52,9 @@ SUBSYSTEM_DEF(economy) ///The modifier multiplied to the value of cargo pack prices. var/pack_price_modifier = 1 + var/civ_bounty_tracker = 0 + /// Contains the message to send to newscasters about earnings, updated on price_update() + /datum/controller/subsystem/economy/Initialize(timeofday) var/budget_to_hand_out = round(budget_pool / department_accounts.len) for(var/A in department_accounts) diff --git a/code/datums/components/pricetag.dm b/code/datums/components/pricetag.dm new file mode 100644 index 0000000000..2ad63c6464 --- /dev/null +++ b/code/datums/components/pricetag.dm @@ -0,0 +1,35 @@ +/datum/component/pricetag + ///Payee gets 100% of the value if no ratio has been set. + var/default_profit_ratio = 1 + ///List of bank accounts this pricetag pays out to. Format is payees[bank_account] = profit_ratio. + var/list/payees = list() + + +/datum/component/pricetag/Initialize(_owner,_profit_ratio) + if(!isobj(parent)) //Has to account for both objects and sellable structures like crates. + return COMPONENT_INCOMPATIBLE + if(_profit_ratio) + payees[_owner] = _profit_ratio + else + payees[_owner] = default_profit_ratio + RegisterSignal(parent, COMSIG_ITEM_SOLD, .proc/split_profit) + RegisterSignal(parent, COMSIG_STRUCTURE_UNWRAPPED, .proc/Unwrapped) + RegisterSignal(parent, COMSIG_ITEM_UNWRAPPED, .proc/Unwrapped) + RegisterSignal(parent, COMSIG_ITEM_SPLIT_PROFIT, .proc/return_ratio) + +/datum/component/pricetag/proc/Unwrapped() + qdel(src) //Once it leaves it's wrapped container, the object in question should lose it's pricetag component. + +/datum/component/pricetag/proc/split_profit(var/item_value) + var/price = item_value + if(price) + for(var/datum/bank_account/payee in payees) + var/profit_ratio = payees[payee] + var/adjusted_value = price * profit_ratio + var/datum/bank_account/bank_account = payee + bank_account.adjust_money(adjusted_value) + bank_account.bank_card_talk("Sale of [parent] recorded. [adjusted_value] credits added to account.") + return TRUE + +/datum/component/pricetag/proc/return_ratio() + return default_profit_ratio diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index f592b60d2f..05865d904c 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -162,7 +162,7 @@ animate(filter, radius = 32, time = 15, size = 0, loop = -1) /datum/status_effect/grouped/stasis/proc/InterruptBiologicalLife() - return COMPONENT_INTERRUPT_LIFE_BIOLOGICAL + return COMPONENT_INTERRUPT_LIFE_BIOLOGICAL /datum/status_effect/grouped/stasis/tick() update_time_of_death() @@ -1196,13 +1196,19 @@ /datum/status_effect/cgau_conc id = "cgau_conc" - examine_text = "SUBJECTPRONOUN rocks from side to side, confused." + examine_text = "SUBJECTPRONOUN sways from side to side hesitantly!" duration = 5 SECONDS -/datum/status_effect/cgau_conc/on_creation(mob/living/new_owner, ...) +/datum/status_effect/cgau_conc/on_apply() . = ..() - new_owner.add_movespeed_modifier(/datum/movespeed_modifier/gauntlet_concussion) + owner.add_movespeed_modifier(/datum/movespeed_modifier/gauntlet_concussion) + if(ishostile(owner)) + var/mob/living/simple_animal/hostile/simple_owner = owner + simple_owner.ranged_cooldown_time *= 2.5 /datum/status_effect/cgau_conc/on_remove() - owner.remove_movespeed_modifier(/datum/movespeed_modifier/gauntlet_concussion) . = ..() + owner.remove_movespeed_modifier(/datum/movespeed_modifier/gauntlet_concussion) + if(ishostile(owner)) + var/mob/living/simple_animal/hostile/simple_owner = owner + simple_owner.ranged_cooldown_time /= 2.5 diff --git a/code/game/machinery/civilian_bountys.dm b/code/game/machinery/civilian_bountys.dm new file mode 100644 index 0000000000..0395956d8b --- /dev/null +++ b/code/game/machinery/civilian_bountys.dm @@ -0,0 +1,353 @@ +#define CIV_BOUNTY_SPLIT 30 + +///Pad for the Civilian Bounty Control. +/obj/machinery/piratepad/civilian + name = "civilian bounty pad" + desc = "A machine designed to send civilian bounty targets to centcom." + layer = TABLE_LAYER + +///Computer for assigning new civilian bounties, and sending bounties for collection. +/obj/machinery/computer/piratepad_control/civilian + name = "civilian bounty control terminal" + desc = "A console for assigning civilian bounties to inserted ID cards, and for controlling the bounty pad for export." + status_report = "Ready for delivery." + icon_screen = "civ_bounty" + icon_keyboard = "id_key" + warmup_time = 3 SECONDS + var/obj/item/card/id/inserted_scan_id + +/obj/machinery/computer/piratepad_control/civilian/Initialize() + . = ..() + pad = /obj/machinery/piratepad/civilian + +/obj/machinery/computer/piratepad_control/civilian/attackby(obj/item/I, mob/living/user, params) + . = ..() + if(isidcard(I)) + if(id_insert(user, I, inserted_scan_id)) + inserted_scan_id = I + return TRUE + +/obj/machinery/computer/piratepad_control/multitool_act(mob/living/user, obj/item/multitool/I) + if(istype(I) && istype(I.buffer,/obj/machinery/piratepad/civilian)) + to_chat(user, "You link [src] with [I.buffer] in [I] buffer.") + pad = I.buffer + return TRUE + +/obj/machinery/computer/piratepad_control/civilian/LateInitialize() + . = ..() + if(cargo_hold_id) + for(var/obj/machinery/piratepad/civilian/C in GLOB.machines) + if(C.cargo_hold_id == cargo_hold_id) + pad = C + return + else + pad = locate() in range(4,src) + +/obj/machinery/computer/piratepad_control/civilian/recalc() + if(sending) + return FALSE + if(!inserted_scan_id) + status_report = "Please insert your ID first." + playsound(loc, 'sound/machines/synth_no.ogg', 30 , TRUE) + return FALSE + if(!inserted_scan_id.registered_account.civilian_bounty) + status_report = "Please accept a new civilian bounty first." + playsound(loc, 'sound/machines/synth_no.ogg', 30 , TRUE) + return FALSE + status_report = "Civilian Bounty: " + for(var/atom/movable/AM in get_turf(pad)) + if(AM == pad) + continue + if(inserted_scan_id.registered_account.civilian_bounty.applies_to(AM)) + status_report += "Target Applicable." + playsound(loc, 'sound/machines/synth_yes.ogg', 30 , TRUE) + return + status_report += "Not Applicable." + playsound(loc, 'sound/machines/synth_no.ogg', 30 , TRUE) + +/** + * This fully rewrites base behavior in order to only check for bounty objects, and nothing else. + */ +/obj/machinery/computer/piratepad_control/civilian/send() + playsound(loc, 'sound/machines/wewewew.ogg', 70, TRUE) + if(!sending) + return + if(!inserted_scan_id) + stop_sending() + return FALSE + if(!inserted_scan_id.registered_account.civilian_bounty) + stop_sending() + return FALSE + var/datum/bounty/curr_bounty = inserted_scan_id.registered_account.civilian_bounty + var/active_stack = 0 + for(var/atom/movable/AM in get_turf(pad)) + if(AM == pad) + continue + if(curr_bounty.applies_to(AM)) + active_stack ++ + curr_bounty.ship(AM) + qdel(AM) + if(active_stack >= 1) + status_report += "Bounty Target Found x[active_stack]. " + else + status_report = "No applicable targets found. Aborting." + stop_sending() + if(curr_bounty.can_claim()) + //Pay for the bounty with the ID's department funds. + status_report += "Bounty completed! Please give your bounty cube to cargo for your automated payout shortly." + inserted_scan_id.registered_account.reset_bounty() + SSeconomy.civ_bounty_tracker++ + + var/obj/item/bounty_cube/reward = new /obj/item/bounty_cube(drop_location()) + reward.set_up(curr_bounty, inserted_scan_id) + + pad.visible_message(span_notice("[pad] activates!")) + flick(pad.sending_state,pad) + pad.icon_state = pad.idle_state + playsound(loc, 'sound/machines/synth_yes.ogg', 30 , TRUE) + sending = FALSE + +///Here is where cargo bounties are added to the player's bank accounts, then adjusted and scaled into a civilian bounty. +/obj/machinery/computer/piratepad_control/civilian/proc/add_bounties() + if(!inserted_scan_id || !inserted_scan_id.registered_account) + return + var/datum/bank_account/pot_acc = inserted_scan_id.registered_account + if((pot_acc.civilian_bounty && ((world.time) < pot_acc.bounty_timer + 5 MINUTES)) || pot_acc.bounties) + var/curr_time = round(((pot_acc.bounty_timer + (5 MINUTES))-world.time)/ (1 MINUTES), 0.01) + to_chat(usr, "Internal ID network spools coiling, try again in [curr_time] minutes!") + return FALSE + if(!pot_acc.account_job) + to_chat(usr, "The console smartly rejects your ID card, as it lacks a job assignment!") + return FALSE + var/list/datum/bounty/crumbs = list(random_bounty(pot_acc.account_job.bounty_types), // We want to offer 2 bounties from their appropriate job catagories + random_bounty(pot_acc.account_job.bounty_types), // and 1 guarenteed assistant bounty if the other 2 suck. + random_bounty(CIV_JOB_BASIC)) + pot_acc.bounty_timer = world.time + pot_acc.bounties = crumbs + +/obj/machinery/computer/piratepad_control/civilian/proc/pick_bounty(choice) + if(!inserted_scan_id?.registered_account) + playsound(loc, 'sound/machines/synth_no.ogg', 40 , TRUE) + return + inserted_scan_id.registered_account.civilian_bounty = inserted_scan_id.registered_account.bounties[choice] + inserted_scan_id.registered_account.bounties = null + return inserted_scan_id.registered_account.civilian_bounty + +/obj/machinery/computer/piratepad_control/civilian/AltClick(mob/user) + . = ..() + id_eject(user, inserted_scan_id) + +/obj/machinery/computer/piratepad_control/civilian/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "CivCargoHoldTerminal", name) + ui.open() + +/obj/machinery/computer/piratepad_control/civilian/ui_data(mob/user) + var/list/data = list() + data["points"] = points + data["pad"] = pad ? TRUE : FALSE + data["sending"] = sending + data["status_report"] = status_report + data["id_inserted"] = inserted_scan_id + if(inserted_scan_id && inserted_scan_id.registered_account) + if(inserted_scan_id.registered_account.civilian_bounty) + data["id_bounty_info"] = inserted_scan_id.registered_account.civilian_bounty.description + data["id_bounty_num"] = inserted_scan_id.registered_account.bounty_num() + data["id_bounty_value"] = (inserted_scan_id.registered_account.civilian_bounty.reward) * (CIV_BOUNTY_SPLIT/100) + if(inserted_scan_id.registered_account.bounties) + data["picking"] = TRUE + data["id_bounty_names"] = list(inserted_scan_id.registered_account.bounties[1].name, + inserted_scan_id.registered_account.bounties[2].name, + inserted_scan_id.registered_account.bounties[3].name) + data["id_bounty_values"] = list(inserted_scan_id.registered_account.bounties[1].reward * (CIV_BOUNTY_SPLIT/100), + inserted_scan_id.registered_account.bounties[2].reward * (CIV_BOUNTY_SPLIT/100), + inserted_scan_id.registered_account.bounties[3].reward * (CIV_BOUNTY_SPLIT/100)) + else + data["picking"] = FALSE + return data + +/obj/machinery/computer/piratepad_control/civilian/ui_act(action, params) + if(..()) + return + if(!pad) + return + if(!usr.canUseTopic(src, BE_CLOSE)) + return + switch(action) + if("recalc") + recalc() + if("send") + start_sending() + if("stop") + stop_sending() + if("pick") + pick_bounty(params["value"]) + if("bounty") + add_bounties() + if("eject") + id_eject(usr, inserted_scan_id) + inserted_scan_id = null + . = TRUE + +///Self explanitory, holds the ID card inthe console for bounty payout and manipulation. +/obj/machinery/computer/piratepad_control/civilian/proc/id_insert(mob/user, obj/item/inserting_item, obj/item/target) + var/obj/item/card/id/card_to_insert = inserting_item + var/holder_item = FALSE + + if(!isidcard(card_to_insert)) + card_to_insert = inserting_item.RemoveID() + holder_item = TRUE + + if(!card_to_insert || !user.transferItemToLoc(card_to_insert, src)) + return FALSE + + if(target) + if(holder_item && inserting_item.InsertID(target)) + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) + else + id_eject(user, target) + + user.visible_message("[user] inserts \the [card_to_insert] into \the [src].", + "You insert \the [card_to_insert] into \the [src].") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) + updateUsrDialog() + return TRUE + +///Removes A stored ID card. +/obj/machinery/computer/piratepad_control/civilian/proc/id_eject(mob/user, obj/target) + if(!target) + to_chat(user, "That slot is empty!") + return FALSE + else + target.forceMove(drop_location()) + if(!issilicon(user) && Adjacent(user)) + user.put_in_hands(target) + user.visible_message("[user] gets \the [target] from \the [src].", \ + "You get \the [target] from \the [src].") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) + inserted_scan_id = null + updateUsrDialog() + return TRUE + +///Upon completion of a civilian bounty, one of these is created. It is sold to cargo to give the cargo budget bounty money, and the person who completed it cash. +/obj/item/bounty_cube + name = "Bounty Cube" + desc = "A bundle of compressed hardlight data, containing a completed bounty. Sell this on the cargo shuttle to claim it!" + icon = 'icons/obj/economy.dmi' + icon_state = "bounty_cube" + ///Value of the bounty that this bounty cube sells for. + var/bounty_value = 0 + ///Who completed the bounty. + var/bounty_holder + ///What the bounty was for. + var/bounty_name + ///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 + ///What job the bounty holder had. + var/bounty_holder_job + ///Bank account of the person who receives the handling tip. + var/datum/bank_account/bounty_handler_account + ///Bank account of the person who completed the bounty. + var/datum/bank_account/bounty_holder_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() + . = ..() + radio = new(src) + radio.keyslot = new radio_key + radio.listening = FALSE + radio.recalculateChannels() + +/obj/item/bounty_cube/Destroy() + QDEL_NULL(radio) + . = ..() + +/obj/item/bounty_cube/examine() + . = ..() + if(speed_bonus) + . += "[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) + . += "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(COOLDOWN_FINISHED(src, next_nag_time)) + if(!is_centcom_level(z) && !is_reserved_level(z)) //don't send message if we're on Centcom or in transit + radio.talk_into(src, "Unsent in [get_area(src)].[speed_bonus ? " Speedy delivery bonus of [bounty_value * speed_bonus] credit\s lost." : ""]", RADIO_CHANNEL_SUPPLY) + speed_bonus = 0 + bounty_holder_account.bank_card_talk("\The [src] is unsent in [get_area(src)].") + if(bounty_handler_account) + bounty_handler_account.bank_card_talk("\The [src] is unsent in [get_area(src)].") + 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, obj/item/card/id/holder_id) + bounty_value = my_bounty.reward + bounty_name = my_bounty.name + bounty_holder = holder_id.registered_name + bounty_holder_job = holder_id.assignment + bounty_holder_account = holder_id.registered_account + name = "\improper [bounty_value] cr [name]" + desc += " The sales tag indicates it was [bounty_holder] ([bounty_holder_job])'s reward for completing the [bounty_name] bounty." + AddComponent(/datum/component/pricetag, holder_id.registered_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]). Speedy delivery bonus lost in [time2text(next_nag_time - world.time,"mm:ss")].", RADIO_CHANNEL_SUPPLY) + +//for when you need a REAL bounty cube to test with and don't want to do a bounty each time your code changes +/obj/item/bounty_cube/test_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 to your location with kill on sight clearance." + var/set_up = FALSE + +/obj/item/bounty_cube/test_cube/attack_self(mob/user) + if(!isliving(user)) + to_chat(user, "You aren't eligible to use this!") + return ..() + + if(!set_up) + var/mob/living/squeezer = user + if(squeezer.get_bank_account()) + set_up(random_bounty(), squeezer.get_idcard()) + set_up = TRUE + return ..() + to_chat(user, "It can't detect your bank account.") + + return ..() + + +///Beacon to launch a new bounty setup when activated. +/obj/item/civ_bounty_beacon + name = "civilian bounty beacon" + desc = "N.T. approved civilian bounty beacon, toss it down and you will have a bounty pad and computer delivered to you." + icon = 'icons/obj/objects.dmi' + icon_state = "floor_beacon" + var/uses = 2 + +/obj/item/civ_bounty_beacon/attack_self() + loc.visible_message("\The [src] begins to beep loudly!") + addtimer(CALLBACK(src, .proc/launch_payload), 4 SECONDS) + +/obj/item/civ_bounty_beacon/proc/launch_payload() + playsound(src, "sparks", 80, TRUE) + switch(uses) + if(2) + new /obj/machinery/piratepad/civilian(drop_location()) + if(1) + new /obj/machinery/computer/piratepad_control/civilian(drop_location()) + qdel(src) + uses = uses - 1 diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index cc9fc8c2b3..7033284a86 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/misc.dm @@ -311,3 +311,9 @@ random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7") mergeable_decal = TRUE persistent = TRUE + +/obj/effect/decal/cleanable/wrapping + name = "wrapping shreds" + desc = "Torn pieces of cardboard and paper, left over from a package." + icon = 'icons/obj/objects.dmi' + icon_state = "paper_shreds" diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 2f3760eb31..d187de8e6f 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -372,6 +372,11 @@ . += "The [D.account_holder] reports a balance of [D.account_balance] cr." . += "Alt-Click the ID to pull money from the linked account in the form of holochips." . += "You can insert credits into the linked account by pressing holochips, cash, or coins against the ID." + if(registered_account.civilian_bounty) + . += "There is an active civilian bounty." + . += "[registered_account.bounty_text()]" + . += "Quantity: [registered_account.bounty_num()]" + . += "Reward: [registered_account.bounty_value()]" if(registered_account.account_holder == user.real_name) . += "If you lose this ID card, you can reclaim your account by Alt-Clicking a blank ID card while holding it and entering your account ID number." else diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm index 74d11e9c11..382764c586 100644 --- a/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -348,9 +348,9 @@ name = "Snow Taxi (Computer Board)" build_path = /obj/machinery/computer/shuttle/snow_taxi -// /obj/item/circuitboard/computer/bountypad -// name = "Bounty Pad (Computer Board)" -// build_path = /obj/machinery/computer/piratepad_control/civilian +/obj/item/circuitboard/computer/bountypad + name = "Bounty Pad (Computer Board)" + build_path = /obj/machinery/computer/piratepad_control/civilian /obj/item/circuitboard/computer/security/shuttle name = "Shuttlelinking Security Cameras (Computer Board)" @@ -581,10 +581,6 @@ name = "Supply Request Console (Computer Board)" build_path = /obj/machinery/computer/cargo/request -/obj/item/circuitboard/computer/bounty - name = "Nanotrasen Bounty Console (Computer Board)" - build_path = /obj/machinery/computer/bounty - /obj/item/circuitboard/computer/ferry name = "Transport Ferry (Computer Board)" icon_state = "supply" diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index ef9825ee79..e16de56465 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -685,15 +685,15 @@ /obj/item/stack/sheet/glass = 1, /obj/item/vending_refill/donksoft = 1) -// /obj/item/circuitboard/machine/bountypad -// name = "Civilian Bounty Pad (Machine Board)" -// icon_state = "generic" -// build_path = /obj/machinery/piratepad/civilian -// req_components = list( -// /obj/item/stock_parts/card_reader = 1, -// /obj/item/stock_parts/scanning_module = 1, -// /obj/item/stock_parts/micro_laser = 1 -// ) + +/obj/item/circuitboard/machine/bountypad + name = "Civilian Bounty Pad (Machine Board)" + icon_state = "generic" + build_path = /obj/machinery/piratepad/civilian + req_components = list( + /obj/item/stock_parts/scanning_module = 1, + /obj/item/stock_parts/micro_laser = 1 + ) // /obj/item/circuitboard/machine/accounting // name = "Account Registration Device (Machine Board)" diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index a49b373be6..698effb26c 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -215,6 +215,26 @@ as performing this in action() will cause the upgrade to end up in the borg inst C.icon_state = initial(icon_state) for(var/obj/item/ammo_casing/energy/plasma/weak/L in C.ammo_type) L.projectile_type = initial(L.projectile_type) + +/obj/item/borg/upgrade/premiumka + name = "mining cyborg premium KA" + desc = "A premium kinetic accelerator replacement for the mining module's standard kinetic accelerator." + icon_state = "cyborg_upgrade3" + require_module = 1 + module_type = list(/obj/item/robot_module/miner) + +/obj/item/borg/upgrade/premiumka/action(mob/living/silicon/robot/R, user = usr) + . = ..() + if(.) + for(var/obj/item/gun/energy/kinetic_accelerator/cyborg/KA in R.module) + for(var/obj/item/borg/upgrade/modkit/M in KA.modkits) + M.uninstall(src) + R.module.remove_module(KA, TRUE) + + var/obj/item/gun/energy/kinetic_accelerator/premiumka/cyborg/PKA = new /obj/item/gun/energy/kinetic_accelerator/premiumka/cyborg(R.module) + R.module.basic_modules += PKA + R.module.add_module(PKA, FALSE, TRUE) + /obj/item/borg/upgrade/tboh name = "janitor cyborg trash bag of holding" desc = "A trash bag of holding replacement for the janiborg's standard trash bag." diff --git a/code/game/objects/items/stacks/wrap.dm b/code/game/objects/items/stacks/wrap.dm index 6ae63e640f..c969e2d1d4 100644 --- a/code/game/objects/items/stacks/wrap.dm +++ b/code/game/objects/items/stacks/wrap.dm @@ -20,6 +20,9 @@ if(QDELETED(src) && !transfer) new /obj/item/c_tube(T) +/obj/item/stack/wrapping_paper/small + desc = "Wrap packages with this festive paper to make gifts. This roll looks a bit skimpy." + amount = 10 /* * Package Wrap @@ -121,6 +124,11 @@ if(QDELETED(src) && !transfer) new /obj/item/c_tube(T) +/obj/item/stack/packageWrap/small + desc = "You can use this to wrap items in. This roll looks a bit skimpy." + w_class = WEIGHT_CLASS_SMALL + amount = 5 + /obj/item/c_tube name = "cardboard tube" desc = "A tube... of cardboard." diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index 6bca12330b..af60dba8a5 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -1460,3 +1460,18 @@ /obj/item/storage/box/strange_seeds_5pack/PopulateContents() for(var/i in 1 to 5) new /obj/item/seeds/random(src) + +/obj/item/storage/box/shipping + name = "box of shipping supplies" + desc = "Contains several scanners and labelers for shipping things. Wrapping Paper not included." + illustration = "shipping" + +/obj/item/storage/box/shipping/PopulateContents() + var/static/items_inside = list( + /obj/item/destTagger=1,\ + /obj/item/sales_tagger=1,\ + /obj/item/export_scanner=1,\ + /obj/item/stack/packageWrap/small=2,\ + /obj/item/stack/wrapping_paper/small=1 + ) + generate_items_inside(items_inside,src) diff --git a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm index 982ab73485..06fea9bd91 100644 --- a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm +++ b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm @@ -8,7 +8,7 @@ resistance_flags = FIRE_PROOF | ACID_PROOF flags_inv = HIDEEARS|HIDEHAIR|HIDEFACE|HIDESNOUT mutantrace_variation = STYLE_MUZZLE - armor = list(MELEE = 50, BULLET = 70, LASER = 0, ENERGY = 0, BOMB = 60, BIO = 0, RAD = 0, FIRE = 100, ACID = 100, MAGIC = 60, WOUND = 65) + armor = list(MELEE = 50, BULLET = 70, LASER = 50, ENERGY = 50, BOMB = 60, BIO = 0, RAD = 0, FIRE = 100, ACID = 100, MAGIC = 60, WOUND = 65) /obj/item/clothing/head/helmet/clockwork/Initialize(mapload) . = ..() @@ -26,12 +26,12 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT else if(GLOB.ratvar_approaches) - armor = getArmor(melee = 70, bullet = 80, laser = 10, energy = 25, bomb = 70, bio = 0, rad = 0, fire = 100, acid = 100,, magic = 70, wound = 75) + armor = getArmor(melee = 70, bullet = 80, laser = 65, energy = 65, bomb = 70, bio = 0, rad = 0, fire = 100, acid = 100,, magic = 70, wound = 75) clothing_flags |= STOPSPRESSUREDAMAGE max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT else - armor = getArmor(melee = 60, bullet = 70, laser = 0, energy = 0, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100, magic = 60, wound = 65) + armor = getArmor(melee = 60, bullet = 70, laser = 50, energy = 50, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100, magic = 60, wound = 65) clothing_flags &= ~STOPSPRESSUREDAMAGE max_heat_protection_temperature = initial(max_heat_protection_temperature) min_cold_protection_temperature = initial(min_cold_protection_temperature) @@ -68,7 +68,7 @@ cold_protection = CHEST|GROIN|LEGS heat_protection = CHEST|GROIN|LEGS resistance_flags = FIRE_PROOF | ACID_PROOF - armor = list(MELEE = 60, BULLET = 70, LASER = 0, ENERGY = 0, BOMB = 60, BIO = 0, RAD = 0, FIRE = 100, ACID = 100, MAGIC = 60, WOUND = 65) + armor = list(MELEE = 60, BULLET = 70, LASER = 50, ENERGY = 50, BOMB = 60, BIO = 0, RAD = 0, FIRE = 100, ACID = 100, MAGIC = 60, WOUND = 65) allowed = list(/obj/item/clockwork, /obj/item/clothing/glasses/wraith_spectacles, /obj/item/clothing/glasses/judicial_visor, /obj/item/mmi/posibrain/soul_vessel, /obj/item/reagent_containers/food/drinks/bottle/holyoil) mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC @@ -88,12 +88,12 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT else if(GLOB.ratvar_approaches) - armor = getArmor(melee = 70, bullet = 80, laser = 10, energy = 25, bomb = 70, bio = 0, rad = 0, fire = 100, acid = 100, magic = 70, wound = 75) + armor = getArmor(melee = 70, bullet = 80, laser = 65, energy = 65, bomb = 70, bio = 0, rad = 0, fire = 100, acid = 100, magic = 70, wound = 75) clothing_flags |= STOPSPRESSUREDAMAGE max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT else - armor = getArmor(melee = 60, bullet = 70, laser = 0, energy = 0, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100, magic = 60, wound = 65) + armor = getArmor(melee = 60, bullet = 70, laser = 50, energy = 50, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100, magic = 60, wound = 65) clothing_flags &= ~STOPSPRESSUREDAMAGE max_heat_protection_temperature = initial(max_heat_protection_temperature) min_cold_protection_temperature = initial(min_cold_protection_temperature) @@ -135,7 +135,7 @@ siemens_coefficient = 0 permeability_coefficient = 0.05 resistance_flags = FIRE_PROOF | ACID_PROOF - armor = list(MELEE = 80, BULLET = 70, LASER = 0, ENERGY = 0, BOMB = 60, BIO = 0, RAD = 0, FIRE = 100, ACID = 100, MAGIC = 70, WOUND = 85) + armor = list(MELEE = 80, BULLET = 70, LASER = 50, ENERGY = 50, BOMB = 60, BIO = 0, RAD = 0, FIRE = 100, ACID = 100, MAGIC = 70, WOUND = 85) /obj/item/clothing/gloves/clockwork/Initialize(mapload) . = ..() @@ -153,7 +153,7 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT else - armor = getArmor(melee = 80, bullet = 70, laser = 0, energy = 0, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100, magic = 70, wound = 85) + armor = getArmor(melee = 80, bullet = 70, laser = 50, energy = 50, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100, magic = 70, wound = 85) clothing_flags &= ~STOPSPRESSUREDAMAGE max_heat_protection_temperature = initial(max_heat_protection_temperature) min_cold_protection_temperature = initial(min_cold_protection_temperature) diff --git a/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm index db19361ca8..3298196de7 100644 --- a/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm +++ b/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm @@ -70,7 +70,7 @@ /obj/item/clockwork/slab/cyborg/engineer //six scriptures, plus a fabricator. Might revert this if its too OP, I just thought that engineering borgs should get the all the structures quickbound = list(/datum/clockwork_scripture/spatial_gateway, /datum/clockwork_scripture/create_object/replicant, /datum/clockwork_scripture/create_object/sigil_of_transmission, /datum/clockwork_scripture/create_object/stargazer, \ - /datum/clockwork_scripture/create_object/ocular_warden, /datum/clockwork_scripture/create_object/clockwork_obelisk, /datum/clockwork_scripture/create_object/mania_motor) + /datum/clockwork_scripture/create_object/ocular_warden, /datum/clockwork_scripture/create_object/clockwork_obelisk/cyborg, /datum/clockwork_scripture/create_object/mania_motor/cyborg) /obj/item/clockwork/slab/cyborg/medical //six scriptures, plus a spear quickbound = list(/datum/clockwork_scripture/spatial_gateway, /datum/clockwork_scripture/ranged_ability/linked_vanguard, /datum/clockwork_scripture/ranged_ability/sentinels_compromise, \ @@ -90,7 +90,7 @@ */ /obj/item/clockwork/slab/cyborg/service //six scriptures, plus xray vision quickbound = list(/datum/clockwork_scripture/spatial_gateway, /datum/clockwork_scripture/create_object/replicant,/datum/clockwork_scripture/create_object/stargazer, \ - /datum/clockwork_scripture/spatial_gateway, /datum/clockwork_scripture/create_object/clockwork_obelisk) + /datum/clockwork_scripture/spatial_gateway, /datum/clockwork_scripture/create_object/clockwork_obelisk/cyborg) /obj/item/clockwork/slab/cyborg/miner //three scriptures, plus a spear and xray vision quickbound = list(/datum/clockwork_scripture/spatial_gateway, /datum/clockwork_scripture/ranged_ability/linked_vanguard, /datum/clockwork_scripture/channeled/belligerent, /datum/clockwork_scripture/channeled/volt_blaster) diff --git a/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm index ae524ac257..f367842c23 100644 --- a/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm +++ b/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm @@ -216,7 +216,7 @@ in you cannot leave and when it is destroyed it will explode catastrophically, with everyone inside." invocations = list("By the strength of the alloy...!!", "...call forth the Arbiter!!") channel_time = 200 // This is a strong fucking weapon, 20 seconds channel time is getting off light I tell ya. - power_cost = 75000 //75 KW + power_cost = 40000 //40 KW. Why the hell did I think making this cost 5k more than the ARK was a good idea-KeRSe usage_tip = "Neovgre is a powerful mech that will crush your enemies!" invokers_required = 5 multiple_invokers_used = TRUE diff --git a/code/modules/antagonists/clockcult/clock_scriptures/scripture_cyborg.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_cyborg.dm index 3dacecf6b4..43d029b043 100644 --- a/code/modules/antagonists/clockcult/clock_scriptures/scripture_cyborg.dm +++ b/code/modules/antagonists/clockcult/clock_scriptures/scripture_cyborg.dm @@ -44,3 +44,13 @@ Left-click a target to place a Judicial Marker!\n\ Click your slab to cancel." timeout_time = 50 + +//These are exactly the same as the default scriptures, but cyborgs don't need a second person to create them +/datum/clockwork_scripture/create_object/mania_motor/cyborg + invokers_required = 1 + multiple_invokers_used = FALSE + + +/datum/clockwork_scripture/create_object/clockwork_obelisk/cyborg + invokers_required = 1 + multiple_invokers_used = FALSE diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm index 744c01a257..a009ef20af 100644 --- a/code/modules/cargo/bounties/assistant.dm +++ b/code/modules/cargo/bounties/assistant.dm @@ -102,26 +102,29 @@ wanted_types = list(/obj/item/shard) /datum/bounty/item/assistant/comfy_chair - name = "Comfy Chairs" + name = "Comfortable Chairs" description = "Commander Pat is unhappy with his chair. He claims it hurts his back. Ship some alternatives out to humor him." reward = 900 required_count = 5 wanted_types = list(/obj/structure/chair/comfy) -// /datum/bounty/item/assistant/geranium -// name = "Geraniums" -// description = "Commander Zot has the hots for Commander Zena. Send a shipment of geraniums - her favorite flower - and he'll happily reward you." -// reward = 1000 -// required_count = 3 -// wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/poppy/geranium) +/* +/datum/bounty/item/assistant/geranium + name = "Geraniums" + description = "Commander Zot has the hots for Commander Zena. Send a shipment of geraniums - her favorite flower - and he'll happily reward you." + reward = 1000 + required_count = 3 + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/poppy/geranium) + include_subtypes = FALSE +*/ -// /datum/bounty/item/assistant/poppy -// name = "Poppies" -// description = "Commander Zot really wants to sweep Security Officer Olivia off her feet. Send a shipment of Poppies - her favorite flower - and he'll happily reward you." -// reward = 1000 -// required_count = 3 -// wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/poppy) -// include_subtypes = FALSE +/datum/bounty/item/assistant/poppy + name = "Poppies" + description = "Commander Zot really wants to sweep Security Officer Olivia off her feet. Send a shipment of Poppies - her favorite flower - and he'll happily reward you." + reward = 1000 + required_count = 3 + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/poppy) + include_subtypes = FALSE /datum/bounty/item/assistant/shadyjims name = "Shady Jim's" @@ -156,11 +159,6 @@ required_count = 3 wanted_types = list(/obj/item/reagent_containers/food/snacks/monkeycube) */ -/datum/bounty/item/assistant/chainsaw - name = "Chainsaw" - description = "The chef at CentCom is having trouble butchering her animals. She requests one chainsaw, please." - reward = 2500 - wanted_types = list(/obj/item/chainsaw) /datum/bounty/item/assistant/ied name = "IED" @@ -169,30 +167,12 @@ required_count = 3 wanted_types = list(/obj/item/grenade/iedcasing) -/datum/bounty/item/assistant/bonfire - name = "Lit Bonfire" - description = "Space heaters are malfunctioning and the cargo crew of Central Command is starting to feel cold. Ship a lit bonfire to warm them up." - reward = 5000 - wanted_types = list(/obj/structure/bonfire) - -/datum/bounty/item/assistant/bonfire/applies_to(obj/O) - if(!..()) - return FALSE - var/obj/structure/bonfire/B = O - return !!B.burning - /datum/bounty/item/assistant/corgimeat name = "Raw Corgi Meat" description = "The Syndicate recently stole all of CentCom's corgi meat. Ship out a replacement immediately." reward = 3000 wanted_types = list(/obj/item/reagent_containers/food/snacks/meat/slab/corgi) -/datum/bounty/item/assistant/tail_whip - name = "Nine Tails whip" - description = "Commander Jackson is looking for a fine addition to her exotic weapons collection. She will reward you handsomely for either a Cat or Liz o' Nine Tails." - reward = 4000 - wanted_types = list(/obj/item/melee/chainofcommand/tailwhip) - /datum/bounty/item/assistant/bolas name = "Bolas" description = "Centcom's chef has lost their mind. They're streaking naked though the halls, greased up with butter and cooking oil. Send some bola's so we can capture them." @@ -215,7 +195,7 @@ wanted_types = list(/obj/item/storage/belt/utility) /datum/bounty/item/assistant/gasmasks - name = "Gas Masks" + name = "Gas Masks" description = "The good news is that we have more miasma than we'll ever need. The bad news is, somone opened the release valve on the canisters. Ship us some gas masks!" reward = 1250 required_count = 4 diff --git a/code/modules/cargo/bounties/botany.dm b/code/modules/cargo/bounties/botany.dm index 31e13e9a9b..5ed2faec98 100644 --- a/code/modules/cargo/bounties/botany.dm +++ b/code/modules/cargo/bounties/botany.dm @@ -228,3 +228,14 @@ multiplier = 6 bonus_desc = "Under no circumstances mention this shipment to security." foodtype = "\"meal\"" + +/datum/bounty/item/botany/bonfire + name = "Lit Bonfire" + description = "Space heaters are malfunctioning and the cargo crew of Central Command is starting to feel cold. Grow some logs and Ship a lit bonfire to warm them up." + wanted_types = list(/obj/structure/bonfire) + +/datum/bounty/item/botany/bonfire/applies_to(obj/O) + if(!..()) + return FALSE + var/obj/structure/bonfire/B = O + return !!B.burning diff --git a/code/modules/cargo/bounties/chef.dm b/code/modules/cargo/bounties/chef.dm index c83fa116d6..9998fb0e8d 100644 --- a/code/modules/cargo/bounties/chef.dm +++ b/code/modules/cargo/bounties/chef.dm @@ -137,3 +137,10 @@ reward = 2250 required_count = 3 wanted_types = list(/obj/item/reagent_containers/food/snacks/bbqribs) + +/datum/bounty/item/chef/corgifarming //Butchering is a chef's job. + name = "Corgi Hides" + description = "Admiral Weinstein's space yacht needs new upholstery. A dozen Corgi furs should do just fine." + reward = 30000 //that's a lot of dead dogs + required_count = 12 + wanted_types = list(/obj/item/stack/sheet/animalhide/corgi) diff --git a/code/modules/cargo/bounties/engineering.dm b/code/modules/cargo/bounties/engineering.dm index 5ddce8fb2c..59f5f083c8 100644 --- a/code/modules/cargo/bounties/engineering.dm +++ b/code/modules/cargo/bounties/engineering.dm @@ -89,3 +89,15 @@ description = "Station 24 is being overrun by hordes of angry Mothpeople. They are requesting the ultimate bug zapper." reward = 50000 //requires 14k credits of purchases, not to mention cooperation with engineering/heads of staff to set up inside the cramped shuttle wanted_types = list(/obj/singularity/energy_ball) + +/datum/bounty/item/engineering/emitter + name = "Emitter" + description = "We think there may be a defect in your station's emitter designs, based on the sheer number of delaminations your sector seems to see. Ship us one of yours." + reward = 2500 + wanted_types = list(/obj/machinery/power/emitter) + +/datum/bounty/item/engineering/hydro_tray + name = "Hydroponics Tray" + description = "The lab technicians are trying to figure out how to lower the power drain of hydroponics trays, but we fried our last one. Mind building one for us?" + reward = 2000 + wanted_types = list(/obj/machinery/hydroponics/constructable) diff --git a/code/modules/cargo/bounties/medical.dm b/code/modules/cargo/bounties/medical.dm index c1f8d9c9d0..1f56b929e6 100644 --- a/code/modules/cargo/bounties/medical.dm +++ b/code/modules/cargo/bounties/medical.dm @@ -125,3 +125,15 @@ reward = 2250 required_count = 5 wanted_types = list(/obj/item/defibrillator) + +/datum/bounty/item/medical/chainsaw + name = "Chainsaw" + description = "A CMO at CentCom is having trouble operating on golems. She requests one chainsaw, please." + reward = 2500 + wanted_types = list(/obj/item/chainsaw) + +/datum/bounty/item/medical/tail_whip //Like the cat tail bounties, with more processing. + name = "Nine Tails whip" + description = "Commander Jackson is looking for a fine addition to her exotic weapons collection. She will reward you handsomely for either a Cat or Liz o' Nine Tails." + reward = 4000 + wanted_types = list(/obj/item/melee/chainofcommand/tailwhip) diff --git a/code/modules/cargo/bounties/security.dm b/code/modules/cargo/bounties/security.dm index 5ddf456573..d463e1393d 100644 --- a/code/modules/cargo/bounties/security.dm +++ b/code/modules/cargo/bounties/security.dm @@ -52,3 +52,37 @@ reward = 2750 required_count = 3 wanted_types = list(/obj/item/firing_pin/test_range) + +/datum/bounty/item/security/pepperspray + name = "Pepperspray" + description = "We've been having a bad run of riots on Space Station 76. We could use some new pepperspray cans." + reward = 3000 + required_count = 4 + wanted_types = list(/obj/item/reagent_containers/spray/pepper) + +/datum/bounty/item/security/prison_clothes + name = "Prison Uniforms" + description = "Terragov has been unable to source any new prisoner uniforms, so if you have any spares, we'll take them off your hands." + reward = 2000 + required_count = 4 + wanted_types = list(/obj/item/clothing/under/rank/prisoner) + +/datum/bounty/item/security/plates + name = "License Plates" + description = "As a result of a bad clown car crash, we could use an advance on some of your prisoner's license plates." + reward = 1000 + required_count = 10 + wanted_types = list(/obj/item/stack/license_plates/filled) + +/datum/bounty/item/security/earmuffs + name = "Earmuffs" + description = "Central Command is getting tired of your station's messages. They've ordered that you ship some earmuffs to lessen the annoyance." + reward = 1000 + wanted_types = list(/obj/item/clothing/ears/earmuffs) + +/datum/bounty/item/security/handcuffs + name = "Handcuffs" + description = "A large influx of escaped convicts have arrived at Central Command. Now is the perfect time to ship out spare handcuffs (or restraints)." + reward = 1000 + required_count = 5 + wanted_types = list(/obj/item/restraints/handcuffs) diff --git a/code/modules/cargo/bounty.dm b/code/modules/cargo/bounty.dm index 2a64f150a0..00d07c8df1 100644 --- a/code/modules/cargo/bounty.dm +++ b/code/modules/cargo/bounty.dm @@ -76,8 +76,13 @@ GLOBAL_LIST_EMPTY(bounties_list) 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)) +/proc/random_bounty(var/guided = 0) + var/bounty_num + if(guided && (guided != CIV_JOB_RANDOM)) + bounty_num = guided + else + bounty_num = rand(1,13) + switch(bounty_num) if(1) var/subtype = pick(subtypesof(/datum/bounty/item/assistant)) return new subtype @@ -100,27 +105,27 @@ GLOBAL_LIST_EMPTY(bounties_list) 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) + if(rand(2) == 1) + var/subtype = pick(subtypesof(/datum/bounty/item/science)) + return new subtype var/subtype = pick(subtypesof(/datum/bounty/item/slime)) return new subtype - if(10) + if(9) var/subtype = pick(subtypesof(/datum/bounty/item/engineering)) return new subtype - if(11) + if(10) var/subtype = pick(subtypesof(/datum/bounty/item/mining)) return new subtype - if(12) + if(11) var/subtype = pick(subtypesof(/datum/bounty/item/medical)) return new subtype - if(13) + if(12) var/subtype = pick(subtypesof(/datum/bounty/item/botany)) return new subtype - if(14) + if(13) var/subtype = pick(subtypesof(/datum/bounty/item/silly)) return new subtype - if(15) + if(14) var/subtype = pick(subtypesof(/datum/bounty/item/gardencook)) return new subtype diff --git a/code/modules/cargo/bounty_console.dm b/code/modules/cargo/bounty_console.dm deleted file mode 100644 index b2ee0e0e1a..0000000000 --- a/code/modules/cargo/bounty_console.dm +++ /dev/null @@ -1,65 +0,0 @@ -#define PRINTER_TIMEOUT 10 - -/obj/machinery/computer/bounty - name = "\improper Nanotrasen bounty console" - desc = "Used to check and claim bounties offered by Nanotrasen" - 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 - -/obj/machinery/computer/bounty/Initialize(mapload) - . = ..() - printer_ready = world.time + PRINTER_TIMEOUT - cargocash = SSeconomy.get_dep_account(ACCOUNT_CAR) - -/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 = "