From d0631447139f315c7da1d949f6ad133192cb0cbe Mon Sep 17 00:00:00 2001
From: President of Shit PRS <68369681+squib-bot@users.noreply.github.com>
Date: Sat, 14 Jan 2023 02:01:12 +0000
Subject: [PATCH 1/2] Re-Adding Bounty Consoles
Civilian bounties are great, don't get me wrong. But they're civilian bounties and it feels like cargo lost their thing to do, namely putting annoying sheets of paper everywhere. Plus checklists make the brain go ding when you work through them arooga.
---
_maps/map_files/BoxStation/BoxStation.dmm | 14 ++-
.../map_files/Deltastation/DeltaStation2.dmm | 6 +
_maps/map_files/MetaStation/MetaStation.dmm | 2 +
_maps/map_files/OmegaStation/OmegaStation.dmm | 3 +
_maps/map_files/PubbyStation/PubbyStation.dmm | 6 +
.../circuitboards/computer_circuitboards.dm | 4 +
code/modules/cargo/bounty_console.dm | 65 ++++++++++
.../comp_board_designs_cargo.dm | 10 +-
tgstation.dme | 1 +
.../tgui/interfaces/CargoBountyConsole.js | 119 ++++++++++++++++++
.../tgui/interfaces/NtosBountyConsole.js | 119 ++++++++++++++++++
11 files changed, 347 insertions(+), 2 deletions(-)
create mode 100644 code/modules/cargo/bounty_console.dm
create mode 100644 tgui/packages/tgui/interfaces/CargoBountyConsole.js
create mode 100644 tgui/packages/tgui/interfaces/NtosBountyConsole.js
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..1f2cba1e5b
--- /dev/null
+++ b/code/modules/cargo/bounty_console.dm
@@ -0,0 +1,65 @@
+#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]
+ - Reward: [B.reward_string()]
+ - Completed: [B.completion_string()]
"}
+
+/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
\ No newline at end of file
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 a3ec7c7238..728de7105f 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -1943,6 +1943,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={(
+ act('Print')} />
+ )}>
+
+
+
+ Bounty Object
+
+
+ Description
+
+
+ Progress
+
+
+ Value
+
+
+ Claim
+
+
+ {bountydata.map(bounty => (
+
+
+ {bounty.name}
+
+
+ {bounty.description}
+
+
+ {bounty.priority === 1
+ ? High Priority
+ : ""}
+ {bounty.completion_string}
+
+
+ {bounty.reward_string}
+
+
+ act('ClaimBounty', {
+ bounty: bounty.bounty_ref,
+ })} />
+
+
+ ))}
+
+
+
+
+ );
+};
+
+const BountyHeader = (props, context) => {
+ const { act, data } = useBackend(context);
+ const {
+ stored_cash,
+ } = data;
+ return (
+
+ formatMoney(value)} />
+ {' credits'}
+
+ );
+};
From 71d588f33de5daf419005c57da082d3c9184b2aa Mon Sep 17 00:00:00 2001
From: President of Shit PRS <68369681+squib-bot@users.noreply.github.com>
Date: Sat, 14 Jan 2023 04:00:48 +0000
Subject: [PATCH 2/2] Update bounty_console.dm
---
code/modules/cargo/bounty_console.dm | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/code/modules/cargo/bounty_console.dm b/code/modules/cargo/bounty_console.dm
index 1f2cba1e5b..4158327c3c 100644
--- a/code/modules/cargo/bounty_console.dm
+++ b/code/modules/cargo/bounty_console.dm
@@ -62,4 +62,6 @@
if(printer_ready < world.time)
printer_ready = world.time + PRINTER_TIMEOUT
print_paper()
- return
\ No newline at end of file
+ return
+
+