From e53bfc7b52261de099d9e76ecb761a85e2ea54f2 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Mon, 3 Jul 2023 23:35:22 +0200 Subject: [PATCH] [MIRROR] Some crayons fixes and minor changes. [MDB IGNORE] (#22197) * Some crayons fixes and minor changes. (#76468) ## About The Pull Request - Defined crayon colors because why not. - Fixed suicide with crayons not coloring you. - Made it properly? edible. - "empty" balloon alert now only appears on empty spraycans. - Remade attackby restrictions for mime's and rainbow crayons to `set_holdable` but without balloon alerts sadly. I don't quite know how to make it. ## Why It's Good For The Game Crayon burgers. ## Changelog :cl: fix: Crayon suicide now properly colors you. fix: You can't put spraycans in crayon box via opening it and putting directly in slot as intended, but balloon alerts for mime's and rainbow crayons are gone. qol: "empty" balloon alert no longer appears on crayons. qol: You can make crayon burgers now. /:cl: * Some crayons fixes and minor changes. --------- Co-authored-by: Helg2 <93882977+Helg2@users.noreply.github.com> --- code/__DEFINES/colors.dm | 10 ++++ code/game/objects/items/crayons.dm | 88 +++++++++++------------------- 2 files changed, 43 insertions(+), 55 deletions(-) diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm index ebc5ad3cded..58b48ec92a4 100644 --- a/code/__DEFINES/colors.dm +++ b/code/__DEFINES/colors.dm @@ -150,6 +150,16 @@ #define COLOR_BIOLUMINESCENCE_PURPLE "#D966FF" #define COLOR_BIOLUMINESCENCE_PINK "#FFB3DA" +//Colors for crayons. +#define COLOR_CRAYON_RED "#DA0000" +#define COLOR_CRAYON_ORANGE "#FF9300" +#define COLOR_CRAYON_YELLOW "#FFF200" +#define COLOR_CRAYON_GREEN "#A8E61D" +#define COLOR_CRAYON_BLUE "#00B7EF" +#define COLOR_CRAYON_PURPLE "#DA00FF" +#define COLOR_CRAYON_BLACK "#1C1C1C" +#define COLOR_CRAYON_RAINBOW "#FFF000" + ///Colors for grayscale tools #define COLOR_TOOL_BLUE "#1861d5" #define COLOR_TOOL_RED "#951710" diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index cbcb387ce00..127563c9840 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -200,7 +200,7 @@ /obj/item/toy/crayon/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is jamming [src] up [user.p_their()] nose and into [user.p_their()] brain. It looks like [user.p_theyre()] trying to commit suicide!")) - user.add_atom_colour(paint_color) + user.add_atom_colour(paint_color, ADMIN_COLOUR_PRIORITY) return (BRUTELOSS|OXYLOSS) /obj/item/toy/crayon/Initialize(mapload) @@ -211,11 +211,18 @@ drawtype = pick(all_drawables) AddElement(/datum/element/venue_price, FOOD_PRICE_EXOTIC) + if(edible) + AddComponent(/datum/component/edible, bite_consumption = (charges / 5), after_eat = CALLBACK(src, PROC_REF(after_eat))) if(can_change_colour) AddComponent(/datum/component/palette, AVAILABLE_SPRAYCAN_SPACE, paint_color) refill() +/obj/item/toy/crayon/proc/after_eat(mob/user) + use_charges(user, 5, FALSE) + if(check_empty(user)) //Prevents division by zero + return + /obj/item/toy/crayon/set_painting_tool_color(chosen_color) . = ..() paint_color = chosen_color @@ -261,9 +268,10 @@ if(charges == INFINITE_CHARGES) return FALSE if(!charges_left) - balloon_alert(user, "empty!") if(self_contained) qdel(src) + else + balloon_alert(user, "empty!") return TRUE if(charges_left < amount && requires_full) balloon_alert(user, "not enough left!") @@ -284,13 +292,6 @@ ui = new(user, src, "Crayon", name) ui.open() -/obj/item/toy/crayon/spraycan/AltClick(mob/user) - if(!has_cap || !user.can_perform_action(src, NEED_DEXTERITY|NEED_HANDS)) - return - is_capped = !is_capped - balloon_alert(user, is_capped ? "capped" : "cap removed") - update_appearance() - /obj/item/toy/crayon/proc/staticDrawables() . = list() @@ -548,25 +549,6 @@ use_on(target, user, params) -/obj/item/toy/crayon/attack(mob/target, mob/user) - if(!edible || (target != user)) - return ..() - if(iscarbon(target)) - var/mob/living/carbon/crayon_eater = target - var/covered = "" - if(crayon_eater.is_mouth_covered(ITEM_SLOT_HEAD)) - covered = "headgear" - else if(crayon_eater.is_mouth_covered(ITEM_SLOT_MASK)) - covered = "mask" - if(covered) - balloon_alert(user, "remove your [covered]!") - return - to_chat(user, span_notice("You take a bite of the [src.name]. Delicious!")) - var/eaten = use_charges(user, 5, FALSE) - if(check_empty(user)) //Prevents division by zero - return - reagents.trans_to(target, eaten, volume_multiplier, transfered_by = user, methods = INGEST) - /obj/item/toy/crayon/get_writing_implement_details() return list( interaction_mode = MODE_WRITING, @@ -578,7 +560,7 @@ /obj/item/toy/crayon/red name = "red crayon" icon_state = "crayonred" - paint_color = "#DA0000" + paint_color = COLOR_CRAYON_RED crayon_color = "red" reagent_contents = list(/datum/reagent/consumable/nutriment = 0.5, /datum/reagent/colorful_reagent/powder/red/crayon = 1.5) dye_color = DYE_RED @@ -586,7 +568,7 @@ /obj/item/toy/crayon/orange name = "orange crayon" icon_state = "crayonorange" - paint_color = "#FF9300" + paint_color = COLOR_CRAYON_ORANGE crayon_color = "orange" reagent_contents = list(/datum/reagent/consumable/nutriment = 0.5, /datum/reagent/colorful_reagent/powder/orange/crayon = 1.5) dye_color = DYE_ORANGE @@ -594,7 +576,7 @@ /obj/item/toy/crayon/yellow name = "yellow crayon" icon_state = "crayonyellow" - paint_color = "#FFF200" + paint_color = COLOR_CRAYON_YELLOW crayon_color = "yellow" reagent_contents = list(/datum/reagent/consumable/nutriment = 0.5, /datum/reagent/colorful_reagent/powder/yellow/crayon = 1.5) dye_color = DYE_YELLOW @@ -602,7 +584,7 @@ /obj/item/toy/crayon/green name = "green crayon" icon_state = "crayongreen" - paint_color = "#A8E61D" + paint_color = COLOR_CRAYON_GREEN crayon_color = "green" reagent_contents = list(/datum/reagent/consumable/nutriment = 0.5, /datum/reagent/colorful_reagent/powder/green/crayon = 1.5) dye_color = DYE_GREEN @@ -610,7 +592,7 @@ /obj/item/toy/crayon/blue name = "blue crayon" icon_state = "crayonblue" - paint_color = "#00B7EF" + paint_color = COLOR_CRAYON_BLUE crayon_color = "blue" reagent_contents = list(/datum/reagent/consumable/nutriment = 0.5, /datum/reagent/colorful_reagent/powder/blue/crayon = 1.5) dye_color = DYE_BLUE @@ -618,7 +600,7 @@ /obj/item/toy/crayon/purple name = "purple crayon" icon_state = "crayonpurple" - paint_color = "#DA00FF" + paint_color = COLOR_CRAYON_PURPLE crayon_color = "purple" reagent_contents = list(/datum/reagent/consumable/nutriment = 0.5, /datum/reagent/colorful_reagent/powder/purple/crayon = 1.5) dye_color = DYE_PURPLE @@ -626,7 +608,7 @@ /obj/item/toy/crayon/black name = "black crayon" icon_state = "crayonblack" - paint_color = "#1C1C1C" //Not completely black because total black looks bad. So Mostly Black. + paint_color = COLOR_CRAYON_BLACK crayon_color = "black" reagent_contents = list(/datum/reagent/consumable/nutriment = 0.5, /datum/reagent/colorful_reagent/powder/black/crayon = 1.5) dye_color = DYE_BLACK @@ -634,7 +616,7 @@ /obj/item/toy/crayon/white name = "white crayon" icon_state = "crayonwhite" - paint_color = "#FFFFFF" + paint_color = COLOR_WHITE crayon_color = "white" reagent_contents = list(/datum/reagent/consumable/nutriment = 0.5, /datum/reagent/colorful_reagent/powder/white/crayon = 1.5) dye_color = DYE_WHITE @@ -643,7 +625,7 @@ name = "mime crayon" icon_state = "crayonmime" desc = "A very sad-looking crayon." - paint_color = "#FFFFFF" + paint_color = COLOR_WHITE crayon_color = "mime" reagent_contents = list(/datum/reagent/consumable/nutriment = 0.5, /datum/reagent/colorful_reagent/powder/invisible = 1.5) charges = INFINITE_CHARGES @@ -652,7 +634,7 @@ /obj/item/toy/crayon/rainbow name = "rainbow crayon" icon_state = "crayonrainbow" - paint_color = "#FFF000" + paint_color = COLOR_CRAYON_RAINBOW crayon_color = "rainbow" reagent_contents = list(/datum/reagent/consumable/nutriment = 0.5, /datum/reagent/colorful_reagent = 1.5) drawtype = RANDOM_ANY // just the default starter. @@ -677,7 +659,12 @@ /obj/item/storage/crayons/Initialize(mapload) . = ..() - create_storage(canhold = list(/obj/item/toy/crayon)) + atom_storage.set_holdable(list(/obj/item/toy/crayon), + list( + /obj/item/toy/crayon/spraycan, + /obj/item/toy/crayon/mime, + /obj/item/toy/crayon/rainbow, + )) /obj/item/storage/crayons/PopulateContents() new /obj/item/toy/crayon/red(src) @@ -694,22 +681,6 @@ for(var/obj/item/toy/crayon/crayon in contents) . += mutable_appearance('icons/obj/art/crayons.dmi', crayon.crayon_color) -/obj/item/storage/crayons/attackby(obj/item/attacked_by, mob/user, params) - if(!istype(attacked_by, /obj/item/toy/crayon)) - return ..() - if(istype(attacked_by, /obj/item/toy/crayon/spraycan)) - balloon_alert(user, "not a crayon!") - return - var/obj/item/toy/crayon/crayon = attacked_by - switch(crayon.crayon_color) - if("mime") - balloon_alert(user, "crayon doesn't belong!") - return - if("rainbow") - balloon_alert(user, "crayon is too powerful!") - return - return ..() - /obj/item/storage/crayons/attack_self(mob/user) . = ..() if(contents.len > 0) @@ -902,6 +873,13 @@ return SECONDARY_ATTACK_CONTINUE_CHAIN +/obj/item/toy/crayon/spraycan/AltClick(mob/user) + if(!has_cap || !user.can_perform_action(src, NEED_DEXTERITY|NEED_HANDS)) + return + is_capped = !is_capped + balloon_alert(user, is_capped ? "capped" : "cap removed") + update_appearance() + /obj/item/toy/crayon/spraycan/attackby_storage_insert(datum/storage, atom/storage_holder, mob/user) return is_capped