Esempio n. 1
0
    /// <summary>
    /// Heals all nearby allies
    /// </summary>
    protected override void Execute()
    {
        TractorBeam tractor = Core.GetComponent <TractorBeam>();

        if (tractor.GetTractorTarget() != null && tractor.GetTractorTarget().GetComponent <ShellPart>())
        {
            if (FactionManager.IsAllied(Core.faction, PlayerCore.Instance.faction))
            {
                Yard.TakePart(Core, tractor);
            }
            else
            {
                Core.TakeEnergy(-energyCost);
                var shellPart = tractor.GetTractorTarget().GetComponent <ShellPart>();
                Destroy(shellPart.gameObject);
            }
        }
        else
        {
            Core.TakeEnergy(-energyCost);
            Draggable part = null;
            float     dist = range * range; //Max distance of new tractor beam
            for (int i = 0; i < AIData.strayParts.Count; i++)
            {
                float     d      = (AIData.strayParts[i].transform.position - Core.transform.position).sqrMagnitude;
                Draggable target = AIData.strayParts[i].GetComponent <Draggable>();
                if (d < dist && target && !target.dragging)
                {
                    dist = d;
                    part = target;
                }
            }
            if (part != null)
            {
                tractor.SetTractorTarget(part);
            }
        }
    }