adds public bounty consoles without inflation, also removes the mint

This commit is contained in:
shellspeed1
2022-09-17 19:27:40 -07:00
parent 8ad8c53b91
commit 3dace329be
41 changed files with 464 additions and 259 deletions
+225
View File
@@ -0,0 +1,225 @@
///Pad for the Civilian Bounty Control.
/obj/machinery/piratepad/civilian
name = "civilian bounty pad"
desc = "A machine designed to send civilian bounty targets to centcom."
layer = TABLE_LAYER
///Computer for assigning new civilian bounties, and sending bounties for collection.
/obj/machinery/computer/piratepad_control/civilian
name = "civilian bounty control terminal"
desc = "A console for assigning civilian bounties to inserted ID cards, and for controlling the bounty pad for export."
status_report = "Ready for delivery."
icon_screen = "civ_bounty"
icon_keyboard = "id_key"
warmup_time = 3 SECONDS
var/obj/item/card/id/inserted_scan_id
/obj/machinery/computer/piratepad_control/civilian/Initialize()
. = ..()
pad = /obj/machinery/piratepad/civilian
/obj/machinery/computer/piratepad_control/civilian/attackby(obj/item/I, mob/living/user, params)
. = ..()
if(isidcard(I))
if(id_insert(user, I, inserted_scan_id))
inserted_scan_id = I
return TRUE
/obj/machinery/computer/piratepad_control/multitool_act(mob/living/user, obj/item/multitool/I)
if(istype(I) && istype(I.buffer,/obj/machinery/piratepad/civilian))
to_chat(user, "<span class='notice'>You link [src] with [I.buffer] in [I] buffer.</span>")
pad = I.buffer
return TRUE
/obj/machinery/computer/piratepad_control/civilian/LateInitialize()
. = ..()
if(cargo_hold_id)
for(var/obj/machinery/piratepad/civilian/C in GLOB.machines)
if(C.cargo_hold_id == cargo_hold_id)
pad = C
return
else
pad = locate() in range(4,src)
/obj/machinery/computer/piratepad_control/civilian/recalc()
if(sending)
return FALSE
if(!inserted_scan_id)
status_report = "Please insert your ID first."
playsound(loc, 'sound/machines/synth_no.ogg', 30 , TRUE)
return FALSE
if(!inserted_scan_id.registered_account.civilian_bounty)
status_report = "Please accept a new civilian bounty first."
playsound(loc, 'sound/machines/synth_no.ogg', 30 , TRUE)
return FALSE
status_report = "Civilian Bounty: "
for(var/atom/movable/AM in get_turf(pad))
if(AM == pad)
continue
if(inserted_scan_id.registered_account.civilian_bounty.applies_to(AM))
status_report += "Target Applicable."
playsound(loc, 'sound/machines/synth_yes.ogg', 30 , TRUE)
return
status_report += "Not Applicable."
playsound(loc, 'sound/machines/synth_no.ogg', 30 , TRUE)
/**
* This fully rewrites base behavior in order to only check for bounty objects, and nothing else.
*/
/obj/machinery/computer/piratepad_control/civilian/send()
playsound(loc, 'sound/machines/wewewew.ogg', 70, TRUE)
if(!sending)
return
if(!inserted_scan_id)
stop_sending()
return FALSE
if(!inserted_scan_id.registered_account.civilian_bounty)
stop_sending()
return FALSE
var/datum/bounty/curr_bounty = inserted_scan_id.registered_account.civilian_bounty
var/active_stack = 0
for(var/atom/movable/AM in get_turf(pad))
if(AM == pad)
continue
if(curr_bounty.applies_to(AM))
active_stack ++
curr_bounty.ship(AM)
qdel(AM)
if(active_stack >= 1)
status_report += "Bounty Target Found x[active_stack]. "
else
status_report = "No applicable targets found. Aborting."
stop_sending()
if(curr_bounty.can_claim())
//Pay for the bounty with the ID's department funds.
inserted_scan_id.registered_account.transfer_money(SSeconomy.get_dep_account(inserted_scan_id.registered_account.account_job.paycheck_department), curr_bounty.reward)
status_report += "Bounty Completed! [curr_bounty.reward] credits have been paid out. "
inserted_scan_id.registered_account.reset_bounty()
pad.visible_message("<span class='notice'>[pad] activates!</span>")
flick(pad.sending_state,pad)
pad.icon_state = pad.idle_state
playsound(loc, 'sound/machines/synth_yes.ogg', 30 , TRUE)
sending = FALSE
/obj/machinery/computer/piratepad_control/civilian/AltClick(mob/user)
. = ..()
id_eject(user, inserted_scan_id)
/obj/machinery/computer/piratepad_control/civilian/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "CivCargoHoldTerminal", name)
ui.open()
/obj/machinery/computer/piratepad_control/civilian/ui_data(mob/user)
var/list/data = list()
data["points"] = points
data["pad"] = pad ? TRUE : FALSE
data["sending"] = sending
data["status_report"] = status_report
data["id_inserted"] = inserted_scan_id
if(inserted_scan_id && inserted_scan_id.registered_account)
data["id_bounty_info"] = inserted_scan_id.registered_account.bounty_text()
data["id_bounty_num"] = inserted_scan_id.registered_account.bounty_num()
data["id_bounty_value"] = inserted_scan_id.registered_account.bounty_value()
return data
/obj/machinery/computer/piratepad_control/civilian/ui_act(action, params)
if(..())
return
if(!pad)
return
if(!usr.canUseTopic(src, BE_CLOSE))
return
switch(action)
if("recalc")
recalc()
if("send")
start_sending()
if("stop")
stop_sending()
if("bounty")
if(!inserted_scan_id || !inserted_scan_id.registered_account)
return
var/datum/bank_account/pot_acc = inserted_scan_id.registered_account
if(pot_acc.civilian_bounty && ((world.time) < pot_acc.bounty_timer + 5 MINUTES))
var/curr_time = round(((pot_acc.bounty_timer + (5 MINUTES))-world.time)/ (1 MINUTES), 0.01)
to_chat(usr, "<span class='warning'>You already have an incomplete civilian bounty, try again in [curr_time] minutes to replace it!</span>")
return FALSE
var/datum/bounty/crumbs = random_bounty(pot_acc.account_job.bounty_types) //It's a good scene from War Dogs (2016).
/*if(SSeconomy.inflation_value() > 1) //lets try not to add inflation for right now
if(istype(crumbs, /datum/bounty/item))
var/datum/bounty/item/items = crumbs
items.required_count = max(round((items.required_count)/(SSeconomy.inflation_value()*2)), 1)
if(istype(crumbs, /datum/bounty/reagent))
var/datum/bounty/reagent/chems = crumbs
chems.required_volume = max(round((chems.required_volume)/SSeconomy.inflation_value()*2), 1)
crumbs.reward = round(crumbs.reward/(SSeconomy.inflation_value()*2))*/
pot_acc.bounty_timer = world.time
pot_acc.civilian_bounty = crumbs
if("eject")
id_eject(usr, inserted_scan_id)
. = TRUE
///Self explanitory, holds the ID card inthe console for bounty payout and manipulation.
/obj/machinery/computer/piratepad_control/civilian/proc/id_insert(mob/user, obj/item/inserting_item, obj/item/target)
var/obj/item/card/id/card_to_insert = inserting_item
var/holder_item = FALSE
if(!isidcard(card_to_insert))
card_to_insert = inserting_item.RemoveID()
holder_item = TRUE
if(!card_to_insert || !user.transferItemToLoc(card_to_insert, src))
return FALSE
if(target)
if(holder_item && inserting_item.InsertID(target))
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
else
id_eject(user, target)
user.visible_message("<span class='notice'>[user] inserts \the [card_to_insert] into \the [src].</span>",
"<span class='notice'>You insert \the [card_to_insert] into \the [src].</span>")
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
updateUsrDialog()
return TRUE
///Removes A stored ID card.
/obj/machinery/computer/piratepad_control/civilian/proc/id_eject(mob/user, obj/target)
if(!target)
to_chat(user, "<span class='warning'>That slot is empty!</span>")
return FALSE
else
target.forceMove(drop_location())
if(!issilicon(user) && Adjacent(user))
user.put_in_hands(target)
user.visible_message("<span class='notice'>[user] gets \the [target] from \the [src].</span>", \
"<span class='notice'>You get \the [target] from \the [src].</span>")
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
inserted_scan_id = null
updateUsrDialog()
return TRUE
///Beacon to launch a new bounty setup when activated.
/obj/item/civ_bounty_beacon
name = "civilian bounty beacon"
desc = "N.T. approved civilian bounty beacon, toss it down and you will have a bounty pad and computer delivered to you."
icon = 'icons/obj/objects.dmi'
icon_state = "floor_beacon"
var/uses = 2
/obj/item/civ_bounty_beacon/attack_self()
loc.visible_message("<span class='warning'>\The [src] begins to beep loudly!</span>")
addtimer(CALLBACK(src, .proc/launch_payload), 4 SECONDS)
/obj/item/civ_bounty_beacon/proc/launch_payload()
playsound(src, "sparks", 80, TRUE)
switch(uses)
if(2)
new /obj/machinery/piratepad/civilian(drop_location())
if(1)
new /obj/machinery/computer/piratepad_control/civilian(drop_location())
qdel(src)
uses = uses - 1
+5
View File
@@ -372,6 +372,11 @@
. += "The [D.account_holder] reports a balance of [D.account_balance] cr."
. += "<span class='info'>Alt-Click the ID to pull money from the linked account in the form of holochips.</span>"
. += "<span class='info'>You can insert credits into the linked account by pressing holochips, cash, or coins against the ID.</span>"
if(registered_account.civilian_bounty)
. += "<span class='info'><b>There is an active civilian bounty.</b>"
. += "<span class='info'><i>[registered_account.bounty_text()]</i></span>"
. += "<span class='info'>Quantity: [registered_account.bounty_num()]</span>"
. += "<span class='info'>Reward: [registered_account.bounty_value()]</span>"
if(registered_account.account_holder == user.real_name)
. += "<span class='boldnotice'>If you lose this ID card, you can reclaim your account by Alt-Clicking a blank ID card while holding it and entering your account ID number.</span>"
else
@@ -348,6 +348,10 @@
name = "Snow Taxi (Computer Board)"
build_path = /obj/machinery/computer/shuttle/snow_taxi
/obj/item/circuitboard/computer/bountypad
name = "Bounty Pad (Computer Board)"
build_path = /obj/machinery/computer/piratepad_control/civilian
// /obj/item/circuitboard/computer/bountypad
// name = "Bounty Pad (Computer Board)"
// build_path = /obj/machinery/computer/piratepad_control/civilian
@@ -685,15 +685,15 @@
/obj/item/stack/sheet/glass = 1,
/obj/item/vending_refill/donksoft = 1)
// /obj/item/circuitboard/machine/bountypad
// name = "Civilian Bounty Pad (Machine Board)"
// icon_state = "generic"
// build_path = /obj/machinery/piratepad/civilian
// req_components = list(
// /obj/item/stock_parts/card_reader = 1,
// /obj/item/stock_parts/scanning_module = 1,
// /obj/item/stock_parts/micro_laser = 1
// )
/obj/item/circuitboard/machine/bountypad
name = "Civilian Bounty Pad (Machine Board)"
icon_state = "generic"
build_path = /obj/machinery/piratepad/civilian
req_components = list(
/obj/item/stock_parts/scanning_module = 1,
/obj/item/stock_parts/micro_laser = 1
)
// /obj/item/circuitboard/machine/accounting
// name = "Account Registration Device (Machine Board)"