diff --git a/code/game/mecha/combat/gorilla.dm b/code/game/mecha/combat/gorilla.dm
index a33cd963e2..e413fc892a 100644
--- a/code/game/mecha/combat/gorilla.dm
+++ b/code/game/mecha/combat/gorilla.dm
@@ -178,10 +178,10 @@
src.log_message("Toggled zoom mode.")
src.occupant_message("Zoom mode [zoom?"en":"dis"]abled.")
if(zoom)
- src.occupant.client.view = 12
+ src.occupant.set_viewsize(12)
playsound(src.occupant, 'sound/mecha/imag_enh.ogg',50)
else
- src.occupant.client.view = world.view//world.view - default mob view size
+ src.occupant.set_viewsize() // Reset to default
return
diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm
index 8b2471d953..2b383379ad 100644
--- a/code/game/mecha/combat/marauder.dm
+++ b/code/game/mecha/combat/marauder.dm
@@ -180,10 +180,10 @@
src.log_message("Toggled zoom mode.")
src.occupant_message("Zoom mode [zoom?"en":"dis"]abled.")
if(zoom)
- src.occupant.client.view = 12
+ src.occupant.set_viewsize(12)
src.occupant << sound('sound/mecha/imag_enh.ogg',volume=50)
else
- src.occupant.client.view = world.view//world.view - default mob view size
+ src.occupant.set_viewsize() // Reset to default
return
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 78f8ab4ffe..5387ee4488 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -654,7 +654,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
if(!zoom && !cannotzoom)
if(H.hud_used.hud_shown)
H.toggle_zoom_hud() // If the user has already limited their HUD this avoids them having a HUD when they zoom in
- H.client.view = viewsize
+ H.set_viewsize(viewsize)
zoom = 1
var/tilesize = 32
@@ -679,7 +679,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
H.handle_vision()
else
- H.client.view = world.view
+ H.set_viewsize() // Reset to default
if(!H.hud_used.hud_shown)
H.toggle_zoom_hud()
zoom = 0
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index bb4e0335a6..9ccd082819 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -837,10 +837,12 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!holder)
return
+ var/view = src.view
if(view == world.view)
view = input("Select view range:", "FUCK YE", 7) in list(1,2,3,4,5,6,7,8,9,10,11,12,13,14,128)
else
view = world.view
+ mob.set_viewsize(view)
log_admin("[key_name(usr)] changed their view range to [view].")
//message_admins("[key_name_admin(usr)] changed their view range to [view].", 1) //why? removed by order of XSI
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 9c9bbd68e5..7fd5bb27c5 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -1063,6 +1063,13 @@ mob/proc/yank_out_object()
/mob/proc/setEarDamage()
return
+// Set client view distance (size of client's screen). Returns TRUE if anything changed.
+/mob/proc/set_viewsize(var/new_view = world.view)
+ if (client && new_view != client.view)
+ client.view = new_view
+ return TRUE
+ return FALSE
+
//Throwing stuff
/mob/proc/toggle_throw_mode()
diff --git a/code/modules/overmap/ships/computers/ship.dm b/code/modules/overmap/ships/computers/ship.dm
index 4f2c88c13a..4ab9d241df 100644
--- a/code/modules/overmap/ships/computers/ship.dm
+++ b/code/modules/overmap/ships/computers/ship.dm
@@ -56,16 +56,14 @@ somewhere on that shuttle. Subtypes of these can be then used to perform ship ov
/obj/machinery/computer/ship/proc/look(var/mob/user)
if(linked)
user.reset_view(linked)
- if(user.client)
- user.client.view = world.view + extra_view
+ user.set_viewsize(world.view + extra_view)
GLOB.moved_event.register(user, src, /obj/machinery/computer/ship/proc/unlook)
// TODO GLOB.stat_set_event.register(user, src, /obj/machinery/computer/ship/proc/unlook)
LAZYDISTINCTADD(viewers, weakref(user))
/obj/machinery/computer/ship/proc/unlook(var/mob/user)
user.reset_view()
- if(user.client)
- user.client.view = world.view
+ user.set_viewsize() // reset to default
GLOB.moved_event.unregister(user, src, /obj/machinery/computer/ship/proc/unlook)
// TODO GLOB.stat_set_event.unregister(user, src, /obj/machinery/computer/ship/proc/unlook)
LAZYREMOVE(viewers, weakref(user))