Files
Aurora.3/code/game/objects/items/contraband.dm
T
Batrachophreno 98d00638ce Horizon maint access rights and contents variety (#22262)
Two major changes to Horizon maints:
1. Updated maint door access to actually be consistent across the ship.
That is to say, you should have access to the maints behind your own
department, you should be able to make meaningful use out of them (no
random useless dead ends), but you shouldn't automatically get free
access to the entirety of the ship maints due to lack of hatch access
control. This was a non-issue until the Horizon expansion that greatly
increased maint interconnectivity. Now, everyone has consistent maint
access, and free access remains for Code Blue (or manually Command
disabling access controls).

2. Maint loot should be more interesting. Static contraband spawns were
reduced but a large number of new spawners were added that should make
loot, contraband, tools, trash, etc., spawn in more varied places. This
should make maint travel involve more Happy Surprises rather than
strictly being a rote process of 'lets see what spawned in XYZ room this
time).

Miscellaneous other bugfixes and spawn tweaks based on my observation;
on repeatedly re-loading the Horizon, the numbers chosen seemed to
repeatedly give me the most satisfying results. See file changes.
2026-04-21 14:19:40 +00:00

193 lines
7.1 KiB
Plaintext

//Let's get some REAL contraband stuff in here. Because come on, getting brigged for LIPSTICK is no fun.
//Illicit drugs~
/obj/item/storage/pill_bottle/happy
name = "bottle of Happy pills"
desc = "Highly illegal drug. When you want to see the rainbow."
starts_with = list(/obj/item/reagent_containers/pill/happy = 7)
/obj/item/storage/pill_bottle/zoom
name = "bottle of Zoom pills"
desc = "Highly illegal drug. Trade brain for speed."
starts_with = list(/obj/item/reagent_containers/pill/zoom = 7)
/obj/item/storage/pill_bottle/joy
name = "bottle of Joy pills"
desc = "Highly illegal drug. Bang - and your stress is gone."
starts_with = list(/obj/item/reagent_containers/pill/joy = 3)
/obj/item/storage/pill_bottle/heroin
name = "bottle of heroin pills"
desc = "Highly illegal drug. For quick pain removal."
starts_with = list(/obj/item/reagent_containers/pill/heroin = 3)
/obj/item/storage/pill_bottle/cocaine
name = "bottle of cocaine tablets"
desc = "Supposedly a highly illegal drug... yet the labeling on the bottle is suspiciously perfect..."
starts_with = list(/obj/item/reagent_containers/pill/cocaine = 5)
/obj/item/storage/pill_bottle/contemplus
name = "bottle of Contemplus tablets"
desc = "A Yomi Genetics bottle clearly marked as 'for animal testing only.' You doubt this is followed often on Venus..."
starts_with = list(/obj/item/reagent_containers/pill/contemplus = 5)
/obj/item/storage/pill_bottle/spotlight
name = "bottle of Spotlight tablets"
desc = "A Zavodskoi bottle with a conspicuous 'defective' stamp on it. You doubt this was actually defective."
starts_with = list(/obj/item/reagent_containers/pill/spotlight = 5)
/obj/item/storage/pill_bottle/sparkle
name = "bottle of Sparkle tablets"
desc = "A Zeng-Hu bottle clearly marked as being for 'medical testing purposes only.' As if..."
starts_with = list(/obj/item/reagent_containers/pill/sparkle = 5)
/obj/item/storage/pill_bottle/smart
name = "bottle of Smart pills"
desc = "Highly illegal drug. For exam season."
starts_with = list(/obj/item/reagent_containers/pill/skrell_nootropic = 7)
/obj/item/reagent_containers/glass/beaker/vial/random
atom_flags = 0
var/list/random_reagent_list = list(list(/singleton/reagent/water = 15) = 1, list(/singleton/reagent/spacecleaner = 15) = 1)
/obj/item/reagent_containers/glass/beaker/vial/random/toxin
random_reagent_list = list(
list(
/singleton/reagent/drugs/mindbreaker = 10,
/singleton/reagent/drugs/mms = 20
) = 3,
list(/singleton/reagent/mercury = 15) = 3,
list(/singleton/reagent/toxin/carpotoxin = 15) = 2,
list(/singleton/reagent/drugs/impedrezene = 15) = 2,
list(/singleton/reagent/toxin/dextrotoxin = 10) = 1,
list(/singleton/reagent/toxin/spectrocybin = 15) = 1,
list(
/singleton/reagent/drugs/joy = 10,
/singleton/reagent/water = 20
) = 1,
list(/singleton/reagent/toxin/berserk = 10) = 1,
list(/singleton/reagent/ammonia = 15) = 3)
/obj/item/reagent_containers/glass/beaker/vial/random/Initialize()
. = ..()
if(is_open_container())
atom_flags ^= ATOM_FLAG_OPEN_CONTAINER
var/list/picked_reagents = pickweight(random_reagent_list)
for(var/reagent in picked_reagents)
reagents.add_reagent(reagent, picked_reagents[reagent])
var/list/names = new
for(var/_R in reagents.reagent_volumes)
var/singleton/reagent/R = GET_SINGLETON(_R)
names += R.name
desc = "Contains [english_list(names)]."
update_icon()
/obj/item/reagent_containers/glass/beaker/vial/venenum
atom_flags = 0
/obj/item/reagent_containers/glass/beaker/vial/venenum/Initialize()
. = ..()
if(is_open_container())
atom_flags ^= ATOM_FLAG_OPEN_CONTAINER
reagents.add_reagent(/singleton/reagent/venenum,volume)
desc = "Contains venenum."
update_icon()
/obj/item/reagent_containers/glass/beaker/vial/nerveworm_eggs
atom_flags = 0
/obj/item/reagent_containers/glass/beaker/vial/nerveworm_eggs/Initialize()
. = ..()
if(is_open_container())
atom_flags ^= ATOM_FLAG_OPEN_CONTAINER
reagents.add_reagent(/singleton/reagent/toxin/nerveworm_eggs, 5)
desc = "<b>BIOHAZARDOUS! - Nerve Fluke eggs.</b> Purchased from <i>SciSupply Eridani</i>, recently incorporated into <i>Zeng-Hu Pharmaceuticals' Keiretsu</i>!"
update_icon()
/obj/item/reagent_containers/glass/beaker/vial/heartworm_eggs
atom_flags = 0
/obj/item/reagent_containers/glass/beaker/vial/heartworm_eggs/Initialize()
. = ..()
if(is_open_container())
atom_flags ^= ATOM_FLAG_OPEN_CONTAINER
reagents.add_reagent(/singleton/reagent/toxin/heartworm_eggs, 5)
desc = "<b>BIOHAZARDOUS! - Heart Fluke eggs.</b> Purchased from <i>SciSupply Eridani</i>, recently incorporated into <i>Zeng-Hu Pharmaceuticals' Keiretsu</i>!"
update_icon()
/obj/item/reagent_containers/glass/beaker/vial/greimorian_eggs
atom_flags = 0
/obj/item/reagent_containers/glass/beaker/vial/greimorian_eggs/Initialize()
. = ..()
if(is_open_container())
atom_flags ^= ATOM_FLAG_OPEN_CONTAINER
reagents.add_reagent(/singleton/reagent/toxin/greimorian_eggs, 5)
desc = "<b>BIOHAZARDOUS! - Greimorian eggs.</b> Purchased from <i>SciSupply Eridani</i>, recently incorporated into <i>Zeng-Hu Pharmaceuticals' Keiretsu</i>!"
update_icon()
/obj/item/reagent_containers/powder
name = "chemical powder"
desc = "A powdered form of... something."
icon = 'icons/obj/chemical.dmi'
icon_state = "powder"
item_state = "powder"
amount_per_transfer_from_this = 5
possible_transfer_amounts = 5
w_class = WEIGHT_CLASS_TINY
volume = 50
/obj/item/reagent_containers/powder/feedback_hints(mob/user, distance, is_adjacent)
. += ..()
if(reagents)
. += SPAN_NOTICE("There's about <b>[reagents.total_volume] unit\s</b> here.")
/obj/item/reagent_containers/powder/Initialize()
. = ..()
get_appearance()
/obj/item/reagent_containers/powder/proc/get_appearance()
/// Color based on dominant reagent.
color = reagents.get_color()
// Proc to shove them up your nose
/obj/item/reagent_containers/powder/attackby(obj/item/attacking_item, mob/user)
if(istype(attacking_item, /obj/item/paper/cig) || attacking_item.type == /obj/item/spacecash)
var/mob/living/carbon/human/H = user
var/obj/item/blocked = H.check_mouth_coverage()
if(blocked)
to_chat(user, SPAN_WARNING("\The [blocked] is in the way!"))
return TRUE
if(!H.check_has_mouth())
to_chat(user, SPAN_WARNING("You cannot seem to snort \the [src]."))
return TRUE
user.visible_message(
SPAN_WARNING("\The [user] starts to snort some of \the [src] with \a [attacking_item]!"),
SPAN_NOTICE("You start to snort some of \the [src] with \the [attacking_item]!")
)
playsound(loc, 'sound/effects/snort.ogg', 50, 1)
if (!do_after(user, 2 SECONDS))
return TRUE
user.visible_message(
SPAN_WARNING("\The [user] snorts some of \the [src] with \a [attacking_item]!"),
SPAN_NOTICE("You snort \the [src] with \the [attacking_item]!")
)
playsound(loc, 'sound/effects/snort.ogg', 50, 1)
if(reagents)
var/contained = reagentlist()
var/temp = reagents.get_temperature()
var/trans = reagents.trans_to_mob(H, amount_per_transfer_from_this, CHEM_BREATHE, bypass_checks = TRUE)
admin_inject_log(user, H, src, contained, temp, trans)
if(!reagents.total_volume)
qdel(src)
return TRUE
return ..()