Dual wielding!

This commit is contained in:
Couls
2019-07-18 00:05:35 -04:00
parent f0abbd38d2
commit fae76166c2
11 changed files with 63 additions and 37 deletions

View File

@@ -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