diff --git a/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm b/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm index b2358e79dc7..a1236afccf5 100644 --- a/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm +++ b/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm @@ -11,6 +11,8 @@ 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 + var/list/shown_scripture = list(SCRIPTURE_DRIVER = FALSE, SCRIPTURE_SCRIPT = FALSE, SCRIPTURE_APPLICATION = FALSE, SCRIPTURE_REVENANT = FALSE, SCRIPTURE_JUDGEMENT = FALSE) + var/text_hidden = FALSE var/obj/effect/proc_holder/slab/slab_ability //the slab's current bound ability, for certain scripture actions_types = list(/datum/action/item_action/clock/hierophant, /datum/action/item_action/clock/guvax, /datum/action/item_action/clock/vanguard) @@ -219,7 +221,8 @@ return recite_scripture(user) if("Recollection") - show_guide(user) + user.set_machine(src) + interact(user) if("Cancel") return return 1 @@ -261,7 +264,7 @@ return 1 //Guide to Serving Ratvar -/obj/item/clockwork/slab/proc/show_guide(mob/living/user) +/obj/item/clockwork/slab/interact(mob/living/user) var/text = "If you're seeing this, file a bug report." if(ratvar_awakens) text = "" @@ -269,56 +272,98 @@ text += "HONOR RATVAR " text += "" else - text = "
Chetr nyy hagehguf-naq-ubabe Ratvar.


\ + + text = "
Chetr nyy hagehguf-naq-ubabe Ratvar.

\ \ - First and foremost, you serve Ratvar, the Clockwork Justiciar, in any ways he sees fit. This is with no regard to your personal well-being, and you would do well to think of the larger \ - scale of things than your life. Through foul and unholy magics was the Celestial Derelict formed, and fouler still those which trapped your master within it for all eternity. The Justiciar \ - wishes retribution upon those who performed this terrible act upon him - the Nar-Sian cultists - and you are to help him obtain it.

\ - \ - This is not a trivial task. Due to the nature of his prison, Ratvar is incapable of directly influencing the mortal plane. There is, however, a workaround - links between the perceptible \ - universe and Reebe (the Celestial Derelict) can be created and utilized. This is typically done via the creation of a slab akin to the one you are holding right now. The slabs tap into the \ - tidal flow of energy and information keeping Reebe sealed and presents it as meaningless images to preserve sanity. This slab can utilize the power in many different ways.

\ - \ - This is done through Components - pieces of the Justiciar's body that have since fallen off in the countless years since his imprisonment. Ratvar's unfortunate condition results \ - in the fragmentation of his body. These components still house great power on their own, and can slowly be drawn from Reebe by links capable of doing so.
\ - The most basic of these links lies in the clockwork slab, which will slowly generate components over time - one component of a random type is produced every 1 minute and 30 seconds, plus 30 seconds per each servant above 5, \ - which is obviously inefficient. There are other, more efficient, ways to create these components through scripture and certain structures.

\ - \ - In addition to their ability to generate components, slabs also possess other functionalities...

\ - \ - The first functionality of the slab is Recital. This allows you to consume components either from your slab or from the global cache (more on that in the scripture list) to perform \ - effects usually considered magical in nature.
\ - Effects vary considerably, including mass conversion, construction of various structures, or causing a massive global hallucination. Nevertheless, scripture is extremely important to a successful takeover.

\ - \ - The second functionality of the clockwork slab is Recollection, which will display this guide.

\ - \ - The third to fifth functionalities are several buttons in the top left while holding the slab, from left to right, they are:
\ - Hierophant Network, which allows communication to other servants.
\ - Guvax, which simply allows you to quickly invoke the Guvax scripture.
\ - Vanguard, which, like Guvax, simply allows you to quickly invoke the Vanguard scripture.

\ - \ - Examine the slab for component amount information.

\ - \ - A complete list of scripture, its effects, and its requirements can be found below.
\ +
[text_hidden ? "Show":"Hide"] Information

" + if(!text_hidden) + var/servants = 0 + var/production_time = SLAB_PRODUCTION_TIME + for(var/mob/living/M in living_mob_list) + if(is_servant_of_ratvar(M) && (ishuman(M) || issilicon(M))) + servants++ + if(servants > 5) + servants -= 5 + production_time += min(SLAB_SERVANT_SLOWDOWN * servants, SLAB_SLOWDOWN_MAXIMUM) + var/production_text_addon = "" + if(production_time != SLAB_PRODUCTION_TIME+SLAB_SLOWDOWN_MAXIMUM) + production_text_addon = ", which increases for each human or silicon servant above 5" + production_time = production_time/600 + var/production_text = "[round(production_time)] minute\s" + if(production_time != round(production_time)) + production_time -= round(production_time) + production_time *= 60 + production_text += " and [round(production_time, 1)] second\s" + production_text += "" + production_text += production_text_addon + + text += "First and foremost, you serve Ratvar, the Clockwork Justicar, in any ways he sees fit. This is with no regard to your personal well-being, and you would do well to think of the larger \ + scale of things than your life. Ratvar wishes retribution upon those that trapped him in Reebe - the Nar-Sian cultists - and you are to help him obtain it.

\ + \ + Ratvar, being trapped in Reebe, the Celestial Derelict, cannot directly affect the mortal plane. However, links, such as this Clockwork Slab, can be created to draw \ + Components, fragments of the Justicar, from Reebe, and those Components can be used to draw power and material from Reebe through arcane chants \ + known as Scripture.

\ + \ + One component of a random type is produced in this slab every [production_text].
\ + Components are stored either within slabs, where they can only be accessed by that slab, or in the Global Cache accessed by Tinkerer's Caches, which all slabs \ + can draw from to recite scripture.
\ + There are five types of component, and in general, Belligerent Eyes are aggressive and judgemental, Vanguard Cogwheels are defensive and \ + repairing, Guvax Capacitors are for conversion and control, Replicant Alloy is for construction and fuel, and \ + Hierophant Ansibles are for transmission and power, though in combination their effects become more nuanced.

\ + \ + There are also five tiers of Scripture; [SCRIPTURE_DRIVER], [SCRIPTURE_SCRIPT], [SCRIPTURE_APPLICATION], [SCRIPTURE_REVENANT], and [SCRIPTURE_JUDGEMENT].
\ + Each tier has additional requirements, including Servants, Tinkerer's Caches, and Construction Value(CV). Construction Value is gained by creating structures or converting the \ + station, and everything too large to hold will grant some amount of it.

\ + \ + This would be a massive amount of information to try and keep track of, but all Servants have the Global Records alert, which appears in the top right.
\ + Mousing over that alert will display Servants, Caches, CV, and other information, such as the tiers of scripture that are unlocked.

\ + \ + On that note, Scripture is recited through Recital, the first and most important function of the slab.
\ + All scripture requires some amount of Components to recite, and only the weakest scripture does not consume any components when recited.
\ + However, weak is relative when it comes to scripture; even the 'weakest' could be enough to dominate a station in the hands of cunning Servants, and higher tiers of scripture are even \ + stronger in the right hands.

\ + \ + Some effects of scripture include granting the invoker a temporary complete immunity to stuns, summoning a turret that can attack anything that sets eyes on it, binding a powerful guardian \ + to the invoker, or even, at one of the highest tiers, granting all nearby Servants temporary invulnerability.
\ + However, the most important scripture is Guvax, which allows you to convert heathens with relative ease.

\ + \ + The second function of the clockwork slab is Recollection, which will display this guide.

\ + \ + The third to fifth functions are three buttons in the top left while holding the slab.
From left to right, they are:
\ + Hierophant Network, which allows communication to other Servants.
\ + Guvax, which simply allows you to quickly invoke the Guvax Driver.
\ + Vanguard, which, like the Guvax button, simply allows you to quickly invoke the Vanguard Driver.

\ + \ + Examine the slab to check the number of components it has available.

\ + \ +
Hide Above Information

" + + text += "A complete list of scripture, its effects, and its requirements can be found below.
\ Key:
BE = Belligerent Eyes
\ VC = Vanguard Cogwheels
\ GC = Guvax Capacitors
\ RA = Replicant Alloy
\ HA = Hierophant Ansibles
" var/text_to_add = "" - var/drivers = "
[SCRIPTURE_DRIVER]
These scriptures are always unlocked.
" - var/scripts = "
[SCRIPTURE_SCRIPT]
These scriptures require at least five servants and a tinkerer's cache.
" - var/applications = "
[SCRIPTURE_APPLICATION]
These scriptures require at least eight servants, three tinkerer's caches, and 100CV.
" - var/revenant = "
[SCRIPTURE_REVENANT]
These scriptures require at least ten servants and 200CV.
" - var/judgement = "
[SCRIPTURE_JUDGEMENT]
These scriptures require at least twelve servants and 300CV. In addition, there may not be any active non-servant AIs.
" + var/drivers = "
[SCRIPTURE_DRIVER]
These scriptures are always unlocked.
" + var/scripts = "
[SCRIPTURE_SCRIPT]
These scriptures require at least 5 Servants and \ + 1 Tinkerer's Cache.
" + var/applications = "
[SCRIPTURE_APPLICATION]
These scriptures require at least 8 Servants, \ + 3 Tinkerer's Caches, and 100CV.
" + var/revenant = "
[SCRIPTURE_REVENANT]
These scriptures require at least 10 Servants, \ + 4 Tinkerer's Caches, and 200CV.
" + var/judgement = "
[SCRIPTURE_JUDGEMENT]
This scripture requires at least 12 Servants, \ + 5 Tinkerer's Caches, and 300CV.
In addition, there may not be any active non-Servant AIs.

" for(var/V in sortList(subtypesof(/datum/clockwork_scripture), /proc/cmp_clockscripture_priority)) var/datum/clockwork_scripture/S = V - if(initial(S.tier) != SCRIPTURE_PERIPHERAL) + var/initial_tier = initial(S.tier) + if(initial_tier != SCRIPTURE_PERIPHERAL && shown_scripture[initial_tier]) var/datum/clockwork_scripture/S2 = new V var/list/req_comps = S2.required_components var/list/cons_comps = S2.consumed_components qdel(S2) - var/scripture_text = "
[initial(S.name)]:
[initial(S.desc)]
Invocation Time: [initial(S.channel_time) / 10] seconds
\ + var/scripture_text = "
[initial(S.name)]:
[initial(S.desc)]
Invocation Time: [initial(S.channel_time) / 10] second\s
\ + [initial(S.invokers_required) > 1 ? "Invokers Required: [initial(S.invokers_required)]
":""]\ Component Requirement: \ [req_comps["belligerent_eye"] ? "[req_comps["belligerent_eye"]] BE" : ""] \ [req_comps["vanguard_cogwheel"] ? "[req_comps["vanguard_cogwheel"]] VC" : ""] \ @@ -335,7 +380,7 @@ [cons_comps["hierophant_ansible"] ? "[cons_comps["hierophant_ansible"]] HA" : ""]
" break //we want this to only show up if the scripture has a cost of some sort scripture_text += "Tip: [initial(S.usage_tip)]
" - switch(initial(S.tier)) + switch(initial_tier) if(SCRIPTURE_DRIVER) drivers += scripture_text if(SCRIPTURE_SCRIPT) @@ -353,3 +398,22 @@ popup.set_content(text) popup.open() return 1 + +/obj/item/clockwork/slab/Topic(href, href_list) + . = ..() + if(.) + return . + + if(!usr || !src || !(src in usr) || usr.incapacitated()) + if(usr && usr.machine == src) + usr.unset_machine() + return 0 + + if(href_list["hidetext"]) + text_hidden = !text_hidden + + for(var/i in shown_scripture) + if(href_list[i]) + shown_scripture[i] = !shown_scripture[i] + + interact(usr) diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm index d7993e1f68a..755f3578b24 100644 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm +++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm @@ -159,7 +159,7 @@ observer_message = "A brass totem rises from the ground, a purple gem appearing in its center!" invokers_required = 2 multiple_invokers_used = TRUE - usage_tip = "If it fails to funnel power into a nearby Sigil of Transmission and fails to disable even one thing, it will disable itself for two minutes." + usage_tip = "If it fails to funnel power into a nearby Sigil of Transmission or the area's APC and fails to disable even one thing, it will disable itself for two minutes." tier = SCRIPTURE_APPLICATION one_per_tile = TRUE sort_priority = 6 diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm index e76712f992e..c93052a72dd 100644 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm +++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm @@ -10,6 +10,7 @@ chant_invocations = list("Punish their blindness!", "Take time, make slow!") chant_amount = 15 chant_interval = 20 + channel_time = 20 required_components = list("belligerent_eye" = 1) usage_tip = "Useful for crowd control in a populated area and disrupting mass movement." tier = SCRIPTURE_DRIVER diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_judgement.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_judgement.dm index eca17084448..3356a4e2d41 100644 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_judgement.dm +++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_judgement.dm @@ -6,8 +6,8 @@ /datum/clockwork_scripture/ark_of_the_clockwork_justiciar descname = "Win Condition" name = "Ark of the Clockwork Justiciar" - desc = "Pulls from the power of all of Ratvar's servants and generals to construct a massive machine used to tear apart a rift in spacetime to the Celestial Derelict. This gateway will \ - call forth Ratvar from his exile after some time." + desc = "Pulls from the power of all of Ratvar's servants and generals to construct a massive machine used to tear apart a rift in spacetime to Reebe, the Celestial Derelict.\n\ + This gateway will either call forth Ratvar from his exile if that is the task he has set you, or proselytize the entire station if it is not." invocations = list("ARMORER! FRIGHT! AMPERAGE! VANGUARD! I CALL UPON YOU!!", \ "THE TIME HAS COME FOR OUR MASTER TO BREAK THE CHAINS OF EXILE!!", \ "LEND US YOUR AID! ENGINE COMES!!") diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm index 21a198739d5..c73db11e929 100644 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm +++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm @@ -14,7 +14,7 @@ object_path = /obj/structure/destructible/clockwork/ocular_warden creator_message = "You form an ocular warden, which will focus its searing gaze upon nearby unenlightened." observer_message = "A brass eye takes shape and slowly rises into the air, its red iris glaring!" - usage_tip = "Although powerful, the warden is very weak and should optimally be placed behind barricades." + usage_tip = "Although powerful, the warden is very fragile and should optimally be placed behind barricades." tier = SCRIPTURE_SCRIPT one_per_tile = TRUE space_allowed = TRUE @@ -51,7 +51,7 @@ desc = "Equips the invoker and any nearby servants with Ratvarian armor. This armor provides high melee resistance but a weakness to lasers. \ It grows faster to invoke with more nearby servants." invocations = list("Shield me...", "...with the...", "... fragments of Engine!") - channel_time = 110 //effectively 100 because it counts the invoker + channel_time = 100 required_components = list("vanguard_cogwheel" = 2, "replicant_alloy" = 1) consumed_components = list("vanguard_cogwheel" = 1, "replicant_alloy" = 1) usage_tip = "Before using, advise adjacent allies to remove their helmets, external suits, gloves, and shoes." @@ -61,7 +61,7 @@ sort_priority = 4 /datum/clockwork_scripture/fellowship_armory/run_scripture() - for(var/mob/living/L in range(1, invoker)) + for(var/mob/living/L in orange(1, invoker)) if(is_servant_of_ratvar(L) && L.can_speak_vocal()) channel_time = max(channel_time - 10, 0) return ..() @@ -109,7 +109,7 @@ whispered = TRUE object_path = /obj/item/device/mmi/posibrain/soul_vessel creator_message = "You form a soul vessel, which can be used in-hand to attract spirits, or used on an unconscious or dead human to extract their consciousness." - usage_tip = "The vessel can be used as a teleport target for Spatial Gateway, though it is generally better-used by placing it in a shell." + usage_tip = "The vessel can be used as a teleport target for Spatial Gateway, though it is generally better-used by placing it in a shell or cyborg body." tier = SCRIPTURE_SCRIPT space_allowed = TRUE sort_priority = 6 @@ -127,7 +127,7 @@ whispered = TRUE object_path = /obj/item/clockwork/clockwork_proselytizer/preloaded creator_message = "You form a clockwork proselytizer, which is already pre-loaded with a small amount of replicant alloy." - usage_tip = "Clockwork walls cause adjacent tinkerer's caches to generate components passively, making them a vital tool. Clockwork floors heal servants standing on them." + usage_tip = "Clockwork Walls cause adjacent tinkerer's caches to generate components passively, making them a vital tool. Clockwork Floors heal toxin damage in servants standing on them." tier = SCRIPTURE_SCRIPT space_allowed = TRUE sort_priority = 7 diff --git a/code/game/gamemodes/clock_cult/clock_structures/interdiction_lens.dm b/code/game/gamemodes/clock_cult/clock_structures/interdiction_lens.dm index e2f161b7122..1c0cac1267f 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/interdiction_lens.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/interdiction_lens.dm @@ -36,6 +36,7 @@ toggle(0, user) /obj/structure/destructible/clockwork/powered/interdiction_lens/process() + . = ..() if(recharging > world.time) return if(disabled) diff --git a/code/game/gamemodes/clock_cult/clock_structures/tinkerers_daemon.dm b/code/game/gamemodes/clock_cult/clock_structures/tinkerers_daemon.dm index e15cf9eb1dd..503da4aa3ec 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/tinkerers_daemon.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/tinkerers_daemon.dm @@ -8,6 +8,7 @@ inactive_icon = "tinkerers_daemon" max_integrity = 100 obj_integrity = 100 + construction_value = 25 break_message = "The daemon shatters into millions of pieces!" debris = list(/obj/item/clockwork/alloy_shards/large = 2, \ /obj/item/clockwork/alloy_shards/medium = 4, \