diff --git a/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm b/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm index 7cff1423937..91c0c75b016 100644 --- a/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm +++ b/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm @@ -2193,11 +2193,11 @@ icon_state = "warningline_white"; dir = 1 }, -/obj/item/storage/toolbox/ammo{ +/obj/item/storage/toolbox/a762{ pixel_y = 16; pixel_x = 5 }, -/obj/item/storage/toolbox/ammo{ +/obj/item/storage/toolbox/a762{ pixel_y = 8; pixel_x = 3 }, diff --git a/_maps/shuttles/pirate_silverscale.dmm b/_maps/shuttles/pirate_silverscale.dmm index 2e0e816a2fa..a538500fb0d 100644 --- a/_maps/shuttles/pirate_silverscale.dmm +++ b/_maps/shuttles/pirate_silverscale.dmm @@ -831,8 +831,8 @@ pixel_y = 3 }, /obj/effect/turf_decal/bot, -/obj/item/gun/ballistic/rifle/boltaction/brand_new/prime, -/obj/item/gun/ballistic/rifle/boltaction/brand_new/prime{ +/obj/item/gun/ballistic/rifle/boltaction/prime, +/obj/item/gun/ballistic/rifle/boltaction/prime{ pixel_y = 4 }, /turf/open/floor/pod/dark, diff --git a/code/datums/components/crafting/ranged_weapon.dm b/code/datums/components/crafting/ranged_weapon.dm index 114d407ac9e..6b6acb54412 100644 --- a/code/datums/components/crafting/ranged_weapon.dm +++ b/code/datums/components/crafting/ranged_weapon.dm @@ -240,6 +240,49 @@ time = 30 SECONDS //contemplate for a bit category = CAT_WEAPON_RANGED +/datum/crafting_recipe/deagle_prime //When you factor in the makarov (7 tc), the toolbox (1 tc), and the emag (3 tc), this comes to a total of 17 TC or thereabouts. Igorning the 20k pricetag, obviously. + name = "Regal Condor" + always_available = FALSE + result = /obj/item/gun/ballistic/automatic/pistol/deagle/regal/no_mag + reqs = list( + /obj/item/gun/ballistic/automatic/pistol = 1, + /obj/item/stack/sheet/mineral/gold = 25, + /obj/item/stack/sheet/mineral/silver = 25, + /obj/item/food/donkpocket = 1, + /obj/item/stack/telecrystal = 3, + /obj/item/clothing/head/costume/crown/fancy = 1, //the captain's crown + /obj/item/storage/toolbox/syndicate = 1, + ) + tool_behaviors = list(TOOL_SCREWDRIVER) + tool_paths = list( + /obj/item/clothing/under/syndicate, + /obj/item/clothing/mask/gas/syndicate, + /obj/item/card/emag + ) + time = 30 SECONDS + category = CAT_WEAPON_RANGED + +/datum/crafting_recipe/deagle_prime/New() + ..() + blacklist += subtypesof(/obj/item/gun/ballistic/automatic/pistol) + +/datum/crafting_recipe/deagle_prime_mag + name = "Regal Condor Magazine (10mm)" + always_available = FALSE + result = /obj/item/ammo_box/magazine/r10mm/empty + reqs = list( + /obj/item/stack/sheet/iron = 10, + /obj/item/stack/telecrystal = 2, + ) + tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WELDER) + tool_paths = list( + /obj/item/clothing/under/syndicate, + /obj/item/clothing/mask/gas/syndicate, + /obj/item/card/emag + ) + time = 5 SECONDS + category = CAT_WEAPON_RANGED + /datum/crafting_recipe/trash_cannon name = "Trash Cannon" always_available = FALSE diff --git a/code/game/objects/items/food/bait.dm b/code/game/objects/items/food/bait.dm index 30856b3a18a..983d87b989d 100644 --- a/code/game/objects/items/food/bait.dm +++ b/code/game/objects/items/food/bait.dm @@ -28,6 +28,18 @@ desc = "This worm looks very sophisticated." bait_quality = GOOD_QUALITY_BAIT_TRAIT +/obj/item/food/bait/natural + name = "natural bait" + desc = "Fish can't seem to get enough of this!" + icon = 'icons/obj/medical/chemical.dmi' + icon_state = "pill9" + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items_righthand.dmi' + inhand_icon_state = "pen" + food_reagents = list(/datum/reagent/drug/kronkaine = 1) + tastes = list("hypocrisy" = 1) + bait_quality = GREAT_QUALITY_BAIT_TRAIT + /obj/item/food/bait/doughball name = "doughball" desc = "Small piece of dough. Simple but effective fishing bait." diff --git a/code/game/objects/items/granters/crafting/regal_condor.dm b/code/game/objects/items/granters/crafting/regal_condor.dm new file mode 100644 index 00000000000..c7d767e5f4d --- /dev/null +++ b/code/game/objects/items/granters/crafting/regal_condor.dm @@ -0,0 +1,20 @@ +/obj/item/book/granter/crafting_recipe/regal_condor + name = "memoirs of a fallen agent" + desc = "A battered journal. It seems like it is covered in donkpocket crumbs." + crafting_recipe_types = list( + /datum/crafting_recipe/deagle_prime, + /datum/crafting_recipe/deagle_prime_mag, + ) + icon_state = "book1" + remarks = list( + "It says that she was once an assistant, before she was activated...", + "I don't think you can make a pistol 'absorb' other pistols, but whatever...", + "Wait, how much gold do you need to make this?", + "So the Tiger Co-op can come up with some interesting things every now and again...", + "Why not just give me an Ansem pistol? I'll just go find a bucket of black paint...", + "Cleanse, or die trying...", + ) + +/obj/item/book/granter/crafting_recipe/regal_condor/recoil(mob/living/user) + to_chat(user, span_warning("The book turns to dust in your hands.")) + qdel(src) diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index b76720344df..c5452482da2 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -233,6 +233,41 @@ . = ..() atom_storage.max_total_storage = 26 +// MEAT MEAT MEAT MEAT MEAT + +/obj/item/storage/backpack/meat + name = "\improper MEAT" + desc = "MEAT MEAT MEAT MEAT MEAT MEAT" + icon_state = "meatmeatmeat" + inhand_icon_state = "meatmeatmeat" + force = 15 + throwforce = 15 + attack_verb_continuous = list("MEATS", "MEAT MEATS") + attack_verb_simple = list("MEAT", "MEAT MEAT") + ///Sounds used in the squeak component + var/list/meat_sounds = list('sound/effects/blobattack.ogg' = 1) + ///Reagents added to the edible component, ingested when you EAT the MEAT + var/list/meat_reagents = list( + /datum/reagent/consumable/nutriment/protein = 10, + /datum/reagent/consumable/nutriment/vitamin = 10, + ) + ///The food types of the edible component + var/foodtypes = MEAT | RAW + ///How our MEAT tastes. It tastes like MEAT + var/list/tastes = list("MEAT" = 1) + ///Eating verbs when consuming the MEAT + var/list/eatverbs = list("MEAT", "absorb", "gnaw", "consume") + +/obj/item/storage/backpack/meat/Initialize(mapload) + . = ..() + AddComponent(/datum/component/edible,\ + initial_reagents = meat_reagents,\ + foodtypes = foodtypes,\ + tastes = tastes,\ + eatverbs = eatverbs,\ + ) + AddComponent(/datum/component/squeak, meat_sounds) + /* * Satchel Types */ @@ -330,12 +365,12 @@ atom_storage.set_holdable(cant_hold_list = list(/obj/item/storage/backpack/satchel/flat)) //muh recursive backpacks) /obj/item/storage/backpack/satchel/flat/PopulateContents() - var/datum/supply_pack/costumes_toys/randomised/contraband/C = new - for(var/i in 1 to 2) - var/ctype = pick(C.contains) - new ctype(src) + var/datum/supply_pack/imports/contraband/smuggled_goods = new + for(var/items in 1 to 2) + var/smuggled_goods_type = pick(smuggled_goods.contains) + new smuggled_goods_type(src) - qdel(C) + qdel(smuggled_goods) /obj/item/storage/backpack/satchel/flat/with_tools/PopulateContents() new /obj/item/stack/tile/iron/base(src) diff --git a/code/game/objects/items/storage/holsters.dm b/code/game/objects/items/storage/holsters.dm index 53a413b0833..b273d6b9965 100644 --- a/code/game/objects/items/storage/holsters.dm +++ b/code/game/objects/items/storage/holsters.dm @@ -28,7 +28,8 @@ /obj/item/gun/energy/disabler, /obj/item/gun/energy/dueling, /obj/item/food/grown/banana, - /obj/item/gun/energy/laser/thermal + /obj/item/gun/energy/laser/thermal, + /obj/item/gun/ballistic/rifle/boltaction, //fits if you make it an obrez )) /obj/item/storage/belt/holster/energy @@ -90,7 +91,8 @@ /obj/item/gun/energy/e_gun/mini, /obj/item/gun/energy/disabler, /obj/item/gun/energy/dueling, - /obj/item/gun/energy/laser/thermal + /obj/item/gun/energy/laser/thermal, + /obj/item/gun/ballistic/rifle/boltaction, //fits if you make it an obrez )) /obj/item/storage/belt/holster/detective/full/PopulateContents() diff --git a/code/game/objects/items/storage/medkit.dm b/code/game/objects/items/storage/medkit.dm index ebf80840251..86c715291bb 100644 --- a/code/game/objects/items/storage/medkit.dm +++ b/code/game/objects/items/storage/medkit.dm @@ -362,7 +362,10 @@ /obj/item/storage/pill_bottle/Initialize(mapload) . = ..() atom_storage.allow_quick_gather = TRUE - atom_storage.set_holdable(list(/obj/item/reagent_containers/pill)) + atom_storage.set_holdable(list( + /obj/item/reagent_containers/pill, + /obj/item/food/bait/natural, + )) /obj/item/storage/pill_bottle/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is trying to get the cap off [src]! It looks like [user.p_theyre()] trying to commit suicide!")) @@ -554,6 +557,14 @@ for(var/i in 1 to 5) new /obj/item/reagent_containers/pill/paxpsych(src) +/obj/item/storage/pill_bottle/naturalbait + name = "freshness jar" + desc = "Full of natural fish bait." + +/obj/item/storage/pill_bottle/naturalbait/PopulateContents() + for(var/i in 1 to 7) + new /obj/item/food/bait/natural(src) + /// A box which takes in coolant and uses it to preserve organs and body parts /obj/item/storage/organbox name = "organ transport box" diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index aec5142cce3..3854eb7e92d 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -223,9 +223,10 @@ new /obj/item/stack/pipe_cleaner_coil/white(src) new /obj/item/stack/pipe_cleaner_coil/brown(src) -/obj/item/storage/toolbox/ammo - name = "ammo box" - desc = "It contains a few clips." +/obj/item/storage/toolbox/a762 + name = "7.62mm ammo box (Surplus?)" + desc = "It contains a few clips. Goddamn, this thing smells awful. \ + Has this been sitting in a warehouse for the last several centuries?" icon_state = "ammobox" inhand_icon_state = "ammobox" lefthand_file = 'icons/mob/inhands/equipment/toolbox_lefthand.dmi' @@ -233,15 +234,14 @@ has_latches = FALSE drop_sound = 'sound/items/handling/ammobox_drop.ogg' pickup_sound = 'sound/items/handling/ammobox_pickup.ogg' + var/ammo_to_spawn = /obj/item/ammo_box/a762 -/obj/item/storage/toolbox/ammo/PopulateContents() - new /obj/item/ammo_box/a762(src) - new /obj/item/ammo_box/a762(src) - new /obj/item/ammo_box/a762(src) - new /obj/item/ammo_box/a762(src) - new /obj/item/ammo_box/a762(src) - new /obj/item/ammo_box/a762(src) - new /obj/item/ammo_box/a762(src) +/obj/item/storage/toolbox/a762/PopulateContents() + for(var/i in 1 to 6) + new ammo_to_spawn(src) + +/obj/item/storage/toolbox/a762/surplus + ammo_to_spawn = /obj/item/ammo_box/a762/surplus /obj/item/storage/toolbox/maint_kit name = "gun maintenance kit" diff --git a/code/game/objects/structures/mystery_box.dm b/code/game/objects/structures/mystery_box.dm index 1fc38f8b8b2..41164a8778f 100644 --- a/code/game/objects/structures/mystery_box.dm +++ b/code/game/objects/structures/mystery_box.dm @@ -48,7 +48,7 @@ GLOBAL_LIST_INIT(mystery_box_guns, list( /obj/item/gun/ballistic/automatic/tommygun, /obj/item/gun/ballistic/automatic/wt550, /obj/item/gun/ballistic/rifle/sniper_rifle, - /obj/item/gun/ballistic/rifle/boltaction/brand_new, + /obj/item/gun/ballistic/rifle/boltaction, )) GLOBAL_LIST_INIT(mystery_box_extended, list( diff --git a/code/modules/antagonists/fugitive/fugitive_outfits.dm b/code/modules/antagonists/fugitive/fugitive_outfits.dm index 880c94f9008..364b0755c2f 100644 --- a/code/modules/antagonists/fugitive/fugitive_outfits.dm +++ b/code/modules/antagonists/fugitive/fugitive_outfits.dm @@ -98,7 +98,7 @@ id = /obj/item/card/id/advanced uniform = /obj/item/clothing/under/costume/soviet suit = /obj/item/clothing/suit/armor/bulletproof - suit_store = /obj/item/gun/ballistic/rifle/boltaction/brand_new + suit_store = /obj/item/gun/ballistic/rifle/boltaction back = /obj/item/storage/backpack ears = /obj/item/radio/headset glasses = /obj/item/clothing/glasses/sunglasses diff --git a/code/modules/cargo/packs/costumes_toys.dm b/code/modules/cargo/packs/costumes_toys.dm index b3c4f9db03f..298c3c3c1f4 100644 --- a/code/modules/cargo/packs/costumes_toys.dm +++ b/code/modules/cargo/packs/costumes_toys.dm @@ -31,51 +31,6 @@ crate_name = "collectable hats crate" crate_type = /obj/structure/closet/crate/wooden -/datum/supply_pack/costumes_toys/randomised/contraband - name = "Contraband Crate" - desc = "Psst.. bud... want some contraband? I can get you a poster, some nice cigs, dank, even some \ - sponsored items...you know, the good stuff. Just keep it away from the cops, kay?" - contraband = TRUE - cost = CARGO_CRATE_VALUE * 6 - num_contained = 7 - contains = list(/obj/item/poster/random_contraband = 2, - /obj/item/food/grown/cannabis, - /obj/item/food/grown/cannabis/rainbow, - /obj/item/food/grown/cannabis/white, - /obj/item/storage/box/fireworks/dangerous, - /obj/item/storage/pill_bottle/zoom, - /obj/item/storage/pill_bottle/happy, - /obj/item/storage/pill_bottle/lsd, - /obj/item/storage/pill_bottle/aranesp, - /obj/item/storage/pill_bottle/stimulant, - /obj/item/toy/cards/deck/syndicate, - /obj/item/reagent_containers/cup/glass/bottle/absinthe, - /obj/item/clothing/under/syndicate/tacticool, - /obj/item/storage/fancy/cigarettes/cigpack_syndicate, - /obj/item/storage/fancy/cigarettes/cigpack_shadyjims, - /obj/item/clothing/mask/gas/syndicate, - /obj/item/clothing/neck/necklace/dope, - /obj/item/vending_refill/donksoft, - ) - crate_name = "crate" - -/datum/supply_pack/costumes_toys/foamforce - name = "Foam Force Crate" - desc = "Break out the big guns with eight Foam Force shotguns!" - cost = CARGO_CRATE_VALUE * 2 - contains = list(/obj/item/gun/ballistic/shotgun/toy = 8) - crate_name = "foam force crate" - -/datum/supply_pack/costumes_toys/foamforce/bonus - name = "Foam Force Pistols Crate" - desc = "Psst.. hey bud... remember those old foam force pistols that got discontinued for being too cool? \ - Well I got two of those right here with your name on em. I'll even throw in a spare mag for each, waddya say?" - contraband = TRUE - cost = CARGO_CRATE_VALUE * 8 - contains = list(/obj/item/gun/ballistic/automatic/pistol/toy = 2, - /obj/item/ammo_box/magazine/toy/pistol = 2) - crate_name = "foam force crate" - /datum/supply_pack/costumes_toys/formalwear name = "Formalwear Crate" desc = "You're gonna like the way you look, I guaranteed it. Contains an asston of fancy clothing." @@ -265,22 +220,6 @@ ) crate_type = /obj/structure/closet/crate/wooden -/datum/supply_pack/costumes_toys/mafia - name = "Cosa Nostra Starter Pack" - desc = "This crate contains everything you need to set up your own ethnicity-based racketeering operation." - cost = CARGO_CRATE_VALUE * 4 - contains = list() - contraband = TRUE - -/datum/supply_pack/costumes_toys/mafia/fill(obj/structure/closet/crate/C) - for(var/i in 1 to 4) - new /obj/effect/spawner/random/clothing/mafia_outfit(C) - new /obj/item/virgin_mary(C) - if(prob(30)) //Not all mafioso have mustaches, some people also find this item annoying. - new /obj/item/clothing/mask/fakemoustache/italian(C) - if(prob(10)) //A little extra sugar every now and then to shake things up. - new /obj/item/switchblade(C) - /datum/supply_pack/costumes_toys/randomised/tcg name = "Big-Ass Booster Pack Pack" desc = "A bumper load of NT TCG Booster Packs of varying series. Collect them all!" diff --git a/code/modules/cargo/packs/emergency.dm b/code/modules/cargo/packs/emergency.dm index 07b48042748..9c50372b6a8 100644 --- a/code/modules/cargo/packs/emergency.dm +++ b/code/modules/cargo/packs/emergency.dm @@ -1,22 +1,6 @@ /datum/supply_pack/emergency group = "Emergency" -/datum/supply_pack/emergency/vehicle - name = "Biker Gang Kit" //TUNNEL SNAKES OWN THIS TOWN - desc = "TUNNEL SNAKES OWN THIS TOWN. Contains an unbranded All Terrain Vehicle, and a \ - complete gang outfit -- consists of black gloves, a menacing skull bandanna, and a SWEET leather overcoat!" - cost = CARGO_CRATE_VALUE * 4 - contraband = TRUE - contains = list(/obj/vehicle/ridden/atv, - /obj/item/key/atv, - /obj/item/clothing/suit/jacket/leather/biker, - /obj/item/clothing/gloves/color/black, - /obj/item/clothing/head/soft, - /obj/item/clothing/mask/bandana/skull/black, - )//so you can properly #cargoniabikergang - crate_name = "biker kit" - crate_type = /obj/structure/closet/crate/large - /datum/supply_pack/emergency/bio name = "Biological Emergency Crate" desc = "This crate holds 2 full bio suits which will protect you from viruses." @@ -154,20 +138,6 @@ crate_name = "space suit crate" crate_type = /obj/structure/closet/crate/secure -/datum/supply_pack/emergency/specialops - name = "Special Ops Supplies" - desc = "(*!&@#SAD ABOUT THAT NULL_ENTRY, HUH OPERATIVE? WELL, THIS LITTLE ORDER CAN STILL HELP YOU OUT IN A PINCH. \ - CONTAINS A BOX OF FIVE EMP GRENADES, THREE SMOKEBOMBS, AN INCENDIARY GRENADE, AND A \"SLEEPY PEN\" FULL OF NICE TOXINS!#@*$" - hidden = TRUE - cost = CARGO_CRATE_VALUE * 4 - contains = list(/obj/item/storage/box/emps, - /obj/item/grenade/smokebomb = 3, - /obj/item/pen/sleepy, - /obj/item/grenade/chem_grenade/incendiary, - ) - crate_name = "emergency crate" - crate_type = /obj/structure/closet/crate/internals - /datum/supply_pack/emergency/weedcontrol name = "Weed Control Crate" desc = "Keep those invasive species OUT. Contains a scythe, leather gloves, gasmask, and two anti-weed chemical grenades. \ diff --git a/code/modules/cargo/packs/general.dm b/code/modules/cargo/packs/general.dm index b17001b7f31..a35d9a920a7 100644 --- a/code/modules/cargo/packs/general.dm +++ b/code/modules/cargo/packs/general.dm @@ -239,19 +239,6 @@ contains = list(/obj/item/training_toolbox = 2) crate_name = "training toolbox crate" -/datum/supply_pack/misc/blackmarket_telepad - name = "Black Market LTSRBT" - desc = "Need a faster and better way of transporting your illegal goods from and to the \ - station? Fear not, the Long-To-Short-Range-Bluespace-Transceiver (LTSRBT for short) \ - is here to help. Contains a LTSRBT circuit, two bluespace crystals, and one ansible." - cost = CARGO_CRATE_VALUE * 20 - contraband = TRUE - contains = list(/obj/item/circuitboard/machine/ltsrbt, - /obj/item/stack/ore/bluespace_crystal/artificial = 2, - /obj/item/stock_parts/subspace/ansible, - ) - crate_name = "crate" - ///Special supply crate that generates random syndicate gear up to a determined TC value /datum/supply_pack/misc/syndicate name = "Assorted Syndicate Gear" diff --git a/code/modules/cargo/packs/imports.dm b/code/modules/cargo/packs/imports.dm new file mode 100644 index 00000000000..8799111de8f --- /dev/null +++ b/code/modules/cargo/packs/imports.dm @@ -0,0 +1,268 @@ +/** + * Imports category. + * This is for crates not intended for goodies, but also not intended for departmental orders. + * This allows us to have a few crates meant for deliberate purchase through cargo, and for cargo to have a few items + * they explicitly control. It also holds all of the black market material and contraband material, including items + * meant for purchase only through emagging the console. + */ + +/datum/supply_pack/imports + group = "Imports" + crate_name = "emergency crate" + crate_type = /obj/structure/closet/crate/internals + +/datum/supply_pack/imports/foamforce + name = "Foam Force Crate" + desc = "Break out the big guns with eight Foam Force shotguns!" + cost = CARGO_CRATE_VALUE * 2 + contains = list(/obj/item/gun/ballistic/shotgun/toy = 8) + crate_name = "foam force crate" + +/datum/supply_pack/imports/foamforce/bonus + name = "Foam Force Pistols Crate" + desc = "Psst.. hey bud... remember those old foam force pistols that got discontinued for being too cool? \ + Well I got two of those right here with your name on em. I'll even throw in a spare mag for each, waddya say?" + contraband = TRUE + cost = CARGO_CRATE_VALUE * 3 + contains = list( + /obj/item/gun/ballistic/automatic/pistol/toy = 2, + /obj/item/ammo_box/magazine/toy/pistol = 2, + ) + crate_name = "foam force crate" + +/datum/supply_pack/imports/meatmeatmeatmeat // MEAT MEAT MEAT MEAT + name = "MEAT MEAT MEAT MEAT MEAT" + desc = "MEAT MEAT MEAT MEAT MEAT MEAT" + cost = CARGO_CRATE_VALUE * 6 + contains = list(/obj/item/storage/backpack/meat) + crate_name = "MEAT MEAT MEAT MEAT MEAT" + crate_type = /obj/structure/closet/crate/necropolis + +/datum/supply_pack/imports/duct_spider + name = "Duct Spider Crate" + desc = "Awww! Straight from the Australicus sector to your station's ventilation system!" + cost = CARGO_CRATE_VALUE * 6 + contains = list(/mob/living/basic/giant_spider/maintenance) + crate_name = "duct spider crate" + crate_type = /obj/structure/closet/crate/critter + +/datum/supply_pack/imports/duct_spider/dangerous + name = "Duct Spider Crate?" + desc = "Wait, is this the right crate? It has a frowny face, what does that mean?" + cost = CARGO_CRATE_VALUE * 6 + contains = list(/mob/living/basic/giant_spider/hunter) + contraband = TRUE + +/datum/supply_pack/imports/bamboo50 + name = "50 Bamboo Cuttings" + desc = "You have no idea how many pandas we had to kill to get this bamboo." + cost = CARGO_CRATE_VALUE * 15 + contains = list(/obj/item/stack/sheet/mineral/bamboo/fifty) + crate_name = "bamboo cuttings crate" + +/datum/supply_pack/imports/bananium + name = "A Single Sheet of Bananium" + desc = "Don't let the clown know that he can order this. It costs a fortune even for this much." + cost = CARGO_CRATE_VALUE * 100 + contains = list(/obj/item/stack/sheet/mineral/bananium) + crate_name = "bananium sheet crate" + +/datum/supply_pack/imports/naturalbait + name = "Freshness Jars full of Natural Bait" + desc = "Homemade in the Spinward Sector." + cost = 2000 //rock on + contains = list(/obj/item/storage/pill_bottle/naturalbait) + crate_name = "fishing bait crate" + +/datum/supply_pack/imports/dumpstercorpse + name = "A....Dumpster?" + desc = "Why does it smell so bad...." + cost = CARGO_CRATE_VALUE * 5 + contains = list(/mob/living/carbon/human) + crate_name = "putrid dumpster" + crate_type = /obj/structure/closet/crate/trashcart + +/datum/supply_pack/imports/dumpstercorpse/generate() + . = ..() + var/mob/living/carbon/human/corpse = locate() in . + corpse.death() + +/datum/supply_pack/imports/error + name = "NULL_ENTRY" + desc = "(*!&@#OKAY, OPERATIVE, WE SEE HOW MUCH MONEY YOU'RE FLAUNTING. FINE. HAVE THIS, AND GOOD LUCK PUTTING IT TOGETHER!#@*$" + cost = CARGO_CRATE_VALUE * 100 + hidden = TRUE + contains = list(/obj/item/book/granter/crafting_recipe/regal_condor) + +/datum/supply_pack/imports/mafia + name = "Cosa Nostra Starter Pack" + desc = "This crate contains everything you need to set up your own ethnicity-based racketeering operation." + cost = CARGO_CRATE_VALUE * 4 + contains = list() + contraband = TRUE + +/datum/supply_pack/imports/mafia/fill(obj/structure/closet/crate/our_crate) + for(var/items in 1 to 4) + new /obj/effect/spawner/random/clothing/mafia_outfit(our_crate) + new /obj/item/virgin_mary(our_crate) + if(prob(30)) //Not all mafioso have mustaches, some people also find this item annoying. + new /obj/item/clothing/mask/fakemoustache/italian(our_crate) + if(prob(10)) //A little extra sugar every now and then to shake things up. + new /obj/item/switchblade(our_crate) + +/datum/supply_pack/imports/blackmarket_telepad + name = "Black Market LTSRBT" + desc = "Need a faster and better way of transporting your illegal goods from and to the \ + station? Fear not, the Long-To-Short-Range-Bluespace-Transceiver (LTSRBT for short) \ + is here to help. Contains a LTSRBT circuit, two bluespace crystals, and one ansible." + cost = CARGO_CRATE_VALUE * 20 + contraband = TRUE + contains = list( + /obj/item/circuitboard/machine/ltsrbt, + /obj/item/stack/ore/bluespace_crystal/artificial = 2, + /obj/item/stock_parts/subspace/ansible, + ) + +/datum/supply_pack/imports/contraband + name = "'Contraband' Crate" + desc = "Psst.. bud... want some contraband? I can get you a poster, some nice cigs, dank, even some \ + sponsored items...you know, the good stuff. Just keep it away from the cops, kay?" + contraband = TRUE + cost = CARGO_CRATE_VALUE * 4 + contains = list( + /obj/item/poster/random_contraband = 2, + /obj/item/food/grown/cannabis, + /obj/item/food/grown/cannabis/rainbow, + /obj/item/food/grown/cannabis/white, + /obj/item/storage/box/fireworks/dangerous, + /obj/item/storage/pill_bottle/zoom, + /obj/item/storage/pill_bottle/happy, + /obj/item/storage/pill_bottle/lsd, + /obj/item/storage/pill_bottle/aranesp, + /obj/item/storage/pill_bottle/stimulant, + /obj/item/toy/cards/deck/syndicate, + /obj/item/reagent_containers/cup/glass/bottle/absinthe, + /obj/item/clothing/under/syndicate/tacticool, + /obj/item/storage/fancy/cigarettes/cigpack_syndicate, + /obj/item/storage/fancy/cigarettes/cigpack_shadyjims, + /obj/item/clothing/mask/gas/syndicate, + /obj/item/clothing/neck/necklace/dope, + /obj/item/vending_refill/donksoft, + ) + crate_name = "crate" + +/datum/supply_pack/imports/contraband/fill(obj/structure/closet/crate/our_crate) + for(var/items in 1 to 10) + var/item = pick(contains) + new item(our_crate) + +/datum/supply_pack/imports/wt550 + name = "Smuggled WT-550 Autorifle Crate" + desc = "(*!&@#GOOD NEWS, OPERATIVE! WE CAN'T GET YOU THE BIG LEAGUE AUTOMATIC WEAPONS. BUT, BY \ + SMUGGLING THIS CRATE THROUGH A FEW OUTDATED CUSTOMS CHECKPOINTS, WE'VE THE NEXT BEST THING! \ + SERVICE AUTORIFLES. DON'T WORRY, THE RUMORS ABOUT THE GUN MELTING YOU ARE JUST THAT! RUMORS! \ + THESE THINGS WORK FINE! MIGHT BE SLIGHTLY DIRTY.!#@*$" + hidden = TRUE + cost = CARGO_CRATE_VALUE * 7 + contains = list( + /obj/item/gun/ballistic/automatic/wt550 = 2, + /obj/item/ammo_box/magazine/wt550m9 = 2, + ) + +/datum/supply_pack/imports/wt550ammo + name = "Smuggled WT-550 Ammo Crate" + desc = "(*!&@#OPERATIVE, YOU LIKE THAT WT-550? THEN WHY NOT EQUIP YOURSELF WITH SOME MORE AMMO!!#@*$" + hidden = TRUE + cost = CARGO_CRATE_VALUE * 4 + contains = list( + /obj/item/ammo_box/magazine/wt550m9 = 2, + /obj/item/ammo_box/magazine/wt550m9/wtap = 2, + /obj/item/ammo_box/magazine/wt550m9/wtic = 2, + ) + crate_name = "emergency crate" + crate_type = /obj/structure/closet/crate/internals + +/datum/supply_pack/imports/shocktrooper + name = "Shocktrooper Crate" + desc = "(*!&@#WANT TO PUT THE FEAR OF DEATH INTO YOUR ENEMIES? THIS CRATE OF GOODIES CAN HELP MAKE THAT A REALITY. \ + CONTAINS A BOX OF FIVE EMP GRENADES, THREE SMOKEBOMBS, TWO GLUON GRENADES AND TWO FRAG GRENADES!#@*$" + hidden = TRUE + cost = CARGO_CRATE_VALUE * 10 + contains = list( + /obj/item/storage/box/emps, + /obj/item/grenade/smokebomb = 3, + /obj/item/grenade/gluon = 2, + /obj/item/grenade/frag = 2, + ) + +/datum/supply_pack/imports/specialops + name = "Special Ops Crate" + desc = "(*!&@#THE PIGS ON YOUR TAIL? MAYBE YOU CAN BUY SOME TIME WITH THIS CRATE! \ + CONTAINS A CHAMELEON MASK, A CHAMELEON JUMPSUIT AND AN AGENT CARD! AND A KNIFE!!#@*$" + hidden = TRUE + cost = CARGO_CRATE_VALUE * 10 + contains = list( + /obj/item/clothing/mask/chameleon, + /obj/item/clothing/under/chameleon, + /obj/item/card/id/advanced/chameleon, + /obj/item/knife/combat/survival, + ) + +/datum/supply_pack/imports/russian + name = "Russian Surplus Military Gear Crate" + desc = "Hello <;~insert appropriate greeting here: 'Comrade'|'Imperalist Scum'|'Quartermaster of Reputable Station'~;>, \ + we have the most modern russian military equipment the black market can offer, for the right price of course. \ + No lock, best price." + contraband = TRUE + cost = CARGO_CRATE_VALUE * 12 + contains = list( + /obj/item/food/rationpack, + /obj/item/ammo_box/a762, + /obj/item/ammo_box/a762/surplus, + /obj/item/storage/toolbox/a762, + /obj/item/storage/toolbox/a762/surplus, + /obj/item/storage/toolbox/maint_kit, + /obj/item/clothing/suit/armor/vest/russian, + /obj/item/clothing/head/helmet/rus_helmet, + /obj/item/clothing/shoes/russian, + /obj/item/clothing/gloves/tackler/combat, + /obj/item/clothing/under/syndicate/rus_army, + /obj/item/clothing/under/costume/soviet, + /obj/item/clothing/mask/russian_balaclava, + /obj/item/clothing/head/helmet/rus_ushanka, + /obj/item/clothing/suit/armor/vest/russian_coat, + /obj/item/gun/ballistic/rifle/boltaction, + /obj/item/gun/ballistic/rifle/boltaction/surplus = 2, + ) + +/datum/supply_pack/imports/russian/fill(obj/structure/closet/crate/our_crate) + for(var/items in 1 to 10) + var/item = pick(contains) + new item(our_crate) + +/datum/supply_pack/imports/moistnuggets + name = "Refurbished Mosin Nagant Crate" + desc = "Hello Comrade Operative. You need gun? You hate garbage we sell to station normally? \ + Then we have the perfect weapon for you! Special price for good friends! \ + We don't have enough spare ammo, so you'll have to pick up the weapon of \ + dead comrade when you run out." + hidden = TRUE + cost = CARGO_CRATE_VALUE * 6 + contains = list(/obj/item/gun/ballistic/rifle/boltaction = 6) + +/datum/supply_pack/imports/vehicle + name = "Biker Gang Kit" //TUNNEL SNAKES OWN THIS TOWN + desc = "TUNNEL SNAKES OWN THIS TOWN. Contains an unbranded All Terrain Vehicle, and a \ + complete gang outfit -- consists of black gloves, a menacing skull bandanna, and a SWEET leather overcoat!" + cost = CARGO_CRATE_VALUE * 4 + contraband = TRUE + contains = list( + /obj/vehicle/ridden/atv, + /obj/item/key/atv, + /obj/item/clothing/suit/jacket/leather/biker, + /obj/item/clothing/gloves/color/black, + /obj/item/clothing/head/soft, + /obj/item/clothing/mask/bandana/skull/black, + )//so you can properly #cargoniabikergang + crate_name = "biker kit" + crate_type = /obj/structure/closet/crate/large diff --git a/code/modules/cargo/packs/security.dm b/code/modules/cargo/packs/security.dm index c0858e99f61..4e62d612eb9 100644 --- a/code/modules/cargo/packs/security.dm +++ b/code/modules/cargo/packs/security.dm @@ -295,35 +295,6 @@ contains = list(/obj/item/shield/riot = 3) crate_name = "riot shields crate" -/datum/supply_pack/security/armory/russian - name = "Russian Surplus Crate" - desc = "Hello Comrade, we have the most modern russian military equipment the \ - black market can offer, for the right price of course. Sadly we couldn't remove \ - the lock, so it" - cost = CARGO_CRATE_VALUE * 12 - contraband = TRUE - contains = list(/obj/item/food/rationpack, - /obj/item/ammo_box/a762, - /obj/item/storage/toolbox/ammo, - /obj/item/storage/toolbox/maint_kit, - /obj/item/clothing/suit/armor/vest/russian, - /obj/item/clothing/head/helmet/rus_helmet, - /obj/item/clothing/shoes/russian, - /obj/item/clothing/gloves/tackler/combat, - /obj/item/clothing/under/syndicate/rus_army, - /obj/item/clothing/under/costume/soviet, - /obj/item/clothing/mask/russian_balaclava, - /obj/item/clothing/head/helmet/rus_ushanka, - /obj/item/clothing/suit/armor/vest/russian_coat, - /obj/item/gun/ballistic/rifle/boltaction = 2, - ) - crate_name = "surplus military crate" - -/datum/supply_pack/security/armory/russian/fill(obj/structure/closet/crate/C) - for(var/i in 1 to 10) - var/item = pick(contains) - new item(C) - /datum/supply_pack/security/armory/swat name = "SWAT Crate" desc = "Contains two fullbody sets of tough, fireproof suits designed in a joint \ @@ -345,26 +316,3 @@ cost = CARGO_CRATE_VALUE * 7 contains = list(/obj/item/storage/belt/holster/energy/thermal = 2) crate_name = "thermal pistol crate" - -/datum/supply_pack/security/armory/wt550 - name = "Recalled Weapon Pack" - desc = "Contains a set of old Nanotrasen brand autorifles recalled due to choking hazard." - cost = CARGO_CRATE_VALUE * 7 - hidden = TRUE - contains = list( - /obj/item/gun/ballistic/automatic/wt550 = 2, - /obj/item/ammo_box/magazine/wt550m9 = 2, - ) - crate_name = "Recalled rifle crate" - -/datum/supply_pack/security/armory/wt550ammo - name = "Recalled Ammo Pack" - desc = "Contains four 20-round magazine for the Recalled WT-550 Auto Rifle. \ - Each magazine is designed to facilitate rapid tactical reloads. Recalled due to Security demands." - cost = CARGO_CRATE_VALUE * 4 - hidden = TRUE - contains = list( - /obj/item/ammo_box/magazine/wt550m9 = 4, - ) - crate_name = "Ammo box" - diff --git a/code/modules/clothing/outfits/ert.dm b/code/modules/clothing/outfits/ert.dm index 06ec7bd4023..9c4fc296836 100644 --- a/code/modules/clothing/outfits/ert.dm +++ b/code/modules/clothing/outfits/ert.dm @@ -306,7 +306,7 @@ shoes = /obj/item/clothing/shoes/sneakers/black l_pocket = /obj/item/ammo_box/a762 r_pocket = /obj/item/ammo_box/a762 - l_hand = /obj/item/gun/ballistic/rifle/boltaction/brand_new + l_hand = /obj/item/gun/ballistic/rifle/boltaction /datum/outfit/centcom/centcom_intern/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) if(visualsOnly) @@ -330,7 +330,7 @@ name = "CentCom Head Intern" suit = /obj/item/clothing/suit/armor/vest - suit_store = /obj/item/gun/ballistic/rifle/boltaction/brand_new + suit_store = /obj/item/gun/ballistic/rifle/boltaction belt = /obj/item/melee/baton/security/loaded head = /obj/item/clothing/head/hats/intern l_hand = /obj/item/megaphone diff --git a/code/modules/events/shuttle_loan/shuttle_loan_datum.dm b/code/modules/events/shuttle_loan/shuttle_loan_datum.dm index a5eb95cf67c..9055376b9a6 100644 --- a/code/modules/events/shuttle_loan/shuttle_loan_datum.dm +++ b/code/modules/events/shuttle_loan/shuttle_loan_datum.dm @@ -83,7 +83,7 @@ logging_desc = "Syndicate boarding party" /datum/shuttle_loan_situation/department_resupply/spawn_items(list/spawn_list, list/empty_shuttle_turfs) - var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/emergency/specialops] + var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/imports/specialops] pack.generate(pick_n_take(empty_shuttle_turfs)) spawn_list.Add(/mob/living/basic/syndicate/ranged/infiltrator) @@ -193,7 +193,7 @@ logging_desc = "Shuttle full of spiders" /datum/shuttle_loan_situation/spider_gift/spawn_items(list/spawn_list, list/empty_shuttle_turfs) - var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/emergency/specialops] + var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/imports/specialops] pack.generate(pick_n_take(empty_shuttle_turfs)) spawn_list.Add(/mob/living/basic/giant_spider) diff --git a/code/modules/jobs/job_types/cargo_technician.dm b/code/modules/jobs/job_types/cargo_technician.dm index a96dbdf1d7c..318eb695e2d 100644 --- a/code/modules/jobs/job_types/cargo_technician.dm +++ b/code/modules/jobs/job_types/cargo_technician.dm @@ -29,7 +29,8 @@ /obj/item/stack/sheet/mineral/gold = 5, /obj/item/stack/sheet/mineral/uranium = 4, /obj/item/stack/sheet/mineral/diamond = 3, - /obj/item/gun/ballistic/rifle/boltaction = 1 + /obj/item/gun/ballistic/rifle/boltaction = 1, + /obj/item/gun/ballistic/automatic/wt550 = 1, ) rpg_title = "Merchantman" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN diff --git a/code/modules/projectiles/ammunition/ballistic/rifle.dm b/code/modules/projectiles/ammunition/ballistic/rifle.dm index e4edd21c826..38515fb7820 100644 --- a/code/modules/projectiles/ammunition/ballistic/rifle.dm +++ b/code/modules/projectiles/ammunition/ballistic/rifle.dm @@ -7,6 +7,11 @@ caliber = CALIBER_A762 projectile_type = /obj/projectile/bullet/a762 +/obj/item/ammo_casing/a762/surplus + name = "7.62 surplus bullet casing" + desc = "A surplus 7.62 bullet casing." + projectile_type = /obj/projectile/bullet/a762/surplus + /obj/item/ammo_casing/a762/enchanted projectile_type = /obj/projectile/bullet/a762/enchanted diff --git a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm index a2237d76f27..bdb7cc79233 100644 --- a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm +++ b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm @@ -87,6 +87,10 @@ caliber = CALIBER_A762 multiple_sprites = AMMO_BOX_PER_BULLET +/obj/item/ammo_box/a762/surplus + name = "stripper clip (7.62mm Surplus)" + ammo_type = /obj/item/ammo_casing/a762/surplus + /obj/item/ammo_box/n762 name = "ammo box (7.62x38mmR)" icon_state = "10mmbox" diff --git a/code/modules/projectiles/boxes_magazines/external/pistol.dm b/code/modules/projectiles/boxes_magazines/external/pistol.dm index 72b13bd58f3..b152ce61bd7 100644 --- a/code/modules/projectiles/boxes_magazines/external/pistol.dm +++ b/code/modules/projectiles/boxes_magazines/external/pistol.dm @@ -105,3 +105,16 @@ caliber = CALIBER_50 max_ammo = 7 multiple_sprites = AMMO_BOX_PER_BULLET + +/obj/item/ammo_box/magazine/r10mm + name = "regal condor magazine (10mm)" + icon_state = "r10mm-8" + base_icon_state = "r10mm" + ammo_type = /obj/item/ammo_casing/c10mm + caliber = CALIBER_10MM + max_ammo = 8 + multiple_sprites = AMMO_BOX_PER_BULLET + +/obj/item/ammo_box/magazine/r10mm/empty + icon_state = "r10mm-0" + start_empty = TRUE diff --git a/code/modules/projectiles/boxes_magazines/internal/rifle.dm b/code/modules/projectiles/boxes_magazines/internal/rifle.dm index 03e7621577d..67afbed5b41 100644 --- a/code/modules/projectiles/boxes_magazines/internal/rifle.dm +++ b/code/modules/projectiles/boxes_magazines/internal/rifle.dm @@ -6,6 +6,9 @@ max_ammo = 5 multiload = TRUE +/obj/item/ammo_box/magazine/internal/boltaction/surplus + ammo_type = /obj/item/ammo_casing/a762/surplus + /obj/item/ammo_box/magazine/internal/boltaction/pipegun name = "pipegun internal magazine" caliber = CALIBER_SHOTGUN diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index 503d77bb813..0d3de81025e 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -95,8 +95,12 @@ update_appearance() /obj/item/gun/ballistic/automatic/wt550 - name = "security auto rifle" - desc = "An outdated personal defence weapon. Uses 4.6x30mm rounds and is designated the WT-550 Automatic Rifle." + name = "\improper WT-550 Autorifle" + desc = "Recalled by Nanotrasen due to public backlash around heat distribution resulting in unintended discombobulation. \ + This outcry was fabricated through various Syndicate-backed misinformation operations to force Nanotrasen to abandon \ + its ballistics weapon program, cornering them into the energy weapons market. Most often found today in the hands of pirates, \ + underfunded security personnel, cargo technicians, theoritical physicists and gang bangers out on the rim. \ + Light-weight and fully automatic. Uses 4.6x30mm rounds." icon_state = "wt550" w_class = WEIGHT_CLASS_BULKY inhand_icon_state = "arg" diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm index b66146571ea..e8a1c45241b 100644 --- a/code/modules/projectiles/guns/ballistic/pistol.dm +++ b/code/modules/projectiles/guns/ballistic/pistol.dm @@ -81,6 +81,23 @@ icon_state = "deaglecamo" inhand_icon_state = "deagleg" +/obj/item/gun/ballistic/automatic/pistol/deagle/regal + name = "\improper Regal Condor" + desc = "Unlike the Desert Eagle, this weapon seems to utilize some kind of advance internal stabilization system to significantly \ + reduce felt recoil and substantially increases overall accuracy, though at the cost of using a smaller caliber. This modification does \ + allow it to fire in a 2-round burst. Uses 10mm ammo." + icon_state = "reagle" + inhand_icon_state = "deagleg" + burst_size = 2 + fire_delay = 1 + spread = 10 + projectile_damage_multiplier = 1.25 + mag_type = /obj/item/ammo_box/magazine/r10mm + actions_types = list(/datum/action/item_action/toggle_firemode) + +/obj/item/gun/ballistic/automatic/pistol/deagle/regal/no_mag + spawnwithmagazine = FALSE + /obj/item/gun/ballistic/automatic/pistol/aps name = "\improper Stechkin APS machine pistol" desc = "An old Soviet machine pistol. It fires quickly, but kicks like a mule. Uses 9mm ammo. Has a threaded barrel for suppressors." diff --git a/code/modules/projectiles/guns/ballistic/rifle.dm b/code/modules/projectiles/guns/ballistic/rifle.dm index 75d6c73772a..b28d4c001e1 100644 --- a/code/modules/projectiles/guns/ballistic/rifle.dm +++ b/code/modules/projectiles/guns/ballistic/rifle.dm @@ -47,9 +47,14 @@ /obj/item/gun/ballistic/rifle/boltaction name = "\improper Mosin Nagant" - desc = "This piece of junk looks like something that could have been used 700 years ago. It feels slightly moist." - sawn_desc = "An extremely sawn-off Mosin Nagant, popularly known as an \"Obrez\". \ - There was probably a reason it wasn't manufactured this short to begin with." + desc = "A classic Mosin Nagant. They don't make them like they used to. Well, okay, in all honesty, this one is actually \ + a new refurbished version. So it works just fine! Often found in the hands of underpaid Nanotrasen interns, \ + Russian military LARPers, actual Space Russians, revolutionaries and cargo technicians. Still feels slightly moist." + sawn_desc = "A sawn-off Mosin Nagant, popularly known as an \"Obrez\". \ + There was probably a reason it wasn't manufactured this short to begin with. \ + This one is still in surprisingly good condition. Often found in the hands \ + of underpaid Nanotrasen interns without a care for company property, Russian military LARPers, \ + actual drunk Space Russians, Tiger Co-op assassins and cargo technicians. Still feels slightly moist." weapon_weight = WEAPON_HEAVY icon_state = "moistnugget" inhand_icon_state = "moistnugget" @@ -63,7 +68,7 @@ var/unjam_chance = 10 var/jamming_increment = 5 var/jammed = FALSE - var/can_jam = TRUE + var/can_jam = FALSE /obj/item/gun/ballistic/rifle/boltaction/sawoff(mob/user) . = ..() @@ -96,13 +101,18 @@ /obj/item/gun/ballistic/rifle/boltaction/attackby(obj/item/item, mob/user, params) . = ..() - if(can_jam) - if(bolt_locked) - if(istype(item, /obj/item/gun_maintenance_supplies)) - if(do_after(user, 10 SECONDS, target = src)) - user.visible_message(span_notice("[user] finishes maintenance of [src].")) - jamming_chance = 10 - qdel(item) + if(!can_jam) + balloon_alert(user, "can't jam!") + return + + if(!bolt_locked) + balloon_alert(user, "bolt closed!") + return + + if(istype(item, /obj/item/gun_maintenance_supplies) && do_after(user, 10 SECONDS, target = src)) + user.visible_message(span_notice("[user] finishes maintenance of [src].")) + jamming_chance = initial(jamming_chance) + qdel(item) /obj/item/gun/ballistic/rifle/boltaction/blow_up(mob/user) . = FALSE @@ -119,14 +129,23 @@ mag_type = /obj/item/ammo_box/magazine/internal/boltaction/harpoon fire_sound = 'sound/weapons/gun/sniper/shot.ogg' can_be_sawn_off = FALSE - can_jam = FALSE -/obj/item/gun/ballistic/rifle/boltaction/brand_new - desc = "A brand new Mosin Nagant issued by Nanotrasen for their interns. You would rather not to damage it." - can_be_sawn_off = FALSE - can_jam = FALSE +/obj/item/gun/ballistic/rifle/boltaction/surplus + desc = "A classic Mosin Nagant, ruined by centuries of moisture. Some Space Russians claim that the moisture \ + is a sign of good luck. A sober user will know that this thing is going to fucking jam. Repeatedly. \ + Often found in the hands of cargo technicians, Russian military LARPers, Tiger Co-Op terrorist cells, \ + cryo-frozen Space Russians, and security personnel with a bone to pick. EXTREMELY moist." + sawn_desc = "A sawn-off Mosin Nagant, popularly known as an \"Obrez\". \ + There was probably a reason it wasn't manufactured this short to begin with. \ + This one has been ruined by centuries of moisture and WILL jam. Often found in the hands of \ + cargo technicians with a death wish, Russian military LARPers, actual drunk Space Russians, \ + Tiger Co-op assassins, cryo-frozen Space Russians, and security personnel with \ + little care for professional conduct while making 'arrests' point blank in the back of the head \ + until the gun clicks. EXTREMELY moist." + mag_type = /obj/item/ammo_box/magazine/internal/boltaction/surplus + can_jam = TRUE -/obj/item/gun/ballistic/rifle/boltaction/brand_new/prime +/obj/item/gun/ballistic/rifle/boltaction/prime name = "\improper Regal Nagant" desc = "A prized hunting Mosin Nagant. Used for the most dangerous game." icon_state = "moistprime" @@ -137,7 +156,7 @@ You are now probably one of the few people in the universe to ever hold a \"Regal Obrez\". \ Even thinking about that name combination makes you ill." -/obj/item/gun/ballistic/rifle/boltaction/brand_new/prime/sawoff(mob/user) +/obj/item/gun/ballistic/rifle/boltaction/prime/sawoff(mob/user) . = ..() if(.) name = "\improper Regal Obrez" // wear it loud and proud @@ -176,7 +195,6 @@ inhand_icon_state = "musket_prime" worn_icon_state = "musket_prime" mag_type = /obj/item/ammo_box/magazine/internal/boltaction/pipegun/prime - can_jam = FALSE projectile_damage_multiplier = 1 /// MAGICAL BOLT ACTIONS + ARCANE BARRAGE? /// diff --git a/code/modules/projectiles/projectile/bullets/rifle.dm b/code/modules/projectiles/projectile/bullets/rifle.dm index afe4b4fc140..712e4dcc0f2 100644 --- a/code/modules/projectiles/projectile/bullets/rifle.dm +++ b/code/modules/projectiles/projectile/bullets/rifle.dm @@ -25,6 +25,11 @@ wound_bonus = -45 wound_falloff_tile = 0 +/obj/projectile/bullet/a762/surplus + name = "7.62 surplus bullet" + weak_against_armour = TRUE //this is specifically more important for fighting carbons than fighting noncarbons. Against a simple mob, this is still a full force bullet + armour_penetration = 0 + /obj/projectile/bullet/a762/enchanted name = "enchanted 7.62 bullet" damage = 20 diff --git a/code/modules/research/designs/autolathe/security_designs.dm b/code/modules/research/designs/autolathe/security_designs.dm index 4f4334e7308..20c698a4474 100644 --- a/code/modules/research/designs/autolathe/security_designs.dm +++ b/code/modules/research/designs/autolathe/security_designs.dm @@ -175,7 +175,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SECURITY /datum/design/a357 - name = ".357 Casing" + name = ".357 Bullet Casing" id = "a357" build_type = AUTOLATHE materials = list(/datum/material/iron = 4000) @@ -186,6 +186,18 @@ ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY +/datum/design/a762surplus + name = "7.62 Surplus Bullet Casing" + id = "a762surplus" + build_type = AUTOLATHE + materials = list(/datum/material/iron = 4000) + build_path = /obj/item/ammo_casing/a762/surplus + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO, + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY + /datum/design/c10mm name = "Ammo Box (10mm)" id = "c10mm" diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index d5c3023f461..d19e472370f 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -95,6 +95,32 @@ departmental_flags = DEPARTMENT_BITFLAG_SECURITY autolathe_exportable = FALSE +/datum/design/mag_autorifle + name = "WT-550 Autorifle Magazine (4.6x30mm)" + desc = "A 20 round magazine for the out of date WT-550 Autorifle." + id = "mag_autorifle" + build_type = PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/iron = 4000) + build_path = /obj/item/ammo_box/magazine/wt550m9 + category = list("Ammo") + departmental_flags = DEPARTMENT_BITFLAG_SECURITY + +/datum/design/mag_autorifle/ap_mag + name = "WT-550 Autorifle Armour Piercing Magazine (4.6x30mm AP)" + desc = "A 20 round armour piercing magazine for the out of date WT-550 Autorifle." + id = "mag_autorifle_ap" + materials = list(/datum/material/iron = 6000, /datum/material/silver = 600) + build_path = /obj/item/ammo_box/magazine/wt550m9/wtap + departmental_flags = DEPARTMENT_BITFLAG_SECURITY + +/datum/design/mag_autorifle/ic_mag + name = "WT-550 Autorifle Incendiary Magazine (4.6x30mm IC)" + desc = "A 20 round armour piercing magazine for the out of date WT-550 Autorifle." + id = "mag_autorifle_ic" + materials = list(/datum/material/iron = 6000, /datum/material/silver = 600, /datum/material/glass = 1000) + build_path = /obj/item/ammo_box/magazine/wt550m9/wtic + departmental_flags = DEPARTMENT_BITFLAG_SECURITY + /datum/design/pin_testing name = "Test-Range Firing Pin" desc = "This safety firing pin allows firearms to be operated within proximity to a firing range." diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index c479b53189a..29a506439fc 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -2155,6 +2155,9 @@ "donksoft_refill", "donksofttoyvendor", "largecrossbow", + "mag_autorifle", + "mag_autorifle_ap", + "mag_autorifle_ic", "rapidsyringe", "suppressor", "super_pointy_tape", diff --git a/icons/mob/clothing/back/backpack.dmi b/icons/mob/clothing/back/backpack.dmi index f41ffc5c813..8afa5207e4e 100644 Binary files a/icons/mob/clothing/back/backpack.dmi and b/icons/mob/clothing/back/backpack.dmi differ diff --git a/icons/mob/inhands/equipment/backpack_lefthand.dmi b/icons/mob/inhands/equipment/backpack_lefthand.dmi index 76301c2bdb1..6c600e85e8a 100644 Binary files a/icons/mob/inhands/equipment/backpack_lefthand.dmi and b/icons/mob/inhands/equipment/backpack_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/backpack_righthand.dmi b/icons/mob/inhands/equipment/backpack_righthand.dmi index f060b83eb90..9ec56abd241 100644 Binary files a/icons/mob/inhands/equipment/backpack_righthand.dmi and b/icons/mob/inhands/equipment/backpack_righthand.dmi differ diff --git a/icons/obj/storage/backpack.dmi b/icons/obj/storage/backpack.dmi index eb19a079a80..983678c2d25 100644 Binary files a/icons/obj/storage/backpack.dmi and b/icons/obj/storage/backpack.dmi differ diff --git a/icons/obj/weapons/guns/ammo.dmi b/icons/obj/weapons/guns/ammo.dmi index 926a0cbbe72..94a006215bf 100644 Binary files a/icons/obj/weapons/guns/ammo.dmi and b/icons/obj/weapons/guns/ammo.dmi differ diff --git a/icons/obj/weapons/guns/ballistic.dmi b/icons/obj/weapons/guns/ballistic.dmi index 1d70d9af19d..c00eb265379 100644 Binary files a/icons/obj/weapons/guns/ballistic.dmi and b/icons/obj/weapons/guns/ballistic.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 9b51b5c35bf..284993fa29c 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1951,6 +1951,7 @@ #include "code\game\objects\items\granters\crafting\combat_baking.dm" #include "code\game\objects\items\granters\crafting\desserts.dm" #include "code\game\objects\items\granters\crafting\pipegun.dm" +#include "code\game\objects\items\granters\crafting\regal_condor.dm" #include "code\game\objects\items\granters\magic\_spell_granter.dm" #include "code\game\objects\items\granters\magic\barnyard.dm" #include "code\game\objects\items\granters\magic\blind.dm" @@ -2964,6 +2965,7 @@ #include "code\modules\cargo\packs\engineering.dm" #include "code\modules\cargo\packs\exploration.dm" #include "code\modules\cargo\packs\general.dm" +#include "code\modules\cargo\packs\imports.dm" #include "code\modules\cargo\packs\livestock.dm" #include "code\modules\cargo\packs\materials.dm" #include "code\modules\cargo\packs\medical.dm" diff --git a/tools/UpdatePaths/Scripts/73781_sniper_automatic_to_rifle.txt b/tools/UpdatePaths/Scripts/73781_sniper_automatic_to_rifle.txt index 342e6dc367a..2ba81af0165 100644 --- a/tools/UpdatePaths/Scripts/73781_sniper_automatic_to_rifle.txt +++ b/tools/UpdatePaths/Scripts/73781_sniper_automatic_to_rifle.txt @@ -1,3 +1,3 @@ #comment This repaths sniper rifles from the automatic subtype to the rifle subtype. -/obj/item/weapon/automatic/sniper : /obj/item/weapon/rifle/sniper{@OLD} +/obj/item/gun/ballistic/automatic/sniper : /obj/item/gun/ballistic/rifle/sniper{@OLD} diff --git a/tools/UpdatePaths/Scripts/74490_ammo_box_to_toolbox_762.txt b/tools/UpdatePaths/Scripts/74490_ammo_box_to_toolbox_762.txt new file mode 100644 index 00000000000..27fc116282e --- /dev/null +++ b/tools/UpdatePaths/Scripts/74490_ammo_box_to_toolbox_762.txt @@ -0,0 +1,3 @@ +#comment This repaths the ammo toolbox (which contains 7.62 stripper clips) to a new path that more adequately explains what it contains + +/obj/item/storage/toolbox/ammo : /obj/item/storage/toolbox/a762{@OLD} diff --git a/tools/UpdatePaths/Scripts/74490_brand_new_mosin_to_mosin.txt b/tools/UpdatePaths/Scripts/74490_brand_new_mosin_to_mosin.txt new file mode 100644 index 00000000000..9dfd294482e --- /dev/null +++ b/tools/UpdatePaths/Scripts/74490_brand_new_mosin_to_mosin.txt @@ -0,0 +1,3 @@ +#comment This repaths the brand_new mosin subtpye to simply its parent type. + +/obj/item/gun/ballistic/rifle/boltaction/brand_new : /obj/item/gun/ballistic/rifle/boltaction{@OLD}