diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 8a172bb85b1..3562cfd9d80 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -736,6 +736,14 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 12 // normally 18 gamemodes = list(/datum/game_mode/nuclear) +/datum/uplink_item/ammo/bulldog_XLmagsbag + name = "Bulldog - 12g XL Magazine Duffel Bag" + desc = "A duffel bag containing three 16 round drum magazines(Slug, Buckshot, Dragon's Breath)." + reference = "12XLDB" + item = /obj/item/storage/backpack/duffel/syndie/ammo/shotgunXLmags + cost = 12 // normally 18 + gamemodes = list(/datum/game_mode/nuclear) + /datum/uplink_item/ammo/smg name = "C-20r - .45 Magazine" desc = "An additional 20-round .45 magazine for use in the C-20r submachine gun. These bullets pack a lot of punch that can knock most targets down, but do limited overall damage." diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 26045731bd9..e7880fd0868 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -372,6 +372,15 @@ new /obj/item/ammo_box/magazine/m12g/buckshot(src) new /obj/item/ammo_box/magazine/m12g/dragon(src) +/obj/item/storage/backpack/duffel/syndie/ammo/shotgunXLmags + desc = "A large duffelbag, containing three types of extended drum magazines." + +/obj/item/storage/backpack/duffel/syndie/ammo/shotgunXLmags/New() + ..() + new /obj/item/ammo_box/magazine/m12g/XtrLrg(src) + new /obj/item/ammo_box/magazine/m12g/XtrLrg/buckshot(src) + new /obj/item/ammo_box/magazine/m12g/XtrLrg/dragon(src) + /obj/item/storage/backpack/duffel/mining_conscript/ name = "mining conscription kit" desc = "A kit containing everything a crewmember needs to support a shaft miner in the field." diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 8536a0195e3..e6165103234 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -123,6 +123,7 @@ if(keep) stored_ammo.Insert(1,b) update_mat_value() + update_icon() return b /obj/item/ammo_box/proc/give_round(obj/item/ammo_casing/R, replace_spent = 0) diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index c59e5890331..5cc6a19b840 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -383,10 +383,7 @@ origin_tech = "combat=3;syndicate=1" caliber = "shotgun" max_ammo = 8 - -/obj/item/ammo_box/magazine/m12g/update_icon() - ..() - icon_state = "[initial(icon_state)]-[CEILING(ammo_count(0)/8, 1)*8]" + multiple_sprites = 2 /obj/item/ammo_box/magazine/m12g/buckshot name = "shotgun magazine (12g buckshot slugs)" @@ -414,6 +411,24 @@ icon_state = "m12gbc" ammo_type = /obj/item/ammo_casing/shotgun/breaching +/obj/item/ammo_box/magazine/m12g/XtrLrg + name = "\improper XL shotgun magazine (12g slugs)" + desc = "An extra large drum magazine." + icon_state = "m12gXlSl" + w_class = WEIGHT_CLASS_NORMAL + ammo_type = /obj/item/ammo_casing/shotgun + max_ammo = 16 + +/obj/item/ammo_box/magazine/m12g/XtrLrg/buckshot + name = "\improper XL shotgun magazine (12g buckshot)" + icon_state = "m12gXlBs" + ammo_type = /obj/item/ammo_casing/shotgun/buckshot + +/obj/item/ammo_box/magazine/m12g/XtrLrg/dragon + name = "\improper XL shotgun magazine (12g dragon's breath)" + icon_state = "m12gXlDb" + ammo_type = /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath + /obj/item/ammo_box/magazine/toy name = "foam force META magazine" ammo_type = /obj/item/ammo_casing/caseless/foam_dart diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 17a20f82d59..ea52a954a5b 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -275,13 +275,27 @@ if(magazine) overlays.Cut() overlays += "[magazine.icon_state]" - return + if(istype(magazine, /obj/item/ammo_box/magazine/m12g/XtrLrg)) + w_class = WEIGHT_CLASS_BULKY + else + w_class = WEIGHT_CLASS_NORMAL + else + w_class = WEIGHT_CLASS_NORMAL /obj/item/gun/projectile/automatic/shotgun/bulldog/update_icon() overlays.Cut() update_magazine() icon_state = "bulldog[chambered ? "" : "-e"]" +/obj/item/gun/projectile/automatic/shotgun/bulldog/attackby(var/obj/item/A as obj, mob/user as mob, params) + if(istype(A, /obj/item/ammo_box/magazine/m12g/XtrLrg)) + if(istype(loc, /obj/item/storage)) // To prevent inventory exploits + var/obj/item/storage/Strg = loc + if(Strg.max_w_class < WEIGHT_CLASS_BULKY) + to_chat(user, "You can't reload [src], with a XL mag, while it's in a normal bag.") + return + return ..() + /obj/item/gun/projectile/automatic/shotgun/bulldog/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag) ..() empty_alarm() diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index 4a250a1fffc..b1876a7d063 100644 Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi index f1d09247bbd..1e61cebb799 100644 Binary files a/icons/obj/guns/projectile.dmi and b/icons/obj/guns/projectile.dmi differ