diff --git a/citadel.dme b/citadel.dme index 5a9d261dab1..f46817ae9d7 100644 --- a/citadel.dme +++ b/citadel.dme @@ -288,7 +288,9 @@ #include "code\__DEFINES\procs\saycode.dm" #include "code\__DEFINES\procs\update_icon.dm" #include "code\__DEFINES\projectiles\ammo_casing.dm" +#include "code\__DEFINES\projectiles\ammo_magazine.dm" #include "code\__DEFINES\projectiles\guns.dm" +#include "code\__DEFINES\projectiles\system.dm" #include "code\__DEFINES\radiation\flags.dm" #include "code\__DEFINES\radiation\ignore.dm" #include "code\__DEFINES\radiation\insulation.dm" @@ -1037,8 +1039,15 @@ #include "code\game\click\reachability.dm" #include "code\game\click\rig.dm" #include "code\game\click\telekinesis.dm" +#include "code\game\content\enigmas\unsorted\cursedform.dm" +#include "code\game\content\enigmas\unsorted\deadringer.dm" +#include "code\game\content\enigmas\unsorted\telecube.dm" +#include "code\game\content\factions\corporations\corporation.dm" +#include "code\game\content\factions\corporations\gorlex\items\guns\phoron_spitter.dm" +#include "code\game\content\factions\corporations\gorlex\items\guns\wild_hunt.dm" #include "code\game\content\factions\corporations\nanotrasen\nanotrasen-faction.dm" #include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply.dm" +#include "code\game\content\factions\corporations\nanotrasen\items\guns\pulse.dm" #include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\animals.dm" #include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\atmospherics.dm" #include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\contraband.dm" @@ -1050,11 +1059,6 @@ #include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\medical.dm" #include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\miscellaneous.dm" #include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\munitions.dm" -#include "code\game\content\enigmas\unsorted\cursedform.dm" -#include "code\game\content\enigmas\unsorted\deadringer.dm" -#include "code\game\content\enigmas\unsorted\telecube.dm" -#include "code\game\content\factions\corporations\corporation.dm" -#include "code\game\content\factions\corporations\nanotrasen\items\guns\pulse.dm" #include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\reagents.dm" #include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\recreation.dm" #include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\robotics.dm" @@ -4296,18 +4300,54 @@ #include "code\modules\preferences\preference_setup\vore\08_traits.dm" #include "code\modules\preferences\preference_setup\vore\09_nif.dm" #include "code\modules\preferences\preference_setup\vore\10_misc.dm" +#include "code\modules\projectiles\firing_pin.dm" #include "code\modules\projectiles\gun.dm" #include "code\modules\projectiles\gun_item_renderer.dm" #include "code\modules\projectiles\gun_mob_renderer.dm" -#include "code\modules\projectiles\pins.dm" #include "code\modules\projectiles\projectile.dm" +#include "code\modules\projectiles\ammunition\ammo_caliber.dm" #include "code\modules\projectiles\ammunition\ammo_casing.dm" -#include "code\modules\projectiles\ammunition\rounds.dm" +#include "code\modules\projectiles\ammunition\ammo_magazine.dm" +#include "code\modules\projectiles\ammunition\calibers\normal\a10g.dm" +#include "code\modules\projectiles\ammunition\calibers\normal\a10mm.dm" +#include "code\modules\projectiles\ammunition\calibers\normal\a12_7mm.dm" +#include "code\modules\projectiles\ammunition\calibers\normal\a12g.dm" +#include "code\modules\projectiles\ammunition\calibers\normal\a357.dm" +#include "code\modules\projectiles\ammunition\calibers\normal\a38.dm" +#include "code\modules\projectiles\ammunition\calibers\normal\a44.dm" +#include "code\modules\projectiles\ammunition\calibers\normal\a45.dm" +#include "code\modules\projectiles\ammunition\calibers\normal\a5_56mm.dm" +#include "code\modules\projectiles\ammunition\calibers\normal\a5_7mm.dm" +#include "code\modules\projectiles\ammunition\calibers\normal\a5mm.dm" +#include "code\modules\projectiles\ammunition\calibers\normal\a75.dm" +#include "code\modules\projectiles\ammunition\calibers\normal\a7_62mm.dm" +#include "code\modules\projectiles\ammunition\calibers\normal\a7_92mm.dm" +#include "code\modules\projectiles\ammunition\calibers\normal\a9_5mm.dm" +#include "code\modules\projectiles\ammunition\calibers\normal\a9mm.dm" +#include "code\modules\projectiles\ammunition\calibers\special\arrow.dm" +#include "code\modules\projectiles\ammunition\calibers\special\biomatter-wax.dm" +#include "code\modules\projectiles\ammunition\calibers\special\biomatter.dm" +#include "code\modules\projectiles\ammunition\calibers\special\blunderbuss.dm" +#include "code\modules\projectiles\ammunition\calibers\special\cap.dm" +#include "code\modules\projectiles\ammunition\calibers\special\dart.dm" +#include "code\modules\projectiles\ammunition\calibers\special\foam.dm" +#include "code\modules\projectiles\ammunition\calibers\special\microbattery.dm" +#include "code\modules\projectiles\ammunition\calibers\special\musket.dm" +#include "code\modules\projectiles\ammunition\calibers\special\pellet.dm" +#include "code\modules\projectiles\ammunition\calibers\special\rocket.dm" #include "code\modules\projectiles\guns\ballistic.dm" #include "code\modules\projectiles\guns\energy.dm" #include "code\modules\projectiles\guns\launcher.dm" #include "code\modules\projectiles\guns\magic.dm" #include "code\modules\projectiles\guns\vox.dm" +#include "code\modules\projectiles\guns\ballistic\microbattery\medigun.dm" +#include "code\modules\projectiles\guns\ballistic\microbattery\medigun_cells.dm" +#include "code\modules\projectiles\guns\ballistic\microbattery\microbattery-casing.dm" +#include "code\modules\projectiles\guns\ballistic\microbattery\microbattery-magazine.dm" +#include "code\modules\projectiles\guns\ballistic\microbattery\microbattery.dm" +#include "code\modules\projectiles\guns\ballistic\microbattery\revolver.dm" +#include "code\modules\projectiles\guns\ballistic\microbattery\revolver_cells.dm" +#include "code\modules\projectiles\guns\energy\frontier.dm" #include "code\modules\projectiles\guns\energy\hooklauncher.dm" #include "code\modules\projectiles\guns\energy\kinetic_accelerator.dm" #include "code\modules\projectiles\guns\energy\laser.dm" @@ -4326,10 +4366,20 @@ #include "code\modules\projectiles\guns\energy\modular\modulargun.dm" #include "code\modules\projectiles\guns\energy\modular\modularlenses.dm" #include "code\modules\projectiles\guns\energy\modular\modularpower.dm" +#include "code\modules\projectiles\guns\energy\special\hardlight_bow.dm" #include "code\modules\projectiles\guns\launcher\crossbow.dm" #include "code\modules\projectiles\guns\launcher\grenade_launcher.dm" #include "code\modules\projectiles\guns\launcher\pneumatic.dm" #include "code\modules\projectiles\guns\launcher\syringe_gun.dm" +#include "code\modules\projectiles\guns\legacy_vr_guns\bsharpoon.dm" +#include "code\modules\projectiles\guns\legacy_vr_guns\crestrose.dm" +#include "code\modules\projectiles\guns\legacy_vr_guns\custom_guns.dm" +#include "code\modules\projectiles\guns\legacy_vr_guns\dominator.dm" +#include "code\modules\projectiles\guns\legacy_vr_guns\gunsword.dm" +#include "code\modules\projectiles\guns\legacy_vr_guns\protector.dm" +#include "code\modules\projectiles\guns\legacy_vr_guns\pummeler.dm" +#include "code\modules\projectiles\guns\legacy_vr_guns\secutor.dm" +#include "code\modules\projectiles\guns\legacy_vr_guns\sickshot.dm" #include "code\modules\projectiles\guns\magic\staff.dm" #include "code\modules\projectiles\guns\magic\wand.dm" #include "code\modules\projectiles\guns\magnetic\bore.dm" @@ -4351,9 +4401,6 @@ #include "code\modules\projectiles\guns\projectile\sniper.dm" #include "code\modules\projectiles\guns\projectile\caseless\pellet.dm" #include "code\modules\projectiles\guns\projectile\sniper\collapsible_sniper.dm" -#include "code\modules\projectiles\magazines\magazine.dm" -#include "code\modules\projectiles\magazines\smartmag.dm" -#include "code\modules\projectiles\magazines\unsorted.dm" #include "code\modules\projectiles\projectile\arc.dm" #include "code\modules\projectiles\projectile\blob.dm" #include "code\modules\projectiles\projectile\bullets.dm" @@ -5027,25 +5074,11 @@ #include "code\modules\vore\eating\vorepanel_vr.dm" #include "code\modules\vore\fluffstuff\custom_boxes.dm" #include "code\modules\vore\fluffstuff\custom_clothes.dm" -#include "code\modules\vore\fluffstuff\custom_guns.dm" #include "code\modules\vore\fluffstuff\custom_items.dm" #include "code\modules\vore\fluffstuff\custom_items_cit.dm" #include "code\modules\vore\fluffstuff\custom_mecha.dm" #include "code\modules\vore\fluffstuff\custom_permits.dm" #include "code\modules\vore\fluffstuff\life_crystals.dm" -#include "code\modules\vore\fluffstuff\guns\bsharpoon.dm" -#include "code\modules\vore\fluffstuff\guns\crestrose.dm" -#include "code\modules\vore\fluffstuff\guns\dominator.dm" -#include "code\modules\vore\fluffstuff\guns\gunsword.dm" -#include "code\modules\vore\fluffstuff\guns\protector.dm" -#include "code\modules\vore\fluffstuff\guns\pummeler.dm" -#include "code\modules\vore\fluffstuff\guns\secutor.dm" -#include "code\modules\vore\fluffstuff\guns\sickshot.dm" -#include "code\modules\vore\fluffstuff\guns\cell_loaded\cell_loaded.dm" -#include "code\modules\vore\fluffstuff\guns\cell_loaded\medigun.dm" -#include "code\modules\vore\fluffstuff\guns\cell_loaded\medigun_cells.dm" -#include "code\modules\vore\fluffstuff\guns\cell_loaded\revolver.dm" -#include "code\modules\vore\fluffstuff\guns\cell_loaded\revolver_cells.dm" #include "code\modules\vore\persist\persist_vr.dm" #include "code\modules\vore\resizing\grav_pull_vr.dm" #include "code\modules\vore\resizing\holder_micro_vr.dm" diff --git a/code/__DEFINES/projectiles/ammo_casing.dm b/code/__DEFINES/projectiles/ammo_casing.dm index 607dbe251c8..87427678b77 100644 --- a/code/__DEFINES/projectiles/ammo_casing.dm +++ b/code/__DEFINES/projectiles/ammo_casing.dm @@ -1,7 +1,40 @@ -// /obj/item/ammo_casing casing_flags +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2024 silicons *// + +//* /obj/item/ammo_casing casing_flags *// + /// delete after fire (usually for caseless) #define CASING_DELETE (1<<0) +/// we're modified; otherwise, we assume that our type alone is enough to encode our information. +/// you must change this if var-changing a casing, or it might get deleted when it enters a magazine! +#define CASING_MODIFIED (1<<2) -DEFINE_BITFIELD(casing_flags, list( - BITFIELD(CASING_DELETE), +DEFINE_BITFIELD_NEW(ammo_casing_flags, list( + /obj/item/ammo_casing = list( + "casing_flags", + ), +), list( + BITFIELD_NEW("Delete after firing", CASING_DELETE), + BITFIELD_NEW("Ferromagnetic", CASING_FERROMAGNETIC), + BITFIELD_NEW("Is Modified", CASING_MODIFIED), + BITFIELD_NEW("Non Chemical", CASING_NONCHEMICAL), +)) + +//* Firing Method (Priming) Flags *// + +/// chemical propellant ignition +#define CASING_PRIMER_CHEMICAL (1<<0) +/// magnetic acceleration +#define CASING_PRIMER_MAGNETIC (1<<1) +/// activate microbattery cell +#define CASING_PRIMER_MICROBATTERY (1<<2) + +DEFINE_BITFIELD_NEW(ammo_casing_primer, list( + /obj/item/ammo_casing = list( + "casing_primer", + ), +), list( + BITFIELD_NEW("Chemical", CASING_PRIMER_CHEMICAL), + BITFIELD_NEW("Magnetic", CASING_PRIMER_MAGNETIC), + BITFIELD_NEW("Microbattery", CASING_PRIMER_MICROBATTERY), )) diff --git a/code/__DEFINES/projectiles/ammo_magazine.dm b/code/__DEFINES/projectiles/ammo_magazine.dm new file mode 100644 index 00000000000..4acb0ad2309 --- /dev/null +++ b/code/__DEFINES/projectiles/ammo_magazine.dm @@ -0,0 +1,27 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2024 silicons *// + +//* /obj/item/ammo_magazine magazine_type + +/// normal magazines +#define MAGAZINE_TYPE_NORMAL (1<<0) +/// revolver-like speedloader +#define MAGAZINE_TYPE_SPEEDLOADER (1<<1) +/// stripper clip +#define MAGAZINE_TYPE_CLIP (1<<2) +/// loose pouch +#define MAGAZINE_TYPE_POUCH (1<<3) +/// structured box +#define MAGAZINE_TYPE_BOX (1<<3) + +DEFINE_BITFIELD_NEW(ammo_magazine_types, list( + /obj/item/ammo_magazine = list( + "magazine_type", + ), +), list( + BITFIELD_NEW("Normal", MAGAZINE_TYPE_NORMAL), + BITFIELD_NEW("Speedloader", MAGAZINE_TYPE_SPEEDLOADER), + BITFIELD_NEW("Stripper Clip", MAGAZINE_TYPE_CLIP), + BITFIELD_NEW("Ammo Pouch", MAGAZINE_TYPE_POUCH), + BITFIELD_NEW("Ammo Box", MAGAZINE_TYPE_BOX), +)) diff --git a/code/__DEFINES/projectiles/system.dm b/code/__DEFINES/projectiles/system.dm new file mode 100644 index 00000000000..fafd60aac2c --- /dev/null +++ b/code/__DEFINES/projectiles/system.dm @@ -0,0 +1,15 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2024 silicons *// + +//* rendering system +//* this is currently only used on ammo magazines, as guns use composition of datums +//* to determine their renderers instead. + +/// no automatic rendering +#define GUN_RENDERING_DISABLED 0 +/// overlay rendering +#define GUN_RENDERING_OVERLAYS 1 +/// state rendering +#define GUN_RENDERING_STATES 2 +/// for some guns, we render segmented overlays with offsets +#define GUN_RENDERING_SEGMENTS 3 diff --git a/code/datums/design/designs/ammo/lmg.dm b/code/datums/design/designs/ammo/lmg.dm index 574e8671143..a88fe827dea 100644 --- a/code/datums/design/designs/ammo/lmg.dm +++ b/code/datums/design/designs/ammo/lmg.dm @@ -5,6 +5,6 @@ id = "AmmoLMG545mm" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m556saw + build_path = /obj/item/ammo_magazine/a5_56mm/saw diff --git a/code/datums/design/designs/ammo/pistol.dm b/code/datums/design/designs/ammo/pistol.dm index fbc59829f71..87364154cad 100644 --- a/code/datums/design/designs/ammo/pistol.dm +++ b/code/datums/design/designs/ammo/pistol.dm @@ -5,73 +5,73 @@ id = "AmmoPistol44" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m44 + build_path = /obj/item/ammo_magazine/a44 /datum/design/ammo/pistol/a44_rubber id = "AmmoPistol44Rubber" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m44/rubber + build_path = /obj/item/ammo_magazine/a44/rubber /datum/design/ammo/pistol/a45 id = "AmmoPistol45" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m45 + build_path = /obj/item/ammo_magazine/a45 /datum/design/ammo/pistol/a45_hunter id = "AmmoPistol45Hunter" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m45/hunter + build_path = /obj/item/ammo_magazine/a45/hunter /datum/design/ammo/pistol/a45_practice id = "AmmoPistol45Practice" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m45/practice + build_path = /obj/item/ammo_magazine/a45/practice /datum/design/ammo/pistol/a45_rubber id = "AmmoPistol45Rubber" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m45/rubber + build_path = /obj/item/ammo_magazine/a45/rubber /datum/design/ammo/pistol/a45_flash id = "AmmoPistol45Flash" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m45/flash + build_path = /obj/item/ammo_magazine/a45/flash /datum/design/ammo/pistol/a45_uzi id = "AmmoUzi45" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m45uzi + build_path = /obj/item/ammo_magazine/a45/uzi /datum/design/ammo/pistol/a9mm id = "AmmoPistol9mm" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m9mm + build_path = /obj/item/ammo_magazine/a9mm /datum/design/ammo/pistol/a9mm_rubber id = "AmmoPistol9mmRubber" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m9mm/rubber + build_path = /obj/item/ammo_magazine/a9mm/rubber /datum/design/ammo/pistol/a9mm_practice id = "AmmoPistol9mmPractice" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m9mm/practice + build_path = /obj/item/ammo_magazine/a9mm/practice /datum/design/ammo/pistol/a9mm_flash id = "AmmoPistol9mmFlash" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m9mm/flash + build_path = /obj/item/ammo_magazine/a9mm/flash /datum/design/ammo/pistol/compact abstract_type = /datum/design/ammo/pistol/compact @@ -80,22 +80,22 @@ id = "AmmoCompact9mm" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m9mm/compact + build_path = /obj/item/ammo_magazine/a9mm/compact /datum/design/ammo/pistol/compact/a9mm_rubber id = "AmmoCompact9mmRubber" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m9mm/compact/rubber + build_path = /obj/item/ammo_magazine/a9mm/compact/rubber /datum/design/ammo/pistol/compact/a9mm_practice id = "AmmoCompact9mmPractice" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m9mm/compact/practice + build_path = /obj/item/ammo_magazine/a9mm/compact/practice /datum/design/ammo/pistol/compact/a9mm_flash id = "AmmoCompact9mmFlash" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m9mm/compact/flash + build_path = /obj/item/ammo_magazine/a9mm/compact/flash diff --git a/code/datums/design/designs/ammo/revolver.dm b/code/datums/design/designs/ammo/revolver.dm index b82d458525c..255872489a6 100644 --- a/code/datums/design/designs/ammo/revolver.dm +++ b/code/datums/design/designs/ammo/revolver.dm @@ -5,58 +5,58 @@ id = "AmmoSpeedloader357" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/s357 + build_path = /obj/item/ammo_magazine/a357/speedloader /datum/design/ammo/revolver/a357_flash id = "AmmoSpeedloader357Flash" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/s357/flash + build_path = /obj/item/ammo_magazine/a357/speedloader/flash /datum/design/ammo/revolver/a357_stun id = "AmmoSpeedloader357Stun" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/s357/stun + build_path = /obj/item/ammo_magazine/a357/speedloader/stun /datum/design/ammo/revolver/a357_rubber id = "AmmoSpeedloader357Rubber" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/s357/rubber + build_path = /obj/item/ammo_magazine/a357/speedloader/rubber /datum/design/ammo/revolver/a38 id = "AmmoSpeedloader38" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/s38 + build_path = /obj/item/ammo_magazine/a38/speedloader /datum/design/ammo/revolver/a38_rubber id = "AmmoSpeedloader38Rubber" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/s38/rubber + build_path = /obj/item/ammo_magazine/a38/speedloader/rubber /datum/design/ammo/revolver/a44 id = "AmmoSpeedloader44" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/s44 + build_path = /obj/item/ammo_magazine/a44/speedloader /datum/design/ammo/revolver/a44_rubber id = "AmmoSpeedloader44Rubber" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/s44/rubber + build_path = /obj/item/ammo_magazine/a44/speedloader/rubber /datum/design/ammo/revolver/a45 id = "AmmoSpeedloader45" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/s45 + build_path = /obj/item/ammo_magazine/a45/speedloader /datum/design/ammo/revolver/a45_rubber id = "AmmoSpeedloader45Rubber" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/s45/rubber + build_path = /obj/item/ammo_magazine/a45/speedloader/rubber diff --git a/code/datums/design/designs/ammo/rife.dm b/code/datums/design/designs/ammo/rife.dm index 7ce90849452..c132d142bc7 100644 --- a/code/datums/design/designs/ammo/rife.dm +++ b/code/datums/design/designs/ammo/rife.dm @@ -5,40 +5,40 @@ id = "AmmoRifle762mm" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m762 + build_path = /obj/item/ammo_magazine/a7_62mm /datum/design/ammo/rifle/m556mm id = "AmmoRifle545mm" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m556 + build_path = /obj/item/ammo_magazine/a5_56mm /datum/design/ammo/rifle/m556mm_practice id = "AmmoRifle545mmPractice" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m556/practice + build_path = /obj/item/ammo_magazine/a5_56mm/practice /datum/design/ammo/rifle/c545mm id = "AmmoClip545mm" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/clip/c545 + build_path = /obj/item/ammo_magazine/a5_56mm/clip /datum/design/ammo/rifle/c545mm_practice id = "AmmoClip545mmPractice" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/clip/c545/practice + build_path = /obj/item/ammo_magazine/a5_56mm/clip/practice /datum/design/ammo/rifle/c762 id = "AmmoClip762mm" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/clip/c762 + build_path = /obj/item/ammo_magazine/a7_62mm/clip /datum/design/ammo/rifle/c762_practice id = "AmmoClip762mmPractice" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/clip/c762/practice + build_path = /obj/item/ammo_magazine/a7_62mm/clip/practice diff --git a/code/datums/design/designs/ammo/shotgun.dm b/code/datums/design/designs/ammo/shotgun.dm index dabe1b82cb4..6e4b94e753b 100644 --- a/code/datums/design/designs/ammo/shotgun.dm +++ b/code/datums/design/designs/ammo/shotgun.dm @@ -49,22 +49,22 @@ id = "ClipShotgunBeanbag2" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/clip/c12g/beanbag + build_path = /obj/item/ammo_magazine/a12g/clip/beanbag /datum/design/ammo/shotgun/clip/dual/slug id = "ClipShotgunSlug2" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/clip/c12g + build_path = /obj/item/ammo_magazine/a12g/clip /datum/design/ammo/shotgun/clip/dual/buckshot id = "ClipShotgunBuckshot2" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/clip/c12g/pellet + build_path = /obj/item/ammo_magazine/a12g/clip/pellet /datum/design/ammo/shotgun/pouch id = "ShotgunShellPouch" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/shotholder + build_path = /obj/item/ammo_magazine/a12g/pouch diff --git a/code/datums/design/designs/ammo/smg.dm b/code/datums/design/designs/ammo/smg.dm index 8c268b582b5..68a9a3411da 100644 --- a/code/datums/design/designs/ammo/smg.dm +++ b/code/datums/design/designs/ammo/smg.dm @@ -5,52 +5,52 @@ id = "AmmoSMG9mmT" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m9mmt + build_path = /obj/item/ammo_magazine/a9mm/top_mount /datum/design/ammo/smg/a9mm_hunter_t id = "AmmoSMG9mmHunterT" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m9mmt/hunter + build_path = /obj/item/ammo_magazine/a9mm/top_mount/hunter /datum/design/ammo/smg/a9mm_rubber_t id = "AmmoSMG9mmRubberT" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m9mmt/rubber + build_path = /obj/item/ammo_magazine/a9mm/top_mount/rubber /datum/design/ammo/smg/a9mm_practice_t id = "AmmoSMG9mmPracticeT" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m9mmt/practice + build_path = /obj/item/ammo_magazine/a9mm/top_mount/practice /datum/design/ammo/smg/a9mm_flash_t id = "AmmoSMG9mmFlashT" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m9mmt/flash + build_path = /obj/item/ammo_magazine/a9mm/top_mount/flash /datum/design/ammo/smg/a9mm id = "AmmoSMG9mm" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m9mml + build_path = /obj/item/ammo_magazine/a9mm/large /datum/design/ammo/smg/a10mm id = "AmmoSMG10mm" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m10mm + build_path = /obj/item/ammo_magazine/a10mm /datum/design/ammo/smg/a45tommy id = "AmmoSMG45Tommy" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m45tommy + build_path = /obj/item/ammo_magazine/a45/tommy /datum/design/ammo/smg/a45tommydrum id = "AmmoSMG45TommyDrum" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - build_path = /obj/item/ammo_magazine/m45tommydrum + build_path = /obj/item/ammo_magazine/a45/tommy/drum diff --git a/code/datums/outfits/horror_killers.dm b/code/datums/outfits/horror_killers.dm index d28dfa48ff3..87ce4e99270 100644 --- a/code/datums/outfits/horror_killers.dm +++ b/code/datums/outfits/horror_killers.dm @@ -57,7 +57,7 @@ sec_briefcase.contents += new /obj/item/spacecash/c1000 sec_briefcase.contents += new /obj/item/gun/energy/crossbow sec_briefcase.contents += new /obj/item/gun/ballistic/revolver/mateba - sec_briefcase.contents += new /obj/item/ammo_magazine/s357 + sec_briefcase.contents += new /obj/item/ammo_magazine/a357/speedloader sec_briefcase.contents += new /obj/item/plastique H.equip_to_slot_or_del(sec_briefcase, /datum/inventory_slot/abstract/hand/left) diff --git a/code/datums/outfits/outfit.dm b/code/datums/outfits/outfit.dm index 5c2ef580402..e9f5223c5e0 100644 --- a/code/datums/outfits/outfit.dm +++ b/code/datums/outfits/outfit.dm @@ -218,8 +218,8 @@ uniform = /obj/item/clothing/under/oricon/mildress/marine/command back = /obj/item/storage/backpack/satchel belt = /obj/item/gun/ballistic/revolver/consul - l_pocket = /obj/item/ammo_magazine/s44 - r_pocket = /obj/item/ammo_magazine/s44 + l_pocket = /obj/item/ammo_magazine/a44/speedloader + r_pocket = /obj/item/ammo_magazine/a44/speedloader r_hand = /obj/item/clothing/accessory/holster/hip l_hand = /obj/item/clothing/accessory/tie/black diff --git a/code/datums/outfits/pirates.dm b/code/datums/outfits/pirates.dm index 81f725cb4c1..3208e284a18 100644 --- a/code/datums/outfits/pirates.dm +++ b/code/datums/outfits/pirates.dm @@ -27,7 +27,7 @@ back = /obj/item/tank/vox l_hand = /obj/item/melee/energy/sword/pirate r_hand = /obj/item/gun/ballistic/shotgun/pump/rifle/vox_hunting - l_pocket = /obj/item/ammo_magazine/clip/c762 - r_pocket = /obj/item/ammo_magazine/clip/c762 + l_pocket = /obj/item/ammo_magazine/a7_62mm/clip + r_pocket = /obj/item/ammo_magazine/a7_62mm/clip var/faction = "voxpirate" diff --git a/code/datums/outfits/tournament.dm b/code/datums/outfits/tournament.dm index 04cd481c78f..25b64c6ebda 100644 --- a/code/datums/outfits/tournament.dm +++ b/code/datums/outfits/tournament.dm @@ -23,7 +23,7 @@ suit_store = /obj/item/clothing/suit/storage/det_trench glasses = /obj/item/clothing/glasses/thermal/plain/monocle r_hand = /obj/item/gun/ballistic/revolver - l_pocket = /obj/item/ammo_magazine/s357 + l_pocket = /obj/item/ammo_magazine/a357/speedloader /datum/outfit/tournament_gear/chef name = "Tournament gear - Chef" diff --git a/code/datums/recipe/crafting_recipes/recipes_weapon_and_ammo.dm b/code/datums/recipe/crafting_recipes/recipes_weapon_and_ammo.dm index 7bd926e0b30..12f5948ba16 100644 --- a/code/datums/recipe/crafting_recipes/recipes_weapon_and_ammo.dm +++ b/code/datums/recipe/crafting_recipes/recipes_weapon_and_ammo.dm @@ -351,7 +351,7 @@ name = "Protoype Dart Gun (Rapid)" result = /obj/item/gun/ballistic/dartgun reqs = list( - /obj/item/ammo_casing/chemdart = 1, + /obj/item/ammo_casing/dart/chemdart = 1, /obj/item/stack/material/plastic = 5, /obj/item/stack/cable_coil = 1, /obj/item/reagent_containers/glass/beaker = 1 @@ -492,7 +492,7 @@ //Munitions /datum/crafting_recipe/smartdart name = "Chemical Dart" - result = /obj/item/ammo_casing/chemdart + result = /obj/item/ammo_casing/dart/chemdart reqs = list(/obj/item/stack/material/steel = 1, /obj/item/stack/material/glass = 1, /obj/item/stack/material/plastic = 1) diff --git a/code/datums/uplink/ammunition.dm b/code/datums/uplink/ammunition.dm index 94bd64cee26..407768b7ecf 100644 --- a/code/datums/uplink/ammunition.dm +++ b/code/datums/uplink/ammunition.dm @@ -8,53 +8,53 @@ /datum/uplink_item/item/ammo/a357 name = ".357 Speedloader" - path = /obj/item/ammo_magazine/s357 + path = /obj/item/ammo_magazine/a357/speedloader /datum/uplink_item/item/ammo/mc9mm_compact name = "Compact Pistol Magazine (9mm)" - path = /obj/item/ammo_magazine/m9mm/compact + path = /obj/item/ammo_magazine/a9mm/compact /datum/uplink_item/item/ammo/mc9mm name = "Pistol Magazine (9mm)" - path = /obj/item/ammo_magazine/m9mm + path = /obj/item/ammo_magazine/a9mm /datum/uplink_item/item/ammo/mc9mm_large name = "Large Capacity Pistol Magazine (9mm)" - path = /obj/item/ammo_magazine/m9mm/large + path = /obj/item/ammo_magazine/a9mm/large item_cost = 40 /datum/uplink_item/item/ammo/c45m name = "Pistol Magazine (.45)" - path = /obj/item/ammo_magazine/m45 + path = /obj/item/ammo_magazine/a45 /datum/uplink_item/item/ammo/c45map name = "Pistol Magazine (.45 AP)" - path = /obj/item/ammo_magazine/m45/ap + path = /obj/item/ammo_magazine/a45/ap /datum/uplink_item/item/ammo/s45m name = "Speedloader (.45)" - path = /obj/item/ammo_magazine/s45 + path = /obj/item/ammo_magazine/a45/speedloader /datum/uplink_item/item/ammo/s45map name = "Speedloader (.45 AP)" - path = /obj/item/ammo_magazine/s45/ap + path = /obj/item/ammo_magazine/a45/speedloader/ap /datum/uplink_item/item/ammo/tommymag name = "Tommy Gun Magazine (.45)" - path = /obj/item/ammo_magazine/m45tommy + path = /obj/item/ammo_magazine/a45/tommy /datum/uplink_item/item/ammo/tommymagap name = "Tommy Gun Magazine (.45 AP)" - path = /obj/item/ammo_magazine/m45tommy/ap + path = /obj/item/ammo_magazine/a45/tommy/ap /datum/uplink_item/item/ammo/tommydrum name = "Tommy Gun Drum Magazine (.45)" - path = /obj/item/ammo_magazine/m45tommydrum + path = /obj/item/ammo_magazine/a45/tommy/drum item_cost = 40 /datum/uplink_item/item/ammo/tommydrumap name = "Tommy Gun Drum Magazine (.45 AP)" - path = /obj/item/ammo_magazine/m45tommydrum/ap + path = /obj/item/ammo_magazine/a45/tommy/drum/ap /datum/uplink_item/item/ammo/darts name = "Darts" @@ -67,39 +67,39 @@ /datum/uplink_item/item/ammo/c545 name = "Rifle Magazine (5.56mm)" - path = /obj/item/ammo_magazine/m556 + path = /obj/item/ammo_magazine/a5_56mm /datum/uplink_item/item/ammo/c545/ext name = "Rifle Magazine (5.56mm Extended)" - path = /obj/item/ammo_magazine/m556/ext + path = /obj/item/ammo_magazine/a5_56mm/ext /datum/uplink_item/item/ammo/c545/ap name = "Rifle Magazine (5.56mm AP)" - path = /obj/item/ammo_magazine/m556/ap + path = /obj/item/ammo_magazine/a5_56mm/ap /datum/uplink_item/item/ammo/c545/ap/ext name = "Rifle Magazine (5.56mm AP Extended)" - path = /obj/item/ammo_magazine/m556/ap/ext + path = /obj/item/ammo_magazine/a5_56mm/ap/ext /datum/uplink_item/item/ammo/c762 name = "Rifle Magazine (7.62mm)" - path = /obj/item/ammo_magazine/m762 + path = /obj/item/ammo_magazine/a7_62mm /datum/uplink_item/item/ammo/c762/ap name = "Rifle Magazine (7.62mm AP)" - path = /obj/item/ammo_magazine/m762/ap + path = /obj/item/ammo_magazine/a7_62mm/ap /datum/uplink_item/item/ammo/a10mm name = "SMG Magazine (10mm)" - path = /obj/item/ammo_magazine/m10mm + path = /obj/item/ammo_magazine/a10mm /datum/uplink_item/item/ammo/a556 name = "Machinegun Magazine (5.56mm)" - path = /obj/item/ammo_magazine/m556saw + path = /obj/item/ammo_magazine/a5_56mm/saw /datum/uplink_item/item/ammo/a556/ap name = "Machinegun Magazine (5.56mm AP)" - path = /obj/item/ammo_magazine/m556saw/ap + path = /obj/item/ammo_magazine/a5_56mm/saw/ap /datum/uplink_item/item/ammo/g12 name = "12g Shotgun Ammo Box (Slug)" diff --git a/code/game/antagonist/outsider/commando.dm b/code/game/antagonist/outsider/commando.dm index 77aecd941ee..6093faca4f1 100644 --- a/code/game/antagonist/outsider/commando.dm +++ b/code/game/antagonist/outsider/commando.dm @@ -28,7 +28,7 @@ var/datum/antagonist/deathsquad/mercenary/commandos player.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal(player), SLOT_ID_GLASSES) player.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/syndicate(player), SLOT_ID_MASK) player.equip_to_slot_or_del(new /obj/item/storage/box(player), /datum/inventory_slot/abstract/put_in_backpack) - player.equip_to_slot_or_del(new /obj/item/ammo_magazine/clip/c45(player), /datum/inventory_slot/abstract/put_in_backpack) + player.equip_to_slot_or_del(new /obj/item/ammo_magazine/a45/clip(player), /datum/inventory_slot/abstract/put_in_backpack) player.equip_to_slot_or_del(new /obj/item/hardsuit/merc(player), SLOT_ID_BACK) player.equip_to_slot_or_del(new /obj/item/gun/ballistic/automatic/c20r(player), /datum/inventory_slot/abstract/hand/right) diff --git a/code/game/content/factions/corporations/gorlex/items/guns/phoron_spitter.dm b/code/game/content/factions/corporations/gorlex/items/guns/phoron_spitter.dm new file mode 100644 index 00000000000..c42d565c765 --- /dev/null +++ b/code/game/content/factions/corporations/gorlex/items/guns/phoron_spitter.dm @@ -0,0 +1,71 @@ + +/obj/item/gun/ballistic/caseless/phoron_spitter // phoron war SMG that fires phoron shards. + name = "Gorlex 'SHRAPNEL-SPITTER' Phoron SMG" + desc = "A short-barrel SMG from the Phoron Wars that lacks conventional ammo, instead using compressed matter cartridges. Coils accelerate a ferromagnetic, self-oxidizing cloud of alloy. Lack of traditional cycling means it can fire blindingly fast. Like all caseless weapons, it's fallen by the wayside, and is no longer produced." + w_class = WEIGHT_CLASS_BULKY + slot_flags = SLOT_BACK + load_method = MAGAZINE + regex_this_caliber = /datum/ammo_caliber/phoron_shrap + magazine_type = /obj/item/ammo_magazine/phoron_shrap + allowed_magazines = list(/obj/item/ammo_magazine/phoron_shrap) + + icon = 'icons/content/factions/corporations/gorlex/items/guns/phoron_spitter.dmi' + icon_state = "gun" + + recoil = 1.5 + accuracy = -30 + one_handed_penalty = 50 + auto_eject = 1 + auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg' + fire_sound = 'sound/weapons/gunshot/gunshot_tech_smg.ogg' + + firemodes = list( + list(mode_name="full auto", burst=1, fire_delay=-1, move_delay=null, burst_accuracy=null, dispersion=null, automatic = 1), + list(mode_name="fuller auto", burst=2, fire_delay=-1, move_delay=null, burst_accuracy=null, dispersion=null, automatic = 1) + ) + +/obj/item/gun/ballistic/caseless/phoron_spitter/Initialize(mapload) + . = ..() + var/fluff_date = rand(2501,2543) + desc += "\nYou see a stamp on the side: GORLEX MARAUDERS, MANUFACTURED IN [fluff_date]." + +// todo: gun rendering system +/obj/item/gun/ballistic/caseless/phoron_spitter/update_icon_state() + . = ..() + if(ammo_magazine) + icon_state = initial(icon_state) + else + icon_state = "[initial(icon_state)]-empty" + +//* Caliber *// + +/datum/ammo_caliber/phoron_shrap + caliber = "phoron-shrapnel" + +//* Ammunition *// + +/obj/item/ammo_casing/phoron_shrap + name = "phoron shrapnel" + desc = "Should you really be holding this?" + + icon = 'icons/content/factions/corporations/gorlex/items/guns/phoron_spitter.dmi' + icon_state = "shrapnel" + + regex_this_caliber = /datum/ammo_caliber/phoron_shrap + projectile_type = /obj/projectile/bullet/incendiary/phoronshrap + casing_flags = CASING_DELETE + +//* Magazine *// + +/obj/item/ammo_magazine/phoron_shrap + name = "compressed phoron matter container" + desc = "A compressed matter container meant for the Gorlex SHRAPNEL-SPITTER SMG. Contains a phoron alloy that self-oxidzes and ignites on contact with air. \n \nThey're in good shape for the shape they're in, \nbut God, I wonder how they think they can win, \nwith phoron rolling down their skin." + ammo_max = 40 + ammo_caliber = /datum/ammo_caliber/phoron_shrap + ammo_type = /obj/item/ammo_casing/phoron_shrap + + icon = 'icons/content/factions/corporations/gorlex/items/guns/phoron_spitter.dmi' + icon_state = "mag-1" + base_icon_state = "mag" + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 diff --git a/code/game/content/factions/corporations/gorlex/items/guns/wild_hunt.dm b/code/game/content/factions/corporations/gorlex/items/guns/wild_hunt.dm new file mode 100644 index 00000000000..0994de35363 --- /dev/null +++ b/code/game/content/factions/corporations/gorlex/items/guns/wild_hunt.dm @@ -0,0 +1,50 @@ +/obj/item/gun/ballistic/caseless/wild_hunt //extremely powerful and rare rifle - meant to spawn with maybe 2 mags extra, or be for asset protection/ert/solo antags/etc + name = "Gorlex WILD-HUNT 12.7mm Caseless Rifle" + desc = "An ancient rifle of the Phoron Wars. For when you want to kill something with no negotiation. The Wild Hunt is a beast that kicks like a mule and fires experimental caseless phoron rounds. It has, obviously, horrific results, setting targets on fire after giving them a golf-ball sized hole. Now generally disused due to the extreme maintenance cost and impracticality. Nobody makes these, anymore." + icon_state = "rifle" + inhand_state = "rifle" + icon = 'icons/content/factions/corporations/gorlex/items/guns/wild_hunt.dmi' + w_class = WEIGHT_CLASS_BULKY + slot_flags = SLOT_BACK + regex_this_caliber = /datum/ammo_caliber/a12_7mm + load_method = MAGAZINE + magazine_type = /obj/item/ammo_magazine/a12_7mm/wild_hunt + recoil = 1 + accuracy = -10 + allowed_magazines = list(/obj/item/ammo_magazine/a12_7mm/wild_hunt) + one_handed_penalty = 100 //you simply do not + auto_eject = 1 + auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg' + fire_sound = 'sound/weapons/gunshot/gunshot_tech_huge.ogg' + render_use_legacy_by_default = FALSE + + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="automatic", burst=1, fire_delay=-1, move_delay=null, burst_accuracy=null, dispersion=null, automatic = 1) + ) + + item_renderer = /datum/gun_item_renderer + +// todo: gun rendering system +/obj/item/gun/ballistic/caseless/wild_hunt/update_icon_state() + . = ..() + if(ammo_magazine) + icon_state = initial(icon_state) + else + icon_state = "[initial(icon_state)]-empty" + +/obj/item/gun/ballistic/caseless/wild_hunt/Initialize(mapload) + . = ..() + var/fluff_date = rand(2501,2543) + desc += "\n You see a stamp on the side: GORLEX MARAUDERS, MANUFACTURED IN [fluff_date]." + +/obj/item/ammo_magazine/a12_7mm/wild_hunt + name = "Wild Hunt magazine (12.7mm caseless)" + icon = 'icons/content/factions/corporations/gorlex/items/guns/wild_hunt.dmi' + icon_state = "mag-1" + base_icon_state = "mag" + ammo_caliber = /datum/ammo_caliber/a12_7mm + ammo_preload = /obj/item/ammo_casing/a12_7mm/phoron + ammo_max = 20 + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 diff --git a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/contraband.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/contraband.dm index bed7fbd6928..18172ed42ca 100644 --- a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/contraband.dm +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/contraband.dm @@ -41,7 +41,7 @@ name = "Weapon - Misplaced militia rifles" contains = list( /obj/item/gun/ballistic/shotgun/pump/rifle = 3, - /obj/item/ammo_magazine/clip/c762 = 6, + /obj/item/ammo_magazine/a7_62mm/clip = 6, ) legacy_contraband = 1 container_type = /obj/structure/closet/crate/secure/weapon @@ -78,8 +78,8 @@ new /obj/item/clothing/suit/storage/vest/heavy/merc(src) new /obj/item/clothing/glasses/night(src) new /obj/item/storage/box/anti_photons(src) - new /obj/item/ammo_magazine/clip/c12g/pellet(src) - new /obj/item/ammo_magazine/clip/c12g(src) + new /obj/item/ammo_magazine/a12g/clip/pellet(src) + new /obj/item/ammo_magazine/a12g/clip(src) /obj/item/storage/box/cargo_null_entry_kit/doctor name = "doctor's kit" @@ -122,7 +122,7 @@ new /obj/item/gun/energy/ionrifle/pistol(src) new /obj/item/clothing/glasses/thermal/syndi(src) new /obj/item/card/emag(src) - new /obj/item/ammo_magazine/m45/ap(src) + new /obj/item/ammo_magazine/a45/ap(src) new /obj/item/material/knife/tacknife/combatknife(src) new /obj/item/clothing/mask/balaclava(src) diff --git a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/medical.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/medical.dm index 5c11413b3a0..9e7848402f2 100644 --- a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/medical.dm +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/medical.dm @@ -375,8 +375,8 @@ /datum/supply_pack/nanotrasen/medical/medigun name = "Cell-Loaded Medigun crate" contains = list( - /obj/item/gun/ballistic/cell_loaded/medical = 1, - /obj/item/ammo_magazine/cell_mag/medical = 1, + /obj/item/gun/ballistic/microbattery/medical = 1, + /obj/item/ammo_magazine/microbattery/medical = 1, ) worth = 1500 container_type = /obj/structure/closet/crate/secure/corporate/veymed diff --git a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/munitions.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/munitions.dm index 75134297cde..d3fc78511e7 100644 --- a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/munitions.dm +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/munitions.dm @@ -109,7 +109,7 @@ contains = list( /obj/item/assembly/timer, /obj/item/gun/ballistic/shotgun/pump/rifle/practice = 2, - /obj/item/ammo_magazine/clip/c762/practice = 4, + /obj/item/ammo_magazine/a7_62mm/clip/practice = 4, /obj/item/target = 2, /obj/item/target/alien = 2, /obj/item/target/syndicate = 2, @@ -156,7 +156,7 @@ /datum/supply_pack/nanotrasen/munitions/bsmgammo name = "Ammunition - 9mm top mounted lethal" contains = list( - /obj/item/ammo_magazine/m9mmt = 6, + /obj/item/ammo_magazine/a9mm/top_mount = 6, ) worth = 250 container_name = "Ballistic ammunition crate" @@ -164,7 +164,7 @@ /datum/supply_pack/nanotrasen/munitions/bsmgammorubber name = "Ammunition - 9mm top mounted rubber" contains = list( - /obj/item/ammo_magazine/m9mmt/rubber = 6, + /obj/item/ammo_magazine/a9mm/top_mount/rubber = 6, ) worth = 250 container_type = /obj/structure/closet/crate/secure @@ -173,7 +173,7 @@ /datum/supply_pack/nanotrasen/munitions/brifleammo name = "Ammunition - 7.62mm lethal" contains = list( - /obj/item/ammo_magazine/m762 = 6, + /obj/item/ammo_magazine/a7_62mm = 6, ) worth = 250 container_type = /obj/structure/closet/crate/secure diff --git a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/recreation.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/recreation.dm index 51120d08185..7c9fefcb365 100644 --- a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/recreation.dm +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/recreation.dm @@ -179,8 +179,8 @@ contains = list( /obj/item/gun/ballistic/automatic/c20r/foam = 2, /obj/item/gun/ballistic/automatic/lmg/foam = 1, - /obj/item/ammo_magazine/mfoam/c20 = 4, - /obj/item/ammo_magazine/mfoam/lmg = 2, + /obj/item/ammo_magazine/foam/smg = 4, + /obj/item/ammo_magazine/foam/lmg = 2, /obj/item/material/twohanded/spear/foam = 2, /obj/item/material/twohanded/fireaxe/foam = 1, ) @@ -189,7 +189,7 @@ /datum/supply_pack/nanotrasen/recreation/donksoft_ammo name = "DONKsoft Resupply Bundle" contains = list( - /obj/item/storage/box/foamdart= 4, + /obj/item/ammo_magazine/foam/box= 4, ) worth = 250 diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index a1124b7d446..b016f4d0a5c 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -1,3 +1,4 @@ +// todo: dynamic recharger API on item for cell chargers, wall chargers, and device rechargers. /obj/machinery/recharger name = "recharger" desc = "A standard recharger for all devices that use power." @@ -9,7 +10,7 @@ active_power_usage = 40000 //10 kW var/efficiency = 10000 //will provide the modified power rate when upgraded var/obj/item/charging = null - var/list/allowed_devices = list(/obj/item/gun/energy, /obj/item/melee/baton, /obj/item/modular_computer, /obj/item/computer_hardware/battery_module, /obj/item/cell, /obj/item/flashlight, /obj/item/electronic_assembly, /obj/item/weldingtool/electric, /obj/item/ammo_magazine/smart, /obj/item/flash, /obj/item/ammo_casing/microbattery, /obj/item/shield_diffuser, /obj/item/ammo_magazine/cell_mag, /obj/item/gun/ballistic/cell_loaded) + var/list/allowed_devices = list(/obj/item/gun/energy, /obj/item/melee/baton, /obj/item/modular_computer, /obj/item/computer_hardware/battery_module, /obj/item/cell, /obj/item/flashlight, /obj/item/electronic_assembly, /obj/item/weldingtool/electric, /obj/item/flash, /obj/item/ammo_casing/microbattery, /obj/item/shield_diffuser, /obj/item/ammo_magazine/microbattery, /obj/item/gun/ballistic/microbattery) var/icon_state_charged = "recharger2" var/icon_state_charging = "recharger1" var/icon_state_idle = "recharger0" //also when unpowered @@ -64,16 +65,16 @@ if(EW.use_external_power) to_chat(user, "\The [EW] has no recharge port.") return - else if(istype(G, /obj/item/ammo_magazine/cell_mag)) - var/obj/item/ammo_magazine/cell_mag/maggy = G - if(maggy.stored_ammo.len < 1) + else if(istype(G, /obj/item/ammo_magazine/microbattery)) + var/obj/item/ammo_magazine/microbattery/maggy = G + if(!maggy.amount_remaining()) to_chat(user, "\The [G] does not have any cells installed.") return - else if(istype(G, /obj/item/gun/ballistic/cell_loaded)) - var/obj/item/gun/ballistic/cell_loaded/gunny = G + else if(istype(G, /obj/item/gun/ballistic/microbattery)) + var/obj/item/gun/ballistic/microbattery/gunny = G if(gunny.ammo_magazine) - var/obj/item/ammo_magazine/cell_mag/maggy = gunny.ammo_magazine - if(maggy.stored_ammo.len < 1) + var/obj/item/ammo_magazine/microbattery/maggy = gunny.ammo_magazine + if(!maggy.amount_remaining()) to_chat(user, "\The [G] does not have any cell in its magazine installed.") return else @@ -176,15 +177,15 @@ update_use_power(USE_POWER_ACTIVE) return - else if(istype(charging, /obj/item/ammo_magazine/cell_mag)) + else if(istype(charging, /obj/item/ammo_magazine/microbattery)) charge_mag(charging) - else if(istype(charging, /obj/item/gun/ballistic/cell_loaded)) - var/obj/item/gun/ballistic/cell_loaded/gunny = charging + else if(istype(charging, /obj/item/gun/ballistic/microbattery)) + var/obj/item/gun/ballistic/microbattery/gunny = charging charge_mag(gunny.ammo_magazine) -/obj/machinery/recharger/proc/charge_mag(obj/item/ammo_magazine/cell_mag/maggy) - var/tally = maggy.stored_ammo.len +/obj/machinery/recharger/proc/charge_mag(obj/item/ammo_magazine/microbattery/maggy) + var/tally = maggy.amount_remaining() for(var/obj/item/ammo_casing/microbattery/batt in maggy) if(batt.shots_left < initial(batt.shots_left)) icon_state = icon_state_charging @@ -229,7 +230,7 @@ plane = TURF_PLANE layer = ABOVE_TURF_LAYER base_power_draw = 30000 - allowed_devices = list(/obj/item/gun/energy, /obj/item/gun/magnetic, /obj/item/melee/baton, /obj/item/flashlight, /obj/item/cell/device, /obj/item/ammo_casing/microbattery, /obj/item/ammo_magazine/cell_mag, /obj/item/gun/ballistic/cell_loaded) + allowed_devices = list(/obj/item/gun/energy, /obj/item/gun/magnetic, /obj/item/melee/baton, /obj/item/flashlight, /obj/item/cell/device, /obj/item/ammo_casing/microbattery, /obj/item/ammo_magazine/microbattery, /obj/item/gun/ballistic/microbattery) icon_state_charged = "wrecharger2" icon_state_charging = "wrecharger1" icon_state_idle = "wrecharger0" diff --git a/code/game/machinery/vending/security.dm b/code/game/machinery/vending/security.dm index 96ef3f0bfbc..d00588d040f 100644 --- a/code/game/machinery/vending/security.dm +++ b/code/game/machinery/vending/security.dm @@ -13,7 +13,7 @@ /obj/item/reagent_containers/food/snacks/donut/normal = 12, /obj/item/storage/box/evidence = 6, /obj/item/gun/ballistic/sec = 2, - /obj/item/ammo_magazine/m45/rubber = 6, + /obj/item/ammo_magazine/a45/rubber = 6, /obj/item/clothing/mask/gas/half = 6, /obj/item/clothing/glasses/omnihud/sec = 6, /obj/item/hailer = 6, diff --git a/code/game/objects/items/gunbox.dm b/code/game/objects/items/gunbox.dm index ebfbe0ad04b..7744108a0dc 100644 --- a/code/game/objects/items/gunbox.dm +++ b/code/game/objects/items/gunbox.dm @@ -7,9 +7,9 @@ /obj/item/gunbox/attack_self(mob/user) var/list/options = list() - options["NT Mk58 (.45)"] = list(/obj/item/gun/ballistic/sec, /obj/item/ammo_magazine/m45/rubber, /obj/item/ammo_magazine/m45/flash) - options["SW 625 Revolver (.45)"] = list(/obj/item/gun/ballistic/revolver/detective45, /obj/item/ammo_magazine/s45/rubber, /obj/item/ammo_magazine/s45/rubber) - options["P92X (9mm)"] = list(/obj/item/gun/ballistic/p92x/sec, /obj/item/ammo_magazine/m9mm/rubber, /obj/item/ammo_magazine/m9mm/flash) + options["NT Mk58 (.45)"] = list(/obj/item/gun/ballistic/sec, /obj/item/ammo_magazine/a45/rubber, /obj/item/ammo_magazine/a45/flash) + options["SW 625 Revolver (.45)"] = list(/obj/item/gun/ballistic/revolver/detective45, /obj/item/ammo_magazine/a45/speedloader/rubber, /obj/item/ammo_magazine/a45/speedloader/rubber) + options["P92X (9mm)"] = list(/obj/item/gun/ballistic/p92x/sec, /obj/item/ammo_magazine/a9mm/rubber, /obj/item/ammo_magazine/a9mm/flash) var/choice = input(user,"Would you prefer a pistol or a revolver?") as null|anything in options if(src && choice) var/list/things_to_spawn = options[choice] @@ -28,9 +28,9 @@ /obj/item/gunbox/lethal/attack_self(mob/user) var/list/options = list() - options["M1911 Dynamic (.45)"] = list(/obj/item/gun/ballistic/colt, /obj/item/ammo_magazine/m45, /obj/item/ammo_magazine/m45) - options["SW 625 Revolver (.45)"] = list(/obj/item/gun/ballistic/revolver/detective45, /obj/item/ammo_magazine/s45, /obj/item/ammo_magazine/s45) - options["P92X (9mm)"] = list(/obj/item/gun/ballistic/p92x, /obj/item/ammo_magazine/m9mm, /obj/item/ammo_magazine/m9mm) + options["M1911 Dynamic (.45)"] = list(/obj/item/gun/ballistic/colt, /obj/item/ammo_magazine/a45, /obj/item/ammo_magazine/a45) + options["SW 625 Revolver (.45)"] = list(/obj/item/gun/ballistic/revolver/detective45, /obj/item/ammo_magazine/a45/speedloader, /obj/item/ammo_magazine/a45/speedloader) + options["P92X (9mm)"] = list(/obj/item/gun/ballistic/p92x, /obj/item/ammo_magazine/a9mm, /obj/item/ammo_magazine/a9mm) var/choice = input(user,"Would you prefer a pistol or a revolver?") as null|anything in options if(src && choice) var/list/things_to_spawn = options[choice] @@ -50,8 +50,8 @@ /obj/item/gunbox/attack_self(mob/user) var/list/options = list() - options[".45 Pistol"] = list(/obj/item/gun/ballistic/colt/detective, /obj/item/ammo_magazine/m45/rubber, /obj/item/ammo_magazine/m45/rubber) - options[".45 Revolver"] = list(/obj/item/gun/ballistic/revolver/detective45, /obj/item/ammo_magazine/s45/rubber, /obj/item/ammo_magazine/s45/rubber) + options[".45 Pistol"] = list(/obj/item/gun/ballistic/colt/detective, /obj/item/ammo_magazine/a45/rubber, /obj/item/ammo_magazine/a45/rubber) + options[".45 Revolver"] = list(/obj/item/gun/ballistic/revolver/detective45, /obj/item/ammo_magazine/a45/speedloader/rubber, /obj/item/ammo_magazine/a45/speedloader/rubber) var/choice = input(user,"Would you prefer a pistol or a revolver?") as null|anything in options if(src && choice) var/list/things_to_spawn = options[choice] @@ -72,7 +72,7 @@ /obj/item/gunbox/marksman/attack_self(mob/user) var/list/options = list() options["Marksman Energy Rifle"] = list(/obj/item/gun/energy/sniperrifle/locked) - options["M1A Garand"] = list(/obj/item/gun/ballistic/garand/sniper, /obj/item/storage/belt/security/tactical/bandolier, /obj/item/ammo_magazine/m762garand/sniperhunter, /obj/item/ammo_magazine/m762garand/sniperhunter, /obj/item/ammo_magazine/m762garand/sniperhunter, /obj/item/ammo_magazine/m762garand/sniperhunter, /obj/item/ammo_magazine/m762garand/sniperhunter, /obj/item/ammo_magazine/m762garand/sniperhunter, /obj/item/ammo_magazine/m762garand/sniperhunter) // 7 clips, 56 rounds + options["M1A Garand"] = list(/obj/item/gun/ballistic/garand/sniper, /obj/item/storage/belt/security/tactical/bandolier, /obj/item/ammo_magazine/a7_62mm/garand/sniperhunter, /obj/item/ammo_magazine/a7_62mm/garand/sniperhunter, /obj/item/ammo_magazine/a7_62mm/garand/sniperhunter, /obj/item/ammo_magazine/a7_62mm/garand/sniperhunter, /obj/item/ammo_magazine/a7_62mm/garand/sniperhunter, /obj/item/ammo_magazine/a7_62mm/garand/sniperhunter, /obj/item/ammo_magazine/a7_62mm/garand/sniperhunter) // 7 clips, 56 rounds var/choice = input(user,"Would you prefer a ballistic rifle or a laser?") as null|anything in options if(src && choice) var/list/things_to_spawn = options[choice] @@ -91,9 +91,9 @@ /obj/item/gunbox/donksoft/attack_self(mob/user) var/list/options = list() - options["Classic DONKsoft Pistol"] = list(/obj/item/gun/ballistic/pistol/foam, /obj/item/ammo_magazine/mfoam/pistol, /obj/item/ammo_magazine/mfoam/pistol) - options["Blue DONKsoft Pistol"] = list(/obj/item/gun/ballistic/pistol/foam/blue, /obj/item/ammo_magazine/mfoam/pistol, /obj/item/ammo_magazine/mfoam/pistol) - options["DONKsoft Automag"] = list(/obj/item/gun/ballistic/pistol/foam/magnum, /obj/item/ammo_magazine/mfoam/pistol, /obj/item/ammo_magazine/mfoam/pistol) + options["Classic DONKsoft Pistol"] = list(/obj/item/gun/ballistic/pistol/foam, /obj/item/ammo_magazine/foam/pistol, /obj/item/ammo_magazine/foam/pistol) + options["Blue DONKsoft Pistol"] = list(/obj/item/gun/ballistic/pistol/foam/blue, /obj/item/ammo_magazine/foam/pistol, /obj/item/ammo_magazine/foam/pistol) + options["DONKsoft Automag"] = list(/obj/item/gun/ballistic/pistol/foam/magnum, /obj/item/ammo_magazine/foam/pistol, /obj/item/ammo_magazine/foam/pistol) var/choice = input(user,"What toy is in this box?") as null|anything in options if(src && choice) var/list/things_to_spawn = options[choice] @@ -111,8 +111,8 @@ /obj/item/gunbox/donksoft/shotgun/attack_self(mob/user) var/list/options = list() - options["Classic DONKsoft Shotgun"] = list(/obj/item/gun/ballistic/shotgun/pump/foam, /obj/item/storage/box/foamdart, /obj/item/storage/box/foamdart) - options["Blue DONKsoft Shotgun"] = list(/obj/item/gun/ballistic/shotgun/pump/foam/blue, /obj/item/storage/box/foamdart, /obj/item/storage/box/foamdart) + options["Classic DONKsoft Shotgun"] = list(/obj/item/gun/ballistic/shotgun/pump/foam, /obj/item/ammo_magazine/foam/box, /obj/item/ammo_magazine/foam/box) + options["Blue DONKsoft Shotgun"] = list(/obj/item/gun/ballistic/shotgun/pump/foam/blue, /obj/item/ammo_magazine/foam/box, /obj/item/ammo_magazine/foam/box) var/choice = input(user,"What toy is in this box?") as null|anything in options if(src && choice) var/list/things_to_spawn = options[choice] @@ -130,8 +130,8 @@ /obj/item/gunbox/donksoft/smg/attack_self(mob/user) var/list/options = list() - options["Classic DONKsoft SMG"] = list(/obj/item/gun/ballistic/automatic/advanced_smg/foam, /obj/item/ammo_magazine/mfoam/smg, /obj/item/ammo_magazine/mfoam/smg) - options["Blue DONKsoft SMG"] = list(/obj/item/gun/ballistic/automatic/advanced_smg/foam/blue, /obj/item/ammo_magazine/mfoam/smg, /obj/item/ammo_magazine/mfoam/smg) + options["Classic DONKsoft SMG"] = list(/obj/item/gun/ballistic/automatic/advanced_smg/foam, /obj/item/ammo_magazine/foam/smg, /obj/item/ammo_magazine/foam/smg) + options["Blue DONKsoft SMG"] = list(/obj/item/gun/ballistic/automatic/advanced_smg/foam/blue, /obj/item/ammo_magazine/foam/smg, /obj/item/ammo_magazine/foam/smg) var/choice = input(user,"What toy is in this box?") as null|anything in options if(src && choice) var/list/things_to_spawn = options[choice] diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index 517fd0870f0..a8d3e994287 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -228,7 +228,7 @@ /obj/item/storage/box/sniperammo name = "box of 12.7mm shells" desc = "It has a picture of a gun and several warning symbols on the front.
WARNING: Live ammunition. Misuse may result in serious injury or death." - starts_with = list(/obj/item/ammo_casing/a127 = 7) + starts_with = list(/obj/item/ammo_casing/a12_7mm = 7) drop_sound = 'sound/items/drop/ammobox.ogg' pickup_sound = 'sound/items/pickup/ammobox.ogg' @@ -687,20 +687,3 @@ max_items = 1 insertion_whitelist = list(/obj/item/clothing/suit/storage/hooded/rainponcho) starts_with = list(/obj/item/clothing/suit/storage/hooded/rainponcho) - -//Foam Darts -/obj/item/storage/box/foamdart - name = "box of foam darts" - desc = "It has a picture of some foam darts on it." - icon = 'icons/obj/ammo.dmi' - icon_state = "foambox" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "syringe_kit", SLOT_ID_LEFT_HAND = "syringe_kit") - starts_with = list(/obj/item/ammo_casing/foam = 20) - drop_sound = 'sound/items/drop/ammobox.ogg' - pickup_sound = 'sound/items/pickup/ammobox.ogg' - -/obj/item/storage/box/foamdart/riot - name = "box of riot darts" - desc = "It has a picture of some angry looking foam darts on it." - icon_state = "foambox_riot" - starts_with = list(/obj/item/ammo_casing/foam/riot = 20) diff --git a/code/game/objects/items/storage/lockbox.dm b/code/game/objects/items/storage/lockbox.dm index 6212bf3ec1d..558830cbd48 100644 --- a/code/game/objects/items/storage/lockbox.dm +++ b/code/game/objects/items/storage/lockbox.dm @@ -121,9 +121,9 @@ /obj/item/clothing/accessory/storage/black_vest = 4, /obj/item/clothing/head/soft/black = 4, /obj/item/gun/ballistic/automatic/p90 = 2, - /obj/item/ammo_magazine/m57x28mmp90 = 4, + /obj/item/ammo_magazine/a5_7mm/p90 = 4, /obj/item/gun/ballistic/p92x = 1, - /obj/item/ammo_magazine/m9mm = 2, + /obj/item/ammo_magazine/a9mm = 2, ) /obj/item/storage/lockbox/cowboy @@ -135,9 +135,9 @@ /obj/item/clothing/shoes/boots/cowboy/classic = 4, /obj/item/clothing/head/cowboy_hat = 4, /obj/item/gun/ballistic/revolver/dirty_harry = 2, - /obj/item/ammo_magazine/s44 = 4, + /obj/item/ammo_magazine/a44/speedloader = 4, /obj/item/gun/ballistic/shotgun/pump/rifle/lever/win1895 = 1, - /obj/item/ammo_magazine/clip/c762 = 2, + /obj/item/ammo_magazine/a7_62mm/clip = 2, /obj/item/gun/ballistic/shotgun/doublebarrel/pellet = 1, /obj/item/storage/box/shotgunshells = 1, /obj/item/reagent_containers/food/drinks/bottle/small/sarsaparilla = 3, @@ -154,9 +154,9 @@ /obj/item/clothing/head/ushanka = 3, /obj/item/clothing/head/bearpelt = 1, /obj/item/gun/ballistic/shotgun/pump/rifle = 3, - /obj/item/ammo_magazine/clip/c762 = 3, + /obj/item/ammo_magazine/a7_62mm/clip = 3, /obj/item/gun/ballistic/pistol = 1, - /obj/item/ammo_magazine/m9mm/compact = 1, + /obj/item/ammo_magazine/a9mm/compact = 1, /obj/item/reagent_containers/food/drinks/bottle/vodka = 1, ) diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index ea34163b60e..710acf38d92 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -22,7 +22,7 @@ if("guns") new /obj/item/gun/ballistic/revolver(src) - new /obj/item/ammo_magazine/s357(src) + new /obj/item/ammo_magazine/a357/speedloader(src) new /obj/item/card/emag(src) new /obj/item/plastique(src) new /obj/item/plastique(src) @@ -280,7 +280,7 @@ /obj/item/sniper_rifle_part/barrel, /obj/item/sniper_rifle_part/stock, /obj/item/sniper_rifle_part/trigger_group, - /obj/item/ammo_casing/a127 = 4 + /obj/item/ammo_casing/a12_7mm = 4 ) /obj/item/storage/secure/briefcase/fuelrod diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index afa68ab234f..03056c176db 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -19,10 +19,10 @@ //? Access - see [modules/jobs/access.dm] /// If set, all of these accesses are needed to access this object. - // todo: getter / setter, enforced cached & deduped lists + // todo: getter / setter, enforced cached & deduped lists var/list/req_access /// If set, at least one of these accesses are needed to access this object. - // todo: getter / setter, enforced cached & deduped lists + // todo: getter / setter, enforced cached & deduped lists var/list/req_one_access //? Climbing diff --git a/code/game/objects/random/guns_and_ammo.dm b/code/game/objects/random/guns_and_ammo.dm index 8e41e4311d0..979b442f766 100644 --- a/code/game/objects/random/guns_and_ammo.dm +++ b/code/game/objects/random/guns_and_ammo.dm @@ -156,19 +156,20 @@ /obj/random/ammo name = "Random Ammunition" desc = "This is random security ammunition." - icon = 'icons/obj/ammo.dmi' - icon_state = "45-10" + + icon = 'icons/modules/projectiles/legacy/ammo_box.dmi' + icon_state = "green" /obj/random/ammo/item_to_spawn() return pick(prob(6);/obj/item/storage/box/beanbags, prob(2);/obj/item/storage/box/shotgunammo, prob(4);/obj/item/storage/box/shotgunshells, prob(1);/obj/item/storage/box/stunshells, - prob(2);/obj/item/ammo_magazine/m45, - prob(4);/obj/item/ammo_magazine/m45/rubber, - prob(4);/obj/item/ammo_magazine/m45/flash, - prob(2);/obj/item/ammo_magazine/m9mmt, - prob(6);/obj/item/ammo_magazine/m9mmt/rubber) + prob(2);/obj/item/ammo_magazine/a45, + prob(4);/obj/item/ammo_magazine/a45/rubber, + prob(4);/obj/item/ammo_magazine/a45/flash, + prob(2);/obj/item/ammo_magazine/a9mm/top_mount, + prob(6);/obj/item/ammo_magazine/a9mm/top_mount/rubber) /obj/random/projectile/random name = "Random Projectile Weapon" @@ -192,41 +193,41 @@ return pick( prob(6);list( /obj/item/gun/ballistic/automatic/wt550, - /obj/item/ammo_magazine/m9mmt, - /obj/item/ammo_magazine/m9mmt + /obj/item/ammo_magazine/a9mm/top_mount, + /obj/item/ammo_magazine/a9mm/top_mount ), prob(6);list( /obj/item/gun/ballistic/automatic/wt274, - /obj/item/ammo_magazine/m45uzi/wt274, - /obj/item/ammo_magazine/m45uzi/wt274 + /obj/item/ammo_magazine/a45/wt274, + /obj/item/ammo_magazine/a45/wt274 ), prob(2);list( /obj/item/gun/ballistic/automatic/mini_uzi, - /obj/item/ammo_magazine/m45uzi, - /obj/item/ammo_magazine/m45uzi + /obj/item/ammo_magazine/a45/uzi, + /obj/item/ammo_magazine/a45/uzi ), prob(2);list( /obj/item/gun/ballistic/automatic/tommygun, - /obj/item/ammo_magazine/m45tommy, - /obj/item/ammo_magazine/m45tommy + /obj/item/ammo_magazine/a45/tommy, + /obj/item/ammo_magazine/a45/tommy ), prob(4);list( /obj/item/gun/ballistic/automatic/c20r, - /obj/item/ammo_magazine/m10mm, - /obj/item/ammo_magazine/m10mm + /obj/item/ammo_magazine/a10mm, + /obj/item/ammo_magazine/a10mm ), prob(2);list( /obj/item/gun/ballistic/automatic/p90, - /obj/item/ammo_magazine/m57x28mmp90 + /obj/item/ammo_magazine/a5_7mm/p90 ), prob(2);list( /obj/item/gun/ballistic/automatic/mini_uzi/taj, - /obj/item/ammo_magazine/m45uzi, - /obj/item/ammo_magazine/m45uzi + /obj/item/ammo_magazine/a45/uzi, + /obj/item/ammo_magazine/a45/uzi ), prob(1);list( /obj/item/gun/ballistic/caseless/phoron_spitter, - /obj/item/ammo_magazine/mphoronshot + /obj/item/ammo_magazine/phoron_shrap ) ) @@ -242,38 +243,38 @@ return pick( prob(4);list( /obj/item/gun/ballistic/automatic/sts35, - /obj/item/ammo_magazine/m556, - /obj/item/ammo_magazine/m556 + /obj/item/ammo_magazine/a5_56mm, + /obj/item/ammo_magazine/a5_56mm ), prob(4);list( /obj/item/gun/ballistic/automatic/z8, - /obj/item/ammo_magazine/m762, - /obj/item/ammo_magazine/m762 + /obj/item/ammo_magazine/a7_62mm, + /obj/item/ammo_magazine/a7_62mm ), prob(8);list( /obj/item/gun/ballistic/shotgun/pump/rifle, - /obj/item/ammo_magazine/clip/c762, - /obj/item/ammo_magazine/clip/c762 + /obj/item/ammo_magazine/a7_62mm/clip, + /obj/item/ammo_magazine/a7_62mm/clip ), prob(2);list( /obj/item/gun/ballistic/shotgun/pump/rifle/lever/win1895, - /obj/item/ammo_magazine/clip/c762, - /obj/item/ammo_magazine/clip/c762 + /obj/item/ammo_magazine/a7_62mm/clip, + /obj/item/ammo_magazine/a7_62mm/clip ), prob(2);list( /obj/item/gun/ballistic/automatic/bullpup, - /obj/item/ammo_magazine/m762, - /obj/item/ammo_magazine/m762 + /obj/item/ammo_magazine/a7_62mm, + /obj/item/ammo_magazine/a7_62mm ), prob(8);list( /obj/item/gun/ballistic/shotgun/pump/rifle/taj, - /obj/item/ammo_magazine/clip/c762, - /obj/item/ammo_magazine/clip/c762 + /obj/item/ammo_magazine/a7_62mm/clip, + /obj/item/ammo_magazine/a7_62mm/clip ), prob(1);list( /obj/item/gun/ballistic/caseless/wild_hunt, - /obj/item/ammo_magazine/mfiftycalcaseless, - /obj/item/ammo_magazine/mfiftycalcaseless + /obj/item/ammo_magazine/a12_7mm/wild_hunt, + /obj/item/ammo_magazine/a12_7mm/wild_hunt ), ) @@ -287,150 +288,150 @@ return pick( prob(5);list( /obj/item/gun/ballistic/colt, - /obj/item/ammo_magazine/m45, - /obj/item/ammo_magazine/m45 + /obj/item/ammo_magazine/a45, + /obj/item/ammo_magazine/a45 ), prob(4);list( /obj/item/gun/ballistic/contender, - /obj/item/ammo_magazine/s357, - /obj/item/ammo_magazine/s357 + /obj/item/ammo_magazine/a357/speedloader, + /obj/item/ammo_magazine/a357/speedloader ), prob(3);list( /obj/item/gun/ballistic/contender/tacticool, - /obj/item/ammo_magazine/s357, - /obj/item/ammo_magazine/s357 + /obj/item/ammo_magazine/a357/speedloader, + /obj/item/ammo_magazine/a357/speedloader ), prob(1);list( /obj/item/gun/ballistic/contender/taj, - /obj/item/ammo_magazine/s357, - /obj/item/ammo_magazine/s357 + /obj/item/ammo_magazine/a357/speedloader, + /obj/item/ammo_magazine/a357/speedloader ), prob(2);list( /obj/item/gun/ballistic/deagle, - /obj/item/ammo_magazine/m44, - /obj/item/ammo_magazine/m44 + /obj/item/ammo_magazine/a44, + /obj/item/ammo_magazine/a44 ), prob(1);list( /obj/item/gun/ballistic/deagle/camo, - /obj/item/ammo_magazine/m44, - /obj/item/ammo_magazine/m44 + /obj/item/ammo_magazine/a44, + /obj/item/ammo_magazine/a44 ), prob(1);list( /obj/item/gun/ballistic/deagle/gold, - /obj/item/ammo_magazine/m44, - /obj/item/ammo_magazine/m44 + /obj/item/ammo_magazine/a44, + /obj/item/ammo_magazine/a44 ), prob(1);list( /obj/item/gun/ballistic/deagle/taj, - /obj/item/ammo_magazine/m44, - /obj/item/ammo_magazine/m44 + /obj/item/ammo_magazine/a44, + /obj/item/ammo_magazine/a44 ), prob(1);list( /obj/item/gun/ballistic/derringer, - /obj/item/ammo_magazine/s357, - /obj/item/ammo_magazine/s357 + /obj/item/ammo_magazine/a357/speedloader, + /obj/item/ammo_magazine/a357/speedloader ), prob(1);list( /obj/item/gun/ballistic/luger, - /obj/item/ammo_magazine/m9mm/compact, - /obj/item/ammo_magazine/m9mm/compact + /obj/item/ammo_magazine/a9mm/compact, + /obj/item/ammo_magazine/a9mm/compact ), prob(1);list( /obj/item/gun/ballistic/luger/brown, - /obj/item/ammo_magazine/m9mm/compact, - /obj/item/ammo_magazine/m9mm/compact + /obj/item/ammo_magazine/a9mm/compact, + /obj/item/ammo_magazine/a9mm/compact ), prob(5);list( /obj/item/gun/ballistic/sec, - /obj/item/ammo_magazine/m45, - /obj/item/ammo_magazine/m45 + /obj/item/ammo_magazine/a45, + /obj/item/ammo_magazine/a45 ), prob(4);list( /obj/item/gun/ballistic/sec/wood, - /obj/item/ammo_magazine/m45, - /obj/item/ammo_magazine/m45 + /obj/item/ammo_magazine/a45, + /obj/item/ammo_magazine/a45 ), prob(5);list( /obj/item/gun/ballistic/p92x, - /obj/item/ammo_magazine/m9mm, - /obj/item/ammo_magazine/m9mm + /obj/item/ammo_magazine/a9mm, + /obj/item/ammo_magazine/a9mm ), prob(5);list( /obj/item/gun/ballistic/r9, - /obj/item/ammo_magazine/clip/c9mm, - /obj/item/ammo_magazine/clip/c9mm + /obj/item/ammo_magazine/a9mm/clip, + /obj/item/ammo_magazine/a9mm/clip ), prob(4);list( /obj/item/gun/ballistic/p92x/brown, - /obj/item/ammo_magazine/m9mm, - /obj/item/ammo_magazine/m9mm + /obj/item/ammo_magazine/a9mm, + /obj/item/ammo_magazine/a9mm ), prob(2);list( /obj/item/gun/ballistic/p92x/large, - /obj/item/ammo_magazine/m9mm/large, - /obj/item/ammo_magazine/m9mm/large + /obj/item/ammo_magazine/a9mm/large, + /obj/item/ammo_magazine/a9mm/large ), prob(5);list( /obj/item/gun/ballistic/pistol, - /obj/item/ammo_magazine/m9mm/compact, - /obj/item/ammo_magazine/m9mm/compact + /obj/item/ammo_magazine/a9mm/compact, + /obj/item/ammo_magazine/a9mm/compact ), prob(2);list( /obj/item/gun/ballistic/silenced, - /obj/item/ammo_magazine/m45, - /obj/item/ammo_magazine/m45 + /obj/item/ammo_magazine/a45, + /obj/item/ammo_magazine/a45 ), prob(2);list( /obj/item/gun/ballistic/revolver, - /obj/item/ammo_magazine/s357, - /obj/item/ammo_magazine/s357 + /obj/item/ammo_magazine/a357/speedloader, + /obj/item/ammo_magazine/a357/speedloader ), prob(4);list( /obj/item/gun/ballistic/revolver/deckard, - /obj/item/ammo_magazine/s38, - /obj/item/ammo_magazine/s38 + /obj/item/ammo_magazine/a38/speedloader, + /obj/item/ammo_magazine/a38/speedloader ), prob(4);list( /obj/item/gun/ballistic/revolver/detective, - /obj/item/ammo_magazine/s38, - /obj/item/ammo_magazine/s38 + /obj/item/ammo_magazine/a38/speedloader, + /obj/item/ammo_magazine/a38/speedloader ), prob(2);list( /obj/item/gun/ballistic/revolver/judge, - /obj/item/ammo_magazine/clip/c12g, - /obj/item/ammo_magazine/clip/c12g, - /obj/item/ammo_magazine/clip/c12g + /obj/item/ammo_magazine/a12g/clip, + /obj/item/ammo_magazine/a12g/clip, + /obj/item/ammo_magazine/a12g/clip ), prob(2);list( /obj/item/gun/ballistic/revolver/lemat, - /obj/item/ammo_magazine/s38, - /obj/item/ammo_magazine/s38, - /obj/item/ammo_magazine/clip/c12g + /obj/item/ammo_magazine/a38/speedloader, + /obj/item/ammo_magazine/a38/speedloader, + /obj/item/ammo_magazine/a12g/clip ), prob(2);list( /obj/item/gun/ballistic/revolver/mateba, - /obj/item/ammo_magazine/s357, - /obj/item/ammo_magazine/s357 + /obj/item/ammo_magazine/a357/speedloader, + /obj/item/ammo_magazine/a357/speedloader ), prob(1);list( /obj/item/gun/ballistic/revolver/webley, - /obj/item/ammo_magazine/s44, - /obj/item/ammo_magazine/s44 + /obj/item/ammo_magazine/a44/speedloader, + /obj/item/ammo_magazine/a44/speedloader ), prob(2);list( /obj/item/gun/ballistic/revolver/dirty_harry, - /obj/item/ammo_magazine/s44, - /obj/item/ammo_magazine/s44 + /obj/item/ammo_magazine/a44/speedloader, + /obj/item/ammo_magazine/a44/speedloader ), prob(1);list( /obj/item/gun/ballistic/revolver/webley/auto, - /obj/item/ammo_magazine/s44, - /obj/item/ammo_magazine/s44 + /obj/item/ammo_magazine/a44/speedloader, + /obj/item/ammo_magazine/a44/speedloader ), prob(1);list( /obj/item/gun/ballistic/colt/taj, - /obj/item/ammo_magazine/m45, - /obj/item/ammo_magazine/m45 + /obj/item/ammo_magazine/a45, + /obj/item/ammo_magazine/a45 ) ) @@ -444,24 +445,24 @@ return pick( prob(4);list( /obj/item/gun/ballistic/shotgun/doublebarrel/pellet, - /obj/item/ammo_magazine/clip/c12g/pellet, - /obj/item/ammo_magazine/clip/c12g/pellet, - /obj/item/ammo_magazine/clip/c12g/pellet, - /obj/item/ammo_magazine/clip/c12g/pellet + /obj/item/ammo_magazine/a12g/clip/pellet, + /obj/item/ammo_magazine/a12g/clip/pellet, + /obj/item/ammo_magazine/a12g/clip/pellet, + /obj/item/ammo_magazine/a12g/clip/pellet ), prob(3);list( /obj/item/gun/ballistic/shotgun/doublebarrel/sawn, - /obj/item/ammo_magazine/clip/c12g/pellet, - /obj/item/ammo_magazine/clip/c12g/pellet, - /obj/item/ammo_magazine/clip/c12g/pellet, - /obj/item/ammo_magazine/clip/c12g/pellet + /obj/item/ammo_magazine/a12g/clip/pellet, + /obj/item/ammo_magazine/a12g/clip/pellet, + /obj/item/ammo_magazine/a12g/clip/pellet, + /obj/item/ammo_magazine/a12g/clip/pellet ), prob(3);list( /obj/item/gun/ballistic/shotgun/doublebarrel/quad, - /obj/item/ammo_magazine/clip/c12g/pellet, - /obj/item/ammo_magazine/clip/c12g/pellet, - /obj/item/ammo_magazine/clip/c12g/pellet, - /obj/item/ammo_magazine/clip/c12g/pellet + /obj/item/ammo_magazine/a12g/clip/pellet, + /obj/item/ammo_magazine/a12g/clip/pellet, + /obj/item/ammo_magazine/a12g/clip/pellet, + /obj/item/ammo_magazine/a12g/clip/pellet ), prob(3);list( /obj/item/gun/ballistic/shotgun/pump/slug, diff --git a/code/game/objects/random/mapping.dm b/code/game/objects/random/mapping.dm index 54078e01f6a..d6e34c541f6 100644 --- a/code/game/objects/random/mapping.dm +++ b/code/game/objects/random/mapping.dm @@ -282,10 +282,10 @@ /obj/item/clothing/head/helmet/space/syndicate/black/red, /obj/item/gun/ballistic/automatic/mini_uzi, /obj/item/gun/ballistic/automatic/mini_uzi, - /obj/item/ammo_magazine/m45uzi, - /obj/item/ammo_magazine/m45uzi, - /obj/item/ammo_magazine/m45uzi/empty, - /obj/item/ammo_magazine/m45uzi/empty, + /obj/item/ammo_magazine/a45/uzi, + /obj/item/ammo_magazine/a45/uzi, + /obj/item/ammo_magazine/a45/uzi/empty, + /obj/item/ammo_magazine/a45/uzi/empty, /obj/structure/closet/crate/plastic ), prob(2);list( @@ -299,8 +299,8 @@ /obj/item/clothing/suit/armor/vest, /obj/item/gun/ballistic/garand, /obj/item/gun/ballistic/garand, - /obj/item/ammo_magazine/m762garand, - /obj/item/ammo_magazine/m762garand, + /obj/item/ammo_magazine/a7_62mm/garand, + /obj/item/ammo_magazine/a7_62mm/garand, /obj/structure/closet/crate/plastic ), prob(2);list( diff --git a/code/game/objects/random/misc.dm b/code/game/objects/random/misc.dm index f4aad4afb1d..6a874a3abae 100644 --- a/code/game/objects/random/misc.dm +++ b/code/game/objects/random/misc.dm @@ -879,49 +879,50 @@ /obj/random/ammo_all name = "Random Ammunition (All)" desc = "This is random ammunition. Spawns all ammo types." - icon = 'icons/obj/ammo.dmi' - icon_state = "666" + + icon = 'icons/modules/projectiles/legacy/ammo_box.dmi' + icon_state = "orange" /obj/random/ammo_all/item_to_spawn() return pick( prob(5);/obj/item/storage/box/shotgunammo, prob(5);/obj/item/storage/box/shotgunshells, - prob(5);/obj/item/ammo_magazine/clip/c762, - prob(5);/obj/item/ammo_magazine/m380, - prob(5);/obj/item/ammo_magazine/m45, - prob(5);/obj/item/ammo_magazine/m9mm, - prob(5);/obj/item/ammo_magazine/s38, - prob(4);/obj/item/ammo_magazine/clip/c45, - prob(4);/obj/item/ammo_magazine/clip/c9mm, - prob(4);/obj/item/ammo_magazine/m45uzi, - prob(4);/obj/item/ammo_magazine/m45uzi/wt274, - prob(4);/obj/item/ammo_magazine/m9mml, - prob(4);/obj/item/ammo_magazine/m9mmt, - prob(4);/obj/item/ammo_magazine/m57x28mmp90, - prob(4);/obj/item/ammo_magazine/m10mm, - prob(4);/obj/item/ammo_magazine/m556/small, - prob(3);/obj/item/ammo_magazine/clip/c10mm, - prob(3);/obj/item/ammo_magazine/clip/c44, - prob(3);/obj/item/ammo_magazine/s44, - prob(3);/obj/item/ammo_magazine/m762, - prob(3);/obj/item/ammo_magazine/m556, + prob(5);/obj/item/ammo_magazine/a7_62mm/clip, + prob(5);/obj/item/ammo_magazine/a38, + prob(5);/obj/item/ammo_magazine/a45, + prob(5);/obj/item/ammo_magazine/a9mm, + prob(5);/obj/item/ammo_magazine/a38/speedloader, + prob(4);/obj/item/ammo_magazine/a45/clip, + prob(4);/obj/item/ammo_magazine/a9mm/clip, + prob(4);/obj/item/ammo_magazine/a45/uzi, + prob(4);/obj/item/ammo_magazine/a45/wt274, + prob(4);/obj/item/ammo_magazine/a9mm, + prob(4);/obj/item/ammo_magazine/a9mm/top_mount, + prob(4);/obj/item/ammo_magazine/a5_7mm/p90, + prob(4);/obj/item/ammo_magazine/a10mm, + prob(4);/obj/item/ammo_magazine/a5_56mm/small, + prob(3);/obj/item/ammo_magazine/a10mm/clip, + prob(3);/obj/item/ammo_magazine/a44/clip, + prob(3);/obj/item/ammo_magazine/a44/speedloader, + prob(3);/obj/item/ammo_magazine/a7_62mm, + prob(3);/obj/item/ammo_magazine/a5_56mm, prob(3);/obj/item/cell/device/weapon, - prob(2);/obj/item/ammo_magazine/m44, - prob(2);/obj/item/ammo_magazine/s357, - prob(2);/obj/item/ammo_magazine/m762m, - prob(2);/obj/item/ammo_magazine/clip/c12g, - prob(2);/obj/item/ammo_magazine/clip/c12g/pellet, - prob(1);/obj/item/ammo_magazine/m45tommy, + prob(2);/obj/item/ammo_magazine/a44, + prob(2);/obj/item/ammo_magazine/a357/speedloader, + prob(2);/obj/item/ammo_magazine/a7_62mm, + prob(2);/obj/item/ammo_magazine/a12g/clip, + prob(2);/obj/item/ammo_magazine/a12g/clip/pellet, + prob(1);/obj/item/ammo_magazine/a45/tommy, // prob(1);/obj/item/ammo_magazine/m95, prob(1);/obj/item/ammo_casing/rocket, prob(1);/obj/item/storage/box/sniperammo, prob(1);/obj/item/storage/box/flashshells, prob(1);/obj/item/storage/box/beanbags, prob(1);/obj/item/storage/box/stunshells, - prob(1);/obj/item/ammo_magazine/mtg, - prob(1);/obj/item/ammo_magazine/m12gdrum, - prob(1);/obj/item/ammo_magazine/m12gdrum/pellet, - prob(1);/obj/item/ammo_magazine/m45tommydrum, + prob(1);/obj/item/ammo_magazine/a7_92mm, + prob(1);/obj/item/ammo_magazine/a12g/drum, + prob(1);/obj/item/ammo_magazine/a12g/drum/pellet, + prob(1);/obj/item/ammo_magazine/a45/tommy/drum, ) /obj/random/cargopod diff --git a/code/game/objects/structures/crates_lockers/closets/secure/explorer.dm b/code/game/objects/structures/crates_lockers/closets/secure/explorer.dm index 2ef79c88ac1..5e94c4ef3de 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/explorer.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/explorer.dm @@ -141,8 +141,8 @@ /obj/item/material/knife/machete/deluxe, /obj/item/gun/energy/frontier/locked/carbine, /obj/item/gun/ballistic/ntles/pathfinder, - /obj/item/ammo_magazine/m57x28mm/ntles, - /obj/item/ammo_magazine/m57x28mm/ntles, + /obj/item/ammo_magazine/a5_7mm/nt_les, + /obj/item/ammo_magazine/a5_7mm/nt_les, /obj/item/clothing/accessory/holster/machete, /obj/item/clothing/accessory/holster/leg, /obj/item/reagent_containers/food/snacks/liquid, diff --git a/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm b/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm index 6907b9d21a7..dab0d7d5a4e 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm @@ -68,7 +68,7 @@ req_one_access = list(ACCESS_GENERAL_EXPLORER,ACCESS_SECURITY_BRIG) starts_with = list( - /obj/item/ammo_magazine/clip/c762/hunter = 9, + /obj/item/ammo_magazine/a7_62mm/clip/hunter = 9, /obj/item/gun/ballistic/shotgun/pump/rifle = 2) /obj/structure/closet/secure_closet/guncabinet/rifle/Initialize(mapload) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 970aeacdb3d..dfe4064a21e 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -214,14 +214,14 @@ /obj/item/reagent_containers/spray/pepper, /obj/item/flash, /obj/item/gun/ballistic/revolver/consul, - /obj/item/ammo_magazine/s44, - /obj/item/ammo_magazine/s44, - /obj/item/ammo_magazine/s44, - /obj/item/ammo_magazine/s44, - /obj/item/ammo_magazine/s44/rubber, - /obj/item/ammo_magazine/s44/rubber, - /obj/item/ammo_magazine/s44/rubber, - /obj/item/ammo_magazine/s44/empty, + /obj/item/ammo_magazine/a44/speedloader, + /obj/item/ammo_magazine/a44/speedloader, + /obj/item/ammo_magazine/a44/speedloader, + /obj/item/ammo_magazine/a44/speedloader, + /obj/item/ammo_magazine/a44/speedloader/rubber, + /obj/item/ammo_magazine/a44/speedloader/rubber, + /obj/item/ammo_magazine/a44/speedloader/rubber, + /obj/item/ammo_magazine/a44/speedloader/empty, /obj/item/melee/telebaton, /obj/item/gps/command/blueshield, @@ -360,8 +360,8 @@ /obj/item/clothing/accessory/badge/holo/detective, /obj/item/clothing/gloves/forensic, /obj/item/gun/ballistic/revolver/detective45, - /obj/item/ammo_magazine/s45/rubber, - /obj/item/ammo_magazine/s45/rubber, + /obj/item/ammo_magazine/a45/speedloader/rubber, + /obj/item/ammo_magazine/a45/speedloader/rubber, /obj/item/reagent_containers/spray/pepper, /obj/item/storage/belt/detective, /obj/item/storage/box/evidence, diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm index 513d3867a2c..e0b788d4508 100644 --- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm +++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm @@ -35,7 +35,7 @@ desc = "It's a storage unit for nuclear-operative gear." starts_with = list( - /obj/item/ammo_magazine/m10mm = 5, + /obj/item/ammo_magazine/a10mm = 5, /obj/item/storage/box/handcuffs, /obj/item/storage/box/flashbangs, /obj/item/gun/energy/gun = 5, diff --git a/code/game/objects/structures/loot_piles.dm b/code/game/objects/structures/loot_piles.dm index 8f87d062a4d..a18bd0046e6 100644 --- a/code/game/objects/structures/loot_piles.dm +++ b/code/game/objects/structures/loot_piles.dm @@ -254,7 +254,6 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh /obj/item/reagent_containers/food/snacks/mysterysoup, /obj/item/reagent_containers/food/snacks/hotdog, /obj/item/pizzabox, - /obj/item/ammo_casing/spent, /obj/item/stack/rods{amount = 5}, /obj/item/stack/material/steel{amount = 5}, /obj/item/stack/material/cardboard{amount = 5}, @@ -1082,7 +1081,7 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh ) uncommon_loot = list( - /obj/item/ammo_magazine/m75, + /obj/item/ammo_magazine/a75, /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/mortar ) diff --git a/code/modules/awaymissions/loot_vr.dm b/code/modules/awaymissions/loot_vr.dm index 3d628ac9890..5658cd48069 100644 --- a/code/modules/awaymissions/loot_vr.dm +++ b/code/modules/awaymissions/loot_vr.dm @@ -181,35 +181,35 @@ var/new_ammo = pick( // Copied from Random.dm prob(5);/obj/item/storage/box/shotgunammo,\ prob(5);/obj/item/storage/box/shotgunshells,\ - prob(5);/obj/item/ammo_magazine/s357,\ - prob(5);/obj/item/ammo_magazine/clip/c762,\ - prob(5);/obj/item/ammo_magazine/m45,\ - prob(5);/obj/item/ammo_magazine/m45/rubber,\ - prob(5);/obj/item/ammo_magazine/s38,\ - prob(5);/obj/item/ammo_magazine/s38/rubber,\ + prob(5);/obj/item/ammo_magazine/a357/speedloader,\ + prob(5);/obj/item/ammo_magazine/a7_62mm/clip,\ + prob(5);/obj/item/ammo_magazine/a45,\ + prob(5);/obj/item/ammo_magazine/a45/rubber,\ + prob(5);/obj/item/ammo_magazine/a38/speedloader,\ + prob(5);/obj/item/ammo_magazine/a38/speedloader/rubber,\ prob(5);/obj/item/storage/box/flashbangs,\ - prob(5);/obj/item/ammo_magazine/m556,\ - prob(4);/obj/item/ammo_magazine/clip/c545,\ - prob(4);/obj/item/ammo_magazine/clip/c45,\ - prob(4);/obj/item/ammo_magazine/clip/c9mm,\ - prob(4);/obj/item/ammo_magazine/m45uzi,\ - prob(4);/obj/item/ammo_magazine/m556/ext,\ - prob(4);/obj/item/ammo_magazine/m9mm,\ - prob(4);/obj/item/ammo_magazine/m9mml,\ - prob(4);/obj/item/ammo_magazine/m9mmt,\ - prob(4);/obj/item/ammo_magazine/m9mmt/rubber,\ - prob(4);/obj/item/ammo_magazine/m10mm,\ - prob(4);/obj/item/ammo_magazine/m57x28mmp90,\ + prob(5);/obj/item/ammo_magazine/a5_56mm,\ + prob(4);/obj/item/ammo_magazine/a5_56mm/clip,\ + prob(4);/obj/item/ammo_magazine/a45/clip,\ + prob(4);/obj/item/ammo_magazine/a9mm/clip,\ + prob(4);/obj/item/ammo_magazine/a45/uzi,\ + prob(4);/obj/item/ammo_magazine/a5_56mm/ext,\ + prob(4);/obj/item/ammo_magazine/a9mm,\ + prob(4);/obj/item/ammo_magazine/a9mm/advanced_smg,\ + prob(4);/obj/item/ammo_magazine/a9mm/top_mount,\ + prob(4);/obj/item/ammo_magazine/a9mm/top_mount/rubber,\ + prob(4);/obj/item/ammo_magazine/a10mm,\ + prob(4);/obj/item/ammo_magazine/a5_7mm/p90,\ /* prob(4);/obj/item/ammo_magazine/m14,\ prob(4);/obj/item/ammo_magazine/m14/large,\*/ - prob(4);/obj/item/ammo_magazine/m556/ext, - prob(4);/obj/item/ammo_magazine/m762,\ - prob(4);/obj/item/ammo_magazine/m556/ext,\ - prob(3);/obj/item/ammo_magazine/clip/c10mm,\ - prob(3);/obj/item/ammo_magazine/clip/c44,\ - prob(3);/obj/item/ammo_magazine/m556,\ - prob(2);/obj/item/ammo_magazine/m44,\ - prob(2);/obj/item/ammo_magazine/m556,\ + prob(4);/obj/item/ammo_magazine/a5_56mm/ext, + prob(4);/obj/item/ammo_magazine/a7_62mm,\ + prob(4);/obj/item/ammo_magazine/a5_56mm/ext,\ + prob(3);/obj/item/ammo_magazine/a10mm/clip,\ + prob(3);/obj/item/ammo_magazine/a44/clip,\ + prob(3);/obj/item/ammo_magazine/a5_56mm,\ + prob(2);/obj/item/ammo_magazine/a44,\ + prob(2);/obj/item/ammo_magazine/a5_56mm,\ prob(1);/obj/item/storage/box/frags,\ /* prob(1);/obj/item/ammo_magazine/m95,\ */ prob(1);/obj/item/ammo_casing/rocket,\ @@ -219,9 +219,9 @@ prob(1);/obj/item/storage/box/practiceshells,\ prob(1);/obj/item/storage/box/stunshells,\ prob(1);/obj/item/storage/box/blanks,\ - prob(1);/obj/item/ammo_magazine/mtg,\ - prob(1);/obj/item/ammo_magazine/m45tommydrum,\ - prob(1);/obj/item/ammo_magazine/m45tommy) + prob(1);/obj/item/ammo_magazine/a7_92mm,\ + prob(1);/obj/item/ammo_magazine/a45/tommy/drum,\ + prob(1);/obj/item/ammo_magazine/a45/tommy) new new_ammo(C) if("spacesuit") var/obj/structure/closet/syndicate/C = new(src.loc) diff --git a/code/modules/examine/descriptions/weapons.dm b/code/modules/examine/descriptions/weapons.dm index 00b5c0d192f..835d35882dc 100644 --- a/code/modules/examine/descriptions/weapons.dm +++ b/code/modules/examine/descriptions/weapons.dm @@ -36,11 +36,6 @@ description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ then click where you want to fire. Most energy weapons can fire through windows harmlessly. Unlike most weapons, this weapon recharges itself." -/obj/item/gun/ballistic - description_info = "This is a ballistic weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ - then click where you want to fire. To reload, click the weapon in your hand to unload (if needed), then add the appropriate ammo. The description \ - will tell you what caliber you need." - /obj/item/gun/energy/chameleon description_info = null //The chameleon gun adopts the description_info of the weapon it is impersonating as, to make meta-ing harder. description_antag = "This gun is actually a hologram projector that can alter its appearance to mimick other weapons. To change the appearance, use \ diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 6dcd35967de..e553eba475a 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -327,7 +327,7 @@ proc/check_panel(mob/M) qdel(O) return -GLOBAL_LIST_INIT(non_fakeattack_weapons, list(/obj/item/gun/ballistic, /obj/item/ammo_magazine/s357,\ +GLOBAL_LIST_INIT(non_fakeattack_weapons, list(/obj/item/gun/ballistic, /obj/item/ammo_magazine/a357/speedloader,\ /obj/item/gun/energy/crossbow, /obj/item/melee/energy/sword,\ /obj/item/storage/box/syndicate, /obj/item/storage/box/emps,\ /obj/item/cartridge/syndicate, /obj/item/clothing/under/chameleon,\ diff --git a/code/modules/materials/definitions/misc/wax.dm b/code/modules/materials/definitions/misc/wax.dm index 8cc4191d3a4..eb574802497 100644 --- a/code/modules/materials/definitions/misc/wax.dm +++ b/code/modules/materials/definitions/misc/wax.dm @@ -39,7 +39,7 @@ ) . += create_stack_recipe_datum( name = "wax globule", - product = /obj/item/ammo_casing/organic/wax, + product = /obj/item/ammo_casing/biomatter/wax, cost = 1, ) . += create_stack_recipe_datum( diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/clown.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/clown.dm index 3992079f92b..e9e9ee7e338 100644 --- a/code/modules/mob/living/simple_mob/subtypes/humanoid/clown.dm +++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/clown.dm @@ -190,8 +190,8 @@ reload_max = 12 ai_holder_type = /datum/ai_holder/polaris/simple_mob/merc/ranged loot_list = list(/obj/item/gun/ballistic/clown_pistol = 100, - /obj/item/ammo_magazine/mcompressedbio = 30, - /obj/item/ammo_magazine/mcompressedbio = 30 + /obj/item/ammo_magazine/biomatter = 30, + /obj/item/ammo_magazine/biomatter = 30 ) //Voidsuit Variants @@ -267,8 +267,8 @@ corpse = /obj/spawner/corpse/clown/clownop/space loot_list = list(/obj/item/gun/ballistic/automatic/clown_rifle = 100, - /obj/item/ammo_magazine/mcompressedbio/large/banana = 30, - /obj/item/ammo_magazine/mcompressedbio/large/banana = 30 + /obj/item/ammo_magazine/biomatter/large/banana = 30, + /obj/item/ammo_magazine/biomatter/large/banana = 30 ) base_attack_cooldown = 5 // Two attacks a second or so. diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm index bfac17fedee..59acf04dd4d 100644 --- a/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm +++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm @@ -641,8 +641,8 @@ corpse = /obj/spawner/corpse/vox/pirate loot_list = list(/obj/item/gun/ballistic/shotgun/pump/rifle/vox_hunting = 100, - /obj/item/ammo_magazine/clip/c762 = 30, - /obj/item/ammo_magazine/clip/c762 = 30 + /obj/item/ammo_magazine/a7_62mm/clip = 30, + /obj/item/ammo_magazine/a7_62mm/clip = 30 ) ai_holder_type = /datum/ai_holder/polaris/simple_mob/merc @@ -727,8 +727,8 @@ ai_holder_type = /datum/ai_holder/polaris/simple_mob/merc/ranged/shotgun corpse = /obj/spawner/corpse/vox/boarder_r loot_list = list(/obj/item/gun/ballistic/shotgun/pump/combat = 100, - /obj/item/ammo_magazine/m12gdrum = 30, - /obj/item/ammo_magazine/m12gdrum = 30 + /obj/item/ammo_magazine/a12g/drum = 30, + /obj/item/ammo_magazine/a12g/drum = 30 ) needs_reload = TRUE diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/russian.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/russian.dm index 618e4efce10..7de7e01468e 100644 --- a/code/modules/mob/living/simple_mob/subtypes/humanoid/russian.dm +++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/russian.dm @@ -41,7 +41,6 @@ icon_living = "russianranged" projectiletype = /obj/projectile/bullet - casingtype = /obj/item/ammo_casing/spent projectilesound = 'sound/weapons/Gunshot4.ogg' loot_list = list(/obj/item/gun/ballistic/revolver/mateba = 100) diff --git a/code/modules/projectiles/ammunition/ammo_caliber.dm b/code/modules/projectiles/ammunition/ammo_caliber.dm new file mode 100644 index 00000000000..4bc9635dff4 --- /dev/null +++ b/code/modules/projectiles/ammunition/ammo_caliber.dm @@ -0,0 +1,69 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2024 silicons *// + +GLOBAL_LIST_INIT(calibers, init_calibers()) + +/proc/init_calibers() + . = list() + GLOB.calibers = . + for(var/datum/ammo_caliber/path as anything in subtypesof(/datum/ammo_caliber)) + if(initial(path.abstract_type) == path) + continue + var/datum/ammo_caliber/created = new path + .[created.type] = created + if(created.caliber) + if(.[created.caliber]) + stack_trace("collision between [path] and [.[created.caliber]:type] for caliber [created.caliber]") + .[created.caliber] = created + +/proc/resolve_caliber(datum/ammo_caliber/caliberlike) + RETURN_TYPE(/datum/ammo_caliber) + if(istext(caliberlike)) + return GLOB.calibers[caliberlike] + if(ispath(caliberlike)) + return GLOB.calibers[caliberlike] + if(istype(caliberlike)) + return caliberlike + +/** + * desc wip + * + * welcome to hell: brought to you by a webdev + * + * naming convention: c[whatever] for the caliber, subtype to a[whatever] for different ammo lengths + * + * direct subtypes of /datum/ammo_caliber should be for diameter, usually, + * and length subtypes go from the diameter subtype. + */ +/datum/ammo_caliber + abstract_type = /datum/ammo_caliber + /// caliber string + var/caliber + /// does dynamic measurements + var/measured + /// width in millimeters + var/diameter + /// length in millimeters, if known; if not known / unbounded, this is null + var/length + +/datum/ammo_caliber/New() + if(isnull(measured)) + measured = !isnull(diameter) && !isnull(length) + +/** + * checks if other caliber is smaller or equal to this one + */ +/datum/ammo_caliber/proc/smaller_or_equal(datum/ammo_caliber/other) + return other.caliber == caliber || (measured && other.measured && ((other.diameter <= diameter) && (other.length <= length))) + +/** + * checks if other caliber is same diameter as this one + */ +/datum/ammo_caliber/proc/equivalent_diameter(datum/ammo_caliber/other) + return other.caliber == caliber || (measured && other.measured && (other.diameter == diameter)) + +/** + * checks if other caliber is equivalent to us + */ +/datum/ammo_caliber/proc/equivalent(datum/ammo_caliber/other) + return other.caliber == caliber || (measured && other.measured && (other.diameter == diameter) && (other.length == length)) diff --git a/code/modules/projectiles/ammunition/ammo_casing.dm b/code/modules/projectiles/ammunition/ammo_casing.dm index a5131b48e33..ce1f082a859 100644 --- a/code/modules/projectiles/ammunition/ammo_casing.dm +++ b/code/modules/projectiles/ammunition/ammo_casing.dm @@ -1,31 +1,37 @@ /obj/item/ammo_casing name = "bullet casing" desc = "A bullet casing." - icon = 'icons/obj/ammo.dmi' - icon_state = "s-casing" + icon = 'icons/modules/projectiles/casings/slim.dmi' + icon_state = "small" slot_flags = SLOT_BELT | SLOT_EARS item_flags = ITEM_EASY_LATHE_DECONSTRUCT | ITEM_ENCUMBERS_WHILE_HELD throw_force = 1 w_class = WEIGHT_CLASS_TINY - preserve_item = 1 drop_sound = 'sound/items/drop/ring.ogg' pickup_sound = 'sound/items/pickup/ring.ogg' - //! Casing + //* Casing /// casing flags - see __DEFINES/projectiles/ammo_casing.dm var/casing_flags = NONE + /// what types of primer we react to + var/casing_primer = CASING_PRIMER_CHEMICAL /// projectile type var/projectile_type + /// caliber - set to typepath of datum for compile checking + /// + /// * may be typepath of caliber (recommended) + /// * may be instance of caliber (not recommended, but allowable for special cases) + /// * may NOT be string of caliber, currently + var/regex_this_caliber /// stored projectile - either null for un-init'd, FALSE for empty, or an instance - VAR_PRIVATE/obj/projectile/stored + VAR_PROTECTED/obj/projectile/stored - //! Icon + //* Icon /// switch to "[initial(state)]-spent" after expenditure var/icon_spent = TRUE //! unsorted / legacy var/leaves_residue = 1 - var/caliber = "" //Which kind of guns it can be loaded into var/fall_sounds = list('sound/weapons/guns/casingfall1.ogg','sound/weapons/guns/casingfall2.ogg','sound/weapons/guns/casingfall3.ogg') /obj/item/ammo_casing/Initialize(mapload) @@ -132,3 +138,18 @@ mag.quick_gather(get_turf(src), user) return CLICKCHAIN_DID_SOMETHING | CLICKCHAIN_DO_NOT_PROPAGATE return ..() + +//* Caliber *// + +/obj/item/ammo_casing/proc/get_caliber_string() + return resolve_caliber(regex_this_caliber)?.caliber + +/obj/item/ammo_casing/proc/get_caliber() + RETURN_TYPE(/datum/ammo_caliber) + return resolve_caliber(regex_this_caliber) + +//* Generic - Spent Subtype *// + +/obj/item/ammo_casing/spent + icon_state = /obj/item/ammo_casing::icon_state + "-spent" + stored = FALSE diff --git a/code/modules/projectiles/ammunition/ammo_magazine.dm b/code/modules/projectiles/ammunition/ammo_magazine.dm new file mode 100644 index 00000000000..8c8b9f9ba86 --- /dev/null +++ b/code/modules/projectiles/ammunition/ammo_magazine.dm @@ -0,0 +1,432 @@ +/** + * # Magazines + * + * A holder for ammo casings. + * + * * Holds logic required to lazy-init casings, be inserted into guns, etc. + */ +/obj/item/ammo_magazine + name = "magazine" + desc = "A magazine for some kind of gun." + item_flags = ITEM_EASY_LATHE_DECONSTRUCT | ITEM_ENCUMBERS_WHILE_HELD + slot_flags = SLOT_BELT + + icon = 'icons/system/error_32x32.dmi' + inhand_state = "syringe_kit" + inhand_default_type = INHAND_DEFAULT_ICON_STORAGE + worn_render_flags = WORN_RENDER_INHAND_ALLOW_DEFAULT + + materials_base = list(MAT_STEEL = 500) + throw_force = 5 + w_class = WEIGHT_CLASS_SMALL + throw_speed = 4 + throw_range = 10 + preserve_item = 1 + + //* dynamic config; can be changed at runtime freely + /// what types of magazines are we? + /// + /// * this is a bitfield + var/magazine_type = MAGAZINE_TYPE_NORMAL + + //* for magazines + /// magazine type - must match gun's to be fitted into it, if gun's is + /// setting this to a gun's typepath is allowed, this is an arbitrary field. + // todo: impl + var/magazine_restrict + /// considered an extended magazine for guns that support rendering extended magazines? + // todo: impl + var/magazine_extended = FALSE + // todo: magazine_insert_delay + // todo: magazine_remove_delay + + //* for speedloaders + /// inherent speedloader delay, added to gun's speedloaders_delay + // todo: impl + var/speedloader_delay = 0 + /// speedloader type - must match gun's to fit ammo in, if gun's is set + // todo: impl + var/speedloader_restrict + + //* for stripper clips / usage as single loader + // todo: clip_load_delay + // todo: clip_restrict + + //* loading *// + /// sound for loading a piece of ammo + var/load_sound = 'sound/weapons/flipblade.ogg' + + //* ammo storage *// + /// max ammo in us + var/ammo_max = 7 + /// currently stored ammo; defaults to ammo_max if unset + /// this is used to detect base material costs too, so + /// if this is not set properly or you're abusing ammo_internal, bad stuff happens + // todo: way to use a different count for base material cost detection + var/ammo_current + /// can bullets be removed? + var/ammo_removable = TRUE + /// ammo list + /// only instantiated when we need to for memory reasons + /// should not be directly manipulated unless you know what you're doing. + /// + /// spec: + /// ammo_preload is what 'current ammo' is, type-wise + /// ammo_internal is considered the list of 1 to n casings infront of ammo_current. + /// index 1 is the bottom, index ammo_internal.len is the top of the magazine. + /// peek/draw will peek/draw the last index first all the way to the first, and after that, + /// ammo_current is considered the 'reserve' pool (as just a number). + var/list/ammo_internal + /// caliber - set to typepath to init + var/ammo_caliber + /// preloaded ammo type + var/ammo_preload + /// if set, only loads ammo of this type + var/ammo_type + /// if set, doesn't allow subtypes + var/ammo_picky = FALSE + /// init all contents on initialize instead of lazy-drawing + /// + /// * used for things like microbatteries / legacy content + var/ammo_legacy_init_everything = FALSE + + //* Rendering + /// use default rendering system + /// in state mode, we will be "[base_icon_state]-[count]", from 0 to count (0 for empty) + /// in segements mode, we will repeatedly add "[base_icon_state]-ammo" with given offsets. + /// overlay mode is not supported + var/rendering_system = GUN_RENDERING_DISABLED + /// number of states + var/rendering_count = 0 + /// used internally to avoid appearance churn + VAR_PRIVATE/rendering_count_current + /// for offset mode: initial x offset + var/rendering_segment_x_start = 0 + /// for offset mode: initial y offset + var/rendering_segment_y_start = 0 + /// for offset mode: x offset + var/rendering_segment_x_offset = 0 + /// for offset mode: y offset + var/rendering_segment_y_offset = 0 + /// display special "[base_icon_state]-empty" if count == 0 + var/rendering_segment_use_empty = FALSE + /// add a specific overlay as "[base_icon_state]-[state]", useful for denoting different magazines + /// that look similar with a stripe + var/rendering_static_overlay + +/obj/item/ammo_magazine/Initialize(mapload) + . = ..() + + pixel_x = rand(-5, 5) + pixel_y = rand(-5, 5) + + if(!isnull(rendering_static_overlay)) + add_overlay(rendering_static_overlay, TRUE) + + if(ammo_legacy_init_everything) + instantiate_internal_list() + if(isnull(ammo_current)) + ammo_current = ammo_max + + update_icon() + +/obj/item/ammo_magazine/get_containing_worth(flags) + . = ..() + var/obj/item/ammo_casing/ammo_casted = ammo_type + . += (isnull(ammo_current)? ammo_max : ammo_current) * initial(ammo_casted.worth_intrinsic) + +/obj/item/ammo_magazine/detect_material_base_costs() + . = ..() + if(isnull(ammo_type)) + return + var/shell_amount = isnull(ammo_current)? ammo_max : ammo_current + if(!shell_amount) + return + var/obj/item/ammo_casing/casing = new ammo_type + if(!istype(casing)) + qdel(casing) + return + var/list/adding = casing.detect_material_base_costs() + qdel(casing) + for(var/key in adding) + .[key] += adding[key] * shell_amount + +/obj/item/ammo_magazine/examine(mob/user, dist) + . = ..() + var/amount_left = amount_remaining() + . += "There [(amount_left == 1)? "is" : "are"] [amount_left] round\s left!" + +/** + * transfer as many rounds to another magazine as possible + * + * * This proc must do safety checks like caliber. The receiving side does not! + * + * @params + * * receiver - receiving mag + * * update_icon - update icons for both us and receiver + * + * @return rounds transferred + */ +/obj/item/ammo_magazine/proc/transfer_rounds_to(obj/item/ammo_magazine/receiver, update_icon) + . = 0 + var/amount_missing = receiver.amount_missing() + // todo: mixed caliber support + if(!receiver.loads_caliber(ammo_caliber)) + return + for(var/i in 1 to min(amount_missing, amount_remaining())) + receiver.push(pop(receiver)) + ++. + update_icon() + receiver.update_icon() + +/** + * create casing when we draw into non-instantiated part of the mag + */ +/obj/item/ammo_magazine/proc/instantiate_casing(atom/newloc) + return new ammo_preload(newloc) + +/** + * instantiate the entire internal ammo list + * + * * DO NOT USE UNLESS YOU KNOW WHAT YOU ARE DOING. + * caliber = "nsfw" + + * @return rounds created + */ +/obj/item/ammo_magazine/proc/instantiate_internal_list() + LAZYINITLIST(ammo_internal) + var/existing = length(ammo_internal) + if(existing > ammo_max || !ammo_preload) + ammo_current = 0 + return 0 + var/list/adding = list() + for(var/i in 1 to min(ammo_current, ammo_max - existing)) + adding += instantiate_casing() + . = length(adding) + ammo_current = 0 + ammo_internal += adding + +/** + * can load a round + * + * @return null for success, a string describing why not otherwise. + */ +/obj/item/ammo_magazine/proc/why_cant_load_casing(obj/item/ammo_casing/casing) + if(!loads_caliber(casing.regex_this_caliber)) + return "mismatched caliber" + if(ammo_type && (ammo_picky ? casing.type != ammo_type : !istype(casing, ammo_type))) + return "mismatched ammo" + +/obj/item/ammo_magazine/on_attack_self(datum/event_args/actor/e_args) + . = ..() + if(.) + return + if(!ammo_removable) + return + . = TRUE + if(!amount_remaining()) + e_args.chat_feedback(SPAN_WARNING("[src] is empty."), src) + return + e_args.chat_feedback(SPAN_NOTICE("You remove a round from [src]."), src) + var/obj/item/ammo_casing/casing = pop(src) + e_args.performer.put_in_hands_or_drop(casing) + +/obj/item/ammo_magazine/on_attack_hand(datum/event_args/actor/clickchain/e_args) + . = ..() + if(.) + return + if(!e_args.performer.is_holding_inactive(src)) + return + if(!ammo_removable) + return + . = TRUE + if(!amount_remaining()) + e_args.chat_feedback(SPAN_WARNING("[src] is empty."), src) + return + e_args.chat_feedback(SPAN_NOTICE("You remove a round from [src]."), src) + var/obj/item/ammo_casing/casing = pop(src) + e_args.performer.put_in_hands_or_drop(casing) + +/obj/item/ammo_magazine/attackby(obj/item/I, mob/living/user, list/params, clickchain_flags, damage_multiplier) + if(istype(I, /obj/item/ammo_casing)) + var/obj/item/ammo_casing/casing = I + if(!isnull(why_cant_load_casing(casing))) + to_chat(user, SPAN_WARNING("[I] doesn't fit into [src]!")) + return CLICKCHAIN_DO_NOT_PROPAGATE + if(!amount_missing()) + to_chat(user, SPAN_WARNING("[src] is full.")) + return CLICKCHAIN_DO_NOT_PROPAGATE + if(!user.temporarily_remove_from_inventory(casing, user = user)) + to_chat(user, SPAN_WARNING("[I] is stuck to your hand!")) + return CLICKCHAIN_DO_NOT_PROPAGATE + if(!push(casing, update_icon = TRUE)) + to_chat(user, SPAN_WARNING("You fail to insert [I] into [src]!")) + return + // todo: variable load sounds + playsound(src, load_sound, 50, 1) + return CLICKCHAIN_DO_NOT_PROPAGATE | CLICKCHAIN_DID_SOMETHING + else if(istype(I, /obj/item/ammo_magazine)) + var/obj/item/ammo_magazine/enemy = I + var/amount_transferred = enemy.transfer_rounds_to(src, update_icon = TRUE) + if(!amount_transferred) + to_chat(user, SPAN_WARNING("You fail to transfer any rounds from [I] to [src].")) + return CLICKCHAIN_DO_NOT_PROPAGATE + else + to_chat(user, SPAN_NOTICE("You transfer [amount_transferred] rounds from [I] to [src].")) + return CLICKCHAIN_DO_NOT_PROPAGATE | CLICKCHAIN_DID_SOMETHING + else + return ..() + +/** + * quickly gathers stuff from turf + * does not sainty check + * + * @params + * * where - the turf + * * user - (optional) who's doing it + * + * @return number of rounds gathered + */ +/obj/item/ammo_magazine/proc/quick_gather(turf/where, mob/user) + . = 0 + var/needed + if((needed = amount_remaining()) >= ammo_max) + user?.action_feedback(SPAN_WARNING("[src] is full."), src) + return + // todo: de-instantiate unmodified rounds + for(var/obj/item/ammo_casing/casing in where) + if(. > needed) + break + if(!casing.loaded()) + continue + if(!isnull(why_cant_load_casing(casing))) + continue + if(!push(casing, FALSE)) + continue + ++. + if(.) + update_icon() + user?.action_feedback(SPAN_NOTICE("You collect [.] rounds."), src) + else + user?.action_feedback(SPAN_WARNING("You fail to collect anything."), src) + +/obj/item/ammo_magazine/update_icon(updates) + if(rendering_system == GUN_RENDERING_DISABLED) + return ..() + cut_overlays() + var/count = CEILING(amount_remaining() / ammo_max * rendering_count, 1) + if(count == rendering_count_current) + return + rendering_count_current = count + switch(rendering_system) + if(GUN_RENDERING_STATES) + icon_state = "[base_icon_state]-[count]" + if(GUN_RENDERING_SEGMENTS) + if(count == 0) + if(rendering_segment_use_empty) + add_overlay("[base_icon_state]-empty") + else + var/px = rendering_segment_x_start + var/py = rendering_segment_y_start + for(var/i in 1 to count) + var/image/seg = image(icon, icon_state = "[base_icon_state]-ammo") + seg.pixel_x = px + seg.pixel_y = py + px += rendering_segment_x_offset + py += rendering_segment_y_offset + return ..() + +//* Accessors - Top of Mag *// +//* This is the preferred way to interact with a magazine. *// + +/** + * peek top ammo casing + */ +/obj/item/ammo_magazine/proc/peek() + RETURN_TYPE(/obj/item/ammo_casing) + if(!length(ammo_internal)) + // list empty, see if we have one to inject + if(!ammo_current || !ammo_preload) + // we're empty + return + var/obj/item/ammo_casing/created = instantiate_casing() + if(isnull(ammo_internal)) + ammo_internal = list(created) + else + ammo_internal += created + --ammo_current + return created + return ammo_internal[length(ammo_internal)] + +/** + * get and eject top casing + */ +/obj/item/ammo_magazine/proc/pop(atom/newloc) + RETURN_TYPE(/obj/item/ammo_casing) + if(length(ammo_internal)) + // list filled + . = ammo_internal[length(ammo_internal)] + --ammo_internal.len + update_icon() + return + // list empty + if(!ammo_current || !ammo_preload) + return + . = instantiate_casing(newloc) + --ammo_current + update_icon() + +/** + * put a casing into top + * + * @return TRUE/FALSE on success/failure + */ +/obj/item/ammo_magazine/proc/push(obj/item/ammo_casing/casing, update_icon) + if(amount_remaining() >= ammo_max) + return FALSE + LAZYADD(ammo_internal, casing) + if(casing.loc != src) + casing.forceMove(src) + return TRUE + +/** + * replace the first spent casing from the top or insert top depending on if there's room + * + * @return TRUE/FALSE on success/failure + */ +/obj/item/ammo_magazine/proc/push_resupply(obj/item/ammo_casing/casing, update_icon, atom/transfer_old_to) + // try to resupply + for(var/i in length(ammo_internal) to 1 step -1) + var/obj/item/ammo_casing/loaded = ammo_internal[i] + if(loaded.loaded()) + continue + loaded.forceMove(transfer_old_to || drop_location()) + ammo_internal[i] = casing + if(casing.loc != src) + casing.forceMove(src) + return TRUE + // try to insert + return push(casing, update_icon) + +//* Ammo - Getters *// + +/obj/item/ammo_magazine/proc/is_full() + return amount_remaining() >= ammo_max + +/obj/item/ammo_magazine/proc/amount_remaining(live_only) + if(!live_only) + return ammo_current + length(ammo_internal) + . = ammo_current + for(var/obj/item/ammo_casing/casing as anything in ammo_internal) + if(casing.loaded()) + .++ + +/obj/item/ammo_magazine/proc/amount_missing(live_only) + return ammo_max - amount_remaining(live_only) + +//* Caliber *// + +/obj/item/ammo_magazine/proc/loads_caliber(datum/ammo_caliber/caliberlike) + var/datum/ammo_caliber/ours = resolve_caliber(ammo_caliber) + var/datum/ammo_caliber/theirs = resolve_caliber(caliberlike) + return ours.equivalent(theirs) diff --git a/code/modules/projectiles/ammunition/calibers/README.md b/code/modules/projectiles/ammunition/calibers/README.md new file mode 100644 index 00000000000..689d84a5f17 --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/README.md @@ -0,0 +1,17 @@ +# Calibers + +All specific calibers go in here. In their own files. + +No more 1200 line b/s. + +Put the magazines / casings / etc together; if projectiles were specially made for it, put it there too. + +Calibers should be named 'a12g' for say, '12g', as most programming languages do not allow leading numbers in identifiers. + +If a magazine only is meant to work for one specific gun, put it with the gun instead. + +## Naming Convention + +12 gauge = `/a12g` +1.23mm = `/a1_23mm` +.23 (inches) = `/a23` diff --git a/code/modules/projectiles/ammunition/calibers/normal/a10g.dm b/code/modules/projectiles/ammunition/calibers/normal/a10g.dm new file mode 100644 index 00000000000..44041b18844 --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/normal/a10g.dm @@ -0,0 +1,33 @@ +/datum/ammo_caliber/a10g + caliber = "10g" + +/obj/item/ammo_casing/a10g + name = "heavy shotgun slug" + desc = "A brass jacketed 10 gauge slug shell." + icon = 'icons/modules/projectiles/casings/a10g.dmi' + icon_state = "10ga_slug" + icon_spent = FALSE + regex_this_caliber = /datum/ammo_caliber/a10g + projectile_type = /obj/projectile/bullet/heavy_shotgun + materials_base = list(MAT_STEEL = 300, "brass" = 200) + fall_sounds = list('sound/weapons/guns/shotgun_fall.ogg') + +/obj/item/ammo_casing/a10g/pellet //Spread variant. + name = "heavy shotgun shell" + desc = "A brass jacketed 10 gauge shot shell." + projectile_type = /obj/projectile/scatter/heavy_shotgun + +/obj/item/ammo_casing/a10g/silver + name = "heavy silver shotgun shell" + desc = "A brass jacketed 10 gauge filled with blessed silver shot." + projectile_type = /obj/projectile/scatter/heavy_shotgun/silver + +/obj/item/ammo_casing/a10g/grit + name = "tooled heavy shotgun slug" + desc = "A custom brass jacketed 10 gauge slug shell." + projectile_type = /obj/projectile/bullet/heavy_shotgun/grit + +/obj/item/ammo_casing/a10g/pellet/grit + name = "tooled heavy shotgun shell" + desc = "A custom brass jacketed 10 gauge shot shell." + projectile_type = /obj/projectile/scatter/heavy_shotgun/grit diff --git a/code/modules/projectiles/ammunition/calibers/normal/a10mm.dm b/code/modules/projectiles/ammunition/calibers/normal/a10mm.dm new file mode 100644 index 00000000000..a131c151e34 --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/normal/a10mm.dm @@ -0,0 +1,48 @@ +/datum/ammo_caliber/a10mm + caliber = "10mm" + +/obj/item/ammo_casing/a10mm + desc = "A 10mm bullet casing." + icon = 'icons/modules/projectiles/casings/slim.dmi' + icon_state = "small" + regex_this_caliber = /datum/ammo_caliber/a10mm + projectile_type = /obj/projectile/bullet/pistol/medium + materials_base = list(MAT_STEEL = 75) + +/obj/item/ammo_casing/a10mm/emp + name = "10mm haywire round" + desc = "A 10mm bullet casing fitted with a single-use ion pulse generator." + icon_state = "small-tech" + projectile_type = /obj/projectile/ion/small + materials_base = list(MAT_STEEL = 130, MAT_URANIUM = 100) + +/obj/item/ammo_magazine/a10mm + ammo_caliber = /datum/ammo_caliber/a10mm + +/obj/item/ammo_magazine/a10mm + name = "magazine (10mm)" + icon = 'icons/modules/projectiles/magazines/old_magazine_stick.dmi' + icon_state = "10mm-5" + base_icon_state = "10mm" + rendering_system = GUN_RENDERING_STATES + rendering_count = 5 + materials_base = list(MAT_STEEL = 500) + ammo_preload = /obj/item/ammo_casing/a10mm + ammo_max = 20 + +/obj/item/ammo_magazine/a10mm/empty + icon_state = "10mm-0" + ammo_current = 0 + +/obj/item/ammo_magazine/a10mm/clip + name = "ammo clip (10mm)" + desc = "A stripper clip for reloading 5mm rounds into magazines." + icon = 'icons/modules/projectiles/magazines/old_stripper.dmi' + icon_state = "pistol-10" + base_icon_state = "pistol" + rendering_system = GUN_RENDERING_STATES + rendering_count = 9 + magazine_type = MAGAZINE_TYPE_CLIP + ammo_preload = /obj/item/ammo_casing/a10mm + materials_base = list(MAT_STEEL = 250) + ammo_max = 9 diff --git a/code/modules/projectiles/ammunition/calibers/normal/a12_7mm.dm b/code/modules/projectiles/ammunition/calibers/normal/a12_7mm.dm new file mode 100644 index 00000000000..af32018f1b8 --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/normal/a12_7mm.dm @@ -0,0 +1,18 @@ +/datum/ammo_caliber/a12_7mm + caliber = "12.7mm" + +/obj/item/ammo_casing/a12_7mm + desc = "A 12.7mm shell." + icon = 'icons/modules/projectiles/casings/a12_7mm.dmi' + icon_state = "casing" + icon_spent = TRUE + regex_this_caliber = /datum/ammo_caliber/a12_7mm + projectile_type = /obj/projectile/bullet/rifle/a12_7mm + materials_base = list(MAT_STEEL = 1250) + +/obj/item/ammo_casing/a12_7mm/phoron + name = "caseless phoron round" + desc = "A 12.7mm caseless round." + regex_this_caliber = /datum/ammo_caliber/a12_7mm + projectile_type = /obj/projectile/bullet/incendiary/caseless + casing_flags = CASING_DELETE diff --git a/code/modules/projectiles/ammunition/calibers/normal/a12g.dm b/code/modules/projectiles/ammunition/calibers/normal/a12g.dm new file mode 100644 index 00000000000..d9c38f66505 --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/normal/a12g.dm @@ -0,0 +1,289 @@ +/datum/ammo_caliber/a12g + caliber = "12g" + diameter = 18.53 + length = 69.85 + +//* Casings +/obj/item/ammo_casing/a12g + name = "slug shell" + desc = "A 12 gauge slug." + icon = 'icons/modules/projectiles/casings/a12g.dmi' + icon_state = "grey" + regex_this_caliber = /datum/ammo_caliber/a12g + projectile_type = /obj/projectile/bullet/shotgun + materials_base = list(MAT_STEEL = 360) + fall_sounds = list('sound/weapons/guns/shotgun_fall.ogg') + worth_intrinsic = 5 + +/obj/item/ammo_casing/a12g/pellet + name = "buckshot shell" + desc = "A 12 gauge shell." + icon_state = "red" + projectile_type = /obj/projectile/bullet/pellet/shotgun + worth_intrinsic = 5 + +/obj/item/ammo_casing/a12g/blank + name = "blank shell" + desc = "A blank shell." + icon_state = "white" + projectile_type = /obj/projectile/bullet/blank + materials_base = list(MAT_STEEL = 90) + worth_intrinsic = 1.5 + +/obj/item/ammo_casing/a12g/practice + name = "practice shell" + desc = "A practice shell." + icon_state = "white" + projectile_type = /obj/projectile/bullet/practice + materials_base = list(MAT_STEEL = 90) + worth_intrinsic = 1.5 + +/obj/item/ammo_casing/a12g/beanbag + name = "beanbag shell" + desc = "A beanbag shell." + icon_state = "green" + projectile_type = /obj/projectile/bullet/shotgun/beanbag + materials_base = list(MAT_STEEL = 180) + worth_intrinsic = 3.5 + +/obj/item/ammo_casing/a12g/improvised + name = "improvised shell" + desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards." + icon_state = "improv" + projectile_type = /obj/projectile/bullet/pellet/shotgun_improvised + materials_base = list(MAT_STEEL = 500, MAT_GLASS = 200) + worth_intrinsic = 3.5 + +/obj/item/ammo_casing/a12g/stunshell + name = "stun shell" + desc = "A 12 gauge taser cartridge." + icon_state = "stun" + projectile_type = /obj/projectile/energy/electrode/stunshot + materials_base = list(MAT_STEEL = 360, MAT_GLASS = 720) + worth_intrinsic = 7.5 + +/obj/item/ammo_casing/a12g/flare + name = "flare shell" + desc = "A chemical shell used to signal distress or provide illumination." + icon_state = "flare" + projectile_type = /obj/projectile/energy/flash/flare + materials_base = list(MAT_STEEL = 90, MAT_GLASS = 90) + worth_intrinsic = 3.5 + +/obj/item/ammo_casing/a12g/techshell + name = "unloaded technological shell" + desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects." + icon_state = "tech" + projectile_type = null + materials_base = list(MAT_STEEL = 500, MAT_PHORON = 200) + worth_intrinsic = 30 + +/obj/item/ammo_casing/a12g/techshell/meteorslug + name = "meteorslug shell" + desc = "A shotgun shell rigged with CMC technology, which launches a massive slug when fired." + icon_state = "meteor" + projectile_type = /obj/projectile/meteor/slug + materials_base = list(MAT_STEEL = 500, MAT_GOLD = 200) + worth_intrinsic = 150 + +/obj/item/ammo_casing/a12g/techshell/emp + name = "ion shell" + desc = "An advanced shotgun round that creates a small EMP when it strikes a target." + icon_state = "emp" + projectile_type = /obj/projectile/scatter/ion + materials_base = list(MAT_STEEL = 360, MAT_URANIUM = 240) + worth_intrinsic = 50 + +/obj/item/ammo_casing/a12g/techshell/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 = "pulse" + projectile_type = /obj/projectile/beam/pulse/shotgun + materials_base = list(MAT_STEEL = 500, MAT_SILVER = 200) + worth_intrinsic = 75 + +/obj/item/ammo_casing/a12g/techshell/dragonsbreath + name = "dragonsbreath shell" + desc = "A shotgun shell which fires a spread of incendiary pellets." + icon_state = "dragon" + projectile_type = /obj/projectile/bullet/incendiary/shotgun + worth_intrinsic = 75 + +/obj/item/ammo_casing/a12g/techshell/frag12 + name = "FRAG-12 slug" + desc = "A high explosive breaching round for a 12 gauge shotgun." + icon_state = "explosive" + projectile_type = /obj/projectile/bullet/shotgun/frag12 + materials_base = list(MAT_STEEL = 500, MAT_PHORON = 200) + worth_intrinsic = 75 + +/obj/item/ammo_casing/a12g/techshell/laserslug + name = "scatter laser shell" + desc = "An advanced shotgun shell that uses a micro laser to replicate the effects of a scatter laser weapon in a ballistic package." + icon_state = "laser" + projectile_type = /obj/projectile/scatter/laser + materials_base = list(MAT_STEEL = 500, MAT_GLASS = 200) + worth_intrinsic = 50 + +/obj/item/ammo_casing/a12g/silver + name = "Silver shotgun shell" + desc = "A 12 gauge slug. Bless and Sancitfied to banish otherworlds entities." + icon_state = "stake" + projectile_type = /obj/projectile/bullet/pellet/shotgun/silver + materials_base = list(MAT_STEEL = 360, MAT_SILVER = 240) + worth_intrinsic = 75 + +/obj/item/ammo_casing/a12g/stake + name = "Wooden stake shell" + desc = "A specialized shell designed to launch a wooden stake. Bless and Sancitfied to banish otherworlds entities." + icon_state = "stake" + projectile_type = /obj/projectile/bullet/shotgun/stake + materials_base = list(MAT_STEEL = 500) + worth_intrinsic = 30 + +//* Magazines - Drums + +/obj/item/ammo_magazine/a12g/drum + name = "magazine (12 gauge)" + icon = 'icons/modules/projectiles/magazines/old_magazine_drum.dmi' + icon_state = "autoshotgun" + base_icon_state = "autoshotgun" + materials_base = list(MAT_STEEL = 13000) + ammo_caliber = /datum/ammo_caliber/a12g + ammo_preload = /obj/item/ammo_casing/a12g + ammo_max = 24 + rendering_system = GUN_RENDERING_STATES + rendering_count = 2 + +/obj/item/ammo_magazine/a12g/drum/beanbag + name = "magazine (12 gauge beanbag)" + ammo_preload = /obj/item/ammo_casing/a12g/beanbag + +/obj/item/ammo_magazine/a12g/drum/pellet + name = "magazine (12 gauge pellet)" + ammo_preload = /obj/item/ammo_casing/a12g/pellet + +/obj/item/ammo_magazine/a12g/drum/flare + name = "magazine (12 gauge flash)" + ammo_preload = /obj/item/ammo_casing/a12g/flare + +/obj/item/ammo_magazine/a12g/drum/empty + ammo_current = 0 + +/obj/item/ammo_magazine/a12g/drum/holy + name = "blessed drum magazine (12 gauge)" + icon_state = "holyshotgun" + base_icon_state = "holyshotgun" + desc = "Thrice-blessed, this drum magazine is loaded with silver shot designed to combat supernatural threats." + materials_base = list(MAT_STEEL = 100, MAT_SILVER = 1100) + ammo_preload = /obj/item/ammo_casing/a12g/silver + ammo_max = 12 + rendering_system = GUN_RENDERING_DISABLED + +/obj/item/ammo_magazine/a12g/drum/holy/stake + name = "blessed drum magazine (stakes)" + desc = "Thrice-blessed, this drum magazine is loaded with wooden stakes soaked in sacred oils." + ammo_preload = /obj/item/ammo_casing/a12g/stake + +//* Magazines - Clips + +/obj/item/ammo_magazine/a12g/clip + name = "ammo clip (12g slug)" + icon = 'icons/modules/projectiles/magazines/old_stripper.dmi' + icon_state = "a12-slug-2" + base_icon_state = "a12-slug" + desc = "A color-coded metal clip for holding and quickly loading shotgun shells. This one is loaded with slugs." + ammo_caliber = /datum/ammo_caliber/a12g + ammo_preload = /obj/item/ammo_casing/a12g + materials_base = list(MAT_STEEL = 350) // slugs shells x2 + 350 metal for the clip itself. + ammo_max = 2 + rendering_system = GUN_RENDERING_STATES + rendering_count = 2 + ammo_picky = TRUE + ammo_type = /obj/item/ammo_casing/a12g + magazine_type = MAGAZINE_TYPE_CLIP + +/obj/item/ammo_magazine/a12g/clip/pellet + name = "ammo clip (12g buckshot)" + icon_state = "a12-buck-2" + base_icon_state = "a12-buck" + desc = "A color-coded metal clip for holding and quickly loading shotgun shells. This one is loaded with buckshot." + ammo_preload = /obj/item/ammo_casing/a12g/pellet + ammo_type = /obj/item/ammo_casing/a12g/pellet + +/obj/item/ammo_magazine/a12g/clip/beanbag + name = "ammo clip (12g beanbag)" + icon_state = "a12-bean-2" + base_icon_state = "a12-bean" + desc = "A color-coded metal clip for holding and quickly loading shotgun shells. This one is loaded with beanbags." + ammo_preload = /obj/item/ammo_casing/a12g/beanbag + ammo_type = /obj/item/ammo_casing/a12g/beanbag + +/obj/item/ammo_magazine/a12g/clip/silver + name = "ammo clip (12g buckshot)" + icon_state = "a12-silver-2" + base_icon_state = "a12-silver" + desc = "A color-coded metal clip for holding and quickly loading shotgun shells. This one is loaded with silver buckshot." + ammo_preload = /obj/item/ammo_casing/a12g/silver + ammo_type = /obj/item/ammo_casing/a12g/silver + +//* Magazines - Pouches + +/obj/item/ammo_magazine/a12g/pouch + name = "shotgun slug holder" + desc = "A convenient pouch that holds 12 gauge shells." + icon = 'icons/modules/projectiles/magazines/old_pouch.dmi' + icon_state = "shotgun-clip-4" + base_icon_state = "shotgun-clip" + ammo_caliber = /datum/ammo_caliber/a12g + materials_base = list(MAT_STEEL = 1440) + magazine_type = MAGAZINE_TYPE_POUCH + ammo_preload = /obj/item/ammo_casing/a12g + ammo_current = 0 + ammo_max = 4 + rendering_system = GUN_RENDERING_STATES + rendering_count = 4 + + var/marking_color + +/obj/item/ammo_magazine/a12g/pouch/update_icon() + . = ..() + if(marking_color) + var/image/I = image(icon, "[base_icon_state]-marking") + I.color = marking_color + add_overlay(I) + +/obj/item/ammo_magazine/a12g/pouch/full + ammo_current = 4 + +/obj/item/ammo_magazine/a12g/pouch/full/slug + name = "shotgun slug holder (slug)" + marking_color = PIPE_COLOR_BLACK + ammo_preload = /obj/item/ammo_casing/a12g + ammo_type = /obj/item/ammo_casing/a12g + +/obj/item/ammo_magazine/a12g/pouch/full/flare + name = "shotgun slug holder (flare)" + marking_color = COLOR_RED_GRAY + ammo_preload = /obj/item/ammo_casing/a12g/flare + ammo_type = /obj/item/ammo_casing/a12g/flare + +/obj/item/ammo_magazine/a12g/pouch/full/buckshot + name = "shotgun slug holder (buckshot)" + marking_color = COLOR_RED + ammo_preload = /obj/item/ammo_casing/a12g/pellet + ammo_type = /obj/item/ammo_casing/a12g/pellet + +/obj/item/ammo_magazine/a12g/pouch/full/beanbag + name = "shotgun slug holder (beanbag)" + marking_color = COLOR_GREEN + ammo_preload = /obj/item/ammo_casing/a12g/beanbag + ammo_type = /obj/item/ammo_casing/a12g/beanbag + +/obj/item/ammo_magazine/a12g/pouch/full/stun + name = "shotgun slug holder (stun)" + marking_color = PIPE_COLOR_YELLOW + ammo_preload = /obj/item/ammo_casing/a12g/stunshell + ammo_type = /obj/item/ammo_casing/a12g/stunshell diff --git a/code/modules/projectiles/ammunition/calibers/normal/a357.dm b/code/modules/projectiles/ammunition/calibers/normal/a357.dm new file mode 100644 index 00000000000..4769438fca4 --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/normal/a357.dm @@ -0,0 +1,86 @@ +/datum/ammo_caliber/a357 + caliber = ".357" + diameter = 9.1 + length = 40 + +//* Casings + +/obj/item/ammo_casing/a357 + name = "bullet casing (.357)" + desc = "A .357 bullet casing." + icon = 'icons/modules/projectiles/casings/slim.dmi' + icon_state = "large" + base_icon_state = "large" + projectile_type = /obj/projectile/bullet/pistol/strong + materials_base = list(MAT_STEEL = 210) + regex_this_caliber = /datum/ammo_caliber/a357 + +/obj/item/ammo_casing/a357/silver + desc = "A .357 silver bullet casing. Bless and Sancitfied to banish otherworlds entities." + icon_state = "large-white" + base_icon_state = "large-white" + materials_base = list(MAT_STEEL = 350, MAT_SILVER = 200) + +/obj/item/ammo_casing/a357/stun + desc = "A .357 stun bullet casing." + icon_state = "large-red" + base_icon_state = "large-red" + projectile_type = /obj/projectile/energy/electrode/stunshot/strong + +/obj/item/ammo_casing/a357/rubber + desc = "A .357 rubber bullet casing." + icon_state = "large-blue" + base_icon_state = "large-blue" + projectile_type = /obj/projectile/bullet/pistol/rubber/strong + +/obj/item/ammo_casing/a357/flash + desc = "A .357 flash bullet casing." + icon_state = "large-white" + base_icon_state = "large-white" + projectile_type = /obj/projectile/energy/flash/strong + +//* Magazines - Speedloaders + +/obj/item/ammo_magazine/a357/speedloader + name = "speedloader (.357)" + desc = "A speedloader for .357 revolvers." + icon = 'icons/modules/projectiles/magazines/old_speedloader_6.dmi' + icon_state = "normal-6" + base_icon_state = "normal" + ammo_caliber = /datum/ammo_caliber/a357 + ammo_preload = /obj/item/ammo_casing/a357 + ammo_type = /obj/item/ammo_casing/a357 + magazine_type = MAGAZINE_TYPE_SPEEDLOADER + ammo_max = 6 + materials_base = list(MAT_STEEL = 500) + +/obj/item/ammo_magazine/a357/speedloader/silver + name = "speedloader (.357 silver)" + icon_state = "holy-6" + base_icon_state = "holy" + ammo_preload = /obj/item/ammo_casing/a357/silver + ammo_type = /obj/item/ammo_casing/a357/silver + +/obj/item/ammo_magazine/a357/speedloader/stun + name = "speedloader (.357 stun)" + desc = "A speedloader for .357 revolvers." + icon_state = "redtip-6" + base_icon_state = "redtip" + ammo_preload = /obj/item/ammo_casing/a357/stun + ammo_type = /obj/item/ammo_casing/a357/stun + +/obj/item/ammo_magazine/a357/speedloader/rubber + name = "speedloader (.357 rubber)" + desc = "A speedloader for .357 revolvers." + icon_state = "bluetip-6" + base_icon_state = "bluetip" + ammo_preload = /obj/item/ammo_casing/a357/rubber + ammo_type = /obj/item/ammo_casing/a357/rubber + +/obj/item/ammo_magazine/a357/speedloader/flash + name = "speedloader (.357 flash)" + desc = "A speedloader for .357 revolvers." + icon_state = "white-6" + base_icon_state = "white" + ammo_preload = /obj/item/ammo_casing/a357/flash + ammo_type = /obj/item/ammo_casing/a357/flash diff --git a/code/modules/projectiles/ammunition/calibers/normal/a38.dm b/code/modules/projectiles/ammunition/calibers/normal/a38.dm new file mode 100644 index 00000000000..95965578d4f --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/normal/a38.dm @@ -0,0 +1,75 @@ +/datum/ammo_caliber/a38 + caliber = ".38" + +/obj/item/ammo_casing/a38 + desc = "A .38 bullet casing." + regex_this_caliber = /datum/ammo_caliber/a38 + icon = 'icons/modules/projectiles/casings/slim.dmi' + icon_state = "small" + projectile_type = /obj/projectile/bullet/pistol + materials_base = list(MAT_STEEL = 60) + +/obj/item/ammo_casing/a38/rubber + desc = "A .38 rubber bullet casing." + icon_state = "small-reinf" + projectile_type = /obj/projectile/bullet/pistol/rubber + +/obj/item/ammo_casing/a38/emp + name = ".38 haywire round" + desc = "A .38 bullet casing fitted with a single-use ion pulse generator." + icon_state = "small-tech" + projectile_type = /obj/projectile/ion/small + materials_base = list(MAT_STEEL = 130, MAT_URANIUM = 100) + +/obj/item/ammo_casing/a38/silver + desc = "A .38 silver bullet casing. Bless and Sancitfied to banish otherworlds entities." + icon_state = "small-silver" + projectile_type = /obj/projectile/bullet/pistol/silver + materials_base = list(MAT_STEEL = 130, MAT_SILVER = 100) + +//* Magazines *// + +/obj/item/ammo_magazine/a38 + name = "magazine (.38)" + icon = 'icons/modules/projectiles/magazines/old_magazine_stick.dmi' + icon_state = "9x19-small" + base_icon_state = "9x19-small" + origin_tech = list(TECH_COMBAT = 2) + materials_base = list(MAT_STEEL = 480) + ammo_caliber = /datum/ammo_caliber/a38 + ammo_preload = /obj/item/ammo_casing/a38 + ammo_max = 8 + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 + +/obj/item/ammo_magazine/a38/speedloader + name = "speedloader (.38)" + desc = "A speedloader for .38 revolvers." + icon = 'icons/modules/projectiles/magazines/old_speedloader_6.dmi' + icon_state = "normal-6" + base_icon_state = "normal" + rendering_system = GUN_RENDERING_STATES + rendering_count = 6 + magazine_type = MAGAZINE_TYPE_SPEEDLOADER + materials_base = list(MAT_STEEL = 360) + ammo_preload = /obj/item/ammo_casing/a38 + ammo_max = 6 + +/obj/item/ammo_magazine/a38/speedloader/rubber + name = "speedloader (.38 rubber)" + icon_state = "blue-6" + base_icon_state = "blue" + ammo_preload = /obj/item/ammo_casing/a38/rubber + +/obj/item/ammo_magazine/a38/speedloader/emp + name = "speedloader (.38 haywire)" + icon_state = "bluetip-6" + base_icon_state = "bluetip" + ammo_preload = /obj/item/ammo_casing/a38/emp + +/obj/item/ammo_magazine/a38/speedloader/silver + name = "speedloader (.38 silver)" + icon_state = "holy-6" + base_icon_state = "holy" + ammo_preload = /obj/item/ammo_casing/a38/silver + materials_base = list(MAT_STEEL = 780, MAT_SILVER = 600) diff --git a/code/modules/projectiles/ammunition/calibers/normal/a44.dm b/code/modules/projectiles/ammunition/calibers/normal/a44.dm new file mode 100644 index 00000000000..e2b5cfa7d3c --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/normal/a44.dm @@ -0,0 +1,89 @@ +/datum/ammo_caliber/a44 + caliber = ".44" + +//* Casings + +/obj/item/ammo_casing/a44 + desc = "A .44 bullet casing." + regex_this_caliber = /datum/ammo_caliber/a44 + icon = 'icons/modules/projectiles/casings/slim.dmi' + icon_state = "large" + projectile_type = /obj/projectile/bullet/pistol/strong + materials_base = list(MAT_STEEL = 210) + +/obj/item/ammo_casing/a44/rubber + icon_state = "r-casing" + desc = "A .44 rubber bullet casing." + icon_state = "large-blue" + projectile_type = /obj/projectile/bullet/pistol/rubber/strong + materials_base = list(MAT_STEEL = 60) + +/obj/item/ammo_casing/a44/silver + desc = "A .44 silver bullet casing. Bless and Sancitfied to banish otherworlds entities." + icon_state = "large-white" + projectile_type = /obj/projectile/bullet/pistol/strong/silver + materials_base = list(MAT_STEEL = 350, MAT_SILVER = 200) + +//* Magazines + +/obj/item/ammo_magazine/a44 + ammo_caliber = /datum/ammo_caliber/a44 + +/obj/item/ammo_magazine/a44 + name = "magazine (.44)" + icon = 'icons/modules/projectiles/magazines/old_magazine_stick.dmi' + icon_state = "m44-7" + base_icon_state = "m44" + rendering_system = GUN_RENDERING_STATES + rendering_count = 7 + materials_base = list(MAT_STEEL = 1260) + ammo_preload = /obj/item/ammo_casing/a44 + ammo_max = 7 + +/obj/item/ammo_magazine/a44/empty + icon_state = "m44-0" + ammo_current = 0 + +/obj/item/ammo_magazine/a44/rubber + desc = "A magazine for .44 less-than-lethal ammo." + ammo_type = /obj/item/ammo_casing/a44/rubber + +/obj/item/ammo_magazine/a44/clip + name = "ammo clip (.44)" + desc = "A stripper clip for reloading .44 rounds into magazines." + ammo_preload = /obj/item/ammo_casing/a44 + materials_base = list(MAT_STEEL = 1620) // metal costs are very roughly based around one .50 casing = 180 metal + ammo_max = 9 + icon = 'icons/modules/projectiles/magazines/old_stripper.dmi' + icon_state = "pistol-9" + base_icon_state = "pistol" + magazine_type = MAGAZINE_TYPE_CLIP + rendering_system = GUN_RENDERING_STATES + rendering_count = 9 + +/obj/item/ammo_magazine/a44/speedloader + name = "speedloader (.44)" + ammo_preload = /obj/item/ammo_casing/a44 + materials_base = list(MAT_STEEL = 250) + ammo_max = 6 + magazine_type = MAGAZINE_TYPE_SPEEDLOADER + icon = 'icons/modules/projectiles/magazines/old_speedloader_6.dmi' + icon_state = "normal-6" + base_icon_state = "normal" + rendering_system = GUN_RENDERING_STATES + rendering_count = 6 + +/obj/item/ammo_magazine/a44/speedloader/empty + ammo_current = 0 + +/obj/item/ammo_magazine/a44/speedloader/rubber + name = "speedloader (.44 rubber)" + icon_state = "blue-6" + base_icon_state = "blue" + ammo_preload = /obj/item/ammo_casing/a44/rubber + +/obj/item/ammo_magazine/a44/speedloader/silver + name = "speedloader (.44 silver)" + icon_state = "holy-6" + base_icon_state = "holy" + ammo_preload = /obj/item/ammo_casing/a44/silver diff --git a/code/modules/projectiles/ammunition/calibers/normal/a45.dm b/code/modules/projectiles/ammunition/calibers/normal/a45.dm new file mode 100644 index 00000000000..09763abc03a --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/normal/a45.dm @@ -0,0 +1,229 @@ +/datum/ammo_caliber/a45 + caliber = ".45" + +//* Casings + +/obj/item/ammo_casing/a45 + desc = "A .45 bullet casing." + regex_this_caliber = /datum/ammo_caliber/a45 + icon = 'icons/modules/projectiles/casings/slim.dmi' + icon_state = "large" + projectile_type = /obj/projectile/bullet/pistol/medium + materials_base = list(MAT_STEEL = 75) + +/obj/item/ammo_casing/a45/ap + desc = "A .45 Armor-Piercing bullet casing." + icon_state = "large-blue" + projectile_type = /obj/projectile/bullet/pistol/medium/ap + +/obj/item/ammo_casing/a45/hunter + desc = "A .45 hunting bullet casing." + icon_state = "large-white" + projectile_type = /obj/projectile/bullet/pistol/medium/hunter + +/obj/item/ammo_casing/a45/practice + desc = "A .45 practice bullet casing." + icon_state = "large-white" + projectile_type = /obj/projectile/bullet/practice + materials_base = list(MAT_STEEL = 60) + +/obj/item/ammo_casing/a45/rubber + desc = "A .45 rubber bullet casing." + icon_state = "large-red" + projectile_type = /obj/projectile/bullet/pistol/rubber + materials_base = list(MAT_STEEL = 60) + +/obj/item/ammo_casing/a45/flash + desc = "A .45 flash shell casing." + icon_state = "large-white" + projectile_type = /obj/projectile/energy/flash + materials_base = list(MAT_STEEL = 60) + +/obj/item/ammo_casing/a45/emp + name = ".45 haywire round" + desc = "A .45 bullet casing fitted with a single-use ion pulse generator." + icon_state = "large-blue" + projectile_type = /obj/projectile/ion/small + materials_base = list(MAT_STEEL = 130, MAT_URANIUM = 100) + +/obj/item/ammo_casing/a45/hp + desc = "A .45 hollow-point bullet casing." + icon_state = "large-red" + projectile_type = /obj/projectile/bullet/pistol/medium/hp + +/obj/item/ammo_casing/a45/silver + name = ".45 silver round" + desc = "A .45 silver bullet casing. Bless and Sancitfied to banish otherworlds entities." + icon_state = "large-white" + projectile_type = /obj/projectile/bullet/pistol/silver + materials_base = list(MAT_STEEL = 130, MAT_SILVER = 100) + + +//* Magazines + +/obj/item/ammo_magazine/a45 + ammo_caliber = /datum/ammo_caliber/a45 + name = "pistol magazine (.45)" + icon = 'icons/modules/projectiles/magazines/old_magazine_stick.dmi' + icon_state = "45-7" + base_icon_state = "45" + rendering_system = GUN_RENDERING_STATES + rendering_count = 7 + ammo_preload = /obj/item/ammo_casing/a45 + materials_base = list(MAT_STEEL = 250) + ammo_max = 7 + +/obj/item/ammo_magazine/a45/empty + icon_state = "45-0" + ammo_current = 0 + +/obj/item/ammo_magazine/a45/hunter + name = "magazine (.45 hunter)" + ammo_preload = /obj/item/ammo_casing/a45/hunter + +/obj/item/ammo_magazine/a45/rubber + name = "magazine (.45 rubber)" + ammo_preload = /obj/item/ammo_casing/a45/rubber + +/obj/item/ammo_magazine/a45/practice + name = "magazine (.45 practice)" + ammo_preload = /obj/item/ammo_casing/a45/practice + +/obj/item/ammo_magazine/a45/flash + name = "magazine (.45 flash)" + ammo_preload = /obj/item/ammo_casing/a45/flash + +/obj/item/ammo_magazine/a45/ap + name = "magazine (.45 AP)" + ammo_preload = /obj/item/ammo_casing/a45/ap + +/obj/item/ammo_magazine/a45/uzi + name = "stick magazine (.45)" + icon = 'icons/modules/projectiles/magazines/old_magazine_stick.dmi' + icon_state = "uzi45-8" + base_icon_state = "uzi45" + rendering_system = GUN_RENDERING_STATES + rendering_count = 8 + ammo_preload = /obj/item/ammo_casing/a45 + materials_base = list(MAT_STEEL = 1200) + ammo_max = 16 + +/obj/item/ammo_magazine/a45/uzi/empty + icon_state = "uzi45-0" + ammo_current = 0 + +/obj/item/ammo_magazine/a45/wt274 + name = "double-stack magazine (.45)" + icon = 'icons/modules/projectiles/magazines/old_magazine_stick.dmi' + icon_state = "wt-274-1" + base_icon_state = "wt274" + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 + ammo_preload = /obj/item/ammo_casing/a45 + materials_base = list(MAT_STEEL = 500) + ammo_max = 32 + +/obj/item/ammo_magazine/a45/tommy + name = "Tommy Gun magazine (.45)" + icon = 'icons/modules/projectiles/magazines/old_magazine_stick.dmi' + icon_state = "tommy-mag" + rendering_system = GUN_RENDERING_DISABLED + ammo_preload = /obj/item/ammo_casing/a45 + materials_base = list(MAT_STEEL = 350) + ammo_max = 20 + +/obj/item/ammo_magazine/a45/tommy/ap + name = "Tommy Gun magazine (.45 AP)" + ammo_preload = /obj/item/ammo_casing/a45/ap + +/obj/item/ammo_magazine/a45/tommy/empty + ammo_current = 0 + +/obj/item/ammo_magazine/a45/tommy/drum + name = "Tommy Gun drum magazine (.45)" + icon = 'icons/modules/projectiles/magazines/old_magazine_drum.dmi' + icon_state = "tommy-drum" + rendering_system = GUN_RENDERING_DISABLED + w_class = WEIGHT_CLASS_NORMAL + ammo_preload = /obj/item/ammo_casing/a45 + materials_base = list(MAT_STEEL = 500) + ammo_max = 50 + +/obj/item/ammo_magazine/a45/tommy/drum/ap + name = "Tommy Gun drum magazine (.45 AP)" + ammo_preload = /obj/item/ammo_casing/a45/ap + +/obj/item/ammo_magazine/a45/tommy/drum/empty + ammo_current = 0 + +/obj/item/ammo_magazine/a45/clip + name = "ammo clip (.45)" + desc = "A stripper clip for reloading .45 rounds into magazines." + icon = 'icons/modules/projectiles/magazines/old_stripper.dmi' + icon_state = "pistol-9" + base_icon_state = "pistol" + rendering_system = GUN_RENDERING_STATES + magazine_type = MAGAZINE_TYPE_CLIP + rendering_count = 9 + ammo_preload = /obj/item/ammo_casing/a45 + materials_base = list(MAT_STEEL = 250) + ammo_max = 9 + +/obj/item/ammo_magazine/a45/clip/rubber + name = "ammo clip (.45 rubber)" + ammo_preload = /obj/item/ammo_casing/a45/rubber + +/obj/item/ammo_magazine/a45/clip/hunter + name = "ammo clip (.45 hunter)" + ammo_preload = /obj/item/ammo_casing/a45/hunter + +/obj/item/ammo_magazine/a45/clip/practice + name = "ammo clip (.45 practice)" + ammo_preload = /obj/item/ammo_casing/a45/practice + +/obj/item/ammo_magazine/a45/clip/flash + name = "ammo clip (.45 flash)" + ammo_preload = /obj/item/ammo_casing/a45/flash + +/obj/item/ammo_magazine/a45/speedloader + name = "speedloader (.45)" + icon = 'icons/modules/projectiles/magazines/old_speedloader_7.dmi' + icon_state = "normal-7" + base_icon_state = "normal" + rendering_system = GUN_RENDERING_STATES + rendering_count = 7 + ammo_preload = /obj/item/ammo_casing/a45 + materials_base = list(MAT_STEEL = 250) + magazine_type = MAGAZINE_TYPE_SPEEDLOADER + ammo_max = 7 + +/obj/item/ammo_magazine/a45/speedloader/empty + ammo_current = 0 + +/obj/item/ammo_magazine/a45/speedloader/rubber + name = "speedloader (.45 rubber)" + icon_state = "bluetip-7" + base_icon_state = "bluetip" + ammo_preload = /obj/item/ammo_casing/a45/rubber + +/obj/item/ammo_magazine/a45/speedloader/practice + name = "speedloader (.45 practice)" + ammo_preload = /obj/item/ammo_casing/a45/practice + +/obj/item/ammo_magazine/a45/speedloader/flash + name = "speedloader (.45 flash)" + icon_state = "bluetip-7" + base_icon_state = "bluetip" + ammo_preload = /obj/item/ammo_casing/a45/flash + +/obj/item/ammo_magazine/a45/speedloader/ap + name = "speedloader (.45 AP)" + icon_state = "bluetip-7" + base_icon_state = "bluetip" + ammo_preload = /obj/item/ammo_casing/a45/ap + +/obj/item/ammo_magazine/a45/speedloader/silver + name = "speedloader (.45 silver)" + icon_state = "holy-7" + base_icon_state = "holy" + ammo_preload = /obj/item/ammo_casing/a45/silver diff --git a/code/modules/projectiles/ammunition/calibers/normal/a5_56mm.dm b/code/modules/projectiles/ammunition/calibers/normal/a5_56mm.dm new file mode 100644 index 00000000000..f316dad8b2f --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/normal/a5_56mm.dm @@ -0,0 +1,164 @@ +/datum/ammo_caliber/a5_56mm + caliber = "5.56mm" + +//* Casings + +/obj/item/ammo_casing/a5_56mm + desc = "A 5.56mm bullet casing." + regex_this_caliber = /datum/ammo_caliber/a5_56mm + icon = 'icons/modules/projectiles/casings/slim.dmi' + icon_state = "large" + projectile_type = /obj/projectile/bullet/rifle/a556 + materials_base = list(MAT_STEEL = 180) + +/obj/item/ammo_casing/a5_56mm/ap + desc = "A 5.56mm armor-piercing bullet casing." + icon_state = "large-blue" + projectile_type = /obj/projectile/bullet/rifle/a556/ap + materials_base = list(MAT_STEEL = 270) + +/obj/item/ammo_casing/a5_56mm/practice + desc = "A 5.56mm practice bullet casing." + icon_state = "large=white" + projectile_type = /obj/projectile/bullet/practice + materials_base = list(MAT_STEEL = 90) + +/obj/item/ammo_casing/a5_56mm/blank + desc = "A blank 5.56mm bullet casing." + icon_state = "large-white" + projectile_type = /obj/projectile/bullet/blank + materials_base = list(MAT_STEEL = 90) + +/obj/item/ammo_casing/a5_56mm/hp + icon_state = "large-red" + desc = "A 5.56mm hollow-point bullet casing." + projectile_type = /obj/projectile/bullet/rifle/a556/hp + +/obj/item/ammo_casing/a5_56mm/hunter + icon_state = "large-white" + desc = "A 5.56mm hunting bullet casing." + projectile_type = /obj/projectile/bullet/rifle/a556/hunter + +//* Magazines + +/obj/item/ammo_magazine/a5_56mm + name = "magazine (5.56mm)" + icon = 'icons/modules/projectiles/magazines/old_magazine_stick.dmi' + icon_state = "m556-1" + base_icon_state = "m556" + ammo_caliber = /datum/ammo_caliber/a5_56mm + materials_base = list(MAT_STEEL = 1800) + ammo_preload = /obj/item/ammo_casing/a5_56mm + ammo_max = 20 + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 + +/obj/item/ammo_magazine/a5_56mm/ext + name = "extended magazine (5.56mm)" + materials_base = list(MAT_STEEL = 2700) + ammo_max = 30 + +/obj/item/ammo_magazine/a5_56mm/empty + icon_state = "m556-0" + ammo_current = 0 + +/obj/item/ammo_magazine/a5_56mm/ext/empty + icon_state = "m556-0" + ammo_current = 0 + +/obj/item/ammo_magazine/a5_56mm/practice + name = "magazine (5.56mm practice)" + ammo_preload = /obj/item/ammo_casing/a5_56mm/practice + +/obj/item/ammo_magazine/a5_56mm/practice/ext + name = "extended magazine (5.56mm practice)" + ammo_max = 30 + +/obj/item/ammo_magazine/a5_56mm/ap + name = "magazine (5.56mm armor-piercing)" + ammo_preload = /obj/item/ammo_casing/a5_56mm/ap + +/obj/item/ammo_magazine/a5_56mm/ap/ext + name = "extended magazine (5.56mm armor-piercing)" + ammo_max = 30 + +/obj/item/ammo_magazine/a5_56mm/hunter + name = "magazine (5.56mm hunting)" + ammo_preload = /obj/item/ammo_casing/a5_56mm/hunter + +/obj/item/ammo_magazine/a5_56mm/hunter/ext + name = "extended magazine (5.56mm hunting)" + ammo_max = 30 + +/obj/item/ammo_magazine/a5_56mm/small + name = "reduced magazine (5.56mm)" + icon_state = "m556-small-1" + base_icon_state = "m556-small" + materials_base = list(MAT_STEEL = 900) + ammo_max = 10 + +/obj/item/ammo_magazine/a5_56mm/small/empty + icon_state = "m556-small-0" + ammo_current = 0 + +/obj/item/ammo_magazine/a5_56mm/small/practice + name = "magazine (5.56mm practice)" + ammo_preload = /obj/item/ammo_casing/a5_56mm/practice + +/obj/item/ammo_magazine/a5_56mm/small/ap + name = "magazine (5.56mm armor-piercing)" + ammo_preload = /obj/item/ammo_casing/a5_56mm/ap + +/obj/item/ammo_magazine/a5_56mm/small/hunter + name = "magazine (5.56mm hunting)" + ammo_preload = /obj/item/ammo_casing/a5_56mm/hunter + +/obj/item/ammo_magazine/a5_56mm/clip + name = "ammo clip (5.56mm)" + icon = 'icons/modules/projectiles/magazines/old_stripper.dmi' + icon_state = "rifle-5" + base_icon_state = "rifle" + ammo_caliber = /datum/ammo_caliber/a5_56mm + rendering_system = GUN_RENDERING_STATES + rendering_count = 5 + magazine_type = MAGAZINE_TYPE_CLIP + ammo_preload = /obj/item/ammo_casing/a5_56mm + materials_base = list(MAT_STEEL = 450) // metal costs are very roughly based around one 10mm casing = 180 metal + ammo_max = 5 + +/obj/item/ammo_magazine/a5_56mm/clip/ap + name = "rifle clip (5.56mm armor-piercing)" + ammo_preload = /obj/item/ammo_casing/a5_56mm/ap + +/obj/item/ammo_magazine/a5_56mm/clip/hunter + name = "rifle clip (5.56mm hunting)" + ammo_preload = /obj/item/ammo_casing/a5_56mm/hunter + +/obj/item/ammo_magazine/a5_56mm/clip/practice + name = "rifle clip (5.56mm practice)" + ammo_preload = /obj/item/ammo_casing/a5_56mm + +/obj/item/ammo_magazine/a5_56mm/saw + name = "magazine box (5.56mm)" + icon = 'icons/modules/projectiles/magazines/old_magazine_box.dmi' + icon_state = "a556-5" + base_icon_state = "a556" + rendering_system = GUN_RENDERING_STATES + rendering_count = 5 + ammo_caliber = /datum/ammo_caliber/a5_56mm + materials_base = list(MAT_STEEL = 1000) + ammo_preload = /obj/item/ammo_casing/a5_56mm + w_class = WEIGHT_CLASS_NORMAL // This should NOT fit in your pocket!! + ammo_max = 50 + +/obj/item/ammo_magazine/a5_56mm/saw/ap + name = "magazine box (5.56mm armor-piercing)" + ammo_preload = /obj/item/ammo_casing/a5_56mm/ap + +/obj/item/ammo_magazine/a5_56mm/saw/hunter + name = "magazine box (5.56mm hunting)" + ammo_preload = /obj/item/ammo_casing/a5_56mm/hunter + +/obj/item/ammo_magazine/a5_56mm/saw/empty + icon_state = "a556-0" + ammo_current = 0 diff --git a/code/modules/projectiles/ammunition/calibers/normal/a5_7mm.dm b/code/modules/projectiles/ammunition/calibers/normal/a5_7mm.dm new file mode 100644 index 00000000000..c15269588f6 --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/normal/a5_7mm.dm @@ -0,0 +1,173 @@ +/datum/ammo_caliber/a5_7mm + caliber = "5.7x28mm" + +//* Casings + +/obj/item/ammo_casing/a5_7mm + icon = 'icons/modules/projectiles/casings/slim.dmi' + icon_state = "small" + desc = "A 5.7x28mm bullet casing." + regex_this_caliber = /datum/ammo_caliber/a5_7mm + projectile_type = /obj/projectile/bullet/pistol/lap + materials_base = list(MAT_STEEL = 30, MAT_COPPER = 30) + +/obj/item/ammo_casing/a5_7mm/ap + desc = "A 5.7x28mm armor-piercing bullet casing." + icon_state = "small-reinf" + projectile_type = /obj/projectile/bullet/pistol/ap + materials_base = list(MAT_STEEL = 80, MAT_COPPER = 30) + +/obj/item/ammo_casing/a5_7mm/hp + icon_state = "small-tech" + desc = "A 5.7x28mm hollow-point bullet casing." + projectile_type = /obj/projectile/bullet/pistol/hp + materials_base = list(MAT_STEEL = 60, MAT_COPPER = 30) + +/obj/item/ammo_casing/a5_7mm/hunter + desc = "A 5.7x28mm hunting bullet casing." + icon_state = "small-silver" + projectile_type = /obj/projectile/bullet/pistol/hunter + materials_base = list(MAT_STEEL = 30, MAT_COPPER = 50) + +//* Magazines + +/obj/item/ammo_magazine/a5_7mm + ammo_caliber = /datum/ammo_caliber/a5_7mm + +/obj/item/ammo_magazine/a5_7mm/nt_les + name = "magazine (5.7x28mm)" + desc = "A durable top-loading magazine, designed for withstanding rough treatment." + icon = 'icons/modules/projectiles/magazines/old_magazine_stick.dmi' + icon_state = "ntles-1" + base_icon_state = "ntles" + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 + ammo_max = 20 + +/obj/item/ammo_magazine/a5_7mm/nt_les/ap + name = "magazine (5.7x28mm armor piercing)" + rendering_static_overlay = "ap" + ammo_preload = /obj/item/ammo_casing/a5_7mm/ap + +/obj/item/ammo_magazine/a5_7mm/nt_les/hp + name = "magazine (5.7x28mm hollow-point)" + rendering_static_overlay = "hp" + ammo_preload = /obj/item/ammo_casing/a5_7mm/hp + +/obj/item/ammo_magazine/a5_7mm/nt_les/hunter + name = "magazine (5.7x28mm hunter)" + rendering_static_overlay = "hunter" + ammo_preload = /obj/item/ammo_casing/a5_7mm/hunter + +/obj/item/ammo_magazine/a5_7mm/nt_les/empty + ammo_current = 0 + +/obj/item/ammo_magazine/a5_7mm/nt_les/highcap + name = "high capacity magazine (5.7x28mm)" + icon_state = "ntles-high-1" + base_icon_state = "ntles-high" + ammo_max = 50 + +/obj/item/ammo_magazine/a5_7mm/nt_les/highcap/ap + name = "high capacity magazine (5.7x28mm armor piercing)" + rendering_static_overlay = "ap" + ammo_preload = /obj/item/ammo_casing/a5_7mm/ap +/obj/item/ammo_magazine/a5_7mm/nt_les/highcap/hp + name = "high capacity magazine (5.7x28mm hollow-point)" + rendering_static_overlay = "hp" + ammo_preload = /obj/item/ammo_casing/a5_7mm/hp + +/obj/item/ammo_magazine/a5_7mm/nt_les/highcap/hunter + name = "high capacity magazine (5.7x28mm hunter)" + rendering_static_overlay = "hunter" + ammo_preload = /obj/item/ammo_casing/a5_7mm/hunter + +/obj/item/ammo_magazine/a5_7mm/nt_les/highcap/empty + ammo_current = 0 + +//Harpy SMG + +/obj/item/ammo_magazine/a5_7mm/harpy_smg + name = "NT-SMG-8 magazine (5.7x28mm)" + desc = "A compact double stack aluminum magazine." + icon = 'icons/modules/projectiles/magazines/old_magazine_stick.dmi' + icon_state = "harpy" + rendering_count = 1 + rendering_system = GUN_RENDERING_STATES + ammo_max = 40 + +/obj/item/ammo_magazine/a5_7mm/harpy_smg/ap + name = "NT-SMG-8 magazine (5.7x28mm armor piercing)" + rendering_static_overlay = "ap" + ammo_preload = /obj/item/ammo_casing/a5_7mm/ap + +//Fiveseven mags +/obj/item/ammo_magazine/a5_7mm/five_seven + name = "fiveseven magazine (5.7x28mm)" + desc = "A sturdy double stack magazine with a reinforced spring, designed for withstanding rough treatment." + icon = 'icons/modules/projectiles/magazines/old_magazine_stick.dmi' + icon_state = "fiveseven-0" + base_icon_state = "fiveseven" + materials_base = list(MAT_STEEL = 300) + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 + ammo_caliber = /datum/ammo_caliber/a5_7mm + ammo_preload = /obj/item/ammo_casing/a5_7mm + ammo_max = 20 + +/obj/item/ammo_magazine/a5_7mm/five_seven/ap + name = "magazine (5.7x28mm armor piercing)" + rendering_static_overlay = "ap" + ammo_preload = /obj/item/ammo_casing/a5_7mm/ap + +/obj/item/ammo_magazine/a5_7mm/five_seven/hp + name = "magazine (5.7x28mm hollow-point)" + rendering_static_overlay = "hp" + ammo_preload = /obj/item/ammo_casing/a5_7mm/hp + +/obj/item/ammo_magazine/a5_7mm/five_seven/hunter + name = "magazine (5.7x28mm hunter)" + rendering_static_overlay = "hunter" + ammo_preload = /obj/item/ammo_casing/a5_7mm/hunter + +/obj/item/ammo_magazine/a5_7mm/five_seven/empty + ammo_current = 0 + +/obj/item/ammo_magazine/a5_7mm/five_seven/highcap + name = "high capacity fiveseven magazine (5.7x28mm)" + desc = "A sturdy, extra long double stack magazine with a reinforced spring, designed for withstanding rough treatment." + icon_state = "fiveseven-high-1" + base_icon_state = "fiveseven-high" + ammo_max = 30 + +/obj/item/ammo_magazine/a5_7mm/five_seven/highcap/ap + name = "high capacity magazine (5.7x28mm armor piercing)" + rendering_static_overlay = "ap" + ammo_preload = /obj/item/ammo_casing/a5_7mm/ap +/obj/item/ammo_magazine/a5_7mm/five_seven/highcap/hp + name = "high capacity magazine (5.7x28mm hollow-point)" + rendering_static_overlay = "hp" + ammo_preload = /obj/item/ammo_casing/a5_7mm/hp + +/obj/item/ammo_magazine/a5_7mm/five_seven/highcap/hunter + name = "high capacity magazine (5.7x28mm hunter)" + rendering_static_overlay = "hunter" + ammo_preload = /obj/item/ammo_casing/a5_7mm/hunter + +/obj/item/ammo_magazine/a5_7mm/five_seven/highcap/empty + ammo_current = 0 + +/obj/item/ammo_magazine/a5_7mm/p90 + name = "high capacity top mounted magazine (5.7x28mm armor-piercing)" + icon_state = "p90-1" + base_icon_state = "p90" + rendering_system = GUN_RENDERING_STATES + ammo_preload = /obj/item/ammo_casing/a5_7mm/ap + ammo_max = 50 + +/obj/item/ammo_magazine/a5_7mm/p90/hunter + name = "high capacity top mounted magazine (5.7x28mm hunter)" + ammo_preload = /obj/item/ammo_casing/a5_7mm/hunter + +/obj/item/ammo_magazine/a5_7mm/p90/empty + ammo_current = 0 diff --git a/code/modules/projectiles/ammunition/calibers/normal/a5mm.dm b/code/modules/projectiles/ammunition/calibers/normal/a5mm.dm new file mode 100644 index 00000000000..012491f1f1a --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/normal/a5mm.dm @@ -0,0 +1,36 @@ +/datum/ammo_caliber/a5mm + caliber = "5mm" + diameter = 5 + +//* Magazines *// + +/obj/item/ammo_magazine/m5mmcaseless + name = "prototype rifle magazine (5mm caseless)" + icon_state = "caseless-mag-0" + base_icon_state = "caseless-mag" + ammo_type = /obj/item/ammo_casing/a5mmcaseless + ammo_caliber = /datum/ammo_caliber/a5mm + ammo_max = 30 + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 + +/obj/item/ammo_magazine/m5mmcaseless/stun + icon_state = "caseless-mag-alt-0" + base_icon_state = "caseless-mag-alt" + ammo_type = /obj/item/ammo_casing/a5mmcaseless/stun + +//* Ammunition *// + +/obj/item/ammo_casing/a5mmcaseless + desc = "A 5mm solid phoron caseless round." + icon = 'icons/modules/projectiles/casings/slim.dmi' + icon_state = "small" + icon_spent = TRUE + regex_this_caliber = /datum/ammo_caliber/a5mm + projectile_type = /obj/projectile/bullet/pistol // Close enough to be comparable. + materials_base = list(MAT_STEEL = 180) + casing_flags = CASING_DELETE + +/obj/item/ammo_casing/a5mmcaseless/stun + desc = "A 5mm solid phoron caseless stun round." + projectile_type = /obj/projectile/energy/electrode // Maybe nerf this considering there's 30 rounds in a mag. diff --git a/code/modules/projectiles/ammunition/calibers/normal/a75.dm b/code/modules/projectiles/ammunition/calibers/normal/a75.dm new file mode 100644 index 00000000000..9dd237c118f --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/normal/a75.dm @@ -0,0 +1,51 @@ +/** + * oh god oh fuck- + */ +/datum/ammo_caliber/a75 + caliber = ".75" + +/obj/item/ammo_casing/a75 + desc = "A .75 gyrojet rocket sheathe." + icon = 'icons/modules/projectiles/casings/misc.dmi' + icon_state = "shell" + regex_this_caliber = /datum/ammo_caliber/a75 + projectile_type = /obj/projectile/bullet/gyro + materials_base = list(MAT_STEEL = 2000) + +/obj/item/ammo_magazine/a75 + name = "magazine (.75 Gyrojet)" + icon = 'icons/modules/projectiles/magazines/old_magazine_stick.dmi' + icon_state = "m75-1" + base_icon_state = "m75" + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 + ammo_caliber = /datum/ammo_caliber/a75 + ammo_preload = /obj/item/ammo_casing/a75 + ammo_max = 8 + +/obj/item/ammo_magazine/a75/empty + icon_state = "m75-0" + ammo_current = 0 + +/obj/item/ammo_magazine/a75/rifle + ammo_max = 30 + +/obj/item/ammo_magazine/a75/rifle/empty + icon_state = "m75-0" + ammo_current = 0 + +/obj/item/ammo_magazine/a75/box + name = "box magazine (.75 Gyrojet)" + + icon = 'icons/modules/projectiles/magazines/old_magazine_box.dmi' + icon_state = "m75-1" + base_icon_state = "m75" + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 + + ammo_max = 50 + +/obj/item/ammo_magazine/a75/box/empty + icon_state = "m75-0" + + ammo_current = 0 diff --git a/code/modules/projectiles/ammunition/calibers/normal/a7_62mm.dm b/code/modules/projectiles/ammunition/calibers/normal/a7_62mm.dm new file mode 100644 index 00000000000..a8f169accf5 --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/normal/a7_62mm.dm @@ -0,0 +1,202 @@ +/datum/ammo_caliber/a7_62mm + caliber = "7.62mm" + +/obj/item/ammo_casing/a7_62mm + desc = "A 7.62mm bullet casing." + regex_this_caliber = /datum/ammo_caliber/a7_62mm + icon = 'icons/modules/projectiles/casings/slim.dmi' + icon_state = "large" + projectile_type = /obj/projectile/bullet/rifle/a762 + materials_base = list(MAT_STEEL = 200) + worth_intrinsic = 5 + +/obj/item/ammo_casing/a7_62mm/ap + desc = "A 7.62mm armor-piercing bullet casing." + icon_state = "large-blue" + projectile_type = /obj/projectile/bullet/rifle/a762/ap + materials_base = list(MAT_STEEL = 300) + worth_intrinsic = 7.5 + +/obj/item/ammo_casing/a7_62mm/practice + desc = "A 7.62mm practice bullet casing." + icon_state = "large-white" + icon_state = "rifle-casing" // Need to make an icon for these + projectile_type = /obj/projectile/bullet/practice + materials_base = list(MAT_STEEL = 90) + worth_intrinsic = 1.5 + +/obj/item/ammo_casing/a7_62mm/blank + desc = "A blank 7.62mm bullet casing." + icon_state = "large-white" + projectile_type = /obj/projectile/bullet/blank + materials_base = list(MAT_STEEL = 90) + worth_intrinsic = 1.5 + +/obj/item/ammo_casing/a7_62mm/hp + desc = "A 7.62mm hollow-point bullet casing." + icon_state = "large-red" + projectile_type = /obj/projectile/bullet/rifle/a762/hp + +/obj/item/ammo_casing/a7_62mm/hunter + desc = "A 7.62mm hunting bullet casing." + icon_state = "large-white" + projectile_type = /obj/projectile/bullet/rifle/a762/hunter + +/obj/item/ammo_casing/a7_62mm/sniper + desc = "A 7.62mm high velocity bullet casing optimised for a marksman rifle." + icon_state = "large-blue" + projectile_type = /obj/projectile/bullet/rifle/a762/sniper + +/obj/item/ammo_casing/a7_62mm/sniperhunter + desc = "A 7.62mm high velocity hunter bullet casing optimised for a marksman rifle." + icon_state = "large-white" + projectile_type = /obj/projectile/bullet/rifle/a762/sniperhunter + +/obj/item/ammo_casing/a7_62mm/silver + desc = "A 7.62mm hunting bullet casing. Bless and Sancitfied to banish otherworlds entities." + icon_state = "large-white" + projectile_type = /obj/projectile/bullet/rifle/a762/silver + materials_base = list(MAT_STEEL = 300, MAT_SILVER = 150) + +/obj/item/ammo_magazine/a7_62mm + name = "magazine (7.62mm)" + icon = 'icons/modules/projectiles/magazines/old_magazine_stick.dmi' + icon_state = "m762-1" + base_icon_state = "m762" + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 + + materials_base = list(MAT_STEEL = 1000) + ammo_preload = /obj/item/ammo_casing/a7_62mm + ammo_max = 10 + +/obj/item/ammo_magazine/a7_62mm/ap + name = "magazine (7.62mm armor-piercing)" + ammo_preload = /obj/item/ammo_casing/a7_62mm/ap + +/obj/item/ammo_magazine/a7_62mm/empty + icon_state = "m762-0" + ammo_current = 0 + +/obj/item/ammo_magazine/a7_62mm/garand + name = "garand clip (7.62mm)" // The clip goes into the magazine, hence the name. I'm very sure this is correct. + icon = 'icons/modules/projectiles/magazines/old_magazine_clip.dmi' + icon_state = "gerand-8" + base_icon_state = "gerand" + rendering_system = GUN_RENDERING_STATES + rendering_count = 8 + + materials_base = list(MAT_STEEL = 800) + ammo_preload = /obj/item/ammo_casing/a7_62mm + ammo_max = 8 + +/obj/item/ammo_magazine/a7_62mm/garand/ap + name = "garand clip (7.62mm armor-piercing)" + ammo_preload = /obj/item/ammo_casing/a7_62mm/ap + +/obj/item/ammo_magazine/a7_62mm/garand/hunter + name = "garand clip (7.62mm Hunting)" + ammo_preload = /obj/item/ammo_casing/a7_62mm/hunter + +/obj/item/ammo_magazine/a7_62mm/garand/sniperhunter + name = "garand clip (7.62mm HV Hunting)" + ammo_preload = /obj/item/ammo_casing/a7_62mm/sniperhunter + +/obj/item/ammo_magazine/a7_62mm/empty + icon_state = "gerand-0" + ammo_current = 0 + +/obj/item/ammo_magazine/a7_62mm/clip + name = "ammo clip (7.62mm)" + ammo_preload = /obj/item/ammo_casing/a7_62mm + materials_base = list(MAT_STEEL = 1000) + ammo_max = 5 + icon = 'icons/modules/projectiles/magazines/old_stripper.dmi' + icon_state = "rifle-5" + base_icon_state = "rifle" + magazine_type = MAGAZINE_TYPE_CLIP + rendering_system = GUN_RENDERING_STATES + rendering_count = 5 + +/obj/item/ammo_magazine/a7_62mm/clip/ap + name = "rifle clip (7.62mm armor-piercing)" + ammo_preload = /obj/item/ammo_casing/a7_62mm/ap + +/obj/item/ammo_magazine/a7_62mm/clip/practice + name = "rifle clip (7.62mm practice)" + ammo_preload = /obj/item/ammo_casing/a7_62mm/practice + +/obj/item/ammo_magazine/a7_62mm/clip/hunter + name = "rifle clip (7.62mm hunting)" + ammo_preload = /obj/item/ammo_casing/a7_62mm/hunter + +/obj/item/ammo_magazine/a7_62mm/clip/sniper + name = "rifle clip (7.62mm HV)" + ammo_preload = /obj/item/ammo_casing/a7_62mm/sniper + +/obj/item/ammo_magazine/a7_62mm/clip/sniperhunter + name = "rifle clip (7.62mm HV hunting)" + ammo_preload = /obj/item/ammo_casing/a7_62mm/sniperhunter + +/obj/item/ammo_magazine/a7_62mm/clip/silver + name = "rifle clip (7.62mm silver)" + icon_state = "rifle-silver-5" + base_icon_state = "rifle-silver" + ammo_preload = /obj/item/ammo_casing/a7_62mm/silver + +/obj/item/ammo_magazine/a7_62mm/svd + name = "\improper SVD magazine (7.62mm)" + materials_base = list(MAT_STEEL = 1000) + ammo_preload = /obj/item/ammo_casing/a7_62mm + ammo_max = 10 + + icon = 'icons/modules/projectiles/magazines/old_magazine_stick.dmi' + icon_state = "svd-1" + base_icon_state = "svd" + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 + +/obj/item/ammo_magazine/a7_62mm/svd/ap + name = "\improper SVD magazine (7.62mm armor-piercing)" + ammo_preload = /obj/item/ammo_casing/a7_62mm/ap + +/obj/item/ammo_magazine/a7_62mm/svd/empty + icon_state = "svd-0" + ammo_current = 0 + +/obj/item/ammo_magazine/a7_62mm/mg42 + name = "antique ammo drum (7.62mm)" + materials_base = list(MAT_STEEL = 1000) + ammo_preload = /obj/item/ammo_casing/a7_62mm + w_class = WEIGHT_CLASS_NORMAL + ammo_max = 50 + + icon = 'icons/modules/projectiles/magazines/old_magazine_drum.dmi' + icon_state = "mg42-1" + base_icon_state = "mg42" + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 + +/obj/item/ammo_magazine/a7_62mm/mg42/ap + name = "antique ammo drum box (7.62mm armor-piercing)" + ammo_preload = /obj/item/ammo_casing/a7_62mm/ap + +/obj/item/ammo_magazine/a7_62mm/mg42/empty + icon_state = "mg42-0" + ammo_current = 0 + +/obj/item/ammo_magazine/a7_62mm/m60 + name = "M60 belt (7.62mm)" + materials_base = list(MAT_STEEL = 1000) + ammo_preload = /obj/item/ammo_casing/a7_62mm + ammo_max = 75 + + icon = 'icons/modules/projectiles/magazines/old_magazine_box.dmi' + icon_state = "m60-1" + base_icon_state = "m60" + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 + +/obj/item/ammo_magazine/a7_62mm/m60/empty + icon_state = "m60-0" + ammo_current = 0 diff --git a/code/modules/projectiles/ammunition/calibers/normal/a7_92mm.dm b/code/modules/projectiles/ammunition/calibers/normal/a7_92mm.dm new file mode 100644 index 00000000000..ab02a61e8c9 --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/normal/a7_92mm.dm @@ -0,0 +1,21 @@ +/datum/ammo_caliber/a7_92mm + caliber = "7.92x33mm" + +/obj/item/ammo_magazine/a7_92mm + name = "box mag (7.92x33mm Kurz)" + + icon = 'icons/modules/projectiles/magazines/old_magazine_stick.dmi' + icon_state = "stg" + + ammo_caliber = /datum/ammo_caliber/a7_92mm + ammo_type = /obj/item/ammo_casing/a792 + ammo_max = 30 + +/obj/item/ammo_magazine/a7_92mm/empty + ammo_current = 0 + +/obj/item/ammo_casing/a792 + desc = "A 7.92x33mm Kurz casing." + icon_state = "rifle-casing" + regex_this_caliber = /datum/ammo_caliber/a7_92mm + projectile_type = /obj/projectile/bullet/rifle/a762 diff --git a/code/modules/projectiles/ammunition/calibers/normal/a9_5mm.dm b/code/modules/projectiles/ammunition/calibers/normal/a9_5mm.dm new file mode 100644 index 00000000000..ad928b1f24f --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/normal/a9_5mm.dm @@ -0,0 +1,33 @@ +/datum/ammo_caliber/a9_5mm + caliber = "9.5x40mm" + diameter = 9.5 + length = 40 + +//* Casings *// + +/obj/item/ammo_casing/a95 + desc = "A 9.5x40mm bullet casing." + icon_state = "rifle-casing" + regex_this_caliber = /datum/ammo_caliber/a9_5mm + projectile_type = /obj/projectile/bullet/rifle/a95 + +//* Magazines *// + +/obj/item/ammo_magazine/m95 + name = "box mag (9.5x40mm)" + icon = 'icons/modules/projectiles/magazines/old_magazine_stick.dmi' + icon_state = "battlerifle-20" + base_icon_state = "battlerifle" + ammo_caliber = /datum/ammo_caliber/a9_5mm + ammo_preload = /obj/item/ammo_casing/a95 + ammo_max = 36 + rendering_count = 1 + rendering_system = GUN_RENDERING_STATES + +/obj/item/ammo_magazine/m95/empty + ammo_current = 0 + +//* Projectiles *// + +/obj/projectile/bullet/rifle/a95 + damage = 40 diff --git a/code/modules/projectiles/ammunition/calibers/normal/a9mm.dm b/code/modules/projectiles/ammunition/calibers/normal/a9mm.dm new file mode 100644 index 00000000000..7c38d166c29 --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/normal/a9mm.dm @@ -0,0 +1,208 @@ +/datum/ammo_caliber/a9mm + caliber = "9mm" + +/obj/item/ammo_casing/a9mm + desc = "A 9mm bullet casing." + icon = 'icons/modules/projectiles/casings/slim.dmi' + icon_state = "small" + regex_this_caliber = /datum/ammo_caliber/a9mm + projectile_type = /obj/projectile/bullet/pistol + materials_base = list(MAT_STEEL = 60) + +/obj/item/ammo_casing/a9mm/ap + desc = "A 9mm armor-piercing bullet casing." + icon_state = "small-reinf" + projectile_type = /obj/projectile/bullet/pistol/ap + materials_base = list(MAT_STEEL = 80) + +/obj/item/ammo_casing/a9mm/hp + desc = "A 9mm hollow-point bullet casing." + projectile_type = /obj/projectile/bullet/pistol/hp + +/obj/item/ammo_casing/a9mm/hunter + desc = "A 9mm hunting bullet casing." + icon_state = "small-silver" + projectile_type = /obj/projectile/bullet/pistol/hunter + materials_base = list(MAT_STEEL = 80) + +/obj/item/ammo_casing/a9mm/flash + desc = "A 9mm flash shell casing." + icon_state = "small-tech" + projectile_type = /obj/projectile/energy/flash + +/obj/item/ammo_casing/a9mm/rubber + desc = "A 9mm rubber bullet casing." + projectile_type = /obj/projectile/bullet/pistol/rubber + +/obj/item/ammo_casing/a9mm/practice + desc = "A 9mm practice bullet casing." + icon_state = "small-silver" + projectile_type = /obj/projectile/bullet/practice + +/obj/item/ammo_casing/a9mm/silver + desc = "A 9mm silver bullet casing. Bless and Sancitfied to banish otherworlds entities." + icon_state = "small-silver" + projectile_type = /obj/projectile/bullet/pistol/silver + materials_base = list(MAT_STEEL = 130, MAT_SILVER = 100) + +/obj/item/ammo_magazine/a9mm + ammo_caliber = /datum/ammo_caliber/a9mm + +/obj/item/ammo_magazine/a9mm + name = "magazine (9mm)" + icon = 'icons/modules/projectiles/magazines/old_magazine_stick.dmi' + icon_state = "9x19-big-1" + base_icon_state = "9x19-big" + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 + materials_base = list(MAT_STEEL = 600) + ammo_preload = /obj/item/ammo_casing/a9mm + ammo_max = 10 + +/obj/item/ammo_magazine/a9mm/large + icon_state = "9x19-ext-1" + base_icon_state = "9x19-ext" + ammo_max = 17 + +/obj/item/ammo_magazine/a9mm/large/ap + name = "magazine (9mm armor-piercing)" + ammo_preload = /obj/item/ammo_casing/a9mm/ap + +/obj/item/ammo_magazine/a9mm/large/hp + name = "magazine (9mm hollow-point)" + ammo_preload = /obj/item/ammo_casing/a9mm/hp + +/obj/item/ammo_magazine/a9mm/empty + icon_state = "9x19-big-0" + ammo_current = 0 + +/obj/item/ammo_magazine/a9mm/flash + name = "magazine (9mm flash)" + ammo_preload = /obj/item/ammo_casing/a9mm/flash + +/obj/item/ammo_magazine/a9mm/rubber + name = "magazine (9mm rubber)" + ammo_preload = /obj/item/ammo_casing/a9mm/rubber + +/obj/item/ammo_magazine/a9mm/practice + name = "magazine (9mm practice)" + ammo_preload = /obj/item/ammo_casing/a9mm/practice + +// Compact +/obj/item/ammo_magazine/a9mm/compact + name = "compact magazine (9mm)" + icon = 'icons/modules/projectiles/magazines/old_magazine_stick.dmi' + icon_state = "9x19-small-1" + base_icon_state = "9x19-small" + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 + materials_base = list(MAT_STEEL = 480) + ammo_preload = /obj/item/ammo_casing/a9mm + ammo_max = 8 + +/obj/item/ammo_magazine/a9mm/compact/empty + icon_state = "9x19-small-0" + ammo_current = 0 + +/obj/item/ammo_magazine/a9mm/compact/flash + name = "compact magazine (9mm flash)" + ammo_preload = /obj/item/ammo_casing/a9mm/flash + +/obj/item/ammo_magazine/a9mm/compact/rubber + name = "compact magazine (9mm rubber)" + ammo_preload = /obj/item/ammo_casing/a9mm/rubber + +/obj/item/ammo_magazine/a9mm/compact/practice + name = "compact magazine (9mm practice)" + ammo_preload = /obj/item/ammo_casing/a9mm/practice + +/obj/item/ammo_magazine/a9mm/compact/double + name = "compact magazine (9mm double stack)" + materials_base = list(MAT_STEEL = 900) + ammo_max = 16 + +// SMG +/obj/item/ammo_magazine/a9mm/top_mount + name = "top mounted magazine (9mm)" + icon = 'icons/modules/projectiles/magazines/old_magazine_stick.dmi' + icon_state = "9mmt-5" + base_icon_state = "9mmt" + rendering_system = GUN_RENDERING_STATES + rendering_count = 5 + ammo_preload = /obj/item/ammo_casing/a9mm + materials_base = list(MAT_STEEL = 1200) + ammo_max = 20 + +/obj/item/ammo_magazine/a9mm/top_mount/empty + icon_state = "9mmt-0" + ammo_current = 0 + +/obj/item/ammo_magazine/a9mm/top_mount/hunter + name = "top mounted magazine (9mm hunter)" + ammo_preload = /obj/item/ammo_casing/a9mm/hunter + +/obj/item/ammo_magazine/a9mm/top_mount/rubber + name = "top mounted magazine (9mm rubber)" + ammo_preload = /obj/item/ammo_casing/a9mm/rubber + +/obj/item/ammo_magazine/a9mm/top_mount/flash + name = "top mounted magazine (9mm flash)" + ammo_preload = /obj/item/ammo_casing/a9mm/flash + +/obj/item/ammo_magazine/a9mm/top_mount/practice + name = "top mounted magazine (9mm practice)" + ammo_preload = /obj/item/ammo_casing/a9mm/practice + +/obj/item/ammo_magazine/a9mm/clip + name = "ammo clip (9mm)" + icon = 'icons/modules/projectiles/magazines/old_stripper.dmi' + icon_state = "pistol-10" + base_icon_state = "pistol" + rendering_system = GUN_RENDERING_STATES + rendering_count = 10 + magazine_type = MAGAZINE_TYPE_CLIP + desc = "A stripper clip for reloading 9mm rounds into magazines." + ammo_preload = /obj/item/ammo_casing/a9mm + materials_base = list(MAT_STEEL = 200) + ammo_max = 10 + +/obj/item/ammo_magazine/a9mm/clip/hunter + name = "ammo clip (9mm hunter)" + ammo_preload = /obj/item/ammo_casing/a9mm/hunter + +/obj/item/ammo_magazine/a9mm/clip/rubber + name = "ammo clip (9mm rubber)" + ammo_preload = /obj/item/ammo_casing/a9mm/rubber + +/obj/item/ammo_magazine/a9mm/clip/practice + name = "ammo clip (9mm practice)" + ammo_preload = /obj/item/ammo_casing/a9mm/practice + +/obj/item/ammo_magazine/a9mm/clip/flash + name = "ammo clip (9mm flash)" + ammo_preload = /obj/item/ammo_casing/a9mm/flash + +/obj/item/ammo_magazine/a9mm/clip/silver + name = "ammo clip (9mm silver)" + ammo_preload = /obj/item/ammo_casing/a9mm/silver + icon_state = "pistol-silver-10" + base_icon_state = "pistol-silver" + +/obj/item/ammo_magazine/a9mm/advanced_smg + desc = "A very high capacity double stack magazine made specially for the Advanced SMG. Filled with 21 9mm bullets." + icon = 'icons/modules/projectiles/magazines/old_magazine_stick.dmi' + icon_state = "advsmg-1" + base_icon_state = "advsmg" + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 + ammo_preload = /obj/item/ammo_casing/a9mm + materials_base = list(MAT_STEEL = 700) + ammo_max = 21 + +/obj/item/ammo_magazine/a9mm/advanced_smg/empty + icon_state = "advsmg-0" + ammo_current = 0 + +/obj/item/ammo_magazine/a9mm/advanced_smg/ap + desc = "A high capacity double stack magazine made specially for the Advanced SMG. Filled with 21 9mm armor piercing bullets." + ammo_preload = /obj/item/ammo_casing/a9mm/ap diff --git a/code/modules/projectiles/ammunition/calibers/special/arrow.dm b/code/modules/projectiles/ammunition/calibers/special/arrow.dm new file mode 100644 index 00000000000..3b065aa758b --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/special/arrow.dm @@ -0,0 +1,51 @@ +/datum/ammo_caliber/arrow + caliber = "arrow" + +/obj/item/ammo_casing/arrow + name = "arrow of questionable material" + desc = "You shouldn't be seeing this arrow." + projectile_type = /obj/projectile/bullet/reusable/arrow + regex_this_caliber = /datum/ammo_caliber/arrow + + icon = 'icons/modules/projectiles/casings/arrow.dmi' + icon_state = "arrow" + icon_spent = FALSE + + throw_force = 3 //good luck hitting someone with the pointy end of the arrow + throw_speed = 3 + + casing_flags = CASING_DELETE + +/obj/item/ammo_casing/arrow/wood + name = "wooden arrow" + desc = "An arrow made of wood, typically fired from a bow." + +/obj/item/ammo_casing/arrow/bone + name = "bone arrow" + desc = "An arrow made of bone, knapped to a piercing tip." + icon_state = "ashenarrow" + projectile_type = /obj/projectile/bullet/reusable/arrow/bone + +/obj/item/ammo_casing/arrow/ash + name = "ashen arrow" + desc = "An arrow made of wood, hardened by fire." + icon_state = "ashenarrow" + projectile_type = /obj/projectile/bullet/reusable/arrow/ash + +/obj/item/ammo_casing/arrow/bone_ap + name = "hardened bone arrow" + desc = "An arrow made of bone and sinew. The tip is sharp enough to pierce through a goliath plate." + icon_state = "bonearrow" + projectile_type = /obj/projectile/bullet/reusable/arrow/bone_ap + +/obj/item/ammo_casing/arrow/bronze + name = "bronze arrow" + desc = "An arrow made of wood, tipped with bronze. The tip is dense enough to provide some armor penetration." + icon_state = "bronzearrow" + projectile_type = /obj/projectile/bullet/reusable/arrow/bronze + +/obj/item/ammo_casing/arrow/plunger + name = "plunger" + desc = "It's a plunger, for plunging." + icon_state = "plunger" + projectile_type = /obj/projectile/bullet/reusable/plunger diff --git a/code/modules/projectiles/ammunition/calibers/special/biomatter-wax.dm b/code/modules/projectiles/ammunition/calibers/special/biomatter-wax.dm new file mode 100644 index 00000000000..2d53f3d3708 --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/special/biomatter-wax.dm @@ -0,0 +1,31 @@ + +/datum/ammo_caliber/biomatter/wax + caliber = "wax" + +/obj/item/ammo_casing/biomatter/wax + name = "wax globule" + desc = "Tacky wax rendered semi-solid and ready for compression." + icon_state = "globule" + color = "#E6E685" + projectile_type = /obj/projectile/bullet/organic/wax + regex_this_caliber = /datum/ammo_caliber/biomatter/wax + materials_base = list( + /datum/material/wax::id = 100, + ) + +/obj/item/ammo_magazine/biovial + name = "bio-vial (Liquid Wax)" + desc = "Biological Munitions Vials, commonly referred to as bio-vials, contain liquid biomatter of some form, for use in exotic weapons systems. This one accepts wax globules." + + icon = 'icons/modules/projectiles/magazines/bio.dmi' + icon_state = "vial-4" + base_icon_state = "vial" + rendering_system = GUN_RENDERING_STATES + rendering_count = 4 + + ammo_caliber = /datum/ammo_caliber/biomatter/wax + ammo_preload = /obj/item/ammo_casing/biomatter/wax + materials_base = list( + /datum/material/wax::id = 100, + ) + ammo_max = 10 diff --git a/code/modules/projectiles/ammunition/calibers/special/biomatter.dm b/code/modules/projectiles/ammunition/calibers/special/biomatter.dm new file mode 100644 index 00000000000..44e5556d5d0 --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/special/biomatter.dm @@ -0,0 +1,47 @@ +/datum/ammo_caliber/biomatter + caliber = "biomatter" + +/obj/item/ammo_casing/biomatter + name = "biomatter globule" + desc = "Globular biomatter rendered and ready for compression." + regex_this_caliber = /datum/ammo_caliber/biomatter + + icon = 'icons/modules/projectiles/casings/bio.dmi' + icon_state = "globule" + icon_spent = FALSE + + color = "#FFE0E2" + projectile_type = /obj/projectile/bullet/organic + materials_base = list("flesh" = 100) + + casing_flags = CASING_DELETE + +/obj/item/ammo_magazine/biomatter + name = "magazine (Compressed Biomatter)" + desc = "An advanced matter compression unit, used to feed biomass into a Rapid On-board Fabricator. Accepts biomass globules." + + icon_state = "bio-4" + base_icon_state = "bio" + rendering_system = GUN_RENDERING_STATES + rendering_count = 4 + + ammo_caliber = /datum/ammo_caliber/biomatter + ammo_preload = /obj/item/ammo_casing/biomatter + materials_base = list("flesh" = 1000) + ammo_max = 10 + +/obj/item/ammo_magazine/biomatter + ammo_max = 10 + +/obj/item/ammo_magazine/biomatter/large + icon_state = "bio-large-5" + base_icon_state = "bio-large" + rendering_system = GUN_RENDERING_STATES + rendering_count = 5 + + ammo_max = 30 + +/obj/item/ammo_magazine/biomatter/large/banana + icon_state = "banana-mag" + base_icon_state = "banana-mag" + rendering_system = GUN_RENDERING_DISABLED diff --git a/code/modules/projectiles/ammunition/calibers/special/blunderbuss.dm b/code/modules/projectiles/ammunition/calibers/special/blunderbuss.dm new file mode 100644 index 00000000000..61294cbe13e --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/special/blunderbuss.dm @@ -0,0 +1,18 @@ +/datum/ammo_caliber/blunderbuss + caliber = "blunderbuss" + +/obj/item/ammo_casing/blunderbuss + name = "shot" + desc = "A bundle of lead balls and other assorted shrapnel." + icon = 'icons/modules/projectiles/casings/blunderbuss.dmi' + icon_state = "blunderbuss" + regex_this_caliber = /datum/ammo_caliber/blunderbuss + projectile_type = /obj/projectile/bullet/pellet/blunderbuss + materials_base = list("lead" = 500) + +/obj/item/ammo_casing/blunderbuss/silver + name = "sliver shot" + desc = "A bundle of silver lead allow balls and other assorted bits of silver." + icon_state = "silverbuss" + projectile_type = /obj/projectile/bullet/pellet/blunderbuss/silver + materials_base = list("lead" = 500, "silver" = 500) diff --git a/code/modules/projectiles/ammunition/calibers/special/cap.dm b/code/modules/projectiles/ammunition/calibers/special/cap.dm new file mode 100644 index 00000000000..3550ad9a308 --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/special/cap.dm @@ -0,0 +1,24 @@ +/datum/ammo_caliber/cap_gun + caliber = "capgun" + +/obj/item/ammo_casing/cap_gun + name = "cap" + desc = "A cap for children toys." + icon = 'icons/modules/projectiles/casings/slim.dmi' + icon_state = "small" + regex_this_caliber = /datum/ammo_caliber/cap_gun + color = "#FF0000" + projectile_type = /obj/projectile/bullet/pistol/cap + materials_base = list(MAT_STEEL = 85) + +/obj/item/ammo_magazine/cap_gun + name = "speedloader (caps)" + icon = 'icons/modules/projectiles/magazines/old_speedloader_7.dmi' + icon_state = "normal-7" + base_icon_state = "normal" + rendering_system = GUN_RENDERING_STATES + ammo_caliber = /datum/ammo_caliber/cap_gun + ammo_preload = /obj/item/ammo_casing/cap_gun + materials_base = list(MAT_STEEL = 50) + ammo_max = 7 + diff --git a/code/modules/projectiles/ammunition/calibers/special/dart.dm b/code/modules/projectiles/ammunition/calibers/special/dart.dm new file mode 100644 index 00000000000..151bef61bc9 --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/special/dart.dm @@ -0,0 +1,71 @@ +/datum/ammo_caliber/dart + caliber = "dart" + +//* Casings *// + +/obj/item/ammo_casing/dart/chemdart + name = "chemical dart" + desc = "A casing containing a small hardened, hollow dart." + icon_state = "dartcasing" + regex_this_caliber = /datum/ammo_caliber/dart + projectile_type = /obj/projectile/bullet/chemdart + +/obj/item/ammo_casing/dart/chemdart/small + name = "short chemical dart" + desc = "A casing containing a small hardened, hollow dart." + projectile_type = /obj/projectile/bullet/chemdart/small + +//* Magazines *// + +/obj/item/ammo_magazine/chemdart + name = "dart cartridge" + desc = "A rack of hollow darts." + + icon_state = "darts-5" + base_icon_state = "darts" + rendering_system = GUN_RENDERING_STATES + rendering_count = 5 + + item_state = "rcdammo" + origin_tech = list(TECH_MATERIAL = 2) + magazine_type = MAGAZINE_TYPE_NORMAL + ammo_caliber = /datum/ammo_caliber/dart + ammo_type = /obj/item/ammo_casing/dart/chemdart + ammo_max = 5 + +/obj/item/ammo_magazine/chemdart/small + name = "small dart cartridge" + desc = "A rack of hollow darts." + + icon_state = "darts_small-5" + base_icon_state = "darts_small" + rendering_system = GUN_RENDERING_STATES + rendering_count = 3 + + origin_tech = list(TECH_MATERIAL = 2) + ammo_type = /obj/item/ammo_casing/dart/chemdart/small + ammo_max = 3 + +//* Projectiles *// + +/obj/projectile/bullet/chemdart + name = "dart" + icon_state = "dart" + damage = 5 + var/reagent_amount = 15 + range = WORLD_ICON_SIZE * 15 + + muzzle_type = null + +/obj/projectile/bullet/chemdart/Initialize(mapload) + . = ..() + create_reagents(reagent_amount) + +/obj/projectile/bullet/chemdart/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null) + if(blocked < 2 && isliving(target)) + var/mob/living/L = target + if(L.can_inject(target_zone=def_zone)) + reagents.trans_to_mob(L, reagent_amount, CHEM_INJECT) + +/obj/projectile/bullet/chemdart/small + reagent_amount = 10 diff --git a/code/modules/projectiles/ammunition/calibers/special/foam.dm b/code/modules/projectiles/ammunition/calibers/special/foam.dm new file mode 100644 index 00000000000..0379c401ac9 --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/special/foam.dm @@ -0,0 +1,137 @@ +/datum/ammo_caliber/foam + caliber = "donksoft" + +//* Ammunition *// + +/obj/item/ammo_casing/foam + name = "foam dart" + desc = "A soft projectile made out of orange foam with a blue plastic tip." + projectile_type = /obj/projectile/bullet/reusable/foam + regex_this_caliber = /datum/ammo_caliber/foam + icon = 'icons/modules/projectiles/casings/foam.dmi' + icon_state = "dart" + throw_force = 0 + throw_speed = 3 + casing_flags = CASING_DELETE + drop_sound = 'sound/items/drop/accessory.ogg' + pickup_sound = 'sound/items/pickup/accessory.ogg' + +/obj/item/ammo_casing/foam/riot + name = "riot dart" + desc = "A flexible projectile made out of hardened orange foam with a red plastic tip." + projectile_type = /obj/projectile/bullet/reusable/foam/riot + icon_state = "dart-riot" + +//* Magazines *// + +// todo: should the type filtering be on the gun or on the magazine? probably the magazine tbh. + +/obj/item/ammo_magazine/foam + name = "abstract toy magazine" + desc = "You shouldn't be seeing this, contact a Maintainer!" + + icon = 'icons/modules/projectiles/magazines/foam.dmi' + + materials_base = list(MAT_PLASTIC = 480) + ammo_caliber = /datum/ammo_caliber/foam + ammo_preload = /obj/item/ammo_casing/foam + ammo_max = 8 + +/obj/item/ammo_magazine/foam/box + name = "box of foam darts" + desc = "It has a picture of some foam darts on it." + + icon_state = "box" + base_icon_state = "box" + inhand_state = "box" + + ammo_max = 30 + + drop_sound = 'sound/items/drop/ammobox.ogg' + pickup_sound = 'sound/items/pickup/ammobox.ogg' + +/obj/item/ammo_magazine/foam/box/riot + name = "box of riot darts" + desc = "It has a picture of some angry looking foam darts on it." + + icon_state = "box-riot" + base_icon_state = "box-riot" + + ammo_preload = /obj/item/ammo_casing/foam/riot + +/obj/item/ammo_magazine/foam/pistol + name = "toy pistol magazine" + desc = "A plastic pistol magazine for foam darts!" + + icon_state = "pistol-1" + base_icon_state = "pistol" + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 + +/obj/item/ammo_magazine/foam/pistol/empty + icon_state = "pistol-0" + + ammo_current = 0 + +/obj/item/ammo_magazine/foam/pistol/riot + name = "toy pistol magazine (riot)" + + icon_state = "pistol-riot-1" + base_icon_state = "pistol-riot" + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 + + ammo_preload = /obj/item/ammo_casing/foam/riot + +/obj/item/ammo_magazine/foam/lmg + name = "toy magazine box" + desc = "A heavy plastic box designed to hold belts of foam darts! Wow!" + + icon_state = "lmg-1" + base_icon_state = "lmg" + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 + + materials_base = list(MAT_PLASTIC = 10000) + w_class = WEIGHT_CLASS_NORMAL + ammo_max = 50 + +/obj/item/ammo_magazine/foam/lmg/empty + ammo_current = 0 + +/obj/item/ammo_magazine/foam/lmg/riot + name = "toy magazine box (riot)" + + icon_state = "lmg-riot-1" + base_icon_state = "lmg-riot" + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 + + ammo_preload = /obj/item/ammo_casing/foam/riot + +/obj/item/ammo_magazine/foam/smg + name = "toy submachine gun magazine" + desc = "A plastic recreation of a double-stack submachine gun magazine." + + icon_state = "smg-1" + base_icon_state = "smg" + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 + + materials_base = list(MAT_PLASTIC = 1200) + ammo_max = 20 + +/obj/item/ammo_magazine/foam/smg/empty + icon_state = "smg-0" + + ammo_current = 0 + +/obj/item/ammo_magazine/foam/smg/riot + name = "toy submachine gun magazine (riot)" + + icon_state = "smg-riot-1" + base_icon_state = "smg-riot" + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 + + ammo_preload = /obj/item/ammo_casing/foam/riot diff --git a/code/modules/projectiles/ammunition/calibers/special/microbattery.dm b/code/modules/projectiles/ammunition/calibers/special/microbattery.dm new file mode 100644 index 00000000000..894ffcd4c0d --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/special/microbattery.dm @@ -0,0 +1,4 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2024 silicons *// + +/datum/ammo_caliber/microbattery diff --git a/code/modules/projectiles/ammunition/calibers/special/musket.dm b/code/modules/projectiles/ammunition/calibers/special/musket.dm new file mode 100644 index 00000000000..6aed4b07d22 --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/special/musket.dm @@ -0,0 +1,19 @@ +/datum/ammo_caliber/musket + caliber = "musket" + +/obj/item/ammo_casing/musket + name = "musket ball" + desc = "A solid ball made of lead." + icon = 'icons/modules/projectiles/casings/musket.dmi' + icon_state = "musketball" + regex_this_caliber = /datum/ammo_caliber/musket + projectile_type = /obj/projectile/bullet/musket + materials_base = list("lead" = 100) + casing_flags = CASING_DELETE + +/obj/item/ammo_casing/musket/silver + name = "silver musket ball" + desc = "A solid ball made of a lead-silver alloy." + icon_state = "silverball" + projectile_type = /obj/projectile/bullet/musket/silver + materials_base = list("lead" = 100, "silver" = 100) diff --git a/code/modules/projectiles/ammunition/calibers/special/pellet.dm b/code/modules/projectiles/ammunition/calibers/special/pellet.dm new file mode 100644 index 00000000000..749c074bcc4 --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/special/pellet.dm @@ -0,0 +1,36 @@ +/datum/ammo_caliber/pellet + caliber = "pellet" + +//* Ammunition *// + +/obj/item/ammo_casing/p_pellet + name = "pellet" + desc = "Also know as a BB, it is shot from airguns for recreational shooting." + regex_this_caliber = /datum/ammo_caliber/pellet + icon = 'icons/obj/gun/ballistic/caseless/pellet.dmi' + icon_state = "pellet_single" + projectile_type = /obj/projectile/bullet/practice + casing_flags = CASING_DELETE + materials_base = list( + /datum/material/plastic::id = 10, + ) + +//* Magazines *// + +/obj/item/ammo_magazine/pellets + name = "box of pellets" + desc = "A box containing small pellets for a pellet gun." + + icon = 'icons/obj/gun/ballistic/caseless/pellet.dmi' + icon_state = "pelletbox-50" + base_icon_state = "pelletbox" + rendering_system = GUN_RENDERING_STATES + rendering_count = 1 + + ammo_caliber = /datum/ammo_caliber/pellet + ammo_type = /obj/item/ammo_casing/p_pellet + magazine_type = MAGAZINE_TYPE_BOX + materials_base = list( + /datum/material/steel::id = 100, + ) + ammo_max = 50 diff --git a/code/modules/projectiles/ammunition/calibers/special/rocket.dm b/code/modules/projectiles/ammunition/calibers/special/rocket.dm new file mode 100644 index 00000000000..d0e2bc2d67f --- /dev/null +++ b/code/modules/projectiles/ammunition/calibers/special/rocket.dm @@ -0,0 +1,15 @@ +/datum/ammo_caliber/rocket + caliber = "rocket" + +/obj/item/ammo_casing/rocket + name = "rocket shell" + desc = "A high explosive designed to be fired from a launcher." + icon_state = "rocketshell_alt" + projectile_type = /obj/projectile/bullet/srmrocket + regex_this_caliber = /datum/ammo_caliber/rocket + materials_base = list(MAT_STEEL = 10000) + +/obj/item/ammo_casing/rocket/weak + name = "low-yield rocket shell" + projectile_type = /obj/projectile/bullet/srmrocket/weak + materials_base = list(MAT_STEEL = 5000) diff --git a/code/modules/projectiles/ammunition/rounds.dm b/code/modules/projectiles/ammunition/rounds.dm deleted file mode 100644 index e43c6248cb0..00000000000 --- a/code/modules/projectiles/ammunition/rounds.dm +++ /dev/null @@ -1,734 +0,0 @@ -/************************************************************************/ -/* -# An explaination of the naming format for guns and ammo: -# -# a = Ammo, as in individual rounds of ammunition. -# b = Box, intended to have ammo taken out one at a time by hand. -# c = Clips, intended to reload magazines or guns quickly. -# m = Magazine, intended to hold rounds of ammo. -# s = Speedloaders, intended to reload guns quickly. -# -# Use this format, followed by the caliber. For example, a shotgun's caliber -# variable is "12g" as a result. Ergo, a shotgun round's path would have "a12g", -# or a magazine with shotgun shells would be "m12g" instead. To avoid confusion -# for developers and in-game admins spawning these items, stick to this format. -# Likewise, when creating new rounds, the caliber variable should match whatever -# the name says. -# -# This comment is copied in magazines.dm as well. -*/ -/************************************************************************/ - -/* - * .357 - */ - -/obj/item/ammo_casing/a357 - desc = "A .357 bullet casing." - caliber = ".357" - projectile_type = /obj/projectile/bullet/pistol/strong - materials_base = list(MAT_STEEL = 210) - -/obj/item/ammo_casing/a357/silver - desc = "A .357 silver bullet casing. Bless and Sancitfied to banish otherworlds entities." - caliber = ".357" - icon_state = "ag-casing" - projectile_type = /obj/projectile/bullet/pistol/strong - materials_base = list(MAT_STEEL = 350, MAT_SILVER = 200) - -/* - * .38 - */ - -/obj/item/ammo_casing/a38 - desc = "A .38 bullet casing." - caliber = ".38" - projectile_type = /obj/projectile/bullet/pistol - materials_base = list(MAT_STEEL = 60) - -/obj/item/ammo_casing/a38/rubber - desc = "A .38 rubber bullet casing." - icon_state = "r-casing" - projectile_type = /obj/projectile/bullet/pistol/rubber - -/obj/item/ammo_casing/a38/emp - name = ".38 haywire round" - desc = "A .38 bullet casing fitted with a single-use ion pulse generator." - icon_state = "empcasing" - projectile_type = /obj/projectile/ion/small - materials_base = list(MAT_STEEL = 130, MAT_URANIUM = 100) - -/obj/item/ammo_casing/a38/silver - desc = "A .38 silver bullet casing. Bless and Sancitfied to banish otherworlds entities." - icon_state = "ag-casing" - projectile_type = /obj/projectile/bullet/pistol/silver - materials_base = list(MAT_STEEL = 130, MAT_SILVER = 100) - - -/* - * .44 - */ - -/obj/item/ammo_casing/a44 - desc = "A .44 bullet casing." - caliber = ".44" - projectile_type = /obj/projectile/bullet/pistol/strong - materials_base = list(MAT_STEEL = 210) - -/obj/item/ammo_casing/a44/rubber - icon_state = "r-casing" - desc = "A .44 rubber bullet casing." - projectile_type = /obj/projectile/bullet/pistol/rubber/strong - materials_base = list(MAT_STEEL = 60) - -/obj/item/ammo_casing/a44/silver - desc = "A .44 silver bullet casing. Bless and Sancitfied to banish otherworlds entities." - icon_state = "ag_casing" - projectile_type = /obj/projectile/bullet/pistol/strong/silver - materials_base = list(MAT_STEEL = 350, MAT_SILVER = 200) - -/* - * .75 (aka Gyrojet Rockets, aka admin abuse) - */ - -/obj/item/ammo_casing/a75 - desc = "A .75 gyrojet rocket sheathe." - caliber = ".75" - projectile_type = /obj/projectile/bullet/gyro - materials_base = list(MAT_STEEL = 4000) - -/* - * 9mm - */ - -/obj/item/ammo_casing/a9mm - desc = "A 9mm bullet casing." - caliber = "9mm" - projectile_type = /obj/projectile/bullet/pistol - materials_base = list(MAT_STEEL = 60) - -/obj/item/ammo_casing/a9mm/ap - desc = "A 9mm armor-piercing bullet casing." - projectile_type = /obj/projectile/bullet/pistol/ap - materials_base = list(MAT_STEEL = 80) - -/obj/item/ammo_casing/a9mm/hp - desc = "A 9mm hollow-point bullet casing." - projectile_type = /obj/projectile/bullet/pistol/hp - -/obj/item/ammo_casing/a9mm/hunter - desc = "A 9mm hunting bullet casing." - projectile_type = /obj/projectile/bullet/pistol/hunter - materials_base = list(MAT_STEEL = 80) - -/obj/item/ammo_casing/a9mm/flash - desc = "A 9mm flash shell casing." - icon_state = "r-casing" - projectile_type = /obj/projectile/energy/flash - -/obj/item/ammo_casing/a9mm/rubber - desc = "A 9mm rubber bullet casing." - icon_state = "r-casing" - projectile_type = /obj/projectile/bullet/pistol/rubber - -/obj/item/ammo_casing/a9mm/practice - desc = "A 9mm practice bullet casing." - icon_state = "r-casing" - projectile_type = /obj/projectile/bullet/practice - -/obj/item/ammo_casing/a9mm/silver - desc = "A 9mm silver bullet casing. Bless and Sancitfied to banish otherworlds entities." - icon_state = "ag-casing" - projectile_type = /obj/projectile/bullet/pistol/silver - materials_base = list(MAT_STEEL = 130, MAT_SILVER = 100) - -/* - * 5.7 - */ -/obj/item/ammo_casing/a57x28mm - desc = "A 5.7x28mm bullet casing." - caliber = "5.7x28mm" - projectile_type = /obj/projectile/bullet/pistol/lap - materials_base = list(MAT_STEEL = 30, MAT_COPPER = 30) - -/obj/item/ammo_casing/a57x28mm/ap - desc = "A 5.7x28mm armor-piercing bullet casing." - projectile_type = /obj/projectile/bullet/pistol/ap - materials_base = list(MAT_STEEL = 80, MAT_COPPER = 30) - -/obj/item/ammo_casing/a57x28mm/hp - desc = "A 5.7x28mm hollow-point bullet casing." - projectile_type = /obj/projectile/bullet/pistol/hp - materials_base = list(MAT_STEEL = 60, MAT_COPPER = 30) - -/obj/item/ammo_casing/a57x28mm/hunter - desc = "A 5.7x28mm hunting bullet casing." - projectile_type = /obj/projectile/bullet/pistol/hunter - materials_base = list(MAT_STEEL = 30, MAT_COPPER = 50) - -/* - * .45 - */ - -/obj/item/ammo_casing/a45 - desc = "A .45 bullet casing." - caliber = ".45" - projectile_type = /obj/projectile/bullet/pistol/medium - materials_base = list(MAT_STEEL = 75) - -/obj/item/ammo_casing/a45/ap - desc = "A .45 Armor-Piercing bullet casing." - icon_state = "r-casing" - projectile_type = /obj/projectile/bullet/pistol/medium/ap - -/obj/item/ammo_casing/a45/hunter - desc = "A .45 hunting bullet casing." - projectile_type = /obj/projectile/bullet/pistol/medium/hunter - materials_base = list(MAT_STEEL = 75) - -/obj/item/ammo_casing/a45/practice - desc = "A .45 practice bullet casing." - icon_state = "r-casing" - projectile_type = /obj/projectile/bullet/practice - materials_base = list(MAT_STEEL = 60) - -/obj/item/ammo_casing/a45/rubber - desc = "A .45 rubber bullet casing." - icon_state = "r-casing" - projectile_type = /obj/projectile/bullet/pistol/rubber - materials_base = list(MAT_STEEL = 60) - -/obj/item/ammo_casing/a45/flash - desc = "A .45 flash shell casing." - icon_state = "r-casing" - projectile_type = /obj/projectile/energy/flash - materials_base = list(MAT_STEEL = 60) - -/obj/item/ammo_casing/a45/emp - name = ".45 haywire round" - desc = "A .45 bullet casing fitted with a single-use ion pulse generator." - projectile_type = /obj/projectile/ion/small - icon_state = "empcasing" - materials_base = list(MAT_STEEL = 130, MAT_URANIUM = 100) - -/obj/item/ammo_casing/a45/hp - desc = "A .45 hollow-point bullet casing." - projectile_type = /obj/projectile/bullet/pistol/medium/hp - -/obj/item/ammo_casing/a45/silver - name = ".45 silver round" - desc = "A .45 silver bullet casing. Bless and Sancitfied to banish otherworlds entities." - icon_state = "ag-casing" - projectile_type = /obj/projectile/bullet/pistol/silver - materials_base = list(MAT_STEEL = 130, MAT_SILVER = 100) - - -/* - * 10mm - */ - -/obj/item/ammo_casing/a10mm - desc = "A 10mm bullet casing." - caliber = "10mm" - projectile_type = /obj/projectile/bullet/pistol/medium - materials_base = list(MAT_STEEL = 75) - -/obj/item/ammo_casing/a10mm/emp - name = "10mm haywire round" - desc = "A 10mm bullet casing fitted with a single-use ion pulse generator." - projectile_type = /obj/projectile/ion/small - icon_state = "empcasing" - materials_base = list(MAT_STEEL = 130, MAT_URANIUM = 100) - -/* - * 12g (aka shotgun ammo) - */ - -/obj/item/ammo_casing/a12g - name = "shotgun slug" - desc = "A 12 gauge slug." - icon_state = "slshell" - caliber = "12g" - projectile_type = /obj/projectile/bullet/shotgun - materials_base = list(MAT_STEEL = 360) - fall_sounds = list('sound/weapons/guns/shotgun_fall.ogg') - worth_intrinsic = 7.5 - -/obj/item/ammo_casing/a12g/pellet - name = "shotgun shell" - desc = "A 12 gauge shell." - icon_state = "gshell" - projectile_type = /obj/projectile/bullet/pellet/shotgun - worth_intrinsic = 7.5 - -/obj/item/ammo_casing/a12g/blank - name = "shotgun shell" - desc = "A blank shell." - icon_state = "blshell" - projectile_type = /obj/projectile/bullet/blank - materials_base = list(MAT_STEEL = 90) - worth_intrinsic = 2.5 - -/obj/item/ammo_casing/a12g/practice - name = "shotgun shell" - desc = "A practice shell." - icon_state = "pshell" - projectile_type = /obj/projectile/bullet/practice - materials_base = list(MAT_STEEL = 90) - worth_intrinsic = 2.5 - -/obj/item/ammo_casing/a12g/beanbag - name = "beanbag shell" - desc = "A beanbag shell." - icon_state = "bshell" - projectile_type = /obj/projectile/bullet/shotgun/beanbag - materials_base = list(MAT_STEEL = 180) - worth_intrinsic = 3.5 - -/obj/item/ammo_casing/a12g/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/projectile/bullet/pellet/shotgun_improvised - materials_base = list(MAT_STEEL = 500, MAT_GLASS = 200) - -//Can stun in one hit if aimed at the head, but -//is blocked by clothing that stops tasers and is vulnerable to EMP -/obj/item/ammo_casing/a12g/stunshell - name = "stun shell" - desc = "A 12 gauge taser cartridge." - icon_state = "stunshell" - projectile_type = /obj/projectile/energy/electrode/stunshot - materials_base = list(MAT_STEEL = 360, MAT_GLASS = 720) - worth_intrinsic = 7.5 - -//Does not stun, only blinds, but has area of effect. -/obj/item/ammo_casing/a12g/flare - name = "flare shell" - desc = "A chemical shell used to signal distress or provide illumination." - icon_state = "fshell" - projectile_type = /obj/projectile/energy/flash/flare - materials_base = list(MAT_STEEL = 90, MAT_GLASS = 90) - worth_intrinsic = 2.5 - -//Silver 12g -/obj/item/ammo_casing/a12g/silver - name = " Silver shotgun shell" - desc = "A 12 gauge slug. Bless and Sancitfied to banish otherworlds entities." - icon_state = "agshell" - caliber = "12g" - projectile_type = /obj/projectile/bullet/pellet/shotgun/silver - materials_base = list(MAT_STEEL = 360, MAT_SILVER = 240) - worth_intrinsic = 20 - -//Wooden Stake 12g -/obj/item/ammo_casing/a12g/stake - name = "Wooden stake shell" - desc = "A specialized shell designed to launch a wooden stake. Bless and Sancitfied to banish otherworlds entities." - icon_state = "agshell" - caliber = "12g" - projectile_type = /obj/projectile/bullet/shotgun/stake - materials_base = list(MAT_STEEL = 500) - worth_intrinsic = 45 - -//Techshell & Derivatives -/obj/item/ammo_casing/a12g/techshell - name = "unloaded technological shell" - desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects." - icon_state = "cshell" - caliber = "12g" - projectile_type = null - materials_base = list(MAT_STEEL = 500, MAT_PHORON = 200) - worth_intrinsic = 35 - -/obj/item/ammo_casing/a12g/techshell/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/projectile/meteor/slug - materials_base = list(MAT_STEEL = 500, MAT_GOLD = 200) - worth_intrinsic = 75 - -/obj/item/ammo_casing/a12g/techshell/emp - name = "ion shell" - desc = "An advanced shotgun round that creates a small EMP when it strikes a target." - icon_state = "empshell" - projectile_type = /obj/projectile/scatter/ion -// projectile_type = /obj/projectile/bullet/shotgun/ion - materials_base = list(MAT_STEEL = 360, MAT_URANIUM = 240) - worth_intrinsic = 50 - -/obj/item/ammo_casing/a12g/techshell/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 = "plshell" - projectile_type = /obj/projectile/beam/pulse/shotgun - materials_base = list(MAT_STEEL = 500, MAT_SILVER = 200) - worth_intrinsic = 75 - -/obj/item/ammo_casing/a12g/techshell/dragonsbreath - name = "dragonsbreath shell" - desc = "A shotgun shell which fires a spread of incendiary pellets." - icon_state = "ishell" - projectile_type = /obj/projectile/bullet/incendiary/shotgun - worth_intrinsic = 75 - -/obj/item/ammo_casing/a12g/techshell/frag12 - name = "FRAG-12 slug" - desc = "A high explosive breaching round for a 12 gauge shotgun." - icon_state = "heshell" - projectile_type = /obj/projectile/bullet/shotgun/frag12 - materials_base = list(MAT_STEEL = 500, MAT_PHORON = 200) - worth_intrinsic = 100 - -/obj/item/ammo_casing/a12g/techshell/laserslug - name = "scatter laser shell" - desc = "An advanced shotgun shell that uses a micro laser to replicate the effects of a scatter laser weapon in a ballistic package." - icon_state = "lshell" - projectile_type = /obj/projectile/scatter/laser - materials_base = list(MAT_STEEL = 500, MAT_GLASS = 200) - worth_intrinsic = 75 - -/* - * 7.62mm - */ - -/obj/item/ammo_casing/a762 - desc = "A 7.62mm bullet casing." - caliber = "7.62mm" - icon_state = "rifle-casing" - projectile_type = /obj/projectile/bullet/rifle/a762 - materials_base = list(MAT_STEEL = 200) - worth_intrinsic = 20 - -/obj/item/ammo_casing/a762/ap - desc = "A 7.62mm armor-piercing bullet casing." - projectile_type = /obj/projectile/bullet/rifle/a762/ap - materials_base = list(MAT_STEEL = 300) - worth_intrinsic = 30 - -/obj/item/ammo_casing/a762/practice - desc = "A 7.62mm practice bullet casing." - icon_state = "rifle-casing" // Need to make an icon for these - projectile_type = /obj/projectile/bullet/practice - materials_base = list(MAT_STEEL = 90) - -/obj/item/ammo_casing/a762/blank - desc = "A blank 7.62mm bullet casing." - projectile_type = /obj/projectile/bullet/blank - materials_base = list(MAT_STEEL = 90) - worth_intrinsic = 5 - -/obj/item/ammo_casing/a762/hp - desc = "A 7.62mm hollow-point bullet casing." - projectile_type = /obj/projectile/bullet/rifle/a762/hp - -/obj/item/ammo_casing/a762/hunter - desc = "A 7.62mm hunting bullet casing." - projectile_type = /obj/projectile/bullet/rifle/a762/hunter - -/obj/item/ammo_casing/a762/sniper - desc = "A 7.62mm high velocity bullet casing optimised for a marksman rifle." - projectile_type = /obj/projectile/bullet/rifle/a762/sniper - -/obj/item/ammo_casing/a762/sniperhunter - desc = "A 7.62mm high velocity hunter bullet casing optimised for a marksman rifle." - projectile_type = /obj/projectile/bullet/rifle/a762/sniperhunter - -/obj/item/ammo_casing/a762/silver - desc = "A 7.62mm hunting bullet casing. Bless and Sancitfied to banish otherworlds entities." - icon_state = "agrifle-casing" - projectile_type = /obj/projectile/bullet/rifle/a762/silver - materials_base = list(MAT_STEEL = 300, MAT_SILVER = 150) - -/* - * 12.7mm (anti-materiel rifle round) - */ - -/obj/item/ammo_casing/a127 - desc = "A 12.7mm shell." - icon_state = "lcasing" - caliber = "12.7mm" - projectile_type = /obj/projectile/bullet/rifle/a127 - materials_base = list(MAT_STEEL = 1250) - -/* - * 5.56mm - */ - -/obj/item/ammo_casing/a556 - desc = "A 5.56mm bullet casing." - caliber = "5.56mm" - icon_state = "rifle-casing" - projectile_type = /obj/projectile/bullet/rifle/a556 - materials_base = list(MAT_STEEL = 180) - -/obj/item/ammo_casing/a556/ap - desc = "A 5.56mm armor-piercing bullet casing." - projectile_type = /obj/projectile/bullet/rifle/a556/ap - materials_base = list(MAT_STEEL = 270) - -/obj/item/ammo_casing/a556/practice - desc = "A 5.56mm practice bullet casing." - icon_state = "rifle-casing" // Need to make an icon for these - projectile_type = /obj/projectile/bullet/practice - materials_base = list(MAT_STEEL = 90) - -/obj/item/ammo_casing/a556/blank - desc = "A blank 5.56mm bullet casing." - projectile_type = /obj/projectile/bullet/blank - materials_base = list(MAT_STEEL = 90) - -/obj/item/ammo_casing/a556/hp - desc = "A 5.56mm hollow-point bullet casing." - projectile_type = /obj/projectile/bullet/rifle/a556/hp - -/obj/item/ammo_casing/a556/hunter - desc = "A 5.56mm hunting bullet casing." - projectile_type = /obj/projectile/bullet/rifle/a556/hunter - -/* - * 10x24mm Caseless - */ - -/obj/item/ammo_casing/a10x24mmcaseless - desc = "A 10x24mm caseless round, common during the Xenomorph wars due to its use the the battle rifles of the United Solar Marine Corps." - caliber = "10mmCL" - icon_state = "casing" - projectile_type = /obj/projectile/bullet/pistol/medium - materials_base = list(MAT_STEEL = 180) - casing_flags = CASING_DELETE - -/obj/item/ammo_casing/a10x24mmcaseless/ap - desc = "A 10x24mm caseless round, common during the Xenomorph wars due to its use the the battle rifles of the United Solar Marine Corps. This one was meant to shred armored targets." - caliber = "10mmCL" - icon_state = "casing" - projectile_type = /obj/projectile/bullet/pistol/medium/ap - materials_base = list(MAT_STEEL = 180) - -/obj/item/ammo_casing/a10x24mmcaseless/hp - desc = "A 10x24mm caseless round, common during the Xenomorph wars due to its use the the battle rifles of the United Solar Marine Corps. This one was meant to shred armored targets." - caliber = "10mmCL" - icon_state = "casing" - projectile_type = /obj/projectile/bullet/pistol/medium/hp - materials_base = list(MAT_STEEL = 180) - -/* - * 5mm Caseless - */ - -/obj/item/ammo_casing/a5mmcaseless - desc = "A 5mm solid phoron caseless round." - caliber = "5mm caseless" - icon_state = "p-casing" - projectile_type = /obj/projectile/bullet/pistol // Close enough to be comparable. - materials_base = list(MAT_STEEL = 180) - casing_flags = CASING_DELETE - -/obj/item/ammo_casing/a5mmcaseless/stun - desc = "A 5mm solid phoron caseless stun round." - projectile_type = /obj/projectile/energy/electrode // Maybe nerf this considering there's 30 rounds in a mag. - - -/* - * Misc - */ - -/obj/item/ammo_casing/fiftycalcaseless - name = "caseless phoron round" - desc = "A 12.7mm caseless round." - caliber = "12.7mm caseless" - icon_state = "p-casing" - projectile_type = /obj/projectile/bullet/incendiary/caseless - casing_flags = CASING_DELETE - -/obj/item/ammo_casing/phoron_shrap - name = "phoron shrapnel" - desc = "Should you really be holding this?" - caliber = "phoron shrapnel" - icon_state = "phoronshrap" - projectile_type = /obj/projectile/bullet/incendiary/phoronshrap - casing_flags = CASING_DELETE - -/obj/item/ammo_casing/rocket - name = "rocket shell" - desc = "A high explosive designed to be fired from a launcher." - icon_state = "rocketshell_alt" - projectile_type = /obj/projectile/bullet/srmrocket - caliber = "rocket" - materials_base = list(MAT_STEEL = 10000) - -/obj/item/ammo_casing/rocket/weak - name = "low-yield rocket shell" - projectile_type = /obj/projectile/bullet/srmrocket/weak - materials_base = list(MAT_STEEL = 5000) - -/obj/item/ammo_casing/cap - name = "cap" - desc = "A cap for children toys." - caliber = "caps" - icon_state = "r-casing" - color = "#FF0000" - projectile_type = /obj/projectile/bullet/pistol/cap - materials_base = list(MAT_STEEL = 85) - -/obj/item/ammo_casing/spent // For simple hostile mobs only, so they don't cough up usable bullets when firing. This is for literally nothing else. - icon_state = "s-casing-spent" - projectile_type = null - -/obj/item/ammo_casing/organic - name = "biomatter globule" - desc = "Globular biomatter rendered and ready for compression." - caliber = "organic" - icon_state = "globule" - color = "#FFE0E2" - projectile_type = /obj/projectile/bullet/organic - materials_base = list("flesh" = 100) - -/obj/item/ammo_casing/organic/wax - name = "wax globule" - desc = "Tacky wax rendered semi-solid and ready for compression." - caliber = "apidean" - icon_state = "globule" - color = "#E6E685" - projectile_type = /obj/projectile/bullet/organic/wax - materials_base = list("wax" = 100) - -/obj/item/ammo_casing/p_pellet - name = "pellet" - desc = "Also know as a BB, it is shot from airguns for recreational shooting." - caliber = "pellet" - icon_state = "pellet" - projectile_type = /obj/projectile/bullet/practice - casing_flags = CASING_DELETE - - -//Musket Rounds -/obj/item/ammo_casing/musket - name = "musket ball" - desc = "A solid ball made of lead." - icon_state = "musketball" - caliber = "musket" - projectile_type = /obj/projectile/bullet/musket - materials_base = list("lead" = 100) - casing_flags = CASING_DELETE - -/obj/item/ammo_casing/musket/silver - name = "silver musket ball" - desc = "A solid ball made of a lead-silver alloy." - icon_state = "silverball" - projectile_type = /obj/projectile/bullet/musket/silver - materials_base = list("lead" = 100, "silver" = 100) - -/obj/item/ammo_casing/musket/blunderbuss - name = "shot" - desc = "A bundle of lead balls and other assorted shrapnel." - icon_state = "blunderbuss" - caliber = "blunderbuss" - projectile_type = /obj/projectile/bullet/pellet/blunderbuss - materials_base = list("lead" = 500) - -/obj/item/ammo_casing/musket/blunderbuss/silver - name = "sliver shot" - desc = "A bundle of silver lead allow balls and other assorted bits of silver." - icon_state = "silverbuss" - projectile_type = /obj/projectile/bullet/pellet/blunderbuss/silver - materials_base = list("lead" = 500, "silver" = 500) - -//Ten Gauge Rounds for Exotic Shotguns -/obj/item/ammo_casing/a10g - name = "heavy shotgun slug" - desc = "A brass jacketed 10 gauge slug shell." - icon_state = "brshell" - caliber = "10g" - projectile_type = /obj/projectile/bullet/heavy_shotgun - materials_base = list(MAT_STEEL = 300, "brass" = 200) - fall_sounds = list('sound/weapons/guns/shotgun_fall.ogg') - -/obj/item/ammo_casing/a10g/pellet //Spread variant. - name = "heavy shotgun shell" - desc = "A brass jacketed 10 gauge shot shell." - projectile_type = /obj/projectile/scatter/heavy_shotgun - -/obj/item/ammo_casing/a10g/silver - name = "heavy silver shotgun shell" - desc = "A brass jacketed 10 gauge filled with blessed silver shot." - projectile_type = /obj/projectile/scatter/heavy_shotgun/silver - -//Related to the above, knockback specific variants for Grit. -/obj/item/ammo_casing/a10g/grit - name = "tooled heavy shotgun slug" - desc = "A custom brass jacketed 10 gauge slug shell." - projectile_type = /obj/projectile/bullet/heavy_shotgun/grit - -/obj/item/ammo_casing/a10g/pellet/grit - name = "tooled heavy shotgun shell" - desc = "A custom brass jacketed 10 gauge shot shell." - projectile_type = /obj/projectile/scatter/heavy_shotgun/grit - -//Arrows -/obj/item/ammo_casing/arrow - name = "arrow of questionable material" - desc = "You shouldn't be seeing this arrow." - projectile_type = /obj/projectile/bullet/reusable/arrow - caliber = "arrow" - icon_state = "arrow" - throw_force = 3 //good luck hitting someone with the pointy end of the arrow - throw_speed = 3 - casing_flags = CASING_DELETE - -/obj/item/ammo_casing/arrow/wood - name = "wooden arrow" - desc = "An arrow made of wood, typically fired from a bow." - -/obj/item/ammo_casing/arrow/bone - name = "bone arrow" - desc = "An arrow made of bone, knapped to a piercing tip." - icon_state = "ashenarrow" - projectile_type = /obj/projectile/bullet/reusable/arrow/bone - -/obj/item/ammo_casing/arrow/ash - name = "ashen arrow" - desc = "An arrow made of wood, hardened by fire." - icon_state = "ashenarrow" - projectile_type = /obj/projectile/bullet/reusable/arrow/ash - -/obj/item/ammo_casing/arrow/bone_ap - name = "hardened bone arrow" - desc = "An arrow made of bone and sinew. The tip is sharp enough to pierce through a goliath plate." - icon_state = "bonearrow" - projectile_type = /obj/projectile/bullet/reusable/arrow/bone_ap - -/obj/item/ammo_casing/arrow/bronze - name = "bronze arrow" - desc = "An arrow made of wood, tipped with bronze. The tip is dense enough to provide some armor penetration." - icon_state = "bronzearrow" - projectile_type = /obj/projectile/bullet/reusable/arrow/bronze - -//Plunger -/obj/item/ammo_casing/arrow/plunger - name = "plunger" - desc = "It's a plunger, for plunging." - icon_state = "plunger" - projectile_type = /obj/projectile/bullet/reusable/plunger - -//Foam Darts -/obj/item/ammo_casing/foam - name = "foam dart" - desc = "A soft projectile made out of orange foam with a blue plastic tip." - projectile_type = /obj/projectile/bullet/reusable/foam - caliber = "foamdart" - icon_state = "foamdart" - throw_force = 0 //good luck hitting someone with the pointy end of the arrow - throw_speed = 3 - casing_flags = CASING_DELETE - drop_sound = 'sound/items/drop/accessory.ogg' - pickup_sound = 'sound/items/pickup/accessory.ogg' - -/obj/item/ammo_casing/foam/riot - name = "riot dart" - desc = "A flexible projectile made out of hardened orange foam with a red plastic tip." - projectile_type = /obj/projectile/bullet/reusable/foam/riot - icon_state = "foamdart_riot" diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/firing_pin.dm similarity index 99% rename from code/modules/projectiles/pins.dm rename to code/modules/projectiles/firing_pin.dm index d8aef4eafd0..bc63a65de4f 100644 --- a/code/modules/projectiles/pins.dm +++ b/code/modules/projectiles/firing_pin.dm @@ -34,7 +34,7 @@ if(G.pin && !(G.pin.pin_irremovable)) G.pin.forceMove(get_turf(G)) G.pin.gun_remove(G) - to_chat(user, "You remove [G]'s old pin. Rendering it unuseable in the process.") + to_chat(user, "You remove [G]'s old pin, rendering it unuseable in the process.") gun_insert(user, G) return if(!G.pin) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 171bf1e45e9..c2e5bfd281c 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -53,6 +53,7 @@ origin_tech = list(TECH_COMBAT = 1) attack_verb = list("struck", "hit", "bashed") zoomdevicename = "scope" + inhand_default_type = INHAND_DEFAULT_ICON_GUNS var/burst = 1 var/fire_delay = 6 //delay after shooting before the gun can be used again @@ -73,6 +74,7 @@ var/mode_name = null var/projectile_type = /obj/projectile //On ballistics, only used to check for the cham gun var/holy = FALSE //For Divinely blessed guns + // todo: this should be on /ballistic, and be `internal_chambered`. var/obj/item/ammo_casing/chambered = null var/wielded_item_state @@ -138,14 +140,26 @@ /// for de-duping var/static/list/mob_renderer_store = list() /// base onmob state override so we don't use [base_icon_state] if overridden + // todo: impl var/render_mob_base /// render as -wield if we're wielded? applied at the end of our worn state no matter what /// /// * ignores [mob_renderer] - /// * ignores [render_mob_exclusive] + /// * ignores [render_additional_exclusive] / [render_additional_worn] // todo: impl var/render_mob_wielded = FALSE + /// state to add as an append + /// + /// * segment and overlay renders add [base_icon_state]-[append] + /// * state renders set state to [base_icon_state]-[append]-[...rest] + var/render_additional_state + /// only render [render_additional_state] + var/render_additional_exclusive = FALSE + /// [render_additional_state] and [render_additional_exclusive] apply to worn sprites + // todo: impl + var/render_additional_worn = FALSE /// use the old render system, if item_renderer and mob_renderer are not set + // todo: remove var/render_use_legacy_by_default = TRUE /obj/item/gun/Initialize(mapload) @@ -169,7 +183,7 @@ update_icon() //! LEGACY: if neither of these are here, we are using legacy render. - if(!item_renderer && !mob_renderer && !render_use_legacy_by_default) + if(!item_renderer && !mob_renderer && render_use_legacy_by_default) item_icons = list( SLOT_ID_LEFT_HAND = 'icons/mob/items/lefthand_guns.dmi', SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand_guns.dmi', diff --git a/code/modules/projectiles/gun_item_renderer.dm b/code/modules/projectiles/gun_item_renderer.dm index 3838f77d4d7..a41a6fc61ad 100644 --- a/code/modules/projectiles/gun_item_renderer.dm +++ b/code/modules/projectiles/gun_item_renderer.dm @@ -47,6 +47,10 @@ /datum/gun_item_renderer/segments/render(obj/item/gun/gun, ammo_ratio, firemode_key) var/base_icon_state = gun.base_icon_state || initial(gun.icon_state) + if(gun.render_additional_state) + gun.add_overlay("[base_icon_state]-[gun.render_additional_state]") + if(gun.render_additional_exclusive) + return if(independent_firemode && firemode_key) gun.add_overlay("[base_icon_state]-[firemode_key]") if(!ammo_ratio) @@ -87,6 +91,10 @@ /datum/gun_item_renderer/overlays/render(obj/item/gun/gun, ammo_ratio, firemode_key) var/base_icon_state = gun.base_icon_state || initial(gun.icon_state) + if(gun.render_additional_state) + gun.add_overlay("[base_icon_state]-[gun.render_additional_state]") + if(gun.render_additional_exclusive) + return if(independent_firemode && firemode_key) gun.add_overlay("[base_icon_state]-[firemode_key]") if(!ammo_ratio) @@ -118,13 +126,16 @@ /datum/gun_item_renderer/states/render(obj/item/gun/gun, ammo_ratio, firemode_key) var/base_icon_state = gun.base_icon_state || initial(gun.icon_state) + if(gun.render_additional_exclusive) + gun.icon_state = "[base_icon_state][gun.render_additional_state ? "-[gun.render_additional_state]" : ""]" + return if(!ammo_ratio) if(use_empty) gun.icon_state = "[base_icon_state][firemode_key && use_firemode_empty && "-[firemode_key]"]-empty" else gun.icon_state = base_icon_state return - gun.icon_state = "[base_icon_state]-[use_firemode && firemode_key && "-[firemode_key]"]-[ceil(count * ammo_ratio)]" + gun.icon_state = "[base_icon_state][gun.render_additional_state ? "-[gun.render_additional_state]" : ""]-[use_firemode && firemode_key && "-[firemode_key]"]-[ceil(count * ammo_ratio)]" /datum/gun_item_renderer/states/dedupe_key() return "states-[use_firemode]-[count]-[use_empty]-[use_firemode_empty]" diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index 717c55ad975..5dde19d70d8 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -1,6 +1,9 @@ /obj/item/gun/ballistic name = "gun" desc = "A gun that fires bullets." + description_info = "This is a ballistic weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire. To reload, click the weapon in your hand to unload (if needed), then add the appropriate ammo. The description \ + will tell you what caliber you need." icon = 'icons/obj/gun/ballistic.dmi' icon_state = "revolver" origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) @@ -9,9 +12,18 @@ recoil = 0 projectile_type = /obj/projectile/bullet/pistol/strong //Only used for chameleon guns - var/caliber = ".357" //determines which casings will fit + //* Configuration *// + + /// If set, accepts ammo and magazines of this caliber. + var/regex_this_caliber = /datum/ammo_caliber/a357 + + //! LEGACY BELOW + var/handle_casings = EJECT_CASINGS //determines how spent casings should be handled var/load_method = SINGLE_CASING|SPEEDLOADER //1 = Single shells, 2 = box or quick loader, 3 = magazine + var/load_method_converted = TRUE + + // todo: rework mag handling, internal magazine? //For SINGLE_CASING or SPEEDLOADER guns var/max_shells = 0 //the number of casings that will fit inside @@ -41,11 +53,17 @@ loaded += new ammo_type(src) if(ispath(magazine_type) && (load_method & MAGAZINE)) ammo_magazine = new magazine_type(src) - allowed_magazines += /obj/item/ammo_magazine/smart update_icon() + if(load_method & SPEEDLOADER) + load_method_converted |= MAGAZINE_TYPE_SPEEDLOADER + else if(load_method & MAGAZINE) + load_method_converted |= MAGAZINE_TYPE_NORMAL + /obj/item/gun/ballistic/update_icon_state() . = ..() + if((item_renderer || mob_renderer) || !render_use_legacy_by_default) + return // using new system var/silenced_state = silenced ? silenced_icon : initial(icon_state) var/magazine_state = ammo_magazine ? "" : "-empty" if(magazine_type) @@ -57,10 +75,8 @@ chambered = loaded[1] //load next casing. if(handle_casings != HOLD_CASINGS) loaded -= chambered - else if(ammo_magazine && ammo_magazine.stored_ammo.len) - chambered = ammo_magazine.stored_ammo[ammo_magazine.stored_ammo.len] - if(handle_casings != HOLD_CASINGS) - ammo_magazine.stored_ammo -= chambered + else if(ammo_magazine && ammo_magazine.amount_remaining()) + chambered = ammo_magazine.pop(src) if (chambered) return chambered.get_projectile() @@ -84,10 +100,10 @@ var/mob/living/carbon/human/H = loc if(istype(H)) if(!H.gloves) - H.gunshot_residue = chambered.caliber + H.gunshot_residue = chambered.get_caliber_string() else var/obj/item/clothing/G = H.gloves - G.gunshot_residue = chambered.caliber + G.gunshot_residue = chambered.get_caliber_string() switch(handle_casings) if(EJECT_CASINGS) //eject casing onto ground. @@ -99,9 +115,8 @@ playsound(src.loc, "casing", 50, 1) if(CYCLE_CASINGS) //cycle the casing back to the end. if(ammo_magazine) - ammo_magazine.stored_ammo += chambered - else - loaded += chambered + CRASH("attempted to cycle casing with a mag in; guncode doesn't support this use case, this is for revolver-likes only currently!") + loaded += chambered if(handle_casings != HOLD_CASINGS) chambered = null @@ -115,67 +130,67 @@ /obj/item/gun/ballistic/proc/load_ammo(obj/item/A, mob/user) if(istype(A, /obj/item/ammo_magazine)) var/obj/item/ammo_magazine/AM = A - if(!(load_method & AM.mag_type) || caliber != AM.caliber || allowed_magazines && !is_type_in_list(A, allowed_magazines)) + if(!(load_method_converted & AM.magazine_type) || !accepts_caliber(AM.ammo_caliber) || allowed_magazines && !is_type_in_list(A, allowed_magazines)) to_chat(user, SPAN_WARNING("[AM] won't load into [src]!")) return - switch(AM.mag_type) - if(MAGAZINE) - if(ammo_magazine) - if(user.a_intent == INTENT_HELP || user.a_intent == INTENT_DISARM) - to_chat(user, SPAN_WARNING("[src] already has a magazine loaded."))//already a magazine here - return - else - if(user.a_intent == INTENT_GRAB) //Tactical reloading - if(!can_special_reload) - to_chat(user, SPAN_WARNING("You can't tactically reload this gun!")) - return - if(do_after(user, TACTICAL_RELOAD_SPEED, src)) - if(!user.attempt_insert_item_for_installation(AM, src)) - return - ammo_magazine.update_icon() - user.put_in_hands_or_drop(ammo_magazine) - user.visible_message(SPAN_WARNING("\The [user] reloads \the [src] with \the [AM]!"), - SPAN_WARNING("You tactically reload \the [src] with \the [AM]!")) - else //Speed reloading - if(!can_special_reload) - to_chat(user, SPAN_WARNING("You can't speed reload this gun!")) - return - if(do_after(user, SPEED_RELOAD_SPEED, src)) - if(!user.attempt_insert_item_for_installation(AM, src)) - return - ammo_magazine.update_icon() - ammo_magazine.dropInto(user.loc) - user.visible_message(SPAN_WARNING("\The [user] reloads \the [src] with \the [AM]!"), - SPAN_WARNING("You speed reload \the [src] with \the [AM]!")) - ammo_magazine = AM - playsound(loc, mag_insert_sound, 75, 1) - update_icon() - AM.update_icon() - if(!user.attempt_insert_item_for_installation(AM, src)) + if(AM.magazine_type & MAGAZINE_TYPE_NORMAL) + if(ammo_magazine) + if(user.a_intent == INTENT_HELP || user.a_intent == INTENT_DISARM) + to_chat(user, SPAN_WARNING("[src] already has a magazine loaded."))//already a magazine here return + else + if(user.a_intent == INTENT_GRAB) //Tactical reloading + if(!can_special_reload) + to_chat(user, SPAN_WARNING("You can't tactically reload this gun!")) + return + if(do_after(user, TACTICAL_RELOAD_SPEED, src)) + if(!user.attempt_insert_item_for_installation(AM, src)) + return + ammo_magazine.update_icon() + user.put_in_hands_or_drop(ammo_magazine) + user.visible_message(SPAN_WARNING("\The [user] reloads \the [src] with \the [AM]!"), + SPAN_WARNING("You tactically reload \the [src] with \the [AM]!")) + else //Speed reloading + if(!can_special_reload) + to_chat(user, SPAN_WARNING("You can't speed reload this gun!")) + return + if(do_after(user, SPEED_RELOAD_SPEED, src)) + if(!user.attempt_insert_item_for_installation(AM, src)) + return + ammo_magazine.update_icon() + ammo_magazine.dropInto(user.loc) + user.visible_message(SPAN_WARNING("\The [user] reloads \the [src] with \the [AM]!"), + SPAN_WARNING("You speed reload \the [src] with \the [AM]!")) ammo_magazine = AM - user.visible_message("[user] inserts [AM] into [src].", "You insert [AM] into [src].") - playsound(src.loc, mag_insert_sound, 50, 1) - if(SPEEDLOADER) - if(loaded.len >= max_shells) - to_chat(user, "[src] is full!") - return - var/count = 0 - for(var/obj/item/ammo_casing/C in AM.stored_ammo) - if(loaded.len >= max_shells) - break - if(C.caliber == caliber) - C.loc = src - loaded += C - AM.stored_ammo -= C //should probably go inside an ammo_magazine proc, but I guess less proc calls this way... - count++ - if(count) - user.visible_message("[user] reloads [src].", "You load [count] round\s into [src].") - playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1) //Kind of the opposite of empty but the "click" sound fits a speedloader nicely. + playsound(loc, mag_insert_sound, 75, 1) + update_icon() + AM.update_icon() + if(!user.attempt_insert_item_for_installation(AM, src)) + return + ammo_magazine = AM + user.visible_message("[user] inserts [AM] into [src].", "You insert [AM] into [src].") + playsound(src.loc, mag_insert_sound, 50, 1) + else if(AM.magazine_type & MAGAZINE_TYPE_SPEEDLOADER) + if(loaded.len >= max_shells) + to_chat(user, "[src] is full!") + return + var/count = 0 + while(length(loaded) < max_shells) + var/obj/item/ammo_casing/inserting = AM.peek() + if(!accepts_casing(inserting)) + break + inserting = AM.pop(src) + if(inserting.loc != src) + inserting.forceMove(src) + loaded += inserting + count++ + if(count) + user.visible_message("[user] reloads [src].", "You load [count] round\s into [src].") + playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1) //Kind of the opposite of empty but the "click" sound fits a speedloader nicely. AM.update_icon() else if(istype(A, /obj/item/ammo_casing)) var/obj/item/ammo_casing/C = A - if(!(load_method & SINGLE_CASING) || caliber != C.caliber) + if(!(load_method & SINGLE_CASING) || !accepts_caliber(C.regex_this_caliber)) return //incompatible if(loaded.len >= max_shells) to_chat(user, "[src] is full.") @@ -194,7 +209,7 @@ to_chat(user, "You start loading \the [src].") sleep(1 SECOND) for(var/obj/item/ammo_casing/ammo in storage.contents) - if(caliber != ammo.caliber) + if(!accepts_caliber(ammo.regex_this_caliber)) continue load_ammo(ammo, user) @@ -285,7 +300,7 @@ /obj/item/gun/ballistic/afterattack(atom/target, mob/user, clickchain_flags, list/params) ..() - if(auto_eject && ammo_magazine && ammo_magazine.stored_ammo && !ammo_magazine.stored_ammo.len) + if(auto_eject && ammo_magazine && !ammo_magazine.amount_remaining()) ammo_magazine.loc = get_turf(src.loc) user.visible_message( "[ammo_magazine] falls out and clatters on the floor!", @@ -308,8 +323,8 @@ var/bullets = 0 if(loaded) bullets += loaded.len - if(ammo_magazine && ammo_magazine.stored_ammo) - bullets += ammo_magazine.stored_ammo.len + if(ammo_magazine) + bullets += ammo_magazine.amount_remaining() if(chambered) bullets += 1 return bullets @@ -325,3 +340,29 @@ unload_ammo(usr) */ + +//* Ammo *// + +/** + * Can accept an ammo casing + */ +/obj/item/gun/ballistic/proc/accepts_casing(obj/item/ammo_casing/casing) + if(!accepts_caliber(casing.regex_this_caliber)) + return FALSE + return TRUE + +//* Caliber *// + +/** + * Accepts: + * + * * Text caliber string + * * Caliber path + * * Caliber instance + * + * @return TRUE / FALSE + */ +/obj/item/gun/ballistic/proc/accepts_caliber(datum/ammo_caliber/caliberlike) + var/datum/ammo_caliber/ours = resolve_caliber(regex_this_caliber) + var/datum/ammo_caliber/theirs = resolve_caliber(caliberlike) + return ours.equivalent(theirs) diff --git a/code/modules/vore/fluffstuff/guns/cell_loaded/medigun.dm b/code/modules/projectiles/guns/ballistic/microbattery/medigun.dm similarity index 87% rename from code/modules/vore/fluffstuff/guns/cell_loaded/medigun.dm rename to code/modules/projectiles/guns/ballistic/microbattery/medigun.dm index 55d42b55870..e0c51d4bf7d 100644 --- a/code/modules/vore/fluffstuff/guns/cell_loaded/medigun.dm +++ b/code/modules/projectiles/guns/ballistic/microbattery/medigun.dm @@ -1,5 +1,5 @@ // The Gun // -/obj/item/gun/ballistic/cell_loaded/medical +/obj/item/gun/ballistic/microbattery/medical name = "cell-loaded medigun" desc = "The Nanotrasen-VayMed Adaptive Medical Laser, or the NT-V 'AML', is a powerful cell-based ranged healing device designed by Nanotrasen with a partnership with Vey-Med. It uses an internal nanite fabricator, powered and controlled by discrete cells, to deliver a variety of effects at range. Up to six combinations of healing beams can be configured at once, depending on cartridge used. Ammo not included." catalogue_data = list(/datum/category_item/catalogue/information/organization/vey_med) @@ -9,10 +9,10 @@ description_fluff = "The Vey-Med AML 'Medigun' allows one to customize their loadout in the field, or before deploying, to allow emergency response personnel to deliver a variety of ranged healing options." description_antag = "" origin_tech = list(TECH_MATERIAL = 4, TECH_MAGNET = 2, TECH_BIO = 5) - allowed_magazines = list(/obj/item/ammo_magazine/cell_mag/medical) + allowed_magazines = list(/obj/item/ammo_magazine/microbattery/medical) no_pin_required = 1 -/obj/item/gun/ballistic/cell_loaded/medical/cmo +/obj/item/gun/ballistic/microbattery/medical/cmo name = "advanced cell-loaded medigun" desc = "This is a variation on the AML 'Medigun', a powerful cell-based ranged healing device based on the same model made by Nanotrasen and Vey-Med \ It has an extended sight for increased accuracy, and much more comfortable grip. Ammo not included." @@ -21,7 +21,7 @@ // The Magazine // -/obj/item/ammo_magazine/cell_mag/medical //medical +/obj/item/ammo_magazine/microbattery/medical //medical name = "nanite magazine" desc = "A nanite fabrication magazine for the \'AML'" catalogue_data = list(/datum/category_item/catalogue/information/organization/vey_med) @@ -30,10 +30,10 @@ icon_state = "ml3m_mag" origin_tech = list(TECH_MATERIAL = 3, TECH_BIO = 3) -/obj/item/ammo_magazine/cell_mag/medical/advanced +/obj/item/ammo_magazine/microbattery/medical/advanced name = "advanced nanite magazine" desc = "A nanite discharge cell for the \'AML\'. This one is a more advanced version which can hold six individual nanite discharge cells." - max_ammo = 6 + ammo_max = 6 x_offset = 3 icon_state = "ml3m_mag_extended" origin_tech = list(TECH_MATERIAL = 5, TECH_BIO = 5) @@ -47,8 +47,8 @@ max_single_weight_class = WEIGHT_CLASS_NORMAL /obj/item/storage/secure/briefcase/ml3m_pack_med/legacy_spawn_contents() - new /obj/item/gun/ballistic/cell_loaded/medical(src) - new /obj/item/ammo_magazine/cell_mag/medical(src) + new /obj/item/gun/ballistic/microbattery/medical(src) + new /obj/item/ammo_magazine/microbattery/medical(src) new /obj/item/ammo_casing/microbattery/medical/brute(src) new /obj/item/ammo_casing/microbattery/medical/burn(src) new /obj/item/ammo_casing/microbattery/medical/stabilize(src) @@ -60,8 +60,8 @@ max_single_weight_class = WEIGHT_CLASS_NORMAL /obj/item/storage/secure/briefcase/ml3m_pack_cmo/legacy_spawn_contents() - new /obj/item/gun/ballistic/cell_loaded/medical/cmo(src) - new /obj/item/ammo_magazine/cell_mag/medical(src) + new /obj/item/gun/ballistic/microbattery/medical/cmo(src) + new /obj/item/ammo_magazine/microbattery/medical(src) new /obj/item/ammo_casing/microbattery/medical/brute(src) new /obj/item/ammo_casing/microbattery/medical/burn(src) new /obj/item/ammo_casing/microbattery/medical/stabilize(src) diff --git a/code/modules/vore/fluffstuff/guns/cell_loaded/medigun_cells.dm b/code/modules/projectiles/guns/ballistic/microbattery/medigun_cells.dm similarity index 100% rename from code/modules/vore/fluffstuff/guns/cell_loaded/medigun_cells.dm rename to code/modules/projectiles/guns/ballistic/microbattery/medigun_cells.dm diff --git a/code/modules/projectiles/guns/ballistic/microbattery/microbattery-casing.dm b/code/modules/projectiles/guns/ballistic/microbattery/microbattery-casing.dm new file mode 100644 index 00000000000..34e251db4e3 --- /dev/null +++ b/code/modules/projectiles/guns/ballistic/microbattery/microbattery-casing.dm @@ -0,0 +1,33 @@ +/obj/item/ammo_casing/microbattery + name = "\'NSFW\' microbattery - UNKNOWN" + desc = "A miniature battery for an energy weapon." + icon = 'icons/modules/projectiles/legacy/microbattery_old.dmi' + icon_state = "nsfw_batt" + slot_flags = SLOT_BELT | SLOT_EARS + throw_force = 1 + w_class = WEIGHT_CLASS_TINY + var/shots_left = 4 + + leaves_residue = 0 + regex_this_caliber = /datum/ammo_caliber/microbattery + var/type_color = null + var/type_name = null + projectile_type = /obj/projectile/beam + + casing_primer = CASING_PRIMER_MICROBATTERY + +/obj/item/ammo_casing/microbattery/Initialize(mapload) + . = ..() + pixel_x = rand(-10, 10) + pixel_y = rand(-10, 10) + update_icon() + +/obj/item/ammo_casing/microbattery/update_icon() + cut_overlays() + + var/image/ends = image(icon, icon_state = "[initial(icon_state)]_ends") + ends.color = type_color + add_overlay(ends) + +/obj/item/ammo_casing/microbattery/expend() + shots_left-- diff --git a/code/modules/projectiles/guns/ballistic/microbattery/microbattery-magazine.dm b/code/modules/projectiles/guns/ballistic/microbattery/microbattery-magazine.dm new file mode 100644 index 00000000000..dbcb829cd3c --- /dev/null +++ b/code/modules/projectiles/guns/ballistic/microbattery/microbattery-magazine.dm @@ -0,0 +1,50 @@ +// todo: /ammo_magazine/microbattery + +/obj/item/ammo_magazine/microbattery + name = "microbattery magazine" + desc = "A microbattery holder for a cell-based variable weapon." + icon = 'icons/modules/projectiles/legacy/microbattery_old.dmi' + icon_state = "cell_mag" + origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 5, TECH_MAGNETS = 3) + ammo_caliber = /datum/ammo_caliber/microbattery + ammo_type = /obj/item/ammo_casing/microbattery + ammo_max = 3 + ammo_current = 0 + ammo_legacy_init_everything = TRUE + var/x_offset = 5 //for update_icon() shenanigans- moved here so it can be adjusted for bigger mags + var/capname = "nsfw_mag" //as above + var/chargename = "nsfw_mag" //as above + +/obj/item/ammo_magazine/microbattery/why_cant_load_casing(obj/item/ammo_casing/casing) + if(!istype(casing, /obj/item/ammo_casing/microbattery)) + return "not a microbattery" + return ..() + +/obj/item/ammo_magazine/microbattery/update_icon() + cut_overlays() + if(!ammo_internal.len) + return //Why bother + + var/current = 0 + for(var/B in ammo_internal) + var/obj/item/ammo_casing/microbattery/batt = B + var/image/cap = image(icon, icon_state = "[capname]_cap") + cap.color = batt.type_color + cap.pixel_x = current * x_offset //Caps don't need a pixel_y offset + add_overlay(cap) + + if(batt.shots_left) + var/ratio = CEILING(((batt.shots_left / initial(batt.shots_left)) * 4), 1) //4 is how many lights we have a sprite for + var/image/charge = image(icon, icon_state = "[chargename]_charge-[ratio]") + charge.color = "#29EAF4" //Could use battery color but eh. + charge.pixel_x = current * x_offset + add_overlay(charge) + + current++ //Increment for offsets + +/obj/item/ammo_magazine/microbattery/advanced + name = "advanced microbattery magazine" + desc = "A microbattery holder for a cell-based variable weapon. This one has much more cell capacity!" + ammo_max = 6 + x_offset = 3 + icon_state = "cell_mag_extended" diff --git a/code/modules/vore/fluffstuff/guns/cell_loaded/cell_loaded.dm b/code/modules/projectiles/guns/ballistic/microbattery/microbattery.dm similarity index 51% rename from code/modules/vore/fluffstuff/guns/cell_loaded/cell_loaded.dm rename to code/modules/projectiles/guns/ballistic/microbattery/microbattery.dm index 507156a9c10..849ee6ff1a1 100644 --- a/code/modules/vore/fluffstuff/guns/cell_loaded/cell_loaded.dm +++ b/code/modules/projectiles/guns/ballistic/microbattery/microbattery.dm @@ -1,5 +1,5 @@ -// The Gun // -/obj/item/gun/ballistic/cell_loaded //this one can load both medical and security cells! for ERT/admin use. +// todo: rework all of this shit, jfc +/obj/item/gun/ballistic/microbattery name = "multipurpose cell-loaded revolver" desc = "Variety is the spice of life! This weapon is a hybrid of the NT-102b 'Nanotech Selectable-Fire Weapon' and the Vey-Med ML-3 'Medigun', dubbed the 'NSFW-ML3M'. \ It can fire both harmful and healing cells with an internal nanite fabricator and energy weapon cell loader. Up to three combinations of \ @@ -12,34 +12,32 @@ icon_override = 'icons/vore/custom_guns_vr.dmi' item_state = "gun" - caliber = "nsfw" - origin_tech = list(TECH_COMBAT = 7, TECH_MATERIAL = 6, TECH_MAGNETS = 4) fire_sound = 'sound/weapons/Taser.ogg' load_method = MAGAZINE //Nyeh heh hehhh. magazine_type = null - allowed_magazines = list(/obj/item/ammo_magazine/cell_mag) + allowed_magazines = list(/obj/item/ammo_magazine/microbattery) handle_casings = HOLD_CASINGS //Don't eject batteries! recoil = 0 var/charge_left = 0 var/max_charge = 0 charge_sections = 5 -/obj/item/gun/ballistic/cell_loaded/consume_next_projectile() +/obj/item/gun/ballistic/microbattery/consume_next_projectile() if(chambered && ammo_magazine) var/obj/item/ammo_casing/microbattery/batt = chambered if(batt.shots_left) return new chambered.projectile_type() else - for(var/B in ammo_magazine.stored_ammo) + for(var/B in ammo_magazine.ammo_internal) var/obj/item/ammo_casing/microbattery/other_batt = B if(istype(other_batt,chambered.type) && other_batt.shots_left) switch_to(other_batt) return new chambered.projectile_type() -/obj/item/gun/ballistic/cell_loaded/proc/update_charge() +/obj/item/gun/ballistic/microbattery/proc/update_charge() charge_left = 0 max_charge = 0 @@ -51,13 +49,13 @@ charge_left = batt.shots_left max_charge = initial(batt.shots_left) if(ammo_magazine) //Crawl to find more - for(var/B in ammo_magazine.stored_ammo) + for(var/B in ammo_magazine.ammo_internal) var/obj/item/ammo_casing/microbattery/bullet = B if(istype(bullet,batt.type)) charge_left += bullet.shots_left max_charge += initial(bullet.shots_left) -/obj/item/gun/ballistic/cell_loaded/proc/switch_to(obj/item/ammo_casing/microbattery/new_batt) +/obj/item/gun/ballistic/microbattery/proc/switch_to(obj/item/ammo_casing/microbattery/new_batt) if(ishuman(loc)) if(chambered && new_batt.type == chambered.type) to_chat(loc,"\The [src] is now using the next [new_batt.type_name] power cell.") @@ -68,45 +66,35 @@ update_charge() update_icon() -/obj/item/gun/ballistic/cell_loaded/attack_self(mob/user) +/obj/item/gun/ballistic/microbattery/attack_self(mob/user) if(!chambered) return - var/list/stored_ammo = ammo_magazine.stored_ammo + var/list/ammo_internal = ammo_magazine.ammo_internal - if(stored_ammo.len == 1) + if(ammo_internal.len == 1) return //silly you. //Find an ammotype that ISN'T the same, or exhaust the list and don't change. - var/our_slot = stored_ammo.Find(chambered) + var/our_slot = ammo_internal.Find(chambered) - for(var/index in 1 to stored_ammo.len) - var/true_index = ((our_slot + index - 1) % stored_ammo.len) + 1 // Stupid ONE BASED lists! - var/obj/item/ammo_casing/microbattery/next_batt = stored_ammo[true_index] + for(var/index in 1 to ammo_internal.len) + var/true_index = ((our_slot + index - 1) % ammo_internal.len) + 1 // Stupid ONE BASED lists! + var/obj/item/ammo_casing/microbattery/next_batt = ammo_internal[true_index] if(chambered != next_batt && !istype(next_batt, chambered.type)) switch_to(next_batt) break -/* -/obj/item/gun/ballistic/cell_loaded/special_check(mob/user) - if(!chambered) - return - var/obj/item/ammo_casing/microbattery/batt = chambered - if(!batt.shots_left) - return FALSE - - return TRUE -*/ -/obj/item/gun/ballistic/cell_loaded/load_ammo(var/obj/item/A, mob/user) +/obj/item/gun/ballistic/microbattery/load_ammo(var/obj/item/A, mob/user) . = ..() - if(ammo_magazine && ammo_magazine.stored_ammo.len) - switch_to(ammo_magazine.stored_ammo[1]) + if(ammo_magazine && ammo_magazine.amount_remaining()) + switch_to(ammo_magazine.ammo_internal[1]) -/obj/item/gun/ballistic/cell_loaded/unload_ammo(mob/user, var/allow_dump=1) +/obj/item/gun/ballistic/microbattery/unload_ammo(mob/user, var/allow_dump=1) chambered = null return ..() -/obj/item/gun/ballistic/cell_loaded/update_overlays() +/obj/item/gun/ballistic/microbattery/update_overlays() . = ..() update_charge() @@ -136,103 +124,6 @@ charge_bar.color = batt_color . += charge_bar -// The Magazine // -/obj/item/ammo_magazine/cell_mag - name = "microbattery magazine" - desc = "A microbattery holder for a cell-based variable weapon." - icon = 'icons/obj/ammo_vr.dmi' - icon_state = "cell_mag" - origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 5, TECH_MAGNETS = 3) - caliber = "nsfw" - ammo_type = /obj/item/ammo_casing/microbattery - initial_ammo = 0 - max_ammo = 3 - var/x_offset = 5 //for update_icon() shenanigans- moved here so it can be adjusted for bigger mags - var/capname = "nsfw_mag" //as above - var/chargename = "nsfw_mag" //as above - mag_type = MAGAZINE - - var/list/modes = list() - -/obj/item/ammo_magazine/cell_mag/attackby(obj/item/W as obj, mob/user as mob) - if(istype(W, /obj/item/ammo_casing/microbattery)) - var/obj/item/ammo_casing/microbattery/B = W - if(!istype(B, ammo_type)) - to_chat(user, "[B] does not fit into [src].") - return - if(stored_ammo.len >= max_ammo) - to_chat(user, "[src] is full!") - return - if(!user.attempt_insert_item_for_installation(B, src)) - return - stored_ammo.Add(B) - update_icon() - playsound(user.loc, 'sound/weapons/flipblade.ogg', 50, 1) - update_icon() - -/obj/item/ammo_magazine/cell_mag/update_icon() - cut_overlays() - if(!stored_ammo.len) - return //Why bother - - var/current = 0 - for(var/B in stored_ammo) - var/obj/item/ammo_casing/microbattery/batt = B - var/image/cap = image(icon, icon_state = "[capname]_cap") - cap.color = batt.type_color - cap.pixel_x = current * x_offset //Caps don't need a pixel_y offset - add_overlay(cap) - - if(batt.shots_left) - var/ratio = CEILING(((batt.shots_left / initial(batt.shots_left)) * 4), 1) //4 is how many lights we have a sprite for - var/image/charge = image(icon, icon_state = "[chargename]_charge-[ratio]") - charge.color = "#29EAF4" //Could use battery color but eh. - charge.pixel_x = current * x_offset - add_overlay(charge) - - current++ //Increment for offsets - -/obj/item/ammo_magazine/cell_mag/advanced - name = "advanced microbattery magazine" - desc = "A microbattery holder for a cell-based variable weapon. This one has much more cell capacity!" - max_ammo = 6 - x_offset = 3 - icon_state = "cell_mag_extended" - - -// The Casing // -/obj/item/ammo_casing/microbattery - name = "\'NSFW\' microbattery - UNKNOWN" - desc = "A miniature battery for an energy weapon." - //catalogue_data = list(/datum/category_item/catalogue/information/organization/nanotrasen) - icon = 'icons/obj/ammo_vr.dmi' - icon_state = "nsfw_batt" - slot_flags = SLOT_BELT | SLOT_EARS - throw_force = 1 - w_class = WEIGHT_CLASS_TINY - var/shots_left = 4 - - leaves_residue = 0 - caliber = "nsfw" - var/type_color = null - var/type_name = null - projectile_type = /obj/projectile/beam - -/obj/item/ammo_casing/microbattery/Initialize(mapload) - . = ..() - pixel_x = rand(-10, 10) - pixel_y = rand(-10, 10) - update_icon() - -/obj/item/ammo_casing/microbattery/update_icon() - cut_overlays() - - var/image/ends = image(icon, icon_state = "[initial(icon_state)]_ends") - ends.color = type_color - add_overlay(ends) - -/obj/item/ammo_casing/microbattery/expend() - shots_left-- // The Pack // @@ -243,8 +134,8 @@ max_single_weight_class = WEIGHT_CLASS_NORMAL /obj/item/storage/secure/briefcase/nsfw_pack_hybrid/legacy_spawn_contents() - new /obj/item/gun/ballistic/cell_loaded(src) - new /obj/item/ammo_magazine/cell_mag/advanced(src) + new /obj/item/gun/ballistic/microbattery(src) + new /obj/item/ammo_magazine/microbattery/advanced(src) new /obj/item/ammo_casing/microbattery/combat/stun(src) new /obj/item/ammo_casing/microbattery/combat/stun(src) new /obj/item/ammo_casing/microbattery/combat/stun(src) @@ -263,8 +154,8 @@ max_single_weight_class = WEIGHT_CLASS_NORMAL /obj/item/storage/secure/briefcase/nsfw_pack_hybrid_combat/legacy_spawn_contents() - new /obj/item/gun/ballistic/cell_loaded(src) - new /obj/item/ammo_magazine/cell_mag/advanced(src) + new /obj/item/gun/ballistic/microbattery(src) + new /obj/item/ammo_magazine/microbattery/advanced(src) new /obj/item/ammo_casing/microbattery/combat/shotstun(src) new /obj/item/ammo_casing/microbattery/combat/shotstun(src) new /obj/item/ammo_casing/microbattery/combat/lethal(src) diff --git a/code/modules/vore/fluffstuff/guns/cell_loaded/revolver.dm b/code/modules/projectiles/guns/ballistic/microbattery/revolver.dm similarity index 84% rename from code/modules/vore/fluffstuff/guns/cell_loaded/revolver.dm rename to code/modules/projectiles/guns/ballistic/microbattery/revolver.dm index 2e545edf3da..7ecdbf4d0f7 100644 --- a/code/modules/vore/fluffstuff/guns/cell_loaded/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/microbattery/revolver.dm @@ -1,5 +1,5 @@ // The Gun // -/obj/item/gun/ballistic/cell_loaded/combat +/obj/item/gun/ballistic/microbattery/combat name = "cell-loaded revolver" desc = "Variety is the spice of life! The NT-102b 'Hydra' is an unholy hybrid of an ammo-driven \ energy weapon that allows the user to mix and match their own fire modes. Up to four combinations of \ @@ -7,9 +7,9 @@ //catalogue_data = list(/datum/category_item/catalogue/information/organization/nanotrasen) description_fluff = "The Nanotrasen 'Nanotech Selectable Fire Weapon' allows one to customize their loadout in the field, or before deploying, to achieve various results in a weapon they are already familiar with wielding." - allowed_magazines = list(/obj/item/ammo_magazine/cell_mag/combat) + allowed_magazines = list(/obj/item/ammo_magazine/microbattery/combat) -/obj/item/gun/ballistic/cell_loaded/combat/prototype +/obj/item/gun/ballistic/microbattery/combat/prototype name = "prototype cell-loaded revolver" desc = "Variety is the spice of life! A prototype based on NT-102b 'Hydra' for short, is an unholy hybrid of an ammo-driven \ energy weapon that allows the user to mix and match their own fire modes. Up to two combinations of \ @@ -17,26 +17,26 @@ description_info = "This gun is an energy weapon that uses interchangable microbatteries in a magazine. Each battery is a different beam type, and up to three can be loaded in the magazine. Each battery usually provides four discharges of that beam type, and multiple from the same type may be loaded to increase the number of shots for that type." description_antag = "" - allowed_magazines = list(/obj/item/ammo_magazine/cell_mag/combat/prototype) + allowed_magazines = list(/obj/item/ammo_magazine/microbattery/combat/prototype) origin_tech = list(TECH_COMBAT = 7, TECH_MATERIAL = 4, TECH_MAGNETS = 3) // The Magazine // -/obj/item/ammo_magazine/cell_mag/combat +/obj/item/ammo_magazine/microbattery/combat name = "microbattery magazine" desc = "A microbattery holder for the \'Hydra\'" icon_state = "nsfw_mag" - max_ammo = 4 + ammo_max = 4 x_offset = 4 catalogue_data = null//list(/datum/category_item/catalogue/information/organization/nanotrasen) description_info = "This magazine holds Hydra microbatteries to power the Hydra handgun. Up to three can be loaded at once, and each provides four shots of their respective energy type. Loading multiple of the same type will provide additional shots of that type. The batteries can be recharged in a normal recharger." ammo_type = /obj/item/ammo_casing/microbattery/combat -/obj/item/ammo_magazine/cell_mag/combat/prototype +/obj/item/ammo_magazine/microbattery/combat/prototype name = "prototype microbattery magazine" icon_state = "nsfw_mag_prototype" - max_ammo = 2 + ammo_max = 2 x_offset = 6 catalogue_data = null origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3, TECH_MAGNETS = 2) @@ -50,8 +50,8 @@ max_single_weight_class = WEIGHT_CLASS_NORMAL /obj/item/storage/secure/briefcase/nsfw_pack/legacy_spawn_contents() - new /obj/item/gun/ballistic/cell_loaded/combat(src) - new /obj/item/ammo_magazine/cell_mag/combat(src) + new /obj/item/gun/ballistic/microbattery/combat(src) + new /obj/item/ammo_magazine/microbattery/combat(src) for(var/path in subtypesof(/obj/item/ammo_casing/microbattery/combat)) new path(src) @@ -62,8 +62,8 @@ max_single_weight_class = WEIGHT_CLASS_NORMAL /obj/item/storage/secure/briefcase/nsfw_pack_hos/legacy_spawn_contents() - new /obj/item/gun/ballistic/cell_loaded/combat(src) - new /obj/item/ammo_magazine/cell_mag/combat(src) + new /obj/item/gun/ballistic/microbattery/combat(src) + new /obj/item/ammo_magazine/microbattery/combat(src) new /obj/item/ammo_casing/microbattery/combat/lethal(src) new /obj/item/ammo_casing/microbattery/combat/lethal(src) new /obj/item/ammo_casing/microbattery/combat/stun(src) diff --git a/code/modules/vore/fluffstuff/guns/cell_loaded/revolver_cells.dm b/code/modules/projectiles/guns/ballistic/microbattery/revolver_cells.dm similarity index 100% rename from code/modules/vore/fluffstuff/guns/cell_loaded/revolver_cells.dm rename to code/modules/projectiles/guns/ballistic/microbattery/revolver_cells.dm diff --git a/code/modules/projectiles/guns/energy/frontier.dm b/code/modules/projectiles/guns/energy/frontier.dm new file mode 100644 index 00000000000..ded27a27001 --- /dev/null +++ b/code/modules/projectiles/guns/energy/frontier.dm @@ -0,0 +1,126 @@ +//Expedition pistol +/obj/item/gun/energy/frontier + name = "Expedition Crank Phaser" + desc = "An extraordinarily rugged laser weapon, built to last and requiring effectively no maintenance. Includes a built-in crank charger for recharging away from civilization." + icon_state = "phaser" + item_state = "phaser" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "phaser", SLOT_ID_LEFT_HAND = "phaser", "SLOT_ID_BELT" = "phaser") + fire_sound = 'sound/weapons/laser_rifle_1.wav' + origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2, TECH_POWER = 4) + charge_cost = 300 + battery_lock = 1 + + var/recharging = 0 + var/phase_power = 75 + + projectile_type = /obj/projectile/beam + firemodes = list( + list(mode_name="lethal", fire_delay=12, projectile_type=/obj/projectile/beam, charge_cost = 300), + list(mode_name="low-power", fire_delay=8, projectile_type=/obj/projectile/beam/weaklaser, charge_cost = 60), + ) + +/obj/item/gun/energy/frontier/unload_ammo(var/mob/user) + if(recharging) + return + recharging = 1 + update_icon() + user.visible_message("[user] opens \the [src] and starts pumping the handle.", \ + "You open \the [src] and start pumping the handle.") + while(recharging) + if(!do_after(user, 10, src)) + break + playsound(get_turf(src),'sound/items/change_drill.ogg',25,1) + if(power_supply.give(phase_power) < phase_power) + break + + recharging = 0 + update_icon() + +/obj/item/gun/energy/frontier/update_icon() + if(recharging) + icon_state = "[initial(icon_state)]_pump" + update_held_icon() + return + ..() + +/obj/item/gun/energy/frontier/emp_act(severity) + return ..(severity+2) + +/obj/item/gun/energy/frontier/legacy_ex_act() //|rugged| + return + +/obj/item/gun/energy/frontier/locked + desc = "An extraordinarily rugged laser weapon, built to last and requiring effectively no maintenance. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility." + pin = /obj/item/firing_pin/explorer + +//Phaser Carbine - Reskinned phaser +/obj/item/gun/energy/frontier/locked/carbine + name = "Expedition Phaser Carbine" + desc = "An ergonomically improved version of the venerable frontier phaser, the carbine is a fairly new weapon, and has only been produced in limited numbers so far. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility." + icon_state = "carbinekill" + item_state = "retro" + item_icons = list(SLOT_ID_LEFT_HAND = 'icons/mob/items/lefthand_guns.dmi', SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand_guns.dmi') + + modifystate = "carbinekill" + firemodes = list( + list(mode_name="lethal", fire_delay=12, projectile_type=/obj/projectile/beam, modifystate="carbinekill", charge_cost = 300), + list(mode_name="low-power", fire_delay=8, projectile_type=/obj/projectile/beam/weaklaser, modifystate="carbinestun", charge_cost = 60), + + ) + +/obj/item/gun/energy/frontier/locked/carbine/update_icon_state() + . = ..() + if(recharging) + icon_state = "[modifystate]_pump" + update_held_icon() + +//Expeditionary Holdout Phaser Pistol +/obj/item/gun/energy/frontier/locked/holdout + name = "Holdout Phaser Pistol" + desc = "An minaturized weapon designed for the purpose of expeditionary support to defend themselves on the field. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility." + icon = 'icons/obj/gun/energy.dmi' + icon_state = "holdoutkill" + item_state = null + fire_sound = 'sound/weapons/laser_holdout_1.wav' + phase_power = 100 + + w_class = WEIGHT_CLASS_SMALL + charge_cost = 600 + modifystate = "holdoutkill" + firemodes = list( + list(mode_name="lethal", fire_delay=12, projectile_type=/obj/projectile/beam, modifystate="holdoutkill", charge_cost = 600), + list(mode_name="low-power", fire_delay=8, projectile_type=/obj/projectile/beam/weaklaser, modifystate="holdoutstun", charge_cost = 120), + list(mode_name="stun", fire_delay=12, projectile_type=/obj/projectile/beam/stun/med, modifystate="holdoutshock", charge_cost = 300), + ) + +/obj/item/gun/energy/frontier/taj + name = "Adhomai crank laser" + desc = "The \"Icelance\" crank charged laser rifle, produced by the Hadii-Wrack group for the People's Republic of Adhomai's Grand People's Army." + icon = 'icons/obj/gun/energy.dmi' + icon_state = "phaser-taj" + item_state = "phaser-taj" + wielded_item_state = "phaser-taj" + charge_cost = 600 + + projectile_type = /obj/projectile/beam/midlaser + + + firemodes = list( + ) + +/obj/item/gun/energy/frontier/taj/unload_ammo(var/mob/user) + if(recharging) + return + recharging = 1 + update_icon() + user.visible_message("[user] begins to turn the crank of \the [src].", \ + "You begins to turn the crank of \the [src].") + while(recharging) + if(!do_after(user, 10, src)) + break + playsound(get_turf(src),'sound/items/change_drill.ogg',25,1) + if(power_supply.give(phase_power) < phase_power) + break + + recharging = 0 + update_icon() diff --git a/code/modules/projectiles/guns/energy/special/hardlight_bow.dm b/code/modules/projectiles/guns/energy/special/hardlight_bow.dm new file mode 100644 index 00000000000..1b6ce64b3a9 --- /dev/null +++ b/code/modules/projectiles/guns/energy/special/hardlight_bow.dm @@ -0,0 +1,30 @@ + +/obj/item/gun/energy/hardlight_bow + name = "hardlight bow" + desc = "An experimental, unlicensed design from Haephestus that never actually went anywhere; the idea of a crankable ion weapon was of interest, but the lack of practicality made it undesirable. \n \n \"...and his music was electric.\"" + icon = 'icons/obj/gun/energy.dmi' + icon_state = "bow_hardlight" + item_state = "bow_pipe" + slot_flags = SLOT_BACK | SLOT_BELT + charge_cost = 1200 + battery_lock = 1 + pin = /obj/item/firing_pin/explorer + projectile_type = /obj/projectile/ion + + var/recharging = 0 + var/phase_power = 150 + +/obj/item/gun/energy/hardlight_bow/unload_ammo(var/mob/user) + if(recharging) + return + recharging = 1 + user.visible_message("[user] begins to tighten \the [src]'s electric bowstring.", \ + "You begin to tighten \the [src]'s electric bowstring") + while(recharging) + if(!do_after(user, 10, src)) + break + playsound(get_turf(src),'sound/weapons/hardlight_bow_charge.ogg',25,1) + if(power_supply.give(phase_power) < phase_power) + break + + recharging = 0 diff --git a/code/modules/projectiles/guns/launcher/syringe_gun.dm b/code/modules/projectiles/guns/launcher/syringe_gun.dm index 3542155b7d5..9393ff5c723 100644 --- a/code/modules/projectiles/guns/launcher/syringe_gun.dm +++ b/code/modules/projectiles/guns/launcher/syringe_gun.dm @@ -1,7 +1,7 @@ /obj/item/syringe_cartridge name = "syringe gun cartridge" desc = "An impact-triggered compressed gas cartridge that can be fitted to a syringe for rapid injection." - icon = 'icons/obj/ammo.dmi' + icon = 'icons/modules/projectiles/casings/syringe.dmi' icon_state = "syringe-cartridge" var/icon_flight = "syringe-cartridge-flight" //so it doesn't look so weird when shot materials_base = list(MAT_STEEL = 125, MAT_GLASS = 375) diff --git a/code/modules/vore/fluffstuff/guns/bsharpoon.dm b/code/modules/projectiles/guns/legacy_vr_guns/bsharpoon.dm similarity index 100% rename from code/modules/vore/fluffstuff/guns/bsharpoon.dm rename to code/modules/projectiles/guns/legacy_vr_guns/bsharpoon.dm diff --git a/code/modules/vore/fluffstuff/guns/crestrose.dm b/code/modules/projectiles/guns/legacy_vr_guns/crestrose.dm similarity index 90% rename from code/modules/vore/fluffstuff/guns/crestrose.dm rename to code/modules/projectiles/guns/legacy_vr_guns/crestrose.dm index 158e6f38fb4..c3570b14781 100644 --- a/code/modules/vore/fluffstuff/guns/crestrose.dm +++ b/code/modules/projectiles/guns/legacy_vr_guns/crestrose.dm @@ -17,9 +17,9 @@ auto_eject = 1 auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg' attack_sound = null - caliber = "s762" - magazine_type = /obj/item/ammo_magazine/m762 - allowed_magazines = list(/obj/item/ammo_magazine/m762) + regex_this_caliber = /datum/ammo_caliber/a7_62mm + magazine_type = /obj/item/ammo_magazine/a7_62mm + allowed_magazines = list(/obj/item/ammo_magazine/a7_62mm) firemodes = list( list(mode_name="fold", icon_state="crestrose_fold",item_state = "laser",damage_force=3), diff --git a/code/modules/projectiles/guns/legacy_vr_guns/custom_guns.dm b/code/modules/projectiles/guns/legacy_vr_guns/custom_guns.dm new file mode 100644 index 00000000000..f7ef0beaa8d --- /dev/null +++ b/code/modules/projectiles/guns/legacy_vr_guns/custom_guns.dm @@ -0,0 +1,272 @@ +// For general use +/obj/item/gun/ballistic/automatic/battlerifle + name = "\improper JSDF service rifle" + desc = "You had your chance to be afraid before you joined my beloved Corps! But, to guide you back to the true path, I have brought this motivational device! Uses 9.5x40mm rounds." + icon_state = "battlerifle" + icon_override = 'icons/obj/gun/ballistic.dmi' + item_state = "battlerifle_i" + item_icons = null + w_class = WEIGHT_CLASS_BULKY + recoil = 2 // The battlerifle was known for its nasty recoil. + max_shells = 36 + regex_this_caliber = /datum/ammo_caliber/a9_5mm + origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2) + magazine_type = /obj/item/ammo_magazine/m95 + allowed_magazines = list(/obj/item/ammo_magazine/m95) + fire_sound = 'sound/weapons/battlerifle.ogg' + load_method = MAGAZINE + slot_flags = SLOT_BACK + one_handed_penalty = 60 // The weapon itself is heavy + +/obj/item/gun/ballistic/automatic/battlerifle/update_icon() + . = ..() + update_held_icon() + +/obj/item/gun/ballistic/automatic/battlerifle/update_icon_state() + . = ..() + if(istype(ammo_magazine,/obj/item/ammo_magazine/m95)) + icon_state = "battlerifle" + else + icon_state = (ammo_magazine)? "battlerifle" : "battlerifle_empty" + +// For general use +/obj/item/gun/ballistic/shotgun/pump/JSDF + name = "\improper JSDF tactical shotgun" + desc = "All you greenhorns who wanted to see Xenomorphs up close... this is your lucky day. Uses 12g rounds." + icon_state = "haloshotgun" + icon_override = 'icons/obj/gun/ballistic.dmi' + item_state = "haloshotgun_i" + item_icons = null + ammo_type = /obj/item/ammo_casing/a12g + max_shells = 12 + +// For general use +/obj/item/gun/ballistic/automatic/pdw + name = "personal defense weapon" + desc = "The X-9MM is a select-fire personal defense weapon designed in-house by Xing Private Security. It was made to compete with the WT550 Saber, but never caught on with Nanotrasen. Uses 9mm rounds." + icon_state = "pdw" + item_state = "c20r" // Placeholder + w_class = WEIGHT_CLASS_NORMAL + regex_this_caliber = /datum/ammo_caliber/a9mm + origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2) + slot_flags = SLOT_BELT + load_method = MAGAZINE + magazine_type = /obj/item/ammo_magazine/a9mm/large + allowed_magazines = list(/obj/item/ammo_magazine/a9mm, /obj/item/ammo_magazine/a9mm/large) + + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=6, burst_accuracy=list(0,-15,-30), dispersion=list(0.0, 0.6, 0.6)) + ) + +/obj/item/gun/ballistic/automatic/pdw/update_icon() + . = ..() + update_held_icon() + +/obj/item/gun/ballistic/automatic/pdw/update_icon_state() + . = ..() + if(istype(ammo_magazine,/obj/item/ammo_magazine/a9mm)) + icon_state = "pdw-short" + else + icon_state = (ammo_magazine)? "pdw" : "pdw-empty" + +// For general use +/obj/item/gun/energy/imperial + name = "imperial energy pistol" + desc = "An elegant weapon developed by the Imperium Auream. Their weaponsmiths have cleverly found a way to make a gun that is only about the size of an average energy pistol, yet with the fire power of a laser carbine." + icon_state = "ge_pistol" + item_state = "ge_pistol" + fire_sound = 'sound/weapons/mandalorian.ogg' + item_icons = list(SLOT_ID_RIGHT_HAND = 'icons/obj/gun/energy.dmi', SLOT_ID_LEFT_HAND = 'icons/obj/gun/energy.dmi') // WORK YOU FUCKING CUNT PIECE OF SHIT BASTARD STUPID BITCH ITEM ICON AAAAHHHH + item_state_slots = list(SLOT_ID_RIGHT_HAND = "ge_pistol_r", SLOT_ID_LEFT_HAND = "ge_pistol_l") + slot_flags = SLOT_BELT + w_class = WEIGHT_CLASS_NORMAL + damage_force = 10 + origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2) + materials_base = list(MAT_STEEL = 2000) + projectile_type = /obj/projectile/beam/imperial + +// For general use +/obj/item/gun/ballistic/automatic/stg + name = "\improper Sturmgewehr" + desc = "An STG-560 built by RauMauser. Experience the terror of the Siegfried line, redone for the 26th century! The Kaiser would be proud. Uses unique 7.92x33mm Kurz rounds." + icon_state = "stg60" + item_state = "arifle" + w_class = WEIGHT_CLASS_BULKY + max_shells = 30 + regex_this_caliber = /datum/ammo_caliber/a7_92mm + origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2, TECH_ILLEGAL = 6) + magazine_type = /obj/item/ammo_magazine/a7_92mm + allowed_magazines = list(/obj/item/ammo_magazine/a7_92mm) + load_method = MAGAZINE + +/obj/item/gun/ballistic/automatic/stg/update_icon() + . = ..() + update_held_icon() + +/obj/item/gun/ballistic/automatic/stg/update_icon_state() + . = ..() + icon_state = (ammo_magazine)? "stg60" : "stg60-e" + item_state = (ammo_magazine)? "arifle" : "arifle-e" + +// ------------ Energy Luger ------------ +/obj/item/gun/energy/gun/eluger + name = "energy Luger" + desc = "The finest sidearm produced by RauMauser. Although its battery cannot be removed, its ergonomic design makes it easy to shoot, allowing for rapid follow-up shots. It also has the ability to toggle between stun and kill." + icon_state = "elugerstun100" + item_state = "gun" + fire_delay = null // Lugers are quite comfortable to shoot, thus allowing for more controlled follow-up shots. Rate of fire similar to a laser carbine. + battery_lock = 1 // In exchange for balance, you cannot remove the battery. Also there's no sprite for that and I fucking suck at sprites. -Ace + origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2, TECH_ILLEGAL = 2) + modifystate = "elugerstun" + fire_sound = 'sound/weapons/Taser.ogg' + firemodes = list( + list(mode_name="stun", charge_cost=120,projectile_type=/obj/projectile/beam/stun, modifystate="elugerstun", fire_sound='sound/weapons/Taser.ogg'), + list(mode_name="lethal", charge_cost=240,projectile_type=/obj/projectile/beam/eluger, modifystate="elugerkill", fire_sound='sound/weapons/eluger.ogg'), + ) + +//Civilian gun +/obj/item/gun/ballistic/giskard + name = "\improper \"Giskard\" holdout pistol" + desc = "The FS HG .380 \"Giskard\" can even fit into the pocket! Uses .380 rounds." + icon_state = "giskardcivil" + regex_this_caliber = /datum/ammo_caliber/a38 + magazine_type = /obj/item/ammo_magazine/a38 + allowed_magazines = list(/obj/item/ammo_magazine/a38) + load_method = MAGAZINE + w_class = WEIGHT_CLASS_SMALL + fire_sound = 'sound/weapons/gunshot_pathetic.ogg' + origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 3) + +/obj/item/gun/ballistic/giskard/update_icon_state() + . = ..() + if(ammo_magazine && ammo_magazine.amount_remaining()) + icon_state = "giskardcivil" + else + icon_state = "giskardcivil_empty" + +//Not so civilian gun +/obj/item/gun/ballistic/giskard/olivaw + name = "\improper \"Olivaw\" holdout burst-pistol" + desc = "The FS HG .380 \"Olivaw\" is a more advanced version of the \"Giskard\". This one seems to have a two-round burst-fire mode. Uses .380 rounds." + icon_state = "olivawcivil" + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=1.2, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="2-round bursts", burst=2, fire_delay=0.2, move_delay=4, burst_accuracy=list(0,-15), dispersion=list(1.2, 1.8)), + ) + +/obj/item/gun/ballistic/giskard/olivaw/update_icon_state() + . = ..() + if(ammo_magazine && ammo_magazine.amount_remaining()) + icon_state = "olivawcivil" + else + icon_state = "olivawcivil_empty" + +//Detective gun +/obj/item/gun/ballistic/revolver/consul + name = "\improper \"Consul\" Revolver" + desc = "Are you feeling lucky, punk? Uses .44 rounds." + icon_state = "inspector" + item_state = "revolver" + regex_this_caliber = /datum/ammo_caliber/a44 + ammo_type = /obj/item/ammo_casing/a44/rubber + handle_casings = CYCLE_CASINGS + origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3) + +/obj/item/gun/ballistic/revolver/consul/update_overlays() + . = ..() + if(loaded.len==0) + . += "inspector_off" + else + . += "inspector_on" + +// No idea what this is for. +/obj/item/gun/ballistic/automatic/sol + name = "\improper \"Sol\" SMG" + desc = "The FS 9x19mm \"Sol\" is a compact and reliable submachine gun. Uses 9mm rounds." + icon_state = "SMG-IS" + item_state = "wt550" + w_class = WEIGHT_CLASS_BULKY + slot_flags = SLOT_BELT + regex_this_caliber = /datum/ammo_caliber/a9mm + magazine_type = /obj/item/ammo_magazine/a9mm + allowed_magazines = list(/obj/item/ammo_magazine/a9mm) + load_method = MAGAZINE + multi_aim = 1 + burst_delay = 2 + origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2) + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-15,-15), dispersion=list(0.0, 0.6, 1.0)), + ) + +/obj/item/gun/ballistic/automatic/sol/proc/update_charge() + if(!ammo_magazine) + return + var/ratio = ammo_magazine.amount_remaining() / ammo_magazine.ammo_max + if(ratio < 0.25 && ratio != 0) + ratio = 0.25 + ratio = round(ratio, 0.25) * 100 + add_overlay("smg_[ratio]") + +/obj/item/gun/ballistic/automatic/sol/update_icon() + icon_state = (ammo_magazine)? "SMG-IS" : "SMG-IS-empty" + cut_overlay() + update_charge() + +//HoP gun +/obj/item/gun/energy/gun/martin + name = "holdout energy gun" + desc = "The FS PDW E \"Martin\" is small holdout e-gun. Don't miss!" + icon_state = "PDW" + item_state = "gun" + w_class = WEIGHT_CLASS_SMALL + projectile_type = /obj/projectile/beam/stun + charge_cost = 1200 + charge_meter = 0 + modifystate = null + battery_lock = 1 + fire_sound = 'sound/weapons/Taser.ogg' + origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2) + firemodes = list( + list(mode_name="stun", projectile_type=/obj/projectile/beam/stun, fire_sound='sound/weapons/Taser.ogg', charge_cost = 600), + list(mode_name="lethal", projectile_type=/obj/projectile/beam, fire_sound='sound/weapons/Laser.ogg', charge_cost = 1200), + ) + +/obj/item/gun/energy/gun/martin/update_overlays() + . = ..() + var/datum/firemode/current_mode = firemodes[sel_mode] + switch(current_mode.name) + if("stun") + . += "taser_pdw" + if("lethal") + . += "lazer_pdw" + +///////////////////////////////////////////////////// +//////////////////// Custom Ammo //////////////////// +///////////////////////////////////////////////////// +//---------------- Beams ---------------- +/obj/projectile/beam/eluger + name = "laser beam" + icon_state = "xray" + light_color = "#00FF00" + muzzle_type = /obj/effect/projectile/muzzle/xray + tracer_type = /obj/effect/projectile/tracer/xray + impact_type = /obj/effect/projectile/impact/xray + +/obj/projectile/beam/imperial + name = "laser beam" + fire_sound = 'sound/weapons/mandalorian.ogg' + icon_state = "darkb" + light_color = "#8837A3" + muzzle_type = /obj/effect/projectile/muzzle/darkmatter + tracer_type = /obj/effect/projectile/tracer/darkmatter + impact_type = /obj/effect/projectile/impact/darkmatter + +/obj/projectile/beam/stun/kin21 + name = "kinh21 stun beam" + icon_state = "omnilaser" + light_color = "#0000FF" + muzzle_type = /obj/effect/projectile/muzzle/laser_omni + tracer_type = /obj/effect/projectile/tracer/laser_omni + impact_type = /obj/effect/projectile/impact/laser_omni diff --git a/code/modules/vore/fluffstuff/guns/dominator.dm b/code/modules/projectiles/guns/legacy_vr_guns/dominator.dm similarity index 100% rename from code/modules/vore/fluffstuff/guns/dominator.dm rename to code/modules/projectiles/guns/legacy_vr_guns/dominator.dm diff --git a/code/modules/vore/fluffstuff/guns/gunsword.dm b/code/modules/projectiles/guns/legacy_vr_guns/gunsword.dm similarity index 100% rename from code/modules/vore/fluffstuff/guns/gunsword.dm rename to code/modules/projectiles/guns/legacy_vr_guns/gunsword.dm diff --git a/code/modules/vore/fluffstuff/guns/protector.dm b/code/modules/projectiles/guns/legacy_vr_guns/protector.dm similarity index 100% rename from code/modules/vore/fluffstuff/guns/protector.dm rename to code/modules/projectiles/guns/legacy_vr_guns/protector.dm diff --git a/code/modules/vore/fluffstuff/guns/pummeler.dm b/code/modules/projectiles/guns/legacy_vr_guns/pummeler.dm similarity index 100% rename from code/modules/vore/fluffstuff/guns/pummeler.dm rename to code/modules/projectiles/guns/legacy_vr_guns/pummeler.dm diff --git a/code/modules/vore/fluffstuff/guns/secutor.dm b/code/modules/projectiles/guns/legacy_vr_guns/secutor.dm similarity index 100% rename from code/modules/vore/fluffstuff/guns/secutor.dm rename to code/modules/projectiles/guns/legacy_vr_guns/secutor.dm diff --git a/code/modules/vore/fluffstuff/guns/sickshot.dm b/code/modules/projectiles/guns/legacy_vr_guns/sickshot.dm similarity index 100% rename from code/modules/vore/fluffstuff/guns/sickshot.dm rename to code/modules/projectiles/guns/legacy_vr_guns/sickshot.dm diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index f7e8c4edfb0..b7adad88eba 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -20,11 +20,11 @@ icon_state = "advanced_smg" w_class = WEIGHT_CLASS_NORMAL load_method = MAGAZINE - caliber = "9mm" + regex_this_caliber = /datum/ammo_caliber/a9mm origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2) slot_flags = SLOT_BELT magazine_type = null // R&D builds this. Starts unloaded. - allowed_magazines = list(/obj/item/ammo_magazine/m9mmAdvanced, /obj/item/ammo_magazine/m9mm) + allowed_magazines = list(/obj/item/ammo_magazine/a9mm/advanced_smg, /obj/item/ammo_magazine/a9mm) firemodes = list( list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), @@ -32,7 +32,7 @@ ) /obj/item/gun/ballistic/automatic/advanced_smg/loaded - magazine_type = /obj/item/ammo_magazine/m9mmAdvanced + magazine_type = /obj/item/ammo_magazine/a9mm/advanced_smg /obj/item/gun/ballistic/automatic/c20r name = "submachine gun" @@ -41,12 +41,12 @@ item_state = "c20r" w_class = WEIGHT_CLASS_NORMAL damage_force = 10 - caliber = "10mm" + regex_this_caliber = /datum/ammo_caliber/a10mm origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 8) slot_flags = SLOT_BELT|SLOT_BACK load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m10mm - allowed_magazines = list(/obj/item/ammo_magazine/m10mm) + magazine_type = /obj/item/ammo_magazine/a10mm + allowed_magazines = list(/obj/item/ammo_magazine/a10mm) projectile_type = /obj/projectile/bullet/pistol/medium auto_eject = 1 auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg' @@ -56,7 +56,7 @@ /obj/item/gun/ballistic/automatic/c20r/update_icon_state() . = ..() if(ammo_magazine) - icon_state = "c20r-[round(ammo_magazine.stored_ammo.len,4)]" + icon_state = "c20r-[round(ammo_magazine.amount_remaining(),4)]" else icon_state = "c20r" @@ -69,12 +69,12 @@ item_state = null w_class = WEIGHT_CLASS_BULKY damage_force = 10 - caliber = "5.56mm" + regex_this_caliber = /datum/ammo_caliber/a5_56mm origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4) slot_flags = SLOT_BACK load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m556 - allowed_magazines = list(/obj/item/ammo_magazine/m556) + magazine_type = /obj/item/ammo_magazine/a5_56mm + allowed_magazines = list(/obj/item/ammo_magazine/a5_56mm) projectile_type = /obj/projectile/bullet/rifle/a556 mag_insert_sound = 'sound/weapons/guns/interaction/ltrifle_magin.ogg' mag_remove_sound = 'sound/weapons/guns/interaction/ltrifle_magout.ogg' @@ -89,7 +89,7 @@ /obj/item/gun/ballistic/automatic/sts35/update_icon_state() . = ..() - if(istype(ammo_magazine,/obj/item/ammo_magazine/m556/small)) + if(istype(ammo_magazine,/obj/item/ammo_magazine/a5_56mm/small)) icon_state = "arifle-small" // If using the small magazines, use the small magazine sprite. /obj/item/gun/ballistic/automatic/sts35/update_icon(ignore_inhands) @@ -103,25 +103,25 @@ icon_state = "wt550" item_state = "wt550" w_class = WEIGHT_CLASS_NORMAL - caliber = "9mm" + regex_this_caliber = /datum/ammo_caliber/a9mm origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2) slot_flags = SLOT_BELT ammo_type = "/obj/item/ammo_casing/a9mmr" load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m9mmt/rubber - allowed_magazines = list(/obj/item/ammo_magazine/m9mmt) + magazine_type = /obj/item/ammo_magazine/a9mm/top_mount/rubber + allowed_magazines = list(/obj/item/ammo_magazine/a9mm/top_mount) projectile_type = /obj/projectile/bullet/pistol/medium worth_intrinsic = 450 /obj/item/gun/ballistic/automatic/wt550/update_icon_state() . = ..() if(ammo_magazine) - icon_state = "wt550-[round(ammo_magazine.stored_ammo.len,4)]" + icon_state = "wt550-[round(ammo_magazine.amount_remaining(),4)]" else icon_state = "wt550" /obj/item/gun/ballistic/automatic/wt550/lethal - magazine_type = /obj/item/ammo_magazine/m9mmt + magazine_type = /obj/item/ammo_magazine/a9mm/top_mount /obj/item/gun/ballistic/automatic/z8 name = "designated marksman rifle" @@ -131,12 +131,12 @@ wielded_item_state = "z8carbine-wielded" w_class = WEIGHT_CLASS_BULKY damage_force = 10 - caliber = "7.62mm" + regex_this_caliber = /datum/ammo_caliber/a7_62mm origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 3) slot_flags = SLOT_BACK load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m762 - allowed_magazines = list(/obj/item/ammo_magazine/m762) + magazine_type = /obj/item/ammo_magazine/a7_62mm + allowed_magazines = list(/obj/item/ammo_magazine/a7_62mm) projectile_type = /obj/projectile/bullet/rifle/a762 auto_eject = 1 auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg' @@ -183,7 +183,7 @@ /obj/item/gun/ballistic/automatic/z8/update_icon_state() . = ..() if(ammo_magazine) - icon_state = "carbine-[round(ammo_magazine.stored_ammo.len,2)]" + icon_state = "carbine-[round(ammo_magazine.amount_remaining(),2)]" else icon_state = "carbine" @@ -207,12 +207,12 @@ damage_force = 10 slot_flags = 0 max_shells = 50 - caliber = "5.56mm" + regex_this_caliber = /datum/ammo_caliber/a5_56mm origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 2) slot_flags = SLOT_BACK load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m556saw - allowed_magazines = list(/obj/item/ammo_magazine/m556saw, /obj/item/ammo_magazine/m556) + magazine_type = /obj/item/ammo_magazine/a5_56mm/saw + allowed_magazines = list(/obj/item/ammo_magazine/a5_56mm/saw, /obj/item/ammo_magazine/a5_56mm) projectile_type = /obj/projectile/bullet/rifle/a556 mag_insert_sound = 'sound/weapons/guns/interaction/lmg_magin.ogg' mag_remove_sound = 'sound/weapons/guns/interaction/lmg_magout.ogg' @@ -267,11 +267,11 @@ /obj/item/gun/ballistic/automatic/lmg/update_icon_state() . = ..() - if(istype(ammo_magazine,/obj/item/ammo_magazine/m762)) + if(istype(ammo_magazine,/obj/item/ammo_magazine/a7_62mm)) icon_state = "l6[cover_open ? "open" : "closed"]mag" item_state = icon_state else - icon_state = "l6[cover_open ? "open" : "closed"][ammo_magazine ? round(ammo_magazine.stored_ammo.len, 10) : "-empty"]" + icon_state = "l6[cover_open ? "open" : "closed"][ammo_magazine ? round(ammo_magazine.amount_remaining(), 10) : "-empty"]" item_state = "l6[cover_open ? "open" : "closed"][ammo_magazine ? "" : "-empty"]" /obj/item/gun/ballistic/automatic/lmg/load_ammo(var/obj/item/A, mob/user) @@ -293,15 +293,15 @@ icon_state = "mg42closed50" item_state = "mg42closed" max_shells = 50 - caliber = "7.62mm" + regex_this_caliber = /datum/ammo_caliber/a7_62mm origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 1, TECH_ILLEGAL = 2) - magazine_type = /obj/item/ammo_magazine/m762_mg42 - allowed_magazines = list(/obj/item/ammo_magazine/m762_mg42) + magazine_type = /obj/item/ammo_magazine/a7_62mm/mg42 + allowed_magazines = list(/obj/item/ammo_magazine/a7_62mm/mg42) one_handed_penalty = 100 /obj/item/gun/ballistic/automatic/lmg/mg42/update_icon_state() . = ..() - icon_state = "mg42[cover_open ? "open" : "closed"][ammo_magazine ? round(ammo_magazine.stored_ammo.len, 25) : "-empty"]" + icon_state = "mg42[cover_open ? "open" : "closed"][ammo_magazine ? round(ammo_magazine.amount_remaining(), 25) : "-empty"]" item_state = "mg42[cover_open ? "open" : "closed"][ammo_magazine ? "" : "-empty"]" /obj/item/gun/ballistic/automatic/lmg/m60 @@ -310,9 +310,9 @@ icon_state = "M60closed75" item_state = "M60closed" max_shells = 75 - caliber = "7.62mm" - magazine_type = /obj/item/ammo_magazine/m762_m60 - allowed_magazines = list(/obj/item/ammo_magazine/m762_m60) + regex_this_caliber = /datum/ammo_caliber/a7_62mm + magazine_type = /obj/item/ammo_magazine/a7_62mm/m60 + allowed_magazines = list(/obj/item/ammo_magazine/a7_62mm/m60) projectile_type = /obj/projectile/bullet/rifle/a762 one_handed_penalty = 100 @@ -323,7 +323,7 @@ /obj/item/gun/ballistic/automatic/lmg/m60/update_icon_state() . = ..() - icon_state = "M60[cover_open ? "open" : "closed"][ammo_magazine ? round(ammo_magazine.stored_ammo.len, 15) : "-empty"]" + icon_state = "M60[cover_open ? "open" : "closed"][ammo_magazine ? round(ammo_magazine.amount_remaining(), 15) : "-empty"]" item_state = "M60[cover_open ? "open" : "closed"][ammo_magazine ? "" : "-empty"]" //Future AA-12 @@ -334,12 +334,12 @@ item_state = "ashot" w_class = WEIGHT_CLASS_BULKY damage_force = 10 - caliber = "12g" + regex_this_caliber = /datum/ammo_caliber/a12g origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4) slot_flags = SLOT_BACK load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m12gdrum - allowed_magazines = list(/obj/item/ammo_magazine/m12gdrum) + magazine_type = /obj/item/ammo_magazine/a12g/drum + allowed_magazines = list(/obj/item/ammo_magazine/a12g/drum) projectile_type = /obj/projectile/bullet/shotgun heavy = TRUE one_handed_penalty = 30 //The AA12 can be fired one-handed fairly easily. @@ -367,10 +367,10 @@ icon_state = "mini-uzi" w_class = WEIGHT_CLASS_NORMAL load_method = MAGAZINE - caliber = ".45" + regex_this_caliber = /datum/ammo_caliber/a45 origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 5) - magazine_type = /obj/item/ammo_magazine/m45uzi - allowed_magazines = list(/obj/item/ammo_magazine/m45uzi) + magazine_type = /obj/item/ammo_magazine/a45/uzi + allowed_magazines = list(/obj/item/ammo_magazine/a45/uzi) firemodes = list( list(mode_name="semiauto", burst=1, fire_delay=0), @@ -418,13 +418,13 @@ icon_state = "p90smg" item_state = "p90" w_class = WEIGHT_CLASS_NORMAL - caliber = "5.7x28mm" + regex_this_caliber = /datum/ammo_caliber/a5_7mm fire_sound = 'sound/weapons/gunshot/gunshot_uzi.wav' origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2) slot_flags = SLOT_BELT // ToDo: Belt sprite. load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m57x28mmp90 - allowed_magazines = list(/obj/item/ammo_magazine/m57x28mmp90) // ToDo: New sprite for the different mag. + magazine_type = /obj/item/ammo_magazine/a5_7mm/p90 + allowed_magazines = list(/obj/item/ammo_magazine/a5_7mm/p90) // ToDo: New sprite for the different mag. firemodes = list( list(mode_name="semiauto", burst=1, fire_delay=0), @@ -433,31 +433,31 @@ /obj/item/gun/ballistic/automatic/p90/update_icon_state() . = ..() - icon_state = "p90smg-[ammo_magazine ? round(ammo_magazine.stored_ammo.len, 6) : "empty"]" + icon_state = "p90smg-[ammo_magazine ? round(ammo_magazine.amount_remaining(), 6) : "empty"]" /obj/item/gun/ballistic/automatic/p90/custom name = "custom personal defense weapon" desc = "An H90K from Hephaestus Industries. This one has a different colored receiver and a sling." icon_state = "p90smgC" - magazine_type = /obj/item/ammo_magazine/m57x28mmp90/hunter + magazine_type = /obj/item/ammo_magazine/a5_7mm/p90/hunter slot_flags = SLOT_BELT|SLOT_BACK pin = /obj/item/firing_pin/explorer /obj/item/gun/ballistic/automatic/p90/custom/update_icon_state() . = ..() - icon_state = "p90smgC-[ammo_magazine ? round(ammo_magazine.stored_ammo.len, 6) : "e"]" + icon_state = "p90smgC-[ammo_magazine ? round(ammo_magazine.amount_remaining(), 6) : "e"]" /obj/item/gun/ballistic/automatic/tommygun name = "\improper Tommy Gun" desc = "This weapon was made famous by gangsters in the 20th century. Cybersun Industries is currently reproducing these for a target market of historic gun collectors and classy criminals. Uses .45 rounds." icon_state = "tommygun" w_class = WEIGHT_CLASS_NORMAL - caliber = ".45" + regex_this_caliber = /datum/ammo_caliber/a45 origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 5) slot_flags = SLOT_BELT // ToDo: Belt sprite. load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m45tommy - allowed_magazines = list(/obj/item/ammo_magazine/m45tommy, /obj/item/ammo_magazine/m45tommydrum) + magazine_type = /obj/item/ammo_magazine/a45/tommy + allowed_magazines = list(/obj/item/ammo_magazine/a45/tommy, /obj/item/ammo_magazine/a45/tommy/drum) firemodes = list( list(mode_name="semiauto", burst=1, fire_delay=0), @@ -476,12 +476,12 @@ item_state = "bullpup" w_class = WEIGHT_CLASS_BULKY damage_force = 10 - caliber = "7.62mm" + regex_this_caliber = /datum/ammo_caliber/a7_62mm origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4) slot_flags = SLOT_BACK load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m762 - allowed_magazines = list(/obj/item/ammo_magazine/m762, /obj/item/ammo_magazine/m762m) + magazine_type = /obj/item/ammo_magazine/a7_62mm + allowed_magazines = list(/obj/item/ammo_magazine/a7_62mm, /obj/item/ammo_magazine/a7_62mm) projectile_type = /obj/projectile/bullet/rifle/a762 heavy = TRUE one_handed_penalty = 45 @@ -493,7 +493,7 @@ /obj/item/gun/ballistic/automatic/bullpup/update_icon_state() . = ..() - if(istype(ammo_magazine,/obj/item/ammo_magazine/m762)) + if(istype(ammo_magazine,/obj/item/ammo_magazine/a7_62mm)) icon_state = "bullpup-small" /obj/item/gun/ballistic/automatic/bullpup/update_icon() @@ -507,12 +507,12 @@ item_state = "fal" w_class = WEIGHT_CLASS_BULKY damage_force = 10 - caliber = "7.62mm" + regex_this_caliber = /datum/ammo_caliber/a7_62mm origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4) slot_flags = SLOT_BACK load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m762m - allowed_magazines = list(/obj/item/ammo_magazine/m762, /obj/item/ammo_magazine/m762m) + magazine_type = /obj/item/ammo_magazine/a7_62mm + allowed_magazines = list(/obj/item/ammo_magazine/a7_62mm, /obj/item/ammo_magazine/a7_62mm) heavy = TRUE projectile_type = /obj/projectile/bullet/rifle/a762 @@ -536,12 +536,12 @@ fire_anim = "automat_fire" w_class = WEIGHT_CLASS_BULKY damage_force = 10 - caliber = "7.62mm" + regex_this_caliber = /datum/ammo_caliber/a7_62mm heavy = TRUE origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3) //A real work around to a automatic rifle. slot_flags = SLOT_BACK load_method = SPEEDLOADER - ammo_type = /obj/item/ammo_casing/a762 + ammo_type = /obj/item/ammo_casing/a7_62mm max_shells = 15 burst = 3 fire_delay = 7.2 @@ -550,7 +550,7 @@ dispersion = list(0.0, 0.6,1.0) /obj/item/gun/ballistic/automatic/automat/holy - ammo_type = /obj/item/ammo_casing/a762/silver + ammo_type = /obj/item/ammo_casing/a7_62mm/silver holy = TRUE /obj/item/gun/ballistic/automatic/automat/taj @@ -569,12 +569,12 @@ w_class = WEIGHT_CLASS_BULKY heavy = TRUE damage_force = 10 - caliber = "12g" + regex_this_caliber = /datum/ammo_caliber/a12g origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4) slot_flags = SLOT_BACK load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/holyshot_mag - allowed_magazines = list(/obj/item/ammo_magazine/holyshot_mag, /obj/item/ammo_magazine/holyshot_mag/stake) + magazine_type = /obj/item/ammo_magazine/a12g/drum/holy + allowed_magazines = list(/obj/item/ammo_magazine/a12g/drum/holy, /obj/item/ammo_magazine/a12g/drum/holy/stake) projectile_type = /obj/projectile/bullet/shotgun one_handed_penalty = 40 @@ -601,12 +601,12 @@ w_class = WEIGHT_CLASS_BULKY heavy = TRUE damage_force = 10 - caliber = "organic" + regex_this_caliber = /datum/ammo_caliber/biomatter origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4) slot_flags = SLOT_BACK load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/mcompressedbio/large/banana - allowed_magazines = list(/obj/item/ammo_magazine/mcompressedbio/large/banana) + magazine_type = /obj/item/ammo_magazine/biomatter/large/banana + allowed_magazines = list(/obj/item/ammo_magazine/biomatter/large/banana) projectile_type = /obj/projectile/bullet/organic one_handed_penalty = 30 @@ -631,10 +631,10 @@ icon_state = "wt274" item_state = "gun" load_method = MAGAZINE - caliber = ".45" + regex_this_caliber = /datum/ammo_caliber/a45 origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 5) - magazine_type = /obj/item/ammo_magazine/m45uzi/wt274 - allowed_magazines = list(/obj/item/ammo_magazine/m45uzi/wt274) + magazine_type = /obj/item/ammo_magazine/a45/wt274 + allowed_magazines = list(/obj/item/ammo_magazine/a45/wt274) one_handed_penalty = 10 firemodes = list( @@ -656,13 +656,13 @@ icon_state = "combatsmg" item_state = "combatsmg" w_class = WEIGHT_CLASS_NORMAL - caliber = "5.7x28mm" + regex_this_caliber = /datum/ammo_caliber/a5_7mm fire_sound = 'sound/weapons/gunshot/gunshot_uzi.wav' origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 2) slot_flags = SLOT_BELT load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m57x28mm/smg/ap - allowed_magazines = list(/obj/item/ammo_magazine/m57x28mm/smg) + magazine_type = /obj/item/ammo_magazine/a5_7mm/harpy_smg/ap + allowed_magazines = list(/obj/item/ammo_magazine/a5_7mm/harpy_smg) firemodes = list( list(mode_name="semiauto", burst=1, fire_delay=0), @@ -681,13 +681,13 @@ description_fluff = "The HI-GP mk 8 'Ballistae' is a bulky weapon designed to fire an obscenely robust .75 caliber gyrojet round with an explosive payload. The original design was sourced from Old Earth speculative documentation, and developed to test its efficacy. Although the weapon itself is undeniably powerful, its logistical demands, the recoil of the three-stage ammunition system, and its hefty size make it untenable on the modern battlefield." icon_state = "bolter" item_state = "bolter" - caliber = ".75" + regex_this_caliber = /datum/ammo_caliber/a75 origin_tech = list(TECH_COMBAT = 5, TECH_ILLEGAL = 2) load_method = MAGAZINE fire_sound = 'sound/weapons/gunshot/gunshot_bolter.ogg' max_shells = 30 - magazine_type = /obj/item/ammo_magazine/m75/sickle - allowed_magazines = list(/obj/item/ammo_magazine/m75/sickle) + magazine_type = /obj/item/ammo_magazine/a75/rifle + allowed_magazines = list(/obj/item/ammo_magazine/a75/rifle) heavy = TRUE one_handed_penalty = 80 @@ -698,7 +698,7 @@ /obj/item/gun/ballistic/automatic/bolter/update_icon_state() . = ..() - icon_state = "bolter-[ammo_magazine ? round(ammo_magazine.stored_ammo.len, 2) : "empty"]" + icon_state = "bolter-[ammo_magazine ? round(ammo_magazine.amount_remaining(), 2) : "empty"]" /obj/item/gun/ballistic/automatic/bolter/storm name = "\improper Onager heavy bolt rifle" @@ -707,8 +707,8 @@ icon_state = "stormbolter" item_state = "stormbolter" max_shells = 50 - magazine_type = /obj/item/ammo_magazine/m75/box - allowed_magazines = list(/obj/item/ammo_magazine/m75/box) + magazine_type = /obj/item/ammo_magazine/a75/box + allowed_magazines = list(/obj/item/ammo_magazine/a75/box) one_handed_penalty = 100 firemodes = list( @@ -718,7 +718,7 @@ /obj/item/gun/ballistic/automatic/bolter/storm/update_icon_state() . = ..() - icon_state = "stormbolter-[ammo_magazine ? round(ammo_magazine.stored_ammo.len, 10) : "empty"]" + icon_state = "stormbolter-[ammo_magazine ? round(ammo_magazine.amount_remaining(), 10) : "empty"]" //Foam Weapons /obj/item/gun/ballistic/automatic/advanced_smg/foam @@ -726,9 +726,9 @@ desc = "The existence of this DONKsoft toy has instigated allegations of corporate espionage from Nanotrasen." icon = 'icons/obj/toy.dmi' icon_state = "toy_smg" - caliber = "foamdart" - magazine_type = /obj/item/ammo_magazine/mfoam/smg - allowed_magazines = list(/obj/item/ammo_magazine/mfoam/smg) + regex_this_caliber = /datum/ammo_caliber/foam + magazine_type = /obj/item/ammo_magazine/foam/smg + allowed_magazines = list(/obj/item/ammo_magazine/foam/smg) fire_sound = 'sound/items/syringeproj.ogg' /obj/item/gun/ballistic/automatic/advanced_smg/foam/update_icon_state() @@ -753,9 +753,9 @@ icon = 'icons/obj/toy.dmi' icon_state = "toy_c20" damage_force = 5 - caliber = "foamdart" - magazine_type = /obj/item/ammo_magazine/mfoam/c20 - allowed_magazines = list(/obj/item/ammo_magazine/mfoam/c20) + regex_this_caliber = /datum/ammo_caliber/foam + magazine_type = /obj/item/ammo_magazine/foam/smg + allowed_magazines = list(/obj/item/ammo_magazine/foam/smg) projectile_type = /obj/projectile/bullet/reusable/foam one_handed_penalty = 5 fire_sound = 'sound/items/syringeproj.ogg' @@ -763,7 +763,7 @@ /obj/item/gun/ballistic/automatic/c20r/foam/update_icon_state() . = ..() if(ammo_magazine) - icon_state = "toy_c20r-[round(ammo_magazine.stored_ammo.len,4)]" + icon_state = "toy_c20r-[round(ammo_magazine.amount_remaining(),4)]" else icon_state = "toy_c20r" @@ -778,9 +778,9 @@ icon = 'icons/obj/toy.dmi' icon_state = "toy_lmgclosed100" damage_force = 5 - caliber = "foamdart" - magazine_type = /obj/item/ammo_magazine/mfoam/lmg - allowed_magazines = list(/obj/item/ammo_magazine/mfoam/lmg) + regex_this_caliber = /datum/ammo_caliber/foam + magazine_type = /obj/item/ammo_magazine/foam/lmg + allowed_magazines = list(/obj/item/ammo_magazine/foam/lmg) projectile_type = /obj/projectile/bullet/reusable/foam one_handed_penalty = 45 //It's plastic. fire_sound = 'sound/items/syringeproj.ogg' @@ -789,7 +789,7 @@ /obj/item/gun/ballistic/automatic/lmg/foam/update_icon_state() . = ..() - icon_state = "toy_lmg[cover_open ? "open" : "closed"][ammo_magazine ? round(ammo_magazine.stored_ammo.len, 10) : "-empty"]" + icon_state = "toy_lmg[cover_open ? "open" : "closed"][ammo_magazine ? round(ammo_magazine.amount_remaining(), 10) : "-empty"]" item_state = "toy_lmg[cover_open ? "open" : "closed"][ammo_magazine ? "" : "-empty"]" /obj/item/gun/ballistic/automatic/lmg/foam/update_icon() diff --git a/code/modules/projectiles/guns/projectile/boltaction.dm b/code/modules/projectiles/guns/projectile/boltaction.dm index 2f11bfa5cb0..3022077da2d 100644 --- a/code/modules/projectiles/guns/projectile/boltaction.dm +++ b/code/modules/projectiles/guns/projectile/boltaction.dm @@ -7,29 +7,29 @@ icon_state = "boltaction" fire_sound = 'sound/weapons/Gunshot_generic_rifle.ogg' max_shells = 5 - caliber = "7.62mm" + regex_this_caliber = /datum/ammo_caliber/a7_62mm heavy = TRUE origin_tech = list(TECH_COMBAT = 1)// Old as shit rifle doesn't have very good tech. - ammo_type = /obj/item/ammo_casing/a762 + ammo_type = /obj/item/ammo_casing/a7_62mm load_method = SINGLE_CASING|SPEEDLOADER action_sound = 'sound/weapons/riflebolt.ogg' worth_intrinsic = 300 /obj/item/gun/ballistic/shotgun/pump/rifle/practice // For target practice desc = "A bolt-action rifle with a lightweight synthetic wood stock, designed for competitive shooting. Comes shipped with practice rounds pre-loaded into the gun. Popular among professional marksmen. Uses 7.62mm rounds." - ammo_type = /obj/item/ammo_casing/a762/practice + ammo_type = /obj/item/ammo_casing/a7_62mm/practice /obj/item/gun/ballistic/shotgun/pump/rifle/ceremonial name = "ceremonial bolt-action rifle" desc = "A bolt-action rifle with a heavy, high-quality wood stock that has a beautiful finish. Clearly not intended to be used in combat. Uses 7.62mm rounds." icon_state = "boltaction_c" item_state = "boltaction_c" - ammo_type = /obj/item/ammo_casing/a762/blank + ammo_type = /obj/item/ammo_casing/a7_62mm/blank /obj/item/gun/ballistic/shotgun/pump/rifle/ceremonial/holy name = "blessed bolt-action rifle" desc = "A bolt-action rifle with a heavy, high-quality wood stock that has a beautiful finish. Clearly not intended to be used in combat. Uses 7.62mm rounds." - ammo_type = /obj/item/ammo_casing/a762/silver + ammo_type = /obj/item/ammo_casing/a7_62mm/silver holy = TRUE /obj/item/gun/ballistic/shotgun/pump/rifle/taj @@ -44,7 +44,7 @@ desc = "This ancient rifle bears traces of an assembly meant to house power cells, implying it used to fire energy beams. It has since been crudely modified to fire standard 7.62mm rounds." icon_state = "vox_hunting" item_state = "vox_hunting" - ammo_type = /obj/item/ammo_casing/a762 + ammo_type = /obj/item/ammo_casing/a7_62mm throw_force = 10 damage_force = 20 @@ -78,7 +78,7 @@ item_state = "leveraction" icon_state = "leveraction" max_shells = 10 - caliber = ".357" + regex_this_caliber = /datum/ammo_caliber/a357 load_method = SINGLE_CASING ammo_type = /obj/item/ammo_casing/a357 action_sound = 'sound/weapons/riflebolt.ogg' @@ -101,7 +101,7 @@ item_state = "mareleg" icon_state = "mareleg" set_weight_class(WEIGHT_CLASS_NORMAL) - caliber = ".357" + regex_this_caliber = /datum/ammo_caliber/a357 load_method = SINGLE_CASING ammo_type = /obj/item/ammo_casing/a357 recoil = 1 // Less Ouch @@ -122,7 +122,7 @@ item_state = "levercarabine" // That isn't how carbine is spelled ya knob! :U icon_state = "levercarabine" max_shells = 10 - caliber = ".44" + regex_this_caliber = /datum/ammo_caliber/a44 load_method = SINGLE_CASING ammo_type = /obj/item/ammo_casing/a44 animated_pump = 1 @@ -145,7 +145,7 @@ item_state = "mareleg" icon_state = "mareleg" set_weight_class(WEIGHT_CLASS_NORMAL) - caliber = ".44" + regex_this_caliber = /datum/ammo_caliber/a44 load_method = SINGLE_CASING ammo_type = /obj/item/ammo_casing/a44 recoil = 1 // Less Ouch @@ -168,7 +168,7 @@ slot_flags = SLOT_BACK ammo_type = /obj/item/ammo_casing/a12g/pellet max_shells = 5 - caliber = "12g" + regex_this_caliber = /datum/ammo_caliber/a12g load_method = SINGLE_CASING action_sound = 'sound/weapons/riflebolt.ogg' @@ -183,16 +183,16 @@ item_state = "win1895" icon_state = "win1895" slot_flags = SLOT_BACK - ammo_type = /obj/item/ammo_casing/a762 + ammo_type = /obj/item/ammo_casing/a7_62mm load_method = SINGLE_CASING|SPEEDLOADER max_shells = 5 - caliber = "7.62mm" + regex_this_caliber = /datum/ammo_caliber/a7_62mm action_sound = 'sound/weapons/riflebolt.ogg' animated_pump = 1 /obj/item/gun/ballistic/shotgun/pump/rifle/lever/win1895/holy name = "blessed lever-action" - ammo_type = /obj/item/ammo_casing/a762/silver + ammo_type = /obj/item/ammo_casing/a7_62mm/silver holy = TRUE /obj/item/gun/ballistic/shotgun/pump/scopedrifle @@ -202,14 +202,14 @@ icon_state = "boltaction-scoped" fire_sound = 'sound/weapons/Gunshot_generic_rifle.ogg' max_shells = 5 - caliber = "7.62mm" + regex_this_caliber = /datum/ammo_caliber/a7_62mm heavy = TRUE origin_tech = list(TECH_COMBAT = 1) load_method = SINGLE_CASING|SPEEDLOADER action_sound = 'sound/weapons/riflebolt.ogg' pin = /obj/item/firing_pin/explorer w_class = WEIGHT_CLASS_HUGE // So it can't fit in a backpack. - ammo_type = /obj/item/ammo_casing/a762/sniperhunter + ammo_type = /obj/item/ammo_casing/a7_62mm/sniperhunter accuracy = 50 //Forced missing fucking sucks ass scoped_accuracy = 100 diff --git a/code/modules/projectiles/guns/projectile/bow.dm b/code/modules/projectiles/guns/projectile/bow.dm index 397abce2ee4..20c24f1e6b2 100644 --- a/code/modules/projectiles/guns/projectile/bow.dm +++ b/code/modules/projectiles/guns/projectile/bow.dm @@ -6,7 +6,7 @@ w_class = WEIGHT_CLASS_BULKY damage_force = 5 load_method = SINGLE_CASING - caliber = "arrow" + regex_this_caliber = /datum/ammo_caliber/arrow max_shells = 1 fire_sound = 'sound/weapons/bowfire.wav' slot_flags = SLOT_BACK @@ -27,7 +27,7 @@ /obj/item/gun/ballistic/bow/load_ammo(var/obj/item/A, mob/user) if(istype(A, /obj/item/ammo_casing)) var/obj/item/ammo_casing/C = A - if(!(load_method & SINGLE_CASING) || caliber != C.caliber) + if(!(load_method & SINGLE_CASING) || !accepts_caliber(C.regex_this_caliber)) return //incompatible if(loaded.len >= max_shells) to_chat(user, "[src] is full.") diff --git a/code/modules/projectiles/guns/projectile/caseless.dm b/code/modules/projectiles/guns/projectile/caseless.dm index 9d424ef08c6..baaea211fcd 100644 --- a/code/modules/projectiles/guns/projectile/caseless.dm +++ b/code/modules/projectiles/guns/projectile/caseless.dm @@ -4,7 +4,7 @@ icon_state = "caseless" item_state = "caseless" w_class = WEIGHT_CLASS_BULKY - caliber = "5mm caseless" + regex_this_caliber = /datum/ammo_caliber/a5mm origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 3) slot_flags = SLOT_BACK load_method = MAGAZINE @@ -22,98 +22,13 @@ /obj/item/gun/ballistic/caseless/prototype/loaded magazine_type = /obj/item/ammo_magazine/m5mmcaseless -/obj/item/gun/ballistic/caseless/usmc - name = "M41A Pulse Rifle" - desc = "A relic of the Phoron Wars and a more violent age. The former primary battle rifle of the United Terran Marine Corps. It's now discontinued, like most caseless designs, due to cost and lack of need. Still preferred by many. Loads using 10x24mm caseless Magazines." - icon_state = "usmc" - item_state = "usmc" - w_class = WEIGHT_CLASS_BULKY - caliber = "10mmCL" - origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3) - slot_flags = SLOT_BACK - load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m10x24mm/small - allowed_magazines = list(/obj/item/ammo_magazine/m10x24mm/small, /obj/item/ammo_magazine/m10x24mm/med, /obj/item/ammo_magazine/m10x24mm/large) - recoil = 0 - auto_eject = 1 - auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg' - firemodes = list( - list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), - list(mode_name="4-round bursts", burst=4, fire_delay=null, move_delay=6, burst_accuracy=list(0,-5,-10,-15), dispersion=list(0.0, 0.2, 0.4, 0.6)),//Small damage countered by tight spread. - ) - -/obj/item/gun/ballistic/caseless/wild_hunt //extremely powerful and rare rifle - meant to spawn with maybe 2 mags extra, or be for asset protection/ert/solo antags/etc - name = "Gorlex WILD-HUNT 12.7mm Caseless Rifle" - desc = "An ancient rifle of the Phoron Wars. For when you want to kill something with no negotiation. The Wild Hunt is a beast that kicks like a mule and fires experimental caseless phoron rounds. It has, obviously, horrific results, setting targets on fire after giving them a golf-ball sized hole. Now generally disused due to the extreme maintenance cost and impracticality. Nobody makes these, anymore." - icon_state = "wild-hunt" - item_state = "wild-hunt" - caliber = "12.7mm caseless" - w_class = WEIGHT_CLASS_BULKY - slot_flags = SLOT_BACK - load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/mfiftycalcaseless - recoil = 1 - accuracy = -10 - allowed_magazines = list(/obj/item/ammo_magazine/mfiftycalcaseless) - one_handed_penalty = 100 //you simply do not - auto_eject = 1 - auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg' - fire_sound = 'sound/weapons/gunshot/gunshot_tech_huge.ogg' - - firemodes = list( - list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), - list(mode_name="automatic", burst=1, fire_delay=-1, move_delay=null, burst_accuracy=null, dispersion=null, automatic = 1) - ) - -/obj/item/gun/ballistic/caseless/wild_hunt/update_icon_state() - . = ..() - if(ammo_magazine) - icon_state = initial(icon_state) - else - icon_state = "[initial(icon_state)]-empty" - -/obj/item/gun/ballistic/caseless/wild_hunt/Initialize(mapload) - . = ..() - var/fluff_date = rand(2501,2543) - desc += "\n You see a stamp on the side: GORLEX MARAUDERS, MANUFACTURED IN [fluff_date]." - - -/obj/item/gun/ballistic/caseless/phoron_spitter // phoron war SMG that fires phoron shards. - name = "Gorlex 'SHRAPNEL-SPITTER' Phoron SMG" - desc = "A short-barrel SMG from the Phoron Wars that lacks conventional ammo, instead using compressed matter cartridges. Coils accelerate a ferromagnetic, self-oxidizing cloud of alloy. Lack of traditional cycling means it can fire blindingly fast. Like all caseless weapons, it's fallen by the wayside, and is no longer produced." - caliber = "phoron shrapnel" - w_class = WEIGHT_CLASS_BULKY - slot_flags = SLOT_BACK - load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/mphoronshot - allowed_magazines = list(/obj/item/ammo_magazine/mphoronshot) - icon_state = "phoron_shredder" - item_state = "ashot" //close enough - recoil = 1.5 - accuracy = -30 - one_handed_penalty = 50 - auto_eject = 1 - auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg' - fire_sound = 'sound/weapons/gunshot/gunshot_tech_smg.ogg' - - firemodes = list( - list(mode_name="full auto", burst=1, fire_delay=-1, move_delay=null, burst_accuracy=null, dispersion=null, automatic = 1), - list(mode_name="fuller auto", burst=2, fire_delay=-1, move_delay=null, burst_accuracy=null, dispersion=null, automatic = 1) - ) - -/obj/item/gun/ballistic/caseless/phoron_spitter/Initialize(mapload) - . = ..() - var/fluff_date = rand(2501,2543) - desc += "\nYou see a stamp on the side: GORLEX MARAUDERS, MANUFACTURED IN [fluff_date]." - - /obj/item/gun/ballistic/caseless/pellet name = "pellet gun" desc = "An air powered rifle that shoots near harmless pellets. Used for recreation in enviroments where firearm ownership is restricted." icon_state = "pellet" item_state = "pellet" wielded_item_state = "pellet-wielded" - caliber = "pellet" + regex_this_caliber = /datum/ammo_caliber/pellet fire_sound = 'sound/weapons/tap.ogg' max_shells = 1 ammo_type = /obj/item/ammo_casing/p_pellet diff --git a/code/modules/projectiles/guns/projectile/caseless/pellet.dm b/code/modules/projectiles/guns/projectile/caseless/pellet.dm index 83b721c9b72..7d16ae43838 100644 --- a/code/modules/projectiles/guns/projectile/caseless/pellet.dm +++ b/code/modules/projectiles/guns/projectile/caseless/pellet.dm @@ -1,8 +1,5 @@ -/////////////////////////////////////// -// Pellet Gun - For Recerational Use // -/////////////////////////////////////// - -#define DEFINE_CALIBER_PELLET 804 +/datum/ammo_caliber/pellet + caliber = "pellet" /obj/item/gun/ballistic/caseless/pellet name = "pellet gun" @@ -11,30 +8,9 @@ icon_state = "pellet" item_state = "pellet" wielded_item_state = "pellet-wielded" - caliber = "pellet" + regex_this_caliber = /datum/ammo_caliber/pellet fire_sound = 'sound/weapons/tap.ogg' max_shells = 1 ammo_type = /obj/item/ammo_casing/p_pellet load_method = SINGLE_CASING item_icons = list("left_hand" = 'icons/mob/items/lefthand_guns.dmi', "right_hand" = 'icons/mob/items/righthand_guns.dmi') - -/obj/item/ammo_casing/p_pellet - name = "pellet" - desc = "Also know as a BB, it is shot from airguns for recreational shooting." - icon = 'icons/obj/gun/ballistic/caseless/pellet.dmi' - caliber = "pellet" - icon_state = "pellet_single" - projectile_type = /obj/projectile/bullet/practice - casing_flags = CASING_DELETE - -/obj/item/ammo_magazine/pellets - name = "box of pellets" - desc = "A box containing small pellets for a pellet gun." - icon = 'icons/obj/gun/ballistic/caseless/pellet.dmi' - icon_state = "pelletbox" - caliber = "pellet" - mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/p_pellet - materials_base = list(MAT_PLASTIC = 600) - max_ammo = 50 - multiple_sprites = 1 diff --git a/code/modules/projectiles/guns/projectile/contender.dm b/code/modules/projectiles/guns/projectile/contender.dm index fb9f3822337..9152fcd550a 100644 --- a/code/modules/projectiles/guns/projectile/contender.dm +++ b/code/modules/projectiles/guns/projectile/contender.dm @@ -4,7 +4,7 @@ icon_state = "pockrifle" var/icon_retracted = "pockrifle-empty" item_state = "revolver" - caliber = ".357" + regex_this_caliber = /datum/ammo_caliber/a357 handle_casings = HOLD_CASINGS max_shells = 1 ammo_type = /obj/item/ammo_casing/a357 @@ -42,12 +42,12 @@ ..() /obj/item/gun/ballistic/contender/a44 - caliber = ".44" + regex_this_caliber = /datum/ammo_caliber/a44 ammo_type = /obj/item/ammo_casing/a44 /obj/item/gun/ballistic/contender/a762 - caliber = "7.62mm" - ammo_type = /obj/item/ammo_casing/a762 + regex_this_caliber = /datum/ammo_caliber/a7_62mm + ammo_type = /obj/item/ammo_casing/a7_62mm /obj/item/gun/ballistic/contender/tacticool desc = "A modified replica of an ancient one-shot hand-cannon, reinvented with a tactical look. For when you really want to make a hole. This one has been modified to work almost like a bolt-action." @@ -55,12 +55,12 @@ icon_retracted = "pockrifle_b-empty" /obj/item/gun/ballistic/contender/tacticool/a44 - caliber = ".44" + regex_this_caliber = /datum/ammo_caliber/a44 ammo_type = /obj/item/ammo_casing/a44 /obj/item/gun/ballistic/contender/tacticool/a762 - caliber = "7.62mm" - ammo_type = /obj/item/ammo_casing/a762 + regex_this_caliber = /datum/ammo_caliber/a7_62mm + ammo_type = /obj/item/ammo_casing/a7_62mm /obj/item/gun/ballistic/contender/holy name = "Divine Challenger" @@ -72,12 +72,12 @@ holy = TRUE /obj/item/gun/ballistic/contender/holy/a44 - caliber = ".44" + regex_this_caliber = /datum/ammo_caliber/a44 ammo_type = /obj/item/ammo_casing/a44/silver /obj/item/gun/ballistic/contender/holy/a762 - caliber = "7.62mm" - ammo_type = /obj/item/ammo_casing/a762/silver + regex_this_caliber = /datum/ammo_caliber/a7_62mm + ammo_type = /obj/item/ammo_casing/a7_62mm/silver /obj/item/gun/ballistic/contender/taj name = "Adhomai pocket rifle" @@ -86,12 +86,12 @@ icon_retracted = "pockrifle_d-empty" /obj/item/gun/ballistic/contender/taj/a44 - caliber = ".44" + regex_this_caliber = /datum/ammo_caliber/a44 ammo_type = /obj/item/ammo_casing/a44 /obj/item/gun/ballistic/contender/taj/a762 - caliber = "7.62mm" - ammo_type = /obj/item/ammo_casing/a762 + regex_this_caliber = /datum/ammo_caliber/a7_62mm + ammo_type = /obj/item/ammo_casing/a7_62mm /obj/item/gun/ballistic/contender/pipegun name = "improvised pipe rifle" @@ -99,7 +99,7 @@ icon_state = "pipegun" icon_retracted = "pipegun-empty" item_state = "revolver" - caliber = "12g" + regex_this_caliber = /datum/ammo_caliber/a12g ammo_type = /obj/item/ammo_casing/a12g/improvised projectile_type = /obj/projectile/bullet/shotgun unstable = 1 diff --git a/code/modules/projectiles/guns/projectile/dartgun.dm b/code/modules/projectiles/guns/projectile/dartgun.dm index 6a96b6ffe29..164d129f016 100644 --- a/code/modules/projectiles/guns/projectile/dartgun.dm +++ b/code/modules/projectiles/guns/projectile/dartgun.dm @@ -1,45 +1,3 @@ -/obj/projectile/bullet/chemdart - name = "dart" - icon_state = "dart" - damage = 5 - var/reagent_amount = 15 - range = WORLD_ICON_SIZE * 15 - - muzzle_type = null - -/obj/projectile/bullet/chemdart/Initialize(mapload) - . = ..() - create_reagents(reagent_amount) - -/obj/projectile/bullet/chemdart/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null) - if(blocked < 2 && isliving(target)) - var/mob/living/L = target - if(L.can_inject(target_zone=def_zone)) - reagents.trans_to_mob(L, reagent_amount, CHEM_INJECT) - -/obj/item/ammo_casing/chemdart - name = "chemical dart" - desc = "A casing containing a small hardened, hollow dart." - icon_state = "dartcasing" - caliber = "dart" - projectile_type = /obj/projectile/bullet/chemdart - -/obj/item/ammo_casing/chemdart/expend() - ..() - //qdel(src) //Wasn't able to find the exact issue with the qdel-ing. Possibly because it was still being processed by the gun when this is called. - -/obj/item/ammo_magazine/chemdart - name = "dart cartridge" - desc = "A rack of hollow darts." - icon_state = "darts" - item_state = "rcdammo" - origin_tech = list(TECH_MATERIAL = 2) - mag_type = MAGAZINE - caliber = "dart" - ammo_type = /obj/item/ammo_casing/chemdart - max_ammo = 5 - multiple_sprites = 1 - /obj/item/gun/ballistic/dartgun name = "dart gun" desc = "Zeng-Hu Pharmaceutical's entry into the arms market, the Z-H P Artemis is a gas-powered dart gun capable of delivering chemical cocktails swiftly across short distances." @@ -50,7 +8,7 @@ var/base_state = "dartgun" origin_tech = list(TECH_COMBAT = 7, TECH_MATERIAL = 6, TECH_BIO = 5, TECH_MAGNET = 2, TECH_ILLEGAL = 3) - caliber = "dart" + regex_this_caliber = /datum/ammo_caliber/dart fire_sound = 'sound/weapons/empty.ogg' fire_sound_text = "a metallic click" recoil = 0 @@ -84,12 +42,12 @@ icon_state = "[base_state]-empty" return 1 if(track_magazine) - if(!ammo_magazine.stored_ammo || ammo_magazine.stored_ammo.len == 0) + if(ammo_magazine.amount_remaining() == 0) icon_state = "[base_state]-0" - else if(ammo_magazine.stored_ammo.len > default_magazine_casing_count) + else if(ammo_magazine.amount_remaining() > default_magazine_casing_count) icon_state = "[base_state]-[default_magazine_casing_count]" else - icon_state = "[base_state]-[ammo_magazine.stored_ammo.len]" + icon_state = "[base_state]-[ammo_magazine.amount_remaining()]" return 1 else icon_state = "[base_state]" @@ -162,8 +120,8 @@ dat += "There are no beakers inserted!

" if(ammo_magazine) - if(ammo_magazine.stored_ammo && ammo_magazine.stored_ammo.len) - dat += "The dart cartridge has [ammo_magazine.stored_ammo.len] shots remaining." + if(ammo_magazine.amount_remaining()) + dat += "The dart cartridge has [ammo_magazine.amount_remaining()] shots remaining." else dat += "The dart cartridge is empty!" dat += " \[Eject\]" @@ -221,24 +179,18 @@ max_beakers = 2 origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 4, TECH_BIO = 4, TECH_MAGNET = 2, TECH_ILLEGAL = 1) -/obj/item/ammo_casing/chemdart/small - name = "short chemical dart" - desc = "A casing containing a small hardened, hollow dart." - icon_state = "dartcasing" - caliber = "dart" - projectile_type = /obj/projectile/bullet/chemdart/small +/obj/item/gun/ballistic/dartgun/tranq + name = "tranquilizer gun" + desc = "A gas-powered dart gun designed by the National Armory of Gaia. This gun is used primarily by United Federation special forces for Tactical Espionage missions. Don't forget your bandana." + icon = 'icons/vore/custom_guns_vr.dmi' + icon_state = "tranqgun" + item_state = null -/obj/item/ammo_magazine/chemdart/small - name = "small dart cartridge" - desc = "A rack of hollow darts." - icon_state = "darts_small" - item_state = "rcdammo" - origin_tech = list(TECH_MATERIAL = 2) - mag_type = MAGAZINE - caliber = "dart" - ammo_type = /obj/item/ammo_casing/chemdart/small - max_ammo = 3 - multiple_sprites = 1 - -/obj/projectile/bullet/chemdart/small - reagent_amount = 10 + fire_sound = 'sound/weapons/empty.ogg' + fire_sound_text = "a metallic click" + recoil = 0 + silenced = 1 + load_method = MAGAZINE + magazine_type = /obj/item/ammo_magazine/chemdart + allowed_magazines = list(/obj/item/ammo_magazine/chemdart) + auto_eject = 0 diff --git a/code/modules/projectiles/guns/projectile/musket.dm b/code/modules/projectiles/guns/projectile/musket.dm index a17b875a4af..bd8e2340831 100644 --- a/code/modules/projectiles/guns/projectile/musket.dm +++ b/code/modules/projectiles/guns/projectile/musket.dm @@ -11,7 +11,7 @@ load_method = SINGLE_CASING max_shells = 1 - caliber = "musket" + regex_this_caliber = /datum/ammo_caliber/musket slot_flags = SLOT_BACK w_class = WEIGHT_CLASS_BULKY @@ -64,7 +64,7 @@ /obj/item/reagent_containers/glass/powder_horn name = "powder horn" desc = "An ivory container for gunpowder." - icon = 'icons/obj/ammo.dmi' + icon = 'icons/modules/projectiles/rp_ammo_unused.dmi' icon_state = "powderhorn" w_class = WEIGHT_CLASS_SMALL slot_flags = SLOT_BELT @@ -138,6 +138,6 @@ icon_state = "blunderbuss" item_state = "blunderbuss" wielded_item_state = "blunderbuss-wielded" - caliber = "blunderbuss" + regex_this_caliber = /datum/ammo_caliber/blunderbuss - ammo_type = /obj/item/ammo_casing/musket/blunderbuss + ammo_type = /obj/item/ammo_casing/blunderbuss diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm index c2798f3b120..f69f269aeb5 100644 --- a/code/modules/projectiles/guns/projectile/pistol.dm +++ b/code/modules/projectiles/guns/projectile/pistol.dm @@ -2,11 +2,11 @@ var/unique_reskin name = ".45 pistol" desc = "A cheap Martian knock-off of a Colt M1911. Uses .45 rounds." - magazine_type = /obj/item/ammo_magazine/m45 - allowed_magazines = list(/obj/item/ammo_magazine/m45) + magazine_type = /obj/item/ammo_magazine/a45 + allowed_magazines = list(/obj/item/ammo_magazine/a45) projectile_type = /obj/projectile/bullet/pistol/medium icon_state = "colt" - caliber = ".45" + regex_this_caliber = /datum/ammo_caliber/a45 origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) load_method = MAGAZINE @@ -25,7 +25,7 @@ /obj/item/gun/ballistic/colt/detective desc = "A Martian recreation of an old pistol. Uses .45 rounds." - magazine_type = /obj/item/ammo_magazine/m45/rubber + magazine_type = /obj/item/ammo_magazine/a45/rubber /obj/item/gun/ballistic/colt/detective/verb/rename_gun() set name = "Name Gun" @@ -85,16 +85,16 @@ name = ".45 pistol" desc = "The NT Mk58 is a cheap, ubiquitous sidearm, produced by a Nanotrasen subsidiary. Found pretty much everywhere humans are. This one is a less-lethal variant that only accepts .45 rubber or flash magazines." icon_state = "secguncomp" - magazine_type = /obj/item/ammo_magazine/m45/rubber - allowed_magazines = list(/obj/item/ammo_magazine/m45/rubber, /obj/item/ammo_magazine/m45/flash, /obj/item/ammo_magazine/m45/practice) + magazine_type = /obj/item/ammo_magazine/a45/rubber + allowed_magazines = list(/obj/item/ammo_magazine/a45/rubber, /obj/item/ammo_magazine/a45/flash, /obj/item/ammo_magazine/a45/practice) projectile_type = /obj/projectile/bullet/pistol/medium - caliber = ".45" + regex_this_caliber = /datum/ammo_caliber/a45 origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) load_method = MAGAZINE /obj/item/gun/ballistic/sec/flash name = ".45 signal pistol" - magazine_type = /obj/item/ammo_magazine/m45/flash + magazine_type = /obj/item/ammo_magazine/a45/flash /obj/item/gun/ballistic/sec/wood desc = "The NT Mk58 is a cheap, ubiquitous sidearm, produced by a Nanotrasen subsidiary. This one has a sweet wooden grip and only accepts .45 rubber or flash magazines." @@ -106,14 +106,14 @@ desc = "A small, quiet, easily concealable gun. Uses .45 rounds." icon_state = "silenced_pistol" w_class = WEIGHT_CLASS_NORMAL - caliber = ".45" + regex_this_caliber = /datum/ammo_caliber/a45 silenced = 1 fire_delay = 1 recoil = 0 origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 8) load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m45 - allowed_magazines = list(/obj/item/ammo_magazine/m45) + magazine_type = /obj/item/ammo_magazine/a45 + allowed_magazines = list(/obj/item/ammo_magazine/a45) projectile_type = /obj/projectile/bullet/pistol/medium /obj/item/gun/ballistic/deagle @@ -122,11 +122,11 @@ icon_state = "deagle" item_state = "deagle" damage_force = 14.0 - caliber = ".44" + regex_this_caliber = /datum/ammo_caliber/a44 fire_sound = 'sound/weapons/Gunshot_deagle.ogg' load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m44 - allowed_magazines = list(/obj/item/ammo_magazine/m44) + magazine_type = /obj/item/ammo_magazine/a44 + allowed_magazines = list(/obj/item/ammo_magazine/a44) /obj/item/gun/ballistic/deagle/gold desc = "A gold plated gun folded over a million times by superior martian gunsmiths. Uses .44 rounds." @@ -148,13 +148,13 @@ desc = "Speak softly, and carry a big gun. Fires rare .75 caliber self-propelled exploding bolts--because fuck you and everything around you." icon_state = "gyropistol" max_shells = 8 - caliber = ".75" + regex_this_caliber = /datum/ammo_caliber/a75 fire_sound = 'sound/weapons/railgun.ogg' origin_tech = list(TECH_COMBAT = 3) ammo_type = "/obj/item/ammo_casing/a75" load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m75 - allowed_magazines = list(/obj/item/ammo_magazine/m75) + magazine_type = /obj/item/ammo_magazine/a75 + allowed_magazines = list(/obj/item/ammo_magazine/a75) auto_eject = 1 auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg' @@ -167,13 +167,13 @@ max_shells = 10 fire_sound = 'sound/weapons/gunshot/gunshot_bolter.ogg' origin_tech = list(TECH_COMBAT = 5, TECH_ILLEGAL = 3) - magazine_type = /obj/item/ammo_magazine/m75/pistol - allowed_magazines = list(/obj/item/ammo_magazine/m75/pistol) + magazine_type = /obj/item/ammo_magazine/a75 + allowed_magazines = list(/obj/item/ammo_magazine/a75) auto_eject = 0 /obj/item/gun/ballistic/gyropistol/bolter/update_icon_state() . = ..() - icon_state = "bolt_pistol-[ammo_magazine ? round(ammo_magazine.stored_ammo.len, 2) : "empty"]" + icon_state = "bolt_pistol-[ammo_magazine ? round(ammo_magazine.amount_remaining(), 2) : "empty"]" /obj/item/gun/ballistic/gyropistol/bolter/black desc = "A boxy sidearm seemingly designed for a larger hand. This one is painted black." @@ -182,7 +182,7 @@ /obj/item/gun/ballistic/gyropistol/bolter/black/update_icon_state() . = ..() - icon_state = "bolt_pistolblack-[ammo_magazine ? round(ammo_magazine.stored_ammo.len, 2) : "empty"]" + icon_state = "bolt_pistolblack-[ammo_magazine ? round(ammo_magazine.amount_remaining(), 2) : "empty"]" /obj/item/gun/ballistic/pistol name = "compact pistol" @@ -191,18 +191,18 @@ icon_state = "pistol" item_state = null w_class = WEIGHT_CLASS_SMALL - caliber = "9mm" + regex_this_caliber = /datum/ammo_caliber/a9mm suppressible = TRUE silenced_icon = "pistol_silencer" origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 2) load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m9mm/compact - allowed_magazines = list(/obj/item/ammo_magazine/m9mm/compact) + magazine_type = /obj/item/ammo_magazine/a9mm/compact + allowed_magazines = list(/obj/item/ammo_magazine/a9mm/compact) projectile_type = /obj/projectile/bullet/pistol /obj/item/gun/ballistic/pistol/flash name = "compact signal pistol" - magazine_type = /obj/item/ammo_magazine/m9mm/compact/flash + magazine_type = /obj/item/ammo_magazine/a9mm/compact/flash /obj/item/silencer name = "silencer" @@ -223,29 +223,30 @@ max_shells = 1 //literally just a barrel unstable = 1 + // todo: caliber types? var/global/list/ammo_types = list( - /obj/item/ammo_casing/a357 = ".357", - /obj/item/ammo_casing/a9mm = "9mm", - /obj/item/ammo_casing/a45 = ".45", - /obj/item/ammo_casing/a10mm = "10mm", - /obj/item/ammo_casing/a12g = "12g", - /obj/item/ammo_casing/a12g = "12g", - /obj/item/ammo_casing/a12g/pellet = "12g", - /obj/item/ammo_casing/a12g/pellet = "12g", - /obj/item/ammo_casing/a12g/pellet = "12g", - /obj/item/ammo_casing/a12g/beanbag = "12g", - /obj/item/ammo_casing/a12g/stunshell = "12g", - /obj/item/ammo_casing/a12g/flare = "12g", - /obj/item/ammo_casing/a762 = "7.62mm", - /obj/item/ammo_casing/a556 = "5.56mm" - ) + /obj/item/ammo_casing/a357, + /obj/item/ammo_casing/a9mm, + /obj/item/ammo_casing/a45, + /obj/item/ammo_casing/a10mm, + /obj/item/ammo_casing/a12g, + /obj/item/ammo_casing/a12g, + /obj/item/ammo_casing/a12g/pellet, + /obj/item/ammo_casing/a12g/pellet, + /obj/item/ammo_casing/a12g/pellet, + /obj/item/ammo_casing/a12g/beanbag, + /obj/item/ammo_casing/a12g/stunshell, + /obj/item/ammo_casing/a12g/flare, + /obj/item/ammo_casing/a7_62mm, + /obj/item/ammo_casing/a5_56mm, + ) /obj/item/gun/ballistic/pirate/Initialize(mapload) ammo_type = pick(ammo_types) desc += " Uses [ammo_types[ammo_type]] rounds." var/obj/item/ammo_casing/ammo = ammo_type - caliber = initial(ammo.caliber) + regex_this_caliber = initial(ammo.regex_this_caliber) return ..() /obj/item/gun/ballistic/pirate/consume_next_projectile(mob/user as mob) @@ -297,10 +298,10 @@ desc = "Not some cheap scheisse Martian knockoff! This Luger is an authentic reproduction by RauMauser. Accuracy, easy handling, and its signature appearance make it popular among historic gun collectors. Uses 9mm rounds." icon_state = "p08" origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2) - caliber = "9mm" + regex_this_caliber = /datum/ammo_caliber/a9mm load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m9mm/compact - allowed_magazines = list(/obj/item/ammo_magazine/m9mm/compact) + magazine_type = /obj/item/ammo_magazine/a9mm/compact + allowed_magazines = list(/obj/item/ammo_magazine/a9mm/compact) projectile_type = /obj/projectile/bullet/pistol /obj/item/gun/ballistic/luger/brown @@ -311,38 +312,38 @@ desc = "A widespread sidearm called the P92X which is used by military, police, and security forces across the galaxy. Uses 9mm rounds." icon_state = "p92x" origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2) - caliber = "9mm" + regex_this_caliber = /datum/ammo_caliber/a9mm load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m9mm - allowed_magazines = list(/obj/item/ammo_magazine/m9mm) // Can accept illegal large capacity magazines, or compact magazines. + magazine_type = /obj/item/ammo_magazine/a9mm + allowed_magazines = list(/obj/item/ammo_magazine/a9mm) // Can accept illegal large capacity magazines, or compact magazines. /obj/item/gun/ballistic/p92x/sec desc = "A widespread sidearm called the P92X which is used by military, police, and security forces across the galaxy. This one is a less-lethal variant that only accepts 9mm rubber or flash magazines." - magazine_type = /obj/item/ammo_magazine/m9mm/rubber - allowed_magazines = list(/obj/item/ammo_magazine/m9mm/rubber, /obj/item/ammo_magazine/m9mm/flash) + magazine_type = /obj/item/ammo_magazine/a9mm/rubber + allowed_magazines = list(/obj/item/ammo_magazine/a9mm/rubber, /obj/item/ammo_magazine/a9mm/flash) //Ported this over from the _vr before deletion. Commenting them out because I'm not sure we want these in. /* /obj/item/gun/ballistic/p92x/large/licensed icon_state = "p92x-brown" - magazine_type = /obj/item/ammo_magazine/m9mm/large/licensed // Spawns with big magazines that are legal. + magazine_type = /obj/item/ammo_magazine/a9mm/large // Spawns with big magazines that are legal. /obj/item/gun/ballistic/p92x/large/licensed/hp - magazine_type = /obj/item/ammo_magazine/m9mm/large/licensed/hp // Spawns with legal hollow-point mag + magazine_type = /obj/item/ammo_magazine/a9mm/large/hp // Spawns with legal hollow-point mag */ /obj/item/gun/ballistic/p92x/brown icon_state = "p92x-brown" /obj/item/gun/ballistic/p92x/large - magazine_type = /obj/item/ammo_magazine/m9mm/large // Spawns with illegal magazines. + magazine_type = /obj/item/ammo_magazine/a9mm/large // Spawns with illegal magazines. /obj/item/gun/ballistic/r9 name = "C96-Red 9" desc = "A variation on the Mauser C-96, remade for a modern day. A Glithari Exports product, for gun collectors and private militaries alike. Uses 9mm stripper clips." icon_state = "r9" origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL =1) //VERY OLD - caliber = "9mm" + regex_this_caliber = /datum/ammo_caliber/a9mm load_method = SPEEDLOADER max_shells = 10 ammo_type = /obj/item/ammo_casing/a9mm @@ -358,12 +359,12 @@ desc = "This curious weapon feeds from a compressed biomatter cartridge, and seems to fabricate its ammunition from that supply." icon_state = "clownpistol" item_state = "revolver" - caliber = "organic" + regex_this_caliber = /datum/ammo_caliber/biomatter load_method = MAGAZINE w_class = WEIGHT_CLASS_SMALL origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 3) - magazine_type = /obj/item/ammo_magazine/mcompressedbio/compact - allowed_magazines = list(/obj/item/ammo_magazine/mcompressedbio/compact) + magazine_type = /obj/item/ammo_magazine/biomatter + allowed_magazines = list(/obj/item/ammo_magazine/biomatter) projectile_type = /obj/projectile/bullet/organic //Hey did you ever see Kingsman? Well, you know this gun then. @@ -374,13 +375,13 @@ icon_state = "konigin" item_state = null w_class = WEIGHT_CLASS_SMALL - caliber = "9mm" + regex_this_caliber = /datum/ammo_caliber/a9mm suppressible = TRUE silenced_icon = "konigin_silencer" origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2, TECH_ILLEGAL = 3) load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m9mm/compact/double - allowed_magazines = list(/obj/item/ammo_magazine/m9mm/compact) + magazine_type = /obj/item/ammo_magazine/a9mm/compact/double + allowed_magazines = list(/obj/item/ammo_magazine/a9mm/compact) projectile_type = /obj/projectile/bullet/pistol /obj/item/gun/ballistic/konigin @@ -432,11 +433,11 @@ desc = "The NT-57 'LES' (Light Expeditionary Sidearm) is a tried and tested pistol often issued to Pathfinders. Featuring a polymer frame, collapsible stock, and integrated optics, the LES is lightweight and reliably functions in nearly any hazardous environment, including vacuum." icon_state = "ntles" item_state = "pistol" - caliber = "5.7x28mm" + regex_this_caliber = /datum/ammo_caliber/a5_7mm load_method = MAGAZINE origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2) - magazine_type = /obj/item/ammo_magazine/m57x28mm/ntles - allowed_magazines = list(/obj/item/ammo_magazine/m57x28mm/ntles) + magazine_type = /obj/item/ammo_magazine/a5_7mm/nt_les + allowed_magazines = list(/obj/item/ammo_magazine/a5_7mm/nt_les) projectile_type = /obj/projectile/bullet/pistol/lap one_handed_penalty = 30 var/collapsible = 1 @@ -478,17 +479,17 @@ desc = "This classic sidearm design utilizes an adaptable round considered by some to be superior to 9mm parabellum. Favored amongst sheild bearers in tactical units for its stability in one-handed use, and high capacity magazines." icon_state = "fiveseven" item_state = "pistol" - caliber = "5.7x28mm" + regex_this_caliber = /datum/ammo_caliber/a5_7mm load_method = MAGAZINE w_class = WEIGHT_CLASS_SMALL origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2) - magazine_type = /obj/item/ammo_magazine/m57x28mm/fiveseven - allowed_magazines = list(/obj/item/ammo_magazine/m57x28mm/fiveseven) + magazine_type = /obj/item/ammo_magazine/a5_7mm/five_seven + allowed_magazines = list(/obj/item/ammo_magazine/a5_7mm/five_seven) one_handed_penalty = 0 /obj/item/gun/ballistic/fiveseven/update_icon_state() . = ..() - if(istype(ammo_magazine,/obj/item/ammo_magazine/m57x28mm/fiveseven/highcap)) + if(istype(ammo_magazine,/obj/item/ammo_magazine/a5_7mm/five_seven/highcap)) icon_state = "fiveseven-extended" //Apidean Weapons @@ -497,7 +498,7 @@ desc = "Used by Hive-guards to detain deviants." icon_state = "apipistol" item_state = "florayield" - caliber = "apidean" + regex_this_caliber = /datum/ammo_caliber/biomatter/wax load_method = MAGAZINE w_class = WEIGHT_CLASS_SMALL origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2, TECH_BIO = 5) @@ -507,7 +508,7 @@ /obj/item/gun/ballistic/apinae_pistol/update_icon_state() . = ..() - icon_state = "apipistol-[ammo_magazine ? round(ammo_magazine.stored_ammo.len, 2) : "e"]" + icon_state = "apipistol-[ammo_magazine ? round(ammo_magazine.amount_remaining(), 2) : "e"]" //Tyrmalin Weapons /obj/item/gun/ballistic/pirate/junker_pistol @@ -530,10 +531,10 @@ icon_state = "toy_pistol" item_state = null w_class = WEIGHT_CLASS_SMALL - caliber = "foamdart" + regex_this_caliber = /datum/ammo_caliber/foam load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/mfoam/pistol - allowed_magazines = list(/obj/item/ammo_magazine/mfoam/pistol) + magazine_type = /obj/item/ammo_magazine/foam/pistol + allowed_magazines = list(/obj/item/ammo_magazine/foam/pistol) fire_sound = 'sound/items/syringeproj.ogg' /obj/item/gun/ballistic/pistol/foam/handle_suicide(mob/living/user) diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index accf9272424..b2f97239d87 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -3,7 +3,7 @@ desc = "The Lumoco Arms HE Colt is a choice revolver for when you absolutely, positively need to put a hole in the other guy. Uses .357 rounds." icon_state = "revolver" item_state = "revolver" - caliber = ".357" + regex_this_caliber = /datum/ammo_caliber/a357 origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) handle_casings = CYCLE_CASINGS max_shells = 6 @@ -55,7 +55,7 @@ name = "Adhomai knife revolver" desc = "An ornate knife revolver from an Adhomai gunsmith. Popular among Tajaran nobility just before the civil war and even to this day, many of these revolvers found their way into the market when they were taken as trophies by Grand People's Army soldiers and DPRA guerillas." icon_state = "knifegun" - caliber = ".38" + regex_this_caliber = /datum/ammo_caliber/a38 ammo_type = /obj/item/ammo_casing/a38 damage_force = 15 sharp = 1 @@ -65,7 +65,7 @@ name = "revolver" desc = "A cheap Martian knock-off of a Smith & Wesson Model 10. Uses .38-Special rounds." icon_state = "detective" - caliber = ".38" + regex_this_caliber = /datum/ammo_caliber/a38 origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) ammo_type = /obj/item/ammo_casing/a38 @@ -91,7 +91,7 @@ name = ".45 revolver" desc = "A fancy replica of an old revolver, modified for .45 rounds and a seven-shot cylinder." icon_state = "detective" - caliber = ".45" + regex_this_caliber = /datum/ammo_caliber/a45 origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) ammo_type = /obj/item/ammo_casing/a45/rubber max_shells = 7 @@ -145,7 +145,7 @@ name = "\improper Deckard .38" desc = "A custom-built revolver, based off the semi-popular Detective Special model. Uses .38-Special rounds." icon_state = "deckard-empty" - caliber = ".38" + regex_this_caliber = /datum/ammo_caliber/a38 origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) ammo_type = /obj/item/ammo_casing/a38 @@ -170,18 +170,18 @@ desc = "Looks almost like the real thing! Ages 8 and up." icon_state = "revolver" item_state = "revolver" - caliber = "caps" + regex_this_caliber = /datum/ammo_caliber/cap_gun origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1) handle_casings = CYCLE_CASINGS max_shells = 7 - ammo_type = /obj/item/ammo_casing/cap + ammo_type = /obj/item/ammo_casing/cap_gun projectile_type = /obj/projectile/bullet/pistol/strong /obj/item/gun/ballistic/revolver/judge name = "\"The Judge\"" desc = "A revolving hand-shotgun by Cybersun Industries that packs the power of a 12 guage in the palm of your hand (if you don't break your wrist). Uses 12g rounds." icon_state = "judge" - caliber = "12g" + regex_this_caliber = /datum/ammo_caliber/a12g origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 4) max_shells = 5 recoil = 2 // ow my fucking hand @@ -198,11 +198,11 @@ origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) handle_casings = CYCLE_CASINGS max_shells = 9 - caliber = ".38" + regex_this_caliber = /datum/ammo_caliber/a38 ammo_type = /obj/item/ammo_casing/a38 projectile_type = /obj/projectile/bullet/pistol var/secondary_max_shells = 1 - var/secondary_caliber = "12g" + var/secondary_regex_this_caliber = /datum/ammo_caliber/a12g var/secondary_ammo_type = /obj/item/ammo_casing/a12g var/flipped_firing = 0 var/list/secondary_loaded = list() @@ -227,8 +227,8 @@ if(max_shells && secondary_max_shells) max_shells = secondary_max_shells - if(caliber && secondary_caliber) - caliber = secondary_caliber + if(regex_this_caliber && secondary_regex_this_caliber) + regex_this_caliber = secondary_regex_this_caliber if(ammo_type && secondary_ammo_type) ammo_type = secondary_ammo_type @@ -243,8 +243,8 @@ if(max_shells) max_shells = initial(max_shells) - if(caliber && secondary_caliber) - caliber = initial(caliber) + if(regex_this_caliber && secondary_regex_this_caliber) + regex_this_caliber = initial(regex_this_caliber) if(ammo_type && secondary_ammo_type) ammo_type = initial(ammo_type) @@ -290,7 +290,7 @@ desc = "A rugged top break revolver based on the Webley Mk. VI model, with modern improvements. Uses .44 magnum rounds." icon_state = "webley2" item_state = "webley2" - caliber = ".44" + regex_this_caliber = /datum/ammo_caliber/a44 origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) handle_casings = CYCLE_CASINGS max_shells = 6 @@ -313,7 +313,7 @@ desc = "A powerful hand cannon made famous by the legendary lawman that wielded it. Even to this day people follow in his legacy. 'Are you feeling lucky punk?'" icon_state = "dirty_harry" item_state = "revolver" - caliber = ".44" + regex_this_caliber = /datum/ammo_caliber/a44 fire_sound = 'sound/weapons/Gunshot_deagle.ogg' origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2) handle_casings = CYCLE_CASINGS @@ -329,7 +329,7 @@ name = "\improper Ogre combat revolver" desc = "The NT-R-7 'Ogre' combat revolver is tooled for Nanotrasen special operations. Chambered in .44 Magnum with an advanced high-speed firing mechanism, it serves as the perfect sidearm for any off the books endeavor." icon_state = "combatrevolver" - caliber = ".44" + regex_this_caliber = /datum/ammo_caliber/a44 fire_delay = 5.7 origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 3) ammo_type = /obj/item/ammo_casing/a44 diff --git a/code/modules/projectiles/guns/projectile/rocket.dm b/code/modules/projectiles/guns/projectile/rocket.dm index 9e58df29ac5..184ef55b548 100644 --- a/code/modules/projectiles/guns/projectile/rocket.dm +++ b/code/modules/projectiles/guns/projectile/rocket.dm @@ -3,7 +3,7 @@ desc = "MAGGOT." icon_state = "rocket" item_state = "rocket" - caliber = "rocket" + regex_this_caliber = /datum/ammo_caliber/rocket max_shells = 1 load_method = SINGLE_CASING w_class = WEIGHT_CLASS_BULKY diff --git a/code/modules/projectiles/guns/projectile/semiauto.dm b/code/modules/projectiles/guns/projectile/semiauto.dm index f93a515685b..d7c0ab90690 100644 --- a/code/modules/projectiles/guns/projectile/semiauto.dm +++ b/code/modules/projectiles/guns/projectile/semiauto.dm @@ -5,13 +5,13 @@ item_state = "boltaction" w_class = WEIGHT_CLASS_BULKY heavy = TRUE - caliber = "7.62mm" + regex_this_caliber = /datum/ammo_caliber/a7_62mm origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) slot_flags = SLOT_BACK //fire_sound = 'sound/weapons/rifleshot.ogg' load_method = MAGAZINE // ToDo: Make it so MAGAZINE, SPEEDLOADER and SINGLE_CASING can all be used on the same gun. - magazine_type = /obj/item/ammo_magazine/m762garand - allowed_magazines = list(/obj/item/ammo_magazine/m762garand) + magazine_type = /obj/item/ammo_magazine/a7_62mm/garand + allowed_magazines = list(/obj/item/ammo_magazine/a7_62mm/garand) auto_eject = 1 auto_eject_sound = 'sound/weapons/garand_ping.ogg' one_handed_penalty = 15 @@ -28,7 +28,7 @@ desc = "A reproduction of the rare MIA Garand rifle. Most likely, it was once a standard Cybersun reproduction, modified by a competant gunsmith into a proper M1A model." icon_state = "sgarand" pin = /obj/item/firing_pin/explorer - magazine_type = /obj/item/ammo_magazine/m762garand/sniperhunter + magazine_type = /obj/item/ammo_magazine/a7_62mm/garand/sniperhunter w_class = WEIGHT_CLASS_HUGE // We don't need this fitting in backpacks. accuracy = 70 //Forced missing fucking sucks ass scoped_accuracy = 100 @@ -47,7 +47,7 @@ item_state = "speargun" w_class = WEIGHT_CLASS_BULKY heavy = TRUE - caliber = "apidean" + regex_this_caliber = /datum/ammo_caliber/biomatter/wax origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 3, TECH_BIO = 7) slot_flags = SLOT_BACK fire_sound = 'sound/weapons/rifleshot.ogg' @@ -59,4 +59,4 @@ /obj/item/gun/ballistic/apinae_stinger/update_icon_state() . = ..() - icon_state = "apigun-[ammo_magazine ? round(ammo_magazine.stored_ammo.len, 2) : "e"]" + icon_state = "apigun-[ammo_magazine ? round(ammo_magazine.amount_remaining(), 2) : "e"]" diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 32f77895c86..ec3d65b1dcc 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -8,7 +8,7 @@ heavy = TRUE damage_force = 10 slot_flags = SLOT_BACK - caliber = "12g" + regex_this_caliber = /datum/ammo_caliber/a12g origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2) load_method = SINGLE_CASING|SPEEDLOADER ammo_type = /obj/item/ammo_casing/a12g/beanbag @@ -124,7 +124,7 @@ desc = "This exotic ten gauge shotgun sports a custom paint job and a cylinder choke. At close ranges, it packs quite the punch." icon_state = "grit" item_state = "grit" - caliber = "10g" + regex_this_caliber = /datum/ammo_caliber/a10g ammo_type = /obj/item/ammo_casing/a10g/pellet/grit fire_sound = 'sound/weapons/gunshot/musket.ogg' origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 4) @@ -158,7 +158,7 @@ heavy = TRUE damage_force = 10 slot_flags = SLOT_BACK - caliber = "12g" + regex_this_caliber = /datum/ammo_caliber/a12g origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 1) ammo_type = /obj/item/ammo_casing/a12g/beanbag @@ -244,7 +244,7 @@ accuracy = 40 slot_flags = SLOT_BACK ammo_type = /obj/item/ammo_casing/a12g/pellet - caliber = "12g" + regex_this_caliber = /datum/ammo_caliber/a12g origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 1) ammo_type = /obj/item/ammo_casing/a12g/pellet @@ -259,7 +259,7 @@ desc = "Rip and tear, until it is done." icon_state = "supershotgun" item_state = "supershotgun" - caliber = "10g" + regex_this_caliber = /datum/ammo_caliber/a10g recoil = 0 accuracy = 80 slot_flags = SLOT_BELT|SLOT_HOLSTER @@ -280,7 +280,7 @@ w_class = WEIGHT_CLASS_SMALL damage_force = 5 slot_flags = SLOT_BELT - caliber = "12g" + regex_this_caliber = /datum/ammo_caliber/a12g accuracy = -15 //Its a flaregun and you expected accuracy? ammo_type = /obj/item/ammo_casing/a12g/flare projectile_type = /obj/projectile/energy/flash @@ -331,7 +331,7 @@ handle_casings = CYCLE_CASINGS max_shells = 1 w_class = WEIGHT_CLASS_TINY - caliber = "12g" + regex_this_caliber = /datum/ammo_caliber/a12g ammo_type = /obj/item/ammo_casing/a12g one_handed_penalty = 0 safety_state = GUN_SAFETY_OFF @@ -344,7 +344,7 @@ icon_state = "toy_shotgun" max_shells = 8 damage_force = 5 - caliber = "foamdart" + regex_this_caliber = /datum/ammo_caliber/foam ammo_type = /obj/item/ammo_casing/foam projectile_type = /obj/projectile/bullet/reusable/foam one_handed_penalty = 5 diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index 1b5b38c2fd5..63cbc51cdfa 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -11,13 +11,13 @@ heavy = TRUE slot_flags = SLOT_BACK origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 2, TECH_ILLEGAL = 8) - caliber = "12.7mm" + regex_this_caliber = /datum/ammo_caliber/a12_7mm recoil = 5 //extra kickback handle_casings = HOLD_CASINGS load_method = SINGLE_CASING max_shells = 1 - ammo_type = /obj/item/ammo_casing/a127 - projectile_type = /obj/projectile/bullet/rifle/a127 + ammo_type = /obj/item/ammo_casing/a12_7mm + projectile_type = /obj/projectile/bullet/rifle/a12_7mm load_sound = 'sound/weapons/guns/interaction/rifle_load.ogg' accuracy = -45 scoped_accuracy = 95 @@ -86,7 +86,7 @@ damage_force = 10 slot_flags = SLOT_BACK // Needs a sprite. origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 2, TECH_ILLEGAL = 8) - caliber = "7.62mm" + regex_this_caliber = /datum/ammo_caliber/a7_62mm load_method = MAGAZINE accuracy = -45 //shooting at the hip scoped_accuracy = 95 @@ -94,8 +94,8 @@ // requires_two_hands = 1 one_handed_penalty = 60 // The weapon itself is heavy, and the long barrel makes it hard to hold steady with just one hand. fire_sound = 'sound/weapons/Gunshot_SVD.ogg' // Has a very unique sound. - magazine_type = /obj/item/ammo_magazine/m762svd - allowed_magazines = list(/obj/item/ammo_magazine/m762svd) + magazine_type = /obj/item/ammo_magazine/a7_62mm/svd + allowed_magazines = list(/obj/item/ammo_magazine/a7_62mm/svd) /obj/item/gun/ballistic/SVD/update_icon_state() . = ..() diff --git a/code/modules/projectiles/magazines/magazine.dm b/code/modules/projectiles/magazines/magazine.dm deleted file mode 100644 index c03ca5d1ad7..00000000000 --- a/code/modules/projectiles/magazines/magazine.dm +++ /dev/null @@ -1,255 +0,0 @@ -//An item that holds casings and can be used to put them inside guns -/obj/item/ammo_magazine - name = "magazine" - desc = "A magazine for some kind of gun." - icon_state = ".357" - icon = 'icons/obj/ammo.dmi' - item_flags = ITEM_EASY_LATHE_DECONSTRUCT | ITEM_ENCUMBERS_WHILE_HELD - slot_flags = SLOT_BELT - item_state = "syringe_kit" - materials_base = list(MAT_STEEL = 500) - throw_force = 5 - w_class = WEIGHT_CLASS_SMALL - throw_speed = 4 - throw_range = 10 - preserve_item = 1 - - var/list/stored_ammo = list() - var/mag_type = SPEEDLOADER //ammo_magazines can only be used with compatible guns. This is not a bitflag, the load_method var on guns is. - var/caliber = ".357" - var/max_ammo = 7 - - var/ammo_type = /obj/item/ammo_casing //ammo type that is initially loaded - var/initial_ammo // initial ammo amount, null for full - - var/can_remove_ammo = TRUE // Can this thing have bullets removed one-by-one? As of first implementation, only affects smart magazines - - var/multiple_sprites = 0 - //because BYOND doesn't support numbers as keys in associative lists - var/list/icon_keys = list() //keys - var/list/ammo_states = list() //values - var/ammo_mark = null //Used for overlays simulated paint or tape bands on magazines. Cuts down on bloat. - -/obj/item/ammo_magazine/Initialize(mapload) - . = ..() - pixel_x = rand(-5, 5) - pixel_y = rand(-5, 5) - if(multiple_sprites) - initialize_magazine_icondata(src) - - if(isnull(initial_ammo)) - initial_ammo = max_ammo - - if(initial_ammo) - for(var/i in 1 to initial_ammo) - stored_ammo += new ammo_type(src) - update_icon() - -/obj/item/ammo_magazine/detect_material_base_costs() - . = ..() - if(isnull(ammo_type)) - return - var/shell_amount = isnull(initial_ammo)? max_ammo : initial_ammo - if(!shell_amount) - return - var/obj/item/ammo_casing/casing = new ammo_type - if(!istype(casing)) - qdel(casing) - return - var/list/adding = casing.detect_material_base_costs() - qdel(casing) - for(var/key in adding) - .[key] += adding[key] * shell_amount - -/obj/item/ammo_magazine/get_containing_worth(flags) - . = ..() - var/obj/item/ammo_casing/ammo_casted = ammo_type - . += (isnull(initial_ammo)? max_ammo : initial_ammo) * initial(ammo_casted.worth_intrinsic) - -/obj/item/ammo_magazine/attackby(obj/item/W as obj, mob/user as mob) - if(istype(W, /obj/item/ammo_casing)) - var/obj/item/ammo_casing/C = W - if(C.caliber != caliber) - to_chat(user, "[C] does not fit into [src].") - return - if(stored_ammo.len >= max_ammo) - to_chat(user, "[src] is full!") - return - if(!user.attempt_insert_item_for_installation(C, src)) - return - stored_ammo.Add(C) - update_icon() - if(istype(W, /obj/item/ammo_magazine/clip)) - var/obj/item/ammo_magazine/clip/L = W - if(L.caliber != caliber) - to_chat(user, "The ammo in [L] does not fit into [src].") - return - if(!L.stored_ammo.len) - to_chat(user, "There's no more ammo [L]!") - return - if(stored_ammo.len >= max_ammo) - to_chat(user, "[src] is full!") - return - var/obj/item/ammo_casing/AC = L.stored_ammo[1] //select the next casing. - L.stored_ammo -= AC //Remove this casing from loaded list of the clip. - AC.loc = src - stored_ammo.Insert(1, AC) //add it to the head of our magazine's list - L.update_icon() - playsound(user.loc, 'sound/weapons/flipblade.ogg', 50, 1) - update_icon() - -// This dumps all the bullets right on the floor -/obj/item/ammo_magazine/attack_self(mob/user) - . = ..() - if(.) - return - if(can_remove_ammo) - if(!stored_ammo.len) - to_chat(user, "[src] is already empty!") - return - to_chat(user, "You empty [src].") - playsound(user.loc, "casing_sound", 50, 1) - spawn(7) - playsound(user.loc, "casing_sound", 50, 1) - spawn(10) - playsound(user.loc, "casing_sound", 50, 1) - for(var/obj/item/ammo_casing/C in stored_ammo) - C.loc = user.loc - C.setDir(pick(GLOB.cardinal)) - stored_ammo.Cut() - update_icon() - else - to_chat(user, "\The [src] is not designed to be unloaded.") - return - -// This puts one bullet from the magazine into your hand -/obj/item/ammo_magazine/attack_hand(mob/user, list/params) - if(can_remove_ammo) // For Smart Magazines - if(user.get_inactive_held_item() == src) - if(stored_ammo.len) - var/obj/item/ammo_casing/C = stored_ammo[stored_ammo.len] - stored_ammo-=C - user.put_in_hands(C) - user.visible_message("\The [user] removes \a [C] from [src].", "You remove \a [C] from [src].") - update_icon() - return - ..() - -/obj/item/ammo_magazine/update_icon() - if(multiple_sprites) - //find the lowest key greater than or equal to stored_ammo.len - var/new_state = null - for(var/idx in 1 to icon_keys.len) - var/ammo_count = icon_keys[idx] - if (ammo_count >= stored_ammo.len) - new_state = ammo_states[idx] - break - icon_state = (new_state)? new_state : initial(icon_state) - if(ammo_mark) - add_overlay("[initial(icon_state)]_[ammo_mark]") - -/obj/item/ammo_magazine/examine(mob/user, dist) - . = ..() - . += "There [(stored_ammo.len == 1)? "is" : "are"] [stored_ammo.len] round\s left!" - -/** - * puts a round into us, if possible - * does not update icon by default! - */ -/obj/item/ammo_magazine/proc/load_casing(obj/item/ammo_casing/casing, replace_spent, update_icon) - if(caliber) - if(casing.caliber != caliber) - return FALSE - else - if(casing.type != ammo_type) - return FALSE - if(length(stored_ammo) < max_ammo) - // add - casing.forceMove(src) - if(QDELETED(casing)) - return FALSE - stored_ammo += casing - if(update_icon) - update_icon() - return TRUE - else if(replace_spent) - // replace - var/obj/item/ammo_casing/enemy - for(var/i in 1 to length(stored_ammo)) - enemy = stored_ammo[i] - if(enemy.loaded()) - continue - // this is the one - casing.forceMove(src) - if(QDELETED(casing)) - return FALSE - stored_ammo[i] = casing - // kick 'em out - enemy.forceMove(drop_location()) - if(update_icon) - update_icon() - return TRUE - return FALSE - -/** - * quickly gathers stuff from turf - * does not sainty check - * - * @params - * * where - the turf - * * user - (optional) who's doing it - * - * @return number of rounds gathered - */ -/obj/item/ammo_magazine/proc/quick_gather(turf/where, mob/user) - . = 0 - if(full()) - user?.action_feedback(SPAN_WARNING("[src] is full."), src) - return - for(var/obj/item/ammo_casing/casing in where) - if(length(stored_ammo) >= max_ammo) - break - if(!casing.loaded()) - continue - if(!load_casing(casing, FALSE)) - continue - ++. - if(.) - update_icon() - user?.action_feedback(SPAN_NOTICE("You collect [.] rounds."), src) - else - user?.action_feedback(SPAN_WARNING("You fail to collect anything."), src) - -/obj/item/ammo_magazine/proc/full() - return length(stored_ammo) >= max_ammo - -/obj/item/ammo_magazine/proc/remaining() - return length(stored_ammo) - -/obj/item/ammo_magazine/proc/missing() - return max_ammo - length(stored_ammo) - -//magazine icon state caching -/var/global/list/magazine_icondata_keys = list() -/var/global/list/magazine_icondata_states = list() - -/proc/initialize_magazine_icondata(var/obj/item/ammo_magazine/M) - var/typestr = "[M.type]" - if(!(typestr in magazine_icondata_keys) || !(typestr in magazine_icondata_states)) - magazine_icondata_cache_add(M) - - M.icon_keys = magazine_icondata_keys[typestr] - M.ammo_states = magazine_icondata_states[typestr] - -/proc/magazine_icondata_cache_add(var/obj/item/ammo_magazine/M) - var/list/icon_keys = list() - var/list/ammo_states = list() - var/list/states = icon_states(M.icon) - for(var/i = 0, i <= M.max_ammo, i++) - var/ammo_state = "[M.icon_state]-[i]" - if(ammo_state in states) - icon_keys += i - ammo_states += ammo_state - - magazine_icondata_keys["[M.type]"] = icon_keys - magazine_icondata_states["[M.type]"] = ammo_states diff --git a/code/modules/projectiles/magazines/smartmag.dm b/code/modules/projectiles/magazines/smartmag.dm deleted file mode 100644 index 9b2f96e9682..00000000000 --- a/code/modules/projectiles/magazines/smartmag.dm +++ /dev/null @@ -1,226 +0,0 @@ -///////// Smart Mags ///////// - -/obj/item/ammo_magazine/smart - name = "smart magazine" - icon_state = "smartmag-empty" - desc = "A Hephaistos Industries brand Smart Magazine. It uses advanced matter manipulation technology to create bullets from energy. Simply present your loaded gun or magazine to the Smart Magazine." - multiple_sprites = 1 - max_ammo = 5 - mag_type = MAGAZINE - - caliber = null //Set later - ammo_type = null //Set later - initial_ammo = 0 //Ensure no problems with no ammo_type or caliber set - - can_remove_ammo = FALSE // Interferes with batteries - - var/production_time = 6 SECONDS // Delay in between bullets forming - var/last_production_time = 0 // Used in determining if we should make a new bullet - var/production_cost = null // Set when an ammo type is scanned in - var/production_modifier = 2 // Multiplier on the ammo_casing's matter cost - var/production_delay = 75 // If we're in a gun, how long since it last shot do we need to wait before making bullets? - - var/obj/item/gun/holding_gun = null // What gun are we in, if any? - - var/obj/item/cell/device/attached_cell = null // What cell are we using, if any? - - var/emagged = 0 // If you emag the smart mag, you can get the bullets out by clicking it - -/obj/item/ammo_magazine/smart/Initialize(mapload) - . = ..() - START_PROCESSING(SSobj, src) - -/obj/item/ammo_magazine/smart/Destroy() - STOP_PROCESSING(SSobj, src) - return ..() - -/obj/item/ammo_magazine/smart/process(delta_time) - if(!holding_gun) // Yes, this is awful, sorry. Don't know a better way to figure out if we've been moved into or out of a gun. - if(istype(src.loc, /obj/item/gun)) - holding_gun = src.loc - - if(caliber && ammo_type && attached_cell) - if(stored_ammo.len == max_ammo) - last_production_time = world.time // Otherwise the max_ammo var is basically always off by 1 - return - if(holding_gun && world.time < holding_gun.last_shot + production_delay) // Same as recharging energy weapons. - return - if(world.time > last_production_time + production_time) - last_production_time = world.time - produce() - -/obj/item/ammo_magazine/smart/examine(mob/user, dist) - . = ..() - - if(attached_cell) - . += "\The [src] is loaded with a [attached_cell.name]. It is [round(attached_cell.percent())]% charged." - else - . += "\The [src] does not appear to have a power source installed." - -/obj/item/ammo_magazine/smart/update_icon() - if(attached_cell) - icon_state = "smartmag-filled" - else - icon_state = "smartmag-empty" - -// Emagging lets you remove bullets from your bullet-making magazine -/obj/item/ammo_magazine/smart/emag_act(var/remaining_charges, var/mob/user) - if(!emagged) - to_chat(user, "You overload \the [src]'s security measures causing widespread destabilisation. It is likely you could empty \the [src] now.") - emagged = TRUE - can_remove_ammo = TRUE - return TRUE - return FALSE - -/obj/item/ammo_magazine/smart/attackby(var/obj/item/I as obj, mob/user) - if(istype(I, /obj/item/cell/device)) - if(attached_cell) - to_chat(user, "\The [src] already has a [attached_cell.name] attached.") - return - else - to_chat(user, "You begin inserting \the [I] into \the [src].") - if(do_after(user, 25)) - if(!user.attempt_insert_item_for_installation(I, src)) - return - attached_cell = I - user.visible_message("[user] installs a cell in \the [src].", "You install \the [I] into \the [src].") - update_icon() - return - - else if(I.is_screwdriver()) - if(attached_cell) - to_chat(user, "You begin removing \the [attached_cell] from \the [src].") - if(do_after(user, 10)) // Faster than doing it by hand - attached_cell.update_icon() - user.put_in_hands_or_drop(attached_cell) - attached_cell = null - user.visible_message("[user] removes a cell from \the [src].", "You remove \the [attached_cell] from \the [src].") - update_icon() - return - - else if(istype(I, /obj/item/ammo_magazine) || istype(I, /obj/item/ammo_casing)) - scan_ammo(I, user) - - ..() - -/obj/item/ammo_magazine/smart/afterattack(atom/target, mob/user, clickchain_flags, list/params) - if(src.loc == user) - scan_ammo(target, user) - ..() - -// You can remove the power cell from the magazine by hand, but it's way slower than using a screwdriver -/obj/item/ammo_magazine/smart/attack_hand(mob/user, list/params) - if(user.get_inactive_held_item() == src) - if(attached_cell) - to_chat(user, "You struggle to remove \the [attached_cell] from \the [src].") - if(do_after(user, 40)) - attached_cell.update_icon() - user.put_in_hands(attached_cell) - attached_cell = null - user.visible_message("[user] removes a cell from \the [src].", "You remove \the [attached_cell] from \the [src].") - update_icon() - return - ..() - -// Classic emp_act, just drains the battery -/obj/item/ammo_magazine/smart/emp_act(severity) - ..() - if(attached_cell) - attached_cell.emp_act(severity) - -// Finds the cell for the magazine, used by rechargers -/obj/item/ammo_magazine/smart/get_cell(inducer) - return attached_cell - -// Removes energy from the attached cell when creating new bullets -/obj/item/ammo_magazine/smart/proc/chargereduction() - return attached_cell && attached_cell.checked_use(production_cost) - -// Sets how much energy is drained to make each bullet -/obj/item/ammo_magazine/smart/proc/set_production_cost(var/obj/item/ammo_casing/A) - var/list/matters = ammo_repository.get_materials_from_object(A) - var/tempcost - for(var/key in matters) - var/value = matters[key] - tempcost += value * production_modifier - production_cost = tempcost - -// Scans a magazine or ammo casing and tells the smart mag to start making those, if it can -/obj/item/ammo_magazine/smart/proc/scan_ammo(atom/target, mob/user) - - var/new_caliber = caliber // Tracks what our new caliber will be - var/new_ammo_type = ammo_type // Tracks what our new ammo_type will be - - if(istype(target, /obj/item/ammo_magazine)) - var/obj/item/ammo_magazine/M = target - if(!new_caliber) - new_caliber = M.caliber // If caliber isn't set, set it now - - if(new_caliber && new_caliber != M.caliber) // If we still don't have a caliber, or if our caliber doesn't match the thing we're scanning, give up - return - else - new_ammo_type = M.ammo_type - - if(istype(target, /obj/item/ammo_casing)) - var/obj/item/ammo_casing/C = target - - if(!new_caliber) - new_caliber = C.caliber // If caliber isn't set, set it now - - if(new_caliber && new_caliber != C.caliber) // If we still don't have a caliber, or if our caliber doesn't match the thing we're scanning, give up - return - else - new_ammo_type = C.type - - var/change = FALSE // If we've changed caliber or ammo_type, display the built message. - var/msg = "You scan \the [target] with \the [src], copying \the [target]'s " - if(new_caliber != caliber) // This should never happen without the ammo_type switching too - change = TRUE - msg += "caliber and " - if(new_ammo_type != ammo_type) - change = TRUE - msg += "ammunition type." - - if(change) - to_chat(user, "[msg]") - caliber = new_caliber - ammo_type = new_ammo_type - set_production_cost(ammo_type) // Update our cost - - return - -// Actually makes the bullets -/obj/item/ammo_magazine/smart/proc/produce() - if(chargereduction()) - var/obj/item/ammo_casing/W = new ammo_type(src) - stored_ammo.Insert(1, W) //add to the head of the list - return 1 - return 0 - - -// This verb clears out the smart mag's copied data, but only if it's empty -/obj/item/ammo_magazine/smart/verb/clear_ammo_data() - set name = "Clear Ammo Data" - set category = VERB_CATEGORY_OBJECT - set src in usr - - if(!istype(src.loc, /mob/living)) // Needs to be in your hands to reset - return - - var/mob/living/carbon/human/H = usr - if(!istype(H)) - return - if(H.stat) - return - - if(LAZYLEN(stored_ammo)) - to_chat(usr, "You can't reset \the [src] unless it's empty!") - return - - to_chat(usr, "You clear \the [src]'s data buffers.") - - caliber = null - ammo_type = null - production_cost = null - - return diff --git a/code/modules/projectiles/magazines/unsorted.dm b/code/modules/projectiles/magazines/unsorted.dm deleted file mode 100644 index 12af5d2212d..00000000000 --- a/code/modules/projectiles/magazines/unsorted.dm +++ /dev/null @@ -1,1259 +0,0 @@ -/************************************************************************/ -/* -# An explaination of the naming format for guns and ammo: -# -# a = Ammo, as in individual rounds of ammunition. -# b = Box, intended to have ammo taken out one at a time by hand. Really obsolete. Don't use this. -# c = Clips, intended to reload magazines or guns quickly. -# m = Magazine, intended to hold rounds of ammo. -# s = Speedloaders, intended to reload guns quickly. -# -# Use this format, followed by the caliber. For example, a shotgun's caliber -# variable is "12g" as a result. Ergo, a shotgun round's path would have "a12g", -# or a magazine with shotgun shells would be "m12g" instead. To avoid confusion -# for developers and in-game admins spawning these items, stick to this format. -# Likewise, when creating new rounds, the caliber variable should match whatever -# the name says. -# -# This comment is copied in rounds.dm as well. -# -# Also, if a magazine is only meant for a specific gun, include the name -# of the specific gun in the path. Example: m45uzi is only for the Uzi. -*/ -/************************************************************************/ - - - -///////// .357 ///////// - -/obj/item/ammo_magazine/s357 - name = "speedloader (.357)" - desc = "A speedloader for .357 revolvers." - icon_state = "38" - caliber = ".357" - ammo_type = /obj/item/ammo_casing/a357 - materials_base = list(MAT_STEEL = 1260) - max_ammo = 6 - multiple_sprites = 1 - -/obj/item/ammo_magazine/s357/silver - name = "speedloader (.357 silver)" - icon_state = "ag_38" - ammo_type = /obj/item/ammo_casing/a357/silver - materials_base = list(MAT_STEEL = 2100, MAT_SILVER = 1200) - -///////// .38 ///////// - -/obj/item/ammo_magazine/s38 - name = "speedloader (.38)" - desc = "A speedloader for .38 revolvers." - icon_state = "38" - caliber = ".38" - materials_base = list(MAT_STEEL = 360) - ammo_type = /obj/item/ammo_casing/a38 - max_ammo = 6 - multiple_sprites = 1 - -/obj/item/ammo_magazine/s38/rubber - name = "speedloader (.38 rubber)" - icon_state = "T38" - ammo_type = /obj/item/ammo_casing/a38/rubber - -/obj/item/ammo_magazine/s38/emp - name = "speedloader (.38 haywire)" - ammo_type = /obj/item/ammo_casing/a38/emp - -/obj/item/ammo_magazine/s38/silver - name = "speedloader (.38 silver)" - icon_state = "ag_38" - ammo_type = /obj/item/ammo_casing/a38/silver - materials_base = list(MAT_STEEL = 780, MAT_SILVER = 600) - -///////// .45 ///////// - -/obj/item/ammo_magazine/m45 - name = "pistol magazine (.45)" - icon_state = "45" - mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/a45 - materials_base = list(MAT_STEEL = 525) //metal costs are very roughly based around 1 .45 casing = 75 metal - caliber = ".45" - max_ammo = 7 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m45/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m45/hunter - name = "magazine (.45 hunter)" - ammo_type = /obj/item/ammo_casing/a45/hunter - -/obj/item/ammo_magazine/m45/rubber - name = "magazine (.45 rubber)" - ammo_type = /obj/item/ammo_casing/a45/rubber - -/obj/item/ammo_magazine/m45/practice - name = "magazine (.45 practice)" - ammo_type = /obj/item/ammo_casing/a45/practice - -/obj/item/ammo_magazine/m45/flash - name = "magazine (.45 flash)" - ammo_type = /obj/item/ammo_casing/a45/flash - -/obj/item/ammo_magazine/m45/ap - name = "magazine (.45 AP)" - ammo_type = /obj/item/ammo_casing/a45/ap - -/obj/item/ammo_magazine/box/emp/b45 - name = "ammunition box (.45 haywire)" - ammo_type = /obj/item/ammo_casing/a45/emp - -/obj/item/ammo_magazine/m45uzi - name = "stick magazine (.45)" - icon_state = "uzi45" - mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/a45 - materials_base = list(MAT_STEEL = 1200) - caliber = ".45" - max_ammo = 16 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m45uzi/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m45uzi/wt274 - name = "double-stack magazine (.45)" - icon_state = "wt274" - mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/a45 - materials_base = list(MAT_STEEL = 2400) - caliber = ".45" - max_ammo = 32 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m45tommy - name = "Tommy Gun magazine (.45)" - icon_state = "tommy-mag" - mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/a45 - materials_base = list(MAT_STEEL = 1500) - caliber = ".45" - max_ammo = 20 - -/obj/item/ammo_magazine/m45tommy/ap - name = "Tommy Gun magazine (.45 AP)" - ammo_type = /obj/item/ammo_casing/a45/ap - -/obj/item/ammo_magazine/m45tommy/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m45tommydrum - name = "Tommy Gun drum magazine (.45)" - icon_state = "tommy-drum" - w_class = WEIGHT_CLASS_NORMAL // Bulky ammo doesn't fit in your pockets! - mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/a45 - materials_base = list(MAT_STEEL = 3750) - caliber = ".45" - max_ammo = 50 - -/obj/item/ammo_magazine/m45tommydrum/ap - name = "Tommy Gun drum magazine (.45 AP)" - ammo_type = /obj/item/ammo_casing/a45/ap - -/obj/item/ammo_magazine/m45tommydrum/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/clip/c45 - name = "ammo clip (.45)" - icon_state = "clip_pistol" - desc = "A stripper clip for reloading .45 rounds into magazines." - caliber = ".45" - ammo_type = /obj/item/ammo_casing/a45 - materials_base = list(MAT_STEEL = 675) // metal costs very roughly based around one .45 casing = 75 metal - max_ammo = 9 - multiple_sprites = 1 - -/obj/item/ammo_magazine/clip/c45/rubber - name = "ammo clip (.45 rubber)" - ammo_type = /obj/item/ammo_casing/a45/rubber - -/obj/item/ammo_magazine/clip/c45/hunter - name = "ammo clip (.45 hunter)" - ammo_type = /obj/item/ammo_casing/a45/hunter - -/obj/item/ammo_magazine/clip/c45/practice - name = "ammo clip (.45 practice)" - ammo_type = /obj/item/ammo_casing/a45/practice - -/obj/item/ammo_magazine/clip/c45/flash - name = "ammo clip (.45 flash)" - ammo_type = /obj/item/ammo_casing/a45/flash - -/obj/item/ammo_magazine/s45 - name = "speedloader (.45)" - icon_state = "45s" - ammo_type = /obj/item/ammo_casing/a45 - materials_base = list(MAT_STEEL = 525) //metal costs are very roughly based around 1 .45 casing = 75 metal - caliber = ".45" - max_ammo = 7 - multiple_sprites = 1 - -/obj/item/ammo_magazine/s45/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/s45/rubber - name = "speedloader (.45 rubber)" - ammo_type = /obj/item/ammo_casing/a45/rubber - -/obj/item/ammo_magazine/s45/practice - name = "speedloader (.45 practice)" - ammo_type = /obj/item/ammo_casing/a45/practice - -/obj/item/ammo_magazine/s45/flash - name = "speedloader (.45 flash)" - ammo_type = /obj/item/ammo_casing/a45/flash - -/obj/item/ammo_magazine/s45/ap - name = "speedloader (.45 AP)" - ammo_type = /obj/item/ammo_casing/a45/ap - -/obj/item/ammo_magazine/s45/silver - name = "speedloader (.45 silver)" - icon_state = "ag45s" - ammo_type = /obj/item/ammo_casing/a45/silver - materials_base = list(MAT_STEEL = 780, MAT_SILVER = 600) - -///////// 10x24mm Caseless ///////// - -/obj/item/ammo_magazine/m10x24mm - name = "debug magazine that shouldn't appear please report it if you do (10mm caseless)" - ammo_type = /obj/item/ammo_casing/a10x24mmcaseless - icon_state = "usmc-large" - caliber = "10mmCL" - w_class = WEIGHT_CLASS_NORMAL - materials_base = list(MAT_STEEL = 8500) - mag_type = MAGAZINE - max_ammo = 96 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m10x24mm/large - name = "magazine (large) (10mm caseless)" - icon_state = "usmc-large" - materials_base = list(MAT_STEEL = 8500) - max_ammo = 96 - -/obj/item/ammo_magazine/m10x24mm/large/hp - name = "magazine (large) (10mm caseless hollow-point)" - ammo_type = /obj/item/ammo_casing/a10x24mmcaseless/hp - icon_state = "usmc-large-hp" - -/obj/item/ammo_magazine/m10x24mm/large/ap - name = "magazine (large) (10mm caseless armor-piercing)" - ammo_type = /obj/item/ammo_casing/a10x24mmcaseless/ap - icon_state = "usmc-large-ap" - -/obj/item/ammo_magazine/m10x24mm/med - name = "magazine (medium) (10mm caseless)" - icon_state = "usmc-med" - materials_base = list(MAT_STEEL = 5500) - max_ammo = 64 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m10x24mm/med/hp - name = "magazine (medium) (10mm caseless hollow-point)" - ammo_type = /obj/item/ammo_casing/a10x24mmcaseless/hp - icon_state = "usmc-med-hp" - -/obj/item/ammo_magazine/m10x24mm/med/ap - name = "magazine (medium) (10mm caseless armor-piercing)" - ammo_type = /obj/item/ammo_casing/a10x24mmcaseless/ap - icon_state = "usmc-med-ap" - -/obj/item/ammo_magazine/m10x24mm/small - name = "magazine (small) (10mm caseless)" - icon_state = "usmc-small" - materials_base = list(MAT_STEEL = 2500) - max_ammo = 32 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m10x24mm/small/hp - name = "magazine (small) (10mm caseless hollow-point)" - ammo_type = /obj/item/ammo_casing/a10x24mmcaseless/hp - icon_state = "usmc-small-hp" - caliber = "10mmCL" - max_ammo = 32 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m10x24mm/small/ap - name = "magazine (small) (10mm caseless armor-piercing)" - ammo_type = /obj/item/ammo_casing/a10x24mmcaseless/ap - icon_state = "usmc-small-ap" - caliber = "10mmCL" - max_ammo = 32 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m10x24mm/small/snark - desc = "A magazine for some kind of gun. Taped on it is a reminder to \"watch those firing lanes\" and a drawing of a stickman wearing a helmet. The helmet has a hole in it. The stickman is dead." - -/obj/item/ammo_magazine/m10x24mm/small/hp/snark - desc = "A magazine for some kind of gun. Taped on it is a reminder to \"watch those firing lanes\" and a drawing of a stickman wearing a helmet. The helmet has a hole in it. The stickman is dead." - -/obj/item/ammo_magazine/m10x24mm/small/ap/snark - desc = "A magazine for some kind of gun. Taped on it is a reminder to \"watch those firing lanes\" and a drawing of a stickman wearing a helmet. The helmet has a hole in it. The stickman is dead." - -///////// 5mm Caseless ///////// - -/obj/item/ammo_magazine/m5mmcaseless - name = "prototype rifle magazine (5mm caseless)" - ammo_type = /obj/item/ammo_casing/a5mmcaseless - icon_state = "caseless-mag" - caliber = "5mm caseless" - mag_type = MAGAZINE - max_ammo = 30 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m5mmcaseless/stun - icon_state = "caseless-mag-alt" - ammo_type = /obj/item/ammo_casing/a5mmcaseless/stun - -/////// 12.7mm / 50 caliber caseless ///////// - -/obj/item/ammo_magazine/mfiftycalcaseless - name = "Wild Hunt magazine (12.7mm caseless)" - ammo_type = /obj/item/ammo_casing/fiftycalcaseless - icon_state = "caseless-127" - caliber = "12.7mm caseless" - mag_type = MAGAZINE - max_ammo = 20 - multiple_sprites = 1 - -/////// phoron shrapnel smg ////// - -/obj/item/ammo_magazine/mphoronshot - name = "compressed phoron matter container" - desc = "A compressed matter container meant for the Gorlex SHRAPNEL-SPITTER SMG. Contains a phoron alloy that self-oxidzes and ignites on contact with air. \n \nThey're in good shape for the shape they're in, \nbut God, I wonder how they think they can win, \nwith phoron rolling down their skin." - max_ammo = 40 - caliber = "phoron shrapnel" - mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/phoron_shrap - icon_state = "spitterammo" - multiple_sprites = 1 - -///////// 9mm ///////// - -/obj/item/ammo_magazine/m9mm - name = "magazine (9mm)" - icon_state = "9x19p_fullsize" - origin_tech = list(TECH_COMBAT = 2) - mag_type = MAGAZINE - materials_base = list(MAT_STEEL = 600) - caliber = "9mm" - ammo_type = /obj/item/ammo_casing/a9mm - max_ammo = 10 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m9mm/large - desc = "\"FOR LAW ENFORCEMENT/MILITARY USE ONLY\" is clearly etched on the magazine. This is probably illegal for you to have." // Remember, Security is not Law Enforcement, so it's illegal for Security to use as well. - icon_state = "9x19p_highcap" - max_ammo = 17 - origin_tech = list(TECH_COMBAT = 2, TECH_ILLEGAL = 1) - -/obj/item/ammo_magazine/m9mm/large/licensed // Sold by traders. - desc = "A large capacity magazine produced via a joint NT-Hephaestus license, making it legal to own." - -/obj/item/ammo_magazine/m9mm/large/licensed/hp // Hollow Point Version - name = "magazine (9mm hollow-point)" - ammo_type = /obj/item/ammo_casing/a9mm/hp - -/obj/item/ammo_magazine/m9mm/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m9mm/flash - name = "magazine (9mm flash)" - ammo_type = /obj/item/ammo_casing/a9mm/flash - -/obj/item/ammo_magazine/m9mm/rubber - name = "magazine (9mm rubber)" - ammo_type = /obj/item/ammo_casing/a9mm/rubber - -/obj/item/ammo_magazine/m9mm/practice - name = "magazine (9mm practice)" - ammo_type = /obj/item/ammo_casing/a9mm/practice - -// Compact -/obj/item/ammo_magazine/m9mm/compact - name = "compact magazine (9mm)" - icon_state = "9x19p" - origin_tech = list(TECH_COMBAT = 2) - mag_type = MAGAZINE - materials_base = list(MAT_STEEL = 480) - caliber = "9mm" - ammo_type = /obj/item/ammo_casing/a9mm - max_ammo = 8 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m9mm/compact/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m9mm/compact/flash - name = "compact magazine (9mm flash)" - ammo_type = /obj/item/ammo_casing/a9mm/flash - -/obj/item/ammo_magazine/m9mm/compact/rubber - name = "compact magazine (9mm rubber)" - ammo_type = /obj/item/ammo_casing/a9mm/rubber - -/obj/item/ammo_magazine/m9mm/compact/practice - name = "compact magazine (9mm practice)" - ammo_type = /obj/item/ammo_casing/a9mm/practice - -/obj/item/ammo_magazine/m9mm/compact/double - name = "compact magazine (9mm double stack)" - materials_base = list(MAT_STEEL = 900) - max_ammo = 16 - -// SMG -/obj/item/ammo_magazine/m9mmt - name = "top mounted magazine (9mm)" - icon_state = "9mmt" - mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/a9mm - materials_base = list(MAT_STEEL = 1200) - caliber = "9mm" - max_ammo = 20 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m9mmt/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m9mmt/hunter - name = "top mounted magazine (9mm hunter)" - ammo_type = /obj/item/ammo_casing/a9mm/hunter - -/obj/item/ammo_magazine/m9mmt/rubber - name = "top mounted magazine (9mm rubber)" - ammo_type = /obj/item/ammo_casing/a9mm/rubber - -/obj/item/ammo_magazine/m9mmt/flash - name = "top mounted magazine (9mm flash)" - ammo_type = /obj/item/ammo_casing/a9mm/flash - -/obj/item/ammo_magazine/m9mmt/practice - name = "top mounted magazine (9mm practice)" - ammo_type = /obj/item/ammo_casing/a9mm/practice - -/obj/item/ammo_magazine/clip/c9mm - name = "ammo clip (9mm)" - icon_state = "clip_pistol" - desc = "A stripper clip for reloading 9mm rounds into magazines." - caliber = "9mm" - ammo_type = /obj/item/ammo_casing/a9mm - materials_base = list(MAT_STEEL = 600) // metal costs are very roughly based around one 9mm casing = 60 metal - max_ammo = 10 - multiple_sprites = 1 - -/obj/item/ammo_magazine/clip/c9mm/hunter - name = "ammo clip (9mm hunter)" - ammo_type = /obj/item/ammo_casing/a9mm/hunter - -/obj/item/ammo_magazine/clip/c9mm/rubber - name = "ammo clip (9mm rubber)" - ammo_type = /obj/item/ammo_casing/a9mm/rubber - -/obj/item/ammo_magazine/clip/c9mm/practice - name = "ammo clip (9mm practice)" - ammo_type = /obj/item/ammo_casing/a9mm/practice - -/obj/item/ammo_magazine/clip/c9mm/flash - name = "ammo clip (9mm flash)" - ammo_type = /obj/item/ammo_casing/a9mm/flash - -/obj/item/ammo_magazine/clip/c9mm/silver - name = "ammo clip (9mm silver)" - ammo_type = /obj/item/ammo_casing/a9mm/silver - icon_state = "clip_pistol_ag" - materials_base = list(MAT_STEEL = 1300, MAT_SILVER = 1000) - -/obj/item/ammo_magazine/m9mmAdvanced - desc = "A very high capacity double stack magazine made specially for the Advanced SMG. Filled with 21 9mm bullets." - icon_state = "S9mm" - mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/a9mm - materials_base = list(MAT_STEEL = 1200) - caliber = "9mm" - max_ammo = 21 - origin_tech = list(TECH_COMBAT = 2, TECH_ILLEGAL = 1) - multiple_sprites = 1 - -/obj/item/ammo_magazine/m9mmAdvanced/ap - desc = "A high capacity double stack magazine made specially for the Advanced SMG. Filled with 21 9mm armor piercing bullets." - icon_state = "S9mm" - ammo_type = /obj/item/ammo_casing/a9mm/ap - materials_base = list(MAT_STEEL = 2000) - -/obj/item/ammo_magazine/m9mmR/saber/empty - initial_ammo = 0 - -/////// 5.7x28mm //////// -/obj/item/ammo_magazine/m57x28mm - name = "magazine (5.7x28mm)" - desc = "A durable top-loading magazine, designed for withstanding rough treatment." - icon_state = "ntles" - origin_tech = list(TECH_COMBAT = 2) - mag_type = MAGAZINE - materials_base = list(MAT_STEEL = 300, MAT_COPPER = 300) - caliber = "5.7x28mm" - ammo_type = /obj/item/ammo_casing/a57x28mm - max_ammo = 20 - multiple_sprites = 1 - -//NTLES - -/obj/item/ammo_magazine/m57x28mm/ntles/ - max_ammo = 30 - -/obj/item/ammo_magazine/m57x28mm/ntles/ap - name = "magazine (5.7x28mm armor piercing)" - ammo_mark = "ap" - ammo_type = /obj/item/ammo_casing/a57x28mm/ap - -/obj/item/ammo_magazine/m57x28mm/ntles/hp - name = "magazine (5.7x28mm hollow-point)" - ammo_mark = "hp" - ammo_type = /obj/item/ammo_casing/a57x28mm/hp - -/obj/item/ammo_magazine/m57x28mm/ntles/hunter - name = "magazine (5.7x28mm hunter)" - ammo_mark = "hunter" - ammo_type = /obj/item/ammo_casing/a57x28mm/hunter - -/obj/item/ammo_magazine/m57x28mm/ntles/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m57x28mm/ntles/highcap - name = "high capacity magazine (5.7x28mm)" - icon_state = "ntles_highcap" - max_ammo = 50 - origin_tech = list(TECH_COMBAT = 2, TECH_ILLEGAL = 1) - -/obj/item/ammo_magazine/m57x28mm/ntles/highcap/ap - name = "high capacity magazine (5.7x28mm armor piercing)" - ammo_mark = "ap" - ammo_type = /obj/item/ammo_casing/a57x28mm/ap -/obj/item/ammo_magazine/m57x28mm/ntles/highcap/hp - name = "high capacity magazine (5.7x28mm hollow-point)" - ammo_mark = "hp" - ammo_type = /obj/item/ammo_casing/a57x28mm/hp - -/obj/item/ammo_magazine/m57x28mm/ntles/highcap/hunter - name = "high capacity magazine (5.7x28mm hunter)" - ammo_mark = "hunter" - ammo_type = /obj/item/ammo_casing/a57x28mm/hunter - -/obj/item/ammo_magazine/m57x28mm/ntles/highcap/empty - initial_ammo = 0 - -//Harpy SMG - -/obj/item/ammo_magazine/m57x28mm/smg - name = "NT-SMG-8 magazine (5.7x28mm)" - desc = "A compact double stack aluminum magazine." - icon_state = "combatsmg" - max_ammo = 40 - -/obj/item/ammo_magazine/m57x28mm/smg/ap - name = "NT-SMG-8 magazine (5.7x28mm armor piercing)" - ammo_mark = "cmbtsmg_ap" - ammo_type = /obj/item/ammo_casing/a57x28mm/ap - -//Fiveseven mags -/obj/item/ammo_magazine/m57x28mm/fiveseven - name = "fiveseven magazine (5.7x28mm)" - desc = "A sturdy double stack magazine with a reinforced spring, designed for withstanding rough treatment." - icon_state = "fiveseven" - origin_tech = list(TECH_COMBAT = 2) - mag_type = MAGAZINE - materials_base = list(MAT_STEEL = 300, MAT_COPPER = 300) - caliber = "5.7x28mm" - ammo_type = /obj/item/ammo_casing/a57x28mm - max_ammo = 20 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap - name = "magazine (5.7x28mm armor piercing)" - ammo_mark = "ap" - ammo_type = /obj/item/ammo_casing/a57x28mm/ap - -/obj/item/ammo_magazine/m57x28mm/fiveseven/hp - name = "magazine (5.7x28mm hollow-point)" - ammo_mark = "hp" - ammo_type = /obj/item/ammo_casing/a57x28mm/hp - -/obj/item/ammo_magazine/m57x28mm/fiveseven/hunter - name = "magazine (5.7x28mm hunter)" - ammo_mark = "hunter" - ammo_type = /obj/item/ammo_casing/a57x28mm/hunter - -/obj/item/ammo_magazine/m57x28mm/fiveseven/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m57x28mm/fiveseven/highcap - name = "high capacity fiveseven magazine (5.7x28mm)" - desc = "A sturdy, extra long double stack magazine with a reinforced spring, designed for withstanding rough treatment." - icon_state = "fiveseven_highcap" - max_ammo = 30 - origin_tech = list(TECH_COMBAT = 2, TECH_ILLEGAL = 1) - -/obj/item/ammo_magazine/m57x28mm/fiveseven/highcap/ap - name = "high capacity magazine (5.7x28mm armor piercing)" - ammo_mark = "ap" - ammo_type = /obj/item/ammo_casing/a57x28mm/ap -/obj/item/ammo_magazine/m57x28mm/fiveseven/highcap/hp - name = "high capacity magazine (5.7x28mm hollow-point)" - ammo_mark = "hp" - ammo_type = /obj/item/ammo_casing/a57x28mm/hp - -/obj/item/ammo_magazine/m57x28mm/fiveseven/highcap/hunter - name = "high capacity magazine (5.7x28mm hunter)" - ammo_mark = "hunter" - ammo_type = /obj/item/ammo_casing/a57x28mm/hunter - -/obj/item/ammo_magazine/m57x28mm/fiveseven/highcap/empty - initial_ammo = 0 - -//p90 -/obj/item/ammo_magazine/m57x28mmp90 - name = "high capacity top mounted magazine (5.7x28mm armor-piercing)" - icon_state = "p90" - mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/a57x28mm/ap - materials_base = list(MAT_STEEL = 1500, MAT_COPPER = 1500) - caliber = "5.7x28mm" - max_ammo = 50 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m57x28mmp90/hunter - name = "high capacity top mounted magazine (5.7x28mm hunter)" - ammo_type = /obj/item/ammo_casing/a57x28mm/hunter - -/obj/item/ammo_magazine/m57x28mmp90/empty - initial_ammo = 0 - -///////// 10mm ///////// - -/obj/item/ammo_magazine/m10mm - name = "magazine (10mm)" - icon_state = "10mm" - origin_tech = list(TECH_COMBAT = 2) - mag_type = MAGAZINE - caliber = "10mm" - materials_base = list(MAT_STEEL = 1500) - ammo_type = /obj/item/ammo_casing/a10mm - max_ammo = 20 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m10mm/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/clip/c10mm - name = "ammo clip (10mm)" - icon_state = "clip_pistol" - desc = "A stripper clip for reloading 5mm rounds into magazines." - caliber = "10mm" - ammo_type = /obj/item/ammo_casing/a10mm - materials_base = list(MAT_STEEL = 675) // metal costs are very roughly based around one 10mm casing = 75 metal - max_ammo = 9 - multiple_sprites = 1 - -/obj/item/ammo_magazine/box/emp/b10 - name = "ammunition box (10mm haywire)" - ammo_type = /obj/item/ammo_casing/a10mm/emp - -///////// 5.56mm ///////// - -/obj/item/ammo_magazine/m556 - name = "magazine (5.56mm)" - icon_state = "m556" - origin_tech = list(TECH_COMBAT = 2) - mag_type = MAGAZINE - caliber = "5.56mm" - materials_base = list(MAT_STEEL = 1800) - ammo_type = /obj/item/ammo_casing/a556 - max_ammo = 20 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m556/ext - name = "extended magazine (5.56mm)" - materials_base = list(MAT_STEEL = 2700) - max_ammo = 30 - -/obj/item/ammo_magazine/m556/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m556/ext/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m556/practice - name = "magazine (5.56mm practice)" - ammo_type = /obj/item/ammo_casing/a556/practice - -/obj/item/ammo_magazine/m556/practice/ext - name = "extended magazine (5.56mm practice)" - max_ammo = 30 - -/obj/item/ammo_magazine/m556/ap - name = "magazine (5.56mm armor-piercing)" - ammo_type = /obj/item/ammo_casing/a556/ap - -/obj/item/ammo_magazine/m556/ap/ext - name = "extended magazine (5.56mm armor-piercing)" - max_ammo = 30 - -/obj/item/ammo_magazine/m556/hunter - name = "magazine (5.56mm hunting)" - ammo_type = /obj/item/ammo_casing/a556/hunter - -/obj/item/ammo_magazine/m556/hunter/ext - name = "extended magazine (5.56mm hunting)" - max_ammo = 30 - -/obj/item/ammo_magazine/m556/small - name = "reduced magazine (5.56mm)" - icon_state = "m556-small" - materials_base = list(MAT_STEEL = 900) - max_ammo = 10 - -/obj/item/ammo_magazine/m556/small/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m556/small/practice - name = "magazine (5.56mm practice)" - ammo_type = /obj/item/ammo_casing/a556/practice - -/obj/item/ammo_magazine/m556/small/ap - name = "magazine (5.56mm armor-piercing)" - ammo_type = /obj/item/ammo_casing/a556/ap - -/obj/item/ammo_magazine/m556/small/hunter - name = "magazine (5.56mm hunting)" - ammo_type = /obj/item/ammo_casing/a556/hunter - -/obj/item/ammo_magazine/clip/c545 - name = "ammo clip (5.56mm)" - icon_state = "clip_rifle" - caliber = "5.56mm" - ammo_type = /obj/item/ammo_casing/a556 - materials_base = list(MAT_STEEL = 450) // metal costs are very roughly based around one 10mm casing = 180 metal - max_ammo = 5 - multiple_sprites = 1 - -/obj/item/ammo_magazine/clip/c545/ap - name = "rifle clip (5.56mm armor-piercing)" - ammo_type = /obj/item/ammo_casing/a556/ap - -/obj/item/ammo_magazine/clip/c545/hunter - name = "rifle clip (5.56mm hunting)" - ammo_type = /obj/item/ammo_casing/a556/hunter - -/obj/item/ammo_magazine/clip/c545/practice - name = "rifle clip (5.56mm practice)" - ammo_type = /obj/item/ammo_casing/a556 - -/obj/item/ammo_magazine/m556saw - name = "magazine box (5.56mm)" - icon_state = "a556" - origin_tech = list(TECH_COMBAT = 2) - mag_type = MAGAZINE - caliber = "5.56mm" - materials_base = list(MAT_STEEL = 10000) - ammo_type = /obj/item/ammo_casing/a556 - w_class = WEIGHT_CLASS_NORMAL // This should NOT fit in your pocket!! - max_ammo = 50 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m556saw/ap - name = "magazine box (5.56mm armor-piercing)" - ammo_type = /obj/item/ammo_casing/a556/ap - -/obj/item/ammo_magazine/m556saw/hunter - name = "magazine box (5.56mm hunting)" - ammo_type = /obj/item/ammo_casing/a556/hunter - -/obj/item/ammo_magazine/m556saw/empty - initial_ammo = 0 - -///////// .44 Magnum ///////// - -/obj/item/ammo_magazine/m44 - name = "magazine (.44)" - icon_state = "m44" - origin_tech = list(TECH_COMBAT = 2) - mag_type = MAGAZINE - caliber = ".44" - materials_base = list(MAT_STEEL = 1260) - ammo_type = /obj/item/ammo_casing/a44 - max_ammo = 7 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m44/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/clip/c44 - name = "ammo clip (.44)" - icon_state = "clip_pistol" - desc = "A stripper clip for reloading .44 rounds into magazines." - caliber = ".44" - ammo_type = /obj/item/ammo_casing/a44 - materials_base = list(MAT_STEEL = 1620) // metal costs are very roughly based around one .50 casing = 180 metal - max_ammo = 9 - multiple_sprites = 1 - -/obj/item/ammo_magazine/s44 - name = "speedloader (.44)" - icon_state = "44" - icon = 'icons/obj/ammo.dmi' - ammo_type = /obj/item/ammo_casing/a44 - materials_base = list(MAT_STEEL = 1260) //metal costs are very roughly based around 1 .45 casing = 75 metal - caliber = ".44" - max_ammo = 6 - multiple_sprites = 1 - -/obj/item/ammo_magazine/s44/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/s44/rubber - name = "speedloader (.44 rubber)" - icon_state = "R44" - ammo_type = /obj/item/ammo_casing/a44/rubber - -/obj/item/ammo_magazine/s44/silver - name = "speedloader (.44 silver)" - icon_state = "ag44" - ammo_type = /obj/item/ammo_casing/a44/silver - materials_base = list(MAT_STEEL = 2100, MAT_SILVER = 1200) - -///////// 7.62mm ///////// - -/obj/item/ammo_magazine/m762 - name = "magazine (7.62mm)" - icon_state = "m762-small" - mag_type = MAGAZINE - caliber = "7.62mm" - materials_base = list(MAT_STEEL = 2000) - ammo_type = /obj/item/ammo_casing/a762 - max_ammo = 10 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m762/ap - name = "magazine (7.62mm armor-piercing)" - ammo_type = /obj/item/ammo_casing/a762/ap - -/obj/item/ammo_magazine/m762/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m762m // Intentionally not a subtype of m762 because it's supposed to be incompatible with the Z8 Bulldog rifle. - name = "magazine (7.62mm)" - icon_state = "m762" - mag_type = MAGAZINE - caliber = "7.62mm" - materials_base = list(MAT_STEEL = 4000) - ammo_type = /obj/item/ammo_casing/a762 - max_ammo = 20 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m762m/ap - name = "magazine (7.62mm armor-piercing)" - ammo_type = /obj/item/ammo_casing/a762/ap - -/obj/item/ammo_magazine/m762m/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m762garand - name = "garand clip (7.62mm)" // The clip goes into the magazine, hence the name. I'm very sure this is correct. - icon_state = "gclip" - mag_type = MAGAZINE - caliber = "7.62mm" - materials_base = list(MAT_STEEL = 1600) - ammo_type = /obj/item/ammo_casing/a762 - max_ammo = 8 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m762garand/ap - name = "garand clip (7.62mm armor-piercing)" - ammo_type = /obj/item/ammo_casing/a762/ap - -/obj/item/ammo_magazine/m762garand/hunter - name = "garand clip (7.62mm Hunting)" - ammo_type = /obj/item/ammo_casing/a762/hunter - -/obj/item/ammo_magazine/m762garand/sniperhunter - name = "garand clip (7.62mm HV Hunting)" - ammo_type = /obj/item/ammo_casing/a762/sniperhunter - -/obj/item/ammo_magazine/m762/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/clip/c762 - name = "ammo clip (7.62mm)" - icon_state = "clip_rifle" - caliber = "7.62mm" - ammo_type = /obj/item/ammo_casing/a762 - materials_base = list(MAT_STEEL = 1000) // metal costs are very roughly based around one 7.62 casing = 200 metal - max_ammo = 5 - multiple_sprites = 1 - -/obj/item/ammo_magazine/clip/c762/ap - name = "rifle clip (7.62mm armor-piercing)" - ammo_type = /obj/item/ammo_casing/a762/ap - -/obj/item/ammo_magazine/clip/c762/practice - name = "rifle clip (7.62mm practice)" - ammo_type = /obj/item/ammo_casing/a762/practice - -/obj/item/ammo_magazine/clip/c762/hunter - name = "rifle clip (7.62mm hunting)" - ammo_type = /obj/item/ammo_casing/a762/hunter - -/obj/item/ammo_magazine/clip/c762/sniper - name = "rifle clip (7.62mm HV)" - ammo_type = /obj/item/ammo_casing/a762/sniper - -/obj/item/ammo_magazine/clip/c762/sniperhunter - name = "rifle clip (7.62mm HV hunting)" - ammo_type = /obj/item/ammo_casing/a762/sniperhunter - -/obj/item/ammo_magazine/clip/c762/silver - name = "rifle clip (7.62mm silver)" - icon_state = "agclip_rifle" - ammo_type = /obj/item/ammo_casing/a762/silver - materials_base = list(MAT_STEEL = 1500, MAT_SILVER = 750) - -/obj/item/ammo_magazine/m762svd - name = "\improper SVD magazine (7.62mm)" - icon_state = "SVD" - mag_type = MAGAZINE - caliber = "7.62mm" - materials_base = list(MAT_STEEL = 2000) - ammo_type = /obj/item/ammo_casing/a762 - max_ammo = 10 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m762svd/ap - name = "\improper SVD magazine (7.62mm armor-piercing)" - ammo_type = /obj/item/ammo_casing/a762/ap - -/obj/item/ammo_magazine/m762svd/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m762_mg42 - name = "antique ammo drum (7.62mm)" - icon_state = "mg42_drum" - origin_tech = list(TECH_COMBAT = 2) - mag_type = MAGAZINE - caliber = "7.62mm" - materials_base = list(MAT_STEEL = 10000) - ammo_type = /obj/item/ammo_casing/a762 - w_class = WEIGHT_CLASS_NORMAL - max_ammo = 50 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m762_mg42/ap - name = "antique ammo drum box (7.62mm armor-piercing)" - ammo_type = /obj/item/ammo_casing/a762/ap - -/obj/item/ammo_magazine/m762_mg42/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m762_m60 - name = "M60 belt (7.62mm)" - icon_state = "M60MAG" - mag_type = MAGAZINE - caliber = "7.62mm" - materials_base = list(MAT_STEEL = 20000) - ammo_type = /obj/item/ammo_casing/a762 - max_ammo = 75 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m762_m60/empty - initial_ammo = 0 - -///////// 12g ///////// - -/obj/item/ammo_magazine/m12gdrum - name = "magazine (12 gauge)" - icon_state = "ashot-mag" - mag_type = MAGAZINE - caliber = "12g" - materials_base = list(MAT_STEEL = 13000) - ammo_type = /obj/item/ammo_casing/a12g - max_ammo = 24 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m12gdrum/beanbag - name = "magazine (12 gauge beanbag)" - ammo_type = /obj/item/ammo_casing/a12g/beanbag - -/obj/item/ammo_magazine/m12gdrum/pellet - name = "magazine (12 gauge pellet)" - ammo_type = /obj/item/ammo_casing/a12g/pellet - -/obj/item/ammo_magazine/m12gdrum/flare - name = "magazine (12 gauge flash)" - ammo_type = /obj/item/ammo_casing/a12g/flare - -/obj/item/ammo_magazine/m12gdrum/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/clip/c12g - name = "ammo clip (12g slug)" - icon_state = "12gclipslug" // Still a placeholder sprite. Feel free to make a better one. - desc = "A color-coded metal clip for holding and quickly loading shotgun shells. This one is loaded with slugs." - caliber = "12g" - ammo_type = /obj/item/ammo_casing/a12g - materials_base = list(MAT_STEEL = 1070) // slugs shells x2 + 350 metal for the clip itself. - max_ammo = 2 - multiple_sprites = 1 - -/obj/item/ammo_magazine/clip/c12g/pellet - name = "ammo clip (12g buckshot)" - icon_state = "12gclipshell" - desc = "A color-coded metal clip for holding and quickly loading shotgun shells. This one is loaded with buckshot." - ammo_type = /obj/item/ammo_casing/a12g/pellet - materials_base = list(MAT_STEEL = 1070) // buckshot and slugs cost the same - -/obj/item/ammo_magazine/clip/c12g/beanbag - name = "ammo clip (12g beanbag)" - icon_state = "12gclipbean" - desc = "A color-coded metal clip for holding and quickly loading shotgun shells. This one is loaded with beanbags." - ammo_type = /obj/item/ammo_casing/a12g/beanbag - materials_base = list(MAT_STEEL = 710) //beanbags x2 + 350 metal - -/obj/item/ammo_magazine/clip/c12g/silver - name = "ammo clip (12g buckshot)" - icon_state = "12gclipag" - desc = "A color-coded metal clip for holding and quickly loading shotgun shells. This one is loaded with silver buckshot." - ammo_type = /obj/item/ammo_casing/a12g/silver - materials_base = list(MAT_STEEL = 1070, MAT_SILVER = 480) - -/obj/item/ammo_magazine/holyshot_mag - name = "blessed drum magazine (12 gauge)" - icon_state = "holyshotgun_mag" - desc = "Thrice-blessed, this drum magazine is loaded with silver shot designed to combat supernatural threats." - mag_type = MAGAZINE - caliber = "12g" - materials_base = list(MAT_STEEL = 100, MAT_SILVER = 1100) - ammo_type = /obj/item/ammo_casing/a12g/silver - max_ammo = 12 - -/obj/item/ammo_magazine/holyshot_mag/stake - name = "blessed drum magazine (stakes)" - desc = "Thrice-blessed, this drum magazine is loaded with wooden stakes soaked in sacred oils." - ammo_type = /obj/item/ammo_casing/a12g/stake - -///////// .75 Gyrojet ///////// - -/obj/item/ammo_magazine/m75 - name = "magazine (.75 Gyrojet)" - icon_state = "m75" - mag_type = MAGAZINE - caliber = ".75" - ammo_type = /obj/item/ammo_casing/a75 - multiple_sprites = 1 - max_ammo = 8 - -/obj/item/ammo_magazine/m75/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m75/sickle - name = "sickle magazine (.75 Gyrojet)" - icon_state = "m75sickle" - max_ammo = 30 - -/obj/item/ammo_magazine/m75/pistol - icon_state = "m75pistol" - max_ammo = 10 - -/obj/item/ammo_magazine/m75/box - name = "box magazine (.75 Gyrojet)" - icon_state = "a75box" - max_ammo = 50 - -///////// Misc. ///////// - -/obj/item/ammo_magazine/caps - name = "speedloader (caps)" - icon_state = "T38" - caliber = "caps" - color = "#FF0000" - ammo_type = /obj/item/ammo_casing/cap - materials_base = list(MAT_STEEL = 600) - max_ammo = 7 - multiple_sprites = 1 - -/obj/item/ammo_magazine/mcompressedbio - name = "magazine (Compressed Biomatter)" - desc = "An advanced matter compression unit, used to feed biomass into a Rapid On-board Fabricator. Accepts biomass globules." - icon_state = "bio" - mag_type = MAGAZINE - caliber = "organic" - ammo_type = /obj/item/ammo_casing/organic - materials_base = list("flesh" = 1000) - max_ammo = 10 - multiple_sprites = 1 - -/obj/item/ammo_magazine/pellets - name = "box of pellets" - desc = "A box containing small pellets for a pellet gun." - icon_state = "pelletbox" - caliber = "pellet" - mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/p_pellet - materials_base = list(MAT_PLASTIC = 600) - max_ammo = 50 - multiple_sprites = 1 - -/obj/item/ammo_magazine/mcompressedbio/compact - max_ammo = 10 - -/obj/item/ammo_magazine/mcompressedbio/large - icon_state = "bio_large" - max_ammo = 30 - multiple_sprites = 1 - -/obj/item/ammo_magazine/mcompressedbio/large/banana - icon_state = "bio_large_banana" - -/obj/item/ammo_magazine/biovial - name = "bio-vial (Liquid Wax)" - desc = "Biological Munitions Vials, commonly referred to as bio-vials, contain liquid biomatter of some form, for use in exotic weapons systems. This one accepts wax globules." - icon_state = "bio_vial" - mag_type = MAGAZINE - caliber = "apidean" - ammo_type = /obj/item/ammo_casing/organic/wax - materials_base = list("wax" = 1000) - max_ammo = 10 - multiple_sprites = 1 - -//Foam -/obj/item/ammo_magazine/mfoam - name = "abstract toy magazine" - desc = "You shouldn't be seeing this, contact a Maintainer!" - icon_state = "toy_pistol" - mag_type = MAGAZINE - materials_base = list(MAT_PLASTIC = 480) - caliber = "foamdart" - ammo_type = /obj/item/ammo_casing/foam - max_ammo = 8 - multiple_sprites = 1 - -//Foam Pistol -/obj/item/ammo_magazine/mfoam/pistol - name = "toy pistol magazine" - desc = "A plastic pistol magazine for foam darts!" - -/obj/item/ammo_magazine/mfoam/pistol/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/mfoam/pistol/riot - name = "toy pistol magazine (riot)" - ammo_type = /obj/item/ammo_casing/foam/riot - -//Foam c20r -/obj/item/ammo_magazine/mfoam/c20 - name = "toy c20r magazine" - desc = "A plastic recreation of the classic c20r submachine gun." - icon_state = "toy_c20" - materials_base = list(MAT_PLASTIC = 1500) - max_ammo = 20 - -/obj/item/ammo_magazine/mfoam/c20/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/mfoam/c20/riot - name = "toy c20r magazine (riot)" - ammo_type = /obj/item/ammo_casing/foam/riot - -//Foam LMG -/obj/item/ammo_magazine/mfoam/lmg - name = "toy magazine box" - desc = "A heavy plastic box designed to hold belts of foam darts! Wow!" - icon_state = "toy_lmg" - materials_base = list(MAT_PLASTIC = 10000) - w_class = WEIGHT_CLASS_NORMAL - max_ammo = 50 - -/obj/item/ammo_magazine/mfoam/lmg/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/mfoam/lmg/riot - name = "toy magazine box (riot)" - ammo_type = /obj/item/ammo_casing/foam/riot - -//Foam SMGs -/obj/item/ammo_magazine/mfoam/smg - name = "toy submachine gun magazine" - desc = "A plastic recreation of a double-stack submachine gun magazine." - icon_state = "toy_smg" - materials_base = list(MAT_PLASTIC = 1200) - max_ammo = 20 - -/obj/item/ammo_magazine/mfoam/smg/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/mfoam/smg/riot - name = "toy submachine gun magazine (riot)" - ammo_type = /obj/item/ammo_casing/foam/riot - -//shell holders - -/obj/item/ammo_magazine/shotholder - name = "shotgun slug holder" - desc = "A convenient pouch that holds 12 gauge shells." - icon_state = "shotholder" - caliber = "12g" - ammo_type = null - materials_base = list(MAT_STEEL = 1440) - ammo_type = /obj/item/ammo_casing/a12g - initial_ammo = 0 - max_ammo = 4 - multiple_sprites = 1 - var/marking_color - -/obj/item/ammo_magazine/shotholder/update_icon() - . = ..() - overlays.Cut() - if(marking_color) - var/image/I = image(icon, "shotholder-marking") - I.color = marking_color - overlays += I - -/obj/item/ammo_magazine/shotholder/full - initial_ammo = 4 - -/obj/item/ammo_magazine/shotholder/full/slug - name = "shotgun slug holder (slug)" - marking_color = PIPE_COLOR_BLACK - ammo_type = /obj/item/ammo_casing/a12g - -/obj/item/ammo_magazine/shotholder/full/flare - name = "shotgun slug holder (flare)" - marking_color = COLOR_RED_GRAY - ammo_type = /obj/item/ammo_casing/a12g/flare - -/obj/item/ammo_magazine/shotholder/full/buckshot - name = "shotgun slug holder (buckshot)" - marking_color = COLOR_RED - ammo_type = /obj/item/ammo_casing/a12g/pellet - -/obj/item/ammo_magazine/shotholder/full/beanbag - name = "shotgun slug holder (beanbag)" - marking_color = COLOR_GREEN - ammo_type = /obj/item/ammo_casing/a12g/beanbag - -/obj/item/ammo_magazine/shotholder/full/stun - name = "shotgun slug holder (stun)" - marking_color = PIPE_COLOR_YELLOW - ammo_type = /obj/item/ammo_casing/a12g/stunshell - - diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 19d02f16283..c6d6b9ef896 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -325,7 +325,7 @@ SA_bonus_damage = 35 // 50 total on animals. SA_vulnerability = MOB_CLASS_ANIMAL -/obj/projectile/bullet/rifle/a127 // 14.5×114mm is bigger than a .50 BMG round. +/obj/projectile/bullet/rifle/a12_7mm // 14.5×114mm is bigger than a .50 BMG round. fire_sound = 'sound/weapons/Gunshot_cannon.ogg' // This is literally an anti-tank rifle caliber. It better sound like a fucking cannon. damage = 80 stun = 3 diff --git a/code/modules/projectiles/unsorted/magnetic.dm b/code/modules/projectiles/unsorted/magnetic.dm index fb3cecc666e..2da277715f0 100644 --- a/code/modules/projectiles/unsorted/magnetic.dm +++ b/code/modules/projectiles/unsorted/magnetic.dm @@ -1,13 +1,14 @@ /obj/item/magnetic_ammo name = "flechette magazine" desc = "A magazine containing steel flechettes." - icon = 'icons/obj/ammo.dmi' - icon_state = "5.56" + + icon = 'icons/modules/projectiles/magazines/old_magazine_stick.dmi' + icon_state = "svtmag-1" + w_class = WEIGHT_CLASS_SMALL materials_base = list(MAT_STEEL = 1800) origin_tech = list(TECH_COMBAT = 1) var/remaining = 9 - preserve_item = 1 /obj/item/magnetic_ammo/examine(mob/user, dist) . = ..() diff --git a/code/modules/random_map/drop/drop_types.dm b/code/modules/random_map/drop/drop_types.dm index 0b7db3ee822..9bd0d665fd5 100644 --- a/code/modules/random_map/drop/drop_types.dm +++ b/code/modules/random_map/drop/drop_types.dm @@ -62,10 +62,10 @@ var/global/list/datum/supply_drop_loot/supply_drop /obj/item/storage/box/emps, /obj/item/storage/box/flashbangs, /obj/item/gun/ballistic/automatic/sts35, - /obj/item/ammo_magazine/m762/ap, - /obj/item/ammo_magazine/m762/ap, + /obj/item/ammo_magazine/a7_62mm/ap, + /obj/item/ammo_magazine/a7_62mm/ap, /obj/item/gun/ballistic/colt, - /obj/item/ammo_magazine/m45, + /obj/item/ammo_magazine/a45, /obj/item/material/knife/tacknife/combatknife) /datum/supply_drop_loot/heavy_warfare @@ -83,8 +83,8 @@ var/global/list/datum/supply_drop_loot/supply_drop /obj/item/clothing/accessory/storage/black_drop_pouches, /obj/item/storage/backpack/dufflebag/sec, /obj/item/gun/ballistic/automatic/bullpup, - /obj/item/ammo_magazine/m762/ap, - /obj/item/ammo_magazine/m762, + /obj/item/ammo_magazine/a7_62mm/ap, + /obj/item/ammo_magazine/a7_62mm, /obj/item/shield/energy, /obj/item/grenade/explosive/frag, /obj/item/grenade/explosive/frag, diff --git a/code/modules/research/designs/medical.dm b/code/modules/research/designs/medical.dm index 31ba401b0a4..44babf4b377 100644 --- a/code/modules/research/designs/medical.dm +++ b/code/modules/research/designs/medical.dm @@ -133,7 +133,7 @@ id = "cell_medigun_mag_advanced" req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 4, TECH_BIO = 7) materials_base = list(MAT_STEEL = 5000, MAT_PLASTIC = 10000, MAT_GLASS = 5000, MAT_SILVER = 1500, MAT_GOLD = 1500, MAT_DIAMOND = 5000) - build_path = /obj/item/ammo_magazine/cell_mag/medical/advanced + build_path = /obj/item/ammo_magazine/microbattery/medical/advanced /datum/design/science/medigun_cell abstract_type = /datum/design/science/medigun_cell diff --git a/code/modules/research/designs/weapons.dm b/code/modules/research/designs/weapons.dm index dc0a9de724b..350c6ea1ae3 100644 --- a/code/modules/research/designs/weapons.dm +++ b/code/modules/research/designs/weapons.dm @@ -92,7 +92,7 @@ desc = "A 21 round magazine for an advanced 9mm SMG." req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3) materials_base = list(MAT_STEEL = 3750, MAT_SILVER = 100) // Requires silver for proprietary magazines! Or something. - build_path = /obj/item/ammo_magazine/m9mmAdvanced + build_path = /obj/item/ammo_magazine/a9mm/advanced_smg /datum/design/science/weapon/ballistic/ammo/techshell design_name = "unloaded tech shell" @@ -116,7 +116,7 @@ id = "m57x28mmp90" req_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 4) materials_base = list(MAT_STEEL = 2250, MAT_PLASTIC = 1500, MAT_COPPER = 1000) - build_path = /obj/item/ammo_magazine/m57x28mmp90 + build_path = /obj/item/ammo_magazine/a5_7mm/p90 /datum/design/science/weapon/ballistic/ammo/m57x28mm abstract_type = /datum/design/science/weapon/ballistic/ammo/m57x28mm @@ -127,28 +127,28 @@ id = "ntles" req_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 4) materials_base = list(MAT_STEEL = 1500, MAT_COPPER = 750) - build_path = /obj/item/ammo_magazine/m57x28mm/ntles + build_path = /obj/item/ammo_magazine/a5_7mm/nt_les /datum/design/science/weapon/ballistic/ammo/m57x28mm/ntles/ap design_name = "5.7 top-mounted magazine (AP)" desc = "A standard capacity sidearm magazine (5.7x28mm armor-piercing)." id = "ntlesap" materials_base = list(MAT_STEEL = 1500, MAT_COPPER = 1000) - build_path = /obj/item/ammo_magazine/m57x28mm/ntles/ap + build_path = /obj/item/ammo_magazine/a5_7mm/nt_les/ap /datum/design/science/weapon/ballistic/ammo/m57x28mm/ntles/hp design_name = "5.7 top-mounted magazine (HP)" desc = "A standard capacity sidearm magazine (5.7x28mm hollow point)." id = "ntleshp" materials_base = list(MAT_STEEL = 1500, MAT_COPPER = 750) - build_path = /obj/item/ammo_magazine/m57x28mm/ntles/hp + build_path = /obj/item/ammo_magazine/a5_7mm/nt_les/hp /datum/design/science/weapon/ballistic/ammo/m57x28mm/ntles/hunter design_name = "5.7 top-mounted magazine (Hunter)" desc = "A standard capacity sidearm magazine (5.7x28mm hunter)." id = "ntleshunter" materials_base = list(MAT_STEEL = 1500, MAT_COPPER = 500) - build_path = /obj/item/ammo_magazine/m57x28mm/ntles/hunter + build_path = /obj/item/ammo_magazine/a5_7mm/nt_les/hunter /datum/design/science/weapon/ballistic/ammo/m57x28mm/ntles/highcap design_name = "5.7 highcap top-mounted magazine" @@ -156,28 +156,28 @@ id = "ntleshc" req_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 4) materials_base = list(MAT_STEEL = 2500, MAT_COPPER = 2000) - build_path = /obj/item/ammo_magazine/m57x28mm/ntles/highcap + build_path = /obj/item/ammo_magazine/a5_7mm/nt_les/highcap /datum/design/science/weapon/ballistic/ammo/m57x28mm/ntles/highcap/ap design_name = "5.7 highcap top-mounted magazine (AP)" desc = "A high capacity sidearm magazine (5.7x28mm armor-piercing)." id = "ntleshcap" materials_base = list(MAT_STEEL = 2500, MAT_COPPER = 2500) - build_path = /obj/item/ammo_magazine/m57x28mm/ntles/highcap/ap + build_path = /obj/item/ammo_magazine/a5_7mm/nt_les/highcap/ap /datum/design/science/weapon/ballistic/ammo/m57x28mm/ntles/highcap/hp design_name = "5.7 highcap top-mounted magazine (HP)" desc = "A high capacity sidearm magazine (5.7x28mm hollow point)." id = "ntleshchp" materials_base = list(MAT_STEEL = 2500, MAT_COPPER = 2000) - build_path = /obj/item/ammo_magazine/m57x28mm/ntles/highcap/hp + build_path = /obj/item/ammo_magazine/a5_7mm/nt_les/highcap/hp /datum/design/science/weapon/ballistic/ammo/m57x28mm/ntles/highcap/hunter design_name = "5.7 highcap top-mounted magazine (Hunter)" desc = "A high capacity sidearm magazine (5.7x28mm hunter)." id = "ntleshchunter" materials_base = list(MAT_STEEL = 2500, MAT_COPPER = 1750) - build_path = /obj/item/ammo_magazine/m57x28mm/ntles/highcap/hunter + build_path = /obj/item/ammo_magazine/a5_7mm/nt_les/highcap/hunter /datum/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven design_name = "5.7 sidearm magazine" @@ -185,28 +185,28 @@ id = "fiveseven" req_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 4) materials_base = list(MAT_STEEL = 1250, MAT_COPPER = 750) - build_path = /obj/item/ammo_magazine/m57x28mm/fiveseven + build_path = /obj/item/ammo_magazine/a5_7mm/five_seven /datum/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven/ap design_name = "5.7 sidearm magazine (AP)" desc = "A standard capacity sidearm magazine (5.7x28mm armor-piercing)." id = "fivesevenap" materials_base = list(MAT_STEEL = 1250, MAT_COPPER = 1000) - build_path = /obj/item/ammo_magazine/m57x28mm/fiveseven/ap + build_path = /obj/item/ammo_magazine/a5_7mm/five_seven/ap /datum/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven/hp design_name = "5.7 sidearm magazine (HP)" desc = "A standard capacity sidearm magazine (5.7x28mm hollow point)." id = "fivesevenhp" materials_base = list(MAT_STEEL = 1250, MAT_COPPER = 750) - build_path = /obj/item/ammo_magazine/m57x28mm/fiveseven/hp + build_path = /obj/item/ammo_magazine/a5_7mm/five_seven/hp /datum/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven/hunter design_name = "5.7 sidearm magazine (Hunter)" desc = "A standard capacity sidearm magazine (5.7x28mm hunter)." id = "fivesevenhunter" materials_base = list(MAT_STEEL = 1250, MAT_COPPER = 250) - build_path = /obj/item/ammo_magazine/m57x28mm/fiveseven/hunter + build_path = /obj/item/ammo_magazine/a5_7mm/five_seven/hunter /datum/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven/highcap design_name = "5.7 sidearm high-cap magazine" @@ -214,28 +214,28 @@ id = "fivesevenhc" req_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 4) materials_base = list(MAT_STEEL = 2000, MAT_COPPER = 750) - build_path = /obj/item/ammo_magazine/m57x28mm/fiveseven/highcap + build_path = /obj/item/ammo_magazine/a5_7mm/five_seven/highcap /datum/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven/highcap/ap design_name = "5.7 sidearm high-cap magazine (AP)" desc = "A high capacity sidearm magazine (5.7x28mm armor-piercing)." id = "fivesevenhcap" materials_base = list(MAT_STEEL = 2500, MAT_COPPER = 1000) - build_path = /obj/item/ammo_magazine/m57x28mm/fiveseven/highcap/ap + build_path = /obj/item/ammo_magazine/a5_7mm/five_seven/highcap/ap /datum/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven/highcap/hp design_name = "5.7 sidearm high-cap magazine (HP)" desc = "A high capacity sidearm magazine (5.7x28mm hollow point)." id = "fivesevenhchp" materials_base = list(MAT_STEEL = 2000, MAT_COPPER = 750) - build_path = /obj/item/ammo_magazine/m57x28mm/fiveseven/highcap/hp + build_path = /obj/item/ammo_magazine/a5_7mm/five_seven/highcap/hp /datum/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven/highcap/hunter design_name = "5.7 sidearm high-cap magazine (Hunter)" desc = "A high capacity sidearm magazine (5.7x28mm hunter)." id = "fivesevenhchunter" materials_base = list(MAT_STEEL = 2000, MAT_COPPER = 500) - build_path = /obj/item/ammo_magazine/m57x28mm/fiveseven/highcap/hunter + build_path = /obj/item/ammo_magazine/a5_7mm/five_seven/highcap/hunter /datum/design/science/weapon/phase abstract_type = /datum/design/science/weapon/phase @@ -306,7 +306,7 @@ id = "dartgun_ammo_s" req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_MAGNET = 1, TECH_ILLEGAL = 1) materials_base = list(MAT_STEEL = 50, MAT_GOLD = 30, MAT_SILVER = 30, MAT_GLASS = 50) - build_path = /obj/item/ammo_casing/chemdart/small + build_path = /obj/item/ammo_casing/dart/chemdart/small /datum/design/science/weapon/ammo/dartgunmag_med id = "dartgun_mag_m" @@ -318,7 +318,7 @@ id = "dartgun_ammo_m" req_tech = list(TECH_COMBAT = 7, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_MAGNET = 1, TECH_ILLEGAL = 1) materials_base = list(MAT_STEEL = 80, MAT_GOLD = 40, MAT_SILVER = 40, MAT_GLASS = 60) - build_path = /obj/item/ammo_casing/chemdart + build_path = /obj/item/ammo_casing/dart/chemdart /datum/design/science/weapon/melee abstract_type = /datum/design/science/weapon/melee @@ -411,14 +411,14 @@ id = "nsfw_prototype" req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_POWER = 4, TECH_COMBAT = 7) materials_base = list(MAT_STEEL = 10000, MAT_GLASS = 6000, MAT_PHORON = 8000, MAT_URANIUM = 4000) - build_path = /obj/item/gun/ballistic/cell_loaded/combat/prototype + build_path = /obj/item/gun/ballistic/microbattery/combat/prototype /datum/design/science/weapon/cell_based/prototype_nsfw_mag design_name = "combat cell magazine" id = "nsfw_mag_prototype" req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_POWER = 4, TECH_COMBAT = 7) materials_base = list(MAT_STEEL = 8000, MAT_GLASS = 4000, MAT_PHORON = 4000) - build_path = /obj/item/ammo_magazine/cell_mag/combat/prototype + build_path = /obj/item/ammo_magazine/microbattery/combat/prototype /datum/design/science/nsfw_cell abstract_type = /datum/design/science/nsfw_cell diff --git a/code/modules/vore/fluffstuff/custom_boxes.dm b/code/modules/vore/fluffstuff/custom_boxes.dm index 58d18f6cf71..2d22f778eda 100644 --- a/code/modules/vore/fluffstuff/custom_boxes.dm +++ b/code/modules/vore/fluffstuff/custom_boxes.dm @@ -6,7 +6,7 @@ name = "Undefined Fluff Box" desc = "This should have a description. Tell an admin." max_items = 7 - + // END - DO NOT EDIT PROTOTYPE @@ -175,8 +175,8 @@ name = "Sebastian's Lumoco Arms P3 Box" starts_with = list( /obj/item/gun/ballistic/pistol, - /obj/item/ammo_magazine/m9mm/compact/flash, - /obj/item/ammo_magazine/m9mm/compact/flash, + /obj/item/ammo_magazine/a9mm/compact/flash, + /obj/item/ammo_magazine/a9mm/compact/flash, /obj/item/clothing/accessory/permit/gun/fluff/sebastian_aji) /* diff --git a/code/modules/vore/fluffstuff/custom_guns.dm b/code/modules/vore/fluffstuff/custom_guns.dm deleted file mode 100644 index c63aab7a164..00000000000 --- a/code/modules/vore/fluffstuff/custom_guns.dm +++ /dev/null @@ -1,879 +0,0 @@ -/* TUTORIAL - "icon" is the file with the HUD/ground icon for the item - "icon_state" is the iconstate in this file for the item - "icon_override" is the file with the on-mob icons, can be the same file - "item_state" is the iconstate for the on-mob icons: - item_state_s is used for worn uniforms on mobs - item_state_r and item_state_l are for being held in each hand - - "item_state_slots" can replace "item_state", it is a list: - item_state_slots["slotname1"] = "item state for that slot" - item_state_slots["slotname2"] = "item state for that slot" - - on guns, in particular: - item_state being null makes it look for exactly the icon_state in the on-mob file, - including any 0,75,etc appended from the energy bar setting - item_state being present prevents different mode sprites, sadly, but you may - be able to override this on the gun itself with a proc -*/ - -/* TEMPLATE -//ckey:Character Name -/obj/item/gun/type/fluff/charactername - name = "" - desc = "" - - icon = 'icons/vore/custom_guns_vr.dmi' - icon_state = "myicon" - - icon_override = 'icons/vore/custom_guns_vr.dmi' - item_state = "myicon" - -*/ - - -//////////////////////////////////////////////////////////// -//////////////////// Projectile Weapons //////////////////// -//////////////////////////////////////////////////////////// -// For general use -/obj/item/gun/ballistic/automatic/battlerifle - name = "\improper JSDF service rifle" - desc = "You had your chance to be afraid before you joined my beloved Corps! But, to guide you back to the true path, I have brought this motivational device! Uses 9.5x40mm rounds." - icon_state = "battlerifle" - icon_override = 'icons/obj/gun/ballistic.dmi' - item_state = "battlerifle_i" - item_icons = null - w_class = WEIGHT_CLASS_BULKY - recoil = 2 // The battlerifle was known for its nasty recoil. - max_shells = 36 - caliber = "9.5x40mm" - origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2) - magazine_type = /obj/item/ammo_magazine/m95 - allowed_magazines = list(/obj/item/ammo_magazine/m95) - fire_sound = 'sound/weapons/battlerifle.ogg' - load_method = MAGAZINE - slot_flags = SLOT_BACK - one_handed_penalty = 60 // The weapon itself is heavy - -/obj/item/gun/ballistic/automatic/battlerifle/update_icon() - . = ..() - update_held_icon() - -/obj/item/gun/ballistic/automatic/battlerifle/update_icon_state() - . = ..() - if(istype(ammo_magazine,/obj/item/ammo_magazine/m95)) - icon_state = "battlerifle" - else - icon_state = (ammo_magazine)? "battlerifle" : "battlerifle_empty" - -// For general use -/obj/item/gun/ballistic/shotgun/pump/JSDF - name = "\improper JSDF tactical shotgun" - desc = "All you greenhorns who wanted to see Xenomorphs up close... this is your lucky day. Uses 12g rounds." - icon_state = "haloshotgun" - icon_override = 'icons/obj/gun/ballistic.dmi' - item_state = "haloshotgun_i" - item_icons = null - ammo_type = /obj/item/ammo_casing/a12g - max_shells = 12 - -// For general use -/obj/item/gun/ballistic/automatic/pdw - name = "personal defense weapon" - desc = "The X-9MM is a select-fire personal defense weapon designed in-house by Xing Private Security. It was made to compete with the WT550 Saber, but never caught on with Nanotrasen. Uses 9mm rounds." - icon_state = "pdw" - item_state = "c20r" // Placeholder - w_class = WEIGHT_CLASS_NORMAL - caliber = "9mm" - origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2) - slot_flags = SLOT_BELT - load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m9mml - allowed_magazines = list(/obj/item/ammo_magazine/m9mm, /obj/item/ammo_magazine/m9mml) - - firemodes = list( - list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), - list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=6, burst_accuracy=list(0,-15,-30), dispersion=list(0.0, 0.6, 0.6)) - ) - -/obj/item/gun/ballistic/automatic/pdw/update_icon() - . = ..() - update_held_icon() - -/obj/item/gun/ballistic/automatic/pdw/update_icon_state() - . = ..() - if(istype(ammo_magazine,/obj/item/ammo_magazine/m9mm)) - icon_state = "pdw-short" - else - icon_state = (ammo_magazine)? "pdw" : "pdw-empty" - -// For general use -/obj/item/gun/energy/imperial - name = "imperial energy pistol" - desc = "An elegant weapon developed by the Imperium Auream. Their weaponsmiths have cleverly found a way to make a gun that is only about the size of an average energy pistol, yet with the fire power of a laser carbine." - icon_state = "ge_pistol" - item_state = "ge_pistol" - fire_sound = 'sound/weapons/mandalorian.ogg' - item_icons = list(SLOT_ID_RIGHT_HAND = 'icons/obj/gun/energy.dmi', SLOT_ID_LEFT_HAND = 'icons/obj/gun/energy.dmi') // WORK YOU FUCKING CUNT PIECE OF SHIT BASTARD STUPID BITCH ITEM ICON AAAAHHHH - item_state_slots = list(SLOT_ID_RIGHT_HAND = "ge_pistol_r", SLOT_ID_LEFT_HAND = "ge_pistol_l") - slot_flags = SLOT_BELT - w_class = WEIGHT_CLASS_NORMAL - damage_force = 10 - origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2) - materials_base = list(MAT_STEEL = 2000) - projectile_type = /obj/projectile/beam/imperial -/* CITADEL CHANGE - Removes Virgo Fluff -// jertheace : Jeremiah 'Ace' Acacius -/obj/item/gun/ballistic/shotgun/pump/USDF/fluff/ace - name = "Ace's tactical shotgun" // D-model holds half as many shells as the normal version so as not OP as shit. Better than normal shotgun, worse than combat shotgun. - desc = "Owned by the respected (or feared?) veteran Captain of the original NSS Adephagia. Inscribed on the barrel are the words \"Speak softly, and carry a big stick.\"" - ammo_type = /obj/item/ammo_casing/a12g/stunshell - max_shells = 6 - -// bwoincognito:Tasald Corlethian -/obj/item/gun/ballistic/revolver/mateba/fluff/tasald_corlethian //Now that it is actually Single-Action and not hacky broken SA, I see no reason to nerf this down to .38. --Joan Risu - name = "\improper \"Big Iron\" revolver" - desc = "A .357 revolver for veteran rangers on the planet Orta. The right side of the handle has a logo for Quarion industries, and the left is the Rangers. The primary ammo for this gun is .357 rubber. According to the CentCom Chief of Security, this revolver was more controversial than it needed to be." - icon = 'icons/vore/custom_guns_vr.dmi' - icon_state = "tasaldrevolver" - item_state = "revolver" - fire_sound = 'sound/weapons/pistol.ogg' - ammo_type = /obj/item/ammo_casing/a357/rubber //Like I said, no reason to nerf. --Joan Risu - var/recentpump = 0 - var/cocksound = 'sound/weapons/revolvercock.ogg' - consume_next_projectile() - if(chambered) - return chambered.BB - to_chat(usr, "It's a single action revolver, pull the hammer back!") - return null - attack_self(mob/living/user as mob) - if(world.time >= recentpump + 10) - pump(user) - recentpump = world.time - proc/pump(mob/M as mob) - playsound(M, cocksound, 60, 1) - if(chambered)//We have a shell in the chamber - chambered.loc = get_turf(src)//Eject casing - chambered = null - if(loaded.len) - var/obj/item/ammo_casing/AC = loaded[1] //load next casing. - loaded -= AC //Remove casing from loaded list. - chambered = AC - update_icon() - -/obj/item/gun/ballistic/revolver/mateba/fluff/tasald_corlethian/attack_hand(mob/user, list/params) - if(user.get_inactive_held_item() == src) - unload_ammo(user, allow_dump = 1) - else - ..() - -// wankersonofjerkin : Glenn Pink -/obj/item/gun/ballistic/revolver/fluff/admiral_pink_revolver - name = "Admiral Pink's 'Devilgun'" - desc = "You notice the serial number on the revolver is 666. The word 'Sin' is engraved on the blood-red rosewood grip. Uses .357 rounds." //Edgy, but based on real guns the player owns. - icon = 'icons/vore/custom_guns_vr.dmi' - icon_state = "ryan_winz" - item_state = "revolver" - -/obj/item/gun/ballistic/revolver/fluff/admiral_pink_revolver/redemption - name = "Admiral Pink's 'Redeemer'" - desc = "You notice the serial number on the revolver is 667. The word 'Redemption' is engraved on dark rosewood grip. Uses .357 rounds." //Edgy, but based on real guns the player owns. - -// sasoperative : Joseph Skinner -/obj/item/gun/ballistic/revolver/judge/fluff/sasoperative - name = "\"The Jury\"" - desc = "A customized variant of the \"The Judge\" revolver sold by Cybersun Industries, built specifically for Joseph Skinner. Uses 12g shells." - icon = 'icons/vore/custom_guns_vr.dmi' - icon_state = "jury" - item_state = "gun" - ammo_type = /obj/item/ammo_casing/a12g/beanbag - -// Dhaeleena : Dhaeleena M'iar -/obj/item/gun/ballistic/revolver/mateba/fluff/dhael - name = "Dhaeleena's engraved mateba" - desc = "This unique looking handgun is engraved with roses along the barrel and the cylinder as well as the initials DM under the grip. Along the middle of the barrel an engraving shows the words 'Mateba Unica 6'. Uses .357 rounds." - icon_state = "mateba" - origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) - ammo_type = /obj/item/ammo_casing/a357/stun - -// SilencedMP5A5 : Serdykov Antoz -/obj/item/gun/ballistic/colt/fluff/serdy - name = "Raikov PPS/45" - desc = "An expertly crafted and reliable .45 sidearm with a 7 round single-stack magazine, originally built and in 2369 for frontier men and peacekeepers. The frame and slide are nickel plated, and it has a synthetic black ivory grip. The words 'Krasnaya Raketa' are engraved on the slide near the muzzle. It's relatively thin, but heavy. It also has an ambidextrous mag release and safety lever, making it grippable in either hand comfortably." - icon = 'icons/vore/custom_guns_vr.dmi' - item_state = "raikov" - icon_state = "raikov" - fire_sound = 'sound/weapons/45pistol_vr.ogg' - magazine_type = /obj/item/ammo_magazine/m45/rubber - -/* //Commented out due to weapon change. -/obj/item/gun/ballistic/revolver/detective/fluff/serdy //This forces it to be .38 bullets only - name = "Vintage S&W Model 10" - desc = "It's a classic S&W Model 10 revolver. This one in particular is beautifully restored with a chromed black frame and cylinder, and a nice redwood grip. The name 'Serdykov A.' is engraved into the base of the grip." - icon = 'icons/vore/custom_guns_vr.dmi' - item_state = "model10" - icon_state = "model10" - fire_sound = 'sound/weapons/deagle.ogg' - origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) - ammo_type = /obj/item/ammo_casing/a38r //Rubber rounds. -*/ - -// LuminescentRing : Briana Moore -/obj/item/gun/ballistic/derringer/fluff/briana - name = "second-hand derringer" - desc = "It's a palm sized gun. One of the few things that won't break an angel's wrists. Uses 10mm rounds." - caliber = "10mm" - ammo_type = /obj/item/ammo_casing/a10mm -END OF CITADEL CHANGES */ -// For general use -/obj/item/gun/ballistic/automatic/stg - name = "\improper Sturmgewehr" - desc = "An STG-560 built by RauMauser. Experience the terror of the Siegfried line, redone for the 26th century! The Kaiser would be proud. Uses unique 7.92x33mm Kurz rounds." - icon_state = "stg60" - item_state = "arifle" - w_class = WEIGHT_CLASS_BULKY - max_shells = 30 - caliber = "7.92x33mm" - origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2, TECH_ILLEGAL = 6) - magazine_type = /obj/item/ammo_magazine/mtg - allowed_magazines = list(/obj/item/ammo_magazine/mtg) - load_method = MAGAZINE - -/obj/item/gun/ballistic/automatic/stg/update_icon() - . = ..() - update_held_icon() - -/obj/item/gun/ballistic/automatic/stg/update_icon_state() - . = ..() - icon_state = (ammo_magazine)? "stg60" : "stg60-e" - item_state = (ammo_magazine)? "arifle" : "arifle-e" - -//-----------------------Tranq Gun---------------------------------- -/obj/item/gun/ballistic/dartgun/tranq - name = "tranquilizer gun" - desc = "A gas-powered dart gun designed by the National Armory of Gaia. This gun is used primarily by United Federation special forces for Tactical Espionage missions. Don't forget your bandana." - icon_state = "tranqgun" - item_state = null - - caliber = "dart" - fire_sound = 'sound/weapons/empty.ogg' - fire_sound_text = "a metallic click" - recoil = 0 - silenced = 1 - load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/chemdart - allowed_magazines = list(/obj/item/ammo_magazine/chemdart) - auto_eject = 0 - -// Removed because gun64_vr.dmi guns don't work. -/*//-----------------------UF-ARC---------------------------------- -/obj/item/gun/ballistic/automatic/carbine/fluff/ufarc - name = "UF-ARC" - desc = "The UF-ARC is a lightweight assault rifle manufactured by the National Armory of Gaia and sold almost exclusively to the United Federation's standing army, the Military Assault Command Operations Department (MACOs)." - icon = 'icons/obj/gun64_vr.dmi' - icon_state = "ufarc" - icon_override = 'icons/obj/gun_vr.dmi' - item_state = "battlerifle_i" - item_icons = null - pixel_x = -16 - -/obj/item/gun/ballistic/automatic/carbine/fluff/ufarc/update_icon(var/ignore_inhands) - ..() - // TODO - Fix this for spriting different size magazines - icon_state = (ammo_magazine)? "ufarc" : "ufarc-empty" - item_state = (ammo_magazine)? "bullpup" : "bullpup-empty" - if(!ignore_inhands) update_held_icon() - - - -//-----------------------G44---------------------------------- -/obj/item/gun/ballistic/automatic/carbine/fluff/g44 - name = "G44 Rifle" - desc = "The G44 is a lightweight assault rifle manufactured by the National Armory of Gaia and sold almost exclusively to the United Federation's standing army, the Military Assault Command Operations Department (MACOs)." - icon = 'icons/obj/gun64_vr.dmi' - icon_state = "g44" - item_state = "bullpup" - pixel_x = -16 - -/obj/item/gun/ballistic/automatic/carbine/fluff/g44/update_icon(var/ignore_inhands) - ..() - // TODO - Fix this for spriting different size magazines - icon_state = (ammo_magazine)? "g44" : "g44-empty" - item_state = (ammo_magazine)? "bullpup" : "bullpup-empty" - if(!ignore_inhands) update_held_icon() - -//-----------------------G44 Energy Variant-------------------- -/obj/item/gun/energy/gun/burst/g44e - name = "G44 Energy Rifle" - desc = "The G44 Energy is a laser variant of the G44 lightweight assault rifle manufactured by the National Armory of Gaia. Though almost exclusively to the United Federation's Military Assault Command Operations Department (MACOs) and Starfleet, it is occassionally sold to security departments for their stun capabilities." - icon = 'icons/obj/gun64_vr.dmi' - icon_state = "g44estun100" - item_state = "energystun100" //This is temporary. - fire_sound = 'sound/weapons/Taser.ogg' - charge_cost = 100 - damage_force = 8 - w_class = WEIGHT_CLASS_BULKY - fire_delay = 6 - pixel_x = -16 - - projectile_type = /obj/projectile/beam/stun/weak - origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2, TECH_ILLEGAL = 3) - modifystate = "g44estun" - - one_handed_penalty = 60 - - firemodes = list( - list(mode_name="stun", burst=1, projectile_type=/obj/projectile/beam/stun/weak, modifystate="g44estun", fire_sound='sound/weapons/Taser.ogg', charge_cost = 100), - list(mode_name="stun burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/projectile/beam/stun/weak, modifystate="g44estun", fire_sound='sound/weapons/Taser.ogg'), - list(mode_name="lethal", burst=1, projectile_type=/obj/projectile/beam/burstlaser, modifystate="g44ekill", fire_sound='sound/weapons/Laser.ogg', charge_cost = 200), - list(mode_name="lethal burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/projectile/beam/burstlaser, modifystate="g44ekill", fire_sound='sound/weapons/Laser.ogg'), - )*/ - -/* CITADEL CHANGE - Removes Virgo Fluff -// molenar:Kari Akiren -/obj/item/gun/ballistic/shotgun/pump/rifle/fluff/kari_akiren - name = "clockwork rifle" - desc = "Brass, copper, and lots of gears. Well lubricated for fluid movement as each round is loaded, locked, and fired. Just like clockwork." - icon = 'icons/vore/custom_guns_vr.dmi' - icon_state = "clockworkrifle_icon" - icon_override = 'icons/vore/custom_guns_vr.dmi' - item_state = "clockworkrifle" - item_icons = null - -/* Permit Expired -//Razerwing:Archer Maximus -/obj/item/gun/ballistic/colt/fluff/archercolt - name = "\improper MEUSOC .45" - desc = "Some serious drywall work, coming up!" -*/ -//hzdonut:Jesse Soemmer -/obj/item/gun/ballistic/revolver/fluff/jesselemat - name = "Modified LeMat" - desc = "The LeMat Revolver is a 9 shot revolver with a secondary firing barrel for loading shotgun shells. Uses .38-Special and 12g rounds depending on the barrel. This one appears to have had it's secondary barrel sealed off and looks to be in pristine condition. Either it's brand new, or its owner takes very good care of it." - icon_state = "lemat" - max_shells = 9 - caliber = ".38" - ammo_type = /obj/item/ammo_casing/a38 - preserve_item = FALSE -END OF CITADEL CHANGES */ -//////////////////// Energy Weapons //////////////////// - -// ------------ Energy Luger ------------ -/obj/item/gun/energy/gun/eluger - name = "energy Luger" - desc = "The finest sidearm produced by RauMauser. Although its battery cannot be removed, its ergonomic design makes it easy to shoot, allowing for rapid follow-up shots. It also has the ability to toggle between stun and kill." - icon_state = "elugerstun100" - item_state = "gun" - fire_delay = null // Lugers are quite comfortable to shoot, thus allowing for more controlled follow-up shots. Rate of fire similar to a laser carbine. - battery_lock = 1 // In exchange for balance, you cannot remove the battery. Also there's no sprite for that and I fucking suck at sprites. -Ace - origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2, TECH_ILLEGAL = 2) - modifystate = "elugerstun" - fire_sound = 'sound/weapons/Taser.ogg' - firemodes = list( - list(mode_name="stun", charge_cost=120,projectile_type=/obj/projectile/beam/stun, modifystate="elugerstun", fire_sound='sound/weapons/Taser.ogg'), - list(mode_name="lethal", charge_cost=240,projectile_type=/obj/projectile/beam/eluger, modifystate="elugerkill", fire_sound='sound/weapons/eluger.ogg'), - ) - -//////////////////// Eris Ported Guns //////////////////// -//HoS Gun -/*/obj/item/gun/ballistic/lamia - name = "FS HG .44 \"Lamia\"" - desc = "Uses .44 rounds." - icon = 'icons/obj/gun_vr.dmi' - icon_state = "Headdeagle" - item_state = "revolver" - fire_sound = 'sound/weapons/Gunshot.ogg' - caliber = ".44" - magazine_type = /obj/item/ammo_magazine/m44/rubber - allowed_magazines = list(/obj/item/ammo_magazine/m44,/obj/item/ammo_magazine/m44/rubber) - load_method = MAGAZINE - auto_eject = 1 - auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg' - origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 4) - -/obj/item/gun/ballistic/lamia/update_icon() - cut_overlay() - if(!ammo_magazine) - return - var/ratio = ammo_magazine.stored_ammo.len * 100 / ammo_magazine.max_ammo - ratio = round(ratio, 33) - add_overlay("deagle_[ratio]")*/ // Fugly. - - -//Civilian gun -/obj/item/gun/ballistic/giskard - name = "\improper \"Giskard\" holdout pistol" - desc = "The FS HG .380 \"Giskard\" can even fit into the pocket! Uses .380 rounds." - icon_state = "giskardcivil" - caliber = ".380" - magazine_type = /obj/item/ammo_magazine/m380 - allowed_magazines = list(/obj/item/ammo_magazine/m380) - load_method = MAGAZINE - w_class = WEIGHT_CLASS_SMALL - fire_sound = 'sound/weapons/gunshot_pathetic.ogg' - origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 3) - -/obj/item/gun/ballistic/giskard/update_icon_state() - . = ..() - if(ammo_magazine && ammo_magazine.stored_ammo.len) - icon_state = "giskardcivil" - else - icon_state = "giskardcivil_empty" - -//Not so civilian gun -/obj/item/gun/ballistic/giskard/olivaw - name = "\improper \"Olivaw\" holdout burst-pistol" - desc = "The FS HG .380 \"Olivaw\" is a more advanced version of the \"Giskard\". This one seems to have a two-round burst-fire mode. Uses .380 rounds." - icon_state = "olivawcivil" - firemodes = list( - list(mode_name="semiauto", burst=1, fire_delay=1.2, move_delay=null, burst_accuracy=null, dispersion=null), - list(mode_name="2-round bursts", burst=2, fire_delay=0.2, move_delay=4, burst_accuracy=list(0,-15), dispersion=list(1.2, 1.8)), - ) - -/obj/item/gun/ballistic/giskard/olivaw/update_icon_state() - . = ..() - if(ammo_magazine && ammo_magazine.stored_ammo.len) - icon_state = "olivawcivil" - else - icon_state = "olivawcivil_empty" - -//Detective gun -/obj/item/gun/ballistic/revolver/consul - name = "\improper \"Consul\" Revolver" - desc = "Are you feeling lucky, punk? Uses .44 rounds." - icon_state = "inspector" - item_state = "revolver" - caliber = ".44" - ammo_type = /obj/item/ammo_casing/a44/rubber - handle_casings = CYCLE_CASINGS - origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3) - -/obj/item/gun/ballistic/revolver/consul/update_overlays() - . = ..() - if(loaded.len==0) - . += "inspector_off" - else - . += "inspector_on" - -// No idea what this is for. -/obj/item/gun/ballistic/automatic/sol - name = "\improper \"Sol\" SMG" - desc = "The FS 9x19mm \"Sol\" is a compact and reliable submachine gun. Uses 9mm rounds." - icon_state = "SMG-IS" - item_state = "wt550" - w_class = WEIGHT_CLASS_BULKY - slot_flags = SLOT_BELT - caliber = "9mm" - magazine_type = /obj/item/ammo_magazine/m9mm - allowed_magazines = list(/obj/item/ammo_magazine/m9mm) - load_method = MAGAZINE - multi_aim = 1 - burst_delay = 2 - origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2) - firemodes = list( - list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), - list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-15,-15), dispersion=list(0.0, 0.6, 1.0)), - ) - -/obj/item/gun/ballistic/automatic/sol/proc/update_charge() - if(!ammo_magazine) - return - var/ratio = ammo_magazine.stored_ammo.len / ammo_magazine.max_ammo - if(ratio < 0.25 && ratio != 0) - ratio = 0.25 - ratio = round(ratio, 0.25) * 100 - add_overlay("smg_[ratio]") - -/obj/item/gun/ballistic/automatic/sol/update_icon() - icon_state = (ammo_magazine)? "SMG-IS" : "SMG-IS-empty" - cut_overlay() - update_charge() - -//HoP gun -/obj/item/gun/energy/gun/martin - name = "holdout energy gun" - desc = "The FS PDW E \"Martin\" is small holdout e-gun. Don't miss!" - icon_state = "PDW" - item_state = "gun" - w_class = WEIGHT_CLASS_SMALL - projectile_type = /obj/projectile/beam/stun - charge_cost = 1200 - charge_meter = 0 - modifystate = null - battery_lock = 1 - fire_sound = 'sound/weapons/Taser.ogg' - origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2) - firemodes = list( - list(mode_name="stun", projectile_type=/obj/projectile/beam/stun, fire_sound='sound/weapons/Taser.ogg', charge_cost = 600), - list(mode_name="lethal", projectile_type=/obj/projectile/beam, fire_sound='sound/weapons/Laser.ogg', charge_cost = 1200), - ) - -/obj/item/gun/energy/gun/martin/update_overlays() - . = ..() - var/datum/firemode/current_mode = firemodes[sel_mode] - switch(current_mode.name) - if("stun") - . += "taser_pdw" - if("lethal") - . += "lazer_pdw" - -///////////////////////////////////////////////////// -//////////////////// Custom Ammo //////////////////// -///////////////////////////////////////////////////// -//---------------- Beams ---------------- -/obj/projectile/beam/eluger - name = "laser beam" - icon_state = "xray" - light_color = "#00FF00" - muzzle_type = /obj/effect/projectile/muzzle/xray - tracer_type = /obj/effect/projectile/tracer/xray - impact_type = /obj/effect/projectile/impact/xray - -/obj/projectile/beam/imperial - name = "laser beam" - fire_sound = 'sound/weapons/mandalorian.ogg' - icon_state = "darkb" - light_color = "#8837A3" - muzzle_type = /obj/effect/projectile/muzzle/darkmatter - tracer_type = /obj/effect/projectile/tracer/darkmatter - impact_type = /obj/effect/projectile/impact/darkmatter - -/obj/projectile/beam/stun/kin21 - name = "kinh21 stun beam" - icon_state = "omnilaser" - light_color = "#0000FF" - muzzle_type = /obj/effect/projectile/muzzle/laser_omni - tracer_type = /obj/effect/projectile/tracer/laser_omni - impact_type = /obj/effect/projectile/impact/laser_omni - -//--------------- StG-60 ---------------- -/obj/item/ammo_magazine/m792 - name = "box mag (7.92x33mm Kurz)" - icon = 'icons/obj/ammo_vr.dmi' - icon_state = "stg_30rnd" - caliber = "7.92x33mm" - ammo_type = /obj/item/ammo_casing/a792 - max_ammo = 30 - mag_type = MAGAZINE - -/obj/item/ammo_casing/a792 - desc = "A 7.92x33mm Kurz casing." - icon_state = "rifle-casing" - caliber = "7.92x33mm" - projectile_type = /obj/projectile/bullet/rifle/a762 - -/obj/item/ammo_magazine/mtg/empty - initial_ammo = 0 - -//------------- Battlerifle ------------- -/obj/item/ammo_magazine/m95 - name = "box mag (9.5x40mm)" - icon = 'icons/obj/ammo_vr.dmi' - icon_state = "battlerifle" - caliber = "9.5x40mm" - ammo_type = /obj/item/ammo_casing/a95 - max_ammo = 36 - mag_type = MAGAZINE - multiple_sprites = 1 - -/obj/item/ammo_casing/a95 - desc = "A 9.5x40mm bullet casing." - icon_state = "rifle-casing" - caliber = "9.5x40mm" - projectile_type = /obj/projectile/bullet/rifle/a95 - -/obj/projectile/bullet/rifle/a95 - damage = 40 - -/obj/item/ammo_magazine/m95/empty - initial_ammo = 0 - -//---------------- PDW ------------------ -/obj/item/ammo_magazine/m9mml - name = "\improper SMG magazine (9mm)" - icon = 'icons/obj/ammo_vr.dmi' - icon_state = "smg" - origin_tech = list(TECH_COMBAT = 2) - mag_type = MAGAZINE - materials_base = list(MAT_STEEL = 1800) - caliber = "9mm" - ammo_type = /obj/item/ammo_casing/a9mm - max_ammo = 30 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m9mml/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m9mml/ap - name = "\improper SMG magazine (9mm armor-piercing)" - ammo_type = /obj/item/ammo_casing/a9mm/ap - -/* Seems to have been de-coded? -/obj/item/ammo_magazine/m9mml/flash - name = "\improper SMG magazine (9mm flash)" - ammo_type = /obj/item/ammo_casing/a9mmf - -/obj/item/ammo_magazine/m9mml/rubber - name = "\improper SMG magazine (9mm rubber)" - ammo_type = /obj/item/ammo_casing/a9mmr - -/obj/item/ammo_magazine/m9mml/practice - name = "\improper SMG magazine (9mm practice)" - ammo_type = /obj/item/ammo_casing/a9mmp -*/ - -//.357 special ammo -/obj/item/ammo_magazine/s357/stun - name = "speedloader (.357 stun)" - desc = "A speedloader for .357 revolvers." - icon = 'icons/obj/ammo_vr.dmi' - icon_state = "s357" - caliber = ".357" - ammo_type = /obj/item/ammo_casing/a357/stun - - -/obj/item/ammo_casing/a357/stun - desc = "A .357 stun bullet casing." - caliber = ".357" - icon = 'icons/obj/ammo_vr.dmi' - icon_state = "stun357" - projectile_type = /obj/projectile/energy/electrode/stunshot/strong - -/obj/item/ammo_magazine/s357/rubber - name = "speedloader (.357 rubber)" - desc = "A speedloader for .357 revolvers." - icon = 'icons/obj/ammo_vr.dmi' - icon_state = "r357" - caliber = ".357" - ammo_type = /obj/item/ammo_casing/a357/rubber - - -/obj/item/ammo_casing/a357/rubber - desc = "A .357 rubber bullet casing." - caliber = ".357" - icon = 'icons/obj/ammo_vr.dmi' - icon_state = "rubber357" - projectile_type = /obj/projectile/bullet/pistol/rubber/strong - -/obj/item/ammo_magazine/s357/flash - name = "speedloader (.357 flash)" - desc = "A speedloader for .357 revolvers." - icon = 'icons/obj/ammo_vr.dmi' - icon_state = "f357" - caliber = ".357" - ammo_type = /obj/item/ammo_casing/a357/flash - -/obj/item/ammo_casing/a357/flash - desc = "A .357 flash bullet casing." - caliber = ".357" - icon = 'icons/obj/ammo_vr.dmi' - icon_state = "flash357" - projectile_type = /obj/projectile/energy/flash/strong - -//.380 -/obj/item/ammo_casing/a380 - desc = "A .380 bullet casing." - caliber = ".380" - projectile_type = /obj/projectile/bullet/pistol - -/obj/item/ammo_magazine/m380 - name = "magazine (.380)" - icon_state = "9x19p" - origin_tech = list(TECH_COMBAT = 2) - mag_type = MAGAZINE - materials_base = list(MAT_STEEL = 480) - caliber = ".380" - ammo_type = /obj/item/ammo_casing/a380 - max_ammo = 8 - multiple_sprites = 1 - -//.44 -/obj/item/ammo_casing/a44/rubber - icon_state = "r-casing" - desc = "A .44 rubber bullet casing." - projectile_type = /obj/projectile/bullet/pistol/rubber/strong - -/obj/item/ammo_magazine/m44/rubber - desc = "A magazine for .44 less-than-lethal ammo." - ammo_type = /obj/item/ammo_casing/a44/rubber - -//.44 speedloaders -/obj/item/ammo_magazine/s44 - name = "speedloader (.44)" - desc = "A speedloader for .44 revolvers." - icon = 'icons/obj/ammo_vr.dmi' - icon_state = "s357" - caliber = ".44" - materials_base = list(MAT_STEEL = 1260) - ammo_type = /obj/item/ammo_casing/a44 - max_ammo = 6 - multiple_sprites = 1 - mag_type = SPEEDLOADER - -/obj/item/ammo_magazine/s44/rubber - name = "speedloader (.44 rubber)" - icon_state = "r357" - ammo_type = /obj/item/ammo_casing/a44/rubber - -//Expedition pistol -/obj/item/gun/energy/frontier - name = "Expedition Crank Phaser" - desc = "An extraordinarily rugged laser weapon, built to last and requiring effectively no maintenance. Includes a built-in crank charger for recharging away from civilization." - icon_state = "phaser" - item_state = "phaser" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "phaser", SLOT_ID_LEFT_HAND = "phaser", "SLOT_ID_BELT" = "phaser") - fire_sound = 'sound/weapons/laser_rifle_1.wav' - origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2, TECH_POWER = 4) - charge_cost = 300 - battery_lock = 1 - - var/recharging = 0 - var/phase_power = 75 - - projectile_type = /obj/projectile/beam - firemodes = list( - list(mode_name="lethal", fire_delay=12, projectile_type=/obj/projectile/beam, charge_cost = 300), - list(mode_name="low-power", fire_delay=8, projectile_type=/obj/projectile/beam/weaklaser, charge_cost = 60), - ) - -/obj/item/gun/energy/frontier/unload_ammo(var/mob/user) - if(recharging) - return - recharging = 1 - update_icon() - user.visible_message("[user] opens \the [src] and starts pumping the handle.", \ - "You open \the [src] and start pumping the handle.") - while(recharging) - if(!do_after(user, 10, src)) - break - playsound(get_turf(src),'sound/items/change_drill.ogg',25,1) - if(power_supply.give(phase_power) < phase_power) - break - - recharging = 0 - update_icon() - -/obj/item/gun/energy/frontier/update_icon() - if(recharging) - icon_state = "[initial(icon_state)]_pump" - update_held_icon() - return - ..() - -/obj/item/gun/energy/frontier/emp_act(severity) - return ..(severity+2) - -/obj/item/gun/energy/frontier/legacy_ex_act() //|rugged| - return - -/obj/item/gun/energy/frontier/locked - desc = "An extraordinarily rugged laser weapon, built to last and requiring effectively no maintenance. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility." - pin = /obj/item/firing_pin/explorer - -//Phaser Carbine - Reskinned phaser -/obj/item/gun/energy/frontier/locked/carbine - name = "Expedition Phaser Carbine" - desc = "An ergonomically improved version of the venerable frontier phaser, the carbine is a fairly new weapon, and has only been produced in limited numbers so far. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility." - icon_state = "carbinekill" - item_state = "retro" - item_icons = list(SLOT_ID_LEFT_HAND = 'icons/mob/items/lefthand_guns.dmi', SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand_guns.dmi') - - modifystate = "carbinekill" - firemodes = list( - list(mode_name="lethal", fire_delay=12, projectile_type=/obj/projectile/beam, modifystate="carbinekill", charge_cost = 300), - list(mode_name="low-power", fire_delay=8, projectile_type=/obj/projectile/beam/weaklaser, modifystate="carbinestun", charge_cost = 60), - - ) - -/obj/item/gun/energy/frontier/locked/carbine/update_icon_state() - . = ..() - if(recharging) - icon_state = "[modifystate]_pump" - update_held_icon() - -//Expeditionary Holdout Phaser Pistol -/obj/item/gun/energy/frontier/locked/holdout - name = "Holdout Phaser Pistol" - desc = "An minaturized weapon designed for the purpose of expeditionary support to defend themselves on the field. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility." - icon = 'icons/obj/gun/energy.dmi' - icon_state = "holdoutkill" - item_state = null - fire_sound = 'sound/weapons/laser_holdout_1.wav' - phase_power = 100 - - w_class = WEIGHT_CLASS_SMALL - charge_cost = 600 - modifystate = "holdoutkill" - firemodes = list( - list(mode_name="lethal", fire_delay=12, projectile_type=/obj/projectile/beam, modifystate="holdoutkill", charge_cost = 600), - list(mode_name="low-power", fire_delay=8, projectile_type=/obj/projectile/beam/weaklaser, modifystate="holdoutstun", charge_cost = 120), - list(mode_name="stun", fire_delay=12, projectile_type=/obj/projectile/beam/stun/med, modifystate="holdoutshock", charge_cost = 300), - ) - -/obj/item/gun/energy/frontier/taj - name = "Adhomai crank laser" - desc = "The \"Icelance\" crank charged laser rifle, produced by the Hadii-Wrack group for the People's Republic of Adhomai's Grand People's Army." - icon = 'icons/obj/gun/energy.dmi' - icon_state = "phaser-taj" - item_state = "phaser-taj" - wielded_item_state = "phaser-taj" - charge_cost = 600 - - projectile_type = /obj/projectile/beam/midlaser - - - firemodes = list( - ) - -/obj/item/gun/energy/frontier/taj/unload_ammo(var/mob/user) - if(recharging) - return - recharging = 1 - update_icon() - user.visible_message("[user] begins to turn the crank of \the [src].", \ - "You begins to turn the crank of \the [src].") - while(recharging) - if(!do_after(user, 10, src)) - break - playsound(get_turf(src),'sound/items/change_drill.ogg',25,1) - if(power_supply.give(phase_power) < phase_power) - break - - recharging = 0 - update_icon() - -/obj/item/gun/energy/hardlight_bow - name = "hardlight bow" - desc = "An experimental, unlicensed design from Haephestus that never actually went anywhere; the idea of a crankable ion weapon was of interest, but the lack of practicality made it undesirable. \n \n \"...and his music was electric.\"" - icon = 'icons/obj/gun/energy.dmi' - icon_state = "bow_hardlight" - item_state = "bow_pipe" - slot_flags = SLOT_BACK | SLOT_BELT - charge_cost = 1200 - battery_lock = 1 - pin = /obj/item/firing_pin/explorer - projectile_type = /obj/projectile/ion - - - var/recharging = 0 - var/phase_power = 150 - - -/obj/item/gun/energy/hardlight_bow/unload_ammo(var/mob/user) - if(recharging) - return - recharging = 1 - user.visible_message("[user] begins to tighten \the [src]'s electric bowstring.", \ - "You begin to tighten \the [src]'s electric bowstring") - while(recharging) - if(!do_after(user, 10, src)) - break - playsound(get_turf(src),'sound/weapons/hardlight_bow_charge.ogg',25,1) - if(power_supply.give(phase_power) < phase_power) - break - - recharging = 0 - - - - diff --git a/code/modules/xenoarcheaology/finds/find_spawning.dm b/code/modules/xenoarcheaology/finds/find_spawning.dm index 4cfb15bcc9b..561cc0e4946 100644 --- a/code/modules/xenoarcheaology/finds/find_spawning.dm +++ b/code/modules/xenoarcheaology/finds/find_spawning.dm @@ -323,7 +323,7 @@ //33% chance to be able to reload the gun with human ammunition if(prob(66)) - new_gun.caliber = "999" + new_gun.regex_this_caliber = null //33% chance to fill it with a random amount of bullets new_gun.max_shells = rand(1,12) diff --git a/icons/content/factions/corporations/gorlex/items/guns/phoron_spitter.dmi b/icons/content/factions/corporations/gorlex/items/guns/phoron_spitter.dmi new file mode 100644 index 00000000000..d763baecaf6 Binary files /dev/null and b/icons/content/factions/corporations/gorlex/items/guns/phoron_spitter.dmi differ diff --git a/icons/content/factions/corporations/gorlex/items/guns/wild_hunt.dmi b/icons/content/factions/corporations/gorlex/items/guns/wild_hunt.dmi new file mode 100644 index 00000000000..5c64b9d3fe0 Binary files /dev/null and b/icons/content/factions/corporations/gorlex/items/guns/wild_hunt.dmi differ diff --git a/icons/mob/items/lefthand_guns.dmi b/icons/mob/items/lefthand_guns.dmi index c2f51ff9d9d..d331db97dd5 100644 Binary files a/icons/mob/items/lefthand_guns.dmi and b/icons/mob/items/lefthand_guns.dmi differ diff --git a/icons/mob/items/righthand_guns.dmi b/icons/mob/items/righthand_guns.dmi index 670767a6eac..1a2826d0120 100644 Binary files a/icons/mob/items/righthand_guns.dmi and b/icons/mob/items/righthand_guns.dmi differ diff --git a/icons/modules/projectiles/casings/a10g.dmi b/icons/modules/projectiles/casings/a10g.dmi new file mode 100644 index 00000000000..fc4dd598f1f Binary files /dev/null and b/icons/modules/projectiles/casings/a10g.dmi differ diff --git a/icons/modules/projectiles/casings/a12_7mm.dmi b/icons/modules/projectiles/casings/a12_7mm.dmi new file mode 100644 index 00000000000..7ee9b2f4d9c Binary files /dev/null and b/icons/modules/projectiles/casings/a12_7mm.dmi differ diff --git a/icons/modules/projectiles/casings/a12g.dmi b/icons/modules/projectiles/casings/a12g.dmi new file mode 100644 index 00000000000..4e7a968d378 Binary files /dev/null and b/icons/modules/projectiles/casings/a12g.dmi differ diff --git a/icons/modules/projectiles/casings/arrow.dmi b/icons/modules/projectiles/casings/arrow.dmi new file mode 100644 index 00000000000..3f6252358b2 Binary files /dev/null and b/icons/modules/projectiles/casings/arrow.dmi differ diff --git a/icons/modules/projectiles/casings/bio.dmi b/icons/modules/projectiles/casings/bio.dmi new file mode 100644 index 00000000000..f5c554ef722 Binary files /dev/null and b/icons/modules/projectiles/casings/bio.dmi differ diff --git a/icons/modules/projectiles/casings/blunderbuss.dmi b/icons/modules/projectiles/casings/blunderbuss.dmi new file mode 100644 index 00000000000..4d81d57cc12 Binary files /dev/null and b/icons/modules/projectiles/casings/blunderbuss.dmi differ diff --git a/icons/modules/projectiles/casings/foam.dmi b/icons/modules/projectiles/casings/foam.dmi new file mode 100644 index 00000000000..5a84873c5d0 Binary files /dev/null and b/icons/modules/projectiles/casings/foam.dmi differ diff --git a/icons/modules/projectiles/casings/misc.dmi b/icons/modules/projectiles/casings/misc.dmi new file mode 100644 index 00000000000..cf74d73796c Binary files /dev/null and b/icons/modules/projectiles/casings/misc.dmi differ diff --git a/icons/modules/projectiles/casings/modular_cased_unused.dmi b/icons/modules/projectiles/casings/modular_cased_unused.dmi new file mode 100644 index 00000000000..bf4e01ca840 Binary files /dev/null and b/icons/modules/projectiles/casings/modular_cased_unused.dmi differ diff --git a/icons/modules/projectiles/casings/modular_caseless_unused.dmi b/icons/modules/projectiles/casings/modular_caseless_unused.dmi new file mode 100644 index 00000000000..9c403e973da Binary files /dev/null and b/icons/modules/projectiles/casings/modular_caseless_unused.dmi differ diff --git a/icons/modules/projectiles/casings/modular_grenades_unused.dmi b/icons/modules/projectiles/casings/modular_grenades_unused.dmi new file mode 100644 index 00000000000..fdc259f0ee5 Binary files /dev/null and b/icons/modules/projectiles/casings/modular_grenades_unused.dmi differ diff --git a/icons/modules/projectiles/casings/modular_rocket_unused.dmi b/icons/modules/projectiles/casings/modular_rocket_unused.dmi new file mode 100644 index 00000000000..923ff5bca67 Binary files /dev/null and b/icons/modules/projectiles/casings/modular_rocket_unused.dmi differ diff --git a/icons/modules/projectiles/casings/musket.dmi b/icons/modules/projectiles/casings/musket.dmi new file mode 100644 index 00000000000..c1ded1481b5 Binary files /dev/null and b/icons/modules/projectiles/casings/musket.dmi differ diff --git a/icons/modules/projectiles/casings/phoron.dmi b/icons/modules/projectiles/casings/phoron.dmi new file mode 100644 index 00000000000..cf74d73796c Binary files /dev/null and b/icons/modules/projectiles/casings/phoron.dmi differ diff --git a/icons/modules/projectiles/casings/slim.dmi b/icons/modules/projectiles/casings/slim.dmi new file mode 100644 index 00000000000..034c040811d Binary files /dev/null and b/icons/modules/projectiles/casings/slim.dmi differ diff --git a/icons/modules/projectiles/casings/syringe.dmi b/icons/modules/projectiles/casings/syringe.dmi new file mode 100644 index 00000000000..9ba152ac1bb Binary files /dev/null and b/icons/modules/projectiles/casings/syringe.dmi differ diff --git a/icons/modules/projectiles/eris_ammo_unused.dmi b/icons/modules/projectiles/eris_ammo_unused.dmi new file mode 100644 index 00000000000..6134a85748b Binary files /dev/null and b/icons/modules/projectiles/eris_ammo_unused.dmi differ diff --git a/icons/modules/projectiles/legacy/ammo_box.dmi b/icons/modules/projectiles/legacy/ammo_box.dmi new file mode 100644 index 00000000000..92504791e72 Binary files /dev/null and b/icons/modules/projectiles/legacy/ammo_box.dmi differ diff --git a/icons/modules/projectiles/legacy/microbattery_old.dmi b/icons/modules/projectiles/legacy/microbattery_old.dmi new file mode 100644 index 00000000000..4a58d39e35d Binary files /dev/null and b/icons/modules/projectiles/legacy/microbattery_old.dmi differ diff --git a/icons/modules/projectiles/magazines/bio.dmi b/icons/modules/projectiles/magazines/bio.dmi new file mode 100644 index 00000000000..042f2eb0239 Binary files /dev/null and b/icons/modules/projectiles/magazines/bio.dmi differ diff --git a/icons/modules/projectiles/magazines/darts.dmi b/icons/modules/projectiles/magazines/darts.dmi new file mode 100644 index 00000000000..91c2dbc8382 Binary files /dev/null and b/icons/modules/projectiles/magazines/darts.dmi differ diff --git a/icons/modules/projectiles/magazines/foam.dmi b/icons/modules/projectiles/magazines/foam.dmi new file mode 100644 index 00000000000..b6bf61b83f8 Binary files /dev/null and b/icons/modules/projectiles/magazines/foam.dmi differ diff --git a/icons/modules/projectiles/magazines/modular_box_unused.dmi b/icons/modules/projectiles/magazines/modular_box_unused.dmi new file mode 100644 index 00000000000..92e268bd881 Binary files /dev/null and b/icons/modules/projectiles/magazines/modular_box_unused.dmi differ diff --git a/icons/modules/projectiles/magazines/modular_magazine_unused.dmi b/icons/modules/projectiles/magazines/modular_magazine_unused.dmi new file mode 100644 index 00000000000..b732274adaf Binary files /dev/null and b/icons/modules/projectiles/magazines/modular_magazine_unused.dmi differ diff --git a/icons/modules/projectiles/magazines/modular_speedloader_unused.dmi b/icons/modules/projectiles/magazines/modular_speedloader_unused.dmi new file mode 100644 index 00000000000..f565fbbd2a1 Binary files /dev/null and b/icons/modules/projectiles/magazines/modular_speedloader_unused.dmi differ diff --git a/icons/modules/projectiles/magazines/modular_stripper_unused.dmi b/icons/modules/projectiles/magazines/modular_stripper_unused.dmi new file mode 100644 index 00000000000..fc99de5d492 Binary files /dev/null and b/icons/modules/projectiles/magazines/modular_stripper_unused.dmi differ diff --git a/icons/modules/projectiles/magazines/old_magazine_box.dmi b/icons/modules/projectiles/magazines/old_magazine_box.dmi new file mode 100644 index 00000000000..8783d89bf93 Binary files /dev/null and b/icons/modules/projectiles/magazines/old_magazine_box.dmi differ diff --git a/icons/modules/projectiles/magazines/old_magazine_clip.dmi b/icons/modules/projectiles/magazines/old_magazine_clip.dmi new file mode 100644 index 00000000000..575d5c69435 Binary files /dev/null and b/icons/modules/projectiles/magazines/old_magazine_clip.dmi differ diff --git a/icons/modules/projectiles/magazines/old_magazine_drum.dmi b/icons/modules/projectiles/magazines/old_magazine_drum.dmi new file mode 100644 index 00000000000..d6280f158f6 Binary files /dev/null and b/icons/modules/projectiles/magazines/old_magazine_drum.dmi differ diff --git a/icons/modules/projectiles/magazines/old_magazine_stick.dmi b/icons/modules/projectiles/magazines/old_magazine_stick.dmi new file mode 100644 index 00000000000..bf40c34c3f7 Binary files /dev/null and b/icons/modules/projectiles/magazines/old_magazine_stick.dmi differ diff --git a/icons/modules/projectiles/magazines/old_pouch.dmi b/icons/modules/projectiles/magazines/old_pouch.dmi new file mode 100644 index 00000000000..c18e20ee509 Binary files /dev/null and b/icons/modules/projectiles/magazines/old_pouch.dmi differ diff --git a/icons/modules/projectiles/magazines/old_speedloader_6.dmi b/icons/modules/projectiles/magazines/old_speedloader_6.dmi new file mode 100644 index 00000000000..9517e632c44 Binary files /dev/null and b/icons/modules/projectiles/magazines/old_speedloader_6.dmi differ diff --git a/icons/modules/projectiles/magazines/old_speedloader_7.dmi b/icons/modules/projectiles/magazines/old_speedloader_7.dmi new file mode 100644 index 00000000000..e5763121ca3 Binary files /dev/null and b/icons/modules/projectiles/magazines/old_speedloader_7.dmi differ diff --git a/icons/modules/projectiles/magazines/old_stripper.dmi b/icons/modules/projectiles/magazines/old_stripper.dmi new file mode 100644 index 00000000000..95b49856fa6 Binary files /dev/null and b/icons/modules/projectiles/magazines/old_stripper.dmi differ diff --git a/icons/modules/projectiles/main_ammo_unused.dmi b/icons/modules/projectiles/main_ammo_unused.dmi new file mode 100644 index 00000000000..45f27966e0e Binary files /dev/null and b/icons/modules/projectiles/main_ammo_unused.dmi differ diff --git a/icons/modules/projectiles/rp_ammo_unused.dmi b/icons/modules/projectiles/rp_ammo_unused.dmi new file mode 100644 index 00000000000..947b3a8db7c Binary files /dev/null and b/icons/modules/projectiles/rp_ammo_unused.dmi differ diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi deleted file mode 100644 index 97caca3b4b9..00000000000 Binary files a/icons/obj/ammo.dmi and /dev/null differ diff --git a/icons/obj/ammo_vr.dmi b/icons/obj/ammo_vr.dmi deleted file mode 100644 index 3006f7e445e..00000000000 Binary files a/icons/obj/ammo_vr.dmi and /dev/null differ diff --git a/icons/obj/gun/ballistic.dmi b/icons/obj/gun/ballistic.dmi index 30257b6709b..e7fa9abdc79 100644 Binary files a/icons/obj/gun/ballistic.dmi and b/icons/obj/gun/ballistic.dmi differ diff --git a/icons/obj/gun/ballistic/caseless/pellet.dmi b/icons/obj/gun/ballistic/caseless/pellet.dmi index cae1dd372bd..fc364ca0fd2 100644 Binary files a/icons/obj/gun/ballistic/caseless/pellet.dmi and b/icons/obj/gun/ballistic/caseless/pellet.dmi differ diff --git a/icons/system/error_32x32.dmi b/icons/system/error_32x32.dmi new file mode 100644 index 00000000000..147873c6603 Binary files /dev/null and b/icons/system/error_32x32.dmi differ diff --git a/maps/away_missions/140x140/carpfarm.dmm b/maps/away_missions/140x140/carpfarm.dmm index 213b11b5a22..aa1c975d271 100644 --- a/maps/away_missions/140x140/carpfarm.dmm +++ b/maps/away_missions/140x140/carpfarm.dmm @@ -467,9 +467,9 @@ /area/awaymission/carpfarm/base) "bE" = ( /obj/structure/closet/crate/secure/weapon, -/obj/item/ammo_magazine/clip/c762, -/obj/item/ammo_magazine/clip/c762, -/obj/item/ammo_magazine/clip/c762, +/obj/item/ammo_magazine/a7_62mm/clip, +/obj/item/ammo_magazine/a7_62mm/clip, +/obj/item/ammo_magazine/a7_62mm/clip, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/dark, /area/awaymission/carpfarm/base) diff --git a/maps/away_missions/140x140/snowfield.dmm b/maps/away_missions/140x140/snowfield.dmm index 8eff3bdd7ed..7911634ff6d 100644 --- a/maps/away_missions/140x140/snowfield.dmm +++ b/maps/away_missions/140x140/snowfield.dmm @@ -1375,11 +1375,11 @@ /area/awaymission/snowfield/base) "dZ" = ( /obj/structure/closet/crate/secure/gear, -/obj/item/ammo_magazine/clip/c762, -/obj/item/ammo_magazine/clip/c762, -/obj/item/ammo_magazine/clip/c762, -/obj/item/ammo_magazine/clip/c762, -/obj/item/ammo_magazine/clip/c762, +/obj/item/ammo_magazine/a7_62mm/clip, +/obj/item/ammo_magazine/a7_62mm/clip, +/obj/item/ammo_magazine/a7_62mm/clip, +/obj/item/ammo_magazine/a7_62mm/clip, +/obj/item/ammo_magazine/a7_62mm/clip, /turf/simulated/floor/tiled/dark, /area/awaymission/snowfield/base) "ea" = ( diff --git a/maps/away_missions/archive/spacebattle.dmm b/maps/away_missions/archive/spacebattle.dmm index f7f01c93f51..48106f306f1 100644 --- a/maps/away_missions/archive/spacebattle.dmm +++ b/maps/away_missions/archive/spacebattle.dmm @@ -65,7 +65,6 @@ /area/awaymission/spacebattle/syndicate2) "at" = ( /obj/structure/table/reinforced, -/obj/item/ammo_magazine/m10x24mm, /turf/simulated/floor, /area/awaymission/spacebattle/syndicate2) "au" = ( @@ -1070,7 +1069,7 @@ /area/awaymission/spacebattle/cruiser) "gt" = ( /obj/structure/closet/crate/secure/weapon, -/obj/item/ammo_magazine/s357, +/obj/item/ammo_magazine/a357/speedloader, /turf/simulated/floor/plating, /area/awaymission/spacebattle/cruiser) "gu" = ( diff --git a/maps/away_missions/archive/zresearchlabs.dmm b/maps/away_missions/archive/zresearchlabs.dmm index d9a3efa40d2..fe99bb0aae4 100644 --- a/maps/away_missions/archive/zresearchlabs.dmm +++ b/maps/away_missions/archive/zresearchlabs.dmm @@ -1755,7 +1755,7 @@ /obj/structure/cable{ icon_state = "0-4" }, -/obj/item/ammo_magazine/clip/c45, +/obj/item/ammo_magazine/a45/clip, /turf/simulated/floor{ dir = 5 }, @@ -1870,7 +1870,7 @@ /area/awaymission/labs/militarydivision) "fS" = ( /obj/structure/closet/crate/secure/weapon, -/obj/item/ammo_magazine/s357, +/obj/item/ammo_magazine/a357/speedloader, /turf/simulated/floor{ dir = 5 }, @@ -2847,7 +2847,7 @@ /turf/simulated/floor, /area/awaymission/labs/militarydivision) "iu" = ( -/obj/item/ammo_magazine/clip/c9mm{ +/obj/item/ammo_magazine/a9mm/clip{ pixel_x = 25; pixel_y = -60 }, @@ -6967,13 +6967,13 @@ }, /area/awaymission/labs/security) "uj" = ( -/obj/item/ammo_magazine/clip/c45, +/obj/item/ammo_magazine/a45/clip, /turf/simulated/floor{ dir = 8 }, /area/awaymission/labs/security) "uk" = ( -/obj/item/ammo_magazine/clip/c45, +/obj/item/ammo_magazine/a45/clip, /obj/item/gun/ballistic/silenced{ desc = "A sidearm commonly favored by terrestrial security forces."; icon_state = "g115 Pistol"; diff --git a/maps/minitest/levels/sector1.dmm b/maps/minitest/levels/sector1.dmm index 4e2916ded87..bae22c222ba 100644 --- a/maps/minitest/levels/sector1.dmm +++ b/maps/minitest/levels/sector1.dmm @@ -466,9 +466,9 @@ /area/awaymission) "bA" = ( /obj/structure/closet/crate/secure/weapon, -/obj/item/ammo_magazine/clip/c762, -/obj/item/ammo_magazine/clip/c762, -/obj/item/ammo_magazine/clip/c762, +/obj/item/ammo_magazine/a7_62mm/clip, +/obj/item/ammo_magazine/a7_62mm/clip, +/obj/item/ammo_magazine/a7_62mm/clip, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/dark, /area/awaymission) diff --git a/maps/rift/levels/rift-05-surface2.dmm b/maps/rift/levels/rift-05-surface2.dmm index 790678686f4..a62116cdac9 100644 --- a/maps/rift/levels/rift-05-surface2.dmm +++ b/maps/rift/levels/rift-05-surface2.dmm @@ -34,8 +34,8 @@ "aaW" = ( /obj/structure/table/rack/shelf/steel, /obj/effect/floor_decal/industrial/outline/red, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, /obj/machinery/camera/motion/security{ dir = 8 }, @@ -2852,34 +2852,34 @@ pixel_y = 32 }, /obj/structure/table/rack/shelf/steel, -/obj/item/ammo_magazine/m9mmt{ +/obj/item/ammo_magazine/a9mm/top_mount{ pixel_x = -2; pixel_y = -8 }, -/obj/item/ammo_magazine/m9mmt{ +/obj/item/ammo_magazine/a9mm/top_mount{ pixel_x = -2; pixel_y = -8 }, -/obj/item/ammo_magazine/m9mmt{ +/obj/item/ammo_magazine/a9mm/top_mount{ pixel_x = 1; pixel_y = -5 }, -/obj/item/ammo_magazine/m9mmt{ +/obj/item/ammo_magazine/a9mm/top_mount{ pixel_x = 1; pixel_y = -5 }, -/obj/item/ammo_magazine/m9mmt{ +/obj/item/ammo_magazine/a9mm/top_mount{ pixel_x = 4; pixel_y = 2 }, -/obj/item/ammo_magazine/m9mmt{ +/obj/item/ammo_magazine/a9mm/top_mount{ pixel_x = 4; pixel_y = 2 }, -/obj/item/ammo_magazine/m9mmt{ +/obj/item/ammo_magazine/a9mm/top_mount{ pixel_y = 5 }, -/obj/item/ammo_magazine/m9mmt{ +/obj/item/ammo_magazine/a9mm/top_mount{ pixel_y = 5 }, /obj/structure/cable/green{ @@ -16245,10 +16245,10 @@ /obj/structure/table/steel, /obj/item/gun/ballistic/shotgun/pump/rifle/practice, /obj/item/gun/ballistic/shotgun/pump/rifle/practice, -/obj/item/ammo_magazine/clip/c762/practice, -/obj/item/ammo_magazine/clip/c762/practice, -/obj/item/ammo_magazine/clip/c762/practice, -/obj/item/ammo_magazine/clip/c762/practice, +/obj/item/ammo_magazine/a7_62mm/clip/practice, +/obj/item/ammo_magazine/a7_62mm/clip/practice, +/obj/item/ammo_magazine/a7_62mm/clip/practice, +/obj/item/ammo_magazine/a7_62mm/clip/practice, /obj/machinery/recharger/wallcharger{ pixel_x = 4; pixel_y = -28 @@ -20787,8 +20787,8 @@ dir = 8 }, /obj/effect/floor_decal/borderfloorblack/cee, -/obj/item/ammo_magazine/m44, -/obj/item/ammo_magazine/m44, +/obj/item/ammo_magazine/a44, +/obj/item/ammo_magazine/a44, /obj/item/gun/ballistic/deagle/taj, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) @@ -34563,18 +34563,18 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, /turf/simulated/floor/tiled/dark, /area/security/tactical) "vSw" = ( diff --git a/maps/rift/levels/rift-06-surface3.dmm b/maps/rift/levels/rift-06-surface3.dmm index ee6756fafe5..7806faa9b5e 100644 --- a/maps/rift/levels/rift-06-surface3.dmm +++ b/maps/rift/levels/rift-06-surface3.dmm @@ -12150,8 +12150,8 @@ name = "gun safe"; req_access = list(1) }, -/obj/item/ammo_magazine/s357, -/obj/item/ammo_magazine/s357, +/obj/item/ammo_magazine/a357/speedloader, +/obj/item/ammo_magazine/a357/speedloader, /obj/item/gun/ballistic/revolver/mateba, /obj/effect/floor_decal/borderfloorblack/full, /obj/effect/floor_decal/industrial/outline, @@ -15585,8 +15585,8 @@ /obj/effect/floor_decal/borderfloorblack/full, /obj/effect/floor_decal/industrial/outline, /obj/item/gun/ballistic/SVD, -/obj/item/ammo_magazine/m762svd, -/obj/item/ammo_magazine/m762svd, +/obj/item/ammo_magazine/a7_62mm/svd, +/obj/item/ammo_magazine/a7_62mm/svd, /obj/item/clothing/suit/space/void/merc/soviet, /obj/item/clothing/head/helmet/space/void/merc/soviet, /obj/machinery/camera/motion/security{ diff --git a/maps/rift/levels/rift-11-orbital.dmm b/maps/rift/levels/rift-11-orbital.dmm index 2d6e875df43..8b39ef2f618 100644 --- a/maps/rift/levels/rift-11-orbital.dmm +++ b/maps/rift/levels/rift-11-orbital.dmm @@ -8559,14 +8559,14 @@ "Lh" = ( /obj/structure/table/rack, /obj/structure/window/reinforced, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, /turf/unsimulated/floor/dark, /area/centcom/specops) "Lk" = ( @@ -8775,14 +8775,14 @@ /obj/structure/table/rack, /obj/item/gun/ballistic/automatic/lmg, /obj/item/gun/ballistic/automatic/lmg, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw/ap, -/obj/item/ammo_magazine/m556saw/ap, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw/ap, +/obj/item/ammo_magazine/a5_56mm/saw/ap, /turf/unsimulated/floor/dark, /area/centcom/specops) "NU" = ( @@ -9426,8 +9426,8 @@ "UL" = ( /obj/structure/table/reinforced, /obj/item/clothing/accessory/holster/hip, -/obj/item/ammo_magazine/m44, -/obj/item/ammo_magazine/m44, +/obj/item/ammo_magazine/a44, +/obj/item/ammo_magazine/a44, /obj/item/gun/ballistic/deagle, /turf/unsimulated/floor/wood, /area/centcom/specops) @@ -9799,14 +9799,14 @@ "Yw" = ( /obj/structure/table/rack, /obj/structure/window/reinforced, -/obj/item/ammo_magazine/m57x28mm/smg/ap, -/obj/item/ammo_magazine/m57x28mm/smg/ap, -/obj/item/ammo_magazine/m57x28mm/smg/ap, -/obj/item/ammo_magazine/m57x28mm/smg/ap, -/obj/item/ammo_magazine/m57x28mm/smg/ap, -/obj/item/ammo_magazine/m57x28mm/smg/ap, -/obj/item/ammo_magazine/m57x28mm/smg/ap, -/obj/item/ammo_magazine/m57x28mm/smg/ap, +/obj/item/ammo_magazine/a5_7mm/harpy_smg/ap, +/obj/item/ammo_magazine/a5_7mm/harpy_smg/ap, +/obj/item/ammo_magazine/a5_7mm/harpy_smg/ap, +/obj/item/ammo_magazine/a5_7mm/harpy_smg/ap, +/obj/item/ammo_magazine/a5_7mm/harpy_smg/ap, +/obj/item/ammo_magazine/a5_7mm/harpy_smg/ap, +/obj/item/ammo_magazine/a5_7mm/harpy_smg/ap, +/obj/item/ammo_magazine/a5_7mm/harpy_smg/ap, /turf/unsimulated/floor/dark, /area/centcom/specops) "Yy" = ( @@ -9944,10 +9944,10 @@ dir = 8 }, /obj/structure/table/rack, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, /obj/item/gun/ballistic/automatic/sts35, /obj/item/gun/ballistic/automatic/sts35, /turf/unsimulated/floor/dark, diff --git a/maps/sectors/admin_planets_192/croatoan.dmm b/maps/sectors/admin_planets_192/croatoan.dmm index e8e1e426aaa..6e89f80b71a 100644 --- a/maps/sectors/admin_planets_192/croatoan.dmm +++ b/maps/sectors/admin_planets_192/croatoan.dmm @@ -5517,8 +5517,8 @@ /area/admin_planet/croatoan/med_storage) "ti" = ( /obj/structure/table/borosilicate, -/obj/item/ammo_magazine/s357, -/obj/item/ammo_magazine/s357, +/obj/item/ammo_magazine/a357/speedloader, +/obj/item/ammo_magazine/a357/speedloader, /turf/simulated/floor/tiled/steel_dirty/red, /area/admin_planet/croatoan/sec_hos_office) "tn" = ( @@ -12318,89 +12318,89 @@ /obj/item/storage/box/shotgunammo/large, /obj/item/storage/box/shotgunammo/large, /obj/item/storage/box/shotgunammo/large, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m9mmt{ +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a9mm/top_mount{ pixel_x = 1; pixel_y = -5 }, -/obj/item/ammo_magazine/m9mmt{ +/obj/item/ammo_magazine/a9mm/top_mount{ pixel_x = 1; pixel_y = -5 }, -/obj/item/ammo_magazine/m9mmt{ +/obj/item/ammo_magazine/a9mm/top_mount{ pixel_x = 1; pixel_y = -5 }, -/obj/item/ammo_magazine/m9mmt{ +/obj/item/ammo_magazine/a9mm/top_mount{ pixel_x = 1; pixel_y = -5 }, -/obj/item/ammo_magazine/m9mmt{ +/obj/item/ammo_magazine/a9mm/top_mount{ pixel_x = 1; pixel_y = -5 }, -/obj/item/ammo_magazine/m9mmt{ +/obj/item/ammo_magazine/a9mm/top_mount{ pixel_x = 1; pixel_y = -5 }, -/obj/item/ammo_magazine/m9mmt{ +/obj/item/ammo_magazine/a9mm/top_mount{ pixel_x = 1; pixel_y = -5 }, -/obj/item/ammo_magazine/m9mmt{ +/obj/item/ammo_magazine/a9mm/top_mount{ pixel_x = 1; pixel_y = -5 }, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m44, -/obj/item/ammo_magazine/m44, -/obj/item/ammo_magazine/m45, -/obj/item/ammo_magazine/m45, -/obj/item/ammo_magazine/m12gdrum, -/obj/item/ammo_magazine/m12gdrum, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m45uzi, -/obj/item/ammo_magazine/m45uzi, -/obj/item/ammo_magazine/m57x28mm/fiveseven, -/obj/item/ammo_magazine/m57x28mm/fiveseven, -/obj/item/ammo_magazine/m57x28mm/ntles, -/obj/item/ammo_magazine/m57x28mm/ntles, -/obj/item/ammo_magazine/m57x28mm/smg, -/obj/item/ammo_magazine/m57x28mm/smg, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a44, +/obj/item/ammo_magazine/a44, +/obj/item/ammo_magazine/a45, +/obj/item/ammo_magazine/a45, +/obj/item/ammo_magazine/a12g/drum, +/obj/item/ammo_magazine/a12g/drum, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a45/uzi, +/obj/item/ammo_magazine/a45/uzi, +/obj/item/ammo_magazine/a5_7mm/five_seven, +/obj/item/ammo_magazine/a5_7mm/five_seven, +/obj/item/ammo_magazine/a5_7mm/nt_les, +/obj/item/ammo_magazine/a5_7mm/nt_les, +/obj/item/ammo_magazine/a5_7mm/harpy_smg, +/obj/item/ammo_magazine/a5_7mm/harpy_smg, /obj/item/ammo_magazine/m5mmcaseless, /obj/item/ammo_magazine/m5mmcaseless, -/obj/item/ammo_magazine/m75, -/obj/item/ammo_magazine/m75, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762garand, -/obj/item/ammo_magazine/m762garand, -/obj/item/ammo_magazine/m762m, -/obj/item/ammo_magazine/m762m, -/obj/item/ammo_magazine/m762svd, -/obj/item/ammo_magazine/m762svd, -/obj/item/ammo_magazine/m792, -/obj/item/ammo_magazine/m792, +/obj/item/ammo_magazine/a75, +/obj/item/ammo_magazine/a75, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm/garand, +/obj/item/ammo_magazine/a7_62mm/garand, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm/svd, +/obj/item/ammo_magazine/a7_62mm/svd, +/obj/item/ammo_magazine/a7_92mm, +/obj/item/ammo_magazine/a7_92mm, /obj/item/ammo_magazine/m95, /obj/item/ammo_magazine/m95, -/obj/item/ammo_magazine/m9mm, -/obj/item/ammo_magazine/m9mm, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, +/obj/item/ammo_magazine/a9mm, +/obj/item/ammo_magazine/a9mm, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, /obj/machinery/light/small/emergency{ dir = 1 }, diff --git a/maps/sectors/miaphus_192/levels/miaphus_192_beach.dmm b/maps/sectors/miaphus_192/levels/miaphus_192_beach.dmm index 782e001fe0d..0ef4463cf9e 100644 --- a/maps/sectors/miaphus_192/levels/miaphus_192_beach.dmm +++ b/maps/sectors/miaphus_192/levels/miaphus_192_beach.dmm @@ -4727,14 +4727,14 @@ /area/tether_away/beach/station/tram) "NW" = ( /obj/structure/closet/crate/miningcar, -/obj/item/ammo_magazine/s357, -/obj/item/ammo_magazine/clip/c545, -/obj/item/ammo_magazine/clip/c762, -/obj/item/ammo_magazine/clip/c45, -/obj/item/ammo_magazine/clip/c9mm, -/obj/item/ammo_magazine/clip/c10mm, -/obj/item/ammo_magazine/clip/c12g, -/obj/item/ammo_magazine/clip/c12g, +/obj/item/ammo_magazine/a357/speedloader, +/obj/item/ammo_magazine/a5_56mm/clip, +/obj/item/ammo_magazine/a7_62mm/clip, +/obj/item/ammo_magazine/a45/clip, +/obj/item/ammo_magazine/a9mm/clip, +/obj/item/ammo_magazine/a10mm/clip, +/obj/item/ammo_magazine/a12g/clip, +/obj/item/ammo_magazine/a12g/clip, /turf/simulated/mineral/floor/cave{ name = "dirt" }, diff --git a/maps/submaps/level_specific/class_d/hiddenbunkerD.dmm b/maps/submaps/level_specific/class_d/hiddenbunkerD.dmm index 0b8e63b9186..62d190f7b0e 100644 --- a/maps/submaps/level_specific/class_d/hiddenbunkerD.dmm +++ b/maps/submaps/level_specific/class_d/hiddenbunkerD.dmm @@ -143,9 +143,9 @@ /area/class_d/Mountain) "yw" = ( /obj/structure/table/reinforced, -/obj/item/ammo_magazine/m45tommy, -/obj/item/ammo_magazine/m45tommy, -/obj/item/ammo_magazine/m45tommy, +/obj/item/ammo_magazine/a45/tommy, +/obj/item/ammo_magazine/a45/tommy, +/obj/item/ammo_magazine/a45/tommy, /turf/simulated/floor/tiled, /area/class_d/Mountain) "zH" = ( diff --git a/maps/submaps/level_specific/class_d/landing_padD.dmm b/maps/submaps/level_specific/class_d/landing_padD.dmm index 9101605be00..0cceb7b6e64 100644 --- a/maps/submaps/level_specific/class_d/landing_padD.dmm +++ b/maps/submaps/level_specific/class_d/landing_padD.dmm @@ -134,9 +134,9 @@ /obj/item/clothing/shoes/black, /obj/item/clothing/shoes/black, /obj/item/gun/ballistic/shotgun/pump/rifle, -/obj/item/ammo_magazine/clip/c762, -/obj/item/ammo_magazine/clip/c762, -/obj/item/ammo_magazine/clip/c762, +/obj/item/ammo_magazine/a7_62mm/clip, +/obj/item/ammo_magazine/a7_62mm/clip, +/obj/item/ammo_magazine/a7_62mm/clip, /turf/simulated/floor/wood, /area/class_d/POIs/landing_pad) "v" = ( diff --git a/maps/submaps/level_specific/class_h/desertsaloon.dmm b/maps/submaps/level_specific/class_h/desertsaloon.dmm index f1370c50a51..9b3a3cd56e6 100644 --- a/maps/submaps/level_specific/class_h/desertsaloon.dmm +++ b/maps/submaps/level_specific/class_h/desertsaloon.dmm @@ -411,10 +411,10 @@ "Zm" = ( /obj/structure/closet/cabinet, /obj/random/projectile/shotgun, -/obj/item/ammo_magazine/clip/c12g/pellet, -/obj/item/ammo_magazine/clip/c12g/beanbag, -/obj/item/ammo_magazine/clip/c12g/beanbag, -/obj/item/ammo_magazine/clip/c12g/beanbag, +/obj/item/ammo_magazine/a12g/clip/pellet, +/obj/item/ammo_magazine/a12g/clip/beanbag, +/obj/item/ammo_magazine/a12g/clip/beanbag, +/obj/item/ammo_magazine/a12g/clip/beanbag, /turf/simulated/floor/wood/classh, /area/class_h/POIs/saloon) "Zt" = ( diff --git a/maps/submaps/level_specific/class_h/highnoonH.dmm b/maps/submaps/level_specific/class_h/highnoonH.dmm index 2a4604b828d..9564467b745 100644 --- a/maps/submaps/level_specific/class_h/highnoonH.dmm +++ b/maps/submaps/level_specific/class_h/highnoonH.dmm @@ -5,9 +5,9 @@ /area/class_h/POIs/WW_Town) "aN" = ( /obj/structure/table/rack/shelf, -/obj/item/ammo_magazine/clip/c762/hunter, -/obj/item/ammo_magazine/clip/c762/hunter, -/obj/item/ammo_magazine/clip/c762/hunter, +/obj/item/ammo_magazine/a7_62mm/clip/hunter, +/obj/item/ammo_magazine/a7_62mm/clip/hunter, +/obj/item/ammo_magazine/a7_62mm/clip/hunter, /turf/simulated/floor/wood, /area/class_h/POIs/WW_Town) "bT" = ( @@ -149,9 +149,9 @@ /area/class_h/POIs/WW_Town) "xz" = ( /obj/structure/table/rack/shelf, -/obj/item/ammo_magazine/clip/c762, -/obj/item/ammo_magazine/clip/c762, -/obj/item/ammo_magazine/clip/c762, +/obj/item/ammo_magazine/a7_62mm/clip, +/obj/item/ammo_magazine/a7_62mm/clip, +/obj/item/ammo_magazine/a7_62mm/clip, /turf/simulated/floor/wood, /area/class_h/POIs/WW_Town) "yT" = ( @@ -274,7 +274,7 @@ /area/class_h/POIs/WW_Town) "SU" = ( /obj/structure/table/rack/shelf, -/obj/item/ammo_magazine/clip/c762/ap, +/obj/item/ammo_magazine/a7_62mm/clip/ap, /turf/simulated/floor/wood, /area/class_h/POIs/WW_Town) "SX" = ( diff --git a/maps/submaps/level_specific/class_h/huntercamp.dmm b/maps/submaps/level_specific/class_h/huntercamp.dmm index 8b69748c0bd..293d19d8a9e 100644 --- a/maps/submaps/level_specific/class_h/huntercamp.dmm +++ b/maps/submaps/level_specific/class_h/huntercamp.dmm @@ -103,11 +103,11 @@ "Z" = ( /obj/structure/table/woodentable, /obj/item/gun/ballistic/contender/taj/a762, -/obj/item/ammo_magazine/clip/c762/hunter, +/obj/item/ammo_magazine/a7_62mm/clip/hunter, /obj/item/storage/firstaid/toxin, /obj/item/storage/fancy/cigar/taj, /obj/random/junk, -/obj/item/ammo_magazine/clip/c762/hunter, +/obj/item/ammo_magazine/a7_62mm/clip/hunter, /turf/simulated/mineral/floor/cave, /area/tether_away/beach/desert/poi/huntercamp) diff --git a/maps/submaps/level_specific/class_h/landing_padH.dmm b/maps/submaps/level_specific/class_h/landing_padH.dmm index f8a961e552a..d4a431a29c6 100644 --- a/maps/submaps/level_specific/class_h/landing_padH.dmm +++ b/maps/submaps/level_specific/class_h/landing_padH.dmm @@ -113,9 +113,9 @@ /obj/item/clothing/shoes/black, /obj/item/clothing/shoes/black, /obj/item/gun/ballistic/shotgun/pump/rifle, -/obj/item/ammo_magazine/clip/c762, -/obj/item/ammo_magazine/clip/c762, -/obj/item/ammo_magazine/clip/c762, +/obj/item/ammo_magazine/a7_62mm/clip, +/obj/item/ammo_magazine/a7_62mm/clip, +/obj/item/ammo_magazine/a7_62mm/clip, /turf/simulated/floor/wood, /area/class_h/POIs/landing_pad) "v" = ( diff --git a/maps/submaps/level_specific/debrisfield_vr/tinycarrier.dmm b/maps/submaps/level_specific/debrisfield_vr/tinycarrier.dmm index 66558a2685e..64e007675fa 100644 --- a/maps/submaps/level_specific/debrisfield_vr/tinycarrier.dmm +++ b/maps/submaps/level_specific/debrisfield_vr/tinycarrier.dmm @@ -555,10 +555,10 @@ dir = 5 }, /obj/effect/floor_decal/corner/brown/full, -/obj/item/ammo_magazine/m9mm/large, -/obj/item/ammo_magazine/m9mm/large, -/obj/item/ammo_magazine/m9mm/large, -/obj/item/ammo_magazine/m9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, /turf/simulated/floor/tiled, /area/submap/debrisfield_vr/tinyshuttle/crew) "be" = ( diff --git a/maps/submaps/level_specific/virgo2/DJOutpost1.dmm b/maps/submaps/level_specific/virgo2/DJOutpost1.dmm index 5cb6f725834..89337ef0403 100644 --- a/maps/submaps/level_specific/virgo2/DJOutpost1.dmm +++ b/maps/submaps/level_specific/virgo2/DJOutpost1.dmm @@ -268,7 +268,7 @@ /area/submap/virgo2/DJOutpost1) "P" = ( /obj/structure/table/rack, -/obj/item/ammo_magazine/clip/c762/hunter, +/obj/item/ammo_magazine/a7_62mm/clip/hunter, /obj/item/gun/ballistic/shotgun/pump/rifle, /turf/simulated/floor/wood, /area/submap/virgo2/DJOutpost1) diff --git a/maps/submaps/level_specific/virgo2/DoomP.dmm b/maps/submaps/level_specific/virgo2/DoomP.dmm index d367cdd4e82..678e7b33014 100644 --- a/maps/submaps/level_specific/virgo2/DoomP.dmm +++ b/maps/submaps/level_specific/virgo2/DoomP.dmm @@ -348,8 +348,8 @@ "bs" = ( /obj/structure/table/rack, /obj/item/gun/ballistic/contender, -/obj/item/ammo_magazine/s357, -/obj/item/ammo_magazine/s357, +/obj/item/ammo_magazine/a357/speedloader, +/obj/item/ammo_magazine/a357/speedloader, /turf/simulated/floor/tiled/techfloor, /area/submap/virgo2/DoomP) "bt" = ( diff --git a/maps/submaps/level_specific/virgo2/Rockybase.dmm b/maps/submaps/level_specific/virgo2/Rockybase.dmm index efc8891a967..f0642ac9f24 100644 --- a/maps/submaps/level_specific/virgo2/Rockybase.dmm +++ b/maps/submaps/level_specific/virgo2/Rockybase.dmm @@ -229,9 +229,9 @@ /obj/item/storage/box/shotgunshells, /obj/item/storage/box/shotgunshells, /obj/item/storage/box/shotgunshells, -/obj/item/ammo_magazine/m10mm, -/obj/item/ammo_magazine/m10mm, -/obj/item/ammo_magazine/m10mm, +/obj/item/ammo_magazine/a10mm, +/obj/item/ammo_magazine/a10mm, +/obj/item/ammo_magazine/a10mm, /turf/simulated/floor/tiled/techfloor/virgo2, /area/submap/virgo2/Rockybase) "aS" = ( diff --git a/maps/submaps/mountains/Rockb1.dmm b/maps/submaps/mountains/Rockb1.dmm index 6463cee7ab8..1022c3c8236 100644 --- a/maps/submaps/mountains/Rockb1.dmm +++ b/maps/submaps/mountains/Rockb1.dmm @@ -26,7 +26,7 @@ icon_state = "cabinet_closed" }, /obj/item/gun/ballistic/pistol, -/obj/item/ammo_magazine/m9mm/compact, +/obj/item/ammo_magazine/a9mm/compact, /turf/simulated/floor/lino, /area/submap/Rockb1) "h" = ( diff --git a/maps/submaps/mountains/prepper1.dmm b/maps/submaps/mountains/prepper1.dmm index ae3fa8b5209..148dffd532d 100644 --- a/maps/submaps/mountains/prepper1.dmm +++ b/maps/submaps/mountains/prepper1.dmm @@ -97,8 +97,8 @@ "t" = ( /obj/structure/table/rack, /obj/item/gun/ballistic/shotgun/pump/rifle/lever, -/obj/item/ammo_magazine/clip/c762, -/obj/item/ammo_magazine/clip/c762, +/obj/item/ammo_magazine/a7_62mm/clip, +/obj/item/ammo_magazine/a7_62mm/clip, /turf/simulated/floor/plating, /area/submap/cave/prepper1) diff --git a/maps/submaps/wilderness/DJOutpost1.dmm b/maps/submaps/wilderness/DJOutpost1.dmm index f4a9c67cf75..8a6859a515e 100644 --- a/maps/submaps/wilderness/DJOutpost1.dmm +++ b/maps/submaps/wilderness/DJOutpost1.dmm @@ -276,7 +276,7 @@ /area/submap/DJOutpost1) "P" = ( /obj/structure/table/rack, -/obj/item/ammo_magazine/clip/c762/hunter, +/obj/item/ammo_magazine/a7_62mm/clip/hunter, /obj/item/gun/ballistic/shotgun/pump/rifle, /turf/simulated/floor/wood, /area/submap/DJOutpost1) diff --git a/maps/submaps/wilderness/DoomP.dmm b/maps/submaps/wilderness/DoomP.dmm index 926d8772ee1..b0b28271456 100644 --- a/maps/submaps/wilderness/DoomP.dmm +++ b/maps/submaps/wilderness/DoomP.dmm @@ -364,8 +364,8 @@ "bs" = ( /obj/structure/table/rack, /obj/item/gun/ballistic/contender, -/obj/item/ammo_magazine/s357, -/obj/item/ammo_magazine/s357, +/obj/item/ammo_magazine/a357/speedloader, +/obj/item/ammo_magazine/a357/speedloader, /turf/simulated/floor/tiled/techfloor, /area/submap/DoomP) "bt" = ( diff --git a/maps/templates/admin/dhael_centcom.dmm b/maps/templates/admin/dhael_centcom.dmm index e7cc4bbbc50..247c12e9fe5 100644 --- a/maps/templates/admin/dhael_centcom.dmm +++ b/maps/templates/admin/dhael_centcom.dmm @@ -179,14 +179,14 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, /obj/item/gun/ballistic/automatic/sts35, /obj/item/gun/ballistic/automatic/sts35, /turf/unsimulated/floor{ @@ -199,14 +199,14 @@ }, /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, /obj/item/gun/ballistic/automatic/sts35, /obj/item/gun/ballistic/automatic/sts35, /turf/unsimulated/floor{ @@ -367,10 +367,10 @@ /obj/structure/window/reinforced, /obj/item/gun/ballistic/revolver/detective45, /obj/item/gun/ballistic/revolver/detective45, -/obj/item/ammo_magazine/s45, -/obj/item/ammo_magazine/s45, -/obj/item/ammo_magazine/s45, -/obj/item/ammo_magazine/s45, +/obj/item/ammo_magazine/a45/speedloader, +/obj/item/ammo_magazine/a45/speedloader, +/obj/item/ammo_magazine/a45/speedloader, +/obj/item/ammo_magazine/a45/speedloader, /turf/unsimulated/floor{ icon_state = "dark" }, @@ -379,10 +379,10 @@ /obj/structure/table/rack, /obj/structure/window/reinforced, /obj/item/gun/ballistic/automatic/advanced_smg, -/obj/item/ammo_magazine/m9mmAdvanced, -/obj/item/ammo_magazine/m9mmAdvanced, -/obj/item/ammo_magazine/m9mmAdvanced, -/obj/item/ammo_magazine/m9mmAdvanced, +/obj/item/ammo_magazine/a9mm/advanced_smg, +/obj/item/ammo_magazine/a9mm/advanced_smg, +/obj/item/ammo_magazine/a9mm/advanced_smg, +/obj/item/ammo_magazine/a9mm/advanced_smg, /turf/unsimulated/floor{ icon_state = "dark" }, @@ -405,14 +405,14 @@ /obj/item/gun/ballistic/p92x, /obj/item/gun/ballistic/p92x, /obj/item/gun/ballistic/p92x, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, /turf/unsimulated/floor{ icon_state = "dark" }, @@ -3941,16 +3941,16 @@ "lE" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, /turf/unsimulated/floor{ icon_state = "dark" }, @@ -7491,8 +7491,8 @@ "tB" = ( /obj/structure/table/reinforced, /obj/item/clothing/accessory/holster/hip, -/obj/item/ammo_magazine/m44, -/obj/item/ammo_magazine/m44, +/obj/item/ammo_magazine/a44, +/obj/item/ammo_magazine/a44, /obj/item/gun/ballistic/deagle, /turf/unsimulated/floor/wood, /area/centcom/specops) @@ -9809,16 +9809,16 @@ "Ds" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/ammo_magazine/m9mml, -/obj/item/ammo_magazine/m9mml, -/obj/item/ammo_magazine/m9mml, -/obj/item/ammo_magazine/m9mml, -/obj/item/ammo_magazine/m9mml, -/obj/item/ammo_magazine/m9mml, -/obj/item/ammo_magazine/m9mml/ap, -/obj/item/ammo_magazine/m9mml/ap, -/obj/item/ammo_magazine/m9mml/ap, -/obj/item/ammo_magazine/m9mml/ap, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large/ap, +/obj/item/ammo_magazine/a9mm/large/ap, +/obj/item/ammo_magazine/a9mm/large/ap, +/obj/item/ammo_magazine/a9mm/large/ap, /obj/machinery/button/remote/blast_door{ id = "ArmouryC4"; name = "Armoury Access"; @@ -10455,11 +10455,11 @@ "Fy" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/ammo_magazine/m556saw/ap, -/obj/item/ammo_magazine/m556saw/ap, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, +/obj/item/ammo_magazine/a5_56mm/saw/ap, +/obj/item/ammo_magazine/a5_56mm/saw/ap, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, /turf/unsimulated/floor{ icon_state = "dark" }, @@ -11278,16 +11278,16 @@ "IE" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, /turf/unsimulated/floor{ icon_state = "dark" }, @@ -11714,18 +11714,18 @@ "KN" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, /turf/unsimulated/floor{ icon_state = "dark" }, @@ -12351,16 +12351,16 @@ "NJ" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, /obj/machinery/camera/network/crescent, /turf/unsimulated/floor{ icon_state = "dark" @@ -12528,16 +12528,16 @@ "Oq" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, /turf/unsimulated/floor{ icon_state = "dark" }, @@ -13440,16 +13440,16 @@ /obj/structure/table/rack, /obj/item/gun/ballistic/automatic/z8, /obj/item/gun/ballistic/automatic/z8, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, /turf/unsimulated/floor{ icon_state = "dark" }, @@ -14168,14 +14168,14 @@ /obj/structure/table/rack, /obj/item/gun/ballistic/automatic/lmg, /obj/item/gun/ballistic/automatic/lmg, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw/ap, -/obj/item/ammo_magazine/m556saw/ap, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw/ap, +/obj/item/ammo_magazine/a5_56mm/saw/ap, /turf/unsimulated/floor{ icon_state = "dark" }, diff --git a/maps/templates/admin/ert.dmm b/maps/templates/admin/ert.dmm index c9c56d643dc..57ce1c0a1a4 100644 --- a/maps/templates/admin/ert.dmm +++ b/maps/templates/admin/ert.dmm @@ -511,12 +511,12 @@ /area/ship/ert/barracks) "es" = ( /obj/structure/closet/crate, -/obj/item/ammo_magazine/m9mml/ap, -/obj/item/ammo_magazine/m9mml/ap, -/obj/item/ammo_magazine/m9mml/ap, -/obj/item/ammo_magazine/m9mml/ap, -/obj/item/ammo_magazine/m9mml/ap, -/obj/item/ammo_magazine/m9mml/ap, +/obj/item/ammo_magazine/a9mm/large/ap, +/obj/item/ammo_magazine/a9mm/large/ap, +/obj/item/ammo_magazine/a9mm/large/ap, +/obj/item/ammo_magazine/a9mm/large/ap, +/obj/item/ammo_magazine/a9mm/large/ap, +/obj/item/ammo_magazine/a9mm/large/ap, /obj/structure/cable/yellow{ icon_state = "4-8" }, @@ -1098,18 +1098,18 @@ /obj/item/gun/ballistic/automatic/pdw, /obj/item/gun/ballistic/automatic/pdw, /obj/item/gun/ballistic/automatic/pdw, -/obj/item/ammo_magazine/m9mml, -/obj/item/ammo_magazine/m9mml, -/obj/item/ammo_magazine/m9mml, -/obj/item/ammo_magazine/m9mml, -/obj/item/ammo_magazine/m9mml, -/obj/item/ammo_magazine/m9mml, -/obj/item/ammo_magazine/m9mml, -/obj/item/ammo_magazine/m9mml, -/obj/item/ammo_magazine/m9mml, -/obj/item/ammo_magazine/m9mml, -/obj/item/ammo_magazine/m9mml, -/obj/item/ammo_magazine/m9mml, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, /obj/effect/floor_decal/industrial/outline/grey, /turf/simulated/floor/tiled/techfloor, /area/ship/ert/armoury_st) @@ -2975,18 +2975,18 @@ /obj/item/gun/ballistic/p92x, /obj/item/gun/ballistic/p92x, /obj/item/gun/ballistic/p92x, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, /turf/simulated/floor/tiled/techfloor, /area/ship/ert/armoury_st) "xi" = ( @@ -2994,12 +2994,12 @@ /obj/effect/floor_decal/industrial/outline/grey, /obj/item/gun/ballistic/automatic/sts35, /obj/item/gun/ballistic/automatic/sts35, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, /turf/simulated/floor/tiled/techfloor, /area/ship/ert/armoury_st) "xt" = ( @@ -3584,18 +3584,18 @@ /obj/structure/table/rack/steel, /obj/item/gun/ballistic/automatic/z8, /obj/item/gun/ballistic/automatic/z8, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, /obj/machinery/light_switch{ dir = 1; pixel_y = -23 @@ -4781,18 +4781,18 @@ /obj/effect/floor_decal/industrial/outline/grey, /obj/item/gun/ballistic/automatic/z8, /obj/item/gun/ballistic/automatic/z8, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, /turf/simulated/floor/tiled/techfloor, /area/ship/ert/armoury_dl) "Kb" = ( @@ -6039,20 +6039,20 @@ /obj/structure/table/rack/steel, /obj/item/gun/ballistic/automatic/p90, /obj/item/gun/ballistic/automatic/p90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, /obj/item/gun/ballistic/automatic/p90, /obj/item/gun/ballistic/automatic/p90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, /obj/effect/floor_decal/industrial/outline/grey, /turf/simulated/floor/tiled/techfloor, /area/ship/ert/armoury_dl) @@ -6060,10 +6060,10 @@ /obj/structure/table/rack/steel, /obj/item/gun/ballistic/automatic/lmg, /obj/item/gun/ballistic/automatic/lmg, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, /obj/effect/floor_decal/industrial/outline/grey, /turf/simulated/floor/tiled/techfloor, /area/ship/ert/armoury_dl) @@ -6095,8 +6095,8 @@ "SD" = ( /obj/structure/table/rack, /obj/item/gun/ballistic/deagle, -/obj/item/ammo_magazine/m44, -/obj/item/ammo_magazine/m44, +/obj/item/ammo_magazine/a44, +/obj/item/ammo_magazine/a44, /turf/simulated/floor/wood, /area/ship/ert/commander) "SE" = ( diff --git a/maps/templates/admin/ert_base.dmm b/maps/templates/admin/ert_base.dmm index 9c11eca30bf..96879d65dce 100644 --- a/maps/templates/admin/ert_base.dmm +++ b/maps/templates/admin/ert_base.dmm @@ -500,16 +500,16 @@ "ba" = ( /obj/structure/table/rack/steel, /obj/item/gun/ballistic/automatic/advanced_smg, -/obj/item/ammo_magazine/m9mmAdvanced, -/obj/item/ammo_magazine/m9mmAdvanced, -/obj/item/ammo_magazine/m9mmAdvanced, -/obj/item/ammo_magazine/m9mmAdvanced, +/obj/item/ammo_magazine/a9mm/advanced_smg, +/obj/item/ammo_magazine/a9mm/advanced_smg, +/obj/item/ammo_magazine/a9mm/advanced_smg, +/obj/item/ammo_magazine/a9mm/advanced_smg, /obj/item/gun/ballistic/revolver/detective45, /obj/item/gun/ballistic/revolver/detective45, -/obj/item/ammo_magazine/s45, -/obj/item/ammo_magazine/s45, -/obj/item/ammo_magazine/s45, -/obj/item/ammo_magazine/s45, +/obj/item/ammo_magazine/a45/speedloader, +/obj/item/ammo_magazine/a45/speedloader, +/obj/item/ammo_magazine/a45/speedloader, +/obj/item/ammo_magazine/a45/speedloader, /turf/simulated/shuttle/floor/black, /area/shuttle/specops/centcom) "bb" = ( @@ -611,12 +611,12 @@ /obj/structure/table/rack/steel, /obj/item/gun/ballistic/automatic/sts35, /obj/item/gun/ballistic/automatic/sts35, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, /turf/simulated/shuttle/floor/black, /area/shuttle/specops/centcom) "bo" = ( @@ -694,14 +694,14 @@ "bw" = ( /obj/structure/window/reinforced, /obj/structure/table/rack/steel, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, /obj/item/gun/ballistic/p92x, /obj/item/gun/ballistic/p92x, /obj/item/gun/ballistic/p92x, @@ -720,12 +720,12 @@ /obj/structure/table/rack/steel, /obj/item/gun/ballistic/automatic/sts35, /obj/item/gun/ballistic/automatic/sts35, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, /turf/simulated/shuttle/floor/black, /area/shuttle/specops/centcom) "bz" = ( @@ -1908,8 +1908,8 @@ pixel_y = -35 }, /obj/item/gun/ballistic/deagle, -/obj/item/ammo_magazine/m44, -/obj/item/ammo_magazine/m44, +/obj/item/ammo_magazine/a44, +/obj/item/ammo_magazine/a44, /turf/simulated/shuttle/floor/black, /area/shuttle/specops/centcom) "dS" = ( diff --git a/maps/templates/admin/kk_mercship.dmm b/maps/templates/admin/kk_mercship.dmm index e7d2cb37558..16b08549308 100644 --- a/maps/templates/admin/kk_mercship.dmm +++ b/maps/templates/admin/kk_mercship.dmm @@ -1131,10 +1131,10 @@ "fK" = ( /obj/structure/table/rack, /obj/item/gun/ballistic/revolver/consul, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, /obj/item/clothing/accessory/holster/armpit, /turf/simulated/floor/wood, /area/ship/manta/commander) @@ -1548,10 +1548,10 @@ /obj/structure/table/rack, /obj/item/gun/ballistic/automatic/c20r, /obj/item/gun/ballistic/automatic/c20r, -/obj/item/ammo_magazine/m10mm, -/obj/item/ammo_magazine/m10mm, -/obj/item/ammo_magazine/m10mm, -/obj/item/ammo_magazine/m10mm, +/obj/item/ammo_magazine/a10mm, +/obj/item/ammo_magazine/a10mm, +/obj/item/ammo_magazine/a10mm, +/obj/item/ammo_magazine/a10mm, /obj/effect/floor_decal/techfloor{ dir = 9 }, @@ -1559,8 +1559,8 @@ dir = 8 }, /obj/item/gun/ballistic/automatic/c20r, -/obj/item/ammo_magazine/m10mm, -/obj/item/ammo_magazine/m10mm, +/obj/item/ammo_magazine/a10mm, +/obj/item/ammo_magazine/a10mm, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/armoury_st) "hV" = ( @@ -1604,11 +1604,11 @@ /obj/structure/table/rack, /obj/item/gun/ballistic/silenced, /obj/item/gun/ballistic/silenced, -/obj/item/ammo_magazine/m45, -/obj/item/ammo_magazine/m45, -/obj/item/ammo_magazine/m45/ap, -/obj/item/ammo_magazine/m45, -/obj/item/ammo_magazine/m45/rubber, +/obj/item/ammo_magazine/a45, +/obj/item/ammo_magazine/a45, +/obj/item/ammo_magazine/a45/ap, +/obj/item/ammo_magazine/a45, +/obj/item/ammo_magazine/a45/rubber, /obj/effect/floor_decal/techfloor{ dir = 5 }, @@ -2267,16 +2267,16 @@ /obj/structure/table/rack, /obj/item/gun/ballistic/automatic/c20r, /obj/item/gun/ballistic/automatic/c20r, -/obj/item/ammo_magazine/m10mm, -/obj/item/ammo_magazine/m10mm, -/obj/item/ammo_magazine/m10mm, -/obj/item/ammo_magazine/m10mm, +/obj/item/ammo_magazine/a10mm, +/obj/item/ammo_magazine/a10mm, +/obj/item/ammo_magazine/a10mm, +/obj/item/ammo_magazine/a10mm, /obj/effect/floor_decal/techfloor{ dir = 8 }, /obj/item/gun/ballistic/automatic/c20r, -/obj/item/ammo_magazine/m10mm, -/obj/item/ammo_magazine/m10mm, +/obj/item/ammo_magazine/a10mm, +/obj/item/ammo_magazine/a10mm, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/armoury_st) "lk" = ( @@ -2295,11 +2295,11 @@ /obj/structure/table/rack, /obj/item/gun/ballistic/automatic/sts35, /obj/item/gun/ballistic/automatic/sts35, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556/ap, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm/ap, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/armoury_st) "lq" = ( @@ -3031,11 +3031,11 @@ /obj/structure/table/rack, /obj/item/gun/ballistic/silenced, /obj/item/gun/ballistic/silenced, -/obj/item/ammo_magazine/m45, -/obj/item/ammo_magazine/m45, -/obj/item/ammo_magazine/m45/ap, -/obj/item/ammo_magazine/m45, -/obj/item/ammo_magazine/m45/rubber, +/obj/item/ammo_magazine/a45, +/obj/item/ammo_magazine/a45, +/obj/item/ammo_magazine/a45/ap, +/obj/item/ammo_magazine/a45, +/obj/item/ammo_magazine/a45/rubber, /obj/effect/floor_decal/techfloor{ dir = 4 }, @@ -6715,12 +6715,12 @@ /area/ship/manta/hallways_port) "HL" = ( /obj/structure/table/rack, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, /obj/item/gun/ballistic/revolver/consul, /obj/effect/floor_decal/techfloor{ dir = 8 @@ -8452,14 +8452,14 @@ /area/ship/manta/recreation) "RC" = ( /obj/structure/table/rack, -/obj/item/ammo_magazine/m9mm, -/obj/item/ammo_magazine/m9mm, -/obj/item/ammo_magazine/m9mm, -/obj/item/ammo_magazine/m9mm, -/obj/item/ammo_magazine/m9mm, -/obj/item/ammo_magazine/m9mm, -/obj/item/ammo_magazine/m9mm, -/obj/item/ammo_magazine/m9mm, +/obj/item/ammo_magazine/a9mm, +/obj/item/ammo_magazine/a9mm, +/obj/item/ammo_magazine/a9mm, +/obj/item/ammo_magazine/a9mm, +/obj/item/ammo_magazine/a9mm, +/obj/item/ammo_magazine/a9mm, +/obj/item/ammo_magazine/a9mm, +/obj/item/ammo_magazine/a9mm, /obj/item/gun/ballistic/luger, /obj/item/gun/ballistic/luger/brown, /obj/effect/floor_decal/techfloor{ @@ -9278,22 +9278,22 @@ /obj/item/gun/ballistic/automatic/bullpup, /obj/item/gun/ballistic/automatic/bullpup, /obj/item/gun/ballistic/automatic/bullpup, -/obj/item/ammo_magazine/m762m, -/obj/item/ammo_magazine/m762m, -/obj/item/ammo_magazine/m762m, -/obj/item/ammo_magazine/m762m, -/obj/item/ammo_magazine/m762m, -/obj/item/ammo_magazine/m762m, -/obj/item/ammo_magazine/m762m, -/obj/item/ammo_magazine/m762m, -/obj/item/ammo_magazine/m762m/ap, -/obj/item/ammo_magazine/m762m/ap, -/obj/item/ammo_magazine/m762m/ap, -/obj/item/ammo_magazine/m762m/ap, -/obj/item/ammo_magazine/m762m, -/obj/item/ammo_magazine/m762m, -/obj/item/ammo_magazine/m762m, -/obj/item/ammo_magazine/m762m, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/armoury_as) "Vx" = ( diff --git a/maps/templates/admin/mercbase.dmm b/maps/templates/admin/mercbase.dmm index 02f76b2c745..59eb33bbafb 100644 --- a/maps/templates/admin/mercbase.dmm +++ b/maps/templates/admin/mercbase.dmm @@ -81,16 +81,16 @@ /obj/effect/floor_decal/corner/red{ dir = 5 }, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, /obj/item/gun/ballistic/automatic/sts35, /obj/item/gun/ballistic/automatic/sts35, /turf/unsimulated/floor{ @@ -246,12 +246,12 @@ /obj/effect/floor_decal/corner/red{ dir = 10 }, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, /obj/item/gun/ballistic/revolver/consul, /turf/unsimulated/floor{ icon_state = "dark" @@ -275,14 +275,14 @@ /obj/effect/floor_decal/corner/red{ dir = 10 }, -/obj/item/ammo_magazine/m9mm, -/obj/item/ammo_magazine/m9mm, -/obj/item/ammo_magazine/m9mm, -/obj/item/ammo_magazine/m9mm, -/obj/item/ammo_magazine/m9mm, -/obj/item/ammo_magazine/m9mm, -/obj/item/ammo_magazine/m9mm, -/obj/item/ammo_magazine/m9mm, +/obj/item/ammo_magazine/a9mm, +/obj/item/ammo_magazine/a9mm, +/obj/item/ammo_magazine/a9mm, +/obj/item/ammo_magazine/a9mm, +/obj/item/ammo_magazine/a9mm, +/obj/item/ammo_magazine/a9mm, +/obj/item/ammo_magazine/a9mm, +/obj/item/ammo_magazine/a9mm, /obj/item/gun/ballistic/luger, /obj/item/gun/ballistic/luger/brown, /turf/unsimulated/floor{ @@ -675,18 +675,18 @@ /area/antag/antag_base) "be" = ( /obj/structure/table/rack, -/obj/item/ammo_magazine/m10mm, -/obj/item/ammo_magazine/m10mm, -/obj/item/ammo_magazine/m10mm, -/obj/item/ammo_magazine/m10mm, -/obj/item/ammo_magazine/m10mm, -/obj/item/ammo_magazine/m10mm, -/obj/item/ammo_magazine/m10mm, -/obj/item/ammo_magazine/m10mm, -/obj/item/ammo_magazine/m10mm, -/obj/item/ammo_magazine/m10mm, -/obj/item/ammo_magazine/m10mm, -/obj/item/ammo_magazine/m10mm, +/obj/item/ammo_magazine/a10mm, +/obj/item/ammo_magazine/a10mm, +/obj/item/ammo_magazine/a10mm, +/obj/item/ammo_magazine/a10mm, +/obj/item/ammo_magazine/a10mm, +/obj/item/ammo_magazine/a10mm, +/obj/item/ammo_magazine/a10mm, +/obj/item/ammo_magazine/a10mm, +/obj/item/ammo_magazine/a10mm, +/obj/item/ammo_magazine/a10mm, +/obj/item/ammo_magazine/a10mm, +/obj/item/ammo_magazine/a10mm, /obj/item/gun/ballistic/automatic/c20r, /obj/item/gun/ballistic/automatic/c20r, /obj/item/gun/ballistic/automatic/c20r, @@ -814,19 +814,19 @@ /area/antag/antag_base) "bn" = ( /obj/structure/table/rack, -/obj/item/ammo_magazine/m45/rubber, -/obj/item/ammo_magazine/m45/rubber, -/obj/item/ammo_magazine/m45/rubber, -/obj/item/ammo_magazine/m45/rubber, -/obj/item/ammo_magazine/m45/rubber, -/obj/item/ammo_magazine/m45/rubber, -/obj/item/ammo_magazine/m45, -/obj/item/ammo_magazine/m45, -/obj/item/ammo_magazine/m45, -/obj/item/ammo_magazine/m45, -/obj/item/ammo_magazine/m45, -/obj/item/ammo_magazine/m45, -/obj/item/ammo_magazine/m45, +/obj/item/ammo_magazine/a45/rubber, +/obj/item/ammo_magazine/a45/rubber, +/obj/item/ammo_magazine/a45/rubber, +/obj/item/ammo_magazine/a45/rubber, +/obj/item/ammo_magazine/a45/rubber, +/obj/item/ammo_magazine/a45/rubber, +/obj/item/ammo_magazine/a45, +/obj/item/ammo_magazine/a45, +/obj/item/ammo_magazine/a45, +/obj/item/ammo_magazine/a45, +/obj/item/ammo_magazine/a45, +/obj/item/ammo_magazine/a45, +/obj/item/ammo_magazine/a45, /obj/effect/floor_decal/corner/red{ dir = 9 }, @@ -3346,11 +3346,11 @@ /area/shuttle/mercenary) "fO" = ( /obj/structure/table/rack, -/obj/item/ammo_magazine/m380, -/obj/item/ammo_magazine/m380, -/obj/item/ammo_magazine/m380, -/obj/item/ammo_magazine/m380, -/obj/item/ammo_magazine/m380, +/obj/item/ammo_magazine/a38, +/obj/item/ammo_magazine/a38, +/obj/item/ammo_magazine/a38, +/obj/item/ammo_magazine/a38, +/obj/item/ammo_magazine/a38, /obj/item/gun/ballistic/giskard, /obj/item/clothing/accessory/holster, /turf/simulated/shuttle/floor{ diff --git a/maps/templates/shelters/shelter_4.dmm b/maps/templates/shelters/shelter_4.dmm index 6b7233bf0d2..4995bc145b3 100644 --- a/maps/templates/shelters/shelter_4.dmm +++ b/maps/templates/shelters/shelter_4.dmm @@ -108,11 +108,11 @@ }, /obj/structure/closet/secure_closet/personal, /obj/item/modular_computer/laptop/preset/custom_loadout/elite, -/obj/item/ammo_magazine/m9mm/compact, -/obj/item/ammo_magazine/m9mm/compact, -/obj/item/ammo_magazine/m9mm/compact, -/obj/item/ammo_magazine/m9mm/compact/flash, -/obj/item/ammo_magazine/m9mm/compact/flash, +/obj/item/ammo_magazine/a9mm/compact, +/obj/item/ammo_magazine/a9mm/compact, +/obj/item/ammo_magazine/a9mm/compact, +/obj/item/ammo_magazine/a9mm/compact/flash, +/obj/item/ammo_magazine/a9mm/compact/flash, /obj/item/gun/ballistic/pistol, /obj/item/clothing/accessory/storage/black_vest, /obj/item/material/knife/tacknife/survival, @@ -234,11 +234,11 @@ "B" = ( /obj/structure/closet/secure_closet/personal, /obj/item/modular_computer/laptop/preset/custom_loadout/elite, -/obj/item/ammo_magazine/m9mm/compact, -/obj/item/ammo_magazine/m9mm/compact, -/obj/item/ammo_magazine/m9mm/compact, -/obj/item/ammo_magazine/m9mm/compact/flash, -/obj/item/ammo_magazine/m9mm/compact/flash, +/obj/item/ammo_magazine/a9mm/compact, +/obj/item/ammo_magazine/a9mm/compact, +/obj/item/ammo_magazine/a9mm/compact, +/obj/item/ammo_magazine/a9mm/compact/flash, +/obj/item/ammo_magazine/a9mm/compact/flash, /obj/item/gun/ballistic/pistol, /obj/item/clothing/accessory/storage/black_vest, /obj/item/material/knife/tacknife/survival, @@ -424,16 +424,16 @@ /area/survivalpod) "T" = ( /obj/structure/closet/crate/secure/weapon, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, /obj/item/cell/device/weapon, /obj/item/cell/device/weapon, /obj/item/cell/device/weapon, diff --git a/maps/templates/shuttles/overmaps/generic/abductor.dmm b/maps/templates/shuttles/overmaps/generic/abductor.dmm index 1c9c055f1d5..9b0de8d6e28 100644 --- a/maps/templates/shuttles/overmaps/generic/abductor.dmm +++ b/maps/templates/shuttles/overmaps/generic/abductor.dmm @@ -882,12 +882,12 @@ /obj/item/ammo_casing/microbattery/medical/omni3, /obj/item/ammo_casing/microbattery/medical/omni3, /obj/structure/closet/alien, -/obj/item/ammo_magazine/cell_mag/advanced, -/obj/item/ammo_magazine/cell_mag/advanced, -/obj/item/ammo_magazine/cell_mag/advanced, -/obj/item/ammo_magazine/cell_mag/advanced, -/obj/item/gun/ballistic/cell_loaded, -/obj/item/gun/ballistic/cell_loaded, +/obj/item/ammo_magazine/microbattery/advanced, +/obj/item/ammo_magazine/microbattery/advanced, +/obj/item/ammo_magazine/microbattery/advanced, +/obj/item/ammo_magazine/microbattery/advanced, +/obj/item/gun/ballistic/microbattery, +/obj/item/gun/ballistic/microbattery, /turf/simulated/shuttle/floor/alienplating, /area/abductor/interior) "Zk" = ( diff --git a/maps/templates/shuttles/overmaps/generic/cruiser.dmm b/maps/templates/shuttles/overmaps/generic/cruiser.dmm index 19ef6ed79ff..5472b593c6c 100644 --- a/maps/templates/shuttles/overmaps/generic/cruiser.dmm +++ b/maps/templates/shuttles/overmaps/generic/cruiser.dmm @@ -5113,14 +5113,14 @@ /turf/simulated/floor/tiled/steel_grid, /area/mothership/armory) "lD" = ( -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, -/obj/item/ammo_magazine/m9mm/large/licensed, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, /obj/item/gun/ballistic/p92x, /obj/item/gun/ballistic/p92x, /obj/item/gun/ballistic/p92x, @@ -5134,21 +5134,21 @@ /turf/simulated/floor/tiled/steel_grid, /area/mothership/armory) "lE" = ( -/obj/item/ammo_magazine/m9mm/compact, -/obj/item/ammo_magazine/m9mm/compact, -/obj/item/ammo_magazine/m9mm/compact, -/obj/item/ammo_magazine/m9mm/compact, -/obj/item/ammo_magazine/m9mm/compact, -/obj/item/ammo_magazine/m9mm/compact, -/obj/item/ammo_magazine/m9mm/compact/flash, -/obj/item/ammo_magazine/m9mm/compact/flash, -/obj/item/ammo_magazine/m9mm/compact/flash, -/obj/item/ammo_magazine/m9mm/compact/rubber, -/obj/item/ammo_magazine/m9mm/compact/rubber, -/obj/item/ammo_magazine/m9mm/compact/rubber, -/obj/item/ammo_magazine/m9mm/compact/practice, -/obj/item/ammo_magazine/m9mm/compact/practice, -/obj/item/ammo_magazine/m9mm/compact/practice, +/obj/item/ammo_magazine/a9mm/compact, +/obj/item/ammo_magazine/a9mm/compact, +/obj/item/ammo_magazine/a9mm/compact, +/obj/item/ammo_magazine/a9mm/compact, +/obj/item/ammo_magazine/a9mm/compact, +/obj/item/ammo_magazine/a9mm/compact, +/obj/item/ammo_magazine/a9mm/compact/flash, +/obj/item/ammo_magazine/a9mm/compact/flash, +/obj/item/ammo_magazine/a9mm/compact/flash, +/obj/item/ammo_magazine/a9mm/compact/rubber, +/obj/item/ammo_magazine/a9mm/compact/rubber, +/obj/item/ammo_magazine/a9mm/compact/rubber, +/obj/item/ammo_magazine/a9mm/compact/practice, +/obj/item/ammo_magazine/a9mm/compact/practice, +/obj/item/ammo_magazine/a9mm/compact/practice, /obj/item/gun/ballistic/pistol, /obj/item/gun/ballistic/pistol, /obj/item/gun/ballistic/pistol, @@ -5509,22 +5509,22 @@ /turf/simulated/floor/tiled/steel_ridged, /area/mothership/bridge) "mu" = ( -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, /obj/item/gun/ballistic/automatic/sts35, /obj/item/gun/ballistic/automatic/sts35, /obj/item/gun/ballistic/automatic/sts35, @@ -5625,24 +5625,24 @@ /turf/simulated/floor/tiled/steel_grid, /area/mothership/bridge) "mI" = ( -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, /obj/item/gun/ballistic/automatic/p90, /obj/item/gun/ballistic/automatic/p90, -/obj/item/ammo_magazine/m9mmt/flash, -/obj/item/ammo_magazine/m9mmt/flash, -/obj/item/ammo_magazine/m9mmt/flash, -/obj/item/ammo_magazine/m9mmt/flash, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/flash, +/obj/item/ammo_magazine/a9mm/top_mount/flash, +/obj/item/ammo_magazine/a9mm/top_mount/flash, +/obj/item/ammo_magazine/a9mm/top_mount/flash, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, /obj/structure/closet/secure_closet/guncabinet{ req_one_access = list(103) }, @@ -5670,16 +5670,16 @@ }, /obj/item/gun/ballistic/automatic/lmg, /obj/item/gun/ballistic/automatic/lmg, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw/ap, -/obj/item/ammo_magazine/m556saw/ap, -/obj/item/ammo_magazine/m556saw/ap, -/obj/item/ammo_magazine/m556saw/ap, -/obj/item/ammo_magazine/m556saw/ap, -/obj/item/ammo_magazine/m556saw/ap, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw/ap, +/obj/item/ammo_magazine/a5_56mm/saw/ap, +/obj/item/ammo_magazine/a5_56mm/saw/ap, +/obj/item/ammo_magazine/a5_56mm/saw/ap, +/obj/item/ammo_magazine/a5_56mm/saw/ap, +/obj/item/ammo_magazine/a5_56mm/saw/ap, /turf/simulated/floor/tiled/steel_grid, /area/mothership/armory) "mL" = ( @@ -6058,16 +6058,16 @@ /obj/item/gun/ballistic/heavysniper, /obj/item/storage/box/sniperammo, /obj/item/storage/box/sniperammo, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, /obj/item/storage/box/sniperammo, /obj/item/storage/box/sniperammo, /turf/simulated/floor/tiled/steel_grid, diff --git a/maps/templates/shuttles/overmaps/generic/shelter_6.dmm b/maps/templates/shuttles/overmaps/generic/shelter_6.dmm index 59af7740526..242fc42c382 100644 --- a/maps/templates/shuttles/overmaps/generic/shelter_6.dmm +++ b/maps/templates/shuttles/overmaps/generic/shelter_6.dmm @@ -227,46 +227,46 @@ /obj/item/gun/energy/laser, /obj/item/gun/ballistic/automatic/p90, /obj/item/gun/ballistic/automatic/p90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m9mmt/flash, -/obj/item/ammo_magazine/m9mmt/flash, -/obj/item/ammo_magazine/m9mmt/flash, -/obj/item/ammo_magazine/m9mmt/flash, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a9mm/top_mount/flash, +/obj/item/ammo_magazine/a9mm/top_mount/flash, +/obj/item/ammo_magazine/a9mm/top_mount/flash, +/obj/item/ammo_magazine/a9mm/top_mount/flash, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, /obj/item/gun/ballistic/automatic/sts35, /obj/item/gun/ballistic/automatic/sts35, /obj/item/gun/ballistic/automatic/sts35, /obj/item/gun/ballistic/automatic/sts35, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, /obj/item/gun/ballistic/shotgun/pump/combat, /obj/item/gun/ballistic/shotgun/pump/combat, /obj/item/storage/box/shotgunshells/large, @@ -753,21 +753,21 @@ /obj/item/gun/ballistic/pistol, /obj/item/gun/ballistic/pistol, /obj/item/gun/ballistic/pistol, -/obj/item/ammo_magazine/m9mm/compact, -/obj/item/ammo_magazine/m9mm/compact, -/obj/item/ammo_magazine/m9mm/compact, -/obj/item/ammo_magazine/m9mm/compact, -/obj/item/ammo_magazine/m9mm/compact, -/obj/item/ammo_magazine/m9mm/compact, -/obj/item/ammo_magazine/m9mm/compact/flash, -/obj/item/ammo_magazine/m9mm/compact/flash, -/obj/item/ammo_magazine/m9mm/compact/flash, -/obj/item/ammo_magazine/m9mm/compact/rubber, -/obj/item/ammo_magazine/m9mm/compact/rubber, -/obj/item/ammo_magazine/m9mm/compact/rubber, -/obj/item/ammo_magazine/m9mm/compact/practice, -/obj/item/ammo_magazine/m9mm/compact/practice, -/obj/item/ammo_magazine/m9mm/compact/practice, +/obj/item/ammo_magazine/a9mm/compact, +/obj/item/ammo_magazine/a9mm/compact, +/obj/item/ammo_magazine/a9mm/compact, +/obj/item/ammo_magazine/a9mm/compact, +/obj/item/ammo_magazine/a9mm/compact, +/obj/item/ammo_magazine/a9mm/compact, +/obj/item/ammo_magazine/a9mm/compact/flash, +/obj/item/ammo_magazine/a9mm/compact/flash, +/obj/item/ammo_magazine/a9mm/compact/flash, +/obj/item/ammo_magazine/a9mm/compact/rubber, +/obj/item/ammo_magazine/a9mm/compact/rubber, +/obj/item/ammo_magazine/a9mm/compact/rubber, +/obj/item/ammo_magazine/a9mm/compact/practice, +/obj/item/ammo_magazine/a9mm/compact/practice, +/obj/item/ammo_magazine/a9mm/compact/practice, /obj/item/clothing/glasses/thermal, /obj/item/clothing/glasses/thermal, /obj/item/clothing/glasses/graviton, @@ -1340,31 +1340,31 @@ /obj/item/gun/energy/pulse_rifle, /obj/item/gun/ballistic/automatic/lmg, /obj/item/gun/ballistic/automatic/lmg, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw/ap, -/obj/item/ammo_magazine/m556saw/ap, -/obj/item/ammo_magazine/m556saw/ap, -/obj/item/ammo_magazine/m556saw/ap, -/obj/item/ammo_magazine/m556saw/ap, -/obj/item/ammo_magazine/m556saw/ap, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw/ap, +/obj/item/ammo_magazine/a5_56mm/saw/ap, +/obj/item/ammo_magazine/a5_56mm/saw/ap, +/obj/item/ammo_magazine/a5_56mm/saw/ap, +/obj/item/ammo_magazine/a5_56mm/saw/ap, +/obj/item/ammo_magazine/a5_56mm/saw/ap, /obj/item/gun/ballistic/automatic/z8, /obj/item/gun/ballistic/automatic/z8, /obj/item/gun/ballistic/heavysniper, /obj/item/storage/box/sniperammo, /obj/item/storage/box/sniperammo, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, /obj/item/storage/box/sniperammo, /obj/item/storage/box/sniperammo, /obj/item/modular_computer/laptop, diff --git a/maps/tether/levels/station2.dmm b/maps/tether/levels/station2.dmm index 0eb957b45a9..5affacd8781 100644 --- a/maps/tether/levels/station2.dmm +++ b/maps/tether/levels/station2.dmm @@ -13492,8 +13492,8 @@ req_access = list(1) }, /obj/item/gun/ballistic/revolver/consul, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) "Br" = ( diff --git a/maps/tether/levels/surface1.dmm b/maps/tether/levels/surface1.dmm index b85f8b96127..5448b6472bc 100644 --- a/maps/tether/levels/surface1.dmm +++ b/maps/tether/levels/surface1.dmm @@ -7923,8 +7923,8 @@ /obj/structure/table/reinforced, /obj/item/gun/energy/laser/practice, /obj/item/gun/ballistic/shotgun/pump/rifle/practice, -/obj/item/ammo_magazine/clip/c762/practice, -/obj/item/ammo_magazine/clip/c762/practice, +/obj/item/ammo_magazine/a7_62mm/clip/practice, +/obj/item/ammo_magazine/a7_62mm/clip/practice, /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/weaponsrange) "eff" = ( @@ -35668,20 +35668,20 @@ pixel_x = 2; pixel_y = -2 }, -/obj/item/ammo_magazine/clip/c762/practice, -/obj/item/ammo_magazine/clip/c762/practice, +/obj/item/ammo_magazine/a7_62mm/clip/practice, +/obj/item/ammo_magazine/a7_62mm/clip/practice, /obj/machinery/recharger/wallcharger{ pixel_x = 4; pixel_y = -28 }, -/obj/item/ammo_magazine/m45/practice, -/obj/item/ammo_magazine/m45/practice, -/obj/item/ammo_magazine/m45/practice, -/obj/item/ammo_magazine/m45/practice, -/obj/item/ammo_magazine/m45/practice, -/obj/item/ammo_magazine/m45/practice, -/obj/item/ammo_magazine/m9mmt/practice, -/obj/item/ammo_magazine/m9mmt/practice, +/obj/item/ammo_magazine/a45/practice, +/obj/item/ammo_magazine/a45/practice, +/obj/item/ammo_magazine/a45/practice, +/obj/item/ammo_magazine/a45/practice, +/obj/item/ammo_magazine/a45/practice, +/obj/item/ammo_magazine/a45/practice, +/obj/item/ammo_magazine/a9mm/top_mount/practice, +/obj/item/ammo_magazine/a9mm/top_mount/practice, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/weaponsrange) "tbR" = ( diff --git a/maps/tether/levels/surface2.dmm b/maps/tether/levels/surface2.dmm index 24a893edf85..7014591b4f5 100644 --- a/maps/tether/levels/surface2.dmm +++ b/maps/tether/levels/surface2.dmm @@ -20559,14 +20559,14 @@ pixel_x = 6; pixel_y = -1 }, -/obj/item/ammo_magazine/m45/flash{ +/obj/item/ammo_magazine/a45/flash{ pixel_y = 9 }, -/obj/item/ammo_magazine/m45/flash{ +/obj/item/ammo_magazine/a45/flash{ pixel_x = 3; pixel_y = 3 }, -/obj/item/ammo_magazine/m45/flash{ +/obj/item/ammo_magazine/a45/flash{ pixel_y = -3 }, /turf/simulated/floor/tiled/dark, diff --git a/maps/triumph/levels/deck4.dmm b/maps/triumph/levels/deck4.dmm index 1c493b97281..9c0530db936 100644 --- a/maps/triumph/levels/deck4.dmm +++ b/maps/triumph/levels/deck4.dmm @@ -14688,8 +14688,8 @@ dir = 6 }, /obj/structure/table/rack/shelf/steel, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, /obj/item/gun/ballistic/automatic/z8, /obj/effect/floor_decal/industrial/outline/grey, /obj/machinery/light{ @@ -18746,15 +18746,15 @@ /obj/item/gun/ballistic/fiveseven, /obj/item/gun/ballistic/fiveseven, /obj/item/gun/ballistic/fiveseven, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, -/obj/item/ammo_magazine/m57x28mm/fiveseven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, +/obj/item/ammo_magazine/a5_7mm/five_seven/ap, /turf/simulated/floor/tiled/dark, /area/security/tactical) "mVP" = ( @@ -23551,18 +23551,18 @@ pixel_y = -7 }, /obj/item/gun/ballistic/automatic/wt550, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, /turf/simulated/floor/tiled/dark, /area/security/tactical) "qoS" = ( diff --git a/maps/triumph/levels/flagship.dmm b/maps/triumph/levels/flagship.dmm index 9a561c6ff19..a9bba780a6c 100644 --- a/maps/triumph/levels/flagship.dmm +++ b/maps/triumph/levels/flagship.dmm @@ -221,16 +221,16 @@ "aP" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, /turf/unsimulated/floor{ icon_state = "dark" }, @@ -2302,14 +2302,14 @@ /obj/item/ammo_casing/rocket, /obj/item/gun/ballistic/rocket, /obj/item/gun/ballistic/rocket, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw/ap, -/obj/item/ammo_magazine/m556saw/ap, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw/ap, +/obj/item/ammo_magazine/a5_56mm/saw/ap, /turf/unsimulated/floor{ icon_state = "dark" }, @@ -2863,14 +2863,14 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, /obj/item/gun/ballistic/automatic/sts35, /obj/item/gun/ballistic/automatic/sts35, /turf/unsimulated/floor{ @@ -4478,10 +4478,10 @@ "nV" = ( /obj/structure/table/rack, /obj/structure/window/reinforced, -/obj/item/ammo_magazine/m9mmR/saber, -/obj/item/ammo_magazine/m9mmR/saber, -/obj/item/ammo_magazine/m9mmR/saber, -/obj/item/ammo_magazine/m9mmR/saber, +/obj/item/ammo_magazine/a9mm/advanced_smg, +/obj/item/ammo_magazine/a9mm/advanced_smg, +/obj/item/ammo_magazine/a9mm/advanced_smg, +/obj/item/ammo_magazine/a9mm/advanced_smg, /obj/item/silencer, /obj/item/silencer, /obj/item/silencer, @@ -4760,16 +4760,16 @@ "pc" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/ammo_magazine/m9mml, -/obj/item/ammo_magazine/m9mml, -/obj/item/ammo_magazine/m9mml, -/obj/item/ammo_magazine/m9mml, -/obj/item/ammo_magazine/m9mml, -/obj/item/ammo_magazine/m9mml, -/obj/item/ammo_magazine/m9mml/ap, -/obj/item/ammo_magazine/m9mml/ap, -/obj/item/ammo_magazine/m9mml/ap, -/obj/item/ammo_magazine/m9mml/ap, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large, +/obj/item/ammo_magazine/a9mm/large/ap, +/obj/item/ammo_magazine/a9mm/large/ap, +/obj/item/ammo_magazine/a9mm/large/ap, +/obj/item/ammo_magazine/a9mm/large/ap, /obj/machinery/button/remote/blast_door{ id = "ArmouryC4"; name = "Armoury Access"; @@ -4795,16 +4795,16 @@ /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, /obj/machinery/camera/network/crescent, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, -/obj/item/ammo_magazine/m57x28mmp90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, +/obj/item/ammo_magazine/a5_7mm/p90, /turf/unsimulated/floor{ icon_state = "dark" }, @@ -6250,16 +6250,16 @@ "ts" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, -/obj/item/ammo_magazine/m9mmt, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, +/obj/item/ammo_magazine/a9mm/top_mount, /turf/unsimulated/floor{ icon_state = "dark" }, @@ -10299,18 +10299,18 @@ "Hg" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, -/obj/item/ammo_magazine/m762/ap, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, +/obj/item/ammo_magazine/a7_62mm/ap, /turf/unsimulated/floor{ icon_state = "dark" }, @@ -11404,11 +11404,11 @@ "Kq" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/ammo_magazine/m556saw/ap, -/obj/item/ammo_magazine/m556saw/ap, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, -/obj/item/ammo_magazine/m556saw, +/obj/item/ammo_magazine/a5_56mm/saw/ap, +/obj/item/ammo_magazine/a5_56mm/saw/ap, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, +/obj/item/ammo_magazine/a5_56mm/saw, /turf/unsimulated/floor{ icon_state = "dark" }, @@ -12486,8 +12486,8 @@ /area/centcom/security) "NI" = ( /obj/item/clothing/accessory/holster/hip, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, /obj/item/gun/ballistic/revolver/combat, /obj/structure/table/steel_reinforced, /turf/unsimulated/floor/wood, @@ -14263,16 +14263,16 @@ "Tg" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, -/obj/item/ammo_magazine/m9mmt/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, +/obj/item/ammo_magazine/a9mm/top_mount/rubber, /turf/unsimulated/floor{ icon_state = "dark" }, @@ -14715,14 +14715,14 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, -/obj/item/ammo_magazine/s44, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, +/obj/item/ammo_magazine/a44/speedloader, /obj/item/gun/ballistic/revolver/combat, /obj/item/gun/ballistic/revolver/combat, /obj/item/gun/ballistic/revolver/combat, @@ -14961,10 +14961,10 @@ "VI" = ( /obj/structure/table/rack, /obj/structure/window/reinforced, -/obj/item/ammo_magazine/m57x28mm/smg/ap, -/obj/item/ammo_magazine/m57x28mm/smg/ap, -/obj/item/ammo_magazine/m57x28mm/smg/ap, -/obj/item/ammo_magazine/m57x28mm/smg/ap, +/obj/item/ammo_magazine/a5_7mm/harpy_smg/ap, +/obj/item/ammo_magazine/a5_7mm/harpy_smg/ap, +/obj/item/ammo_magazine/a5_7mm/harpy_smg/ap, +/obj/item/ammo_magazine/a5_7mm/harpy_smg/ap, /obj/item/gun/ballistic/automatic/combat, /obj/item/gun/ballistic/automatic/combat, /obj/item/gun/ballistic/automatic/combat, @@ -15540,14 +15540,14 @@ }, /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556/ap, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, -/obj/item/ammo_magazine/m556, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm/ap, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, +/obj/item/ammo_magazine/a5_56mm, /obj/item/gun/ballistic/automatic/sts35, /obj/item/gun/ballistic/automatic/sts35, /turf/unsimulated/floor{