524 Commits over 123 Days - 0.18cph!
Remove allocs in async pathfinding
Make sure querying allies nearby doesn't return null or dead allies
Fix wolves leaping at players that didn't climb on anything, or dying suddenly for no apparent reason
Add better failed path vislogs
Have wolves give up stalking after a while if not dealt damage, and give up a lot faster if they see fire
Reduce wolf population and pack size to 3, until we find a way to make DensityPopulation spawn packs without having to increase the density
Don't return a success status from the position generator as we don't project on nav anymore, so it'll always succeed
Fix target check that was inverted after refactoring target getter
Remove unused RequireComponent attribute since components are now cached in the base state class
Use sense component member functions instead of magic extension functions to get or set the target
This makes the API more consistent
Remove some state local references to components that are no longer needed since references are now kept in the parent state class
Fix fire not scaring wolves when the player is standing on top of a tall object
They will now approach very slowly, flee as soon as the player swings their torch, and flee after jumping if fire is still lit
Cancel wolf jump when player goes down the tall object before the wolf arrives
Have wolves look at the player head instead of the player's crotch
Properly reset all state when client wolf is recycled
Initialize previous position properly to avoid large deltas when spawning and pooling
Fix wolves looking behind them for too long when fleeing
Fix wolves jumping excessively high to reach unreachable players
Tweak leap trajectory to be more believeable
Fix wolves dying when stranded in an environment they don't like (eg seaside)
Fix wolves roaming too far from their territory, potentially straying from their pack
Halve wolf territory size
Convert timestamps to double to prevent precision loss if the server runs for a long time
Fix wolf being unable to switch target
Fix wolves not fleeing when hit from far away with molotov or fire arrows
Merge from ai_wolf_iteration
Fix compile error on client
Reduce the distance the wolf will flee each time you try to scare it again with torch swings / lighting the torch suddenly in melee range (only noticeable if you spam and chase the wolf instead of moving away)
Re-use results of sense component grid search for allies instead of doing another query (when the range is small enough)
Fix debug info showing up even when convar is off
Make wolves lie down less often but slightly longer (they need to lie down sometimes for server performance), remove the pause before the idles for a more natural transition
Change howl audio sound types from small to medium as it was not audible unless a few meters away (but then the wolf would cancel the howl and charge), fix new growl sound not playing
Add debug convar for fire melee, fix some events being dropped
Fix error caused by adding already present key to dictionary, fix distance check being inverted
Fix NRE caused by dictionary trying to add an already present key
Fix wolf circling corpse for a long time sometimes when moving to eat
Prevent wolf walking underwater, it'll give up thechase if the player starts swimming
Reduce odds of wolf attacking animal when it's likely it'll lose
Add top secret hidden feature to wolves
Merge from ai_wolf_iteration
Add placeholder wolf eating sounds
Fix pragma restore 414 being in the wrong place
Merge from ai_wolf_iteration
Remove unused fields, redundant checks, and fix issue where compoosite transitions are not cloned properly
Prevent fsm from waiting one frame to change state when a state succeeds or fails
Fixes wolves sometimes pausing for one frame and losing momentum
Added some infinite change protection in the hypothetical case a group of states keep cycling during the same frame
After 3 same-tick changes we postpone the next state change for the next tick
Have wolf fsm tick slower when no player is nearby, similar to senses
Combine wolf senses and fsm into a single budget for simpler tracking, and also because we want senses to drive the fsm tick rate in the future
Fix wolves not playing 180 anim anymore when fire is lit right in front of them (regression)
Hook remaining wolf idles
Make sure state and transitions are always deep copying internal lists