From 29002efd9874c7b5c42c100e12559e99b0dea0a8 Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Sat, 6 Apr 2019 01:38:02 -0400 Subject: [PATCH 1/3] Updates and Buffs Power Gloves --- code/_onclick/click_override.dm | 56 +++++++++++++++++++-------- code/modules/clothing/gloves/color.dm | 14 ++++++- 2 files changed, 53 insertions(+), 17 deletions(-) diff --git a/code/_onclick/click_override.dm b/code/_onclick/click_override.dm index 7dfa8020cb8..fe2acfa3023 100644 --- a/code/_onclick/click_override.dm +++ b/code/_onclick/click_override.dm @@ -43,26 +43,50 @@ ..() /datum/middleClickOverride/power_gloves - var/last_shocked = 0 - var/shock_delay = 120 -/datum/middleClickOverride/power_gloves/onClick(var/atom/A, var/mob/living/user) +/datum/middleClickOverride/power_gloves/onClick(atom/A, mob/living/carbon/human/user) + if(A == user || user.a_intent == INTENT_HELP || user.a_intent == INTENT_GRAB) + return if(user.incapacitated()) return - if(world.time < last_shocked + shock_delay) + var/obj/item/clothing/gloves/color/yellow/power/P = user.gloves + if(world.time < P.last_shocked + P.shock_delay) to_chat(user, "The gloves are still recharging.") return - if(!isliving(A)) - to_chat(user, "Shocking an inanimate object would be pointless.") - return - var/mob/living/L = A var/turf/T = get_turf(user) var/obj/structure/cable/C = locate() in T - if(!C || !istype(C)) - to_chat(user, "There is no cable here to power the gloves.") - return - user.visible_message("[user.name] fires an arc of electricity at [L]!", "You fire an arc of electricity at [L]!", "You hear the loud crackle of electricity!") - playsound(user.loc, 'sound/effects/eleczap.ogg', 75, 1) - user.Beam(L,icon_state="lightning[rand(1,12)]",icon='icons/effects/effects.dmi',time=5) - electrocute_mob(L, C, user) - last_shocked = world.time + if(!P.unlimited_power) + if(!C || !istype(C)) + to_chat(user, "There is no cable here to power the gloves.") + return + var/turf/target_turf = get_turf(A) + target_turf.hotspot_expose(2000, 400) + playsound(user.loc, 'sound/effects/eleczap.ogg', 40, 1) + + var/atom/beam_from = user + var/atom/target_atom = A + + for(var/i in 0 to 3) + beam_from.Beam(target_atom, icon_state = "lightning[rand(1, 12)]", icon = 'icons/effects/effects.dmi', time = 6) + if(isliving(target_atom)) + var/mob/living/L = target_atom + if(user.a_intent == INTENT_DISARM) + L.Weaken(3) + else + if(P.unlimited_power) + L.electrocute_act(1000, P, 0) //Just kill them + else + electrocute_mob(L, C, P) + break + var/list/next_shocked = list() + for(var/atom/movable/AM in orange(3, target_atom)) + if(AM == user || istype(AM, /obj/effect) || isobserver(AM)) + continue + next_shocked.Add(AM) + + beam_from = target_atom + target_atom = pick(next_shocked) + A = target_atom + next_shocked.Cut() + + P.last_shocked = world.time \ No newline at end of file diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index f7d8fe3ee38..7a65d579b8e 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -12,6 +12,9 @@ description_antag = "These are a pair of power gloves, and can be used to fire bolts of electricity while standing over powered power cables." var/old_mclick_override var/datum/middleClickOverride/power_gloves/mclick_override = new /datum/middleClickOverride/power_gloves + var/last_shocked = 0 + var/shock_delay = 40 + var/unlimited_power = FALSE // Does this really need explanation? /obj/item/clothing/gloves/color/yellow/power/equipped(mob/user, slot) if(!ishuman(user)) @@ -21,7 +24,10 @@ if(H.middleClickOverride) old_mclick_override = H.middleClickOverride H.middleClickOverride = mclick_override - to_chat(H, "You feel electricity begin to build up in [src].") + if(!unlimited_power) + to_chat(H, "You feel electricity begin to build up in [src].") + else + to_chat(H, "You feel like you have UNLIMITED POWER!!") /obj/item/clothing/gloves/color/yellow/power/dropped(mob/user, slot) if(!ishuman(user)) @@ -34,6 +40,12 @@ else H.middleClickOverride = null +/obj/item/clothing/gloves/color/yellow/power/unlimited + name = "UNLIMITED POWER gloves" + desc = "These gloves possess UNLIMITED POWER." + shock_delay = 0 + unlimited_power = TRUE + /obj/item/clothing/gloves/color/yellow/fake desc = "These gloves will protect the wearer from electric shock. They don't feel like rubber..." siemens_coefficient = 1 From 87f9ff92df3cb905543adc8def8c26a3d27878be Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Sat, 6 Apr 2019 01:52:08 -0400 Subject: [PATCH 2/3] no resists for you --- code/_onclick/click_override.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/_onclick/click_override.dm b/code/_onclick/click_override.dm index fe2acfa3023..929b4bf2ee9 100644 --- a/code/_onclick/click_override.dm +++ b/code/_onclick/click_override.dm @@ -74,7 +74,7 @@ L.Weaken(3) else if(P.unlimited_power) - L.electrocute_act(1000, P, 0) //Just kill them + L.electrocute_act(1000, P, 0, TRUE) //Just kill them else electrocute_mob(L, C, P) break From 59bae1e02d7ac9d37cda8cf2f5b5d14cb220b02d Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Sat, 6 Apr 2019 22:51:42 -0400 Subject: [PATCH 3/3] electrocute_act is bugged --- code/_onclick/click_override.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/_onclick/click_override.dm b/code/_onclick/click_override.dm index 929b4bf2ee9..fe2acfa3023 100644 --- a/code/_onclick/click_override.dm +++ b/code/_onclick/click_override.dm @@ -74,7 +74,7 @@ L.Weaken(3) else if(P.unlimited_power) - L.electrocute_act(1000, P, 0, TRUE) //Just kill them + L.electrocute_act(1000, P, 0) //Just kill them else electrocute_mob(L, C, P) break