diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 39df5708c9..ebf5380669 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -80,6 +80,8 @@ var/sel_mode = 1 //index of the currently selected mode var/list/firemodes = list() + var/reload_time = 1 //Base reload time in seconds + //aiming system stuff var/keep_aim = 1 //1 for keep shooting until aim is lowered //0 for one bullet after tarrget moves and aim is lowered diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index c4e3372524..f9858325f3 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -15,6 +15,8 @@ var/modifystate var/charge_meter = 1 //if set, the icon state will be chosen based on the current charge + reload_time = 5 //Energy weapons are slower to reload than ballistics by default, but this is no change from current values + //self-recharging var/self_recharge = 0 //if set, the weapon will recharge itself var/use_external_power = 0 //if set, the weapon will look for an external power source to draw from, otherwise it recharges magically @@ -117,8 +119,8 @@ if(!power_supply) return null if(!ispath(projectile_type)) return null if(!power_supply.checked_use(charge_cost)) return null - var/mob/living/M = loc // TGMC Ammo HUD - if(istype(M)) // TGMC Ammo HUD + var/mob/living/M = loc // TGMC Ammo HUD + if(istype(M)) // TGMC Ammo HUD M?.hud_used.update_ammo_hud(M, src) return new projectile_type(src) @@ -133,7 +135,7 @@ to_chat(user, "[src] already has a power cell.") else user.visible_message("[user] is reloading [src].", "You start to insert [P] into [src].") - if(do_after(user, 5 * P.w_class)) + if(do_after(user, reload_time * P.w_class)) user.remove_from_mob(P) power_supply = P P.loc = src diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index bbfe861305..edc28cc8f0 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -17,6 +17,8 @@ var/load_method = SINGLE_CASING|SPEEDLOADER //1 = Single shells, 2 = box or quick loader, 3 = magazine var/obj/item/ammo_casing/chambered = null + reload_time = 1 //Ballistics reload fast, but not instantly + //For SINGLE_CASING or SPEEDLOADER guns var/max_shells = 0 //the number of casings that will fit inside var/ammo_type = null //the type of ammo that the gun comes preloaded with @@ -54,9 +56,15 @@ chambered = ammo_magazine.stored_ammo[ammo_magazine.stored_ammo.len] if(handle_casings != HOLD_CASINGS) ammo_magazine.stored_ammo -= chambered +<<<<<<< HEAD var/mob/living/M = loc if(istype(M)) +======= + + var/mob/living/M = loc // TGMC Ammo HUD + if(istype(M)) // TGMC Ammo HUD +>>>>>>> 0cd26259eb... Merge pull request #14901 from KillianKirilenko/kk-guntweaks M?.hud_used.update_ammo_hud(M, src) if (chambered) @@ -102,9 +110,15 @@ if(handle_casings != HOLD_CASINGS) chambered = null +<<<<<<< HEAD var/mob/living/M = loc if(istype(M)) +======= + + var/mob/living/M = loc // TGMC Ammo HUD + if(istype(M)) // TGMC Ammo HUD +>>>>>>> 0cd26259eb... Merge pull request #14901 from KillianKirilenko/kk-guntweaks M?.hud_used.update_ammo_hud(M, src) @@ -121,12 +135,13 @@ if(ammo_magazine) to_chat(user, "[src] already has a magazine loaded.") //already a magazine here return - user.remove_from_mob(AM) - AM.loc = src - ammo_magazine = AM - user.visible_message("[user] inserts [AM] into [src].", "You insert [AM] into [src].") - user.hud_used.update_ammo_hud(user, src) - playsound(src, 'sound/weapons/flipblade.ogg', 50, 1) + if(do_after(user, reload_time * AM.w_class)) + user.remove_from_mob(AM) + AM.loc = src + ammo_magazine = AM + user.visible_message("[user] inserts [AM] into [src].", "You insert [AM] into [src].") + user.hud_used.update_ammo_hud(user, src) + playsound(src, 'sound/weapons/flipblade.ogg', 50, 1) if(SPEEDLOADER) if(loaded.len >= max_shells) to_chat(user, "[src] is full!") @@ -140,11 +155,12 @@ loaded += C AM.stored_ammo -= C //should probably go inside an ammo_magazine proc, but I guess less proc calls this way... count++ - user.hud_used.update_ammo_hud(user, src) - if(count) - user.visible_message("[user] reloads [src].", "You load [count] round\s into [src].") - user.hud_used.update_ammo_hud(user, src) - playsound(src, 'sound/weapons/empty.ogg', 50, 1) + user.hud_used.update_ammo_hud(user, src) + if(do_after(user, reload_time * AM.w_class)) + if(count) + user.visible_message("[user] reloads [src].", "You load [count] round\s into [src].") + user.hud_used.update_ammo_hud(user, src) + playsound(src, 'sound/weapons/empty.ogg', 50, 1) AM.update_icon() else if(istype(A, /obj/item/ammo_casing)) var/obj/item/ammo_casing/C = A @@ -154,11 +170,12 @@ to_chat(user, "[src] is full.") return - user.remove_from_mob(C) - C.loc = src - loaded.Insert(1, C) //add to the head of the list - user.visible_message("[user] inserts \a [C] into [src].", "You insert \a [C] into [src].") - playsound(src, 'sound/weapons/empty.ogg', 50, 1) + if(do_after(user, reload_time * C.w_class)) + user.remove_from_mob(C) + C.loc = src + loaded.Insert(1, C) //add to the head of the list + user.visible_message("[user] inserts \a [C] into [src].", "You insert \a [C] into [src].") + playsound(src, 'sound/weapons/empty.ogg', 50, 1) else if(istype(A, /obj/item/weapon/storage)) var/obj/item/weapon/storage/storage = A @@ -179,7 +196,7 @@ sleep(1 SECOND) update_icon() - user.hud_used.update_ammo_hud(user, src) + user.hud_used.update_ammo_hud(user, src) //attempts to unload src. If allow_dump is set to 0, the speedloader unloading method will be disabled /obj/item/weapon/gun/projectile/proc/unload_ammo(mob/user, var/allow_dump=1) @@ -189,7 +206,7 @@ playsound(src, 'sound/weapons/empty.ogg', 50, 1) ammo_magazine.update_icon() ammo_magazine = null - user.hud_used.update_ammo_hud(user, src) + user.hud_used.update_ammo_hud(user, src) else if(loaded.len) //presumably, if it can be speed-loaded, it can be speed-unloaded. if(allow_dump && (load_method & SPEEDLOADER)) @@ -208,11 +225,11 @@ user.put_in_hands(C) user.visible_message("[user] removes \a [C] from [src].", "You remove \a [C] from [src].") playsound(src, 'sound/weapons/empty.ogg', 50, 1) - user.hud_used.update_ammo_hud(user, src) + user.hud_used.update_ammo_hud(user, src) else to_chat(user, "[src] is empty.") update_icon() - user.hud_used.update_ammo_hud(user, src) + user.hud_used.update_ammo_hud(user, src) /obj/item/weapon/gun/projectile/attackby(var/obj/item/A as obj, mob/user as mob) ..() @@ -243,7 +260,7 @@ ammo_magazine.update_icon() ammo_magazine = null update_icon() //make sure to do this after unsetting ammo_magazine - user.hud_used.update_ammo_hud(user, src) + user.hud_used.update_ammo_hud(user, src) /obj/item/weapon/gun/projectile/examine(mob/user) . = ..() @@ -320,7 +337,7 @@ for(var/obj/item/ammo_casing/bullet in ammo_magazine.stored_ammo) if(bullet.BB) shots_left++ - + if(shots_left > 0) return shots_left else @@ -332,7 +349,7 @@ for(var/obj/item/ammo_casing/bullet in loaded) if(bullet.BB) // Only increment how many shots we have left if we're loaded. shots_left++ - + if(shots_left > 0) return shots_left else