Imports and Contraband 2: Landfill Gacha Addiction (I put trash randomizers into cargo crates and called it content) (#76771)
## About The Pull Request This is a followup on my previous PR involving cargo imports. I've made a number of changes and new additions to cargo's imports and contraband. But I've also changed how Smuggler's Satchels generate loot as well. ### New: **Abandoned Crates:** You can now order in abandoned crates at a steep price. Obviously these are just your standard fare abandoned crates, so they've got a pretty long list of potential contents. Some great, some utterly not worth the price you paid for the crate. Since they're quite pricey, you can't order very many quickly. But this does allow cargo techs the opportunity to spend the round solving puzzles to get interesting loot. **Dumpster of Maint Garbage:** This dumpster (similarly named to another dumpster you can order) is filled with maint trash and potential maint random spawns. This list is extensive enough that anything spawned in this crate is likely to be mostly garbage. But, it is more affordable than abandoned crates. I'd consider this the literally trashier version of the abandoned crate. **Shamber's Juice Eldritch Energy! Crate:** A crate with one can of the extremely rare, short run edition of Shambler's Juice, Eldritch Energy! This contains 5 units of eldritch essence. Heals heretics, hurts everyone else! This is a VERY potent poison, but it also happens to be a handy way for a Cargonian heretic to get a potent healing item without having to waste knowledge points. **Animal Hide Crate:** It's a cargo crate full of animal hides! This can include fairly rare hides and some icebox creature hides as well, like polar bear hides and wolf sinew. It's not too expensive, and mostly spits out leather. **Dreadnog Carton Crate:** A carton full of the worst eggnog imaginable. This is just something to troll people with. Drink it and you'll get a massive mood penalty. Dreadnog! May or may not contain space cola! ### Updated: **Contraband Crate and Smuggler's Satchels:** This has had it's price increased considerably. But, for good reason. It now contains some more controlled random items, but also some more valuable contraband as well as a very rare spawn. The upper end on his contraband can be extremely valuable, but the majority of the items gained from contraband crates will probably be either what you can get now (quite weak), or something a bit more middle of the road (some more unique narcotics). As a consequence, I've also passed this change onto smuggler's satchels, as they used the crate to generate its contents. (it literally spawned and then deleted a contraband crate to generate the contents hoo haa). I've also increased the number of items in the smuggler's satchel. Since the randomly spawned smuggler's satchels are quite a bit rarer now there is only ever two spawned in the map, and spending actual TC on these is somewhat counterproductive, I don't imagine this will be more beneficial for scavenger hunters hoping for some interesting goodies. **Russian Crate (the normal one):** The mosins now spawn in ancient gun cases. These determine what kind of mosin you can get. 79% of the time, you get the crap mosin. 20% of the time, you get a good mosin. And 1% of the time, you get rations. This more tightly controls how many good mosins are entering into the round and how much of a value purchase the Russian crate actually is for getting ballistics. Since the process is even more unlikely than before, it isn't necessarily as guaranteed that you will get a good mosin. Hell, you might not even get a gun if you're that unlucky. **Shocktrooper Crate:** It now has an armor vest and helmet. So, not only do you get some grenades, you get some protection as well. Since this is the 'loud' crate, I felt it appropriate to make it slightly more useful for enabling that. **Special Ops Crate:** It now contains five mirage grenades and a chameleon belt, and has had the survival knife improved to a switchblade. This is probably the weakest of the two crates STILL, but hopefully these make them a little more interesting and novel by giving them pretty fun grenade to toy with. ## Why It's Good For The Game My initial PR hoped to add in a few more interesting purchases for cargo. I think currently cargo has a slight issue of not having enough valuable or interesting uses for their money. I think it still has that problem, but by including more unique crates that allow cargo to provide some oddities into the round, that might slowly work itself out. This PR hopes to provide another way to waste their money if they have an excess amount. Landfill Trash Gambling. Spending it away on complete junk, which I think is absolutely hilarious when it doesn't work out, as it is soulful in its design. Definitely not inspired by my recent thrift shop excursions this month buying and scrounging for furniture and interesting clothing. [Relevant](https://www.youtube.com/watch?v=QK8mJJJvaes) Also, I wanted to buff some of the crates I introduced a bit last time, and nerf the mosin production somewhat via a more controllable method that I can actually adjust as necessary down the line. ## Changelog 🆑 fix: Stops manifest generation runtiming when a cargo crate is empty. add: Abandoned crates are now available via cargo imports. add: Dumpsters full of maintenance trash are now available via cargo imports. add: An ultra-rare can of Shambler's Juice is now available via cargo imports. add: Animal hides and leathers can be (unreliably) ordered via cargo imports. add: The Dreadnog has entered this realm. To consume, purchase it via cargo imports. balance: Contraband Crates (and as a consequence, smuggler's satchels) now generate more varied goods. Mostly the same, but sometimes you get something quite different or even valuable. balance: Mosins generated via the Russian supply crate are a bit more random, weighing more heavily towards bad mosins than good mosins. balance: Buffed both the shocktrooper and special op crate. Shocktrooper now has an armored helmet and vest, and special op now has 5 mirage grenades and a chameleon belt. The survival knife in the special op crate is now a switchblade. /🆑
@@ -94,11 +94,12 @@ DEFINE_BITFIELD(foodtypes, list(
|
||||
"Rocks", \
|
||||
)
|
||||
|
||||
#define DRINK_NICE 1
|
||||
#define DRINK_GOOD 2
|
||||
#define DRINK_VERYGOOD 3
|
||||
#define DRINK_FANTASTIC 4
|
||||
#define FOOD_AMAZING 5
|
||||
#define DRINK_REVOLTING 1
|
||||
#define DRINK_NICE 2
|
||||
#define DRINK_GOOD 3
|
||||
#define DRINK_VERYGOOD 4
|
||||
#define DRINK_FANTASTIC 5
|
||||
#define FOOD_AMAZING 6
|
||||
|
||||
/// Food is "in a container", not in a code sense, but in a literal sense (canned foods)
|
||||
#define FOOD_IN_CONTAINER (1<<0)
|
||||
|
||||
@@ -18,6 +18,11 @@
|
||||
mood_change = -2
|
||||
timeout = 6 MINUTES
|
||||
|
||||
/datum/mood_event/quality_revolting
|
||||
description = "That drink was the worst thing I've ever consumed."
|
||||
mood_change = -8
|
||||
timeout = 7 MINUTES
|
||||
|
||||
/datum/mood_event/quality_nice
|
||||
description = "That drink wasn't bad at all."
|
||||
mood_change = 2
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
/obj/effect/spawner/random/animalhide
|
||||
name = "animal hide spawner"
|
||||
desc = "Fresh animal hide!"
|
||||
icon_state = "animalhide"
|
||||
loot = list(
|
||||
/obj/item/stack/sheet/leather/five = 70,
|
||||
/obj/item/stack/sheet/animalhide/corgi/five = 10,
|
||||
/obj/item/stack/sheet/animalhide/cat/five = 10,
|
||||
/obj/item/stack/sheet/animalhide/monkey/five = 10,
|
||||
/obj/item/stack/sheet/animalhide/mothroach/five = 5,
|
||||
/obj/item/stack/sheet/animalhide/carp/five = 5,
|
||||
/obj/item/stack/sheet/sinew/wolf = 2,
|
||||
/obj/item/stack/sheet/animalhide/goliath_hide/polar_bear_hide = 2,
|
||||
/obj/item/stack/sheet/animalhide/xeno/five = 1,
|
||||
/obj/item/stack/sheet/animalhide/lizard/five = 1,
|
||||
/obj/item/stack/sheet/animalhide/human/five = 1,
|
||||
/obj/item/stack/sheet/animalhide/gondola = 1,
|
||||
)
|
||||
@@ -2,6 +2,44 @@
|
||||
name = "contraband loot spawner"
|
||||
desc = "Pstttthhh! Pass it under the table."
|
||||
icon_state = "prisoner"
|
||||
loot = list(
|
||||
/obj/item/poster/random_contraband = 40,
|
||||
/obj/item/food/grown/cannabis = 40,
|
||||
/obj/item/clothing/mask/gas/syndicate = 30,
|
||||
/obj/item/clothing/neck/necklace/dope = 30,
|
||||
/obj/item/food/grown/cannabis/rainbow = 20,
|
||||
/obj/item/reagent_containers/cup/glass/bottle/absinthe = 20,
|
||||
/obj/item/toy/cards/deck/syndicate = 20,
|
||||
/obj/item/clothing/under/syndicate/tacticool = 20,
|
||||
/obj/item/food/grown/cannabis/white = 10,
|
||||
/obj/item/storage/box/fireworks/dangerous = 10,
|
||||
/obj/item/storage/pill_bottle/zoom = 10,
|
||||
/obj/item/storage/pill_bottle/happy = 10,
|
||||
/obj/item/storage/pill_bottle/lsd = 10,
|
||||
/obj/item/storage/pill_bottle/aranesp = 10,
|
||||
/obj/item/storage/pill_bottle/stimulant = 10,
|
||||
/obj/item/storage/fancy/cigarettes/cigpack_syndicate = 10,
|
||||
/obj/item/storage/fancy/cigarettes/cigpack_shadyjims = 10,
|
||||
/obj/item/storage/box/donkpockets = 10,
|
||||
/obj/item/reagent_containers/pill/maintenance = 5,
|
||||
/obj/effect/spawner/random/contraband/plus = 5,
|
||||
)
|
||||
|
||||
/obj/effect/spawner/random/contraband/plus
|
||||
name = "contraband loot spawner plus"
|
||||
desc = "Where'd ya find this?"
|
||||
loot = list(
|
||||
/obj/effect/spawner/random/contraband/prison = 40,
|
||||
/obj/item/clothing/under/syndicate = 20,
|
||||
/obj/item/reagent_containers/cup/bottle/thermite = 20,
|
||||
/obj/item/reagent_containers/pill/maintenance = 10,
|
||||
/obj/item/restraints/legcuffs/beartrap = 10,
|
||||
/obj/effect/spawner/random/contraband/narcotics = 10,
|
||||
/obj/item/seeds/kronkus = 5,
|
||||
/obj/item/seeds/odious_puffball = 5,
|
||||
/obj/item/grenade/empgrenade = 5,
|
||||
/obj/effect/spawner/random/contraband/armory = 1,
|
||||
)
|
||||
|
||||
/obj/effect/spawner/random/contraband/armory
|
||||
name = "armory loot spawner"
|
||||
@@ -21,12 +59,13 @@
|
||||
icon_state = "pill"
|
||||
loot = list(
|
||||
/obj/item/reagent_containers/syringe/contraband/space_drugs,
|
||||
/obj/item/reagent_containers/syringe/contraband/krokodil,
|
||||
/obj/item/reagent_containers/syringe/contraband/methamphetamine,
|
||||
/obj/item/reagent_containers/syringe/contraband/bath_salts,
|
||||
/obj/item/reagent_containers/syringe/contraband/fentanyl,
|
||||
/obj/item/reagent_containers/syringe/contraband/morphine,
|
||||
/obj/item/reagent_containers/syringe/contraband/saturnx,
|
||||
/obj/item/food/drug/saturnx,
|
||||
/obj/item/reagent_containers/cup/blastoff_ampoule,
|
||||
/obj/item/food/drug/moon_rock,
|
||||
/obj/item/storage/pill_bottle/happy,
|
||||
/obj/item/storage/pill_bottle/lsd,
|
||||
/obj/item/storage/pill_bottle/psicodine,
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
/obj/effect/spawner/random/mosin
|
||||
name = "mosin nagant spawner"
|
||||
desc = "For the Motherland!"
|
||||
icon_state = "pistol"
|
||||
loot = list(
|
||||
/obj/item/gun/ballistic/rifle/boltaction/surplus = 80,
|
||||
/obj/item/gun/ballistic/rifle/boltaction = 10,
|
||||
/obj/item/food/rationpack = 1,
|
||||
)
|
||||
/obj/effect/spawner/random/mosin/ammo
|
||||
name = "7.62 stripper clip spawner"
|
||||
loot = list(
|
||||
/obj/item/ammo_box/a762/surplus = 80,
|
||||
/obj/item/ammo_box/a762 = 10,
|
||||
/obj/item/food/rationpack = 1,
|
||||
)
|
||||
@@ -22,6 +22,9 @@ GLOBAL_LIST_INIT(human_recipes, list( \
|
||||
. = ..()
|
||||
. += GLOB.human_recipes
|
||||
|
||||
/obj/item/stack/sheet/animalhide/human/five
|
||||
amount = 5
|
||||
|
||||
/obj/item/stack/sheet/animalhide/generic
|
||||
name = "skin"
|
||||
desc = "A piece of skin."
|
||||
@@ -42,6 +45,9 @@ GLOBAL_LIST_INIT(gondola_recipes, list ( \
|
||||
new/datum/stack_recipe("gondola suit", /obj/item/clothing/under/costume/gondola, 2, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/animalhide/corgi/five
|
||||
amount = 5
|
||||
|
||||
/obj/item/stack/sheet/animalhide/mothroach
|
||||
name = "mothroach hide"
|
||||
desc = "A thin layer of mothroach hide."
|
||||
@@ -50,6 +56,9 @@ GLOBAL_LIST_INIT(gondola_recipes, list ( \
|
||||
inhand_icon_state = null
|
||||
merge_type = /obj/item/stack/sheet/animalhide/mothroach
|
||||
|
||||
/obj/item/stack/sheet/animalhide/mothroach/five
|
||||
amount = 5
|
||||
|
||||
/obj/item/stack/sheet/animalhide/gondola
|
||||
name = "gondola hide"
|
||||
desc = "The extremely valuable product of gondola hunting."
|
||||
@@ -78,6 +87,9 @@ GLOBAL_LIST_INIT(corgi_recipes, list ( \
|
||||
inhand_icon_state = null
|
||||
merge_type = /obj/item/stack/sheet/animalhide/cat
|
||||
|
||||
/obj/item/stack/sheet/animalhide/cat/five
|
||||
amount = 5
|
||||
|
||||
/obj/item/stack/sheet/animalhide/monkey
|
||||
name = "monkey hide"
|
||||
desc = "The by-product of monkey farming."
|
||||
@@ -95,6 +107,9 @@ GLOBAL_LIST_INIT(monkey_recipes, list ( \
|
||||
. = ..()
|
||||
. += GLOB.monkey_recipes
|
||||
|
||||
/obj/item/stack/sheet/animalhide/monkey/five
|
||||
amount = 5
|
||||
|
||||
/obj/item/stack/sheet/animalhide/lizard
|
||||
name = "lizard skin"
|
||||
desc = "Sssssss..."
|
||||
@@ -103,6 +118,9 @@ GLOBAL_LIST_INIT(monkey_recipes, list ( \
|
||||
inhand_icon_state = null
|
||||
merge_type = /obj/item/stack/sheet/animalhide/lizard
|
||||
|
||||
/obj/item/stack/sheet/animalhide/lizard/five
|
||||
amount = 5
|
||||
|
||||
/obj/item/stack/sheet/animalhide/xeno
|
||||
name = "alien hide"
|
||||
desc = "The skin of a terrible creature."
|
||||
@@ -120,6 +138,9 @@ GLOBAL_LIST_INIT(xeno_recipes, list ( \
|
||||
. = ..()
|
||||
. += GLOB.xeno_recipes
|
||||
|
||||
/obj/item/stack/sheet/animalhide/xeno/five
|
||||
amount = 5
|
||||
|
||||
/obj/item/stack/sheet/animalhide/carp
|
||||
name = "carp scales"
|
||||
desc = "The scaly skin of a space carp. It looks quite beatiful when detached from the foul creature who once wore it."
|
||||
@@ -140,6 +161,9 @@ GLOBAL_LIST_INIT(carp_recipes, list ( \
|
||||
. = ..()
|
||||
. += GLOB.carp_recipes
|
||||
|
||||
/obj/item/stack/sheet/animalhide/carp/five
|
||||
amount = 5
|
||||
|
||||
//don't see anywhere else to put these, maybe together they could be used to make the xenos suit?
|
||||
/obj/item/stack/sheet/xenochitin
|
||||
name = "alien chitin"
|
||||
@@ -207,6 +231,10 @@ GLOBAL_LIST_INIT(leather_recipes, list ( \
|
||||
/obj/item/stack/sheet/leather/get_main_recipes()
|
||||
. = ..()
|
||||
. += GLOB.leather_recipes
|
||||
|
||||
/obj/item/stack/sheet/leather/five
|
||||
amount = 5
|
||||
|
||||
/*
|
||||
* Sinew
|
||||
*/
|
||||
|
||||
@@ -368,12 +368,8 @@
|
||||
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/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(smuggled_goods)
|
||||
for(var/items in 1 to 4)
|
||||
new /obj/effect/spawner/random/contraband(src)
|
||||
|
||||
/obj/item/storage/backpack/satchel/flat/with_tools/PopulateContents()
|
||||
new /obj/item/stack/tile/iron/base(src)
|
||||
|
||||
@@ -309,7 +309,28 @@
|
||||
balloon_alert(user, "needs 10 tiles!")
|
||||
return
|
||||
|
||||
|
||||
/obj/item/storage/toolbox/haunted
|
||||
name = "old toolbox"
|
||||
custom_materials = list(/datum/material/hauntium = SMALL_MATERIAL_AMOUNT*5)
|
||||
|
||||
/obj/item/storage/toolbox/mosincase
|
||||
name = "ancient gun case"
|
||||
desc = "A weapon's case. Has the symbol of the Third Soviet Union stamped on the side."
|
||||
icon = 'icons/obj/storage/case.dmi'
|
||||
icon_state = "mosin_case"
|
||||
lefthand_file = 'icons/mob/inhands/equipment/toolbox_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/toolbox_righthand.dmi'
|
||||
inhand_icon_state = "mosin_case"
|
||||
has_latches = FALSE
|
||||
|
||||
/obj/item/storage/toolbox/mosincase/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_BULKY
|
||||
atom_storage.max_total_storage = 7 //enough to hold ONE mosin and the ammo boxes
|
||||
atom_storage.max_slots = 4
|
||||
|
||||
/obj/item/storage/toolbox/mosincase/PopulateContents()
|
||||
new /obj/effect/spawner/random/mosin (src)
|
||||
for(var/i in 1 to 3)
|
||||
new /obj/effect/spawner/random/mosin/ammo (src)
|
||||
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
var/container_contents = list() // Associative list with the format (item_name = nº of occurences, ...)
|
||||
for(var/atom/movable/AM in container.contents - manifest_paper)
|
||||
container_contents[AM.name]++
|
||||
if((manifest_paper.errors & MANIFEST_ERROR_CONTENTS))
|
||||
if((manifest_paper.errors & MANIFEST_ERROR_CONTENTS) && container_contents)
|
||||
for(var/i = 1 to rand(1, round(container.contents.len * 0.5))) // Remove anywhere from one to half of the items
|
||||
var/missing_item = pick(container_contents)
|
||||
container_contents[missing_item]--
|
||||
|
||||
@@ -87,6 +87,17 @@
|
||||
var/mob/living/carbon/human/corpse = locate() in .
|
||||
corpse.death()
|
||||
|
||||
/datum/supply_pack/imports/dumpsterloot
|
||||
name = "A....Dumpster"
|
||||
desc = "I'm not sure why you bothered to buy this...and why does it cost so much?"
|
||||
cost = CARGO_CRATE_VALUE * 5
|
||||
contains = list(
|
||||
/obj/effect/spawner/random/maintenance/three,
|
||||
/obj/effect/spawner/random/trash/garbage = 5,
|
||||
)
|
||||
crate_name = "putrid dumpster"
|
||||
crate_type = /obj/structure/closet/crate/trashcart
|
||||
|
||||
/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!#@*$"
|
||||
@@ -128,34 +139,12 @@
|
||||
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
|
||||
cost = CARGO_CRATE_VALUE * 20
|
||||
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,
|
||||
/obj/effect/spawner/random/contraband = 5,
|
||||
)
|
||||
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 \
|
||||
@@ -185,7 +174,7 @@
|
||||
/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!#@*$"
|
||||
CONTAINS AN ARMOR VEST AND HELMET, A BOX OF FIVE EMP GRENADES, THREE SMOKEBOMBS, TWO GLUON GRENADES AND TWO FRAG GRENADES!#@*$"
|
||||
hidden = TRUE
|
||||
cost = CARGO_CRATE_VALUE * 10
|
||||
contains = list(
|
||||
@@ -193,19 +182,23 @@
|
||||
/obj/item/grenade/smokebomb = 3,
|
||||
/obj/item/grenade/gluon = 2,
|
||||
/obj/item/grenade/frag = 2,
|
||||
/obj/item/clothing/suit/armor/vest,
|
||||
/obj/item/clothing/head/helmet,
|
||||
)
|
||||
|
||||
/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!!#@*$"
|
||||
CONTAINS A CHAMELEON MASK, BELT AND JUMPSUIT, MIRAGE GRENADES 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/storage/belt/chameleon,
|
||||
/obj/item/card/id/advanced/chameleon,
|
||||
/obj/item/knife/combat/survival,
|
||||
/obj/item/switchblade,
|
||||
/obj/item/grenade/mirage = 5,
|
||||
)
|
||||
|
||||
/datum/supply_pack/imports/russian
|
||||
@@ -231,8 +224,7 @@
|
||||
/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,
|
||||
/obj/item/storage/toolbox/mosincase = 2,
|
||||
)
|
||||
|
||||
/datum/supply_pack/imports/russian/fill(obj/structure/closet/crate/our_crate)
|
||||
@@ -266,3 +258,36 @@
|
||||
)//so you can properly #cargoniabikergang
|
||||
crate_name = "biker kit"
|
||||
crate_type = /obj/structure/closet/crate/large
|
||||
|
||||
/datum/supply_pack/imports/abandoned
|
||||
name = "Abandoned Crate"
|
||||
desc = "...wait, how did this get here?"
|
||||
cost = CARGO_CRATE_VALUE * 50
|
||||
contains = list()
|
||||
crate_type = /obj/structure/closet/crate/secure/loot
|
||||
crate_name = "abandoned crate"
|
||||
contraband = TRUE
|
||||
dangerous = TRUE //these are literally bombs so....
|
||||
|
||||
/datum/supply_pack/imports/shambler_evil
|
||||
name = "Shamber's Juice Eldritch Energy! Crate"
|
||||
desc = "~J'I'CE!~"
|
||||
cost = CARGO_CRATE_VALUE * 50
|
||||
contains = list(/obj/item/reagent_containers/cup/soda_cans/shamblers/eldritch = 1)
|
||||
crate_name = "illegal shambler's juice crate"
|
||||
contraband = TRUE
|
||||
|
||||
/datum/supply_pack/imports/hide
|
||||
name = "Animal Hide Crate"
|
||||
desc = "Want to not bother slaughtering a bunch of innocent creatures? Here, have some animal pelts! \
|
||||
Just don't ask where they came from..."
|
||||
cost = CARGO_CRATE_VALUE * 30
|
||||
contains = list(/obj/effect/spawner/random/animalhide = 5)
|
||||
crate_name = "animal hide crate"
|
||||
|
||||
/datum/supply_pack/imports/dreadnog
|
||||
name = "Dreadnog Carton Crate"
|
||||
desc = "I have eggnog and I must soda."
|
||||
cost = CARGO_CRATE_VALUE * 5
|
||||
contains = list(/obj/item/reagent_containers/cup/glass/bottle/juice/dreadnog = 3)
|
||||
crate_name = "dreadnog crate"
|
||||
|
||||
@@ -1455,6 +1455,16 @@
|
||||
taste_description = "custard and alcohol"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/dreadnog
|
||||
name = "Dreadnog"
|
||||
description = "For suffering during a period of joy."
|
||||
color = "#abb862" // rgb: 252, 253, 198
|
||||
nutriment_factor = 3 * REAGENTS_METABOLISM
|
||||
boozepwr = 1
|
||||
quality = DRINK_REVOLTING
|
||||
taste_description = "custard and alcohol"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/narsour
|
||||
name = "Nar'Sour"
|
||||
description = "Side effects include self-mutilation and hoarding plasteel."
|
||||
|
||||
@@ -444,6 +444,12 @@
|
||||
icon_state = "nog2"
|
||||
drink_type = FRUIT
|
||||
|
||||
/datum/glass_style/has_foodtype/drinking_glass/dreadnog
|
||||
required_drink_type = /datum/reagent/consumable/ethanol/dreadnog
|
||||
name = "eggnog"
|
||||
desc = "For suffering during the best time of the year."
|
||||
drink_type = FRUIT | GROSS
|
||||
|
||||
/datum/glass_style/drinking_glass/narsour
|
||||
required_drink_type = /datum/reagent/consumable/ethanol/narsour
|
||||
name = "Nar'Sour"
|
||||
|
||||
@@ -33,6 +33,8 @@
|
||||
if(!(methods & INGEST) || !quality || HAS_TRAIT(exposed_mob, TRAIT_AGEUSIA))
|
||||
return
|
||||
switch(quality)
|
||||
if (DRINK_REVOLTING)
|
||||
exposed_mob.add_mood_event("quality_drink", /datum/mood_event/quality_revolting)
|
||||
if (DRINK_NICE)
|
||||
exposed_mob.add_mood_event("quality_drink", /datum/mood_event/quality_nice)
|
||||
if (DRINK_GOOD)
|
||||
|
||||
@@ -892,6 +892,22 @@
|
||||
list_reagents = list(/datum/reagent/consumable/cream = 100)
|
||||
drink_type = DAIRY
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/bottle/juice/eggnog
|
||||
name = "eggnog"
|
||||
desc = "For enjoying the most wonderful time of the year."
|
||||
icon = 'icons/obj/drinks/boxes.dmi'
|
||||
icon_state = "nog2"
|
||||
list_reagents = list(/datum/reagent/consumable/ethanol/eggnog = 100)
|
||||
drink_type = FRUIT
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/bottle/juice/dreadnog
|
||||
name = "eggnog"
|
||||
desc = "For when you want some nondescript soda inside of your eggnog!"
|
||||
icon = 'icons/obj/drinks/boxes.dmi'
|
||||
icon_state = "dreadnog"
|
||||
list_reagents = list(/datum/reagent/consumable/ethanol/dreadnog = 100)
|
||||
drink_type = FRUIT | GROSS
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/bottle/juice/tomatojuice
|
||||
name = "tomato juice"
|
||||
desc = "Well, at least it LOOKS like tomato juice. You can't tell with all that redness."
|
||||
|
||||
@@ -252,6 +252,14 @@
|
||||
list_reagents = list(/datum/reagent/consumable/shamblers = 30)
|
||||
drink_type = SUGAR | JUNKFOOD
|
||||
|
||||
/obj/item/reagent_containers/cup/soda_cans/shamblers/eldritch
|
||||
name = "Shambler's juice Eldritch Energy!"
|
||||
desc = "~J'I'CE!~"
|
||||
icon_state = "shamblerseldritch"
|
||||
volume = 40
|
||||
list_reagents = list(/datum/reagent/consumable/shamblers = 30, /datum/reagent/eldritch = 5)
|
||||
drink_type = SUGAR | JUNKFOOD
|
||||
|
||||
/obj/item/reagent_containers/cup/soda_cans/grey_bull
|
||||
name = "Grey Bull"
|
||||
desc = "Grey Bull, it gives you gloves!"
|
||||
|
||||
|
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 998 B After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1004 B After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 8.3 KiB After Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.7 KiB |
@@ -1831,6 +1831,7 @@
|
||||
#include "code\game\objects\effects\spawners\structure.dm"
|
||||
#include "code\game\objects\effects\spawners\xeno_egg_delivery.dm"
|
||||
#include "code\game\objects\effects\spawners\random\ai_module.dm"
|
||||
#include "code\game\objects\effects\spawners\random\animalhide.dm"
|
||||
#include "code\game\objects\effects\spawners\random\armory.dm"
|
||||
#include "code\game\objects\effects\spawners\random\bureaucracy.dm"
|
||||
#include "code\game\objects\effects\spawners\random\clothing.dm"
|
||||
@@ -1843,6 +1844,7 @@
|
||||
#include "code\game\objects\effects\spawners\random\maintenance.dm"
|
||||
#include "code\game\objects\effects\spawners\random\medical.dm"
|
||||
#include "code\game\objects\effects\spawners\random\mod.dm"
|
||||
#include "code\game\objects\effects\spawners\random\mosin_nagant_spawner.dm"
|
||||
#include "code\game\objects\effects\spawners\random\random.dm"
|
||||
#include "code\game\objects\effects\spawners\random\structure.dm"
|
||||
#include "code\game\objects\effects\spawners\random\techstorage.dm"
|
||||
|
||||