diff --git a/code/game/objects/structures/crates_lockers/largecrate_supplies.dm b/code/game/objects/structures/crates_lockers/largecrate_supplies.dm index 64d569009b..b9486e4f09 100644 --- a/code/game/objects/structures/crates_lockers/largecrate_supplies.dm +++ b/code/game/objects/structures/crates_lockers/largecrate_supplies.dm @@ -218,10 +218,16 @@ supplies = list(/obj/item/storage/box/explosive_mines = 5) /obj/structure/largecrate/supply/explosives/grenades - name = "\improper M40 HDEP grenade case (x50)" - desc = "A case containing two twenty-five M40 HDEP grenade boxes." + name = "\improper M40 HEDP grenade case (x50)" + desc = "A case containing two twenty-five M40 HEDP grenade boxes." supplies = list(/obj/item/storage/box/nade_box = 2) +/obj/structure/largecrate/supply/explosives/grenades/less + name = "\improper M40 HEDP grenade case (x25)" + desc = "A case containing one twenty-five M40 HEDP grenade box." + icon_state = "case" + supplies = list(/obj/item/storage/box/nade_box = 1) + /obj/structure/largecrate/supply/explosives/mortar_he name = "80mm HE mortar shell case (x25)" desc = "A case containing twenty-five 80mm HE mortar shells." @@ -295,6 +301,13 @@ desc = "A crate containing a P.A.C.M.A.N. generator, some fuel, and some cable coil to get your power up and going." supplies = list(/obj/structure/machinery/power/port_gen/pacman = 1, /obj/item/stack/sheet/mineral/phoron/medium_stack = 1, /obj/item/stack/cable_coil/yellow = 3) +/obj/structure/largecrate/supply/motiondetectors + name = "\improper motion detectors crate" + desc = "A crate containing two motiondetectors." + icon_state = "case" + supplies = list(/obj/item/device/motiondetector = 2) + + /obj/structure/largecrate/supply/medicine name = "medical crate" desc = "A crate containing medical supplies." diff --git a/code/game/objects/structures/gun_rack.dm b/code/game/objects/structures/gun_rack.dm new file mode 100644 index 0000000000..ac32b0162d --- /dev/null +++ b/code/game/objects/structures/gun_rack.dm @@ -0,0 +1,56 @@ +/obj/structure/gun_rack + name = "gun rack" + desc = "ARMAT-produced gun rack for storage of long guns. While initial model was supposed to be extremely modifiable, USCM comissioned racks with fixed slots which only fit M41A rifles. Some say they were cheaper, and some say the main reason was marine's ability to easily break anything more complex than a tungsten ball." + icon = 'icons/obj/structures/gun_racks.dmi' + icon_state = "m41a" + density = TRUE + var/allowed_type + var/max_stored = 5 + var/initial_stored = 5 + +/obj/structure/gun_rack/Initialize() + . = ..() + if(!allowed_type) + icon_state = "m41a_0" + return + + if(initial_stored) + var/i = 0 + while(i < initial_stored) + contents += new allowed_type(src) + i++ + update_icon() + +/obj/structure/gun_rack/attackby(obj/item/O, mob/user) + if(istype(O, allowed_type) && contents.len < max_stored) + user.drop_inv_item_to_loc(O, src) + contents += O + update_icon() + +/obj/structure/gun_rack/attack_hand(mob/living/user) + if(!contents.len) + to_chat(user, SPAN_WARNING("[src] is empty.")) + return + + var/obj/stored_obj = contents[contents.len] + contents -= stored_obj + user.put_in_hands(stored_obj) + to_chat(user, SPAN_NOTICE("You grab [stored_obj] from [src].")) + playsound(src, "gunequip", 25, TRUE) + update_icon() + +/obj/structure/gun_rack/update_icon() + if(contents.len) + icon_state = "[initial(icon_state)]_[contents.len]" + else + icon_state = "[initial(icon_state)]_0" + +/obj/structure/gun_rack/m41 + allowed_type = /obj/item/weapon/gun/rifle/m41aMK1 + +/obj/structure/gun_rack/type71 + icon_state = "type71" + desc = "Some off-branded gun rack. Per SOF and UPPA regulations, weapons should be stored in secure safes and only given out when necessary. Of course, most (but not all!) units overlook this regulation, only storing their firearms in safes when inspection arrives." + max_stored = 6 + initial_stored = 6 + allowed_type = /obj/item/weapon/gun/rifle/type71 diff --git a/code/modules/cm_marines/equipment/guncases.dm b/code/modules/cm_marines/equipment/guncases.dm index 8ab83116f6..6b2c99553b 100644 --- a/code/modules/cm_marines/equipment/guncases.dm +++ b/code/modules/cm_marines/equipment/guncases.dm @@ -13,9 +13,9 @@ /obj/item/storage/box/guncase/update_icon() if(LAZYLEN(contents)) - icon_state = "guncase" + icon_state = initial(icon_state) else - icon_state = "guncase_e" + icon_state = "[initial(icon_state)]_e" /obj/item/storage/box/guncase/Initialize() . = ..() @@ -142,13 +142,12 @@ /obj/item/storage/box/guncase/flamer name = "\improper M240 incinerator case" desc = "A gun case containing the M240A1 incinerator unit. It does come loaded, but you'll still have to find extra tanks as you go." - storage_slots = 4 + storage_slots = 3 can_hold = list(/obj/item/weapon/gun/flamer, /obj/item/ammo_magazine/flamer_tank, /obj/item/attachable/attached_gun/extinguisher) /obj/item/storage/box/guncase/flamer/fill_preset_inventory() new /obj/item/weapon/gun/flamer(src) new /obj/item/ammo_magazine/flamer_tank(src) - new /obj/item/ammo_magazine/flamer_tank(src) new /obj/item/attachable/attached_gun/extinguisher(src) //------------ @@ -201,6 +200,7 @@ /obj/item/storage/box/guncase/pumpshotgun name = "\improper M37A2 Pump Shotgun case" desc = "A gun case containing the M37A2 Pump Shotgun." + icon_state = "guncase_red" storage_slots = 4 can_hold = list(/obj/item/weapon/gun/shotgun/pump, /obj/item/ammo_magazine/shotgun/buckshot, /obj/item/ammo_magazine/shotgun/flechette, /obj/item/ammo_magazine/shotgun/slugs) @@ -216,6 +216,13 @@ if(3) new /obj/item/ammo_magazine/shotgun/slugs(src) +/obj/item/storage/box/guncase/pumpshotgun/special + storage_slots = 2 + +/obj/item/storage/box/guncase/pumpshotgun/special/fill_preset_inventory() + new /obj/item/weapon/gun/shotgun/pump(src) + new /obj/item/ammo_magazine/shotgun/buckshot/special(src) + /obj/item/storage/box/guncase/mk45_automag name = "\improper MK-45 Automagnum case" desc = "A gun case containing the MK-45 'High-Power' Automagnum sidearm. While this weapon was rejected as a replacement for the M44 Combat Revolver, it is often back-issued to troops who prefer its powerful bullets over more common sidearms." @@ -323,12 +330,6 @@ /obj/item/pamphlet/trait/vulture, ) -/obj/item/storage/box/guncase/vulture/update_icon() - if(LAZYLEN(contents)) - icon_state = "guncase_blue" - else - icon_state = "guncase_blue_e" - /obj/item/storage/box/guncase/vulture/fill_preset_inventory() var/obj/item/weapon/gun/boltaction/vulture/rifle = new(src) new /obj/item/ammo_magazine/rifle/boltaction/vulture(src) diff --git a/colonialmarines.dme b/colonialmarines.dme index 9b86ad28e6..38cce11cb2 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -1250,6 +1250,7 @@ #include "code\game\objects\structures\flora.dm" #include "code\game\objects\structures\girders.dm" #include "code\game\objects\structures\grille.dm" +#include "code\game\objects\structures\gun_rack.dm" #include "code\game\objects\structures\ice_caves.dm" #include "code\game\objects\structures\inflatable.dm" #include "code\game\objects\structures\janicart.dm" diff --git a/icons/obj/items/storage.dmi b/icons/obj/items/storage.dmi index 6edbf5b6c7..42f91cbab0 100644 Binary files a/icons/obj/items/storage.dmi and b/icons/obj/items/storage.dmi differ diff --git a/icons/obj/structures/gun_racks.dmi b/icons/obj/structures/gun_racks.dmi new file mode 100644 index 0000000000..e452fa3c68 Binary files /dev/null and b/icons/obj/structures/gun_racks.dmi differ diff --git a/maps/map_files/chapaev/chapaev.dmm b/maps/map_files/chapaev/chapaev.dmm index 6ff87b7727..7a493f30b4 100644 --- a/maps/map_files/chapaev/chapaev.dmm +++ b/maps/map_files/chapaev/chapaev.dmm @@ -1532,14 +1532,10 @@ }, /area/golden_arrow/engineering) "pw" = ( -/obj/structure/surface/rack, -/obj/item/weapon/gun/rifle/type71, -/obj/item/weapon/gun/rifle/type71{ - pixel_y = 10 - }, /obj/structure/machinery/light{ dir = 1 }, +/obj/structure/gun_rack/type71, /turf/open/floor/strata{ icon_state = "floor2" }, @@ -1558,11 +1554,14 @@ }, /area/golden_arrow/squad_one) "pz" = ( -/obj/structure/surface/rack, -/obj/item/weapon/gun/rifle/type71, -/obj/item/weapon/gun/rifle/type71{ - pixel_y = 10 +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/ammo_magazine/minigun{ + name = "GSh-7.62 rotating ammo drum (7.62x51mm)"; + desc = "A huge ammo drum for a huge gun. Your platoon got issued with magazines first which happened several months ago. When will the miniguns come, you wonder?"; + pixel_y = 8; + pixel_x = 6 }, +/obj/item/reagent_container/food/drinks/dry_ramen, /turf/open/floor/strata{ icon_state = "floor2" }, @@ -1801,6 +1800,17 @@ icon_state = "floor3" }, /area/golden_arrow/cryo_cells) +"rv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/largecrate/supply/ammo/type71, +/obj/structure/largecrate/supply/ammo/type71{ + pixel_x = 3; + pixel_y = 8 + }, +/turf/open/floor/strata{ + icon_state = "floor2" + }, +/area/golden_arrow/squad_one) "rE" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -2969,14 +2979,10 @@ }, /area/golden_arrow/prep_hallway) "CU" = ( -/obj/structure/surface/rack, -/obj/item/weapon/gun/rifle/type71, -/obj/item/weapon/gun/rifle/type71{ - pixel_y = 10 - }, /obj/structure/machinery/light{ dir = 1 }, +/obj/structure/gun_rack/type71, /turf/open/floor/strata{ icon_state = "floor2" }, @@ -4299,6 +4305,10 @@ /obj/item/clothing/accessory/armband{ pixel_x = 6 }, +/obj/item/tool/screwdriver{ + pixel_y = 8; + pixel_x = -9 + }, /turf/open/floor/strata{ dir = 4; icon_state = "floor3" @@ -4358,6 +4368,24 @@ icon_state = "floor3" }, /area/golden_arrow/medical) +"RM" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/attachable/bayonet/upp, +/obj/effect/decal/cleanable/blood/drip{ + layer = 6; + plane = 2.8; + pixel_y = 20 + }, +/obj/effect/decal/cleanable/blood/drip{ + layer = 6; + plane = 2.8; + pixel_y = 16; + pixel_x = -7 + }, +/turf/open/floor/strata{ + icon_state = "floor2" + }, +/area/golden_arrow/squad_one) "RN" = ( /obj/structure/machinery/camera/autoname/golden_arrow{ name = "ship-grade camera"; @@ -4392,10 +4420,20 @@ }, /area/golden_arrow/medical) "Sf" = ( -/obj/structure/surface/rack, -/obj/item/weapon/gun/rifle/type71, -/obj/item/weapon/gun/rifle/type71{ - pixel_y = 10 +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/ammo_magazine/handful/shotgun/heavy/flechette{ + current_rounds = 1; + pixel_y = 6; + pixel_x = 7 + }, +/obj/item/ammo_magazine/handful/shotgun/heavy{ + pixel_y = 5; + current_rounds = 1 + }, +/obj/item/ammo_magazine/handful/shotgun/heavy/beanbag{ + pixel_y = 5; + pixel_x = -8; + current_rounds = 1 }, /turf/open/floor/strata{ icon_state = "floor2" @@ -4495,16 +4533,23 @@ /turf/closed/wall/strata_outpost/reinforced/hull, /area/golden_arrow/supply) "Tw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/largecrate/supply/ammo/type71, -/obj/structure/largecrate/supply/ammo/type71{ - pixel_x = 4; - pixel_y = 8 +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/reagent_container/food/drinks/cans/boda{ + pixel_x = -6; + pixel_y = 11 + }, +/obj/item/reagent_container/food/drinks/cans/boda{ + pixel_x = 2; + pixel_y = 11 + }, +/obj/item/reagent_container/food/drinks/cans/boda{ + pixel_x = -3; + pixel_y = 24 }, /turf/open/floor/strata{ icon_state = "floor2" }, -/area/golden_arrow/squad_one) +/area/golden_arrow/squad_two) "Tx" = ( /obj/structure/machinery/cryopod, /obj/structure/machinery/camera/autoname/golden_arrow{ @@ -12375,11 +12420,11 @@ tZ tZ tZ ei -uS +RM dU dU dU -IW +rv ww vW vW @@ -12387,11 +12432,11 @@ PL Rm mv NU -Lm +Tw Hp Hp Hp -bw +bR IS IS IS @@ -12831,7 +12876,7 @@ TB VP TB ww -pz +IW dU MH dU @@ -12843,7 +12888,7 @@ es Rm vW NU -Sf +bw Hp Jt Hp @@ -12983,7 +13028,7 @@ uA zU Ar ww -Tw +uS mT Mm TF @@ -12995,7 +13040,7 @@ zb vQ sy NU -bR +Lm OL bc hV diff --git a/maps/map_files/golden_arrow/golden_arrow.dmm b/maps/map_files/golden_arrow/golden_arrow.dmm index fa093c5b8a..9225f4301d 100644 --- a/maps/map_files/golden_arrow/golden_arrow.dmm +++ b/maps/map_files/golden_arrow/golden_arrow.dmm @@ -454,6 +454,14 @@ dir = 1 }, /obj/structure/pipes/vents/scrubber, +/obj/structure/surface/table/almayer, +/obj/item/ammo_box/magazine/mk1, +/obj/item/ammo_magazine/rifle/m41aMK1/heap{ + desc = "A long rectangular box of rounds that is only compatible with the older M41A MK1. Holds up to 99 rounds. This one contained High-Explosive Armor-Piercing bullets. It also has some... notches on the side..?"; + current_rounds = 0; + pixel_y = 6; + pixel_x = 13 + }, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -569,6 +577,13 @@ icon_state = "plate" }, /area/golden_arrow/prep_hallway) +"cV" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/box/guncase/pumpshotgun/special, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/golden_arrow/squad_one) "cZ" = ( /obj/structure/machinery/cm_vending/sorted/medical/chemistry/no_access, /turf/open/floor/almayer{ @@ -2474,14 +2489,14 @@ }, /area/golden_arrow/supply) "ot" = ( -/obj/structure/surface/rack, -/obj/item/weapon/gun/rifle/m41aMK1{ - pixel_y = 7 +/obj/structure/largecrate/supply/ammo{ + name = "sentry crate"; + fill_from_loc = 1 }, -/obj/item/weapon/gun/rifle/m41aMK1, -/obj/item/weapon/gun/rifle/m41aMK1{ - pixel_y = -7 +/obj/item/ammo_magazine/sentry{ + layer = 3.01 }, +/obj/item/defenses/handheld/sentry, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -3259,6 +3274,14 @@ pixel_x = 7; pixel_y = 9 }, +/obj/item/prop/helmetgarb/spent_slug{ + pixel_y = 9; + pixel_x = 8 + }, +/obj/item/prop/helmetgarb/spent_slug{ + pixel_y = 9; + pixel_x = 8 + }, /turf/open/floor/plating/plating_catwalk, /area/golden_arrow/squad_two) "tA" = ( @@ -4069,14 +4092,15 @@ /turf/open/floor/almayer, /area/golden_arrow/synthcloset) "yL" = ( -/obj/structure/closet/coffin/woodencrate, -/obj/item/storage/box/m94, -/obj/item/storage/box/m94, -/obj/item/storage/box/m94, /obj/structure/sign/safety/rewire{ pixel_x = 14; pixel_y = 29 }, +/obj/structure/gun_rack/m41, +/obj/item/ashtray/plastic{ + pixel_y = 14; + pixel_x = 8 + }, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -4500,6 +4524,10 @@ layer = 3.01 }, /obj/item/defenses/handheld/sentry, +/obj/structure/largecrate/supply/ammo{ + name = "sentry crate"; + fill_from_loc = 1 + }, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -4760,16 +4788,15 @@ /turf/open/floor/plating/plating_catwalk, /area/golden_arrow/prep_hallway) "CC" = ( -/obj/structure/surface/rack, -/obj/item/ammo_magazine/flamer_tank, -/obj/item/ammo_magazine/flamer_tank, -/obj/item/weapon/gun/flamer{ - current_mag = null; - pixel_y = 4 +/obj/structure/surface/table/almayer, +/obj/item/storage/box/guncase/flamer, +/obj/item/explosive/grenade/smokebomb{ + pixel_y = 14; + pixel_x = -5 }, -/obj/item/device/motiondetector, -/obj/item/attachable/attached_gun/extinguisher/pyro{ - layer = 3.01 +/obj/item/explosive/grenade/smokebomb{ + pixel_y = 11; + pixel_x = -9 }, /turf/open/floor/almayer{ icon_state = "plate" @@ -4879,6 +4906,19 @@ icon_state = "plate" }, /area/golden_arrow/platoon_sergeant) +"Di" = ( +/obj/structure/surface/table/almayer, +/obj/item/prop/helmetgarb/spent_slug{ + pixel_y = -9; + pixel_x = 8; + name = "spent snailshot"; + layer = 2.7 + }, +/obj/item/storage/box/guncase/pumpshotgun/special, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/golden_arrow/squad_two) "Dl" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin{ @@ -4990,7 +5030,11 @@ /turf/open/floor/almayer, /area/golden_arrow/briefing) "Ei" = ( -/obj/structure/machinery/space_heater, +/obj/structure/surface/table/almayer, +/obj/item/storage/box/guncase/flamer, +/obj/item/trash/cigbutt/cigarbutt{ + pixel_y = 18 + }, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -6109,13 +6153,11 @@ }, /area/golden_arrow/platoon_sergeant) "Kp" = ( -/obj/structure/surface/rack, -/obj/item/weapon/gun/rifle/m41aMK1{ - pixel_y = 7 - }, -/obj/item/weapon/gun/rifle/m41aMK1, -/obj/item/weapon/gun/rifle/m41aMK1{ - pixel_y = -7 +/obj/structure/largecrate/supply/motiondetectors, +/obj/structure/largecrate/supply/explosives/grenades/less{ + icon_state = "case"; + pixel_y = 10; + pixel_x = 3 }, /turf/open/floor/almayer{ icon_state = "plate" @@ -6311,6 +6353,19 @@ /obj/docking_port/stationary/marine_dropship/golden_arrow_hangar, /turf/open/floor/plating, /area/golden_arrow/hangar) +"Lh" = ( +/obj/structure/sign/poster{ + pixel_y = -8; + pixel_x = -25; + icon_state = "poster15"; + name = "pulse rifle pinup"; + desc = "The Armat Battlefield Systems Model 41 Derivative 'A' Pulse Rifle Mark One. The only pinup you'll ever need." + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/golden_arrow/squad_two) "Ll" = ( /obj/structure/ship_ammo/minirocket/incendiary, /turf/open/floor/almayer{ @@ -6691,12 +6746,14 @@ "ND" = ( /obj/structure/sign/safety/rewire{ pixel_x = 14; - pixel_y = 29 + pixel_y = 29; + layer = 3 }, -/obj/item/ammo_magazine/sentry{ - layer = 3.01 +/obj/structure/gun_rack/m41, +/obj/item/reagent_container/food/drinks/cans/souto/blue{ + pixel_y = 22; + pixel_x = 9 }, -/obj/item/defenses/handheld/sentry, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -7000,16 +7057,12 @@ }, /area/golden_arrow/cryo_cells) "Pm" = ( -/obj/structure/surface/rack, -/obj/item/weapon/gun/shotgun/pump/special{ - pixel_y = 8 +/obj/structure/largecrate/supply/explosives/grenades/less{ + icon_state = "case" }, -/obj/item/storage/box/nade_box{ - pixel_x = 4; - pixel_y = -2 +/obj/structure/largecrate/supply/motiondetectors{ + pixel_y = 10 }, -/obj/item/ammo_magazine/shotgun/buckshot/special, -/obj/item/device/motiondetector, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -7056,6 +7109,10 @@ icon_state = "plate" }, /area/golden_arrow/hangar) +"Px" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/golden_arrow/squad_two) "Py" = ( /obj/structure/machinery/landinglight/ds1{ dir = 4 @@ -7066,16 +7123,9 @@ }, /area/golden_arrow/hangar) "PA" = ( -/obj/structure/surface/rack, -/obj/item/weapon/gun/shotgun/pump/special{ - pixel_y = 10 - }, -/obj/item/storage/box/nade_box{ - pixel_x = 2; - pixel_y = -4 - }, -/obj/item/ammo_magazine/shotgun/buckshot/special, -/obj/item/device/motiondetector, +/obj/structure/closet/crate/supply, +/obj/item/storage/box/m94, +/obj/item/storage/box/m94, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -8526,17 +8576,6 @@ }, /area/golden_arrow/supply) "WK" = ( -/obj/structure/surface/rack, -/obj/item/weapon/gun/flamer{ - current_mag = null; - pixel_y = 4 - }, -/obj/item/ammo_magazine/flamer_tank, -/obj/item/ammo_magazine/flamer_tank, -/obj/item/device/motiondetector, -/obj/item/attachable/attached_gun/extinguisher/pyro{ - layer = 3.01 - }, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -8997,6 +9036,8 @@ dir = 1 }, /obj/structure/pipes/vents/scrubber, +/obj/structure/surface/table/almayer, +/obj/item/ammo_box/magazine/mk1, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -15861,9 +15902,9 @@ Cr Cr Qw ot -CC +Lh +pB Pm -ot Qw Cr Cr @@ -16014,8 +16055,8 @@ pt Qw ND Fg -Fg -gd +Px +CC Qw Cr Cr @@ -16167,7 +16208,7 @@ Me Zl DE DR -gd +Di Qw Cr Cr @@ -19661,9 +19702,9 @@ XI wp ZC yL +xf cT -cT -Bu +cV Ty Cr Cr @@ -19812,7 +19853,7 @@ aQ XI wp ZC -Kp +Bu WK PA Kp