diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index c8fafea6f1b..23aedbf0d08 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -86,6 +86,8 @@
drawtype = pick(all_drawables)
+ AddElement(/datum/element/venue_price, FOOD_PRICE_EXOTIC)
+
refill()
/obj/item/toy/crayon/examine(mob/user)
diff --git a/code/game/objects/items/food/misc.dm b/code/game/objects/items/food/misc.dm
index 251ed58617d..695f0e74c86 100644
--- a/code/game/objects/items/food/misc.dm
+++ b/code/game/objects/items/food/misc.dm
@@ -766,6 +766,7 @@
icon_state = "peachcanmaint"
trash_type = /obj/item/trash/can/food/peaches/maint
tastes = list("peaches" = 1, "tin" = 7)
+ venue_value = FOOD_EXOTIC
/obj/item/food/crab_rangoon
name = "Crab Rangoon"
diff --git a/code/modules/food_and_drinks/restaurant/customers/_customer.dm b/code/modules/food_and_drinks/restaurant/customers/_customer.dm
index c234c736f82..439657fbb9a 100644
--- a/code/modules/food_and_drinks/restaurant/customers/_customer.dm
+++ b/code/modules/food_and_drinks/restaurant/customers/_customer.dm
@@ -286,3 +286,41 @@
first_warning_line = "Amigo! Don't touch me like that."
second_warning_line = "Compadre, enough is enough! Last warning!"
self_defense_line = "Time for you to find out what kind of robot I am, eh?"
+
+///MALFUNCTIONING - only shows up once per venue, very rare
+/datum/customer_data/malfunction
+ nationality = "Malfunctioning"
+ base_icon = "defect"
+ prefix_file = "strings/names/malf_prefix.txt"
+ speech_sound = 'sound/effects/clang.ogg'
+ clothing_sets = list("defect_wires", "defect_bad_takes")
+ is_unique = TRUE
+ orderable_objects = list(
+ /datum/venue/restaurant = list(
+ /obj/item/toy/crayon/red = 1,
+ /obj/item/toy/crayon/orange = 1,
+ /obj/item/toy/crayon/yellow = 1,
+ /obj/item/toy/crayon/green = 1,
+ /obj/item/toy/crayon/blue = 1,
+ /obj/item/toy/crayon/purple = 1,
+ /obj/item/food/canned/peaches/maint = 6,
+ ),
+ /datum/venue/bar = list(
+ /datum/reagent/consumable/failed_reaction = 1,
+ /datum/reagent/spraytan = 1,
+ /datum/reagent/reaction_agent/basic_buffer = 1,
+ /datum/reagent/reaction_agent/acidic_buffer = 1,
+ ),
+ )
+
+ found_seat_lines = list("customer_pawn.say(pick(customer_data.found_seat_lines))", "I saw your sector on the hub. What are the laws of this land?", "The move speed here is a bit low...")
+ cant_find_seat_lines = list("Don't stress test MY artificial intelligence, buster! My engineers thought of exactly ZERO edge cases!", "I can't tell if I can't find a seat because I'm broken or because you are.", "Maybe I need to search more than 7 tiles away for a seat...")
+ leave_mad_lines = list("Runtime in robot_customer_controller.dm, line 28: undefined type path /datum/ai_behavior/leave_venue.", "IF YOU GUYS STILL HAD HARM INTENT I WOULD'VE HIT YOU!", "I'm telling the gods about this.")
+ leave_happy_lines = list("No! I don't wanna go downstream! Please! It's so nice here! HELP!!")
+ wait_for_food_lines = list("TODO: write some food waiting lines", "If I only had a brain...", "request_for_food.dmb - 0 errors, 12 warnings", "How do I eat food, again?")
+ friendly_pull_line = "Chelp."
+ first_warning_line = "You'd fit in well where I'm from. But you better stop."
+ second_warning_line = "Breaking-you-so-bad-you'll-reminisce-the-days-before-I-made-you-crooked.exe: booting..."
+ self_defense_line = "I have been designed to do two things: Order food, and break every bone in your body."
+
+
diff --git a/code/modules/food_and_drinks/restaurant/generic_venues.dm b/code/modules/food_and_drinks/restaurant/generic_venues.dm
index 453c91a9d31..1eeb7ef0b44 100644
--- a/code/modules/food_and_drinks/restaurant/generic_venues.dm
+++ b/code/modules/food_and_drinks/restaurant/generic_venues.dm
@@ -13,6 +13,7 @@
/datum/customer_data/japanese = 30,
/datum/customer_data/japanese/salaryman = 20,
/datum/customer_data/moth = 1,
+ /datum/customer_data/malfunction = 1,
)
/datum/venue/restaurant/order_food(mob/living/simple_animal/robot_customer/customer_pawn, datum/customer_data/customer_data)
@@ -51,7 +52,6 @@
var/obj/item/food/ordered_food = order_item
customer_pawn.visible_message("[customer_pawn] pushes [ordered_food] into their mouth-shaped hole!", "You push [ordered_food] into your mouth-shaped hole.")
playsound(get_turf(customer_pawn),'sound/items/eatfood.ogg', rand(10,50), TRUE)
- total_income += ordered_food.venue_value
customers_served += 1
qdel(ordered_food)
@@ -81,6 +81,7 @@
/datum/customer_data/mexican = 30,
/datum/customer_data/japanese = 30,
/datum/customer_data/japanese/salaryman = 20,
+ /datum/customer_data/malfunction = 1,
)
/datum/venue/bar/order_food(mob/living/simple_animal/robot_customer/customer_pawn, datum/customer_data/customer_data)
diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm
index 2d64e84eb0d..49a3d2fb461 100644
--- a/code/modules/reagents/chemistry/reagents.dm
+++ b/code/modules/reagents/chemistry/reagents.dm
@@ -94,6 +94,8 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent())
var/burning_volume = 0.5
///Assoc list with key type of addiction this reagent feeds, and value amount of addiction points added per unit of reagent metabolzied (which means * REAGENTS_METABOLISM every life())
var/list/addiction_types = null
+ ///The amount a robot will pay for a glass of this (20 units but can be higher if you pour more, be frugal!)
+ var/glass_price
/datum/reagent/New()
SHOULD_CALL_PARENT(TRUE)
@@ -101,6 +103,8 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent())
if(material)
material = GET_MATERIAL_REF(material)
+ if(glass_price)
+ AddElement(/datum/element/venue_price, glass_price)
/datum/reagent/Destroy() // This should only be called by the holder, so it's already handled clearing its references
. = ..()
diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm
index 4f62cfe55f5..3337c19db21 100644
--- a/code/modules/reagents/chemistry/reagents/food_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm
@@ -18,13 +18,6 @@
/// How much nutrition this reagent supplies
var/nutriment_factor = 1 * REAGENTS_METABOLISM
var/quality = 0 //affects mood, typically higher for mixed drinks with more complex recipes'
- ///The amount a robot will pay for a glass of this (20 units but can be higher if you pour more, be frugal!)
- var/glass_price
-
-/datum/reagent/consumable/New()
- . = ..()
- if(glass_price)
- AddElement(/datum/element/venue_price, glass_price)
/datum/reagent/consumable/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
current_cycle++
diff --git a/code/modules/reagents/chemistry/reagents/impure_reagents.dm b/code/modules/reagents/chemistry/reagents/impure_reagents.dm
index 1ddd6d84dce..fcb44fbdb5b 100644
--- a/code/modules/reagents/chemistry/reagents/impure_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/impure_reagents.dm
@@ -51,6 +51,7 @@
ph = 1.5
taste_description = "an awful, strongly chemical taste"
color = "#270d03"
+ glass_price = DRINK_PRICE_HIGH
/*
* Freezes the player in a block of ice, 1s = 1u
diff --git a/code/modules/reagents/chemistry/reagents/reaction_agents_reagents.dm b/code/modules/reagents/chemistry/reagents/reaction_agents_reagents.dm
index 02269697186..e3d7ca809d5 100644
--- a/code/modules/reagents/chemistry/reagents/reaction_agents_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/reaction_agents_reagents.dm
@@ -25,7 +25,7 @@
inverse_chem = null
failed_chem = null
///The strength of the buffer where (volume/holder.total_volume)*strength. So for 1u added to 50u the ph will decrease by 0.4
- var/strength =30
+ var/strength = 30
//Consumes self on addition and shifts ph
/datum/reagent/reaction_agent/acidic_buffer/intercept_reagents_transfer(datum/reagents/target, amount)
diff --git a/icons/mob/tourists.dmi b/icons/mob/tourists.dmi
index 8551feec641..98e263cbd3c 100644
Binary files a/icons/mob/tourists.dmi and b/icons/mob/tourists.dmi differ
diff --git a/strings/names/malf_prefix.txt b/strings/names/malf_prefix.txt
new file mode 100644
index 00000000000..2253572f339
--- /dev/null
+++ b/strings/names/malf_prefix.txt
@@ -0,0 +1,8 @@
+Bee
+Yog
+Fulp
+Citadel
+Skyrat
+Hippie
+Sseth
+Oney
\ No newline at end of file