Skip to content

Commit

Permalink
mmmm
Browse files Browse the repository at this point in the history
  • Loading branch information
wraith-54321 committed Oct 7, 2023
1 parent d654c94 commit f96d941
Show file tree
Hide file tree
Showing 13 changed files with 66 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
@@ -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"
Expand Down Expand Up @@ -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))
Expand Down Expand Up @@ -311,3 +319,4 @@

#undef BRASS_POWER_COST
#undef REGULAR_POWER_COST
#undef SLOWDOWN_FROM_NO_ANCHOR_CRYSTAL
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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."
Expand Down Expand Up @@ -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
Expand All @@ -161,16 +163,15 @@ 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)
creation_scripture = GLOB.clock_scriptures_by_type[creation_scripture]
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))
Expand Down Expand Up @@ -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
Expand All @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand All @@ -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)
Expand All @@ -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.")]\""))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
icon_state = "stargazer"
base_icon_state = "stargazer"
anchored = TRUE
break_message = "<span class='warning'>The stargazer collapses.</span>"
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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down

0 comments on commit f96d941

Please sign in to comment.