diff --git a/code/__DEFINES/clockcult.dm b/code/__DEFINES/clockcult.dm index f597eb4ae7..5f4317060d 100644 --- a/code/__DEFINES/clockcult.dm +++ b/code/__DEFINES/clockcult.dm @@ -23,6 +23,7 @@ GLOBAL_VAR_INIT(script_scripture_unlocked, FALSE) //If script scripture is avail GLOBAL_VAR_INIT(application_scripture_unlocked, FALSE) //If application scripture is available GLOBAL_VAR_INIT(judgement_scripture_unlocked, FALSE) //If judgement scripture is available GLOBAL_LIST_EMPTY(all_scripture) //a list containing scripture instances; not used to track existing scripture +GLOBAL_LIST_EMPTY(all_clockwork_rites) //a list containing all clockwork rites. Filled the first time any cultist interacts with a sigil of rites. //Scripture tiers and requirements; peripherals should never be used #define SCRIPTURE_PERIPHERAL "Peripheral" diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index ca304773a7..6e59d4fa2c 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -562,8 +562,8 @@ owner.DefaultCombatKnockdown(15, TRUE, FALSE, 15) if(iscarbon(owner)) var/mob/living/carbon/C = owner - C.silent = max(2, C.silent) - C.stuttering = max(5, C.stuttering) + C.silent = max(5, C.silent) //Increased, now lasts until five seconds after it ends, instead of 2 + C.stuttering = max(10, C.stuttering) //Increased, now lasts for five seconds after the mute ends, instead of 3 if(!old_health) old_health = owner.health if(!old_oxyloss) diff --git a/code/game/gamemodes/clock_cult/clock_cult.dm b/code/game/gamemodes/clock_cult/clock_cult.dm index 154d2df563..406e142a25 100644 --- a/code/game/gamemodes/clock_cult/clock_cult.dm +++ b/code/game/gamemodes/clock_cult/clock_cult.dm @@ -213,6 +213,9 @@ Credit where due: var/list/slots = list("In your left pocket" = SLOT_L_STORE, "In your right pocket" = SLOT_R_STORE, "In your backpack" = SLOT_IN_BACKPACK) if(ishuman(L)) var/mob/living/carbon/human/H = L + var/obj/item/clockwork/replica_fabricator/F = new + if(H.equip_to_slot_or_del(F, SLOT_IN_BACKPACK)) + to_chat(H, "You have been equipped with a replica fabricator, an advanced tool that can convert objects like doors, tables or even coats into clockwork equivalents.") slot = H.equip_in_one_of_slots(S, slots) if(slot == "In your backpack") slot = "In your [H.back.name]" diff --git a/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm b/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm index e579023a7a..454870d1e1 100644 --- a/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm +++ b/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm @@ -405,3 +405,49 @@ animation_number = initial(animation_number) sigil_active = FALSE animate(src, alpha = initial(alpha), time = 10, flags = ANIMATION_END_NOW) + +/obj/effect/clockwork/sigil/rite + name = "radiant sigil" + desc = "A glowing sigil glowing with barely-contained power." + clockwork_desc = "A sigil that will allow you to perform certain rites on it, provided you have access to sufficient power and materials." + icon_state = "sigiltransmission" //am big lazy - recolored transmission sigil + sigil_name = "Sigil of Rites" + alpha = 255 + var/performing_rite = FALSE + color = "#ffe63a" + light_color = "#ffe63a" + light_range = 1 + light_power = 2 + +/obj/effect/clockwork/sigil/rite/on_attack_hand(mob/living/user, act_intent = user.a_intent, unarmed_attack_flags) + . = ..() + if(.) + return + if(!is_servant_of_ratvar(user)) + return + if(!GLOB.all_clockwork_rites.len) //Did we already generate the list? + generate_all_rites() + if(performing_rite) + to_chat(user, "Someone is already performing a rite here!") + return + var/list/possible_rites = list() + for(var/datum/clockwork_rite/R in GLOB.all_clockwork_rites) + possible_rites[R] = R + var/input_key = input(user, "Choose a rite", "Choosing a rite") as null|anything in possible_rites + if(!input_key) + return + var/datum/clockwork_rite/CR = possible_rites[input_key] + if(!CR) + return + var/choice = alert(user, "What to do with this rite?", "What to do?", "Cast", "Show Info", "Cancel") + switch(choice) + if("Cast") + CR.try_cast(src, user) + if("Show Info") + var/infotext = CR.build_info() + to_chat(user, infotext) + +/obj/effect/clockwork/sigil/rite/proc/generate_all_rites() //The first time someone uses a sigil of rites, all the rites are actually generated. No need to have a bunch of random datums laying around all the time. + for(var/V in subtypesof(/datum/clockwork_rite)) + var/datum/clockwork_rite/R = new V + GLOB.all_clockwork_rites += R diff --git a/code/modules/antagonists/clockcult/clock_helpers/clock_rites.dm b/code/modules/antagonists/clockcult/clock_helpers/clock_rites.dm new file mode 100644 index 0000000000..7dabb18f03 --- /dev/null +++ b/code/modules/antagonists/clockcult/clock_helpers/clock_rites.dm @@ -0,0 +1,196 @@ +//This file is for clock rites, mainly used by the Sigil of Rites in clock_sigils.dm +//The rites themselves are in this file to prevent bloating the other file too much, aswell as for easier access + +#define INFINITE -1 + +//The base clockwork rite. This should never be visible +/datum/clockwork_rite + var/name = "Rite of THE frog" //The name of the rite + var/desc = "This rite is used to summon the legendary frog whose-name-shall-not-be-spoken, ender of many worlds." //What does this rite do? Shown to cultists if they choose 'Show Info' after selecting the rite. + var/list/required_ingredients = list(/obj/item/clockwork) //What does this rite require? + var/power_cost = 0 //How much power does this rite cost.. or does it even add power? + var/requires_human = FALSE //Does the rite require a ../carbon/human on the rune? + var/must_be_servant = TRUE //If the above is true, does the human need to be a servant? + var/target_can_be_invoker = TRUE //Does this rite work if the invoker is also the target? + var/cast_time = 0 //How long does the rite take to cast? + var/limit = INFINITE //How often can this rite be used per round? Set this to INFINITE for unlimited, 0 for disallowed, anything above 0 for a limit + var/times_used = 0 //How often has the rite already been used this shift? + var/rite_cast_sound = 'sound/items/bikehorn.ogg' //The sound played when successfully casting the rite. If it honks, the one adding the rite forgot to set one (or was just lazy). + +/datum/clockwork_rite/proc/try_cast(var/obj/effect/clockwork/sigil/rite/R, var/mob/living/invoker) //Performs a ton of checks to see if the invoker can cast the rite + if(!istype(R)) + return FALSE + if(!R || !R.loc) + return FALSE + var/turf/T = R.loc + if(!T) //Uh oh something is fucky + return FALSE + + if(limit != INFINITE && times_used >= limit) //Is the limit on casts exceeded? + to_chat(invoker, "There are no more uses left for this rite!") + return FALSE + + var/mob/living/carbon/human/H //This is only used if requires_human is TRUE + if(requires_human) //In case this requires a target + for(var/mob/living/carbon/human/possible_H in T) + if((!must_be_servant || is_servant_of_ratvar(possible_H)) && (target_can_be_invoker || invoker != possible_H)) + H = possible_H + break + if(!H) + to_chat(invoker, "There is no target for the rite on the sigil!") + return FALSE + + if(required_ingredients.len) //In case this requires materials + var/is_missing_materials = FALSE + for(var/I in required_ingredients) + var/obj/item/Material = locate(I) in T + if(!Material) + is_missing_materials = TRUE + break + if(is_missing_materials) + var/still_required_string = "" + for(var/i = 1 to required_ingredients.len) + var/obj/O = required_ingredients[i] + if(i != 1) + still_required_string += ", " + still_required_string += "a [initial(O.name)]" + to_chat(invoker, "There are still materials missing for this rite. You require [still_required_string].") + return FALSE + + if(power_cost) //If this costs power + if(!get_clockwork_power(power_cost)) + to_chat(invoker, "There is not enough power for this rite!") + return FALSE + R.performing_rite = TRUE + if(!do_after(invoker, cast_time, target = R)) + to_chat(invoker, "Your rite is disrupted.") + R.performing_rite = FALSE + return FALSE + . = cast(invoker, T, H) + if(!.) + to_chat(invoker, " You fail casting [name]") + post_cast(FALSE) + else + to_chat(invoker, "You successfully cast [name]") + post_cast(TRUE) + R.performing_rite = FALSE + return + +/datum/clockwork_rite/proc/cast(var/mob/living/invoker, var/turf/T, var/mob/living/carbon/human/target) //Casts the rite and uses up ingredients. Doublechecks some things to prevent bypassing some restrictions via funky timing or badminnery. + if(!T || !invoker) + return FALSE + if(requires_human && !target) + return FALSE + if(power_cost && !get_clockwork_power(power_cost)) + return FALSE + adjust_clockwork_power(-power_cost) + if(limit != INFINITE && times_used >= limit) + return FALSE + if(required_ingredients.len) + var/is_missing_materials = FALSE + for(var/I in required_ingredients) + var/obj/item/Material = locate(I) in T + if(!Material) + is_missing_materials = TRUE + break + qdel(Material) + if(is_missing_materials) + return FALSE + playsound(T, rite_cast_sound, 50, 2) + return TRUE + +/datum/clockwork_rite/proc/post_cast(var/cast_succeeded) + if(cast_succeeded) + times_used++ + return TRUE + +/datum/clockwork_rite/proc/build_info() //Constructs the info text of a given rite, based on the vars of the rite + . = "" + . += "This is the [name].\n" + . += "[desc]\n" + . += "It requires: " + if(required_ingredients.len) + var/material_string = "" + for(var/i = 1 to required_ingredients.len) + var/obj/O = required_ingredients[i] + if(i != 1) + material_string += ", " + material_string += "a [initial(O.name)]" + . += "[material_string].\n" + else + . += "no materials.\n" + . += "It [power_cost >= 0 ? "costs" : "generates"] [power_cost ? "[power_cost]" : "no"] power.\n" + . += "It requires [requires_human ? " a human" : " no"] target.\n" + if(requires_human) + . += "The target [must_be_servant ? "cannot be" : "can be"] a nonservant.\n" + . += "The target [target_can_be_invoker ? "can be" : "cannot be"] the invoker.\n" + . += "It requires [cast_time/10] seconds to cast.\n" + . += "It has been used [times_used] time[times_used != 1 ? "s" : ""], out of [limit != INFINITE ? "[limit]" : "infinite"] available uses." + +//Adds a organ or cybernetic implant to a servant without the need for surgery. Cannot be used with brains for.. reasons. +/datum/clockwork_rite/advancement + name = "Rite of Advancement" + desc = "This rite is used to augment a servant with organs or cybernetic implants. The organ of choice, aswell as the servant and the required ingredients must be placed on the sigil for this rite to take place." + required_ingredients = list(/obj/item/assembly/prox_sensor, /obj/item/stock_parts/cell) + power_cost = 500 + requires_human = TRUE + cast_time = 40 + rite_cast_sound = 'sound/magic/blind.ogg' + +/datum/clockwork_rite/advancement/cast(var/mob/living/invoker, var/turf/T, var/mob/living/carbon/human/target) + var/obj/item/organ/O = locate(/obj/item/organ) in T + if(!O) + return FALSE + if(istype(O, /obj/item/organ/brain)) //NOPE + return FALSE + . = ..() + if(!.) + return FALSE + O.Insert(target) + new /obj/effect/temp_visual/ratvar/sigil/transgression(T) + +//Heals all wounds (not damage) on the target, causing toxloss proportional to amount of wounds healed. 10 damage per wound. +/datum/clockwork_rite/treat_wounds + name = "Rite of Woundmending" + desc = "This rite is used to heal wounds of the servant on the rune. It causes toxins damage proportional to the amount of wounds healed. This can be lethal if performed on an critically injured target." + required_ingredients = list(/obj/item/stock_parts/cell, /obj/item/healthanalyzer, /obj/item/reagent_containers/food/drinks/bottle/holyoil) + power_cost = 300 + requires_human = TRUE + must_be_servant = FALSE + target_can_be_invoker = FALSE + cast_time = 80 + rite_cast_sound = 'sound/magic/staff_healing.ogg' + +/datum/clockwork_rite/treat_wounds/cast(var/mob/living/invoker, var/turf/T, var/mob/living/carbon/human/target) + if(!target) + return FALSE + if(!target.all_wounds.len) + to_chat(invoker, "This one does not require mending.") + return FALSE + .= ..() + if(!.) + return FALSE + target.adjustToxLoss(10 * target.all_wounds.len) + QDEL_LIST(target.all_wounds) + to_chat(target, "You feel your wounds heal, but are overcome with deep nausea.") + new /obj/effect/temp_visual/ratvar/sigil/vitality(T) + +//Summons a brass claw implant on the sigil, which can extend a claw that benefits from repeatedly attacking a single target. Can only be cast a limited amount of times. +/datum/clockwork_rite/summon_claw + name = "Rite of the Claw" + desc = "Summons a special arm implant that, when added to a servant's limb, will allow them to extend and retract a claw at will. Don't leave any implants you want to keep on this rune when casting the rite." + required_ingredients = list(/obj/item/stock_parts/cell, /obj/item/organ/cyberimp, /obj/item/assembly/flash) + power_cost = 1000 + cast_time = 60 + limit = 4 + rite_cast_sound = 'sound/magic/clockwork/fellowship_armory.ogg' + +/datum/clockwork_rite/summon_claw/cast(var/mob/living/invoker, var/turf/T, var/mob/living/carbon/human/target) + . = ..() + if(!.) + return FALSE + var/obj/item/organ/cyberimp/arm/clockwork/claw/CL = new /obj/item/organ/cyberimp/arm/clockwork/claw(T) + CL.visible_message("[CL] materialises out of thin air!") + new /obj/effect/temp_visual/ratvar/sigil/transmission(T,2) + +#undef INFINITE diff --git a/code/modules/antagonists/clockcult/clock_items/clock_augments.dm b/code/modules/antagonists/clockcult/clock_items/clock_augments.dm new file mode 100644 index 0000000000..2131aa7160 --- /dev/null +++ b/code/modules/antagonists/clockcult/clock_items/clock_augments.dm @@ -0,0 +1,32 @@ +//This file is for snowflakey clock augmentations and clock-themed cybernetic implants. + +//The base clockie arm implant, which only clock cultist can use unless it is emagged. THIS SHOULD NEVER ACTUALLY EXIST +/obj/item/organ/cyberimp/arm/clockwork + name = "clock-themed arm-mounted implant" + var/clockwork_desc = "According to Ratvar, this really shouldn't exist. Tell Him about this immediately." + syndicate_implant = TRUE + icon_state = "clock_arm_implant" + +/obj/item/organ/cyberimp/arm/clockwork/ui_action_click() + if(is_servant_of_ratvar(owner) || (obj_flags & EMAGGED)) //If you somehow manage to steal a clockie's implant AND have an emag AND manage to get it implanted for yourself, good on ya! + return ..() + to_chat(owner, "The implant refuses to activate..") + +/obj/item/organ/cyberimp/arm/clockwork/examine(mob/user) + if((is_servant_of_ratvar(user) || isobserver(user)) && clockwork_desc) + desc = clockwork_desc + . = ..() + desc = initial(desc) + +/obj/item/organ/cyberimp/arm/clockwork/emag_act() + if(obj_flags & EMAGGED) + return + obj_flags |= EMAGGED + to_chat(usr, "You emag [src], hoping it'll achieve something..") + +//Brass claw implant. Holds the brass claw from brass_claw.dm and can extend / retract it at will. +/obj/item/organ/cyberimp/arm/clockwork/claw + name = "brass claw implant" + desc = "Yikes, the claw attached to this looks pretty darn sharp." + clockwork_desc = "This implant, when added to a servant's arm, allows them to extend and retract a claw at will, though this is mildly painful to do. It will refuse to work for any non-servants." + contents = newlist(/obj/item/clockwork/brass_claw) diff --git a/code/modules/antagonists/clockcult/clock_items/clock_weapons/brass_claw.dm b/code/modules/antagonists/clockcult/clock_items/clock_weapons/brass_claw.dm new file mode 100644 index 0000000000..340f01f6f8 --- /dev/null +++ b/code/modules/antagonists/clockcult/clock_items/clock_weapons/brass_claw.dm @@ -0,0 +1,51 @@ +//Brass claw, an armblade-like weapon used by a clock implant. Stealthy if retracted, very obvious if active. +//Bit weaker than an armblade strength-wise but gains combo on consecutive attacks against the same target, which causes bonus damage + +/obj/item/clockwork/brass_claw + name = "brass claw" + desc = "A very sharp claw made out of brass." + clockwork_desc = "A incredibly sharp claw made out of brass. It is quite effective at crippling enemies, though very obvious when extended.\nGains combo on consecutive attacks against a target, causing bonus damage." + icon_state = "brass_claw" //Codersprite moment + item_state = "brass_claw" + lefthand_file = 'icons/mob/inhands/antag/clockwork_lefthand.dmi' + righthand_file = 'icons/mob/inhands/antag/clockwork_righthand.dmi' + w_class = WEIGHT_CLASS_HUGE + force = 15 //Doesn't generate vitality like the spear does / has somewhat less damage, but quite good at wounding and gets through armor pretty well. Also gains 2 bonus damage per consecutive attack on the same target + throwforce = 0 //haha yes lets be safe about this + throw_range = 0 + throw_speed = 0 + armour_penetration = 20 + hitsound = 'sound/weapons/bladeslice.ogg' + attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + sharpness = SHARP_EDGED + wound_bonus = 5 + bare_wound_bonus = 15 + total_mass = TOTAL_MASS_HAND_REPLACEMENT + var/mob/living/last_attacked + var/combo = 0 + var/damage_per_combo = 2 + var/maximum_combo_damage = 18 //33 damage on max stacks. Usually the target will already be dead by then but if they somehow aren't, better to have this capped + +/obj/item/clockwork/brass_claw/Initialize() + . = ..() + AddComponent(/datum/component/butchering, 60, 80) + +/obj/item/clockwork/brass_claw/examine(mob/user) + if(is_servant_of_ratvar(user)) + clockwork_desc += "\nIt has [combo] combo stacks built up against the current target, causing [min(maximum_combo_damage, combo * damage_per_combo)] bonus damage." + . = ..() + clockwork_desc = initial(clockwork_desc) + +/obj/item/clockwork/brass_claw/attack(mob/living/target, mob/living/carbon/human/user) + . = ..() + if(QDELETED(target) || target.anti_magic_check(chargecost = 0) || is_servant_of_ratvar(target)) + return + if(target != last_attacked) //Loses all combat on switching targets + last_attacked = target + combo = 0 + else + if(!iscultist(target)) //Hostile cultists being hit stacks up combo far faster than usual + combo++ + else + combo += 3 + target.adjustBruteLoss(min(maximum_combo_damage, combo * damage_per_combo)) diff --git a/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm b/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm index a2d597e27d..aa69478217 100644 --- a/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm +++ b/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm @@ -12,6 +12,8 @@ attack_verb = list("stabbed", "poked", "slashed") hitsound = 'sound/weapons/bladeslice.ogg' w_class = WEIGHT_CLASS_BULKY + block_parry_data = /datum/block_parry_data/ratvarian_spear + item_flags = ITEM_CAN_PARRY var/bonus_burn = 5 /obj/item/clockwork/weapon/ratvarian_spear/ratvar_act() @@ -43,7 +45,7 @@ else if(iscultist(target) || isconstruct(target)) to_chat(target, "Your body flares with agony at [src]'s presence!") bonus_damage *= 3 //total 30 damage on cultists, 50 with ratvar - GLOB.clockwork_vitality += target.adjustFireLoss(bonus_damage) //adds the damage done to existing vitality + GLOB.clockwork_vitality += max(0, target.adjustFireLoss(bonus_damage)) //adds the damage done to existing vitality /obj/item/clockwork/weapon/ratvarian_spear/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) var/turf/T = get_turf(hit_atom) @@ -80,3 +82,15 @@ new /obj/effect/temp_visual/ratvar/spearbreak(T) action.weapon_reset(RATVARIAN_WEAPON_COOLDOWN) +//A very short, very effective parry that counts on you predicting when the enemy will attack. +/datum/block_parry_data/ratvarian_spear + parry_time_windup = 0 //Very good for predicting + parry_time_active = 3 //Very short + parry_time_spindown = 1 + parry_time_perfect = 2 + parry_efficiency_perfect = 110 //Very low leeway for counterattacks... + parry_efficiency_considered_successful = 0.8 + parry_efficiency_to_counterattack = 1 + parry_cooldown = 15 //But also very low cooldown.. + parry_failed_stagger_duration = 2 SECONDS //And relatively small penalties for failing. + parry_failed_clickcd_duration = 1 SECONDS diff --git a/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm index c4b1913832..00c4d73428 100644 --- a/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm +++ b/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm @@ -97,7 +97,7 @@ desc = "Charges your slab with divine energy, allowing you to overwhelm a target with Ratvar's light." invocations = list("Divinity, show them your light!") whispered = TRUE - channel_time = 10 // I think making kindle channel a third of the time less is a good make up for the fact that it silences people for such a little amount of time. + channel_time = 15 // I think making kindle channel a third of the time less is a good make up for the fact that it silences people for such a little amount of time. power_cost = 125 usage_tip = "The light can be used from up to two tiles away. Damage taken will GREATLY REDUCE the stun's duration." tier = SCRIPTURE_DRIVER diff --git a/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm index d96765d536..8819544928 100644 --- a/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm +++ b/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm @@ -81,6 +81,25 @@ return /obj/effect/clockwork/sigil/vitality/neutered return ..() +//Sigil of Rites: Creates a sigil that allows to perform certain rites on it. More information on these can be found in clock_rites.dm, they usually require power, materials and sometimes a target. +/datum/clockwork_scripture/create_object/sigil_of_rites + descname = "Sigil, Access to rites" + name = "Sigil of Rites" + desc = "Places a sigil that, when interacted with, will allow for a variety of rites to be performed on the sigil. These usually require power cells, clockwork power, and some other components." + invocations = list("Engine, allow us..", ".. to be blessed with your rites.") + channel_time = 80 + power_cost = 1400 + invokers_required = 2 + multiple_invokers_used = TRUE + whispered = TRUE + object_path = /obj/effect/clockwork/sigil/rite + creator_message = "A sigil of Rites appears beneath you. It will allow you to perform certain rites, given sufficient materials and power." + usage_tip = "It may be useful to coordinate to acquire needed materials quickly." + tier = SCRIPTURE_SCRIPT + one_per_tile = TRUE + primary_component = HIEROPHANT_ANSIBLE + sort_priority = 4 + //Judicial Visor: Creates a judicial visor, which can smite an area. /datum/clockwork_scripture/create_object/judicial_visor descname = "Delayed Area Knockdown Glasses" @@ -96,7 +115,7 @@ tier = SCRIPTURE_SCRIPT space_allowed = TRUE primary_component = BELLIGERENT_EYE - sort_priority = 4 + sort_priority = 5 quickbind = TRUE quickbind_desc = "Creates a Judicial Visor, which can smite an area, applying Belligerent and briefly stunning." @@ -115,7 +134,7 @@ tier = SCRIPTURE_SCRIPT space_allowed = TRUE primary_component = VANGUARD_COGWHEEL - sort_priority = 6 + sort_priority = 7 quickbind = TRUE quickbind_desc = "Creates a Ratvarian shield, which can absorb energy from attacks for use in powerful bashes." @@ -131,7 +150,7 @@ usage_tip = "Throwing the spear at a mob will do massive damage and knock them down, but break the spear. You will need to wait for 30 seconds before resummoning it." tier = SCRIPTURE_SCRIPT primary_component = VANGUARD_COGWHEEL - sort_priority = 7 + sort_priority = 8 important = TRUE quickbind = TRUE quickbind_desc = "Permanently binds clockwork armor and a Ratvarian spear to you." @@ -229,7 +248,7 @@ usage_tip = "This is a very effective way to rapidly reinforce a base after an attack." tier = SCRIPTURE_SCRIPT primary_component = VANGUARD_COGWHEEL - sort_priority = 8 + sort_priority = 9 quickbind = TRUE quickbind_desc = "Repairs nearby structures and constructs. Servants wearing clockwork armor will also be healed.
Maximum 10 chants." var/heal_attempts = 4 @@ -342,7 +361,7 @@ usage_tip = "Though it requires you to stand still, this scripture can do massive damage." tier = SCRIPTURE_SCRIPT primary_component = BELLIGERENT_EYE - sort_priority = 5 + sort_priority = 6 quickbind = TRUE quickbind_desc = "Allows you to fire energy rays at target locations.
Maximum 5 chants." var/static/list/nzcrentr_insults = list("You're not very good at aiming.", "You hunt badly.", "What a waste of energy.", "Almost funny to watch.", @@ -391,7 +410,7 @@ usage_tip = "It may be useful to end channelling early if the burning becomes too much to handle.." tier = SCRIPTURE_SCRIPT primary_component = GEIS_CAPACITOR - sort_priority = 10 + sort_priority = 11 quickbind = TRUE quickbind_desc = "Quickly drains power in an area around the invoker, causing burns proportional to the amount of energy drained.
Maximum of 20 chants." diff --git a/icons/mob/inhands/antag/clockwork_lefthand.dmi b/icons/mob/inhands/antag/clockwork_lefthand.dmi index 88bd8ab710..080d7fdc83 100644 Binary files a/icons/mob/inhands/antag/clockwork_lefthand.dmi and b/icons/mob/inhands/antag/clockwork_lefthand.dmi differ diff --git a/icons/mob/inhands/antag/clockwork_righthand.dmi b/icons/mob/inhands/antag/clockwork_righthand.dmi index 20190e4add..42715d6e92 100644 Binary files a/icons/mob/inhands/antag/clockwork_righthand.dmi and b/icons/mob/inhands/antag/clockwork_righthand.dmi differ diff --git a/icons/obj/clockwork_objects.dmi b/icons/obj/clockwork_objects.dmi index ae919d85a4..156d4fa0c6 100644 Binary files a/icons/obj/clockwork_objects.dmi and b/icons/obj/clockwork_objects.dmi differ diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index 3996f0ead2..8db1156dea 100755 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 799111beb0..a4781bab13 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1522,6 +1522,7 @@ #include "code\modules\antagonists\clockcult\clock_effects\servant_blocker.dm" #include "code\modules\antagonists\clockcult\clock_effects\spatial_gateway.dm" #include "code\modules\antagonists\clockcult\clock_helpers\clock_powerdrain.dm" +#include "code\modules\antagonists\clockcult\clock_helpers\clock_rites.dm" #include "code\modules\antagonists\clockcult\clock_helpers\component_helpers.dm" #include "code\modules\antagonists\clockcult\clock_helpers\fabrication_helpers.dm" #include "code\modules\antagonists\clockcult\clock_helpers\hierophant_network.dm" @@ -1529,6 +1530,7 @@ #include "code\modules\antagonists\clockcult\clock_helpers\ratvarian_language.dm" #include "code\modules\antagonists\clockcult\clock_helpers\scripture_checks.dm" #include "code\modules\antagonists\clockcult\clock_helpers\slab_abilities.dm" +#include "code\modules\antagonists\clockcult\clock_items\clock_augments.dm" #include "code\modules\antagonists\clockcult\clock_items\clock_components.dm" #include "code\modules\antagonists\clockcult\clock_items\clockwork_armor.dm" #include "code\modules\antagonists\clockcult\clock_items\clockwork_slab.dm" @@ -1540,6 +1542,7 @@ #include "code\modules\antagonists\clockcult\clock_items\soul_vessel.dm" #include "code\modules\antagonists\clockcult\clock_items\wraith_spectacles.dm" #include "code\modules\antagonists\clockcult\clock_items\clock_weapons\_call_weapon.dm" +#include "code\modules\antagonists\clockcult\clock_items\clock_weapons\brass_claw.dm" #include "code\modules\antagonists\clockcult\clock_items\clock_weapons\ratvarian_shield.dm" #include "code\modules\antagonists\clockcult\clock_items\clock_weapons\ratvarian_spear.dm" #include "code\modules\antagonists\clockcult\clock_mobs\_eminence.dm"