public override void OnEnter()
    {
        eventHandler.OnCustomAnimationEvent += OnCustomEvent;
        _damageDealer.SetDirection((DamageDirection)faceDirectionComponent.FaceDirection, Owner.transform);
        _damageDealer.ClearIgnoredReceiver();

        current = 0;
    }
    private void Start()
    {
        _damageDealer = DamageDealer.NewEnemy();
        _damageDealer.SetDamageFlags(true, false, true);
        _damageDealer.SetDirection(DamageDirection.Neutral, transform);
        _damageDealer.attackType = AttackType.Hit;
        // _damageDealer.damage = LevelMonsterStrengthManager.Instance.GetDamage ( DamageSource, DamageKey );

        initialState = State.Fly;
    }
    public override void Awake()
    {
        eventHandler           = Owner.transform.Find("ActionAnimator").GetComponent <MonsterAnimationEventHandler> ();
        faceDirectionComponent = Owner.GetComponent <FaceDirectionComponent> ();

        _damageDealer = DamageDealer.NewEnemy();
        _damageDealer.SetDamageFlags(true, false, true);
        _damageDealer.SetDirection(DamageDirection.Neutral, Owner.transform);
        _damageDealer.ignoreReceiverOnDealDamage = false;
        _damageDealer.attackType = AttackType.Hit;
        // _damageDealer.damage     = LevelMonsterStrengthManager.Instance.GetDamage ( Owner.name, DamageKey );
    }
    private void Start()
    {
        _damageDealer = DamageDealer.NewEnemy();
        _damageDealer.SetDamageFlags(true, false, true);
        _damageDealer.SetDirection(DamageDirection.Neutral, transform);
        _damageDealer.ignoreReceiverOnDealDamage = true;
        _damageDealer.attackType = AttackType.Hit;
        // _damageDealer.damage = LevelMonsterStrengthManager.Instance.GetDamage ( DamageSource, DamageKey );

        initialState = StartState;

        _flyTrackEnable = DamageSource != "Boss08_a";
        _flyTrackEnable = true;
        _flyTrackWaitTimeRandomRange = Random.Range(FlyTrackWaitTime - FlyTrackWaitTimeRandomRange,
                                                    FlyTrackWaitTime + FlyTrackWaitTimeRandomRange);
    }
    private void Start()
    {
        _damageDealer = DamageDealer.NewEnemy();
        _damageDealer.SetDirection(DamageDirection.Neutral, transform);
        _damageDealer.ignoreReceiverOnDealDamage = true;
        _damageDealer.monsterID  = DamageSource;
        _damageDealer.attackType = AttackType.Heavy;
        // _damageDealer.damage =
        //     LevelMonsterStrengthManager.Instance.GetDamage ( _damageDealer.monsterID, "Atk_4" );

        _flyTrackEnable              = DamageSource != "Boss08_a";
        _flyTrackEnable              = true;
        _flyTrackActived             = false;
        _flyTrackWaitTimeRandomRange = Random.Range(FlyTrackWaitTime - FlyTrackWaitTimeRandomRange,
                                                    FlyTrackWaitTime + FlyTrackWaitTimeRandomRange);

        initialState = State.Fly;
    }