Files
Bubberstation/code/datums/elements/pet_bonus.dm
2022-11-19 17:04:28 -08:00

39 lines
1.3 KiB
Plaintext

/**
* # Pet bonus element!
*
* Bespoke element that plays a fun message, sends a heart out, and gives a stronger mood bonus when you pet this animal.
* I may have been able to make this work for carbons, but it would have been interjecting on some help mode interactions anyways.
*/
/datum/element/pet_bonus
element_flags = ELEMENT_BESPOKE
argument_hash_start_idx = 2
///optional cute message to send when you pet your pet!
var/emote_message
///actual moodlet given, defaults to the pet animal one
var/moodlet
/datum/element/pet_bonus/Attach(datum/target, emote_message, moodlet = /datum/mood_event/pet_animal)
. = ..()
if(!isliving(target))
return ELEMENT_INCOMPATIBLE
src.emote_message = emote_message
src.moodlet = moodlet
RegisterSignal(target, COMSIG_ATOM_ATTACK_HAND, PROC_REF(on_attack_hand))
/datum/element/pet_bonus/Detach(datum/target)
. = ..()
UnregisterSignal(target, COMSIG_ATOM_ATTACK_HAND)
/datum/element/pet_bonus/proc/on_attack_hand(mob/living/pet, mob/living/petter, list/modifiers)
SIGNAL_HANDLER
if(pet.stat != CONSCIOUS || petter.combat_mode || LAZYACCESS(modifiers, RIGHT_CLICK))
return
new /obj/effect/temp_visual/heart(pet.loc)
if(emote_message && prob(33))
pet.manual_emote(emote_message)
petter.add_mood_event("petting_bonus", moodlet, pet)