From 0e3b3edd29dbb7abd8c4d36d012d0bdde9700c7a Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Tue, 5 May 2015 19:12:49 -0400 Subject: [PATCH] Added the wizard lightning spell, NOT to wizards for now --- code/datums/spell.dm | 40 ++++++++++++- code/datums/spells/lightning.dm | 98 ++++++++++++++++++++++++++++++++ icons/effects/effects.dmi | Bin 268982 -> 269670 bytes paradise.dme | 1 + 4 files changed, 138 insertions(+), 1 deletion(-) create mode 100644 code/datums/spells/lightning.dm diff --git a/code/datums/spell.dm b/code/datums/spell.dm index e03f172f2a2..7aeee98f92e 100644 --- a/code/datums/spell.dm +++ b/code/datums/spell.dm @@ -1,3 +1,6 @@ +#define TARGET_CLOSEST 1 +#define TARGET_RANDOM 2 + /obj/effect/proc_holder var/panel = "Debug"//What panel the proc holder needs to go on. @@ -235,6 +238,9 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin var/max_targets = 1 //leave 0 for unlimited targets in range, 1 for one selectable target in range, more for limited number of casts (can all target one guy, depends on target_ignore_prev) in range var/target_ignore_prev = 1 //only important if max_targets > 1, affects if the spell can be cast multiple times at one person from one cast var/include_user = 0 //if it includes usr in the target list + var/random_target = 0 // chooses random viable target instead of asking the caster + var/random_target_priority = TARGET_CLOSEST // if random_target is enabled how it will pick the target + /obj/effect/proc_holder/spell/wizard/aoe_turf //affects all turfs in view or range (depends) var/inner_radius = -1 //for all your ring spell needs @@ -260,7 +266,26 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin continue possible_targets += M - targets += input("Choose the target for the spell.", "Targeting") as mob in possible_targets + //targets += input("Choose the target for the spell.", "Targeting") as mob in possible_targets + //Adds a safety check post-input to make sure those targets are actually in range. + var/mob/M + if(!random_target) + M = input("Choose the target for the spell.", "Targeting") as mob in possible_targets + else + switch(random_target_priority) + if(TARGET_RANDOM) + M = pick(possible_targets) + if(TARGET_CLOSEST) + for(var/mob/living/L in possible_targets) + if(M) + if(get_dist(user,L) < get_dist(user,M)) + if(los_check(user,L)) + M = L + else + if(los_check(user,L)) + M = L + if(M in view_or_range(range, user, selection_type)) targets += M + else var/list/possible_targets = list() for(var/mob/living/target in view_or_range(range, user, selection_type)) @@ -300,3 +325,16 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin perform(targets) return + + +/obj/effect/proc_holder/spell/wizard/targeted/proc/los_check(mob/A,mob/B) + //Checks for obstacles from A to B + var/obj/dummy = new(A.loc) + dummy.pass_flags |= PASSTABLE + for(var/turf/turf in getline(A,B)) + for(var/atom/movable/AM in turf) + if(!AM.CanPass(dummy,turf,1)) + qdel(dummy) + return 0 + qdel(dummy) + return 1 \ No newline at end of file diff --git a/code/datums/spells/lightning.dm b/code/datums/spells/lightning.dm new file mode 100644 index 00000000000..9e4994b5b9d --- /dev/null +++ b/code/datums/spells/lightning.dm @@ -0,0 +1,98 @@ +/obj/effect/proc_holder/spell/wizard/targeted/lightning + name = "Lightning Bolt" + desc = "Throws a lightning bolt at the nearby enemy. Classic." + charge_type = "recharge" + charge_max = 300 + clothes_req = 1 + invocation = "UN'LTD P'WAH!" + invocation_type = "shout" + range = 7 + cooldown_min = 30 + selection_type = "view" + random_target = 1 + var/energy = 0 + var/ready = 0 + var/image/halo = null + +/obj/effect/proc_holder/spell/wizard/targeted/lightning/Click() + if(!ready) + if(cast_check()) + StartChargeup() + else + if(cast_check(skipcharge=1)) + choose_targets() + return 1 + +/obj/effect/proc_holder/spell/wizard/targeted/lightning/proc/StartChargeup(mob/user = usr) + ready = 1 + user << "You start gathering the power." + halo = image("icon"='icons/effects/effects.dmi',"icon_state" ="electricity","layer" = EFFECTS_LAYER) + user.overlays.Add(halo) + spawn(0) + while(ready) + sleep(1) + energy++ + if(energy >= 100 && ready) + Discharge() + +obj/effect/proc_holder/spell/wizard/targeted/lightning/proc/Reset(mob/user = usr) + ready = 0 + energy = 0 + if(halo) + user.overlays.Remove(halo) + +/obj/effect/proc_holder/spell/wizard/targeted/lightning/revert_cast(mob/user = usr) + user << "No target found in range." + Reset(user) + ..() + +/obj/effect/proc_holder/spell/wizard/targeted/lightning/proc/Discharge(mob/user = usr) + var/mob/living/M = user + //M.electrocute_act(25,"Lightning Bolt") + M << "You lose control over the spell." + Reset(user) + start_recharge() + + +/obj/effect/proc_holder/spell/wizard/targeted/lightning/cast(list/targets, mob/user = usr) + + var/mob/living/carbon/target = targets[1] + + if(get_dist(user,target)>range) + user << "They are too far away!" + Reset(user) + return + + user.Beam(target,icon_state="lightning",icon='icons/effects/effects.dmi',time=5) + + switch(energy) + if(0 to 25) + target.electrocute_act(10,"Lightning Bolt") + playsound(get_turf(target), 'sound/machines/defib_zap.ogg', 50, 1, -1) + if(25 to 75) + target.electrocute_act(25,"Lightning Bolt") + playsound(get_turf(target), 'sound/machines/defib_zap.ogg', 50, 1, -1) + if(75 to 100) + //CHAIN LIGHTNING + Bolt(user,target,energy,user) + Reset(user) + +/obj/effect/proc_holder/spell/wizard/targeted/lightning/proc/Bolt(mob/origin,mob/target,bolt_energy,mob/user = usr) + origin.Beam(target,icon_state="lightning",icon='icons/effects/effects.dmi',time=5) + var/mob/living/carbon/current = target + if(bolt_energy < 75) + current.electrocute_act(25,"Lightning Bolt") + playsound(get_turf(current), 'sound/machines/defib_zap.ogg', 50, 1, -1) + else + current.electrocute_act(25,"Lightning Bolt") + playsound(get_turf(current), 'sound/machines/defib_zap.ogg', 50, 1, -1) + var/list/possible_targets = new + for(var/mob/living/M in view_or_range(range,target,"view")) + if(user == M || target == M && los_check(current,M)) // || origin == M ? Not sure double shockings is good or not + continue + possible_targets += M + if(!possible_targets.len) + return + var/mob/living/next = pick(possible_targets) + if(next) + Bolt(current,next,bolt_energy-6,user) // 5 max bounces \ No newline at end of file diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 97b9a24eb2f1e45e5154e6d7192518affb558e07..62998f37b7cb64669c191ab2708bb0aa39fd5d13 100644 GIT binary patch delta 10082 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 delta 9388 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 diff --git a/paradise.dme b/paradise.dme index 534c3eb3d2f..282559a4f76 100644 --- a/paradise.dme +++ b/paradise.dme @@ -167,6 +167,7 @@ #include "code\datums\spells\horsemask.dm" #include "code\datums\spells\inflict_handler.dm" #include "code\datums\spells\knock.dm" +#include "code\datums\spells\lightning.dm" #include "code\datums\spells\mind_transfer.dm" #include "code\datums\spells\projectile.dm" #include "code\datums\spells\summonitem.dm"