mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 21:48:39 +01:00
You can now quickbind most Scripture to action buttons (#21379)
* You can now quickbind most Scripture to action buttons * fixes * short descs * slow updating may be bad * that'd be very bad * no flickering * center * short&sweet * fixes
This commit is contained in:
+8
-10
@@ -82,6 +82,8 @@
|
||||
|
||||
/datum/action/proc/UpdateButtonIcon()
|
||||
if(button)
|
||||
button.name = name
|
||||
button.desc = desc
|
||||
button.icon = button_icon
|
||||
button.icon_state = background_icon_state
|
||||
|
||||
@@ -207,11 +209,9 @@
|
||||
if(H.friendly_fire_check)
|
||||
button_icon_state = "vortex_ff_off"
|
||||
name = "Toggle Friendly Fire \[OFF\]"
|
||||
button.name = name
|
||||
else
|
||||
button_icon_state = "vortex_ff_on"
|
||||
name = "Toggle Friendly Fire \[ON\]"
|
||||
button.name = name
|
||||
..()
|
||||
|
||||
/datum/action/item_action/vortex_recall
|
||||
@@ -253,15 +253,13 @@
|
||||
desc = "Allows you to communicate with other Servants."
|
||||
button_icon_state = "hierophant_slab"
|
||||
|
||||
/datum/action/item_action/clock/guvax
|
||||
name = "Guvax"
|
||||
desc = "Allows you to convert an adjacent target nonservant. Click your slab to disable."
|
||||
button_icon_state = "guvax_capacitor"
|
||||
/datum/action/item_action/clock/quickbind_one
|
||||
name = "Quickbind"
|
||||
desc = "If you're seeing this, file a bug report."
|
||||
|
||||
/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/clock/quickbind_two
|
||||
name = "Quickbind"
|
||||
desc = "If you're seeing this, file a bug report."
|
||||
|
||||
/datum/action/item_action/toggle_helmet_flashlight
|
||||
name = "Toggle Helmet Flashlight"
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
if(HIEROPHANT_ANSIBLE)
|
||||
return "nzcrentr"
|
||||
else
|
||||
return null
|
||||
return "brass"
|
||||
|
||||
//returns a component color from a component id, but with a brighter replicant alloy color
|
||||
/proc/get_component_color_brightalloy(id)
|
||||
|
||||
@@ -90,7 +90,6 @@
|
||||
strip_delay = 50
|
||||
put_on_delay = 30
|
||||
body_parts_covered = ARMS
|
||||
resistance_flags = 0
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
|
||||
@@ -13,8 +13,11 @@
|
||||
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/compact_scripture = 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)
|
||||
var/datum/clockwork_scripture/quickbind_slot_one //these are paths, not instances
|
||||
var/datum/clockwork_scripture/quickbind_slot_two //accordingly, use initial() for non-list vars
|
||||
actions_types = list(/datum/action/item_action/clock/hierophant, /datum/action/item_action/clock/quickbind_one, /datum/action/item_action/clock/quickbind_two)
|
||||
|
||||
/obj/item/clockwork/slab/starter
|
||||
stored_components = list(BELLIGERENT_EYE = 1, VANGUARD_COGWHEEL = 1, GUVAX_CAPACITOR = 1, REPLICANT_ALLOY = 1, HIEROPHANT_ANSIBLE = 1)
|
||||
@@ -38,6 +41,8 @@
|
||||
|
||||
/obj/item/clockwork/slab/New()
|
||||
..()
|
||||
quickbind_to_one(/datum/clockwork_scripture/ranged_ability/guvax_prep)
|
||||
quickbind_to_two(/datum/clockwork_scripture/vanguard)
|
||||
START_PROCESSING(SSobj, src)
|
||||
production_time = world.time + SLAB_PRODUCTION_TIME
|
||||
|
||||
@@ -91,8 +96,12 @@
|
||||
..()
|
||||
if(is_servant_of_ratvar(user) || isobserver(user))
|
||||
user << "Use the <span class='brass'>Hierophant Network</span> action button to communicate with other servants."
|
||||
user << "Clockwork slabs will only generate components if held by a human or if inside a storage item held by a human, and when generating a component will prevent all other slabs held from generating components.<br>"
|
||||
user << "Attacking a slab, a fellow Servant with a slab, or a cache with this slab will transfer this slab's components into that slab's components, their slab's components, or the global cache, respectively."
|
||||
user << "Clockwork slabs will only make components if held or if inside an item held by a human, and when making a component will prevent all other slabs held from making components."
|
||||
user << "Hitting a slab, a Servant with a slab, or a cache will <b>transfer</b> this slab's components into the target, the target's slab, or the global cache, respectively."
|
||||
if(quickbind_slot_one)
|
||||
user << "Quickbind button One: <span class='[get_component_span(initial(quickbind_slot_one.primary_component))]'>[initial(quickbind_slot_one.name)]</span>"
|
||||
if(quickbind_slot_two)
|
||||
user << "Quickbind button Two: <span class='[get_component_span(initial(quickbind_slot_two.primary_component))]'>[initial(quickbind_slot_two.name)]</span>"
|
||||
if(clockwork_caches)
|
||||
user << "<b>Stored components (with global cache):</b>"
|
||||
for(var/i in stored_components)
|
||||
@@ -150,31 +159,15 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
//Slab actions; Hierophant, Guvax, Vanguard
|
||||
//Slab actions; Hierophant, Quickbind One and Two
|
||||
/obj/item/clockwork/slab/ui_action_click(mob/user, actiontype)
|
||||
switch(actiontype)
|
||||
if(/datum/action/item_action/clock/hierophant)
|
||||
show_hierophant(user)
|
||||
if(/datum/action/item_action/clock/guvax)
|
||||
if(!nonhuman_usable && !ishuman(user))
|
||||
return
|
||||
if(src == user.get_active_held_item())
|
||||
var/datum/clockwork_scripture/ranged_ability/guvax_prep/convert = new
|
||||
convert.slab = src
|
||||
convert.invoker = user
|
||||
convert.run_scripture()
|
||||
else
|
||||
user << "<span class='warning'>You need to hold the slab in your active hand to recite scripture!</span>"
|
||||
if(/datum/action/item_action/clock/vanguard)
|
||||
if(!nonhuman_usable && !ishuman(user))
|
||||
return
|
||||
if(src == user.get_active_held_item())
|
||||
var/datum/clockwork_scripture/vanguard/antistun = new
|
||||
antistun.slab = src
|
||||
antistun.invoker = user
|
||||
antistun.run_scripture()
|
||||
else
|
||||
user << "<span class='warning'>You need to hold the slab in your active hand to recite scripture!</span>"
|
||||
if(/datum/action/item_action/clock/quickbind_one)
|
||||
recite_scripture(quickbind_slot_one, user, FALSE)
|
||||
if(/datum/action/item_action/clock/quickbind_two)
|
||||
recite_scripture(quickbind_slot_two, user, FALSE)
|
||||
|
||||
/obj/item/clockwork/slab/proc/show_hierophant(mob/living/user)
|
||||
var/message = stripped_input(user, "Enter a message to send to your fellow servants.", "Hierophant")
|
||||
@@ -216,10 +209,7 @@
|
||||
return 0
|
||||
switch(action)
|
||||
if("Recital")
|
||||
if(user.get_active_held_item() != src)
|
||||
user << "<span class='warning'>You need to hold the slab in your active hand to recite scripture!</span>"
|
||||
return
|
||||
recite_scripture(user)
|
||||
try_recite_scripture(user)
|
||||
if("Recollection")
|
||||
user.set_machine(src)
|
||||
interact(user)
|
||||
@@ -227,7 +217,7 @@
|
||||
return
|
||||
return 1
|
||||
|
||||
/obj/item/clockwork/slab/proc/recite_scripture(mob/living/user)
|
||||
/obj/item/clockwork/slab/proc/try_recite_scripture(mob/living/user)
|
||||
var/list/tiers_of_scripture = scripture_unlock_check()
|
||||
for(var/i in tiers_of_scripture)
|
||||
if(!tiers_of_scripture[i] && !ratvar_awakens && !no_cost)
|
||||
@@ -235,33 +225,38 @@
|
||||
tiers_of_scripture -= i
|
||||
var/scripture_tier = input(user, "Choose a category of scripture to recite.", "[src]") as null|anything in tiers_of_scripture
|
||||
if(!scripture_tier || !user.canUseTopic(src))
|
||||
return 0
|
||||
return FALSE
|
||||
var/list/available_scriptures = list()
|
||||
var/datum/clockwork_scripture/scripture_to_recite
|
||||
switch(scripture_tier)
|
||||
if(SCRIPTURE_DRIVER,SCRIPTURE_SCRIPT,SCRIPTURE_APPLICATION,SCRIPTURE_REVENANT,SCRIPTURE_JUDGEMENT); //; for the empty if
|
||||
else
|
||||
user << "<span class='warning'>That section of scripture is still locked!</span>"
|
||||
return 0
|
||||
return FALSE
|
||||
for(var/S in sortList(subtypesof(/datum/clockwork_scripture), /proc/cmp_clockscripture_priority))
|
||||
var/datum/clockwork_scripture/C = S
|
||||
if(initial(C.tier) == scripture_tier)
|
||||
available_scriptures["[initial(C.name)] ([initial(C.descname)])"] = C
|
||||
if(!available_scriptures.len)
|
||||
return 0
|
||||
return FALSE
|
||||
var/chosen_scripture_key = input(user, "Choose a piece of scripture to recite.", "[src]") as null|anything in available_scriptures
|
||||
var/datum/clockwork_scripture/chosen_scripture = available_scriptures[chosen_scripture_key]
|
||||
if(!chosen_scripture || !user.canUseTopic(src) || user.get_active_held_item() != src)
|
||||
return 0
|
||||
tiers_of_scripture = scripture_unlock_check()
|
||||
if(!ratvar_awakens && !no_cost && !tiers_of_scripture[initial(chosen_scripture.tier)])
|
||||
user << "<span class='warning'>That scripture is no longer unlocked, and cannot be recited!</span>"
|
||||
return 0
|
||||
scripture_to_recite = new chosen_scripture
|
||||
return recite_scripture(chosen_scripture, user, TRUE)
|
||||
|
||||
/obj/item/clockwork/slab/proc/recite_scripture(datum/clockwork_scripture/scripture, mob/living/user, delayed)
|
||||
if(!scripture || !user || !user.canUseTopic(src) || (!nonhuman_usable && !ishuman(user)))
|
||||
return FALSE
|
||||
if(user.get_active_held_item() != src)
|
||||
user << "<span class='warning'>You need to hold the slab in your active hand to recite scripture!</span>"
|
||||
return FALSE
|
||||
var/list/tiers_of_scripture = scripture_unlock_check()
|
||||
if(!ratvar_awakens && !no_cost && !tiers_of_scripture[initial(scripture.tier)])
|
||||
user << "<span class='warning'>That scripture is no[delayed ? " longer":"t"] unlocked, and cannot be recited!</span>"
|
||||
return FALSE
|
||||
var/datum/clockwork_scripture/scripture_to_recite = new scripture
|
||||
scripture_to_recite.slab = src
|
||||
scripture_to_recite.invoker = user
|
||||
scripture_to_recite.run_scripture()
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
//Guide to Serving Ratvar
|
||||
/obj/item/clockwork/slab/interact(mob/living/user)
|
||||
@@ -304,7 +299,7 @@
|
||||
<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>\
|
||||
One component of a random type is made 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 \
|
||||
@@ -327,31 +322,33 @@
|
||||
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 second function of the clockwork slab is <b><font color=#BE8700>Recollection</font></b>, which will display this guide and allows for the quickbinding and <font color=#BE8700>recital</font> \
|
||||
of scripture.<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>\
|
||||
<b>Quickbind slot One</b>, currently set to <b><font color=[get_component_color_brightalloy(initial(quickbind_slot_one.primary_component))]>[initial(quickbind_slot_one.name)]</font></b>.<br>\
|
||||
<b>Quickbind slot Two</b>, currently set to <b><font color=[get_component_color_brightalloy(initial(quickbind_slot_two.primary_component))]>[initial(quickbind_slot_two.name)]</font></b>.<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>"
|
||||
text += "A complete list of scripture, its effects, and its requirements can be found, and thus <b>Quickbound</b> to this slab, below.<br>\
|
||||
<font size=1>Key:<br>"
|
||||
for(var/i in clockwork_component_cache)
|
||||
text += "<font color=[get_component_color_brightalloy(i)]>[get_component_acronym(i)]</font> = [get_component_name(i)][i != REPLICANT_ALLOY ? "s":""]<br>"
|
||||
text += "<b><font color=[get_component_color_brightalloy(i)]>[get_component_acronym(i)]</font></b> = [get_component_name(i)][i != REPLICANT_ALLOY ? "s":""]<br>"
|
||||
text += "</font><br><center><font size=1><A href='?src=\ref[src];compactscripture=1'>Compact Scripture Text: [compact_scripture ? "ON":"OFF"]</A></font></center><br>"
|
||||
var/text_to_add = ""
|
||||
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>"
|
||||
var/drivers = "<br><b><A href='?src=\ref[src];Driver=1'>[SCRIPTURE_DRIVER]</A></b><br><font size=1><i>These scriptures are always unlocked.</i>[compact_scripture ? "":"</font>"]<br>"
|
||||
var/scripts = "<br><b><A href='?src=\ref[src];Script=1'>[SCRIPTURE_SCRIPT]</A></b><br><font size=1><i>These scriptures require at least <b>5</b> Servants and \
|
||||
<b>1</b> Tinkerer's Cache.</i>[compact_scripture ? "":"</font>"]<br>"
|
||||
var/applications = "<br><b><A href='?src=\ref[src];Application=1'>[SCRIPTURE_APPLICATION]</A></b><br><font size=1><i>These scriptures require at least <b>8</b> Servants, \
|
||||
<b>3</b> Tinkerer's Caches, and <b>100CV</b>.</i>[compact_scripture ? "":"</font>"]<br>"
|
||||
var/revenant = "<br><b><A href='?src=\ref[src];Revenant=1'>[SCRIPTURE_REVENANT]</A></b><br><font size=1><i>These scriptures require at least <b>10</b> Servants, \
|
||||
<b>4</b> Tinkerer's Caches, and <b>200CV</b>.</i>[compact_scripture ? "":"</font>"]<br>"
|
||||
var/judgement = "<br><b><A href='?src=\ref[src];Judgement=1'>[SCRIPTURE_JUDGEMENT]</A></b><br><font size=1><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>[compact_scripture ? "":"</font>"]<br>"
|
||||
for(var/V in sortList(subtypesof(/datum/clockwork_scripture), /proc/cmp_clockscripture_priority))
|
||||
var/datum/clockwork_scripture/S = V
|
||||
var/initial_tier = initial(S.tier)
|
||||
@@ -360,20 +357,27 @@
|
||||
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> second\s<br>\
|
||||
[initial(S.invokers_required) > 1 ? "<b>Invokers Required:</b> <b>[initial(S.invokers_required)]</b><br>":""]\
|
||||
<b>Component Requirement: </b>"
|
||||
var/scripture_text = "<br><b><font color=[get_component_color_brightalloy(initial(S.primary_component))]>[initial(S.name)]</font>:</b>"
|
||||
if(!compact_scripture)
|
||||
scripture_text += "<br>[initial(S.desc)]<br><b>Invocation Time:</b> <b>[initial(S.channel_time) / 10]</b> second\s\
|
||||
[initial(S.invokers_required) > 1 ? "<br><b>Invokers Required:</b> <b>[initial(S.invokers_required)]</b>":""]\
|
||||
<br><b>Component Requirement:</b>"
|
||||
for(var/i in req_comps)
|
||||
if(req_comps[i])
|
||||
scripture_text += "<font color=[get_component_color_brightalloy(i)]><b>[req_comps[i]]</b> [get_component_acronym(i)]</font> "
|
||||
for(var/a in cons_comps)
|
||||
if(cons_comps[a])
|
||||
scripture_text += "<br><b>Component Cost:</b> "
|
||||
for(var/i in cons_comps)
|
||||
if(cons_comps[i])
|
||||
scripture_text += "<font color=[get_component_color_brightalloy(i)]><b>[cons_comps[i]]</b> [get_component_acronym(i)]</font> "
|
||||
break //we want this to only show up if the scripture has a cost of some sort
|
||||
scripture_text += "<br><b>Tip:</b> [initial(S.usage_tip)]<br>"
|
||||
scripture_text += " <font color=[get_component_color_brightalloy(i)]><b>[req_comps[i]]</b> [get_component_acronym(i)]</font>"
|
||||
if(!compact_scripture)
|
||||
for(var/a in cons_comps)
|
||||
if(cons_comps[a])
|
||||
scripture_text += "<br><b>Component Cost:</b>"
|
||||
for(var/i in cons_comps)
|
||||
if(cons_comps[i])
|
||||
scripture_text += " <font color=[get_component_color_brightalloy(i)]><b>[cons_comps[i]]</b> [get_component_acronym(i)]</font>"
|
||||
break //we want this to only show up if the scripture has a cost of some sort
|
||||
scripture_text += "<br><b>Tip:</b> [initial(S.usage_tip)]"
|
||||
if(initial(S.quickbind))
|
||||
scripture_text += "<br><font color=#BE8700 size=1>[S == quickbind_slot_one || S == quickbind_slot_two ? "Currently Quickbound":\
|
||||
"<A href='?src=\ref[src];Quickbindone=[S]'>Quickbind to button One</A>| <A href='?src=\ref[src];Quickbindtwo=[S]'>Quickbind to button Two</A>"]</font>"
|
||||
scripture_text += "<br><b><A href='?src=\ref[src];Recite=[S]'>Recite</A></b><br>"
|
||||
switch(initial_tier)
|
||||
if(SCRIPTURE_DRIVER)
|
||||
drivers += scripture_text
|
||||
@@ -385,8 +389,11 @@
|
||||
revenant += scripture_text
|
||||
if(SCRIPTURE_JUDGEMENT)
|
||||
judgement += scripture_text
|
||||
text_to_add += "[drivers]<br>[scripts]<br>[applications]<br>[revenant]<br>[judgement]<br>"
|
||||
text_to_add += "<font color=#BE8700 size=3><b><center>Purge all untruths and honor Ratvar.</center></b></font>"
|
||||
if(compact_scripture)
|
||||
text_to_add += "[drivers]</font>[scripts]</font>[applications]</font>[revenant]</font>[judgement]</font>"
|
||||
else
|
||||
text_to_add += "[drivers][scripts][applications][revenant][judgement]"
|
||||
text_to_add += "<br><font color=#BE8700 size=3><b><center>Purge all untruths and honor Ratvar.</center></b></font>"
|
||||
text += text_to_add
|
||||
var/datum/browser/popup = new(user, "slab", "", 600, 500)
|
||||
popup.set_content(text)
|
||||
@@ -403,11 +410,49 @@
|
||||
usr.unset_machine()
|
||||
return 0
|
||||
|
||||
if(href_list["Recite"])
|
||||
href_list["Recite"] = text2path(href_list["Recite"])
|
||||
addtimer(src, "recite_scripture", 0, FALSE, href_list["Recite"], usr, FALSE)
|
||||
return
|
||||
|
||||
if(href_list["Quickbindone"])
|
||||
quickbind_to_one(href_list["Quickbindone"])
|
||||
|
||||
if(href_list["Quickbindtwo"])
|
||||
quickbind_to_two(href_list["Quickbindtwo"])
|
||||
|
||||
if(href_list["hidetext"])
|
||||
text_hidden = !text_hidden
|
||||
|
||||
if(href_list["compactscripture"])
|
||||
compact_scripture = !compact_scripture
|
||||
|
||||
for(var/i in shown_scripture)
|
||||
if(href_list[i])
|
||||
shown_scripture[i] = !shown_scripture[i]
|
||||
|
||||
interact(usr)
|
||||
|
||||
/obj/item/clockwork/slab/proc/quickbind_to_one(datum/clockwork_scripture/scripture) //takes a typepath(typecast for initial()) and binds it to slot 1
|
||||
if(!ispath(scripture) && istext(scripture))
|
||||
scripture = text2path(scripture) //if given as a href, the scripture will be a string and not a path. obviously, we need a path and not a string
|
||||
if(!scripture || quickbind_slot_two == scripture)
|
||||
return
|
||||
quickbind_slot_one = scripture
|
||||
for(var/datum/action/item_action/clock/quickbind_one/O in actions)
|
||||
O.name = initial(quickbind_slot_one.name)
|
||||
O.desc = initial(quickbind_slot_one.quickbind_desc)
|
||||
O.button_icon_state = initial(quickbind_slot_one.name)
|
||||
O.UpdateButtonIcon()
|
||||
|
||||
/obj/item/clockwork/slab/proc/quickbind_to_two(datum/clockwork_scripture/scripture) //takes a typepath(typecast for initial()) and binds it to slot 2
|
||||
if(!ispath(scripture) && istext(scripture))
|
||||
scripture = text2path(scripture) //if given as a href, the scripture will be a string and not a path. obviously, we need a path and not a string
|
||||
if(!scripture || quickbind_slot_one == scripture)
|
||||
return
|
||||
quickbind_slot_two = scripture
|
||||
for(var/datum/action/item_action/clock/quickbind_two/O in actions)
|
||||
O.name = initial(quickbind_slot_two.name)
|
||||
O.desc = initial(quickbind_slot_two.quickbind_desc)
|
||||
O.button_icon_state = initial(quickbind_slot_two.name)
|
||||
O.UpdateButtonIcon()
|
||||
|
||||
@@ -25,6 +25,9 @@ Judgement: 12 servants, 5 caches, 300 CV, and any existing AIs are converted or
|
||||
var/multiple_invokers_used = FALSE //If scripture requires more than one invoker
|
||||
var/multiple_invokers_optional = FALSE //If scripture can have multiple invokers to bolster its effects
|
||||
var/tier = SCRIPTURE_PERIPHERAL //The scripture's tier
|
||||
var/quickbind = FALSE //if this scripture can be quickbound to a clockwork slab
|
||||
var/quickbind_desc = "This shouldn't be quickbindable. File a bug report!"
|
||||
var/primary_component
|
||||
var/sort_priority = 1 //what position the scripture should have in a list of scripture. Should be based off of component costs/reqs, but you can't initial() lists.
|
||||
|
||||
//components the scripture used from a slab
|
||||
|
||||
@@ -19,26 +19,32 @@
|
||||
usage_tip = "It will remain after converting a target, unless that target has a mindshield implant, which it will break to convert them, but consume itself in the process."
|
||||
tier = SCRIPTURE_APPLICATION
|
||||
one_per_tile = TRUE
|
||||
primary_component = BELLIGERENT_EYE
|
||||
sort_priority = 1
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates a Sigil of Accession, which can convert a mindshielded non-Servant that remains on it."
|
||||
|
||||
|
||||
//Vitality Matrix: Creates a sigil which will drain health from nonservants and can use that health to heal or even revive servants.
|
||||
/datum/clockwork_scripture/create_object/vitality_matrix
|
||||
descname = "Damage Trap"
|
||||
name = "Vitality Matrix"
|
||||
desc = "Scribes a sigil beneath the invoker which drains life from any living non-servants that cross it. Servants that cross it, however, will be healed based on how much it drained from non-servants. \
|
||||
Dead servants can be revived by this sigil if it has enough stored vitality."
|
||||
desc = "Scribes a sigil beneath the invoker which drains life from any living non-Servants that cross it. Servants that cross it, however, will be healed based on how much it drained from non-Servants. \
|
||||
Dead Servants can be revived by this sigil if it has enough stored vitality."
|
||||
invocations = list("Divinity...", "...steal their life...", "...for these shells!")
|
||||
channel_time = 70
|
||||
required_components = list(BELLIGERENT_EYE = 1, VANGUARD_COGWHEEL = 3, HIEROPHANT_ANSIBLE = 1)
|
||||
consumed_components = list(BELLIGERENT_EYE = 1, VANGUARD_COGWHEEL = 2, HIEROPHANT_ANSIBLE = 1)
|
||||
whispered = TRUE
|
||||
object_path = /obj/effect/clockwork/sigil/vitality
|
||||
creator_message = "<span class='brass'>A vitality matrix appears below you. It will drain life from non-servants and heal servants that cross it.</span>"
|
||||
usage_tip = "To revive a servant, the sigil must have 20 vitality plus the target servant's non-oxygen damage. It will still heal dead servants if it lacks the vitality to outright revive them."
|
||||
creator_message = "<span class='brass'>A vitality matrix appears below you. It will drain life from non-Servants and heal Servants that cross it.</span>"
|
||||
usage_tip = "To revive a Servant, the sigil must have 20 vitality plus the target Servant's non-oxygen damage. It will still heal dead Servants if it lacks the vitality to outright revive them."
|
||||
tier = SCRIPTURE_APPLICATION
|
||||
one_per_tile = TRUE
|
||||
primary_component = VANGUARD_COGWHEEL
|
||||
sort_priority = 2
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates a Vitality Matrix, which drains non-Servants on it to heal Servants that cross it."
|
||||
|
||||
|
||||
//Memory Allocation: Finds a willing ghost and makes them into a clockwork marauders for the invoker.
|
||||
@@ -55,6 +61,7 @@
|
||||
consumed_components = list(BELLIGERENT_EYE = 1, VANGUARD_COGWHEEL = 1, GUVAX_CAPACITOR = 2)
|
||||
usage_tip = "Marauders are useful as personal bodyguards and frontline warriors, although they do little damage."
|
||||
tier = SCRIPTURE_APPLICATION
|
||||
primary_component = GUVAX_CAPACITOR
|
||||
sort_priority = 3
|
||||
|
||||
/datum/clockwork_scripture/memory_allocation/check_special_requirements()
|
||||
@@ -124,7 +131,10 @@
|
||||
observer_message = "<span class='warning'>The slab disgorges a puddle of black metal that expands and forms into a strange shell!</span>"
|
||||
usage_tip = "Useless without a soul vessel and should not be created without one."
|
||||
tier = SCRIPTURE_APPLICATION
|
||||
primary_component = REPLICANT_ALLOY
|
||||
sort_priority = 4
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates a Fragment Shell, which produces an Anima Fragment when filled with a Soul Vessel."
|
||||
|
||||
|
||||
//Sigil of Transmission: Creates a sigil of transmission that can store power for clockwork structures.
|
||||
@@ -142,7 +152,10 @@
|
||||
usage_tip = "Can be recharged by using Volt Void while standing on it."
|
||||
tier = SCRIPTURE_APPLICATION
|
||||
one_per_tile = TRUE
|
||||
primary_component = HIEROPHANT_ANSIBLE
|
||||
sort_priority = 5
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates a Sigil of Transmission, which stores power for clockwork structures."
|
||||
|
||||
|
||||
//Interdiction Lens: Creates a powerful totem that disables radios and cameras and drains power into nearby sigils of transmission.
|
||||
@@ -162,7 +175,10 @@
|
||||
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
|
||||
primary_component = BELLIGERENT_EYE
|
||||
sort_priority = 6
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates an Interdiction Lens, which drains power into nearby Sigils of Transmission."
|
||||
|
||||
|
||||
//Mending Motor: Creates a prism that will quickly heal mechanical servants/clockwork structures and consume power or replicant alloy.
|
||||
@@ -175,14 +191,17 @@
|
||||
required_components = list(VANGUARD_COGWHEEL = 4, GUVAX_CAPACITOR = 1, REPLICANT_ALLOY = 1)
|
||||
consumed_components = list(VANGUARD_COGWHEEL = 3, GUVAX_CAPACITOR = 1, REPLICANT_ALLOY = 1)
|
||||
object_path = /obj/structure/destructible/clockwork/powered/mending_motor/prefilled
|
||||
creator_message = "<span class='brass'>You form a mending motor, which will consume power or replicant alloy to mend the wounds of mechanized servants.</span>"
|
||||
creator_message = "<span class='brass'>You form a mending motor, which will consume power or replicant alloy to mend constructs and structures.</span>"
|
||||
observer_message = "<span class='warning'>An onyx prism forms in midair and sprouts tendrils to support itself!</span>"
|
||||
invokers_required = 2
|
||||
multiple_invokers_used = TRUE
|
||||
usage_tip = "Powerful healing but power use is very inefficient, and its alloy use is little better."
|
||||
tier = SCRIPTURE_APPLICATION
|
||||
one_per_tile = TRUE
|
||||
primary_component = VANGUARD_COGWHEEL
|
||||
sort_priority = 7
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates a Mending Motor, which rapidly repairs constructs and structures at a power cost."
|
||||
|
||||
|
||||
//Mania Motor: Creates a malevolent transmitter that will broadcast the whispers of Sevtug into the minds of nearby nonservants, causing a variety of mental effects at a power cost.
|
||||
@@ -202,7 +221,10 @@
|
||||
usage_tip = "Eligible human servants next to the motor will be converted at an additional power cost. It will also cure hallucinations and brain damage in nearby servants."
|
||||
tier = SCRIPTURE_APPLICATION
|
||||
one_per_tile = TRUE
|
||||
primary_component = GUVAX_CAPACITOR
|
||||
sort_priority = 8
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates a Mania Motor, which can convert adjacent non-Servants with power."
|
||||
|
||||
|
||||
//Tinkerer's Daemon: Creates an efficient machine that rapidly produces components at a power cost.
|
||||
@@ -221,6 +243,7 @@
|
||||
usage_tip = "Vital to your success!"
|
||||
tier = SCRIPTURE_APPLICATION
|
||||
one_per_tile = TRUE
|
||||
primary_component = REPLICANT_ALLOY
|
||||
sort_priority = 9
|
||||
|
||||
/datum/clockwork_scripture/create_object/tinkerers_daemon/check_special_requirements()
|
||||
@@ -254,4 +277,7 @@
|
||||
usage_tip = "Producing a gateway has a high power cost. Gateways to or between clockwork obelisks recieve double duration and uses."
|
||||
tier = SCRIPTURE_APPLICATION
|
||||
one_per_tile = TRUE
|
||||
primary_component = HIEROPHANT_ANSIBLE
|
||||
sort_priority = 10
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates a Clockwork Obelisk, which can send messages or open Spatial Gateways with power."
|
||||
|
||||
@@ -14,7 +14,10 @@
|
||||
required_components = list(BELLIGERENT_EYE = 1)
|
||||
usage_tip = "Useful for crowd control in a populated area and disrupting mass movement."
|
||||
tier = SCRIPTURE_DRIVER
|
||||
primary_component = BELLIGERENT_EYE
|
||||
sort_priority = 1
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Forces nearby non-Servants to walk, doing minor damage with each chant.<br><b>Maximum 15 chants.</b>"
|
||||
var/noncultist_damage = 2 //damage per chant to noncultists
|
||||
var/cultist_damage = 8 //damage per chant to non-walking cultists
|
||||
|
||||
@@ -50,6 +53,7 @@
|
||||
usage_tip = "The visor has a thirty-second cooldown once used, and the marker it creates has a delay of 3 seconds before exploding."
|
||||
tier = SCRIPTURE_DRIVER
|
||||
space_allowed = TRUE
|
||||
primary_component = BELLIGERENT_EYE
|
||||
sort_priority = 2
|
||||
|
||||
|
||||
@@ -64,7 +68,10 @@
|
||||
required_components = list(VANGUARD_COGWHEEL = 1)
|
||||
usage_tip = "You cannot reactivate Vanguard while still shielded by it."
|
||||
tier = SCRIPTURE_DRIVER
|
||||
primary_component = VANGUARD_COGWHEEL
|
||||
sort_priority = 3
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Allows you to temporarily absorb stuns. All stuns absorbed will affect you when disabled."
|
||||
|
||||
/datum/clockwork_scripture/vanguard/check_special_requirements()
|
||||
if(islist(invoker.stun_absorption) && invoker.stun_absorption["vanguard"] && invoker.stun_absorption["vanguard"]["end_time"] > world.time)
|
||||
@@ -88,7 +95,10 @@
|
||||
consumed_components = list(VANGUARD_COGWHEEL = 1)
|
||||
usage_tip = "The Compromise is very fast to invoke, and will remove holy water from the target Servant."
|
||||
tier = SCRIPTURE_DRIVER
|
||||
primary_component = VANGUARD_COGWHEEL
|
||||
sort_priority = 4
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Allows you to convert a Servant's brute and burn damage to half toxin damage.<br><b>Click your slab to disable.</b>"
|
||||
slab_icon = "compromise"
|
||||
ranged_type = /obj/effect/proc_holder/slab/compromise
|
||||
ranged_message = "<span class='inathneq_small'><i>You charge the clockwork slab with healing power.</i>\n\
|
||||
@@ -107,7 +117,10 @@
|
||||
required_components = list(GUVAX_CAPACITOR = 1)
|
||||
usage_tip = "Is melee range and does not penetrate mindshield implants. Much more efficient than a Sigil of Submission at low Servant amounts."
|
||||
tier = SCRIPTURE_DRIVER
|
||||
primary_component = GUVAX_CAPACITOR
|
||||
sort_priority = 5
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Allows you to bind and start converting an adjacent target non-Servant.<br><b>Click your slab to disable.</b>"
|
||||
slab_icon = "guvax"
|
||||
ranged_type = /obj/effect/proc_holder/slab/guvax
|
||||
ranged_message = "<span class='sevtug_small'><i>You charge the clockwork slab with divine energy.</i>\n\
|
||||
@@ -176,7 +189,10 @@
|
||||
consumed_components = list(GUVAX_CAPACITOR = 1)
|
||||
usage_tip = "Useful for fleeing attackers, as few will be able to follow someone using this scripture."
|
||||
tier = SCRIPTURE_DRIVER
|
||||
primary_component = GUVAX_CAPACITOR
|
||||
sort_priority = 6
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Weakens, confuses, and dizzies nearby non-servants, then allows some movement.<br><b>Maximum 5 chants.</b>"
|
||||
var/flee_time = 47 //allow fleeing for 5 seconds
|
||||
var/grace_period = 3 //very short grace period so you don't have to stop immediately
|
||||
var/datum/progressbar/progbar
|
||||
@@ -219,7 +235,10 @@
|
||||
whispered = TRUE
|
||||
usage_tip = "This is inefficient as a way to produce components, as the slab produced must be held by someone with no other slabs to produce components."
|
||||
tier = SCRIPTURE_DRIVER
|
||||
primary_component = REPLICANT_ALLOY
|
||||
sort_priority = 7
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates a new Clockwork Slab."
|
||||
|
||||
/datum/clockwork_scripture/replicant/scripture_effects()
|
||||
invoker << "<span class='brass'>You copy a piece of replicant alloy and command it into a new slab.</span>" //No visible message, for stealth purposes
|
||||
@@ -243,7 +262,10 @@
|
||||
usage_tip = "Slabs will draw components from the global cache after the slab's own repositories, making caches very efficient."
|
||||
tier = SCRIPTURE_DRIVER
|
||||
one_per_tile = TRUE
|
||||
primary_component = REPLICANT_ALLOY
|
||||
sort_priority = 8
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates a Tinkerer's Cache, which stores components globally for slab access."
|
||||
|
||||
/datum/clockwork_scripture/create_object/tinkerers_cache/New()
|
||||
var/cache_cost_increase = min(round(clockwork_caches*0.2), 5)
|
||||
@@ -270,6 +292,7 @@
|
||||
usage_tip = "\"True sight\" means that you are able to see through walls and in darkness."
|
||||
tier = SCRIPTURE_DRIVER
|
||||
space_allowed = TRUE
|
||||
primary_component = HIEROPHANT_ANSIBLE
|
||||
sort_priority = 9
|
||||
|
||||
|
||||
@@ -288,4 +311,7 @@
|
||||
usage_tip = "The sigil, while fairly powerful in its stun, does not induce muteness in its victim."
|
||||
tier = SCRIPTURE_DRIVER
|
||||
one_per_tile = TRUE
|
||||
primary_component = HIEROPHANT_ANSIBLE
|
||||
sort_priority = 10
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates a Sigil of Transgression, which will stun the first non-Servant to cross it."
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
consumed_components = list(VANGUARD_COGWHEEL = 6, GUVAX_CAPACITOR = 3, REPLICANT_ALLOY = 3, HIEROPHANT_ANSIBLE = 3)
|
||||
usage_tip = "Those affected by this scripture are only weak to things that outright destroy bodies, such as bombs or the singularity."
|
||||
tier = SCRIPTURE_REVENANT
|
||||
primary_component = VANGUARD_COGWHEEL
|
||||
sort_priority = 2
|
||||
|
||||
/datum/clockwork_scripture/invoke_inathneq/check_special_requirements()
|
||||
@@ -49,6 +50,7 @@
|
||||
usage_tip = "Ocular wardens will become empowered, clockwork proselytizers will require no alloy, tinkerer's daemons will produce twice as quickly, \
|
||||
and interdiction lenses, mending motors, mania motors, tinkerer's daemons, and clockwork obelisks will all require no power."
|
||||
tier = SCRIPTURE_REVENANT
|
||||
primary_component = REPLICANT_ALLOY
|
||||
sort_priority = 3
|
||||
invokers_required = 3
|
||||
multiple_invokers_used = TRUE
|
||||
@@ -106,6 +108,7 @@
|
||||
usage_tip = "Causes brain damage, hallucinations, confusion, and dizziness in massive amounts."
|
||||
tier = SCRIPTURE_REVENANT
|
||||
sort_priority = 4
|
||||
primary_component = GUVAX_CAPACITOR
|
||||
invokers_required = 3
|
||||
multiple_invokers_used = TRUE
|
||||
var/list/mindbreaksayings = list("\"Oh, great. I get to shatter some minds.\"", "\"More minds to crush.\"", \
|
||||
@@ -156,7 +159,6 @@
|
||||
H << "<span class='sevtug'>[text2ratvar(pick(mindbreaksayings))]</span>"
|
||||
H.playsound_local(T, hum, visualsdistance, 1)
|
||||
flash_color(H, flash_color="#AF0AAF", flash_time=visualsdistance*10)
|
||||
H.set_drugginess(visualsdistance + H.druggy)
|
||||
H.dizziness = minordistance + H.dizziness
|
||||
H.hallucination = minordistance + H.hallucination
|
||||
H.confused = majordistance + H.confused
|
||||
@@ -176,6 +178,7 @@
|
||||
consumed_components = list(BELLIGERENT_EYE = 3, GUVAX_CAPACITOR = 3, REPLICANT_ALLOY = 3, HIEROPHANT_ANSIBLE = 6)
|
||||
usage_tip = "Struck targets will also be knocked down for about sixteen seconds."
|
||||
tier = SCRIPTURE_REVENANT
|
||||
primary_component = HIEROPHANT_ANSIBLE
|
||||
sort_priority = 5
|
||||
|
||||
/datum/clockwork_scripture/invoke_nzcrentr/check_special_requirements()
|
||||
|
||||
@@ -18,11 +18,14 @@
|
||||
tier = SCRIPTURE_SCRIPT
|
||||
one_per_tile = TRUE
|
||||
space_allowed = TRUE
|
||||
primary_component = BELLIGERENT_EYE
|
||||
sort_priority = 1
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates an Ocular Warden, which will automatically attack nearby unrestrained non-Servants that can see it."
|
||||
|
||||
/datum/clockwork_scripture/create_object/ocular_warden/check_special_requirements()
|
||||
for(var/obj/structure/destructible/clockwork/ocular_warden/W in range(3, invoker))
|
||||
invoker << "<span class='alloy'>You sense another ocular warden too near this location. Placing another this close would cause them to fight.</span>" //fluff message
|
||||
invoker << "<span class='neovgre'>You sense another ocular warden too near this location. Placing another this close would cause them to fight.</span>" //fluff message
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
@@ -41,7 +44,10 @@
|
||||
observer_message = "<span class='warning'>The slab disgorges a puddle of black metal that contracts and forms into a strange shell!</span>"
|
||||
usage_tip = "Useless without a soul vessel and should not be created without one."
|
||||
tier = SCRIPTURE_SCRIPT
|
||||
primary_component = BELLIGERENT_EYE
|
||||
sort_priority = 2
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates a Cogscarab Shell, which produces a Cogscarab when filled with a Soul Vessel."
|
||||
|
||||
|
||||
//Fellowship Armory: Arms the invoker and nearby servants with Ratvarian armor.
|
||||
@@ -58,7 +64,10 @@
|
||||
tier = SCRIPTURE_SCRIPT
|
||||
multiple_invokers_used = TRUE
|
||||
multiple_invokers_optional = TRUE
|
||||
primary_component = VANGUARD_COGWHEEL
|
||||
sort_priority = 4
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Attempts to armor all nearby Servants with powerful Ratvarian armor."
|
||||
|
||||
/datum/clockwork_scripture/fellowship_armory/run_scripture()
|
||||
for(var/mob/living/L in orange(1, get_turf(invoker)))
|
||||
@@ -94,7 +103,10 @@
|
||||
usage_tip = "This is not a primary conversion method - use Guvax for that. It is advantageous as a trap, however, as it will transmit the name of the newly-converted."
|
||||
tier = SCRIPTURE_SCRIPT
|
||||
one_per_tile = TRUE
|
||||
primary_component = GUVAX_CAPACITOR
|
||||
sort_priority = 5
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates a Sigil of Submission, which will convert one non-Servant that remains on it."
|
||||
|
||||
|
||||
//Soul Vessel: Creates a soul vessel, which can seek a ghost or be used on the uncovered head of a dead or dying human to take their brain.
|
||||
@@ -112,7 +124,10 @@
|
||||
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
|
||||
primary_component = GUVAX_CAPACITOR
|
||||
sort_priority = 6
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates a Soul Vessel, which can be placed in construct shells and cyborg bodies once filled."
|
||||
|
||||
|
||||
//Clockwork Proselytizer: Creates a clockwork proselytizer, used to convert objects and repair clockwork structures.
|
||||
@@ -130,7 +145,10 @@
|
||||
usage_tip = "Clockwork Walls cause nearby 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
|
||||
primary_component = REPLICANT_ALLOY
|
||||
sort_priority = 7
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates a Clockwork Proselytizer, which can convert various objects to Ratvarian variants."
|
||||
|
||||
|
||||
//Function Call: Grants the invoker the ability to call forth a Ratvarian spear that deals significant damage to silicons.
|
||||
@@ -146,6 +164,7 @@
|
||||
whispered = TRUE
|
||||
usage_tip = "You can impale human targets with the spear by pulling them, then attacking. Throwing the spear at a mob will do massive damage and stun them, but break the spear."
|
||||
tier = SCRIPTURE_SCRIPT
|
||||
primary_component = REPLICANT_ALLOY
|
||||
sort_priority = 8
|
||||
|
||||
/datum/clockwork_scripture/function_call/check_special_requirements()
|
||||
@@ -212,7 +231,10 @@
|
||||
multiple_invokers_optional = TRUE
|
||||
usage_tip = "This gateway is strictly one-way and will only allow things through the invoker's portal."
|
||||
tier = SCRIPTURE_SCRIPT
|
||||
primary_component = HIEROPHANT_ANSIBLE
|
||||
sort_priority = 9
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Allows you to create a one-way Spatial Gateway to a living Servant or Clockwork Obelisk."
|
||||
|
||||
/datum/clockwork_scripture/spatial_gateway/check_special_requirements()
|
||||
if(!isturf(invoker.loc))
|
||||
@@ -220,7 +242,7 @@
|
||||
return FALSE
|
||||
var/other_servants = 0
|
||||
for(var/mob/living/L in living_mob_list)
|
||||
if(is_servant_of_ratvar(L) && !L.stat != DEAD)
|
||||
if(is_servant_of_ratvar(L) && !L.stat && L != invoker)
|
||||
other_servants++
|
||||
for(var/obj/structure/destructible/clockwork/powered/clockwork_obelisk/O in all_clockwork_objects)
|
||||
other_servants++
|
||||
@@ -254,13 +276,17 @@
|
||||
consumed_components = list(GUVAX_CAPACITOR = 1, HIEROPHANT_ANSIBLE = 1)
|
||||
usage_tip = "If standing on a Sigil of Transmission, will transfer power to it. Augumented limbs will also be healed unless above a very high threshhold."
|
||||
tier = SCRIPTURE_SCRIPT
|
||||
primary_component = HIEROPHANT_ANSIBLE
|
||||
sort_priority = 10
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Drains power from nearby objects. If standing on a Sigil of Transmission, gives it that power.<br><b>Maximum 30 chants.</b>"
|
||||
var/total_power_drained = 0
|
||||
var/power_damage_threshhold = 3000
|
||||
var/augument_damage_threshhold = 6000
|
||||
|
||||
/datum/clockwork_scripture/channeled/volt_void/chant_effects(chant_number)
|
||||
playsound(invoker, 'sound/effects/EMPulse.ogg', 50, 1)
|
||||
PoolOrNew(/obj/effect/overlay/temp/ratvar/sigil/voltvoid, get_turf(invoker))
|
||||
var/power_drained = 0
|
||||
for(var/atom/movable/A in view(7, invoker))
|
||||
power_drained += A.power_drain(TRUE)
|
||||
|
||||
@@ -340,6 +340,18 @@
|
||||
animate(src, transform = matrix()*2, time = 5)
|
||||
animate(transform = oldtransform, alpha = 0, time = 65)
|
||||
|
||||
/obj/effect/overlay/temp/ratvar/sigil/voltvoid
|
||||
color = "#EC8A2D"
|
||||
layer = ABOVE_MOB_LAYER
|
||||
duration = 10
|
||||
luminosity = 3
|
||||
|
||||
/obj/effect/overlay/temp/ratvar/sigil/voltvoid/New()
|
||||
..()
|
||||
var/oldtransform = transform
|
||||
animate(src, transform = matrix()*3, time = 1)
|
||||
animate(transform = oldtransform, alpha = 0, time = 9)
|
||||
|
||||
/obj/effect/overlay/temp/ratvar/sigil/vitality
|
||||
color = "#1E8CE1"
|
||||
icon_state = "sigilactivepulse"
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 149 KiB |
Reference in New Issue
Block a user