Files
GS13NG/code/game/machinery/bank_machine.dm
T
2020-07-22 12:02:31 +08:00

100 lines
2.8 KiB
Plaintext

/obj/machinery/computer/bank_machine
name = "bank machine"
desc = "A machine used to deposit and withdraw station funds."
icon = 'goon/icons/obj/goon_terminals.dmi'
idle_power_usage = 100
var/siphoning = FALSE
var/next_warning = 0
var/obj/item/radio/radio
var/radio_channel = RADIO_CHANNEL_COMMON
var/minimum_time_between_warnings = 400
var/syphoning_credits = 0
/obj/machinery/computer/bank_machine/Initialize()
. = ..()
radio = new(src)
radio.subspace_transmission = TRUE
radio.canhear_range = 0
radio.recalculateChannels()
/obj/machinery/computer/bank_machine/Destroy()
QDEL_NULL(radio)
. = ..()
/obj/machinery/computer/bank_machine/attackby(obj/item/I, mob/user)
var/value = 0
if(istype(I, /obj/item/stack/spacecash))
var/obj/item/stack/spacecash/C = I
value = C.value * C.amount
else if(istype(I, /obj/item/holochip))
var/obj/item/holochip/H = I
value = H.credits
if(value)
var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR)
if(D)
D.adjust_money(value)
to_chat(user, "<span class='notice'>You deposit [I]. The Cargo Budget is now [D.account_balance] cr.</span>")
qdel(I)
return
return ..()
/obj/machinery/computer/bank_machine/process()
..()
if(siphoning)
if (stat & (BROKEN|NOPOWER))
say("Insufficient power. Halting siphon.")
end_syphon()
var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR)
if(!D.has_money(200))
say("Cargo budget depleted. Halting siphon.")
end_syphon()
return
playsound(src, 'sound/items/poster_being_created.ogg', 100, TRUE)
syphoning_credits += 200
D.adjust_money(-200)
if(next_warning < world.time && prob(15))
var/area/A = get_area(loc)
var/message = "Unauthorized credit withdrawal underway in [A.map_name]!!"
radio.talk_into(src, message, radio_channel)
next_warning = world.time + minimum_time_between_warnings
/obj/machinery/computer/bank_machine/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "BankMachine", name)
ui.open()
/obj/machinery/computer/bank_machine/ui_data(mob/user)
var/list/data = list()
var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR)
if(D)
data["current_balance"] = D.account_balance
else
data["current_balance"] = 0
data["siphoning"] = siphoning
data["station_name"] = station_name()
return data
/obj/machinery/computer/bank_machine/ui_act(action, params)
if(..())
return
switch(action)
if("siphon")
say("Siphon of station credits has begun!")
siphoning = TRUE
. = TRUE
if("halt")
say("Station credit withdrawal halted.")
end_syphon()
. = TRUE
/obj/machinery/computer/bank_machine/proc/end_syphon()
siphoning = FALSE
new /obj/item/holochip(drop_location(), syphoning_credits) //get the loot
syphoning_credits = 0