void OnReceive(NetworkPacket packet, string id)
    {
        if (packet.Header == PacketType.AIRangetPack)
        {
            AIRangedPacket pack = (AIRangedPacket)packet;

            if (pack.AIID == this.networkID)
            {
                toHandle = pack;

                wave_control.Instance.toReactivate.Enqueue(gameObject);
            }
        }
    }
    public override void Update()
    {
        base.Update();

        if (execute)
        {
            if (gameObject.transform.position.y <= -50)
            {
                gameObject.GetComponent <Root>().HP -= 10;
            }
            if (GetComponent <Root>().HP > 0)
            {
                lastpos = transform.position;
            }
            playerobjs = GameObject.FindGameObjectsWithTag("Player");


            find_closest_player();  //from parent
            attack_player_ranged(); //from parent
        }
        else
        {
            GetComponent <Rigidbody>().AddForce(new Vector3(0, -50, 0));
        }

        if (toHandle != null)
        {
            agent.enabled      = false;
            transform.position = toHandle.Position;
            agent.enabled      = true;
            agent.nextPosition = toHandle.Position;

            if (currplayerobj.GetComponent <PlayerControl>().ID != toHandle.TargetID)
            {
                var temp = GameObject.FindObjectsOfType <PlayerControl>();

                foreach (var player in temp)
                {
                    if (player.ID == toHandle.TargetID)
                    {
                        agent.SetDestination(player.transform.position);

                        currplayerobj     = player.gameObject;
                        currplayerobjroot = player.GetComponent <Root>();
                    }
                }
            }

            toHandle      = null;
            lastUpdate    = DateTime.Now;
            hasSentPacket = false;
        }

        if (Network.IsHost && (DateTime.Now - lastSync).TotalMilliseconds > Network.UpdateInterval)
        {
            AIRangedPacket pack = new AIRangedPacket(transform.position, currplayerobj.GetComponent <PlayerControl>().ID, networkID);
            Network.Send(pack);

            lastSync      = DateTime.Now;
            hasSentPacket = false;
        }
    }