From f96d941788415c56ef7c9553e284b2df207ad7e4 Mon Sep 17 00:00:00 2001 From: wraith-54321 <69217972+wraith-54321@users.noreply.github.com> Date: Fri, 6 Oct 2023 23:14:26 -0700 Subject: [PATCH] mmmm --- .../antagonists/clock_cult/actions/_action.dm | 1 + .../clock_cult/actions/purge_reagents.dm | 4 +-- .../antag_datums/clock_cult_team.dm | 4 +-- .../clock_cult/antag_datums/clock_cultist.dm | 5 ++-- .../clock_cult/items/replica_fabricator.dm | 11 +++++++- .../antagonists/clock_cult/items/weaponry.dm | 17 ++++++++++- .../preservation/clockwork_armaments.dm | 2 +- .../clock_cult/scriptures/servitude/kindle.dm | 2 +- .../clock_cult/structures/anchor_crystal.dm | 16 ++++++----- .../clock_cult/structures/prosperity_prism.dm | 28 +++++++++++-------- .../structures/sigil/sigil_vitality.dm | 5 ++-- .../clock_cult/structures/stargazer.dm | 2 +- .../clock_cult/structures/the_ark.dm | 2 +- 13 files changed, 66 insertions(+), 33 deletions(-) diff --git a/monkestation/code/modules/antagonists/clock_cult/actions/_action.dm b/monkestation/code/modules/antagonists/clock_cult/actions/_action.dm index 1c64b06e3867..9ab4c66b9277 100644 --- a/monkestation/code/modules/antagonists/clock_cult/actions/_action.dm +++ b/monkestation/code/modules/antagonists/clock_cult/actions/_action.dm @@ -69,3 +69,4 @@ if(!iseminence(usr)) to_chat(usr, span_boldwarning("You are not an eminence and should not have this! Please report this as a bug.")) return FALSE + return TRUE diff --git a/monkestation/code/modules/antagonists/clock_cult/actions/purge_reagents.dm b/monkestation/code/modules/antagonists/clock_cult/actions/purge_reagents.dm index 85405c17086d..b13167b0b5f2 100644 --- a/monkestation/code/modules/antagonists/clock_cult/actions/purge_reagents.dm +++ b/monkestation/code/modules/antagonists/clock_cult/actions/purge_reagents.dm @@ -14,8 +14,8 @@ to_chat(em_user, span_notice("You dont currently have a marked servant!")) return FALSE var/mob/living/purged = em_user.marked_servant?.resolve() - for(var/datum/reagent/chem in purged.reagents.reagent_list) - purged.reagents.remove_reagent(chem.type, chem.volume) + for(var/datum/reagent/chem in purged.reagents?.reagent_list) + purged.reagents?.remove_reagent(chem.type, chem.volume) to_chat(em_user, "You purge the reagents of [purged].") em_user.marked_servant = null return TRUE diff --git a/monkestation/code/modules/antagonists/clock_cult/antag_datums/clock_cult_team.dm b/monkestation/code/modules/antagonists/clock_cult/antag_datums/clock_cult_team.dm index 56e5ca5f0e8b..961c2ac12034 100644 --- a/monkestation/code/modules/antagonists/clock_cult/antag_datums/clock_cult_team.dm +++ b/monkestation/code/modules/antagonists/clock_cult/antag_datums/clock_cult_team.dm @@ -1,7 +1,7 @@ GLOBAL_DATUM(main_clock_cult, /datum/team/clock_cult) -//this is effectively 4 higher due to the first anchoring crystal always allowing 4 more servants -#define DEFAULT_MAX_HUMAN_SERVANTS 8 +//this is effectively 2 higher due to the first anchoring crystal always allowing 2 more servants +#define DEFAULT_MAX_HUMAN_SERVANTS 10 #define CONVERSION_WARNING_NONE 0 #define CONVERSION_WARNING_HALFWAY 1 #define CONVERSION_WARNING_THREEQUARTERS 2 diff --git a/monkestation/code/modules/antagonists/clock_cult/antag_datums/clock_cultist.dm b/monkestation/code/modules/antagonists/clock_cult/antag_datums/clock_cultist.dm index 2c5ce5a9ee1a..a3bbd10a6aec 100644 --- a/monkestation/code/modules/antagonists/clock_cult/antag_datums/clock_cultist.dm +++ b/monkestation/code/modules/antagonists/clock_cult/antag_datums/clock_cultist.dm @@ -44,8 +44,9 @@ /datum/antagonist/clock_cultist/greet() . = ..() - to_chat(owner.current, span_notice("Dont forget, your structures are by default off and must be clicked on to be turned on. Structures that are turned on have passive power use.")) - to_chat(owner.current, span_brass("The bottom right corner of your clockwork slab UI has a more in depth guide.")) + to_chat(owner.current, span_boldwarning("Dont forget, your structures are by default off and must be clicked on to be turned on. Structures that are turned on have passive power use.")) + to_chat(owner.current, span_userdanger("HEY")) + to_chat(owner.current, span_boldwarning("YOUR CLOCKWORK SLAB UI HAS A MORE IN DEPTH GUIDE IN ITS BOTTOM RIGHT HAND SIDE.")) //please please PLEASE read this //given_clock_team is provided by conversion methods, although we never use it due to wanting to just set their team to the main clock cult /datum/antagonist/clock_cultist/create_team(datum/team/clock_cult/given_clock_team) diff --git a/monkestation/code/modules/antagonists/clock_cult/items/replica_fabricator.dm b/monkestation/code/modules/antagonists/clock_cult/items/replica_fabricator.dm index 084814d048ad..b587b80a7d19 100644 --- a/monkestation/code/modules/antagonists/clock_cult/items/replica_fabricator.dm +++ b/monkestation/code/modules/antagonists/clock_cult/items/replica_fabricator.dm @@ -1,5 +1,7 @@ #define BRASS_POWER_COST 10 #define REGULAR_POWER_COST (BRASS_POWER_COST / 2) +//how much to add to the creation_delay while the cult lacks a charged anchoring crystal +#define SLOWDOWN_FROM_NO_ANCHOR_CRYSTAL 0.2 /obj/item/clockwork/replica_fabricator name = "replica fabricator" @@ -80,7 +82,13 @@ else if(!isopenturf(target)) return - var/calculated_creation_delay = selected_output.creation_delay * (on_reebe(user) ? selected_output.reebe_mult : 1) + var/calculated_creation_delay = 1 + if(on_reebe(user)) + calculated_creation_delay = selected_output.reebe_mult + if(!get_charged_anchor_crystals()) + calculated_creation_delay += SLOWDOWN_FROM_NO_ANCHOR_CRYSTAL + calculated_creation_delay = selected_output.creation_delay * calculated_creation_delay + var/obj/effect/temp_visual/ratvar/constructing_effect/effect = new(creation_turf, calculated_creation_delay) if(!do_after(user, calculated_creation_delay, target)) @@ -311,3 +319,4 @@ #undef BRASS_POWER_COST #undef REGULAR_POWER_COST +#undef SLOWDOWN_FROM_NO_ANCHOR_CRYSTAL diff --git a/monkestation/code/modules/antagonists/clock_cult/items/weaponry.dm b/monkestation/code/modules/antagonists/clock_cult/items/weaponry.dm index e11c1ef62ca7..2aead8e80ec0 100644 --- a/monkestation/code/modules/antagonists/clock_cult/items/weaponry.dm +++ b/monkestation/code/modules/antagonists/clock_cult/items/weaponry.dm @@ -229,7 +229,8 @@ /obj/item/gun/ballistic/bow/clockwork name = "brass bow" - desc = "A bow made from brass and other components that you can't quite understand. It glows with a deep energy and frabricates arrows by itself." + desc = "A bow made from brass and other components that you can't quite understand. It glows with a deep energy and frabricates arrows by itself. \ + It's bolts destabilize hit structures, making them lose additional integrity." icon = 'monkestation/icons/obj/clock_cult/clockwork_weapons.dmi' lefthand_file = 'monkestation/icons/mob/clock_cult/clockwork_lefthand.dmi' righthand_file = 'monkestation/icons/mob/clock_cult/clockwork_righthand.dmi' @@ -319,5 +320,19 @@ damage = 25 damage_type = BURN +//double damage to non clockwork structures and machines +/obj/projectile/energy/clockbolt/on_hit(atom/target, blocked, pierce_hit) + if(ismob(target)) + var/mob/mob_target = target + if(IS_CLOCK(mob_target)) //friendly fire is bad + return + + . = ..() + if(!.) + return + + if(!QDELETED(target) && (istype(target, /obj/structure) || istype(target, /obj/machinery)) && !istype(target, /obj/structure/destructible/clockwork)) + target.update_integrity(target.get_integrity() - 25) + #undef HAMMER_FLING_DISTANCE #undef HAMMER_THROW_FLING_DISTANCE diff --git a/monkestation/code/modules/antagonists/clock_cult/scriptures/preservation/clockwork_armaments.dm b/monkestation/code/modules/antagonists/clock_cult/scriptures/preservation/clockwork_armaments.dm index 74b3888b62ed..7ffded8b7c17 100644 --- a/monkestation/code/modules/antagonists/clock_cult/scriptures/preservation/clockwork_armaments.dm +++ b/monkestation/code/modules/antagonists/clock_cult/scriptures/preservation/clockwork_armaments.dm @@ -37,4 +37,4 @@ base_outfit.equip(invoker) - invoker.put_in_hands(new weapon_path, FALSE) + invoker.put_in_hands(new weapon_path, FALSE, forced = FALSE) diff --git a/monkestation/code/modules/antagonists/clock_cult/scriptures/servitude/kindle.dm b/monkestation/code/modules/antagonists/clock_cult/scriptures/servitude/kindle.dm index afa4a9e9c082..778fd32722e2 100644 --- a/monkestation/code/modules/antagonists/clock_cult/scriptures/servitude/kindle.dm +++ b/monkestation/code/modules/antagonists/clock_cult/scriptures/servitude/kindle.dm @@ -90,7 +90,7 @@ carbon_hit.adjust_silence(EFFECT_TIME * 2) //enough time to cuff and remove their radio, or just go back to reebe where their comms wont work carbon_hit.AdjustKnockdown(EFFECT_TIME * 1.5) - carbon_hit.Stun(EFFECT_TIME * (on_reebe(carbon_hit) ? 0.1 : 1)) //pretty much 0 stun if your on reebe, still good for knockdown though + carbon_hit.Stun(EFFECT_TIME * ((on_reebe(carbon_hit) && GLOB.clock_ark?.current_state) ? 0.1 : 1)) //pretty much 0 stun if your on reebe, still good for knockdown though if(hit_mob.client) var/client_color = hit_mob.client.color diff --git a/monkestation/code/modules/antagonists/clock_cult/structures/anchor_crystal.dm b/monkestation/code/modules/antagonists/clock_cult/structures/anchor_crystal.dm index 2b17b8527e86..7272c29bbd9f 100644 --- a/monkestation/code/modules/antagonists/clock_cult/structures/anchor_crystal.dm +++ b/monkestation/code/modules/antagonists/clock_cult/structures/anchor_crystal.dm @@ -9,6 +9,7 @@ GLOBAL_LIST_EMPTY(anchoring_crystals) //list of all anchoring crystals #define SHIELD_DEFLECT "deflect" //the shield is currently in its deflecting animation #define SHIELD_BREAK "break" //the shield is currently in its breaking animation #define SHIELD_BROKEN "broken" //the shield is currently broken +#define SERVANT_CAPACITY_TO_GIVE 2 //how many extra server slots do we give on first charged crystal /obj/structure/destructible/clockwork/anchoring_crystal name = "Anchoring Crystal" desc = "A strange crystal that you cant quite seem to focus on." @@ -152,6 +153,7 @@ GLOBAL_LIST_EMPTY(anchoring_crystals) //list of all anchoring crystals //do all the stuff for finishing charging /obj/structure/destructible/clockwork/anchoring_crystal/proc/finish_charging() + send_clock_message(null, span_bigbrass(span_bold("The Anchoring Crystal at [crystal_area] has fully charged! [anchoring_crystal_charge_message(TRUE)]"))) charge_state = FULLY_CHARGED resistance_flags += INDESTRUCTIBLE atom_integrity = INFINITY @@ -161,7 +163,6 @@ GLOBAL_LIST_EMPTY(anchoring_crystals) //list of all anchoring crystals "Central Command Higher Dimensional Affairs", ANNOUNCER_SPANOMALIES, has_important_message = TRUE) GLOB.max_clock_power += 1000 - send_clock_message(null, span_bigbrass(span_bold("The Anchoring Crystal at [crystal_area] has fully charged! [anchoring_crystal_charge_message(TRUE)]"))) SSshuttle.clearHostileEnvironment(src) var/datum/scripture/create_structure/anchoring_crystal/creation_scripture = /datum/scripture/create_structure/anchoring_crystal if(locate(creation_scripture) in GLOB.clock_scriptures_by_type) @@ -169,8 +170,8 @@ GLOBAL_LIST_EMPTY(anchoring_crystals) //list of all anchoring crystals creation_scripture.update_info() switch(get_charged_anchor_crystals()) - if(1) //add 4 more max servants - GLOB.main_clock_cult.max_human_servants += 4 + if(1) //add 2 more max servants and increase replica fabricator build speed + GLOB.main_clock_cult.max_human_servants += SERVANT_CAPACITY_TO_GIVE if(2) //create a steam helios on reebe if(GLOB.abscond_markers.len) var/turf/created_at = get_turf(pick(GLOB.abscond_markers)) @@ -205,13 +206,13 @@ GLOBAL_LIST_EMPTY(anchoring_crystals) //list of all anchoring crystals ///return a message based off of what this anchoring crystal did/will do for the cult /proc/anchoring_crystal_charge_message(completed = FALSE) - var/message + var/message = "" switch(get_charged_anchor_crystals()) + if(0) + message = "[completed ? "We can now" : "We will be able to"] support 2 more servants, gain faster buildspeed with replica fabricators on reebe, and the ark can be opened." if(1) - message = "[completed ? "We can now" : "We will be able to"] support 4 more servants and the ark can be opened." - if(2) message = "The Steam Helios, a strong 2 pilot mech, [completed ? "has been" : "will be"] summoned to reebe." - if(3) + if(2) message = "Humaniod servants [completed ? "may now" : "will be able to"] ascend their form to that of a clockwork golem, giving them innate armor, environmental immunity, \ and faster invoking for most scriptures." return message @@ -233,3 +234,4 @@ GLOBAL_LIST_EMPTY(anchoring_crystals) //list of all anchoring crystals #undef SHIELD_DEFLECT #undef SHIELD_BREAK #undef SHIELD_BROKEN +#undef SERVANT_CAPACITY_TO_GIVE diff --git a/monkestation/code/modules/antagonists/clock_cult/structures/prosperity_prism.dm b/monkestation/code/modules/antagonists/clock_cult/structures/prosperity_prism.dm index 663dd2bd2244..147217499744 100644 --- a/monkestation/code/modules/antagonists/clock_cult/structures/prosperity_prism.dm +++ b/monkestation/code/modules/antagonists/clock_cult/structures/prosperity_prism.dm @@ -12,7 +12,12 @@ minimum_power = POWER_PER_USE passive_consumption = POWER_PER_USE / 2 ///typecache of chem types to purge - var/static/list/chems_to_purge = typecacheof(list(/datum/reagent/toxin, /datum/reagent/water/holywater)) + var/static/list/chems_to_purge + +/obj/structure/destructible/clockwork/gear_base/powered/prosperity_prism/Initialize(mapload) + . = ..() + if(!chems_to_purge) + chems_to_purge = typecacheof(list(/datum/reagent/toxin, /datum/reagent/water/holywater)) /obj/structure/destructible/clockwork/gear_base/powered/prosperity_prism/process(seconds_per_tick) @@ -27,18 +32,17 @@ if(possible_cultist.health >= possible_cultist.maxHealth) continue - if(use_power(POWER_PER_USE)) - possible_cultist.adjustToxLoss(-2.5 * seconds_per_tick) - possible_cultist.stamina.adjust(7.5 * seconds_per_tick) - possible_cultist.adjustBruteLoss(-2.5 * seconds_per_tick) - possible_cultist.adjustFireLoss(-2.5 * seconds_per_tick) - possible_cultist.adjustOxyLoss(-2.5 * seconds_per_tick) - possible_cultist.adjustCloneLoss(-1 * seconds_per_tick) + possible_cultist.adjustToxLoss(-2.5 * seconds_per_tick) + possible_cultist.stamina.adjust(7.5 * seconds_per_tick) + possible_cultist.adjustBruteLoss(-2.5 * seconds_per_tick) + possible_cultist.adjustFireLoss(-2.5 * seconds_per_tick) + possible_cultist.adjustOxyLoss(-2.5 * seconds_per_tick) + possible_cultist.adjustCloneLoss(-1 * seconds_per_tick) - new /obj/effect/temp_visual/heal(get_turf(possible_cultist), "#1E8CE1") + new /obj/effect/temp_visual/heal(get_turf(possible_cultist), "#1E8CE1") - for(var/datum/reagent/negative_chem in possible_cultist.reagents?.reagent_list) - if(is_type_in_typecache(negative_chem, chems_to_purge)) - possible_cultist.reagents?.remove_reagent(negative_chem.type, 2.5 * seconds_per_tick) + for(var/datum/reagent/negative_chem in possible_cultist.reagents?.reagent_list) + if(is_type_in_typecache(negative_chem, chems_to_purge)) + possible_cultist.reagents?.remove_reagent(negative_chem.type, 2.5 * seconds_per_tick) #undef POWER_PER_USE diff --git a/monkestation/code/modules/antagonists/clock_cult/structures/sigil/sigil_vitality.dm b/monkestation/code/modules/antagonists/clock_cult/structures/sigil/sigil_vitality.dm index 6fca97dca63d..4bc3b0668e9d 100644 --- a/monkestation/code/modules/antagonists/clock_cult/structures/sigil/sigil_vitality.dm +++ b/monkestation/code/modules/antagonists/clock_cult/structures/sigil/sigil_vitality.dm @@ -12,7 +12,7 @@ /obj/structure/destructible/clockwork/sigil/vitality/can_affect(mob/living/affected_mob) - if(affected_mob.stat == DEAD) + if(affected_mob.stat == DEAD && !IS_CLOCK(affected_mob)) return FALSE if(HAS_TRAIT(affected_mob, TRAIT_NODEATH) || HAS_TRAIT(affected_mob, TRAIT_NO_SOUL)) @@ -30,6 +30,8 @@ return FALSE if(IS_CLOCK(affected_mob)) + deltimer(active_timer) + active_timer = null var/revived = FALSE if(affected_mob.stat == DEAD) var/damage_healed = 20 + ((affected_mob.maxHealth - affected_mob.health) * 0.6) @@ -52,7 +54,6 @@ else visible_message(span_warning("\The [src] fails to revive [affected_mob]!")) fail_invocation() - return if(revived) SEND_SOUND(affected_mob, 'sound/magic/clockwork/scripture_tier_up.ogg') to_chat(affected_mob, span_bigbrass("\"[text2ratvar("MY LIGHT SHINES THROUGH YOU, YOUR SERVITUDE IS NOT FINISHED.")]\"")) diff --git a/monkestation/code/modules/antagonists/clock_cult/structures/stargazer.dm b/monkestation/code/modules/antagonists/clock_cult/structures/stargazer.dm index 32d6f7c6c393..9506d226ad1a 100644 --- a/monkestation/code/modules/antagonists/clock_cult/structures/stargazer.dm +++ b/monkestation/code/modules/antagonists/clock_cult/structures/stargazer.dm @@ -8,7 +8,7 @@ icon_state = "stargazer" base_icon_state = "stargazer" anchored = TRUE - break_message = "The stargazer collapses." + break_message = span_warning("The stargazer collapses.") ///ref to our visual effect, migtht be able to make this just be an overlay var/obj/effect/stargazer_light/light_effect ///cooldown for enchanting items diff --git a/monkestation/code/modules/antagonists/clock_cult/structures/the_ark.dm b/monkestation/code/modules/antagonists/clock_cult/structures/the_ark.dm index 93ddab7e1447..48fb92ad8923 100644 --- a/monkestation/code/modules/antagonists/clock_cult/structures/the_ark.dm +++ b/monkestation/code/modules/antagonists/clock_cult/structures/the_ark.dm @@ -7,7 +7,7 @@ GLOBAL_VAR_INIT(ratvar_risen, FALSE) #define ARK_STATE_SUMMONING 3 //state for the halfway point of ark activation #define ARK_STATE_FINAL 4 //the ark has either finished opening or been destroyed in this state #define ARK_READY_PERIOD 300 SECONDS //how long until the cult is annouced after they reach max members, 5 minutes -#define ARK_GRACE_PERIOD 180 SECONDS //how long until the portals open after the cult is annouced, 3 minutes +#define ARK_GRACE_PERIOD 210 SECONDS //how long until the portals open after the cult is annouced, 3 minutes 30 seconds #define ARK_ASSAULT_PERIOD 600 //how long the crew has to destroy the ark after the assault begins, 10 minutes /obj/structure/destructible/clockwork/the_ark name = "\improper Ark of the Clockwork Justiciar"