diff --git a/code/modules/food_and_drinks/food/foods/baked_goods.dm b/code/modules/food_and_drinks/food/foods/baked_goods.dm index 1aedaf3f4c7..1115b42014e 100644 --- a/code/modules/food_and_drinks/food/foods/baked_goods.dm +++ b/code/modules/food_and_drinks/food/foods/baked_goods.dm @@ -345,7 +345,7 @@ /obj/item/reagent_containers/food/snacks/donut/sprinkles name = "frosted donut" icon_state = "donut2" - list_reagents = list("nutriment" = 3, "sugar" = 2, "spinkles" = 2) + list_reagents = list("nutriment" = 3, "sugar" = 2, "sprinkles" = 2) filling_color = "#FF69B4" randomized_sprinkles = 0 diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_table.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_table.dm index 8d91fd14258..267ae917c60 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_table.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_table.dm @@ -252,4 +252,23 @@ ) tools = list(/obj/item/kitchen/sushimat) result = /obj/item/reagent_containers/food/snacks/sliceable/Tai_maki - category = CAT_FOOD \ No newline at end of file + category = CAT_FOOD + +/datum/crafting_recipe/food + category = CAT_FOOD + +/datum/crafting_recipe/food/New() + parts |= reqs + +/datum/crafting_recipe/food/cak + name = "Living cat/cake hybrid" + reqs = list( + /obj/item/organ/internal/brain = 1, + /obj/item/organ/internal/heart = 1, + /obj/item/reagent_containers/food/snacks/sliceable/birthdaycake = 1, + /obj/item/reagent_containers/food/snacks/meat/slab = 3, + /datum/reagent/blood = 30, + /datum/reagent/consumable/sprinkles = 5, + /datum/reagent/teslium = 1, + ) + result = /mob/living/simple_animal/pet/cat/cak \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/animal_defense.dm b/code/modules/mob/living/simple_animal/animal_defense.dm index 309a13468a3..636df89885d 100644 --- a/code/modules/mob/living/simple_animal/animal_defense.dm +++ b/code/modules/mob/living/simple_animal/animal_defense.dm @@ -13,7 +13,7 @@ if(INTENT_HARM, INTENT_DISARM) M.do_attack_animation(src, ATTACK_EFFECT_PUNCH) visible_message("[M] [response_harm] [src]!") - playsound(loc, "punch", 25, 1, -1) + playsound(loc, attacked_sound, 25, 1, -1) attack_threshold_check(harm_intent_damage) add_attack_logs(M, src, "Melee attacked with fists") updatehealth() diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index e1d61c5aa55..c37b54938ac 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -177,3 +177,57 @@ minbodytemp = 0 melee_damage_lower = 5 melee_damage_upper = 15 + +/mob/living/simple_animal/pet/cat/cak + name = "Keeki" + desc = "It's a cat made out of cake." + icon_state = "cak" + icon_living = "cak" + icon_resting = "cak_rest" + icon_dead = "cak_dead" + health = 50 + maxHealth = 50 + harm_intent_damage = 10 + butcher_results = list( + /obj/item/organ/internal/brain = 1, + /obj/item/organ/internal/heart = 1, + /obj/item/reagent_containers/food/snacks/birthdaycakeslice = 3, + /obj/item/reagent_containers/food/snacks/meat/slab = 2 + ) + response_harm = "takes a bite out of" + attacked_sound = "sound/items/eatfood.ogg" + deathmessage = "loses its false life and collapses!" + death_sound = "bodyfall" + +/mob/living/simple_animal/pet/cat/cak/Life() + ..() + if(stat) + return + if(health < maxHealth) + adjustBruteLoss(-4) + for(var/obj/item/reagent_containers/food/snacks/donut/D in range(1, src)) + if(D.icon_state != "donut2") + D.name = "frosted donut" + D.icon_state = "donut2" + D.reagents.add_reagent("sprinkles", 2) + D.filling_color = "#FF69B4" + +/mob/living/simple_animal/pet/cat/cak/attack_hand(mob/living/L) + ..() + if(L.a_intent == INTENT_HARM && L.reagents && !stat) + L.reagents.add_reagent("nutriment", 0.4) + L.reagents.add_reagent("vitamin", 0.4) + +/mob/living/simple_animal/pet/cat/cak/CheckParts(list/parts) + ..() + var/obj/item/organ/internal/brain/B = locate(/obj/item/organ/internal/brain) in contents + if(!B || !B.brainmob || !B.brainmob.mind) + return + B.brainmob.mind.transfer_to(src) + to_chat(src, "You are a cak! You're a harmless cat/cake hybrid that everyone loves. People can take bites out of you if they're hungry, but you regenerate health \ + so quickly that it generally doesn't matter. You're remarkably resilient to any damage besides this and it's hard for you to really die at all. You should go around and bring happiness and \ + free cake to the station!") + var/new_name = stripped_input(src, "Enter your name, or press \"Cancel\" to stick with Keeki.", "Name Change") + if(new_name) + to_chat(src, "Your name is now \"[new_name]\"!") + name = new_name \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index a5e7bad699f..27e544e56d6 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -76,6 +76,7 @@ var/sentience_type = SENTIENCE_ORGANIC // Sentience type, for slime potions var/list/loot = list() //list of things spawned at mob's loc when it dies var/del_on_death = 0 //causes mob to be deleted on death, useful for mobs that spawn lootable corpses + var/attacked_sound = "punch" var/deathmessage = "" var/death_sound = null //The sound played on death diff --git a/icons/mob/pets.dmi b/icons/mob/pets.dmi index 4f46db21354..3c3cbddaf93 100644 Binary files a/icons/mob/pets.dmi and b/icons/mob/pets.dmi differ