diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 44eebeba33..47b00cb7f5 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -29,6 +29,7 @@ var/turns_since_scan = 0 var/mob/living/simple_animal/mouse/movement_target gold_core_spawnable = FRIENDLY_SPAWN + collar_type = "cat" /mob/living/simple_animal/pet/cat/Initialize() . = ..() @@ -39,8 +40,11 @@ if(client && stat != DEAD) if (resting) icon_state = "[icon_living]_rest" + collar_type = "[initial(collar_type)]_rest" else icon_state = "[icon_living]" + collar_type = "[initial(collar_type)]" + regenerate_icons() /mob/living/simple_animal/pet/cat/space @@ -60,6 +64,7 @@ icon_state = "original" icon_living = "original" icon_dead = "original_dead" + collar_type = null unique_pet = TRUE /mob/living/simple_animal/pet/cat/kitten @@ -71,6 +76,7 @@ density = FALSE pass_flags = PASSMOB mob_size = MOB_SIZE_SMALL + collar_type = "kitten" //RUNTIME IS ALIVE! SQUEEEEEEEE~ /mob/living/simple_animal/pet/cat/Runtime @@ -162,17 +168,20 @@ if(prob(1)) emote("me", 1, pick("stretches out for a belly rub.", "wags its tail.", "lies down.")) icon_state = "[icon_living]_rest" + collar_type = "[initial(collar_type)]_rest" resting = 1 update_canmove() else if (prob(1)) emote("me", 1, pick("sits down.", "crouches on its hind legs.", "looks alert.")) icon_state = "[icon_living]_sit" + collar_type = "[initial(collar_type)]_sit" resting = 1 update_canmove() else if (prob(1)) if (resting) emote("me", 1, pick("gets up and meows.", "walks around.", "stops resting.")) icon_state = "[icon_living]" + collar_type = "[initial(collar_type)]" resting = 0 update_canmove() else diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 53ad13c3b8..812d4448d5 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -31,6 +31,7 @@ var/nofur = 0 //Corgis that have risen past the material plane of existence. gold_core_spawnable = FRIENDLY_SPAWN can_be_held = TRUE + collar_type = "corgi" /mob/living/simple_animal/pet/dog/pug name = "\improper pug" @@ -42,6 +43,7 @@ icon_dead = "pug_dead" butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/pug = 3) gold_core_spawnable = FRIENDLY_SPAWN + collar_type = "pug" /mob/living/simple_animal/pet/dog/Initialize() . = ..() @@ -469,7 +471,7 @@ /mob/living/simple_animal/pet/dog/corgi/regenerate_icons() - cut_overlays() + ..() if(inventory_head) var/image/head_icon var/datum/dog_fashion/DF = new inventory_head.dog_fashion(src) @@ -509,10 +511,6 @@ back_icon = DF.get_overlay() add_overlay(back_icon) - if(pcollar) - add_overlay(collar) - add_overlay(pettag) - return @@ -527,6 +525,7 @@ density = FALSE pass_flags = PASSMOB mob_size = MOB_SIZE_SMALL + collar_type = "puppy" //puppies cannot wear anything. /mob/living/simple_animal/pet/dog/corgi/puppy/Topic(href, href_list) diff --git a/code/modules/mob/living/simple_animal/friendly/pet.dm b/code/modules/mob/living/simple_animal/friendly/pet.dm index d6294ff727..04295dfbd1 100644 --- a/code/modules/mob/living/simple_animal/friendly/pet.dm +++ b/code/modules/mob/living/simple_animal/friendly/pet.dm @@ -1,20 +1,16 @@ /mob/living/simple_animal/pet icon = 'icons/mob/pets.dmi' mob_size = MOB_SIZE_SMALL - var/obj/item/clothing/neck/petcollar/pcollar = null - var/collar = "" - var/pettag = "" + var/obj/item/clothing/neck/petcollar/pcollar + var/collar_type var/unique_pet = FALSE blood_volume = BLOOD_VOLUME_NORMAL /mob/living/simple_animal/pet/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/clothing/neck/petcollar) && !pcollar) - var/pet_icon_states = icon_states("[icon]") - if("[icon_state]collar" in pet_icon_states) + if(collar_type) var/obj/item/clothing/neck/petcollar/P = O - pcollar = P - collar = "[icon_state]collar" - pettag = "[icon_state]tag" + pcollar = P.type regenerate_icons() to_chat(user, "You put the [P] around [src]'s neck.") if(P.tagname && !unique_pet) @@ -41,17 +37,25 @@ /mob/living/simple_animal/pet/revive(full_heal = 0, admin_revive = 0) if(..()) + if(collar_type) + collar_type = "[initial(collar_type)]" regenerate_icons() - . = 1 + . = TRUE /mob/living/simple_animal/pet/death(gibbed) ..(gibbed) + if(collar_type) + collar_type = "[initial(collar_type)]_dead" regenerate_icons() +/mob/living/simple_animal/pet/gib() + if(pcollar) + new pcollar(drop_location()) + ..() + /mob/living/simple_animal/pet/regenerate_icons() cut_overlays() - if(collar) - add_overlay(collar) - if(pettag) - add_overlay(pettag) + if(pcollar && collar_type) + add_overlay("[collar_type]collar") + add_overlay("[collar_type]tag") diff --git a/icons/mob/pets.dmi b/icons/mob/pets.dmi index 651dbb896c..31e1cbae83 100644 Binary files a/icons/mob/pets.dmi and b/icons/mob/pets.dmi differ