diff --git a/code/datums/action.dm b/code/datums/action.dm
index d9913edd002..4f5fd4f38d5 100644
--- a/code/datums/action.dm
+++ b/code/datums/action.dm
@@ -6,6 +6,7 @@
/datum/action
var/name = "Generic Action"
+ var/desc = null
var/obj/target = null
var/check_flags = 0
var/processing = 0
@@ -22,6 +23,8 @@
button = new
button.linked_action = src
button.name = name
+ if(desc)
+ button.desc = desc
/datum/action/Destroy()
if(owner)
@@ -184,11 +187,19 @@
/datum/action/item_action/toggle_helmet_light
name = "Toggle Helmet Light"
-/datum/action/item_action/toggle_flame
- name = "Summon/Dismiss Ratvar's Flame"
+/datum/action/item_action/clock
background_icon_state = "bg_clock"
-/datum/action/item_action/toggle_flame/IsAvailable()
+/datum/action/item_action/clock/IsAvailable()
+ if(!is_servant_of_ratvar(owner))
+ return 0
+ return ..()
+
+/datum/action/item_action/clock/toggle_flame
+ name = "Summon/Dismiss Ratvar's Flame"
+ desc = "Allows you to summon a flame that can create stunning zones at any range."
+
+/datum/action/item_action/clock/toggle_flame/IsAvailable()
if(!is_servant_of_ratvar(owner))
return 0
if(istype(target, /obj/item/clothing/glasses/judicial_visor))
@@ -197,15 +208,20 @@
return 0
return ..()
-/datum/action/item_action/hierophant
+/datum/action/item_action/clock/hierophant
name = "Hierophant Network"
+ desc = "Allows you to communicate with other Servants."
button_icon_state = "hierophant_slab"
- background_icon_state = "bg_clock"
-/datum/action/item_action/hierophant/IsAvailable()
- if(!is_servant_of_ratvar(owner))
- return 0
- return ..()
+/datum/action/item_action/clock/guvax
+ name = "Guvax"
+ desc = "Allows you to convert adjacent nonservants while holding the slab."
+ button_icon_state = "guvax_capacitor"
+
+/datum/action/item_action/clock/vanguard
+ name = "Vanguard"
+ desc = "Allows you to temporarily absorb stuns. All stuns absorbed will affect you when disabled."
+ button_icon_state = "vanguard_cogwheel"
/datum/action/item_action/toggle_helmet_flashlight
name = "Toggle Helmet Flashlight"
diff --git a/code/game/gamemodes/clock_cult/clock_items.dm b/code/game/gamemodes/clock_cult/clock_items.dm
index 13dc2a1b311..d444d17724d 100644
--- a/code/game/gamemodes/clock_cult/clock_items.dm
+++ b/code/game/gamemodes/clock_cult/clock_items.dm
@@ -33,7 +33,7 @@
var/no_cost = FALSE //If the slab is admin-only and needs no components and has no scripture locks
var/nonhuman_usable = FALSE //if the slab can be used by nonhumans, defaults to off
var/produces_components = TRUE //if it produces components at all
- actions_types = list(/datum/action/item_action/hierophant)
+ actions_types = list(/datum/action/item_action/clock/hierophant, /datum/action/item_action/clock/guvax, /datum/action/item_action/clock/vanguard)
/obj/item/clockwork/slab/starter
stored_components = list("belligerent_eye" = 1, "vanguard_cogwheel" = 1, "guvax_capacitor" = 1, "replicant_alloy" = 1, "hierophant_ansible" = 1)
@@ -96,7 +96,25 @@
L << "Your slab clunks as it produces a new component."
/obj/item/clockwork/slab/ui_action_click(mob/user, actiontype)
- show_hierophant(user)
+ switch(actiontype)
+ if(/datum/action/item_action/clock/hierophant)
+ show_hierophant(user)
+ if(/datum/action/item_action/clock/guvax)
+ if(src == user.get_active_hand())
+ var/datum/clockwork_scripture/guvax/convert = new
+ convert.slab = src
+ convert.invoker = user
+ convert.run_scripture()
+ else
+ user << "You need to hold the slab in your active hand to recite scripture!"
+ if(/datum/action/item_action/clock/vanguard)
+ if(src == user.get_active_hand())
+ var/datum/clockwork_scripture/vanguard/antistun = new
+ antistun.slab = src
+ antistun.invoker = user
+ antistun.run_scripture()
+ else
+ user << "You need to hold the slab in your active hand to recite scripture!"
/obj/item/clockwork/slab/attack(mob/living/target, mob/living/carbon/human/user)
if(is_servant_of_ratvar(user) && is_servant_of_ratvar(target))
@@ -173,7 +191,7 @@
switch(action)
if("Recital")
if(user.get_active_hand() != src)
- user << "You need to hold the slab to recite scripture!"
+ user << "You need to hold the slab in your active hand to recite scripture!"
return
recite_scripture(user)
if("Records")
@@ -482,7 +500,7 @@
var/recharging = FALSE //If the visor is currently recharging
var/obj/item/weapon/ratvars_flame/flame //The linked flame object
var/recharge_cooldown = 300 //divided by 10 if ratvar is alive
- actions_types = list(/datum/action/item_action/toggle_flame)
+ actions_types = list(/datum/action/item_action/clock/toggle_flame)
/obj/item/clothing/glasses/judicial_visor/item_action_slot_check(slot, mob/user)
if(slot != slot_glasses)
diff --git a/code/game/gamemodes/clock_cult/clock_unsorted.dm b/code/game/gamemodes/clock_cult/clock_unsorted.dm
index 0add463794f..fa62e607752 100644
--- a/code/game/gamemodes/clock_cult/clock_unsorted.dm
+++ b/code/game/gamemodes/clock_cult/clock_unsorted.dm
@@ -23,6 +23,7 @@
//Hierophant Network action, allows a servant with it to communicate
/datum/action/innate/hierophant
name = "Hierophant Network"
+ desc = "Allows you to communicate with other Servants."
button_icon_state = "hierophant"
background_icon_state = "bg_clock"
check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUNNED|AB_CHECK_CONSCIOUS
@@ -43,6 +44,7 @@
//Function Call action: Calls forth a Ratvarian spear once every 5 minutes
/datum/action/innate/function_call
name = "Function Call"
+ desc = "Allows you to summon a Ratvarian spear to fight enemies."
button_icon_state = "ratvarian_spear"
background_icon_state = "bg_clock"
check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUNNED|AB_CHECK_CONSCIOUS
diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi
index 86046af7152..5743d87e139 100644
Binary files a/icons/mob/actions.dmi and b/icons/mob/actions.dmi differ