From 388a7579b97240a82647e658028dafdb29cb7bbe Mon Sep 17 00:00:00 2001
From: Ghommie <42542238+Ghommie@users.noreply.github.com>
Date: Tue, 12 Nov 2019 01:49:36 +0100
Subject: [PATCH] A few minor clock cult improvements.
---
code/game/gamemodes/clock_cult/clock_cult.dm | 3 +++
.../clockcult/clock_effects/clock_sigils.dm | 12 +++++++++++-
.../clockcult/clock_scriptures/scripture_drivers.dm | 4 ++--
.../clockcult/clock_structures/_trap_object.dm | 9 +++++++++
.../clockcult/clock_structures/ocular_warden.dm | 4 +---
.../trap_triggers/pressure_sensor.dm | 10 +---------
6 files changed, 27 insertions(+), 15 deletions(-)
diff --git a/code/game/gamemodes/clock_cult/clock_cult.dm b/code/game/gamemodes/clock_cult/clock_cult.dm
index 51a34f4194..a2a01fe6bd 100644
--- a/code/game/gamemodes/clock_cult/clock_cult.dm
+++ b/code/game/gamemodes/clock_cult/clock_cult.dm
@@ -167,6 +167,7 @@ Credit where due:
number_players -= 30
starter_servants += round(number_players / 10)
starter_servants = min(starter_servants, 8) //max 8 servants (that sould only happen with a ton of players)
+ GLOB.clockwork_vitality += 60 * starter_servants //Add some starter vitality based on
while(starter_servants)
var/datum/mind/servant = antag_pick(antag_candidates)
servants_to_serve += servant
@@ -342,6 +343,8 @@ Credit where due:
or splashed onto metal sheets to make brass. This chemical can be found in minimal quantities by grinding brass sheets.\
Brass Flasks:Intended to store Zelus Oil in, but can also be used as fragile single use throwing weapons in a pinch! \
These are crafted with a single sheet of brass and fit in the Clockwork Cuirass' suit storage.\
+
\
+ Extra Vitality Matrix: You start your quest with some spare Vitality charge to help recover from any initial foul up. \
Good luck!"
/obj/item/paper/servant_primer/Initialize()
diff --git a/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm b/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm
index 8000be87e6..0a3232e3a7 100644
--- a/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm
+++ b/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm
@@ -147,6 +147,16 @@
if(iscarbon(L))
var/mob/living/carbon/M = L
M.uncuff()
+ var/brutedamage = L.getBruteLoss()
+ var/burndamage = L.getFireLoss()
+ if(brutedamage || burndamage)
+ var/efficiency = 0.75
+ var/vitality_cost = FLOOR((brutedamage + burndamage * efficienty) / 10, 1)
+ if(GLOB.clockwork_vitality < vitality_cost)
+ efficiency = efficienty * round(GLOB.clockwork_vitality / vitality_cost, 0.1)
+ L.adjustBruteLoss(-(brutedamage * efficiency))
+ L.adjustFireLoss(-(burndamage * efficiency))
+ GLOB.clockwork_vitality = min(GLOB.clockwork_vitality - vitality_cost, 0)
L.Knockdown(50) //Completely defenseless for five seconds - mainly to give them time to read over the information they've just been presented with
if(iscarbon(L))
var/mob/living/carbon/C = L
@@ -262,7 +272,7 @@
clockwork_desc = "A sigil that will drain non-Servants that remain on it. Servants that remain on it will be healed if it has any vitality drained."
icon_state = "sigilvitality"
layer = SIGIL_LAYER
- alpha = 75
+ alpha = 125
color = "#123456"
affects_servants = TRUE
stat_affected = DEAD
diff --git a/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm
index 82c1291433..9009283743 100644
--- a/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm
+++ b/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm
@@ -80,8 +80,8 @@
power_cost = 125
whispered = TRUE
object_path = /obj/effect/clockwork/sigil/submission
- creator_message = "A luminous sigil appears below you. Any non-Servants to cross it will be converted after 8 seconds if they do not move."
- usage_tip = "This is the primary conversion method, though it will not penetrate mindshield implants."
+ creator_message = "A luminous sigil appears below you. Any non-Servants to cross it will be converted after 8 seconds if they do not move and are healed of most of their traumas at a vitality matrix cost."
+ usage_tip = "This is the primary conversion method, though it will not penetrate mindshield implants. Convertees "
tier = SCRIPTURE_DRIVER
one_per_tile = TRUE
primary_component = HIEROPHANT_ANSIBLE
diff --git a/code/modules/antagonists/clockcult/clock_structures/_trap_object.dm b/code/modules/antagonists/clockcult/clock_structures/_trap_object.dm
index 00a3406da1..491f1d24b3 100644
--- a/code/modules/antagonists/clockcult/clock_structures/_trap_object.dm
+++ b/code/modules/antagonists/clockcult/clock_structures/_trap_object.dm
@@ -71,6 +71,7 @@
return TRUE
/obj/structure/destructible/clockwork/trap/proc/activate()
+ return
//These objects send signals to normal traps to activate
/obj/structure/destructible/clockwork/trap/trigger
@@ -79,6 +80,14 @@
break_message = "The trigger breaks apart!"
density = FALSE
+/obj/structure/destructible/clockwork/trap/trigger/Initialize()
+ . = ..()
+ for(var/obj/structure/destructible/clockwork/trap/T in get_turf(src))
+ if(!istype(T, /obj/structure/destructible/clockwork/trap/trigger))
+ wired_to += T
+ T.wired_to += src
+ to_chat(usr, "[src] automatically links with [T] beneath it.")
+
/obj/structure/destructible/clockwork/trap/trigger/activate()
for(var/obj/structure/destructible/clockwork/trap/T in wired_to)
if(istype(T, /obj/structure/destructible/clockwork/trap/trigger)) //Triggers don't go off multiple times
diff --git a/code/modules/antagonists/clockcult/clock_structures/ocular_warden.dm b/code/modules/antagonists/clockcult/clock_structures/ocular_warden.dm
index 7afd9e7dbc..35c1ea7bdd 100644
--- a/code/modules/antagonists/clockcult/clock_structures/ocular_warden.dm
+++ b/code/modules/antagonists/clockcult/clock_structures/ocular_warden.dm
@@ -110,9 +110,7 @@
if(!(BI.resistance_flags & ON_FIRE))
BI.fire_act()
continue
- if(is_servant_of_ratvar(L) || (HAS_TRAIT(L, TRAIT_BLIND)) || L.anti_magic_check(TRUE, TRUE))
- continue
- if(L.stat || L.lying)
+ if(is_servant_of_ratvar(L) || (HAS_TRAIT(L, TRAIT_BLIND)) || L.anti_magic_check(TRUE, TRUE) || L.incapacitated(TRUE))
continue
if (iscarbon(L))
var/mob/living/carbon/c = L
diff --git a/code/modules/antagonists/clockcult/clock_structures/trap_triggers/pressure_sensor.dm b/code/modules/antagonists/clockcult/clock_structures/trap_triggers/pressure_sensor.dm
index 94f0ba7112..af29bc9b31 100644
--- a/code/modules/antagonists/clockcult/clock_structures/trap_triggers/pressure_sensor.dm
+++ b/code/modules/antagonists/clockcult/clock_structures/trap_triggers/pressure_sensor.dm
@@ -7,18 +7,10 @@
icon_state = "pressure_sensor"
alpha = 50
-/obj/structure/destructible/clockwork/trap/trigger/Initialize()
- . = ..()
- for(var/obj/structure/destructible/clockwork/trap/T in get_turf(src))
- if(!istype(T, /obj/structure/destructible/clockwork/trap/trigger))
- wired_to += T
- T.wired_to += src
- to_chat(usr, "[src] automatically links with [T] beneath it.")
-
/obj/structure/destructible/clockwork/trap/trigger/pressure_sensor/Crossed(atom/movable/AM)
if(isliving(AM) && !is_servant_of_ratvar(AM))
var/mob/living/L = AM
- if(L.stat || L.m_intent == MOVE_INTENT_WALK || L.lying)
+ if(L.stat || L.m_intent == MOVE_INTENT_WALK || L.movement_type & (FLYING|FLOATING))
return
audible_message("*click*")
playsound(src, 'sound/items/screwdriver2.ogg', 50, TRUE)