From 353ef817897980a16ad23a50ff47c11cdd9a67cf Mon Sep 17 00:00:00 2001 From: py01 Date: Sat, 27 Jul 2019 19:58:58 -0700 Subject: [PATCH] Magic projectile fixes (#45484) * magic projectile changes * fixes var path * undoes magic changes * magic proj changes * am checkchaange * removes bad refactor * proper am check on mag missile * locker staff fix --- code/modules/mob/living/living_defense.dm | 6 ++++-- code/modules/projectiles/projectile.dm | 2 +- code/modules/projectiles/projectile/magic.dm | 9 ++++----- code/modules/spells/spell_types/wizard.dm | 11 ++++++++++- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 18b7a3539b4..5eb80d908cc 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -44,11 +44,13 @@ /mob/living/bullet_act(obj/item/projectile/P, def_zone) var/armor = run_armor_check(def_zone, P.flag, "","",P.armour_penetration) - if(!P.nodamage) + var/on_hit_state = P.on_hit(src, armor) + if(!P.nodamage && on_hit_state != BULLET_ACT_BLOCK) apply_damage(P.damage, P.damage_type, def_zone, armor) + apply_effects(P.stun, P.knockdown, P.unconscious, P.irradiate, P.slur, P.stutter, P.eyeblur, P.drowsy, FALSE, P.stamina, P.jitter, P.paralyze, P.immobilize) if(P.dismemberment) check_projectile_dismemberment(P, def_zone) - return P.on_hit(src, armor)? BULLET_ACT_HIT : BULLET_ACT_BLOCK + return on_hit_state ? BULLET_ACT_HIT : BULLET_ACT_BLOCK /mob/living/proc/check_projectile_dismemberment(obj/item/projectile/P, def_zone) return 0 diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index b835ec9c178..4ae107dbffa 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -204,7 +204,7 @@ else L.log_message("has been shot by [firer] with [src]", LOG_ATTACK, color="orange") - return L.apply_effects(stun, knockdown, unconscious, irradiate, slur, stutter, eyeblur, drowsy, blocked, stamina, jitter, paralyze, immobilize) + return BULLET_ACT_HIT /obj/item/projectile/proc/vol_by_damage() if(src.damage) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index b97022a4e36..c3684a26d96 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -366,7 +366,7 @@ if(M.anti_magic_check()) M.visible_message("[src] vanishes on contact with [target]!") qdel(src) - return + return BULLET_ACT_BLOCK . = ..() @@ -400,12 +400,11 @@ /obj/item/projectile/magic/locker/on_hit(target) if(created) return ..() - var/obj/structure/closet/C = new locker_temp_instance(get_turf(src)) if(LAZYLEN(contents)) for(var/atom/movable/AM in contents) - C.insert(AM) - C.welded = weld - C.update_icon() + locker_temp_instance.insert(AM) + locker_temp_instance.welded = weld + locker_temp_instance.update_icon() created = TRUE return ..() diff --git a/code/modules/spells/spell_types/wizard.dm b/code/modules/spells/spell_types/wizard.dm index 69fd99b3557..c3da7ce50a8 100644 --- a/code/modules/spells/spell_types/wizard.dm +++ b/code/modules/spells/spell_types/wizard.dm @@ -15,12 +15,13 @@ sound = 'sound/magic/magic_missile.ogg' /obj/item/projectile/magic/spell/magic_missile - name = "a magic missile" + name = "magic missile" icon_state = "magicm" range = 20 speed = 5 trigger_range = 0 linger = TRUE + nodamage = FALSE paralyze = 60 hitsound = 'sound/magic/mm_hit.ogg' @@ -28,6 +29,14 @@ trail_lifespan = 5 trail_icon_state = "magicmd" +/obj/item/projectile/magic/spell/magic_missile/on_hit(target) + . = ..() + if(ismob(target)) + var/mob/M = target + if(M.anti_magic_check()) + M.visible_message("[src] vanishes on contact with [target]!") + return BULLET_ACT_BLOCK + /obj/effect/proc_holder/spell/targeted/genetic/mutate name = "Mutate" desc = "This spell causes you to turn into a hulk and gain laser vision for a short while."