fixes tamed pets sometimes attacking one another (#92200)

## About The Pull Request
tamed pets would not let previous grudges go so theyd attack one another
even after theyve both been tamed by the same owner. this fixes that

## Why It's Good For The Game
fixes tamed pets sometimes attacking one another

## Changelog
🆑
fix: fixes tamed pets sometimes attacking one another
/🆑
This commit is contained in:
Ben10Omintrix
2025-07-20 13:52:20 +03:00
committed by GitHub
parent 5bc04d5cf5
commit d94f974df3
6 changed files with 36 additions and 3 deletions
@@ -7,7 +7,8 @@
var/mob/living/basic/basic_mob = new_pawn
update_speed(basic_mob)
RegisterSignal(basic_mob, COMSIG_LIVING_BEFRIENDED, PROC_REF(on_tamed))
RegisterSignal(basic_mob, COMSIG_LIVING_UNFRIENDED, PROC_REF(on_untamed))
RegisterSignals(basic_mob, list(POST_BASIC_MOB_UPDATE_VARSPEED, COMSIG_MOB_MOVESPEED_UPDATED), PROC_REF(update_speed))
RegisterSignal(basic_mob, COMSIG_MOB_ATE, PROC_REF(on_mob_eat))
@@ -56,3 +57,29 @@
SIGNAL_HANDLER
var/food_cooldown = blackboard[BB_EAT_FOOD_COOLDOWN] || EAT_FOOD_COOLDOWN
set_blackboard_key(BB_NEXT_FOOD_EAT, world.time + food_cooldown)
/datum/ai_controller/proc/on_tamed(datum/source, mob/living/new_friend)
SIGNAL_HANDLER
forgive_target(new_friend)
clear_blackboard_key(BB_BASIC_MOB_CURRENT_TARGET)
clear_blackboard_key(BB_BASIC_MOB_RETALIATE_LIST) //we have just been tamed by a new party, clean slate for everyone!
RegisterSignal(new_friend, COMSIG_LIVING_MADE_NEW_FRIEND, PROC_REF(on_master_tame))
/datum/ai_controller/proc/on_untamed(datum/source, mob/living/old_friend)
SIGNAL_HANDLER
UnregisterSignal(old_friend, COMSIG_LIVING_MADE_NEW_FRIEND)
/datum/ai_controller/proc/on_master_tame(datum/master, mob/living/master_new_friend)
SIGNAL_HANDLER
forgive_target(master_new_friend)
/datum/ai_controller/proc/forgive_target(atom/target)
var/static/list/keys_to_check = list(
BB_BASIC_MOB_CURRENT_TARGET,
BB_CURRENT_PET_TARGET,
)
for(var/key in keys_to_check)
if(target == blackboard[key])
clear_blackboard_key(key)
remove_from_blackboard_lazylist_key(BB_BASIC_MOB_RETALIATE_LIST, target) //make peace with our friend's new pet!