diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm
index 87e1d741728..5e9d0f70042 100644
--- a/code/datums/uplink_item.dm
+++ b/code/datums/uplink_item.dm
@@ -205,28 +205,29 @@ var/list/uplink_items = list()
/datum/uplink_item/dangerous
category = "Highly Visible and Dangerous Weapons"
-/datum/uplink_item/dangerous/revolver
- name = "Fully Loaded Revolver"
- desc = "A traditional handgun which fires .357 rounds. Has 7 chambers. Can down an unarmoured target with two shots."
- item = /obj/item/weapon/gun/projectile/revolver
- cost = 13
/datum/uplink_item/dangerous/pistol
- name = "Stechkin Pistol"
- desc = "A small, easily concealable handgun that uses 10mm magazines and is compatible with suppressors."
+ name = "Syndicate Pistol"
+ desc = "A small, easily concealable handgun that uses 10mm auto rounds in 8-round magazines and is compatible with suppressors."
item = /obj/item/weapon/gun/projectile/automatic/pistol
cost = 9
+/datum/uplink_item/dangerous/revolver
+ name = "Syndicate Revolver"
+ desc = "A brutally simple syndicate revolver that fires .357 Magnum cartridges and has 7 chambers."
+ item = /obj/item/weapon/gun/projectile/revolver
+ cost = 13
+
/datum/uplink_item/dangerous/smg
- name = "C-20r Submachine Gun"
- desc = "A fully-loaded Scarborough Arms-developed submachine gun that fires 12mm automatic rounds with a 20-round magazine."
+ name = "Syndicate SMG"
+ desc = "A fully-loaded Scarborough Arms bullpup submachine gun that fires .45 rounds with a 20-round magazine and is compatible with suppressors."
item = /obj/item/weapon/gun/projectile/automatic/c20r
cost = 14
gamemodes = list("nuclear emergency")
/datum/uplink_item/dangerous/machinegun
- name = "L6 Squad Automatic Weapon"
- desc = "A traditionally constructed machine gun made by AA-2531. This deadly weapon has a massive 50-round magazine of 7.62×51mm ammunition."
+ name = "Syndicate LMG"
+ desc = "A fully-loaded Aussec Armoury belt-fed machine gun. This deadly weapon has a massive 50-round magazine of devastating 7.62x51mm ammunition."
item = /obj/item/weapon/gun/projectile/automatic/l6_saw
cost = 40
gamemodes = list("nuclear emergency")
@@ -304,53 +305,74 @@ var/list/uplink_items = list()
/datum/uplink_item/ammo
category = "Ammunition"
-/datum/uplink_item/ammo/revolver
- name = "Ammo-357"
- desc = "A box that contains seven additional rounds for the revolver, made using an automatic lathe."
- item = /obj/item/ammo_box/a357
- cost = 4
-
/datum/uplink_item/ammo/pistol
name = "Ammo-10mm"
- desc = "An additional 8-round 10mm magazine for use in the Stetchkin pistol."
+ desc = "An additional 8-round 10mm magazine for use in the syndicate pistol. These subsonic rounds are dirt cheap but are half as effective as .357 rounds."
item = /obj/item/ammo_box/magazine/m10mm
cost = 1
+/datum/uplink_item/ammo/revolver
+ name = "Speed Loader - .357"
+ desc = "A speed loader that contains seven additional .357 Magnum rounds for the syndicate revolver. For when you really need a lot of things dead."
+ item = /obj/item/ammo_box/a357
+ cost = 4
+
/datum/uplink_item/ammo/smg
- name = "Ammo-12mm"
- desc = "A 20-round 12mm magazine for use in the C-20r submachine gun."
- item = /obj/item/ammo_box/magazine/m12mm
+ name = "Magazine - .45"
+ desc = "An additional 20-round .45 magazine for use in the C-20r submachine gun. These bullets pack a lot of punch that can knock most targets down, but do limited overall damage."
+ item = /obj/item/ammo_box/magazine/smgm45
cost = 2
gamemodes = list("nuclear emergency")
-/datum/uplink_item/ammo/machinegun
- name = "Ammo-7.62×51mm"
- desc = "A 50-round magazine of 7.62×51mm ammunition for use in the L6 SAW machinegun. By the time you need to use this, you'll already be on a pile of corpses."
- item = /obj/item/ammo_box/magazine/m762
- cost = 12
+/datum/uplink_item/dangerous/car
+ name = "C-90gl Compact Assault Rifle"
+ desc = "A fully-loaded Zashchita Industriya toploading bullpup assault rifle that uses 30-round 5.45x39mm magazines with a togglable underslung 40mm grenade launcher."
+ item = /obj/item/weapon/gun/projectile/automatic/c90gl
+ cost = 18
gamemodes = list("nuclear emergency")
/datum/uplink_item/ammo/bullstun
- name = "Ammo-12g Stun Slug"
+ name = "Drum Magazine - 12g Stun Slug"
desc = "An additional 8-round stun slug magazine for use in the Bulldog shotgun. Saying that they're non-lethal would be lying."
item = /obj/item/ammo_box/magazine/m12g
cost = 2
gamemodes = list("nuclear emergency")
/datum/uplink_item/ammo/bullbuck
- name = "Ammo-12g Buckshot"
+ name = "Drum Magazine - 12g Buckshot"
desc = "An alternative 8-round buckshot magazine for use in the Bulldog shotgun. Front towards enemy."
item = /obj/item/ammo_box/magazine/m12g/buckshot
cost = 2
gamemodes = list("nuclear emergency")
/datum/uplink_item/ammo/bulldragon
- name = "Ammo-12g Dragon's Breath"
+ name = "Drum Magazine - 12g Dragon's Breath"
desc = "An alternative 8-round dragon's breath magazine for use in the Bulldog shotgun. I'm a fire starter, twisted fire starter!"
item = /obj/item/ammo_box/magazine/m12g/dragon
cost = 3
gamemodes = list("nuclear emergency")
+/datum/uplink_item/ammo/car
+ name = "Box Magazine - 5.45x39mm"
+ desc = "An additional 30-round 5.45x39mm magazine for use in the C-90gl assault rifle. These bullets don't have the punch to knock most targets down, but dish out higher overall damage."
+ item = /obj/item/ammo_box/magazine/m545
+ cost = 2
+ gamemodes = list("nuclear emergency")
+
+/datum/uplink_item/ammo/a40mm
+ name = "Ammo Box - 40mm grenades"
+ desc = "A box of 4 additional 40mm HE grenades for use the C-90gl's underbarrel grenade launcher. Your teammates will thank you to not shoot these down small hallways."
+ item = /obj/item/ammo_box/a40mm
+ cost = 4
+ gamemodes = list("nuclear emergency")
+
+/datum/uplink_item/ammo/machinegun
+ name = "Box Magazine - 7.62×51mm"
+ desc = "A 50-round magazine of 7.62x51mm ammunition for use in the L6 SAW machinegun. By the time you need to use this, you'll already be on a pile of corpses."
+ item = /obj/item/ammo_box/magazine/m762
+ cost = 12
+ gamemodes = list("nuclear emergency")
+
// STEALTHY WEAPONS
@@ -379,9 +401,9 @@ var/list/uplink_items = list()
// Commented out until a fix can be found, currently doesn't work with the PDA NanoUI and people keep wasting Telecrystals on it. -- Dave
/datum/uplink_item/stealthy_weapons/silencer
- name = "Stetchkin Silencer"
- desc = "Fitted for use on the Stetchkin pistol, this silencer will make its shots quieter when equipped onto it."
- item = /obj/item/weapon/silencer
+ name = "Universal Suppressor"
+ desc = "Fitted for use on any small caliber weapon with a threaded barrel, this suppressor will silence the shots of the weapon for increased stealth and superior ambushing capability."
+ item = /obj/item/weapon/suppressor
cost = 3
// STEALTHY TOOLS
diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm
index 045809b422e..ce7c91f3245 100644
--- a/code/game/gamemodes/wizard/rightandwrong.dm
+++ b/code/game/gamemodes/wizard/rightandwrong.dm
@@ -19,7 +19,7 @@
for(var/datum/objective/OBJ in H.mind.objectives)
H << "Objective #[obj_count]: [OBJ.explanation_text]"
obj_count++
- var/randomizeguns = pick("taser","egun","laser","revolver","detective","smg","nuclear","deagle","gyrojet","pulse","silenced","cannon","doublebarrel","shotgun","combatshotgun","mateba","smg","uzi","crossbow","saw")
+ var/randomizeguns = pick("taser","egun","laser","revolver","detective","c20r","nuclear","deagle","gyrojet","pulse","silenced","cannon","doublebarrel","shotgun","combatshotgun","bulldog","mateba","sabr","crossbow","saw","car")
var/randomizemagic = pick("fireball","smoke","blind","mindswap","forcewall","knock","horsemask","charge","wandnothing", "wanddeath", "wandresurrection", "wandpolymorph", "wandteleport", "wanddoor", "wandfireball", "staffchange", "staffhealing", "armor", "scrying")
if(!summon_type)
switch (randomizeguns)
@@ -33,7 +33,7 @@
new /obj/item/weapon/gun/projectile/revolver(get_turf(H))
if("detective")
new /obj/item/weapon/gun/projectile/revolver/detective(get_turf(H))
- if("smg")
+ if("c20r")
new /obj/item/weapon/gun/projectile/automatic/c20r(get_turf(H))
if("nuclear")
new /obj/item/weapon/gun/energy/gun/nuclear(get_turf(H))
@@ -45,7 +45,7 @@
new /obj/item/weapon/gun/energy/pulse_rifle(get_turf(H))
if("silenced")
new /obj/item/weapon/gun/projectile/automatic/pistol(get_turf(H))
- new /obj/item/weapon/silencer(get_turf(H))
+ new /obj/item/weapon/suppressor(get_turf(H))
if("cannon")
new /obj/item/weapon/gun/energy/lasercannon(get_turf(H))
if("doublebarrel")
@@ -54,16 +54,18 @@
new /obj/item/weapon/gun/projectile/shotgun/(get_turf(H))
if("combatshotgun")
new /obj/item/weapon/gun/projectile/shotgun/combat(get_turf(H))
+ if("bulldog")
+ new /obj/item/weapon/gun/projectile/automatic/bulldog(get_turf(H))
if("mateba")
new /obj/item/weapon/gun/projectile/revolver/mateba(get_turf(H))
- if("smg")
+ if("sabr")
new /obj/item/weapon/gun/projectile/automatic(get_turf(H))
- if("uzi")
- new /obj/item/weapon/gun/projectile/automatic/mini_uzi(get_turf(H))
if("crossbow")
new /obj/item/weapon/gun/energy/crossbow(get_turf(H))
if("saw")
new /obj/item/weapon/gun/projectile/automatic/l6_saw(get_turf(H))
+ if("car")
+ new /obj/item/weapon/gun/projectile/automatic/c90gl(get_turf(H))
else
switch (randomizemagic)
if("fireball")
diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm
index cb9e2d89985..b31ebab786f 100644
--- a/code/game/machinery/autolathe.dm
+++ b/code/game/machinery/autolathe.dm
@@ -62,8 +62,11 @@ var/global/list/autolathe_recipes_hidden = list( \
new /obj/item/weapon/handcuffs(), \
new /obj/item/weapon/hatchet(), \
new /obj/item/ammo_box/a357(), \
+ new /obj/item/ammo_box/c10mm(), \
+ new /obj/item/ammo_box/c45(), \
+ new /obj/item/ammo_box/c9mm(), \
new /obj/item/ammo_casing/shotgun(), \
- new /obj/item/ammo_casing/shotgun/buck(), \
+ new /obj/item/ammo_casing/shotgun/buckshot(), \
new /obj/item/ammo_casing/shotgun/incendiary(), \
/*new /obj/item/ammo_casing/shotgun/dart(), \
new /obj/item/weapon/shield/riot(), */ \
diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm
index a2a5e5228c2..c1456733a8a 100644
--- a/code/game/mecha/equipment/weapons/weapons.dm
+++ b/code/game/mecha/equipment/weapons/weapons.dm
@@ -254,7 +254,7 @@
name = "LBX AC 10 \"Scattershot\""
icon_state = "mecha_scatter"
equip_cooldown = 20
- projectile = /obj/item/projectile/bullet/midbullet12
+ projectile = /obj/item/projectile/bullet/midbullet
fire_sound = 'sound/weapons/Gunshot.ogg'
projectiles = 40
projectile_energy_cost = 25
diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm
index c52ab34827c..c2a7d68fa37 100644
--- a/code/game/objects/items/weapons/storage/boxes.dm
+++ b/code/game/objects/items/weapons/storage/boxes.dm
@@ -152,23 +152,6 @@
new /obj/item/weapon/dnainjector/m2h(src)
new /obj/item/weapon/dnainjector/m2h(src)
-
-/obj/item/weapon/storage/box/blanks
- name = "box of birdshot shells"
- desc = "It has a picture of a gun and several warning symbols on the front."
- m_amt = 41000
-
- New()
- ..()
- new /obj/item/ammo_casing/shotgun/birdshot(src)
- new /obj/item/ammo_casing/shotgun/birdshot(src)
- new /obj/item/ammo_casing/shotgun/birdshot(src)
- new /obj/item/ammo_casing/shotgun/birdshot(src)
- new /obj/item/ammo_casing/shotgun/birdshot(src)
- new /obj/item/ammo_casing/shotgun/birdshot(src)
- new /obj/item/ammo_casing/shotgun/birdshot(src)
-
-
/obj/item/weapon/storage/box/gauge
name = "box of 12 gauge slugs"
desc = "It has a picture of a gun and several warning symbols on the front."
diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm
index 439f27c1135..6c0a0adb432 100644
--- a/code/game/objects/items/weapons/storage/uplink_kits.dm
+++ b/code/game/objects/items/weapons/storage/uplink_kits.dm
@@ -18,7 +18,7 @@
if("bond")
new /obj/item/weapon/gun/projectile/automatic/pistol(src)
- new /obj/item/weapon/silencer(src)
+ new /obj/item/weapon/suppressor(src)
new /obj/item/ammo_box/magazine/m10mm(src)
new /obj/item/ammo_box/magazine/m10mm(src)
new /obj/item/clothing/under/chameleon(src)
diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm
index 78faa4294c0..3d43d4628fb 100644
--- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm
+++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm
@@ -107,9 +107,9 @@
minimum_distance = 5
icon_state = "syndicateranged"
icon_living = "syndicateranged"
- casingtype = /obj/item/ammo_casing/a12mm
+ casingtype = /obj/item/ammo_casing/c45
projectilesound = 'sound/weapons/Gunshot_smg.ogg'
- projectiletype = /obj/item/projectile/bullet/midbullet12
+ projectiletype = /obj/item/projectile/bullet/midbullet2
weapon1 = /obj/item/weapon/gun/projectile/automatic/c20r
diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm
index 868410ea747..b84eb480138 100644
--- a/code/modules/projectiles/ammunition.dm
+++ b/code/modules/projectiles/ammunition.dm
@@ -95,7 +95,7 @@
return 1
return 0
-/obj/item/ammo_box/attackby(var/obj/item/A as obj, mob/user as mob)
+/obj/item/ammo_box/attackby(var/obj/item/A as obj, mob/user as mob, var/silent = 0)
var/num_loaded = 0
if(istype(A, /obj/item/ammo_box))
var/obj/item/ammo_box/AM = A
@@ -113,17 +113,25 @@
AC.loc = src
num_loaded++
if(num_loaded)
- user << "You load [num_loaded] shell\s into \the [src]!"
+ if(!silent)
+ user << "You load [num_loaded] shell\s into \the [src]!"
A.update_icon()
update_icon()
+/obj/item/ammo_box/attack_self(mob/user as mob)
+ var/obj/item/ammo_casing/A = get_round()
+ if(A)
+ user.put_in_hands(A)
+ user << "You remove a round from \the [src]!"
+ update_icon()
+
/obj/item/ammo_box/update_icon()
switch(multiple_sprites)
if(1)
icon_state = "[initial(icon_state)]-[stored_ammo.len]"
if(2)
icon_state = "[initial(icon_state)]-[stored_ammo.len ? "[max_ammo]" : "0"]"
- desc = "There are [stored_ammo.len] shell\s left!"
+ desc = "[initial(desc)] There are [stored_ammo.len] shell\s left!"
//Behavior for magazines
/obj/item/ammo_box/magazine/proc/ammo_count()
diff --git a/code/modules/projectiles/ammunition/bullets.dm b/code/modules/projectiles/ammunition/ammo_casings.dm
similarity index 61%
rename from code/modules/projectiles/ammunition/bullets.dm
rename to code/modules/projectiles/ammunition/ammo_casings.dm
index 70203d4df9b..1ec564a7c9c 100644
--- a/code/modules/projectiles/ammunition/bullets.dm
+++ b/code/modules/projectiles/ammunition/ammo_casings.dm
@@ -1,169 +1,165 @@
-/obj/item/ammo_casing/a357
- desc = "A .357 bullet casing."
- caliber = "357"
- projectile_type = "/obj/item/projectile/bullet"
-
-/obj/item/ammo_casing/a50
- desc = "A .50AE bullet casing."
- caliber = ".50"
- projectile_type = "/obj/item/projectile/bullet"
-
-/obj/item/ammo_casing/a418
- desc = "A .418 bullet casing."
- caliber = "357"
- projectile_type = "/obj/item/projectile/bullet/suffocationbullet"
-
-
-/obj/item/ammo_casing/a75
- desc = "A .75 bullet casing."
- caliber = "75"
- projectile_type = "/obj/item/projectile/bullet/gyro"
-
-
-/obj/item/ammo_casing/a666
- desc = "A .666 bullet casing."
- caliber = "357"
- projectile_type = "/obj/item/projectile/bullet/cyanideround"
-
-
-/obj/item/ammo_casing/c38
- desc = "A .38 bullet casing."
- caliber = "38"
- projectile_type = "/obj/item/projectile/bullet/c38"
-
-
-/obj/item/ammo_casing/c9mm
- desc = "A 9mm bullet casing."
- caliber = "9mm"
- projectile_type = "/obj/item/projectile/bullet/midbullet9"
-
-
-/obj/item/ammo_casing/c45
- desc = "A .45 bullet casing."
- caliber = ".45"
- projectile_type = "/obj/item/projectile/bullet/midbullet45"
-
-/obj/item/ammo_casing/c10mm
- desc = "A 10mm bullet casing."
- caliber = "10mm"
- projectile_type = "/obj/item/projectile/bullet/midbullet10"
-
-/obj/item/ammo_casing/a12mm
- desc = "A 12mm bullet casing."
- caliber = "12mm"
- projectile_type = "/obj/item/projectile/bullet/midbullet12"
-
-
-/obj/item/ammo_casing/shotgun
- name = "shotgun shell"
- desc = "A 12 gauge shell."
- icon_state = "slshell"
- caliber = "shotgun"
- projectile_type = "/obj/item/projectile/bullet/slug"
- m_amt = 4000
-
-/obj/item/ammo_casing/shotgun/buck
- name = "buckshot shell"
- desc = "A 12 gauge buckshot shell."
- icon_state = "gshell"
- projectile_type = "/obj/item/projectile/bullet/buck"
- buck = 5
- deviation = 0.8
-
-/obj/item/ammo_casing/shotgun/birdshot
- name = "birdshot shell"
- desc = "A shotgun shell full of birdshot."
- icon_state = "blshell"
- projectile_type = "/obj/item/projectile/bullet/rubberbullet"
- buck = 4
- deviation = 1
- m_amt = 6000
-
-
-/obj/item/ammo_casing/shotgun/beanbag
- name = "beanbag shell"
- desc = "A weak beanbag shell."
- icon_state = "bshell"
- projectile_type = "/obj/item/projectile/bullet/rubberbullet"
- m_amt = 250
-
-/obj/item/ammo_casing/shotgun/fakebeanbag
- name = "beanbag shell"
- desc = "A weak beanbag shell."
- icon_state = "bshell"
- projectile_type = "/obj/item/projectile/bullet/weakbullet/booze"
-
-/obj/item/ammo_casing/shotgun/stunshell
- name = "stun shell"
- desc = "A stunning shell."
- icon_state = "stunshell"
- projectile_type = "/obj/item/projectile/bullet/stunslug"
- m_amt = 250
-
-/obj/item/ammo_casing/shotgun/incendiary
- name = "incendiary shell"
- desc = "An incendiary shell"
- icon_state = "ishell"
- projectile_type = "/obj/item/projectile/bullet/incendiary/shell"
-
-/obj/item/ammo_casing/shotgun/incendiary/dragonsbreath
- name = "dragonsbreath shell"
- desc = "A shotgun shell which fires a spread of incendiary pellets."
- icon_state = "ishell2"
- projectile_type = "/obj/item/projectile/bullet/incendiary/shell/dragonsbreath"
- buck = 4
- deviation = 0.9
-
-/obj/item/ammo_casing/shotgun/techshell
- name = "unloaded technological shell"
- desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects."
- icon_state = "tshell"
- projectile_type = null
-
-/obj/item/ammo_casing/shotgun/meteorshot
- name = "meteorshot shell"
- desc = "A shotgun shell rigged with CMC technology, which launches a massive slug when fired."
- icon_state = "mshell"
- projectile_type = "/obj/item/projectile/bullet/meteorshot"
-
-/obj/item/ammo_casing/shotgun/pulseslug
- name = "pulse slug"
- desc = "A delicate device which can be loaded into a shotgun. The primer acts as a button which triggers the gain medium and fires a powerful \
- energy blast. While the heat and power drain limit it to one use, it can still allow an operator to engage targets that ballistic ammunition \
- would have difficulty with."
- icon_state = "pshell"
- projectile_type = "/obj/item/projectile/beam/pulse/shot"
-
-/obj/item/ammo_casing/shotgun/dart
- name = "shotgun dart"
- desc = "A dart for use in shotguns. Can be injected with up to 30 units of any chemical."
- icon_state = "cshell"
- projectile_type = /obj/item/projectile/bullet/dart
- m_amt = 12500
-
-obj/item/ammo_casing/shotgun/dart/New()
- ..()
- flags |= NOREACT
- create_reagents(30)
-
-/obj/item/ammo_casing/shotgun/dart/attackby()
- return
-
-
-/obj/item/ammo_casing/a762
- desc = "A 7.62 bullet casing."
- caliber = "a762"
- projectile_type = "/obj/item/projectile/bullet/a762"
-
-/obj/item/ammo_casing/rocket
- name = "rocket shell"
- desc = "A high explosive designed to be fired from a launcher."
- icon_state = "rocketshell"
- projectile_type = "/obj/item/missile"
- caliber = "rocket"
-
-/obj/item/ammo_casing/energy/kinetic
- projectile_type = /obj/item/projectile/bullet
- //select_name = "kinetic"
- //e_cost = 500
- //fire_sound = 'sound/weapons/Gunshot4.ogg'
\ No newline at end of file
+/obj/item/ammo_casing/a357
+ desc = "A .357 bullet casing."
+ caliber = "357"
+ projectile_type = "/obj/item/projectile/bullet"
+
+/obj/item/ammo_casing/a50
+ desc = "A .50AE bullet casing."
+ caliber = ".50"
+ projectile_type = "/obj/item/projectile/bullet"
+
+/obj/item/ammo_casing/c38
+ desc = "A .38 bullet casing."
+ caliber = "38"
+ projectile_type = "/obj/item/projectile/bullet/weakbullet2/rubber"
+
+
+/obj/item/ammo_casing/c10mm
+ desc = "A 10mm bullet casing."
+ caliber = "10mm"
+ projectile_type = "/obj/item/projectile/bullet/midbullet3"
+
+
+/obj/item/ammo_casing/c9mm
+ desc = "A 9mm bullet casing."
+ caliber = "9mm"
+ projectile_type = "/obj/item/projectile/bullet/weakbullet3"
+
+
+/obj/item/ammo_casing/c45
+ desc = "A .45 bullet casing."
+ caliber = ".45"
+ projectile_type = "/obj/item/projectile/bullet/midbullet"
+
+
+/obj/item/ammo_casing/shotgun
+ name = "shotgun slug"
+ desc = "A 12 gauge lead slug."
+ icon_state = "blshell"
+ caliber = "shotgun"
+ projectile_type = "/obj/item/projectile/bullet"
+ m_amt = 4000
+
+
+/obj/item/ammo_casing/shotgun/buckshot
+ name = "buckshot shell"
+ desc = "A 12 gauge buckshot shell."
+ icon_state = "gshell"
+ projectile_type = "/obj/item/projectile/bullet/pellet"
+ buck = 5
+ deviation = 0.8
+
+
+/obj/item/ammo_casing/shotgun/beanbag
+ name = "beanbag slug"
+ desc = "A weak beanbag slug for riot control."
+ icon_state = "bshell"
+ projectile_type = "/obj/item/projectile/bullet/weakbullet/rubber"
+ m_amt = 250
+
+
+/obj/item/ammo_casing/shotgun/improvised
+ name = "improvised shell"
+ desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards."
+ icon_state = "gshell"
+ projectile_type = "/obj/item/projectile/bullet/pellet/weak"
+ m_amt = 250
+ buck = 5
+ deviation = 0.8
+
+
+/obj/item/ammo_casing/shotgun/stunslug
+ name = "taser slug"
+ desc = "A stunning taser slug."
+ icon_state = "stunshell"
+ projectile_type = "/obj/item/projectile/bullet/stunshot"
+ m_amt = 200
+
+
+/obj/item/ammo_casing/shotgun/meteorshot
+ name = "meteorshot shell"
+ desc = "A shotgun shell rigged with CMC technology, which launches a massive slug when fired."
+ icon_state = "mshell"
+ projectile_type = "/obj/item/projectile/bullet/meteorshot"
+
+/obj/item/ammo_casing/shotgun/pulseslug
+ name = "pulse slug"
+ desc = "A delicate device which can be loaded into a shotgun. The primer acts as a button which triggers the gain medium and fires a powerful \
+ energy blast. While the heat and power drain limit it to one use, it can still allow an operator to engage targets that ballistic ammunition \
+ would have difficulty with."
+ icon_state = "pshell"
+ projectile_type = "/obj/item/projectile/beam/pulse/shot"
+
+/obj/item/ammo_casing/shotgun/incendiary
+ name = "incendiary slug"
+ desc = "An incendiary-coated shotgun slug."
+ icon_state = "ishell"
+ projectile_type = "/obj/item/projectile/bullet/incendiary/shell"
+
+/obj/item/ammo_casing/shotgun/incendiary/dragonsbreath
+ name = "dragonsbreath shell"
+ desc = "A shotgun shell which fires a spread of incendiary pellets."
+ icon_state = "ishell2"
+ projectile_type = "/obj/item/projectile/bullet/incendiary/shell/dragonsbreath"
+ buck = 4
+ deviation = 0.9
+
+/obj/item/ammo_casing/shotgun/techshell
+ name = "unloaded technological shell"
+ desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects."
+ icon_state = "cshell"
+ projectile_type = null
+/*
+/obj/item/ammo_casing/shotgun/dart
+ name = "shotgun dart"
+ desc = "A dart for use in shotguns. Can be injected with up to 30 units of any chemical."
+ icon_state = "cshell"
+ projectile_type = /obj/item/projectile/bullet/dart
+
+/obj/item/ammo_casing/shotgun/dart/New()
+ ..()
+ flags |= NOREACT
+ flags |= OPENCONTAINER
+ create_reagents(30)
+
+/obj/item/ammo_casing/shotgun/dart/attackby()
+ return
+*/
+
+/obj/item/ammo_casing/shotgun/fakebeanbag
+ name = "beanbag shell"
+ desc = "A weak beanbag shell."
+ icon_state = "bshell"
+ projectile_type = "/obj/item/projectile/bullet/weakbullet/booze"
+
+/obj/item/ammo_casing/a762
+ desc = "A 7.62mm bullet casing."
+ caliber = "a762"
+ projectile_type = "/obj/item/projectile/bullet"
+
+/obj/item/ammo_casing/a545
+ desc = "A 5.45mm bullet casing."
+ caliber = "a545"
+ projectile_type = "/obj/item/projectile/bullet/heavybullet"
+
+/obj/item/ammo_casing/rocket
+ name = "rocket shell"
+ desc = "A high explosive designed to be fired from a launcher."
+ icon_state = "rocketshell"
+ projectile_type = "/obj/item/missile"
+ caliber = "rocket"
+
+/obj/item/ammo_casing/caseless
+ desc = "A caseless bullet casing."
+
+/obj/item/ammo_casing/caseless/a75
+ desc = "A .75 bullet casing."
+ caliber = "75"
+ projectile_type = "/obj/item/projectile/bullet/gyro"
+
+/obj/item/ammo_casing/a40mm
+ name = "40mm HE shell"
+ desc = "A cased high explosive grenade that can only be activated once fired out of a grenade launcher."
+ caliber = "40mm"
+ icon_state = "40mmHE"
+ projectile_type = "/obj/item/projectile/bullet/a40mm"
\ No newline at end of file
diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm
index a9624597314..72aa816d1cc 100644
--- a/code/modules/projectiles/ammunition/boxes.dm
+++ b/code/modules/projectiles/ammunition/boxes.dm
@@ -1,63 +1,48 @@
/obj/item/ammo_box/a357
- name = "ammo box (.357)"
- desc = "A box of .357 ammo"
+ name = "speed loader (.357)"
icon_state = "357"
- ammo_type = "/obj/item/ammo_casing/a357"
+ ammo_type = /obj/item/ammo_casing/a357
max_ammo = 7
multiple_sprites = 1
/obj/item/ammo_box/c38
name = "speed loader (.38)"
icon_state = "38"
- ammo_type = "/obj/item/ammo_casing/c38"
+ ammo_type = /obj/item/ammo_casing/c38
max_ammo = 6
multiple_sprites = 1
+/obj/item/ammo_box/c9mm
+ name = "ammo box (9mm)"
+ icon_state = "9mmbox"
+ origin_tech = "combat=2"
+ ammo_type = /obj/item/ammo_casing/c9mm
+ max_ammo = 30
+/obj/item/ammo_box/c10mm
+ name = "ammo box (10mm)"
+ icon_state = "10mmbox"
+ origin_tech = "combat=2"
+ ammo_type = /obj/item/ammo_casing/c10mm
+ max_ammo = 20
-/obj/item/ammo_box/a418
- name = "ammo box (.418)"
- icon_state = "418"
- ammo_type = "/obj/item/ammo_casing/a418"
- max_ammo = 7
- multiple_sprites = 1
+/obj/item/ammo_box/c45
+ name = "ammo box (.45)"
+ icon_state = "45box"
+ origin_tech = "combat=2"
+ ammo_type = /obj/item/ammo_casing/c45
+ max_ammo = 20
-
-
-/obj/item/ammo_box/a666
- name = "ammo box (.666)"
- icon_state = "666"
- ammo_type = "/obj/item/ammo_casing/a666"
+/obj/item/ammo_box/a40mm
+ name = "ammo box (40mm grenades)"
+ icon_state = "40mm"
+ ammo_type = /obj/item/ammo_casing/a40mm
max_ammo = 4
multiple_sprites = 1
-
-/obj/item/ammo_box/c9mm
- name = "Ammunition Box (9mm)"
- icon_state = "9mm"
- origin_tech = "combat=2"
- ammo_type = "/obj/item/ammo_casing/c9mm"
- max_ammo = 36
-
-/obj/item/ammo_box/c45
- name = "Ammunition Box (.45)"
- icon_state = "9mm"
- origin_tech = "combat=2"
- ammo_type = "/obj/item/ammo_casing/c45"
- max_ammo = 32
-
-
-
-/obj/item/ammo_box/a12mm
- name = "Ammunition Box (12mm)"
- icon_state = "9mm"
- origin_tech = "combat=2"
- ammo_type = "/obj/item/ammo_casing/a12mm"
- max_ammo = 40
-
/obj/item/ammo_box/shotgun
name = "Ammunition Box (slug)"
- icon_state = "9mm"
+ icon_state = "9mmbox"
origin_tech = "combat=2"
ammo_type = /obj/item/ammo_casing/shotgun
max_ammo = 8
@@ -65,11 +50,11 @@
/obj/item/ammo_box/shotgun/buck
name = "Ammunition Box (buckshot)"
- ammo_type = /obj/item/ammo_casing/shotgun/buck
+ ammo_type = /obj/item/ammo_casing/shotgun/buckshot
/obj/item/ammo_box/shotgun/stun
name = "Ammunition Box (stun shells)"
- ammo_type = /obj/item/ammo_casing/shotgun/stunshell
+ ammo_type = /obj/item/ammo_casing/shotgun/stunslug
m_amt = 20000
/obj/item/ammo_box/shotgun/beanbag
diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm
index fef0f230492..a7410abdad3 100644
--- a/code/modules/projectiles/ammunition/magazines.dm
+++ b/code/modules/projectiles/ammunition/magazines.dm
@@ -25,6 +25,7 @@
caliber = "357"
max_ammo = 6
multiload = 0
+
/obj/item/ammo_box/magazine/internal/cylinder/rus357/New()
stored_ammo += new ammo_type(src)
@@ -42,13 +43,15 @@
caliber = "shotgun"
max_ammo = 4
multiload = 0
+
/obj/item/ammo_box/magazine/internal/shotcom
name = "combat shotgun internal magazine"
desc = "Oh god, this shouldn't be here"
- ammo_type = "/obj/item/ammo_casing/shotgun/buck"
+ ammo_type = "/obj/item/ammo_casing/shotgun/buckshot"
caliber = "shotgun"
max_ammo = 8
multiload = 0
+
/obj/item/ammo_box/magazine/internal/cylinder/dualshot
name = "double-barrel shotgun internal magazine"
desc = "This doesn't even exist"
@@ -57,6 +60,14 @@
max_ammo = 2
multiload = 0
+/obj/item/ammo_box/magazine/internal/cylinder/improvised
+ name = "improvised shotgun internal magazine"
+ desc = "This doesn't even exist"
+ ammo_type = "/obj/item/ammo_casing/shotgun/improvised"
+ caliber = "shotgun"
+ max_ammo = 1
+ multiload = 0
+
/obj/item/ammo_box/magazine/internal/shotriot
name = "riot shotgun internal magazine"
desc = "Oh god, this shouldn't be here"
@@ -64,29 +75,21 @@
caliber = "shotgun"
max_ammo = 6
multiload = 0
+
+/obj/item/ammo_box/magazine/internal/cylinder/grenadelauncher
+ name = "grenade launcher internal magazine"
+ ammo_type = "/obj/item/ammo_casing/a40mm"
+ caliber = "40mm"
+ max_ammo = 1
+
+/obj/item/ammo_box/magazine/internal/cylinder/grenadelauncher/multi
+ ammo_type = "/obj/item/ammo_casing/a40mm"
+ max_ammo = 6
+
///////////EXTERNAL MAGAZINES////////////////
-/obj/item/ammo_box/magazine/m9mm
- name = "magazine (9mm)"
- icon_state = "9x19p"
- origin_tech = "combat=2"
- ammo_type = "/obj/item/ammo_casing/c9mm"
- caliber = "9mm"
- max_ammo = 8
- multiple_sprites = 2
-
-/obj/item/ammo_box/magazine/msmg9mm
- name = "SMG magazine (9mm)"
- icon_state = "smg9mm"
- ammo_type = "/obj/item/ammo_casing/c9mm"
- caliber = "9mm"
- max_ammo = 18
-
-/obj/item/ammo_box/magazine/msmg9mm/update_icon()
- ..()
- icon_state = "[initial(icon_state)]-[round(ammo_count(),3)]"
/obj/item/ammo_box/magazine/m10mm
- name = "magazine (10mm)"
+ name = "pistol magazine (10mm)"
icon_state = "9x19p"
origin_tech = "combat=2"
ammo_type = "/obj/item/ammo_casing/c10mm"
@@ -94,39 +97,49 @@
max_ammo = 8
multiple_sprites = 2
-/obj/item/ammo_box/magazine/m12mm
- name = "magazine (12mm)"
- icon_state = "12mm"
- origin_tech = "combat=2"
- ammo_type = "/obj/item/ammo_casing/a12mm"
- caliber = "12mm"
- max_ammo = 20
-
-/obj/item/ammo_box/magazine/m12mm/update_icon()
- ..()
- icon_state = "[initial(icon_state)]-[round(ammo_count(),2)]"
-
/obj/item/ammo_box/magazine/m45
- name = "magazine (.45)"
+ name = "handgun magazine (.45)"
icon_state = "45"
ammo_type = "/obj/item/ammo_casing/c45"
caliber = ".45"
max_ammo = 8
- multiple_sprites = 1
-/obj/item/ammo_box/magazine/uzim45
- name = "Uzi magazine (.45)"
- icon_state = "uzi45"
+/obj/item/ammo_box/magazine/m45/update_icon()
+ ..()
+ icon_state = "[initial(icon_state)]-[ammo_count() ? "8" : "0"]"
+
+/obj/item/ammo_box/magazine/smgm9mm
+ name = "SMG magazine (9mm)"
+ icon_state = "smg9mm"
+ ammo_type = "/obj/item/ammo_casing/c9mm"
+ caliber = "9mm"
+ max_ammo = 20
+
+/obj/item/ammo_box/magazine/smgm9mm/update_icon()
+ ..()
+ icon_state = "[initial(icon_state)]-[round(ammo_count(),5)]"
+
+/obj/item/ammo_box/magazine/smgm45
+ name = "SMG magazine (.45)"
+ icon_state = "c20r45"
+ origin_tech = "combat=2"
ammo_type = "/obj/item/ammo_casing/c45"
caliber = ".45"
- max_ammo = 16
+ max_ammo = 20
-/obj/item/ammo_box/magazine/uzim45/update_icon()
+/obj/item/ammo_box/magazine/smgm/update_icon()
..()
icon_state = "[initial(icon_state)]-[round(ammo_count(),2)]"
+/obj/item/ammo_box/magazine/tommygunm45
+ name = "drum magazine (.45)"
+ icon_state = "drum45"
+ ammo_type = "/obj/item/ammo_casing/c45"
+ caliber = ".45"
+ max_ammo = 50
+
/obj/item/ammo_box/magazine/m50
- name = "magazine (.50ae)"
+ name = "handgun magazine (.50ae)"
icon_state = "50ae"
origin_tech = "combat=2"
ammo_type = "/obj/item/ammo_casing/a50"
@@ -135,15 +148,27 @@
multiple_sprites = 1
/obj/item/ammo_box/magazine/m75
- name = "magazine (.75)"
+ name = "specialized magazine (.75)"
icon_state = "75"
- ammo_type = "/obj/item/ammo_casing/a75"
+ ammo_type = "/obj/item/ammo_casing/caseless/a75"
caliber = "75"
multiple_sprites = 2
max_ammo = 8
+/obj/item/ammo_box/magazine/m545
+ name = "box magazine (5.45mm)"
+ icon_state = "5.45m"
+ origin_tech = "combat=5;syndicate=1"
+ ammo_type = "/obj/item/ammo_casing/a545"
+ caliber = "a545"
+ max_ammo = 30
+
+/obj/item/ammo_box/magazine/m545/update_icon()
+ ..()
+ icon_state = "[initial(icon_state)]-[round(ammo_count(),10)]"
+
/obj/item/ammo_box/magazine/m762
- name = "magazine (7.62mm)"
+ name = "box magazine (7.62mm)"
icon_state = "a762"
origin_tech = "combat=2"
ammo_type = "/obj/item/ammo_casing/a762"
@@ -154,13 +179,11 @@
..()
icon_state = "[initial(icon_state)]-[round(ammo_count(),10)]"
-//TG Bulldog Automatic Shotty
-
/obj/item/ammo_box/magazine/m12g
name = "shotgun magazine (12g taser slugs)"
icon_state = "m12gs"
origin_tech = "combat=3;syndicate=1"
- ammo_type = "/obj/item/ammo_casing/shotgun/stunshell"
+ ammo_type = "/obj/item/ammo_casing/shotgun/stunslug"
caliber = "shotgun"
max_ammo = 8
@@ -172,7 +195,7 @@
/obj/item/ammo_box/magazine/m12g/buckshot
name = "shotgun magazine (12g buckshot)"
icon_state = "m12gb"
- ammo_type = "/obj/item/ammo_casing/shotgun/buck"
+ ammo_type = "/obj/item/ammo_casing/shotgun/buckshot"
/obj/item/ammo_box/magazine/m12g/dragon
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 8a86652764f..37fc7bede4b 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -20,6 +20,7 @@
var/silenced = 0
var/ghettomodded = 0
var/recoil = 0
+ var/can_suppress = 0
var/clumsy_check = 1
var/sawn_desc = null
var/obj/item/ammo_casing/chambered = null // The round (not bullet) that is in the chamber. THIS MISPLACED ITEM BROUGHT TO YOU BY HACKY BUCKSHOT.
diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm
index 0fb8c826058..51a607890a0 100644
--- a/code/modules/projectiles/guns/energy/laser.dm
+++ b/code/modules/projectiles/guns/energy/laser.dm
@@ -75,6 +75,11 @@ obj/item/weapon/gun/energy/laser/retro
name = "laser cannon"
desc = "With the L.A.S.E.R. cannon, the lasing medium is enclosed in a tube lined with uranium-235 and subjected to high neutron flux in a nuclear reactor core. This incredible technology may help YOU achieve high excitation rates with small laser volumes!"
icon_state = "lasercannon"
+ item_state = "laser"
+ w_class = 4.0
+ force = 10
+ flags = FPRINT | TABLEPASS | CONDUCT
+ slot_flags = SLOT_BACK
fire_sound = 'sound/weapons/lasercannonfire.ogg'
origin_tech = "combat=4;materials=3;powerstorage=3"
projectile_type = "/obj/item/projectile/beam/heavylaser"
diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm
index e11a604b45e..46affe1165c 100644
--- a/code/modules/projectiles/guns/energy/pulse.dm
+++ b/code/modules/projectiles/guns/energy/pulse.dm
@@ -2,7 +2,7 @@
name = "pulse rifle"
desc = "A heavy-duty, pulse-based energy weapon, preferred by front-line combat personnel."
icon_state = "pulse"
- item_state = null //so the human update icon uses the icon_state instead.
+ item_state = "pulse" //so the human update icon uses the icon_state instead.
force = 10
fire_sound = 'sound/weapons/pulse.ogg'
charge_cost = 200
diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm
index 41e3764fdfe..0561255c471 100644
--- a/code/modules/projectiles/guns/energy/stun.dm
+++ b/code/modules/projectiles/guns/energy/stun.dm
@@ -44,7 +44,7 @@
/obj/item/weapon/gun/energy/stunrevolver
name = "stun revolver"
- desc = "A high-tech revolver that fires stun cartridges. The stun cartridges can be recharged using a conventional energy weapon recharger."
+ desc = "A high-tech revolver that fires internal, reusable stun cartidges in a revolving cylinder."
icon_state = "stunrevolver"
fire_sound = "sound/weapons/gunshot.ogg"
origin_tech = "combat=3;materials=3;powerstorage=2"
diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm
index 3ab2dc49e28..c45bb04a6b0 100644
--- a/code/modules/projectiles/guns/projectile.dm
+++ b/code/modules/projectiles/guns/projectile.dm
@@ -53,6 +53,7 @@
/obj/item/weapon/gun/projectile/attackby(var/obj/item/A as obj, mob/user as mob)
+ ..()
if (istype(A, /obj/item/ammo_box/magazine))
var/obj/item/ammo_box/magazine/AM = A
if (!magazine && istype(AM, text2path(mag_type)))
@@ -66,10 +67,49 @@
return 1
else if (magazine)
user << "There's already a magazine in \the [src]."
+ if(istype(A, /obj/item/weapon/suppressor))
+ var/obj/item/weapon/suppressor/S = A
+ if(can_suppress)
+ if(!silenced)
+ if(user.l_hand != src && user.r_hand != src)
+ user << "You'll need [src] in your hands to do that."
+ return
+ user.drop_item()
+ user << "You screw [S] onto [src]."
+ silenced = A
+ S.oldsound = fire_sound
+ S.initial_w_class = w_class
+ fire_sound = 'sound/weapons/Gunshot_silenced.ogg'
+ w_class = 3 //so pistols do not fit in pockets when suppressed
+ A.loc = src
+ update_icon()
+ return
+ else
+ user << "[src] already has a suppressor."
+ return
+ else
+ user << "You can't seem to figure out how to fit [S] on [src]."
+ return
return 0
+/obj/item/weapon/gun/projectile/attack_hand(mob/user as mob)
+ if(loc == user)
+ if(silenced)
+ var/obj/item/weapon/suppressor/S = silenced
+ if(user.l_hand != src && user.r_hand != src)
+ ..()
+ return
+ user << "You unscrew [silenced] from [src]."
+ user.put_in_hands(silenced)
+ fire_sound = S.oldsound
+ w_class = S.initial_w_class
+ silenced = 0
+ update_icon()
+ return
+ ..()
+
/obj/item/weapon/gun/projectile/attack_self(mob/living/user as mob)
- if (magazine)
+ if(magazine)
magazine.loc = get_turf(src.loc)
user.put_in_hands(magazine)
magazine.update_icon()
@@ -92,3 +132,12 @@
if (magazine)
boolets += magazine.ammo_count()
return boolets
+
+/obj/item/weapon/suppressor
+ name = "suppressor"
+ desc = "A universal syndicate small-arms suppressor for maximum espionage."
+ icon = 'icons/obj/gun.dmi'
+ icon_state = "suppressor"
+ w_class = 2
+ var/oldsound = null
+ var/initial_w_class = null
\ No newline at end of file
diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm
index 3c622752418..9371a09469a 100644
--- a/code/modules/projectiles/guns/projectile/automatic.dm
+++ b/code/modules/projectiles/guns/projectile/automatic.dm
@@ -1,75 +1,71 @@
/obj/item/weapon/gun/projectile/automatic //Hopefully someone will find a way to make these fire in bursts or something. --Superxpdude
- name = "submachine gun"
- desc = "A lightweight, fast firing gun. Uses 9mm rounds."
- icon_state = "saber" //ugly
+ name = "prototype SMG"
+ desc = "A lightweight, prototype 9mm submachine gun, designated 'SABR'. Has a threaded barrel for suppressors."
+ icon_state = "saber"
w_class = 3.0
origin_tech = "combat=4;materials=2"
automatic = 1
- mag_type = "/obj/item/ammo_box/magazine/msmg9mm"
+ mag_type = "/obj/item/ammo_box/magazine/smgm9mm"
var/alarmed = 0
+ can_suppress = 1
fire_delay = 0
isHandgun()
return 0
/obj/item/weapon/gun/projectile/automatic/update_icon()
..()
- icon_state = "[initial(icon_state)][magazine ? "-[magazine.max_ammo]" : ""][chambered ? "" : "-e"]"
+ icon_state = "[initial(icon_state)][magazine ? "-[magazine.max_ammo]" : ""][chambered ? "" : "-e"][silenced ? "-suppressed" : ""]"
return
/obj/item/weapon/gun/projectile/automatic/attackby(var/obj/item/A as obj, mob/user as mob)
if(..() && chambered)
alarmed = 0
-
-
-/obj/item/weapon/gun/projectile/automatic/mini_uzi
- name = "Uzi"
- desc = "A lightweight, fast firing gun, for when you want someone dead. Uses .45 rounds."
- icon_state = "mini-uzi"
- w_class = 3.0
-
- origin_tech = "combat=5;materials=2;syndicate=8"
- mag_type = "/obj/item/ammo_box/magazine/uzim45"
-
- isHandgun()
- return 1
-
+/obj/item/weapon/gun/projectile/automatic/proc/empty_alarm()
+ if(!chambered && !get_ammo() && !alarmed)
+ playsound(src.loc, 'sound/weapons/smg_empty_alarm.ogg', 40, 1)
+ update_icon()
+ alarmed = 1
+ return
/obj/item/weapon/gun/projectile/automatic/c20r
- name = "\improper C-20r SMG"
- desc = "A lightweight, compact bullpup SMG. Uses .45 rounds in medium-capacity magazines and has a 'Scarborough Arms - Per falcis, per pravitas' buttstamp."
+ name = "syndicate SMG"
+ desc = "A lightweight, bullpup .45 SMG, designated 'C-20r'. Has a 'Scarborough Arms - Per falcis, per pravitas' buttstamp."
icon_state = "c20r"
item_state = "c20r"
- w_class = 3.0
origin_tech = "combat=5;materials=2;syndicate=8"
- mag_type = "/obj/item/ammo_box/magazine/m12mm"
+ mag_type = "/obj/item/ammo_box/magazine/smgm45"
fire_sound = 'sound/weapons/Gunshot_smg.ogg'
+/obj/item/weapon/gun/projectile/automatic/c20r/New()
+ ..()
+ update_icon()
+ return
+
/obj/item/weapon/gun/projectile/automatic/c20r/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag)
..()
- if(!chambered && !get_ammo() && !alarmed)
- playsound(user, 'sound/weapons/smg_empty_alarm.ogg', 40, 1)
- alarmed = 1
+ empty_alarm()
return
/obj/item/weapon/gun/projectile/automatic/c20r/update_icon()
..()
- icon_state = "c20r[magazine ? "-[round(get_ammo(0),4)]" : ""][chambered ? "" : "-e"]"
+ icon_state = "c20r[magazine ? "-[Ceiling(get_ammo(0)/4)*4]" : ""][chambered ? "" : "-e"][silenced ? "-suppressed" : ""]"
return
/obj/item/weapon/gun/projectile/automatic/l6_saw
- name = "\improper L6 SAW"
- desc = "A heavily modified light machine gun with a tactical plasteel frame resting on a rather traditionally-made belt-fed ballistic weapon. Has 'Aussec Armoury - 2531' engraved on the reciever."
+ name = "syndicate LMG"
+ desc = "A heavily modified 7.62 light machine gun, designated 'L6 SAW'. Has 'Aussec Armoury - 2531' engraved on the reciever below the designation."
icon_state = "l6closed100"
item_state = "l6closedmag"
- w_class = 4
+ w_class = 5
slot_flags = 0
origin_tech = "combat=5;materials=1;syndicate=2"
mag_type = "/obj/item/ammo_box/magazine/m762"
fire_sound = 'sound/weapons/Gunshot3.ogg'
var/cover_open = 0
+ can_suppress = 0
@@ -115,8 +111,8 @@
/obj/item/weapon/gun/projectile/automatic/bulldog
- name = "\improper Bulldog shotgun"
- desc = "A compact, mag-fed semi-automatic shotgun for combat in narrow corridors. Compatible only with specialized magazines."
+ name = "syndicate shotgun"
+ desc = "A compact, mag-fed semi-automatic shotgun for combat in narrow corridors, nicknamed 'Bulldog' by boarding parties. Compatible only with specialized 8-round drum magazines."
icon_state = "bulldog"
item_state = "bulldog"
icon_override = 'icons/mob/in-hand/guns.dmi'
@@ -124,6 +120,7 @@
origin_tech = "combat=5;materials=4;syndicate=6"
mag_type = "/obj/item/ammo_box/magazine/m12g"
fire_sound = 'sound/weapons/Gunshot4.ogg'
+ can_suppress = 0
/obj/item/weapon/gun/projectile/automatic/bulldog/New()
..()
@@ -144,16 +141,87 @@
/obj/item/weapon/gun/projectile/automatic/bulldog/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag)
..()
- if(!chambered && !get_ammo() && !alarmed)
- playsound(user, 'sound/weapons/smg_empty_alarm.ogg', 40, 1)
- update_icon()
- alarmed = 1
+ empty_alarm()
return
-/* The thing I found with guns in ss13 is that they don't seem to simulate the rounds in the magazine in the gun.
- Afaik, since projectile.dm features a revolver, this would make sense since the magazine is part of the gun.
- However, it looks like subsequent guns that use removable magazines don't take that into account and just get
- around simulating a removable magazine by adding the casings into the loaded list and spawning an empty magazine
- when the gun is out of rounds. Which means you can't eject magazines with rounds in them. The below is a very
- rough and poor attempt at making that happen. -Ausops */
\ No newline at end of file
+/obj/item/weapon/gun/projectile/automatic/c90gl
+ name = "syndicate assault rifle"
+ desc = "A bullpup and compact 5.45x39 assault rifle with a unique toploading design, designated 'C-90gl'. Has an attached underbarrel grenade launcher which can be toggled on and off."
+ icon_state = "c90gl"
+ item_state = "c90gl"
+ icon_override = 'icons/mob/in-hand/guns.dmi'
+ origin_tech = "combat=5;materials=2;syndicate=8"
+ mag_type = "/obj/item/ammo_box/magazine/m545"
+ fire_sound = 'sound/weapons/Gunshot_smg.ogg'
+ action_button_name = "Toggle Grenade Launcher"
+ icon_action_button = "Action_c90gl"
+ can_suppress = 0
+ var/select = 1 //1 for boolets, 0 for explosions.
+ var/obj/item/weapon/gun/projectile/revolver/grenadelauncher/underbarrel
+
+/obj/item/weapon/gun/projectile/automatic/c90gl/New()
+ ..()
+ underbarrel = new /obj/item/weapon/gun/projectile/revolver/grenadelauncher(src)
+ update_icon()
+ return
+
+/obj/item/weapon/gun/projectile/automatic/c90gl/afterattack(var/atom/target, var/mob/living/user, flag, params)
+ if(select)
+ ..()
+ empty_alarm()
+ return
+ else
+ underbarrel.afterattack(target, user, flag, params)
+
+/obj/item/weapon/gun/projectile/automatic/c90gl/attackby(var/obj/item/A, mob/user)
+ if(select)
+ ..()
+ else
+ underbarrel.attackby(A, user)
+
+/obj/item/weapon/gun/projectile/automatic/c90gl/attack_self(var/mob/living/user)
+ if(select)
+ ..()
+ else
+ underbarrel.attack_self(user)
+
+
+
+/obj/item/weapon/gun/projectile/automatic/c90gl/update_icon()
+ ..()
+ overlays.Cut()
+ if(select)
+ overlays += "c90prim"
+ else
+ overlays += "c90gren"
+ icon_state = "c90gl[magazine ? "-[Ceiling(get_ammo(0)/6)*6]" : ""][chambered ? "" : "-e"]"
+ return
+
+/obj/item/weapon/gun/projectile/automatic/c90gl/proc/underbarrel_swap()
+ var/mob/living/carbon/human/user = usr
+ if(select)
+ select = 0
+ user << "You switch to grenades."
+ else
+ select = 1
+ user << "You switch to bullets."
+
+ update_icon()
+ return
+
+/obj/item/weapon/gun/projectile/automatic/c90gl/ui_action_click()
+ underbarrel_swap()
+
+
+
+/obj/item/weapon/gun/projectile/automatic/tommygun
+ name = "tommy gun"
+ desc = "A genuine 'Chicago Typewriter'."
+ icon_state = "tommygun"
+ item_state = "tommygun"
+ slot_flags = 0
+ origin_tech = "combat=5;materials=1;syndicate=2"
+ mag_type = "/obj/item/ammo_box/magazine/tommygunm45"
+ fire_sound = 'sound/weapons/Gunshot_smg.ogg'
+ can_suppress = 0
\ No newline at end of file
diff --git a/code/modules/projectiles/guns/projectile/launcher.dm b/code/modules/projectiles/guns/projectile/grenade launcher.dm
similarity index 100%
rename from code/modules/projectiles/guns/projectile/launcher.dm
rename to code/modules/projectiles/guns/projectile/grenade launcher.dm
diff --git a/code/modules/projectiles/guns/projectile/launchers.dm b/code/modules/projectiles/guns/projectile/launchers.dm
new file mode 100644
index 00000000000..9c5dc867dc4
--- /dev/null
+++ b/code/modules/projectiles/guns/projectile/launchers.dm
@@ -0,0 +1,50 @@
+//KEEP IN MIND: These are different from gun/grenadelauncher. These are designed to shoot premade rocket and grenade projectiles, not flashbangs or chemistry casings etc.
+//Put handheld rocket launchers here if someone ever decides to make something so hilarious ~Paprika
+
+
+/obj/item/weapon/gun/projectile/automatic/gyropistol
+ name = "gyrojet pistol"
+ desc = "A prototype pistol designed to fire self propelled rockets."
+ icon_state = "gyropistol"
+ fire_sound = 'sound/effects/Explosion1.ogg'
+ origin_tech = "combat=3"
+ mag_type = "/obj/item/ammo_box/magazine/m75"
+
+/obj/item/weapon/gun/projectile/automatic/gyropistol/New()
+ ..()
+ update_icon()
+ return
+
+/obj/item/weapon/gun/projectile/automatic/gyropistol/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag)
+ ..()
+ if(!chambered && !get_ammo() && !alarmed)
+ playsound(user, 'sound/weapons/smg_empty_alarm.ogg', 40, 1)
+ update_icon()
+ alarmed = 1
+ return
+
+/obj/item/weapon/gun/projectile/automatic/gyropistol/update_icon()
+ ..()
+ icon_state = "[initial(icon_state)][magazine ? "loaded" : ""]"
+ return
+
+/obj/item/weapon/gun/projectile/revolver/grenadelauncher//this is only used for underbarrel grenade launchers at the moment, but admins can still spawn it if they feel like being assholes
+ desc = "A break-operated grenade launcher."
+ name = "grenade launcher"
+ icon_state = "dshotgun-sawn"
+ item_state = "gun"
+ mag_type = "/obj/item/ammo_box/magazine/internal/cylinder/grenadelauncher"
+ w_class = 3
+
+/obj/item/weapon/gun/projectile/revolver/grenadelauncher/attackby(var/obj/item/A, mob/user)
+ ..()
+ if(istype(A, /obj/item/ammo_box) || istype(A, /obj/item/ammo_casing))
+ chamber_round()
+
+/obj/item/weapon/gun/projectile/revolver/grenadelauncher/multi
+ desc = "A revolving 6-shot grenade launcher."
+ name = "multi grenade launcher"
+ icon_state = "bulldog"
+ item_state = "bulldog"
+ icon_override = 'icons/mob/in-hand/guns.dmi'
+ mag_type = "/obj/item/ammo_box/magazine/internal/cylinder/grenadelauncher/multi"
\ No newline at end of file
diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm
index 355dc0b909c..26555a3b040 100644
--- a/code/modules/projectiles/guns/projectile/pistol.dm
+++ b/code/modules/projectiles/guns/projectile/pistol.dm
@@ -1,3 +1,17 @@
+/obj/item/weapon/gun/projectile/automatic/pistol
+ name = "syndicate pistol"
+ desc = "A small, easily concealable 10mm handgun. Has a threaded barrel for suppressors."
+ icon_state = "pistol"
+ w_class = 2
+ origin_tech = "combat=2;materials=2;syndicate=2"
+ mag_type = "/obj/item/ammo_box/magazine/m10mm"
+ can_suppress = 1
+
+/obj/item/weapon/gun/projectile/automatic/pistol/update_icon()
+ ..()
+ icon_state = "[initial(icon_state)][chambered ? "" : "-e"][silenced ? "-suppressed" : ""]"
+ return
+
/obj/item/weapon/gun/projectile/automatic/m2411
name = "M2411"
desc = "John Browning's classic updated for the modern day. Uses .45 rounds."
@@ -12,29 +26,19 @@
icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
return
-
-
/obj/item/weapon/gun/projectile/automatic/deagle
name = "desert eagle"
- desc = "A robust handgun that uses .50 AE ammo"
+ desc = "A robust .50 AE handgun."
icon_state = "deagle"
force = 14.0
mag_type = "/obj/item/ammo_box/magazine/m50"
-/obj/item/weapon/gun/projectile/automatic/deagle/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag)
- ..()
- if(!chambered && !get_ammo() && !alarmed)
- playsound(user, 'sound/weapons/smg_empty_alarm.ogg', 40, 1)
- update_icon()
- alarmed = 1
- return
-
/obj/item/weapon/gun/projectile/automatic/deagle/update_icon()
..()
icon_state = "[initial(icon_state)][magazine ? "" : "-e"]"
/obj/item/weapon/gun/projectile/automatic/deagle/gold
- desc = "A gold plated gun folded over a million times by superior martian gunsmiths. Uses .50 AE ammo."
+ desc = "A gold plated desert eagle folded over a million times by superior martian gunsmiths. Uses .50 AE ammo."
icon_state = "deagleg"
item_state = "deagleg"
@@ -43,89 +47,4 @@
/obj/item/weapon/gun/projectile/automatic/deagle/camo
desc = "A Deagle brand Deagle for operators operating operationally. Uses .50 AE ammo."
icon_state = "deaglecamo"
- item_state = "deagleg"
-
-
-
-/obj/item/weapon/gun/projectile/automatic/gyropistol
- name = "gyrojet pistol"
- desc = "A bulky pistol designed to fire self propelled rounds"
- icon_state = "gyropistol"
- fire_sound = 'sound/effects/Explosion1.ogg'
- origin_tech = "combat=3"
- mag_type = "/obj/item/ammo_box/magazine/m75"
-
-/obj/item/weapon/gun/projectile/automatic/gyropistol/New()
- ..()
- update_icon()
- return
-
-/obj/item/weapon/gun/projectile/automatic/gyropistol/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag)
- ..()
- if(!chambered && !get_ammo() && !alarmed)
- playsound(user, 'sound/weapons/smg_empty_alarm.ogg', 40, 1)
- update_icon()
- alarmed = 1
- return
-
-/obj/item/weapon/gun/projectile/automatic/gyropistol/update_icon()
- ..()
- icon_state = "[initial(icon_state)][magazine ? "loaded" : ""]"
- return
-
-/obj/item/weapon/gun/projectile/automatic/pistol
- name = "\improper Stechtkin pistol"
- desc = "A small, easily concealable gun. Uses 10mm rounds and has a threaded barrel for suppressors."
- icon_state = "pistol"
- w_class = 2
- silenced = 0
- origin_tech = "combat=2;materials=2;syndicate=2"
- mag_type = "/obj/item/ammo_box/magazine/m10mm"
- fire_sound = 'sound/weapons/Gunshot2.ogg'
-
-/obj/item/weapon/gun/projectile/automatic/pistol/attack_hand(mob/user as mob)
- if(loc == user)
- if(silenced)
- if(user.l_hand != src && user.r_hand != src)
- ..()
- return
- user << "You unscrew [silenced] from [src]."
- user.put_in_hands(silenced)
- var/obj/item/weapon/silencer/S = silenced
- fire_sound = S.oldsound
- silenced = 0
- w_class = 2
- update_icon()
- return
- ..()
-
-
-/obj/item/weapon/gun/projectile/automatic/pistol/attackby(obj/item/I as obj, mob/user as mob)
- if(istype(I, /obj/item/weapon/silencer))
- if(user.l_hand != src && user.r_hand != src) //if we're not in his hands
- user << "You'll need [src] in your hands to do that."
- return
- user.drop_item()
- user << "You screw [I] onto [src]."
- silenced = I //dodgy?
- var/obj/item/weapon/silencer/S = I
- S.oldsound = fire_sound
- fire_sound = 'sound/weapons/Gunshot_silenced.ogg'
- w_class = 3
- I.loc = src //put the silencer into the gun
- update_icon()
- return
- ..()
-
-/obj/item/weapon/gun/projectile/automatic/pistol/update_icon()
- ..()
- icon_state = "[initial(icon_state)][silenced ? "-silencer" : ""][chambered ? "" : "-e"]"
- return
-
-/obj/item/weapon/silencer
- name = "supressor"
- desc = "A universal syndicate small-arms suppressor."
- icon = 'icons/obj/gun.dmi'
- icon_state = "silencer"
- w_class = 2
- var/oldsound = 0 //Stores the true sound the gun made before it was silenced
\ No newline at end of file
+ item_state = "deagleg"
\ No newline at end of file
diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm
index df2202e4a47..d0dcee8fb2b 100644
--- a/code/modules/projectiles/guns/projectile/revolver.dm
+++ b/code/modules/projectiles/guns/projectile/revolver.dm
@@ -1,5 +1,5 @@
/obj/item/weapon/gun/projectile/revolver
- desc = "A classic revolver. Uses 357 ammo"
+ desc = "A suspicious revolver. Uses .357 ammo."
name = "revolver"
icon_state = "revolver"
mag_type = "/obj/item/ammo_box/magazine/internal/cylinder"
@@ -76,7 +76,7 @@
usr << "[get_ammo(0,0)] of those are live rounds."
/obj/item/weapon/gun/projectile/revolver/detective
- desc = "A cheap Martian knock-off of a Smith & Wesson Model 10. Uses .38-Special rounds."
+ desc = "A cheap Martian knock-off of a classic law enforcement firearm. Uses .38-special rounds."
name = "revolver"
icon_state = "detective"
origin_tech = "combat=2;materials=2"
@@ -165,8 +165,8 @@
/obj/item/weapon/gun/projectile/revolver/mateba
- name = "mateba"
- desc = "When you absolutely, positively need a 10mm hole in the other guy. Uses .357 ammo." //>10mm hole >.357
+ name = "autorevolver"
+ desc = "A retro high-powered mateba autorevolver typically used by officers of the New Russia military. Uses .357 ammo." //>10mm hole >.357
icon_state = "mateba"
origin_tech = "combat=2;materials=2"
@@ -175,7 +175,7 @@
/obj/item/weapon/gun/projectile/revolver/russian
name = "Russian Revolver"
- desc = "A Russian made revolver. Uses .357 ammo."
+ desc = "A Russian-made revolver for drinking games. Uses .357 ammo, and has a mechanism that spins the chamber before each trigger pull."
origin_tech = "combat=2;materials=2"
mag_type = "/obj/item/ammo_box/magazine/internal/cylinder/rus357"
var/spun = 0
diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm
index cb2f14bb7c9..90436a500d0 100644
--- a/code/modules/projectiles/guns/projectile/shotgun.dm
+++ b/code/modules/projectiles/guns/projectile/shotgun.dm
@@ -1,6 +1,6 @@
/obj/item/weapon/gun/projectile/shotgun
name = "shotgun"
- desc = "Useful for sweeping alleys."
+ desc = "A traditional shotgun with wood furniture and a four-shell capacity underneath."
icon_state = "shotgun"
item_state = "shotgun"
w_class = 4.0
@@ -83,6 +83,7 @@
/obj/item/weapon/gun/projectile/shotgun/combat
name = "combat shotgun"
+ desc = "A traditional shotgun with tactical furniture and an eight-shell capacity underneath."
icon_state = "cshotgun"
origin_tech = "combat=5;materials=2"
mag_type = "/obj/item/ammo_box/magazine/internal/shotcom"
@@ -152,3 +153,30 @@
user << "You break open \the [src] and unload [num_unloaded] shell\s."
else
user << "[src] is empty."
+
+// IMPROVISED SHOTGUN //
+
+/obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised
+ name = "improvised shotgun"
+ desc = "Essentially a tube that aims shotgun shells."
+ icon_state = "ishotgun"
+ item_state = "shotgun"
+ w_class = 4.0
+ force = 10
+ origin_tech = "combat=2;materials=2"
+ mag_type = "/obj/item/ammo_box/magazine/internal/cylinder/improvised"
+ sawn_desc = "I'm just here for the gasoline."
+
+/obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised/attackby(var/obj/item/A as obj, mob/user as mob)
+ ..()
+ if(istype(A, /obj/item/stack/cable_coil))
+ var/obj/item/stack/cable_coil/C = A
+ if(C.use(10))
+ flags = CONDUCT
+ slot_flags = SLOT_BACK
+ icon_state = "ishotgunsling"
+ user << "You tie the lengths of cable to the shotgun, making a sling."
+ update_icon()
+ else
+ user << "You need at least ten lengths of cable if you want to make a sling."
+ return
\ No newline at end of file
diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm
index 86a66a0c43a..0f0491d63ac 100644
--- a/code/modules/projectiles/projectile/bullets.dm
+++ b/code/modules/projectiles/projectile/bullets.dm
@@ -8,36 +8,63 @@
embed = 1
sharp = 1
-/* on_hit(var/atom/target, var/blocked = 0)
- if (..(target, blocked))
- var/mob/living/L = target
- shake_camera(L, 3, 2)
- return 1
- return 0 */
-
/obj/item/projectile/bullet/weakbullet
damage = 5
stun = 5
weaken = 5
-/obj/item/projectile/bullet/slug
- name = "slug"
-
-
-/obj/item/projectile/bullet/rubberbullet // Back to insta-stun bullets.
- damage = 5
- stun = 5
- weaken = 5
+/obj/item/projectile/bullet/weakbullet/rubber //beanbag shotgun shells
embed = 0
sharp = 0
-/obj/item/projectile/bullet/c38 //replacement for detective's ammo
+/obj/item/projectile/bullet/weakbullet2
damage = 15
stun = 5
weaken = 5
+
+/obj/item/projectile/bullet/weakbullet2/rubber //detective's c38 bullets
embed = 0
sharp = 0
+/obj/item/projectile/bullet/weakbullet3
+ damage = 20
+
+/obj/item/projectile/bullet/pellet
+ name = "pellet"
+ damage = 15
+
+/obj/item/projectile/bullet/blank
+ name = "blankshot"
+ nodamage = 1
+
+/obj/item/projectile/bullet/pellet/weak
+ damage = 3
+
+/obj/item/projectile/bullet/midbullet
+ damage = 20
+ stun = 5
+ weaken = 5
+
+/obj/item/projectile/bullet/midbullet2
+ damage = 25
+
+/obj/item/projectile/bullet/midbullet3
+ damage = 30
+
+/obj/item/projectile/bullet/heavybullet
+ damage = 35
+
+
+/obj/item/projectile/bullet/stunshot
+ name = "stunshot"
+ damage = 5
+ stun = 5
+ weaken = 5
+ stutter = 5
+ embed = 0
+ sharp = 0
+
+
/obj/item/projectile/bullet/weakbullet/booze
embed = 0
on_hit(var/atom/target, var/blocked = 0)
@@ -57,71 +84,6 @@
M.drowsyness += 10
A.volume += 5 //Because we can
-
-/obj/item/projectile/bullet/midbullet12
- damage = 20
- stun = 5
- weaken = 5
-
-/obj/item/projectile/bullet/midbullet9
- damage = 25
-
-/obj/item/projectile/bullet/midbullet45
- damage = 25
- stun = 1
- weaken = 1
-
-/obj/item/projectile/bullet/midbullet10 //Only used with the Stechkin Pistol - RobRichards
- damage = 30
-
-/obj/item/projectile/bullet/buck
- name = "pellet"
- damage = 15
-
-/obj/item/projectile/bullet/blank
- name = "blankshot"
- nodamage = 1
-
-/obj/item/projectile/bullet/suffocationbullet//How does this even work?
- name = "co bullet"
- damage = 20
- damage_type = OXY
-
-
-/obj/item/projectile/bullet/cyanideround
- name = "poison bullet"
- damage = 40
- damage_type = TOX
-
-
-/obj/item/projectile/bullet/burstbullet//I think this one needs something for the on hit
- name = "exploding bullet"
- damage = 20
- embed = 0
- edge = 1
-
-/obj/item/projectile/bullet/stunshot
- name = "stunshot"
- damage = 5
- stun = 5
- weaken = 5
- stutter = 5
- embed = 0
- sharp = 0
-
-/obj/item/projectile/bullet/stunslug
- name = "stunslug"
- damage = 5
- stun = 5
- weaken = 5
- stutter = 5
- embed = 0
- sharp = 0
-
-/obj/item/projectile/bullet/a762
- damage = 35
-
-
/obj/item/projectile/bullet/incendiary
/obj/item/projectile/bullet/incendiary/on_hit(var/atom/target, var/blocked = 0)
diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm
index 01fe8ca9485..8ceea50cbba 100644
--- a/code/modules/projectiles/projectile/special.dm
+++ b/code/modules/projectiles/projectile/special.dm
@@ -24,6 +24,17 @@
explosion(target, -1, 0, 2)
return 1
+/obj/item/projectile/bullet/a40mm
+ name ="40mm grenade"
+ desc = "USE A WEEL GUN"
+ icon_state= "bolter"
+ damage = 60
+ flag = "bullet"
+
+/obj/item/projectile/bullet/a40mm/on_hit(atom/target, blocked = 0)
+ explosion(target, -1, 0, 2, 1, 0)
+ return 1
+
/obj/item/projectile/temp
name = "freeze beam"
icon_state = "ice_2"
diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm
index 1cc959346f8..aeb58ad68db 100644
--- a/code/modules/research/designs.dm
+++ b/code/modules/research/designs.dm
@@ -1587,7 +1587,7 @@ datum/design/cyborg_analyzer
build_type = PROTOLATHE
materials = list("$metal" = 30, "$glass" = 20)
reliability_base = 74
- build_path = "/obj/item/device/robotanalyzer"
+ build_path = "/obj/item/device/robotanalyzer"
datum/design/mmi
name = "Man-Machine Interface"
@@ -1710,7 +1710,7 @@ datum/design/nuclear_gun
datum/design/stunrevolver
name = "Stun Revolver"
- desc = "The prize of the Head of Security."
+ desc = "A high-tech revolver that fires internal, reusable stun cartidges in a revolving cylinder. The stun cartridges can be recharged using a conventional energy weapon recharger."
id = "stunrevolver"
req_tech = list("combat" = 3, "materials" = 3, "powerstorage" = 2)
build_type = PROTOLATHE
@@ -1797,8 +1797,8 @@ datum/design/large_grenade
build_path = "/obj/item/weapon/grenade/chem_grenade/large"
datum/design/smg
- name = "Submachine Gun"
- desc = "A lightweight, fast firing gun."
+ name = "Prototype Submachine Gun"
+ desc = "A prototype weapon made using lightweight materials on a traditional frame, designed to fire standard 9mm rounds."
id = "smg"
req_tech = list("combat" = 4, "materials" = 3)
build_type = PROTOLATHE
@@ -1806,6 +1806,16 @@ datum/design/smg
build_path = "/obj/item/weapon/gun/projectile/automatic"
locked = 1
+datum/design/mag_smg
+ name = "Submachine Gun Magazine (9mm)"
+ desc = "A 20-round magazine for the prototype submachine gun."
+ id = "mag_smg"
+ req_tech = list("combat" = 4, "materials" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 2000)
+ build_path = /obj/item/ammo_box/magazine/smgm9mm
+
+
datum/design/ionrifle
name = "Ion Rifle"
desc = "How to dismantle a cyborg : The gun."
@@ -1816,24 +1826,6 @@ datum/design/ionrifle
build_path = /obj/item/weapon/gun/energy/ionrifle
locked = 1
-datum/design/ammo_9mm
- name = "Ammunition Box (9mm)"
- desc = "A box of prototype 9mm ammunition."
- id = "ammo_9mm"
- req_tech = list("combat" = 4, "materials" = 3)
- build_type = PROTOLATHE
- materials = list("$metal" = 2000)
- build_path = "/obj/item/ammo_box/c9mm"
-
-datum/design/mag_smg
- name = "Submachine Gun Magazine (9mm)"
- desc = "A prototype magazine for the submachine gun."
- id = "mag_smg"
- req_tech = list("combat" = 4, "materials" = 3)
- build_type = PROTOLATHE
- materials = list("$metal" = 2000)
- build_path = "/obj/item/ammo_box/magazine/msmg9mm"
-
datum/design/stunshell
name = "Stun Shell"
desc = "A stunning shell for a shotgun."
@@ -1841,7 +1833,7 @@ datum/design/stunshell
req_tech = list("combat" = 3, "materials" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 200)
- build_path = "/obj/item/ammo_casing/shotgun/stunshell"
+ build_path = "/obj/item/ammo_casing/shotgun/stunslug"
datum/design/techshell
name = "Unloaded Technological Shotshell"
@@ -1852,6 +1844,15 @@ datum/design/techshell
materials = list("$metal" = 1000, "$glass" = 200, "$silver" = 300)
build_path = "/obj/item/ammo_casing/shotgun/techshell"
+datum/design/suppressor
+ name = "Universal Suppressor"
+ desc = "A reverse-engineered universal suppressor that fits on most small arms with threaded barrels."
+ id = "suppressor"
+ req_tech = list("combat" = 6, "engineering" = 5, "syndicate" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 2000, "$silver" = 500)
+ build_path = /obj/item/weapon/suppressor
+
datum/design/xray
name = "Xray Laser Gun"
desc = "Not quite as menacing as it sounds"
diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi
index c03f9e0b2cf..86a54f833eb 100644
Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ
diff --git a/icons/mob/in-hand/guns.dmi b/icons/mob/in-hand/guns.dmi
index 8b4f0fa69cd..9f0b1ae7ae8 100644
Binary files a/icons/mob/in-hand/guns.dmi and b/icons/mob/in-hand/guns.dmi differ
diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi
index 9a0139587c6..b0e573ab6f9 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 f206f2c013c..4b79d29367c 100644
Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ
diff --git a/maps/cyberiad.dmm b/maps/cyberiad.dmm
index 63153e67471..53dfce86a2b 100644
--- a/maps/cyberiad.dmm
+++ b/maps/cyberiad.dmm
@@ -8556,7 +8556,7 @@
"diB" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/food/condiment/enzyme,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control)
"diC" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control)
"diD" = (/obj/machinery/door/poddoor{icon_state = "pdoor1"; id = "ASSAULT1"; name = "Launch Bay #1"; p_open = 0},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops)
-"diE" = (/obj/structure/rack,/obj/item/ammo_box/magazine/msmg9mm,/obj/item/ammo_box/magazine/msmg9mm,/obj/item/ammo_box/magazine/msmg9mm,/obj/item/ammo_box/magazine/msmg9mm,/obj/item/ammo_box/magazine/msmg9mm,/obj/item/ammo_box/magazine/msmg9mm,/obj/item/ammo_box/magazine/msmg9mm,/obj/item/ammo_box/magazine/msmg9mm,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"diE" = (/obj/structure/rack,/obj/item/ammo_box/magazine/smgm9mm,/obj/item/ammo_box/magazine/smgm9mm,/obj/item/ammo_box/magazine/smgm9mm,/obj/item/ammo_box/magazine/smgm9mm,/obj/item/ammo_box/magazine/smgm9mm,/obj/item/ammo_box/magazine/smgm9mm,/obj/item/ammo_box/magazine/smgm9mm,/obj/item/ammo_box/magazine/smgm9mm,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"diF" = (/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"diG" = (/obj/structure/rack,/obj/item/weapon/gun/projectile/automatic,/obj/item/weapon/gun/projectile/automatic,/obj/item/weapon/gun/projectile/automatic,/obj/item/weapon/gun/projectile/automatic,/obj/item/weapon/gun/projectile/automatic,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"diH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/centcom/control)
@@ -9112,20 +9112,20 @@
"dtl" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{dir = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin)
"dtm" = (/obj/item/weapon/storage/box/syringes,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/item/weapon/grenade/chem_grenade/large,/obj/item/weapon/grenade/chem_grenade/large,/obj/item/weapon/grenade/chem_grenade/large,/obj/item/weapon/grenade/chem_grenade/large,/obj/item/weapon/gun/syringe/rapidsyringe,/obj/item/weapon/reagent_containers/spray/chemsprayer,/obj/structure/closet,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
"dtn" = (/turf/space,/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin)
-"dto" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/weapon/gun/projectile/automatic/pistol,/obj/item/weapon/gun/projectile/automatic/pistol{pixel_x = 3; pixel_y = -3},/obj/item/weapon/silencer,/obj/item/weapon/silencer{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
+"dto" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/weapon/gun/projectile/automatic/pistol,/obj/item/weapon/gun/projectile/automatic/pistol{pixel_x = 3; pixel_y = -3},/obj/item/weapon/suppressor,/obj/item/weapon/suppressor{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
"dtp" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m12g,/obj/item/ammo_box/magazine/m12g,/obj/item/ammo_box/magazine/m12g/buckshot,/obj/item/ammo_box/magazine/m12g/buckshot,/obj/item/ammo_box/magazine/m12g/dragon,/obj/item/ammo_box/magazine/m12g/dragon,/obj/item/weapon/gun/projectile/automatic/bulldog,/obj/item/weapon/gun/projectile/automatic/bulldog{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
-"dtq" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m12mm,/obj/item/ammo_box/magazine/m12mm,/obj/item/ammo_box/magazine/m12mm,/obj/item/ammo_box/magazine/m12mm,/obj/item/ammo_box/magazine/m12mm,/obj/item/ammo_box/magazine/m12mm,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
+"dtq" = (/obj/structure/rack,/obj/item/ammo_box/magazine/smgm45,/obj/item/ammo_box/magazine/smgm45,/obj/item/ammo_box/magazine/smgm45,/obj/item/ammo_box/magazine/smgm45,/obj/item/ammo_box/magazine/smgm45,/obj/item/ammo_box/magazine/smgm45,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
"dtr" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/weapon/gun/projectile/automatic/gyropistol,/obj/item/weapon/gun/projectile/automatic/gyropistol{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
"dts" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/weapon/gun/projectile/automatic/deagle,/obj/item/weapon/gun/projectile/automatic/deagle{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
-"dtt" = (/obj/structure/rack,/obj/item/ammo_box/a418,/obj/item/ammo_box/a418,/obj/item/ammo_box/a666,/obj/item/ammo_box/a666,/obj/item/ammo_box/a357,/obj/item/ammo_box/a357,/obj/item/weapon/gun/projectile/revolver/mateba,/obj/item/weapon/gun/projectile/revolver/mateba{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
+"dtt" = (/obj/structure/rack,/obj/item/ammo_box/a357,/obj/item/ammo_box/a357,/obj/item/weapon/gun/projectile/revolver/mateba,/obj/item/weapon/gun/projectile/revolver/mateba{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
"dtu" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/grown/lemon,/obj/item/weapon/reagent_containers/food/snacks/grown/berries,/obj/item/weapon/reagent_containers/food/snacks/grown/banana,/obj/item/weapon/reagent_containers/food/snacks/grown/cherries,/obj/item/weapon/reagent_containers/food/snacks/grown/orange,/obj/item/weapon/reagent_containers/food/snacks/grown/corn,/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
"dtv" = (/obj/structure/table,/obj/item/weapon/storage/pill_bottle/random_drug_bottle,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
"dtw" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/reagent_containers/glass/beaker/bluespace,/obj/item/weapon/reagent_containers/glass/beaker/bluespace,/obj/item/weapon/reagent_containers/glass/beaker/bluespace,/obj/item/weapon/reagent_containers/glass/beaker/bluespace,/obj/item/weapon/storage/box/autoinjectors,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
"dtx" = (/obj/structure/table,/obj/item/weapon/storage/box/syringes,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/item/weapon/grenade/chem_grenade/large,/obj/item/weapon/grenade/chem_grenade/large,/obj/item/weapon/grenade/chem_grenade/large,/obj/item/weapon/grenade/chem_grenade/large,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
"dty" = (/obj/machinery/door/airlock/hatch{name = "Chem Lab"; req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
"dtz" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m762,/obj/item/ammo_box/magazine/m762,/obj/item/ammo_box/magazine/m762,/obj/item/ammo_box/magazine/m762,/obj/item/weapon/gun/projectile/automatic/l6_saw,/obj/item/weapon/gun/projectile/automatic/l6_saw{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
-"dtA" = (/obj/structure/rack,/obj/item/ammo_box/magazine/msmg9mm,/obj/item/ammo_box/magazine/msmg9mm,/obj/item/ammo_box/magazine/msmg9mm,/obj/item/ammo_box/magazine/msmg9mm,/obj/item/ammo_box/magazine/msmg9mm,/obj/item/ammo_box/magazine/msmg9mm,/obj/item/weapon/gun/projectile/automatic,/obj/item/weapon/gun/projectile/automatic{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
-"dtB" = (/obj/structure/rack,/obj/item/ammo_box/magazine/uzim45,/obj/item/ammo_box/magazine/uzim45,/obj/item/ammo_box/magazine/uzim45,/obj/item/ammo_box/magazine/uzim45,/obj/item/ammo_box/magazine/uzim45,/obj/item/ammo_box/magazine/uzim45,/obj/item/weapon/gun/projectile/automatic/mini_uzi,/obj/item/weapon/gun/projectile/automatic/mini_uzi{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
+"dtA" = (/obj/structure/rack,/obj/item/weapon/gun/projectile/automatic,/obj/item/weapon/gun/projectile/automatic{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
+"dtB" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m545,/obj/item/ammo_box/magazine/m545,/obj/item/ammo_box/magazine/m545,/obj/item/ammo_box/magazine/m545,/obj/item/ammo_box/magazine/m545,/obj/item/ammo_box/magazine/m545,/obj/item/ammo_box/a40mm,/obj/item/ammo_box/a40mm,/obj/item/ammo_box/a40mm,/obj/item/ammo_box/a40mm,/obj/item/weapon/gun/projectile/automatic/c90gl,/obj/item/weapon/gun/projectile/automatic/c90gl{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
"dtC" = (/obj/structure/mirror{dir = 4; pixel_x = 0; pixel_y = -32},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
"dtD" = (/obj/machinery/optable,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
"dtE" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/syndicate,/obj/item/weapon/shard,/obj/item/weapon/kitchenknife,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
@@ -9140,7 +9140,7 @@
"dtN" = (/obj/structure/rack,/obj/item/weapon/shield/energy,/obj/item/weapon/shield/energy{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
"dtO" = (/obj/structure/rack,/obj/item/weapon/katana{pixel_x = 3; pixel_y = -3},/obj/item/weapon/katana,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
"dtP" = (/obj/structure/rack,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/melee/energy/sword{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
-"dtQ" = (/obj/structure/rack,/obj/item/weapon/gun/energy/mindflayer,/obj/item/weapon/gun/energy/mindflayer{pixel_x = 3; pixel_y = -3},/obj/machinery/recharger/wallcharger{pixel_x = 30},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
+"dtQ" = (/obj/structure/rack,/obj/machinery/recharger/wallcharger{pixel_x = 30},/obj/item/weapon/gun/energy/xray,/obj/item/weapon/gun/energy/xray{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
"dtR" = (/obj/structure/table,/obj/random/toolbox,/obj/random/bomb_supply,/obj/machinery/syndicatebomb/badmin/clown,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin)
"dtS" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin)
"dtT" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/syndicate,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin)
diff --git a/paradise.dme b/paradise.dme
index cc045a21fc4..9710cd7fead 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -1341,8 +1341,8 @@
#include "code\modules\projectiles\gun.dm"
#include "code\modules\projectiles\projectile.dm"
#include "code\modules\projectiles\targeting.dm"
+#include "code\modules\projectiles\ammunition\ammo_casings.dm"
#include "code\modules\projectiles\ammunition\boxes.dm"
-#include "code\modules\projectiles\ammunition\bullets.dm"
#include "code\modules\projectiles\ammunition\magazines.dm"
#include "code\modules\projectiles\guns\alien.dm"
#include "code\modules\projectiles\guns\energy.dm"
@@ -1358,7 +1358,8 @@
#include "code\modules\projectiles\guns\magic\wand.dm"
#include "code\modules\projectiles\guns\projectile\automatic.dm"
#include "code\modules\projectiles\guns\projectile\crossbow.dm"
-#include "code\modules\projectiles\guns\projectile\launcher.dm"
+#include "code\modules\projectiles\guns\projectile\grenade launcher.dm"
+#include "code\modules\projectiles\guns\projectile\launchers.dm"
#include "code\modules\projectiles\guns\projectile\pistol.dm"
#include "code\modules\projectiles\guns\projectile\pneumatic.dm"
#include "code\modules\projectiles\guns\projectile\revolver.dm"
diff --git a/sound/weapons/Gunshot.ogg b/sound/weapons/Gunshot.ogg
index 2547b98af9e..4fd082ce7f2 100644
Binary files a/sound/weapons/Gunshot.ogg and b/sound/weapons/Gunshot.ogg differ