diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm
index f2b0daf1264..ee1ebd0cfe1 100644
--- a/code/__DEFINES/colors.dm
+++ b/code/__DEFINES/colors.dm
@@ -435,6 +435,7 @@
#define COLOR_ICECREAM_CUSTOM "#f3f3f3"
#define COLOR_ICECREAM_CHERRY_CHOCOLATE "#800000"
+// defines for .38 ammo type colors
#define COLOR_AMMO_TRACK "#bd0ed4"
#define COLOR_AMMO_MATCH "#ff0000a8"
#define COLOR_AMMO_RUBBER "#3d3181"
@@ -443,6 +444,11 @@
#define COLOR_AMMO_HOTSHOT "#ff7b00"
#define COLOR_AMMO_ICEBLOX "#0de3ff"
+// defines for other ammo type colors (should this be merged with above?)
+#define COLOR_AMMO_INCENDIARY "#f4001f"
+#define COLOR_AMMO_ARMORPIERCE "#d9d9d9"
+#define COLOR_AMMO_HOLLOWPOINT "#ff9900"
+
GLOBAL_LIST_INIT(cable_colors, list(
CABLE_COLOR_BLUE = CABLE_HEX_COLOR_BLUE,
CABLE_COLOR_CYAN = CABLE_HEX_COLOR_CYAN,
diff --git a/code/__DEFINES/magazines.dm b/code/__DEFINES/magazines.dm
new file mode 100644
index 00000000000..3a7b19a7768
--- /dev/null
+++ b/code/__DEFINES/magazines.dm
@@ -0,0 +1,21 @@
+/// Appended to the description of magazines that spawn with old-fashioned incendiary ammo, which generally leave fire trails and give firestacks in return for less base damage.
+#define MAGAZINE_DESC_INC "
Carries rounds which ignite targets and leave flaming trails, but inflict less damage."
+/// Appended to the description of magazines that spawn with hollow-point ammo, which generally has higher base damage but is weak against armor.
+#define MAGAZINE_DESC_HOLLOWPOINT "
Carries hollow-point rounds which are effective against unarmored targets, but suffer greatly against armor."
+/// Appended to the description of magazines that spawn with armor-piercing ammo, which generally has less base damage but penetrates armor.
+#define MAGAZINE_DESC_ARMORPIERCE "
Carries armor-piercing rounds which are effective against armored targets, but less effective against unarmored targets."
+
+/// Defines a magazine to, visually, be for incendiary ammo by setting the ammo band color and appending a short blurb to the description.
+#define MAGAZINE_TYPE_INCENDIARY \
+ ammo_band_color = COLOR_AMMO_INCENDIARY; \
+ desc = parent_type::desc + MAGAZINE_DESC_INC;
+
+/// Defines a magazine to, visually, be for hollow-point ammo by setting the ammo band color and appending a short blurb to the description.
+#define MAGAZINE_TYPE_HOLLOWPOINT \
+ ammo_band_color = COLOR_AMMO_HOLLOWPOINT; \
+ desc = parent_type::desc + MAGAZINE_DESC_HOLLOWPOINT;
+
+/// Defines a magazine to, visually, be for armor-piercing ammo by setting the ammo band color and appending a short blurb to the description.
+#define MAGAZINE_TYPE_ARMORPIERCE \
+ ammo_band_color = COLOR_AMMO_ARMORPIERCE; \
+ desc = parent_type::desc + MAGAZINE_DESC_ARMORPIERCE;
diff --git a/code/modules/projectiles/boxes_magazines/_box_magazine.dm b/code/modules/projectiles/boxes_magazines/_box_magazine.dm
index b87821e219a..8dfec7a32f2 100644
--- a/code/modules/projectiles/boxes_magazines/_box_magazine.dm
+++ b/code/modules/projectiles/boxes_magazines/_box_magazine.dm
@@ -20,7 +20,7 @@
///type that the magazine will be searching for, rejects if not a subtype of
var/ammo_type = /obj/item/ammo_casing
/// wording used for individual units of ammo, e.g. cartridges (regular ammo), shells (shotgun shells)
- var/casing_phrasing = "cartridge"
+ var/casing_phrasing = "round"
///maximum amount of ammo in the magazine
var/max_ammo = 7
///Controls how sprites are updated for the ammo box; see defines in combat.dm: AMMO_BOX_ONE_SPRITE; AMMO_BOX_PER_BULLET; AMMO_BOX_FULL_EMPTY
@@ -162,6 +162,17 @@
return TRUE
/obj/item/ammo_box/attackby(obj/item/tool, mob/user, params, silent = FALSE, replace_spent = 0)
+
+ if(IS_WRITING_UTENSIL(tool))
+ if(!ammo_band_icon)
+ balloon_alert(user, "no indicator support!")
+ return
+ var/new_color = input(user, "Set a new ammo band color, cancel to remove indicator", "Ammo Box Indicator Color", ammo_band_color) as color|null
+ ammo_band_color = new_color
+ balloon_alert(user, "indicator updated")
+ update_appearance()
+ return
+
var/num_loaded = 0
if(!can_load(user))
return
@@ -208,19 +219,15 @@
/obj/item/ammo_box/examine(mob/user)
. = ..()
+ var/shells_left = LAZYLEN(stored_ammo)
var/top_round = get_round()
if(!top_round)
return
+ . += "It has [shells_left] [casing_phrasing]\s remaining."
// this is kind of awkward phrasing, but it's the top/ready ammo in the box
// intended for people who have like three mislabeled magazines
. += span_notice("The [top_round] is ready in [src].")
-
-/obj/item/ammo_box/update_desc(updates)
- . = ..()
- var/shells_left = LAZYLEN(stored_ammo)
- desc = "[initial(desc)]
There [(shells_left == 1) ? "is" : "are"] [shells_left] [casing_phrasing]\s left!"
-
/obj/item/ammo_box/update_icon_state()
. = ..()
var/shells_left = LAZYLEN(stored_ammo)
diff --git a/code/modules/projectiles/boxes_magazines/external/grenade.dm b/code/modules/projectiles/boxes_magazines/external/grenade.dm
index 4ba7d43efae..43903277d0d 100644
--- a/code/modules/projectiles/boxes_magazines/external/grenade.dm
+++ b/code/modules/projectiles/boxes_magazines/external/grenade.dm
@@ -1,5 +1,6 @@
/obj/item/ammo_box/magazine/m75
name = "specialized magazine (.75)"
+ desc = "A .75 gyrojet magazine, suitable for use in the Gyrojet pistol."
icon_state = "75"
ammo_type = /obj/item/ammo_casing/a75
caliber = CALIBER_75
diff --git a/code/modules/projectiles/boxes_magazines/external/lmg.dm b/code/modules/projectiles/boxes_magazines/external/lmg.dm
index 5af59b03777..be204f0b7e7 100644
--- a/code/modules/projectiles/boxes_magazines/external/lmg.dm
+++ b/code/modules/projectiles/boxes_magazines/external/lmg.dm
@@ -1,32 +1,43 @@
/obj/item/ammo_box/magazine/m7mm
name = "box magazine (7mm)"
- icon_state = "a7mm-50"
+ desc = "A sizeable 7mm box magazine, suitable for the L6 SAW."
+ icon_state = "a7mm"
+ ammo_band_icon = "+a7mmab"
ammo_type = /obj/item/ammo_casing/m7mm
caliber = CALIBER_A7MM
max_ammo = 50
/obj/item/ammo_box/magazine/m7mm/hollow
- name = "box magazine (Hollow-Point 7mm)"
+ name = "box magazine (7mm HP)"
+ MAGAZINE_TYPE_HOLLOWPOINT
ammo_type = /obj/item/ammo_casing/m7mm/hollow
/obj/item/ammo_box/magazine/m7mm/ap
- name = "box magazine (Armor Penetrating 7mm)"
+ name = "box magazine (7mm AP)"
+ MAGAZINE_TYPE_ARMORPIERCE
ammo_type = /obj/item/ammo_casing/m7mm/ap
/obj/item/ammo_box/magazine/m7mm/incen
- name = "box magazine (Incendiary 7mm)"
+ name = "box magazine (7mm Incendiary)"
+ MAGAZINE_TYPE_INCENDIARY
ammo_type = /obj/item/ammo_casing/m7mm/incen
/obj/item/ammo_box/magazine/m7mm/match
- name = "box magazine (Match 7mm)"
+ name = "box magazine (7mm Match)"
+ ammo_band_color = COLOR_AMMO_MATCH
+ desc = parent_type::desc + "
Carries match-grade rounds, which are designed to ricochet off walls in an exceedingly stylish, but possibly user-unfriendly manner."
ammo_type = /obj/item/ammo_casing/m7mm/match
/obj/item/ammo_box/magazine/m7mm/bouncy
- name = "box magazine (Rubber 7mm)"
+ name = "box magazine (7mm Rubber)"
+ ammo_band_color = COLOR_AMMO_MATCH // this doesn't seem attainable in game (probably a good thing) so i guess it can get away with a color reuse
+ desc = parent_type::desc + "
Carries lethal rubber rounds, which deal less damage and bounce off everything in an incredibly irresponsible, user-unfriendly manner."
ammo_type = /obj/item/ammo_casing/m7mm/bouncy
/obj/item/ammo_box/magazine/m7mm/bouncy/hicap
- name = "hi-cap box magazine (Rubber 7mm)"
+ name = "hi-cap box magazine (7mm Rubber)"
+ desc = "A very concerningly sizeable 7mm box magazine, suitable for the L6 SAW.
\
+ Carries lethal rubber rounds, which deal less damage and bounce off everything in an incredibly irresponsible, user-unfriendly manner."
max_ammo = 150
/obj/item/ammo_box/magazine/m7mm/update_icon_state()
diff --git a/code/modules/projectiles/boxes_magazines/external/pistol.dm b/code/modules/projectiles/boxes_magazines/external/pistol.dm
index 7c7d61761be..250ec30af39 100644
--- a/code/modules/projectiles/boxes_magazines/external/pistol.dm
+++ b/code/modules/projectiles/boxes_magazines/external/pistol.dm
@@ -1,6 +1,3 @@
-#define FIRE_BULLETS " Carries rounds which ignite targets and leave flaming trails, but inflict less damage."
-#define HP_BULLETS " Carries hollow-point rounds which are effective against unarmored targets, but suffer greatly against armor."
-#define AP_BULLETS " Carries armor-piercing rounds which are effective against armored targets, but less effective against unarmored targets."
// Makarov (9mm) //
@@ -9,6 +6,8 @@
icon_state = "9x19p"
base_icon_state = "9x19p"
desc = "A 9mm handgun magazine, suitable for the Makarov pistol."
+ ammo_band_icon = "+9x19ab"
+ ammo_band_color = null
ammo_type = /obj/item/ammo_casing/c9mm
caliber = CALIBER_9MM
max_ammo = 12
@@ -17,23 +16,17 @@
/obj/item/ammo_box/magazine/m9mm/fire
name = "pistol magazine (9mm incendiary)"
- icon_state = "9x19pI"
- base_icon_state = "9x19pI"
- desc = parent_type::desc + FIRE_BULLETS
+ MAGAZINE_TYPE_INCENDIARY
ammo_type = /obj/item/ammo_casing/c9mm/fire
/obj/item/ammo_box/magazine/m9mm/hp
name = "pistol magazine (9mm HP)"
- icon_state = "9x19pH"
- base_icon_state = "9x19pH"
- desc = parent_type::desc + HP_BULLETS
+ MAGAZINE_TYPE_HOLLOWPOINT
ammo_type = /obj/item/ammo_casing/c9mm/hp
/obj/item/ammo_box/magazine/m9mm/ap
name = "pistol magazine (9mm AP)"
- icon_state = "9x19pA"
- base_icon_state = "9x19pA"
- desc = parent_type::desc + AP_BULLETS
+ MAGAZINE_TYPE_ARMORPIERCE
ammo_type = /obj/item/ammo_casing/c9mm/ap
// Stechkin APS (9mm) //
@@ -43,6 +36,8 @@
desc = "A 9mm handgun magazine, suitable for the Stechkin APS machine pistol."
icon_state = "9mmaps-15"
base_icon_state = "9mmaps"
+ ammo_band_icon = "+9mmapsab"
+ ammo_band_color = null
ammo_type = /obj/item/ammo_casing/c9mm
caliber = CALIBER_9MM
max_ammo = 15
@@ -53,17 +48,17 @@
/obj/item/ammo_box/magazine/m9mm_aps/fire
name = "stechkin pistol magazine (9mm incendiary)"
- desc = parent_type::desc + FIRE_BULLETS
+ MAGAZINE_TYPE_INCENDIARY
ammo_type = /obj/item/ammo_casing/c9mm/fire
/obj/item/ammo_box/magazine/m9mm_aps/hp
name = "stechkin pistol magazine (9mm HP)"
- desc = parent_type::desc + HP_BULLETS
+ MAGAZINE_TYPE_HOLLOWPOINT
ammo_type = /obj/item/ammo_casing/c9mm/hp
/obj/item/ammo_box/magazine/m9mm_aps/ap
name = "stechkin pistol magazine (9mm AP)"
- desc = parent_type::desc + AP_BULLETS
+ MAGAZINE_TYPE_ARMORPIERCE
ammo_type = /obj/item/ammo_casing/c9mm/ap
// Ansem (10mm) //
@@ -73,6 +68,9 @@
desc = "A 10mm handgun magazine, suitable for the Ansem pistol."
icon_state = "9x19p"
base_icon_state = "9x19p"
+ ammo_band_icon = "+9x19ab"
+ ammo_band_color = null
+
ammo_type = /obj/item/ammo_casing/c10mm
caliber = CALIBER_10MM
max_ammo = 8
@@ -81,23 +79,17 @@
/obj/item/ammo_box/magazine/m10mm/fire
name = "pistol magazine (10mm incendiary)"
- icon_state = "9x19pI"
- base_icon_state = "9x19pI"
- desc = parent_type::desc + FIRE_BULLETS
+ MAGAZINE_TYPE_INCENDIARY
ammo_type = /obj/item/ammo_casing/c10mm/fire
/obj/item/ammo_box/magazine/m10mm/hp
name = "pistol magazine (10mm HP)"
- icon_state = "9x19pH"
- base_icon_state = "9x19pH"
- desc = parent_type::desc + HP_BULLETS
+ MAGAZINE_TYPE_HOLLOWPOINT
ammo_type = /obj/item/ammo_casing/c10mm/hp
/obj/item/ammo_box/magazine/m10mm/ap
name = "pistol magazine (10mm AP)"
- icon_state = "9x19pA"
- base_icon_state = "9x19pA"
- desc = parent_type::desc + AP_BULLETS
+ MAGAZINE_TYPE_ARMORPIERCE
ammo_type = /obj/item/ammo_casing/c10mm/ap
// Regal Condor (10mm) //
@@ -136,7 +128,3 @@
caliber = CALIBER_50AE
max_ammo = 7
multiple_sprites = AMMO_BOX_PER_BULLET
-
-#undef FIRE_BULLETS
-#undef HP_BULLETS
-#undef AP_BULLETS
diff --git a/code/modules/projectiles/boxes_magazines/external/rifle.dm b/code/modules/projectiles/boxes_magazines/external/rifle.dm
index d3d1ce3ca99..7aa388db324 100644
--- a/code/modules/projectiles/boxes_magazines/external/rifle.dm
+++ b/code/modules/projectiles/boxes_magazines/external/rifle.dm
@@ -8,7 +8,9 @@
/obj/item/ammo_box/magazine/m223
name = "toploader magazine (.223)"
+ desc = "A top-loading .223 magazine, suitable for the M-90gl carbine."
icon_state = ".223"
+ ammo_band_icon = "+.223ab"
ammo_type = /obj/item/ammo_casing/a223
caliber = CALIBER_A223
max_ammo = 30
@@ -16,13 +18,14 @@
/obj/item/ammo_box/magazine/m223/phasic
name = "toploader magazine (.223 Phasic)"
+ desc = parent_type::desc + "
Carries phasic rounds, which completely ignore armor and phase through cover, but not targets."
ammo_type = /obj/item/ammo_casing/a223/phasic
// .38 (Battle Rifle) //
/obj/item/ammo_box/magazine/m38
name = "battle rifle magazine (.38)"
- desc = "A magazine for a BR-38 battle rifle."
+ desc = "A .38 magazine for a BR-38 battle rifle."
icon_state = "38mag"
base_icon_state = "38mag"
w_class = WEIGHT_CLASS_NORMAL
@@ -41,42 +44,42 @@
/obj/item/ammo_box/magazine/m38/trac
name = "battle rifle magazine (.38 TRAC)"
- desc = "A magazine for a BR-38 battle rifle. TRAC bullets embed a tracking implant within the target's body and are entirely nonlethal."
+ desc = parent_type::desc + " TRAC bullets embed a tracking implant within the target's body and are entirely nonlethal."
ammo_type = /obj/item/ammo_casing/c38/trac
ammo_band_color = COLOR_AMMO_TRACK
/obj/item/ammo_box/magazine/m38/match
name = "battle rifle magazine (.38 Match)"
- desc = "A magazine for a BR-38 battle rifle. These rounds are manufactured within extremely tight tolerances, making them easy to show off trickshots with."
+ desc = parent_type::desc + " These rounds are manufactured within extremely tight tolerances, making them easy to show off trickshots with."
ammo_type = /obj/item/ammo_casing/c38/match
ammo_band_color = COLOR_AMMO_MATCH
/obj/item/ammo_box/magazine/m38/match/bouncy
name = "battle rifle magazine (.38 Rubber)"
- desc = "A magazine for a BR-38 battle rifle. These rounds are incredibly bouncy and MOSTLY nonlethal, making them great to show off trickshots with."
+ desc = parent_type::desc + " These rounds are incredibly bouncy and MOSTLY nonlethal, making them great to show off trickshots with."
ammo_type = /obj/item/ammo_casing/c38/match/bouncy
ammo_band_color = COLOR_AMMO_RUBBER
/obj/item/ammo_box/magazine/m38/true
name = "battle rifle magazine (.38 True Strike)"
- desc = "A magazine for a BR-38 battle rifle. Bullets bounce towards new targets with surprising accuracy."
+ desc = parent_type::desc + " Bullets bounce towards new targets with surprising accuracy."
ammo_type = /obj/item/ammo_casing/c38/match/true
ammo_band_color = COLOR_AMMO_TRUESTRIKE
/obj/item/ammo_box/magazine/m38/dumdum
name = "battle rifle magazine (.38 DumDum)"
- desc = "A magazine for a BR-38 battle rifle. These rounds expand on impact, allowing them to shred the target and cause massive bleeding. Very weak against armor and distant targets."
+ desc = parent_type::desc + " These rounds expand on impact, allowing them to shred the target and cause massive bleeding. Very weak against armor and distant targets."
ammo_type = /obj/item/ammo_casing/c38/dumdum
ammo_band_color = COLOR_AMMO_DUMDUM
/obj/item/ammo_box/magazine/m38/hotshot
name = "battle rifle magazine (.38 Hot Shot)"
- desc = "A magazine for a BR-38 battle rifle. Hot Shot bullets contain an incendiary payload."
+ desc = parent_type::desc + " Hot Shot bullets contain an incendiary payload."
ammo_type = /obj/item/ammo_casing/c38/hotshot
ammo_band_color = COLOR_AMMO_HOTSHOT
/obj/item/ammo_box/magazine/m38/iceblox
name = "battle rifle magazine (.38 Iceblox)"
- desc = "A magazine for a BR-38 battle rifle. Iceblox bullets contain a cryogenic payload."
+ desc = parent_type::desc + " Iceblox bullets contain a cryogenic payload."
ammo_type = /obj/item/ammo_casing/c38/iceblox
ammo_band_color = COLOR_AMMO_ICEBLOX
diff --git a/code/modules/projectiles/boxes_magazines/external/shotgun.dm b/code/modules/projectiles/boxes_magazines/external/shotgun.dm
index 6d90c54fc69..469c7590f99 100644
--- a/code/modules/projectiles/boxes_magazines/external/shotgun.dm
+++ b/code/modules/projectiles/boxes_magazines/external/shotgun.dm
@@ -1,6 +1,6 @@
/obj/item/ammo_box/magazine/m12g
name = "shotgun magazine (12g buckshot slugs)"
- desc = "A drum magazine."
+ desc = "A drum magazine of shotgun shells, suitable for the Bulldog combat shotgun."
icon_state = "m12gb"
base_icon_state = "m12gb"
ammo_type = /obj/item/ammo_casing/shotgun/buckshot
diff --git a/code/modules/projectiles/boxes_magazines/external/smg.dm b/code/modules/projectiles/boxes_magazines/external/smg.dm
index 40837d9ddbc..d8563905475 100644
--- a/code/modules/projectiles/boxes_magazines/external/smg.dm
+++ b/code/modules/projectiles/boxes_magazines/external/smg.dm
@@ -1,7 +1,10 @@
/obj/item/ammo_box/magazine/wt550m9
- name = "wt550 magazine (4.6x30mm)"
+ name = "\improper WT-550 magazine (4.6x30mm)"
+ desc = "A top-loading 4.6x30mm magazine, specifically for the WT-550 autorifle."
icon_state = "46x30mmt-20"
base_icon_state = "46x30mmt"
+ ammo_band_icon = "+46x30mmab"
+ ammo_band_color = null
ammo_type = /obj/item/ammo_casing/c46x30mm
caliber = CALIBER_46X30MM
max_ammo = 20
@@ -11,27 +14,19 @@
icon_state = "[base_icon_state]-[round(ammo_count(), 4)]"
/obj/item/ammo_box/magazine/wt550m9/wtap
- name = "wt550 magazine (Armour Piercing 4.6x30mm)"
- icon_state = "46x30mmtA-20"
- base_icon_state = "46x30mmtA"
+ name = "\improper WT-550 magazine (4.6x30mm AP)"
+ MAGAZINE_TYPE_ARMORPIERCE
ammo_type = /obj/item/ammo_casing/c46x30mm/ap
-/obj/item/ammo_box/magazine/wt550m9/wtap/update_icon_state()
- . = ..()
- icon_state = "[base_icon_state]-[round(ammo_count(), 4)]"
-
/obj/item/ammo_box/magazine/wt550m9/wtic
- name = "wt550 magazine (Incendiary 4.6x30mm)"
- icon_state = "46x30mmtI-20"
- base_icon_state = "46x30mmtI"
+ name = "\improper WT-550 magazine (4.6x30mm incendiary)"
+ MAGAZINE_TYPE_INCENDIARY
ammo_type = /obj/item/ammo_casing/c46x30mm/inc
-/obj/item/ammo_box/magazine/wt550m9/wtic/update_icon_state()
- . = ..()
- icon_state = "[base_icon_state]-[round(ammo_count(), 4)]"
/obj/item/ammo_box/magazine/smartgun
name = "Abielle magazine (.160 Smart)"
+ desc = "A deep .160 Smart magazine, suitable for the Abielle smart-SMG."
icon_state = "smartgun"
base_icon_state = "smartgun"
ammo_type = /obj/item/ammo_casing/c160smart
@@ -41,7 +36,8 @@
max_ammo = 50
/obj/item/ammo_box/magazine/uzim9mm
- name = "uzi magazine (9mm)"
+ name = "\improper Uzi magazine (9mm)"
+ desc = "A long 9mm magazine, suitable for the Uzi SMG."
icon_state = "uzi9mm-32"
base_icon_state = "uzi9mm"
ammo_type = /obj/item/ammo_casing/c9mm
@@ -53,7 +49,8 @@
icon_state = "[base_icon_state]-[round(ammo_count(), 4)]"
/obj/item/ammo_box/magazine/smgm9mm
- name = "SMG magazine (9mm)"
+ name = "\improper SMG magazine (9mm)"
+ desc = "A sleek 9mm magazine, suitable for the Nanotrasen Saber SMG."
icon_state = "smg9mm"
base_icon_state = "smg9mm"
ammo_type = /obj/item/ammo_casing/c9mm
@@ -65,17 +62,22 @@
icon_state = "[base_icon_state]-[LAZYLEN(stored_ammo) ? "full" : "empty"]"
/obj/item/ammo_box/magazine/smgm9mm/ap
- name = "SMG magazine (Armour Piercing 9mm)"
+ name = "SMG magazine (9mm AP)"
+ MAGAZINE_TYPE_ARMORPIERCE
ammo_type = /obj/item/ammo_casing/c9mm/ap
/obj/item/ammo_box/magazine/smgm9mm/fire
- name = "SMG Magazine (Incendiary 9mm)"
+ name = "SMG magazine (9mm incendiary)"
+ MAGAZINE_TYPE_INCENDIARY
ammo_type = /obj/item/ammo_casing/c9mm/fire
/obj/item/ammo_box/magazine/smgm45
name = "SMG magazine (.45)"
+ desc = "A long .45 magazine, suitable for the C-20r SMG."
icon_state = "c20r45"
base_icon_state = "c20r45"
+ ammo_band_icon = "+c20rab"
+ ammo_band_color = null
ammo_type = /obj/item/ammo_casing/c45
caliber = CALIBER_45
max_ammo = 24
@@ -85,15 +87,18 @@
icon_state = "[base_icon_state]-[round(ammo_count(), 2)]"
/obj/item/ammo_box/magazine/smgm45/ap
- name = "SMG magazine (Armour Piercing .45)"
+ name = "SMG magazine (.45 AP)"
+ MAGAZINE_TYPE_ARMORPIERCE
ammo_type = /obj/item/ammo_casing/c45/ap
/obj/item/ammo_box/magazine/smgm45/hp
- name = "SMG magazine (Hollow Point .45)"
+ name = "SMG magazine (.45 HP)"
+ MAGAZINE_TYPE_HOLLOWPOINT
ammo_type = /obj/item/ammo_casing/c45/hp
/obj/item/ammo_box/magazine/smgm45/incen
- name = "SMG magazine (Incendiary .45)"
+ name = "SMG magazine (.45 incendiary)"
+ MAGAZINE_TYPE_INCENDIARY
ammo_type = /obj/item/ammo_casing/c45/inc
/obj/item/ammo_box/magazine/tommygunm45
diff --git a/code/modules/projectiles/boxes_magazines/external/sniper.dm b/code/modules/projectiles/boxes_magazines/external/sniper.dm
index b0b437b8b23..c937e435f0e 100644
--- a/code/modules/projectiles/boxes_magazines/external/sniper.dm
+++ b/code/modules/projectiles/boxes_magazines/external/sniper.dm
@@ -1,5 +1,6 @@
/obj/item/ammo_box/magazine/sniper_rounds
name = "anti-materiel sniper rounds (.50 BMG)"
+ desc = "A .50 BMG box magazine suitable for anti-materiel sniper rifles."
icon_state = ".50mag"
base_icon_state = ".50mag"
ammo_type = /obj/item/ammo_casing/p50
@@ -12,31 +13,32 @@
/obj/item/ammo_box/magazine/sniper_rounds/surplus
name = "anti-materiel sniper rounds (.50 BMG Surplus)"
+ desc = parent_type::desc + " Improper storage means they don't punch through armor, dismember, or stun like fresh ammo, but they're still very good at killing people."
icon_state = "surplus"
base_icon_state = "surplus"
ammo_type = /obj/item/ammo_casing/p50/surplus
/obj/item/ammo_box/magazine/sniper_rounds/disruptor
name = "anti-materiel sniper rounds (.50 BMG Bzzt)"
- desc = "Disruptor sniper rounds. A special blend of soporific chemicals \
- and a electromagnetic payload to cause anything to come to a grinding halt."
+ desc = parent_type::desc + " Loaded with disruptor sniper rounds, filled with a special blend of soporific chemicals \
+ and a electromagnetic payload to cause anything hit to come to a grinding halt."
base_icon_state = "disruptor"
ammo_type = /obj/item/ammo_casing/p50/disruptor
/obj/item/ammo_box/magazine/sniper_rounds/incendiary
name = "anti-materiel sniper rounds (.50 BMG incendiary)"
- desc = "Incediary sniper rounds. Causes a massive combustion at the site of impact."
+ desc = parent_type::desc + " Loaded with incendiary sniper rounds, which cause massive combustion at the site of impact."
base_icon_state = "incendiary"
ammo_type = /obj/item/ammo_casing/p50/incendiary
/obj/item/ammo_box/magazine/sniper_rounds/penetrator
name = "anti-materiel sniper rounds (.50 BMG penetrator)"
- desc = "An extremely powerful round capable of passing straight through cover and anyone unfortunate enough to be behind it."
+ desc = parent_type::desc + " Loaded with extremely powerful penetrator rounds, capable of passing straight through cover and anyone unfortunate enough to be behind it."
base_icon_state = "penetrator"
ammo_type = /obj/item/ammo_casing/p50/penetrator
/obj/item/ammo_box/magazine/sniper_rounds/marksman
name = "anti-materiel sniper rounds (.50 BMG marksman)"
- desc = "An extremely fast sniper round able to pretty much instantly shoot through something."
+ desc = parent_type::desc + " Loaded with extremely fast marksman rounds, able to pretty much instantly hit their targets."
base_icon_state = "marksman"
ammo_type = /obj/item/ammo_casing/p50/marksman
diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm
index 0c230649fa9..57adddc62c7 100644
--- a/code/modules/projectiles/guns/ballistic/automatic.dm
+++ b/code/modules/projectiles/guns/ballistic/automatic.dm
@@ -67,7 +67,7 @@
desc = "Recalled by Nanotrasen due to public backlash around heat distribution resulting in unintended discombobulation. \
This outcry was fabricated through various Syndicate-backed misinformation operations to force Nanotrasen to abandon \
its ballistics weapon program, cornering them into the energy weapons market. Most often found today in the hands of pirates, \
- underfunded security personnel, cargo technicians, theoritical physicists and gang bangers out on the rim. \
+ underfunded security personnel, cargo technicians, theoretical physicists, and gang bangers out on the rim. \
Light-weight and fully automatic. Uses 4.6x30mm rounds."
icon_state = "wt550"
w_class = WEIGHT_CLASS_BULKY
diff --git a/icons/obj/weapons/guns/ammo.dmi b/icons/obj/weapons/guns/ammo.dmi
index 743d365489b..521ec8376e4 100644
Binary files a/icons/obj/weapons/guns/ammo.dmi and b/icons/obj/weapons/guns/ammo.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index 9b9bd545f50..33a666f5c8b 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -133,6 +133,7 @@
#include "code\__DEFINES\living.dm"
#include "code\__DEFINES\logging.dm"
#include "code\__DEFINES\machines.dm"
+#include "code\__DEFINES\magazines.dm"
#include "code\__DEFINES\magic.dm"
#include "code\__DEFINES\map_exporter.dm"
#include "code\__DEFINES\map_switch.dm"