anchor.diff:        AOptions.Sex  := THeroSex(ReadByte);
       end;
   
  -    if FMapVersion > MAP_VERSION_AB then
  +    if IsAtLeastSoD() then
       begin
         if ReadBoolean then
         begin
           ReadBitmask(AOptions.SpellBook, 9, SPELL_QUANTITY_ACTUAL,@FMapEnv.lm.SpellIndexToString,False);
         end;
       end
  -    else if FMapVersion = MAP_VERSION_AB then
  +    else if IsAtLeastAB() then
       begin
         AOptions.SpellBook.Add(ReadID(@FMapEnv.lm.SpellIndexToString,1));
       end;
   
  -    if (FMapVersion > MAP_VERSION_AB) and ReadBoolean then
  -    begin
  -      ReadPrimarySkills(AOptions.PrimarySkills);
  +    if IsAtLeastSoD() then
  +    begin
  +      if ReadBoolean then
  +        ReadPrimarySkills(AOptions.PrimarySkills);
       end;
   
       skip(16); //junk
  
positive.code:         special_victory.Effect.MessageToSend:=FMapEnv.i18n.GeneralTexts[0,281];
          special_victory.Message:=FMapEnv.i18n.GeneralTexts[0,280];
  
          if IsNotROE then
            FSrc.Skip(1);
        end;
        TVictoryCondition.GATHERTROOP:
  
negative.code:   tmp: DWord;
  begin
    with FSrc, AOptions do begin
      if IsAtLeastAB() then
      begin
        mis_type := ReadQuest(Quest);
      end
  