diff --git a/code/__DEFINES/observers.dm b/code/__DEFINES/observers.dm new file mode 100644 index 00000000000..0bacf223d8c --- /dev/null +++ b/code/__DEFINES/observers.dm @@ -0,0 +1,12 @@ +// Various flags for notify_ghosts ghost popups. +/// Determines if the notification will not run if called during mapload. +#define GHOST_NOTIFY_IGNORE_MAPLOAD (1<<0) +/// Determines if the notification will flash the Byond window. +#define GHOST_NOTIFY_FLASH_WINDOW (1<<1) +/// Determines if the notification will notify suiciders. +#define GHOST_NOTIFY_NOTIFY_SUICIDERS (1<<2) + +/// The default set of flags to be passed into a notify_ghosts call. +#define NOTIFY_CATEGORY_DEFAULT (GHOST_NOTIFY_FLASH_WINDOW | GHOST_NOTIFY_IGNORE_MAPLOAD | GHOST_NOTIFY_NOTIFY_SUICIDERS) +/// The default set of flags, without the flash_window flag. +#define NOTIFY_CATEGORY_NOFLASH (NOTIFY_CATEGORY_DEFAULT & ~GHOST_NOTIFY_FLASH_WINDOW) diff --git a/code/datums/brain_damage/split_personality.dm b/code/datums/brain_damage/split_personality.dm index e5890a5fa9b..c501e7c51fa 100644 --- a/code/datums/brain_damage/split_personality.dm +++ b/code/datums/brain_damage/split_personality.dm @@ -262,7 +262,13 @@ /datum/brain_trauma/severe/split_personality/blackout/on_gain() . = ..() RegisterSignal(owner, COMSIG_ATOM_SPLASHED, PROC_REF(on_splashed)) - notify_ghosts("[owner] is blacking out!", source = owner, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "Bro I'm not even drunk right now") + notify_ghosts( + "[owner] is blacking out!", + source = owner, + action = NOTIFY_ORBIT, + notify_flags = NOTIFY_CATEGORY_NOFLASH, + header = "Bro I'm not even drunk right now", + ) /datum/brain_trauma/severe/split_personality/blackout/on_lose() . = ..() diff --git a/code/datums/components/cult_ritual_item.dm b/code/datums/components/cult_ritual_item.dm index ca4db73a409..a155e904c7f 100644 --- a/code/datums/components/cult_ritual_item.dm +++ b/code/datums/components/cult_ritual_item.dm @@ -377,7 +377,13 @@ for(var/shielded_turf in spiral_range_turfs(1, cultist, 1)) LAZYADD(shields, new /obj/structure/emergency_shield/cult/narsie(shielded_turf)) - notify_ghosts("[cultist] has begun scribing a Nar'Sie rune!", source = cultist, action = NOTIFY_ORBIT, header = "Maranax Infirmux!") + notify_ghosts( + "[cultist] has begun scribing a Nar'Sie rune!", + source = cultist, + action = NOTIFY_ORBIT, + header = "Maranax Infirmux!", + notify_flags = NOTIFY_CATEGORY_NOFLASH, + ) return TRUE diff --git a/code/datums/components/deadchat_control.dm b/code/datums/components/deadchat_control.dm index 48096e47670..2a00b2f955d 100644 --- a/code/datums/components/deadchat_control.dm +++ b/code/datums/components/deadchat_control.dm @@ -39,7 +39,12 @@ if(deadchat_mode & ANARCHY_MODE) // Choose one, please. stack_trace("deadchat_control component added to [parent.type] with both democracy and anarchy modes enabled.") timerid = addtimer(CALLBACK(src, PROC_REF(democracy_loop)), input_cooldown, TIMER_STOPPABLE | TIMER_LOOP) - notify_ghosts("[parent] is now deadchat controllable!", source = parent, action = NOTIFY_ORBIT, header="Something Interesting!") + notify_ghosts( + "[parent] is now deadchat controllable!", + source = parent, + action = NOTIFY_ORBIT, + header = "Something Interesting!", + ) if(!ismob(parent) && !SSpoints_of_interest.is_valid_poi(parent)) SSpoints_of_interest.make_point_of_interest(parent) generated_point_of_interest = TRUE diff --git a/code/datums/components/energized.dm b/code/datums/components/energized.dm index 64adeb5e9be..41262e23efc 100644 --- a/code/datums/components/energized.dm +++ b/code/datums/components/energized.dm @@ -106,7 +106,12 @@ return FALSE // Finally the interesting part where they ACTUALLY get hit! - notify_ghosts("[future_tram_victim] has fallen in the path of an oncoming tram!", source = future_tram_victim, action = NOTIFY_ORBIT, header = "Electrifying!") + notify_ghosts( + "[future_tram_victim] has fallen in the path of an oncoming tram!", + source = future_tram_victim, + action = NOTIFY_ORBIT, + header = "Electrifying!", + ) playsound(src, SFX_SPARKS, 75, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) source.audible_message(span_danger("[parent] makes a loud electric crackle!")) to_chat(future_tram_victim, span_userdanger("You hear a loud electric crackle!")) diff --git a/code/datums/components/food/ghost_edible.dm b/code/datums/components/food/ghost_edible.dm index 25207800a74..ff524ed7a1c 100644 --- a/code/datums/components/food/ghost_edible.dm +++ b/code/datums/components/food/ghost_edible.dm @@ -23,7 +23,12 @@ src.bite_chance = bite_chance src.minimum_scale = minimum_scale initial_reagent_volume = atom_parent.reagents.total_volume - notify_ghosts("[parent] is edible by ghosts!", source = parent, action = NOTIFY_ORBIT, header="Something Tasty!") + notify_ghosts( + "[parent] is edible by ghosts!", + source = parent, + action = NOTIFY_ORBIT, + header="Something Tasty!", + ) /datum/component/ghost_edible/RegisterWithParent() START_PROCESSING(SSdcs, src) diff --git a/code/datums/components/orbit_poll.dm b/code/datums/components/orbit_poll.dm index d9563aaab95..91b27d4b667 100644 --- a/code/datums/components/orbit_poll.dm +++ b/code/datums/components/orbit_poll.dm @@ -47,13 +47,14 @@ var/message = custom_message || "[capitalize(src.title)] is looking for volunteers" - notify_ghosts("[message]. An orbiter will be chosen in [DisplayTimeText(timeout)].\n", \ - action = NOTIFY_ORBIT, \ - enter_link = "(Ignore)", \ - flashwindow = FALSE, \ - header = "Volunteers requested", \ - ignore_key = ignore_key, \ - source = parent \ + notify_ghosts( + "[message]. An orbiter will be chosen in [DisplayTimeText(timeout)].\n", + action = NOTIFY_ORBIT, + enter_link = "(Ignore)", + notify_flags = NOTIFY_CATEGORY_NOFLASH, + header = "Volunteers requested", + ignore_key = ignore_key, + source = parent, ) addtimer(CALLBACK(src, PROC_REF(end_poll)), timeout, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE|TIMER_DELETE_ME) diff --git a/code/datums/components/supermatter_crystal.dm b/code/datums/components/supermatter_crystal.dm index 38968d1e3d1..3c37bba33cb 100644 --- a/code/datums/components/supermatter_crystal.dm +++ b/code/datums/components/supermatter_crystal.dm @@ -302,7 +302,12 @@ consumed_mob.investigate_log("has been dusted by [atom_source].", INVESTIGATE_DEATHS) if(istype(consumed_mob, /mob/living/simple_animal/parrot/poly)) // Dusting Poly creates a power surge force_event(/datum/round_event_control/supermatter_surge/poly, "Poly's revenge") - notify_ghosts("[consumed_mob] has been dusted by [atom_source]!", source = atom_source, action = NOTIFY_JUMP, header = "Polytechnical Difficulties") + notify_ghosts( + "[consumed_mob] has been dusted by [atom_source]!", + source = atom_source, + header = "Polytechnical Difficulties", + notify_flags = NOTIFY_CATEGORY_DEFAULT, + ) consumed_mob.dust(force = TRUE) matter_increase += 100 * object_size if(is_clown_job(consumed_mob.mind?.assigned_role)) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index 6dd90405f96..b551909df41 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -184,7 +184,12 @@ if(makeBody) new_character = generate_ruleset_body(applicant) finish_setup(new_character, i) - notify_ghosts("[applicant.name] has been picked for the ruleset [name]!", source = new_character, action = NOTIFY_ORBIT, header="Something Interesting!") + notify_ghosts( + "[applicant.name] has been picked for the ruleset [name]!", + source = new_character, + action = NOTIFY_ORBIT, + header = "Something Interesting!", + ) /datum/dynamic_ruleset/midround/from_ghosts/proc/generate_ruleset_body(mob/applicant) var/mob/living/carbon/human/new_character = make_body(applicant) diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 516f5ec8453..9ff9ee7f76b 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -251,7 +251,12 @@ if(isnull(payload) || istype(payload, /obj/machinery/syndicatebomb/training)) return - notify_ghosts("\A [src] has been activated at [get_area(src)]!", source = src, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "Bomb Planted") + notify_ghosts( + "\A [src] has been activated at [get_area(src)]!", + source = src, + action = NOTIFY_ORBIT, + header = "Bomb Planted", + ) user.add_mob_memory(/datum/memory/bomb_planted/syndicate, antagonist = src) log_bomber(user, "has primed a", src, "for detonation (Payload: [payload.name])") payload.adminlog = "The [name] that [key_name(user)] had primed detonated!" diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index 6c0cd4017e3..0849c6c2b26 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -124,7 +124,11 @@ span_hear("You hear a click.")) message_admins("Power sink activated by [ADMIN_LOOKUPFLW(user)] at [ADMIN_VERBOSEJMP(src)]") user.log_message("activated a powersink", LOG_GAME) - notify_ghosts("[user] has activated a power sink!", source = src, header = "Shocking News!") + notify_ghosts( + "[user] has activated a power sink!", + source = src, + header = "Shocking News!", + ) set_mode(OPERATING) if(OPERATING) @@ -188,7 +192,11 @@ if (!warning_given) warning_given = TRUE message_admins("Power sink at ([x],[y],[z] - JMP) has reached [ALERT]% of max heat. Explosion imminent.") - notify_ghosts("[src] is about to reach critical heat capacity!", source = src, header = "Power Sunk") + notify_ghosts( + "[src] is about to reach critical heat capacity!", + source = src, + header = "Power Sunk", + ) playsound(src, 'sound/effects/screech.ogg', 100, TRUE, TRUE) if(internal_heat >= max_heat) diff --git a/code/game/objects/items/devices/reverse_bear_trap.dm b/code/game/objects/items/devices/reverse_bear_trap.dm index b5cbb985570..8ac8d2a6026 100644 --- a/code/game/objects/items/devices/reverse_bear_trap.dm +++ b/code/game/objects/items/devices/reverse_bear_trap.dm @@ -107,7 +107,15 @@ user.dropItemToGround(src) target.equip_to_slot_if_possible(src, ITEM_SLOT_HEAD) arm() - notify_ghosts("[user] put a reverse bear trap on [target]!", source = src, action = NOTIFY_ORBIT, flashwindow = FALSE, ghost_sound = 'sound/machines/beep.ogg', notify_volume = 75, header = "Reverse bear trap armed") + notify_ghosts( + "[user] put a reverse bear trap on [target]!", + source = src, + action = NOTIFY_ORBIT, + notify_flags = NOTIFY_CATEGORY_NOFLASH, + ghost_sound = 'sound/machines/beep.ogg', + notify_volume = 75, + header = "Reverse bear trap armed", + ) /obj/item/reverse_bear_trap/proc/snap() reset() diff --git a/code/game/objects/items/eightball.dm b/code/game/objects/items/eightball.dm index 4003f947b8d..6bac2e7df37 100644 --- a/code/game/objects/items/eightball.dm +++ b/code/game/objects/items/eightball.dm @@ -158,7 +158,12 @@ // notify ghosts that someone's shaking a haunted eightball // and inform them of the message, (hopefully a yes/no question) selected_message = last_message - notify_ghosts("[user] is shaking [src], hoping to get an answer to \"[selected_message]\"", source = src, action = NOTIFY_PLAY, header = "Magic eightball") + notify_ghosts( + "[user] is shaking [src], hoping to get an answer to \"[selected_message]\"", + source = src, + action = NOTIFY_PLAY, + header = "Magic eightball", + ) /obj/item/toy/eightball/haunted/get_answer() var/top_amount = 0 diff --git a/code/game/objects/items/grenades/plastic.dm b/code/game/objects/items/grenades/plastic.dm index d5f3b0dec9d..998057bce2a 100644 --- a/code/game/objects/items/grenades/plastic.dm +++ b/code/game/objects/items/grenades/plastic.dm @@ -119,7 +119,13 @@ message_admins("[ADMIN_LOOKUPFLW(user)] planted [name] on [target.name] at [ADMIN_VERBOSEJMP(target)] with [det_time] second fuse") user.log_message("planted [name] on [target.name] with a [det_time] second fuse.", LOG_ATTACK) - notify_ghosts("[user] has planted \a [src] on [target] with a [det_time] second fuse!", source = bomb_target, action = (isturf(target) ? NOTIFY_JUMP : NOTIFY_ORBIT), flashwindow = FALSE, header = "Explosive Planted") + notify_ghosts( + "[user] has planted \a [src] on [target] with a [det_time] second fuse!", + source = bomb_target, + action = (isturf(target) ? NOTIFY_JUMP : NOTIFY_ORBIT), + notify_flags = NOTIFY_CATEGORY_NOFLASH, + header = "Explosive Planted", + ) moveToNullspace() //Yep diff --git a/code/game/objects/items/his_grace.dm b/code/game/objects/items/his_grace.dm index 12c06e6916a..fe0e12d4d50 100644 --- a/code/game/objects/items/his_grace.dm +++ b/code/game/objects/items/his_grace.dm @@ -149,7 +149,12 @@ gender = MALE adjust_bloodthirst(1) force_bonus = HIS_GRACE_FORCE_BONUS * LAZYLEN(contents) - notify_ghosts("[user] has awoken His Grace!", source = src, action = NOTIFY_ORBIT, header = "All Hail His Grace!") + notify_ghosts( + "[user] has awoken His Grace!", + source = src, + action = NOTIFY_ORBIT, + header = "All Hail His Grace!", + ) playsound(user, 'sound/effects/pope_entry.ogg', 100) update_appearance() move_gracefully() diff --git a/code/game/objects/items/hot_potato.dm b/code/game/objects/items/hot_potato.dm index 1a801b0dcda..797c24aaf4c 100644 --- a/code/game/objects/items/hot_potato.dm +++ b/code/game/objects/items/hot_potato.dm @@ -150,7 +150,12 @@ log_bomber(null, null, src, "was primed for detonation (Timer:[delay],Explosive:[detonate_explosion],Range:[detonate_dev_range]/[detonate_heavy_range]/[detonate_light_range]/[detonate_fire_range])") active = TRUE if(detonate_explosion) //doesn't send a notification unless it's a genuine, exploding hot potato. - notify_ghosts("[user] has primed a Hot Potato!", source = src, action = NOTIFY_ORBIT, header = "Hot Hot Hot!") + notify_ghosts( + "[user] has primed a Hot Potato!", + source = src, + action = NOTIFY_ORBIT, + header = "Hot Hot Hot!", + ) /obj/item/hot_potato/proc/deactivate() update_appearance() diff --git a/code/game/objects/items/implants/implant_explosive.dm b/code/game/objects/items/implants/implant_explosive.dm index c9f961b594e..0661db5dbe0 100644 --- a/code/game/objects/items/implants/implant_explosive.dm +++ b/code/game/objects/items/implants/implant_explosive.dm @@ -125,10 +125,10 @@ "[imp_in] is about to detonate their explosive implant!", source = src, action = NOTIFY_ORBIT, - flashwindow = FALSE, + notify_flags = NOTIFY_CATEGORY_NOFLASH, ghost_sound = 'sound/machines/warning-buzzer.ogg', header = "Tick Tick Tick...", - notify_volume = 75 + notify_volume = 75, ) playsound(loc, 'sound/items/timer.ogg', 30, FALSE) diff --git a/code/game/objects/structures/spirit_board.dm b/code/game/objects/structures/spirit_board.dm index 2e6a2bd9a07..e8882251237 100644 --- a/code/game/objects/structures/spirit_board.dm +++ b/code/game/objects/structures/spirit_board.dm @@ -56,7 +56,11 @@ if(virgin) virgin = FALSE - notify_ghosts("Someone has begun playing with \a [src] in [get_area(src)]!", source = src, header = "Spirit board") + notify_ghosts( + "Someone has begun playing with \a [src] in [get_area(src)]!", + source = src, + header = "Spirit board", + ) var/new_planchette = tgui_input_list(ghost, "Choose the letter.", "Seance!", ghosty_options) if(isnull(new_planchette)) diff --git a/code/modules/antagonists/blob/blob_antag.dm b/code/modules/antagonists/blob/blob_antag.dm index 2d606d65b18..99bba74ae89 100644 --- a/code/modules/antagonists/blob/blob_antag.dm +++ b/code/modules/antagonists/blob/blob_antag.dm @@ -143,7 +143,8 @@ action = NOTIFY_ORBIT, ghost_sound = 'sound/ambience/antag/blobalert.ogg', header = "Blob Awakening!", - notify_volume = 75 + notify_volume = 75, + notify_flags = NOTIFY_CATEGORY_DEFAULT, ) /datum/antagonist/blob/antag_listing_status() diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index 63b2c6613c3..240e3617029 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -922,7 +922,12 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) fail_invoke() log_game("Manifest rune failed - too many summoned ghosts") return list() - notify_ghosts("Manifest rune invoked in [get_area(src)].", 'sound/effects/ghost2.ogg', source = src, header = "Manifest rune") + notify_ghosts( + "Manifest rune invoked in [get_area(src)].", + 'sound/effects/ghost2.ogg', + source = src, + header = "Manifest rune", + ) var/list/ghosts_on_rune = list() for(var/mob/dead/observer/O in T) if(O.client && !is_banned_from(O.ckey, ROLE_CULTIST) && !QDELETED(src) && !(isAdminObserver(O) && (O.client.prefs.toggles & ADMIN_IGNORE_CULT_GHOST)) && !QDELETED(O)) diff --git a/code/modules/antagonists/heretic/heretic_knowledge.dm b/code/modules/antagonists/heretic/heretic_knowledge.dm index 0c30a2361b0..81130d2f5a0 100644 --- a/code/modules/antagonists/heretic/heretic_knowledge.dm +++ b/code/modules/antagonists/heretic/heretic_knowledge.dm @@ -730,7 +730,13 @@ SSblackbox.record_feedback("tally", "heretic_ascended", 1, route) log_heretic_knowledge("[key_name(user)] completed their final ritual at [worldtime2text()].") - notify_ghosts("[user] has completed an ascension ritual!", source = user, action = NOTIFY_ORBIT, header = "A Heretic is Ascending!") + notify_ghosts( + "[user] has completed an ascension ritual!", + source = user, + action = NOTIFY_ORBIT, + header = "A Heretic is Ascending!", + notify_flags = NOTIFY_CATEGORY_DEFAULT, + ) return TRUE /datum/heretic_knowledge/ultimate/cleanup_atoms(list/selected_atoms) diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm b/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm index 0b6a28c3bca..1cd6327cbe3 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm @@ -464,6 +464,7 @@ GLOBAL_VAR(station_nuke_source) source = src, header = "Nuke Armed", action = NOTIFY_ORBIT, + notify_flags = NOTIFY_CATEGORY_DEFAULT, ) update_appearance() diff --git a/code/modules/antagonists/pirate/pirate_event.dm b/code/modules/antagonists/pirate/pirate_event.dm index 2a2162fda68..c66130748fb 100644 --- a/code/modules/antagonists/pirate/pirate_event.dm +++ b/code/modules/antagonists/pirate/pirate_event.dm @@ -80,9 +80,19 @@ var/mob/our_candidate = candidates[1] var/mob/spawned_mob = spawner.create_from_ghost(our_candidate) candidates -= our_candidate - notify_ghosts("The [chosen_gang.ship_name] has an object of interest: [spawned_mob]!", source = spawned_mob, action = NOTIFY_ORBIT, header="Pirates!") + notify_ghosts( + "The [chosen_gang.ship_name] has an object of interest: [spawned_mob]!", + source = spawned_mob, + action = NOTIFY_ORBIT, + header = "Pirates!", + ) else - notify_ghosts("The [chosen_gang.ship_name] has an object of interest: [spawner]!", source = spawner, action = NOTIFY_ORBIT, header="Pirate Spawn Here!") + notify_ghosts( + "The [chosen_gang.ship_name] has an object of interest: [spawner]!", + source = spawner, + action = NOTIFY_ORBIT, + header = "Pirate Spawn Here!", + ) priority_announce(chosen_gang.arrival_announcement, sender_override = chosen_gang.ship_name) diff --git a/code/modules/antagonists/space_dragon/carp_rift.dm b/code/modules/antagonists/space_dragon/carp_rift.dm index 9b9fff9e43a..7e95fd1b93a 100644 --- a/code/modules/antagonists/space_dragon/carp_rift.dm +++ b/code/modules/antagonists/space_dragon/carp_rift.dm @@ -41,7 +41,13 @@ new_rift.dragon = dragon dragon.rift_list += new_rift to_chat(owner, span_boldwarning("The rift has been summoned. Prevent the crew from destroying it at all costs!")) - notify_ghosts("The Space Dragon has opened a rift!", source = new_rift, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "Carp Rift Opened") + notify_ghosts( + "The Space Dragon has opened a rift!", + source = new_rift, + action = NOTIFY_ORBIT, + notify_flags = NOTIFY_CATEGORY_NOFLASH, + header = "Carp Rift Opened", + ) ASSERT(dragon.rift_ability == src) // Badmin protection. QDEL_NULL(dragon.rift_ability) // Deletes this action when used successfully, we re-gain a new one on success later. @@ -189,7 +195,13 @@ if(light_color != LIGHT_COLOR_PURPLE) set_light_color(LIGHT_COLOR_PURPLE) update_light() - notify_ghosts("The carp rift can summon an additional carp!", source = src, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "Carp Spawn Available") + notify_ghosts( + "The carp rift can summon an additional carp!", + source = src, + action = NOTIFY_ORBIT, + notify_flags = NOTIFY_CATEGORY_NOFLASH, + header = "Carp Spawn Available", + ) last_carp_inc -= carp_interval // Is the rift now fully charged? diff --git a/code/modules/antagonists/traitor/objectives/eyesnatching.dm b/code/modules/antagonists/traitor/objectives/eyesnatching.dm index 4a307f8d8e0..c350eff981f 100644 --- a/code/modules/antagonists/traitor/objectives/eyesnatching.dm +++ b/code/modules/antagonists/traitor/objectives/eyesnatching.dm @@ -208,7 +208,12 @@ playsound(target, 'sound/effects/pop.ogg', 100, TRAIT_MUTE) eyeballies.Remove(target) eyeballies.forceMove(get_turf(target)) - notify_ghosts("[target] has just had their eyes snatched!", source = target, action = NOTIFY_ORBIT, header = "Ouch!") + notify_ghosts( + "[target] has just had their eyes snatched!", + source = target, + action = NOTIFY_ORBIT, + header = "Ouch!", + ) target.emote("scream") if(prob(20)) target.emote("cry") diff --git a/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm b/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm index 9b080b59260..1ea5fe9c6de 100644 --- a/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm +++ b/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm @@ -423,7 +423,8 @@ header = "Meltdown Incoming", action = NOTIFY_ORBIT, ghost_sound = 'sound/machines/warning-buzzer.ogg', - notify_volume = 75 + notify_volume = 75, + notify_flags = NOTIFY_CATEGORY_DEFAULT, ) for(var/i in HYPERTORUS_COUNTDOWN_TIME to 0 step -10) diff --git a/code/modules/basketball/controller.dm b/code/modules/basketball/controller.dm index f5cc286ba2a..d045d965341 100644 --- a/code/modules/basketball/controller.dm +++ b/code/modules/basketball/controller.dm @@ -120,6 +120,7 @@ GLOBAL_VAR(basketball_game) ghost_sound = 'sound/effects/ghost2.ogg', notify_volume = 75, action = NOTIFY_ORBIT, + notify_flags = NOTIFY_CATEGORY_DEFAULT, ) create_bodies(ready_players) diff --git a/code/modules/capture_the_flag/ctf_controller.dm b/code/modules/capture_the_flag/ctf_controller.dm index 8e51f8ef733..f5695ae65dc 100644 --- a/code/modules/capture_the_flag/ctf_controller.dm +++ b/code/modules/capture_the_flag/ctf_controller.dm @@ -47,7 +47,13 @@ ctf_enabled = TRUE for(var/team in teams) var/obj/machinery/ctf/spawner/spawner = teams[team].spawner - notify_ghosts("[spawner.name] has been activated!", source = spawner, action = NOTIFY_ORBIT, header = "CTF has been activated") + notify_ghosts( + "[spawner.name] has been activated!", + source = spawner, + action = NOTIFY_ORBIT, + header = "CTF has been activated", + notify_flags = NOTIFY_CATEGORY_DEFAULT, + ) /datum/ctf_controller/proc/stop_ctf() ctf_enabled = FALSE diff --git a/code/modules/capture_the_flag/ctf_game.dm b/code/modules/capture_the_flag/ctf_game.dm index bfebcc706ca..b7d97be8ecd 100644 --- a/code/modules/capture_the_flag/ctf_game.dm +++ b/code/modules/capture_the_flag/ctf_game.dm @@ -516,11 +516,17 @@ message_admins("[key_name_admin(user)] has [ctf_enabled ? "enabled" : "disabled"] CTF!") else if(automated) message_admins("CTF has finished a round and automatically restarted.") - notify_ghosts("CTF has automatically restarted after a round finished in [initial(ctf_area.name)]!",'sound/effects/ghost2.ogg') + notify_ghosts( + "CTF has automatically restarted after a round finished in [initial(ctf_area.name)]!", + 'sound/effects/ghost2.ogg', + ) else message_admins("The players have spoken! Voting has enabled CTF!") if(!automated) - notify_ghosts("CTF has been [ctf_enabled? "enabled" : "disabled"] in [initial(ctf_area.name)]!",'sound/effects/ghost2.ogg') + notify_ghosts( + "CTF has been [ctf_enabled? "enabled" : "disabled"] in [initial(ctf_area.name)]!", + 'sound/effects/ghost2.ogg', + ) #undef CTF_LOADING_UNLOADED #undef CTF_LOADING_LOADING diff --git a/code/modules/events/_event.dm b/code/modules/events/_event.dm index bd192dbef22..4951c191547 100644 --- a/code/modules/events/_event.dm +++ b/code/modules/events/_event.dm @@ -261,7 +261,12 @@ Runs the event /datum/round_event/proc/announce_to_ghosts(atom/atom_of_interest) if(control.alert_observers) if (atom_of_interest) - notify_ghosts("[control.name] has an object of interest: [atom_of_interest]!", source=atom_of_interest, action=NOTIFY_ORBIT, header="Something's Interesting!") + notify_ghosts( + "[control.name] has an object of interest: [atom_of_interest]!", + source = atom_of_interest, + action = NOTIFY_ORBIT, + header = "Something's Interesting!", + ) return //Called when the tick is equal to the announce_when variable. diff --git a/code/modules/events/earthquake.dm b/code/modules/events/earthquake.dm index 498648986e4..4f20f26b93b 100644 --- a/code/modules/events/earthquake.dm +++ b/code/modules/events/earthquake.dm @@ -93,7 +93,11 @@ priority_announce("Planetary monitoring systems indicate a devastating seismic event in the near future.", "Seismic Report") /datum/round_event/earthquake/start() - notify_ghosts("The earthquake's epicenter has been located: [get_area_name(epicenter)]!", source = epicenter, header = "Rumble Rumble Rumble!") + notify_ghosts( + "The earthquake's epicenter has been located: [get_area_name(epicenter)]!", + source = epicenter, + header = "Rumble Rumble Rumble!", + ) /datum/round_event/earthquake/tick() if(ISMULTIPLE(activeFor, 5)) diff --git a/code/modules/events/ghost_role/fugitive_event.dm b/code/modules/events/ghost_role/fugitive_event.dm index a70cf3e31b3..11eaf3c78b2 100644 --- a/code/modules/events/ghost_role/fugitive_event.dm +++ b/code/modules/events/ghost_role/fugitive_event.dm @@ -134,9 +134,19 @@ var/mob/our_candidate = candidates[1] var/mob/spawned_mob = spawner.create_from_ghost(our_candidate) candidates -= our_candidate - notify_ghosts("[spawner.prompt_name] has awoken: [spawned_mob]!", source = spawned_mob, action = NOTIFY_ORBIT, header="Come look!") + notify_ghosts( + "[spawner.prompt_name] has awoken: [spawned_mob]!", + source = spawned_mob, + action = NOTIFY_ORBIT, + header = "Come look!", + ) else - notify_ghosts("[spawner.prompt_name] spawner has been created!", source = spawner, action = NOTIFY_ORBIT, header="Spawn Here!") + notify_ghosts( + "[spawner.prompt_name] spawner has been created!", + source = spawner, + action = NOTIFY_ORBIT, + header = "Spawn Here!", + ) priority_announce("Unidentified ship detected near the station.") diff --git a/code/modules/food_and_drinks/machinery/microwave.dm b/code/modules/food_and_drinks/machinery/microwave.dm index c77f2e9e23e..10520e8f6c1 100644 --- a/code/modules/food_and_drinks/machinery/microwave.dm +++ b/code/modules/food_and_drinks/machinery/microwave.dm @@ -594,7 +594,12 @@ non_food_ingedients-- if(istype(potential_fooditem, /obj/item/modular_computer/pda) && prob(75)) pda_failure = TRUE - notify_ghosts("[cooker] has overheated their PDA!", source = src, action = NOTIFY_JUMP, flashwindow = FALSE, header = "Hunger Games: Catching Fire") + notify_ghosts( + "[cooker] has overheated their PDA!", + source = src, + notify_flags = NOTIFY_CATEGORY_NOFLASH, + header = "Hunger Games: Catching Fire", + ) // If we're cooking non-food items we can fail randomly if(length(non_food_ingedients) && prob(min(dirty * 5, 100))) diff --git a/code/modules/mapfluff/ruins/objects_and_mobs/necropolis_gate.dm b/code/modules/mapfluff/ruins/objects_and_mobs/necropolis_gate.dm index 54e167fb255..f2734bb7b05 100644 --- a/code/modules/mapfluff/ruins/objects_and_mobs/necropolis_gate.dm +++ b/code/modules/mapfluff/ruins/objects_and_mobs/necropolis_gate.dm @@ -190,7 +190,12 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate) M.playsound_local(T, null, 100, FALSE, 0, FALSE, pressure_affected = FALSE, sound_to_use = legion_sound) flash_color(M, flash_color = "#FF0000", flash_time = 50) var/mutable_appearance/release_overlay = mutable_appearance('icons/effects/effects.dmi', "legiondoor") - notify_ghosts("Legion has been released in the [get_area(src)]!", source = src, alert_overlay = release_overlay, action = NOTIFY_JUMP, flashwindow = FALSE) + notify_ghosts( + "Legion has been released in the [get_area(src)]!", + source = src, + alert_overlay = release_overlay, + notify_flags = NOTIFY_CATEGORY_NOFLASH, + ) /obj/effect/decal/necropolis_gate_decal icon = 'icons/effects/96x96.dmi' diff --git a/code/modules/mining/lavaland/megafauna_loot.dm b/code/modules/mining/lavaland/megafauna_loot.dm index 554002fed54..40185d34343 100644 --- a/code/modules/mining/lavaland/megafauna_loot.dm +++ b/code/modules/mining/lavaland/megafauna_loot.dm @@ -674,9 +674,13 @@ return to_chat(user, span_notice("You call out for aid, attempting to summon spirits to your side.")) - notify_ghosts("[user] is raising [user.p_their()] [name], calling for your help!", - enter_link="(Click to help)", - source = user, ignore_key = POLL_IGNORE_SPECTRAL_BLADE, header = "Spectral blade") + notify_ghosts( + "[user] is raising [user.p_their()] [name], calling for your help!", + action = NOTIFY_ORBIT, + source = user, + ignore_key = POLL_IGNORE_SPECTRAL_BLADE, + header = "Spectral blade", + ) summon_cooldown = world.time + 600 diff --git a/code/modules/mob/living/basic/drone/drones_as_items.dm b/code/modules/mob/living/basic/drone/drones_as_items.dm index 12e604bd9aa..d816c9b3060 100644 --- a/code/modules/mob/living/basic/drone/drones_as_items.dm +++ b/code/modules/mob/living/basic/drone/drones_as_items.dm @@ -26,7 +26,13 @@ . = ..() var/area/area = get_area(src) if(area) - notify_ghosts("A drone shell has been created in \the [area.name].", source = src, action = NOTIFY_PLAY, flashwindow = FALSE, ignore_key = POLL_IGNORE_DRONE, notify_suiciders = FALSE) + notify_ghosts( + "A drone shell has been created in \the [area.name].", + source = src, + action = NOTIFY_PLAY, + notify_flags = (GHOST_NOTIFY_IGNORE_MAPLOAD), + ignore_key = POLL_IGNORE_DRONE, + ) /obj/effect/mob_spawn/ghost_role/drone/allow_spawn(mob/user, silent = FALSE) var/client/user_client = user.client diff --git a/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm b/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm index de0c0324f80..43108c67ef3 100644 --- a/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm +++ b/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm @@ -103,7 +103,7 @@ "All rise for [name], ascendant to the throne in \the [get_area(src)].", source = src, action = NOTIFY_ORBIT, - flashwindow = FALSE, + notify_flags = NOTIFY_CATEGORY_NOFLASH, header = "Sentient Rat Created", ) diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm index a2473ce574e..1ba926a210e 100644 --- a/code/modules/mob/living/brain/posibrain.dm +++ b/code/modules/mob/living/brain/posibrain.dm @@ -43,7 +43,15 @@ GLOBAL_VAR(posibrain_notify_cooldown) ///Notify ghosts that the posibrain is up for grabs /obj/item/mmi/posibrain/proc/ping_ghosts(msg, newlymade) if(newlymade || GLOB.posibrain_notify_cooldown <= world.time) - notify_ghosts("[name] [msg] in [get_area(src)]! [ask_role ? "Personality requested: \[[ask_role]\]" : ""]", ghost_sound = !newlymade ? 'sound/effects/ghost2.ogg':null, notify_volume = 75, source = src, action = NOTIFY_PLAY, flashwindow = FALSE, ignore_key = POLL_IGNORE_POSIBRAIN, notify_suiciders = FALSE) + notify_ghosts( + "[name] [msg] in [get_area(src)]! [ask_role ? "Personality requested: \[[ask_role]\]" : ""]", + ghost_sound = !newlymade ? 'sound/effects/ghost2.ogg':null, + notify_volume = 75, + source = src, + action = NOTIFY_PLAY, + notify_flags = (GHOST_NOTIFY_IGNORE_MAPLOAD), + ignore_key = POLL_IGNORE_POSIBRAIN, + ) if(!newlymade) GLOB.posibrain_notify_cooldown = world.time + ask_delay diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index 4d08a29740b..9abc10c86b4 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -512,7 +512,13 @@ if(..() && !ready_to_deploy) SSpoints_of_interest.make_point_of_interest(src) ready_to_deploy = TRUE - notify_ghosts("An anomalous crystal has been activated in [get_area(src)]! This crystal can always be used by ghosts hereafter.", ghost_sound = 'sound/effects/ghost2.ogg', source = src, action = NOTIFY_PLAY, header = "Anomalous crystal activated") + notify_ghosts( + "An anomalous crystal has been activated in [get_area(src)]! This crystal can always be used by ghosts hereafter.", + ghost_sound = 'sound/effects/ghost2.ogg', + source = src, + action = NOTIFY_PLAY, + header = "Anomalous crystal activated", + ) /obj/machinery/anomalous_crystal/helpers/attack_ghost(mob/dead/observer/user) . = ..() diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm index 00e5d1f7a15..798fd51d692 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm @@ -212,7 +212,13 @@ While using this makes the system rely on OnFire, it still gives options for tim if(boosted) mychild.key = elitemind.key mychild.sentience_act() - notify_ghosts("\A [mychild] has been awakened in \the [get_area(src)]!", source = mychild, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "Lavaland Elite awakened") + notify_ghosts( + "\A [mychild] has been awakened in \the [get_area(src)]!", + source = mychild, + action = NOTIFY_ORBIT, + notify_flags = NOTIFY_CATEGORY_NOFLASH, + header = "Lavaland Elite awakened", + ) mychild.log_message("has been awakened by [key_name(activator)]!", LOG_GAME, color="#960000") icon_state = "tumor_popped" RegisterSignal(mychild, COMSIG_QDELETING, PROC_REF(onEliteLoss)) @@ -226,7 +232,13 @@ While using this makes the system rely on OnFire, it still gives options for tim if(boosted) mychild.maxHealth = mychild.maxHealth * 2 mychild.health = mychild.maxHealth - notify_ghosts("\A [mychild] has been challenged in \the [get_area(src)]!", source = mychild, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "Lavaland Elite challenged") + notify_ghosts( + "\A [mychild] has been challenged in \the [get_area(src)]!", + source = mychild, + action = NOTIFY_ORBIT, + notify_flags = NOTIFY_CATEGORY_NOFLASH, + header = "Lavaland Elite challenged", + ) mychild.log_message("has been challenged by [key_name(activator)]!", LOG_GAME, color="#960000") /obj/structure/elite_tumor/Initialize(mapload) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 4e76848eb90..7e8af46f1cb 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -251,10 +251,8 @@ * * source The source of the notification * * alert_overlay The alert overlay to show in the alert message * * action What action to take upon the ghost interacting with the notification, defaults to NOTIFY_JUMP - * * flashwindow Flash the byond client window * * ignore_key Ignore keys if they're in the GLOB.poll_ignore list * * header The header of the notifiaction - * * notify_suiciders If it should notify suiciders (who do not qualify for many ghost roles) * * notify_volume How loud the sound should be to spook the user */ /proc/notify_ghosts( @@ -264,24 +262,22 @@ atom/source, mutable_appearance/alert_overlay, action = NOTIFY_JUMP, - flashwindow = TRUE, - ignore_mapload = TRUE, + notify_flags = NOTIFY_CATEGORY_DEFAULT, ignore_key, header = "", - notify_suiciders = TRUE, notify_volume = 100 ) - if(ignore_mapload && SSatoms.initialized != INITIALIZATION_INNEW_REGULAR) //don't notify for objects created during a map load + if(notify_flags & GHOST_NOTIFY_IGNORE_MAPLOAD && SSatoms.initialized != INITIALIZATION_INNEW_REGULAR) //don't notify for objects created during a map load return for(var/mob/dead/observer/ghost in GLOB.player_list) - if(!notify_suiciders && HAS_TRAIT(ghost, TRAIT_SUICIDED)) + if(!(notify_flags & GHOST_NOTIFY_NOTIFY_SUICIDERS) && HAS_TRAIT(ghost, TRAIT_SUICIDED)) continue if(ignore_key && (ghost.ckey in GLOB.poll_ignore[ignore_key])) continue - if(flashwindow) + if(notify_flags & GHOST_NOTIFY_FLASH_WINDOW) window_flash(ghost.client) if(ghost_sound) @@ -302,7 +298,7 @@ new_master = source, ) toast.action = action - toast.desc = "Click to [action]." + toast.desc = "[message] -- Click to [action]." toast.name = header toast.target = source diff --git a/code/modules/mob_spawn/ghost_roles/golem_roles.dm b/code/modules/mob_spawn/ghost_roles/golem_roles.dm index 9c2f344bf4b..1fa23698e4a 100644 --- a/code/modules/mob_spawn/ghost_roles/golem_roles.dm +++ b/code/modules/mob_spawn/ghost_roles/golem_roles.dm @@ -23,7 +23,13 @@ . = ..() var/area/init_area = get_area(src) if(!mapload && init_area) - notify_ghosts("\A golem shell has been completed in \the [init_area.name].", source = src, action = NOTIFY_PLAY, flashwindow = FALSE, ignore_key = POLL_IGNORE_GOLEM) + notify_ghosts( + "\A golem shell has been completed in \the [init_area.name].", + source = src, + action = NOTIFY_PLAY, + notify_flags = NOTIFY_CATEGORY_NOFLASH, + ignore_key = POLL_IGNORE_GOLEM, + ) /obj/effect/mob_spawn/ghost_role/human/golem/name_mob(mob/living/spawned_mob, forced_name) if(forced_name || !iscarbon(spawned_mob)) diff --git a/code/modules/mob_spawn/ghost_roles/mining_roles.dm b/code/modules/mob_spawn/ghost_roles/mining_roles.dm index 4eb5aafc17f..2c654870576 100644 --- a/code/modules/mob_spawn/ghost_roles/mining_roles.dm +++ b/code/modules/mob_spawn/ghost_roles/mining_roles.dm @@ -266,7 +266,13 @@ eggshell.egg = src src.forceMove(eggshell) if(spawner_area) - notify_ghosts("An ash walker egg is ready to hatch in \the [spawner_area.name].", source = src, action = NOTIFY_PLAY, flashwindow = FALSE, ignore_key = POLL_IGNORE_ASHWALKER) + notify_ghosts( + "An ash walker egg is ready to hatch in \the [spawner_area.name].", + source = src, + action = NOTIFY_PLAY, + notify_flags = NOTIFY_CATEGORY_NOFLASH, + ignore_key = POLL_IGNORE_ASHWALKER, + ) /datum/outfit/ashwalker name = "Ash Walker" diff --git a/code/modules/mob_spawn/ghost_roles/spider_roles.dm b/code/modules/mob_spawn/ghost_roles/spider_roles.dm index e6197df2d71..4dada2a2468 100644 --- a/code/modules/mob_spawn/ghost_roles/spider_roles.dm +++ b/code/modules/mob_spawn/ghost_roles/spider_roles.dm @@ -107,7 +107,16 @@ amount_grown += rand(5, 15) * seconds_per_tick if(amount_grown >= 100 && !ready) ready = TRUE - notify_ghosts("[src] is ready to hatch!", null, enter_link = "(Click to play)", source = src, action = NOTIFY_ORBIT, ignore_key = POLL_IGNORE_SPIDER, flashwindow = flash_window) + var/notify_flags_to_pass = NOTIFY_CATEGORY_NOFLASH + if(flash_window) + notify_flags_to_pass &= GHOST_NOTIFY_FLASH_WINDOW + notify_ghosts( + "[src] is ready to hatch!", + source = src, + action = NOTIFY_PLAY, + ignore_key = POLL_IGNORE_SPIDER, + notify_flags = notify_flags_to_pass, + ) STOP_PROCESSING(SSobj, src) /obj/effect/mob_spawn/ghost_role/spider/Topic(href, href_list) diff --git a/code/modules/mob_spawn/ghost_roles/venus_human_trap.dm b/code/modules/mob_spawn/ghost_roles/venus_human_trap.dm index 254cfcfbdab..1a1fd623e0d 100644 --- a/code/modules/mob_spawn/ghost_roles/venus_human_trap.dm +++ b/code/modules/mob_spawn/ghost_roles/venus_human_trap.dm @@ -33,7 +33,12 @@ /// Called when the attached flower bud has borne fruit (ie. is ready) /obj/effect/mob_spawn/ghost_role/venus_human_trap/proc/bear_fruit() ready = TRUE - notify_ghosts("[src] has borne fruit!", source = src, action = NOTIFY_PLAY, ignore_key = POLL_IGNORE_VENUSHUMANTRAP) + notify_ghosts( + "[src] has borne fruit!", + source = src, + action = NOTIFY_PLAY, + ignore_key = POLL_IGNORE_VENUSHUMANTRAP, + ) /obj/effect/mob_spawn/ghost_role/venus_human_trap/allow_spawn(mob/user, silent = FALSE) . = ..() diff --git a/code/modules/pai/card.dm b/code/modules/pai/card.dm index a652b745c9e..086e188b431 100644 --- a/code/modules/pai/card.dm +++ b/code/modules/pai/card.dm @@ -234,7 +234,17 @@ playsound(src, 'sound/machines/ping.ogg', 20, TRUE) balloon_alert(user, "pAI assistance requested") var/mutable_appearance/alert_overlay = mutable_appearance('icons/obj/aicards.dmi', "pai") - notify_ghosts("[user] is requesting a pAI companion! Use the pAI button to submit yourself as one.", source = user, alert_overlay = alert_overlay, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "pAI Request!", ignore_key = POLL_IGNORE_PAI) + + notify_ghosts( + "[user] is requesting a pAI companion! Use the pAI button to submit yourself as one.", + source = user, + alert_overlay = alert_overlay, + action = NOTIFY_ORBIT, + notify_flags = NOTIFY_CATEGORY_NOFLASH, + header = "pAI Request!", + ignore_key = POLL_IGNORE_PAI, + ) + addtimer(VARSET_CALLBACK(src, request_spam, FALSE), PAI_SPAM_TIME, TIMER_UNIQUE | TIMER_STOPPABLE | TIMER_CLIENT_TIME | TIMER_DELETE_ME) return TRUE diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm index 16e380f8e01..e31162005fa 100644 --- a/code/modules/power/singularity/narsie.dm +++ b/code/modules/power/singularity/narsie.dm @@ -58,7 +58,13 @@ var/area/area = get_area(src) if(area) var/mutable_appearance/alert_overlay = mutable_appearance('icons/effects/cult/effects.dmi', "ghostalertsie") - notify_ghosts("Nar'Sie has risen in [area]. Reach out to the Geometer to be given a new shell for your soul.", source = src, alert_overlay = alert_overlay, action = NOTIFY_PLAY) + notify_ghosts( + "Nar'Sie has risen in [area]. Reach out to the Geometer to be given a new shell for your soul.", + source = src, + alert_overlay = alert_overlay, + action = NOTIFY_PLAY, + ) + narsie_spawn_animation() GLOB.cult_narsie = src diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 44d318d3467..fc2836a4e6d 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -80,10 +80,10 @@ ghost_notification_message, source = src, action = NOTIFY_ORBIT, - flashwindow = FALSE, + notify_flags = NOTIFY_CATEGORY_DEFAULT, ghost_sound = 'sound/machines/warning-buzzer.ogg', header = ghost_notification_message, - notify_volume = 75 + notify_volume = 75, ) diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 3f02447ddbc..38e692ef499 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -535,7 +535,12 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) final_countdown = TRUE SEND_GLOBAL_SIGNAL(COMSIG_MAIN_SM_DELAMINATING, final_countdown) // SKYRAT EDIT ADDITION - DELAM_SCRAM - notify_ghosts("[src] has begun the delamination process!", source = src, header = "Meltdown Incoming") + notify_ghosts( + "[src] has begun the delamination process!", + source = src, + header = "Meltdown Incoming", + notify_flags = NOTIFY_CATEGORY_DEFAULT, + ) var/datum/sm_delam/last_delamination_strategy = delamination_strategy var/list/count_down_messages = delamination_strategy.count_down_messages() diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index 4db8e626bda..582ee474f4d 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -26,7 +26,13 @@ message_admins("A pulse rifle prize has been created at [ADMIN_VERBOSEJMP(T)]") log_game("A pulse rifle prize has been created at [AREACOORD(T)]") - notify_ghosts("Someone won a pulse rifle as a prize!", source = src, action = NOTIFY_ORBIT, header = "Pulse rifle prize") + notify_ghosts( + "Someone won a pulse rifle as a prize!", + source = src, + action = NOTIFY_ORBIT, + header = "Pulse rifle prize", + notify_flags = NOTIFY_CATEGORY_DEFAULT, + ) /obj/item/gun/energy/pulse/loyalpin pin = /obj/item/firing_pin/implant/mindshield diff --git a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm index b944fdbee80..c3e15747864 100644 --- a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm @@ -45,7 +45,13 @@ . = UPDATE_MOB_HEALTH if(good_kind_of_healing && !reaping && SPT_PROB(0.00005, seconds_per_tick)) //janken with the grim reaper! - notify_ghosts("[affected_mob] has entered a game of rock-paper-scissors with death!", source = affected_mob, action = NOTIFY_ORBIT, header = "Who Will Win?") + notify_ghosts( + "[affected_mob] has entered a game of rock-paper-scissors with death!", + source = affected_mob, + action = NOTIFY_ORBIT, + header = "Who Will Win?", + notify_flags = NOTIFY_CATEGORY_DEFAULT, + ) reaping = TRUE if(affected_mob.apply_status_effect(/datum/status_effect/necropolis_curse, CURSE_BLINDING)) helbent = TRUE diff --git a/code/modules/shuttle/battlecruiser_starfury.dm b/code/modules/shuttle/battlecruiser_starfury.dm index ab1f6802d43..054de00504e 100644 --- a/code/modules/shuttle/battlecruiser_starfury.dm +++ b/code/modules/shuttle/battlecruiser_starfury.dm @@ -172,14 +172,14 @@ "The battlecruiser has an object of interest: [our_candidate]!", source = our_candidate, action = NOTIFY_ORBIT, - header = "Something's Interesting!" - ) + header = "Something's Interesting!", + ) else notify_ghosts( "The battlecruiser has an object of interest: [spawner]!", source = spawner, action = NOTIFY_ORBIT, - header="Something's Interesting!" - ) + header="Something's Interesting!", + ) priority_announce("Unidentified armed ship detected near the station.") diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index ec29b326ae9..5795effc2b6 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -243,7 +243,12 @@ GLOBAL_VAR_INIT(bsa_unlock, FALSE) point.Beam(target, icon_state = "bsa_beam", time = 5 SECONDS, maxdistance = world.maxx) //ZZZAP new /obj/effect/temp_visual/bsa_splash(point, dir) - notify_ghosts("The Bluespace Artillery has been fired!", source = bullseye, header = "KABOOM!") + notify_ghosts( + "The Bluespace Artillery has been fired!", + source = bullseye, + header = "KABOOM!", + ) + if(!blocker) message_admins("[ADMIN_LOOKUPFLW(user)] has launched an artillery strike targeting [ADMIN_VERBOSEJMP(bullseye)].") user.log_message("has launched an artillery strike targeting [AREACOORD(bullseye)].", LOG_GAME) diff --git a/code/modules/surgery/organs/internal/appendix/_appendix.dm b/code/modules/surgery/organs/internal/appendix/_appendix.dm index bb02c8b9ef9..43a6bfb7a41 100644 --- a/code/modules/surgery/organs/internal/appendix/_appendix.dm +++ b/code/modules/surgery/organs/internal/appendix/_appendix.dm @@ -46,7 +46,12 @@ if(owner) ADD_TRAIT(owner, TRAIT_DISEASELIKE_SEVERITY_MEDIUM, type) owner.med_hud_set_status() - notify_ghosts("[owner] has developed spontaneous appendicitis!", source = owner, action = NOTIFY_ORBIT, header = "Whoa, Sick!") + notify_ghosts( + "[owner] has developed spontaneous appendicitis!", + source = owner, + action = NOTIFY_ORBIT, + header = "Whoa, Sick!", + ) /obj/item/organ/internal/appendix/proc/inflamation(seconds_per_tick) var/mob/living/carbon/organ_owner = owner diff --git a/code/modules/uplink/uplink_items/badass.dm b/code/modules/uplink/uplink_items/badass.dm index 67676edcd7d..458747a2a7b 100644 --- a/code/modules/uplink/uplink_items/badass.dm +++ b/code/modules/uplink/uplink_items/badass.dm @@ -22,7 +22,12 @@ if(!.) return - notify_ghosts("[user] has purchased a BADASS Syndicate Balloon!", source = src, action = NOTIFY_ORBIT, header = "What are they THINKING?") + notify_ghosts( + "[user] has purchased a BADASS Syndicate Balloon!", + source = src, + action = NOTIFY_ORBIT, + header = "What are they THINKING?", + ) /datum/uplink_item/badass/syndiecards name = "Syndicate Playing Cards" diff --git a/modular_skyrat/master_files/code/modules/mob/living/simple_animal/friendly/dogs.dm b/modular_skyrat/master_files/code/modules/mob/living/simple_animal/friendly/dogs.dm index f78a481cbd4..d878d5d2b46 100644 --- a/modular_skyrat/master_files/code/modules/mob/living/simple_animal/friendly/dogs.dm +++ b/modular_skyrat/master_files/code/modules/mob/living/simple_animal/friendly/dogs.dm @@ -242,7 +242,12 @@ investigate_log("has been gibbed due to being emagged by [user].", INVESTIGATE_DEATHS) visible_message(span_boldwarning("[user] swipes a card through [target]!"), span_notice("You overload [target]s internal reactor...")) - notify_ghosts("[user] has shortcircuited [target] to explode in 60 seconds!", source = target, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "Borgi Emagged") + notify_ghosts("[user] has shortcircuited [target] to explode in 60 seconds!", + source = target, + action = NOTIFY_ORBIT, + notify_flags = NOTIFY_CATEGORY_NOFLASH, + header = "Borgi Emagged", + ) addtimer(CALLBACK(src, PROC_REF(explode_imminent)), 50 SECONDS) return TRUE diff --git a/modular_skyrat/master_files/code/modules/mob/living/simple_animal/friendly/poppy.dm b/modular_skyrat/master_files/code/modules/mob/living/simple_animal/friendly/poppy.dm index 4bf62fa12a8..4bc4c5cda4c 100644 --- a/modular_skyrat/master_files/code/modules/mob/living/simple_animal/friendly/poppy.dm +++ b/modular_skyrat/master_files/code/modules/mob/living/simple_animal/friendly/poppy.dm @@ -119,7 +119,12 @@ do_jitter_animation(60) manual_emote("'s fur stands up, [src.p_their()] body trembling...") - notify_ghosts("[src] was startled by the supermatter!", source = src, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "Safety Inspection!") + notify_ghosts("[src] was startled by the supermatter!", + source = src, + action = NOTIFY_ORBIT, + notify_flags = NOTIFY_CATEGORY_NOFLASH, + header = "Safety Inspection!", + ) addtimer(CALLBACK(src, PROC_REF(calm_down)), 60 SECONDS) /mob/living/simple_animal/pet/poppy/proc/calm_down() diff --git a/modular_skyrat/modules/SiliconQoL/code/robotic_factory.dm b/modular_skyrat/modules/SiliconQoL/code/robotic_factory.dm index 4ff1032bec1..52585f07b82 100644 --- a/modular_skyrat/modules/SiliconQoL/code/robotic_factory.dm +++ b/modular_skyrat/modules/SiliconQoL/code/robotic_factory.dm @@ -53,7 +53,12 @@ if(stored_cyborgs > max_stored_cyborgs) return stored_cyborgs++ - notify_ghosts("A new cyborg shell has been created at the [src]", source = src, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "New malfunctioning cyborg created!") + notify_ghosts("A new cyborg shell has been created at the [src]", + source = src, + action = NOTIFY_ORBIT, + notify_flags = NOTIFY_CATEGORY_NOFLASH, + header = "New malfunctioning cyborg created!", + ) /obj/machinery/transformer_rp/proc/create_a_cyborg(mob/dead/observer/target_ghost) if(machine_stat & (BROKEN|NOPOWER)) diff --git a/modular_skyrat/modules/assault_operatives/code/interrogator.dm b/modular_skyrat/modules/assault_operatives/code/interrogator.dm index 6b59191a29b..c2876e4d36e 100644 --- a/modular_skyrat/modules/assault_operatives/code/interrogator.dm +++ b/modular_skyrat/modules/assault_operatives/code/interrogator.dm @@ -196,7 +196,11 @@ for(var/datum/status_effect/goldeneye_pinpointer/iterating_pinpointer in GLOB.goldeneye_pinpointers) iterating_pinpointer.set_target(new_key) - notify_ghosts("GoldenEye key launched!", source = new_key, action = NOTIFY_ORBIT, header = "Something's Interesting!") + notify_ghosts("GoldenEye key launched!", + source = new_key, + action = NOTIFY_ORBIT, + header = "Something's Interesting!", + ) /obj/machinery/interrogator/proc/find_drop_turf() var/list/possible_turfs = list() diff --git a/modular_skyrat/modules/assault_operatives/code/sunbeam.dm b/modular_skyrat/modules/assault_operatives/code/sunbeam.dm index e05dea055ef..4bea46d1ec7 100644 --- a/modular_skyrat/modules/assault_operatives/code/sunbeam.dm +++ b/modular_skyrat/modules/assault_operatives/code/sunbeam.dm @@ -57,7 +57,11 @@ var/matrix/our_matrix = matrix() our_matrix.Scale(scale_x, scale_y) transform = our_matrix - notify_ghosts("An ICARUS sunbeam has been launched! [target_atom ? "Towards: [target_atom.name]" : ""]", source = src, action = NOTIFY_ORBIT, header = "Somethings burning!") + notify_ghosts("An ICARUS sunbeam has been launched! [target_atom ? "Towards: [target_atom.name]" : ""]", + source = src, + action = NOTIFY_ORBIT, + header = "Somethings burning!", + ) soundloop = new(src, TRUE) /obj/effect/sunbeam/Destroy(force) diff --git a/modular_skyrat/modules/clock_cult/code/items/integration_cog.dm b/modular_skyrat/modules/clock_cult/code/items/integration_cog.dm index 9fa27cddafd..a906f8a3b50 100644 --- a/modular_skyrat/modules/clock_cult/code/items/integration_cog.dm +++ b/modular_skyrat/modules/clock_cult/code/items/integration_cog.dm @@ -47,7 +47,12 @@ addtimer(CALLBACK(src, PROC_REF(finish_setup), cogger_apc), SET_UP_TIME) send_clock_message(null, span_brass(span_bold("[user] has installed an integration cog into [cogger_apc].")), msg_ghosts = FALSE) - notify_ghosts("[user] has installed an integration cog into [cogger_apc]", source = user, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "Integration cog") + notify_ghosts("[user] has installed an integration cog into [cogger_apc]", + source = user, + action = NOTIFY_ORBIT, + notify_flags = NOTIFY_CATEGORY_NOFLASH, + header = "Integration cog", + ) /// Finish setting up the cog 5 minutes after insertion diff --git a/modular_skyrat/modules/clock_cult/code/outpost_of_cogs.dm b/modular_skyrat/modules/clock_cult/code/outpost_of_cogs.dm index 09a45e67d79..a5b0439908c 100644 --- a/modular_skyrat/modules/clock_cult/code/outpost_of_cogs.dm +++ b/modular_skyrat/modules/clock_cult/code/outpost_of_cogs.dm @@ -43,7 +43,12 @@ atom_area = get_area(atom_turf) send_clock_message(null, "A portal has been opened at [atom_area] to our holy city, it is a glorious day in the name of Ratvar.", "", msg_ghosts = FALSE) - notify_ghosts("A portal has been opened at [atom_area] to our holy city, it is a glorious day in the name of Ratvar.", source = atom_area, action = NOTIFY_JUMP, flashwindow = FALSE, header = "Portal to Reebe") + notify_ghosts("A portal has been opened at [atom_area] to our holy city, it is a glorious day in the name of Ratvar.", + source = atom_area, + action = NOTIFY_JUMP, + notify_flags = NOTIFY_CATEGORY_NOFLASH, + header = "Portal to Reebe", + ) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(reebe_station_warning), atom_area, portal), 5 MINUTES) diff --git a/modular_skyrat/modules/clock_cult/code/structures/technologists_lectern.dm b/modular_skyrat/modules/clock_cult/code/structures/technologists_lectern.dm index 01ce5c1a309..676ec9de62e 100644 --- a/modular_skyrat/modules/clock_cult/code/structures/technologists_lectern.dm +++ b/modular_skyrat/modules/clock_cult/code/structures/technologists_lectern.dm @@ -65,8 +65,12 @@ primary_researcher = FALSE log_game("A research ritual of [selected_research] was cancelled by deconstruction of [src].") send_clock_message(null, "A research ritual has been disrupted in [get_area(src)]! All research data has been lost.", msg_ghosts = FALSE) - notify_ghosts("A research ritual was disrupted in [get_area(src)]", source = get_turf(src), action = NOTIFY_ORBIT, flashwindow = FALSE, header = "Research ritual cancelled") - + notify_ghosts("A research ritual was disrupted in [get_area(src)]", + source = get_turf(src), + action = NOTIFY_ORBIT, + notify_flags = NOTIFY_CATEGORY_NOFLASH, + header = "Research ritual cancelled", + ) return ..() @@ -295,7 +299,12 @@ playsound(target_turf, 'modular_skyrat/modules/clock_cult/sound/machinery/ark_deathrattle.ogg', 80, FALSE, pressure_affected = FALSE) research_sigil = new(target_turf) send_clock_message(null, "A research ritual has begun in [get_area(src)], ensure nobody stops it until it is completed in [DisplayTimeText(selected_research.time_to_research)]!", msg_ghosts = FALSE) - notify_ghosts("[owner] has begun a research ritual in [get_area(src)]", source = src, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "Research ritual") + notify_ghosts("[owner] has begun a research ritual in [get_area(src)]", + source = src, + action = NOTIFY_ORBIT, + notify_flags = NOTIFY_CATEGORY_NOFLASH, + header = "Research ritual" + ) log_game("[owner] began a research ritual of [selected_research.name] in [get_area(src)].") research_timer_id = addtimer(CALLBACK(src, PROC_REF(finish_research), owner), selected_research.time_to_research, TIMER_STOPPABLE) @@ -337,7 +346,12 @@ return send_clock_message(null, "The research ritual in [get_area(src)] has completed, rejoice!", msg_ghosts = FALSE) - notify_ghosts("A research ritual in [get_area(src)] has been completed", source = src, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "Research ritual completed") + notify_ghosts("A research ritual in [get_area(src)] has been completed", + source = src, + action = NOTIFY_ORBIT, + notify_flags = NOTIFY_CATEGORY_NOFLASH, + header = "Research ritual completed", + ) log_game("Finished a research ritual of [selected_research.name] in [get_area(src)].") researching = FALSE diff --git a/modular_skyrat/modules/cortical_borer/code/cortical_borer_egg.dm b/modular_skyrat/modules/cortical_borer/code/cortical_borer_egg.dm index 29829dac8b0..49af4f3a5ba 100644 --- a/modular_skyrat/modules/cortical_borer/code/cortical_borer_egg.dm +++ b/modular_skyrat/modules/cortical_borer/code/cortical_borer_egg.dm @@ -41,7 +41,12 @@ forceMove(host_egg) var/area/src_area = get_area(src) if(src_area) - notify_ghosts("A cortical borer egg has been laid in \the [src_area.name].", source = src, action = NOTIFY_PLAY, flashwindow = FALSE, ignore_key = POLL_IGNORE_DRONE, notify_suiciders = FALSE) + notify_ghosts("A cortical borer egg has been laid in \the [src_area.name].", + source = src, + action = NOTIFY_PLAY, + notify_flags = NOTIFY_CATEGORY_NOFLASH & ~GHOST_NOTIFY_NOTIFY_SUICIDERS, + ignore_key = POLL_IGNORE_DRONE, + ) /obj/item/borer_egg name = "borer egg" diff --git a/modular_skyrat/modules/mutants/code/mutant_event.dm b/modular_skyrat/modules/mutants/code/mutant_event.dm index d6b191a7e1e..bc2327a2097 100644 --- a/modular_skyrat/modules/mutants/code/mutant_event.dm +++ b/modular_skyrat/modules/mutants/code/mutant_event.dm @@ -24,7 +24,9 @@ break if(try_to_mutant_infect(iterating_human, TRUE)) infectees++ - notify_ghosts("[iterating_human] has been infected by the HNZ-1 pathogen!", source = iterating_human) + notify_ghosts("[iterating_human] has been infected by the HNZ-1 pathogen!", + source = iterating_human, + ) /datum/round_event/mutant_infestation/announce(fake) alert_sound_to_playing(sound('modular_skyrat/modules/alerts/sound/alerts/alert2.ogg'), override_volume = TRUE) diff --git a/tgstation.dme b/tgstation.dme index 90182cbf0a1..853f03c49ac 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -156,6 +156,7 @@ #include "code\__DEFINES\nitrile.dm" #include "code\__DEFINES\nuclear_bomb.dm" #include "code\__DEFINES\obj_flags.dm" +#include "code\__DEFINES\observers.dm" #include "code\__DEFINES\overlays.dm" #include "code\__DEFINES\pai.dm" #include "code\__DEFINES\paintings.dm"