diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 8f21e3ecce..81eca95be1 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -30029,6 +30029,9 @@ /obj/machinery/keycard_auth{ pixel_y = 25 }, +/obj/machinery/computer/bounty{ + dir = 4 + }, /turf/open/floor/plasteel, /area/cargo/qm) "bvG" = ( @@ -54946,6 +54949,15 @@ "gjl" = ( /turf/closed/wall, /area/cargo/warehouse) +"gkP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/computer/bounty{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/cargo/office) "gnf" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -89992,7 +90004,7 @@ bnG bnz bpA bbR -bkM +gkP jlm bud eyM diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index bd8e2c078d..506f5e2396 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -115731,6 +115731,9 @@ /obj/effect/turf_decal/tile/brown{ dir = 4 }, +/obj/machinery/computer/bounty{ + dir = 8 + }, /turf/open/floor/plasteel, /area/cargo/qm) "twd" = ( @@ -121630,6 +121633,9 @@ /obj/effect/turf_decal/tile/brown{ dir = 8 }, +/obj/machinery/computer/bounty{ + dir = 8 + }, /turf/open/floor/plasteel, /area/cargo/office) "vEI" = ( diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 00925c100f..44a080ccb4 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -65483,6 +65483,7 @@ /obj/effect/turf_decal/tile/brown{ dir = 4 }, +/obj/machinery/computer/bounty, /turf/open/floor/plasteel, /area/cargo/qm) "mSd" = ( @@ -72113,6 +72114,7 @@ /obj/effect/turf_decal/tile/brown{ dir = 8 }, +/obj/machinery/computer/bounty, /turf/open/floor/plasteel, /area/cargo/office) "qBq" = ( diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index d1b5706c0a..fb77051142 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -6773,6 +6773,9 @@ /obj/effect/turf_decal/tile/brown{ dir = 8 }, +/obj/machinery/computer/bounty{ + dir = 4 + }, /turf/open/floor/plasteel, /area/cargo/storage) "amw" = ( diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 5a3d69fe60..207b47c096 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -21132,6 +21132,9 @@ /obj/machinery/status_display/supply{ pixel_x = -32 }, +/obj/machinery/computer/bounty{ + dir = 4 + }, /turf/open/floor/plasteel, /area/cargo/office) "aZk" = ( @@ -22999,6 +23002,9 @@ /obj/effect/turf_decal/tile/brown{ dir = 4 }, +/obj/machinery/computer/bounty{ + dir = 8 + }, /turf/open/floor/plasteel, /area/cargo/qm) "bdI" = ( diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm index 382764c586..58d9627476 100644 --- a/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -581,6 +581,10 @@ 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/modules/cargo/bounty_console.dm b/code/modules/cargo/bounty_console.dm new file mode 100644 index 0000000000..4158327c3c --- /dev/null +++ b/code/modules/cargo/bounty_console.dm @@ -0,0 +1,67 @@ +#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 = "

Nanotrasen Cargo Bounties


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

[B.name]

+ "} + +/obj/machinery/computer/bounty/ui_interact(mob/user, datum/tgui/ui) + if(!GLOB.bounties_list.len) + setup_bounties() + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "CargoBountyConsole", name) + ui.open() + +/obj/machinery/computer/bounty/ui_data(mob/user) + var/list/data = list() + var/list/bountyinfo = list() + for(var/datum/bounty/B in GLOB.bounties_list) + 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 + return data + +/obj/machinery/computer/bounty/ui_act(action,params) + if(..()) + return + 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_ready < world.time) + printer_ready = world.time + PRINTER_TIMEOUT + print_paper() + return + + diff --git a/code/modules/research/designs/comp_board_designs/comp_board_designs_cargo.dm b/code/modules/research/designs/comp_board_designs/comp_board_designs_cargo.dm index ea8e59a6b3..f2514b6f9c 100644 --- a/code/modules/research/designs/comp_board_designs/comp_board_designs_cargo.dm +++ b/code/modules/research/designs/comp_board_designs/comp_board_designs_cargo.dm @@ -17,7 +17,15 @@ build_path = /obj/item/circuitboard/computer/cargo/request category = list("Computer Boards") departmental_flags = DEPARTMENTAL_FLAG_CARGO - + +/datum/design/board/bounty + name = "Computer Design (Bounty Console)" + desc = "Allows for the construction of circuit boards used to build a Bounty Console." + id = "bounty" + build_path = /obj/item/circuitboard/computer/bounty + category = list("Computer Boards") + departmental_flags = DEPARTMENTAL_FLAG_CARGO + /datum/design/board/mining name = "Computer Design (Outpost Status Display)" desc = "Allows for the construction of circuit boards used to build an outpost status display console." diff --git a/tgstation.dme b/tgstation.dme index 0fc23fcc18..125b91c25d 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1945,6 +1945,7 @@ #include "code\modules\buildmode\submodes\throwing.dm" #include "code\modules\buildmode\submodes\variable_edit.dm" #include "code\modules\cargo\bounty.dm" +#include "code\modules\cargo\bounty_console.dm" #include "code\modules\cargo\centcom_podlauncher.dm" #include "code\modules\cargo\console.dm" #include "code\modules\cargo\coupon.dm" diff --git a/tgui/packages/tgui/interfaces/CargoBountyConsole.js b/tgui/packages/tgui/interfaces/CargoBountyConsole.js new file mode 100644 index 0000000000..ad485231eb --- /dev/null +++ b/tgui/packages/tgui/interfaces/CargoBountyConsole.js @@ -0,0 +1,119 @@ +import { useBackend } from '../backend'; +import { AnimatedNumber, Box, Button, Section, Table } from '../components'; +import { formatMoney } from '../format'; +import { Window } from '../layouts'; + +export const CargoBountyConsole = (props, context) => { + const { act, data } = useBackend(context); + const { + bountydata = [], + } = data; + return ( + + +
} + buttons={( +
+
+
+ ); +}; + +const BountyHeader = (props, context) => { + const { act, data } = useBackend(context); + const { + stored_cash, + } = data; + return ( + + formatMoney(value)} /> + {' credits'} + + ); +}; diff --git a/tgui/packages/tgui/interfaces/NtosBountyConsole.js b/tgui/packages/tgui/interfaces/NtosBountyConsole.js new file mode 100644 index 0000000000..bfd2b0e4c9 --- /dev/null +++ b/tgui/packages/tgui/interfaces/NtosBountyConsole.js @@ -0,0 +1,119 @@ +import { useBackend } from '../backend'; +import { AnimatedNumber, Box, Button, Section, Table } from '../components'; +import { formatMoney } from '../format'; +import { NtosWindow } from '../layouts'; + +export const NtosBountyConsole = (props, context) => { + const { act, data } = useBackend(context); + const { + bountydata = [], + } = data; + return ( + + +
} + buttons={( +
+
+
+ ); +}; + +const BountyHeader = (props, context) => { + const { act, data } = useBackend(context); + const { + stored_cash, + } = data; + return ( + + formatMoney(value)} /> + {' credits'} + + ); +};