protected virtual List <int> get_targets()
        {
            Game_Unit  unit         = get_unit();
            bool       has_items    = unit.actor.has_items;
            List <int> temp_targets = unit.allies_in_range(1);
            List <int> targets      = new List <int>();

            // Rescued unit
            if (unit.is_rescuing)
            {
                Game_Unit rescued_unit = Global.game_map.units[unit.rescuing];
                if ((has_items || rescued_unit.actor.has_items) && unit.same_team(rescued_unit))
                {
                    targets.Add(unit.rescuing);
                }
            }
            foreach (int id in temp_targets)
            {
                Game_Unit other_unit = Global.game_map.units[id];
                if (unit.different_team(other_unit))
                {
                    continue;
                }

                if (has_items || other_unit.actor.has_items)
                {
                    targets.Add(id);
                }
                if (other_unit.is_rescuing)
                {
                    Game_Unit rescued_unit = Global.game_map.units[other_unit.rescuing];
                    if ((has_items || rescued_unit.actor.has_items) && unit.same_team(rescued_unit))
                    {
                        targets.Add(other_unit.rescuing);
                    }
                }
            }
            return(targets);
        }