Upstream fix mirror spree (#7362)
* tgstation/tgstation#39025 - Fixes nukeop eshield not being buyable * tgstation/tgstation#39011 - [s] Adds missing logging to the staff of storms * tgstation/tgstation#38980 - Corrects a stat error in the Nuke Ops uplink * tgstation/tgstation#38988 - Fixes blob victory. * tgstation/tgstation#38990 - Allow players to un-ignore previously ignored popups for ghostroles, and ignore notifications with no ignore button needs tgui recompile * tgstation/tgstation#38994 - Fix timer bug * TGUI recompile * tgstation/tgstation#39035 - Fixes navigation computers. * tgstation/tgstation#39043 - Fixes minor genetics scanner runtime * tgstation/tgstation#39044 - Fixes burgers icons * tgstation/tgstation#39055 - Fixes porta_turret and decal shuttle rotations * tgstation/tgstation#39063 - Stops extinguishers from cooling turfs to absolute zero * tgstation/tgstation#38967 - Fixes smuggler's satchel init typo * tgstation/tgstation#38931 - Fixes pulse rifles exploding structures in nullspace and that sort of thing
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
/mob/dead/observer/verb/show_notificationprefs()
|
||||
set category = "Ghost"
|
||||
set name = "Notification preferences"
|
||||
set desc = "Notification preferences"
|
||||
|
||||
var/datum/notificationpanel/panel = new(usr)
|
||||
|
||||
panel.ui_interact(usr)
|
||||
|
||||
|
||||
|
||||
/datum/notificationpanel
|
||||
var/client/user
|
||||
|
||||
/datum/notificationpanel/New(user)
|
||||
if (ismob(user))
|
||||
var/mob/M = user
|
||||
if (!M.client)
|
||||
CRASH("Ghost role notification panel attempted to open to a mob without a client")
|
||||
src.user = M.client
|
||||
else
|
||||
src.user = user
|
||||
|
||||
/datum/notificationpanel/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.observer_state)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "notificationpanel", "Notification Preferences", 700, 700, master_ui, state)
|
||||
ui.open()
|
||||
|
||||
/datum/notificationpanel/ui_data(mob/user)
|
||||
. = list()
|
||||
.["ignore"] = list()
|
||||
for(var/key in GLOB.poll_ignore_desc)
|
||||
.["ignore"] += list(list(
|
||||
"key" = key,
|
||||
"enabled" = (user.ckey in GLOB.poll_ignore[key]),
|
||||
"desc" = GLOB.poll_ignore_desc[key]
|
||||
))
|
||||
|
||||
|
||||
/datum/notificationpanel/ui_act(action, params)
|
||||
if(..())
|
||||
return
|
||||
switch (action)
|
||||
if ("toggle_ignore")
|
||||
var/key = params["key"]
|
||||
if (key && islist(GLOB.poll_ignore[key]))
|
||||
GLOB.poll_ignore[key] ^= list(user.ckey)
|
||||
. = TRUE
|
||||
@@ -36,7 +36,7 @@ GLOBAL_VAR(posibrain_notify_cooldown)
|
||||
|
||||
/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)]!", ghost_sound = !newlymade ? 'sound/effects/ghost2.ogg':null, enter_link = "<a href=?src=[REF(src)];activate=1>(Click to enter)</a>", source = src, action = NOTIFY_ATTACK, flashwindow = FALSE)
|
||||
notify_ghosts("[name] [msg] in [get_area(src)]!", ghost_sound = !newlymade ? 'sound/effects/ghost2.ogg':null, enter_link = "<a href=?src=[REF(src)];activate=1>(Click to enter)</a>", source = src, action = NOTIFY_ATTACK, flashwindow = FALSE, ignore_key = POLL_IGNORE_POSIBRAIN)
|
||||
if(!newlymade)
|
||||
GLOB.posibrain_notify_cooldown = world.time + askDelay
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
. = ..()
|
||||
var/area/A = get_area(src)
|
||||
if(A)
|
||||
notify_ghosts("A drone shell has been created in \the [A.name].", source = src, action=NOTIFY_ATTACK, flashwindow = FALSE)
|
||||
notify_ghosts("A drone shell has been created in \the [A.name].", source = src, action=NOTIFY_ATTACK, flashwindow = FALSE, ignore_key = POLL_IGNORE_DRONE)
|
||||
GLOB.poi_list |= src
|
||||
if(isnull(possible_seasonal_hats))
|
||||
build_seasonal_hats()
|
||||
|
||||
@@ -188,10 +188,14 @@ Difficulty: Medium
|
||||
"<span class='notice'>You hold [src] skyward, dispelling the storm!</span>")
|
||||
playsound(user, 'sound/magic/staff_change.ogg', 200, 0)
|
||||
A.wind_down()
|
||||
log_game("[user] ([key_name(user)]) has dispelled a storm at [AREACOORD(user_turf)]")
|
||||
return
|
||||
else
|
||||
A = new storm_type(list(user_turf.z))
|
||||
A.name = "staff storm"
|
||||
log_game("[user] ([key_name(user)]) has summoned [A] at [AREACOORD(user_turf)]")
|
||||
if (is_special_character(user))
|
||||
message_admins("[A] has been summoned in [ADMIN_VERBOSEJMP(user_turf)] by [user] ([key_name_admin(user)], a non-antagonist")
|
||||
A.area_type = user_area.type
|
||||
A.telegraph_duration = 100
|
||||
A.end_duration = 100
|
||||
|
||||
@@ -375,11 +375,13 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
|
||||
/mob/proc/reagent_check(datum/reagent/R) // utilized in the species code
|
||||
return 1
|
||||
|
||||
/proc/notify_ghosts(var/message, var/ghost_sound = null, var/enter_link = null, var/atom/source = null, var/mutable_appearance/alert_overlay = null, var/action = NOTIFY_JUMP, flashwindow = TRUE, ignore_mapload = TRUE) //Easy notification of ghosts.
|
||||
/proc/notify_ghosts(var/message, var/ghost_sound = null, var/enter_link = null, var/atom/source = null, var/mutable_appearance/alert_overlay = null, var/action = NOTIFY_JUMP, flashwindow = TRUE, ignore_mapload = TRUE, ignore_key) //Easy notification of ghosts.
|
||||
if(ignore_mapload && SSatoms.initialized != INITIALIZATION_INNEW_REGULAR) //don't notify for objects created during a map load
|
||||
return
|
||||
for(var/mob/dead/observer/O in GLOB.player_list)
|
||||
if(O.client)
|
||||
if (ignore_key && O.ckey in GLOB.poll_ignore[ignore_key])
|
||||
continue
|
||||
to_chat(O, "<span class='ghostalert'>[message][(enter_link) ? " [enter_link]" : ""]</span>")
|
||||
if(ghost_sound)
|
||||
SEND_SOUND(O, sound(ghost_sound))
|
||||
|
||||
Reference in New Issue
Block a user