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