diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index 5f5d2a17240..903ca7902ba 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -241,13 +241,67 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
alerttooltipstyle = "blob"
// CLOCKCULT
-/obj/screen/alert/nocache
+/obj/screen/alert/clockwork
+ alerttooltipstyle = "clockcult"
+
+/obj/screen/alert/clockwork/nocache
name = "No Tinkerer's Cache"
desc = "In order to share components and unlock higher tier \
scripture, a tinkerer's cache must be constructed somewhere \
in the world. Try to place it somewhere accessible, yet hidden."
icon_state = "nocache"
+/obj/screen/alert/clockwork/infodump
+ name = "Global Records"
+ desc = "You shouldn't be seeing this description, because it should be dynamically generated."
+ icon_state = "clockinfo"
+
+/obj/screen/alert/clockwork/infodump/MouseEntered(location,control,params)
+ if(ratvar_awakens)
+ desc = "Chetr nyy hagehguf-naq-ubabe Ratvar."
+ else
+ var/servants = 0
+ var/validservants = 0
+ var/unconverted_ai_exists = FALSE
+ var/list/scripture_states = get_scripture_states()
+ for(var/mob/living/L in living_mob_list)
+ if(is_servant_of_ratvar(L))
+ servants++
+ if(ishuman(L) || issilicon(L))
+ validservants++
+ else if(isAI(L))
+ unconverted_ai_exists = TRUE
+ if(servants > 1)
+ if(validservants > 1)
+ desc = "[servants] Servants, [validservants] of which count towards scripture.
"
+ else
+ desc = "[servants] Servants, [validservants ? "[validservants] of which counts":"none of which count"] towards scripture.
"
+ else
+ desc = "[servants] Servant, who [validservants ? "counts":"does not count"] towards scripture.
"
+ desc += "[clockwork_caches ? "[clockwork_caches] Tinkerer's Caches.":"No Tinkerer's Caches, construct one!"]
\
+ [clockwork_construction_value] Construction Value.
"
+ if(clockwork_daemons)
+ desc += "[clockwork_daemons] Tinkerer's Daemons: [servants * 0.2 < clockwork_daemons ? "DISABLED":"ACTIVE"]
"
+ else
+ desc += "No Tinkerer's Daemons.
"
+ if(unconverted_ai_exists)
+ desc += "An unconverted AI exists!
"
+ if(scripture_states["Revenant"])
+ var/inathneq_available = clockwork_generals_invoked["inath-neq"] <= world.time
+ var/sevtug_available = clockwork_generals_invoked["sevtug"] <= world.time
+ var/nezbere_available = clockwork_generals_invoked["nezbere"] <= world.time
+ var/nezcrentr_available = clockwork_generals_invoked["nzcrentr"] <= world.time
+ if(inathneq_available || sevtug_available || nezbere_available || nezcrentr_available)
+ desc += "Generals available:
[inathneq_available ? "INATH-NEQ
":""][sevtug_available ? "SEVTUG
":""]\
+ [nezbere_available ? "NEZBERE
":""][nezcrentr_available ? "NZCRENTR":""]
"
+ else
+ desc += "Generals available: NONE
"
+ else
+ desc += "Generals available: NONE
"
+ for(var/i in scripture_states)
+ desc += "[i] Scripture: [scripture_states[i] ? "UNLOCKED":"LOCKED"]
"
+ ..()
+
//GUARDIANS
/obj/screen/alert/cancharge
diff --git a/code/game/gamemodes/clock_cult/clock_cult.dm b/code/game/gamemodes/clock_cult/clock_cult.dm
index fbf0b21d25a..2fb713dc4ac 100644
--- a/code/game/gamemodes/clock_cult/clock_cult.dm
+++ b/code/game/gamemodes/clock_cult/clock_cult.dm
@@ -135,6 +135,7 @@ This file's folder contains:
if(istype(ticker.mode, /datum/game_mode/clockwork_cult))
var/datum/game_mode/clockwork_cult/C = ticker.mode
C.present_tasks(M) //Memorize the objectives
+ M.throw_alert("clockinfo", /obj/screen/alert/clockwork/infodump)
cache_check(M)
return 1
@@ -155,6 +156,7 @@ This file's folder contains:
M.languages_understood &= ~RATVAR
M.update_action_buttons_icon() //because a few clockcult things are action buttons and we may be wearing/holding them, we need to update buttons
M.attack_log += "\[[time_stamp()]\] Has renounced the cult of Ratvar!"
+ M.clear_alert("clockinfo")
M.clear_alert("nocache")
for(var/datum/action/innate/function_call/F in M.actions) //Removes any bound Ratvarian spears
qdel(F)
diff --git a/code/game/gamemodes/clock_cult/clock_items.dm b/code/game/gamemodes/clock_cult/clock_items.dm
index efe337bcb0c..31d16e11498 100644
--- a/code/game/gamemodes/clock_cult/clock_items.dm
+++ b/code/game/gamemodes/clock_cult/clock_items.dm
@@ -185,14 +185,14 @@
user << "[src] refuses to work, displaying the message: \"[busy]!\""
return 0
if(!nonhuman_usable && !ishuman(user))
- show_stats(user) //if it's not human, show it stats
+ user << "[src] hums fitfully in your hands, but doesn't seem to do anything..."
return 0
access_display(user)
/obj/item/clockwork/slab/proc/access_display(mob/living/user)
if(!is_servant_of_ratvar(user))
return 0
- var/action = alert(user, "Among the swathes of information, you see...", "[src]", "Recital", "Recollection", "Records")
+ var/action = alert(user, "Among the swathes of information, you see...", "[src]", "Recital", "Recollection", "Cancel")
if(!action || !user.canUseTopic(src))
return 0
switch(action)
@@ -201,10 +201,10 @@
user << "You need to hold the slab in your active hand to recite scripture!"
return
recite_scripture(user)
- if("Records")
- show_stats(user)
if("Recollection")
show_guide(user)
+ if("Cancel")
+ return
return 1
/obj/item/clockwork/slab/proc/recite_scripture(mob/living/user)
@@ -256,25 +256,6 @@
scripture_to_recite.run_scripture()
return 1
-/obj/item/clockwork/slab/proc/show_stats(mob/living/user) //A bit barebones, but there really isn't any more needed
- var/servants = 0
- var/validservants = 0
- for(var/mob/living/L in living_mob_list)
- if(is_servant_of_ratvar(L))
- servants++
- if(ishuman(L) || issilicon(L))
- validservants++
- user << "State of the Enlightened"
- user << "Total servants: [servants]"
- user << "Servants valid for scripture unlock: [validservants]"
- user << "Total construction value: [clockwork_construction_value]"
- user << "Total tinkerer's caches: [clockwork_caches]"
- user << "Total tinkerer's daemons: [clockwork_daemons] ([servants / 5 < clockwork_daemons ? "DISABLED: Too few servants (5 servants per daemon)!" : "Functioning Normally"])"
- user << "Nezbere: [clockwork_generals_invoked["nezbere"] <= world.time ? "Ready" : "Invoked"]"
- user << "Sevtug: [clockwork_generals_invoked["sevtug"] <= world.time ? "Ready" : "Invoked"]"
- user << "Nzcrentr: [clockwork_generals_invoked["nzcrentr"] <= world.time ? "Ready" : "Invoked"]"
- user << "Inath-neq: [clockwork_generals_invoked["inath-neq"] <= world.time ? "Ready" : "Invoked"]"
-
/obj/item/clockwork/slab/proc/show_guide(mob/living/user)
var/text = "