Merge pull request #9172 from Frenjo/energy-weapon-rebalance

Weapon Rebalance Part I: Energy Weapons
This commit is contained in:
Atermonera
2023-08-05 11:49:20 -08:00
committed by GitHub
8 changed files with 89 additions and 78 deletions

View File

@@ -6,7 +6,7 @@
icon_state = "laser"
item_state = "laser"
wielded_item_state = "laser-wielded"
fire_delay = 8
fire_delay = 0.8 SECONDS
slot_flags = SLOT_BELT|SLOT_BACK
w_class = ITEMSIZE_LARGE
force = 10
@@ -16,16 +16,16 @@
one_handed_penalty = 30
firemodes = list(
list(mode_name="normal", fire_delay=8, projectile_type=/obj/item/projectile/beam/midlaser, charge_cost = 240),
list(mode_name="suppressive", fire_delay=5, projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 60),
)
list(mode_name = "normal", projectile_type = /obj/item/projectile/beam/midlaser, charge_cost = 240),
list(mode_name = "suppressive", fire_delay = 0.6 SECONDS, projectile_type = /obj/item/projectile/beam/weaklaser, charge_cost = 60),
)
/obj/item/gun/energy/laser/empty
cell_type = null
/obj/item/gun/energy/laser/mounted
self_recharge = 1
use_external_power = 1
self_recharge = TRUE
use_external_power = TRUE
one_handed_penalty = 0 // Not sure if two-handing gets checked for mounted weapons, but better safe than sorry.
/obj/item/gun/energy/laser/mounted/augment
@@ -49,9 +49,9 @@
cell_type = /obj/item/cell/device
firemodes = list(
list(mode_name="normal", projectile_type=/obj/item/projectile/beam/practice, charge_cost = 48),
list(mode_name="suppressive", projectile_type=/obj/item/projectile/beam/practice, charge_cost = 12),
)
list(mode_name = "normal", projectile_type = /obj/item/projectile/beam/practice, charge_cost = 48),
list(mode_name = "suppressive", projectile_type = /obj/item/projectile/beam/practice, charge_cost = 12),
)
//Functionally identical, but slightly higher tech due to rarer.
/obj/item/gun/energy/laser/sleek
@@ -71,7 +71,7 @@
icon_state = "mininglaser"
item_state = "laser"
wielded_item_state = "laser-wielded"
fire_delay = 8
fire_delay = 0.8 SECONDS
slot_flags = SLOT_BELT|SLOT_BACK
w_class = ITEMSIZE_LARGE
force = 15
@@ -81,9 +81,9 @@
one_handed_penalty = 30
firemodes = list(
list(mode_name="mining", fire_delay=8, projectile_type=/obj/item/projectile/beam/mininglaser, charge_cost = 200),
list(mode_name="deter", fire_delay=5, projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 80),
)
list(mode_name = "mining", projectile_type = /obj/item/projectile/beam/mininglaser, charge_cost = 200),
list(mode_name = "deter", fire_delay = 0.6 SECONDS, projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 80),
)
/obj/item/gun/energy/retro
name = "retro laser"
@@ -93,11 +93,11 @@
slot_flags = SLOT_BELT
w_class = ITEMSIZE_NORMAL
projectile_type = /obj/item/projectile/beam
fire_delay = 10 //old technology
fire_delay = 1 SECOND //old technology
/obj/item/gun/energy/retro/mounted
self_recharge = 1
use_external_power = 1
self_recharge = TRUE
use_external_power = TRUE
/obj/item/gun/energy/retro/empty
icon_state = "retro"
@@ -138,7 +138,7 @@
catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_pistol)
icon_state = "alienpistol"
item_state = "alienpistol"
fire_delay = 10 // Handguns should be inferior to two-handed weapons. Even alien ones I suppose.
fire_delay = 1 SECOND // Handguns should be inferior to two-handed weapons. Even alien ones I suppose.
charge_cost = 480 // Five shots.
projectile_type = /obj/item/projectile/beam/cyan
@@ -160,7 +160,7 @@
w_class = ITEMSIZE_NORMAL
projectile_type = /obj/item/projectile/beam
origin_tech = null
fire_delay = 10 //Old pistol
fire_delay = 1 SECOND //Old pistol
charge_cost = 480 //to compensate a bit for self-recharging
cell_type = /obj/item/cell/device/weapon/recharge/captain
battery_lock = 1
@@ -176,22 +176,21 @@
slot_flags = SLOT_BELT|SLOT_BACK
projectile_type = /obj/item/projectile/beam/heavylaser/cannon
battery_lock = 1
fire_delay = 20
fire_delay = 2 SECONDS
w_class = ITEMSIZE_LARGE
one_handed_penalty = 90 // The thing's heavy and huge.
accuracy = 45
charge_cost = 600
recharge_time = 1 SECOND
/obj/item/gun/energy/lasercannon/mounted
name = "mounted laser cannon"
self_recharge = 1
use_external_power = 1
recharge_time = 10
self_recharge = TRUE
use_external_power = TRUE
accuracy = 0 // Mounted cannons are just fine the way they are.
one_handed_penalty = 0 // Not sure if two-handing gets checked for mounted weapons, but better safe than sorry.
projectile_type = /obj/item/projectile/beam/heavylaser
charge_cost = 400
fire_delay = 20
/obj/item/gun/energy/xray
name = "xray laser gun"
@@ -202,6 +201,7 @@
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 3, TECH_MAGNET = 2)
projectile_type = /obj/item/projectile/beam/xray
charge_cost = 200
fire_delay = 0.8 SECONDS
/obj/item/gun/energy/sniperrifle
name = "marksman energy rifle"
@@ -218,11 +218,11 @@
action_button_name = "Use Scope"
battery_lock = 1
charge_cost = 600
fire_delay = 35
fire_delay = 3.5 SECONDS
force = 10
w_class = ITEMSIZE_HUGE // So it can't fit in a backpack.
accuracy = -45 //shooting at the hip
scoped_accuracy = 50
scoped_accuracy = 75
one_handed_penalty = 60 // The weapon itself is heavy, and the long barrel makes it hard to hold steady with just one hand.
/obj/item/gun/energy/sniperrifle/ui_action_click()
@@ -246,7 +246,7 @@
slot_flags = SLOT_BACK
action_button_name = "Aim Down Sights"
charge_cost = 1300
fire_delay = 20
fire_delay = 2 SECONDS
force = 8
w_class = ITEMSIZE_LARGE
accuracy = 10

View File

@@ -4,7 +4,7 @@
description_fluff = "Lawson Arms is Hephaestus Industries main personal-energy-weapon branding, often sold alongside MarsTech projectile weapons to security and law enforcement agencies."
icon_state = "energystun100"
item_state = null //so the human update icon uses the icon_state instead.
fire_delay = 10 // Handguns should be inferior to two-handed weapons.
fire_delay = 1 SECOND // Handguns should be inferior to two-handed weapons.
projectile_type = /obj/item/projectile/beam/stun/med
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
@@ -13,16 +13,16 @@
firemodes = list(
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun/med, modifystate="energystun", charge_cost = 240),
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, modifystate="energykill", charge_cost = 480),
)
)
/obj/item/gun/energy/gun/mounted
name = "mounted energy gun"
self_recharge = 1
use_external_power = 1
self_recharge = TRUE
use_external_power = TRUE
/obj/item/gun/energy/gun/burst
name = "burst laser"
name = "burst energy gun"
desc = "The Lawson Arms FM-2t is a versatile energy based weapon, capable of switching between stun or kill with a three round burst option for both settings."
description_fluff = "Lawson Arms is Hephaestus Industries main personal-energy-weapon branding, often sold alongside MarsTech projectile weapons to security and law enforcement agencies."
icon_state = "riflestun100"
@@ -30,7 +30,7 @@
charge_cost = 100
force = 8
w_class = ITEMSIZE_LARGE //Probably gonna make it a rifle sooner or later
fire_delay = 6
fire_delay = 0.8 SECONDS
projectile_type = /obj/item/projectile/beam/stun/weak
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2, TECH_ILLEGAL = 3)
@@ -40,11 +40,22 @@
// one_handed_penalty = 30
firemodes = list(
list(mode_name="stun", burst=1, projectile_type=/obj/item/projectile/beam/stun/weak, modifystate="riflestun", charge_cost = 100),
list(mode_name="stun burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/item/projectile/beam/stun/weak, modifystate="riflestun"),
list(mode_name="lethal", burst=1, projectile_type=/obj/item/projectile/beam/burstlaser, modifystate="riflekill", charge_cost = 200),
list(mode_name="lethal burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/item/projectile/beam/burstlaser, modifystate="riflekill"),
)
list(mode_name = "stun", burst = 1, projectile_type = /obj/item/projectile/beam/stun/weak,
modifystate = "riflestun"
),
list(mode_name = "stun burst", burst = 3, fire_delay = 1 SECOND, move_delay = 4,
burst_accuracy = list(0,0,0), dispersion = list(0.0, 0.2, 0.5),
projectile_type = /obj/item/projectile/beam/stun/weak, modifystate = "riflestun"
),
list(mode_name = "lethal", burst = 1, projectile_type = /obj/item/projectile/beam/burstlaser,
modifystate = "riflekill", charge_cost = 200
),
list(mode_name = "lethal burst", burst = 3, fire_delay = 1 SECOND, move_delay = 4,
burst_accuracy = list(0,0,0), dispersion = list(0.0, 0.2, 0.5),
projectile_type = /obj/item/projectile/beam/burstlaser, modifystate = "riflekill",
charge_cost = 200
),
)
/obj/item/gun/energy/gun/nuclear
name = "advanced energy gun"
@@ -55,7 +66,7 @@
slot_flags = SLOT_BELT
force = 8 //looks heavier than a pistol
w_class = ITEMSIZE_LARGE //Looks bigger than a pistol, too.
fire_delay = 6 //This one's not a handgun, it should have the same fire delay as everything else
fire_delay = 0.8 SECONDS //This one's not a handgun, it should have the same fire delay as everything else
cell_type = /obj/item/cell/device/weapon/recharge
battery_lock = 1
modifystate = null
@@ -64,9 +75,9 @@
// one_handed_penalty = 15 // It's rather bulky, so holding it in one hand is a little harder than with two, however it's not 'required'.
firemodes = list(
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, modifystate="nucgunstun", charge_cost = 240),
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, modifystate="nucgunkill", charge_cost = 480),
)
list(mode_name = "stun", projectile_type = /obj/item/projectile/beam/stun, modifystate = "nucgunstun", charge_cost = 240),
list(mode_name = "lethal", projectile_type = /obj/item/projectile/beam, modifystate = "nucgunkill", charge_cost = 480),
)
//Functionally a Perun, but flavoured.
/obj/item/gun/energy/gun/compact
@@ -80,9 +91,9 @@
modifystate = "PDWstun"
firemodes = list(
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun/med, modifystate="PDWstun", charge_cost = 240),
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, modifystate="PDWkill", charge_cost = 480),
)
list(mode_name = "stun", projectile_type = /obj/item/projectile/beam/stun/med, modifystate = "PDWstun", charge_cost = 240),
list(mode_name = "lethal", projectile_type = /obj/item/projectile/beam, modifystate = "PDWkill", charge_cost = 480),
)
//What if we went smaller?
/obj/item/gun/energy/gun/pocket
@@ -95,6 +106,6 @@
modifystate = "egunstun"
firemodes = list(
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun/med, modifystate="egunstun", charge_cost = 240),
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, modifystate="egunkill", charge_cost = 480),
)
list(mode_name = "stun", projectile_type = /obj/item/projectile/beam/stun/med, modifystate = "egunstun", charge_cost = 240),
list(mode_name = "lethal", projectile_type = /obj/item/projectile/beam, modifystate = "egunkill", charge_cost = 480),
)

View File

@@ -36,13 +36,13 @@
one_handed_penalty = 0
/obj/item/gun/energy/phasegun/mounted
self_recharge = 1
use_external_power = 1
self_recharge = TRUE
use_external_power = TRUE
one_handed_penalty = 0
/obj/item/gun/energy/phasegun/mounted/cyborg
charge_cost = 400
recharge_time = 7
recharge_time = 0.6 SECONDS
/obj/item/gun/energy/phasegun/pistol
name = "phase pistol"
@@ -57,12 +57,12 @@
/obj/item/gun/energy/phasegun/pistol/mounted
name = "mounted phase pistol"
self_recharge = 1
use_external_power = 1
self_recharge = TRUE
use_external_power = TRUE
/obj/item/gun/energy/phasegun/pistol/mounted/cyborg
charge_cost = 400
recharge_time = 7
recharge_time = 0.6 SECONDS
/obj/item/gun/energy/phasegun/rifle
name = "phase rifle"

View File

@@ -10,6 +10,7 @@
force = 10
slot_flags = SLOT_BACK
projectile_type = /obj/item/projectile/ion
fire_delay = 0.8 SECONDS
/obj/item/gun/energy/ionrifle/emp_act(severity)
..(max(severity, 4)) //so it doesn't EMP itself, I guess
@@ -27,6 +28,7 @@
slot_flags = SLOT_BELT|SLOT_HOLSTER
charge_cost = 480
projectile_type = /obj/item/projectile/ion/pistol
fire_delay = 1 SECOND
/obj/item/gun/energy/decloner
name = "biological demolecularisor"

View File

@@ -6,22 +6,23 @@
item_state = null //so the human update icon uses the icon_state instead.
projectile_type = /obj/item/projectile/beam/stun
charge_cost = 480
fire_delay = 0.8 SECONDS
/obj/item/gun/energy/taser/mounted
name = "mounted taser gun"
self_recharge = 1
use_external_power = 1
self_recharge = TRUE
use_external_power = TRUE
/obj/item/gun/energy/taser/mounted/augment
self_recharge = 1
use_external_power = 0
self_recharge = TRUE
use_external_power = FALSE
use_organic_power = TRUE
canremove = FALSE
/obj/item/gun/energy/taser/mounted/cyborg
name = "taser gun"
charge_cost = 400
recharge_time = 7 //Time it takes for shots to recharge (in ticks)
charge_cost = 480
recharge_time = 0.6 SECONDS
/obj/item/gun/energy/taser/disabler
name = "disabler"
@@ -75,7 +76,7 @@
icon_state = "plasma_stun"
item_state = "plasma_stun"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_POWER = 3)
fire_delay = 20
fire_delay = 2 SECONDS
charge_cost = 600
projectile_type = /obj/item/projectile/energy/plasmastun
@@ -93,6 +94,7 @@
item_state = "stunrevolver"
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
projectile_type = /obj/item/projectile/energy/electrode/strong
fire_delay = 0.8 SECONDS
charge_cost = 300
/obj/item/gun/energy/stunrevolver/vintage
@@ -105,7 +107,6 @@
their own variants of the Stun Revolver."
icon_state = "vinstunrevolver"
item_state = "stunrevolver"
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
/obj/item/gun/energy/stunrevolver/snubnose
name = "snub stun revolver"
@@ -118,4 +119,3 @@
icon_state = "snubstunrevolver"
item_state = "stunrevolver"
w_class = ITEMSIZE_SMALL
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)

View File

@@ -131,8 +131,8 @@
impact_type = /obj/effect/projectile/impact/laser_em
/obj/item/projectile/beam/heavylaser/cannon
damage = 80
armor_penetration = 50
damage = 75
armor_penetration = 40
light_color = "#FF0D00"
hud_state = "laser_overcharge"
@@ -140,8 +140,8 @@
name = "xray beam"
icon_state = "xray"
fire_sound = 'sound/weapons/eluger.ogg'
damage = 25
armor_penetration = 50
damage = 35
armor_penetration = 60
light_color = "#00CC33"
hud_state = "laser_sniper"
@@ -265,8 +265,8 @@
name = "sniper beam"
icon_state = "xray"
fire_sound = 'sound/weapons/gauss_shoot.ogg'
damage = 50
armor_penetration = 10
damage = 45
armor_penetration = 20
light_color = "#00CC33"
hud_state = "laser_sniper"