Merge pull request #10177 from BlackMajor/FIST
NUCLEAR FIST. A new wizard spell involving punching people so hard they explode.
@@ -442,3 +442,10 @@
|
||||
animate(src, alpha = 0, transform = skew, time = duration)
|
||||
else
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
/obj/effect/temp_visual/slugboom
|
||||
icon = 'icons/effects/96x96.dmi'
|
||||
icon_state = "slugboom"
|
||||
randomdir = FALSE
|
||||
duration = 30
|
||||
pixel_x = -24
|
||||
@@ -183,6 +183,23 @@
|
||||
explosion(user.loc, 1, 0, 2, 3, FALSE, FALSE, 2)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/book/granter/spell/nuclearfist
|
||||
spell = /obj/effect/proc_holder/spell/targeted/touch/nuclear_fist
|
||||
spellname = "nuclear fist"
|
||||
icon_state ="booknuclearfist"
|
||||
desc = "This book radiates confidence."
|
||||
remarks = list("Line them up....", ".. knock em' down...", "Dress in yellow for maximum effect... why?", "The energy comes from spinach... huh", "Work out for three years? No way!", "Oh I'll cast you a spell allright...", "What ho mighty wizard... ho ho ho...")
|
||||
|
||||
/obj/item/book/granter/spell/nuclearfist/recoil(mob/living/carbon/user)
|
||||
..()
|
||||
to_chat(user, "<span class='danger'>Your arm spontaneously detonates!</span>")
|
||||
explosion(user.loc, -1, 0, 2, -1, FALSE, FALSE, 2)
|
||||
var/obj/item/bodypart/part = user.get_holding_bodypart_of_item(src)
|
||||
if(part)
|
||||
part.dismember()
|
||||
qdel(part)
|
||||
|
||||
|
||||
/obj/item/book/granter/spell/sacredflame
|
||||
spell = /obj/effect/proc_holder/spell/targeted/sacred_flame
|
||||
spellname = "sacred flame"
|
||||
|
||||
@@ -141,6 +141,10 @@
|
||||
name = "Disintegrate"
|
||||
spell_type = /obj/effect/proc_holder/spell/targeted/touch/disintegrate
|
||||
|
||||
/datum/spellbook_entry/nuclearfist
|
||||
name = "Nuclear Fist"
|
||||
spell_type = /obj/effect/proc_holder/spell/targeted/touch/nuclear_fist
|
||||
|
||||
/datum/spellbook_entry/disabletech
|
||||
name = "Disable Tech"
|
||||
spell_type = /obj/effect/proc_holder/spell/targeted/emplosion/disable_tech
|
||||
|
||||
@@ -508,3 +508,31 @@
|
||||
var/turf/T = get_turf(target)
|
||||
for(var/i=0, i<50, i+=10)
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/explosion, T, -1, exp_heavy, exp_light, exp_flash, FALSE, FALSE, exp_fire), i)
|
||||
|
||||
/obj/item/projectile/magic/nuclear
|
||||
name = "\proper blazing manliness"
|
||||
icon_state = "nuclear"
|
||||
nodamage = TRUE
|
||||
var/mob/living/victim = null
|
||||
var/used = 0
|
||||
|
||||
/obj/item/projectile/magic/nuclear/on_hit(target)
|
||||
if(used)
|
||||
return
|
||||
new/obj/effect/temp_visual/slugboom(get_turf(src))
|
||||
if(ismob(target))
|
||||
if(target == victim)
|
||||
return
|
||||
used = 1
|
||||
visible_message("<span class='danger'>[victim] slams into [target] with explosive force!</span>")
|
||||
explosion(src, 2, 3, 4, -1, TRUE, FALSE, 5)
|
||||
else
|
||||
used = 1
|
||||
victim.take_overall_damage(30,30)
|
||||
victim.Knockdown(60)
|
||||
explosion(src, -1, -1, -1, -1, FALSE, FALSE, 5)
|
||||
|
||||
/obj/item/projectile/magic/nuclear/Destroy()
|
||||
for(var/atom/movable/AM in contents)
|
||||
AM.forceMove(get_turf(src))
|
||||
. = ..()
|
||||
@@ -182,3 +182,38 @@
|
||||
|
||||
if(charges <= 0)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/melee/touch_attack/nuclearfist
|
||||
name = "\improper PURE MANLINESS"
|
||||
desc = "SHOW THEM RAW POWER"
|
||||
catchphrase = "I CAST FIST!"
|
||||
on_use_sound = 'sound/weapons/nuclear_fist.ogg'
|
||||
icon_state = "disintegrate"
|
||||
item_state = "disintegrate"
|
||||
|
||||
/obj/item/melee/touch_attack/nuclearfist/afterattack(atom/movable/target, mob/living/carbon/user, proximity)
|
||||
if(!proximity || target == user || !ismob(target) || !iscarbon(user) || user.lying || user.handcuffed) //exploding after touching yourself would be bad
|
||||
return
|
||||
if(!user.can_speak_vocal())
|
||||
to_chat(user, "<span class='notice'>You can't get the words out!</span>")
|
||||
return
|
||||
var/mob/M = target
|
||||
var/atom/A = M.anti_magic_check()
|
||||
if(A)
|
||||
if(isitem(A))
|
||||
target.visible_message("<span class='warning'>[target]'s [A] glows brightly as it wards off the spell!</span>")
|
||||
user.visible_message("<span class='warning'>The feedback blows [user]'s arm off!</span>","<span class='userdanger'>The spell bounces from [M]'s skin back into your arm!</span>")
|
||||
user.flash_act()
|
||||
var/obj/item/bodypart/part = user.get_holding_bodypart_of_item(src)
|
||||
if(part)
|
||||
part.dismember()
|
||||
return ..()
|
||||
var/angle = dir2angle(get_dir(src, get_step_away(target, src)))
|
||||
var/obj/item/projectile/magic/nuclear/P = new(get_turf(src))
|
||||
P.victim = target
|
||||
target.forceMove(P)
|
||||
P.setAngle(angle)
|
||||
P.original = user
|
||||
P.firer = user
|
||||
P.fire()
|
||||
return ..()
|
||||
@@ -71,3 +71,15 @@
|
||||
|
||||
action_icon_state = "statue"
|
||||
sound = 'sound/magic/fleshtostone.ogg'
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/touch/nuclear_fist
|
||||
name = "Nuclear Fist"
|
||||
desc = "This spell channels raw manliness, allowing you punch your enemies across the galaxy, causing them to detonate violently if hitting any other living being midflight. Does not work while laying down."
|
||||
hand_path = /obj/item/melee/touch_attack/nuclearfist
|
||||
|
||||
school = "evocation"
|
||||
charge_max = 200
|
||||
clothes_req = 0
|
||||
cooldown_min = 40
|
||||
|
||||
action_icon_state = "nuclearfist"
|
||||
|
Before Width: | Height: | Size: 1.6 MiB After Width: | Height: | Size: 1.6 MiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 122 KiB |