Makes unloading ballistic weapons better (Namely revolvers)

This commit is contained in:
madmanmartian
2019-02-18 14:15:54 +00:00
parent f088f3100b
commit b4f373a492
3 changed files with 29 additions and 8 deletions

View File

@@ -98,7 +98,6 @@
playsound(src, 'sound/weapons/bulletinsert.ogg', 60, TRUE) playsound(src, 'sound/weapons/bulletinsert.ogg', 60, TRUE)
A.update_icon() A.update_icon()
update_icon() update_icon()
return num_loaded return num_loaded
/obj/item/ammo_box/attack_self(mob/user) /obj/item/ammo_box/attack_self(mob/user)
@@ -132,6 +131,12 @@
boolets++ boolets++
return boolets return boolets
/obj/item/ammo_box/magazine/proc/ammo_list(drop_list = FALSE)
var/list/L = stored_ammo.Copy()
if(drop_list)
stored_ammo.Cut()
return L
/obj/item/ammo_box/magazine/proc/empty_magazine() /obj/item/ammo_box/magazine/proc/empty_magazine()
var/turf_mag = get_turf(src) var/turf_mag = get_turf(src)
for(var/obj/item/ammo in stored_ammo) for(var/obj/item/ammo in stored_ammo)

View File

@@ -22,6 +22,16 @@
for(var/i in 1 to rand(0, max_ammo*2)) for(var/i in 1 to rand(0, max_ammo*2))
rotate() rotate()
/obj/item/ammo_box/magazine/internal/cylinder/ammo_list(drop_list = FALSE)
var/list/L = list()
for(var/i=1 to stored_ammo.len)
var/obj/item/ammo_casing/bullet = stored_ammo[i]
if(bullet)
L.Add(bullet)
if(drop_list)//We have to maintain the list size, to emulate a cylinder
stored_ammo[i] = null
return L
/obj/item/ammo_box/magazine/internal/cylinder/give_round(obj/item/ammo_casing/R, replace_spent = 0) /obj/item/ammo_box/magazine/internal/cylinder/give_round(obj/item/ammo_casing/R, replace_spent = 0)
if(!R || (caliber && R.caliber != caliber) || (!caliber && R.type != ammo_type)) if(!R || (caliber && R.caliber != caliber) || (!caliber && R.type != ammo_type))
return FALSE return FALSE

View File

@@ -301,10 +301,7 @@
return return
if(bolt_type == BOLT_TYPE_NO_BOLT) if(bolt_type == BOLT_TYPE_NO_BOLT)
var/num_unloaded = 0 var/num_unloaded = 0
while (get_ammo() > 0) for(var/obj/item/ammo_casing/CB in get_ammo_list(TRUE, TRUE))
var/obj/item/ammo_casing/CB
CB = magazine.get_round(FALSE)
chambered = null
CB.forceMove(drop_location()) CB.forceMove(drop_location())
CB.bounce_away(FALSE, NONE) CB.bounce_away(FALSE, NONE)
num_unloaded++ num_unloaded++
@@ -343,6 +340,15 @@
boolets += magazine.ammo_count() boolets += magazine.ammo_count()
return boolets return boolets
/obj/item/gun/ballistic/proc/get_ammo_list(countchambered = TRUE, drop_all = FALSE)
var/list/rounds = list()
if(chambered && countchambered)
rounds.Add(chambered)
if(drop_all)
chambered = null
rounds.Add(magazine.ammo_list(drop_all))
return rounds
#define BRAINS_BLOWN_THROW_RANGE 3 #define BRAINS_BLOWN_THROW_RANGE 3
#define BRAINS_BLOWN_THROW_SPEED 1 #define BRAINS_BLOWN_THROW_SPEED 1
/obj/item/gun/ballistic/suicide_act(mob/user) /obj/item/gun/ballistic/suicide_act(mob/user)