diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 94606273befe5f..fd3d1fc0a27db9 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -59,6 +59,8 @@ #define TRAIT_SKITTISH "skittish" #define TRAIT_POOR_AIM "poor_aim" #define TRAIT_PROSOPAGNOSIA "prosopagnosia" +#define TRAIT_DOG_PERSON "dog_person" //you like dogs more than cats! +#define TRAIT_CAT_PERSON "cat_person" //you like cats more than dogs! // common trait sources #define TRAIT_GENERIC "generic" diff --git a/code/datums/mood_events/generic_positive_events.dm b/code/datums/mood_events/generic_positive_events.dm index 54eb74f10f7c50..a075ffa6e8b8a1 100644 --- a/code/datums/mood_events/generic_positive_events.dm +++ b/code/datums/mood_events/generic_positive_events.dm @@ -23,6 +23,31 @@ mood_change = 3 timeout = 3000 +/datum/mood_event/pet_corgi_dogperson + description = "WHO'S A GOOD BOY? IS IT YOU? ARE YOU THE GOOD BOY???\n" + mood_change = 5 + timeout = 3000 + +/datum/mood_event/pet_corgi_catperson + description = "Hehe, dogs are cute.\n" + mood_change = 1 + timeout = 3000 + +/datum/mood_event/pet_cat + description = "I pet a cat, and it didn't even bite me!\n" + mood_change = 3 + timeout = 3000 + +/datum/mood_event/pet_cat_catperson + description = "I pet a cat and it was FLUFFY.\n" + mood_change = 5 + timeout = 3000 + +/datum/mood_event/pet_cat_dogperson + description = "Are all cats this content to laze around?\n" //yes. + mood_change = 1 + timeout = 3000 + /datum/mood_event/honk description = "Maybe clowns aren't so bad after all. Honk!\n" mood_change = 2 diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm index 5b0fbefe107c26..302ec42ac306c6 100644 --- a/code/datums/traits/neutral.dm +++ b/code/datums/traits/neutral.dm @@ -12,6 +12,14 @@ +/datum/trait/cat_person + name = "Cat Person" + desc = "You are a firm believer in the theory that cats are the fluffiest animal in the universe." + value = 0 + mob_trait = TRAIT_CAT_PERSON + + + /datum/trait/deviant_tastes name = "Deviant Tastes" desc = "You dislike food that most people enjoy, and find delicious what they don't." @@ -34,6 +42,14 @@ +/datum/trait/dog_person + name = "Dog Person" + desc = "You get along very well with dogs. You love them SO MUCH." + value = 0 + mob_trait = TRAIT_DOG_PERSON + + + /datum/trait/monochromatic name = "Monochromacy" desc = "You suffer from full colorblindness, and perceive nearly the entire world in blacks and whites." diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 75e7b668ea5eae..bfb73023373e23 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -234,11 +234,20 @@ if("harm") wuv(-1, M) -/mob/living/simple_animal/pet/cat/proc/wuv(change, mob/M) +/mob/living/simple_animal/pet/cat/proc/wuv(change, mob/living/M) if(change) if(change > 0) if(M && stat != DEAD) new /obj/effect/temp_visual/heart(loc) + if(M.has_trait(TRAIT_CAT_PERSON)) + if(M.has_trait(TRAIT_DOG_PERSON)) + M.SendSignal(COMSIG_ADD_MOOD_EVENT, "wuv", /datum/mood_event/pet_cat) + else + M.SendSignal(COMSIG_ADD_MOOD_EVENT, "wuv", /datum/mood_event/pet_cat_catperson) + else if(M.has_trait(TRAIT_DOG_PERSON)) + M.SendSignal(COMSIG_ADD_MOOD_EVENT, "wuv", /datum/mood_event/pet_cat_dogperson) + else + M.SendSignal(COMSIG_ADD_MOOD_EVENT, "wuv", /datum/mood_event/pet_cat) emote("me", 1, "purrs!") else if(M && stat != DEAD) diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 90532829dfc999..b9eab0cf389c39 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -220,7 +220,7 @@ //Many hats added, Some will probably be removed, just want to see which ones are popular. // > some will probably be removed -/mob/living/simple_animal/pet/dog/corgi/proc/place_on_head(obj/item/item_to_add, mob/user) +/mob/living/simple_animal/pet/dog/corgi/proc/place_on_head(obj/item/item_to_add, mob/living/user) if(istype(item_to_add, /obj/item/grenade/plastic)) // last thing he ever wears, I guess item_to_add.afterattack(src,user,1) @@ -232,7 +232,15 @@ return if(!item_to_add) user.visible_message("[user] pets [src].","You rest your hand on [src]'s head for a moment.") - user.SendSignal(COMSIG_ADD_MOOD_EVENT, "pet_corgi", /datum/mood_event/pet_corgi) + if(user.has_trait(TRAIT_DOG_PERSON)) + if(user.has_trait(TRAIT_CAT_PERSON)) + user.SendSignal(COMSIG_ADD_MOOD_EVENT, "wuv", /datum/mood_event/pet_corgi) + else + user.SendSignal(COMSIG_ADD_MOOD_EVENT, "wuv", /datum/mood_event/pet_corgi_dogperson) + else if(user.has_trait(TRAIT_CAT_PERSON)) + user.SendSignal(COMSIG_ADD_MOOD_EVENT, "wuv", /datum/mood_event/pet_corgi_catperson) + else + user.SendSignal(COMSIG_ADD_MOOD_EVENT, "wuv", /datum/mood_event/pet_corgi) return if(user && !user.temporarilyRemoveItemFromInventory(item_to_add)) @@ -609,13 +617,21 @@ if("harm") wuv(-1,M) -/mob/living/simple_animal/pet/dog/proc/wuv(change, mob/M) +/mob/living/simple_animal/pet/dog/proc/wuv(change, mob/living/M) if(change) if(change > 0) if(M && stat != DEAD) // Added check to see if this mob (the dog) is dead to fix issue 2454 new /obj/effect/temp_visual/heart(loc) emote("me", 1, "yaps happily!") - M.SendSignal(COMSIG_ADD_MOOD_EVENT, "pet_corgi", /datum/mood_event/pet_corgi) + if(M.has_trait(TRAIT_DOG_PERSON)) + if(M.has_trait(TRAIT_CAT_PERSON)) + M.SendSignal(COMSIG_ADD_MOOD_EVENT, "wuv", /datum/mood_event/pet_corgi) + else + M.SendSignal(COMSIG_ADD_MOOD_EVENT, "wuv", /datum/mood_event/pet_corgi_dogperson) + else if(M.has_trait(TRAIT_CAT_PERSON)) + M.SendSignal(COMSIG_ADD_MOOD_EVENT, "wuv", /datum/mood_event/pet_corgi_catperson) + else + M.SendSignal(COMSIG_ADD_MOOD_EVENT, "wuv", /datum/mood_event/pet_corgi) else if(M && stat != DEAD) // Same check here, even though emote checks it as well (poor form to check it only in the help case) emote("me", 1, "growls!")