diff --git a/code/datums/action.dm b/code/datums/action.dm
index c35923191e5..446b50243ae 100644
--- a/code/datums/action.dm
+++ b/code/datums/action.dm
@@ -145,6 +145,9 @@
/datum/action/item_action/startchainsaw
name = "Pull The Starting Cord"
+/datum/action/item_action/print_report
+ name = "Print Forensic Report"
+
/datum/action/item_action/toggle_gunlight
name = "Toggle Gunlight"
@@ -244,6 +247,15 @@
name = "Adjust [target.name]"
button.name = name
+/datum/action/item_action/pontificate
+ name = "Pontificate Evilly"
+
+/datum/action/item_action/tip_fedora
+ name = "Tip Fedora"
+
+/datum/action/item_action/flip_cap
+ name = "Flip Cap"
+
/datum/action/item_action/switch_hud
name = "Switch HUD"
diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm
index 2133fe98e48..98e5026ae81 100644
--- a/code/modules/clothing/head/misc.dm
+++ b/code/modules/clothing/head/misc.dm
@@ -177,21 +177,25 @@
desc = "There's a new sheriff in town. Pass the whiskey."
/obj/item/clothing/head/fedora
- name = "\improper fedora"
+ name = "fedora"
icon_state = "fedora"
item_state = "fedora"
desc = "A great hat ruined by being within fifty yards of you."
+ actions_types = list(/datum/action/item_action/tip_fedora)
-//TIPS FEDORA
-/obj/item/clothing/head/fedora/verb/tip_fedora()
- set name = "Tip Fedora"
- set category = "Object"
- set desc = "Show that CIS SCUM who's boss."
+/obj/item/clothing/head/fedora/attack_self(mob/user)
+ tip_fedora(user)
+
+/obj/item/clothing/head/fedora/item_action_slot_check(slot)
+ if(slot == slot_head)
+ return 1
+
+/obj/item/clothing/head/fedora/proc/tip_fedora(mob/user)
+ user.visible_message("[user] tips their fedora.", "You tip your fedora")
- usr.visible_message("[usr] tips their fedora.","You tip your fedora")
/obj/item/clothing/head/fez
- name = "\improper fez"
+ name = "fez"
icon_state = "fez"
item_state = "fez"
desc = "Put it on your monkey, make lots of cash money."
diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm
index e7dae7d04da..8727065fb5b 100644
--- a/code/modules/clothing/head/soft_caps.dm
+++ b/code/modules/clothing/head/soft_caps.dm
@@ -5,25 +5,29 @@
item_state = "helmet"
item_color = "cargo"
var/flipped = 0
+ actions_types = list(/datum/action/item_action/flip_cap)
- dropped()
- src.icon_state = "[item_color]soft"
- src.flipped=0
- ..()
+/obj/item/clothing/head/soft/dropped()
+ icon_state = "[item_color]soft"
+ flipped = 0
+ ..()
- verb/flip()
- set category = "Object"
- set name = "Flip cap"
- set src in usr
- if(usr.canmove && !usr.stat && !usr.restrained())
- src.flipped = !src.flipped
- if(src.flipped)
- icon_state = "[item_color]soft_flipped"
- to_chat(usr, "You flip the hat backwards.")
- else
- icon_state = "[item_color]soft"
- to_chat(usr, "You flip the hat back in normal position.")
- usr.update_inv_head() //so our mob-overlays update
+/obj/item/clothing/head/soft/attack_self(mob/user)
+ flip(user)
+
+/obj/item/clothing/head/soft/proc/flip(mob/user)
+ flipped = !flipped
+ if(flipped)
+ icon_state = "[item_color]soft_flipped"
+ to_chat(usr, "You flip the hat backwards.")
+ else
+ icon_state = "[item_color]soft"
+ to_chat(user, "You flip the hat back in normal position.")
+ user.update_inv_head() //so our mob-overlays update
+
+ for(var/X in actions)
+ var/datum/action/A = X
+ A.UpdateButtonIcon()
/obj/item/clothing/head/soft/red
name = "red cap"
diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm
index dd66740f966..f299419ed09 100644
--- a/code/modules/clothing/masks/miscellaneous.dm
+++ b/code/modules/clothing/masks/miscellaneous.dm
@@ -82,6 +82,7 @@
desc = "moustache is totally real."
icon_state = "fake-moustache"
flags_inv = HIDEFACE
+ actions_types = list(/datum/action/item_action/pontificate)
species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/mask.dmi',
@@ -90,12 +91,15 @@
"Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi'
)
-/obj/item/clothing/mask/fakemoustache/verb/pontificate()
- set name = "Pontificate Evilly"
- set category = "Object"
- set desc = "Devise evil plans of evilness."
+/obj/item/clothing/mask/fakemoustache/attack_self(mob/user)
+ pontificate(user)
- usr.visible_message("\ [usr] twirls \his moustache and laughs [pick("fiendishly","maniacally","diabolically","evilly")]!")
+/obj/item/clothing/mask/fakemoustache/item_action_slot_check(slot)
+ if(slot == slot_wear_mask)
+ return 1
+
+/obj/item/clothing/mask/fakemoustache/proc/pontificate(mob/user)
+ user.visible_message("\ [user] twirls \his moustache and laughs [pick("fiendishly","maniacally","diabolically","evilly")]!")
//scarves (fit in in mask slot)
diff --git a/code/modules/detective_work/scanner.dm b/code/modules/detective_work/scanner.dm
index 58c1c31a3b8..be8e7d147a2 100644
--- a/code/modules/detective_work/scanner.dm
+++ b/code/modules/detective_work/scanner.dm
@@ -14,6 +14,7 @@
origin_tech = "magnets=4;biotech=2"
var/scanning = 0
var/list/log = list()
+ actions_types = list(/datum/action/item_action/print_report)
/obj/item/device/detective_scanner/attack_self(var/mob/user)
var/search = input(user, "Enter name, fingerprint or blood DNA.", "Find record", "")
@@ -58,11 +59,10 @@
to_chat(user, "No match found in station records.")
+/obj/item/device/detective_scanner/ui_action_click()
+ print_scanner_report()
-/obj/item/device/detective_scanner/verb/print_scanner_report()
- set name = "Print Scanner Report"
- set category = "Object"
-
+/obj/item/device/detective_scanner/proc/print_scanner_report()
if(log.len && !scanning)
scanning = 1
to_chat(usr, "Printing report, please wait...")