diff --git a/code/modules/projectiles/boxes_magazines/_box_magazine.dm b/code/modules/projectiles/boxes_magazines/_box_magazine.dm index 9ea030da99..d0d846c144 100644 --- a/code/modules/projectiles/boxes_magazines/_box_magazine.dm +++ b/code/modules/projectiles/boxes_magazines/_box_magazine.dm @@ -20,6 +20,7 @@ var/caliber var/multiload = 1 var/start_empty = 0 + var/load_delay = 0 //how long do we take to load (deciseconds) var/list/bullet_cost var/list/base_cost// override this one as well if you override bullet_cost @@ -75,18 +76,21 @@ return 1 /obj/item/ammo_box/attackby(obj/item/A, mob/user, params, silent = FALSE, replace_spent = 0) + if(INTERACTING_WITH(user, A)) + return FALSE var/num_loaded = 0 if(!can_load(user)) return if(istype(A, /obj/item/ammo_box)) var/obj/item/ammo_box/AM = A for(var/obj/item/ammo_casing/AC in AM.stored_ammo) - var/did_load = give_round(AC, replace_spent) - if(did_load) - AM.stored_ammo -= AC - num_loaded++ - if(!did_load || !multiload) - break + if(load_delay && do_after(user, load_delay, target = src)) + var/did_load = give_round(AC, replace_spent) + if(did_load) + AM.stored_ammo -= AC + num_loaded++ + if(!did_load || !multiload) + break if(istype(A, /obj/item/ammo_casing)) var/obj/item/ammo_casing/AC = A if(give_round(AC, replace_spent)) diff --git a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm index 987efc0404..0d9183d1a4 100644 --- a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm +++ b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm @@ -148,6 +148,8 @@ max_ammo = 4 var/pixeloffsetx = 4 start_empty = TRUE + multiload = FALSE + load_delay = 6 //6ds /obj/item/ammo_box/shotgun/update_overlays() . = ..()