diff --git a/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm b/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm
index 4242fcba0327..ff730ff082bd 100644
--- a/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm
+++ b/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm
@@ -1761,9 +1761,9 @@
pixel_y = -5
},
/obj/item/ammo_casing/a4570,
-/obj/item/ammo_box/magazine/aks74u,
-/obj/item/ammo_box/magazine/aks74u,
-/obj/item/ammo_box/magazine/aks74u,
+/obj/item/ammo_box/magazine/skm_545_39,
+/obj/item/ammo_box/magazine/skm_545_39,
+/obj/item/ammo_box/magazine/skm_545_39,
/obj/item/ammo_box/magazine/illestren_a850r,
/obj/item/ammo_box/magazine/illestren_a850r,
/turf/open/floor/plasteel/tech,
@@ -1839,7 +1839,7 @@
/obj/structure/railing/corner{
dir = 8
},
-/mob/living/simple_animal/hostile/frontier/ranged/trooper/ak47/neutured,
+/mob/living/simple_animal/hostile/frontier/ranged/trooper/skm/neutured,
/turf/open/floor/plasteel/stairs{
dir = 1
},
@@ -2281,7 +2281,7 @@
/obj/effect/turf_decal/industrial/outline/yellow,
/obj/effect/decal/cleanable/dirt,
/obj/structure/closet/crate/secure/gear,
-/obj/item/gun/ballistic/automatic/smg/aks74u{
+/obj/item/gun/ballistic/automatic/smg/skm_carbine{
pixel_y = -6
},
/obj/item/gun/ballistic/automatic/zip_pistol,
diff --git a/_maps/RandomRuins/JungleRuins/jungle_medtech_outbreak.dmm b/_maps/RandomRuins/JungleRuins/jungle_medtech_outbreak.dmm
index 720ed17fc830..bdd58e286f25 100644
--- a/_maps/RandomRuins/JungleRuins/jungle_medtech_outbreak.dmm
+++ b/_maps/RandomRuins/JungleRuins/jungle_medtech_outbreak.dmm
@@ -155,7 +155,7 @@
/obj/effect/decal/cleanable/blood/tracks,
/obj/effect/decal/cleanable/blood/splatter,
/obj/effect/decal/cleanable/dirt/dust,
-/obj/item/gun/ballistic/automatic/smg/aks74u,
+/obj/item/gun/ballistic/automatic/smg/skm_carbine,
/obj/item/ammo_casing{
dir = 10;
pixel_x = -7;
@@ -958,7 +958,7 @@
pixel_y = 11
},
/obj/effect/gibspawner/human,
-/obj/item/ammo_box/magazine/aks74u,
+/obj/item/ammo_box/magazine/skm_545_39,
/turf/open/floor/plasteel/tech,
/area/ship/science)
"oJ" = (
diff --git a/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm b/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm
index 379e35a7d2f9..f8b569cebdf4 100644
--- a/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm
+++ b/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm
@@ -995,8 +995,8 @@
/area/overmap_encounter/planetoid/sand/explored)
"KJ" = (
/obj/structure/table,
-/obj/item/gun/ballistic/automatic/smg/aks74u,
-/obj/item/ammo_box/magazine/aks74u,
+/obj/item/gun/ballistic/automatic/smg/skm_carbine,
+/obj/item/ammo_box/magazine/skm_545_39,
/turf/open/floor/concrete,
/area/ruin)
"Ld" = (
diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm
index bd415e97bae8..d4bd622b8f0e 100644
--- a/_maps/map_files/generic/CentCom.dmm
+++ b/_maps/map_files/generic/CentCom.dmm
@@ -2207,9 +2207,6 @@
/obj/structure/table/wood/fancy,
/turf/open/floor/wood,
/area/wizard_station)
-"axw" = (
-/turf/open/floor/engine/cult,
-/area/wizard_station)
"axx" = (
/obj/machinery/vending/snack,
/turf/open/floor/engine/cult,
@@ -12592,10 +12589,10 @@
dir = 8
},
/obj/structure/rack,
-/obj/item/gun/ballistic/automatic/assault/ak47/inteq{
+/obj/item/gun/ballistic/automatic/assault/skm/inteq{
pixel_y = 3
},
-/obj/item/gun/ballistic/automatic/assault/ak47/inteq{
+/obj/item/gun/ballistic/automatic/assault/skm/inteq{
pixel_y = -1;
pixel_x = -5
},
@@ -14665,20 +14662,6 @@
},
/turf/open/floor/plasteel,
/area/centcom/control)
-"sow" = (
-/obj/structure/table/wood,
-/obj/effect/turf_decal/corner/transparent/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/corner/transparent/neutral,
-/obj/effect/turf_decal/corner/transparent/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/corner/transparent/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/centcom/control)
"spy" = (
/obj/effect/turf_decal/corner/opaque/red{
dir = 1
@@ -15212,10 +15195,10 @@
},
/obj/effect/turf_decal/corner/opaque/yellow,
/obj/structure/rack,
-/obj/item/gun/ballistic/automatic/smg/inteq{
+/obj/item/gun/ballistic/automatic/smg/skm_carbine/inteq{
pixel_x = 2
},
-/obj/item/gun/ballistic/automatic/smg/inteq{
+/obj/item/gun/ballistic/automatic/smg/skm_carbine/inteq{
pixel_x = -1;
pixel_y = -6
},
@@ -23555,7 +23538,7 @@ aqZ
aqZ
aqZ
awN
-axw
+aqZ
aqE
aqZ
aqZ
@@ -64657,7 +64640,7 @@ aiH
mpw
rzn
ail
-sow
+gDP
gTh
agb
aqg
diff --git a/_maps/shuttles/independent/independent_halftrack.dmm b/_maps/shuttles/independent/independent_halftrack.dmm
index 46e6989a124f..3b04da3c56dc 100644
--- a/_maps/shuttles/independent/independent_halftrack.dmm
+++ b/_maps/shuttles/independent/independent_halftrack.dmm
@@ -1502,12 +1502,12 @@
/obj/structure/closet/secure_closet/security,
/obj/item/gun/ballistic/automatic/pistol/deagle,
/obj/item/gun/ballistic/automatic/pistol/deagle,
-/obj/item/gun/ballistic/automatic/assault/ak47,
-/obj/item/gun/ballistic/automatic/assault/ak47,
-/obj/item/ammo_box/magazine/ak47,
-/obj/item/ammo_box/magazine/ak47,
-/obj/item/ammo_box/magazine/ak47,
-/obj/item/ammo_box/magazine/ak47,
+/obj/item/gun/ballistic/automatic/assault/skm,
+/obj/item/gun/ballistic/automatic/assault/skm,
+/obj/item/ammo_box/magazine/skm_762_40,
+/obj/item/ammo_box/magazine/skm_762_40,
+/obj/item/ammo_box/magazine/skm_762_40,
+/obj/item/ammo_box/magazine/skm_762_40,
/obj/item/ammo_box/magazine/m50,
/obj/item/ammo_box/magazine/m50,
/obj/item/ammo_box/magazine/m50,
diff --git a/_maps/shuttles/inteq/inteq_colossus.dmm b/_maps/shuttles/inteq/inteq_colossus.dmm
index 9f0c486aad2c..4efdcb0ba74c 100644
--- a/_maps/shuttles/inteq/inteq_colossus.dmm
+++ b/_maps/shuttles/inteq/inteq_colossus.dmm
@@ -718,6 +718,39 @@
},
/turf/open/floor/plasteel/dark,
/area/ship/security)
+"hx" = (
+/obj/item/clothing/glasses/hud/security/sunglasses/inteq,
+/obj/item/clothing/mask/gas/sechailer/inteq,
+/obj/item/clothing/gloves/tackler/combat/insulated,
+/obj/item/clothing/shoes/combat,
+/obj/item/storage/belt/security/webbing/inteq/alt,
+/obj/item/storage/backpack/messenger/inteq,
+/obj/item/clothing/under/syndicate/inteq/skirt,
+/obj/item/clothing/under/syndicate/inteq,
+/obj/structure/closet/secure_closet{
+ anchored = 1;
+ can_be_unanchored = 1;
+ icon_state = "warden";
+ name = "master at arms' locker";
+ req_access_txt = "3"
+ },
+/obj/effect/turf_decal/corner/opaque/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/corner/opaque/yellow,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/clothing/suit/armor/vest/bulletproof,
+/obj/item/megaphone/sec,
+/obj/effect/turf_decal/corner/opaque/brown{
+ dir = 4
+ },
+/obj/item/storage/belt/security/webbing/inteq,
+/obj/item/storage/belt/military/assault,
+/obj/item/reagent_containers/spray/pepper,
+/obj/item/clothing/head/warden/inteq,
+/obj/item/clothing/suit/armor/vest/security/warden/inteq,
+/turf/open/floor/plasteel/dark,
+/area/ship/security)
"hD" = (
/turf/closed/wall/mineral/plastitanium/nodiagonal,
/area/ship/hallway/port)
@@ -810,39 +843,6 @@
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/plating,
/area/ship/maintenance/port)
-"iS" = (
-/obj/item/clothing/glasses/hud/security/sunglasses/inteq,
-/obj/item/clothing/mask/gas/sechailer/inteq,
-/obj/item/clothing/gloves/tackler/combat/insulated,
-/obj/item/clothing/shoes/combat,
-/obj/item/storage/belt/security/webbing/inteq/alt,
-/obj/item/storage/backpack/messenger/inteq,
-/obj/item/clothing/under/syndicate/inteq/skirt,
-/obj/item/clothing/under/syndicate/inteq,
-/obj/structure/closet/secure_closet{
- anchored = 1;
- can_be_unanchored = 1;
- icon_state = "warden";
- name = "master at arms' locker";
- req_access_txt = "3"
- },
-/obj/effect/turf_decal/corner/opaque/brown{
- dir = 8
- },
-/obj/effect/turf_decal/corner/opaque/yellow,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/clothing/suit/armor/vest/bulletproof,
-/obj/item/megaphone/sec,
-/obj/effect/turf_decal/corner/opaque/brown{
- dir = 4
- },
-/obj/item/storage/belt/security/webbing/inteq,
-/obj/item/storage/belt/military/assault,
-/obj/item/reagent_containers/spray/pepper,
-/obj/item/clothing/head/warden/inteq,
-/obj/item/clothing/suit/armor/vest/security/warden/inteq,
-/turf/open/floor/plasteel/dark,
-/area/ship/security)
"iT" = (
/obj/machinery/vending/snack/random,
/obj/effect/turf_decal/trimline/opaque/yellow/line,
@@ -1440,27 +1440,7 @@
/obj/item/radio/intercom/directional/west,
/turf/open/floor/plating,
/area/ship/engineering)
-"qR" = (
-/obj/effect/turf_decal/industrial/traffic{
- dir = 4
- },
-/obj/machinery/navbeacon/wayfinding{
- codes_txt = "patrol;next_patrol=office";
- location = "port"
- },
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/turf/open/floor/plasteel/patterned,
-/area/ship/cargo)
-"qS" = (
-/obj/structure/dresser,
-/obj/machinery/power/apc/auto_name/directional/west,
-/obj/structure/cable,
-/obj/machinery/airalarm/directional/south,
-/turf/open/floor/plasteel/grimy,
-/area/ship/crew)
-"qX" = (
+"qQ" = (
/obj/structure/rack,
/obj/effect/turf_decal/siding/thinplating/dark{
dir = 10;
@@ -1477,12 +1457,32 @@
pixel_x = 5;
pixel_y = 5
},
-/obj/item/gun/ballistic/automatic/smg/inteq{
+/obj/item/gun/ballistic/automatic/smg/skm_carbine/inteq{
pixel_y = -2
},
/obj/machinery/airalarm/directional/west,
/turf/open/floor/plasteel/tech/grid,
/area/ship/security/armory)
+"qR" = (
+/obj/effect/turf_decal/industrial/traffic{
+ dir = 4
+ },
+/obj/machinery/navbeacon/wayfinding{
+ codes_txt = "patrol;next_patrol=office";
+ location = "port"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/patterned,
+/area/ship/cargo)
+"qS" = (
+/obj/structure/dresser,
+/obj/machinery/power/apc/auto_name/directional/west,
+/obj/structure/cable,
+/obj/machinery/airalarm/directional/south,
+/turf/open/floor/plasteel/grimy,
+/area/ship/crew)
"rb" = (
/obj/machinery/power/shieldwallgen/atmos{
anchored = 1;
@@ -5082,7 +5082,7 @@ Kv
EI
Dq
MQ
-qX
+qQ
PV
"}
(23,1,1) = {"
@@ -5170,7 +5170,7 @@ eM
pd
gX
WC
-iS
+hx
XA
"}
(27,1,1) = {"
diff --git a/_maps/shuttles/inteq/inteq_hound.dmm b/_maps/shuttles/inteq/inteq_hound.dmm
index 2fc73b689d88..fc586a5aa7b3 100644
--- a/_maps/shuttles/inteq/inteq_hound.dmm
+++ b/_maps/shuttles/inteq/inteq_hound.dmm
@@ -580,13 +580,13 @@
/obj/item/gun/ballistic/automatic/pistol/commander/inteq{
pixel_y = -5
},
-/obj/item/ammo_box/magazine/ak47{
+/obj/item/ammo_box/magazine/skm_762_40{
pixel_x = -7
},
-/obj/item/ammo_box/magazine/ak47{
+/obj/item/ammo_box/magazine/skm_762_40{
pixel_x = 7
},
-/obj/item/gun/ballistic/automatic/assault/ak47/inteq{
+/obj/item/gun/ballistic/automatic/assault/skm/inteq{
pixel_x = -5
},
/obj/structure/closet/secure_closet/wall{
@@ -2384,7 +2384,7 @@
pixel_x = -11;
pixel_y = 5
},
-/obj/item/storage/toolbox/ammo/a762_39{
+/obj/item/ammo_box/a762_40/inteq{
pixel_x = 5;
pixel_y = 12
},
diff --git a/_maps/shuttles/subshuttles/frontiersmen_gut.dmm b/_maps/shuttles/subshuttles/frontiersmen_gut.dmm
index 3b05c2224080..6044e1011891 100644
--- a/_maps/shuttles/subshuttles/frontiersmen_gut.dmm
+++ b/_maps/shuttles/subshuttles/frontiersmen_gut.dmm
@@ -203,7 +203,7 @@
/obj/effect/turf_decal/industrial/outline/yellow,
/obj/effect/decal/cleanable/dirt,
/obj/structure/closet/crate/secure/gear,
-/obj/item/gun/ballistic/automatic/smg/aks74u{
+/obj/item/gun/ballistic/automatic/smg/skm_carbine{
pixel_y = -6
},
/obj/item/gun/ballistic/automatic/zip_pistol,
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index 4cf963958022..10d3531b68d3 100644
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -933,10 +933,10 @@
item_state = "inteq_webbing"
supports_variations = VOX_VARIATION
-/obj/item/storage/belt/security/webbing/inteq/ak47/PopulateContents()
+/obj/item/storage/belt/security/webbing/inteq/skm/PopulateContents()
. = ..()
- for(var/i in 1 to 7)
- new /obj/item/ammo_box/magazine/ak47(src)
+ for(var/i in 1 to 4)
+ new /obj/item/ammo_box/magazine/skm_762_40(src)
/obj/item/storage/belt/security/webbing/inteq/alt
name = "inteq drop pouch harness"
diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm
index 312ce3e14d0f..c194ea84daea 100644
--- a/code/game/objects/items/storage/toolbox.dm
+++ b/code/game/objects/items/storage/toolbox.dm
@@ -241,11 +241,11 @@
for(var/i in 1 to 7)
new /obj/item/ammo_box/magazine/illestren_a850r(src)
-/obj/item/storage/toolbox/ammo/a762_39/PopulateContents()
- name = "ammo can (7.62x39mm)"
+/obj/item/storage/toolbox/ammo/a762_40/PopulateContents()
+ name = "ammo can (7.62x40mm CLIP)"
icon_state = "ammobox_762"
for (var/i in 1 to 4)
- new /obj/item/ammo_box/a762_39(src)
+ new /obj/item/ammo_box/a762_40(src)
/obj/item/storage/toolbox/ammo/a308/PopulateContents()
name = "ammo can (.308)"
diff --git a/code/modules/cargo/packs/ammo.dm b/code/modules/cargo/packs/ammo.dm
index 79b3bb780f25..ce69eb3d4b0d 100644
--- a/code/modules/cargo/packs/ammo.dm
+++ b/code/modules/cargo/packs/ammo.dm
@@ -171,11 +171,11 @@
/obj/item/ammo_box/magazine/ebr)
cost = 2000
-/datum/supply_pack/ammo/ak47_ammo
- name = "SVG 7.62x39mm FMJ Magazine Crate"
- desc = "Contains two 7.62x39mm FMJ magazines for the SVG rifle, each containing twenty rounds."
- contains = list(/obj/item/ammo_box/magazine/ak47,
- /obj/item/ammo_box/magazine/ak47)
+/datum/supply_pack/ammo/skm_ammo
+ name = "SKM 7.62x40mm CLIP Magazine Crate"
+ desc = "Contains two 7.62x40mm magazines for the SKM rifles, each containing twenty rounds."
+ contains = list(/obj/item/ammo_box/magazine/skm_762_40,
+ /obj/item/ammo_box/magazine/skm_762_40)
cost = 2000
/datum/supply_pack/ammo/p16_ammo
@@ -185,9 +185,9 @@
/obj/item/ammo_box/magazine/p16)
cost = 2000
-/datum/supply_pack/ammo/a762_ammo
- name = "8x50mmR Stripper Clip Crate"
- desc = "Contains four 8x50mmR stripper clips for rifles like the illestren rifle, each containing five rounds."
+/datum/supply_pack/ammo/a850r_ammo
+ name = "8x50mmR En Bloc Clip Crate"
+ desc = "Contains four 8x50mmR en bloc clips for rifles like the illestren rifle, each containing five rounds."
contains = list(/obj/item/ammo_box/magazine/illestren_a850r,
/obj/item/ammo_box/magazine/illestren_a850r,
/obj/item/ammo_box/magazine/illestren_a850r,
@@ -195,9 +195,9 @@
cost = 1000
/datum/supply_pack/ammo/a762_ammo_box
- name = "7.62x39mm Ammo Box Crate"
- desc = "Contains a sixty-round 7.62x39mm box for rifles like the SVG-67."
- contains = list(/obj/item/ammo_box/a762_39)
+ name = "7.62x40mm CLIP Ammo Box Crate"
+ desc = "Contains a eighty-round 7.62x40mm CLIP box for the SKM rifles."
+ contains = list(/obj/item/ammo_box/a762_40)
cost = 500
/datum/supply_pack/ammo/c556mmHITP_ammo_box
diff --git a/code/modules/cargo/packs/gun.dm b/code/modules/cargo/packs/gun.dm
index 485dde2401fa..c75e16b348cc 100644
--- a/code/modules/cargo/packs/gun.dm
+++ b/code/modules/cargo/packs/gun.dm
@@ -156,12 +156,12 @@
/obj/item/gun/ballistic/automatic/assault/p16)
crate_name = "auto rifle crate"
-/datum/supply_pack/gun/ak
- name = "SVG-67 Rifle Crate"
- desc = "Contains two high-powered, automatic rifles chambered in 7.62x39mm."
+/datum/supply_pack/gun/skm
+ name = "SKM-24 Rifle Crate"
+ desc = "Contains two high-powered, automatic rifles chambered in 7.62x40mm CLIP."
cost = 6000
- contains = list(/obj/item/gun/ballistic/automatic/assault/ak47,
- /obj/item/gun/ballistic/automatic/assault/ak47)
+ contains = list(/obj/item/gun/ballistic/automatic/assault/skm,
+ /obj/item/gun/ballistic/automatic/assault/skm)
crate_name = "auto rifle crate"
/*
diff --git a/code/modules/clothing/outfits/ert/frontiersmen_ert.dm b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm
index 431170b5f3dc..2fa4316b6448 100644
--- a/code/modules/clothing/outfits/ert/frontiersmen_ert.dm
+++ b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm
@@ -83,7 +83,7 @@
if(prob(10))
belt = /obj/item/storage/belt/grenade/full
if("Ammo Carrier")
- backpack_contents += list(/obj/item/ammo_box/a762_39 = 1)
+ backpack_contents += list(/obj/item/ammo_box/a762_40 = 1)
var/weapon = pick(list("Bolt-Action", "Pistol", "Melee"))
switch(weapon)
diff --git a/code/modules/clothing/outfits/ert/inteq_ert.dm b/code/modules/clothing/outfits/ert/inteq_ert.dm
index 5a39d3ea3da4..c5ef123a21cf 100644
--- a/code/modules/clothing/outfits/ert/inteq_ert.dm
+++ b/code/modules/clothing/outfits/ert/inteq_ert.dm
@@ -7,11 +7,11 @@
glasses = /obj/item/clothing/glasses/hud/security/sunglasses/inteq
uniform = /obj/item/clothing/under/syndicate/inteq
suit = /obj/item/clothing/suit/space/hardsuit/syndi/inteq
- suit_store = /obj/item/gun/ballistic/automatic/assault/ak47/inteq
+ suit_store = /obj/item/gun/ballistic/automatic/assault/skm/inteq
gloves = /obj/item/clothing/gloves/combat
ears = /obj/item/radio/headset/inteq/alt
id = /obj/item/card/id
- belt = /obj/item/storage/belt/security/webbing/inteq/ak47
+ belt = /obj/item/storage/belt/security/webbing/inteq/skm
back = /obj/item/storage/backpack/fireproof
l_pocket = /obj/item/kitchen/knife/combat
diff --git a/code/modules/mob/living/simple_animal/hostile/frontiersman.dm b/code/modules/mob/living/simple_animal/hostile/frontiersman.dm
index 3d33bae0aca1..213cd8c2b822 100644
--- a/code/modules/mob/living/simple_animal/hostile/frontiersman.dm
+++ b/code/modules/mob/living/simple_animal/hostile/frontiersman.dm
@@ -68,17 +68,17 @@
/mob/living/simple_animal/hostile/frontier/ranged/trooper/neutered
loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper)
-/mob/living/simple_animal/hostile/frontier/ranged/trooper/ak47
+/mob/living/simple_animal/hostile/frontier/ranged/trooper/skm
icon_state = "frontiersmanrangedak47"
icon_living = "frontiersmanrangedak47"
- projectilesound = 'sound/weapons/gun/rifle/ak47.ogg'
+ projectilesound = 'sound/weapons/gun/rifle/skm.ogg'
rapid = 4
rapid_fire_delay = 3
- casingtype = /obj/item/ammo_casing/a762_39
+ casingtype = /obj/item/ammo_casing/a762_40
loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper,
- /obj/item/gun/ballistic/automatic/assault/ak47)
+ /obj/item/gun/ballistic/automatic/assault/skm)
-/mob/living/simple_animal/hostile/frontier/ranged/trooper/ak47/neutured
+/mob/living/simple_animal/hostile/frontier/ranged/trooper/skm/neutured
loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper)
/mob/living/simple_animal/hostile/frontier/ranged/trooper/rifle
diff --git a/code/modules/mob/living/simple_animal/hostile/survivors.dm b/code/modules/mob/living/simple_animal/hostile/survivors.dm
index a1b52f981cec..bc7573552bc5 100644
--- a/code/modules/mob/living/simple_animal/hostile/survivors.dm
+++ b/code/modules/mob/living/simple_animal/hostile/survivors.dm
@@ -282,7 +282,7 @@
if(survivor_type == "gunslinger")
if(prob(50))
- l_pocket = /obj/item/ammo_box/magazine/aks74u
+ l_pocket = /obj/item/ammo_box/magazine/skm_545_39
r_pocket = /obj/item/tank/internals/emergency_oxygen/engi
else
@@ -330,7 +330,7 @@
suit_store = null
if(survivor_type == "gunslinger")
if(prob(20))
- new /obj/item/gun/ballistic/automatic/smg/aks74u(loc)
+ new /obj/item/gun/ballistic/automatic/smg/skm_carbine(loc)
else
visible_message("The gunslinger's weapon shatters as they impact the ground!")
suit_store = null
diff --git a/code/modules/projectiles/ammunition/ballistic/rifle.dm b/code/modules/projectiles/ammunition/ballistic/rifle.dm
index a615fc97d2fa..685458406584 100644
--- a/code/modules/projectiles/ammunition/ballistic/rifle.dm
+++ b/code/modules/projectiles/ammunition/ballistic/rifle.dm
@@ -34,7 +34,7 @@
caliber = "5.56x45mm"
projectile_type = /obj/projectile/bullet/a556_45
-// 5.45x39mm (AKS-74U)
+// 5.45x39mm (SKM-24v)
/obj/item/ammo_casing/a545_39
name = "5.45x39mm bullet casing"
@@ -42,7 +42,6 @@
icon_state = "rifle-brass"
caliber = "5.45x39mm"
randomspread = TRUE
- variance = 2
projectile_type = /obj/projectile/bullet/a545_39
/obj/item/ammo_casing/a545_39/recycled
@@ -50,18 +49,16 @@
desc = "A recycled 5.45x39mm bullet casing."
bullet_skin = "surplus"
caliber = "5.45x39mm"
- variance = 3.5
projectile_type = /obj/projectile/bullet/a545_39
-// 7.62x39mm (SVG-67 & SkM-24)
+// 7.62x40mm CLIP (SKM Rifles)
-/obj/item/ammo_casing/a762_39
- name = "7.62x39mm bullet casing"
- desc = "A 7.62x39mm bullet casing."
+/obj/item/ammo_casing/a762_40
+ name = "7.62x40mm CLIP bullet casing"
+ desc = "A 7.62x40mm CLIP bullet casing."
icon_state = "rifle-brass"
- caliber = "7.62x39mm"
- variance = 2
- projectile_type = /obj/projectile/bullet/a762_39
+ caliber = "7.62x40mm"
+ projectile_type = /obj/projectile/bullet/a762_40
// .300 Blackout (Polymer Survivor Rifle)
diff --git a/code/modules/projectiles/ammunition/ballistic/smg.dm b/code/modules/projectiles/ammunition/ballistic/smg.dm
index 37218201902e..d947736d5f25 100644
--- a/code/modules/projectiles/ammunition/ballistic/smg.dm
+++ b/code/modules/projectiles/ammunition/ballistic/smg.dm
@@ -1,4 +1,4 @@
-// 4.6x30mm (WT-550 Automatic Rifle & NT-SVG)
+// 4.6x30mm (WT-550 Automatic Rifle & SKM-24v)
/obj/item/ammo_casing/c46x30mm
name = "4.6x30mm bullet casing"
diff --git a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm
index ab8e65c069bf..a1bfd5e38fec 100644
--- a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm
+++ b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm
@@ -40,7 +40,7 @@
name = "ammo holder (.45-70 hollow point)"
desc = "A 6-round ammo holder for .45-70 revolvers. These hollow point rounds do legendary damage against soft targets, but are nearly ineffective against armored ones."
icon_state = "4570-hp"
- ammo_type = /obj/item/ammo_casing/a357/hp
+ ammo_type = /obj/item/ammo_casing/a4570/hp
/obj/item/ammo_box/a4570/explosive
name = "ammo holder (.45-70 explosive)"
@@ -336,11 +336,15 @@
multiple_sprites = AMMO_BOX_PER_BULLET
w_class = WEIGHT_CLASS_NORMAL
-/obj/item/ammo_box/a762_39
- name = "ammo box (7.62x39mm)"
- icon_state = "a762_39box"
- ammo_type = /obj/item/ammo_casing/a762_39
- max_ammo = 60
+/obj/item/ammo_box/a762_40
+ name = "ammo box (7.62x40mm CLIP)"
+ icon_state = "a762_40box_big"
+ ammo_type = /obj/item/ammo_casing/a762_40
+ max_ammo = 120
+ w_class = WEIGHT_CLASS_NORMAL
+
+/obj/item/ammo_box/a762_40/inteq
+ icon_state = "a762_40box_big_inteq"
/obj/item/ammo_box/a308
name = "ammo box (.308)"
diff --git a/code/modules/projectiles/boxes_magazines/external/rifle.dm b/code/modules/projectiles/boxes_magazines/external/rifle.dm
index 980272313c1a..60712700c314 100644
--- a/code/modules/projectiles/boxes_magazines/external/rifle.dm
+++ b/code/modules/projectiles/boxes_magazines/external/rifle.dm
@@ -34,41 +34,46 @@
. = ..()
icon_state = "[base_icon_state]-[round(ammo_count(),5)]"
-/obj/item/ammo_box/magazine/aks74u
- name = "assault rifle magazine (5.45x39mm)"
- desc = "A slightly-curved, 30-round magazine for the AKS-74U. These rounds do moderate damage with good armor penetration."
- icon_state = "ak47_mag"
- ammo_type = /obj/item/ammo_casing/a545_39
- caliber = "5.45x39mm"
- max_ammo = 30
-
-/obj/item/ammo_box/magazine/aks74u/update_icon_state()
- . = ..()
- icon_state = "ak47_mag-[!!ammo_count()]"
-
-/obj/item/ammo_box/magazine/aknt
+/obj/item/ammo_box/magazine/skm_545_39
name = "subcaliber assault rifle magazine (4.6x30mm)"
- desc = "A cheap, 30-round polymer magazine for the NT-SVG. These rounds do okay damage with average performance against armor."
- icon_state = "ak47_mag"
+ desc = "A slightly-curved, 30-round magazine for the SKM-24v. These rounds do okay damage with average performance against armor"
ammo_type = /obj/item/ammo_casing/c46x30mm
caliber = "4.6x30mm"
max_ammo = 30
+ base_icon_state = "skm_mag"
+ icon_state = "skm_mag"
-/obj/item/ammo_box/magazine/aknt/update_icon_state()
+/obj/item/ammo_box/magazine/skm_545_39/update_icon_state()
. = ..()
- icon_state = "ak47_mag-[!!ammo_count()]"
-
-/obj/item/ammo_box/magazine/ak47
- name = "assault rifle magazine (7.62x39mm)"
- desc = "A sharply-curved, 20-round magazine for 7.62x39mm assault rifles. These rounds do good damage with good armor penetration."
- icon_state = "ak47_mag"
- ammo_type = /obj/item/ammo_casing/a762_39
- caliber = "7.62x39mm"
+ icon_state = "[base_icon_state]-[!!ammo_count()]"
+
+/obj/item/ammo_box/magazine/skm_762_40
+ name = "assault rifle magazine (7.62x40mm CLIP)"
+ desc = "A slightly curved, 20-round magazine for the 7.62x40mm CLIP variants of the SKM assault rifle family. These rounds do good damage with good armor penetration."
+ base_icon_state = "skm_mag"
+ icon_state = "skm_mag"
+ ammo_type = /obj/item/ammo_casing/a762_40
+ caliber = "7.62x40mm"
max_ammo = 20
-/obj/item/ammo_box/magazine/ak47/update_icon_state()
+/obj/item/ammo_box/magazine/skm_762_40/update_icon_state()
. = ..()
- icon_state = "ak47_mag-[!!ammo_count()]"
+ icon_state = "[base_icon_state]-[!!ammo_count()]"
+
+/obj/item/ammo_box/magazine/skm_762_40/extended
+ name = "extended assault rifle magazine (7.62x40mm CLIP)"
+ desc = "A very curved, 40-round magazine for the 7.62x40mm CLIP variants of the SKM assault rifle family. These rounds do good damage with good armor penetration."
+ base_icon_state = "skm_extended_mag"
+ icon_state = "skm_extended_mag"
+ max_ammo = 40
+
+/obj/item/ammo_box/magazine/skm_762_40/drum
+ name = "assault rifle drum (7.62x40mm CLIP)"
+ desc = "A 75-round drum for the 7.62x40mm CLIP variants of the SKM assault rifle family. These rounds do good damage with good armor penetration."
+ base_icon_state = "skm_drum"
+ icon_state = "skm_drum"
+ max_ammo = 75
+ w_class = WEIGHT_CLASS_NORMAL
/obj/item/ammo_box/magazine/ebr
name = "battle rifle magazine (.308)"
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index b64e76d1f075..f6470af9a846 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -16,7 +16,7 @@
#define MANUFACTURER_MINUTEMAN "the Lanchester City Firearms Plant logo"
#define MANUFACTURER_DONKCO "the Donk! Co. logo"
#define MANUFACTURER_PGF "the Etherbor Industries emblem"
-
+#define MANUFACTURER_IMPORT "Lanchester Import Co."
/obj/item/gun
name = "gun"
desc = "It's a gun. It's pretty terrible, though."
@@ -450,15 +450,17 @@
to_chat(user, "[src] is lethally chambered! You don't want to risk harming anyone...")
return
sprd = round((rand() - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * (randomized_gun_spread + randomized_bonus_spread))
+ sprd = calculate_spread(user, sprd)
+
before_firing(target,user)
if(!chambered.fire_casing(target, user, params, , suppressed, zone_override, sprd, src))
shoot_with_empty_chamber(user)
return
else
if(get_dist(user, target) <= 1) //Making sure whether the target is in vicinity for the pointblank shot
- shoot_live_shot(user, 1, target, message)
+ shoot_live_shot(user, TRUE, target, message)
else
- shoot_live_shot(user, 0, target, message)
+ shoot_live_shot(user, FALSE, target, message)
else
shoot_with_empty_chamber(user)
return
@@ -781,8 +783,16 @@
/obj/item/gun/proc/before_firing(atom/target,mob/user)
return
+// We do it like this in case theres some specific gun behavior for adjusting recoil, like bipods or folded stocks
+/obj/item/gun/proc/calculate_recoil(mob/user, recoil_bonus = 0)
+ return recoil_bonus
+
+// We do it like this in case theres some specific gun behavior for adjusting spread, like bipods or folded stocks
+/obj/item/gun/proc/calculate_spread(mob/user, bonus_spread)
+ return bonus_spread
+
/obj/item/gun/proc/simulate_recoil(mob/living/user, recoil_bonus = 0, firing_angle)
- var/total_recoil = recoil_bonus
+ var/total_recoil = calculate_recoil(user, recoil_bonus)
var/actual_angle = firing_angle + rand(-recoil_deviation, recoil_deviation) + 180
if(actual_angle > 360)
diff --git a/code/modules/projectiles/guns/ballistic/assault.dm b/code/modules/projectiles/guns/ballistic/assault.dm
index 576a914cce01..565a0e20a0cd 100644
--- a/code/modules/projectiles/guns/ballistic/assault.dm
+++ b/code/modules/projectiles/guns/ballistic/assault.dm
@@ -14,90 +14,50 @@
rack_sound = 'sound/weapons/gun/rifle/ar_cock.ogg'
spread_unwielded = 20
-/obj/item/gun/ballistic/automatic/assault/ak47
- name = "\improper SVG-67"
- desc = "A Frontier-built assault rifle descended from a pattern of unknown provenance. Its low cost, ease of maintenance, and powerful 7.62x39mm cartridge make it a popular choice among a wide variety of outlaws."
+/obj/item/gun/ballistic/automatic/assault/skm
+ name = "\improper SKM-24"
+ desc = "An obsolete model of assault rifle once used by CLIP. Legendary for its durability and low cost, surplus rifles are commonplace on the Frontier, and the design has been widely copied. Chambered in 7.62x40mm CLIP."
icon = 'icons/obj/guns/48x32guns.dmi'
- fire_sound = 'sound/weapons/gun/rifle/ak47.ogg'
+ fire_sound = 'sound/weapons/gun/rifle/skm.ogg'
- rack_sound = 'sound/weapons/gun/rifle/ak47_cocked.ogg'
- load_sound = 'sound/weapons/gun/rifle/ak47_reload.ogg'
- load_empty_sound = 'sound/weapons/gun/rifle/ak47_reload.ogg'
- eject_sound = 'sound/weapons/gun/rifle/ak47_unload.ogg'
- eject_empty_sound = 'sound/weapons/gun/rifle/ak47_unload.ogg'
+ rack_sound = 'sound/weapons/gun/rifle/skm_cocked.ogg'
+ load_sound = 'sound/weapons/gun/rifle/skm_reload.ogg'
+ load_empty_sound = 'sound/weapons/gun/rifle/skm_reload.ogg'
+ eject_sound = 'sound/weapons/gun/rifle/skm_unload.ogg'
+ eject_empty_sound = 'sound/weapons/gun/rifle/skm_unload.ogg'
- icon_state = "ak47"
- item_state = "ak47"
+ icon_state = "skm"
+ item_state = "skm"
mag_display = TRUE
+ special_mags = TRUE
weapon_weight = WEAPON_MEDIUM
w_class = WEIGHT_CLASS_BULKY
slot_flags = ITEM_SLOT_BACK
- mag_type = /obj/item/ammo_box/magazine/ak47
- spread = 0
+ manufacturer = MANUFACTURER_IMPORT
+ mag_type = /obj/item/ammo_box/magazine/skm_762_40
+
+ spread = 1
wield_delay = 0.7 SECONDS
-/obj/item/gun/ballistic/automatic/assault/ak47/ComponentInitialize()
+/obj/item/gun/ballistic/automatic/assault/skm/ComponentInitialize()
. = ..()
AddComponent(/datum/component/automatic_fire, 0.2 SECONDS)
-/obj/item/gun/ballistic/automatic/assault/ak47/nt
- name = "\improper NT-SVG"
- desc = "An even cheaper version of the SVG-67, rechambered for the lightweight 4.6x30mm PDW cartridge. The flimsy folding stock and light construction make for a highly-portable rifle that lacks accuracy and power."
- icon = 'icons/obj/guns/48x32guns.dmi'
- fire_sound = 'sound/weapons/gun/rifle/shot.ogg'
- icon_state = "ak47_nt"
- item_state = "ak47_nt"
- mag_type = /obj/item/ammo_box/magazine/aknt
- var/folded = FALSE
- var/unfolded_spread = 2
- var/unfolded_item_state = "ak47_nt"
- var/folded_spread = 20
- var/folded_item_state = "ak47_nt_stockless"
-
-/obj/item/gun/ballistic/automatic/assault/ak47/nt/CtrlClick(mob/user)
- . = ..()
- if((!ishuman(user) || user.stat))
- return
- to_chat(user, "You start to [folded ? "unfold" : "fold"] the stock on the [src].")
- if(do_after(user, 10, target = src))
- fold(user)
- user.update_inv_back()
- user.update_inv_hands()
- user.update_inv_s_store()
-
-/obj/item/gun/ballistic/automatic/assault/ak47/nt/proc/fold(mob/user)
- if(folded)
- to_chat(user, "You unfold the stock on the [src].")
- spread = unfolded_spread
- item_state = unfolded_item_state
- w_class = WEIGHT_CLASS_BULKY
- else
- to_chat(user, "You fold the stock on the [src].")
- spread = folded_spread
- item_state = folded_item_state
- w_class = WEIGHT_CLASS_NORMAL
+/obj/item/gun/ballistic/automatic/assault/skm/pirate
+ name = "\improper Chopper"
+ desc = "An SKM-24 in a state of shockingly poor repair: Several parts are missing and the 'grip' is improvised from scrap wood. It's a miracle it still works at all. Chambered in 7.62x40mm CLIP."
- folded = !folded
- playsound(src.loc, 'sound/weapons/empty.ogg', 100, 1)
- update_appearance()
+ icon_state = "skm_pirate"
+ item_state = "skm_pirate"
+ manufacturer = MANUFACTURER_NONE
-/obj/item/gun/ballistic/automatic/assault/ak47/nt/update_overlays()
- . = ..()
- var/mutable_appearance/stock
- if(!folded)
- stock = mutable_appearance(icon, "ak47_nt_stock")
- else
- stock = mutable_appearance(icon, null)
- . += stock
+/obj/item/gun/ballistic/automatic/assault/skm/inteq
+ name = "\improper SKM-44"
+ desc = "An obsolete model of assault rifle once used by CLIP. Most of these were seized from Frontiersmen armories or purchased in CLIP, then modified to IRMG standards. Chambered in 7.62x40mm CLIP."
-/obj/item/gun/ballistic/automatic/assault/ak47/inteq
- name = "\improper SkM-24"
- desc = "An antique assault rifle seized from Frontiersmen armories then extensively modified to IRMG standards. Chambered in 7.62x39mm."
- icon = 'icons/obj/guns/48x32guns.dmi'
- fire_sound = 'sound/weapons/gun/rifle/akm.ogg'
- icon_state = "akm"
- item_state = "akm"
- mob_overlay_icon = 'icons/mob/clothing/back.dmi'
+ icon_state = "skm_inteq"
+ item_state = "skm_inteq"
+ manufacturer = MANUFACTURER_INTEQ
/obj/item/gun/ballistic/automatic/assault/p16
name = "\improper P-16"
diff --git a/code/modules/projectiles/guns/ballistic/hmg.dm b/code/modules/projectiles/guns/ballistic/hmg.dm
index 3209513efc20..6efc37761eeb 100644
--- a/code/modules/projectiles/guns/ballistic/hmg.dm
+++ b/code/modules/projectiles/guns/ballistic/hmg.dm
@@ -1,18 +1,142 @@
+//TODO: rename this file to lmg.dm and: /obj/item/gun/ballistic/automatic/hmg --> /obj/item/gun/ballistic/automatic/lmg
+
/obj/item/gun/ballistic/automatic/hmg
w_class = WEIGHT_CLASS_HUGE
slot_flags = 0
weapon_weight = WEAPON_HEAVY
burst_size = 1
- actions_types = list()
- slowdown = 1
+ actions_types = list(/datum/action/item_action/deploy_bipod) //this is on hmg, as I need the same mechanics for a future gun. ideally, this would be an attachment, but that's still pending
drag_slowdown = 1.5
fire_delay = 1
- spread = 2
+ spread = 4
spread_unwielded = 80
recoil = 1
recoil_unwielded = 4
- wield_slowdown = 4
+ wield_slowdown = 3
+
+ ///does this have a bipod?
+ var/has_bipod = FALSE
+ ///is the bipod deployed?
+ var/bipod_deployed = FALSE
+ ///how long do we need to deploy the bipod?
+ var/deploy_time = 2 SECONDS
+
+ ///we add these two values to recoi/spread when we have the bipod deployed
+ var/deploy_recoil_bonus = -1
+ var/deploy_spread_bonus = -5
+
+ var/list/deployable_on_structures = list(
+ /obj/structure/table,
+ /obj/structure/barricade,
+ /obj/structure/bed,
+ /obj/structure/chair,
+ /obj/structure/railing,
+ /obj/structure/flippedtable
+ )
+
+
+/obj/item/gun/ballistic/automatic/hmg/Initialize()
+ . = ..()
+ for(var/datum/action/item_action/deploy_bipod/action as anything in actions_types)
+ if(!has_bipod)
+ qdel(action)
+
+/obj/item/gun/ballistic/automatic/hmg/ComponentInitialize()
+ . = ..()
+ RegisterSignal(src, list(COMSIG_ITEM_EQUIPPED,COMSIG_MOVABLE_MOVED), PROC_REF(retract_bipod))
+
+/datum/action/item_action/deploy_bipod //TODO: Make this an accessory when that's added
+ name = "Deploy Bipod"
+ desc = "Deploy the bipod when bracing against something to increase accuracy."
+
+/obj/item/gun/ballistic/automatic/hmg/ui_action_click(mob/user, action)
+ if(!istype(action, /datum/action/item_action/deploy_bipod))
+ return ..()
+ if(!bipod_deployed)
+ deploy_bipod(user)
+ else
+ retract_bipod(user=user)
+
+/obj/item/gun/ballistic/automatic/hmg/proc/deploy_bipod(mob/user)
+ //we check if we can actually deploy the thing
+ var/can_deploy = TRUE
+ var/mob/living/wielder = user
+
+ if(!wielder)
+ return
+
+ if(!wielded_fully)
+ to_chat(user, "You need to fully grip [src] to deploy it's bipod!")
+ return
+
+ if(wielder.body_position != LYING_DOWN) //are we braced against the ground? if not, we check for objects to brace against
+ can_deploy = FALSE
+
+ for(var/direction_to_check as anything in GLOB.cardinals) //help
+ var/turf/open/turf_to_check = get_step(get_turf(src),direction_to_check)
+ for(var/obj/structure/checked_struct as anything in turf_to_check.contents) //while you can fire in non-braced directions, this makes it so you have to get good positioning to fire standing up.
+ for(var/checking_allowed as anything in deployable_on_structures)
+ if(istype(checked_struct, checking_allowed)) //help if you know how to write this better
+ can_deploy = TRUE
+ break
+
+
+ if(!can_deploy)
+ to_chat(user, "You need to brace against something to deploy [src]'s bipod! Either lie on the floor or stand next to a waist high object like a table!")
+ return
+ if(!do_mob(user, src, deploy_time, FALSE, TRUE, CALLBACK(src, PROC_REF(is_wielded))))
+ to_chat(user, "You need to hold still to deploy [src]'s bipod!")
+ return
+ playsound(src, 'sound/machines/click.ogg', 75, TRUE)
+ to_chat(user, "You deploy [src]'s bipod.")
+ bipod_deployed = TRUE
+
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(retract_bipod))
+ update_appearance()
+
+/obj/item/gun/ballistic/automatic/hmg/proc/retract_bipod(atom/source, mob/user)
+ SIGNAL_HANDLER
+ if(!bipod_deployed)
+ return
+ if(!user || !ismob(user))
+ user = loc
+ playsound(src, 'sound/machines/click.ogg', 75, TRUE)
+ to_chat(user, "The bipod undeploys itself.")
+ bipod_deployed = FALSE
+
+ UnregisterSignal(user, COMSIG_MOVABLE_MOVED)
+ update_appearance()
+
+
+/obj/item/gun/ballistic/automatic/hmg/on_unwield(obj/item/source, mob/user)
+ . = ..()
+ retract_bipod(user=user)
+
+/obj/item/gun/ballistic/automatic/hmg/calculate_recoil(mob/user, recoil_bonus = 0)
+ var/total_recoil = recoil_bonus
+ if(bipod_deployed)
+ total_recoil += deploy_recoil_bonus
+ total_recoil = clamp(total_recoil,0,INFINITY)
+ return total_recoil
+
+/obj/item/gun/ballistic/automatic/hmg/calculate_spread(mob/user, bonus_spread)
+ var/total_spread = bonus_spread
+ if(bipod_deployed)
+ total_spread += deploy_spread_bonus
+ total_spread = clamp(total_spread,0,INFINITY)
+ return total_spread
+
+
+/obj/item/gun/ballistic/automatic/hmg/update_icon_state()
+ . = ..()
+ item_state = "[initial(item_state)][bipod_deployed ? "_deployed" : ""]"
+
+/obj/item/gun/ballistic/automatic/hmg/update_overlays()
+ . = ..()
+ if(has_bipod)
+ . += "[base_icon_state || initial(icon_state)][bipod_deployed ? "_deployed" : "_undeployed"]"
+
// L6 SAW //
@@ -96,3 +220,60 @@
/obj/item/gun/ballistic/automatic/hmg/solar/ComponentInitialize()
. = ..()
AddComponent(/datum/component/automatic_fire, 0.1 SECONDS)
+
+/obj/item/gun/ballistic/automatic/hmg/skm_lmg
+ name = "\improper SKM-24u"
+ desc = "What appears to be a standard SKM-24 at first glance is actually a light machine gun conversion, with an extended, heavy barrel and overhauled internals. Its weight, bulk, and robust fire rate make it difficult to handle without using the bipod in a prone position or against appropriate cover such as a table. Chambered in 7.62x40mm CLIP."
+
+ icon = 'icons/obj/guns/48x32guns.dmi'
+ icon_state = "skm_lmg"
+ item_state = "skm_lmg"
+
+ fire_sound = 'sound/weapons/gun/rifle/skm.ogg'
+ rack_sound = 'sound/weapons/gun/rifle/skm_cocked.ogg'
+ load_sound = 'sound/weapons/gun/rifle/skm_reload.ogg'
+ load_empty_sound = 'sound/weapons/gun/rifle/skm_reload.ogg'
+ eject_sound = 'sound/weapons/gun/rifle/skm_unload.ogg'
+ eject_empty_sound = 'sound/weapons/gun/rifle/skm_unload.ogg'
+
+
+ mag_display = TRUE
+ special_mags = TRUE
+ weapon_weight = WEAPON_MEDIUM
+ w_class = WEIGHT_CLASS_BULKY
+ slot_flags = ITEM_SLOT_BACK
+ manufacturer = MANUFACTURER_IMPORT
+ mag_type = /obj/item/ammo_box/magazine/skm_762_40
+
+
+ spread = 7 //you can hipfire, but why?
+ spread_unwielded = 25
+
+ recoil = 1 //identical to other LMGS
+ recoil_unwielded = 4 //same as skm
+
+ wield_slowdown = 1 //not as severe as other lmgs, but worse than the normal skm
+ wield_delay = 0.85 SECONDS //faster than normal lmgs, slower than stock skm
+
+ has_bipod = TRUE
+
+/obj/item/gun/ballistic/automatic/hmg/skm_lmg/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/automatic_fire, 0.13 SECONDS) //slower than other lmgs but faster than skm and most smgs
+ AddElement(/datum/element/update_icon_updates_onmob)
+
+/obj/item/gun/ballistic/automatic/hmg/skm_lmg/extended //spawns with the proper extended magazine, for erts
+ spawnwithmagazine = FALSE
+
+/obj/item/gun/ballistic/automatic/hmg/skm_lmg/extended/Initialize()
+ . = ..()
+ magazine = new /obj/item/ammo_box/magazine/skm_762_40/extended(src)
+ chamber_round()
+
+/obj/item/gun/ballistic/automatic/hmg/skm_lmg/drum_mag //spawns with a drum, maybe not for erts but admin enhanced ERTS? when things really go to shit
+ spawnwithmagazine = FALSE
+
+/obj/item/gun/ballistic/automatic/hmg/skm_lmg/drum_mag/Initialize()
+ . = ..()
+ magazine = new /obj/item/ammo_box/magazine/skm_762_40/drum(src)
+ chamber_round()
diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm
index 6e5a8d4d42b8..815dde789f36 100644
--- a/code/modules/projectiles/guns/ballistic/shotgun.dm
+++ b/code/modules/projectiles/guns/ballistic/shotgun.dm
@@ -595,7 +595,7 @@
inhand_y_dimension = 32
mag_type = /obj/item/ammo_box/magazine/internal/shot/winchester
fire_sound = 'sound/weapons/gun/rifle/flamingarrow.ogg'
- rack_sound = 'sound/weapons/gun/rifle/ak47_cocked.ogg'
+ rack_sound = 'sound/weapons/gun/rifle/skm_cocked.ogg'
bolt_wording = "lever"
cartridge_wording = "bullet"
can_be_sawn_off = TRUE
@@ -688,6 +688,7 @@
base_icon_state = "beacon"
icon_state = "beacon"
item_state = "beacon"
+ unique_reskin = null
icon = 'icons/obj/guns/48x32guns.dmi'
mob_overlay_icon = 'icons/mob/clothing/back.dmi'
inhand_x_dimension = 32
diff --git a/code/modules/projectiles/guns/ballistic/smg.dm b/code/modules/projectiles/guns/ballistic/smg.dm
index 11a4d8c81b7c..2d4e72ae8736 100644
--- a/code/modules/projectiles/guns/ballistic/smg.dm
+++ b/code/modules/projectiles/guns/ballistic/smg.dm
@@ -8,6 +8,8 @@
recoil_unwielded = 4
w_class = WEIGHT_CLASS_BULKY
+ wield_delay = 0.4 SECONDS
+
load_sound = 'sound/weapons/gun/smg/smg_reload.ogg'
load_empty_sound = 'sound/weapons/gun/smg/smg_reload.ogg'
eject_sound = 'sound/weapons/gun/smg/smg_unload.ogg'
@@ -69,25 +71,6 @@
icon_state = "c20r_suns"
item_state = "c20r_suns"
-/obj/item/gun/ballistic/automatic/smg/inteq
- name = "\improper SkM-44(k)"
- desc = "An extreme modification of an obsolete assault rifle, converted into a compact submachine gun by IRMG. Chambered in 10mm."
- icon_state = "inteqsmg"
- item_state = "inteqsmg"
- fire_sound = 'sound/weapons/gun/smg/vector_fire.ogg'
- mag_type = /obj/item/ammo_box/magazine/smgm10mm
- can_bayonet = FALSE
- can_flashlight = TRUE
- flight_x_offset = 15
- flight_y_offset = 13
- can_suppress = TRUE
- mag_display = TRUE
- manufacturer = MANUFACTURER_INTEQ
-
-/obj/item/gun/ballistic/automatic/smg/inteq/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/automatic_fire, 0.13 SECONDS)
-
/obj/item/gun/ballistic/automatic/smg/wt550
name = "\improper WT-550 Automatic Rifle"
desc = "An outdated PDW, used centuries ago by Nanotrasen security elements. Uses 4.6x30mm rounds."
@@ -236,6 +219,7 @@
item_state = "firestorm"
mag_type = /obj/item/ammo_box/magazine/c45_firestorm_mag
can_suppress = FALSE
+ special_mags = TRUE
burst_size = 1
actions_types = list()
fire_delay = 1
@@ -274,17 +258,143 @@
/obj/item/gun/ballistic/automatic/smg/cm5/no_mag
spawnwithmagazine = FALSE
-/obj/item/gun/ballistic/automatic/smg/aks74u
- name = "\improper AKS-74U"
- desc = "A pre-FTL era carbine, known to be incredibly cheap. Its extreme fire rate make it perfect for bandits, pirates and colonists on a budget."
- fire_sound = 'sound/weapons/gun/rifle/shot.ogg'
- icon_state = "aks74u"
- lefthand_file = 'icons/mob/inhands/weapons/64x_guns_left.dmi'
- righthand_file = 'icons/mob/inhands/weapons/64x_guns_right.dmi'
- item_state = "aks74u"
+/obj/item/gun/ballistic/automatic/smg/skm_carbine
+ name = "\improper SKM-24v"
+ desc = "The SKM-24v was a carbine modification of the SKM-24 during the Frontiersmen War. This, however, is just a shoddy imitation of that carbine, effectively an SKM-24 with a sawed down barrel and a folding wire stock. Can be fired with the stock folded, though accuracy suffers. Chambered in 4.6x30mm."
+
+ icon = 'icons/obj/guns/48x32guns.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/back.dmi'
+ icon_state = "skm_carbine"
+ item_state = "skm_carbine"
+
+ fire_sound = 'sound/weapons/gun/rifle/skm_smg.ogg'
+
+ rack_sound = 'sound/weapons/gun/rifle/skm_cocked.ogg'
+ load_sound = 'sound/weapons/gun/rifle/skm_reload.ogg'
+ load_empty_sound = 'sound/weapons/gun/rifle/skm_reload.ogg'
+ eject_sound = 'sound/weapons/gun/rifle/skm_unload.ogg'
+ eject_empty_sound = 'sound/weapons/gun/rifle/skm_unload.ogg'
+
weapon_weight = WEAPON_MEDIUM
- mag_type = /obj/item/ammo_box/magazine/aks74u
+ w_class = WEIGHT_CLASS_BULKY
+ mag_type = /obj/item/ammo_box/magazine/skm_545_39
+
+ actions_types = list(/datum/action/item_action/fold_stock) //once again, ideally an attatchment in the future
+
+ recoil = 2
+ recoil_unwielded = 6
+
+ spread = 8
+ spread_unwielded = 14
+
+ wield_delay = 0.6 SECONDS
+ wield_slowdown = 0.35
+
+ ///is the bipod deployed?
+ var/stock_folded = FALSE
+
+ ///we add these two values to recoi/spread when we have the bipod deployed
+ var/stock_recoil_bonus = -2
+ var/stock_spread_bonus = -5
+
+ var/folded_slowdown = 0.6
+ var/folded_wield_delay = 0.6 SECONDS
+
+ var/unfolded_slowdown = 0.35
+ var/unfolded_wield_delay = 0.2 SECONDS
+
+/obj/item/gun/ballistic/automatic/smg/skm_carbine/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/automatic_fire, 0.13 SECONDS)
+ AddElement(/datum/element/update_icon_updates_onmob)
+
+/datum/action/item_action/fold_stock
+ name = "Fold/Unfold stock"
+ desc = "Fold or unfold the stock for easier storage."
+
+/obj/item/gun/ballistic/automatic/smg/skm_carbine/ui_action_click(mob/user, action)
+ if(!istype(action, /datum/action/item_action/fold_stock))
+ return ..()
+ fold(user)
+
-/obj/item/gun/ballistic/automatic/smg/aks74u/ComponentInitialize()
+/obj/item/gun/ballistic/automatic/smg/skm_carbine/proc/fold(mob/user)
+ if(stock_folded)
+ to_chat(user, "You unfold the stock on the [src].")
+ w_class = WEIGHT_CLASS_BULKY
+ wield_delay = folded_wield_delay
+ wield_slowdown = folded_slowdown
+ else
+ to_chat(user, "You fold the stock on the [src].")
+ w_class = WEIGHT_CLASS_NORMAL
+ wield_delay = unfolded_wield_delay
+ wield_slowdown = unfolded_slowdown
+
+ if(wielded)
+ user.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/gun, multiplicative_slowdown = wield_slowdown)
+
+ stock_folded = !stock_folded
+ playsound(src, 'sound/weapons/empty.ogg', 100, 1)
+ update_appearance()
+
+
+/obj/item/gun/ballistic/automatic/smg/skm_carbine/calculate_recoil(mob/user, recoil_bonus = 0)
+ var/total_recoil = recoil_bonus
+ if(!stock_folded)
+ total_recoil += stock_recoil_bonus
+ total_recoil = clamp(total_recoil,0,INFINITY)
+ return total_recoil
+
+/obj/item/gun/ballistic/automatic/smg/skm_carbine/calculate_spread(mob/user, bonus_spread)
+ var/total_spread = bonus_spread
+ if(!stock_folded)
+ total_spread += stock_spread_bonus
+ total_spread = clamp(total_spread,0,INFINITY)
+ return total_spread
+
+/obj/item/gun/ballistic/automatic/smg/skm_carbine/update_icon_state()
+ . = ..()
+ item_state = "[initial(item_state)][stock_folded ? "_nostock" : ""]"
+ mob_overlay_state = "[initial(item_state)][stock_folded ? "_nostock" : ""]"
+
+/obj/item/gun/ballistic/automatic/smg/skm_carbine/update_overlays()
+ . = ..()
+ . += "[base_icon_state || initial(icon_state)][stock_folded ? "_nostock" : "_stock"]"
+
+/obj/item/gun/ballistic/automatic/smg/skm_carbine/inteq
+ name = "\improper SKM-44v Mongrel"
+ desc = "An SKM-44, further modified into a sub-machine gun by Inteq artificers with a new magazine well, collapsing stock, and shortened barrel. Faced with a surplus of SKM-44s and a shortage of other firearms, IRMG has made the most of their available materiel with conversions such as this. Chambered in 10mm."
+ icon_state = "skm_inteqsmg"
+ item_state = "skm_inteqsmg"
+
+ mag_type = /obj/item/ammo_box/magazine/smgm10mm
+ manufacturer = MANUFACTURER_INTEQ
+
+ fire_sound = 'sound/weapons/gun/smg/vector_fire.ogg'
+
+ load_sound = 'sound/weapons/gun/smg/smg_reload.ogg'
+ load_empty_sound = 'sound/weapons/gun/smg/smg_reload.ogg'
+ eject_sound = 'sound/weapons/gun/smg/smg_unload.ogg'
+ eject_empty_sound = 'sound/weapons/gun/smg/smg_unload.ogg'
+
+ spread = 7
+ recoil_unwielded = 10
+
+ recoil = 0
+ recoil_unwielded = 4
+
+ stock_spread_bonus = -4
+ stock_recoil_bonus = -1
+
+ wield_delay = 0.4 SECONDS
+
+ folded_slowdown = 0.15
+ folded_wield_delay = 0.2 SECONDS
+
+ unfolded_slowdown = 0.35
+ unfolded_wield_delay = 0.4 SECONDS
+
+
+/obj/item/gun/ballistic/automatic/smg/skm_carbine/inteq/ComponentInitialize()
. = ..()
- AddComponent(/datum/component/automatic_fire, 0.13 SECONDS) //last autofire system made the fire rate REALLY fucking fast, but because of how poor it was, it was normal speed.
+ AddComponent(/datum/component/automatic_fire, 0.13 SECONDS)
diff --git a/code/modules/projectiles/guns/energy/energy_gun.dm b/code/modules/projectiles/guns/energy/energy_gun.dm
index 286eb0ed11e7..1423eedf81ba 100644
--- a/code/modules/projectiles/guns/energy/energy_gun.dm
+++ b/code/modules/projectiles/guns/energy/energy_gun.dm
@@ -257,6 +257,7 @@
flight_x_offset = 20
flight_y_offset = 9
spread = 80
+ spread_unwielded = 140
dual_wield_spread = 140
shaded_charge = TRUE
manufacturer = MANUFACTURER_EOEHOMA
diff --git a/code/modules/projectiles/projectile/bullets/lmg.dm b/code/modules/projectiles/projectile/bullets/lmg.dm
index ed9469cb668a..79a9b2feb07c 100644
--- a/code/modules/projectiles/projectile/bullets/lmg.dm
+++ b/code/modules/projectiles/projectile/bullets/lmg.dm
@@ -59,7 +59,7 @@
/obj/projectile/bullet/mm712x82
name = "7.12x82mm bullet"
damage = 25
- armour_penetration = 40
+ armour_penetration = 4076
/obj/projectile/bullet/mm712x82/ap
name = "7.12x82mm armor-piercing bullet"
diff --git a/code/modules/projectiles/projectile/bullets/rifle.dm b/code/modules/projectiles/projectile/bullets/rifle.dm
index 551a63cc512f..8797fbdcde32 100644
--- a/code/modules/projectiles/projectile/bullets/rifle.dm
+++ b/code/modules/projectiles/projectile/bullets/rifle.dm
@@ -43,10 +43,10 @@
damage = 30
armour_penetration = 20
-//7.62x39mm (SVG-67 & SkM-24)
+//7.62x40mm CLIP (SKM Rifles)
-/obj/projectile/bullet/a762_39
- name = "7.62x39mm"
+/obj/projectile/bullet/a762_40
+ name = "7.62x40mm CLIP"
damage = 30
armour_penetration = 20
diff --git a/icons/mob/clothing/back.dmi b/icons/mob/clothing/back.dmi
index 1bbbaa48eb7f..8c730bf22ba3 100644
Binary files a/icons/mob/clothing/back.dmi and b/icons/mob/clothing/back.dmi differ
diff --git a/icons/mob/clothing/belt_mirror.dmi b/icons/mob/clothing/belt_mirror.dmi
index 03697eb5406e..6b27c56c8b35 100644
Binary files a/icons/mob/clothing/belt_mirror.dmi and b/icons/mob/clothing/belt_mirror.dmi differ
diff --git a/icons/mob/inhands/weapons/64x_guns_left.dmi b/icons/mob/inhands/weapons/64x_guns_left.dmi
index 1f77b0d30545..606d8aeff2f3 100644
Binary files a/icons/mob/inhands/weapons/64x_guns_left.dmi and b/icons/mob/inhands/weapons/64x_guns_left.dmi differ
diff --git a/icons/mob/inhands/weapons/64x_guns_right.dmi b/icons/mob/inhands/weapons/64x_guns_right.dmi
index 9eb8c8d9f055..1cb03b31b8fa 100644
Binary files a/icons/mob/inhands/weapons/64x_guns_right.dmi and b/icons/mob/inhands/weapons/64x_guns_right.dmi differ
diff --git a/icons/mob/inhands/weapons/guns_lefthand.dmi b/icons/mob/inhands/weapons/guns_lefthand.dmi
index 811173593681..ef1b09fccc53 100644
Binary files a/icons/mob/inhands/weapons/guns_lefthand.dmi and b/icons/mob/inhands/weapons/guns_lefthand.dmi differ
diff --git a/icons/mob/inhands/weapons/guns_righthand.dmi b/icons/mob/inhands/weapons/guns_righthand.dmi
index 4976bd2e2e00..827bd71ad50e 100644
Binary files a/icons/mob/inhands/weapons/guns_righthand.dmi and b/icons/mob/inhands/weapons/guns_righthand.dmi differ
diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi
index aaddd3b8de70..5eabb260e6f0 100644
Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ
diff --git a/icons/obj/guns/48x32guns.dmi b/icons/obj/guns/48x32guns.dmi
index fa7eba30f13a..82c81415ddcb 100644
Binary files a/icons/obj/guns/48x32guns.dmi and b/icons/obj/guns/48x32guns.dmi differ
diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi
index b89094f953f3..690ed5d86d2f 100644
Binary files a/icons/obj/guns/projectile.dmi and b/icons/obj/guns/projectile.dmi differ
diff --git a/sound/weapons/gun/rifle/ak47.ogg b/sound/weapons/gun/rifle/skm.ogg
similarity index 100%
rename from sound/weapons/gun/rifle/ak47.ogg
rename to sound/weapons/gun/rifle/skm.ogg
diff --git a/sound/weapons/gun/rifle/ak47_cocked.ogg b/sound/weapons/gun/rifle/skm_cocked.ogg
similarity index 100%
rename from sound/weapons/gun/rifle/ak47_cocked.ogg
rename to sound/weapons/gun/rifle/skm_cocked.ogg
diff --git a/sound/weapons/gun/rifle/ak47_reload.ogg b/sound/weapons/gun/rifle/skm_reload.ogg
similarity index 100%
rename from sound/weapons/gun/rifle/ak47_reload.ogg
rename to sound/weapons/gun/rifle/skm_reload.ogg
diff --git a/sound/weapons/gun/rifle/akm.ogg b/sound/weapons/gun/rifle/skm_smg.ogg
similarity index 100%
rename from sound/weapons/gun/rifle/akm.ogg
rename to sound/weapons/gun/rifle/skm_smg.ogg
diff --git a/sound/weapons/gun/rifle/ak47_unload.ogg b/sound/weapons/gun/rifle/skm_unload.ogg
similarity index 100%
rename from sound/weapons/gun/rifle/ak47_unload.ogg
rename to sound/weapons/gun/rifle/skm_unload.ogg