public bool Retarget(EnergyController energy)
    {
        List <EnergyLinkController> candidates = new List <EnergyLinkController>();
        EnergyLinkController        target     = energy.target;
        EnergyLinkController        previous   = energy.previous;

        List <EnergyConsumerController> needMoreConstructions = new List <EnergyConsumerController>();

        foreach (EnergyConsumerController construnction in constructions)
        {
            if (construnction.NeedMore())
            {
                needMoreConstructions.Add(construnction);
            }
        }

        if (needMoreConstructions.Count > 0)
        {
            EnergyConsumerController construnction = needMoreConstructions[Random.Range(0, needMoreConstructions.Count)];
            energy.construction = construnction;
            construnction.WillEnergize();
            return(true);
        }

        foreach (EnergyLinkController link in nearby)
        {
            if (link != target && link != previous)
            {
                candidates.Add(link);
            }
        }

        if (candidates.Count == 0)
        {
            foreach (EnergyLinkController link in nearby)
            {
                if (link != target)
                {
                    candidates.Add(link);
                }
            }
        }

        if (candidates.Count > 0)
        {
            energy.previous = target;
            energy.target   = candidates[Random.Range(0, candidates.Count)];
            if (temperature > maxTemperature)
            {
                Instantiate(energyBoom, transform.position, Quaternion.identity);
                return(false);
            }
            else
            {
                temperature += 1;
                return(true);
            }
        }
        else
        {
            Instantiate(energyBoom, transform.position, Quaternion.identity);
            return(false);
        }
    }