Bank cards can now talk again. (#42849)

* recursive_loc_check now returns the appropriate atom.

* Added a preference to disable bank card chatting.

* Converted spaces to tabs, collapsed conditionals

* Update code/modules/economy/account.dm

Co-Authored-By: MacHac <piheads@gmail.com>

* Added the pref to the game prefs screen.
This commit is contained in:
MacHac
2019-02-25 15:07:34 -05:00
committed by ShizCalev
parent 624f7bea78
commit 203cac22ff
5 changed files with 34 additions and 5 deletions
+2 -1
View File
@@ -29,8 +29,9 @@
#define CHAT_GHOSTWHISPER (1<<7)
#define CHAT_GHOSTPDA (1<<8)
#define CHAT_GHOSTRADIO (1<<9)
#define CHAT_BANKCARD (1<<10)
#define TOGGLES_DEFAULT_CHAT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_PULLR|CHAT_GHOSTWHISPER|CHAT_GHOSTPDA|CHAT_GHOSTRADIO)
#define TOGGLES_DEFAULT_CHAT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_PULLR|CHAT_GHOSTWHISPER|CHAT_GHOSTPDA|CHAT_GHOSTRADIO|CHAT_BANKCARD)
#define PARALLAX_INSANE -1 //for show offs
#define PARALLAX_HIGH 0 //default.
+5 -1
View File
@@ -498,11 +498,15 @@
//Recursively checks if an item is inside a given type, even through layers of storage. Returns the atom if it finds it.
/proc/recursive_loc_check(atom/movable/target, type)
var/atom/A = target
if(istype(A, type))
return A
while(!istype(A.loc, type))
if(!A.loc)
return
A = A.loc
return A
return A.loc
/proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank)
if(!SSticker.IsRoundInProgress() || QDELETED(character))
+6
View File
@@ -493,6 +493,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "<b>Ghosts of Others:</b> <a href='?_src_=prefs;task=input;preference=ghostothers'>[button_name]</a><br>"
dat += "<br>"
dat += "<b>Income Updates:</b> <a href='?_src_=prefs;preference=income_pings'>[(chat_toggles & CHAT_BANKCARD) ? "Allowed" : "Muted"]</a><br>"
dat += "<br>"
dat += "<b>FPS:</b> <a href='?_src_=prefs;preference=clientfps;task=input'>[clientfps]</a><br>"
dat += "<b>Parallax (Fancy Space):</b> <a href='?_src_=prefs;preference=parallaxdown' oncontextmenu='window.location.href=\"?_src_=prefs;preference=parallaxup\";return false;'>"
@@ -1462,6 +1465,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if("ghost_pda")
chat_toggles ^= CHAT_GHOSTPDA
if("income_pings")
chat_toggles ^= CHAT_BANKCARD
if("pull_requests")
chat_toggles ^= CHAT_PULLR
@@ -235,6 +235,17 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings, listen_ooc)()
/datum/verbs/menu/Settings/listen_ooc/Get_checked(client/C)
return C.prefs.chat_toggles & CHAT_OOC
TOGGLE_CHECKBOX(/datum/verbs/menu/Settings, listen_bank_card)()
set name = "Show/Hide Income Updates"
set category = "Preferences"
set desc = "Show or hide updates to your income"
usr.client.prefs.chat_toggles ^= CHAT_BANKCARD
usr.client.prefs.save_preferences()
to_chat(usr, "You will [(usr.client.prefs.chat_toggles & CHAT_BANKCARD) ? "now" : "no longer"] be notified when you get paid.")
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Income Notifications", "[(usr.client.prefs.chat_toggles & CHAT_BANKCARD) ? "Enabled" : "Disabled"]"))
/datum/verbs/menu/Settings/listen_bank_card/Get_checked(client/C)
return C.prefs.chat_toggles & CHAT_BANKCARD
GLOBAL_LIST_INIT(ghost_forms, list("ghost","ghostking","ghostian2","skeleghost","ghost_red","ghost_black", \
"ghost_blue","ghost_yellow","ghost_green","ghost_pink", \
+10 -3
View File
@@ -50,7 +50,7 @@
bank_card_talk("ERROR: Payday aborted, departmental funds insufficient.")
return FALSE
else
bank_card_talk("Payday processed, account now holds $[account_balance].")
bank_card_talk("Payday processed, account now holds $[account_balance].")
return TRUE
bank_card_talk("ERROR: Payday aborted, unable to contact departmental account.")
return FALSE
@@ -59,22 +59,29 @@
/datum/bank_account/proc/add_neetbux()
account_job.paycheck += PAYCHECK_WELFARE
/datum/bank_account/proc/bank_card_talk(message)
/datum/bank_account/proc/bank_card_talk(message, force)
if(!message || !bank_cards.len)
return
for(var/obj/A in bank_cards)
var/mob/card_holder = recursive_loc_check(A, /mob)
if(ismob(card_holder)) //If on a mob
if(card_holder.client && !(card_holder.client.prefs.chat_toggles & CHAT_BANKCARD) && !force)
return
card_holder.playsound_local(get_turf(card_holder), 'sound/machines/twobeep.ogg', 50, TRUE)
if(card_holder.can_hear())
to_chat(card_holder, "[icon2html(A, card_holder)] *[message]*")
else if(isturf(A.loc)) //If on the ground
for(var/mob/M in hearers(1,get_turf(A)))
if(M.client && !(M.client.prefs.chat_toggles & CHAT_BANKCARD) && !force)
return
playsound(A, 'sound/machines/twobeep.ogg', 50, TRUE)
A.audible_message("[icon2html(A, hearers(A))] *[message]*", null, 1)
break
else
for(var/mob/M in A.loc) //If inside a container with other mobs (e.g. locker)
if(M.client && !(M.client.prefs.chat_toggles & CHAT_BANKCARD) && !force)
return
M.playsound_local(get_turf(M), 'sound/machines/twobeep.ogg', 50, TRUE)
if(M.can_hear())
to_chat(M, "[icon2html(A, M)] *[message]*")
@@ -88,4 +95,4 @@
department_id = dep_id
account_balance = budget
account_holder = SSeconomy.department_accounts[dep_id]
SSeconomy.generated_accounts += src
SSeconomy.generated_accounts += src