diff --git a/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm
index 89b533f079..308a34e9a2 100644
--- a/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm
+++ b/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm
@@ -98,32 +98,24 @@
var/mob/living/L = M.current
if(ishuman(L) && L.stat != DEAD)
human_servants++
- construct_limit = human_servants / 4 //1 per 4 human servants, and a maximum of 3 marauders
- construct_limit = CLAMP(construct_limit - recent_marauders, 1, 3)
+ construct_limit = round(CLAMP((human_servants / 4), 1, 3)) - recent_marauders //1 per 4 human servants, maximum of 3, reduced by recent marauder creation
if(recent_marauders)
- to_chat(invoker, "The Hierophant Network needs [MARAUDER_SCRIPTURE_SCALING_THRESHOLD / 10] seconds to recover from marauder summoning; recent summoning has limited the number of available marauders by [recent_marauders]!")
+ to_chat(invoker, "The Hierophant Network is depleted by a summoning in the last [MARAUDER_SCRIPTURE_SCALING_THRESHOLD / 10] seconds - limiting the number of available marauders by [recent_marauders]!")
/datum/clockwork_scripture/create_object/construct/clockwork_marauder/pre_recital()
channel_time = initial(channel_time)
- calculate_scaling()
- if(scaled_recital_time)
+ if(recent_marauders)
+ scaled_recital_time = min(recent_marauders * MARAUDER_SCRIPTURE_SCALING_TIME, MARAUDER_SCRIPTURE_SCALING_MAX)
to_chat(invoker, "The Hierophant Network is under strain from repeated summoning, making this scripture [scaled_recital_time / 10] seconds slower!")
channel_time += scaled_recital_time
return TRUE
/datum/clockwork_scripture/create_object/construct/clockwork_marauder/scripture_effects()
. = ..()
- time_since_last_marauder = world.time
recent_marauders++
- calculate_scaling()
+ addtimer(CALLBACK(GLOBAL_PROC, .proc/marauder_reset),MARAUDER_SCRIPTURE_SCALING_THRESHOLD)
-/datum/clockwork_scripture/create_object/construct/clockwork_marauder/proc/calculate_scaling()
- var/WT = world.time
- var/MT = time_since_last_marauder //Cast it for quicker reference
- var/marauders_to_exclude = 0
- if(world.time >= time_since_last_marauder + MARAUDER_SCRIPTURE_SCALING_THRESHOLD)
- marauders_to_exclude = round(WT - MT) / MARAUDER_SCRIPTURE_SCALING_THRESHOLD //If at least 20 seconds have passed, lose one marauder for each 20 seconds
- //i.e. world.time = 10000, last marauder = 9000, so we lose 5 marauders from the recent count since 10k - 9k = 1k, 1k / 200 = 5
- time_since_last_marauder = world.time //So that it can't be spammed to make the marauder exclusion plummet; this emulates "ticking"
- recent_marauders = max(0, recent_marauders - marauders_to_exclude)
- scaled_recital_time = min(recent_marauders * MARAUDER_SCRIPTURE_SCALING_TIME, MARAUDER_SCRIPTURE_SCALING_MAX)
+/proc/marauder_reset()
+ var/datum/clockwork_scripture/create_object/construct/clockwork_marauder/CM = new()
+ CM.recent_marauders--
+ qdel(CM)
\ No newline at end of file