diff --git a/code/modules/mob/living/carbon/human/species_types/felinid.dm b/code/modules/mob/living/carbon/human/species_types/felinid.dm index 7806772690f..4f67fc433b5 100644 --- a/code/modules/mob/living/carbon/human/species_types/felinid.dm +++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm @@ -10,6 +10,7 @@ mutantears = /obj/item/organ/ears/cat mutanttail = /obj/item/organ/tail/cat changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT + var/original_felinid = TRUE //set to false for felinids created by mass-purrbation /datum/species/human/felinid/qualifies_for_rank(rank, list/features) return TRUE @@ -108,13 +109,13 @@ /proc/mass_purrbation() for(var/M in GLOB.mob_list) - if(ishumanbasic(M)) + if(ishuman(M)) purrbation_apply(M) CHECK_TICK /proc/mass_remove_purrbation() for(var/M in GLOB.mob_list) - if(ishumanbasic(M)) + if(ishuman(M)) purrbation_remove(M) CHECK_TICK @@ -131,17 +132,35 @@ /proc/purrbation_apply(mob/living/carbon/human/H, silent = FALSE) if(!ishuman(H) || isfelinid(H)) return - H.set_species(/datum/species/human/felinid) - + if(ishumanbasic(H)) + H.set_species(/datum/species/human/felinid) + var/datum/species/human/felinid/cat_species = H.dna.species + cat_species.original_felinid = FALSE + else + var/obj/item/organ/ears/cat/kitty_ears = new + var/obj/item/organ/tail/cat/kitty_tail = new + kitty_ears.Insert(H, TRUE, FALSE) //Gives nonhumans cat tail and ears + kitty_tail.Insert(H, TRUE, FALSE) if(!silent) to_chat(H, "Something is nya~t right.") playsound(get_turf(H), 'sound/effects/meow1.ogg', 50, TRUE, -1) /proc/purrbation_remove(mob/living/carbon/human/H, silent = FALSE) - if(!ishuman(H) || !isfelinid(H)) - return - - H.set_species(/datum/species/human) - + if(isfelinid(H)) + var/datum/species/human/felinid/cat_species = H.dna.species + if(!cat_species.original_felinid) + H.set_species(/datum/species/human) + else if(ishuman(H) && !ishumanbasic(H)) + var/datum/species/target_species = H.dna.species + var/organs = H.internal_organs + for(var/obj/item/organ/current_organ in organs) + if(istype(current_organ, /obj/item/organ/tail/cat)) + current_organ.Remove(H, TRUE) + if(target_species.mutanttail) + var/obj/item/organ/new_tail = new target_species.mutanttail + new_tail.Insert(H, TRUE, FALSE) + if(istype(current_organ, /obj/item/organ/ears/cat)) + var/obj/item/organ/new_ears = new target_species.mutantears + new_ears.Insert(H, TRUE, FALSE) if(!silent) to_chat(H, "You are no longer a cat.")