From e2c81535f061d1c9c57a63476c4e8362cabc7b74 Mon Sep 17 00:00:00 2001 From: AzuleUtama <44248086+AzuleUtama@users.noreply.github.com> Date: Wed, 14 Nov 2018 21:12:52 +0000 Subject: [PATCH] X-ray laser nerf - Falloff and Charge See here for the main reasoning behind the PR - https://nanotrasen.se/forum/topic/14790-wanted-unwanted-features-refactors-bugfixes-thread/ --- code/modules/projectiles/ammunition/energy.dm | 2 +- code/modules/projectiles/guns/energy/laser.dm | 2 +- code/modules/projectiles/projectile.dm | 14 +++++++++++--- code/modules/projectiles/projectile/beams.dm | 1 + code/modules/projectiles/projectile/bullets.dm | 13 ++----------- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/code/modules/projectiles/ammunition/energy.dm b/code/modules/projectiles/ammunition/energy.dm index 322c0931161..10579471b01 100644 --- a/code/modules/projectiles/ammunition/energy.dm +++ b/code/modules/projectiles/ammunition/energy.dm @@ -59,7 +59,7 @@ /obj/item/ammo_casing/energy/xray projectile_type = /obj/item/projectile/beam/xray - e_cost = 50 + e_cost = 100 fire_sound = 'sound/weapons/laser3.ogg' /obj/item/ammo_casing/energy/immolator diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 75da1fdbedd..b2a4c213d94 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -111,7 +111,7 @@ /obj/item/gun/energy/xray name = "xray laser gun" - desc = "A high-power laser gun capable of expelling concentrated xray blasts." + desc = "A high-power laser gun capable of expelling concentrated xray blasts. These blasts will penetrate solid objects, but will decrease in power the longer they have to travel." icon_state = "xray" origin_tech = "combat=6;materials=4;magnets=4;syndicate=1" ammo_type = list(/obj/item/ammo_casing/energy/xray) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 868317177bd..abc5dc3ced7 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -32,6 +32,8 @@ animate_movement = 0 var/damage = 10 + var/tile_dropoff = 0 //how much damage should be decremented as the bullet moves + var/tile_dropoff_s = 0 //same as above but for stamina var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE are the only things that should be in here var/nodamage = FALSE //Determines if the projectile will skip any damage inflictions var/flag = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb //Cael - bio and rad are also valid @@ -60,9 +62,15 @@ return ..() /obj/item/projectile/proc/Range() - range-- - if(range <= 0 && loc) - on_range() + range-- + if(damage > 0) + damage = max(0, damage - tile_dropoff) // decrement projectile damage based on dropoff value for each tile it moves + if(stamina > 0) + stamina = max(0, stamina - tile_dropoff_s) // as above, but with stamina + if(range <= 0 && loc) + on_range() + if(damage == 0 && stamina == 0) + on_range() /obj/item/projectile/proc/on_range() //if we want there to be effects when they reach the end of their range qdel(src) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 3cd4e888b1f..b7854d90e13 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -34,6 +34,7 @@ name = "xray beam" icon_state = "xray" damage = 15 + tile_dropoff = 0.75 irradiate = 30 forcedodge = 1 range = 15 diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index cd73c90d1cf..c4d9fe2c39f 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -69,17 +69,8 @@ /obj/item/projectile/bullet/pellet name = "pellet" damage = 12.5 - var/tile_dropoff = 0.75 - var/tile_dropoff_s = 1.25 - -/obj/item/projectile/bullet/pellet/Range() - ..() - if(damage > 0) - damage -= tile_dropoff - if(stamina > 0) - stamina -= tile_dropoff_s - if(damage < 0 && stamina < 0) - qdel(src) + tile_dropoff = 0.75 + tile_dropoff_s = 1.25 /obj/item/projectile/bullet/pellet/rubber name = "rubber pellet"