anchor.diff:    if Assigned(fPlayers) and Assigned(fPlayers.Player[byte(fOwner)]) then
       fPlayers.Player[byte(fOwner)].DestroyedUnit(fUnitType);
   
  -  fThought:=th_None; //Reset thought
  +  fThought := th_None; //Reset thought
     SetAction(nil,0); //Dispose of current action
     FreeAndNil(fUnitTask); //Should be overriden to dispose of Task-specific items
     fUnitTask:=TTaskDie.Create(Self);
  
positive.code: 
  procedure TKMUnit.RemoveUntrainedFromSchool();
  begin
    //if Assigned(fPlayers) and Assigned(fPlayers.Player[byte(fOwner)]) then
    //  fPlayers.Player[byte(fOwner)].DestroyedUnit(fUnitType); //Unused
    CloseUnit;
  end;
  
  function TKMUnit.CanGoEat:boolean;
  begin
    Result := fPlayers.Player[byte(fOwner)].FindInn(GetPosition) <> nil;
  end;
  
  {Here are common Unit.UpdateState routines}
  
negative.code:     Result:=TUnitActionWalkTo(fCurrentAction).Explanation;
  end;
  
  
  procedure TKMUnit.CancelUnitTask;
  begin
    if (fUnitTask <> nil)and(fCurrentAction is TUnitActionWalkTo) then
  