anchor.diff:  
   
                           //If Enemy was killed, but target Group still exists
  -                        if (OrderTargetUnit = nil) and (OrderTargetGroup <> nil) then
  +                        //Group could become an ally from script
  +                        if (OrderTargetUnit = nil) and ((OrderTargetGroup <> nil) and not IsAllyTo(OrderTargetGroup)) then
                           begin
                             //Old enemy has died, change target to his comrades
                             U := OrderTargetGroup.GetNearestMember(Members[0].CurrPosition);
  
positive.code:     Result := U.IsIdle and KMSamePoint(U.CurrPosition, P.Loc) and (U.Direction = Dir);
      if not Result then Exit;
    end;
  end;
  
  
  
negative.code:                     end;
      goAttackHouse:  begin
                        //It is TaskAttackHouse responsibility to execute it
                        OrderExecuted := (OrderTargetHouse = nil) or IsAllyTo(OrderTargetHouse); //Target could become ally from script
                      end;
      goAttackUnit:   begin
                        if IsRanged then
                        begin
                          //Ranged units must kill target unit only
                          //Then they will attack anything within their reach by themselves
                          OrderExecuted := (OrderTargetUnit = nil) or IsAllyTo(OrderTargetUnit); //Target could become ally from script
  
                          if not OrderExecuted then
                            //If our leader is out of range (enemy has walked away) we need to walk closer
  