From 65bb0a3e32a5e8dfc22f7c9ea2df8312b4215455 Mon Sep 17 00:00:00 2001 From: pubby Date: Thu, 7 Sep 2017 10:02:44 -0500 Subject: [PATCH] Ammo cleanup (#30361) * Clean up ammo * Fix maps * Cyberboss ammo cleanup fixes --- .../RandomRuins/SpaceRuins/caravanambush.dmm | 6 +- .../machinery/porta_turret/portable_turret.dm | 4 +- code/game/mecha/equipment/weapons/weapons.dm | 6 +- code/game/objects/items/storage/briefcase.dm | 2 +- code/game/objects/structures/manned_turret.dm | 4 +- code/modules/crafting/recipes.dm | 19 +- .../living/simple_animal/hostile/stickman.dm | 2 +- .../living/simple_animal/hostile/syndicate.dm | 2 +- .../projectiles/ammunition/ammo_casings.dm | 359 ++++++------ .../modules/projectiles/ammunition/special.dm | 2 +- .../boxes_magazines/external_mag.dm | 66 +-- .../projectiles/guns/ballistic/automatic.dm | 5 - code/modules/projectiles/projectile/beams.dm | 2 +- .../modules/projectiles/projectile/bullets.dm | 540 ++++++++++-------- .../modules/projectiles/projectile/special.dm | 37 +- .../research/designs/weapon_designs.dm | 7 - code/modules/spells/spell_types/mime.dm | 2 +- code/modules/uplink/uplink_item.dm | 24 +- 18 files changed, 515 insertions(+), 574 deletions(-) diff --git a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm index 43cd290ca01..f5a79747f8c 100644 --- a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm +++ b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm @@ -590,9 +590,9 @@ "bW" = ( /obj/structure/closet/crate/secure/gear, /obj/item/ammo_box/c10mm, -/obj/item/ammo_casing/shotgun/meteorshot, -/obj/item/ammo_casing/shotgun/meteorshot, -/obj/item/ammo_casing/shotgun/meteorshot, +/obj/item/ammo_casing/shotgun/meteorslug, +/obj/item/ammo_casing/shotgun/meteorslug, +/obj/item/ammo_casing/shotgun/meteorslug, /turf/open/floor/mineral/titanium/yellow/airless, /area/ruin/unpowered) "bX" = ( diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index ee8363e1b30..b84de7cf186 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -570,8 +570,8 @@ /obj/machinery/porta_turret/syndicate/pod integrity_failure = 20 max_integrity = 40 - stun_projectile = /obj/item/projectile/bullet/weakbullet3 - lethal_projectile = /obj/item/projectile/bullet/weakbullet3 + stun_projectile = /obj/item/projectile/bullet/syndicate_turret + lethal_projectile = /obj/item/projectile/bullet/syndicate_turret /obj/machinery/porta_turret/ai faction = "silicon" diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index b6b4241402a..1e9616ae12e 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -251,7 +251,7 @@ icon_state = "mecha_carbine" origin_tech = "materials=4;combat=4" equip_cooldown = 10 - projectile = /obj/item/projectile/bullet/incendiary/shell + projectile = /obj/item/projectile/bullet/incendiary/fnx99 projectiles = 24 projectile_energy_cost = 15 @@ -271,7 +271,7 @@ icon_state = "mecha_scatter" origin_tech = "combat=4" equip_cooldown = 20 - projectile = /obj/item/projectile/bullet/midbullet + projectile = /obj/item/projectile/bullet/scattershot projectiles = 40 projectile_energy_cost = 25 projectiles_per_shot = 4 @@ -283,7 +283,7 @@ icon_state = "mecha_uac2" origin_tech = "combat=4" equip_cooldown = 10 - projectile = /obj/item/projectile/bullet/weakbullet3 + projectile = /obj/item/projectile/bullet/lmg projectiles = 300 projectile_energy_cost = 20 projectiles_per_shot = 3 diff --git a/code/game/objects/items/storage/briefcase.dm b/code/game/objects/items/storage/briefcase.dm index dc4c7c61be1..0703eba47a7 100644 --- a/code/game/objects/items/storage/briefcase.dm +++ b/code/game/objects/items/storage/briefcase.dm @@ -52,6 +52,6 @@ new /obj/item/clothing/neck/tie/red(src) new /obj/item/clothing/under/syndicate/sniper(src) new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src) - new /obj/item/ammo_box/magazine/sniper_rounds/haemorrhage(src) + new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src) new /obj/item/suppressor/specialoffer(src) diff --git a/code/game/objects/structures/manned_turret.dm b/code/game/objects/structures/manned_turret.dm index 36d921ddf33..5af92f2f509 100644 --- a/code/game/objects/structures/manned_turret.dm +++ b/code/game/objects/structures/manned_turret.dm @@ -12,7 +12,7 @@ layer = ABOVE_MOB_LAYER var/view_range = 10 var/cooldown = 0 - var/projectile_type = /obj/item/projectile/bullet/weakbullet3 + var/projectile_type = /obj/item/projectile/bullet/manned_turret var/rate_of_fire = 1 var/number_of_shots = 40 var/cooldown_duration = 90 @@ -165,7 +165,7 @@ /obj/machinery/manned_turret/ultimate // Admin-only proof of concept for autoclicker automatics name = "Infinity Gun" view_range = 12 - projectile_type = /obj/item/projectile/bullet/weakbullet3 + projectile_type = /obj/item/projectile/bullet/manned_turret /obj/machinery/manned_turret/ultimate/checkfire(atom/targeted_atom, mob/user) target = targeted_atom diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 1f12e671ecc..d7d73875d69 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -204,9 +204,9 @@ category = CAT_WEAPONRY subcategory = CAT_WEAPON -/datum/crafting_recipe/meteorshot - name = "Meteorshot Shell" - result = /obj/item/ammo_casing/shotgun/meteorshot +/datum/crafting_recipe/meteorslug + name = "Meteorslug Shell" + result = /obj/item/ammo_casing/shotgun/meteorslug reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, /obj/item/rcd_ammo = 1, /obj/item/stock_parts/manipulator = 2) @@ -228,7 +228,7 @@ /datum/crafting_recipe/dragonsbreath name = "Dragonsbreath Shell" - result = /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath + result = /obj/item/ammo_casing/shotgun/dragonsbreath reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, /datum/reagent/phosphorus = 5) tools = list(/obj/item/screwdriver) time = 5 @@ -270,17 +270,6 @@ category = CAT_WEAPONRY subcategory = CAT_AMMO -/datum/crafting_recipe/improvisedslugoverload - name = "Overload Improvised Shell" - result = /obj/item/ammo_casing/shotgun/improvised/overload - reqs = list(/obj/item/ammo_casing/shotgun/improvised = 1, - /datum/reagent/blackpowder = 10, - /datum/reagent/toxin/plasma = 20) - tools = list(/obj/item/screwdriver) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - /datum/crafting_recipe/laserslug name = "Laser Slug Shell" result = /obj/item/ammo_casing/shotgun/laserslug diff --git a/code/modules/mob/living/simple_animal/hostile/stickman.dm b/code/modules/mob/living/simple_animal/hostile/stickman.dm index fd66b8d0ae0..44a0a06cdcd 100644 --- a/code/modules/mob/living/simple_animal/hostile/stickman.dm +++ b/code/modules/mob/living/simple_animal/hostile/stickman.dm @@ -38,7 +38,7 @@ minimum_distance = 5 icon_state = "stickmanranged" icon_living = "stickmanranged" - casingtype = /obj/item/ammo_casing/c45nostamina + casingtype = /obj/item/ammo_casing/c45/nostamina projectilesound = 'sound/misc/bang.ogg' loot = list(/obj/item/gun/ballistic/automatic/pistol/stickman) diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index 7cadba01d90..11331e7ab7b 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -95,7 +95,7 @@ minimum_distance = 5 icon_state = "syndicateranged" icon_living = "syndicateranged" - casingtype = /obj/item/ammo_casing/c45nostamina + casingtype = /obj/item/ammo_casing/c45/nostamina projectilesound = 'sound/weapons/gunshot_smg.ogg' loot = list(/obj/effect/gibspawner/human) diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm index 65cce2b7c7f..94fc8efff99 100644 --- a/code/modules/projectiles/ammunition/ammo_casings.dm +++ b/code/modules/projectiles/ammunition/ammo_casings.dm @@ -1,100 +1,126 @@ +// .357 (Syndie Revolver) + /obj/item/ammo_casing/a357 + name = ".357 bullet casing" desc = "A .357 bullet casing." caliber = "357" - projectile_type = /obj/item/projectile/bullet + projectile_type = /obj/item/projectile/bullet/a357 + +// 7.62 (Nagant Rifle) /obj/item/ammo_casing/a762 + name = "7.62 bullet casing" desc = "A 7.62 bullet casing." icon_state = "762-casing" caliber = "a762" - projectile_type = /obj/item/projectile/bullet + projectile_type = /obj/item/projectile/bullet/a762 /obj/item/ammo_casing/a762/enchanted - projectile_type = /obj/item/projectile/bullet/weakbullet3 + projectile_type = /obj/item/projectile/bullet/a762_enchanted -/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 - -/obj/item/ammo_casing/c10mm - desc = "A 10mm bullet casing." - caliber = "10mm" - projectile_type = /obj/item/projectile/bullet/midbullet3 - -/obj/item/ammo_casing/c10mm/ap - projectile_type = /obj/item/projectile/bullet/midbullet3/ap - -/obj/item/ammo_casing/c10mm/fire - projectile_type = /obj/item/projectile/bullet/midbullet3/fire - -/obj/item/ammo_casing/c10mm/hp - projectile_type = /obj/item/projectile/bullet/midbullet3/hp - -/obj/item/ammo_casing/c9mm - desc = "A 9mm bullet casing." - caliber = "9mm" - projectile_type = /obj/item/projectile/bullet/weakbullet3 - -/obj/item/ammo_casing/c9mmap - desc = "A 9mm bullet casing." - caliber = "9mm" - projectile_type =/obj/item/projectile/bullet/armourpiercing - -/obj/item/ammo_casing/c9mmtox - desc = "A 9mm bullet casing." - caliber = "9mm" - projectile_type = /obj/item/projectile/bullet/toxinbullet - -/obj/item/ammo_casing/c9mminc - desc = "A 9mm bullet casing." - caliber = "9mm" - projectile_type = /obj/item/projectile/bullet/incendiary/firebullet - -/obj/item/ammo_casing/c46x30mm - desc = "A 4.6x30mm bullet casing." - caliber = "4.6x30mm" - projectile_type = /obj/item/projectile/bullet/weakbullet3 - -/obj/item/ammo_casing/c46x30mmap - desc = "A 4.6x30mm bullet casing." - caliber = "4.6x30mm" - projectile_type =/obj/item/projectile/bullet/armourpiercing - -/obj/item/ammo_casing/c46x30mmtox - desc = "A 4.6x30mm bullet casing." - caliber = "4.6x30mm" - projectile_type = /obj/item/projectile/bullet/toxinbullet - -/obj/item/ammo_casing/c46x30mminc - desc = "A 4.6x30mm bullet casing." - caliber = "4.6x30mm" - projectile_type = /obj/item/projectile/bullet/incendiary/firebullet - -/obj/item/ammo_casing/c45 - desc = "A .45 bullet casing." - caliber = ".45" - projectile_type = /obj/item/projectile/bullet/midbullet - -/obj/item/ammo_casing/c45nostamina - desc = "A .45 bullet casing." - caliber = ".45" - projectile_type = /obj/item/projectile/bullet/midbullet3 +// 7.62x38mmR (Nagant Revolver) /obj/item/ammo_casing/n762 + name = "7.62x38mmR bullet casing" desc = "A 7.62x38mmR bullet casing." caliber = "n762" - projectile_type = /obj/item/projectile/bullet + projectile_type = /obj/item/projectile/bullet/n762 + +// .50AE (Desert Eagle) + +/obj/item/ammo_casing/a50AE + name = ".50AE bullet casing" + desc = "A .50AE bullet casing." + caliber = ".50" + projectile_type = /obj/item/projectile/bullet/a50AE + +// .38 (Detective's Gun) + +/obj/item/ammo_casing/c38 + name = ".38 bullet casing" + desc = "A .38 bullet casing." + caliber = "38" + projectile_type = /obj/item/projectile/bullet/c38 + +// 10mm (Stechkin) + +/obj/item/ammo_casing/c10mm + name = ".10mm bullet casing" + desc = "A 10mm bullet casing." + caliber = "10mm" + projectile_type = /obj/item/projectile/bullet/c10mm + +/obj/item/ammo_casing/c10mm/ap + name = ".10mm armor-piercing bullet casing" + desc = "A 10mm armor-piercing bullet casing." + projectile_type = /obj/item/projectile/bullet/c10mm_ap + +/obj/item/ammo_casing/c10mm/hp + name = ".10mm hollow-point bullet casing" + desc = "A 10mm hollow-point bullet casing." + projectile_type = /obj/item/projectile/bullet/c10mm_hp + +/obj/item/ammo_casing/c10mm/fire + name = ".10mm incendiary bullet casing" + desc = "A 10mm incendiary bullet casing." + projectile_type = /obj/item/projectile/bullet/incendiary/c10mm + +// 9mm (Stechkin APS) + +/obj/item/ammo_casing/c9mm + name = "9mm bullet casing" + desc = "A 9mm bullet casing." + caliber = "9mm" + projectile_type = /obj/item/projectile/bullet/c9mm + +/obj/item/ammo_casing/c9mm/ap + name = "9mm armor-piercing bullet casing" + desc = "A 9mm armor-piercing bullet casing." + projectile_type =/obj/item/projectile/bullet/c9mm_ap + +/obj/item/ammo_casing/c9mm/inc + name = "9mm incendiary bullet casing" + desc = "A 9mm incendiary bullet casing." + projectile_type = /obj/item/projectile/bullet/incendiary/c9mm + +// 4.6x30mm (Autorifles) + +/obj/item/ammo_casing/c46x30mm + name = "4.6x30mm bullet casing" + desc = "A 4.6x30mm bullet casing." + caliber = "4.6x30mm" + projectile_type = /obj/item/projectile/bullet/c46x30mm + +/obj/item/ammo_casing/c46x30mm/ap + name = "4.6x30mm armor-piercing bullet casing" + desc = "A 4.6x30mm armor-piercing bullet casing." + projectile_type = /obj/item/projectile/bullet/c46x30mm_ap + +/obj/item/ammo_casing/c46x30mm/inc + name = "4.6x30mm incendiary bullet casing" + desc = "A 4.6x30mm incendiary bullet casing." + projectile_type = /obj/item/projectile/bullet/incendiary/c46x30mm + +// .45 (M1911) + +/obj/item/ammo_casing/c45 + name = ".45 bullet casing" + desc = "A .45 bullet casing." + caliber = ".45" + projectile_type = /obj/item/projectile/bullet/c45 + +/obj/item/ammo_casing/c45/nostamina + projectile_type = /obj/item/projectile/bullet/c45_nostamina + +// 5.56mm (M-90gl Carbine) /obj/item/ammo_casing/a556 + name = "5.56mm bullet casing" desc = "A 5.56mm bullet casing." caliber = "a556" - projectile_type = /obj/item/projectile/bullet/heavybullet + projectile_type = /obj/item/projectile/bullet/a556 + +// 40mm (Grenade Launcher) /obj/item/ammo_casing/a40mm name = "40mm HE shell" @@ -103,148 +129,93 @@ icon_state = "40mmHE" projectile_type = /obj/item/projectile/bullet/a40mm +// .50 (Sniper) - -/////SNIPER ROUNDS - -/obj/item/ammo_casing/point50 +/obj/item/ammo_casing/p50 + name = ".50 bullet casing" desc = "A .50 bullet casing." caliber = ".50" - projectile_type = /obj/item/projectile/bullet/sniper + projectile_type = /obj/item/projectile/bullet/p50 icon_state = ".50" -/obj/item/ammo_casing/soporific +/obj/item/ammo_casing/p50/soporific + name = ".50 soporific bullet casing" desc = "A .50 bullet casing, specialised in sending the target to sleep, instead of hell." - caliber = ".50" - projectile_type = /obj/item/projectile/bullet/sniper/soporific + projectile_type = /obj/item/projectile/bullet/p50/soporific icon_state = "sleeper" -/obj/item/ammo_casing/haemorrhage - desc = "A .50 bullet casing, specialised in causing massive bloodloss." - caliber = ".50" - projectile_type = /obj/item/projectile/bullet/sniper/haemorrhage - icon_state = ".50" - -/obj/item/ammo_casing/penetrator +/obj/item/ammo_casing/p50/penetrator + name = ".50 penetrator round bullet casing" desc = "A .50 caliber penetrator round casing." - caliber = ".50" - projectile_type = /obj/item/projectile/bullet/sniper/penetrator - icon_state = ".50" + projectile_type = /obj/item/projectile/bullet/p50/penetrator -/obj/item/ammo_casing/point50/gang - desc = "A black market .50 bullet casing." - projectile_type = /obj/item/projectile/bullet/sniper/gang - -/obj/item/ammo_casing/point50/gang/sleeper - desc = "Am illegally modified tranquilizer round." - projectile_type = /obj/item/projectile/bullet/sniper/gang/sleeper - icon_state = "sleeper" - -/// SAW ROUNDS +// 1.95x129mm (SAW) /obj/item/ammo_casing/mm195x129 + name = "1.95x129mm bullet casing" desc = "A 1.95x129mm bullet casing." icon_state = "762-casing" caliber = "mm195129" - projectile_type = /obj/item/projectile/bullet/saw - -/obj/item/ammo_casing/mm195x129/bleeding - desc = "A 1.95x129mm bullet casing with specialized inner-casing, that when it makes contact with a target, releases tiny shrapnel to induce internal bleeding." - icon_state = "762-casing" - projectile_type = /obj/item/projectile/bullet/saw/bleeding - -/obj/item/ammo_casing/mm195x129/hollow - desc = "A 1.95x129mm bullet casing designed to cause more damage to unarmored targets." - projectile_type = /obj/item/projectile/bullet/saw/hollow + projectile_type = /obj/item/projectile/bullet/mm195x129 /obj/item/ammo_casing/mm195x129/ap + name = "1.95x129mm armor-piercing bullet casing" desc = "A 1.95x129mm bullet casing designed with a hardened-tipped core to help penetrate armored targets." - projectile_type = /obj/item/projectile/bullet/saw/ap + projectile_type = /obj/item/projectile/bullet/mm195x129_ap + +/obj/item/ammo_casing/mm195x129/hollow + name = "1.95x129mm hollow-point bullet casing" + desc = "A 1.95x129mm bullet casing designed to cause more damage to unarmored targets." + projectile_type = /obj/item/projectile/bullet/mm195x129_hp /obj/item/ammo_casing/mm195x129/incen + name = "1.95x129mm incendiary bullet casing" desc = "A 1.95x129mm bullet casing designed with a chemical-filled capsule on the tip that when bursted, reacts with the atmosphere to produce a fireball, engulfing the target in flames. " - projectile_type = /obj/item/projectile/bullet/saw/incen + projectile_type = /obj/item/projectile/bullet/incendiary/mm195x129 - - - -//SHOTGUN ROUNDS +// Shotgun /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 + projectile_type = /obj/item/projectile/bullet/shotgun_slug materials = list(MAT_METAL=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 - pellets = 6 - variance = 25 - -/obj/item/ammo_casing/shotgun/rubbershot - name = "rubber shot" - desc = "A shotgun casing filled with densely-packed rubber balls, used to incapacitate crowds from a distance." - icon_state = "bshell" - projectile_type = /obj/item/projectile/bullet/rpellet - pellets = 6 - variance = 25 - materials = list(MAT_METAL=4000) - - /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 + projectile_type = /obj/item/projectile/bullet/shotgun_beanbag materials = list(MAT_METAL=250) +/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/shotgun -/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 = "improvshell" - projectile_type = /obj/item/projectile/bullet/pellet/weak - materials = list(MAT_METAL=250) - pellets = 10 - variance = 25 - - -/obj/item/ammo_casing/shotgun/improvised/overload - name = "overloaded improvised shell" - desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards. This one has been packed with even more \ - propellant. It's like playing russian roulette, with a shotgun." - icon_state = "improvshell" - projectile_type = /obj/item/projectile/bullet/pellet/overload - materials = list(MAT_METAL=250) +/obj/item/ammo_casing/shotgun/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/shotgun/dragonsbreath pellets = 4 - variance = 40 - + variance = 35 /obj/item/ammo_casing/shotgun/stunslug name = "taser slug" desc = "A stunning taser slug." icon_state = "stunshell" - projectile_type = /obj/item/projectile/bullet/stunshot + projectile_type = /obj/item/projectile/bullet/shotgun_stunslug materials = list(MAT_METAL=250) - -/obj/item/ammo_casing/shotgun/meteorshot - name = "meteorshot shell" +/obj/item/ammo_casing/shotgun/meteorslug + name = "meteorslug 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/breaching - name = "breaching shell" - desc = "An economic version of the meteorshot, utilizing similar technologies. Great for busting down doors." - icon_state = "mshell" - projectile_type = /obj/item/projectile/bullet/meteorshot/weak + projectile_type = /obj/item/projectile/bullet/shotgun_meteorslug /obj/item/ammo_casing/shotgun/pulseslug name = "pulse slug" @@ -252,27 +223,39 @@ 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 + projectile_type = /obj/item/projectile/beam/pulse/shotgun /obj/item/ammo_casing/shotgun/frag12 name = "FRAG-12 slug" desc = "A high explosive breaching round for a 12 gauge shotgun." icon_state = "heshell" - projectile_type = /obj/item/projectile/bullet/frag12 + projectile_type = /obj/item/projectile/bullet/shotgun_frag12 -/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 - pellets = 4 - variance = 35 +/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/shotgun_buckshot + pellets = 6 + variance = 25 + +/obj/item/ammo_casing/shotgun/rubbershot + name = "rubber shot" + desc = "A shotgun casing filled with densely-packed rubber balls, used to incapacitate crowds from a distance." + icon_state = "bshell" + projectile_type = /obj/item/projectile/bullet/pellet/shotgun_rubbershot + pellets = 6 + variance = 25 + materials = list(MAT_METAL=4000) + +/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 = "improvshell" + projectile_type = /obj/item/projectile/bullet/pellet/shotgun_improvised + materials = list(MAT_METAL=250) + pellets = 10 + variance = 25 /obj/item/ammo_casing/shotgun/ion name = "ion shell" diff --git a/code/modules/projectiles/ammunition/special.dm b/code/modules/projectiles/ammunition/special.dm index fa9c2ae5b0a..11fd12da70a 100644 --- a/code/modules/projectiles/ammunition/special.dm +++ b/code/modules/projectiles/ammunition/special.dm @@ -85,7 +85,7 @@ ..() /obj/item/ammo_casing/energy/c3dbullet - projectile_type = /obj/item/projectile/bullet/midbullet3 + projectile_type = /obj/item/projectile/bullet/c3d select_name = "spraydown" fire_sound = 'sound/weapons/gunshot_smg.ogg' e_cost = 20 diff --git a/code/modules/projectiles/boxes_magazines/external_mag.dm b/code/modules/projectiles/boxes_magazines/external_mag.dm index 3bfb90224dd..4abad9d078d 100644 --- a/code/modules/projectiles/boxes_magazines/external_mag.dm +++ b/code/modules/projectiles/boxes_magazines/external_mag.dm @@ -1,6 +1,4 @@ - - ///////////EXTERNAL MAGAZINES//////////////// /obj/item/ammo_box/magazine/m10mm @@ -72,25 +70,16 @@ /obj/item/ammo_box/magazine/wt550m9/wtap name = "wt550 magazine (Armour Piercing 4.6x30mm)" icon_state = "46x30mmtA-20" - ammo_type = /obj/item/ammo_casing/c46x30mmap + ammo_type = /obj/item/ammo_casing/c46x30mm/ap /obj/item/ammo_box/magazine/wt550m9/wtap/update_icon() ..() icon_state = "46x30mmtA-[round(ammo_count(),4)]" -/obj/item/ammo_box/magazine/wt550m9/wttx - name = "wt550 magazine (Toxin Tipped 4.6x30mm)" - icon_state = "46x30mmtT-20" - ammo_type = /obj/item/ammo_casing/c46x30mmtox - -/obj/item/ammo_box/magazine/wt550m9/wttx/update_icon() - ..() - icon_state = "46x30mmtT-[round(ammo_count(),4)]" - /obj/item/ammo_box/magazine/wt550m9/wtic name = "wt550 magazine (Incindiary 4.6x30mm)" icon_state = "46x30mmtI-20" - ammo_type = /obj/item/ammo_casing/c46x30mminc + ammo_type = /obj/item/ammo_casing/c46x30mm/inc /obj/item/ammo_box/magazine/wt550m9/wtic/update_icon() ..() @@ -120,15 +109,11 @@ /obj/item/ammo_box/magazine/smgm9mm/ap name = "SMG magazine (Armour Piercing 9mm)" - ammo_type = /obj/item/ammo_casing/c9mmap - -/obj/item/ammo_box/magazine/smgm9mm/toxin - name = "SMG magazine (Toxin Tipped 9mm)" - ammo_type = /obj/item/ammo_casing/c9mmtox + ammo_type = /obj/item/ammo_casing/c9mm/ap /obj/item/ammo_box/magazine/smgm9mm/fire name = "SMG Magazine (Incindiary 9mm)" - ammo_type = /obj/item/ammo_casing/c9mminc + ammo_type = /obj/item/ammo_casing/c9mm/inc /obj/item/ammo_box/magazine/pistolm9mm name = "pistol magazine (9mm)" @@ -145,7 +130,7 @@ name = "SMG magazine (.45)" icon_state = "c20r45-24" origin_tech = "combat=2" - ammo_type = /obj/item/ammo_casing/c45nostamina + ammo_type = /obj/item/ammo_casing/c45/nostamina caliber = ".45" max_ammo = 24 @@ -164,7 +149,7 @@ name = "handgun magazine (.50ae)" icon_state = "50ae" origin_tech = "combat=2" - ammo_type = /obj/item/ammo_casing/a50 + ammo_type = /obj/item/ammo_casing/a50AE caliber = ".50" max_ammo = 7 multiple_sprites = 1 @@ -212,17 +197,17 @@ /obj/item/ammo_box/magazine/m12g/dragon name = "shotgun magazine (12g dragon's breath)" icon_state = "m12gf" - ammo_type = /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath + ammo_type = /obj/item/ammo_casing/shotgun/dragonsbreath /obj/item/ammo_box/magazine/m12g/bioterror name = "shotgun magazine (12g bioterror)" icon_state = "m12gt" ammo_type = /obj/item/ammo_casing/shotgun/dart/bioterror -/obj/item/ammo_box/magazine/m12g/breach - name = "shotgun magazine (12g breacher slugs)" +/obj/item/ammo_box/magazine/m12g/meteor + name = "shotgun magazine (12g meteor slugs)" icon_state = "m12gbc" - ammo_type = /obj/item/ammo_casing/shotgun/breaching + ammo_type = /obj/item/ammo_casing/shotgun/meteorslug //// SNIPER MAGAZINES @@ -231,7 +216,7 @@ name = "sniper rounds (.50)" icon_state = ".50mag" origin_tech = "combat=6;syndicate=2" - ammo_type = /obj/item/ammo_casing/point50 + ammo_type = /obj/item/ammo_casing/p50 max_ammo = 6 caliber = ".50" @@ -246,37 +231,17 @@ desc = "Soporific sniper rounds, designed for happy days and dead quiet nights..." icon_state = "soporific" origin_tech = "combat=6;syndicate=3" - ammo_type = /obj/item/ammo_casing/soporific + ammo_type = /obj/item/ammo_casing/p50/soporific max_ammo = 3 caliber = ".50" -/obj/item/ammo_box/magazine/sniper_rounds/haemorrhage - name = "sniper rounds (Bleed)" - desc = "Haemorrhage sniper rounds, leaves your target in a pool of crimson pain" - icon_state = "haemorrhage" - ammo_type = /obj/item/ammo_casing/haemorrhage - max_ammo = 5 - caliber = ".50" - /obj/item/ammo_box/magazine/sniper_rounds/penetrator name = "sniper rounds (penetrator)" desc = "An extremely powerful round capable of passing straight through cover and anyone unfortunate enough to be behind it." - ammo_type = /obj/item/ammo_casing/penetrator + ammo_type = /obj/item/ammo_casing/p50/penetrator origin_tech = "combat=6;syndicate=3" max_ammo = 5 -/obj/item/ammo_box/magazine/sniper_rounds/gang - name = "black market sniper rounds (.50)" - icon_state = ".50mag" - origin_tech = "combat=6" - ammo_type = /obj/item/ammo_casing/point50/gang - -/obj/item/ammo_box/magazine/sniper_rounds/gang/sleeper - name = "illegally modified tranquilizer round" - icon_state = "soporific" - origin_tech = "combat=6" - ammo_type = /obj/item/ammo_casing/point50/gang/sleeper - //// SAW MAGAZINES /obj/item/ammo_box/magazine/mm195x129 @@ -287,11 +252,6 @@ caliber = "mm195129" max_ammo = 50 -/obj/item/ammo_box/magazine/mm195x129/bleeding - name = "box magazine (Bleeding 1.95x129mm)" - origin_tech = "combat=3" - ammo_type = /obj/item/ammo_casing/mm195x129/bleeding - /obj/item/ammo_box/magazine/mm195x129/hollow name = "box magazine (Hollow-Point 1.95x129mm)" origin_tech = "combat=3" diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index d6259cf5465..fd2c4c7224a 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -378,11 +378,6 @@ pin = /obj/item/device/firing_pin/implant/pindicate origin_tech = "combat=7;syndicate=6" -/obj/item/gun/ballistic/automatic/sniper_rifle/gang - name = "black market sniper rifle" - desc = "A long ranged weapon that does significant damage. It is well worn from years of service." - mag_type = /obj/item/ammo_box/magazine/sniper_rounds/gang - // Old Semi-Auto Rifle // /obj/item/gun/ballistic/automatic/surplus diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 844a8a46621..d1d7b50cf59 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -77,7 +77,7 @@ if(isturf(target) || istype(target, /obj/structure/)) target.ex_act(EXPLODE_HEAVY) -/obj/item/projectile/beam/pulse/shot +/obj/item/projectile/beam/pulse/shotgun damage = 40 /obj/item/projectile/beam/pulse/heavy diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index d11fa850c20..6f4ae50243d 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -3,105 +3,238 @@ icon_state = "bullet" damage = 60 damage_type = BRUTE - nodamage = 0 + nodamage = FALSE flag = "bullet" hitsound_wall = "ricochet" impact_effect_type = /obj/effect/temp_visual/impact_effect -/obj/item/projectile/bullet/weakbullet //beanbag, heavy stamina damage - damage = 5 - stamina = 80 - -/obj/item/projectile/bullet/weakbullet2 //detective revolver instastuns, but multiple shots are better for keeping punks down - damage = 15 - knockdown = 30 - stamina = 50 - -/obj/item/projectile/bullet/weakbullet3 - damage = 20 - -/obj/item/projectile/bullet/toxinbullet - damage = 15 - damage_type = TOX - -/obj/item/projectile/bullet/incendiary/firebullet - damage = 10 - -/obj/item/projectile/bullet/armourpiercing - damage = 15 - armour_penetration = 40 - -/obj/item/projectile/bullet/pellet - name = "pellet" - damage = 12.5 - /obj/item/projectile/bullet/pellet/Range() ..() damage += -0.75 if(damage < 0) qdel(src) -/obj/item/projectile/bullet/pellet/weak - damage = 6 - -/obj/item/projectile/bullet/pellet/weak/New() - range = rand(1, 8) - ..() - -/obj/item/projectile/bullet/pellet/weak/on_range() - do_sparks(1, TRUE, src) - ..() - -/obj/item/projectile/bullet/pellet/overload - damage = 3 - -/obj/item/projectile/bullet/pellet/overload/New() - range = rand(1, 10) - ..() - -/obj/item/projectile/bullet/pellet/overload/on_hit(atom/target, blocked = FALSE) - ..() - explosion(target, 0, 0, 2) - -/obj/item/projectile/bullet/pellet/overload/on_range() - explosion(src, 0, 0, 2) - do_sparks(3, TRUE, src) - ..() - -/obj/item/projectile/bullet/midbullet +/obj/item/projectile/bullet/incendiary damage = 20 - stamina = 65 //two round bursts from the c20r knocks people down + var/fire_stacks = 4 +/obj/item/projectile/bullet/incendiary/on_hit(atom/target, blocked = FALSE) + . = ..() + if(iscarbon(target)) + var/mob/living/carbon/M = target + M.adjust_fire_stacks(fire_stacks) + M.IgniteMob() -/obj/item/projectile/bullet/midbullet2 - damage = 25 +/obj/item/projectile/bullet/incendiary/Move() + . = ..() + var/turf/location = get_turf(src) + if(location) + new /obj/effect/hotspot(location) + location.hotspot_expose(700, 50, 1) -/obj/item/projectile/bullet/midbullet3 +// .357 (Syndie Revolver) + +/obj/item/projectile/bullet/a357 + name = ".357 bullet" + damage = 60 + +// 7.62 (Nagant Rifle) + +/obj/item/projectile/bullet/a762 + name = "7.62 bullet" + damage = 60 + +/obj/item/projectile/bullet/a762_enchanted + name = "enchanted 7.62 bullet" + damage = 5 + stamina = 80 + +// 7.62x38mmR (Nagant Revolver) + +/obj/item/projectile/bullet/n762 + name = "7.62x38mmR bullet" + damage = 60 + +// .50AE (Desert Eagle) + +/obj/item/projectile/bullet/a50AE + name = ".50AE bullet" + damage = 60 + +// .38 (Detective's Gun) + +/obj/item/projectile/bullet/c38 + name = ".38 bullet" + damage = 15 + knockdown = 30 + stamina = 50 + +// 10mm (Stechkin) + +/obj/item/projectile/bullet/c10mm + name = "10mm bullet" damage = 30 -/obj/item/projectile/bullet/midbullet3/hp - damage = 40 - armour_penetration = -50 - -/obj/item/projectile/bullet/midbullet3/ap +/obj/item/projectile/bullet/c10mm_ap + name = "10mm armor-piercing bullet" damage = 27 armour_penetration = 40 -/obj/item/projectile/bullet/midbullet3/fire/on_hit(atom/target, blocked = FALSE) - if(..(target, blocked)) - var/mob/living/M = target - M.adjust_fire_stacks(1) - M.IgniteMob() +/obj/item/projectile/bullet/c10mm_hp + name = "10mm hollow-point bullet" + damage = 40 + armour_penetration = -50 -/obj/item/projectile/bullet/heavybullet +/obj/item/projectile/bullet/incendiary/c10mm + name = "10mm incendiary bullet" + damage = 15 + fire_stacks = 2 + +// 9mm (Stechkin APS) + +/obj/item/projectile/bullet/c9mm + name = "9mm bullet" + damage = 20 + +/obj/item/projectile/bullet/c9mm_ap + name = "9mm armor-piercing bullet" + damage = 15 + armour_penetration = 40 + +/obj/item/projectile/bullet/incendiary/c9mm + name = "9mm incendiary bullet" + damage = 10 + fire_stacks = 1 + +// 4.6x30mm (Autorifles) + +/obj/item/projectile/bullet/c46x30mm + desc = "4.6x30mm bullet" + damage = 20 + +/obj/item/projectile/bullet/c46x30mm_ap + name = "4.6x30mm armor-piercing bullet" + damage = 15 + armour_penetration = 40 + +/obj/item/projectile/bullet/incendiary/c46x30mm + name = "4.6x30mm incendiary bullet" + damage = 10 + fire_stacks = 1 + +// .45 (M1911) + +/obj/item/projectile/bullet/c45 + name = ".45 bullet" + damage = 20 + stamina = 65 + +/obj/item/projectile/bullet/c45_nostamina + name = ".45 bullet" + damage = 20 + +// 5.56mm (M-90gl Carbine) + +/obj/item/projectile/bullet/a556 + name = "5.56mm bullet" damage = 35 -/obj/item/projectile/bullet/rpellet - damage = 3 - stamina = 25 +// 40mm (Grenade Launcher -/obj/item/projectile/bullet/stunshot //taser slugs for shotguns, nothing special - name = "stunshot" +/obj/item/projectile/bullet/a40mm + name ="40mm grenade" + desc = "USE A WEEL GUN" + icon_state= "bolter" + damage = 60 + +/obj/item/projectile/bullet/a40mm/on_hit(atom/target, blocked = FALSE) + ..() + explosion(target, -1, 0, 2, 1, 0, flame_range = 3) + return TRUE + +// .50 (Sniper) + +/obj/item/projectile/bullet/p50 + name =".50 bullet" + speed = 0 //360 alwaysscope. + damage = 70 + knockdown = 100 + dismemberment = 50 + armour_penetration = 50 + var/breakthings = TRUE + +/obj/item/projectile/bullet/p50/on_hit(atom/target, blocked = 0) + if((blocked != 100) && (!ismob(target) && breakthings)) + target.ex_act(rand(1,2)) + return ..() + +/obj/item/projectile/bullet/p50/soporific + name =".50 soporific bullet" + armour_penetration = 0 + nodamage = TRUE + dismemberment = 0 + knockdown = 0 + breakthings = FALSE + +/obj/item/projectile/bullet/p50/soporific/on_hit(atom/target, blocked = FALSE) + if((blocked != 100) && isliving(target)) + var/mob/living/L = target + L.Sleeping(400) + return ..() + +/obj/item/projectile/bullet/p50/penetrator + name =".50 penetrator bullet" + icon_state = "gauss" + name = "penetrator round" + damage = 60 + forcedodge = TRUE + dismemberment = 0 //It goes through you cleanly. + knockdown = 0 + breakthings = FALSE + +// 1.95x129mm (SAW) + +/obj/item/projectile/bullet/mm195x129 + name = "1.95x129mm bullet" + damage = 45 + armour_penetration = 5 + +/obj/item/projectile/bullet/mm195x129_ap + name = "1.95x129mm armor-piercing bullet" + damage = 40 + armour_penetration = 75 + +/obj/item/projectile/bullet/mm195x129_hp + name = "1.95x129mm hollow-point bullet" + damage = 60 + armour_penetration = -60 + +/obj/item/projectile/bullet/incendiary/mm195x129 + name = "1.95x129mm incendiary bullet" + damage = 15 + fire_stacks = 3 + +// Shotgun + +/obj/item/projectile/bullet/shotgun_slug + name = "12g shotgun slug" + damage = 60 + +/obj/item/projectile/bullet/shotgun_beanbag + name = "beanbag slug" + damage = 5 + stamina = 80 + +/obj/item/projectile/bullet/incendiary/shotgun + name = "incendiary slug" + damage = 20 + +/obj/item/projectile/bullet/incendiary/shotgun/dragonsbreath + name = "dragonsbreath pellet" + damage = 5 + +/obj/item/projectile/bullet/shotgun_stunslug + name = "stunslug" damage = 5 knockdown = 100 stutter = 5 @@ -110,47 +243,90 @@ icon_state = "spark" color = "#FFFF00" -/obj/item/projectile/bullet/incendiary/on_hit(atom/target, blocked = FALSE) - . = ..() - if(iscarbon(target)) - var/mob/living/carbon/M = target - M.adjust_fire_stacks(4) - M.IgniteMob() - - -/obj/item/projectile/bullet/incendiary/shell - name = "incendiary slug" - damage = 20 - -/obj/item/projectile/bullet/incendiary/shell/Move() - ..() - var/turf/location = get_turf(src) - if(location) - new /obj/effect/hotspot(location) - location.hotspot_expose(700, 50, 1) - -/obj/item/projectile/bullet/incendiary/shell/dragonsbreath - name = "dragonsbreath round" - damage = 5 - - -/obj/item/projectile/bullet/meteorshot - name = "meteor" +/obj/item/projectile/bullet/shotgun_meteorslug + name = "meteorslug" icon = 'icons/obj/meteor.dmi' icon_state = "dust" - damage = 30 - knockdown = 160 + damage = 20 + knockdown = 80 hitsound = 'sound/effects/meteorimpact.ogg' -/obj/item/projectile/bullet/meteorshot/weak - damage = 10 - knockdown = 80 +/obj/item/projectile/bullet/shotgun_meteorslug/on_hit(atom/target, blocked = FALSE) + . = ..() + if(ismovableatom(target)) + var/atom/movable/M = target + var/atom/throw_target = get_edge_target_turf(M, get_dir(src, get_step_away(M, src))) + M.throw_at(throw_target, 3, 2) + +/obj/item/projectile/bullet/shotgun_meteorslug/Initialize() + . = ..() + SpinAnimation() + +/obj/item/projectile/bullet/shotgun_frag12 + name ="frag12 slug" + damage = 25 + knockdown = 50 + +/obj/item/projectile/bullet/shotgun_frag12/on_hit(atom/target, blocked = FALSE) + ..() + explosion(target, -1, 0, 1) + return TRUE + +/obj/item/projectile/bullet/pellet/shotgun_buckshot + name = "buckshot pellet" + damage = 12.5 + +/obj/item/projectile/bullet/pellet/shotgun_rubbershot + damage = 3 + stamina = 25 + +/obj/item/projectile/bullet/pellet/shotgun_improvised + damage = 6 + +/obj/item/projectile/bullet/pellet/shotgun_improvised/Initialize() + . = ..() + range = rand(1, 8) + +/obj/item/projectile/bullet/pellet/shotgun_improvised/on_range() + do_sparks(1, TRUE, src) + ..() + +// Scattershot + +/obj/item/projectile/bullet/scattershot + damage = 20 + stamina = 65 + +// LMD (exosuits) + +/obj/item/projectile/bullet/lmg + damage = 20 + +// Turrets + +/obj/item/projectile/bullet/manned_turret + damage = 20 + +/obj/item/projectile/bullet/syndicate_turret + damage = 20 + +// FNX-99 (Mechs) + +/obj/item/projectile/bullet/incendiary/fnx99 + damage = 20 + +// C3D (Borgs) + +/obj/item/projectile/bullet/c3d + damage = 20 + +// Honker /obj/item/projectile/bullet/honker damage = 0 knockdown = 60 - forcedodge = 1 - nodamage = 1 + forcedodge = TRUE + nodamage = TRUE hitsound = 'sound/items/bikehorn.ogg' icon = 'icons/obj/hydroponics/harvest.dmi' icon_state = "banana" @@ -160,17 +336,7 @@ ..() SpinAnimation() -/obj/item/projectile/bullet/meteorshot/on_hit(atom/target, blocked = FALSE) - . = ..() - if(ismovableatom(target)) - var/atom/movable/M = target - var/atom/throw_target = get_edge_target_turf(M, get_dir(src, get_step_away(M, src))) - M.throw_at(throw_target, 3, 2) - -/obj/item/projectile/bullet/meteorshot/New() - ..() - SpinAnimation() - +// Mime /obj/item/projectile/bullet/mime damage = 20 @@ -181,6 +347,7 @@ var/mob/living/carbon/M = target M.silent = max(M.silent, 10) +// Darts /obj/item/projectile/bullet/dart name = "dart" @@ -210,7 +377,7 @@ ..(target, blocked) reagents.set_reacting(TRUE) reagents.handle_reactions() - return 1 + return TRUE /obj/item/projectile/bullet/dart/metalfoam/New() ..() @@ -223,18 +390,7 @@ name = "syringe" icon_state = "syringeproj" -/obj/item/projectile/bullet/neurotoxin - name = "neurotoxin spit" - icon_state = "neurotoxin" - damage = 5 - damage_type = TOX - knockdown = 100 - -/obj/item/projectile/bullet/neurotoxin/on_hit(atom/target, blocked = FALSE) - if(isalien(target)) - knockdown = 0 - nodamage = 1 - . = ..() // Execute the rest of the code. +// DNA injector /obj/item/projectile/bullet/dnainjector name = "\improper DNA injector" @@ -261,121 +417,3 @@ QDEL_NULL(injector) return ..() -//// SNIPER BULLETS - -/obj/item/projectile/bullet/sniper - speed = 0 //360 alwaysscope. - damage = 70 - knockdown = 100 - dismemberment = 50 - armour_penetration = 50 - var/breakthings = TRUE - -/obj/item/projectile/bullet/sniper/on_hit(atom/target, blocked = FALSE) - if((blocked != 100) && (!ismob(target) && breakthings)) - target.ex_act(rand(1,2)) - return ..() - -/obj/item/projectile/bullet/sniper/gang - damage = 55 - knockdown = 20 - dismemberment = 15 - armour_penetration = 25 - -/obj/item/projectile/bullet/sniper/gang/sleeper - nodamage = 1 - knockdown = 0 - dismemberment = 0 - breakthings = FALSE - -/obj/item/projectile/bullet/sniper/gang/sleeper/on_hit(atom/target, blocked = FALSE) - if((blocked != 100) && isliving(target)) - var/mob/living/L = target - L.blur_eyes(8) - if(L.staminaloss >= 40) - L.Sleeping(400) - else - L.adjustStaminaLoss(55) - return 1 - -/obj/item/projectile/bullet/sniper/soporific - armour_penetration = 0 - nodamage = 1 - dismemberment = 0 - knockdown = 0 - breakthings = FALSE - -/obj/item/projectile/bullet/sniper/soporific/on_hit(atom/target, blocked = FALSE) - if((blocked != 100) && isliving(target)) - var/mob/living/L = target - L.Sleeping(400) - return ..() - - -/obj/item/projectile/bullet/sniper/haemorrhage - armour_penetration = 15 - damage = 15 - dismemberment = 0 - knockdown = 0 - breakthings = FALSE - -/obj/item/projectile/bullet/sniper/haemorrhage/on_hit(atom/target, blocked = FALSE) - if((blocked != 100) && iscarbon(target)) - var/mob/living/carbon/C = target - C.bleed(100) - return ..() - - -/obj/item/projectile/bullet/sniper/penetrator - icon_state = "gauss" - name = "penetrator round" - damage = 60 - forcedodge = 1 - dismemberment = 0 //It goes through you cleanly. - knockdown = 0 - breakthings = FALSE - - - -//// SAW BULLETS - - -/obj/item/projectile/bullet/saw - damage = 45 - armour_penetration = 5 - -/obj/item/projectile/bullet/saw/bleeding - damage = 20 - armour_penetration = 0 - -/obj/item/projectile/bullet/saw/bleeding/on_hit(atom/target, blocked = FALSE) - . = ..() - if((blocked != 100) && iscarbon(target)) - var/mob/living/carbon/C = target - C.bleed(35) - -/obj/item/projectile/bullet/saw/hollow - damage = 60 - armour_penetration = -60 - -/obj/item/projectile/bullet/saw/ap - damage = 40 - armour_penetration = 75 - -/obj/item/projectile/bullet/saw/incen - damage = 7 - armour_penetration = 0 - -/obj/item/projectile/bullet/saw/incen/Move() - ..() - var/turf/location = get_turf(src) - if(location) - new /obj/effect/hotspot(location) - location.hotspot_expose(700, 50, 1) - -/obj/item/projectile/bullet/saw/incen/on_hit(atom/target, blocked = FALSE) - . = ..() - if(iscarbon(target)) - var/mob/living/carbon/M = target - M.adjust_fire_stacks(3) - M.IgniteMob() diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index f9f7686a467..79a3d51eece 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -32,17 +32,6 @@ 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 - -/obj/item/projectile/bullet/a40mm/on_hit(atom/target, blocked = FALSE) - ..() - explosion(target, -1, 0, 2, 1, 0, flame_range = 3) - return 1 - /obj/item/projectile/bullet/a84mm name ="anti-armour rocket" desc = "USE A WEEL GUN" @@ -184,16 +173,6 @@ qdel(src) gun.create_portal(src, get_turf(src)) -/obj/item/projectile/bullet/frag12 - name ="explosive slug" - damage = 25 - knockdown = 50 - -/obj/item/projectile/bullet/frag12/on_hit(atom/target, blocked = FALSE) - ..() - explosion(target, -1, 0, 1) - return 1 - /obj/item/projectile/plasma name = "plasma blast" icon_state = "plasmacutter" @@ -616,3 +595,19 @@ /obj/item/projectile/hallucination/death/hal_apply_effect() new /datum/hallucination/death(hal_target, TRUE) + +// Neurotoxin + +/obj/item/projectile/bullet/neurotoxin + name = "neurotoxin spit" + icon_state = "neurotoxin" + damage = 5 + damage_type = TOX + knockdown = 100 + +/obj/item/projectile/bullet/neurotoxin/on_hit(atom/target, blocked = FALSE) + if(isalien(target)) + knockdown = 0 + nodamage = TRUE + return ..() + diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index a03b8c8127e..89adfe8edc6 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -203,13 +203,6 @@ materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_GLASS = 1000) build_path = /obj/item/ammo_box/magazine/wt550m9/wtic -/datum/design/mag_oldsmg/tx_mag - name = "WT-550 Auto Gun Uranium Magazine (4.6x30mm TX)" - desc = "A 20 round uranium tipped magazine for the out of date security WT-550 Auto Rifle" - id = "mag_oldsmg_tx" - materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_URANIUM = 2000) - build_path = /obj/item/ammo_box/magazine/wt550m9/wttx - /datum/design/stunshell name = "Stun Shell" desc = "A stunning shell for a shotgun." diff --git a/code/modules/spells/spell_types/mime.dm b/code/modules/spells/spell_types/mime.dm index 55f225c64d7..28960fce31f 100644 --- a/code/modules/spells/spell_types/mime.dm +++ b/code/modules/spells/spell_types/mime.dm @@ -98,7 +98,7 @@ invocation_type = "emote" invocation_emote_self = "You fire your finger gun!" range = 20 - projectile_type = /obj/item/projectile/bullet/weakbullet2 + projectile_type = /obj/item/projectile/bullet/mime projectile_amount = 3 sound = null active_msg = "You draw your fingers!" diff --git a/code/modules/uplink/uplink_item.dm b/code/modules/uplink/uplink_item.dm index 8cf1515153a..b3cc6075bd4 100644 --- a/code/modules/uplink/uplink_item.dm +++ b/code/modules/uplink/uplink_item.dm @@ -165,7 +165,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. /datum/uplink_item/nukeoffer/sniper name = "Sniper bundle" desc = "Elegant and refined: Contains a collapsed sniper rifle in an expensive carrying case, a hollow-point \ - haemorrhage magazine, a soporific knockout magazine, a free surplus supressor, and a worn out suit and tie." + a soporific knockout magazine, a free surplus supressor, and a worn out suit and tie." item = /obj/item/storage/briefcase/sniperbundle cost = 20 // normally 26 @@ -443,11 +443,11 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. item = /obj/item/ammo_box/magazine/m12g/dragon include_modes = list(/datum/game_mode/nuclear) -/datum/uplink_item/ammo/shotgun/breach - name = "12g Breaching Shells" - desc = "An economic variant of the CMC meteorshot slugs, not as effective for knocking \ - down targets, but still great for blasting airlocks off their frames." - item = /obj/item/ammo_box/magazine/m12g/breach +/datum/uplink_item/ammo/shotgun/meteor + name = "12g Meteorslug Shells" + desc = "An alternative 8-round meteorslug magazine for use in the Bulldog shotgun. \ + Great for blasting airlocks off their frames." + item = /obj/item/ammo_box/magazine/m12g/meteor include_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/ammo/shotgun/bag @@ -482,12 +482,6 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. By the time you need to use this, you'll already be on a pile of corpses." item = /obj/item/ammo_box/magazine/mm195x129 -/datum/uplink_item/ammo/machinegun/bleeding - name = "1.95x129mm (Bleeding) Box Magazine" - desc = "A 50-round magazine of 1.95x129mm ammunition for use in the L6 SAW; equipped with special properties \ - to induce internal bleeding on targets." - item = /obj/item/ammo_box/magazine/mm195x129/bleeding - /datum/uplink_item/ammo/machinegun/hollow name = "1.95x129mm (Hollow-Point) Box Magazine" desc = "A 50-round magazine of 1.95x129mm ammunition for use in the L6 SAW; equipped with hollow-point tips to help \ @@ -521,12 +515,6 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. item = /obj/item/ammo_box/magazine/sniper_rounds/soporific cost = 6 -/datum/uplink_item/ammo/sniper/haemorrhage - name = ".50 Haemorrhage Magazine" - desc = "A 5-round magazine of haemorrhage ammo designed for use with .50 sniper rifles; causes heavy bleeding \ - in the target." - item = /obj/item/ammo_box/magazine/sniper_rounds/haemorrhage - /datum/uplink_item/ammo/sniper/penetrator name = ".50 Penetrator Magazine" desc = "A 5-round magazine of penetrator ammo designed for use with .50 sniper rifles. \