//
// Licensed under the MIT License. See LICENSE file in the project root for full license information.
//
namespace MUnique.OpenMU.GameLogic;
using MUnique.OpenMU.GameLogic.NPC;
using MUnique.OpenMU.Pathfinding;
///
/// Interface of a non-player-character artificial intelligence.
///
public interface INpcIntelligence
{
///
/// Gets or sets the monster which this AI is controlling.
///
NonPlayerCharacter Npc { get; set; }
///
/// Gets a value indicating whether this instance can walk on safezone.
///
///
/// true if this instance can walk on safezone; otherwise, false.
///
bool CanWalkOnSafezone { get; }
///
/// Registers a hit from an attacker.
///
/// The attacker.
void RegisterHit(IAttacker attacker);
///
/// Starts the actions.
///
void Start();
///
/// Pauses the actions.
///
void Pause();
///
/// Determines whether the monster can walk on the specified target.
///
/// The target.
///
/// true if this instance can walk on the specified target; otherwise, false.
///
bool CanWalkOn(Point target);
}