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"