From 633cea67a29a8014522014120275297c74fb0c37 Mon Sep 17 00:00:00 2001
From: Kashargul <144968721+Kashargul@users.noreply.github.com>
Date: Wed, 18 Jun 2025 07:58:57 +0200
Subject: [PATCH] browse to browser continued (#17871)
---
code/game/machinery/camera/camera.dm | 6 +-
code/game/machinery/magnet.dm | 7 +-
code/game/machinery/robot_fabricator.dm | 7 +-
code/game/machinery/syndicatebeacon.dm | 6 +-
code/game/machinery/syndicatebeacon_vr.dm | 6 +-
.../items/weapons/implants/implantchair.dm | 5 +-
code/game/objects/items/weapons/scrolls.dm | 7 +-
code/modules/admin/DB ban/functions.dm | 4 +-
code/modules/admin/NewBan.dm | 5 +-
code/modules/admin/ToRban.dm | 6 +-
code/modules/admin/admin.dm | 41 +++---
code/modules/admin/admin_report.dm | 5 +-
code/modules/admin/admin_verbs.dm | 6 +-
code/modules/admin/newbanjob.dm | 5 +-
code/modules/admin/permissionedit.dm | 5 +-
.../secrets/admin_secrets/bombing_list.dm | 5 +-
.../admin/secrets/admin_secrets/list_dna.dm | 5 +-
.../admin_secrets/list_fingerprints.dm | 5 +-
.../admin_secrets/show_crew_manifest.dm | 4 +-
.../secrets/admin_secrets/show_law_changes.dm | 5 +-
.../secrets/admin_secrets/show_signalers.dm | 5 +-
.../admin/verbs/check_customitem_activity.dm | 4 +-
code/modules/admin/verbs/diagnostics.dm | 12 +-
code/modules/admin/verbs/mapping.dm | 7 +-
.../awaymissions/bluespaceartillery.dm | 7 +-
code/modules/economy/money_bag.dm | 5 +-
code/modules/economy/retail_scanner.dm | 9 +-
.../core/special_pins/list_pin.dm | 5 +-
code/modules/library/lib_items.dm | 6 +-
code/modules/mentor/mentorhelp.dm | 18 ++-
code/modules/mob/living/carbon/human/emote.dm | 5 +-
.../living/carbon/human/human_attackhand.dm | 5 +-
.../carbon/human/human_attackhand_vr.dm | 63 --------
.../mob/living/carbon/human/human_species.dm | 41 ++++++
.../living/carbon/human/human_species_vr.dm | 42 ------
.../station/station_special_abilities.dm | 7 +-
.../tools/artifact_harvester.dm | 135 ------------------
vorestation.dme | 1 -
38 files changed, 203 insertions(+), 319 deletions(-)
delete mode 100644 code/modules/mob/living/carbon/human/human_attackhand_vr.dm
delete mode 100644 code/modules/mob/living/carbon/human/human_species_vr.dm
diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm
index 1f8e32d4b44..a212588b9b5 100644
--- a/code/game/machinery/camera/camera.dm
+++ b/code/game/machinery/camera/camera.dm
@@ -217,7 +217,11 @@
to_chat(O, span_infoplain(span_bold("[U]") + " holds \a [itemname] up to one of your cameras ..."))
else
to_chat(O, span_infoplain(span_bold("[U] ") + " holds \a [itemname] up to one of your cameras ..."))
- O << browse(text("
[] [] ", itemname, info), text("window=[]", itemname))
+
+ var/datum/browser/popup = new(O, itemname, itemname)
+ popup.add_head_content("[itemname] ")
+ popup.set_content("[info] ")
+ popup.open()
else if (istype(W, /obj/item/camera_bug))
if (!src.can_use())
diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm
index 5f27c946d53..ac9853d1c2d 100644
--- a/code/game/machinery/magnet.dm
+++ b/code/game/machinery/magnet.dm
@@ -242,7 +242,7 @@
if(stat & (BROKEN|NOPOWER))
return
user.set_machine(src)
- var/dat = span_bold("Magnetic Control Console") + " "
+ var/dat = ""
if(!autolink)
dat += {"
Frequency: [frequency]
@@ -263,8 +263,9 @@
dat += "Moving: [moving ? "Enabled":"Disabled"] "
- user << browse("[dat]", "window=magnet;size=400x500")
- onclose(user, "magnet")
+ var/datum/browser/popup = new(user, "magnet", "Magnetic Control Console", 400, 500)
+ popup.set_content(dat)
+ popup.open()
/obj/machinery/magnetic_controller/Topic(href, href_list)
if(stat & (BROKEN|NOPOWER))
diff --git a/code/game/machinery/robot_fabricator.dm b/code/game/machinery/robot_fabricator.dm
index 51a09f49a5c..57ba629d6c1 100644
--- a/code/game/machinery/robot_fabricator.dm
+++ b/code/game/machinery/robot_fabricator.dm
@@ -56,9 +56,10 @@ Please wait until completion...
Robot Frame (75,000 cc metal).
"}
- user << browse("Robotic Fabricator Control Panel [dat] ", "window=robot_fabricator")
- onclose(user, "robot_fabricator")
- return
+ var/datum/browser/popup = new(user, "robot_fabricator", "Robot Fabricator")
+ popup.add_head_content("Robotic Fabricator Control Panel ")
+ popup.set_content("[dat] ")
+ popup.open()
/obj/machinery/robotic_fabricator/Topic(href, href_list)
if(..())
diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm
index 04513432e81..9f6e8b7f0ee 100644
--- a/code/game/machinery/syndicatebeacon.dm
+++ b/code/game/machinery/syndicatebeacon.dm
@@ -32,8 +32,10 @@
if(!selfdestructing)
dat += " \"[pick("I want to switch teams.", "I want to work for you.", "Let me join you.", "I can be of use to you.", "You want me working for you, and here's why...", "Give me an objective.", "How's the 401k over at the Syndicate?")]\" "
dat += temptext
- user << browse("[dat]", "window=syndbeacon")
- onclose(user, "syndbeacon")
+
+ var/datum/browser/popup = new(user, "syndbeacon", "Ominous Beacon")
+ popup.set_content(dat)
+ popup.open()
/obj/machinery/syndicate_beacon/Topic(href, href_list)
if(..())
diff --git a/code/game/machinery/syndicatebeacon_vr.dm b/code/game/machinery/syndicatebeacon_vr.dm
index 356ba99d6d7..c35454278ea 100644
--- a/code/game/machinery/syndicatebeacon_vr.dm
+++ b/code/game/machinery/syndicatebeacon_vr.dm
@@ -16,8 +16,10 @@
if(!selfdestructing)
dat += "\"[pick("Send me some supplies!", "Transfer supplies.")]\" "
dat += temptext
- user << browse("[dat]", "window=syndbeacon")
- onclose(user, "syndbeacon")
+
+ var/datum/browser/popup = new(user, "syndbeacon", "Ominous Beacon")
+ popup.set_content(dat)
+ popup.open()
/obj/machinery/syndicate_beacon/virgo/Topic(href, href_list)
if(href_list["betraitor"])
diff --git a/code/game/objects/items/weapons/implants/implantchair.dm b/code/game/objects/items/weapons/implants/implantchair.dm
index 0f5bf2fbc83..1fc0bbd0c25 100644
--- a/code/game/objects/items/weapons/implants/implantchair.dm
+++ b/code/game/objects/items/weapons/implants/implantchair.dm
@@ -42,9 +42,10 @@
if(src.occupant)
dat += "[src.ready ? "Implant " : "Recharging"] "
user.set_machine(src)
- user << browse("[dat]", "window=implant")
- onclose(user, "implant")
+ var/datum/browser/popup = new(user, "implant", "Implant")
+ popup.set_content(dat)
+ popup.open()
/obj/machinery/implantchair/Topic(href, href_list)
if((get_dist(src, usr) <= 1) || isAI(usr))
diff --git a/code/game/objects/items/weapons/scrolls.dm b/code/game/objects/items/weapons/scrolls.dm
index f4d89526d90..309e66f503b 100644
--- a/code/game/objects/items/weapons/scrolls.dm
+++ b/code/game/objects/items/weapons/scrolls.dm
@@ -26,9 +26,10 @@
dat += span_bold("Four uses use them wisely:") + " "
dat += "Teleport "
dat += "Kind regards, Wizards Federation P.S. Don't forget to bring your gear, you'll need it to cast most spells. "
- user << browse("[dat]", "window=scroll")
- onclose(user, "scroll")
- return
+
+ var/datum/browser/popup = new(user, "scroll", "Scroll")
+ popup.set_content(dat)
+ popup.open()
/obj/item/teleportation_scroll/Topic(href, href_list)
..()
diff --git a/code/modules/admin/DB ban/functions.dm b/code/modules/admin/DB ban/functions.dm
index 0fe48d12636..90393cb1220 100644
--- a/code/modules/admin/DB ban/functions.dm
+++ b/code/modules/admin/DB ban/functions.dm
@@ -486,4 +486,6 @@
output += ""
qdel(select_query)
- usr << browse("[output]","window=lookupbans;size=900x700")
+ var/datum/browser/popup = new(owner, "lookupbans", "Lookup Bans", 900, 700)
+ popup.set_content(output)
+ popup.open()
diff --git a/code/modules/admin/NewBan.dm b/code/modules/admin/NewBan.dm
index 98761987fe2..6053bcaceae 100644
--- a/code/modules/admin/NewBan.dm
+++ b/code/modules/admin/NewBan.dm
@@ -190,7 +190,10 @@ var/savefile/Banlist
dat += ""
dat = " " + span_bold("Bans:") + " " + span_blue("(U) = Unban , (E) = Edit Ban") + " - " + span_green("([count] Bans)") + "[dat]"
- usr << browse("[dat]", "window=unbanp;size=875x400")
+
+ var/datum/browser/popup = new(owner, "unbanp", "Unban", 875, 400)
+ popup.set_content(dat)
+ popup.open()
//////////////////////////////////// DEBUG ////////////////////////////////////
diff --git a/code/modules/admin/ToRban.dm b/code/modules/admin/ToRban.dm
index 79cf5e5fe7a..2152fa97596 100644
--- a/code/modules/admin/ToRban.dm
+++ b/code/modules/admin/ToRban.dm
@@ -67,7 +67,11 @@
dat = ""
else
dat = "No addresses in list."
- src << browse("[dat]","window=ToRban_show")
+
+ var/datum/browser/popup = new(src, "ToRban_show", "Torban")
+ popup.set_content(dat)
+ popup.open()
+
if("remove")
var/savefile/F = new(TORFILE)
var/choice = tgui_input_list(src,"Please select an IP address to remove from the ToR banlist:","Remove ToR ban", F.dir)
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 57e0d4ccfb2..c7b857595e9 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -53,8 +53,7 @@ GLOBAL_VAR_INIT(floorIsLava, 0)
to_chat(usr, "Error: you are not an admin!")
return
- var/body = "Options for [M.key] "
- body += "Options panel for" + span_bold("[M]")
+ var/body = "Options panel for" + span_bold("[M]")
if(M.client)
body += " played by " + span_bold("[M.client]")
body += "\[[M.client.holder ? M.client.holder.rank_names() : "Player"] \]"
@@ -236,11 +235,13 @@ GLOBAL_VAR_INIT(floorIsLava, 0)
else
body += "[k] "
- body += {"
-
- "}
+ body += {" "}
+
+ var/datum/browser/popup = new(owner, "adminplayeropts", "Edit Player", 550, 515)
+ popup.add_head_content("Options for [M.key] ")
+ popup.set_content(body)
+ popup.open()
- usr << browse(body, "window=adminplayeropts;size=550x515")
feedback_add_details("admin_verb","SPP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -314,7 +315,7 @@ GLOBAL_VAR_INIT(floorIsLava, 0)
to_chat(usr, "Error: you are not an admin!")
return
var/dat
- dat = text("Admin Newscaster Admin Newscaster Unit ")
+ dat = text("Admin Newscaster Unit ")
switch(admincaster_screen)
if(0)
@@ -547,10 +548,11 @@ GLOBAL_VAR_INIT(floorIsLava, 0)
//to_world("Channelname: [src.admincaster_feed_channel.channel_name] [src.admincaster_feed_channel.author]")
//to_world("Msg: [src.admincaster_feed_message.author] [src.admincaster_feed_message.body]")
- usr << browse("[dat]", "window=admincaster_main;size=400x600")
- onclose(usr, "admincaster_main")
-
+ var/datum/browser/popup = new(owner, "admincaster_main", "Admin Newscaster", 400, 600)
+ popup.add_head_content("Admin Newscaster ")
+ popup.set_content(dat)
+ popup.open()
/datum/admins/proc/Jobbans()
if(!check_rights(R_BAN)) return
@@ -562,13 +564,17 @@ GLOBAL_VAR_INIT(floorIsLava, 0)
r = copytext( r, 1, findtext(r,"##") )//removes the description
dat += text("[t] (unban ) ")
dat += "
"
- usr << browse("[dat]", "window=ban;size=400x400")
+
+ var/datum/browser/popup = new(owner, "ban", "Job Bans", 400, 400)
+ popup.add_head_content("Admin Newscaster ")
+ popup.set_content(dat)
+ popup.open()
/datum/admins/proc/Game()
if(!check_rights(0)) return
var/dat = {"
- "} + span_bold("Game Panel") + {" \n
+ "} + span_bold("Game Panel") + {" \n
Change Game Mode
"}
if(GLOB.master_mode == "secret")
@@ -582,11 +588,12 @@ GLOBAL_VAR_INIT(floorIsLava, 0)
Create Mob
Edit Airflow Settings
Edit Phoron Settings
- Choose a default ZAS setting
+ Choose a default ZAS setting
"}
- usr << browse(dat, "window=admin2;size=210x280")
- return
+ var/datum/browser/popup = new(owner, "admin2", "Game Panel", 210, 280)
+ popup.set_content(dat)
+ popup.open()
/datum/admins/proc/Secrets(var/datum/admin_secret_category/active_category = null)
if(!check_rights(0)) return
@@ -1255,7 +1262,9 @@ var/datum/announcement/minor/admin_min_announcer = new
out += " None."
out += " \[+\] "
- usr << browse("[out]", "window=edit_mode[src]")
+ var/datum/browser/popup = new(owner, "edit_mode[src]", "Edit Game Mode")
+ popup.set_content(out)
+ popup.open()
feedback_add_details("admin_verb","SGM")
diff --git a/code/modules/admin/admin_report.dm b/code/modules/admin/admin_report.dm
index 0aca9bb87e6..2bc01ad38b8 100644
--- a/code/modules/admin/admin_report.dm
+++ b/code/modules/admin/admin_report.dm
@@ -115,8 +115,9 @@ world/New()
else
output += "Whoops, no reports!"
- usr << browse("[output]", "window=news;size=600x400")
-
+ var/datum/browser/popup = new(src, "news", "News", 600, 400)
+ popup.set_content(output)
+ popup.open()
/client/proc/Report(mob/M as mob in world)
set category = "Admin.Moderation"
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 6c76e569dde..017da87b67a 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -719,8 +719,10 @@ ADMIN_VERB(removetickets, R_ADMIN, "Security Tickets", "Allows one to remove tic
dat += ""
qdel(query)
- usr << browse("[dat]", "window=library")
- onclose(usr, "library")
+
+ var/datum/browser/popup = new(src, "library", "Delete Book")
+ popup.set_content(dat)
+ popup.open()
/client/proc/toggle_spawning_with_recolour()
set name = "Toggle Simple/Robot recolour verb"
diff --git a/code/modules/admin/newbanjob.dm b/code/modules/admin/newbanjob.dm
index 70a029a71a0..477567c2d7b 100644
--- a/code/modules/admin/newbanjob.dm
+++ b/code/modules/admin/newbanjob.dm
@@ -232,7 +232,10 @@ var/savefile/Banlistjob
dat += ""
dat = " " + span_bold("Bans:") + " " span_blue("(U) = Unban , ") + " - " + span_green("([count] Bans)") + "[dat]"
- usr << browse("[dat]", "window=unbanp;size=875x400")
+
+ var/datum/browser/popup = new(owner, "unbanjob", "Unban Job", 875, 400)
+ popup.set_content(dat)
+ popup.open()
/*/datum/admins/proc/permjobban(ckey, computerid, reason, bannedby, temp, minutes, rank)
if(AddBanjob(ckey, computerid, reason, usr.ckey, 0, 0, job))
diff --git a/code/modules/admin/permissionedit.dm b/code/modules/admin/permissionedit.dm
index 0ab9fe01ba3..6dd91e1e401 100644
--- a/code/modules/admin/permissionedit.dm
+++ b/code/modules/admin/permissionedit.dm
@@ -133,7 +133,10 @@
output += "
Search:
[dat]"
if(QDELETED(usr))
return
- usr << browse("[jointext(output, "")]","window=editrights;size=1000x650")
+
+ var/datum/browser/popup = new(owner, "editrights", "Edit Rights", 1000, 650)
+ popup.set_content(jointext(output, ""))
+ popup.open()
/datum/admins/proc/edit_rights_topic(list/href_list)
if(!check_rights(R_PERMISSIONS))
diff --git a/code/modules/admin/secrets/admin_secrets/bombing_list.dm b/code/modules/admin/secrets/admin_secrets/bombing_list.dm
index 1fb1fac6778..95f59c2bb16 100644
--- a/code/modules/admin/secrets/admin_secrets/bombing_list.dm
+++ b/code/modules/admin/secrets/admin_secrets/bombing_list.dm
@@ -9,4 +9,7 @@
var/dat = span_bold("Bombing List")
for(var/l in GLOB.bombers)
dat += text("[l] ")
- user << browse("[dat]", "window=bombers")
+
+ var/datum/browser/popup = new(user, "bombers", "Bombers")
+ popup.set_content(dat)
+ popup.open()
diff --git a/code/modules/admin/secrets/admin_secrets/list_dna.dm b/code/modules/admin/secrets/admin_secrets/list_dna.dm
index a4caf27b1d0..36bea6515ae 100644
--- a/code/modules/admin/secrets/admin_secrets/list_dna.dm
+++ b/code/modules/admin/secrets/admin_secrets/list_dna.dm
@@ -11,4 +11,7 @@
if(H.dna && H.ckey)
dat += "
[H] [H.dna.unique_enzymes] [H.dna ? H.dna.b_type : DEFAULT_BLOOD_TYPE] "
dat += ""
- user << browse("[dat]", "window=DNA;size=440x410")
+
+ var/datum/browser/popup = new(user, "DNA", "DNA", 440, 410)
+ popup.set_content(dat)
+ popup.open()
diff --git a/code/modules/admin/secrets/admin_secrets/list_fingerprints.dm b/code/modules/admin/secrets/admin_secrets/list_fingerprints.dm
index ad86324de95..f38929c929d 100644
--- a/code/modules/admin/secrets/admin_secrets/list_fingerprints.dm
+++ b/code/modules/admin/secrets/admin_secrets/list_fingerprints.dm
@@ -16,4 +16,7 @@
else if(!H.dna)
dat += "
[H] H.dna = null "
dat += ""
- user << browse("[dat]", "window=fingerprints;size=440x410")
+
+ var/datum/browser/popup = new(user, "fingerprints", "Fingerprints", 440, 410)
+ popup.set_content(dat)
+ popup.open()
diff --git a/code/modules/admin/secrets/admin_secrets/show_crew_manifest.dm b/code/modules/admin/secrets/admin_secrets/show_crew_manifest.dm
index 9e35bc40e38..b3ac22031ce 100644
--- a/code/modules/admin/secrets/admin_secrets/show_crew_manifest.dm
+++ b/code/modules/admin/secrets/admin_secrets/show_crew_manifest.dm
@@ -9,4 +9,6 @@
dat += "
Crew Manifest "
dat += GLOB.data_core.get_manifest()
- user << browse("[dat]", "window=manifest;size=370x420;can_close=1")
+ var/datum/browser/popup = new(user, "manifest", "Manifest", 370, 420)
+ popup.set_content(dat)
+ popup.open()
diff --git a/code/modules/admin/secrets/admin_secrets/show_law_changes.dm b/code/modules/admin/secrets/admin_secrets/show_law_changes.dm
index 27c6330f07b..f72d796f4b6 100644
--- a/code/modules/admin/secrets/admin_secrets/show_law_changes.dm
+++ b/code/modules/admin/secrets/admin_secrets/show_law_changes.dm
@@ -12,4 +12,7 @@
var/dat = span_bold("Showing last [length(GLOB.lawchanges)] law changes.") + "
"
for(var/sig in GLOB.lawchanges)
dat += "[sig] "
- user << browse("[dat]", "window=GLOB.lawchanges;size=800x500")
+
+ var/datum/browser/popup = new(user, "lawchanges", "Lawcahnges", 800, 500)
+ popup.set_content(dat)
+ popup.open()
diff --git a/code/modules/admin/secrets/admin_secrets/show_signalers.dm b/code/modules/admin/secrets/admin_secrets/show_signalers.dm
index b96200996a2..e6663d6f62c 100644
--- a/code/modules/admin/secrets/admin_secrets/show_signalers.dm
+++ b/code/modules/admin/secrets/admin_secrets/show_signalers.dm
@@ -12,4 +12,7 @@
var/dat = span_bold("Showing last [length(GLOB.lastsignalers)] signalers.") + "
"
for(var/sig in GLOB.lastsignalers)
dat += "[sig] "
- user << browse("[dat]", "window=lastsignalers;size=800x500")
+
+ var/datum/browser/popup = new(user, "lastsignalers", "Last Signallers", 800, 500)
+ popup.set_content(dat)
+ popup.open()
diff --git a/code/modules/admin/verbs/check_customitem_activity.dm b/code/modules/admin/verbs/check_customitem_activity.dm
index 2be186df2c2..5a2493a6145 100644
--- a/code/modules/admin/verbs/check_customitem_activity.dm
+++ b/code/modules/admin/verbs/check_customitem_activity.dm
@@ -21,7 +21,9 @@ var/inactive_keys = "None "
else
dat += "Populate list (requires an active database connection) "
- usr << browse("[dat]", "window=inactive_customitems;size=600x480")
+ var/datum/browser/popup = new(src, "inactive_customitems", "Inactive Custom Items", 600, 480)
+ popup.set_content(dat)
+ popup.open()
/proc/populate_inactive_customitems_list(var/client/C)
set background = 1
diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm
index 819d72cd0f4..f8be0fb79aa 100644
--- a/code/modules/admin/verbs/diagnostics.dm
+++ b/code/modules/admin/verbs/diagnostics.dm
@@ -23,7 +23,7 @@
else
inactive_on_main_station++
- var/output = {"AIR SYSTEMS REPORT
+ var/output = {"AIR SYSTEMS REPORT
General Processing Data
Cycle: [SSair.current_cycle]
Groups: [SSair.zones.len]
@@ -36,10 +36,12 @@
Hotspot Processing: [hotspots]
Geometry Processing Data
- Tile Update: [SSair.tiles_to_update.len]
+ Tile Update: [SSair.tiles_to_update.len]
"}
- usr << browse(output,"window=airreport")
+ var/datum/browser/popup = new(src, "airreport", "Airreport")
+ popup.set_content(output)
+ popup.open()
/client/proc/fix_next_move()
set category = "Debug.Game"
@@ -95,7 +97,9 @@
else
output += " [device] "
- usr << browse("[output]","window=radioreport")
+ var/datum/browser/popup = new(src, "radioreport", "Radioreport")
+ popup.set_content(output)
+ popup.open()
feedback_add_details("admin_verb","RR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/reload_admins()
diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm
index 9db6d3042cb..70d4216a34b 100644
--- a/code/modules/admin/verbs/mapping.dm
+++ b/code/modules/admin/verbs/mapping.dm
@@ -78,7 +78,7 @@ GLOBAL_LIST_BOILERPLATE(all_debugging_effects, /obj/effect/debugging)
for(var/obj/machinery/camera/C in cameranet.cameras)
CL += C
- var/output = {""} + span_bold("CAMERA ANNOMALITIES REPORT") + {"
+ var/output = span_bold("CAMERA ANNOMALITIES REPORT") + {"
"} + span_bold("The following annomalities have been detected. The ones in red need immediate attention: Some of those in black may be intentional.") + {"
"}
for(var/obj/machinery/camera/C1 in CL)
@@ -102,7 +102,10 @@ GLOBAL_LIST_BOILERPLATE(all_debugging_effects, /obj/effect/debugging)
output += "" + span_red("Camera not connected to wall at \[[C1.x], [C1.y], [C1.z]\] ([C1.loc.loc]) Network: [C1.network]") + " "
output += " "
- usr << browse("[output]","window=airreport;size=1000x500")
+
+ var/datum/browser/popup = new(src, "airreport", "Airreport", 1000, 500)
+ popup.set_content(output)
+ popup.open()
feedback_add_details("admin_verb","mCRP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/intercom_view()
diff --git a/code/modules/awaymissions/bluespaceartillery.dm b/code/modules/awaymissions/bluespaceartillery.dm
index d2003d34b09..b7b531c2cc4 100644
--- a/code/modules/awaymissions/bluespaceartillery.dm
+++ b/code/modules/awaymissions/bluespaceartillery.dm
@@ -27,9 +27,10 @@
dat += span_bold("Charge progress: [reload]/180:") + " "
dat += "Open Fire "
dat += "Deployment of weapon authorized by [using_map.company_name] Naval Command Remember, friendly fire is grounds for termination of your contract and life.
"
- user << browse("[dat]", "window=scroll")
- onclose(user, "scroll")
- return
+
+ var/datum/browser/popup = new(user, "artillery", "Artillery")
+ popup.set_content(dat)
+ popup.open()
/obj/machinery/artillerycontrol/Topic(href, href_list)
..()
diff --git a/code/modules/economy/money_bag.dm b/code/modules/economy/money_bag.dm
index d515a1249bd..aff6d6ca7fe 100644
--- a/code/modules/economy/money_bag.dm
+++ b/code/modules/economy/money_bag.dm
@@ -43,7 +43,10 @@
dat += text("Phoron coins: [amt_phoron] Remove one ")
if (amt_uranium)
dat += text("Uranium coins: [amt_uranium] Remove one ")
- user << browse("[dat]", "window=moneybag")
+
+ var/datum/browser/popup = new(user, "moneybag", "Moneybag")
+ popup.set_content(dat)
+ popup.open()
/obj/item/moneybag/attackby(obj/item/W, mob/user)
..()
diff --git a/code/modules/economy/retail_scanner.dm b/code/modules/economy/retail_scanner.dm
index 35c6f4baa88..02914c1cfbb 100644
--- a/code/modules/economy/retail_scanner.dm
+++ b/code/modules/economy/retail_scanner.dm
@@ -88,11 +88,10 @@
dat += " "
dat += "Device ID: [machine_id]"
- dat = "
Retail Scanner