anchor.diff:  end;
   
   
  -procedure TKMUnit.CancelUnitTask(aFreeTaskObject: Boolean = True);
  +procedure TKMUnit.CancelUnitTask;
   begin
     if (fUnitTask <> nil)
       and (fCurrentAction is TKMUnitActionWalkTo)
       and not TKMUnitActionWalkTo(GetUnitAction).DoingExchange then
       AbandonWalk;
  -  if aFreeTaskObject then
  -    FreeAndNil(fUnitTask)
  -  else
  -    fUnitTask := nil;
  +  FreeAndNil(fUnitTask);
   end;
   
   
  
positive.code:     procedure HitPointsChangeFromScript(aAmount: Integer);
      procedure HitPointsDecrease(aAmount: Byte; aAttacker: TKMUnit);
      property  HitPointsMax: Byte read GetHitPointsMax;
      procedure CancelUnitTask(aFreeTaskObject: Boolean = True);
      property  Visible: Boolean read fVisible write fVisible;
      property  InHouse: TKMHouse read fInHouse write SetInHouse;
      property  IsDead: Boolean read fIsDead;
  
negative.code: 
  
  function TKMUnitWorker.UpdateState: Boolean;
  var
    H: TKMHouseInn;
  begin
    Result := True; //Required for override compatibility
    if fCurrentAction = nil then
      raise ELocError.Create(gRes.Units[UnitType].GUIName + ' has no action at start of TKMUnitWorker.UpdateState', fCurrPosition);
    if inherited UpdateState then Exit;
  
    if fCondition < UNIT_MIN_CONDITION then
    begin
      H := gHands[fOwner].FindInn(fCurrPosition, Self);
      if H <> nil then
        fUnitTask := TKMTaskGoEat.Create(H, Self);
    end;
  
    if (fThought = th_Build)and(fUnitTask = nil) then
      fThought := th_None; //Remove build thought if we are no longer doing anything
  
    //If we are still stuck on a house for some reason, get off it ASAP
  