public bool IsTargetValid(RLBaseActor skillUser, RLBaseTile targetTile) { if (!IsTargetInRange(skillUser, targetTile)) { return(false); } switch (Target) { case TargetType.None: return(false); case TargetType.Any: return(true); case TargetType.EmptyTile: return(!targetTile.GetTileType().BlocksMovement&& targetTile.GetActor() == null); case TargetType.Self: return(true); case TargetType.AnyCreature: return(targetTile.GetActor() != null); case TargetType.Enemy: return(targetTile.GetActor() != null && skillUser.IsEnemyOf(targetTile.GetActor())); case TargetType.Ally: return(targetTile.GetActor() != null && skillUser.IsAllyOf(targetTile.GetActor())); case TargetType.Custom: return(IsCustomTargetValid(skillUser, targetTile)); default: throw new ArgumentOutOfRangeException(); } }
protected bool CanSeeThrough(RLBaseTile tile) { return(!tile.GetTileType().BlocksVision); }