diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 4d5b5f74367..90bbd5d7e2d 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -107,7 +107,7 @@ autofiring_by = null aim_targets = null last_moved_mob = null - QDEL_LIST(firemodes) + QDEL_NULL_LIST(firemodes) . = ..() /obj/item/gun/proc/set_autofire(atom/fire_at, mob/fire_by) diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index 210e70bc860..816cc942f55 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -55,6 +55,8 @@ /obj/item/gun/projectile/Destroy() QDEL_NULL_LIST(ammo_magazine) + QDEL_NULL_LIST(loaded) + QDEL_NULL(chambered) return ..() /obj/item/gun/projectile/consume_next_projectile() diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 983192a2b46..700df393a67 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -175,6 +175,7 @@ /obj/item/projectile/proc/launch(atom/target, target_zone, mob/user, params, Angle_override, forced_spread = 0) original = target + previous = get_turf(loc) def_zone = check_zone(target_zone) firer = user var/direct_target @@ -369,6 +370,7 @@ return 1 /obj/item/projectile/proc/before_move() + previous = loc return /obj/item/projectile/proc/after_move() diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 2e387e186d1..4a10b2942ee 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -251,15 +251,18 @@ var/mob/living/simple_animal/hostile/facehugger/holder = null /obj/item/projectile/facehugger_proj/Bump(atom/A, forced = FALSE) + if(A == src) + return FALSE // no idea how this could ever happen but let's ensure + if(A == firer) loc = A.loc - return + return FALSE if(!holder) - return + return FALSE if(bumped) - return + return FALSE bumped = TRUE if(istype(A, /mob/living/carbon/human))