Všechna monstra, dynamický targeting. Bugfixy u monster.

This commit is contained in:
Perry 2026-03-17 20:14:29 +01:00
parent 55fd052072
commit 4fdff0a0cc
18 changed files with 345 additions and 43 deletions

View file

@ -3,7 +3,12 @@ using GlobalClassLib;
namespace FNAF_Server.Enemies;
public abstract class RoamingPathfinder : Pathfinder{
public abstract class RoamingPathfinder : Pathfinder {
protected Predicate<MapTile> AdditionalTileFilter = _ => true;
protected Predicate<TileConnector> AdditionalConnectorFilter = _ => true;
// private Func<TileConnector, MapTile, bool> defaultConnectorFilter;
protected RoamingPathfinder(Enemy enemy) : base(enemy) {
}
@ -15,8 +20,12 @@ public abstract class RoamingPathfinder : Pathfinder{
private void CrawlStep(MapTile tile, Dictionary<MapTile, int> distances) {
List<MapTile> neighbours = GetNeighbours(tile,
c => (!c.Blocked || c.Type == ConnectorType.DOOR_OFFICE) && tile != Enemy.Location,
c =>
AdditionalConnectorFilter(c) &&
(!c.Blocked || c.Type == ConnectorType.DOOR_OFFICE) &&
tile != Enemy.Location,
t =>
AdditionalTileFilter(t) &&
(!distances.ContainsKey(t) || distances[t] > distances[tile]) &&
(!Enemy.BlocksTile || EnemyManager.GetByLocation(t).All(e => !e.BlocksTile || e == Enemy)) &&
Server.Players.All(p => p.Value.state.officeTileId != t.Id));