[MIRROR] Reworks targeting behavior to fall back onto proximity monitors. Refactors ai cooldowns a bit #2931
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Mirrored on Nova: NovaSector/NovaSector#2028
Original PR: tgstation/tgstation#82640
About The Pull Request
Nother bit ripped out of #79498
Implements a get_cooldown() proc to get around dumb manual overrides and empower me to optimize the findtarget logic
Adds modify_cooldown, uses it to optimize find_potential_targets further
No sense running the behavior if we're just waiting on its output, so let's run it once a minute just in case, then push an update instantly if we find something
Optimizes connect_range and promxity_monitors
We know what turfs exist before and after a move
We can use this information to prevent trying to update turfs we don't care about.
This is important because post these changes mobs with fields will be moving a lot more, so it's gotta be cheap
Implements a special kind of field to handle ai targeting
If we run targeting and don't like, find anything, we should setup a field that listens for things coming near us and then handle those things as we find them.
This incurs a slight startup cost but saves so much time on the churn of constant costs
Note:
We should also work to figure out a way to avoid waking ais if none is near them/they aren't doing anything interesting
We don't need to do that immediately this acts as somewhat of a stopgap (and would be good regardless) but it is worth keeping in mind)
IMPORTANT
I am unsure whether this is worth it anymore since #82539 was merged. As I say it was done as a stopgap because ais didn't know how to idle.
If not I'll rip er out and we'll keep the other refactoring/optimizations.
Why It's Good For The Game
Cleaner basic ai code, maybe? faster basic ai code, for sure faster proximity monitors (significantly)