diff --git a/code/game/objects/items/devices/uplink_items.dm b/code/game/objects/items/devices/uplink_items.dm
index 3c4ecc3e19..f9ec0f32dd 100644
--- a/code/game/objects/items/devices/uplink_items.dm
+++ b/code/game/objects/items/devices/uplink_items.dm
@@ -155,6 +155,10 @@ datum/uplink_item/dd_SortValue()
name = "9mm"
path = /obj/item/ammo_magazine/mc9mm
+/datum/uplink_item/item/ammo/c45m
+ name = ".45"
+ path = /obj/item/ammo_magazine/c45m
+
/datum/uplink_item/item/ammo/darts
name = "Darts"
path = /obj/item/ammo_magazine/chemdart
@@ -163,6 +167,14 @@ datum/uplink_item/dd_SortValue()
name = "14.5mm"
path = /obj/item/weapon/storage/box/sniperammo
+/datum/uplink_item/item/ammo/a556
+ name = "5.56mm"
+ path = /obj/item/ammo_magazine/a556
+
+/datum/uplink_item/item/ammo/a556/ap
+ name = "5.56mm AP"
+ path = /obj/item/ammo_magazine/a556/ap
+
/datum/uplink_item/item/ammo/a10mm
name = "10mm"
path = /obj/item/ammo_magazine/a10mm
@@ -171,6 +183,23 @@ datum/uplink_item/dd_SortValue()
name = "7.62mm"
path = /obj/item/ammo_magazine/a762
+/datum/uplink_item/item/ammo/a762/ap
+ name = "7.62mm AP"
+ path = /obj/item/ammo_magazine/a762/ap
+
+/datum/uplink_item/item/ammo/g12
+ name = "12 gauge"
+ path = /obj/item/ammo_magazine/g12
+
+/datum/uplink_item/item/ammo/g12/beanbag
+ name = "12 gauge beanbag"
+ path = /obj/item/ammo_magazine/g12/beanbag
+ item_cost = 1 // Discount due to it being LTL.
+
+/datum/uplink_item/item/ammo/g12/pellet
+ name = "12 gauge pellet"
+ path = /obj/item/ammo_magazine/g12/pellet
+
/***************************************
* Highly Visible and Dangerous Weapons *
***************************************/
@@ -192,10 +221,10 @@ datum/uplink_item/dd_SortValue()
item_cost = 5
path = /obj/item/weapon/gun/energy/crossbow
-/datum/uplink_item/item/visible_weapons/g9mm
- name = "Silenced 9mm"
+/datum/uplink_item/item/visible_weapons/silenced_45
+ name = "Silenced .45"
item_cost = 5
- path = /obj/item/weapon/storage/box/syndie_kit/g9mm
+ path = /obj/item/weapon/gun/projectile/silenced
/datum/uplink_item/item/visible_weapons/riggedlaser
name = "Exosuit Rigged Laser"
@@ -223,6 +252,36 @@ datum/uplink_item/dd_SortValue()
item_cost = 7
path = /obj/item/weapon/gun/projectile/automatic/sts35
+/datum/uplink_item/item/visible_weapons/combatshotgun
+ name = "Combat Shotgun"
+ item_cost = 7
+ path = /obj/item/weapon/gun/projectile/shotgun/pump/combat
+
+/datum/uplink_item/item/visible_weapons/egun
+ name = "Energy Gun"
+ item_cost = 5
+ path = /obj/item/weapon/gun/energy/gun
+
+/datum/uplink_item/item/visible_weapons/lasercannon
+ name = "Laser Cannon"
+ item_cost = 6
+ path = /obj/item/weapon/gun/energy/lasercannon
+
+/datum/uplink_item/item/visible_weapons/lasercarbine
+ name = "Laser Carbine"
+ item_cost = 7
+ path = /obj/item/weapon/gun/energy/laser
+
+/datum/uplink_item/item/visible_weapons/ionrifle
+ name = "Ion Rifle"
+ item_cost = 5
+ path = /obj/item/weapon/gun/energy/ionrifle
+
+/datum/uplink_item/item/visible_weapons/xray
+ name = "Xray Gun"
+ item_cost = 7
+ path = /obj/item/weapon/gun/energy/xray
+
/*************************************
* Stealthy and Inconspicuous Weapons *
*************************************/
diff --git a/code/game/objects/items/devices/uplink_random_lists.dm b/code/game/objects/items/devices/uplink_random_lists.dm
index 4359918cee..70cca95105 100644
--- a/code/game/objects/items/devices/uplink_random_lists.dm
+++ b/code/game/objects/items/devices/uplink_random_lists.dm
@@ -38,7 +38,7 @@ var/datum/uplink_random_selection/default_uplink_selection = new/datum/uplink_ra
/datum/uplink_random_selection/default/New()
..()
- items += new/datum/uplink_random_item(/datum/uplink_item/item/visible_weapons/g9mm)
+ items += new/datum/uplink_random_item(/datum/uplink_item/item/visible_weapons/silenced_45)
items += new/datum/uplink_random_item(/datum/uplink_item/item/ammo/mc9mm)
items += new/datum/uplink_random_item(/datum/uplink_item/item/visible_weapons/revolver)
items += new/datum/uplink_random_item(/datum/uplink_item/item/ammo/a357)
diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm
index fac7b0f9a5..a2b1dd7272 100644
--- a/code/modules/projectiles/ammunition/boxes.dm
+++ b/code/modules/projectiles/ammunition/boxes.dm
@@ -142,6 +142,10 @@
name = "magazine (5.56mm practice)"
ammo_type = /obj/item/ammo_casing/a556p
+/obj/item/ammo_magazine/a556/ap
+ name = "magazine (5.56mm armor-piercing)"
+ ammo_type = /obj/item/ammo_casing/a556/ap
+
/obj/item/ammo_magazine/a50
name = "magazine (.50)"
icon_state = "50ae"
@@ -179,6 +183,10 @@
max_ammo = 50
multiple_sprites = 1
+/obj/item/ammo_magazine/a762/ap
+ name = "magazine box (7.62mm armor-piercing)"
+ ammo_type = /obj/item/ammo_casing/a762/ap
+
/obj/item/ammo_magazine/a762/empty
initial_ammo = 0
@@ -192,6 +200,10 @@
max_ammo = 20
multiple_sprites = 1
+/obj/item/ammo_magazine/c762/ap
+ name = "magazine (7.62mm armor-piercing)"
+ ammo_type = /obj/item/ammo_casing/a762/ap
+
/obj/item/ammo_magazine/caps
name = "speed loader (caps)"
icon_state = "T38"
@@ -201,6 +213,7 @@
matter = list(DEFAULT_WALL_MATERIAL = 600)
max_ammo = 7
multiple_sprites = 1
+
/obj/item/ammo_magazine/g12
name = "magazine (12 gauge)"
icon_state = "g12"
diff --git a/code/modules/projectiles/ammunition/bullets.dm b/code/modules/projectiles/ammunition/bullets.dm
index 52c44af1d1..6050fb2c65 100644
--- a/code/modules/projectiles/ammunition/bullets.dm
+++ b/code/modules/projectiles/ammunition/bullets.dm
@@ -133,6 +133,11 @@
caliber = "a762"
projectile_type = /obj/item/projectile/bullet/rifle/a762
+/obj/item/ammo_casing/a762/ap
+ desc = "A 7.62mm armor-piercing bullet casing."
+ caliber = "a762"
+ projectile_type = /obj/item/projectile/bullet/rifle/a762/ap
+
/obj/item/ammo_casing/a145
name = "shell casing"
desc = "A 14.5mm shell."
@@ -147,6 +152,11 @@
caliber = "a556"
projectile_type = /obj/item/projectile/bullet/rifle/a556
+/obj/item/ammo_casing/a556/ap
+ desc = "A 5.56mm armor-piercing bullet casing."
+ caliber = "a556"
+ projectile_type = /obj/item/projectile/bullet/rifle/a556/ap
+
/obj/item/ammo_casing/a556p
desc = "A 5.56mm practice bullet casing."
caliber = "a556"
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index de6c67446e..ab052834ec 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -66,6 +66,7 @@
var/mode_name = null
var/requires_two_hands
var/wielded_icon = "gun_wielded"
+ var/one_handed_penalty = 0 // Penalty applied if someone fires a two-handed gun with one hand.
var/next_fire_time = 0
@@ -182,8 +183,8 @@
var/held_disp_mod = 0
if(requires_two_hands)
if(user.item_is_in_hands(src) && user.hands_are_full())
- held_acc_mod = -3
- held_disp_mod = 3
+ held_acc_mod = held_acc_mod - one_handed_penalty
+ held_disp_mod = held_disp_mod - round(one_handed_penalty / 2)
//actually attempt to shoot
var/turf/targloc = get_turf(target) //cache this in case target gets deleted during shooting, e.g. if it was a securitron that got destroyed.
@@ -211,6 +212,12 @@
target = targloc
pointblank = 0
+ // We do this down here, so we don't get the message if we fire an empty gun.
+ if(requires_two_hands)
+ if(user.item_is_in_hands(src) && user.hands_are_full())
+ if(one_handed_penalty >= 2)
+ user << "You struggle to keep \the [src] pointed at the correct position with just one hand!"
+
admin_attack_log(usr, attacker_message="Fired [src]", admin_message="fired a gun ([src]) (MODE: [src.mode_name]) [reflex ? "by reflex" : "manually"].")
//update timing
diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm
index 466170e52a..8cd8f72a36 100644
--- a/code/modules/projectiles/guns/energy/laser.dm
+++ b/code/modules/projectiles/guns/energy/laser.dm
@@ -1,6 +1,7 @@
/obj/item/weapon/gun/energy/laser
name = "laser carbine"
- desc = "An Hesphaistos Industries G40E carbine, designed to kill with concentrated energy blasts."
+ desc = "An Hesphaistos Industries G40E carbine, designed to kill with concentrated energy blasts. This varient has the ability to \
+ switch between standard fire and a more efficent but weaker 'suppressive' fire."
icon_state = "laser"
item_state = "laser"
fire_sound = 'sound/weapons/Laser.ogg'
@@ -10,16 +11,29 @@
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
matter = list(DEFAULT_WALL_MATERIAL = 2000)
projectile_type = /obj/item/projectile/beam/midlaser
+// requires_two_hands = 1
+ one_handed_penalty = 2
+
+ firemodes = list(
+ list(mode_name="normal", projectile_type=/obj/item/projectile/beam/midlaser, charge_cost = 200),
+ list(mode_name="suppressive", projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 50),
+ )
/obj/item/weapon/gun/energy/laser/mounted
self_recharge = 1
use_external_power = 1
+ requires_two_hands = 0 // Not sure if two-handing gets checked for mounted weapons, but better safe than sorry.
/obj/item/weapon/gun/energy/laser/practice
name = "practice laser carbine"
desc = "A modified version of the HI G40E, this one fires less concentrated energy bolts designed for target practice."
projectile_type = /obj/item/projectile/beam/practice
+ firemodes = list(
+ list(mode_name="normal", projectile_type=/obj/item/projectile/beam/practice, charge_cost = 200),
+ list(mode_name="suppressive", projectile_type=/obj/item/projectile/beam/practice, charge_cost = 50),
+ )
+
obj/item/weapon/gun/energy/retro
name = "retro laser"
icon_state = "retro"
@@ -47,7 +61,8 @@ obj/item/weapon/gun/energy/retro
/obj/item/weapon/gun/energy/lasercannon
name = "laser cannon"
- desc = "With the laser cannon, the lasing medium is enclosed in a tube lined with uranium-235 and subjected to high neutron flux in a nuclear reactor core. This incredible technology may help YOU achieve high excitation rates with small laser volumes!"
+ desc = "With the laser cannon, the lasing medium is enclosed in a tube lined with uranium-235 and subjected to high neutron \
+ flux in a nuclear reactor core. This incredible technology may help YOU achieve high excitation rates with small laser volumes!"
icon_state = "lasercannon"
item_state = null
fire_sound = 'sound/weapons/lasercannonfire.ogg'
@@ -55,30 +70,36 @@ obj/item/weapon/gun/energy/retro
slot_flags = SLOT_BELT|SLOT_BACK
projectile_type = /obj/item/projectile/beam/heavylaser
charge_cost = 400
- max_shots = 5
+ max_shots = 6
fire_delay = 20
+// requires_two_hands = 1
+ one_handed_penalty = 6 // The thing's heavy and huge.
+ accuracy = 2
/obj/item/weapon/gun/energy/lasercannon/mounted
name = "mounted laser cannon"
self_recharge = 1
use_external_power = 1
recharge_time = 10
+ accuracy = 0 // Mounted cannons are just fine the way they are.
+ requires_two_hands = 0 // Not sure if two-handing gets checked for mounted weapons, but better safe than sorry.
/obj/item/weapon/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, which are able to penetrate matter easier than \
+ standard photonic beams, resulting in an effective 'anti-armor' energy weapon."
icon_state = "xray"
item_state = "xray"
fire_sound = 'sound/weapons/laser3.ogg'
- origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 3, TECH_MAGNET = 2, TECH_ILLEGAL = 2)
+ origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 3, TECH_MAGNET = 2)
projectile_type = /obj/item/projectile/beam/xray
charge_cost = 100
- max_shots = 20
- fire_delay = 1
+ max_shots = 12
/obj/item/weapon/gun/energy/sniperrifle
name = "marksman energy rifle"
- desc = "The HI DMR 9E is an older design of Hesphaistos Industries. A designated marksman rifle capable of shooting powerful ionized beams, this is a weapon to kill from a distance."
+ desc = "The HI DMR 9E is an older design of Hesphaistos Industries. A designated marksman rifle capable of shooting powerful \
+ ionized beams, this is a weapon to kill from a distance."
icon_state = "sniper"
item_state = "laser"
fire_sound = 'sound/weapons/marauder.ogg'
@@ -92,6 +113,8 @@ obj/item/weapon/gun/energy/retro
w_class = 5 // So it can't fit in a backpack.
accuracy = -3 //shooting at the hip
scoped_accuracy = 0
+// requires_two_hands = 1
+ one_handed_penalty = 4 // The weapon itself is heavy, and the long barrel makes it hard to hold steady with just one hand.
/obj/item/weapon/gun/energy/sniperrifle/verb/scope()
set category = "Object"
diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm
index f106877471..5e1612a50b 100644
--- a/code/modules/projectiles/guns/energy/nuclear.dm
+++ b/code/modules/projectiles/guns/energy/nuclear.dm
@@ -5,13 +5,14 @@
item_state = null //so the human update icon uses the icon_state instead.
fire_sound = 'sound/weapons/Taser.ogg'
max_shots = 10
+ fire_delay = 10 // Handguns should be inferior to two-handed weapons.
projectile_type = /obj/item/projectile/beam/stun
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
modifystate = "energystun"
firemodes = list(
- list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, modifystate="energystun", fire_sound='sound/weapons/Taser.ogg'),
+ list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun/weak, modifystate="energystun", fire_sound='sound/weapons/Taser.ogg'),
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, modifystate="energykill", fire_sound='sound/weapons/Laser.ogg'),
)
@@ -33,6 +34,9 @@
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2, TECH_ILLEGAL = 3)
modifystate = "fm-2tstun"
+// requires_two_hands = 1
+ one_handed_penalty = 2
+
firemodes = list(
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun/weak, modifystate="fm-2tstun", fire_sound='sound/weapons/Taser.ogg'),
list(mode_name="stun 3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-1,-1), dispersion=list(0.0, 0.6, 1.0), projectile_type=/obj/item/projectile/beam/stun, modifystate="fm-2tstun", fire_sound='sound/weapons/Taser.ogg'),
@@ -50,6 +54,9 @@
self_recharge = 1
modifystate = null
+// requires_two_hands = 1
+ one_handed_penalty = 1 // 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, fire_sound='sound/weapons/Taser.ogg'),
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, fire_sound='sound/weapons/Laser.ogg'),
diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm
index 72392da29a..156083b94a 100644
--- a/code/modules/projectiles/guns/energy/stun.dm
+++ b/code/modules/projectiles/guns/energy/stun.dm
@@ -1,10 +1,10 @@
/obj/item/weapon/gun/energy/taser
name = "taser gun"
- desc = "The NT Mk30 NL is a small, low capacity gun used for non-lethal takedowns. Produced by NT, it's actually a licensed version of a W-T design."
+ desc = "The NT Mk30 NL is a small gun used for non-lethal takedowns. Produced by NT, it's actually a licensed version of a W-T design."
icon_state = "taser"
item_state = null //so the human update icon uses the icon_state instead.
fire_sound = 'sound/weapons/Taser.ogg'
- max_shots = 5
+ max_shots = 10
projectile_type = /obj/item/projectile/beam/stun
/obj/item/weapon/gun/energy/taser/mounted
@@ -25,7 +25,7 @@
item_state = "stunrevolver"
fire_sound = 'sound/weapons/Gunshot.ogg'
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
- projectile_type = /obj/item/projectile/energy/electrode
+ projectile_type = /obj/item/projectile/energy/electrode/strong
max_shots = 8
diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm
index 53f77feed2..975f48ae7b 100644
--- a/code/modules/projectiles/guns/projectile/automatic.dm
+++ b/code/modules/projectiles/guns/projectile/automatic.dm
@@ -11,6 +11,10 @@
ammo_type = /obj/item/ammo_casing/c9mm
multi_aim = 1
burst_delay = 2
+
+// requires_two_hands = 1
+ one_handed_penalty = 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.0, 0.6, 1.0)),
@@ -44,6 +48,9 @@
auto_eject = 1
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
+// requires_two_hands = 1
+ one_handed_penalty = 2
+
/obj/item/weapon/gun/projectile/automatic/c20r/update_icon()
..()
if(ammo_magazine)
@@ -65,6 +72,8 @@
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/c762
+ one_handed_penalty = 4
+
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=6, burst_accuracy=list(0,-1,-2), dispersion=list(0.0, 0.6, 0.6)),
@@ -115,6 +124,8 @@
auto_eject = 1
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
+ one_handed_penalty = 4
+
burst_delay = 4
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, use_launcher=null, burst_accuracy=null, dispersion=null),
@@ -149,12 +160,13 @@
else
..()
-/obj/item/weapon/gun/projectile/automatic/z8/update_icon()
+/obj/item/weapon/gun/projectile/automatic/z8/update_icon(var/ignore_inhands)
..()
if(ammo_magazine)
icon_state = "carbine-[round(ammo_magazine.stored_ammo.len,2)]"
else
icon_state = "carbine"
+ if(!ignore_inhands) update_held_icon()
return
/obj/item/weapon/gun/projectile/automatic/z8/examine(mob/user)
@@ -181,6 +193,8 @@
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/a762
+ one_handed_penalty = 6
+
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.0, 0.6, 1.0)),
@@ -240,6 +254,8 @@
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/g12
+ one_handed_penalty = 4
+
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0),
list(mode_name="3-round bursts", burst=3, move_delay=6, burst_accuracy = list(0,-1,-1,-2,-2), dispersion = list(0.0, 0.6, 0.6)),
diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm
index a1048ab763..f564b399ad 100644
--- a/code/modules/projectiles/projectile/beams.dm
+++ b/code/modules/projectiles/projectile/beams.dm
@@ -23,6 +23,11 @@
check_armour = "laser"
eyeblur = 2
+/obj/item/projectile/beam/weaklaser
+ name = "weak laser"
+ icon_state = "laser"
+ damage = 15
+
/obj/item/projectile/beam/midlaser
damage = 40
armor_penetration = 10
@@ -37,15 +42,6 @@
tracer_type = /obj/effect/projectile/laser_heavy/tracer
impact_type = /obj/effect/projectile/laser_heavy/impact
-/obj/item/projectile/beam/weaklaser
- name = "weak laser"
- icon_state = "laser"
- damage = 15
-
- muzzle_type = /obj/effect/projectile/laser_heavy/muzzle
- tracer_type = /obj/effect/projectile/laser_heavy/tracer
- impact_type = /obj/effect/projectile/laser_heavy/impact
-
/obj/item/projectile/beam/xray
name = "xray beam"
icon_state = "xray"
@@ -160,11 +156,4 @@
/obj/item/projectile/beam/stun/weak
name = "weak stun beam"
icon_state = "stun"
- nodamage = 1
- taser_effect = 1
agony = 25
- damage_type = HALLOSS
-
- muzzle_type = /obj/effect/projectile/stun/muzzle
- tracer_type = /obj/effect/projectile/stun/tracer
- impact_type = /obj/effect/projectile/stun/impact
diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm
index a78eca0d51..ca2ab63eef 100644
--- a/code/modules/projectiles/projectile/bullets.dm
+++ b/code/modules/projectiles/projectile/bullets.dm
@@ -169,15 +169,23 @@
/* "Rifle" rounds */
/obj/item/projectile/bullet/rifle
- armor_penetration = 20
+ armor_penetration = 15
penetrating = 1
/obj/item/projectile/bullet/rifle/a762
damage = 25
+/obj/item/projectile/bullet/rifle/a762/ap
+ damage = 20
+ armor_penetration = 50 // At 40 or more armor, this will do more damage than standard rounds.
+
/obj/item/projectile/bullet/rifle/a556
damage = 35
+/obj/item/projectile/bullet/rifle/a556/ap
+ damage = 30
+ armor_penetration = 50 // At 30 or more armor, this will do more damage than standard rounds.
+
/obj/item/projectile/bullet/rifle/a145
damage = 80
stun = 3
diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm
index 063acf750b..d56c298b6c 100644
--- a/code/modules/projectiles/projectile/energy.dm
+++ b/code/modules/projectiles/projectile/energy.dm
@@ -28,7 +28,7 @@
//snap pop
playsound(src, 'sound/effects/snap.ogg', 50, 1)
src.visible_message("\The [src] explodes in a bright flash!")
-
+
new /obj/effect/decal/cleanable/ash(src.loc) //always use src.loc so that ash doesn't end up inside windows
new /obj/effect/effect/sparks(T)
new /obj/effect/effect/smoke/illumination(T, brightness=max(flash_range*2, brightness), lifetime=light_duration)
@@ -49,6 +49,9 @@
damage_type = HALLOSS
//Damage will be handled on the MOB side, to prevent window shattering.
+/obj/item/projectile/energy/electrode/strong
+ agony = 55
+
/obj/item/projectile/energy/electrode/stunshot
name = "stunshot"
damage = 5