anchor.diff:         TKMUnitSerf(fUnit).GiveResource(fResourceType);
          fPlayers.Player[byte(GetOwner)].DeliverList.TakenOffer(fDeliverID);
        end else begin
  -       fPlayers.Player[byte(GetOwner)].DeliverList.AbandonDelivery(fDeliverID);
  +       Abandon;
  +       TaskDone := true;
          fLog.AssertToLog(false,'Resource''s gone..');
        end;
        SetActionStay(5,ua_Walk); //Wait a moment inside
  
positive.code:        Abandon;
         TaskDone:=true;
       end;
    7: SetActionStay(5,ua_Walk);
    8: if not fToHouse.IsDestroyed then
       begin
         fToHouse.ResAddToIn(TKMUnitSerf(fUnit).Carry);
         TKMUnitSerf(fUnit).TakeResource(TKMUnitSerf(fUnit).Carry);
         fPlayers.Player[byte(GetOwner)].DeliverList.GaveDemand(fDeliverID);
         fPlayers.Player[byte(GetOwner)].DeliverList.AbandonDelivery(fDeliverID);
  
         //Now look for another delivery from inside this house
         NewDelivery := TKMUnitSerf(fUnit).GetActionFromQueue(fToHouse);
         if NewDelivery <> nil then
         begin
           //Take this new delivery
           NewDelivery.Phase := 2; //Skip to resource-taking part of the new task
           TKMUnitSerf(fUnit).SetNewDelivery(NewDelivery);
           Self.Free; //After setting new unit task we should free self. Note do not set TaskDone:=true as this will affect the new task
  
negative.code:     0..4:;
      5: SetActionWalk(fUnit,fToHouse.GetEntrance,ua_Walk,false); //Any tile next to entrance will do
      6: begin
           TKMUnitSerf(fUnit).TakeResource(TKMUnitSerf(fUnit).Carry);
           fToHouse.ResAddToBuild(TKMUnitSerf(fUnit).Carry);
           fPlayers.Player[byte(GetOwner)].DeliverList.GaveDemand(fDeliverID);
           fPlayers.Player[byte(GetOwner)].DeliverList.AbandonDelivery(fDeliverID);
           SetActionStay(1,ua_Walk);
  