mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
Gun Reloading Microtweaks
This commit is contained in:
committed by
CHOMPStation2
parent
5f07c2a152
commit
8826718f1c
@@ -80,6 +80,8 @@
|
|||||||
var/sel_mode = 1 //index of the currently selected mode
|
var/sel_mode = 1 //index of the currently selected mode
|
||||||
var/list/firemodes = list()
|
var/list/firemodes = list()
|
||||||
|
|
||||||
|
var/reload_time = 1 //Base reload time in seconds
|
||||||
|
|
||||||
//aiming system stuff
|
//aiming system stuff
|
||||||
var/keep_aim = 1 //1 for keep shooting until aim is lowered
|
var/keep_aim = 1 //1 for keep shooting until aim is lowered
|
||||||
//0 for one bullet after tarrget moves and aim is lowered
|
//0 for one bullet after tarrget moves and aim is lowered
|
||||||
|
|||||||
@@ -15,6 +15,8 @@
|
|||||||
var/modifystate
|
var/modifystate
|
||||||
var/charge_meter = 1 //if set, the icon state will be chosen based on the current charge
|
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
|
//self-recharging
|
||||||
var/self_recharge = 0 //if set, the weapon will recharge itself
|
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
|
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(!power_supply) return null
|
||||||
if(!ispath(projectile_type)) return null
|
if(!ispath(projectile_type)) return null
|
||||||
if(!power_supply.checked_use(charge_cost)) return null
|
if(!power_supply.checked_use(charge_cost)) return null
|
||||||
var/mob/living/M = loc // TGMC Ammo HUD
|
var/mob/living/M = loc // TGMC Ammo HUD
|
||||||
if(istype(M)) // TGMC Ammo HUD
|
if(istype(M)) // TGMC Ammo HUD
|
||||||
M?.hud_used.update_ammo_hud(M, src)
|
M?.hud_used.update_ammo_hud(M, src)
|
||||||
return new projectile_type(src)
|
return new projectile_type(src)
|
||||||
|
|
||||||
@@ -133,7 +135,7 @@
|
|||||||
to_chat(user, "<span class='notice'>[src] already has a power cell.</span>")
|
to_chat(user, "<span class='notice'>[src] already has a power cell.</span>")
|
||||||
else
|
else
|
||||||
user.visible_message("[user] is reloading [src].", "<span class='notice'>You start to insert [P] into [src].</span>")
|
user.visible_message("[user] is reloading [src].", "<span class='notice'>You start to insert [P] into [src].</span>")
|
||||||
if(do_after(user, 5 * P.w_class))
|
if(do_after(user, reload_time * P.w_class))
|
||||||
user.remove_from_mob(P)
|
user.remove_from_mob(P)
|
||||||
power_supply = P
|
power_supply = P
|
||||||
P.loc = src
|
P.loc = src
|
||||||
|
|||||||
@@ -17,6 +17,8 @@
|
|||||||
var/load_method = SINGLE_CASING|SPEEDLOADER //1 = Single shells, 2 = box or quick loader, 3 = magazine
|
var/load_method = SINGLE_CASING|SPEEDLOADER //1 = Single shells, 2 = box or quick loader, 3 = magazine
|
||||||
var/obj/item/ammo_casing/chambered = null
|
var/obj/item/ammo_casing/chambered = null
|
||||||
|
|
||||||
|
reload_time = 1 //Ballistics reload fast, but not instantly
|
||||||
|
|
||||||
//For SINGLE_CASING or SPEEDLOADER guns
|
//For SINGLE_CASING or SPEEDLOADER guns
|
||||||
var/max_shells = 0 //the number of casings that will fit inside
|
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
|
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]
|
chambered = ammo_magazine.stored_ammo[ammo_magazine.stored_ammo.len]
|
||||||
if(handle_casings != HOLD_CASINGS)
|
if(handle_casings != HOLD_CASINGS)
|
||||||
ammo_magazine.stored_ammo -= chambered
|
ammo_magazine.stored_ammo -= chambered
|
||||||
|
<<<<<<< HEAD
|
||||||
|
|
||||||
var/mob/living/M = loc
|
var/mob/living/M = loc
|
||||||
if(istype(M))
|
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)
|
M?.hud_used.update_ammo_hud(M, src)
|
||||||
|
|
||||||
if (chambered)
|
if (chambered)
|
||||||
@@ -102,9 +110,15 @@
|
|||||||
|
|
||||||
if(handle_casings != HOLD_CASINGS)
|
if(handle_casings != HOLD_CASINGS)
|
||||||
chambered = null
|
chambered = null
|
||||||
|
<<<<<<< HEAD
|
||||||
|
|
||||||
var/mob/living/M = loc
|
var/mob/living/M = loc
|
||||||
if(istype(M))
|
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)
|
M?.hud_used.update_ammo_hud(M, src)
|
||||||
|
|
||||||
|
|
||||||
@@ -121,12 +135,13 @@
|
|||||||
if(ammo_magazine)
|
if(ammo_magazine)
|
||||||
to_chat(user, "<span class='warning'>[src] already has a magazine loaded.</span>") //already a magazine here
|
to_chat(user, "<span class='warning'>[src] already has a magazine loaded.</span>") //already a magazine here
|
||||||
return
|
return
|
||||||
user.remove_from_mob(AM)
|
if(do_after(user, reload_time * AM.w_class))
|
||||||
AM.loc = src
|
user.remove_from_mob(AM)
|
||||||
ammo_magazine = AM
|
AM.loc = src
|
||||||
user.visible_message("[user] inserts [AM] into [src].", "<span class='notice'>You insert [AM] into [src].</span>")
|
ammo_magazine = AM
|
||||||
user.hud_used.update_ammo_hud(user, src)
|
user.visible_message("[user] inserts [AM] into [src].", "<span class='notice'>You insert [AM] into [src].</span>")
|
||||||
playsound(src, 'sound/weapons/flipblade.ogg', 50, 1)
|
user.hud_used.update_ammo_hud(user, src)
|
||||||
|
playsound(src, 'sound/weapons/flipblade.ogg', 50, 1)
|
||||||
if(SPEEDLOADER)
|
if(SPEEDLOADER)
|
||||||
if(loaded.len >= max_shells)
|
if(loaded.len >= max_shells)
|
||||||
to_chat(user, "<span class='warning'>[src] is full!</span>")
|
to_chat(user, "<span class='warning'>[src] is full!</span>")
|
||||||
@@ -140,11 +155,12 @@
|
|||||||
loaded += C
|
loaded += C
|
||||||
AM.stored_ammo -= C //should probably go inside an ammo_magazine proc, but I guess less proc calls this way...
|
AM.stored_ammo -= C //should probably go inside an ammo_magazine proc, but I guess less proc calls this way...
|
||||||
count++
|
count++
|
||||||
user.hud_used.update_ammo_hud(user, src)
|
user.hud_used.update_ammo_hud(user, src)
|
||||||
if(count)
|
if(do_after(user, reload_time * AM.w_class))
|
||||||
user.visible_message("[user] reloads [src].", "<span class='notice'>You load [count] round\s into [src].</span>")
|
if(count)
|
||||||
user.hud_used.update_ammo_hud(user, src)
|
user.visible_message("[user] reloads [src].", "<span class='notice'>You load [count] round\s into [src].</span>")
|
||||||
playsound(src, 'sound/weapons/empty.ogg', 50, 1)
|
user.hud_used.update_ammo_hud(user, src)
|
||||||
|
playsound(src, 'sound/weapons/empty.ogg', 50, 1)
|
||||||
AM.update_icon()
|
AM.update_icon()
|
||||||
else if(istype(A, /obj/item/ammo_casing))
|
else if(istype(A, /obj/item/ammo_casing))
|
||||||
var/obj/item/ammo_casing/C = A
|
var/obj/item/ammo_casing/C = A
|
||||||
@@ -154,11 +170,12 @@
|
|||||||
to_chat(user, "<span class='warning'>[src] is full.</span>")
|
to_chat(user, "<span class='warning'>[src] is full.</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
user.remove_from_mob(C)
|
if(do_after(user, reload_time * C.w_class))
|
||||||
C.loc = src
|
user.remove_from_mob(C)
|
||||||
loaded.Insert(1, C) //add to the head of the list
|
C.loc = src
|
||||||
user.visible_message("[user] inserts \a [C] into [src].", "<span class='notice'>You insert \a [C] into [src].</span>")
|
loaded.Insert(1, C) //add to the head of the list
|
||||||
playsound(src, 'sound/weapons/empty.ogg', 50, 1)
|
user.visible_message("[user] inserts \a [C] into [src].", "<span class='notice'>You insert \a [C] into [src].</span>")
|
||||||
|
playsound(src, 'sound/weapons/empty.ogg', 50, 1)
|
||||||
|
|
||||||
else if(istype(A, /obj/item/weapon/storage))
|
else if(istype(A, /obj/item/weapon/storage))
|
||||||
var/obj/item/weapon/storage/storage = A
|
var/obj/item/weapon/storage/storage = A
|
||||||
@@ -179,7 +196,7 @@
|
|||||||
sleep(1 SECOND)
|
sleep(1 SECOND)
|
||||||
|
|
||||||
update_icon()
|
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
|
//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)
|
/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)
|
playsound(src, 'sound/weapons/empty.ogg', 50, 1)
|
||||||
ammo_magazine.update_icon()
|
ammo_magazine.update_icon()
|
||||||
ammo_magazine = null
|
ammo_magazine = null
|
||||||
user.hud_used.update_ammo_hud(user, src)
|
user.hud_used.update_ammo_hud(user, src)
|
||||||
else if(loaded.len)
|
else if(loaded.len)
|
||||||
//presumably, if it can be speed-loaded, it can be speed-unloaded.
|
//presumably, if it can be speed-loaded, it can be speed-unloaded.
|
||||||
if(allow_dump && (load_method & SPEEDLOADER))
|
if(allow_dump && (load_method & SPEEDLOADER))
|
||||||
@@ -208,11 +225,11 @@
|
|||||||
user.put_in_hands(C)
|
user.put_in_hands(C)
|
||||||
user.visible_message("[user] removes \a [C] from [src].", "<span class='notice'>You remove \a [C] from [src].</span>")
|
user.visible_message("[user] removes \a [C] from [src].", "<span class='notice'>You remove \a [C] from [src].</span>")
|
||||||
playsound(src, 'sound/weapons/empty.ogg', 50, 1)
|
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
|
else
|
||||||
to_chat(user, "<span class='warning'>[src] is empty.</span>")
|
to_chat(user, "<span class='warning'>[src] is empty.</span>")
|
||||||
update_icon()
|
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)
|
/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.update_icon()
|
||||||
ammo_magazine = null
|
ammo_magazine = null
|
||||||
update_icon() //make sure to do this after unsetting ammo_magazine
|
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)
|
/obj/item/weapon/gun/projectile/examine(mob/user)
|
||||||
. = ..()
|
. = ..()
|
||||||
@@ -320,7 +337,7 @@
|
|||||||
for(var/obj/item/ammo_casing/bullet in ammo_magazine.stored_ammo)
|
for(var/obj/item/ammo_casing/bullet in ammo_magazine.stored_ammo)
|
||||||
if(bullet.BB)
|
if(bullet.BB)
|
||||||
shots_left++
|
shots_left++
|
||||||
|
|
||||||
if(shots_left > 0)
|
if(shots_left > 0)
|
||||||
return shots_left
|
return shots_left
|
||||||
else
|
else
|
||||||
@@ -332,7 +349,7 @@
|
|||||||
for(var/obj/item/ammo_casing/bullet in loaded)
|
for(var/obj/item/ammo_casing/bullet in loaded)
|
||||||
if(bullet.BB) // Only increment how many shots we have left if we're loaded.
|
if(bullet.BB) // Only increment how many shots we have left if we're loaded.
|
||||||
shots_left++
|
shots_left++
|
||||||
|
|
||||||
if(shots_left > 0)
|
if(shots_left > 0)
|
||||||
return shots_left
|
return shots_left
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user