anchor.diff:      Occurence: SmithTypeItems; Dexterity: (Min: 21; Max: 25);),
       // (Dexterity VII)
       (Level: (Min: 7; Max: 15); Price: 2000;
  -    Occurence: SmithTypeItems; Dexterity: (Min: 26; Max: 30);)
  +    Occurence: SmithTypeItems; Dexterity: (Min: 26; Max: 30);),
  +
  +    // (Willpower I)
  +    (Level: (Min: 1; Max: 3); Price: 200;
  +    Occurence: SmithTypeItems; Willpower: (Min: 1; Max: 2);),
  +    // (Willpower II)
  +    (Level: (Min: 2; Max: 5); Price: 400;
  +    Occurence: SmithTypeItems; Willpower: (Min: 3; Max: 5);),
  +    // (Willpower III)
  +    (Level: (Min: 3; Max: 7); Price: 600;
  +    Occurence: SmithTypeItems; Willpower: (Min: 6; Max: 9);),
  +    // (Willpower VI)
  +    (Level: (Min: 4; Max: 9); Price: 800;
  +    Occurence: SmithTypeItems; Willpower: (Min: 10; Max: 14);),
  +    // (Willpower V)
  +    (Level: (Min: 5; Max: 11); Price: 1000;
  +    Occurence: SmithTypeItems; Willpower: (Min: 15; Max: 20);),
  +    // (Willpower VI)
  +    (Level: (Min: 6; Max: 13); Price: 1500;
  +    Occurence: SmithTypeItems; Willpower: (Min: 21; Max: 25);),
  +    // (Willpower VII)
  +    (Level: (Min: 7; Max: 15); Price: 2000;
  +    Occurence: SmithTypeItems; Willpower: (Min: 26; Max: 30);)
       );
   
   type
  
positive.code:     of_Strength6,of_Strength7,
      // Dexterity I - VII
      of_Dexterity1,of_Dexterity2,of_Dexterity3,of_Dexterity4,of_Dexterity5,
      of_Dexterity6,of_Dexterity7
      );
  
  const
  
negative.code:           Math.RandomRange(SB.Dexterity.Min, SB.Dexterity.Max + 1),
            1, High(Byte));
          Items.SetBonus(AItem, btDex, Value);
        end;
      // Willpower
      of_Willpower1 .. of_Willpower7:
        begin
          Value := Math.EnsureRange(Items.GetBonus(AItem, btWil) +
            Math.RandomRange(SB.Willpower.Min, SB.Willpower.Max + 1),
            1, High(Byte));
          Items.SetBonus(AItem, btWil, Value);
        end;
      // Defense
      of_Defense1 .. of_Defense7:
  