mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-27 18:41:59 +00:00
Autofire now continues firing when you hold down on one tile. (#13403)
Co-authored-by: Matt Atlas <liermattia@gmail.com>
This commit is contained in:
@@ -26,6 +26,7 @@
|
||||
var/adminobs = null
|
||||
var/area = null
|
||||
var/time_died_as_rat = 0
|
||||
var/list/autofire_aiming_at[2]
|
||||
|
||||
var/adminhelped = NOT_ADMINHELPED
|
||||
|
||||
|
||||
@@ -771,6 +771,9 @@ var/list/localhost_addresses = list(
|
||||
. = ..()
|
||||
|
||||
if(over_object)
|
||||
if(autofire_aiming_at[1])
|
||||
autofire_aiming_at[1] = over_object
|
||||
autofire_aiming_at[2] = params
|
||||
var/mob/living/M = mob
|
||||
if(istype(get_turf(over_object), /atom))
|
||||
var/atom/A = get_turf(over_object)
|
||||
@@ -780,15 +783,35 @@ var/list/localhost_addresses = list(
|
||||
|
||||
if(istype(M) && !M.incapacitated())
|
||||
var/obj/item/I = M.get_active_hand()
|
||||
if(istype(I, /obj/item/gun))
|
||||
var/obj/item/gun/gun = I
|
||||
if(gun.can_autofire())
|
||||
M.set_dir(get_dir(M, over_object))
|
||||
gun.Fire(get_turf(over_object), M, params, (get_dist(over_object, M) <= 1), FALSE)
|
||||
|
||||
if(istype(I, /obj/item/rfd/mining) && isturf(over_object))
|
||||
var/proximity = M.Adjacent(over_object)
|
||||
var/obj/item/rfd/mining/RFDM = I
|
||||
RFDM.afterattack(over_object, M, proximity, params, FALSE)
|
||||
|
||||
CHECK_TICK
|
||||
|
||||
/client/MouseDown(object, location, control, params)
|
||||
var/obj/item/I = mob.get_active_hand()
|
||||
var/obj/O = object
|
||||
if(istype(I, /obj/item/gun))
|
||||
var/obj/item/gun/G = I
|
||||
if(G.can_autofire(object, location, params) && O.is_auto_clickable())
|
||||
autofire_aiming_at[1] = object
|
||||
autofire_aiming_at[2] = params
|
||||
while(autofire_aiming_at[1])
|
||||
G.Fire(autofire_aiming_at[1], mob, autofire_aiming_at[2], (get_dist(mob, location) <= 1), FALSE)
|
||||
mob.set_dir(get_dir(mob, autofire_aiming_at[1]))
|
||||
sleep(G.fire_delay)
|
||||
CHECK_TICK
|
||||
|
||||
/client/MouseUp(object, location, control, params)
|
||||
autofire_aiming_at[1] = null
|
||||
|
||||
/atom/proc/is_auto_clickable()
|
||||
return TRUE
|
||||
|
||||
/obj/screen/is_auto_clickable()
|
||||
return FALSE
|
||||
|
||||
/obj/screen/click_catcher/is_auto_clickable()
|
||||
return TRUE
|
||||
@@ -945,7 +945,7 @@
|
||||
return 0
|
||||
|
||||
//Autofire
|
||||
/obj/item/gun/proc/can_autofire()
|
||||
/obj/item/gun/proc/can_autofire(object, location, params)
|
||||
return (can_autofire && world.time >= next_fire_time)
|
||||
|
||||
/obj/item/gun/proc/update_maptext()
|
||||
|
||||
@@ -413,10 +413,10 @@
|
||||
is_wieldable = TRUE
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="2 second burst", burst=10, burst_delay = 1, fire_delay = 20),
|
||||
list(mode_name="4 second burst", burst=20, burst_delay = 1, fire_delay = 40),
|
||||
list(mode_name="6 second burst", burst=30, burst_delay = 1, fire_delay = 60),
|
||||
list(mode_name="point-burst auto", can_autofire = TRUE, burst = 1, fire_delay = 1, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(1.0, 1.0, 1.0, 1.0, 1.2))
|
||||
list(mode_name="2 second burst", burst=10, burst_delay = 1, fire_delay = 20, fire_delay_wielded = 20),
|
||||
list(mode_name="4 second burst", burst=20, burst_delay = 1, fire_delay = 40, fire_delay_wielded = 40),
|
||||
list(mode_name="6 second burst", burst=30, burst_delay = 1, fire_delay = 60, fire_delay_wielded = 60),
|
||||
list(mode_name="point-burst auto", can_autofire = TRUE, burst = 1, fire_delay = 1, fire_delay_wielded = 1, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(1.0, 1.0, 1.0, 1.0, 1.2))
|
||||
)
|
||||
|
||||
needspin = FALSE
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
list(mode_name="semiauto", can_autofire=0, burst=1),
|
||||
list(mode_name="3-round bursts", can_autofire=0, burst=3, burst_accuracy=list(1,0,0), dispersion=list(0, 10, 15)),
|
||||
list(mode_name="short bursts", can_autofire=0, burst=5, burst_accuracy=list(1,0,,-1,-1), dispersion=list(5, 10, 15, 20)),
|
||||
list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, one_hand_fa_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25))
|
||||
list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, fire_delay_wielded=1, one_hand_fa_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25))
|
||||
)
|
||||
|
||||
//Submachine guns and personal defence weapons, go.
|
||||
@@ -121,7 +121,7 @@
|
||||
list(mode_name="semiauto", burst=1, fire_delay=10),
|
||||
list(mode_name="3-round bursts", burst=3, burst_accuracy=list(1,0,0), dispersion=list(0, 5, 10)),
|
||||
list(mode_name="short bursts", burst=5, burst_accuracy=list(1,0,0,-1,-1), dispersion=list(5, 5, 15)),
|
||||
list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, one_hand_fa_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25)),
|
||||
list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, fire_delay_wielded=1, one_hand_fa_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25)),
|
||||
)
|
||||
|
||||
//slower to regain aim, more inaccurate if not wielding
|
||||
@@ -166,7 +166,7 @@
|
||||
knife_y_offset = 13
|
||||
firemodes = list(
|
||||
list(mode_name="semiauto", burst=1, fire_delay=8),
|
||||
list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, one_hand_fa_penalty=22, burst_accuracy = list(0,-1,-1,-1,-2,-2,-2,-3), dispersion = list(5, 5, 10, 15, 20)),
|
||||
list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, fire_delay_wielded=1, one_hand_fa_penalty=22, burst_accuracy = list(0,-1,-1,-1,-2,-2,-2,-3), dispersion = list(5, 5, 10, 15, 20)),
|
||||
)
|
||||
|
||||
fire_delay = 8
|
||||
@@ -194,7 +194,7 @@
|
||||
knife_x_offset = 23
|
||||
knife_y_offset = 13
|
||||
|
||||
firemodes = list(mode_name="semiauto", burst=1, fire_delay=12)
|
||||
firemodes = list(mode_name="semiauto", burst=1, fire_delay=12, fire_delay_wielded=12)
|
||||
|
||||
/obj/item/gun/projectile/automatic/rifle/carbine/update_icon()
|
||||
..()
|
||||
@@ -315,7 +315,7 @@
|
||||
firemodes = list(
|
||||
list(mode_name="short bursts", burst=5, burst_accuracy = list(1,0,0,-1,-1), dispersion = list(3, 6, 9)),
|
||||
list(mode_name="long bursts", burst=8, burst_accuracy = list(1,0,0,-1,-1,-1,-2,-2), dispersion = list(8)),
|
||||
list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, one_hand_fa_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25))
|
||||
list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, fire_delay_wielded=1, one_hand_fa_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25))
|
||||
)
|
||||
|
||||
var/cover_open = 0
|
||||
@@ -510,7 +510,7 @@
|
||||
accuracy_wielded = 0
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="semiauto", burst=1, fire_delay= 10),
|
||||
list(mode_name="semiauto", burst=1, fire_delay= 10, fire_delay_wielded=10),
|
||||
list(mode_name="3-round bursts", burst=3, burst_accuracy=list(0,-1,-1), dispersion=list(0, 10, 15))
|
||||
)
|
||||
|
||||
|
||||
@@ -127,9 +127,9 @@
|
||||
origin_tech = null
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="short bursts", can_autofire=0, burst=6, move_delay=8, burst_accuracy = list(0,-1,-1,-2,-2), dispersion = list(3, 6, 9)),
|
||||
list(mode_name="short bursts", can_autofire=0, burst=6, move_delay=8, burst_accuracy = list(0,-1,-1,-2,-2), dispersion = list(3, 6, 9)),
|
||||
list(mode_name="long bursts", can_autofire=0, burst=12, move_delay=9, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(8)),
|
||||
list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, one_hand_fa_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25))
|
||||
list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, fire_delay_wielded=1, one_hand_fa_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25))
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -180,7 +180,7 @@
|
||||
sel_mode = 1
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="semiauto", burst=1, fire_delay=0),
|
||||
list(mode_name="semiauto", burst=1, fire_delay=0, fire_delay_wielded=0),
|
||||
list(mode_name="3-round bursts", burst=3, burst_accuracy=list(1,0,0), dispersion=list(0, 10))
|
||||
)
|
||||
|
||||
|
||||
@@ -253,7 +253,7 @@
|
||||
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="semiauto", burst=1, fire_delay=0),
|
||||
list(mode_name="semiauto", burst=1, fire_delay=0, fire_delay_wielded=0),
|
||||
list(mode_name="2-round bursts", burst=2, burst_accuracy=list(0,-1,-1), dispersion=list(0, 8))
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user