From fc1471c8187d3f2a49d75a8a5c3e1b610fec45d3 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Fri, 5 May 2023 23:34:05 +0100 Subject: [PATCH] [MIRROR] Deadchat Announcement Variety Pack 1 [MDB IGNORE] (#20957) * Deadchat Announcement Variety Pack 1 (#75140) ## About The Pull Request Adds announce_to_ghosts()/notify_ghosts() calls to a bunch of different things. **THIS INCLUDES:** - Powersink being activated/reaching critical (explosion) heat capacity. - His Grace being awoken. - Hot Potatoes being armed. - Ascension Rituals being completed. - Eyesnatcher victims. - Ovens exploding as a result of the Aurora Caelus event. - Wizard Imposter spawns. - Rock-Paper-Scissors with death as the result of Helbital consumption. - BSA impact sites. - Spontaneous Appendicitis. - The purchasing of a badass syndie balloon. - The Supermatter beginning to delaminate. This was everything that I could think of that would be worth announcing to deadchat. These were all chosen with consideration to questions like "how easy would it be to spam deadchat with this?" and "will observers actually see the interesting thing happen, or just the aftermath?". Not gonna lie, I've really become an observer main as of recently. Maybe that's being reflected in my recent PRs. Who's to say? Deadchat Announcement Variety Pack 2 will probably never come out. Sorry. ## Why It's Good For The Game Gives deadchat a better indiciation of when/where something **REALLY FUNNY** is about to happen. Draws attention to certain things that are likely to gather an audience anyways, but sooner (for your viewing pleasure). In simple terms, it helps the observers observe things better. Some cases, such as the aurora caelus or helbitaljanken, are occurrences so rare that they deserve the audience. ## Changelog :cl: Rhials qol: Observers now recieve an alert when a powersink is activated/about to explode. qol: His Grace being awoken now alerts observers, to give you a headstart on your murderbone ghost ring. qol: Ascension Rituals being completed will also alert observers, for basically the same reason. qol: Arming a hot potato will now alert observers. Catch! qol: Eyesnatcher victims will now notify observers, and invite them to laugh at their state of misery and impotence. qol: Observers will be notified of any acute references to The Simpsons or other 20th Television America copyright properties. qol: Wizard Imposter spawns alert observers, much like any other ghost role event should. qol: Playing Rock-Paper-Scissors with death will now alert the observers and invite them to watch. Better not choke! qol: Observers now get an orbit link for BSA impact sites. Why does it keep teleporting me to the AI upload?? qol: Spontaneous Appendicitis now alerts deadchat. qol: The purchasing of a badass syndie balloon now alerts deadchat. You might not be any more powerful, but at least you have an audience. qol: When beginning to delaminate, the Supermatter will alert observers and invite them to watch the fireworks. /:cl: * Deadchat Announcement Variety Pack 1 --------- Co-authored-by: Rhials --- code/game/objects/items/devices/powersink.dm | 12 +++++++----- code/game/objects/items/his_grace.dm | 1 + code/game/objects/items/hot_potato.dm | 1 + .../modules/antagonists/heretic/heretic_knowledge.dm | 1 + .../antagonists/traitor/objectives/eyesnatching.dm | 1 + code/modules/events/aurora_caelus.dm | 1 + code/modules/events/wizard/imposter.dm | 1 + code/modules/power/supermatter/supermatter.dm | 2 ++ .../chemistry/reagents/cat2_medicine_reagents.dm | 1 + code/modules/station_goals/bsa.dm | 1 + code/modules/surgery/organs/appendix.dm | 1 + code/modules/uplink/uplink_items/badass.dm | 8 ++++++++ 12 files changed, 26 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index 51ab6ec94f5..fdccd87e0f5 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -26,7 +26,7 @@ var/max_heat = 5e7 // Maximum contained heat before exploding. Not actual temperature. var/internal_heat = 0 // Contained heat, goes down every tick. var/mode = DISCONNECTED // DISCONNECTED, CLAMPED_OFF, OPERATING - var/admins_warned = FALSE // Stop spam, only warn the admins once that we are about to boom. + var/warning_given = FALSE //! Stop warning spam, only warn the admins/deadchat once that we are about to boom. var/obj/structure/cable/attached @@ -124,6 +124,7 @@ 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!") set_mode(OPERATING) if(OPERATING) @@ -144,8 +145,8 @@ if(delta_temperature) environment.temperature += delta_temperature air_update_turf(FALSE, FALSE) - if(admins_warned && internal_heat < max_heat * 0.75) - admins_warned = FALSE + if(warning_given && internal_heat < max_heat * 0.75) + warning_given = FALSE message_admins("Power sink at ([x],[y],[z] - JMP) has cooled down and will not explode.") if(mode != OPERATING && internal_heat < MINIMUM_HEAT) internal_heat = 0 @@ -184,9 +185,10 @@ drain_power() if(internal_heat > max_heat * ALERT / 100) - if (!admins_warned) - admins_warned = TRUE + 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") playsound(src, 'sound/effects/screech.ogg', 100, TRUE, TRUE) if(internal_heat >= max_heat) diff --git a/code/game/objects/items/his_grace.dm b/code/game/objects/items/his_grace.dm index 861d082a356..a9555e6a1bb 100644 --- a/code/game/objects/items/his_grace.dm +++ b/code/game/objects/items/his_grace.dm @@ -149,6 +149,7 @@ 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!") 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 86058a823be..04738931e3a 100644 --- a/code/game/objects/items/hot_potato.dm +++ b/code/game/objects/items/hot_potato.dm @@ -149,6 +149,7 @@ else 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 + 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/modules/antagonists/heretic/heretic_knowledge.dm b/code/modules/antagonists/heretic/heretic_knowledge.dm index 5d9675e1ac9..8ce88784d78 100644 --- a/code/modules/antagonists/heretic/heretic_knowledge.dm +++ b/code/modules/antagonists/heretic/heretic_knowledge.dm @@ -703,6 +703,7 @@ 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!") return TRUE /datum/heretic_knowledge/ultimate/cleanup_atoms(list/selected_atoms) diff --git a/code/modules/antagonists/traitor/objectives/eyesnatching.dm b/code/modules/antagonists/traitor/objectives/eyesnatching.dm index d4558420b1d..b20cb06bd2c 100644 --- a/code/modules/antagonists/traitor/objectives/eyesnatching.dm +++ b/code/modules/antagonists/traitor/objectives/eyesnatching.dm @@ -205,6 +205,7 @@ 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!") target.emote("scream") if(prob(20)) target.emote("cry") diff --git a/code/modules/events/aurora_caelus.dm b/code/modules/events/aurora_caelus.dm index 682525d835a..330779c7a6e 100644 --- a/code/modules/events/aurora_caelus.dm +++ b/code/modules/events/aurora_caelus.dm @@ -45,6 +45,7 @@ ruined_roast.atmos_spawn_air("plasma=100;TEMP=1000") message_admins("Aurora Caelus event caused an oven to ignite at [ADMIN_VERBOSEJMP(ruined_roast)].") log_game("Aurora Caelus event caused an oven to ignite at [loc_name(ruined_roast)].") + announce_to_ghosts(roast_ruiner) for(var/mob/living/carbon/human/seymour as anything in GLOB.human_list) if(seymour.mind && istype(seymour.mind.assigned_role, /datum/job/cook)) seymour.say("My roast is ruined!!!", forced = "ruined roast") diff --git a/code/modules/events/wizard/imposter.dm b/code/modules/events/wizard/imposter.dm index 036785def2f..4a927c052ed 100644 --- a/code/modules/events/wizard/imposter.dm +++ b/code/modules/events/wizard/imposter.dm @@ -38,3 +38,4 @@ I.mind.special_role = "imposter" I.log_message("is an imposter!", LOG_ATTACK, color="red") //? SEND_SOUND(I, sound('sound/effects/magic.ogg')) + announce_to_ghosts(I) diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index dd8a3ab5b77..055b44d4f53 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -480,6 +480,8 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) final_countdown = TRUE + notify_ghosts("[src] has begun the delamination process!", source = src, header = "Meltdown Incoming") + var/datum/sm_delam/last_delamination_strategy = delamination_strategy var/list/count_down_messages = delamination_strategy.count_down_messages() diff --git a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm index fd9bddc00f8..b9948c60056 100644 --- a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm @@ -44,6 +44,7 @@ affected_mob.adjustBruteLoss(-thou_shall_heal * REM * seconds_per_tick, FALSE, required_bodytype = affected_bodytype) 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?") reaping = TRUE var/list/RockPaperScissors = list("rock" = "paper", "paper" = "scissors", "scissors" = "rock") //choice = loses to if(affected_mob.apply_status_effect(/datum/status_effect/necropolis_curse, CURSE_BLINDING)) diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index 865997a685b..338ad195f9c 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -243,6 +243,7 @@ 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!") 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/appendix.dm b/code/modules/surgery/organs/appendix.dm index 10b190060bf..8a0f04be1f2 100644 --- a/code/modules/surgery/organs/appendix.dm +++ b/code/modules/surgery/organs/appendix.dm @@ -47,6 +47,7 @@ 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!") /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 1fb7fab4964..2469fe22104 100644 --- a/code/modules/uplink/uplink_items/badass.dm +++ b/code/modules/uplink/uplink_items/badass.dm @@ -16,6 +16,14 @@ cant_discount = TRUE illegal_tech = FALSE +/datum/uplink_item/badass/balloon/spawn_item(spawn_path, mob/user, datum/uplink_handler/uplink_handler, atom/movable/source) + . = ..() + + if(!.) + return + + 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" desc = "A special deck of space-grade playing cards with a mono-molecular edge and metal reinforcement, \