private void Update()
    {
        if (zombieStateMachine.IsSeekPath())
        {
            // Should not happen
        }
        else if (zombieStateMachine.IsWalking())
        {
            // TODO: resolve this, this is just quick fix
            if (attack_target.target_gameObject == null || !attack_target.target_gameObject.activeSelf)
            {
                zombieStateMachine.State = ZombieStateMachine.ZombieStateEnum.SeekPath;
                return;
            }

            // Do the attacking
            Ray front = new Ray(transform.position, transform.forward);
            Ray left  = new Ray(transform.position, transform.forward - transform.right);
            Ray right = new Ray(transform.position, transform.forward + transform.right);

            AttackRay(front);
            AttackRay(left);
            AttackRay(right);
        }
        else if (zombieStateMachine.IsDrinking() || zombieStateMachine.IsAttacking())
        {
            Vector3 lookTarget = Vector3.zero;

            // If dead
            if (attack_target.target_gameObject == null || attack_target.damageable.Dead())
            {
                zombieStateMachine.State = ZombieStateMachine.ZombieStateEnum.SeekPath;
                return;
            }

            // Rotate towards target
            lookTarget   = attack_target.hitpoint;
            lookTarget.y = transform.position.y;
            var targetRotation = Quaternion.LookRotation(lookTarget - transform.position);
            transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, 5f * Time.deltaTime);

            // Attack once upon time
            if (Time.time > nextAttackTime)
            {
                nextAttackTime = Time.time + nextAttackIn;
                attack_target.damageable.Damage(damage);

                if (attack_target.target_gameObject == null && attack_target.damageable.Dead())
                {
                    attack_target.Erase();
                    zombieStateMachine.State = ZombieStateMachine.ZombieStateEnum.SeekPath;
                    ResumeNavigation();
                    return;
                }
            }
        }
        else if (zombieStateMachine.IsDying())
        {
            // don't do shit man
        }
    }