diff --git a/code/__defines/tick.dm b/code/__defines/tick.dm new file mode 100644 index 0000000000..e69de29bb2 diff --git a/code/datums/autolathe/arms.dm b/code/datums/autolathe/arms.dm index a7863b9bf7..4f36e9ff72 100644 --- a/code/datums/autolathe/arms.dm +++ b/code/datums/autolathe/arms.dm @@ -81,17 +81,7 @@ /////// 9mm -/obj/item/ammo_magazine/m9mm/flash - ammo_type =/obj/item/ammo_casing/a9mmf - -/obj/item/ammo_magazine/m9mm/rubber - name = "magazine (9mm rubber)" - ammo_type =/obj/item/ammo_casing/a9mmr - -/obj/item/ammo_magazine/m9mm/practice - name = "magazine (9mm practice)" - ammo_type =/obj/item/ammo_casing/a9mmp - +// Full size pistol mags. /datum/category_item/autolathe/arms/pistol_9mm name = "pistol magazine (9mm)" path =/obj/item/ammo_magazine/m9mm @@ -109,6 +99,28 @@ name = "pistol magazine (9mm flash)" path =/obj/item/ammo_magazine/m9mm/flash +// Small mags for small or old guns. +/datum/category_item/autolathe/arms/pistol_9mm_compact + name = "compact pistol magazine (9mm)" + path =/obj/item/ammo_magazine/m9mm/compact + hidden = 1 + +/datum/category_item/autolathe/arms/pistol_9mmr_compact + name = "compact pistol magazine (9mm rubber)" + path =/obj/item/ammo_magazine/m9mm/compact/rubber + hidden = 1 // These are all hidden because they are traitor mags and will otherwise just clutter the Autolathe. + +/datum/category_item/autolathe/arms/pistol_9mmp_compact + name = "compact pistol magazine (9mm practice)" + path =/obj/item/ammo_magazine/m9mm/compact/practice + hidden = 1 + +/datum/category_item/autolathe/arms/pistol_9mmf_compact + name = "compact pistol magazine (9mm flash)" + path =/obj/item/ammo_magazine/m9mm/compact/flash + hidden = 1 + +// SMG mags /datum/category_item/autolathe/arms/smg_9mm name = "top-mounted SMG magazine (9mm)" path =/obj/item/ammo_magazine/m9mmt diff --git a/code/datums/uplink/ammunition.dm b/code/datums/uplink/ammunition.dm index c0b7600aad..ebadbdaa8d 100644 --- a/code/datums/uplink/ammunition.dm +++ b/code/datums/uplink/ammunition.dm @@ -10,10 +10,19 @@ name = ".357 Speedloader" path = /obj/item/ammo_magazine/s357 +/datum/uplink_item/item/ammo/mc9mm_compact + name = "Compact Pistol Magazine (9mm)" + path = /obj/item/ammo_magazine/m9mm/compact + /datum/uplink_item/item/ammo/mc9mm name = "Pistol Magazine (9mm)" path = /obj/item/ammo_magazine/m9mm +/datum/uplink_item/item/ammo/mc9mm_large + name = "Large Capacity Pistol Magazine (9mm)" + path = /obj/item/ammo_magazine/m9mm/large + item_cost = 40 + /datum/uplink_item/item/ammo/c45m name = "Pistol Magazine (.45)" path = /obj/item/ammo_magazine/m45 diff --git a/code/datums/uplink/visible_weapons.dm b/code/datums/uplink/visible_weapons.dm index 2bb9bf36dc..6415365bd3 100644 --- a/code/datums/uplink/visible_weapons.dm +++ b/code/datums/uplink/visible_weapons.dm @@ -99,6 +99,16 @@ item_cost = 70 path = /obj/item/weapon/gun/projectile/revolver/judge +/datum/uplink_item/item/visible_weapons/pistol_standard_capacity + name = "9mm Pistol" + item_cost = 40 + path = /obj/item/weapon/gun/projectile/p92x + +/datum/uplink_item/item/visible_weapons/pistol_large_capacity + name = "9mm Pistol (with large capacity magazine)" + item_cost = 70 + path = /obj/item/weapon/gun/projectile/p92x/large + /datum/uplink_item/item/visible_weapons/lemat name = "LeMat" item_cost = 60 diff --git a/code/game/antagonist/outsider/raider.dm b/code/game/antagonist/outsider/raider.dm index 190488b38c..7c62208ca1 100644 --- a/code/game/antagonist/outsider/raider.dm +++ b/code/game/antagonist/outsider/raider.dm @@ -91,6 +91,7 @@ var/datum/antagonist/raider/raiders /obj/item/weapon/gun/projectile/shotgun/doublebarrel/sawn, /obj/item/weapon/gun/projectile/colt/detective, /obj/item/weapon/gun/projectile/pistol, + /obj/item/weapon/gun/projectile/p92x, /obj/item/weapon/gun/projectile/revolver, /obj/item/weapon/gun/projectile/pirate, /obj/item/weapon/gun/projectile/revolver/judge, diff --git a/code/game/antagonist/station/renegade.dm b/code/game/antagonist/station/renegade.dm index 08d411aec9..3bf53e55dc 100644 --- a/code/game/antagonist/station/renegade.dm +++ b/code/game/antagonist/station/renegade.dm @@ -45,6 +45,7 @@ var/datum/antagonist/renegade/renegades /obj/item/weapon/gun/projectile/sec/wood, /obj/item/weapon/gun/projectile/silenced, /obj/item/weapon/gun/projectile/pistol, + /obj/item/weapon/gun/projectile/p92x, /obj/item/weapon/gun/projectile/revolver, /obj/item/weapon/gun/projectile/derringer, /obj/item/weapon/gun/projectile/shotgun/pump, diff --git a/code/game/objects/items/weapons/power_cells.dm b/code/game/objects/items/weapons/power_cells.dm new file mode 100644 index 0000000000..e69de29bb2 diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 48d6296cc3..9e98fe58ec 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -160,6 +160,7 @@ /obj/item/weapon/melee, /obj/item/clothing/accessory/badge, /obj/item/weapon/gun/projectile/sec, + /obj/item/weapon/gun/projectile/p92x, /obj/item/taperoll, /obj/item/weapon/gun/projectile/colt/detective ) diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 825ce8bdea..f82feb91dd 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -169,7 +169,7 @@ /obj/item/weapon/storage/box/syndie_kit/g9mm name = "\improper Smooth operator" - desc = "9mm with silencer kit." + desc = "Compact 9mm with silencer kit." /obj/item/weapon/storage/box/syndie_kit/g9mm/New() ..() diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm index cde09b0783..8f0c632ee4 100644 --- a/code/game/objects/random/random.dm +++ b/code/game/objects/random/random.dm @@ -289,7 +289,7 @@ /obj/random/projectile name = "Random Projectile Weapon" - desc = "This is a random security weapon." + desc = "This is a random projectile weapon." icon = 'icons/obj/gun.dmi' icon_state = "revolver" @@ -310,6 +310,8 @@ prob(3);/obj/item/weapon/gun/projectile/luger/brown, prob(4);/obj/item/weapon/gun/projectile/sec, prob(3);/obj/item/weapon/gun/projectile/sec/wood, + prob(4);/obj/item/weapon/gun/projectile/p92x, + prob(3);/obj/item/weapon/gun/projectile/p92x/brown, prob(4);/obj/item/weapon/gun/projectile/pistol, prob(5);/obj/item/weapon/gun/projectile/pirate, prob(2);/obj/item/weapon/gun/projectile/revolver, @@ -345,13 +347,15 @@ /obj/random/handgun/item_to_spawn() return pick(prob(4);/obj/item/weapon/gun/projectile/sec, - prob(4);/obj/item/weapon/gun/projectile/luger, + prob(4);/obj/item/weapon/gun/projectile/p92x, + prob(3);/obj/item/weapon/gun/projectile/sec/wood, + prob(3);/obj/item/weapon/gun/projectile/p92x/brown, + prob(3);/obj/item/weapon/gun/projectile/colt, + prob(2);/obj/item/weapon/gun/projectile/luger, prob(2);/obj/item/weapon/gun/energy/gun, - prob(2);/obj/item/weapon/gun/projectile/colt, prob(2);/obj/item/weapon/gun/projectile/pistol, prob(1);/obj/item/weapon/gun/energy/retro, - prob(1);/obj/item/weapon/gun/projectile/sec/wood, - prob(3);/obj/item/weapon/gun/projectile/luger/brown) + prob(1);/obj/item/weapon/gun/projectile/luger/brown) /obj/random/handgun/sec name = "Random Security Handgun" @@ -365,7 +369,7 @@ /obj/random/ammo name = "Random Ammunition" - desc = "This is random ammunition." + desc = "This is random security ammunition." icon = 'icons/obj/ammo.dmi' icon_state = "45-10" diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index 9af8597c9b..0e9cf95eb6 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -191,19 +191,29 @@ /obj/item/ammo_magazine/m9mm name = "magazine (9mm)" - icon_state = "9x19p" + icon_state = "9x19p_fullsize" origin_tech = list(TECH_COMBAT = 2) mag_type = MAGAZINE - matter = list(DEFAULT_WALL_MATERIAL = 480) + matter = list(DEFAULT_WALL_MATERIAL = 600) caliber = "9mm" ammo_type = /obj/item/ammo_casing/a9mm - max_ammo = 8 + max_ammo = 10 multiple_sprites = 1 +/obj/item/ammo_magazine/m9mm/large + desc = "\"FOR LAW ENFORCEMENT/MILITARY USE ONLY\" is clearly etched on the magazine. This is probably illegal for you to have." // Remember, Security is not Law Enforcement, so it's illegal for Security to use as well. + icon_state = "9x19p_highcap" + max_ammo = 17 + origin_tech = list(TECH_COMBAT = 2, TECH_ILLEGAL = 1) + +/obj/item/ammo_magazine/m9mm/large/preban // Sold by traders. + desc = "A large capacity magazine that was built before the SolGov Assault Weapons Ban, so it's legal to own." + /obj/item/ammo_magazine/m9mm/empty initial_ammo = 0 /obj/item/ammo_magazine/m9mm/flash + name = "magazine (9mm flash)" ammo_type = /obj/item/ammo_casing/a9mmf /obj/item/ammo_magazine/m9mm/rubber @@ -214,6 +224,34 @@ name = "magazine (9mm practice)" ammo_type = /obj/item/ammo_casing/a9mmp +// Compact +/obj/item/ammo_magazine/m9mm/compact + name = "compact magazine (9mm)" + icon_state = "9x19p" + origin_tech = list(TECH_COMBAT = 2) + mag_type = MAGAZINE + matter = list(DEFAULT_WALL_MATERIAL = 480) + caliber = "9mm" + ammo_type = /obj/item/ammo_casing/a9mm + max_ammo = 8 + multiple_sprites = 1 + +/obj/item/ammo_magazine/m9mm/compact/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/m9mm/compact/flash + name = "compact magazine (9mm flash)" + ammo_type = /obj/item/ammo_casing/a9mmf + +/obj/item/ammo_magazine/m9mm/compact/rubber + name = "compact magazine (9mm rubber)" + ammo_type = /obj/item/ammo_casing/a9mmr + +/obj/item/ammo_magazine/m9mm/compact/practice + name = "compact magazine (9mm practice)" + ammo_type = /obj/item/ammo_casing/a9mmp + +// SMG /obj/item/ammo_magazine/m9mmt name = "top mounted magazine (9mm)" icon_state = "9mmt" @@ -240,7 +278,7 @@ ammo_type = /obj/item/ammo_casing/a9mmp /obj/item/ammo_magazine/m9mmp90 - name = "high capacity top mounted magazine (9mm armor-piercing)" + name = "large capacity top mounted magazine (9mm armor-piercing)" icon_state = "p90" mag_type = MAGAZINE ammo_type = /obj/item/ammo_casing/a9mm/ap diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 16aaf4c14d..19b92db3b7 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -299,7 +299,7 @@ /obj/item/weapon/gun/projectile/automatic/p90 name = "personal defense weapon" - desc = "The H90K is a compact, high capacity submachine gun produced by Hephaestus Industries. Despite its fierce reputation, it still manages to feel like a toy. Uses 9mm rounds." + desc = "The H90K is a compact, large capacity submachine gun produced by Hephaestus Industries. Despite its fierce reputation, it still manages to feel like a toy. Uses 9mm rounds." icon_state = "p90smg" item_state = "p90" w_class = ITEMSIZE_NORMAL diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm index 9a9f0b4bd6..872059df53 100644 --- a/code/modules/projectiles/guns/projectile/pistol.dm +++ b/code/modules/projectiles/guns/projectile/pistol.dm @@ -147,7 +147,7 @@ /* /obj/item/weapon/gun/projectile/fiveseven name = "\improper WT-AP57" - desc = "This tacticool pistol made by Ward-Takahashi trades stopping power for armor piercing and a high capacity. Uses 5mm rounds." + desc = "This tacticool pistol made by Ward-Takahashi trades stopping power for armor piercing and a large capacity. Uses 5mm rounds." icon_state = "fnseven" origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2) caliber = "5mm" @@ -187,8 +187,8 @@ icon_state = "gyropistol" /obj/item/weapon/gun/projectile/pistol - name = "holdout pistol" - desc = "The Lumoco Arms P3 Whisper. A small, easily concealable gun. Uses 9mm rounds." + name = "compact pistol" + desc = "The Lumoco Arms P3 Whisper. A compact, easily concealable gun, though it's only compatible with compact magazines. Uses 9mm rounds." icon_state = "pistol" item_state = null w_class = ITEMSIZE_SMALL @@ -197,12 +197,12 @@ origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 2) fire_sound = 'sound/weapons/gunshot3.ogg' load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m9mm - allowed_magazines = list(/obj/item/ammo_magazine/m9mm) + magazine_type = /obj/item/ammo_magazine/m9mm/compact + allowed_magazines = list(/obj/item/ammo_magazine/m9mm/compact) /obj/item/weapon/gun/projectile/pistol/flash - name = "holdout signal pistol" - magazine_type = /obj/item/ammo_magazine/m9mm/flash + name = "compact signal pistol" + magazine_type = /obj/item/ammo_magazine/m9mm/compact/flash /obj/item/weapon/gun/projectile/pistol/attack_hand(mob/living/user as mob) if(user.get_inactive_hand() == src) @@ -294,14 +294,14 @@ /obj/item/weapon/gun/projectile/luger name = "\improper P08 Luger" - desc = "Not some cheap Scheisse .45 caliber Martian knockoff! This Luger is an authentic reproduction by RauMauser. Accuracy, easy handling, and its signature appearance make it popular among historic gun collectors. Uses 9mm rounds." + desc = "Not some cheap scheisse Martian knockoff! This Luger is an authentic reproduction by RauMauser. Accuracy, easy handling, and its signature appearance make it popular among historic gun collectors. Uses 9mm rounds." icon_state = "p08" origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2) caliber = "9mm" load_method = MAGAZINE fire_sound = 'sound/weapons/gunshot3.ogg' - magazine_type = /obj/item/ammo_magazine/m9mm - allowed_magazines = list(/obj/item/ammo_magazine/m9mm) + magazine_type = /obj/item/ammo_magazine/m9mm/compact + allowed_magazines = list(/obj/item/ammo_magazine/m9mm/compact) /obj/item/weapon/gun/projectile/luger/update_icon() ..() @@ -311,4 +311,28 @@ icon_state = "[initial(icon_state)]-e" /obj/item/weapon/gun/projectile/luger/brown - icon_state = "p08b" \ No newline at end of file + icon_state = "p08b" + +/obj/item/weapon/gun/projectile/p92x + name = "9mm pistol" + desc = "A widespread sidearm called the P92X which is used by military, police, and security forces across the galaxy. Uses 9mm rounds." + icon_state = "p92x" + origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2) + caliber = "9mm" + load_method = MAGAZINE + fire_sound = 'sound/weapons/gunshot3.ogg' + magazine_type = /obj/item/ammo_magazine/m9mm + allowed_magazines = list(/obj/item/ammo_magazine/m9mm) // Can accept illegal large capacity magazines, or compact magazines. + +/obj/item/weapon/gun/projectile/p92x/update_icon() + ..() + if(ammo_magazine) + icon_state = "[initial(icon_state)]" + else + icon_state = "[initial(icon_state)]-e" + +/obj/item/weapon/gun/projectile/p92x/brown + icon_state = "p92x-brown" + +/obj/item/weapon/gun/projectile/p92x/large + magazine_type = /obj/item/ammo_magazine/m9mm/large // Spawns with illegal magazines. \ No newline at end of file diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index 00ab2af459..43bb082f57 100644 Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index 0b21b0f129..d7a107da94 100644 Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ