Merge pull request #11815 from spasticVerbalizer/shootFooting

Makes clumsy misfires actually target a leg
This commit is contained in:
Remie Richards
2015-09-20 17:24:24 +01:00
4 changed files with 17 additions and 13 deletions
+8 -5
View File
@@ -1,9 +1,9 @@
/obj/item/ammo_casing/proc/fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, params, distro, quiet)
/obj/item/ammo_casing/proc/fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, params, distro, quiet, zone_override = "")
distro += variance
for (var/i = max(1, pellets), i > 0, i--)
var/curloc = user.loc
var/targloc = get_turf(target)
ready_proj(target, user, quiet)
ready_proj(target, user, quiet, zone_override)
if(distro)
targloc = spread(targloc, curloc, distro)
if(!throw_proj(targloc, user, params))
@@ -15,12 +15,15 @@
update_icon()
return 1
/obj/item/ammo_casing/proc/ready_proj(atom/target as mob|obj|turf, mob/living/user, quiet)
/obj/item/ammo_casing/proc/ready_proj(atom/target as mob|obj|turf, mob/living/user, quiet, zone_override = "")
if (!BB)
return
BB.original = target
BB.firer = user
BB.def_zone = user.zone_sel.selecting
if (zone_override)
BB.def_zone = zone_override
else
BB.def_zone = user.zone_sel.selecting
BB.suppressed = quiet
if(reagents && BB.reagents)
@@ -33,7 +36,7 @@
return 0
if(targloc == curloc)
if(BB.original == user) //if we target ourselves we go straight to bullet_act()
user.bullet_act(BB)
user.bullet_act(BB, BB.def_zone)
qdel(BB)
return 1
BB.loc = get_turf(user)
+6 -5
View File
@@ -133,7 +133,8 @@
var/mob/living/M = user
if (M.disabilities & CLUMSY && prob(40))
user << "<span class='userdanger'>You shoot yourself in the foot with \the [src]!</span>"
process_fire(user,user,0,params)
var/shot_leg = pick("l_leg", "r_leg")
process_fire(user,user,0,params, zone_override = shot_leg)
M.drop_item()
return
@@ -177,7 +178,7 @@
return 0
/obj/item/weapon/gun/proc/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, message = 1, params)
/obj/item/weapon/gun/proc/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, message = 1, params, zone_override)
add_fingerprint(user)
if(semicd)
@@ -195,7 +196,7 @@
if( i>1 && !(src in get_both_hands(user))) //for burst firing
break
if(chambered)
if(!chambered.fire(target, user, params, , suppressed))
if(!chambered.fire(target, user, params, , suppressed, zone_override))
shoot_with_empty_chamber(user)
break
else
@@ -211,7 +212,7 @@
sleep(fire_delay)
else
if(chambered)
if(!chambered.fire(target, user, params, , suppressed))
if(!chambered.fire(target, user, params, , suppressed, zone_override))
shoot_with_empty_chamber(user)
return
else
@@ -359,4 +360,4 @@
if(src && input && !M.stat && in_range(M,src) && !M.restrained() && M.canmove)
name = input
M << "You name the gun [input]. Say hello to your new friend."
return
return
+2 -2
View File
@@ -139,7 +139,7 @@
user.visible_message("<span class='suicide'>[user] is putting the barrel of the [src.name] in \his mouth. It looks like \he's trying to commit suicide.</span>")
sleep(25)
if(user.l_hand == src || user.r_hand == src)
process_fire(user, user, 0)
process_fire(user, user, 0, zone_override = "head")
user.visible_message("<span class='suicide'>[user] blows \his brains out with the [src.name]!</span>")
return(BRUTELOSS)
else
@@ -157,4 +157,4 @@
icon_state = "suppressor"
w_class = 2
var/oldsound = null
var/initial_w_class = null
var/initial_w_class = null
@@ -74,7 +74,7 @@
options["The Peacemaker"] = "detective_peacemaker"
options["Cancel"] = null
/obj/item/weapon/gun/projectile/revolver/detective/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, message = 1, params)
/obj/item/weapon/gun/projectile/revolver/detective/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, message = 1, params, zone_override = "")
if(magazine.caliber != initial(magazine.caliber))
if(prob(70 - (magazine.ammo_count() * 10))) //minimum probability of 10, maximum of 60
playsound(user, fire_sound, 50, 1)