mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-03 21:42:06 +00:00
Targeting Datums Renamed (and global) (#79513)
## About The Pull Request [Implements the backend required to make targeting datums global](6901ead12e) It's inconsistent with the rest of basic ai for these to have a high degree of state, plus like, such a waste yaknow? [Implements GET_TARGETING_STRATEGY](d79c29134d) Regexes used: new.*(/datum/targetting_datum[^,(]*)\(*\)* -> GET_TARGETING_STRATEGY($1) Renamed all instances of targetting to targeting (also targetting datum -> targeting strategy) I've used GET_TARGETING_STRATEGY at the source where the keys are actually used, rather then in the listing. This works out just fine. ## Why It's Good For The Game Not a misspelled name through the whole codebase, very slightly less memory load for basically no downside (slight cpu cost maybe but not a significant one. --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
* Watch for someone throwing or pointing at something and then go get it and bring it back.
|
||||
* If it's food we might eat it instead.
|
||||
*/
|
||||
/datum/pet_command/point_targetting/fetch
|
||||
/datum/pet_command/point_targeting/fetch
|
||||
command_name = "Fetch"
|
||||
command_desc = "Command your pet to retrieve something you throw or point at."
|
||||
radial_icon = 'icons/mob/actions/actions_spells.dmi'
|
||||
@@ -16,22 +16,22 @@
|
||||
/// If true, this is a poorly trained pet who will eat food you throw instead of bringing it back
|
||||
var/will_eat_targets = TRUE
|
||||
|
||||
/datum/pet_command/point_targetting/fetch/New(mob/living/parent)
|
||||
/datum/pet_command/point_targeting/fetch/New(mob/living/parent)
|
||||
. = ..()
|
||||
if(isnull(parent))
|
||||
return
|
||||
parent.AddElement(/datum/element/ai_held_item) // We don't remove this on destroy because they might still be holding something
|
||||
|
||||
/datum/pet_command/point_targetting/fetch/add_new_friend(mob/living/tamer)
|
||||
/datum/pet_command/point_targeting/fetch/add_new_friend(mob/living/tamer)
|
||||
. = ..()
|
||||
RegisterSignal(tamer, COMSIG_MOB_THROW, PROC_REF(listened_throw))
|
||||
|
||||
/datum/pet_command/point_targetting/fetch/remove_friend(mob/living/unfriended)
|
||||
/datum/pet_command/point_targeting/fetch/remove_friend(mob/living/unfriended)
|
||||
. = ..()
|
||||
UnregisterSignal(unfriended, COMSIG_MOB_THROW)
|
||||
|
||||
/// A friend has thrown something, if we're listening or at least not busy then go get it
|
||||
/datum/pet_command/point_targetting/fetch/proc/listened_throw(mob/living/carbon/thrower)
|
||||
/datum/pet_command/point_targeting/fetch/proc/listened_throw(mob/living/carbon/thrower)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
var/mob/living/parent = weak_parent.resolve()
|
||||
@@ -57,7 +57,7 @@
|
||||
RegisterSignal(thrown_thing, COMSIG_MOVABLE_THROW_LANDED, PROC_REF(listen_throw_land))
|
||||
|
||||
/// A throw we were listening to has finished, see if it's in range for us to try grabbing it
|
||||
/datum/pet_command/point_targetting/fetch/proc/listen_throw_land(obj/item/thrown_thing, datum/thrownthing/throwing_datum)
|
||||
/datum/pet_command/point_targeting/fetch/proc/listen_throw_land(obj/item/thrown_thing, datum/thrownthing/throwing_datum)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
UnregisterSignal(thrown_thing, COMSIG_MOVABLE_THROW_LANDED)
|
||||
@@ -74,7 +74,7 @@
|
||||
parent.ai_controller.set_blackboard_key(BB_FETCH_DELIVER_TO, throwing_datum.thrower)
|
||||
|
||||
// Don't try and fetch turfs or anchored objects if someone points at them
|
||||
/datum/pet_command/point_targetting/fetch/look_for_target(mob/living/pointing_friend, obj/item/pointed_atom)
|
||||
/datum/pet_command/point_targeting/fetch/look_for_target(mob/living/pointing_friend, obj/item/pointed_atom)
|
||||
if (!istype(pointed_atom))
|
||||
return FALSE
|
||||
if (pointed_atom.anchored)
|
||||
@@ -87,7 +87,7 @@
|
||||
parent.ai_controller.set_blackboard_key(BB_FETCH_DELIVER_TO, pointing_friend)
|
||||
|
||||
// Finally, plan our actions
|
||||
/datum/pet_command/point_targetting/fetch/execute_action(datum/ai_controller/controller)
|
||||
/datum/pet_command/point_targeting/fetch/execute_action(datum/ai_controller/controller)
|
||||
controller.queue_behavior(/datum/ai_behavior/forget_failed_fetches)
|
||||
|
||||
var/atom/target = controller.blackboard[BB_CURRENT_PET_TARGET]
|
||||
|
||||
Reference in New Issue
Block a user