diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm
index 7b121f3f458..c21cb6c999f 100644
--- a/code/__DEFINES/preferences.dm
+++ b/code/__DEFINES/preferences.dm
@@ -15,8 +15,9 @@
#define INTENT_STYLE 4096
#define CHAT_GHOSTWHISPER 8192
#define MIDROUND_ANTAG 16384
+#define CHAT_GHOSTPDA 32768
-#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|MEMBER_PUBLIC|CHAT_PULLR|INTENT_STYLE|CHAT_GHOSTWHISPER|MIDROUND_ANTAG)
+#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|MEMBER_PUBLIC|CHAT_PULLR|INTENT_STYLE|CHAT_GHOSTWHISPER|MIDROUND_ANTAG|CHAT_GHOSTPDA)
#define BE_TRAITOR 1
#define BE_OPERATIVE 2
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index 64b328c5877..6a25b6c50be 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -816,6 +816,9 @@ var/global/list/obj/item/device/pda/PDAs = list()
tnote += "→ To [P.owner]:
[t]
"
P.tnote += "← From [owner] ([ownjob]):
[t]
"
+ for(var/mob/M in player_list)
+ if(M.stat == DEAD && M.client && (M.client.prefs.toggles & CHAT_GHOSTPDA))
+ M.show_message("PDA Message - [owner] -> [P.owner]: [t]")
if (!P.silent)
playsound(P.loc, 'sound/machines/twobeep.ogg', 50, 1)
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 88939f458f1..402b5698577 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -226,6 +226,7 @@ datum/preferences
dat += "Ghost ears: [(toggles & CHAT_GHOSTEARS) ? "Nearest Creatures" : "All Speech"]
"
dat += "Ghost sight: [(toggles & CHAT_GHOSTSIGHT) ? "Nearest Creatures" : "All Emotes"]
"
dat += "Ghost whispers: [(toggles & CHAT_GHOSTWHISPER) ? "Nearest Creatures" : "All Speech"]
"
+ dat += "Ghost pda: [(toggles & CHAT_GHOSTPDA) ? "Nearest Creatures" : "All Messages"]
"
dat += "Pull requests: [(toggles & CHAT_PULLR) ? "Yes" : "No"]
"
dat += "Midround Antagonist: [(toggles & MIDROUND_ANTAG) ? "Yes" : "No"]
"
if(config.allow_Metadata)
@@ -783,6 +784,9 @@ datum/preferences
if("ghost_whispers")
toggles ^= CHAT_GHOSTWHISPER
+ if("ghost_pda")
+ toggles ^= CHAT_GHOSTPDA
+
if("pull_requests")
toggles ^= CHAT_PULLR
diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm
index fbcdf5d6f66..3f41b53cdfd 100644
--- a/code/modules/client/preferences_toggles.dm
+++ b/code/modules/client/preferences_toggles.dm
@@ -26,6 +26,15 @@
prefs.save_preferences()
feedback_add_details("admin_verb","TGW") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+/client/verb/toggle_ghost_pda()
+ set name = "Show/Hide GhostPDA"
+ set category = "Preferences"
+ set desc = ".Toggle Between seeing all mob pda messages, and only pda messages of nearby mobs"
+ prefs.toggles ^= CHAT_GHOSTPDA
+ src << "As a ghost, you will now [(prefs.toggles & CHAT_GHOSTPDA) ? "see all pda messages in the world" : "only see pda messages from nearby mobs"]."
+ prefs.save_preferences()
+ feedback_add_details("admin_verb","TGP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+
/client/proc/toggle_hear_radio()
set name = "Show/Hide RadioChatter"
set category = "Preferences"
diff --git a/html/changelogs/Mandurrrh-pdaghost.yml b/html/changelogs/Mandurrrh-pdaghost.yml
new file mode 100644
index 00000000000..446b94df5b2
--- /dev/null
+++ b/html/changelogs/Mandurrrh-pdaghost.yml
@@ -0,0 +1,8 @@
+author: Mandurrrh
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+
+changes:
+ - rscadd: "Added the ability to see pda messages as a ghost with GHOSTWHISPER toggled on."