anchor.diff:    H: TKMHouse;
     U: TKMUnit;
   begin
  -  Assert((fParsingMode <> mpmEditor) or (fAttackPositionsCount = 0), 'AttackPositions should be handled by MapEd');
  -
  -  for I := 0 to fAttackPositionsCount - 1 do
  +  Assert((fParsingMode <> mpmEditor) or (fAttackPositions.Count = 0), 'AttackPositions should be handled by MapEd');
  +
  +  for I := 0 to fAttackPositions.Count - 1 do
       with fAttackPositions[I] do
       begin
         H := gHands.HousesHitTest(Target.X, Target.Y); //Attack house
  
positive.code:     fLastUnit: TKMUnit;
      fLastTroop: TKMUnitGroup;
      fAIAttack: TKMAIAttack;
      fAttackPositions: array of TKMAttackPosition;
      fAttackPositionsCount: Integer;
      fDefaultLocation: ShortInt;
      procedure ProcessAttackPositions;
    protected
      function ProcessCommand(CommandType: TKMCommandType; P: array of Integer; const TextParam: AnsiString = ''): Boolean; override;
    public
      constructor Create(aMode: TKMMissionParsingMode); overload;
      constructor Create(aMode: TKMMissionParsingMode; var aPlayersEnabled: TKMHandEnabledArray); overload;
      function LoadMission(const aFileName: string): Boolean; overload; override;
      procedure PostLoadMission;
  
  
negative.code:                             end
                              else
                              begin
                                attackPos.Group := fLastTroop;
                                attackPos.Target := KMPoint(P[0]+1,P[1]+1);
                                fAttackPositions.Add(attackPos);
                              end
                            else
                              AddError('ct_AttackPosition without prior declaration of Troop');
  