mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-01-01 21:21:59 +00:00
Dual wielding!
This commit is contained in:
@@ -103,12 +103,6 @@
|
||||
else
|
||||
user.visible_message("<span class='danger'>[user] fires [src]!</span>", "<span class='danger'>You fire [src]!</span>", "You hear \a [fire_sound_text]!")
|
||||
|
||||
if(weapon_weight >= WEAPON_MEDIUM)
|
||||
if(user.get_inactive_hand())
|
||||
if(prob(15))
|
||||
if(user.drop_item())
|
||||
user.visible_message("<span class='danger'>[src] flies out of [user]'s hands!</span>", "<span class='userdanger'>[src] kicks out of your grip!</span>")
|
||||
|
||||
/obj/item/gun/emp_act(severity)
|
||||
for(var/obj/O in contents)
|
||||
O.emp_act(severity)
|
||||
@@ -153,7 +147,21 @@
|
||||
to_chat(user, "<span class='userdanger'>You need both hands free to fire \the [src]!</span>")
|
||||
return
|
||||
|
||||
process_fire(target,user,1,params)
|
||||
//DUAL WIELDING
|
||||
var/bonus_spread = 0
|
||||
var/loop_counter = 0
|
||||
if(ishuman(user) && user.a_intent == INTENT_HARM)
|
||||
var/mob/living/carbon/human/H = user
|
||||
for(var/obj/item/gun/G in get_both_hands(H))
|
||||
if(G == src || G.weapon_weight >= WEAPON_MEDIUM)
|
||||
continue
|
||||
else if(G.can_trigger_gun(user))
|
||||
bonus_spread += 24 * G.weapon_weight
|
||||
loop_counter++
|
||||
spawn(loop_counter)
|
||||
G.process_fire(target,user,1,params, null, bonus_spread)
|
||||
|
||||
process_fire(target,user,1,params, null, bonus_spread)
|
||||
|
||||
/obj/item/gun/proc/can_trigger_gun(mob/living/user)
|
||||
if(!user.can_use_guns(src))
|
||||
@@ -166,17 +174,17 @@
|
||||
obj/item/gun/proc/newshot()
|
||||
return
|
||||
|
||||
/obj/item/gun/proc/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, message = 1, params, zone_override)
|
||||
/obj/item/gun/proc/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, message = 1, params, zone_override, bonus_spread = 0)
|
||||
add_fingerprint(user)
|
||||
|
||||
if(semicd)
|
||||
return
|
||||
|
||||
if(weapon_weight)
|
||||
if(user.get_inactive_hand())
|
||||
recoil = 4 //one-handed kick
|
||||
else
|
||||
recoil = initial(recoil)
|
||||
var/sprd = 0
|
||||
var/randomized_gun_spread = 0
|
||||
if(spread)
|
||||
randomized_gun_spread = rand(0,spread)
|
||||
var/randomized_bonus_spread = rand(0, bonus_spread)
|
||||
|
||||
if(burst_size > 1)
|
||||
firing_burst = 1
|
||||
@@ -187,11 +195,10 @@ obj/item/gun/proc/newshot()
|
||||
if( i>1 && !(src in get_both_hands(user))) //for burst firing
|
||||
break
|
||||
if(chambered)
|
||||
var/sprd = 0
|
||||
if(randomspread)
|
||||
sprd = round((rand() - 0.5) * spread)
|
||||
sprd = round((rand() - 0.5) * (randomized_gun_spread + randomized_bonus_spread))
|
||||
else
|
||||
sprd = round((i / burst_size - 0.5) * spread)
|
||||
sprd = round((i / burst_size - 0.5) * (randomized_gun_spread + randomized_bonus_spread))
|
||||
if(!chambered.fire(target, user, params, ,suppressed, zone_override, sprd))
|
||||
shoot_with_empty_chamber(user)
|
||||
break
|
||||
@@ -209,7 +216,8 @@ obj/item/gun/proc/newshot()
|
||||
firing_burst = 0
|
||||
else
|
||||
if(chambered)
|
||||
if(!chambered.fire(target, user, params, , suppressed, zone_override, spread))
|
||||
sprd = round((pick(1,-1)) * (randomized_gun_spread + randomized_bonus_spread))
|
||||
if(!chambered.fire(target, user, params, , suppressed, zone_override, sprd))
|
||||
shoot_with_empty_chamber(user)
|
||||
return
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user