From 82f984d3654dd7e5ca450534056540eeea46ff62 Mon Sep 17 00:00:00 2001 From: Joan Lung Date: Sat, 28 Jan 2017 02:14:40 -0500 Subject: [PATCH] Geis is more reliable early on (#23334) * Geis is more reliable early on * mmm * better * ' -> " * indicator * cheat * a true buff --- .../clock_scriptures/scripture_drivers.dm | 21 +++++++++++-------- .../clock_structures/geis_binding.dm | 19 +++++++++++------ 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm index a184e85ca56..99f58e2f4df 100644 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm +++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm @@ -131,9 +131,10 @@ /datum/clockwork_scripture/ranged_ability/geis_prep/run_scripture() var/servants = 0 - for(var/mob/living/M in living_mob_list) - if(is_servant_of_ratvar(M) && (ishuman(M) || issilicon(M))) - servants++ + if(!ratvar_awakens) + for(var/mob/living/M in all_clockwork_mobs) + if(ishuman(M) || issilicon(M)) + servants++ if(servants > SCRIPT_SERVANT_REQ) whispered = FALSE servants -= SCRIPT_SERVANT_REQ @@ -161,15 +162,17 @@ /datum/clockwork_scripture/geis/run_scripture() var/servants = 0 - for(var/mob/living/M in living_mob_list) - if(is_servant_of_ratvar(M) && (ishuman(M) || issilicon(M))) - servants++ - if(servants > SCRIPT_SERVANT_REQ) - servants -= SCRIPT_SERVANT_REQ - channel_time = min(channel_time + servants*7, 120) + if(!ratvar_awakens) + for(var/mob/living/M in all_clockwork_mobs) + if(ishuman(M) || issilicon(M)) + servants++ if(target.buckled) target.buckled.unbuckle_mob(target, TRUE) binding = new(get_turf(target)) + if(servants > SCRIPT_SERVANT_REQ) + servants -= SCRIPT_SERVANT_REQ + channel_time = min(channel_time + servants*7, 120) + binding.can_resist = TRUE binding.setDir(target.dir) binding.buckle_mob(target, TRUE) return ..() diff --git a/code/game/gamemodes/clock_cult/clock_structures/geis_binding.dm b/code/game/gamemodes/clock_cult/clock_structures/geis_binding.dm index 94d8c135126..9da7519a53a 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/geis_binding.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/geis_binding.dm @@ -15,6 +15,7 @@ buckle_lying = 0 buckle_prevents_pull = TRUE var/resisting = FALSE + var/can_resist = FALSE var/mob_layer = MOB_LAYER /obj/structure/destructible/clockwork/geis_binding/examine(mob/user) @@ -30,6 +31,7 @@ qdel(src) /obj/structure/destructible/clockwork/geis_binding/post_buckle_mob(mob/living/M) + ..() if(M.buckled == src) desc = "A flickering, glowing purple ring around [M]." clockwork_desc = "A binding ring around [M], preventing [M.p_them()] from taking action while [M.p_theyre()] being converted." @@ -45,7 +47,9 @@ M.put_in_hands(B, i) M.regenerate_icons() M.visible_message("A [name] appears around [M]!", \ - "A [name] appears around you!\nResist!") + "A [name] appears around you![can_resist ? "\nResist!":""]") + if(!can_resist) + repair_and_interrupt() else var/obj/effect/overlay/temp/ratvar/geis_binding/G = new /obj/effect/overlay/temp/ratvar/geis_binding(M.loc) var/obj/effect/overlay/temp/ratvar/geis_binding/T = new /obj/effect/overlay/temp/ratvar/geis_binding/top(M.loc) @@ -60,7 +64,7 @@ M.unEquip(GB, TRUE) /obj/structure/destructible/clockwork/geis_binding/relaymove(mob/user, direction) - if(isliving(user)) + if(isliving(user) && can_resist) var/mob/living/L = user L.resist() @@ -82,6 +86,9 @@ var/mob/living/L = m if(L) L.Stun(1, 1, 1) + if(iscarbon(L)) + var/mob/living/carbon/C = L + C.silent += 4 visible_message("[src] flares brightly!") var/obj/effect/overlay/temp/ratvar/geis_binding/G1 = new /obj/effect/overlay/temp/ratvar/geis_binding(loc) var/obj/effect/overlay/temp/ratvar/geis_binding/G2 = new /obj/effect/overlay/temp/ratvar/geis_binding(loc) @@ -98,7 +105,7 @@ /obj/structure/destructible/clockwork/geis_binding/user_unbuckle_mob(mob/living/buckled_mob, mob/user) if(buckled_mob == user) - if(!resisting) + if(!resisting && can_resist) resisting = TRUE user.visible_message("[user] starts struggling against [src]...", "You start breaking out of [src]...") while(do_after(user, 10, target = src) && resisting && obj_integrity) @@ -114,10 +121,10 @@ /obj/item/geis_binding name = "glowing ring" desc = "A flickering ring preventing you from holding items." - force = 0 icon = 'icons/effects/clockwork_effects.dmi' icon_state = "geisbinding_full" - flags = NODROP|ABSTRACT|DROPDEL|NOBLUDGEON + flags = NODROP|ABSTRACT|DROPDEL -/obj/item/geis_binding/afterattack(atom/target, mob/living/user, proximity_flag, params) +/obj/item/geis_binding/pre_attackby(atom/target, mob/living/user, params) user.resist() + return FALSE