diff --git a/code/modules/economy/ATM.dm b/code/modules/economy/ATM.dm
index 9f660667125..7a638ffd3fd 100644
--- a/code/modules/economy/ATM.dm
+++ b/code/modules/economy/ATM.dm
@@ -12,6 +12,7 @@ log transactions
#define TRANSFER_FUNDS 2
#define VIEW_TRANSACTION_LOGS 3
#define PRINT_DELAY 100
+#define LOCKOUT_TIME 120
/obj/machinery/atm
name = "Nanotrasen automatic teller machine"
@@ -97,7 +98,7 @@ log transactions
if(!powered())
return
var/obj/item/stack/spacecash/C = I
- playsound(loc, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 50, 1)
+ playsound(loc, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 50, TRUE)
authenticated_account.credit(C.amount, "Credit deposit", machine_id, authenticated_account.owner_name)
@@ -160,7 +161,7 @@ log transactions
return
var/transfer_amount = text2num(params["funds_amount"])
if(transfer_amount <= 0)
- alert("That is not a valid amount.")
+ to_chat(usr, "[bicon(src)]That is not a valid amount.")
else if(transfer_amount <= authenticated_account.money)
var/target_account_number = text2num(params["target_acc_number"])
var/transfer_purpose = params["purpose"]
@@ -172,7 +173,13 @@ log transactions
to_chat(usr, "[bicon(src)]You don't have enough funds to do that!")
if("view_screen")
- view_screen = text2num(params["view_screen"])
+ var/list/valid_screen = list(DEFAULT_SCREEN, CHANGE_SECURITY_LEVEL, TRANSFER_FUNDS, VIEW_TRANSACTION_LOGS)
+ var/screen_proper = text2num(params["view_screen"])
+ if(screen_proper in valid_screen)
+ view_screen = screen_proper
+ else
+ message_admins("Warning: possible href exploit by [key_name(usr)] - Invalid screen number passed into an ATM")
+ log_debug("Warning: possible href exploit by [key_name(usr)] - Invalid screen number passed into an ATM")
if("change_security_level")
if(authenticated_account)
@@ -194,7 +201,7 @@ log transactions
if(number_incorrect_tries > max_pin_attempts)
//lock down the atm
ticks_left_locked_down = 30
- playsound(src, 'sound/machines/buzz-two.ogg', 50, 1)
+ playsound(src, 'sound/machines/buzz-two.ogg', 50, TRUE)
//create an entry in the account transaction log
var/datum/money_account/failed_account = linked_db.get_account(tried_account_num)
@@ -207,15 +214,15 @@ log transactions
T.time = station_time_timestamp()
failed_account.transaction_log.Add(T)
else
- to_chat(usr, "[bicon(src)]Incorrect pin/account combination entered, [max_pin_attempts - number_incorrect_tries] attempts remaining.")
+ to_chat(usr, "[bicon(src)]Incorrect pin/account combination entered, [max_pin_attempts - number_incorrect_tries] attempt\s remaining.")
previous_account_number = tried_account_num
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 1)
+ playsound(src, 'sound/machines/buzz-sigh.ogg', 50, TRUE)
else
to_chat(usr, "[bicon(src)]Incorrect pin/account combination entered.")
number_incorrect_tries = 0
else
- playsound(src, 'sound/machines/twobeep.ogg', 50, 1)
- ticks_left_timeout = 120
+ playsound(src, 'sound/machines/twobeep.ogg', 50, TRUE)
+ ticks_left_timeout = LOCKOUT_TIME
view_screen = DEFAULT_SCREEN
//create a transaction log entry
@@ -232,10 +239,10 @@ log transactions
if("withdrawal")
var/amount = max(text2num(params["funds_amount"]),0)
if(amount <= 0)
- alert("That is not a valid amount.")
+ to_chat(usr, "[bicon(src)]That is not a valid amount.")
else if(authenticated_account && amount > 0)
if(amount <= authenticated_account.money)
- playsound(src, 'sound/machines/chime.ogg', 50, 1)
+ playsound(src, 'sound/machines/chime.ogg', 50, TRUE)
//remove the money
if(amount > 100000) // prevent crashes
@@ -252,7 +259,7 @@ log transactions
to_chat(usr, "The [name] flashes an error on its display.")
return
lastprint = world.timeofday
- playsound(loc, 'sound/goonstation/machines/printer_thermal.ogg', 50, 1)
+ playsound(loc, 'sound/goonstation/machines/printer_thermal.ogg', 50, TRUE)
var/obj/item/paper/R = new(loc)
R.name = "Account balance: [authenticated_account.owner_name]"
R.info = {"NT Automated Teller Account Statement
@@ -271,7 +278,7 @@ log transactions
R.overlays += stampoverlay
R.stamps += "