Files
Paradise/code/datums/spells/lightning.dm
Charlie 0f7a8707ef [Ready] Refactors stuns and status effects. (#17579)
* Fixes reviver runtime

* Confusion status effect

* Dizzy status effect

* Drowsiness status effect

* decaying -> transient

* Drunkenness status effect

* why use timer when SSfastprocessing work good

* stuns (mostly)

* weaken and immobalise

* stun/weaken times

* update_flags redundancies.

* Slowed()

* Silence + fixes transient decay

* Jittery

* sleeping

* Paralyze -> weaken

* Cult sluring

* paralyse

* Stammer

* slurring + projectile cleanups

* losebreath

* Hallucination

* forgor this

* eyeblurry

* eye blind

* Druggy

* affected didn't like my spacing

* review pass

* second review pass

* some cleanups

* documentation and signal framework

* confusion fix

* Fixes spec_stun

* rejuv fix

* removes a TODO

* conflicted myself

* fixes

* self review

* review

* removes TODOs

* adminfreeze

* TM fixes

* hallucination fix + others

* tones down alchol and runtime fixes

* confusion overlay suggestion

* more fixes

* runtime fix

* losebreath fix

* clamp => directional bounded sum

* steel review

* oops

Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com>

* reduces the dizziness cycle rate

* borg hotfix

* sanctified decursening

Co-authored-by: mochi <1496804+dearmochi@users.noreply.github.com>
Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com>
2022-05-24 16:35:26 +01:00

49 lines
2.1 KiB
Plaintext

/obj/effect/proc_holder/spell/charge_up/bounce/lightning
name = "Lightning Bolt"
desc = "Throws a lightning bolt at your enemies. Classic. When clicked will start to charge in power. Then click on a mob to send the bolt before it overloads with power."
charge_type = "recharge"
charge_max = 30 SECONDS
clothes_req = TRUE
invocation = "UN'LTD P'WAH!"
invocation_type = "shout"
cooldown_min = 3 SECONDS
action_icon_state = "lightning"
charge_sound = new /sound('sound/magic/lightning_chargeup.ogg', channel = 7)
max_charge_time = 10 SECONDS
stop_charging_text = "You stop charging the lightning around you."
stop_charging_fail_text = "The lightning around you is too strong to stop now!"
start_charging_text = "You start gathering lightning around you."
bounce_hit_sound = 'sound/magic/lightningshock.ogg'
var/damaging = TRUE
/obj/effect/proc_holder/spell/charge_up/bounce/lightning/New()
..()
charge_up_overlay = image(icon = 'icons/effects/effects.dmi', icon_state = "electricity", layer = EFFECTS_LAYER)
/obj/effect/proc_holder/spell/charge_up/bounce/lightning/lightnian
clothes_req = FALSE
invocation_type = "none"
damaging = FALSE
/obj/effect/proc_holder/spell/charge_up/bounce/lightning/get_bounce_energy()
if(damaging)
return max(15, get_energy_charge() / 2)
return 0
/obj/effect/proc_holder/spell/charge_up/bounce/lightning/get_bounce_amount()
if(damaging)
return 5
return round(get_energy_charge() / 20)
/obj/effect/proc_holder/spell/charge_up/bounce/lightning/create_beam(mob/origin, mob/target)
origin.Beam(target, icon_state = "lightning[rand(1, 12)]", icon = 'icons/effects/effects.dmi', time = 5)
/obj/effect/proc_holder/spell/charge_up/bounce/lightning/apply_bounce_effect(mob/origin, mob/living/target, energy, mob/user)
if(damaging)
target.electrocute_act(energy, "Lightning Bolt", flags = SHOCK_NOGLOVES)
else
target.AdjustJitter(2000 SECONDS) //High numbers for violent convulsions
target.AdjustStuttering(4 SECONDS)
target.Slowed(6 SECONDS)
addtimer(CALLBACK(target, /mob/living.proc/AdjustJitter, -2000 SECONDS, 10), 2 SECONDS) //Still jittery, but vastly less