diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 10c876a2d6..29a49a746d 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -30033,6 +30033,9 @@ /obj/machinery/keycard_auth{ pixel_y = 25 }, +/obj/machinery/computer/bounty{ + dir = 4 + }, /turf/open/floor/plasteel, /area/cargo/qm) "bvG" = ( @@ -54977,6 +54980,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 @@ -90073,7 +90085,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 22d4d53255..fb7ab03ad3 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -115810,6 +115810,9 @@ /obj/effect/turf_decal/tile/brown{ dir = 4 }, +/obj/machinery/computer/bounty{ + dir = 8 + }, /turf/open/floor/plasteel, /area/cargo/qm) "twd" = ( @@ -121720,6 +121723,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 7dae7cbffc..9f0363dc29 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -65530,6 +65530,7 @@ /obj/effect/turf_decal/tile/brown{ dir = 4 }, +/obj/machinery/computer/bounty, /turf/open/floor/plasteel, /area/cargo/qm) "mSd" = ( @@ -72173,6 +72174,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 1100ce3896..75676fa92c 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -6774,6 +6774,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 75dfa4b568..6abbc9e739 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -21143,6 +21143,9 @@ /obj/machinery/status_display/supply{ pixel_x = -32 }, +/obj/machinery/computer/bounty{ + dir = 4 + }, /turf/open/floor/plasteel, /area/cargo/office) "aZk" = ( @@ -23011,6 +23014,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/events/shuttle_catastrophe.dm b/code/modules/events/shuttle_catastrophe.dm index 2e431a8a34..18b9dc61ca 100644 --- a/code/modules/events/shuttle_catastrophe.dm +++ b/code/modules/events/shuttle_catastrophe.dm @@ -9,6 +9,8 @@ /datum/round_event_control/shuttle_catastrophe/canSpawnEvent(players, gamemode) if(SSshuttle.emergency.name == "Build your own shuttle kit") return FALSE //don't undo manual player engineering, it also would unload people and ghost them, there's just a lot of problems + if(SSshuttle.emergency.in_flight()) + return FALSE //ditto, problems 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 49bfc8b6ba..7c99c4d0b1 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1963,6 +1963,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'} + + ); +};