From 7cbbe3502c7a7624969dd660c5608a4d6cba322c Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Tue, 7 Jul 2020 20:23:01 -0400 Subject: [PATCH] Fixes runtime when doing things with a ballistic gun without a magazine loaded --- code/modules/projectiles/guns/ballistic.dm | 5 +++-- code/modules/projectiles/guns/ballistic/revolver.dm | 8 +++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index 35745899543..635071818f0 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -253,7 +253,7 @@ if (chambered && !chambered.BB) chambered.forceMove(drop_location()) chambered = null - var/num_loaded = magazine.attackby(A, user, params, TRUE) + var/num_loaded = magazine?.attackby(A, user, params, TRUE) if (num_loaded) to_chat(user, "You load [num_loaded] [cartridge_wording]\s into \the [src].") playsound(src, load_sound, load_sound_volume, load_sound_vary) @@ -410,7 +410,8 @@ rounds.Add(chambered) if(drop_all) chambered = null - rounds.Add(magazine.ammo_list(drop_all)) + if(magazine) + rounds.Add(magazine.ammo_list(drop_all)) return rounds #define BRAINS_BLOWN_THROW_RANGE 3 diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 80902b037b8..6defdc6659c 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -17,6 +17,8 @@ var/recent_spin = 0 /obj/item/gun/ballistic/revolver/chamber_round(spin_cylinder = TRUE) + if(!magazine) //if it mag was qdel'd somehow. + CRASH("revolver tried to chamber a round without a magazine!") if(spin_cylinder) chambered = magazine.get_round(TRUE) else @@ -91,14 +93,14 @@ ) /obj/item/gun/ballistic/revolver/detective/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0) - if(magazine.caliber != initial(magazine.caliber)) + if(magazine && magazine.caliber != initial(magazine.caliber)) if(prob(70 - (magazine.ammo_count() * 10))) //minimum probability of 10, maximum of 60 playsound(user, fire_sound, fire_sound_volume, vary_fire_sound) to_chat(user, "[src] blows up in your face!") user.take_bodypart_damage(0,20) user.dropItemToGround(src) - return 0 - ..() + return FALSE + return ..() /obj/item/gun/ballistic/revolver/detective/screwdriver_act(mob/living/user, obj/item/I) if(..())