From 60e61db55f1d8953c4ba3cab77981cff4d8ceace Mon Sep 17 00:00:00 2001 From: uraniummeltdown Date: Tue, 14 Feb 2017 21:05:08 +0400 Subject: [PATCH 1/2] ports rod form wizard spell from tgstation --- code/datums/spells/rod_form.dm | 43 ++++++++++++++++++++++++ code/game/gamemodes/wizard/spellbook.dm | 7 +++- code/modules/events/immovable_rod.dm | 8 +++-- icons/mob/actions.dmi | Bin 84349 -> 84742 bytes paradise.dme | 1 + 5 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 code/datums/spells/rod_form.dm diff --git a/code/datums/spells/rod_form.dm b/code/datums/spells/rod_form.dm new file mode 100644 index 00000000000..5046da7c34d --- /dev/null +++ b/code/datums/spells/rod_form.dm @@ -0,0 +1,43 @@ +/obj/effect/proc_holder/spell/targeted/rod_form + name = "Rod Form" + desc = "Take on the form of an immovable rod, destroying all in your path." + clothes_req = 1 + human_req = 0 + charge_max = 250 + cooldown_min = 100 + range = -1 + include_user = 1 + invocation = "CLANG!" + invocation_type = "shout" + action_icon_state = "immrod" + +/obj/effect/proc_holder/spell/targeted/rod_form/cast(list/targets,mob/user = usr) + for(var/mob/living/M in targets) + var/turf/start = get_turf(M) + var/obj/effect/immovablerod/wizard/W = new(start, get_ranged_target_turf(M, M.dir, (15 + spell_level * 3))) + W.wizard = M + W.max_distance += spell_level * 3 //You travel farther when you upgrade the spell + W.start_turf = start + M.forceMove(W) + M.notransform = 1 + M.status_flags |= GODMODE + +//Wizard Version of the Immovable Rod + +/obj/effect/immovablerod/wizard + var/max_distance = 13 + var/mob/living/wizard + var/turf/start_turf + notify = FALSE + +/obj/effect/immovablerod/wizard/Move() + if(get_dist(start_turf, get_turf(src)) >= max_distance) + qdel(src) + ..() + +/obj/effect/immovablerod/wizard/Destroy() + if(wizard) + wizard.status_flags &= ~GODMODE + wizard.notransform = 0 + wizard.forceMove(get_turf(src)) + return ..() diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 3c59d47f020..fd554e03c85 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -106,6 +106,11 @@ spell_type = /obj/effect/proc_holder/spell/fireball log_name = "FB" +/datum/spellbook_entry/rod_form + name = "Rod Form" + spell_type = /obj/effect/proc_holder/spell/targeted/rod_form + log_name = "RF" + /datum/spellbook_entry/magicm name = "Magic Missile" spell_type = /obj/effect/proc_holder/spell/targeted/projectile/magic_missile @@ -853,7 +858,7 @@ spellname = "disintegrate" icon_state ="bookfireball" desc = "This book feels like it will rip stuff apart." - + /obj/item/weapon/spellbook/oneuse/sacredflame spell = /obj/effect/proc_holder/spell/targeted/sacred_flame spellname = "sacred flame" diff --git a/code/modules/events/immovable_rod.dm b/code/modules/events/immovable_rod.dm index 2dc2c8a17dd..04c9d3be5d4 100644 --- a/code/modules/events/immovable_rod.dm +++ b/code/modules/events/immovable_rod.dm @@ -29,14 +29,16 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 anchored = 1 var/z_original = 0 var/destination + var/notify = TRUE /obj/effect/immovablerod/New(atom/start, atom/end) loc = start z_original = z destination = end - notify_ghosts("\A [src] is inbound!", - enter_link="(Click to follow)", - source=src, action=NOTIFY_FOLLOW) + if(notify) + notify_ghosts("\A [src] is inbound!", + enter_link="(Click to follow)", + source=src, action=NOTIFY_FOLLOW) poi_list |= src if(end && end.z==z_original) walk_towards(src, destination, 1) diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index 9bf1a315131b812c8e28edafce703440b9a096cd..0e2faafa2f50c933244d060f612775ba4e669896 100644 GIT binary patch delta 5122 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 delta 4726 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 Date: Wed, 15 Feb 2017 16:09:51 +0400 Subject: [PATCH 2/2] cooldown 25->60 upgraded 10->20 --- code/datums/spells/rod_form.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/spells/rod_form.dm b/code/datums/spells/rod_form.dm index 5046da7c34d..004daf8969e 100644 --- a/code/datums/spells/rod_form.dm +++ b/code/datums/spells/rod_form.dm @@ -3,8 +3,8 @@ desc = "Take on the form of an immovable rod, destroying all in your path." clothes_req = 1 human_req = 0 - charge_max = 250 - cooldown_min = 100 + charge_max = 600 + cooldown_min = 200 range = -1 include_user = 1 invocation = "CLANG!"