From 203cac22ff388a4fa1213853f193ffcb2ebc2640 Mon Sep 17 00:00:00 2001 From: MacHac Date: Mon, 25 Feb 2019 15:07:34 -0500 Subject: [PATCH] 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 * Added the pref to the game prefs screen. --- code/__DEFINES/preferences.dm | 3 ++- code/__HELPERS/game.dm | 6 +++++- code/modules/client/preferences.dm | 6 ++++++ code/modules/client/preferences_toggles.dm | 11 +++++++++++ code/modules/economy/account.dm | 13 ++++++++++--- 5 files changed, 34 insertions(+), 5 deletions(-) diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 5c50d54da46..76da698a27a 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -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. diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 62cff3e6bb7..cb5187b91a5 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -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)) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index afcdb14d18a..e2647fae86b 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -493,6 +493,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Ghosts of Others: [button_name]
" dat += "
" + dat += "Income Updates: [(chat_toggles & CHAT_BANKCARD) ? "Allowed" : "Muted"]
" + dat += "
" + dat += "FPS: [clientfps]
" dat += "Parallax (Fancy Space): " @@ -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 diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index 3b717a329b2..0d40d5c6fb3 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -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", \ diff --git a/code/modules/economy/account.dm b/code/modules/economy/account.dm index a9206045cd5..a85299cf63c 100644 --- a/code/modules/economy/account.dm +++ b/code/modules/economy/account.dm @@ -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 \ No newline at end of file + SSeconomy.generated_accounts += src