diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm
index 40a9a5f4641..c6cd0c9117e 100644
--- a/code/game/machinery/deployable.dm
+++ b/code/game/machinery/deployable.dm
@@ -137,7 +137,9 @@
actions_types = list(/datum/action/item_action/toggle_barrier_spread)
var/mode = SINGLE
-/obj/item/weapon/grenade/barrier/AltClick(mob/user)
+/obj/item/weapon/grenade/barrier/AltClick(mob/living/user)
+ if(!istype(user) || user.incapacitated())
+ return
toggle_mode(user)
/obj/item/weapon/grenade/barrier/proc/toggle_mode(mob/user)
diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm
index a2640156520..5d3d10f28fc 100644
--- a/code/game/machinery/doppler_array.dm
+++ b/code/game/machinery/doppler_array.dm
@@ -48,9 +48,8 @@ var/list/doppler_arrays = list()
src.dir = turn(src.dir, 90)
return
-/obj/machinery/doppler_array/AltClick(mob/user)
- ..()
- if(user.incapacitated())
+/obj/machinery/doppler_array/AltClick(mob/living/user)
+ if(!istype(user) || user.incapacitated())
user << "You can't do that right now!"
return
if(!in_range(src, user))
diff --git a/code/game/objects/items/devices/geiger_counter.dm b/code/game/objects/items/devices/geiger_counter.dm
index b3e4214e7af..6a2a1834e50 100644
--- a/code/game/objects/items/devices/geiger_counter.dm
+++ b/code/game/objects/items/devices/geiger_counter.dm
@@ -132,8 +132,9 @@
return 1
..()
-/obj/item/device/geiger_counter/AltClick()
- ..()
+/obj/item/device/geiger_counter/AltClick(mob/living/user)
+ if(!istype(user) || user.incapacitated())
+ return ..()
if(!scanning)
usr << "[src] must be on to reset its radiation level!"
return 0
diff --git a/code/game/objects/items/weapons/scrolls.dm b/code/game/objects/items/weapons/scrolls.dm
index 4476e7836e7..26438764d1b 100644
--- a/code/game/objects/items/weapons/scrolls.dm
+++ b/code/game/objects/items/weapons/scrolls.dm
@@ -34,11 +34,11 @@
..()
if (usr.stat || usr.restrained() || src.loc != usr)
return
- var/mob/living/carbon/human/H = usr
- if (!( istype(H, /mob/living/carbon/human)))
+ if (!ishuman(usr))
return 1
- if ((usr == src.loc || (in_range(src, usr) && istype(src.loc, /turf))))
- usr.set_machine(src)
+ var/mob/living/carbon/human/H = usr
+ if ((H == src.loc || (in_range(src, H) && istype(src.loc, /turf))))
+ H.set_machine(src)
if (href_list["spell_teleport"])
if (src.uses >= 1)
teleportscroll(H)
@@ -50,7 +50,9 @@
var/A
- A = input(user, "Area to jump to", "BOOYEA", A) in teleportlocs
+ A = input(user, "Area to jump to", "BOOYEA", A) in teleportlocs|null
+ if(!A)
+ return
var/area/thearea = teleportlocs[A]
if (!user || user.stat || user.restrained() || uses <= 0)
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index dfd03f195e2..2bf43403110 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -238,10 +238,10 @@
else
togglelock(user)
-/obj/structure/closet/MouseDrop_T(atom/movable/O, mob/user)
+/obj/structure/closet/MouseDrop_T(atom/movable/O, mob/living/user)
if(!istype(O) || O.anchored || istype(O, /obj/screen))
return
- if(user.incapacitated() || user.lying)
+ if(!istype(user) || user.incapacitated() || user.lying)
return
if(!Adjacent(user) || !user.Adjacent(O))
return
diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm
index 1fa726d9c59..124b9bd9250 100644
--- a/code/modules/admin/player_panel.dm
+++ b/code/modules/admin/player_panel.dm
@@ -382,8 +382,8 @@
var/mob/M = N.current
if(M)
dat += "
| [M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""] | "
- dat += "PM |
"
- dat += "FLW | "
+ dat += "PM | "
+ dat += "FLW | "
dat += "| Target(s) | | Location |
"
for(var/datum/mind/N in ticker.mode.get_living_heads())
var/mob/M = N.current
diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm
index 6e64e3cd9e8..2e9935288f5 100644
--- a/code/modules/clothing/masks/gasmask.dm
+++ b/code/modules/clothing/masks/gasmask.dm
@@ -62,20 +62,21 @@
flags_cover = MASKCOVERSEYES
burn_state = FLAMMABLE
-/obj/item/clothing/mask/gas/clown_hat/AltClick(mob/user)
-
- var/mob/M = usr
+/obj/item/clothing/mask/gas/clown_hat/AltClick(mob/living/user)
+ if(!istype(user) || user.incapacitated())
+ return
+
var/list/options = list()
options["True Form"] = "clown"
options["The Feminist"] = "sexyclown"
options["The Madman"] = "joker"
options["The Rainbow Color"] ="rainbow"
- var/choice = input(M,"To what form do you wish to Morph this mask?","Morph Mask") in options
+ var/choice = input(user,"To what form do you wish to Morph this mask?","Morph Mask") in options
- if(src && choice && !M.stat && in_range(M,src))
+ if(src && choice && !user.stat && in_range(user,src))
icon_state = options[choice]
- M << "Your Clown Mask has now morphed into [choice], all praise the Honkmother!"
+ user << "Your Clown Mask has now morphed into [choice], all praise the Honkmother!"
return 1
/obj/item/clothing/mask/gas/sexyclown
diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm
index fb3c474e3f5..62275dc2e36 100644
--- a/code/modules/paperwork/paperbin.dm
+++ b/code/modules/paperwork/paperbin.dm
@@ -24,8 +24,8 @@
return
/obj/item/weapon/paper_bin/MouseDrop(atom/over_object)
- var/mob/M = usr
- if(M.incapacitated() || !Adjacent(M))
+ var/mob/living/M = usr
+ if(!istype(M) || M.incapacitated() || !Adjacent(M))
return
if(over_object == M)
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index e749d430867..60e546f65b4 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -38,6 +38,7 @@
var/unique_rename = 0 //allows renaming with a pen
var/unique_reskin = 0 //allows one-time reskinning
var/reskinned = 0 //whether or not the gun has been reskinned
+ var/current_skin = null
var/list/options = list()
lefthand_file = 'icons/mob/inhands/guns_lefthand.dmi'
@@ -374,6 +375,7 @@ obj/item/weapon/gun/proc/newshot()
icon_state = options[choice] + "-sawn"
else
icon_state = options[choice]
+ current_skin = icon_state
M << "Your gun is now skinned as [choice]. Say hello to your new friend."
reskinned = 1
return
diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm
index fc293f1f79d..f0b0b972d40 100644
--- a/code/modules/projectiles/guns/projectile.dm
+++ b/code/modules/projectiles/guns/projectile.dm
@@ -19,7 +19,10 @@
/obj/item/weapon/gun/projectile/update_icon()
..()
- icon_state = "[initial(icon_state)][suppressed ? "-suppressed" : ""]"
+ if(reskinned && current_skin)
+ icon_state = "[current_skin][suppressed ? "-suppressed" : ""]"
+ else
+ icon_state = "[initial(icon_state)][suppressed ? "-suppressed" : ""]"
/obj/item/weapon/gun/projectile/process_chamber(eject_casing = 1, empty_chamber = 1)
// if(in_chamber)
diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm
index 76f18ad2a36..0f20c8ff62b 100644
--- a/code/modules/projectiles/guns/projectile/shotgun.dm
+++ b/code/modules/projectiles/guns/projectile/shotgun.dm
@@ -286,6 +286,8 @@
name = "sawn-off [src.name]"
desc = sawn_desc
icon_state = "[icon_state]-sawn"
+ if(current_skin)
+ current_skin = "[current_skin]-sawn"
w_class = 3
item_state = "gun"
slot_flags &= ~SLOT_BACK //you can't sling it on your back
diff --git a/code/orphaned procs/priority_announce.dm b/code/orphaned procs/priority_announce.dm
index 967d5a3e022..2d490bea2af 100644
--- a/code/orphaned procs/priority_announce.dm
+++ b/code/orphaned procs/priority_announce.dm
@@ -39,6 +39,7 @@
P.info = text
C.messagetitle.Add("[title]")
C.messagetext.Add(text)
+ P.update_icon()
/proc/minor_announce(message, title = "Attention:", alert)
if(!message)