mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-16 04:34:21 +00:00
* Arconomy Adjacent Content: Newscaster Refactor Omega * Fixed all of the issues that resulted from the repathing * Fixed our modularized priority_announce.dm * Deleted newscaster.dm because it was still there due to two comments that weren't overly important * Fixed merge conflicts for delta * Fixed a bunch of skyrat maps so they compile :) * I forgor a few more maps * Add newscaster_bounty for our newscaster sprite (#12344) Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com> Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com> Co-authored-by: Tastyfish <crazychris32@gmail.com>
137 lines
5.0 KiB
Plaintext
137 lines
5.0 KiB
Plaintext
/datum/computer_file/program/bounty_board
|
|
filename = "bountyboard"
|
|
filedesc = "Bounty Board Request Network"
|
|
category = PROGRAM_CATEGORY_SUPL
|
|
program_icon_state = "bountyboard"
|
|
extended_desc = "A multi-platform network for placing requests across the station, with payment across the network being possible.."
|
|
requires_ntnet = TRUE
|
|
size = 10
|
|
tgui_id = "NtosBountyBoard"
|
|
///Reference to the currently logged in user.
|
|
var/datum/bank_account/current_user
|
|
///The station request datum being affected by UI actions.
|
|
var/datum/station_request/active_request
|
|
///Value of the currently bounty input
|
|
var/bounty_value = 1
|
|
///Text of the currently written bounty
|
|
var/bounty_text = ""
|
|
///Has the app been added to the network yet?
|
|
var/networked = FALSE
|
|
|
|
/datum/computer_file/program/bounty_board/ui_data(mob/user)
|
|
var/list/data = get_header_data()
|
|
var/list/formatted_requests = list()
|
|
var/list/formatted_applicants = list()
|
|
var/obj/item/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD]
|
|
if(current_user)
|
|
data["user"] = list()
|
|
data["user"]["name"] = current_user.account_holder
|
|
if(current_user.account_job)
|
|
data["user"]["job"] = current_user.account_job.title
|
|
data["user"]["department"] = current_user.account_job.paycheck_department
|
|
else
|
|
data["user"]["job"] = "No Job"
|
|
data["user"]["department"] = "No Department"
|
|
else
|
|
data["user"] = list()
|
|
data["user"]["name"] = user.name
|
|
data["user"]["job"] = "N/A"
|
|
data["user"]["department"] = "N/A"
|
|
if(!networked)
|
|
GLOB.allbountyboards += computer
|
|
networked = TRUE
|
|
if(card_slot && card_slot.stored_card && card_slot.stored_card.registered_account)
|
|
current_user = card_slot.stored_card.registered_account
|
|
for(var/i in GLOB.request_list)
|
|
if(!i)
|
|
continue
|
|
var/datum/station_request/request = i
|
|
formatted_requests += list(list("owner" = request.owner, "value" = request.value, "description" = request.description, "acc_number" = request.req_number))
|
|
if(request.applicants)
|
|
for(var/datum/bank_account/j in request.applicants)
|
|
formatted_applicants += list(list("name" = j.account_holder, "request_id" = request.owner_account.account_id, "requestee_id" = j.account_id))
|
|
if(current_user)
|
|
data["accountName"] = current_user.account_holder
|
|
data["requests"] = formatted_requests
|
|
data["applicants"] = formatted_applicants
|
|
data["bountyValue"] = bounty_value
|
|
data["bountyText"] = bounty_text
|
|
return data
|
|
|
|
/datum/computer_file/program/bounty_board/ui_act(action, list/params)
|
|
. = ..()
|
|
if(.)
|
|
return
|
|
var/current_ref_num = params["request"]
|
|
var/current_app_num = params["applicant"]
|
|
var/datum/bank_account/request_target
|
|
if(current_ref_num)
|
|
for(var/datum/station_request/i in GLOB.request_list)
|
|
if("[i.req_number]" == "[current_ref_num]")
|
|
active_request = i
|
|
break
|
|
if(active_request)
|
|
for(var/datum/bank_account/j in active_request.applicants)
|
|
if("[j.account_id]" == "[current_app_num]")
|
|
request_target = j
|
|
break
|
|
switch(action)
|
|
if("createBounty")
|
|
if(!current_user || !bounty_text)
|
|
playsound(src, 'sound/machines/buzz-sigh.ogg', 20, TRUE)
|
|
return TRUE
|
|
for(var/datum/station_request/i in GLOB.request_list)
|
|
if("[i.req_number]" == "[current_user.account_id]")
|
|
computer.say("Account already has active bounty.")
|
|
return
|
|
var/datum/station_request/curr_request = new /datum/station_request(current_user.account_holder, bounty_value,bounty_text,current_user.account_id, current_user)
|
|
GLOB.request_list += list(curr_request)
|
|
for(var/obj/i in GLOB.allbountyboards)
|
|
i.say("New bounty has been added!")
|
|
playsound(i.loc, 'sound/effects/cashregister.ogg', 30, TRUE)
|
|
return TRUE
|
|
if("apply")
|
|
if(!current_user)
|
|
computer.say("Please swipe a valid ID first.")
|
|
return TRUE
|
|
if(current_user.account_holder == active_request.owner)
|
|
playsound(computer, 'sound/machines/buzz-sigh.ogg', 20, TRUE)
|
|
return TRUE
|
|
active_request.applicants += list(current_user)
|
|
if("payApplicant")
|
|
if(!current_user)
|
|
return
|
|
if(!current_user.has_money(active_request.value) || (current_user.account_holder != active_request.owner))
|
|
playsound(computer, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
|
|
return
|
|
request_target.transfer_money(current_user, active_request.value)
|
|
computer.say("Paid out [active_request.value] credits.")
|
|
GLOB.request_list.Remove(active_request)
|
|
return TRUE
|
|
if("clear")
|
|
if(current_user)
|
|
current_user = null
|
|
computer.say("Account Reset.")
|
|
return TRUE
|
|
if("deleteRequest")
|
|
if(!current_user)
|
|
playsound(computer, 'sound/machines/buzz-sigh.ogg', 20, TRUE)
|
|
return TRUE
|
|
if(active_request.owner != current_user.account_holder)
|
|
playsound(computer, 'sound/machines/buzz-sigh.ogg', 20, TRUE)
|
|
return TRUE
|
|
computer.say("Deleted current request.")
|
|
GLOB.request_list.Remove(active_request)
|
|
return TRUE
|
|
if("bountyVal")
|
|
bounty_value = text2num(params["bountyval"])
|
|
if(!bounty_value)
|
|
bounty_value = 1
|
|
if("bountyText")
|
|
bounty_text = (params["bountytext"])
|
|
. = TRUE
|
|
|
|
/datum/computer_file/program/bounty_board/Destroy()
|
|
GLOB.allbountyboards -= computer
|
|
. = ..()
|