From 024d2ee46193c9cfa079c436f65da2bdf8b0671d Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Tue, 16 Mar 2021 22:47:24 +0100 Subject: [PATCH] [MIRROR] Incredibly Rare Malfunctioning Customer (#4180) * Incredibly Rare Malfunctioning Customer (#57537) Co-authored-by: Qustinnus Co-authored-by: ATH1909 <42606352+ATH1909@ users.noreply.github.com> * Incredibly Rare Malfunctioning Customer Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com> Co-authored-by: Qustinnus Co-authored-by: ATH1909 <42606352+ATH1909@ users.noreply.github.com> --- code/game/objects/items/crayons.dm | 2 + code/game/objects/items/food/misc.dm | 1 + .../restaurant/customers/_customer.dm | 38 ++++++++++++++++++ .../restaurant/generic_venues.dm | 3 +- code/modules/reagents/chemistry/reagents.dm | 4 ++ .../chemistry/reagents/food_reagents.dm | 7 ---- .../chemistry/reagents/impure_reagents.dm | 1 + .../reagents/reaction_agents_reagents.dm | 2 +- icons/mob/tourists.dmi | Bin 8084 -> 9203 bytes strings/names/malf_prefix.txt | 8 ++++ 10 files changed, 57 insertions(+), 9 deletions(-) create mode 100644 strings/names/malf_prefix.txt 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 8551feec64158d3bc5a361e501dd434aa2d33220..98e263cbd3cb8586b20bce10d983ff270039ca6f 100644 GIT binary patch literal 9203 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 PE