diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 80f9fda0168..31f750ae631 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -448,7 +448,7 @@ var/global/list/ghost_others_options = list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define SLIME_FRIENDSHIP_STAY 3 //Min friendship to order it to stay #define SLIME_FRIENDSHIP_ATTACK 8 //Min friendship to order it to attack - +#define DEADCHAT_ARRIVALRATTLE "arrivalrattle" #define DEADCHAT_DEATHRATTLE "deathrattle" #define DEADCHAT_REGULAR "regular-deadchat" diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 12d5e376201..28bc36d340a 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -13,8 +13,9 @@ #define ANNOUNCE_LOGIN 1024 #define SOUND_ANNOUNCEMENTS 2048 #define DISABLE_DEATHRATTLE 4096 +#define DISABLE_ARRIVALRATTLE 8192 -#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS|SOUND_ANNOUNCEMENTS|DISABLE_DEATHRATTLE) +#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS|SOUND_ANNOUNCEMENTS) //Chat toggles #define CHAT_OOC 1 diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 3cbe887a2b7..8de02bd774c 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -346,9 +346,14 @@ Proc for attack log creation, because really why not continue if(speaker_key && speaker_key in prefs.ignoring) continue - if(message_type == DEADCHAT_DEATHRATTLE) - if(prefs.toggles & DISABLE_DEATHRATTLE) - continue + + switch(message_type) + if(DEADCHAT_DEATHRATTLE) + if(prefs.toggles & DISABLE_DEATHRATTLE) + continue + if(DEADCHAT_ARRIVALRATTLE) + if(prefs.toggles & DISABLE_ARRIVALRATTLE) + continue if(istype(M, /mob/dead/observer) && follow_target) var/link = FOLLOW_LINK(M, follow_target) diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm index ba63abd6c3a..18ffc21be31 100644 --- a/code/game/machinery/announcement_system.dm +++ b/code/game/machinery/announcement_system.dm @@ -158,7 +158,6 @@ var/list/announcement_systems = list() add_fingerprint(usr) interact(usr) - return /obj/machinery/announcement_system/attack_ai(mob/living/silicon/ai/user) if(!isAI(user)) diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index edcfcb3a2a0..b791a4c30b9 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -65,6 +65,18 @@ messages when a sentient mob dies." feedback_add_details("admin_verb", "TDR") // If you are copy-pasting this, maybe you should spend some time reading the comments. +/client/verb/toggle_arrivalrattle() + set name = "Toggle Arrivalrattle" + set category = "Preferences" + set desc = "Toggle recieving a message in deadchat when someone joins \ + the station." + prefs.toggles ^= DISABLE_ARRIVALRATTLE + usr << "You will \ + [(prefs.toggles & DISABLE_ARRIVALRATTLE) ? "no longer" : "now"] get \ + messages when someone joins the station." + prefs.save_preferences() + feedback_add_details("admin_verb", "TAR") // If you are copy-pasting this, maybe you should rethink where your life went so wrong. + /client/proc/toggleadminhelpsound() set name = "Hear/Silence Adminhelps" set category = "Preferences" diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index c6223dfcd19..b9fa1070e66 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -329,12 +329,20 @@ qdel(src) /mob/new_player/proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank) - if (ticker.current_state == GAME_STATE_PLAYING) - if(announcement_systems.len) - if(character.mind) - if((character.mind.assigned_role != "Cyborg") && (character.mind.assigned_role != character.mind.special_role)) - var/obj/machinery/announcement_system/announcer = pick(announcement_systems) - announcer.announce("ARRIVAL", character.real_name, rank, list()) //make the list empty to make it announce it in common + if(ticker.current_state != GAME_STATE_PLAYING) + return + var/area/A = get_area(character) + var/message = "\ + [character.real_name] ([rank]) has arrived at the station at \ + [A.name]." + deadchat_broadcast(message, follow_target = character, message_type=DEADCHAT_ARRIVALRATTLE) + if((!announcement_systems.len) || (!character.mind)) + return + if((character.mind.assigned_role == "Cyborg") || (character.mind.assigned_role == character.mind.special_role)) + return + + var/obj/machinery/announcement_system/announcer = pick(announcement_systems) + announcer.announce("ARRIVAL", character.real_name, rank, list()) //make the list empty to make it announce it in common /mob/new_player/proc/AddEmploymentContract(mob/living/carbon/human/employee) //TODO: figure out a way to exclude wizards/nukeops/demons from this.