Arconomy: Civilian Bounty Redux and full replacement of cargo bounties. (#54029)

Alright, this is a functional rework for civilian bounties, which should serve a few purposes:

Cargo has a reason to actually keep working and stay within cargo.
Makes cargo bounties far more integrated into the round as opposed to being a static list of soft goals, being personalized to those who would actually do a bounty for the station.
Still make civilian bounties the prime, sirloin steak method for regular crew to make money.
So here's the 4-11:
Static cargo bounties have been removed, in favor of the new system of civilian bounties. That means that both the bounties app and the bounty console have been removed.

Civilian bounties have been buffed. They are no longer affected by inflation, but when your bounty is completed, you will recieve a "bounty cube". To receive the cash you would have received for the bounty (10% of the civilian bounty), that bounty cube must be shipped off the cargo shuttle, and using the magic of the price tag component, you make your cut, and cargo makes their 90%, ensuring that you'll actually see your money (for once!).

Civilian bounties are now independent of department budgets, in preparation for departmental purchases, so now you can more freely benefit from doing civilian bounties to buy things! (See #53881)

Non-mining cargo department crew now have fully randomized bounties, to give them stationwide goals for bounty hunting.

As an added benefit, the icon for bounty cubes basically screams value, so hopefully crewmembers will see it and instantly think to sell it.
This commit is contained in:
ArcaneMusic
2020-10-22 13:03:04 -04:00
committed by GitHub
parent 8f69627898
commit 7eba7c4930
25 changed files with 148 additions and 576 deletions
@@ -1,49 +0,0 @@
/datum/computer_file/program/bounty
filename = "bounty"
filedesc = "Nanotrasen Bounty Hunter"
program_icon_state = "bounty"
extended_desc = "A basic interface for supply personnel to check and claim bounties."
requires_ntnet = TRUE
transfer_access = ACCESS_CARGO
size = 10
tgui_id = "NtosBountyConsole"
///cooldown var for printing paper sheets.
COOLDOWN_DECLARE(printer_cooldown)
///The cargo account for grabbing the cargo account's credits.
var/static/datum/bank_account/cargocash
/datum/computer_file/program/bounty/proc/print_paper()
new /obj/item/paper/bounty_printout(get_turf(computer))
/datum/computer_file/program/bounty/ui_interact(mob/user, datum/tgui/ui) //Cashes in the bounty if valid
if(!GLOB.bounties_list.len)
setup_bounties()
cargocash = SSeconomy.get_dep_account(ACCOUNT_CAR)
. = ..()
/datum/computer_file/program/bounty/ui_data(mob/user) //Gets all bounties and displays them
var/list/data = get_header_data()
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
/datum/computer_file/program/bounty/ui_act(action,params) //When a button is clicked (claim or Print bounties)
. = ..()
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(COOLDOWN_FINISHED(src, printer_cooldown))
COOLDOWN_START(src, printer_cooldown, PRINTER_TIMEOUT)
print_paper()
return
else
to_chat(computer.loc, "<span class='warning'>The printer is not ready to print yet!</span>")