diff --git a/code/game/gamemodes/clock_cult/clock_item.dm b/code/game/gamemodes/clock_cult/clock_item.dm index 535cef3b318..66500d4ee53 100644 --- a/code/game/gamemodes/clock_cult/clock_item.dm +++ b/code/game/gamemodes/clock_cult/clock_item.dm @@ -10,6 +10,7 @@ /obj/item/clockwork/New() ..() + ratvar_act() all_clockwork_objects += src /obj/item/clockwork/Destroy() diff --git a/code/game/gamemodes/clock_cult/clock_items/clockwork_armor.dm b/code/game/gamemodes/clock_cult/clock_items/clockwork_armor.dm index d1ca6b9a6cb..fcf0f44c3b4 100644 --- a/code/game/gamemodes/clock_cult/clock_items/clockwork_armor.dm +++ b/code/game/gamemodes/clock_cult/clock_items/clockwork_armor.dm @@ -10,12 +10,25 @@ /obj/item/clothing/head/helmet/clockwork/New() ..() + ratvar_act() all_clockwork_objects += src /obj/item/clothing/head/helmet/clockwork/Destroy() all_clockwork_objects -= src return ..() +/obj/item/clothing/head/helmet/clockwork/ratvar_act() + if(ratvar_awakens) + armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100) + flags |= STOPSPRESSUREDMAGE + max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT + min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT + else + armor = list(melee = 80, bullet = 70, laser = -25, energy = 0, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100) + flags &= STOPSPRESSUREDMAGE + max_heat_protection_temperature = initial(max_heat_protection_temperature) + min_cold_protection_temperature = initial(min_cold_protection_temperature) + /obj/item/clothing/head/helmet/clockwork/equipped(mob/living/user, slot) ..() if(slot == slot_head && !is_servant_of_ratvar(user)) @@ -45,18 +58,33 @@ icon_state = "clockwork_cuirass" w_class = WEIGHT_CLASS_BULKY body_parts_covered = CHEST|GROIN|LEGS + cold_protection = CHEST|GROIN|LEGS + heat_protection = CHEST|GROIN|LEGS resistance_flags = FIRE_PROOF | ACID_PROOF armor = list(melee = 80, bullet = 70, laser = -25, energy = 0, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100) allowed = list(/obj/item/clockwork, /obj/item/clothing/glasses/wraith_spectacles, /obj/item/clothing/glasses/judicial_visor, /obj/item/device/mmi/posibrain/soul_vessel) /obj/item/clothing/suit/armor/clockwork/New() ..() + ratvar_act() all_clockwork_objects += src /obj/item/clothing/suit/armor/clockwork/Destroy() all_clockwork_objects -= src return ..() +/obj/item/clothing/suit/armor/clockwork/ratvar_act() + if(ratvar_awakens) + armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100) + flags |= STOPSPRESSUREDMAGE + max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT + min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT + else + armor = list(melee = 80, bullet = 70, laser = -25, energy = 0, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100) + flags &= STOPSPRESSUREDMAGE + max_heat_protection_temperature = initial(max_heat_protection_temperature) + min_cold_protection_temperature = initial(min_cold_protection_temperature) + /obj/item/clothing/suit/armor/clockwork/mob_can_equip(mob/M, mob/equipper, slot, disable_warning = 0) if(equipper && !is_servant_of_ratvar(equipper)) return 0 @@ -90,6 +118,8 @@ strip_delay = 50 put_on_delay = 30 body_parts_covered = ARMS + cold_protection = ARMS + heat_protection = ARMS siemens_coefficient = 0 permeability_coefficient = 0.05 resistance_flags = FIRE_PROOF | ACID_PROOF @@ -97,12 +127,25 @@ /obj/item/clothing/gloves/clockwork/New() ..() + ratvar_act() all_clockwork_objects += src /obj/item/clothing/gloves/clockwork/Destroy() all_clockwork_objects -= src return ..() +/obj/item/clothing/gloves/clockwork/ratvar_act() + if(ratvar_awakens) + armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100) + flags |= STOPSPRESSUREDMAGE + max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT + min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT + else + armor = list(melee = 80, bullet = 70, laser = -25, energy = 0, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100) + flags &= STOPSPRESSUREDMAGE + max_heat_protection_temperature = initial(max_heat_protection_temperature) + min_cold_protection_temperature = initial(min_cold_protection_temperature) + /obj/item/clothing/gloves/clockwork/mob_can_equip(mob/M, mob/equipper, slot, disable_warning = 0) if(equipper && !is_servant_of_ratvar(equipper)) return 0 @@ -137,12 +180,19 @@ /obj/item/clothing/shoes/clockwork/New() ..() + ratvar_act() all_clockwork_objects += src /obj/item/clothing/shoes/clockwork/Destroy() all_clockwork_objects -= src return ..() +/obj/item/clothing/shoes/clockwork/ratvar_act() + if(ratvar_awakens) + flags |= NOSLIP + else + flags &= NOSLIP + /obj/item/clothing/shoes/clockwork/mob_can_equip(mob/M, mob/equipper, slot, disable_warning = 0) if(equipper && !is_servant_of_ratvar(equipper)) return 0 diff --git a/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm b/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm index 9d32a092aab..08177b2fa31 100644 --- a/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm +++ b/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm @@ -93,6 +93,12 @@ slab_ability.remove_ranged_ability() return ..() +/obj/item/clockwork/slab/ratvar_act() + if(ratvar_awakens) + nonhuman_usable = TRUE + else + nonhuman_usable = initial(nonhuman_usable) + /obj/item/clockwork/slab/dropped(mob/user) . = ..() addtimer(src, "check_on_mob", 1, TIMER_NORMAL, user) //dropped is called before the item is out of the slot, so we need to check slightly later diff --git a/code/game/gamemodes/clock_cult/clock_items/ratvarian_spear.dm b/code/game/gamemodes/clock_cult/clock_items/ratvarian_spear.dm index a187f4c9cf6..52d3446eca9 100644 --- a/code/game/gamemodes/clock_cult/clock_items/ratvarian_spear.dm +++ b/code/game/gamemodes/clock_cult/clock_items/ratvarian_spear.dm @@ -14,21 +14,29 @@ w_class = WEIGHT_CLASS_BULKY var/impale_cooldown = 50 //delay, in deciseconds, where you can't impale again var/attack_cooldown = 10 //delay, in deciseconds, where you can't attack with the spear + var/timerid /obj/item/clockwork/ratvarian_spear/New() ..() impale_cooldown = 0 - update_force() -/obj/item/clockwork/ratvarian_spear/proc/update_force() +/obj/item/clockwork/ratvarian_spear/Destroy() + deltimer(timerid) + return ..() + +/obj/item/clockwork/ratvarian_spear/ratvar_act() if(ratvar_awakens) //If Ratvar is alive, the spear is extremely powerful force = 25 throwforce = 50 armour_penetration = 10 + clockwork_desc = initial(clockwork_desc) + deltimer(timerid) else force = initial(force) throwforce = initial(throwforce) armour_penetration = 0 + clockwork_desc = "A powerful spear of Ratvarian making. It's more effective against enemy cultists and silicons, though it won't last for long." + timerid = addtimer(src, "break_spear", 600, TIMER_NORMAL) /obj/item/clockwork/ratvarian_spear/examine(mob/user) ..() @@ -74,7 +82,7 @@ add_fingerprint(user) attack_verb = list("stabbed", "poked", "slashed") - update_force() + ratvar_act() if(impaling) impale_cooldown = world.time + initial(impale_cooldown) attack_cooldown = world.time + initial(attack_cooldown) diff --git a/code/game/gamemodes/clock_cult/clock_scripture.dm b/code/game/gamemodes/clock_cult/clock_scripture.dm index f350c1a553c..0f7ff9036f6 100644 --- a/code/game/gamemodes/clock_cult/clock_scripture.dm +++ b/code/game/gamemodes/clock_cult/clock_scripture.dm @@ -244,6 +244,7 @@ Judgement: 12 servants, 5 caches, 300 CV, and any existing AIs are converted or else if(creator_message) invoker << creator_message var/obj/O = new object_path (get_turf(invoker)) + O.ratvar_act() //update the new object so it gets buffed if ratvar is alive if(istype(O, /obj/item)) invoker.put_in_hands(O) return TRUE diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_revenant.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_revenant.dm index e55d9d5392b..e31295bb4a7 100644 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_revenant.dm +++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_revenant.dm @@ -143,8 +143,8 @@ clockwork_generals_invoked["nezbere"] = world.time + CLOCKWORK_GENERAL_COOLDOWN playsound(invoker, 'sound/magic/clockwork/invoke_general.ogg', 50, 0) for(var/obj/structure/destructible/clockwork/ocular_warden/W in all_clockwork_objects) //Ocular wardens have increased damage and radius - W.damage_per_tick *= 1.5 - W.sight_range *= 2 + W.damage_per_tick = 5 + W.sight_range = 5 for(var/obj/item/clockwork/clockwork_proselytizer/P in all_clockwork_objects) //Proselytizers no longer require alloy P.uses_alloy = FALSE for(var/obj/structure/destructible/clockwork/powered/M in all_clockwork_objects) //Powered clockwork structures no longer need power @@ -155,8 +155,10 @@ D.production_cooldown *= 0.5 spawn(600) for(var/obj/structure/destructible/clockwork/ocular_warden/W in all_clockwork_objects) - W.damage_per_tick = initial(W.damage_per_tick) - W.sight_range = initial(W.sight_range) + if(W.damage_per_tick == 5) + W.damage_per_tick = initial(W.damage_per_tick) + if(W.sight_range == 5) + W.sight_range = initial(W.sight_range) for(var/obj/item/clockwork/clockwork_proselytizer/P in all_clockwork_objects) P.uses_alloy = initial(P.uses_alloy) for(var/obj/structure/destructible/clockwork/powered/M in all_clockwork_objects) diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm index 6358ba2dd73..6016292851b 100644 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm +++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm @@ -210,7 +210,7 @@ if(!ratvar_awakens) R.clockwork_desc = "A powerful spear of Ratvarian making. It's more effective against enemy cultists and silicons, though it won't last for long." owner << "Your spear begins to break down in this plane of existence. You can't use it for long!" - addtimer(R, "break_spear", base_cooldown, TIMER_NORMAL) + R.timerid = addtimer(R, "break_spear", base_cooldown, TIMER_NORMAL) cooldown = base_cooldown + world.time owner.update_action_buttons_icon() addtimer(src, "update_actions", base_cooldown, TIMER_NORMAL) diff --git a/code/game/gamemodes/clock_cult/clock_structure.dm b/code/game/gamemodes/clock_cult/clock_structure.dm index 69eb5165167..960a508a64c 100644 --- a/code/game/gamemodes/clock_cult/clock_structure.dm +++ b/code/game/gamemodes/clock_cult/clock_structure.dm @@ -62,7 +62,9 @@ /obj/structure/destructible/clockwork/proc/get_efficiency_mod(increasing) if(ratvar_awakens) - return 1 + if(increasing) + return 0.5 + return 2 . = max(sqrt(obj_integrity/max(max_integrity, 1)), 0.5) if(increasing) . *= min(max_integrity/max(obj_integrity, 1), 4) diff --git a/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm b/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm index 6f9fde906f3..de0ec115e70 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm @@ -43,14 +43,20 @@ return FAILED_UNFASTEN return SUCCESSFUL_UNFASTEN +/obj/structure/destructible/clockwork/ocular_warden/ratvar_act() + ..() + if(ratvar_awakens) + damage_per_tick = 10 + sight_range = 6 + else + damage_per_tick = initial(damage_per_tick) + sight_range = initial(sight_range) + /obj/structure/destructible/clockwork/ocular_warden/process() if(!anchored) lose_target() return var/list/validtargets = acquire_nearby_targets() - if(ratvar_awakens && (damage_per_tick == initial(damage_per_tick) || sight_range == initial(sight_range))) //Massive buff if Ratvar has returned - damage_per_tick = 10 - sight_range = 5 if(target) if(!(target in validtargets)) lose_target() diff --git a/code/game/gamemodes/clock_cult/clock_structures/ratvar_the_clockwork_justicar.dm b/code/game/gamemodes/clock_cult/clock_structures/ratvar_the_clockwork_justicar.dm index fe32214cda1..ee17e60db94 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/ratvar_the_clockwork_justicar.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/ratvar_the_clockwork_justicar.dm @@ -16,8 +16,8 @@ /obj/structure/destructible/clockwork/massive/ratvar/New() ..() ratvar_awakens++ - for(var/obj/item/clockwork/ratvarian_spear/R in all_clockwork_objects) - R.update_force() + for(var/obj/O in all_clockwork_objects) + O.ratvar_act() START_PROCESSING(SSobj, src) send_to_playing_players("\"[text2ratvar("ONCE AGAIN MY LIGHT SHALL SHINE ACROSS THIS PATHETIC REALM")]!!\"") send_to_playing_players('sound/effects/ratvar_reveal.ogg') @@ -28,8 +28,8 @@ /obj/structure/destructible/clockwork/massive/ratvar/Destroy() ratvar_awakens-- - for(var/obj/item/clockwork/ratvarian_spear/R in all_clockwork_objects) - R.update_force() + for(var/obj/O in all_clockwork_objects) + O.ratvar_act() STOP_PROCESSING(SSobj, src) send_to_playing_players("\"NO! I will not... be... banished... again...\"") return ..()