public AIState_TargetAttack(CharacterAIBasis owner,bool cannormalattack, bool canspecialattack)
     : base(owner)
 {
     CanNormalAttack = cannormalattack;
     CanSpecialattack = canspecialattack;
 }
 public AIStateBasis(CharacterAIBasis owner)
 {
     this.AI = owner;
 }
 public AIState_TryMoveToNextPosition(CharacterAIBasis owner, Vector2 next)
     : base(owner)
 {
     Next = next;
 }
 public AIState_TryMoveOnPathway(CharacterAIBasis owner)
     : base(owner)
 {
 }
 public AIState_Start(CharacterAIBasis owner,AIStateBasis next)
     : base(owner)
 {
     NextState = next;
 }
 public AIState_SearchTrackingTarget(CharacterAIBasis owner)
     : base(owner)
 {
     DetectedTrackingTarget = owner.detectedTrackingTarget;
     UndectedTrackingTarget = owner.undetectedTrackingTarget;
 }
 public AIState_FindAttackTarget(CharacterAIBasis owner)
     : base(owner)
 {
     DetectedAttackTarget = owner.detectedAttackTarget;
     UnDetectedAttackTarget = owner.undetectedAttackTarget;
 }
 public AIState_FindAttackTarget(CharacterAIBasis owner, DetectedAttackTargetAction detected, UnDetectedAttcakTargetAction undetected)
     : base(owner)
 {
     DetectedAttackTarget = detected;
     UnDetectedAttackTarget = undetected;
 }
 public AIState_Idle(CharacterAIBasis owner)
     : base(owner)
 {
 }
 public AIState_SetMileStones(CharacterAIBasis owner, Vector2 goal)
     : base(owner)
 {
     Goal = goal;
 }
 public RandomMove(CharacterAIBasis owner)
     : base(owner)
 {
 }
 public AIMoveBehavior(CharacterAIBasis owner)
 {
     AI = owner;
     WaitCount = 0;
 }
 public AIState_TryMoveInRoom(CharacterAIBasis owner)
     : base(owner)
 {
     owner.CurrentTryMoveInRoomState = this;
     CurrentEntrance = getNext();
 }