Imports and Contraband: Different! Cargo crates without locks! MEAT! (#74490)

## About The Pull Request

### **Cargo Black Market goods should stay in cargo's hands**

#### New Cargo Console Category: Imports

This category is explicitly the non-departmental category beyond simply
having a Misc category. It is meant for material that nobody is meant to
be buying for their departments, and mostly for the odd-ball crates that
might show up. It also allows us to maintain contraband as exactly that;
contraband that the departments shouldn't have access too whatsoever. If
someone is buying from this category, they probably intend to be a
cheeky fuck.

<details>
  <summary>The New Changes</summary>

#### Baseline Imports

MEAT: MEAT (meat backpack you can eat)

<details>
  <summary>MEAT</summary>
  
![MEAT
MEAT](https://user-images.githubusercontent.com/40847847/229593459-f3c98abe-114b-43c1-a3e2-afc16b76c84f.png)
![MEAT MEAT MEAT
MEAT](https://user-images.githubusercontent.com/40847847/229593473-07a30781-a05e-4ca5-893b-778900cd2d1c.png)

</details>

Duct Spiders: They're adorable and cause a mess, but that doesn't stop
Nanotrasen from importing them from the Australicus sector to your
station!

Stack of 50 Bamboo Cuttings: Pretty expensive and kind of a premium.
Allows for those people looking to make bamboo decorations without
hoping botany exists, and are at least willing to pay. Also lets them
make horribly dangerous stuff with bamboo, of course.

A Single Sheet of Bananium: The problems this will cause I think speak
for themselves. (mostly due to a clown fruitlessly attempting to make
something actually disruptive while bankrupting cargo)

Natural Fish Bait: It isn't cheating, it's homemade. (Really good bait
but expensive and obviously drugs)

A dumpster...: A corpse in a dumpster, doesn't get more complicated than
that. Useful for corpse reasons.

Made using some code I borrowed from over here!
https://github.com/lizardqueenlexi/orbstation/pull/354

#### Contraband Imports

Foam Force Pistols: Same as it ever was with a price reduction. I
brought it down because riot darts are like 8 bullets a clip, and do
less damage than a disabler using riot darts. It feels like a sidegrade
weapon, and even if it technically is a ballistic weapon, it...isn't
that strong. I think this is pretty safe.

Definitely Not a Duct Spider: It's actually a giant spider in a box. If
you want to waste cargo's money while also sending them a mess to deal
with, this is the crate for you.

Russian Surplus Military Gear Crate: I took this opportunity to futz
with boltaction rifles. There are two kinds of mosin nagant you can get
in this crate. One of them is the good kind (no jamming). The other is
the shit kind (yes jamming), but you get more of them. You can get the
good ammo, or you can get the shit ammo. You'll have to pick through it
a lot more carefully to make sure you know which ones you've received.
Since this dilutes the pool even further, getting a good number of
mosins that aren't trash is even more expensive, and even if you do get
mosins at all, you might still only get the bad ammunition that doesn't
work against actual human threats as well. It also now cannot be
purchased through the security cargo supply console, and as to why they
could in the first place baffles me. Doesn't have a lock anymore
because...it's contraband? Who is locking this stuff?

**Side note: _You can make surplus 7.62 in the autolathe as well. It is
not very good except to fight fauna or naked assistants._**

**Side Side note: _I've killed off the shitty brand_new subtype and
brought peace once more to this land._**

#### Illegal Imports (Emag)

NULL_ENTRY: A journal that suggests how to make a...very interesting
weapon. The Regal Condor. Kind of an evolution on some other ideas I've
had over the years. This one is basically a secret weapon with a few
hurdles to jump through. Very lethal. Very expensive.

**Side note: _For reference, it's effectively 19 TC worth of gear to
make, but there does exist some methods to acquire this more cheaply if
you can get some bits and pieces from world spawns. Given it requires
you to get some pieces of equipment that might require additional
purchases of contraband, and getting into the captain's office to loot a
specific piece of clothing, the stakes more than make up for the
effectiveness._**

Smuggled WT-550 Autorifle Crate: This is basically the same, but you
might have noticed had you recently attempted, like me, to buy these
when you emagged them using a personal account and discovered a tragic
oversight. You couldn't, because they still needed armory access. This
removes that access, because you've already gone to the effort of
getting your hands on an illicit firearm through cargo, and if they
techs somehow miss the fact that you've purchased a WT-550...all the
better for you!

Smuggled WT-550 Ammo Crate: Includes AP and Incendiary!

**Side note: _You can get WT-550 ammo again via the Illegal Technology
node._**

Shocktrooper: Replaces the Special Ops crate. Contains a box of EMPs,
smoke grenades, a couple of gluon grenades and a couple of frag
grenades. Funsies.

Special Ops: The NEW Special Ops crate. Contains a chameleon mask,
jumpsuit and agent card. And a knife.

**Side note: _This is what appears in some cargo loan events._**

Refurbished Mosin Nagant Crate: The actual good mosin nagants. There are
6 of them. But they don't come with spare ammo. Hand them out to your
techs!
</details>

#### New Crates

- MEAT crate - Standard
- Duct Spider crate - Standard
- Giant Hostile Spider crate - Contraband
- 50 sheets of Bamboo crate - Standard
- A single sheet of bananium crate - Standard
- Natural (drugs) fish bait - Standard
- Dumpster with a corpse in it - Standard
- Shocktrooper crate (Grenades) - Emag
- Special Ops crate (Disguise) - Emag - Appears in some cargo loan
events
- Refurbished Mosin Nagant crate - Emag
- Regal Condor construction journal (NULL_ENTRY) - Emag

#### Changed Crates

- Foam Force Pistols (cheaper) - Contraband
- Russian Surplus Crate (less reliable, can't be bought by security
console) - Contraband
- WT-550 crate (more obtainable via personal accounts, thus
incriminating, not armory locked) - Emag
- WT-550 ammo (includes incendiary and AP) - Emag

#### Crates that got moved, unchanged, into Imports

- Foam Force Crate 
- Cosa Nostra Crate 
- Black Market LTSRBT 
- 'Contraband' Crate 
- Biker Gang Crate

#### Not crate changes
- You can print Surplus 7.62 (same as normal 7.62 but it sucks against
armor) from hacked autolathes.
- You can get WT-550 ammo from illegal tech.
- Removes the redundant Brand New Mosin subtype
- Fixes a potential exploit with jamming chance on Mosins.

## Why It's Good For The Game

I just think some of the magic of Cargo getting their hands on obviously
dangerous equipment and either hording it for themselves or attempting
to pawn it off was lost in recent times. A lot of this 'black market'
gear, however, suddenly became openly available to the crew anyway. For
_free_. Contraband crates and mafia crates could be purchased via the
Service budget. Security could just stock up en masse on mosins through
their console. And one fairly unfortunate consequence of a few recent
changes has made it nearly impossible to actually get illicit gear in
the first place, even if you did go to the effort of getting the money
for it.

On top of this, most of cargo's goods are pretty safe purchases. There
isn't much that would be considered 'actually a really bad idea to buy'
other than maybe supermatter shards. I wouldn't mind there existing ways
for someone to waste cargo's money while also causing them to have to
clean up the mess.

## Changelog
🆑
balance: A significant overhaul of various illicit and dubiously legal
goods and gadgets available via cargo.
balance: Cargo now has an Import category for all non-departmental
goods. (And black market goods)
balance: Most contraband that already exists has been moved into
Imports.
adds: Includes several new imports of dubious quality. You get what you
pay for.
code: Removes the brand new mosin subtype as it is now defunct.
fix: Fixes potentially exploitative code in the jamming proc. Cleans up
that code while I'm at it.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
This commit is contained in:
necromanceranne
2023-04-08 18:35:10 +00:00
committed by GitHub
co-authored by Jacquerel carlarctg
parent c4ce7329a7
commit 997dac9616
40 changed files with 563 additions and 209 deletions
@@ -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
},
+2 -2
View File
@@ -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,
@@ -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
+12
View File
@@ -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."
@@ -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)
+40 -5
View File
@@ -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)
+4 -2
View File
@@ -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()
+12 -1
View File
@@ -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"
+11 -11
View File
@@ -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"
+1 -1
View File
@@ -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(
@@ -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
-61
View File
@@ -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!"
-30
View File
@@ -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. \
-13
View File
@@ -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"
+268
View File
@@ -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
-52
View File
@@ -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"
+2 -2
View File
@@ -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
@@ -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)
@@ -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
@@ -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
@@ -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"
@@ -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
@@ -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
@@ -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"
@@ -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."
@@ -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. <I>Still</I> 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? ///
@@ -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
@@ -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"
@@ -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."
@@ -2155,6 +2155,9 @@
"donksoft_refill",
"donksofttoyvendor",
"largecrossbow",
"mag_autorifle",
"mag_autorifle_ap",
"mag_autorifle_ic",
"rapidsyringe",
"suppressor",
"super_pointy_tape",
Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

+2
View File
@@ -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"
@@ -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}
@@ -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}
@@ -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}