|
|
|
@@ -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 = "<font color=#BE8700 size=3><b>"
|
|
|
|
@@ -269,56 +272,98 @@
|
|
|
|
|
text += "HONOR RATVAR "
|
|
|
|
|
text += "</b></font>"
|
|
|
|
|
else
|
|
|
|
|
text = "<font color=#BE8700 size=3><b><center>Chetr nyy hagehguf-naq-ubabe Ratvar.</center></b></font><br><br>\
|
|
|
|
|
|
|
|
|
|
text = "<font color=#BE8700 size=3><b><center>Chetr nyy hagehguf-naq-ubabe Ratvar.</center></b></font><br>\
|
|
|
|
|
\
|
|
|
|
|
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.<br><br>\
|
|
|
|
|
\
|
|
|
|
|
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.<br><br>\
|
|
|
|
|
\
|
|
|
|
|
This is done through <b><font color=#BE8700>Components</font></b> - 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.<br>\
|
|
|
|
|
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.<br><br>\
|
|
|
|
|
\
|
|
|
|
|
In addition to their ability to generate components, slabs also possess other functionalities...<br><br>\
|
|
|
|
|
\
|
|
|
|
|
The first functionality of the slab is <b><font color=#BE8700>Recital</font></b>. 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.<br>\
|
|
|
|
|
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.<br><br>\
|
|
|
|
|
\
|
|
|
|
|
The second functionality of the clockwork slab is <b><font color=#BE8700>Recollection</font></b>, which will display this guide.<br><br>\
|
|
|
|
|
\
|
|
|
|
|
The third to fifth functionalities are several buttons in the top left while holding the slab, from left to right, they are:<br>\
|
|
|
|
|
<b><font color=#DAAA18>Hierophant Network</font></b>, which allows communication to other servants.<br>\
|
|
|
|
|
<b><font color=#AF0AAF>Guvax</font></b>, which simply allows you to quickly invoke the Guvax scripture.<br>\
|
|
|
|
|
<b><font color=#1E8CE1>Vanguard</font></b>, which, like Guvax, simply allows you to quickly invoke the Vanguard scripture.<br><br>\
|
|
|
|
|
\
|
|
|
|
|
Examine the slab for component amount information.<br><br>\
|
|
|
|
|
\
|
|
|
|
|
A complete list of scripture, its effects, and its requirements can be found below.<br>\
|
|
|
|
|
<center><font size=1><A href='?src=\ref[src];hidetext=1'>[text_hidden ? "Show":"Hide"] Information</A></font></center><br>"
|
|
|
|
|
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 <b>5</b>"
|
|
|
|
|
production_time = production_time/600
|
|
|
|
|
var/production_text = "<b>[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 += "</b>"
|
|
|
|
|
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.<br><br>\
|
|
|
|
|
\
|
|
|
|
|
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 \
|
|
|
|
|
<b><font color=#BE8700>Components</font></b>, fragments of the Justicar, from Reebe, and those Components can be used to draw power and material from Reebe through arcane chants \
|
|
|
|
|
known as <b><font color=#BE8700>Scripture</font></b>.<br><br>\
|
|
|
|
|
\
|
|
|
|
|
One component of a random type is produced in this slab every [production_text].<br>\
|
|
|
|
|
<font color=#BE8700>Components</font> 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.<br>\
|
|
|
|
|
There are five types of component, and in general, <font color=#6E001A>Belligerent Eyes</font> are aggressive and judgemental, <font color=#1E8CE1>Vanguard Cogwheels</font> are defensive and \
|
|
|
|
|
repairing, <font color=#AF0AAF>Guvax Capacitors</font> are for conversion and control, <font color=#5A6068>Replicant Alloy</font> is for construction and fuel, and \
|
|
|
|
|
<font color=#DAAA18>Hierophant Ansibles</font> are for transmission and power, though in combination their effects become more nuanced.<br><br>\
|
|
|
|
|
\
|
|
|
|
|
There are also five tiers of <font color=#BE8700>Scripture</font>; <font color=#BE8700>[SCRIPTURE_DRIVER]</font>, <font color=#BE8700>[SCRIPTURE_SCRIPT]</font>, <font color=#BE8700>[SCRIPTURE_APPLICATION]</font>, <font color=#BE8700>[SCRIPTURE_REVENANT]</font>, and <font color=#BE8700>[SCRIPTURE_JUDGEMENT]</font>.<br>\
|
|
|
|
|
Each tier has additional requirements, including Servants, Tinkerer's Caches, and <b>Construction Value</b>(<b>CV</b>). Construction Value is gained by creating structures or converting the \
|
|
|
|
|
station, and everything too large to hold will grant some amount of it.<br><br>\
|
|
|
|
|
\
|
|
|
|
|
This would be a massive amount of information to try and keep track of, but all Servants have the <b><font color=#BE8700>Global Records</font></b> alert, which appears in the top right.<br>\
|
|
|
|
|
Mousing over that alert will display Servants, Caches, CV, and other information, such as the tiers of scripture that are unlocked.<br><br>\
|
|
|
|
|
\
|
|
|
|
|
On that note, <font color=#BE8700>Scripture</font> is recited through <b><font color=#BE8700>Recital</font></b>, the first and most important function of the slab.<br>\
|
|
|
|
|
All scripture requires some amount of <font color=#BE8700>Components</font> to recite, and only the weakest scripture does not consume any components when recited.<br>\
|
|
|
|
|
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.<br><br>\
|
|
|
|
|
\
|
|
|
|
|
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.<br>\
|
|
|
|
|
However, the most important scripture is <font color=#AF0AAF>Guvax</font>, which allows you to convert heathens with relative ease.<br><br>\
|
|
|
|
|
\
|
|
|
|
|
The second function of the clockwork slab is <b><font color=#BE8700>Recollection</font></b>, which will display this guide.<br><br>\
|
|
|
|
|
\
|
|
|
|
|
The third to fifth functions are three buttons in the top left while holding the slab.<br>From left to right, they are:<br>\
|
|
|
|
|
<b><font color=#DAAA18>Hierophant Network</font></b>, which allows communication to other Servants.<br>\
|
|
|
|
|
<b><font color=#AF0AAF>Guvax</font></b>, which simply allows you to quickly invoke the Guvax Driver.<br>\
|
|
|
|
|
<b><font color=#1E8CE1>Vanguard</font></b>, which, like the Guvax button, simply allows you to quickly invoke the Vanguard Driver.<br><br>\
|
|
|
|
|
\
|
|
|
|
|
Examine the slab to check the number of components it has available.<br><br>\
|
|
|
|
|
\
|
|
|
|
|
<center><font size=1><A href='?src=\ref[src];hidetext=1'>Hide Above Information</A></font></center><br>"
|
|
|
|
|
|
|
|
|
|
text += "A complete list of scripture, its effects, and its requirements can be found below.<br>\
|
|
|
|
|
Key:<br><font color=#6E001A>BE</font> = Belligerent Eyes<br>\
|
|
|
|
|
<font color=#1E8CE1>VC</font> = Vanguard Cogwheels<br>\
|
|
|
|
|
<font color=#AF0AAF>GC</font> = Guvax Capacitors<br>\
|
|
|
|
|
<font color=#5A6068>RA</font> = Replicant Alloy<br>\
|
|
|
|
|
<font color=#DAAA18>HA</font> = Hierophant Ansibles<br>"
|
|
|
|
|
var/text_to_add = ""
|
|
|
|
|
var/drivers = "<br><font color=#BE8700 size=3><b>[SCRIPTURE_DRIVER]</b></font><br><i>These scriptures are always unlocked.</i><br>"
|
|
|
|
|
var/scripts = "<br><font color=#BE8700 size=3><b>[SCRIPTURE_SCRIPT]</b></font><br><i>These scriptures require at least five servants and a tinkerer's cache.</i><br>"
|
|
|
|
|
var/applications = "<br><font color=#BE8700 size=3><b>[SCRIPTURE_APPLICATION]</b></font><br><i>These scriptures require at least eight servants, three tinkerer's caches, and 100CV.</i><br>"
|
|
|
|
|
var/revenant = "<br><font color=#BE8700 size=3><b>[SCRIPTURE_REVENANT]</b></font><br><i>These scriptures require at least ten servants and 200CV.</i><br>"
|
|
|
|
|
var/judgement = "<br><font color=#BE8700 size=3><b>[SCRIPTURE_JUDGEMENT]</b></font><br><i>These scriptures require at least twelve servants and 300CV. In addition, there may not be any active non-servant AIs.</i><br>"
|
|
|
|
|
var/drivers = "<br><font size=3><b><A href='?src=\ref[src];Driver=1'>[SCRIPTURE_DRIVER]</A></b></font><br><i>These scriptures are always unlocked.</i><br>"
|
|
|
|
|
var/scripts = "<br><font size=3><b><A href='?src=\ref[src];Script=1'>[SCRIPTURE_SCRIPT]</A></b></font><br><i>These scriptures require at least <b>5</b> Servants and \
|
|
|
|
|
<b>1</b> Tinkerer's Cache.</i><br>"
|
|
|
|
|
var/applications = "<br><font size=3><b><A href='?src=\ref[src];Application=1'>[SCRIPTURE_APPLICATION]</A></b></font><br><i>These scriptures require at least <b>8</b> Servants, \
|
|
|
|
|
<b>3</b> Tinkerer's Caches, and <b>100CV</b>.</i><br>"
|
|
|
|
|
var/revenant = "<br><font size=3><b><A href='?src=\ref[src];Revenant=1'>[SCRIPTURE_REVENANT]</A></b></font><br><i>These scriptures require at least <b>10</b> Servants, \
|
|
|
|
|
<b>4</b> Tinkerer's Caches, and <b>200CV</b>.</i><br>"
|
|
|
|
|
var/judgement = "<br><font size=3><b><A href='?src=\ref[src];Judgement=1'>[SCRIPTURE_JUDGEMENT]</A></b></font><br><i>This scripture requires at least <b>12</b> Servants, \
|
|
|
|
|
<b>5</b> Tinkerer's Caches, and <b>300CV</b>.<br>In addition, there may not be any active non-Servant AIs.</i><br>"
|
|
|
|
|
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 = "<br><b><font color=#BE8700>[initial(S.name)]</font>:</b><br>[initial(S.desc)]<br><b>Invocation Time:</b> <b>[initial(S.channel_time) / 10]</b> seconds<br>\
|
|
|
|
|
var/scripture_text = "<br><b><font color=#BE8700>[initial(S.name)]</font>:</b><br>[initial(S.desc)]<br><b>Invocation Time:</b> <b>[initial(S.channel_time) / 10]</b> second\s<br>\
|
|
|
|
|
[initial(S.invokers_required) > 1 ? "<b>Invokers Required:</b> <b>[initial(S.invokers_required)]</b><br>":""]\
|
|
|
|
|
<b>Component Requirement: </b>\
|
|
|
|
|
[req_comps["belligerent_eye"] ? "<font color=#6E001A><b>[req_comps["belligerent_eye"]]</b> BE</font>" : ""] \
|
|
|
|
|
[req_comps["vanguard_cogwheel"] ? "<font color=#1E8CE1><b>[req_comps["vanguard_cogwheel"]]</b> VC</font>" : ""] \
|
|
|
|
@@ -335,7 +380,7 @@
|
|
|
|
|
[cons_comps["hierophant_ansible"] ? "<font color=#DAAA18><b>[cons_comps["hierophant_ansible"]]</b> HA</font>" : ""]<br>"
|
|
|
|
|
break //we want this to only show up if the scripture has a cost of some sort
|
|
|
|
|
scripture_text += "<b>Tip:</b> [initial(S.usage_tip)]<br>"
|
|
|
|
|
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)
|
|
|
|
|