Merge pull request #10177 from BlackMajor/FIST

NUCLEAR FIST. A new wizard spell involving punching people so hard they explode.
This commit is contained in:
BlackMajor
2019-12-16 14:14:35 +13:00
committed by GitHub
11 changed files with 105 additions and 2 deletions

View File

@@ -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

View File

@@ -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"

View File

@@ -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

View File

@@ -507,4 +507,32 @@
return
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)
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))
. = ..()

View File

@@ -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 ..()

View File

@@ -23,7 +23,7 @@
remove_hand(TRUE)
to_chat(user, "<span class='notice'>You draw the power out of your hand.</span>")
return
for(var/mob/living/carbon/C in targets)
if(!attached_hand)
if(ChargeHand(C))
@@ -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"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.