From 138309cc9ef34fbe8dc045f49a7a3ab7f4886aa4 Mon Sep 17 00:00:00 2001 From: Martinpachu <86135885+Martinpachu@users.noreply.github.com> Date: Sun, 23 Jun 2024 23:02:49 -0300 Subject: [PATCH] Adds Gun Cases. For guns. (#2998) ## About The Pull Request Adds in gun cases that can hold a variety of guns and magazines, intended for use in cargo and certain ships and ruins. Sprites by retlaw are a work in progress. ## Why It's Good For The Game Adds in a cool way to store firearms safely, and also its realistic i think. Also requested by apogee. ## Changelog :cl: add: Cargo guns and certain guns in ships now come inside cases alongside some magazines, the ammo now comes separately for safety reasons. /:cl: --------- Signed-off-by: Martinpachu <86135885+Martinpachu@users.noreply.github.com> Co-authored-by: Theos --- .../BeachRuins/beach_treasure_cove.dmm | 2 +- .../JungleRuins/jungle_cavecrew.dmm | 2 +- .../lavaland_surface_wrecked_factory.dmm | 2 +- .../WasteRuins/wasteplanet_pandora.dmm | 2 +- .../independent/independent_dwayne.dmm | 2 +- .../shuttles/nanotrasen/nanotrasen_heron.dmm | 2 +- .../shuttles/nanotrasen/nanotrasen_ranger.dmm | 10 +- _maps/shuttles/pirate/pirate_tortuga.dmm | 4 +- _maps/shuttles/roumain/srm_elder.dmm | 6 +- _maps/shuttles/solgov/solgov_chronicle.dmm | 7 +- _maps/shuttles/solgov/solgov_inkwell.dmm | 5 +- _maps/shuttles/solgov/solgov_paracelsus.dmm | 5 +- .../syndicate/syndicate_gorlex_hyena.dmm | 8 +- .../syndicate/syndicate_gorlex_komodo.dmm | 2 +- .../syndicate/syndicate_twinkleshine.dmm | 11 +- code/game/objects/items/storage/guncases.dm | 200 ++++++++++++++++++ code/game/objects/structures/guncase.dm | 22 +- code/modules/cargo/packs/ammo.dm | 2 +- code/modules/cargo/packs/gun.dm | 46 ++-- .../projectiles/boxes_magazines/ammo_boxes.dm | 11 + .../boxes_magazines/external/gauss.dm | 3 + .../boxes_magazines/external/pistol.dm | 10 + .../boxes_magazines/external/rifle.dm | 8 + .../boxes_magazines/external/smg.dm | 6 + code/modules/projectiles/guns/ballistic.dm | 5 +- .../projectiles/guns/ballistic/assault.dm | 6 + .../projectiles/guns/ballistic/gauss.dm | 3 + .../projectiles/guns/ballistic/pistol.dm | 4 + .../projectiles/guns/ballistic/revolver.dm | 14 ++ .../projectiles/guns/ballistic/rifle.dm | 6 + .../projectiles/guns/ballistic/shotgun.dm | 13 ++ .../modules/projectiles/guns/ballistic/smg.dm | 6 + .../projectiles/guns/energy/energy_gun.dm | 6 + code/modules/projectiles/guns/energy/laser.dm | 3 + .../projectiles/guns/energy/special.dm | 3 + .../guns/faction/gezena/energy_gunsword.dm | 6 + icons/obj/guncase.dmi | Bin 0 -> 359 bytes icons/obj/guncase_48x32.dmi | Bin 0 -> 606 bytes shiptest.dme | 1 + 39 files changed, 376 insertions(+), 78 deletions(-) create mode 100644 code/game/objects/items/storage/guncases.dm create mode 100644 icons/obj/guncase.dmi create mode 100644 icons/obj/guncase_48x32.dmi diff --git a/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm b/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm index 0f122c15c94b..6e70a81ace49 100644 --- a/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm @@ -565,7 +565,7 @@ /turf/open/floor/wood/walnut, /area/ruin/beach/treasure_cove) "sd" = ( -/obj/structure/guncase, +/obj/structure/guncloset, /obj/effect/turf_decal/industrial/warning{ dir = 4; color = "#808080" diff --git a/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm b/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm index 5c4e6c34e7a1..781ae59a84f4 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm @@ -1364,7 +1364,7 @@ /turf/open/floor/plasteel/patterned/cargo_one, /area/ruin/jungle/cavecrew/cargo) "qz" = ( -/obj/structure/guncase, +/obj/structure/guncloset, /obj/effect/turf_decal/industrial/hatch/yellow, /obj/effect/turf_decal/industrial/warning{ dir = 10 diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm index f4f938f0b7b4..9630c75b4f25 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm @@ -1157,7 +1157,7 @@ /obj/effect/turf_decal/corner/opaque/red/border{ dir = 5 }, -/obj/structure/guncase, +/obj/structure/guncloset, /obj/item/gun/energy/e_gun, /turf/open/floor/plasteel/dark, /area/ruin/lavaland/factory/adminstrative) diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm index 207d91d4219a..1b6d9d85aafa 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm @@ -271,7 +271,7 @@ /turf/open/floor/mineral/titanium/white, /area/ruin/wasteplanet) "kV" = ( -/obj/structure/guncase, +/obj/structure/guncloset, /turf/open/floor/mineral/titanium/white, /area/ruin/wasteplanet) "kZ" = ( diff --git a/_maps/shuttles/independent/independent_dwayne.dmm b/_maps/shuttles/independent/independent_dwayne.dmm index 70063e0ac720..ef1435cb1558 100644 --- a/_maps/shuttles/independent/independent_dwayne.dmm +++ b/_maps/shuttles/independent/independent_dwayne.dmm @@ -2089,7 +2089,7 @@ /obj/effect/turf_decal/corner/opaque/yellow/three_quarters{ dir = 4 }, -/obj/structure/guncase/shotgun, +/obj/structure/guncloset/shotgun, /obj/item/gun/ballistic/shotgun/flamingarrow, /obj/item/gun/ballistic/shotgun/flamingarrow, /obj/item/gun/ballistic/shotgun/flamingarrow, diff --git a/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm b/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm index ea1b99d7d1c4..a742a35fafe9 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm @@ -11533,7 +11533,7 @@ /turf/open/floor/plasteel, /area/ship/hallway/aft) "Rs" = ( -/obj/structure/guncase, +/obj/structure/guncloset, /obj/item/gun/ballistic/automatic/pistol/candor/no_mag, /obj/item/gun/ballistic/automatic/pistol/candor/no_mag, /turf/open/floor/plasteel/tech, diff --git a/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm b/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm index 288fd6235cf8..a106a307bb18 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm @@ -184,15 +184,14 @@ /obj/item/clothing/suit/armor/vest/security, /obj/item/clothing/mask/gas/sechailer, /obj/item/gps, -/obj/item/gun/ballistic/automatic/pistol/commander, /obj/structure/railing{ dir = 4 }, /obj/item/ammo_box/c9mm, /obj/item/ammo_box/c9mm, /obj/item/ammo_box/magazine/co9mm, -/obj/item/ammo_box/magazine/co9mm, /obj/item/storage/belt/security/webbing, +/obj/item/storage/pistolcase/commander, /turf/open/floor/wood, /area/ship/security) "bD" = ( @@ -3115,9 +3114,6 @@ /area/ship/engineering) "Ha" = ( /obj/structure/closet/secure_closet/lp/lieutenant, -/obj/item/gun/energy/e_gun{ - pixel_y = 1 - }, /obj/item/stock_parts/cell/gun, /obj/item/melee/classic_baton/telescopic, /obj/item/kitchen/knife/combat/survival, @@ -3131,12 +3127,12 @@ pixel_x = 7; pixel_y = -20 }, -/obj/item/gun/ballistic/automatic/pistol/commander, /obj/item/ammo_box/c9mm, /obj/item/ammo_box/c9mm, /obj/item/ammo_box/c9mm/rubbershot, /obj/item/ammo_box/magazine/co9mm, -/obj/item/ammo_box/magazine/co9mm, +/obj/item/storage/pistolcase/commander, +/obj/item/storage/pistolcase/egun, /turf/open/floor/wood, /area/ship/crew/dorm) "Hd" = ( diff --git a/_maps/shuttles/pirate/pirate_tortuga.dmm b/_maps/shuttles/pirate/pirate_tortuga.dmm index 1f94be7c5b03..07bd4710a9b1 100644 --- a/_maps/shuttles/pirate/pirate_tortuga.dmm +++ b/_maps/shuttles/pirate/pirate_tortuga.dmm @@ -640,7 +640,7 @@ /obj/effect/turf_decal/techfloor{ dir = 10 }, -/obj/structure/guncase{ +/obj/structure/guncloset{ anchored = 1 }, /obj/item/gun/ballistic/automatic/assault/skm/pirate, @@ -3140,7 +3140,7 @@ /area/ship/maintenance/port) "Px" = ( /obj/effect/turf_decal/techfloor, -/obj/structure/guncase{ +/obj/structure/guncloset{ anchored = 1 }, /obj/item/gun/ballistic/automatic/pistol/candor, diff --git a/_maps/shuttles/roumain/srm_elder.dmm b/_maps/shuttles/roumain/srm_elder.dmm index d8d7b6714d6e..e4a85560cb67 100644 --- a/_maps/shuttles/roumain/srm_elder.dmm +++ b/_maps/shuttles/roumain/srm_elder.dmm @@ -1250,7 +1250,7 @@ /turf/open/floor/grass/ship/jungle, /area/ship/hallway/central) "ox" = ( -/obj/structure/guncase, +/obj/structure/guncloset, /obj/machinery/door/window/eastright{ dir = 8 }, @@ -2024,11 +2024,9 @@ /obj/item/gps{ pixel_x = -7 }, -/obj/item/gun/ballistic/revolver/montagne, /obj/item/storage/backpack/satchel/leather, -/obj/item/ammo_box/a44roum_speedloader, -/obj/item/ammo_box/a44roum_speedloader, /obj/item/ammo_box/a44roum, +/obj/item/storage/pistolcase/montagne, /obj/item/clothing/accessory/waistcoat/roumain, /turf/open/floor/wood/mahogany, /area/ship/bridge) diff --git a/_maps/shuttles/solgov/solgov_chronicle.dmm b/_maps/shuttles/solgov/solgov_chronicle.dmm index d0359b5ca240..13e78929b4dc 100644 --- a/_maps/shuttles/solgov/solgov_chronicle.dmm +++ b/_maps/shuttles/solgov/solgov_chronicle.dmm @@ -271,10 +271,9 @@ /obj/item/stamp/solgov, /obj/item/clothing/suit/armor/solgov_trenchcoat, /obj/item/spacecash/bundle/loadsamoney, -/obj/item/gun/ballistic/automatic/powered/gauss/modelh, -/obj/item/ammo_box/magazine/modelh, -/obj/item/ammo_box/magazine/modelh, /obj/item/clothing/neck/cloak/solgovcap, +/obj/item/storage/pistolcase/modelh, +/obj/item/ammo_box/ferroslugbox, /turf/open/floor/carpet/royalblue, /area/ship/crew/office) "cg" = ( @@ -3730,7 +3729,7 @@ /turf/open/floor/wood/walnut, /area/ship/crew/crewtwo) "Ks" = ( -/obj/structure/guncase{ +/obj/structure/guncloset{ desc = "A locker that holds weapons."; name = "weapon locker" }, diff --git a/_maps/shuttles/solgov/solgov_inkwell.dmm b/_maps/shuttles/solgov/solgov_inkwell.dmm index 22f6c55e224a..da2a6b032eaa 100644 --- a/_maps/shuttles/solgov/solgov_inkwell.dmm +++ b/_maps/shuttles/solgov/solgov_inkwell.dmm @@ -5858,10 +5858,9 @@ }, /obj/item/fish_feed, /obj/item/pen/fountain/solgov, -/obj/item/gun/ballistic/automatic/powered/gauss/modelh, -/obj/item/ammo_box/magazine/modelh, -/obj/item/ammo_box/magazine/modelh, /obj/item/clothing/neck/cloak/solgovcap, +/obj/item/storage/pistolcase/modelh, +/obj/item/ammo_box/ferroslugbox, /turf/open/floor/wood/maple, /area/ship/crew/dorm/dormtwo) "LJ" = ( diff --git a/_maps/shuttles/solgov/solgov_paracelsus.dmm b/_maps/shuttles/solgov/solgov_paracelsus.dmm index 1eb02eac6a21..b099e500aee9 100644 --- a/_maps/shuttles/solgov/solgov_paracelsus.dmm +++ b/_maps/shuttles/solgov/solgov_paracelsus.dmm @@ -3580,10 +3580,9 @@ }, /obj/item/fish_feed, /obj/item/pen/fountain/solgov, -/obj/item/gun/ballistic/automatic/powered/gauss/modelh, -/obj/item/ammo_box/magazine/modelh, -/obj/item/ammo_box/magazine/modelh, /obj/item/clothing/neck/cloak/solgovcap, +/obj/item/storage/pistolcase/modelh, +/obj/item/ammo_box/ferroslugbox, /turf/open/floor/carpet/royalblue, /area/ship/crew) "IZ" = ( diff --git a/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm b/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm index ce77d98f5833..7c7a34fd2690 100644 --- a/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm +++ b/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm @@ -62,11 +62,10 @@ /obj/item/clothing/glasses/hud/security/sunglasses/eyepatch, /obj/item/clothing/head/ngr/peaked, /obj/effect/decal/cleanable/dirt/dust, -/obj/item/gun/ballistic/revolver, -/obj/item/ammo_box/a357/match, -/obj/item/ammo_box/a357/match, /obj/item/ammo_box/a357/match, /obj/item/pen/edagger, +/obj/item/storage/pistolcase/a357, +/obj/item/ammo_box/a357_box, /turf/open/floor/carpet/black, /area/ship/bridge) "bJ" = ( @@ -1655,14 +1654,13 @@ /obj/item/clothing/glasses/welding, /obj/item/storage/toolbox/syndicate, /obj/item/wrench/combat, -/obj/item/ammo_box/magazine/m10mm, -/obj/item/gun/ballistic/automatic/pistol, /obj/item/clothing/accessory/holster, /obj/item/grenade/chem_grenade/metalfoam, /obj/machinery/airalarm/directional/west, /obj/item/clothing/suit/ngr, /obj/item/clothing/head/hardhat/ngr/foreman, /obj/item/tank/jetpack/suit, +/obj/item/storage/pistolcase/stechkin, /turf/open/floor/carpet/red, /area/ship/cargo/office) "BB" = ( diff --git a/_maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm b/_maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm index 9782403c12ae..6a4cf55d36b7 100644 --- a/_maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm +++ b/_maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm @@ -2732,7 +2732,7 @@ /obj/effect/turf_decal/industrial/fire{ dir = 8 }, -/obj/structure/guncase, +/obj/structure/guncloset, /obj/structure/railing, /obj/item/gun/ballistic/automatic/smg/c20r, /obj/machinery/light/directional/east, diff --git a/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm b/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm index 6d0b0b423e61..885275c10d50 100644 --- a/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm +++ b/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm @@ -107,7 +107,7 @@ /obj/item/megaphone/sec{ name = "syndicate megaphone" }, -/obj/item/gun/ballistic/automatic/pistol/no_mag, +/obj/item/storage/pistolcase/stechkin, /obj/item/clothing/head/HoS/beret/syndicate, /obj/item/radio/headset/syndicate/alt/leader, /obj/item/clothing/gloves/krav_maga/combatglovesplus, @@ -121,6 +121,7 @@ name = "Armory Access"; req_access = list(3,150) }, +/obj/item/ammo_box/c10mm, /turf/open/floor/mineral/plastitanium, /area/ship/security) "aE" = ( @@ -1792,7 +1793,7 @@ /obj/item/codespeak_manual{ charges = 2 }, -/obj/item/gun/ballistic/revolver, +/obj/item/storage/pistolcase/a357, /obj/item/megaphone/sec{ name = "syndicate megaphone" }, @@ -1804,7 +1805,6 @@ /obj/item/clothing/head/HoS/syndicate, /obj/item/ammo_box/a357, /obj/item/ammo_box/a357, -/obj/item/ammo_box/a357, /turf/open/floor/carpet/nanoweave/red, /area/ship/crew/dorm/dormtwo) "ky" = ( @@ -7330,10 +7330,9 @@ /obj/item/radio/headset/syndicate/alt{ keyslot = null }, -/obj/item/gun/ballistic/automatic/powered/gauss/modelh, /obj/item/storage/belt/sabre/solgov, -/obj/item/ammo_box/magazine/modelh, -/obj/item/ammo_box/magazine/modelh, +/obj/item/storage/pistolcase/modelh, +/obj/item/ammo_box/ferroslugbox, /turf/open/floor/mineral/plastitanium, /area/ship/bridge) "Qv" = ( diff --git a/code/game/objects/items/storage/guncases.dm b/code/game/objects/items/storage/guncases.dm new file mode 100644 index 000000000000..d3b0c468b4b4 --- /dev/null +++ b/code/game/objects/items/storage/guncases.dm @@ -0,0 +1,200 @@ +/obj/item/storage/guncase + name = "gun case" + desc = "A large box designed for holding firearms and magazines safely." + icon = 'icons/obj/guncase_48x32.dmi' + icon_state = "riflecase" + item_state = "infiltrator_case" + force = 12 + throwforce = 12 + throw_speed = 2 + throw_range = 7 + w_class = WEIGHT_CLASS_BULKY + attack_verb = list("robusted") + hitsound = 'sound/weapons/smash.ogg' + drop_sound = 'sound/items/handling/toolbox_drop.ogg' + pickup_sound = 'sound/items/handling/toolbox_pickup.ogg' + + +/obj/item/storage/guncase/ComponentInitialize() + . = ..() + var/datum/component/storage/STR = GetComponent(/datum/component/storage) + STR.max_items = 10 + STR.max_w_class = WEIGHT_CLASS_BULKY + STR.set_holdable(list( + /obj/item/gun, + /obj/item/ammo_box, + /obj/item/stock_parts/cell/gun + )) + +/obj/item/storage/guncase/winchester +/obj/item/storage/guncase/winchester/PopulateContents() + new /obj/item/gun/ballistic/shotgun/flamingarrow/no_mag(src) + +/obj/item/storage/guncase/skm +/obj/item/storage/guncase/skm/PopulateContents() + new /obj/item/gun/ballistic/automatic/assault/skm/no_mag(src) + new /obj/item/ammo_box/magazine/skm_762_40/empty(src) + new /obj/item/ammo_box/magazine/skm_762_40/empty(src) + +/obj/item/storage/guncase/p16 +/obj/item/storage/guncase/p16/PopulateContents() + new /obj/item/gun/ballistic/automatic/assault/p16/no_mag(src) + new /obj/item/ammo_box/magazine/p16/empty(src) + new /obj/item/ammo_box/magazine/p16/empty(src) + +/obj/item/storage/guncase/beacon +/obj/item/storage/guncase/beacon/PopulateContents() + new /obj/item/gun/ballistic/shotgun/doublebarrel/beacon(src) + +/obj/item/storage/guncase/scout +/obj/item/storage/guncase/scout/PopulateContents() + new /obj/item/gun/ballistic/rifle/scout/no_mag(src) + new /obj/item/ammo_box/a300/empty(src) + new /obj/item/ammo_box/a300/empty(src) + +/obj/item/storage/guncase/cobra +/obj/item/storage/guncase/cobra/PopulateContents() + new /obj/item/gun/ballistic/automatic/smg/c20r/cobra/no_mag(src) + new /obj/item/ammo_box/magazine/smgm45/empty(src) + new /obj/item/ammo_box/magazine/smgm45/empty(src) + + +/obj/item/storage/guncase/hellfire +/obj/item/storage/guncase/hellfire/PopulateContents() + new /obj/item/gun/ballistic/shotgun/hellfire/no_mag(src) + +/obj/item/storage/guncase/doublebarrel +/obj/item/storage/guncase/doublebarrel/PopulateContents() + new /obj/item/gun/ballistic/shotgun/doublebarrel/no_mag(src) + +/obj/item/storage/guncase/brimstone +/obj/item/storage/guncase/brimstone/PopulateContents() + new /obj/item/gun/ballistic/shotgun/brimstone/no_mag(src) + +/obj/item/storage/guncase/illestren +/obj/item/storage/guncase/illestren/PopulateContents() + new /obj/item/gun/ballistic/rifle/illestren/empty(src) + new /obj/item/ammo_box/magazine/illestren_a850r/empty(src) + new /obj/item/ammo_box/magazine/illestren_a850r/empty(src) + +/obj/item/storage/guncase/wt550 +/obj/item/storage/guncase/wt550/PopulateContents() + new /obj/item/gun/ballistic/automatic/smg/wt550(src) + new /obj/item/ammo_box/magazine/wt550m9/empty(src) + new /obj/item/ammo_box/magazine/wt550m9/empty(src) + +/obj/item/storage/pistolcase + name = "pistol case" + desc = "A large box designed for holding pistols and magazines safely." + icon = 'icons/obj/guncase.dmi' + icon_state = "pistolcase" + item_state = "infiltrator_case" + force = 12 + throwforce = 12 + throw_speed = 2 + w_class = WEIGHT_CLASS_BULKY + attack_verb = list("robusted") + hitsound = 'sound/weapons/smash.ogg' + drop_sound = 'sound/items/handling/toolbox_drop.ogg' + pickup_sound = 'sound/items/handling/toolbox_pickup.ogg' + +/obj/item/storage/pistolcase/ComponentInitialize() + . = ..() + var/datum/component/storage/STR = GetComponent(/datum/component/storage) + STR.max_items = 8 + STR.max_w_class = WEIGHT_CLASS_NORMAL + STR.set_holdable(list( + /obj/item/gun, + /obj/item/ammo_box/, + /obj/item/stock_parts/cell/gun + )) + +/obj/item/storage/pistolcase/modelh +/obj/item/storage/pistolcase/modelh/PopulateContents() + new /obj/item/gun/ballistic/automatic/powered/gauss/modelh/no_mag(src) + new /obj/item/ammo_box/magazine/modelh/empty(src) + new /obj/item/ammo_box/magazine/modelh/empty(src) + +/obj/item/storage/pistolcase/stechkin +/obj/item/storage/pistolcase/stechkin/PopulateContents() + new /obj/item/gun/ballistic/automatic/pistol/no_mag(src) + new /obj/item/ammo_box/magazine/m10mm/empty(src) + new /obj/item/ammo_box/magazine/m10mm/empty(src) + +/obj/item/storage/pistolcase/candor +/obj/item/storage/pistolcase/candor/PopulateContents() + new /obj/item/gun/ballistic/automatic/pistol/candor/no_mag(src) + new /obj/item/ammo_box/magazine/m45/empty(src) + new /obj/item/ammo_box/magazine/m45/empty(src) + +/obj/item/storage/pistolcase/detective +/obj/item/storage/pistolcase/detective/PopulateContents() + new /obj/item/gun/ballistic/revolver/detective/no_mag(src) + new /obj/item/ammo_box/c38/empty(src) + new /obj/item/ammo_box/c38/empty(src) + +/obj/item/storage/pistolcase/shadow +/obj/item/storage/pistolcase/shadow/PopulateContents() + new /obj/item/gun/ballistic/revolver/shadow/no_mag(src) + +/obj/item/storage/pistolcase/commander +/obj/item/storage/pistolcase/commander/PopulateContents() + new /obj/item/gun/ballistic/automatic/pistol/commander/no_mag(src) + new /obj/item/ammo_box/magazine/co9mm/empty(src) + new /obj/item/ammo_box/magazine/co9mm/empty(src) + +/obj/item/storage/pistolcase/firebrand +/obj/item/storage/pistolcase/firebrand/PopulateContents() + new /obj/item/gun/ballistic/revolver/firebrand/no_mag(src) + +/obj/item/storage/pistolcase/derringer +/obj/item/storage/pistolcase/derringer/PopulateContents() + new /obj/item/gun/ballistic/derringer/no_mag(src) + +/obj/item/storage/pistolcase/a357 +/obj/item/storage/pistolcase/a357/PopulateContents() + new /obj/item/gun/ballistic/revolver/no_mag(src) + new /obj/item/ammo_box/a357/empty(src) + new /obj/item/ammo_box/a357/empty(src) + +/obj/item/storage/pistolcase/montagne +/obj/item/storage/pistolcase/montagne/PopulateContents() + new /obj/item/gun/ballistic/revolver/montagne/no_mag(src) + new /obj/item/ammo_box/a44roum_speedloader/empty(src) + new /obj/item/ammo_box/a44roum_speedloader/empty(src) + + +/obj/item/storage/pistolcase/disposable +/obj/item/storage/pistolcase/disposable/PopulateContents() + new /obj/item/gun/ballistic/automatic/pistol/disposable(src) + new /obj/item/gun/ballistic/automatic/pistol/disposable(src) + +/obj/item/storage/pistolcase/laser +/obj/item/storage/pistolcase/laser/PopulateContents() + new /obj/item/gun/energy/laser/empty_cell(src) + new /obj/item/stock_parts/cell/gun(src) + +/obj/item/storage/pistolcase/egun +/obj/item/storage/pistolcase/egun/PopulateContents() + new /obj/item/gun/energy/laser/empty_cell(src) + new /obj/item/stock_parts/cell/gun(src) + +/obj/item/storage/pistolcase/kalixpistol +/obj/item/storage/pistolcase/kalixpistol/PopulateContents() + new /obj/item/gun/energy/kalix/pistol/empty_cell(src) + new /obj/item/stock_parts/cell/gun/kalix(src) + +/obj/item/storage/guncase/kalixrifle +/obj/item/storage/guncase/kalixrifle/PopulateContents() + new /obj/item/gun/energy/kalix/empty_cell(src) + new /obj/item/stock_parts/cell/gun/kalix(src) + +/obj/item/storage/pistolcase/miniegun +/obj/item/storage/pistolcase/miniegun/PopulateContents() + new /obj/item/gun/energy/e_gun/empty_cell(src) + new /obj/item/stock_parts/cell/gun/mini(src) + +/obj/item/storage/pistolcase/iongun +/obj/item/storage/pistolcase/iongun/PopulateContents() + new /obj/item/gun/energy/ionrifle/empty_cell(src) + new /obj/item/stock_parts/cell/gun(src) diff --git a/code/game/objects/structures/guncase.dm b/code/game/objects/structures/guncase.dm index cf0d6957e69c..ddcb59466deb 100644 --- a/code/game/objects/structures/guncase.dm +++ b/code/game/objects/structures/guncase.dm @@ -1,5 +1,5 @@ //GUNCASES// -/obj/structure/guncase +/obj/structure/guncloset name = "gun locker" desc = "A locker that holds guns." icon = 'icons/obj/closet.dmi' @@ -12,7 +12,7 @@ var/open = TRUE var/capacity = 4 -/obj/structure/guncase/Initialize(mapload) +/obj/structure/guncloset/Initialize(mapload) . = ..() if(mapload) for(var/obj/item/I in loc.contents) @@ -22,7 +22,7 @@ break update_appearance() -/obj/structure/guncase/update_overlays() +/obj/structure/guncloset/update_overlays() . = ..() if(case_type && LAZYLEN(contents)) var/mutable_appearance/gun_overlay = mutable_appearance(icon, case_type) @@ -31,7 +31,7 @@ . += new /mutable_appearance(gun_overlay) . += "[icon_state]_[open ? "open" : "door"]" -/obj/structure/guncase/attackby(obj/item/I, mob/user, params) +/obj/structure/guncloset/attackby(obj/item/I, mob/user, params) if(iscyborg(user) || isalien(user)) return if(istype(I, gun_category) && open) @@ -50,7 +50,7 @@ else return ..() -/obj/structure/guncase/attack_hand(mob/user) +/obj/structure/guncloset/attack_hand(mob/user) . = ..() if(.) return @@ -68,7 +68,7 @@ * Arguments: * * user The mob to which we are showing the radial menu */ -/obj/structure/guncase/proc/show_menu(mob/user) +/obj/structure/guncloset/proc/show_menu(mob/user) if(!LAZYLEN(contents)) return @@ -100,7 +100,7 @@ * Arguments: * * user The mob interacting with a menu */ -/obj/structure/guncase/proc/check_menu(mob/living/carbon/human/user) +/obj/structure/guncloset/proc/check_menu(mob/living/carbon/human/user) if(!open) return FALSE if(!istype(user)) @@ -109,10 +109,10 @@ return FALSE return TRUE -/obj/structure/guncase/handle_atom_del(atom/A) +/obj/structure/guncloset/handle_atom_del(atom/A) update_appearance() -/obj/structure/guncase/contents_explosion(severity, target) +/obj/structure/guncloset/contents_explosion(severity, target) for(var/atom/A in contents) switch(severity) if(EXPLODE_DEVASTATE) @@ -122,13 +122,13 @@ if(EXPLODE_LIGHT) SSexplosions.lowobj += A -/obj/structure/guncase/shotgun +/obj/structure/guncloset/shotgun name = "shotgun locker" desc = "A locker that holds shotguns." case_type = "shotgun" gun_category = /obj/item/gun/ballistic/shotgun -/obj/structure/guncase/ecase +/obj/structure/guncloset/ecase name = "energy gun locker" desc = "A locker that holds energy guns." icon_state = "ecase" diff --git a/code/modules/cargo/packs/ammo.dm b/code/modules/cargo/packs/ammo.dm index 714bab059f54..0b77a0f00afe 100644 --- a/code/modules/cargo/packs/ammo.dm +++ b/code/modules/cargo/packs/ammo.dm @@ -9,7 +9,7 @@ /datum/supply_pack/ammo/co9mm_mag name = "9mm Commander Magazine Crate" desc = "Contains a 9mm magazine for the standard-issue Commander pistol, containing ten rounds." - contains = list(/obj/item/ammo_box/magazine/co9mm,) + contains = list(/obj/item/ammo_box/magazine/co9mm) cost = 500 /datum/supply_pack/ammo/m45_mag diff --git a/code/modules/cargo/packs/gun.dm b/code/modules/cargo/packs/gun.dm index 7fe9e9aa8a11..132e62bb0ada 100644 --- a/code/modules/cargo/packs/gun.dm +++ b/code/modules/cargo/packs/gun.dm @@ -9,52 +9,52 @@ /datum/supply_pack/gun/disposable name = "Disposable Gun Crate" desc = "In some sectors, these disposable pistols are the only firearms that can be legally sold for less than 200cr. That price is still far too high." - cost = 150 - contains = list(/obj/item/gun/ballistic/automatic/pistol/disposable) + cost = 300 + contains = list(/obj/item/storage/pistolcase/disposable) crate_name = "disposable gun crate" /datum/supply_pack/gun/derringer name = ".38 Derringer Crate" desc = "A cheap, concealable pistol manufactured by the reputable Hunter's Pride. At least it's better than a disposable pistol. Chambered in .38 rounds." cost = 350 - contains = list(/obj/item/gun/ballistic/derringer) + contains = list(/obj/item/storage/pistolcase/derringer) crate_name = "derringer crate" /datum/supply_pack/gun/commanders name = "Commander Pistol Crate" desc = "Contains a modified Candor 'Commander' pistol, produced by Nanotrasen and chambered in 9mm." cost = 750 - contains = list(/obj/item/gun/ballistic/automatic/pistol/commander) + contains = list(/obj/item/storage/pistolcase/commander) /datum/supply_pack/gun/makarovs name = "Stechkin Pistol Crate" desc = "Contains a concealable stechkin pistol, produced by Scarborough Arms and chambered in 10mm." cost = 1000 - contains = list(/obj/item/gun/ballistic/automatic/pistol) + contains = list(/obj/item/storage/pistolcase/stechkin) /datum/supply_pack/gun/candors name = "Candor Pistol Crate" desc = "Contains a Candor pistol, the trusty sidearm of any spacer, produced by Hunter's Pride and chambered in .45 ACP." cost = 1000 - contains = list(/obj/item/gun/ballistic/automatic/pistol/candor) + contains = list(/obj/item/storage/pistolcase/candor) /datum/supply_pack/gun/pepperbox name = "HP Firebrand Pepperbox Revolver Crate" desc = "Contains a concealable pepperbox revolver manufactured by the Saint Roumain Militia, chambered in .357." cost = 1250 - contains = list(/obj/item/gun/ballistic/revolver/firebrand) + contains = list(/obj/item/storage/pistolcase/firebrand) /datum/supply_pack/gun/detrevolver name = "Hunter's Pride Detective Revolver Crate" desc = "Contains a concealable revolver favored by police departments around the sector, chambered in .38." cost = 600 - contains = list(/obj/item/gun/ballistic/revolver/detective) + contains = list(/obj/item/storage/pistolcase/detective) /datum/supply_pack/gun/shadowrevolver name = "Shadow Revolver Crate" desc = "Contains a concealable Shadow revolver, chambered in .44 Roumain." cost = 1000 - contains = list(/obj/item/gun/ballistic/revolver/shadow) + contains = list(/obj/item/storage/pistolcase/shadow) /* @@ -65,21 +65,21 @@ name = "Laser Gun Crate" desc = "Contains a lethal, high-energy laser gun." cost = 1000 - contains = list(/obj/item/gun/energy/laser) + contains = list(/obj/item/storage/pistolcase/laser) crate_name = "laser crate" /datum/supply_pack/gun/mini_energy name = "Mini Energy Gun Crate" desc = "Contains a small, versatile energy gun, capable of firing both nonlethal and lethal blasts, but with a limited power cell." cost = 500 - contains = list(/obj/item/gun/energy/e_gun/mini) + contains = list(/obj/item/storage/pistolcase/miniegun) crate_name = "laser crate" /datum/supply_pack/gun/energy name = "Energy Gun Crate" desc = "Contains a versatile energy gun, capable of firing both nonlethal and lethal blasts of light." cost = 1250 - contains = list(/obj/item/gun/energy/e_gun) + contains = list(/obj/item/storage/pistolcase/egun) crate_name = "energy gun crate" crate_type = /obj/structure/closet/crate/secure/plasma @@ -87,7 +87,7 @@ name = "Ion Rifle Crate" desc = "Contains a single Mk.I Ion Projector, a special anti-tank rifle designed to disable electronic threats at range." cost = 10000 - contains = list(/obj/item/gun/energy/ionrifle) + contains = list(/obj/item/storage/pistolcase/iongun) crate_name = "ion rifle crate" crate_type = /obj/structure/closet/crate/secure/plasma @@ -95,14 +95,14 @@ name = "Etherbor SG-8 Beam Pistol Crate" desc = "Contains a single SG-8 Beam Pistol, a civilian-grade sidearm developed in the PGF, manufactured by Etherbor Industries." cost = 1000 - contains = list(/obj/item/gun/energy/kalix/pistol) + contains = list(/obj/item/storage/pistolcase/kalixpistol) crate_name = "beam pistol crate" /datum/supply_pack/gun/laser/kalix name = "Etherbor BG-12 Beam Rifle Crate" desc = "Contains a single BG-12 Beam Rifle, a civilian-grade semi-automatic developed in the PGF, manufactured by Etherbor Industries." cost = 3000 - contains = list(/obj/item/gun/energy/kalix) + contains = list(/obj/item/storage/guncase/kalixrifle) crate_name = "beam rifle crate" /* @@ -113,7 +113,7 @@ name = "Double Barrel Shotgun Crate" desc = "For when you need to deal with 2 drunkards the old-fashioned way. Contains a double-barreled shotgun, favored by Bartenders. Warranty voided if sawed off." cost = 1000 - contains = list(/obj/item/gun/ballistic/shotgun/doublebarrel) + contains = list(/obj/item/storage/guncase/doublebarrel) crate_name = "shotguns crate" /datum/supply_pack/gun/hellfire_shotgun @@ -138,21 +138,21 @@ name = "Flaming Arrow Lever Action Rifle Crate" desc = "Contains an antiquated lever action rifle intended for hunting wildlife. Chambered in .38 rounds." cost = 750 - contains = list(/obj/item/gun/ballistic/shotgun/flamingarrow) + contains = list(/obj/item/storage/guncase/winchester) crate_name = "rifle crate" /datum/supply_pack/gun/illestren name = "Illestren Rifle Crate" desc = "Contains an expertly made bolt action rifle intended for hunting wildlife. Chambered in 8x50mmR rounds." cost = 1250 - contains = list(/obj/item/gun/ballistic/rifle/illestren) + contains = list(/obj/item/storage/guncase/illestren) crate_name = "rifle crate" /datum/supply_pack/gun/beacon name = "Contender Break Action Rifle Crate" desc = "Contains a single shot break action rifle to hunt wildlife that annoys you in particular. Chambered in devastating .45-70 rounds. Warranty voided if sawed off." cost = 2250 - contains = list(/obj/item/gun/ballistic/shotgun/doublebarrel/beacon) + contains = list(/obj/item/storage/guncase/beacon) crate_name = "rifle crate" /datum/supply_pack/gun/scout @@ -166,26 +166,26 @@ name = "Cobra-20 SMG Crate" desc = "Contains a .45 submachine gun, manufactured by Scaraborough Arms and chambered in .45" cost = 3000 - contains = list(/obj/item/gun/ballistic/automatic/smg/c20r/cobra) + contains = list(/obj/item/storage/guncase/cobra) crate_name = "SMG crate" /datum/supply_pack/gun/wt550 name = "WT-550 Auto Rifle Crate" desc = "Contains a high-powered, automatic personal defense weapon chambered in 4.6x30mm." cost = 4000 - contains = list(/obj/item/gun/ballistic/automatic/smg/wt550) + contains = list(/obj/item/storage/guncase/wt550) crate_name = "auto rifle crate" /datum/supply_pack/gun/p16 name = "P16 Assault Rifle Crate" desc = "Contains a high-powered, automatic rifle chambered in 5.56mm." cost = 5000 - contains = list(/obj/item/gun/ballistic/automatic/assault/p16) + contains = list(/obj/item/storage/guncase/p16) crate_name = "auto rifle crate" /datum/supply_pack/gun/skm name = "SKM-24 Rifle Crate" desc = "Contains a high-powered, automatic rifle chambered in 7.62x40mm CLIP." cost = 5000 - contains = list(/obj/item/gun/ballistic/automatic/assault/skm) + contains = list(/obj/item/storage/guncase/skm) crate_name = "auto rifle crate" diff --git a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm index 6246f8f9bf32..955856704ac6 100644 --- a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm +++ b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm @@ -13,6 +13,9 @@ w_class = WEIGHT_CLASS_TINY instant_load = TRUE +/obj/item/ammo_box/a357/empty + start_empty = TRUE + /obj/item/ammo_box/a357/match name = "speed loader (.357 match)" desc = "A 7-round speed loader for quickly reloading .357 revolvers. These match rounds travel faster, perform better against armor, and can ricochet off targets." @@ -119,6 +122,9 @@ desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These iceblox bullets contain a cryogenic payload that chills targets." ammo_type = /obj/item/ammo_casing/c38/iceblox +/obj/item/ammo_box/c38/empty + start_empty = TRUE + // 8x58mm Stripper Clip (SSG-669C) /obj/item/ammo_box/a858 @@ -156,6 +162,8 @@ w_class = WEIGHT_CLASS_TINY instant_load = TRUE +/obj/item/ammo_box/a300/empty + start_empty = TRUE // .300 Blackout Stripper Clip (Polymer Survivor Rifle) /obj/item/ammo_box/aac_300blk_stripper @@ -424,6 +432,9 @@ w_class = WEIGHT_CLASS_TINY instant_load = TRUE +/obj/item/ammo_box/a44roum_speedloader/empty + start_empty = TRUE + /obj/item/ammo_box/c46x30mm_box name = "ammo box (4.6x30mm)" desc = "A box of standard 4.6x30mm ammo." diff --git a/code/modules/projectiles/boxes_magazines/external/gauss.dm b/code/modules/projectiles/boxes_magazines/external/gauss.dm index fa3797707ce6..d2edfc4aac94 100644 --- a/code/modules/projectiles/boxes_magazines/external/gauss.dm +++ b/code/modules/projectiles/boxes_magazines/external/gauss.dm @@ -16,6 +16,9 @@ max_ammo = 10 multiple_sprites = AMMO_BOX_FULL_EMPTY +/obj/item/ammo_box/magazine/modelh/empty + start_empty = TRUE + /obj/item/ammo_box/magazine/gar name = "GAR tube magazine (ferromagnetic lances)" desc = "A 32-round magazined for the GAR assault rifle. Ferromagnetic lances do good damage with significant armor penetration." diff --git a/code/modules/projectiles/boxes_magazines/external/pistol.dm b/code/modules/projectiles/boxes_magazines/external/pistol.dm index 66b9238a5c90..8a1792485715 100644 --- a/code/modules/projectiles/boxes_magazines/external/pistol.dm +++ b/code/modules/projectiles/boxes_magazines/external/pistol.dm @@ -8,6 +8,9 @@ max_ammo = 8 multiple_sprites = AMMO_BOX_FULL_EMPTY +/obj/item/ammo_box/magazine/m10mm/empty + start_empty = TRUE + /obj/item/ammo_box/magazine/m10mm/inc name = "pistol magazine (10mm incendiary)" desc = "An 8-round single-stack magazine for the stechkin pistol. These incendiary rounds deal mediocre damage, but leave flaming trails which set targets ablaze." @@ -37,6 +40,9 @@ caliber = ".45" max_ammo = 8 +/obj/item/ammo_box/magazine/m45/empty + start_empty = TRUE + /obj/item/ammo_box/magazine/m45/inc name = "pistol magazine (.45 incendiary)" desc = "An 8-round single-stack magazine for the Candor pistol. These incendiary rounds deal mediocre damage, but leave flaming trails which set targets ablaze." @@ -71,6 +77,9 @@ max_ammo = 10 multiple_sprites = AMMO_BOX_PER_BULLET +/obj/item/ammo_box/magazine/co9mm/empty + start_empty = TRUE + /obj/item/ammo_box/magazine/pistol556mm name = "Pistole C magazine (5.56mm HITP caseless)" desc = "A 12-round, double-stack magazine for the Pistole C pistol. These rounds do okay damage with average performance against armor." @@ -93,6 +102,7 @@ else icon_state = "[base_icon_state]-0" + /obj/item/ammo_box/magazine/co9mm/inc name = "pistol magazine (9mm incendiary)" desc = "A 10-round double-stack magazine for standard-issue 9mm pistols. These incendiary rounds deal pitiful damage, but leave flaming trails which set targets ablaze." diff --git a/code/modules/projectiles/boxes_magazines/external/rifle.dm b/code/modules/projectiles/boxes_magazines/external/rifle.dm index 548350f20415..1066e5b7ef2d 100644 --- a/code/modules/projectiles/boxes_magazines/external/rifle.dm +++ b/code/modules/projectiles/boxes_magazines/external/rifle.dm @@ -55,6 +55,9 @@ max_ammo = 20 multiple_sprites = AMMO_BOX_FULL_EMPTY +/obj/item/ammo_box/magazine/skm_762_40/empty + start_empty = FALSE + /obj/item/ammo_box/magazine/skm_762_40/extended name = "extended assault rifle magazine (7.62x40mm CLIP)" desc = "A very curved, 40-round magazine for the 7.62x40mm CLIP variants of the SKM assault rifle family. These rounds do good damage with good armor penetration." @@ -102,6 +105,8 @@ max_ammo = 30 multiple_sprites = AMMO_BOX_FULL_EMPTY +/obj/item/ammo_box/magazine/p16/empty + start_empty = TRUE /obj/item/ammo_box/magazine/swiss name = "\improper Swiss Cheese Magazine (5.56x45mm)" @@ -133,3 +138,6 @@ max_ammo = 5 multiple_sprites = AMMO_BOX_PER_BULLET w_class = WEIGHT_CLASS_TINY + +/obj/item/ammo_box/magazine/illestren_a850r/empty + start_empty = TRUE diff --git a/code/modules/projectiles/boxes_magazines/external/smg.dm b/code/modules/projectiles/boxes_magazines/external/smg.dm index 61b9eb78512a..4c464c0433d0 100644 --- a/code/modules/projectiles/boxes_magazines/external/smg.dm +++ b/code/modules/projectiles/boxes_magazines/external/smg.dm @@ -11,6 +11,9 @@ . = ..() icon_state = "[base_icon_state]-[round(ammo_count(), 6)]" +/obj/item/ammo_box/magazine/wt550m9/empty + start_empty = TRUE + /obj/item/ammo_box/magazine/wt550m9/ap name = "wt550 magazine (4.6x30mm AP)" desc = "A compact, 30-round top-loading magazine for the WT-550 Automatic Rifle. These armor-piercing rounds are great at piercing protective equipment, but lose some stopping power." @@ -97,6 +100,9 @@ . = ..() icon_state = "c20r45-[round(ammo_count(),2)]" +/obj/item/ammo_box/magazine/smgm45/empty + start_empty = TRUE + /obj/item/ammo_box/magazine/c45_firestorm_mag name = "stick magazine (.45)" desc = "A 28-round stick magazine for the toploading Firestorm submachine gun. These rounds do moderate damage, but struggle against armor." diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index 71a291f301de..b88c8afed86d 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -101,15 +101,16 @@ /obj/item/gun/ballistic/Initialize() . = ..() - if (!spawnwithmagazine) + if (!spawnwithmagazine && !ispath(mag_type, /obj/item/ammo_box/magazine/internal)) bolt_locked = TRUE update_appearance() return if (!magazine) magazine = new mag_type(src) + if (!spawnwithmagazine) + get_ammo_list (drop_all = TRUE) chamber_round() update_appearance() - /obj/item/gun/ballistic/update_icon_state() if(current_skin) icon_state = "[unique_reskin[current_skin]][sawn_off ? "_sawn" : ""]" diff --git a/code/modules/projectiles/guns/ballistic/assault.dm b/code/modules/projectiles/guns/ballistic/assault.dm index 9d97dc627bd4..cceda8a28b77 100644 --- a/code/modules/projectiles/guns/ballistic/assault.dm +++ b/code/modules/projectiles/guns/ballistic/assault.dm @@ -59,6 +59,9 @@ fire_delay = 0.2 SECONDS +/obj/item/gun/ballistic/automatic/assault/skm/no_mag + spawnwithmagazine = FALSE + /obj/item/gun/ballistic/automatic/assault/skm/pirate name = "\improper Chopper" desc = "An SKM-24 in a state of shockingly poor repair: Several parts are missing and the 'grip' is improvised from scrap wood. It's a miracle it still works at all. Chambered in 7.62x40mm CLIP." @@ -97,6 +100,9 @@ eject_sound = 'sound/weapons/gun/rifle/m16_unload.ogg' eject_empty_sound = 'sound/weapons/gun/rifle/m16_unload.ogg' +/obj/item/gun/ballistic/automatic/assault/p16/no_mag + spawnwithmagazine = FALSE + /obj/item/gun/ballistic/automatic/assault/p16/minutemen name = "\improper CM-16" desc = "The standard-issue rifle of CLIP and an extensively modified reproduction of the P-16. Chambered in 5.56mm." diff --git a/code/modules/projectiles/guns/ballistic/gauss.dm b/code/modules/projectiles/guns/ballistic/gauss.dm index c50f906e4eba..11de497c874d 100644 --- a/code/modules/projectiles/guns/ballistic/gauss.dm +++ b/code/modules/projectiles/guns/ballistic/gauss.dm @@ -48,6 +48,9 @@ spread_unwielded = 12 fire_select_icon_state_prefix = "slug_" +/obj/item/gun/ballistic/automatic/powered/gauss/modelh/no_mag + spawnwithmagazine = FALSE + /obj/item/gun/ballistic/automatic/powered/gauss/modelh/suns desc = "A standard-issue pistol exported from the Solarian Confederation. It fires slow flesh-rending ferromagnetic slugs at a high energy cost, however they are ineffective on any armor. It is painted in the colors of SUNS." mag_type = /obj/item/ammo_box/magazine/modelh diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm index c4d505bcb10c..797d8ff97cbc 100644 --- a/code/modules/projectiles/guns/ballistic/pistol.dm +++ b/code/modules/projectiles/guns/ballistic/pistol.dm @@ -307,6 +307,9 @@ EMPTY_GUN_HELPER(automatic/pistol/commander/inteq) icon_state = "derringer_gold" mag_type = /obj/item/ammo_box/magazine/internal/derr357 +/obj/item/gun/ballistic/derringer/no_mag + spawnwithmagazine = FALSE + /obj/item/gun/ballistic/automatic/pistol/himehabu name = "\improper Himehabu" desc = "A very small .22 LR pistol. The long awaited successor to the Stechkin; It has become a favorite among syndicate spies. Chambered in .22 LR." @@ -320,3 +323,4 @@ EMPTY_GUN_HELPER(automatic/pistol/commander/inteq) recoil_unwielded = -2 spread_unwielded = 0 wield_slowdown = 0 + diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 034e12ca65cd..f7bcc16bc889 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -542,6 +542,11 @@ EMPTY_GUN_HELPER(revolver/detective) to_chat(user, "You remove the modifications on [src]. Now it will fire .38 rounds.") return TRUE +/obj/item/gun/ballistic/revolver/detective/no_mag + spawnwithmagazine = FALSE + +/obj/item/gun/ballistic/revolver/no_mag + spawnwithmagazine = FALSE /obj/item/gun/ballistic/revolver/mateba name = "\improper Unica 6 auto-revolver" @@ -576,6 +581,9 @@ EMPTY_GUN_HELPER(revolver/detective) . = ..() AddComponent(/datum/component/ammo_hud/revolver) +/obj/item/gun/ballistic/revolver/montagne/no_mag + spawnwithmagazine = FALSE + /obj/item/gun/ballistic/revolver/ashhand name = "HP Ashhand" desc = "A massive, long-barreled revolver often used by the Saint-Roumain Militia as protection against big game. Can only be reloaded one cartridge at a time due to its reinforced frame. Uses .45-70 ammo." @@ -692,6 +700,9 @@ EMPTY_GUN_HELPER(revolver/detective) semi_auto = TRUE safety_wording = "safety" +/obj/item/gun/ballistic/revolver/firebrand/no_mag + spawnwithmagazine = FALSE + /obj/item/gun/ballistic/revolver/shadow name = "\improper HP Shadow" desc = "A mid-size revolver. Despite the antiquated design, it is cheap, reliable, and stylish, making it a favorite among fast-drawing spacers and the officers of various militaries, as well as small-time police units. Chambered in .45." @@ -725,3 +736,6 @@ EMPTY_GUN_HELPER(revolver/detective) if(chambered.BB && (HAS_TRAIT(user, TRAIT_GUNSLINGER))) chambered.BB.damage += 5 chambered.BB.armour_penetration += 5 + +/obj/item/gun/ballistic/revolver/shadow/no_mag + spawnwithmagazine = FALSE diff --git a/code/modules/projectiles/guns/ballistic/rifle.dm b/code/modules/projectiles/guns/ballistic/rifle.dm index 336c8a07dce6..bf8866ebe07f 100644 --- a/code/modules/projectiles/guns/ballistic/rifle.dm +++ b/code/modules/projectiles/guns/ballistic/rifle.dm @@ -85,6 +85,9 @@ can_be_sawn_off = TRUE manufacturer = MANUFACTURER_HUNTERSPRIDE +/obj/item/gun/ballistic/rifle/illestren/empty //i had to name it empty instead of no_mag because else it wouldnt work with guncases. sorry! + spawnwithmagazine = FALSE + /obj/item/gun/ballistic/rifle/illestren/sawoff(mob/user) . = ..() if(.) @@ -160,6 +163,9 @@ manufacturer = MANUFACTURER_HUNTERSPRIDE +/obj/item/gun/ballistic/rifle/scout/no_mag + spawnwithmagazine = FALSE + /obj/item/gun/ballistic/rifle/polymer name = "polymer survivor rifle" desc = "A bolt-action rifle made of scrap, desperation, and luck. Likely to shatter at any moment. Chambered in .300 Blackout." diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index 896ae8095cd6..81642a13262f 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -91,6 +91,8 @@ item_state = "illestren_factory_sawn" // i couldnt care about making another sprite, looks close enough mob_overlay_state = item_state +/obj/item/gun/ballistic/shotgun/brimstone/no_mag + spawnwithmagazine = FALSE // HELLFIRE SHOTGUN // /obj/item/gun/ballistic/shotgun/hellfire @@ -122,6 +124,8 @@ item_state = "dshotgun_sawn" // ditto mob_overlay_state = item_state +/obj/item/gun/ballistic/shotgun/hellfire/no_mag + spawnwithmagazine = FALSE // Automatic Shotguns// /obj/item/gun/ballistic/shotgun/automatic spread = 4 @@ -379,6 +383,9 @@ EMPTY_GUN_HELPER(shotgun/bulldog/inteq) item_state = "dshotgun_sawn" mob_overlay_state = item_state +/obj/item/gun/ballistic/shotgun/doublebarrel/no_mag + spawnwithmagazine = FALSE + // sawn off beforehand /obj/item/gun/ballistic/shotgun/doublebarrel/presawn name = "sawn-off double-barreled shotgun" @@ -603,6 +610,9 @@ EMPTY_GUN_HELPER(shotgun/bulldog/inteq) recoil = 0 recoil_unwielded = 2 +/obj/item/gun/ballistic/shotgun/flamingarrow/no_mag + spawnwithmagazine = FALSE + /obj/item/gun/ballistic/shotgun/flamingarrow/update_icon_state() . = ..() if(current_skin) @@ -733,6 +743,9 @@ EMPTY_GUN_HELPER(shotgun/bulldog/inteq) recoil = 2 recoil_unwielded = 4 +/obj/item/gun/ballistic/shotgun/doublebarrel/beacon + spawnwithmagazine = FALSE + /obj/item/gun/ballistic/shotgun/doublebarrel/beacon/factory desc = "A single-shot break-action rifle made by Hunter's Pride and sold to civilian hunters. This example has been kept in excellent shape and may as well be fresh out of the workshop. Uses .45-70 ammo." sawn_desc= "A single-shot break-action pistol chambered in .45-70. A bit difficult to aim." diff --git a/code/modules/projectiles/guns/ballistic/smg.dm b/code/modules/projectiles/guns/ballistic/smg.dm index 5e8896ab10ec..06d93c3f7dc8 100644 --- a/code/modules/projectiles/guns/ballistic/smg.dm +++ b/code/modules/projectiles/guns/ballistic/smg.dm @@ -78,6 +78,9 @@ EMPTY_GUN_HELPER(automatic/smg/c20r) icon_state = "cobra20" item_state = "cobra20" +/obj/item/gun/ballistic/automatic/smg/c20r/cobra/no_mag + spawnwithmagazine = FALSE + /obj/item/gun/ballistic/automatic/smg/c20r/suns desc = "A bullpup .45 SMG designated 'C-20r.' Its buttstamp reads 'Scarborough Arms - Per falcis, per pravitas.' This one is painted in SUNS' colors." icon_state = "c20r_suns" @@ -100,6 +103,9 @@ EMPTY_GUN_HELPER(automatic/smg/c20r) manufacturer = MANUFACTURER_NANOTRASEN_OLD fire_sound = 'sound/weapons/gun/smg/smg_heavy.ogg' +/obj/item/gun/ballistic/automatic/smg/wt550/no_mag + spawnwithmagazine = FALSE + /obj/item/gun/ballistic/automatic/smg/mini_uzi name = "\improper Type U3 Uzi" desc = "A lightweight submachine gun, for when you really want someone dead. Uses 9mm rounds." diff --git a/code/modules/projectiles/guns/energy/energy_gun.dm b/code/modules/projectiles/guns/energy/energy_gun.dm index f1188f76701f..12df6fd4a352 100644 --- a/code/modules/projectiles/guns/energy/energy_gun.dm +++ b/code/modules/projectiles/guns/energy/energy_gun.dm @@ -12,6 +12,9 @@ dual_wield_spread = 60 manufacturer = MANUFACTURER_SHARPLITE_NEW +/obj/item/gun/energy/e_gun/empty_cell + dead_cell = TRUE + /obj/item/gun/energy/e_gun/mini name = "miniature energy gun" desc = "A small, pistol-sized energy gun with a built-in flashlight. It has two settings: disable and kill." @@ -38,6 +41,9 @@ set_gun_light(new /obj/item/flashlight/seclite(src)) return ..() +/obj/item/gun/energy/e_gun/mini/empty_cell + dead_cell = TRUE + /obj/item/gun/energy/e_gun/hades name = "SL AL-655 'Hades' energy rifle" desc = "The standard issue rifle of Nanotrasen's Security Forces. Most have been put in long term storage following the ICW, and usually aren't issued to low ranking security divisions." diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 31261d31e30c..92193ed89bdb 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -14,6 +14,9 @@ spread = 0 spread_unwielded = 10 +/obj/item/gun/energy/laser/empty_cell + dead_cell = TRUE + /obj/item/gun/energy/laser/practice name = "practice laser gun" desc = "A modified version of the L-204 laser gun, this one fires less concentrated energy bolts designed for target practice." diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 73d9104833fb..3233e9afff45 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -17,6 +17,9 @@ /obj/item/gun/energy/ionrifle/emp_act(severity) return +/obj/item/gun/energy/ionrifle/empty_cell + dead_cell = TRUE + /obj/item/gun/energy/ionrifle/carbine name = "ion carbine" desc = "The MK.II Prototype Ion Projector is a lightweight carbine version of the larger ion rifle, built to be ergonomic and efficient." diff --git a/code/modules/projectiles/guns/faction/gezena/energy_gunsword.dm b/code/modules/projectiles/guns/faction/gezena/energy_gunsword.dm index 20a301a1396c..17cc5157ce78 100644 --- a/code/modules/projectiles/guns/faction/gezena/energy_gunsword.dm +++ b/code/modules/projectiles/guns/faction/gezena/energy_gunsword.dm @@ -42,6 +42,9 @@ damage = 25 armour_penetration = -10 +/obj/item/gun/energy/kalix/empty_cell + dead_cell = TRUE + /obj/item/gun/energy/kalix/pgf name = "Etherbor BG-16" desc = "An advanced variant of the BG-12, the BG-16 is the military-grade beam gun designed and manufactured by Etherbor Industries as the standard-issue close-range weapon of the PGF." @@ -91,6 +94,9 @@ e_cost = 1250 //10 shots per cell delay = 0 +/obj/item/gun/energy/kalix/pistol/empty_cell + dead_cell = TRUE + /obj/item/gun/energy/kalix/pgf/heavy name = "Etherbor HBG-7" desc = "The HBG-7 is the standard-issue rifle weapon of the PGF. If the stopping power and fire rate isn't enough, it comes with a DMR mode that has greater armor piercing for dealing with armored targets." diff --git a/icons/obj/guncase.dmi b/icons/obj/guncase.dmi new file mode 100644 index 0000000000000000000000000000000000000000..4941b965f2f84c706c80c274ad72397d7f6c0d8c GIT binary patch literal 359 zcmV-t0hs=YP)V=-0C=2J zR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5 zsUWksBtIuPu{c$Ui!&v&s2C_{$iqYo;Cwcb%yK zsa$8o3ZrpGH#wSx9j;dDHJ!Ca1Q9ZO61ZJI^WyEddjizcKL+Sz=o|n5002ovPDHLk FV1hB7kaYk6 literal 0 HcmV?d00001 diff --git a/icons/obj/guncase_48x32.dmi b/icons/obj/guncase_48x32.dmi new file mode 100644 index 0000000000000000000000000000000000000000..b5dc20bc64e545e453d1d1c6cde50dca893cb21c GIT binary patch literal 606 zcmV-k0-^nhP)V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#aV)qvGg33t zGfIFQVZgi*W9;OoBp6G6l9j~y_WSSWJNkB#=eY_Qsc#2txyE`8VOUe1s zDANOY1BNH3d$vo8F#Iwj$Q zuY^*-%Y305fD)E!a$NZiX|=3Q&^26q=%c7}Bsf;V?#A{KxV##FM`inIu@icFoc88? z8$JXX+sc%8n2i8&T%gSkds#HsToOAeAGa0#g*d4TSU-}*EwPjE5wrkT`T#uNUAd2l z(5FTU*yckY-T|<6Z51Va+~0I~$$m42l|k^lez07*qoM6N<$g8LQ@%>V!Z literal 0 HcmV?d00001 diff --git a/shiptest.dme b/shiptest.dme index b29930a658ee..17389f325e20 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -1316,6 +1316,7 @@ #include "code\game\objects\items\storage\briefcase.dm" #include "code\game\objects\items\storage\fancy.dm" #include "code\game\objects\items\storage\firstaid.dm" +#include "code\game\objects\items\storage\guncases.dm" #include "code\game\objects\items\storage\holsters.dm" #include "code\game\objects\items\storage\lockbox.dm" #include "code\game\objects\items\storage\ration.dm"