From 78fa3ce8d05bd33cceb6c464bd257cd32533c1e5 Mon Sep 17 00:00:00 2001 From: Duck- Date: Sun, 31 Aug 2014 23:15:43 -0400 Subject: [PATCH] Snowflake accuracy rework. shotguns accurate up close. rapid accuracy drops after five tiles. sniper rifles accuracybuffed. Added accuracy to modularguns, which are now finished except for sprites. Energy weapons made slightly more accurate than bulletweapons. --- code/modules/projectiles/gun.dm | 4 ++-- code/modules/projectiles/guns/energy/erifles.dm | 5 ++++- code/modules/projectiles/guns/energy/modular.dm | 14 ++++++++------ .../modules/projectiles/guns/projectile/shotgun.dm | 6 ++++++ code/modules/projectiles/projectile.dm | 5 +++-- data/investigate/gravity.html | 4 ++-- 6 files changed, 25 insertions(+), 13 deletions(-) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index ea46b882..44229ddb 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -44,8 +44,8 @@ var/force_unwielded = 0 //Force modification, because striking someone with a rifle held in two hands -hurts- var/force_wielded = 0 - var/accuracy = -30 //goes into projectile.dm to provide individual offsets for each gun. negative to increase base accuracy - var/rangedrop = 5 //how much accuracy the average gun loses for every tile + var/accuracy = 0 //goes into projectile.dm to provide individual offsets for each gun. negative to increase base accuracy + var/rangedrop = 0 //how much accuracy the average gun loses for every tile proc/can_wield() //Override in order to make a weapon two handed, remember to add toggle_wield(mob/user as mob) in the weapon somewhere return 0 //Override /Fire(..) to force the weapon to be two handed diff --git a/code/modules/projectiles/guns/energy/erifles.dm b/code/modules/projectiles/guns/energy/erifles.dm index bf62b849..99d73049 100644 --- a/code/modules/projectiles/guns/energy/erifles.dm +++ b/code/modules/projectiles/guns/energy/erifles.dm @@ -59,7 +59,7 @@ fire_delay_unwielded = 24 //4x difference, let's be an arse about this, and push the issue force_wielded = 10 //10 is amped force, due to better grip force_unwielded = 5 //5 is normal force - + rangedrop = -5 //lasers are more accurate than bullets. fully accurate up to three tiles unaimed. 40% miss at 7 tiles. aimed: 6 tiles accurate, 10% miss at 7 /* /obj/item/weapon/gun/energy/rifle/laser/update_icon() //Currently only here to fuck with the on-mob icons. icon_state = "laser[wielded]" @@ -128,6 +128,9 @@ Commenting out right now, due to a lack of sprites existing. I hate on-mob weapo fire_delay_unwielded = 105 //3x difference, let's be an arse about this, and push the issue var/zoom = 0 + accuracy = -90 + rangedrop = -5 // fully accurate up to first 10 tiles. the last 4 zoomed tiles you are on your + /obj/item/weapon/gun/energy/rifle/sniperrifle/dropped(mob/user) user.client.view = world.view ..() diff --git a/code/modules/projectiles/guns/energy/modular.dm b/code/modules/projectiles/guns/energy/modular.dm index 4912e167..7d06e5ef 100644 --- a/code/modules/projectiles/guns/energy/modular.dm +++ b/code/modules/projectiles/guns/energy/modular.dm @@ -293,18 +293,20 @@ else if(delaymod.rating == 3) fire_delay = 2 - if(!targetmod) // TBD after projectile accuracy. extreme placeholder values. -// miss_modifier = 0 + if(!targetmod) + accuracy = 30 //positive. subtracts to 0 accuracy base, 30 if aimed. fully accurate up to two tiles *if aimed*, -15% per tile after canzoom = 0 else if(targetmod.rating == 1) -// miss_modifier = -30 + accuracy = -30 //standard accuracy. standard gun. canzoom = 0 else if(targetmod.rating == 2) -// miss_modifier = -60 - canzoom = 1 //advanced and up scanning modules let you zoom in. + accuracy = -60 //Fully accurate up to 6 tiles aimed. 15% drop per tile after that for ~-120% accuracy at 14 tiles. If you want to snipe things, get phasic. + canzoom = 1 //advanced and up scanning modules let you zoom in. good luck hitting without phasic though pal. good luck. else if(targetmod.rating == 3) -// miss_modifier = -90 + rangedrop = -5 //Accurate aimed up to 12 tiles. 20% miss at 14. 9 tiles and 50% miss at 14 without aiming. + accuracy = -90 //If you're paying a premium for accuracy, you can have accuracy. canzoom = 1 + if(!powermod) charge_cost = 1.5*charge_cost else if(powermod.rating == 1) diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 5c70c715..4c5fbf0c 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -20,6 +20,9 @@ var/pumped = 0 var/obj/item/ammo_casing/current_shell = null + accuracy = -40 //-60 full accuracy up to 3 tiles unaimed. aimed 5 tiles accurate. 40% misschance at 7. + rangedrop = 5 //loses 20 accuracy per distance tile. unaimed 70% chance to miss at 7 tiles. + icon_action_button = "action_blank" action_button_name = "Wield the shotgun" @@ -91,6 +94,9 @@ origin_tech = "combat=3;materials=1" ammo_type = "/obj/item/ammo_casing/shotgun/beanbag" + accuracy = -40 //-60 full accuracy up to 3 tiles unaimed. aimed 5 tiles accurate. 40% misschance at 7. + rangedrop = 5 //loses 20 accuracy per distance tile. unaimed 70% chance to miss at 7 tiles. + icon_action_button = "action_blank" action_button_name = "Wield the double-barreled shotgun" diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 7aee9719..fbc06c80 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -93,8 +93,9 @@ var/obj/item/weapon/gun/daddy = shot_from //Kinda balanced by fact you need like 2 seconds to aim if (daddy.target && original in daddy.target) //As opposed to no-delay pew pew miss_modifier += -30 - def_zone = get_zone_with_miss_chance(def_zone, M, miss_modifier + 10*distance) // add +daddy.missmod vars to gun and this. snowflake accuracy - + M << "\red [miss_modifier]!" + def_zone = get_zone_with_miss_chance(def_zone, M, miss_modifier + 15*distance + daddy.accuracy + daddy.rangedrop) // add +daddy.missmod vars to gun and this. snowflake accuracy +//moving def_zone to be a child of the daddyblock because i need the daddy if(!def_zone) visible_message("\blue \The [src] misses [M] narrowly!") forcedodge = -1 diff --git a/data/investigate/gravity.html b/data/investigate/gravity.html index 00a9afb7..67ff95de 100644 --- a/data/investigate/gravity.html +++ b/data/investigate/gravity.html @@ -1,2 +1,2 @@ -02:39 [0x200783d] (92,152,1) || the gravitational generator has regained power.
-02:39 [0x200783d] (92,152,1) || the gravitational generator is now charging.
+13:02 [0x20077ee] (92,152,1) || the gravitational generator has regained power.
+13:02 [0x20077ee] (92,152,1) || the gravitational generator is now charging.