Fixed two issues with bullet hit chance.

- Bullet hit chance was too low at close distance
- Missing wouldn't actually prevent the damage
This commit is contained in:
cib
2012-12-19 21:44:05 +01:00
parent b0289ce66d
commit 84fe7c01af
2 changed files with 6 additions and 3 deletions

View File

@@ -165,12 +165,13 @@ proc/hasorgans(A)
// Emulates targetting a specific body part, and miss chances
// May return null if missed
// miss_chance_mod may be negative.
/proc/get_zone_with_miss_chance(zone, var/mob/target, var/miss_chance_mod = 0)
zone = check_zone(zone)
// you can only miss if your target is standing and not restrained
if(!target.buckled && !target.lying)
var/miss_chance = 10 + miss_chance_mod
var/miss_chance = max(10 + miss_chance_mod, 0)
switch(zone)
if("head")
miss_chance = 40

View File

@@ -80,11 +80,13 @@
forcedodge = 1
else
var/distance = get_dist(original,loc)
//Lower accurancy/longer range tradeoff.
def_zone = get_zone_with_miss_chance(def_zone, src, 3*distance)
//Lower accurancy/longer range tradeoff. Distance matters a lot here, so at
// close distance, actually RAISE the chance to hit.
def_zone = get_zone_with_miss_chance(def_zone, src, -30 + 8*distance)
if(!def_zone)
visible_message("\The [src] misses [M] narrowly.")
return
if(silenced)
M << "\red You've been shot in the [def_zone] by the [src.name]!"
else