mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-02-07 14:59:13 +00:00
About The Pull Request NT is finally cracking down on underage drinking and smoking on its stations, and you must now be at least 20 years old in order to purchase alcohol or tobacco at vendors. Underage ID's will be visible as such when shown or inspected. Bartenders below the age have discreetly had their IDs modified to be the minimum age, though if anyone cross references the station datacore records, they'll be exposed! dreamseeker_2020-03-31_05-04-22.png You can adjust the registered age for an ID at the HoP's console, the same way you would adjust the registered name. You can also pulse the age restriction wire on vending machines to disable the age checking system if you want to hack the system. I chose 20 as the legal limit because I don't care to listen to people fighting about 21 vs 18 and America vs the world, and it still will affect a decent amount of people I figure. 2020-03-15_21-40-54.png Why It's Good For The Game Makes age a teeny bit relevant, you can now more easily identify and bully 17 year old Heads of Staff. Changelog 🆑 Ryll/Shaps add: Due to pressure from various organizations, Nanotrasen is implementing a new ban on the purchase of alcohol and tobacco products for crewmembers under the age of 20 onboard its Spinward space stations. Please remember that providing alcohol or tobacco products to underage crewmembers is against Space Law, and remember to check those cards bartenders! add: Standard Nanotrasen IDs now display the registered age of the holder, which you can change at the HoP's access console. /🆑
395 lines
13 KiB
Plaintext
395 lines
13 KiB
Plaintext
/*
|
|
* The 'fancy' path is for objects like donut boxes that show how many items are in the storage item on the sprite itself
|
|
* .. Sorry for the shitty path name, I couldnt think of a better one.
|
|
*
|
|
* WARNING: var/icon_type is used for both examine text and sprite name. Please look at the procs below and adjust your sprite names accordingly
|
|
* TODO: Cigarette boxes should be ported to this standard
|
|
*
|
|
* Contains:
|
|
* Donut Box
|
|
* Egg Box
|
|
* Candle Box
|
|
* Cigarette Box
|
|
* Cigar Case
|
|
* Heart Shaped Box w/ Chocolates
|
|
*/
|
|
|
|
/obj/item/storage/fancy
|
|
icon = 'icons/obj/food/containers.dmi'
|
|
icon_state = "donutbox6"
|
|
name = "donut box"
|
|
desc = "Mmm. Donuts."
|
|
resistance_flags = FLAMMABLE
|
|
var/icon_type = "donut"
|
|
var/spawn_type = null
|
|
var/fancy_open = FALSE
|
|
|
|
/obj/item/storage/fancy/PopulateContents()
|
|
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
|
for(var/i = 1 to STR.max_items)
|
|
new spawn_type(src)
|
|
|
|
/obj/item/storage/fancy/update_icon_state()
|
|
if(fancy_open)
|
|
icon_state = "[icon_type]box[contents.len]"
|
|
else
|
|
icon_state = "[icon_type]box"
|
|
|
|
/obj/item/storage/fancy/examine(mob/user)
|
|
. = ..()
|
|
if(fancy_open)
|
|
if(length(contents) == 1)
|
|
. += "There is one [icon_type] left."
|
|
else
|
|
. += "There are [contents.len <= 0 ? "no" : "[contents.len]"] [icon_type]s left."
|
|
|
|
/obj/item/storage/fancy/attack_self(mob/user)
|
|
fancy_open = !fancy_open
|
|
update_icon()
|
|
. = ..()
|
|
|
|
/obj/item/storage/fancy/Exited()
|
|
. = ..()
|
|
fancy_open = TRUE
|
|
update_icon()
|
|
|
|
/obj/item/storage/fancy/Entered()
|
|
. = ..()
|
|
fancy_open = TRUE
|
|
update_icon()
|
|
|
|
/*
|
|
* Donut Box
|
|
*/
|
|
|
|
/obj/item/storage/fancy/donut_box
|
|
icon = 'icons/obj/food/containers.dmi'
|
|
icon_state = "donutbox6"
|
|
icon_type = "donut"
|
|
name = "donut box"
|
|
spawn_type = /obj/item/reagent_containers/food/snacks/donut
|
|
fancy_open = TRUE
|
|
|
|
/obj/item/storage/fancy/donut_box/ComponentInitialize()
|
|
. = ..()
|
|
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
|
STR.max_items = 6
|
|
STR.set_holdable(list(/obj/item/reagent_containers/food/snacks/donut))
|
|
|
|
/*
|
|
* Egg Box
|
|
*/
|
|
|
|
/obj/item/storage/fancy/egg_box
|
|
icon = 'icons/obj/food/containers.dmi'
|
|
item_state = "eggbox"
|
|
icon_state = "eggbox"
|
|
icon_type = "egg"
|
|
lefthand_file = 'icons/mob/inhands/misc/food_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi'
|
|
name = "egg box"
|
|
desc = "A carton for containing eggs."
|
|
spawn_type = /obj/item/reagent_containers/food/snacks/egg
|
|
|
|
/obj/item/storage/fancy/egg_box/ComponentInitialize()
|
|
. = ..()
|
|
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
|
STR.max_items = 12
|
|
STR.set_holdable(list(/obj/item/reagent_containers/food/snacks/egg))
|
|
|
|
/*
|
|
* Candle Box
|
|
*/
|
|
|
|
/obj/item/storage/fancy/candle_box
|
|
name = "candle pack"
|
|
desc = "A pack of red candles."
|
|
icon = 'icons/obj/candle.dmi'
|
|
icon_state = "candlebox5"
|
|
icon_type = "candle"
|
|
item_state = "candlebox5"
|
|
throwforce = 2
|
|
slot_flags = ITEM_SLOT_BELT
|
|
spawn_type = /obj/item/candle
|
|
fancy_open = TRUE
|
|
|
|
/obj/item/storage/fancy/candle_box/ComponentInitialize()
|
|
. = ..()
|
|
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
|
STR.max_items = 5
|
|
|
|
/obj/item/storage/fancy/candle_box/attack_self(mob_user)
|
|
return
|
|
|
|
////////////
|
|
//CIG PACK//
|
|
////////////
|
|
/obj/item/storage/fancy/cigarettes
|
|
name = "\improper Space Cigarettes packet"
|
|
desc = "The most popular brand of cigarettes, sponsors of the Space Olympics."
|
|
icon = 'icons/obj/cigarettes.dmi'
|
|
icon_state = "cig"
|
|
item_state = "cigpacket"
|
|
w_class = WEIGHT_CLASS_TINY
|
|
throwforce = 0
|
|
slot_flags = ITEM_SLOT_BELT
|
|
icon_type = "cigarette"
|
|
spawn_type = /obj/item/clothing/mask/cigarette/space_cigarette
|
|
var/candy = FALSE //for cigarette overlay
|
|
custom_price = 75
|
|
age_restricted = TRUE
|
|
|
|
/obj/item/storage/fancy/cigarettes/ComponentInitialize()
|
|
. = ..()
|
|
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
|
STR.max_items = 6
|
|
STR.set_holdable(list(/obj/item/clothing/mask/cigarette, /obj/item/lighter))
|
|
|
|
/obj/item/storage/fancy/cigarettes/examine(mob/user)
|
|
. = ..()
|
|
. += "<span class='notice'>Alt-click to extract contents.</span>"
|
|
|
|
/obj/item/storage/fancy/cigarettes/AltClick(mob/living/carbon/user)
|
|
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
|
|
return
|
|
var/obj/item/clothing/mask/cigarette/W = locate(/obj/item/clothing/mask/cigarette) in contents
|
|
if(W && contents.len > 0)
|
|
SEND_SIGNAL(src, COMSIG_TRY_STORAGE_TAKE, W, user)
|
|
user.put_in_hands(W)
|
|
contents -= W
|
|
to_chat(user, "<span class='notice'>You take \a [W] out of the pack.</span>")
|
|
else
|
|
to_chat(user, "<span class='notice'>There are no [icon_type]s left in the pack.</span>")
|
|
|
|
/obj/item/storage/fancy/cigarettes/update_icon_state()
|
|
if(fancy_open || !contents.len)
|
|
if(!contents.len)
|
|
icon_state = "[initial(icon_state)]_empty"
|
|
else
|
|
icon_state = initial(icon_state)
|
|
|
|
/obj/item/storage/fancy/cigarettes/update_overlays()
|
|
. = ..()
|
|
if(fancy_open && contents.len)
|
|
. += "[icon_state]_open"
|
|
var/cig_position = 1
|
|
for(var/C in contents)
|
|
var/mutable_appearance/inserted_overlay = mutable_appearance(icon)
|
|
|
|
if(istype(C, /obj/item/lighter/greyscale))
|
|
inserted_overlay.icon_state = "lighter_in"
|
|
else if(istype(C, /obj/item/lighter))
|
|
inserted_overlay.icon_state = "zippo_in"
|
|
else if(candy)
|
|
inserted_overlay.icon_state = "candy"
|
|
else
|
|
inserted_overlay.icon_state = "cigarette"
|
|
|
|
inserted_overlay.icon_state = "[inserted_overlay.icon_state]_[cig_position]"
|
|
. += inserted_overlay
|
|
cig_position++
|
|
|
|
/obj/item/storage/fancy/cigarettes/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
|
if(!ismob(M))
|
|
return
|
|
var/obj/item/clothing/mask/cigarette/cig = locate(/obj/item/clothing/mask/cigarette) in contents
|
|
if(cig)
|
|
if(M == user && contents.len > 0 && !user.wear_mask)
|
|
var/obj/item/clothing/mask/cigarette/W = cig
|
|
SEND_SIGNAL(src, COMSIG_TRY_STORAGE_TAKE, W, M)
|
|
M.equip_to_slot_if_possible(W, ITEM_SLOT_MASK)
|
|
contents -= W
|
|
to_chat(user, "<span class='notice'>You take \a [W] out of the pack.</span>")
|
|
else
|
|
..()
|
|
else
|
|
to_chat(user, "<span class='notice'>There are no [icon_type]s left in the pack.</span>")
|
|
|
|
/obj/item/storage/fancy/cigarettes/dromedaryco
|
|
name = "\improper DromedaryCo packet"
|
|
desc = "A packet of six imported DromedaryCo cancer sticks. A label on the packaging reads, \"Wouldn't a slow death make a change?\""
|
|
icon_state = "dromedary"
|
|
spawn_type = /obj/item/clothing/mask/cigarette/dromedary
|
|
|
|
/obj/item/storage/fancy/cigarettes/cigpack_uplift
|
|
name = "\improper Uplift Smooth packet"
|
|
desc = "Your favorite brand, now menthol flavored."
|
|
icon_state = "uplift"
|
|
spawn_type = /obj/item/clothing/mask/cigarette/uplift
|
|
|
|
/obj/item/storage/fancy/cigarettes/cigpack_robust
|
|
name = "\improper Robust packet"
|
|
desc = "Smoked by the robust."
|
|
icon_state = "robust"
|
|
spawn_type = /obj/item/clothing/mask/cigarette/robust
|
|
|
|
/obj/item/storage/fancy/cigarettes/cigpack_robustgold
|
|
name = "\improper Robust Gold packet"
|
|
desc = "Smoked by the truly robust."
|
|
icon_state = "robustg"
|
|
spawn_type = /obj/item/clothing/mask/cigarette/robustgold
|
|
|
|
/obj/item/storage/fancy/cigarettes/cigpack_carp
|
|
name = "\improper Carp Classic packet"
|
|
desc = "Since 2313."
|
|
icon_state = "carp"
|
|
spawn_type = /obj/item/clothing/mask/cigarette/carp
|
|
|
|
/obj/item/storage/fancy/cigarettes/cigpack_syndicate
|
|
name = "cigarette packet"
|
|
desc = "An obscure brand of cigarettes."
|
|
icon_state = "syndie"
|
|
spawn_type = /obj/item/clothing/mask/cigarette/syndicate
|
|
|
|
/obj/item/storage/fancy/cigarettes/cigpack_midori
|
|
name = "\improper Midori Tabako packet"
|
|
desc = "You can't understand the runes, but the packet smells funny."
|
|
icon_state = "midori"
|
|
spawn_type = /obj/item/clothing/mask/cigarette/rollie/nicotine
|
|
|
|
/obj/item/storage/fancy/cigarettes/cigpack_candy
|
|
name = "\improper Timmy's First Candy Smokes packet"
|
|
desc = "Unsure about smoking? Want to bring your children safely into the family tradition? Look no more with this special packet! Includes 100%* Nicotine-Free candy cigarettes."
|
|
icon_state = "candy"
|
|
icon_type = "candy cigarette"
|
|
spawn_type = /obj/item/clothing/mask/cigarette/candy
|
|
candy = TRUE
|
|
age_restricted = FALSE
|
|
|
|
/obj/item/storage/fancy/cigarettes/cigpack_candy/Initialize()
|
|
. = ..()
|
|
if(prob(7))
|
|
spawn_type = /obj/item/clothing/mask/cigarette/candy/nicotine //uh oh!
|
|
|
|
/obj/item/storage/fancy/cigarettes/cigpack_shadyjims
|
|
name = "\improper Shady Jim's Super Slims packet"
|
|
desc = "Is your weight slowing you down? Having trouble running away from gravitational singularities? Can't stop stuffing your mouth? Smoke Shady Jim's Super Slims and watch all that fat burn away. Guaranteed results!"
|
|
icon_state = "shadyjim"
|
|
spawn_type = /obj/item/clothing/mask/cigarette/shadyjims
|
|
|
|
/obj/item/storage/fancy/cigarettes/cigpack_xeno
|
|
name = "\improper Xeno Filtered packet"
|
|
desc = "Loaded with 100% pure slime. And also nicotine."
|
|
icon_state = "slime"
|
|
spawn_type = /obj/item/clothing/mask/cigarette/xeno
|
|
|
|
/obj/item/storage/fancy/cigarettes/cigpack_cannabis
|
|
name = "\improper Freak Brothers' Special packet"
|
|
desc = "A label on the packaging reads, \"Endorsed by Phineas, Freddy and Franklin.\""
|
|
icon_state = "midori"
|
|
spawn_type = /obj/item/clothing/mask/cigarette/rollie/cannabis
|
|
|
|
/obj/item/storage/fancy/cigarettes/cigpack_mindbreaker
|
|
name = "\improper Leary's Delight packet"
|
|
desc = "Banned in over 36 galaxies."
|
|
icon_state = "shadyjim"
|
|
spawn_type = /obj/item/clothing/mask/cigarette/rollie/mindbreaker
|
|
|
|
/obj/item/storage/fancy/rollingpapers
|
|
name = "rolling paper pack"
|
|
desc = "A pack of Nanotrasen brand rolling papers."
|
|
w_class = WEIGHT_CLASS_TINY
|
|
icon = 'icons/obj/cigarettes.dmi'
|
|
icon_state = "cig_paper_pack"
|
|
///The value in here has NOTHING to do with icons. It needs to be this for the proper examine.
|
|
icon_type = "rolling paper"
|
|
spawn_type = /obj/item/rollingpaper
|
|
custom_price = 25
|
|
|
|
/obj/item/storage/fancy/rollingpapers/ComponentInitialize()
|
|
. = ..()
|
|
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
|
STR.max_items = 10
|
|
STR.set_holdable(list(/obj/item/rollingpaper))
|
|
|
|
///Overrides to do nothing because fancy boxes are fucking insane.
|
|
/obj/item/storage/fancy/rollingpapers/update_icon_state()
|
|
return
|
|
|
|
/obj/item/storage/fancy/rollingpapers/update_overlays()
|
|
. = ..()
|
|
if(!contents.len)
|
|
. += "[icon_state]_empty"
|
|
|
|
/////////////
|
|
//CIGAR BOX//
|
|
/////////////
|
|
|
|
/obj/item/storage/fancy/cigarettes/cigars
|
|
name = "\improper premium cigar case"
|
|
desc = "A case of premium cigars. Very expensive."
|
|
icon = 'icons/obj/cigarettes.dmi'
|
|
icon_state = "cigarcase"
|
|
w_class = WEIGHT_CLASS_NORMAL
|
|
icon_type = "premium cigar"
|
|
spawn_type = /obj/item/clothing/mask/cigarette/cigar
|
|
|
|
/obj/item/storage/fancy/cigarettes/cigars/ComponentInitialize()
|
|
. = ..()
|
|
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
|
STR.max_items = 5
|
|
STR.set_holdable(list(/obj/item/clothing/mask/cigarette/cigar))
|
|
|
|
/obj/item/storage/fancy/cigarettes/cigars/update_icon_state()
|
|
if(fancy_open)
|
|
icon_state = "[initial(icon_state)]_open"
|
|
else
|
|
icon_state = "[initial(icon_state)]"
|
|
|
|
/obj/item/storage/fancy/cigarettes/cigars/update_overlays()
|
|
. = ..()
|
|
if(fancy_open)
|
|
var/cigar_position = 1 //generate sprites for cigars in the box
|
|
for(var/obj/item/clothing/mask/cigarette/cigar/smokes in contents)
|
|
var/mutable_appearance/cigar_overlay = mutable_appearance(icon, "[smokes.icon_off]_[cigar_position]")
|
|
. += cigar_overlay
|
|
cigar_position++
|
|
|
|
/obj/item/storage/fancy/cigarettes/cigars/cohiba
|
|
name = "\improper Cohiba Robusto cigar case"
|
|
desc = "A case of imported Cohiba cigars, renowned for their strong flavor."
|
|
icon_state = "cohibacase"
|
|
spawn_type = /obj/item/clothing/mask/cigarette/cigar/cohiba
|
|
|
|
/obj/item/storage/fancy/cigarettes/cigars/havana
|
|
name = "\improper premium Havanian cigar case"
|
|
desc = "A case of classy Havanian cigars."
|
|
icon_state = "cohibacase"
|
|
spawn_type = /obj/item/clothing/mask/cigarette/cigar/havana
|
|
|
|
/*
|
|
* Heart Shaped Box w/ Chocolates
|
|
*/
|
|
|
|
/obj/item/storage/fancy/heart_box
|
|
name = "heart-shaped box"
|
|
desc = "A heart-shaped box for holding tiny chocolates."
|
|
icon = 'icons/obj/food/containers.dmi'
|
|
item_state = "chocolatebox"
|
|
icon_state = "chocolatebox"
|
|
icon_type = "chocolate"
|
|
lefthand_file = 'icons/mob/inhands/misc/food_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi'
|
|
spawn_type = /obj/item/reagent_containers/food/snacks/tinychocolate
|
|
|
|
/obj/item/storage/fancy/heart_box/ComponentInitialize()
|
|
. = ..()
|
|
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
|
STR.max_items = 8
|
|
STR.set_holdable(list(/obj/item/reagent_containers/food/snacks/tinychocolate))
|
|
|
|
|
|
/obj/item/storage/fancy/nugget_box
|
|
name = "nugget box"
|
|
desc = "A cardboard box used for holding chicken nuggies."
|
|
icon = 'icons/obj/food/containers.dmi'
|
|
icon_state = "nuggetbox"
|
|
icon_type = "nugget"
|
|
spawn_type = /obj/item/reagent_containers/food/snacks/nugget
|
|
|
|
/obj/item/storage/fancy/nugget_box/ComponentInitialize()
|
|
. = ..()
|
|
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
|
STR.max_items = 6
|
|
STR.set_holdable(list(/obj/item/reagent_containers/food/snacks/nugget))
|