anchor.diff:  procedure TKMUnitWarrior.SyncLoad;
   begin
     inherited;
  +  fGroup := TKMUnitGroup(  gHands.GetGroupByUID( Cardinal(fGroup) )  );
     fOrderTargetUnit := TKMUnitWarrior(gHands.GetUnitByUID(cardinal(fOrderTargetUnit)));
     fOrderTargetHouse := gHands.GetHouseByUID(cardinal(fOrderTargetHouse));
     if GetUnitAction is TUnitActionGoInOut then
  
positive.code: begin
    fNextOrder := woAttackUnit;
    SetOrderTarget(aTargetUnit);
  end;
  
  
  procedure TKMUnitWarrior.Save(SaveStream: TKMemoryStream);
  begin
    inherited;
    SaveStream.Write(fNextOrder, SizeOf(fNextOrder));
    SaveStream.Write(fOrder, SizeOf(fOrder));
    SaveStream.Write(fOrderLoc);
    if fOrderTargetHouse <> nil then
      SaveStream.Write(fOrderTargetHouse.UID) //Store ID
    else
      SaveStream.Write(Integer(0));
    if fOrderTargetUnit <> nil then
      SaveStream.Write(fOrderTargetUnit.UID) //Store ID
    else
      SaveStream.Write(Integer(0));
    SaveStream.Write(fRequestedFood);
    SaveStream.Write(fStormDelay);
    SaveStream.Write(fUseExactTarget);
    SaveStream.Write(FaceDir);
    SaveStream.Write(fLastShootTime);
  end;
  
  
  
negative.code:     procedure SyncLoad; override;
      procedure CloseUnit(aRemoveTileUsage: Boolean = True); override;
      destructor Destroy; override;
  
      property Group: pointer read fGroup; // Property for GetGroupByMember function
      procedure SetGroup(aGroup: pointer); // This procedure should not be called by anyone except UnitGroups class (it is out of property)
  
      function GetWarriorActivityText(aIsAttackingUnit: Boolean): UnicodeString;
      procedure KillUnit(aFrom: TKMHandIndex; aShowAnimation, aForceDelay: Boolean); override;
  