diff --git a/code/datums/components/storage/concrete/pockets.dm b/code/datums/components/storage/concrete/pockets.dm index bd0a59f85f42..ce224d44e4e5 100644 --- a/code/datums/components/storage/concrete/pockets.dm +++ b/code/datums/components/storage/concrete/pockets.dm @@ -83,10 +83,16 @@ /datum/component/storage/concrete/pockets/helmet/Initialize() . = ..() set_holdable(list( - /obj/item/reagent_containers/food/drinks/bottle/vodka, - /obj/item/reagent_containers/food/drinks/bottle/molotov, - /obj/item/reagent_containers/food/drinks/drinkingglass, - /obj/item/ammo_box/magazine/illestren_a850r + /obj/item/clothing/glasses/cold, + /obj/item/clothing/glasses/heat, + /obj/item/clothing/glasses/welding, + /obj/item/clothing/glasses/thermal, + /obj/item/clothing/glasses/night, + /obj/item/clothing/glasses/hud/health/night, + /obj/item/clothing/glasses/hud/security/night, + /obj/item/clothing/glasses/hud/security/sunglasses/inteq, + /obj/item/ammo_casing, + /obj/item/ammo_box/magazine/illestren_a850r, )) /datum/component/storage/concrete/pockets/holster diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 437aa7625d71..0cfa30f86a7c 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -699,6 +699,9 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb /obj/item/proc/get_belt_overlay() //Returns the icon used for overlaying the object on a belt return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', icon_state) +/obj/item/proc/get_helmet_overlay() // returns the icon for overlaying on a helmet + return mutable_appearance('icons/mob/clothing/helmet_overlays.dmi', icon_state) + /obj/item/proc/update_slot_icon() if(!ismob(loc)) return diff --git a/code/modules/cargo/packs/ammo.dm b/code/modules/cargo/packs/ammo.dm index 53bfd35974e7..f1e46fe88cc8 100644 --- a/code/modules/cargo/packs/ammo.dm +++ b/code/modules/cargo/packs/ammo.dm @@ -143,6 +143,12 @@ contains = list(/obj/item/ammo_box/amagpellet_claris) cost = 1000 +/datum/supply_pack/ammo/a300 + name = ".300 Magnum Stripper Clip Crate" + desc = "Contains a five round .300 Magnum stripper clip for sniper rifles such as the HP Scout." + contains = list(/obj/item/ammo_box/a300) + cost = 750 + /datum/supply_pack/ammo/ebr_ammo name = "M514 EBR .308 Magazine Crate" desc = "Contains a .308 magazine for the M514 EBR rifle, containing ten rounds." @@ -173,6 +179,12 @@ contains = list(/obj/item/ammo_box/a762_40) cost = 500 +/datum/supply_pack/ammo/a357_ammo_box + name = ".357 Ammo Box Crate" + desc = "Contains a fifty-round .357 box for revolvers such as the Scarborough Revolver and the HP Firebrand." + contains = list(/obj/item/ammo_box/a357_box) + cost = 250 + /datum/supply_pack/ammo/c556mmHITP_ammo_box name = "5.56 Caseless Ammo Box Crate" desc = "Contains a fifty-round 5.56mm caseless box for SolGov sidearms like the Pistole C." @@ -209,6 +221,12 @@ contains = list(/obj/item/ammo_box/c9mm/ap) cost = 500 +/datum/supply_pack/ammo/a357match_ammo_box + name = ".357 Match Ammo Box Crate" + desc = "Contains a fifty-round .357 match box for better performance against armor." + contains = list(/obj/item/ammo_box/a357_box/match) + cost = 500 + /datum/supply_pack/ammo/c556mmHITPap_ammo_box name = "5.56 caseless AP Ammo Box Crate" desc = "Contains a fifty-round 5.56mm caseless boxloaded with armor piercing ammo." @@ -233,6 +251,12 @@ contains = list(/obj/item/ammo_box/c9mm/hp) cost = 500 +/datum/supply_pack/ammo/a357hp_ammo_box + name = ".357 HP Ammo Box Crate" + desc = "Contains a fifty-round .357 box loaded with hollow point ammo, great against unarmored targets." + contains = list(/obj/item/ammo_box/a357_box/hp) + cost = 500 + /datum/supply_pack/ammo/c10mmhp_ammo_box name = "10mm HP Ammo Box Crate" desc = "Contains a fifty-round 10mm box loaded with hollow point ammo, great against unarmored targets." @@ -305,6 +329,18 @@ contains = list(/obj/item/ammo_box/c8x50mmhp_box) cost = 500 +/datum/supply_pack/ammo/a300_box + name = ".300 Ammo Box Crate" + desc = "Contains a twenty-round .300 Magnum ammo box for sniper rifles such as the HP Scout." + contains = list(/obj/item/ammo_box/a300_box) + cost = 500 + +/datum/supply_pack/ammo/a4570_box + name = ".45-70 Ammo Box Crate" + desc = "Contains a twelve-round box containing devastatingly powerful .45-70 caliber ammunition." + contains = list(/obj/item/ammo_box/a4570) + cost = 500 + /datum/supply_pack/ammo/ferropelletboxcrate name = "Ferromagnetic Pellet Box Crate" desc = "Contains a fifty-round ferromagnetic pellet ammo box for gauss guns such as the Claris." diff --git a/code/modules/cargo/packs/gun.dm b/code/modules/cargo/packs/gun.dm index 3b3a6f225870..4025db76d300 100644 --- a/code/modules/cargo/packs/gun.dm +++ b/code/modules/cargo/packs/gun.dm @@ -7,16 +7,19 @@ */ /datum/supply_pack/gun/disposable - name = "Disposable Guns Crate" - desc = "In some sectors, these disposable pistols are the only firearms that can be legally sold for less than 400cr. That price is still far too high; this pack contains five." - cost = 750 - contains = list(/obj/item/gun/ballistic/automatic/pistol/disposable, - /obj/item/gun/ballistic/automatic/pistol/disposable, - /obj/item/gun/ballistic/automatic/pistol/disposable, - /obj/item/gun/ballistic/automatic/pistol/disposable, - /obj/item/gun/ballistic/automatic/pistol/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) 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) + 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." @@ -36,15 +39,15 @@ cost = 1000 contains = list(/obj/item/gun/ballistic/automatic/pistol/candor) -/datum/supply_pack/gun/revolver - name = "Scarborough Revolver Crate" - desc = "Contains a concealable Scarborough revolver, chambered in .357." +/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) + contains = list(/obj/item/gun/ballistic/revolver/firebrand) /datum/supply_pack/gun/detrevolver name = "Hunter's Pride Detective Revolver Crate" - desc = "Contains a concealable Solarian revolver, chambered in .38." + 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) @@ -107,6 +110,13 @@ Shotguns */ +/datum/supply_pack/gun/doublebarrel_shotgun + 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) + crate_name = "shotguns crate" + /datum/supply_pack/gun/hellfire_shotgun name = "Hellfire Shotgun Crate" desc = "For when you need to deal with 7 hooligans. Contains a pump shotgun, with a 8-round capacity." @@ -132,13 +142,6 @@ contains = list(/obj/item/gun/ballistic/shotgun/flamingarrow) crate_name = "rifle crate" -/datum/supply_pack/gun/cobra20 - name = "Cobra-20 SMG Crate" - desc = "Contains a .45 submachine gun, manufactured by Scarborough Arms and chambered in .45" - cost = 3000 - contains = list(/obj/item/gun/ballistic/automatic/smg/c20r/cobra) - crate_name = "SMG crate" - /datum/supply_pack/gun/illestren name = "Illestren Rifle Crate" desc = "Contains a expertly made bolt action rifle intended for hunting wildlife. Chambered in 8x50mmR rounds." @@ -146,6 +149,27 @@ contains = list(/obj/item/gun/ballistic/rifle/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) + crate_name = "rifle crate" + +/datum/supply_pack/gun/scout + name = "Scout Sniper Rifle Crate" + desc = "Contains a traditional scoped rifle to hunt wildlife and big game from a respectful distance. Chambered in powerful .300 Magnum." + cost = 5500 + contains = list(/obj/item/gun/ballistic/rifle/scout) + crate_name = "rifle crate" + +/datum/supply_pack/gun/cobra20 + name = "Cobra-20 SMG Crate" + desc = "Contains a .45 submachine gun, manufactured by Scarborough Arms and chambered in .45" + cost = 3000 + contains = list(/obj/item/gun/ballistic/automatic/smg/c20r/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." diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 22baf7d2ae86..651ebe8b0745 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -16,10 +16,15 @@ dog_fashion = /datum/dog_fashion/head/helmet - var/can_flashlight = FALSE //if a flashlight can be mounted. if it has a flashlight and this is false, it is permanently attached. + //if a flashlight can be mounted. if it has a flashlight and this is false, it is permanently attached. + var/can_flashlight = FALSE var/obj/item/flashlight/seclite/attached_light var/datum/action/item_action/toggle_helmet_flashlight/action_light + pocket_storage_component_path = /datum/component/storage/concrete/pockets/helmet + // should we overlay the items inside our helmet + var/content_overlays = FALSE + /obj/item/clothing/head/helmet/Initialize() . = ..() if(attached_light) @@ -171,16 +176,21 @@ var/mutable_appearance/flashlightlight_overlay if(isinhands) return - if(!attached_light) - return - if(attached_light.on) - flashlightlight_overlay = mutable_appearance('icons/mob/clothing/head.dmi', "[flashlight_state]_on") + if(attached_light) + if(attached_light.on) + flashlightlight_overlay = mutable_appearance('icons/mob/clothing/head.dmi', "[flashlight_state]_on") + else + flashlightlight_overlay = mutable_appearance('icons/mob/clothing/head.dmi', flashlight_state) + . += flashlightlight_overlay + if(content_overlays) + for(var/obj/item/I in contents) + . += I.get_helmet_overlay() else - flashlightlight_overlay = mutable_appearance('icons/mob/clothing/head.dmi', flashlight_state) - . += flashlightlight_overlay + return /obj/item/clothing/head/helmet/sec can_flashlight = TRUE + content_overlays = TRUE /obj/item/clothing/head/helmet/sec/attackby(obj/item/I, mob/user, params) if(issignaler(I)) @@ -214,6 +224,7 @@ "Snow" = "helmetalt_snow", "Urban" = "helmetalt_urban", ) + content_overlays = TRUE /obj/item/clothing/head/helmet/marine name = "tactical combat helmet" @@ -497,6 +508,7 @@ icon_state = "inteq_swat" item_state = "inteq_swat" flags_inv = HIDEHAIR + content_overlays = TRUE /obj/item/clothing/head/helmet/inteq name = "inteq helmet" @@ -504,6 +516,7 @@ icon_state = "inteq_helmet" icon_state = "inteq_helmet" can_flashlight = TRUE + content_overlays = TRUE /obj/item/clothing/head/solgov name = "\improper SolGov officer's cap" @@ -545,6 +558,7 @@ desc = "A robust combat helmet commonly employed by Syndicate forces, regardless of alignment." icon_state = "operator" item_state = "operator" + content_overlays = TRUE /obj/item/clothing/head/helmet/medical name = "\improper trauma team helmet" diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm index 4b19735b5f62..fe89fab6b21d 100644 --- a/code/modules/clothing/spacesuits/_spacesuits.dm +++ b/code/modules/clothing/spacesuits/_spacesuits.dm @@ -19,6 +19,8 @@ flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH | PEPPERPROOF resistance_flags = NONE dog_fashion = null + content_overlays = FALSE + pocket_storage_component_path = null /obj/item/clothing/suit/space name = "space suit" diff --git a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm index fa7b0a133bae..0b5a7f80a837 100644 --- a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm +++ b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm @@ -23,6 +23,28 @@ desc = "A 7-round speed loader for quickly reloading .357 revolvers. These hollow point rounds do incredible damage against soft targets, but are nearly ineffective against armored ones." ammo_type = /obj/item/ammo_casing/a357/hp +/obj/item/ammo_box/a357_box + name = "ammo box (.357)" + desc = "A box of standard .357 ammo." + icon_state = "357box" + ammo_type = /obj/item/ammo_casing/a357 + max_ammo = 50 + +/obj/item/ammo_box/a357_box/match + name = "ammo box (.357)" + desc = "A box of match .357 ammo." + icon_state = "357box-match" + ammo_type = /obj/item/ammo_casing/a357/match + max_ammo = 50 + +/obj/item/ammo_box/a357_box/hp + name = "ammo box (.357)" + desc = "A box of hollow point .357 ammo." + icon_state = "357box-hp" + ammo_type = /obj/item/ammo_casing/a357/hp + max_ammo = 50 + + // .45-70 Ammo Holders (Hunting Revolver) /obj/item/ammo_box/a4570 @@ -443,3 +465,10 @@ icon_state = "8x50mmbox-hp" ammo_type = /obj/item/ammo_casing/a8_50rhp max_ammo = 20 + +/obj/item/ammo_box/a300_box + name = "ammo box (.300 Magnum)" + desc = "A box of standard .300 Magnum ammo." + icon_state = "300box" + ammo_type = /obj/item/ammo_casing/a300 + max_ammo = 20 diff --git a/code/modules/projectiles/boxes_magazines/internal/revolver.dm b/code/modules/projectiles/boxes_magazines/internal/revolver.dm index 43748f7afe7b..d757ddf03047 100644 --- a/code/modules/projectiles/boxes_magazines/internal/revolver.dm +++ b/code/modules/projectiles/boxes_magazines/internal/revolver.dm @@ -28,7 +28,10 @@ /obj/item/ammo_box/magazine/internal/cylinder/pepperbox name = "pepperbox revolver cylinder" + ammo_type = /obj/item/ammo_casing/a357 + caliber = ".357" max_ammo = 5 + instant_load = FALSE /obj/item/ammo_box/magazine/internal/cylinder/rev45 name = "cattleman revolver cylinder" diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 025f4094fb10..dea8c12e5a2e 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -680,6 +680,7 @@ manufacturer = MANUFACTURER_HUNTERSPRIDE spread_unwielded = 50 fire_delay = 0 + gate_offset = 4 semi_auto = TRUE safety_wording = "safety" diff --git a/html/changelogs/archive/2024-05.yml b/html/changelogs/archive/2024-05.yml index 9287f329245c..6c83de1ec2b7 100644 --- a/html/changelogs/archive/2024-05.yml +++ b/html/changelogs/archive/2024-05.yml @@ -23,3 +23,13 @@ - admin: made invisimin admins invisible for HUDs and ghosts Sun-Soaked: - bugfix: weird uncertainty around the name of EXOCOM. EXOCON is not real. +2024-05-09: + PositiveEntropy: + - rscadd: The HP Firebrand, HP Scout, HP Contender, .38 Derringer and Double Barrel + Shotgun are now purchasable in the outpost store. + - bugfix: The Disposable Gun crate is now granularized. + - rscdel: The Scarborough Revolver is no longer purchasable in the outpost store. +2024-05-10: + meemofcourse: + - rscadd: Helmets now have a small, two-item storage. You can put goggles in there, + and it might overlay them. diff --git a/icons/mob/clothing/helmet_overlays.dmi b/icons/mob/clothing/helmet_overlays.dmi new file mode 100644 index 000000000000..1c41c357a42a Binary files /dev/null and b/icons/mob/clothing/helmet_overlays.dmi differ diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index 3e0a5b2bdc2b..4f2f029a96b7 100644 Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ