mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-13 09:05:11 +01:00
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:
@@ -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!
|
||||
|
||||
Reference in New Issue
Block a user