Changes the accuracy formula, also changes accuracy to almost all guns across the board (#5434)

Without an in-depth explanation this effectively makes it so that the accuracy stat to a gun DOES matter, and it matters rather substantially.
This commit is contained in:
OneOneThreeEight
2018-11-04 08:44:33 -05:00
committed by Werner
parent 86a9f5cb48
commit 96941d7348
18 changed files with 115 additions and 46 deletions

View File

@@ -5,6 +5,8 @@
item_state = "icelance"
fire_sound = 'sound/weapons/Laser.ogg'
max_shots = 3
accuracy = -1
accuracy_wielded = 2
fire_delay = 10
fire_delay_wielded = 8
origin_tech = list(TECH_COMBAT = 1, TECH_MAGNET = 1)
@@ -46,4 +48,4 @@
item_state = "icelance-wielded"
else
item_state = initial(item_state)
update_held_icon()
update_held_icon()

View File

@@ -5,6 +5,7 @@
item_state = "laser"
fire_sound = 'sound/weapons/Laser.ogg'
slot_flags = SLOT_BELT|SLOT_BACK
accuracy = 1
w_class = 3
force = 10
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
@@ -111,13 +112,13 @@ obj/item/weapon/gun/energy/retro
fire_delay = 45
force = 10
w_class = 4
accuracy = -5 //shooting at the hip
scoped_accuracy = 0
accuracy = -3 //shooting at the hip
scoped_accuracy = 4
can_turret = 1
turret_sprite_set = "sniper"
fire_delay_wielded = 35
accuracy_wielded = -3
accuracy_wielded = 0
//action button for wielding
action_button_name = "Wield rifle"
@@ -147,6 +148,7 @@ obj/item/weapon/gun/energy/retro
fire_sound = 'sound/weapons/Laser.ogg'
slot_flags = SLOT_BELT|SLOT_BACK
w_class = 3
accuracy = 0
force = 10
matter = list(DEFAULT_WALL_MATERIAL = 2000)
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2)

View File

@@ -23,7 +23,7 @@
recoil = 1,
burst = null,
move_delay = null,
accuracy = null,
accuracy = 1,
dispersion = null,
projectile_type = /obj/item/projectile/bullet/pistol,
fire_sound = 'sound/weapons/Gunshot_smg.ogg'
@@ -35,7 +35,7 @@
recoil = 1,
burst = 3,
move_delay = 4,
accuracy = list(0,-1,-1,-2,-2),
accuracy = list(1, 0, 0,-1,-1),
dispersion = list(0, 10, 10),
projectile_type = /obj/item/projectile/bullet/pistol,
fire_sound = 'sound/weapons/Gunshot_smg.ogg'
@@ -47,7 +47,7 @@
recoil = 3,
burst = null,
move_delay = null,
accuracy = null,
accuracy = 0,
dispersion = null,
projectile_type = /obj/item/projectile/bullet/gyro/law,
fire_sound = 'sound/effects/Explosion1.ogg'
@@ -59,7 +59,7 @@
recoil = 0,
burst = null,
move_delay = null,
accuracy = null,
accuracy = 1,
dispersion = null,
projectile_type = /obj/item/projectile/beam/stun,
fire_sound = 'sound/weapons/Taser.ogg'
@@ -71,7 +71,7 @@
recoil = 3,
burst = null,
move_delay = null,
accuracy = null,
accuracy = 1,
dispersion = null,
projectile_type = /obj/item/projectile/bullet/shotgun/incendiary,
fire_sound = 'sound/weapons/Gunshot.ogg'
@@ -83,7 +83,7 @@
recoil = 3,
burst = null,
move_delay = null,
accuracy = null,
accuracy = 1,
dispersion = null,
projectile_type = /obj/item/projectile/bullet/rifle/a556,
fire_sound = 'sound/weapons/Gunshot.ogg'
@@ -95,7 +95,7 @@
recoil = 3,
burst = null,
move_delay = null,
accuracy = null,
accuracy = 0,
dispersion = null,
projectile_type = /obj/item/projectile/bullet/pellet/shotgun,
fire_sound = 'sound/weapons/Gunshot.ogg'

View File

@@ -1,10 +1,5 @@
/*******************PLASMA CUTTER*******************/
/obj/item/weapon/gun/energy/plasmacutter/mounted
name = "mounted plasma cutter"
self_recharge = 1
use_external_power = 1
/obj/item/weapon/gun/energy/plasmacutter
name = "plasma cutter"
desc = "A mining tool capable of expelling concentrated plasma bursts. You could use it to cut limbs off of xenos! Or, you know, mine stuff."
@@ -16,6 +11,7 @@
fire_sound = 'sound/weapons/plasma_cutter.ogg'
slot_flags = SLOT_BELT|SLOT_BACK
w_class = 3
accuracy = 1
force = 15
sharp = 1
edge = 1
@@ -24,6 +20,11 @@
projectile_type = /obj/item/projectile/beam/plasmacutter
max_shots = 15
/obj/item/weapon/gun/energy/plasmacutter/mounted
name = "mounted plasma cutter"
self_recharge = 1
use_external_power = 1
/obj/item/projectile/beam/plasmacutter
name = "plasma arc"
icon_state = "omnilaser"
@@ -48,4 +49,4 @@
else if(prob(88))
M.emitter_blasts_taken += 2
M.emitter_blasts_taken += 1
. = ..()
. = ..()

View File

@@ -5,6 +5,7 @@
item_state = null //so the human update icon uses the icon_state instead.
fire_sound = 'sound/weapons/Taser.ogg'
slot_flags = SLOT_BELT
accuracy = 1
max_shots = 10
can_turret = 1
secondary_projectile_type = /obj/item/projectile/beam

View File

@@ -8,6 +8,7 @@
fire_sound='sound/weapons/Laser.ogg'
projectile_type = /obj/item/projectile/beam
sel_mode = 2
accuracy = 1
max_shots = 10
can_turret = 1
secondary_projectile_type = /obj/item/projectile/beam/pulse

View File

@@ -9,7 +9,7 @@
force = 10
max_shots = 20
fire_delay = 6
accuracy = -2
accuracy = -1
can_turret = 1
secondary_projectile_type = /obj/item/projectile/beam
secondary_fire_sound = 'sound/weapons/Laser.ogg'
@@ -18,7 +18,7 @@
turret_is_lethal = 0
fire_delay_wielded = 1
accuracy_wielded = 0
accuracy_wielded = 2
sel_mode = 1
projectile_type = /obj/item/projectile/beam/stun
@@ -85,6 +85,7 @@
turret_sprite_set = "cannon"
turret_is_lethal = 1
accuracy_wielded = 2
fire_delay_wielded = 20
/obj/item/weapon/gun/energy/rifle/laser/xray
@@ -164,4 +165,4 @@
if(wielded)
toggle_scope(2.0, usr)
else
usr << "<span class='warning'>You can't look through the scope without stabilizing the rifle!</span>"
usr << "<span class='warning'>You can't look through the scope without stabilizing the rifle!</span>"

View File

@@ -6,6 +6,7 @@
fire_sound = 'sound/weapons/Laser.ogg'
origin_tech = list(TECH_COMBAT = 2, TECH_MAGNET = 4)
w_class = 4
accuracy = 1
force = 10
flags = CONDUCT
slot_flags = SLOT_BACK
@@ -281,6 +282,7 @@
fire_sound = 'sound/weapons/Laser.ogg'
slot_flags = SLOT_BACK | SLOT_HOLSTER | SLOT_BELT
w_class = 3
accuracy = 1
force = 10
projectile_type = /obj/item/projectile/energy/blaster
max_shots = 6
@@ -310,6 +312,7 @@
attack_verb = list("sundered", "annihilated", "sliced", "cleaved", "slashed", "pulverized")
slot_flags = SLOT_BACK
w_class = 5
accuracy = 3 // It's a massive beam, okay.
force = 60
projectile_type = /obj/item/projectile/beam/megaglaive
max_shots = 36
@@ -408,6 +411,7 @@
fire_sound = 'sound/magic/lightningbolt.ogg'
slot_flags = SLOT_BACK
w_class = 4
accuracy = 0 // Overwrite just in case.
force = 15
projectile_type = /obj/item/projectile/beam/thermaldrill
max_shots = 90
@@ -519,6 +523,7 @@
projectile_type = /obj/item/projectile/beam/tachyon
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 3, TECH_MAGNET = 2, TECH_ILLEGAL = 2)
max_shots = 10
accuracy = 1
fire_delay = 1
can_turret = 0

View File

@@ -5,6 +5,7 @@
item_state = null //so the human update icon uses the icon_state instead.
fire_sound = 'sound/weapons/Taser.ogg'
max_shots = 5
accuracy = 1 // More of a buff to secborgs and mounted taser users.
projectile_type = /obj/item/projectile/energy/electrode
can_turret = 1
turret_sprite_set = "carbine"

View File

@@ -7,6 +7,7 @@
var/temperature = T20C
var/current_temperature = T20C
charge_cost = 100
accuracy = 1
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 4, TECH_POWER = 3, TECH_MAGNET = 2)
slot_flags = SLOT_BELT|SLOT_BACK

View File

@@ -9,14 +9,15 @@
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2)
slot_flags = SLOT_BELT
ammo_type = /obj/item/ammo_casing/c9mm
accuracy = 1
multi_aim = 1
burst_delay = 2
sel_mode = 1
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-1,-1), dispersion=list(0, 10, 15)),
list(mode_name="short bursts", burst=5, fire_delay=null, move_delay=4, burst_accuracy=list(0,-1,-1,-2,-2), dispersion=list(5, 10, 15, 20))
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=2, burst_accuracy=list(1,0,0), dispersion=list(0, 10, 15)),
list(mode_name="short bursts", burst=5, fire_delay=null, move_delay=3, burst_accuracy=list(1,0,,-1,-1), dispersion=list(5, 10, 15, 20))
)
//Submachine guns and personal defence weapons, go.
@@ -105,17 +106,17 @@
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=10, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-1,-1), dispersion=list(0, 5, 10)),
list(mode_name="short bursts", burst=5, fire_delay=null, move_delay=4, burst_accuracy=list(0,-1,-1,-2,-2), dispersion=list(5, 5, 15))
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=2, burst_accuracy=list(1,0,0), dispersion=list(0, 5, 10)),
list(mode_name="short bursts", burst=5, fire_delay=null, move_delay=3, burst_accuracy=list(1,0,0,-1,-1), dispersion=list(5, 5, 15))
)
//slower to regain aim, more inaccurate if not wielding
fire_delay = 10
accuracy = -2
accuracy = -1
//wielding information
fire_delay_wielded = 6
accuracy_wielded = 0
accuracy_wielded = 2
//action button for wielding
action_button_name = "Wield rifle"
@@ -179,7 +180,7 @@
burst_delay = 4
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=10, move_delay=null, use_launcher=null, burst_accuracy=null, dispersion=null),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=6, use_launcher=null, burst_accuracy=list(0,-1,-1), dispersion=list(0, 7.5)),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=3, use_launcher=null, burst_accuracy=list(2,1,1), dispersion=list(0, 7.5)),
list(mode_name="fire grenades", burst=null, fire_delay=null, move_delay=null, use_launcher=1, burst_accuracy=null, dispersion=null)
)
@@ -249,8 +250,8 @@
magazine_type = /obj/item/ammo_magazine/a762
firemodes = list(
list(mode_name="short bursts", burst=5, move_delay=6, burst_accuracy = list(0,-1,-1,-2,-2), dispersion = list(3, 6, 9)),
list(mode_name="long bursts", burst=8, move_delay=8, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(8))
list(mode_name="short bursts", burst=5, move_delay=4, burst_accuracy = list(1,0,0,-1,-1), dispersion = list(3, 6, 9)),
list(mode_name="long bursts", burst=8, move_delay=5, burst_accuracy = list(1,0,0,-1,-1,-1,-2,-2), dispersion = list(8))
)
var/cover_open = 0
@@ -339,7 +340,7 @@
firemodes = list(
list(mode_name="single coil", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="dual coil", burst=2, move_delay=8, accuracy = list(-2,-3), dispersion = list(20))
list(mode_name="dual coil", burst=2, move_delay=5, accuracy = list(-2,-3), dispersion = list(20))
)
@@ -363,8 +364,8 @@
firemodes = list(
list(mode_name="semiauto", burst=1, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="3-round bursts", burst=3, move_delay=4, burst_accuracy=list(0,-1,-1), dispersion=list(0, 10, 15)),
list(mode_name="short bursts", burst=5, move_delay=4, burst_accuracy=list(0,-1,-1,-2,-2), dispersion=list(5, 10, 15))
list(mode_name="3-round bursts", burst=3, move_delay=2, burst_accuracy=list(2,1,1), dispersion=list(0, 10, 15)),
list(mode_name="short bursts", burst=5, move_delay=3, burst_accuracy=list(2,1,1,0,0), dispersion=list(5, 10, 15))
)
@@ -373,7 +374,7 @@
//wielding information
fire_delay_wielded = 5
accuracy_wielded = 0
accuracy_wielded = 2
scoped_accuracy = 2
action_button_name = "Wield rifle"
@@ -432,7 +433,7 @@
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay= 10, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-1,-1), dispersion=list(0, 10, 15))
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=3, burst_accuracy=list(0,-1,-1), dispersion=list(0, 10, 15))
)
/obj/item/weapon/gun/projectile/automatic/rifle/shotgun/update_icon()

View File

@@ -50,6 +50,7 @@
caliber = "dart"
fire_sound = 'sound/weapons/empty.ogg'
fire_sound_text = "a metallic click"
accuracy = 1
recoil = 0
silenced = 1
load_method = MAGAZINE

View File

@@ -11,7 +11,7 @@
w_class = 4.0
force = 5
recoil = 2
accuracy = -2
accuracy = -1
slot_flags = SLOT_BACK
caliber = "shotgun"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
@@ -141,7 +141,7 @@
desc = "A common sight in an amateur's workshop, a simple yet effective assembly made to chamber and fire .45 Rounds."
max_shells = 7
recoil = 2
accuracy = -2
accuracy = -1
fire_delay = 9
icon = 'icons/obj/improvised.dmi'
icon_state = "ipistol"
@@ -217,7 +217,7 @@
max_shells = 16
caliber = ".45"
sel_mode = 1
accuracy = -5
accuracy = -1
fire_delay = 5
burst = 3
burst_delay = 3

View File

@@ -5,6 +5,7 @@
allowed_magazines = list(/obj/item/ammo_magazine/c45m)
icon_state = "colt"
caliber = ".45"
accuracy = 1
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
fire_sound = 'sound/weapons/Gunshot_light.ogg'
load_method = MAGAZINE
@@ -44,6 +45,7 @@
magazine_type = /obj/item/ammo_magazine/c45m/rubber
allowed_magazines = list(/obj/item/ammo_magazine/c45m)
caliber = ".45"
accuracy = 1
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
fire_sound = 'sound/weapons/gunshot_pistol.ogg'
load_method = MAGAZINE
@@ -79,6 +81,7 @@
desc = "The x9 tactical pistol is a lightweight fast firing handgun. Uses .45 rounds."
icon_state = "x9tactical"
w_class = 3
accuracy = 1
load_method = MAGAZINE
slot_flags = SLOT_BELT|SLOT_HOLSTER
max_shells = 16
@@ -98,6 +101,7 @@
magazine_type = /obj/item/ammo_magazine/mc10mm
allowed_magazines = list(/obj/item/ammo_magazine/mc10mm)
caliber = "10mm"
accuracy = 1
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2)
fire_sound = 'sound/weapons/Gunshot_light.ogg'
load_method = MAGAZINE
@@ -105,7 +109,7 @@
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-1,-1), dispersion=list(0, 10))
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=2, burst_accuracy=list(1,0,0), dispersion=list(0, 10))
)
@@ -121,6 +125,7 @@
desc = "A small, quiet, easily concealable gun. Uses .45 rounds."
icon_state = "silenced_pistol"
w_class = 3
accuracy = 1
caliber = ".45"
silenced = 1
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 8)
@@ -133,6 +138,7 @@
desc = "A robust handgun that uses .50 AE ammo."
icon_state = "deagle"
force = 14.0
accuracy = 1
caliber = ".50"
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/a50
@@ -161,6 +167,7 @@
desc = "A bulky pistol designed to fire self propelled rounds"
icon_state = "gyropistol"
max_shells = 8
accuracy = 1
caliber = "75"
fire_sound = 'sound/effects/Explosion1.ogg'
origin_tech = list(TECH_COMBAT = 3)
@@ -184,6 +191,7 @@
icon_state = "pistol"
item_state = null
w_class = 2
accuracy = 1
caliber = "9mm"
silenced = 0
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 2)
@@ -298,4 +306,4 @@
if(loaded.len)
icon_state = "leyon"
else
icon_state = "leyon-e"
icon_state = "leyon-e"

View File

@@ -3,6 +3,7 @@
desc = "The classic Necropolis Industries .357 revolver, for when you only want to shoot once."
icon_state = "revolver"
item_state = "revolver"
accuracy = 1
caliber = "357"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
handle_casings = CYCLE_CASINGS
@@ -38,6 +39,7 @@
desc = "The Mateba .454 Autorevolver, a very rare weapon typical of special ops teams and mercenary teams. It packs quite the punch."
icon_state = "mateba"
max_shells = 7
accuracy = 2
caliber = "454"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
fire_sound = 'sound/weapons/mateba_fire.ogg'
@@ -48,6 +50,7 @@
desc = "A cheap Martian knock-off of a Smith & Wesson Model 10. Uses .38-Special rounds."
icon_state = "detective"
max_shells = 6
accuracy = 1
caliber = "38"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
fire_sound = 'sound/weapons/gunshot_strong.ogg'
@@ -76,6 +79,7 @@
name = "\improper Deckard .44"
desc = "A custom-built revolver, based off the semi-popular Detective Special model."
max_shells = 6
accuracy = 2
icon_state = "deckard-empty"
caliber = "38"
ammo_type = /obj/item/ammo_casing/c38
@@ -101,6 +105,7 @@
desc = "A small pocket pistol, easily concealed. Uses .357 rounds."
icon_state = "derringer"
item_state = "concealed"
accuracy = -1
w_class = 2
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 3)
handle_casings = CYCLE_CASINGS

View File

@@ -15,7 +15,7 @@
ammo_type = /obj/item/ammo_casing/a145
//+2 accuracy over the LWAP because only one shot
accuracy = -3
scoped_accuracy = 2
scoped_accuracy = 4
var/bolt_open = 0
fire_sound = 'sound/weapons/Gunshot_DMR.ogg'
@@ -118,7 +118,7 @@
max_shells = 4
ammo_type = null
accuracy = -3
scoped_accuracy = 3
scoped_accuracy = 4
bolt_open = 0
muzzle_flash = 1
@@ -155,10 +155,10 @@
magazine_type = /obj/item/ammo_magazine/d762
allowed_magazines = list(/obj/item/ammo_magazine/d762)
accuracy = -4
scoped_accuracy = 2
scoped_accuracy = 3
recoil_wielded = 1
accuracy_wielded = 0
accuracy_wielded = 1
//action button for wielding
action_button_name = "Wield rifle"
@@ -220,7 +220,7 @@
accuracy = -4
scoped_accuracy = 3
recoil_wielded = 2
accuracy_wielded = 0
accuracy_wielded = 1
multi_aim = 0 //Definitely a fuck no. Being able to target one person at this range is plenty.
firemodes = list(
@@ -243,4 +243,4 @@
item_state = "heavysniper-wielded"
else
item_state = "heavysniper"
update_held_icon()
update_held_icon()

View File

@@ -182,7 +182,7 @@
return
//roll to-hit
miss_modifier = max(15*(distance-2) - round(15*accuracy) + miss_modifier, 0)
miss_modifier = max(15*(distance-1) - round(25*accuracy) + miss_modifier, 0)
var/hit_zone = get_zone_with_miss_chance(def_zone, target_mob, miss_modifier, ranged_attack=(distance > 1 || original != target_mob)) //if the projectile hits a target we weren't originally aiming at then retain the chance to miss
var/result = PROJECTILE_FORCE_MISS