anchor.diff:  const HTicks = 6; //The number of ticks before hitting that an arrow will make the hit noise
   var i:integer; U:TKMUnit; H:TKMHouse;
   begin
  -  for i:=1 to length(fItems)-1 do
  +  for i:=0 to length(fItems)-1 do
       with fItems[i] do
         if fSpeed <> 0 then
         begin
  
positive.code:   SaveStream.Write('Projectiles');
  
    Count := 0;
    for i:=1 to length(fItems)-1 do
      if fItems[i].fSpeed <> 0 then inc(Count);
    SaveStream.Write(Count);
  
    for i:=1 to length(fItems)-1 do
      if fItems[i].fSpeed <> 0 then
        with fItems[i] do
        begin
          SaveStream.Write(fScreenStart);
          SaveStream.Write(fScreenEnd);
          SaveStream.Write(fTarget);
          SaveStream.Write(fTargetJ);
          SaveStream.Write(fProjType, SizeOf(fProjType));
          SaveStream.Write(fOwner, SizeOf(fOwner));
          SaveStream.Write(fSpeed);
          SaveStream.Write(fArc);
          SaveStream.Write(fPosition);
          SaveStream.Write(fLength);
        end;
  end;
  
  
  procedure TKMProjectiles.Load(LoadStream:TKMemoryStream);
  var s:string; i, Count: integer;
  begin
    LoadStream.Read(s);
    Assert(s = 'Projectiles', 'Projectiles not found');
  
    LoadStream.Read(Count);
    SetLength(fItems,Count+2); //Reserve extra space
       
    for i:=1 to Count do
      with fItems[i] do
      begin
        LoadStream.Read(fScreenStart);
        LoadStream.Read(fScreenEnd);
        LoadStream.Read(fTarget);
        LoadStream.Read(fTargetJ);
        LoadStream.Read(fProjType, SizeOf(fProjType));
        LoadStream.Read(fOwner, SizeOf(fOwner));
        LoadStream.Read(fSpeed);
        LoadStream.Read(fArc);
        LoadStream.Read(fPosition);
        LoadStream.Read(fLength);
      end;
  end;
  
  
  
negative.code:                           begin
                              //Arrows are more likely to cause damage when the unit is closer
                              if Random(Round(8 * GetLength(U.PositionF,fTargetJ))) = 0 then
                                if U.HitPointsDecrease(1) then
                                  fPlayers.Player[fOwner].Stats.UnitKilled(U.UnitType);
                            end
                            else
                            begin
  