mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 13:10:02 +01:00
## About The Pull Request This PR adds a brand new alcoholic drink: Orange Creamsicle. It is made with Orange Juice, Cream, Soda Water, and Vodka. This PR also adds a new fan drink "Tang-O-Rine" to the soda machines as a healthier citrus drink alternative. This adds the new following sprites: Tang-O-Rine Soda, Orange Creamsicle glass, Crushed Blood Tea can, Crushed Tang-O-Rine Soda, The sprite work for the cans are courtesy of BitSynergy. ## Why It's Good For The Game While this drink does have an ice cream variant, We like a bit of extra drinks for the mixologists. ## Proof Of Testing <details> <summary>Screenshots/Videos</summary> <img width="322" height="317" alt="image" src="https://github.com/user-attachments/assets/8931b3d8-9b74-4ff9-b074-60b6f6816b7a" /> <img width="321" height="320" alt="image" src="https://github.com/user-attachments/assets/38bc617a-9c4a-4b7f-99bb-e2abe5dea428" /> <img width="1021" height="510" alt="image" src="https://github.com/user-attachments/assets/cedda20d-8301-4e83-88f9-10c6f04df2b6" /> <img width="551" height="440" alt="image" src="https://github.com/user-attachments/assets/e8b75ab9-bc73-474a-94c5-50ba128a302c" /> https://gyazo.com/54ad41d4f36a6942ae9230717ff8d02b </details> ## Changelog 🆑 Shayoki, BitSynergy add: New bartender recipe: Orange Creamsicle 🍊 add: New soda in the soda vendor: Tang-O-Rine. Drink it today! image: Added a crushed can sprite for Hemoglobin Iced Tea. /🆑
252 lines
12 KiB
Plaintext
252 lines
12 KiB
Plaintext
/obj/item/paper/paperslip/ration_ticket
|
|
name = "ration ticket - standard"
|
|
desc = "A little slip of paper that'll slot right into any cargo console and put your alotted food ration on the next shuttle to the station."
|
|
icon = 'modular_skyrat/modules/paycheck_rations/icons/tickets.dmi'
|
|
icon_state = "ticket_food"
|
|
default_raw_text = "Redeem this ticket in the nearest supply console to receive benefits."
|
|
color = COLOR_OFF_WHITE
|
|
show_written_words = FALSE
|
|
/// The finalized list of items we send once the ticket is used, don't define here, the procs will do it
|
|
var/list/items_we_deliver = list()
|
|
|
|
/obj/item/paper/paperslip/ration_ticket/attack_atom(obj/machinery/computer/cargo/object_we_attack, mob/living/user, params)
|
|
if(!istype(object_we_attack))
|
|
return ..()
|
|
if(!object_we_attack.is_operational || !user.can_perform_action(object_we_attack))
|
|
return ..()
|
|
|
|
try_to_make_ration_order_list(object_we_attack, user)
|
|
|
|
/// Attempts to fill out the order list with items of the user's choosing, will stop in its tracks if it fails
|
|
/obj/item/paper/paperslip/ration_ticket/proc/try_to_make_ration_order_list(obj/machinery/computer/cargo/object_we_attack, mob/living/user)
|
|
forceMove(object_we_attack)
|
|
playsound(object_we_attack, 'sound/machines/terminal/terminal_insert_disc.ogg', 50, FALSE)
|
|
|
|
// List of meat options we get
|
|
var/list/radial_meat_options = list(
|
|
"Standard Meats" = image(icon = 'modular_skyrat/modules/paycheck_rations/icons/food_containers.dmi', icon_state = "meats"),
|
|
"Seafood Meats" = image(icon = 'modular_skyrat/modules/paycheck_rations/icons/food_containers.dmi', icon_state = "meats_fish"),
|
|
"Tiziran Meats" = image(icon = 'modular_skyrat/modules/paycheck_rations/icons/food_containers.dmi', icon_state = "meats_lizard"),
|
|
"Ethereal Meats" = image(icon = 'modular_skyrat/modules/paycheck_rations/icons/food_containers.dmi', icon_state = "meats_ethereal"),
|
|
"Blood Bag" = image(icon = 'icons/obj/medical/bloodpack.dmi', icon_state = "bloodpack"),
|
|
"Glucose Medipens" = image(icon = 'modular_skyrat/modules/food_replicator/icons/medicine.dmi', icon_state = "glupen"),
|
|
)
|
|
|
|
var/meats_choice = show_radial_menu(user, object_we_attack, radial_meat_options, require_near = TRUE)
|
|
|
|
if(!meats_choice)
|
|
object_we_attack.balloon_alert(user, "no selection made")
|
|
forceMove(drop_location(object_we_attack))
|
|
playsound(object_we_attack, 'sound/machines/terminal/terminal_insert_disc.ogg', 50, FALSE)
|
|
return
|
|
|
|
switch(meats_choice)
|
|
if("Standard Meats")
|
|
items_we_deliver += /obj/item/storage/box/spaceman_ration/meats
|
|
if("Seafood Meats")
|
|
items_we_deliver += /obj/item/storage/box/spaceman_ration/meats/fish
|
|
if("Tiziran Meats")
|
|
items_we_deliver += /obj/item/storage/box/spaceman_ration/meats/lizard
|
|
if("Ethereal Meats")
|
|
items_we_deliver += /obj/item/storage/box/spaceman_ration/meats/ethereal
|
|
if("Blood Bag")
|
|
items_we_deliver += /obj/item/reagent_containers/blood/random
|
|
if("Glucose Medipens")
|
|
items_we_deliver += /obj/item/reagent_containers/hypospray/medipen/glucose
|
|
items_we_deliver += /obj/item/reagent_containers/hypospray/medipen/glucose
|
|
|
|
// List of produce options we get
|
|
var/list/radial_produce_options = list(
|
|
"Standard Produce" = image(icon = 'modular_skyrat/modules/paycheck_rations/icons/food_containers.dmi', icon_state = "plants"),
|
|
"Alternative Produce" = image(icon = 'modular_skyrat/modules/paycheck_rations/icons/food_containers.dmi', icon_state = "plants_alt"),
|
|
"Mothic Produce" = image(icon = 'modular_skyrat/modules/paycheck_rations/icons/food_containers.dmi', icon_state = "plants_moth"),
|
|
"Tiziran Produce" = image(icon = 'modular_skyrat/modules/paycheck_rations/icons/food_containers.dmi', icon_state = "plants_lizard"),
|
|
"Ethereal Produce" = image(icon = 'modular_skyrat/modules/paycheck_rations/icons/food_containers.dmi', icon_state = "plants_ethereal"),
|
|
)
|
|
|
|
var/produce_choice = show_radial_menu(user, object_we_attack, radial_produce_options, require_near = TRUE)
|
|
|
|
if(!produce_choice)
|
|
object_we_attack.balloon_alert(user, "no selection made")
|
|
// Reset the list if we fail
|
|
items_we_deliver = list()
|
|
forceMove(drop_location(object_we_attack))
|
|
playsound(object_we_attack, 'sound/machines/terminal/terminal_insert_disc.ogg', 50, FALSE)
|
|
return
|
|
|
|
switch(produce_choice)
|
|
if("Standard Produce")
|
|
items_we_deliver += /obj/item/storage/box/spaceman_ration/plants
|
|
if("Alternative Produce")
|
|
items_we_deliver += /obj/item/storage/box/spaceman_ration/plants/alternate
|
|
if("Mothic Produce")
|
|
items_we_deliver += /obj/item/storage/box/spaceman_ration/plants/mothic
|
|
if("Tiziran Produce")
|
|
items_we_deliver += /obj/item/storage/box/spaceman_ration/plants/lizard
|
|
if("Ethereal Produce")
|
|
items_we_deliver += /obj/item/storage/box/spaceman_ration/plants/ethereal
|
|
|
|
items_we_deliver += /obj/item/storage/box/papersack/ration_bread_slice
|
|
|
|
// List of flour options we get
|
|
var/list/radial_flour_options = list(
|
|
"Standard Flour" = image(icon = 'modular_skyrat/modules/paycheck_rations/icons/food_containers.dmi', icon_state = "flour"),
|
|
"Korta Flour" = image(icon = 'modular_skyrat/modules/paycheck_rations/icons/food_containers.dmi', icon_state = "flour_korta"),
|
|
"Ethereal Stock" = image(icon = 'modular_skyrat/modules/paycheck_rations/icons/food_containers.dmi', icon_state = "stock_ethereal"),
|
|
)
|
|
|
|
var/flour_choice = show_radial_menu(user, object_we_attack, radial_flour_options, require_near = TRUE)
|
|
|
|
if(!flour_choice)
|
|
object_we_attack.balloon_alert(user, "no selection made")
|
|
// Reset the list if we fail
|
|
items_we_deliver = list()
|
|
forceMove(drop_location(object_we_attack))
|
|
playsound(object_we_attack, 'sound/machines/terminal/terminal_insert_disc.ogg', 50, FALSE)
|
|
return
|
|
|
|
switch(flour_choice)
|
|
if("Standard Flour")
|
|
items_we_deliver += /obj/item/reagent_containers/condiment/flour/small_ration
|
|
if("Korta Flour")
|
|
items_we_deliver += /obj/item/reagent_containers/condiment/small_ration_korta_flour
|
|
items_we_deliver += /obj/item/reagent_containers/condiment/soymilk/small_ration
|
|
if("Ethereal Stock")
|
|
items_we_deliver += /obj/item/reagent_containers/cup/soda_cans/volt_energy
|
|
items_we_deliver += /obj/item/reagent_containers/condiment/dashi_concentrate/small_ration
|
|
|
|
items_we_deliver += /obj/item/reagent_containers/condiment/rice/small_ration
|
|
items_we_deliver += /obj/item/reagent_containers/condiment/sugar/small_ration
|
|
items_we_deliver += /obj/item/reagent_containers/cup/glass/bottle/small/tiny/lime_juice
|
|
items_we_deliver += /obj/item/reagent_containers/cup/glass/bottle/small/tiny/vinegar
|
|
|
|
items_we_deliver += /obj/item/reagent_containers/cup/glass/waterbottle
|
|
|
|
var/random_drink = pick( \
|
|
/obj/item/reagent_containers/cup/glass/waterbottle/tea, \
|
|
/obj/item/reagent_containers/cup/glass/waterbottle/tea/mushroom, \
|
|
/obj/item/reagent_containers/cup/glass/waterbottle/tea/astra, \
|
|
/obj/item/reagent_containers/cup/glass/coffee, \
|
|
)
|
|
items_we_deliver += random_drink
|
|
|
|
make_the_actual_order(object_we_attack, user)
|
|
|
|
/// Takes the list of things to deliver and puts it into a cargo order
|
|
/obj/item/paper/paperslip/ration_ticket/proc/make_the_actual_order(obj/machinery/computer/cargo/object_we_attack, mob/user)
|
|
var/datum/supply_pack/custom/ration_pack/ration_pack = new(
|
|
purchaser = user, \
|
|
cost = 0, \
|
|
contains = items_we_deliver,
|
|
)
|
|
var/datum/supply_order/new_order = new(
|
|
pack = ration_pack,
|
|
orderer = user,
|
|
orderer_rank = "Ration Ticket",
|
|
orderer_ckey = user.ckey,
|
|
reason = "",
|
|
paying_account = null,
|
|
department_destination = null,
|
|
coupon = null,
|
|
charge_on_purchase = FALSE,
|
|
manifest_can_fail = FALSE,
|
|
can_be_cancelled = FALSE,
|
|
)
|
|
object_we_attack.say("Ration order placed! It will arrive on the next cargo shuttle!")
|
|
SSshuttle.shopping_list += new_order
|
|
qdel(src)
|
|
|
|
/datum/supply_pack/custom/ration_pack
|
|
name = "rations order"
|
|
crate_name = "ration delivery crate"
|
|
access = list()
|
|
crate_type = /obj/structure/closet/crate/cardboard
|
|
|
|
/datum/supply_pack/custom/ration_pack/New(purchaser, cost, list/contains)
|
|
. = ..()
|
|
name = "[purchaser]'s Rations Order"
|
|
crate_name = "[purchaser]'s ration delivery crate"
|
|
src.cost = cost
|
|
src.contains = contains
|
|
|
|
// Ticket for some luxury items, which you get every second paycheck
|
|
|
|
/obj/item/paper/paperslip/ration_ticket/luxury
|
|
name = "ration ticket - luxury"
|
|
desc = "A little slip of paper that'll slot right into any cargo console and put your alotted ration of luxury goods on the next cargo shuttle to the station."
|
|
icon_state = "ticket_luxury"
|
|
|
|
/// Attempts to fill out the order list with items of the user's choosing, will stop in its tracks if it fails
|
|
/obj/item/paper/paperslip/ration_ticket/luxury/try_to_make_ration_order_list(obj/machinery/computer/cargo/object_we_attack, mob/living/user)
|
|
forceMove(object_we_attack)
|
|
playsound(object_we_attack, 'sound/machines/terminal/terminal_insert_disc.ogg', 50, FALSE)
|
|
|
|
// List of meat options we get
|
|
var/list/radial_alcohol_options = list(
|
|
"Navy Rum" = image(icon = 'modular_skyrat/master_files/icons/obj/drinks.dmi', icon_state = "navy_rum"),
|
|
"Ginger Beer" = image(icon = 'modular_skyrat/master_files/icons/obj/drinks.dmi', icon_state = "gingie_beer"),
|
|
"Kortara" = image(icon = 'modular_skyrat/master_files/icons/obj/drinks.dmi', icon_state = "kortara"),
|
|
"Voltaic Wine" = image(icon = 'modular_skyrat/modules/paycheck_rations/icons/food_containers.dmi', icon_state = "wine_voltaic_canned"),
|
|
"Hemoglobin Iced Tea" = image(icon = 'modular_zubbers/icons/obj/drinks/soda.dmi', icon_state = "blood_tea"),
|
|
"Soda and Lemonade" = image(icon = 'modular_skyrat/master_files/icons/obj/drinks.dmi', icon_state = "soda_water")
|
|
)
|
|
|
|
var/alcohol_choice = show_radial_menu(user, object_we_attack, radial_alcohol_options, require_near = TRUE)
|
|
|
|
if(!alcohol_choice)
|
|
object_we_attack.balloon_alert(user, "no selection made")
|
|
forceMove(drop_location(object_we_attack))
|
|
return
|
|
|
|
switch(alcohol_choice)
|
|
if("Navy Rum")
|
|
items_we_deliver += /obj/item/reagent_containers/cup/soda_cans/skyrat/navy_rum
|
|
items_we_deliver += /obj/item/reagent_containers/cup/soda_cans/skyrat/navy_rum
|
|
if("Ginger Beer")
|
|
items_we_deliver += /obj/item/reagent_containers/cup/soda_cans/skyrat/ginger_beer
|
|
items_we_deliver += /obj/item/reagent_containers/cup/soda_cans/skyrat/ginger_beer
|
|
if("Kortara")
|
|
items_we_deliver += /obj/item/reagent_containers/cup/soda_cans/skyrat/kortara
|
|
items_we_deliver += /obj/item/reagent_containers/cup/soda_cans/skyrat/kortara
|
|
if("Voltaic Wine")
|
|
items_we_deliver += /obj/item/reagent_containers/cup/soda_cans/skyrat/wine_voltaic
|
|
items_we_deliver += /obj/item/reagent_containers/cup/soda_cans/skyrat/wine_voltaic
|
|
if("Hemoglobin Iced Tea")
|
|
items_we_deliver += /obj/item/reagent_containers/cup/soda_cans/bubber/blood_tea
|
|
items_we_deliver += /obj/item/reagent_containers/cup/soda_cans/bubber/blood_tea
|
|
if("Soda and Lemonade")
|
|
items_we_deliver += /obj/item/reagent_containers/cup/soda_cans/skyrat/soda_water_moth
|
|
items_we_deliver += /obj/item/reagent_containers/cup/soda_cans/skyrat/lemonade
|
|
|
|
// List of produce options we get
|
|
var/list/radial_consumables_options = list(
|
|
"Cigarettes" = image(icon = 'icons/obj/cigarettes.dmi', icon_state = "robust"),
|
|
"Coffee Powder" = image(icon = 'icons/obj/food/cartridges.dmi', icon_state = "cartridge_blend"),
|
|
"Tea Powder" = image(icon = 'icons/obj/service/hydroponics/harvest.dmi', icon_state = "tea_aspera_leaves"),
|
|
"Mixed Gum Pack" = image(icon = 'modular_skyrat/modules/food_replicator/icons/rationpack.dmi', icon_state = "bubblegum"),
|
|
)
|
|
|
|
var/consumables_choice = show_radial_menu(user, object_we_attack, radial_consumables_options, require_near = TRUE)
|
|
|
|
if(!consumables_choice)
|
|
object_we_attack.balloon_alert(user, "no selection made")
|
|
// Reset the list if we fail
|
|
items_we_deliver = list()
|
|
forceMove(drop_location(object_we_attack))
|
|
return
|
|
|
|
switch(consumables_choice)
|
|
if("Cigarettes")
|
|
items_we_deliver += /obj/item/storage/fancy/cigarettes/cigpack_robust
|
|
if("Coffee Powder")
|
|
items_we_deliver += /obj/item/reagent_containers/cup/glass/bottle/small/tiny/coffee
|
|
if("Tea Powder")
|
|
items_we_deliver += /obj/item/reagent_containers/cup/glass/bottle/small/tiny/tea
|
|
if("Mixed Gum Pack")
|
|
items_we_deliver += /obj/item/storage/box/gum/colonial
|
|
|
|
items_we_deliver += /obj/item/reagent_containers/cup/glass/bottle/small/tiny/honey
|
|
items_we_deliver += /obj/item/reagent_containers/cup/glass/bottle/small/tiny/caramel
|
|
|
|
make_the_actual_order(object_we_attack, user)
|